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: Mattias Ellert To: git-commits@fedoraproject.org Subject: [rpms/globus-gass-transfer] rawhide: Fix compiler and doxygen warnings Date: Sun, 14 Jun 2026 08:46:34 GMT Message-ID: <178142679400.1.4816079364624008174.rpms-globus-gass-transfer-8110ebb17f4d@fedoraproject.org> List-ID: X-Git-Repo: rpms/globus-gass-transfer X-Git-Branch: rawhide X-Git-Rev: 8110ebb17f4d78a2096e2f05471424f3a8f5a237 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2xvYnVzLWdhc3Mt dHJhbnNmZXIKQnJhbmNoIDogcmF3aGlkZQpDb21taXQgOiA4MTEwZWJiMTdmNGQ3OGEyMDk2ZTJm MDU0NzE0MjRmM2E4ZjVhMjM3CkF1dGhvciA6IE1hdHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVsbGVy dEBwaHlzaWNzLnV1LnNlPgpEYXRlICAgOiAyMDI2LTA2LTE0VDEwOjM5OjEzKzAyOjAwClN0YXRz ICA6ICsxMTEyMC8tMSBpbiAzIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJv amVjdC5vcmcvcnBtcy9nbG9idXMtZ2Fzcy10cmFuc2Zlci9jLzgxMTBlYmIxN2Y0ZDc4YTIwOTZl MmYwNTQ3MTQyNGYzYThmNWEyMzc/YnJhbmNoPXJhd2hpZGUKCkxvZzoKRml4IGNvbXBpbGVyIGFu ZCBkb3h5Z2VuIHdhcm5pbmdzCgotLS0KZGlmZiAtLWdpdCBhLzAwMDEtVW50YWJpZnktYW5kLXJl bW92ZS10cmFpbGluZy13aGl0ZS1zcGFjZS5wYXRjaCBiLzAwMDEtVW50YWJpZnktYW5kLXJlbW92 ZS10cmFpbGluZy13aGl0ZS1zcGFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lNTkxODZhCi0tLSAvZGV2L251bGwKKysrIGIvMDAwMS1VbnRhYmlmeS1hbmQtcmVt b3ZlLXRyYWlsaW5nLXdoaXRlLXNwYWNlLnBhdGNoCkBAIC0wLDAgKzEsMTA5ODAgQEAKK0Zyb20g M2NjZGFhMDIzNjIzMGJiY2JjYmYzMzllN2RmZGZhZjIzYzEwYmQ2ZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IE1hdHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVsbGVydEBwaHlzaWNzLnV1 LnNlPgorRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAwMDoxNTozNyArMDIwMAorU3ViamVjdDogW1BB VENIIDEvMl0gVW50YWJpZnkgYW5kIHJlbW92ZSB0cmFpbGluZyB3aGl0ZS1zcGFjZQorCistLS0K KyAuLi4vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXIuYyAgICAgfCAgMTM2ICst CisgLi4uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVyLmggICAgIHwgIDQyNiAr LQorIC4uLi9saWJyYXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHAuYyAgICAgICB8IDcwNzAg KysrKysrKystLS0tLS0tLS0KKyAuLi4vbGlicmFyeS9nbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1 ZXN0LmMgICAgfCAgNDA4ICstCisgNCBmaWxlcyBjaGFuZ2VkLCA0MDIwIGluc2VydGlvbnMoKyks IDQwMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nYXNzL3RyYW5zZmVyL3NvdXJjZS9s aWJyYXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVyLmMgYi9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJy YXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVyLmMKK2luZGV4IDEyMmUxMjE4Ny4uMWJjM2IyN2YyIDEw MDY0NAorLS0tIGEvZ2Fzcy90cmFuc2Zlci9zb3VyY2UvbGlicmFyeS9nbG9idXNfZ2Fzc190cmFu c2Zlci5jCisrKysgYi9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nYXNzX3Ry YW5zZmVyLmMKK0BAIC01Nyw4ICs1Nyw4IEBAIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90IGds b2J1c19pX2dhc3NfdHJhbnNmZXJfbW9kdWxlID0KKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9saXN0ZW5lcl9jbG9zZV9jYWxsYmFjaygKKy0gICAgdm9pZCAqCQkJCQl1 c2VyX2FyZywKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdAkJcmVxdWVzdCk7 CisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9h cmcsCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QgICAgICAgICAgICAgcmVx dWVzdCk7CisgCisgc3RhdGljCisgaW50CitAQCAtNjcsOSArNjcsOSBAQCBnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2FjdGl2YXRlKHZvaWQpCisgICAgIGdsb2J1c19tb2R1bGVfYWN0aXZhdGUoR0xP QlVTX0NPTU1PTl9NT0RVTEUpOworIAorICAgICBnbG9idXNfaGFzaHRhYmxlX2luaXQoJmdsb2J1 c19pX2dhc3NfdHJhbnNmZXJfcHJvdG9jb2xzLAorLQkJCSAgMTYsCistCQkJICBnbG9idXNfaGFz aHRhYmxlX3N0cmluZ19oYXNoLAorLQkJCSAgZ2xvYnVzX2hhc2h0YWJsZV9zdHJpbmdfa2V5ZXEp OworKyAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICBnbG9idXNfaGFzaHRhYmxlX3N0cmluZ19oYXNoLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2xvYnVzX2hhc2h0YWJsZV9zdHJpbmdfa2V5ZXEpOworIAorICAgICBnbG9idXNfaGFu ZGxlX3RhYmxlX2luaXQoCisgICAgICAgICAmZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 X2hhbmRsZXMsCitAQCAtODUsMjUgKzg1LDI1IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfYWN0 aXZhdGUodm9pZCkKKyAgICAgICovCisgICAgIGdsb2J1c19tb2R1bGVfYWN0aXZhdGUoR0xPQlVT X0lfR0FTU19UUkFOU0ZFUl9GVFBfTU9EVUxFKTsKKyAjZW5kaWYKKy0gICAgCisrCisgICAgIGds b2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlZ2lzdGVyX3Byb3RvY29sKAorLQkmZ2xvYnVzX2lf Z2Fzc190cmFuc2Zlcl9odHRwX2Rlc2NyaXB0b3IpOworKyAgICAgICAgJmdsb2J1c19pX2dhc3Nf dHJhbnNmZXJfaHR0cF9kZXNjcmlwdG9yKTsKKyAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJv dG9fcmVnaXN0ZXJfcHJvdG9jb2woCistCSZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX2h0dHBzX2Rl c2NyaXB0b3IpOworKyAgICAgICAgJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfaHR0cHNfZGVzY3Jp cHRvcik7CisgCisgI2lmIDAKKyAgICAgLyogd2UgZG9uJ3Qgd2FudCB0byBidWlsZCB0aGlzIGlu CisgICAgICAqLworICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZWdpc3Rlcl9wcm90 b2NvbCgKKy0JJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfZnRwX2Rlc2NyaXB0b3IpOworKyAgICAg ICAgJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfZnRwX2Rlc2NyaXB0b3IpOworICAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9wcm90b19yZWdpc3Rlcl9wcm90b2NvbCgKKy0JJmdsb2J1c19pX2dhc3Nf dHJhbnNmZXJfZ3NpZnRwX2Rlc2NyaXB0b3IpOworKyAgICAgICAgJmdsb2J1c19pX2dhc3NfdHJh bnNmZXJfZ3NpZnRwX2Rlc2NyaXB0b3IpOworICNlbmRpZgorLSAgICAKKysKKyAgICAgZ2xvYnVz X211dGV4X2luaXQoJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfbXV0ZXgsCisgICAgICAgICAgICAg ICAgICAgICAgIEdMT0JVU19OVUxMKTsKKyAgICAgZ2xvYnVzX2NvbmRfaW5pdCgmZ2xvYnVzX2lf Z2Fzc190cmFuc2Zlcl9zaHV0ZG93bl9jb25kLAorLQkJICAgICBHTE9CVVNfTlVMTCk7CisrICAg ICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwpOworIAorICAgICByZXR1cm4gR0xPQlVTX1NV Q0NFU1M7CisgfQorQEAgLTExMyw0MCArMTEzLDQwIEBAIHN0YXRpYworIGludAorIGdsb2J1c19s X2dhc3NfdHJhbnNmZXJfZGVhY3RpdmF0ZSh2b2lkKQorIHsKKy0gICAgZ2xvYnVzX2xpc3RfdCAq CQkJCXJlc3Q7CisrICAgIGdsb2J1c19saXN0X3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzdDsKKyAKKyAgICAgZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9sb2NrKCk7CisgICAgIGds b2J1c19pX2dhc3NfdHJhbnNmZXJfZGVhY3RpdmF0aW5nID0gR0xPQlVTX1RSVUU7CistICAgIAor KworICNpZiBERUJVR19HQVNTX1RSQU5TRkVSCisgICAgIHByaW50ZihfR1RTTCgiRW50ZXJpbmcg Z2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9kZWFjdGl2YXRlKClcbiIpKTsKKyAjZW5kaWYKKy0gICAg CisrCisgICAgIHJlc3QgPSBnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RzOworLSAgICAK KysKKyAgICAgd2hpbGUoIWdsb2J1c19saXN0X2VtcHR5KHJlc3QpKQorICAgICB7CistCWdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAJCXRtcDsKKy0JZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdF9zdHJ1Y3RfdCAqCXJlcTsKKy0JaW50CQkJCQlyYzsKKysgICAgICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICB0bXA7CisrICAgICAgICBnbG9idXNfZ2Fz c190cmFuc2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICogcmVxOworKyAgICAgICAgaW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOworKworKyAgICAgICAgdG1wID0gKGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCkgKGludHB0cl90KQorKyAgICAgICAgICAgIGdsb2J1 c19saXN0X2ZpcnN0KHJlc3QpOworIAorLQl0bXAgPSAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF90KSAoaW50cHRyX3QpCistCSAgICBnbG9idXNfbGlzdF9maXJzdChyZXN0KTsKKysgICAg ICAgIHJlc3QgPSBnbG9idXNfbGlzdF9yZXN0KHJlc3QpOworIAorLQlyZXN0ID0gZ2xvYnVzX2xp c3RfcmVzdChyZXN0KTsKKysgICAgICAgIHJlcSA9IGdsb2J1c19oYW5kbGVfdGFibGVfbG9va3Vw KAorKyAgICAgICAgICAgICZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywK KysgICAgICAgICAgICB0bXApOworIAorLQlyZXEgPSBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1 cCgKKy0JICAgICZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKy0JICAg IHRtcCk7CistCQorICNpZiBERUJVR19HQVNTX1RSQU5TRkVSCistCXByaW50ZihfR1RTTCgiZmFp bGluZzogJXNcbiIpLCByZXEtPnVybCk7CisrICAgICAgICBwcmludGYoX0dUU0woImZhaWxpbmc6 ICVzXG4iKSwgcmVxLT51cmwpOworICNlbmRpZgorLQlyYyA9IGdsb2J1c19pX2dhc3NfdHJhbnNm ZXJfZmFpbCgKKy0JICAgIHRtcCwKKy0JICAgIHJlcSwKKy0JICAgIGdsb2J1c19pX2dhc3NfdHJh bnNmZXJfZGVhY3RpdmF0ZV9jYWxsYmFjaywKKy0JICAgIEdMT0JVU19OVUxMKTsKKysgICAgICAg IHJjID0gZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9mYWlsKAorKyAgICAgICAgICAgIHRtcCwKKysg ICAgICAgICAgICByZXEsCisrICAgICAgICAgICAgZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9kZWFj dGl2YXRlX2NhbGxiYWNrLAorKyAgICAgICAgICAgIEdMT0JVU19OVUxMKTsKKyAKKyAgICAgICAg IGlmIChyYyA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9FUlJPUl9ET05FKQorICAgICAgICAgewor QEAgLTE1OSw1MSArMTU5LDUxIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfZGVhY3RpdmF0ZSh2 b2lkKQorIAorICAgICB3aGlsZSghZ2xvYnVzX2xpc3RfZW1wdHkocmVzdCkpCisgICAgIHsKKy0J Z2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdCAJdG1wOworLQlnbG9idXNfZ2Fzc190cmFu c2Zlcl9saXN0ZW5lcl9zdHJ1Y3RfdCAqbDsKKy0JaW50CQkJCQlyYzsKKy0KKy0JdG1wID0gKGds b2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QpIChpbnRwdHJfdCkKKy0JICAgIGdsb2J1c19s aXN0X2ZpcnN0KHJlc3QpOworLQorLQlyZXN0ID0gZ2xvYnVzX2xpc3RfcmVzdChyZXN0KTsKKy0K Ky0JbCA9IGdsb2J1c19oYW5kbGVfdGFibGVfbG9va3VwKAorLQkgICAgJmdsb2J1c19pX2dhc3Nf dHJhbnNmZXJfbGlzdGVuZXJfaGFuZGxlcywKKy0JICAgIHRtcCk7CistCQorLQlyYyA9IGdsb2J1 c19pX2dhc3NfdHJhbnNmZXJfY2xvc2VfbGlzdGVuZXIoCistCSAgICB0bXAsCistCSAgICBsLAor LQkgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl9jbG9zZV9jYWxsYmFjaywKKy0J ICAgIEdMT0JVU19OVUxMKTsKKysgICAgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVy X3QgICAgICAgICB0bXA7CisrICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl9z dHJ1Y3RfdCAqbDsKKysgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByYzsKKysKKysgICAgICAgIHRtcCA9IChnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5l cl90KSAoaW50cHRyX3QpCisrICAgICAgICAgICAgZ2xvYnVzX2xpc3RfZmlyc3QocmVzdCk7Cisr CisrICAgICAgICByZXN0ID0gZ2xvYnVzX2xpc3RfcmVzdChyZXN0KTsKKysKKysgICAgICAgIGwg PSBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgKKysgICAgICAgICAgICAmZ2xvYnVzX2lfZ2Fz c190cmFuc2Zlcl9saXN0ZW5lcl9oYW5kbGVzLAorKyAgICAgICAgICAgIHRtcCk7CisrCisrICAg ICAgICByYyA9IGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfY2xvc2VfbGlzdGVuZXIoCisrICAgICAg ICAgICAgdG1wLAorKyAgICAgICAgICAgIGwsCisrICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190 cmFuc2Zlcl9saXN0ZW5lcl9jbG9zZV9jYWxsYmFjaywKKysgICAgICAgICAgICBHTE9CVVNfTlVM TCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIHdoaWxlKCghZ2xvYnVzX2xpc3RfZW1wdHkoZ2xv YnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0cykpIHx8CistCSAgKCFnbG9idXNfbGlzdF9lbXB0 eShnbG9idXNfaV9nYXNzX3RyYW5zZmVyX2xpc3RlbmVycykpKQorKyAgICAgICAgICAoIWdsb2J1 c19saXN0X2VtcHR5KGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJzKSkpCisgICAgIHsK KyAjaWYgREVCVUdfR0FTU19UUkFOU0ZFUgorLQlwcmludGYoX0dUU0woIndhaXRpbmcgZm9yIHJl cXVlc3RzXG4iKSk7CisrICAgICAgICBwcmludGYoX0dUU0woIndhaXRpbmcgZm9yIHJlcXVlc3Rz XG4iKSk7CisgI2VuZGlmCistCWdsb2J1c19jb25kX3dhaXQoJmdsb2J1c19pX2dhc3NfdHJhbnNm ZXJfc2h1dGRvd25fY29uZCwKKy0JCQkgJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfbXV0ZXgpOwkg CisrICAgICAgICBnbG9idXNfY29uZF93YWl0KCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3NodXRk b3duX2NvbmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICZnbG9idXNfaV9nYXNzX3RyYW5z ZmVyX211dGV4KTsKKyAgICAgfQorIAorICNpZiAwCisgICAgIC8qIHdlIGRvbid0IHdhbnQgdG8g YnVpbGQgdGhpcyBpbgorICAgICAgKi8KKyAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9f dW5yZWdpc3Rlcl9wcm90b2NvbCgKKy0JJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfZnRwX2Rlc2Ny aXB0b3IpOworKyAgICAgICAgJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfZnRwX2Rlc2NyaXB0b3Ip OworICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b191bnJlZ2lzdGVyX3Byb3RvY29sKAor LQkmZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9nc2lmdHBfZGVzY3JpcHRvcik7CisrICAgICAgICAm Z2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9nc2lmdHBfZGVzY3JpcHRvcik7CisgI2VuZGlmCistICAg IAorKworICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b191bnJlZ2lzdGVyX3Byb3RvY29s KAorLQkmZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9odHRwX2Rlc2NyaXB0b3IpOworKyAgICAgICAg Jmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfaHR0cF9kZXNjcmlwdG9yKTsKKyAgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcHJvdG9fdW5yZWdpc3Rlcl9wcm90b2NvbCgKKy0JJmdsb2J1c19pX2dhc3Nf dHJhbnNmZXJfaHR0cHNfZGVzY3JpcHRvcik7CisrICAgICAgICAmZ2xvYnVzX2lfZ2Fzc190cmFu c2Zlcl9odHRwc19kZXNjcmlwdG9yKTsKKysKKyAKKy0gICAgCisgI2lmIDAKKyAgICAgLyogd2Ug ZG9uJ3Qgd2FudCB0byBidWlsZCB0aGlzIGluCisgICAgICAqLworQEAgLTIxMSwxMyArMjExLDEz IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfZGVhY3RpdmF0ZSh2b2lkKQorICNlbmRpZgorIAor ICAgICBnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3VubG9jaygpOworLSAKKysKKyAgICAgZ2xvYnVz X21vZHVsZV9kZWFjdGl2YXRlKEdMT0JVU19JX0dBU1NfVFJBTlNGRVJfSFRUUF9NT0RVTEUpOwor LSAKKysKKyAgICAgZ2xvYnVzX2hhbmRsZV90YWJsZV9kZXN0cm95KCZnbG9idXNfaV9nYXNzX3Ry YW5zZmVyX2xpc3RlbmVyX2hhbmRsZXMpOworICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2Rlc3Ry b3koJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9oYW5kbGVzKTsKKyAKKy0gICAgCisr CisgICAgIGdsb2J1c19oYXNodGFibGVfZGVzdHJveSgmZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9w cm90b2NvbHMpOworIAorICNpZiAhZGVmaW5lZChCVUlMRF9MSVRFKQorQEAgLTIzNiw4ICsyMzYs OCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2RlYWN0aXZhdGUodm9pZCkKKyAKKyB2b2lkCisg Z2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9kZWFjdGl2YXRlX2NhbGxiYWNrKAorLSAgICB2b2lkICoJ CQkJCXVzZXJfYXJnLAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVl c3QpCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNl cl9hcmcsCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAg cmVxdWVzdCkKKyB7CisgICAgIGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9kZXN0cm95 KHJlcXVlc3QpOworIH0KK0BAIC0yNDUsOCArMjQ1LDggQEAgZ2xvYnVzX2lfZ2Fzc190cmFuc2Zl cl9kZWFjdGl2YXRlX2NhbGxiYWNrKAorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2xpc3RlbmVyX2Nsb3NlX2NhbGxiYWNrKAorLSAgICB2b2lkICoJCQkJCXVzZXJfYXJn LAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90CQlyZXF1ZXN0KQorKyAgICB2 b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnLAorKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90ICAgICAgICAgICAgIHJlcXVlc3QpCisg eworICAgICByZXR1cm47CisgfQorZGlmZiAtLWdpdCBhL2dhc3MvdHJhbnNmZXIvc291cmNlL2xp YnJhcnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXIuaCBiL2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJh cnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXIuaAoraW5kZXggZTBmYjc4M2Y3Li42NTBmYjQwMmMgMTAw NjQ0CistLS0gYS9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nYXNzX3RyYW5z ZmVyLmgKKysrKyBiL2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3NfdHJh bnNmZXIuaAorQEAgLTU4LDcgKzU4LDcgQEAgZXh0ZXJuICJDIiB7CisgICogVGhlIEdBU1MgVHJh bnNmZXIgQVBJIGlzIGVhc2lseSBleHRlbnNpYmxlIHRvIHN1cHBvcnQgZGlmZmVyZW50IHJlbW90 ZQorICAqIGRhdGEgYWNjZXNzIHByb3RvY29scy4gVGhlIHN0YW5kYXJkIEdsb2J1cyBkaXN0cmli dXRpb24gaW5jbHVkZXMgY2xpZW50LXNpZGUKKyAgKiBzdXBwb3J0IGZvciB0aGUgaHR0cCwgYW5k IGh0dHBzIHByb3RvY29scywgYXMgd2VsbCBhcworLSAqIHNlcnZlci1zaWRlIHN1cHBvcnQgZm9y IHRoZSBodHRwIGFuZCBodHRwcyBwcm90b2NvbHMuIAorKyAqIHNlcnZlci1zaWRlIHN1cHBvcnQg Zm9yIHRoZSBodHRwIGFuZCBodHRwcyBwcm90b2NvbHMuCisgICogQW4gYXBwbGljYXRpb24gd2hp Y2ggcmVxdWlyZXMgYWRkaXRpb25hbAorICAqIHByb3RvY29sIHN1cHBvcnQgbWF5IGFkZCB0aGlz IHRocm91Z2ggdGhlIEBsaW5rCisgICogZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9jb2wgcHJv dG9jb2wgbW9kdWxlIGludGVyZmFjZUBlbmRsaW5rLgorQEAgLTkyLDE3ICs5MiwxNyBAQCBleHRl cm4gIkMiIHsKKyAgKiAgICBnbG9idXNfbW9kdWxlX2RlYWN0aXZhdGUoR0xPQlVTX0dBU1NfVFJB TlNGRVJfTU9EVUxFKTsKKyAgKiBAZW5kY29kZQorICAqLworLWV4dGVybiBnbG9idXNfbW9kdWxl X2Rlc2NyaXB0b3JfdAkJZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9tb2R1bGU7CisrZXh0ZXJuIGds b2J1c19tb2R1bGVfZGVzY3JpcHRvcl90ICAgICAgICAgICAgICAgZ2xvYnVzX2lfZ2Fzc190cmFu c2Zlcl9tb2R1bGU7CisgCisgLyoqIE1vZHVsZSBkZXNjcmlwdG9yCisgICogIEBpbmdyb3VwIGds b2J1c19nYXNzX3RyYW5zZmVyX2FjdGl2YXRpb24KKyAgKiAgQGhpZGVpbml0aWFsaXplcgorICAq LworLSNkZWZpbmUgR0xPQlVTX0dBU1NfVFJBTlNGRVJfTU9EVUxFCQkoJmdsb2J1c19pX2dhc3Nf dHJhbnNmZXJfbW9kdWxlKQorKyNkZWZpbmUgR0xPQlVTX0dBU1NfVFJBTlNGRVJfTU9EVUxFICAg ICAgICAgICAgICgmZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9tb2R1bGUpCisgCisgI2RlZmluZSBf R1RTTChzKSBnbG9idXNfY29tbW9uX2kxOG5fZ2V0X3N0cmluZyggXAorLQkJICAgIEdMT0JVU19H QVNTX1RSQU5TRkVSX01PRFVMRSwgXAorLQkJICAgIHMpCisrICAgICAgICAgICAgICAgICAgICBH TE9CVVNfR0FTU19UUkFOU0ZFUl9NT0RVTEUsIFwKKysgICAgICAgICAgICAgICAgICAgIHMpCisg LyoqCisgICogQHN0cnVjdCBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QKKyAgKiBAaW5n cm91cCBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0CitAQCAtMTc1LDEwICsxNzUsMTAgQEAg dHlwZWRlZiBlbnVtCisgICogICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfSU5WQUxJ RAorICAqICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HCisgICogICAg IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfUEVORElORyAoUEVORElORywgQUNUSU5HLAor LSAqCQkJCQkJQUNUSU5HX1RPX1BFTkRJTkcpCisrICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQUNUSU5HX1RPX1BFTkRJTkcpCisgICogICAgIEdMT0JVU19H QVNTX1RSQU5TRkVSX1JFUVVFU1RfRkFJTEVEICAoRkFJTEVELCBVU0VSX0ZBSUwsIEFDVElOR19U T19GQUlMKQorICAqICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1JFRkVSUkVEIChS RUZFUlJJTkcsIEFDVElOR19UT19SRUZFUlJJTkcsCistICoJCQkJCQlBQ1RJTkdfVE9fUkVGRVJS SU5HMikKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB Q1RJTkdfVE9fUkVGRVJSSU5HMikKKyAgKiAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVT VF9ERU5JRUQKKyAgKiAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9ET05FCisgICov CitAQCAtMTkxLDQ1ICsxOTEsNDUgQEAgdHlwZWRlZiBlbnVtCisgICAgIEdMT0JVU19HQVNTX1RS QU5TRkVSX1JFUVVFU1RfSU5WQUxJRCwgIC8qKjwgSGFuZGxlIGlzIG5vIGxvbmdlciB2YWxpZCAq LworICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HLCAvKio8IEluaXRp YWwgY29ubmVjdGlvbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdXRob3JpemF0aW9uIGlzIG5vdCB5ZXQKKy0JCQkJCQljb21wbGV0ZWQgKi8K KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0 ZWQgKi8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9QRU5ESU5HLCAgLyoqPCBS ZXF1ZXN0IGlzIGF1dGhvcml6ZWQuICovCisgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVF U1RfRkFJTEVELCAgIC8qKjwgUmVxdWVzdCBmYWlsZWQgZHVlIHRvIHByb3RvY29sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Igb3IgY2xpZW50 IG9yIHNlcnZlcgorLQkJCQkJCWFib3J0aW5nIHRoZSByZXF1ZXN0ICovCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRpbmcgdGhlIHJlcXVlc3Qg Ki8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9SRUZFUlJFRCwgLyoqPCAgUmVx dWVzdCBjYW4gbm90IGJlIHByb2Nlc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBieSB0aGlzIHNlcnZlciwgcmVmZXJyZWQgdG8KKy0JCQkJCQkg YW5vdGhlciBVUkwgb3IgVVJMcyAqLworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhbm90aGVyIFVSTCBvciBVUkxzICovCisgICAgIEdMT0JVU19HQVNT X1RSQU5TRkVSX1JFUVVFU1RfREVOSUVELCAgIC8qKjwgVGhlIHNlcnZlciBkZW5pZWQgdGhpcwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qg Ki8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9ET05FLCAgICAgLyoqPCBBbGwg Y2FsbGJhY2tzIGhhdmUgY29tcGxldGVkICovCisgI2lmbmRlZiBHTE9CVVNfRE9OVF9ET0NVTUVO VF9JTlRFUk5BTAorICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0FDQ0VQVElORywv Kio8IGZvciBsaXN0ZW5lci1jcmVhdGVkIHJlcXVlc3RzLAorLQkJCQkJICAgICAgIHRoZSBzdGF0 ZSBiZWZvcmUgc3RhcnRpbmcsCistCQkJCQkgICAgICAgYWZ0ZXIgdGhlIHVzZXIgaGFzIGNhbGxl ZAorLQkJCQkJICAgICAgIHJlZ2lzdGVyX2FjY2VwdCwgYnV0IGJlZm9yZSB0aGUKKy0JCQkJCSAg ICAgICBjYWxsYmFjayBpcyBkb25lICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aGUgc3RhdGUgYmVmb3JlIHN0YXJ0aW5nLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIHVzZXIgaGFzIGNh bGxlZAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn aXN0ZXJfYWNjZXB0LCBidXQgYmVmb3JlIHRoZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgaXMgZG9uZSAqLworICAgICBHTE9CVVNfR0FT U19UUkFOU0ZFUl9SRVFVRVNUX0FDVElORywgICAvKiBvcCBwYXNzZWQgdG8gcmVxdWVzdCAqLwor ICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0FDVElOR19UT19QRU5ESU5HLCAvKiBj YWxsaW5nIGJhY2sgdG8gdXNlciAqLworICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNU X0FDVElOR19UT19GQUlMSU5HLCAvKiBvcCBwYXNzZWQgdG8gcmVxdWVzdCwgYW5kCistCQkJCQkJ ICAgIHVzZXIgY2FsbGVkIGZhaWwgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlciBjYWxsZWQgZmFpbCAqLworICAgICBHTE9CVVNfR0FT U19UUkFOU0ZFUl9SRVFVRVNUX0ZBSUxJTkcsICAgLyogdXNlciBjYWxsZWQgZmFpbCwgb3Igb3AK Ky0JCQkJCSAgICAgICBjb21wbGV0ZWQsIHVzZXIgY2FsbGJhY2sKKy0JCQkJCSAgICAgICBzdGFy dGVkICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b21wbGV0ZWQsIHVzZXIgY2FsbGJhY2sKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXJ0ZWQgKi8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVR VUVTVF9VU0VSX0ZBSUwsIC8qIHVzZXIgY2FsbGVkIGZhaWwgYmVmb3JlCistCQkJCQkgICAgICAg cmVhZHkvcmVmZXJyZWQvZGVuaWVkICovCistICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVF U1RfUkVGRVJSSU5HLAkgICAgLyogcHJvdG8gY2FsbGVkIHJlZmVycmVkLAorLQkJCQkJICAgICAg IGNhbGxiYWNrIHBlbmRpbmcgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlYWR5L3JlZmVycmVkL2RlbmllZCAqLworKyAgICBHTE9CVVNfR0FTU19U UkFOU0ZFUl9SRVFVRVNUX1JFRkVSUklORywgICAgICAgICAvKiBwcm90byBjYWxsZWQgcmVmZXJy ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs YmFjayBwZW5kaW5nICovCisgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfQUNUSU5H X1RPX1JFRkVSUklORywgLyogcHJvdG8gY2FsbGVkIHJlZmVycmVkLAorLQkJCQkJCW9wIGluIHBy b2dyZXNzICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3AgaW4gcHJvZ3Jlc3MgKi8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9G SU5JU0hJTkcsIC8qIG9wIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHksCistCQkJCQkgICAgICAgd2l0 aCBsYXN0IGRhdGEsIHVzZXIgY2FsbGJhY2sKKy0JCQkJCSAgICAgICBzdGFydGVkKi8KKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggbGFzdCBkYXRh LCB1c2VyIGNhbGxiYWNrCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdGFydGVkKi8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9TRVJW RVJfRkFJTDEsIC8qIHVzZXIgY2FsbGVkIGZhaWwgYmVmb3JlCistCQkJCQkgICAgICAgICAgbmV3 X2xpc3RlbmVyX3JlcXVlc3QgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5ld19saXN0ZW5lcl9yZXF1ZXN0ICovCisgICAgIEdMT0JVU19HQVNT X1RSQU5TRkVSX1JFUVVFU1RfU0VSVkVSX0ZBSUwyLCAvKiB1c2VyIGNhbGxlZCBmYWlsIGJlZm9y ZQorLQkJCQkJICAgICAgICAgYXV0aG9yaXplL3JlZmVyL2RlbnkgKi8KKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXplL3JlZmVyL2Rlbnkg Ki8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9TRVJWRVJfRkFJTDMsIC8qIHVz ZXIgY2FsbGVkIGZhaWwgYmVmb3JlCistCQkJCQkgICAgICAgICByZXF1ZXN0X3JlYWR5ICovCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Rf cmVhZHkgKi8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9TVEFSVElORzIsIC8q IHNlcnZlciBub3QgYXV0aG9yaXplZC9kZW5pZWQvZmFpbGVkICovCisgICAgIEdMT0JVU19HQVNT X1RSQU5TRkVSX1JFUVVFU1RfU1RBUlRJTkczICAvKiBzZXJ2ZXIgbm90IGF1dGhvcml6ZWQvZGVu aWVkL2ZhaWxlZCAqLworICNlbmRpZgorQEAgLTI0MCwxMyArMjQwLDEzIEBAIHR5cGVkZWYgZW51 bQorICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9MSVNURU5FUl9JTlZBTElELCAgICAgLyogaGFu ZGxlIG5vIGxvbmdlciB2YWxpZCAqLworICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9MSVNURU5F Ul9TVEFSVElORywgICAgLyogbmV3IGxpc3RlbmVyIGNhbGxlZCAqLworICAgICBHTE9CVVNfR0FT U19UUkFOU0ZFUl9MSVNURU5FUl9MSVNURU5JTkcsICAgLyogcmVnaXN0ZXIgbGlzdGVuLworLQkJ CQkJCSAgcHJvdG8tPnJlZ2lzdGVyIGxpc3RlbiAqLworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJlZ2lzdGVyIGxpc3RlbiAqLworICAg ICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9MSVNURU5FUl9SRUFEWSwgICAgICAgLyogcHJvdG8gY2Fs bHMgbGlzdGVuZXJfcmVhZHkgKi8KKyAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfTElTVEVORVJf QUNDRVBUSU5HLCAgIC8qIHJlZ2lzdGVyX2FjY2VwdCgpICovCisgICAgIEdMT0JVU19HQVNTX1RS QU5TRkVSX0xJU1RFTkVSX0NMT1NJTkcxLCAgICAvKiBjbG9zZV9saXN0ZW5lciBiZWZvcmUKKy0J CQkJCQkgIGxpc3RlbmVyX3JlYWR5IGNhbGxlZCAqLworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJfcmVhZHkgY2FsbGVkICovCisgICAg IEdMT0JVU19HQVNTX1RSQU5TRkVSX0xJU1RFTkVSX0NMT1NJTkcyLCAgICAvKiBjbG9zZSBsaXN0 ZW5lciBiZWZvcmUKKy0JCQkJCQkgIG5ld19yZXF1ZXN0ICovCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcmVxdWVzdCAqLworICAgICBHTE9C VVNfR0FTU19UUkFOU0ZFUl9MSVNURU5FUl9DTE9TRUQgICAgICAgLyogbGlzdGVuZXIgaXMgY2xv c2VkICovCisgfSBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl9zdGF0dXNfdDsKKyAKK0BA IC0zMjQsOCArMzI0LDggQEAgZW51bQorIAorIHR5cGVkZWYgdm9pZAorICgqIGdsb2J1c19nYXNz X3RyYW5zZmVyX2NhbGxiYWNrX3QpKAorLSAgICB2b2lkICoJCQkJCWFyZywKKy0gICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90IAkJcmVxdWVzdCk7CisrICAgIHZvaWQgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLAorKyAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QpOworIC8qIENsaWVudCBJbnRlcmZh Y2UgKi8KKyAvKioKKyAgKiBAYnJpZWYgR0FTUyBUcmFuc2ZlciBDbGllbnQgT3BlcmF0aW9ucwor QEAgLTM1MCw0OSArMzUwLDQ5IEBAIHR5cGVkZWYgdm9pZAorICAqLworIGludAorIGdsb2J1c19n YXNzX3RyYW5zZmVyX3JlZ2lzdGVyX2dldCgKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF90ICoJCXJlcXVlc3QsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRy X3QgKglhdHRyLAorLSAgICBjaGFyICoJCQkJCXVybCwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfY2FsbGJhY2tfdAkJY2FsbGJhY2ssCistICAgIHZvaWQgKgkJCQkJdXNlcl9hcmcpOworKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgKiAgICAgICAgICAgIHJlcXVlc3QsCisr ICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAgICAgICAgYXR0ciwKKysg ICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisrICAg IGdsb2J1c19nYXNzX3RyYW5zZmVyX2NhbGxiYWNrX3QgICAgICAgICAgICAgY2FsbGJhY2ssCisr ICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcp OworIAorIGludAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX2dldCgKKy0gICAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF90ICoJCXJlcXVlc3QsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVy X3JlcXVlc3RhdHRyX3QgKglhdHRyLAorLSAgICBjaGFyICoJCQkJCXVybCk7CisrICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAqICAgICAgICAgICAgcmVxdWVzdCwKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqICAgICAgICBhdHRyLAorKyAgICBjaGFy ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCk7CisgCisgaW50Cisg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVnaXN0ZXJfcHV0KAorLSAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0X3QgKgkJcmVxdWVzdCwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdGF0dHJfdCAqCWF0dHIsCistICAgIGNoYXIgKgkJCQkJdXJsLAorLSAgICBnbG9idXNfc2l6 ZV90CQkJCWxlbmd0aCwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfY2FsbGJhY2tfdAkJY2Fs bGJhY2ssCistICAgIHZvaWQgKgkJCQkJdXNlcl9hcmcpOworKyAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0X3QgKiAgICAgICAgICAgIHJlcXVlc3QsCisrICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAgICAgICAgYXR0ciwKKysgICAgY2hhciAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisrICAgIGdsb2J1c19zaXplX3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAorKyAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9jYWxsYmFja190ICAgICAgICAgICAgIGNhbGxiYWNrLAorKyAgICB2b2lkICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKTsKKyAKKyBpbnQKKyBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9wdXQoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rf dCAqCQlyZXF1ZXN0LAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICoJ YXR0ciwKKy0gICAgY2hhciAqCQkJCQl1cmwsCistICAgIGdsb2J1c19zaXplX3QJCQkJbGVuZ3Ro KTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICogICAgICAgICAgICByZXF1 ZXN0LAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICogICAgICAgIGF0 dHIsCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJs LAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0 aCk7CisgCisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVnaXN0ZXJfYXBwZW5kKAorLSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgKgkJcmVxdWVzdCwKKy0gICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqCWF0dHIsCistICAgIGNoYXIgKgkJCQkJdXJs LAorLSAgICBnbG9idXNfc2l6ZV90CQkJCWxlbmd0aCwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfY2FsbGJhY2tfdAkJY2FsbGJhY2ssCistICAgIHZvaWQgKgkJCQkJdXNlcl9hcmcpOworKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgKiAgICAgICAgICAgIHJlcXVlc3QsCisr ICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAgICAgICAgYXR0ciwKKysg ICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisrICAg IGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAorKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9jYWxsYmFja190ICAgICAgICAgICAgIGNhbGxiYWNrLAor KyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJn KTsKKyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9hcHBlbmQoCistICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAqCQlyZXF1ZXN0LAorLSAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0YXR0cl90ICoJYXR0ciwKKy0gICAgY2hhciAqCQkJCQl1cmwsCistICAgIGds b2J1c19zaXplX3QJCQkJbGVuZ3RoKTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVz dF90ICogICAgICAgICAgICByZXF1ZXN0LAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1 ZXN0YXR0cl90ICogICAgICAgIGF0dHIsCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxlbmd0aCk7CisgCisgLyoqCisgICogQGJyaWVmIEdBU1MgU2VydmVy IEltcGxlbWVudGF0aW9uCitAQCAtNDA0LDcgKzQwNCw3IEBAIGdsb2J1c19nYXNzX3RyYW5zZmVy X2FwcGVuZCgKKyAgKiBBbm90aGVyIG1vZGUgb2YgdXNpbmcgdGhlIEdBU1MgVHJhbnNmZXIgQVBJ IGlzIHRvIGltcGxlbWVudAorICAqIGRhdGEgc2VydmVycy4gVGhlIHByaW1hcnkgZGlmZmVyZW5j ZSBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kCisgICogc2VydmVyIHBhcnRzIG9mIHRoZSBHQVNTIFRy YW5zZmVyIEFQSSBhcmUgaG93IHJlcXVlc3RzIGFyZSBnZW5lcmF0ZWQuCistICogCisrICoKKyAg KiBUbyBpbXBsZW1lbnQgYSBzZXJ2ZXIsIHRoZSB1c2VyIHdvdWxkIGNhbGwKKyAgKiBnbG9idXNf Z2Fzc190cmFuc2Zlcl9jcmVhdGVfbGlzdGVuZXIoKSB0byBjcmVhdGUgYSBuZXcgc2VydmVyIHBv cnQgb24KKyAgKiB3aGljaCBhIHNwZWNpZmljIHByb3RvY29sIHdpbGwgYmUgdXNlZCB0byByZXF1 ZXN0IGZpbGUgdHJhbnNmZXIgb3BlcmF0aW9ucy4KK0BAIC00MzIsOCArNDMyLDggQEAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfYXBwZW5kKAorICAqLworIHR5cGVkZWYgdm9pZAorICgqIGdsb2J1c19n YXNzX3RyYW5zZmVyX2Nsb3NlX2NhbGxiYWNrX3QpKAorLSAgICB2b2lkICoJCQkJCWNhbGxiYWNr X2FyZywKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdAkJbGlzdGVuZXIpOwor KyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr X2FyZywKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdCAgICAgICAgICAgICBs aXN0ZW5lcik7CisgCisgLyoqCisgICogTGlzdGVuIGNhbGxiYWNrLgorQEAgLTQ0Myw2NCArNDQz LDY0IEBAIHR5cGVkZWYgdm9pZAorICAqLworIHR5cGVkZWYgdm9pZAorICgqIGdsb2J1c19nYXNz X3RyYW5zZmVyX2xpc3Rlbl9jYWxsYmFja190KSgKKy0gICAgdm9pZCAqCQkJCQljYWxsYmFja19h cmcsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QgCQlsaXN0ZW5lcik7Cisr ICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tf YXJnLAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90ICAgICAgICAgICAgIGxp c3RlbmVyKTsKKyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9jcmVhdGVfbGlzdGVuZXIo CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QgKgkJbGlzdGVuZXIsCistICAg IGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl90ICoJYXR0ciwKKy0gICAgY2hhciAq CQkJCQlzY2hlbWUpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90ICogICAg ICAgICAgIGxpc3RlbmVyLAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcmF0dHJf dCAqICAgICAgIGF0dHIsCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2NoZW1lKTsKKyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9jbG9zZV9s aXN0ZW5lcigKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdAkJbGlzdGVuZXIs CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2Nsb3NlX2NhbGxiYWNrX3QgCWNhbGxiYWNrLAor LSAgICB2b2lkICoJCQkJCXVzZXJfYXJnKTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlz dGVuZXJfdCAgICAgICAgICAgICBsaXN0ZW5lciwKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf Y2xvc2VfY2FsbGJhY2tfdCAgICAgICBjYWxsYmFjaywKKysgICAgdm9pZCAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZyk7CisgCisgaW50CisgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVnaXN0ZXJfbGlzdGVuKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9s aXN0ZW5lcl90CQlsaXN0ZW5lciwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuX2Nh bGxiYWNrX3QJY2FsbGJhY2ssCistICAgIHZvaWQgKgkJCQkJdXNlcl9hcmcpOworKyAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90ICAgICAgICAgICAgIGxpc3RlbmVyLAorKyAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5fY2FsbGJhY2tfdCAgICAgIGNhbGxiYWNrLAorKyAg ICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKTsK KyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZWdpc3Rlcl9hY2NlcHQoCistICAgIGds b2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAqCQlyZXF1ZXN0LAorLSAgICBnbG9idXNfZ2Fz c190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICoJYXR0ciwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfbGlzdGVuZXJfdAkJbGlzdGVuZXIsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2NhbGxi YWNrX3QJCWNhbGxiYWNrLAorLSAgICB2b2lkICoJCQkJCXVzZXJfYXJnKTsKKysgICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICogICAgICAgICAgICByZXF1ZXN0LAorKyAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICogICAgICAgIGF0dHIsCisrICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QgICAgICAgICAgICAgbGlzdGVuZXIsCisrICAgIGds b2J1c19nYXNzX3RyYW5zZmVyX2NhbGxiYWNrX3QgICAgICAgICAgICAgY2FsbGJhY2ssCisrICAg IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpOwor IAorIGludAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlZmVyKAorLSAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QsCistICAgIGNoYXIgKioJCQkJCXVybHMsCistICAg IGdsb2J1c19zaXplX3QJCQkJbnVtX3VybHMpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9y ZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QsCisrICAgIGNoYXIgKiogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdXJscywKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudW1fdXJscyk7CisgCisgaW50CisgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfYXV0aG9yaXplKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJ CXJlcXVlc3QsCistICAgIGdsb2J1c19zaXplX3QJCQkJdG90YWxfbGVuZ3RoKTsKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0LAorKyAgICBn bG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2xlbmd0aCk7 CisgCisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfZGVueSgKKy0gICAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0LAorLSAgICBpbnQJCQkJCQlyZWFzb24sCistICAg IGNoYXIgKgkJCQkJbWVzc2FnZSk7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rf dCAgICAgICAgICAgICAgcmVxdWVzdCwKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWFzb24sCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWVzc2FnZSk7CisgCisgY2hhciAqCisgZ2xvYnVzX2dhc3NfdHJh bnNmZXJfbGlzdGVuZXJfZ2V0X2Jhc2VfdXJsKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9s aXN0ZW5lcl90CQlsaXN0ZW5lcik7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVy X3QgICAgICAgICAgICAgbGlzdGVuZXIpOworIAorIHZvaWQgKgorIGdsb2J1c19nYXNzX3RyYW5z ZmVyX2xpc3RlbmVyX2dldF91c2VyX3BvaW50ZXIoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVy X2xpc3RlbmVyX3QJCWxpc3RlbmVyKTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVu ZXJfdCAgICAgICAgICAgICBsaXN0ZW5lcik7CisgCisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfbGlzdGVuZXJfc2V0X3VzZXJfcG9pbnRlcigKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf bGlzdGVuZXJfdAkJbGlzdGVuZXIsCistICAgIHZvaWQgKgkJCQkJdXNlcl9wb2ludGVyKTsKKysg ICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdCAgICAgICAgICAgICBsaXN0ZW5lciwK KysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX3Bv aW50ZXIpOworIAorIC8qKgorICAqIEBkZWZncm91cCBnbG9idXNfZ2Fzc190cmFuc2Zlcl9kYXRh IFNlbmRpbmcgYW5kIFJlY2VpdmluZyBEYXRhCitAQCAtNTI5LDM1ICs1MjksMzUgQEAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfc2V0X3VzZXJfcG9pbnRlcigKKyAgKi8KKyB0eXBlZGVm IHZvaWQKKyAoKiBnbG9idXNfZ2Fzc190cmFuc2Zlcl9ieXRlc19jYWxsYmFja190KSgKKy0gICAg dm9pZCAqCQkJCQlhcmcsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVx dWVzdCwKKy0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWJ5dGVzLAorLSAgICBnbG9idXNfc2l6ZV90 CQkJCWxlbmd0aCwKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJCQlsYXN0X2RhdGEpOworKyAgICB2b2lk ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKysgICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0LAorKyAgICBnbG9i dXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLAorKyAgICBnbG9i dXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKKysgICAgZ2xv YnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2RhdGEpOworIAor IGludAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3NlbmRfYnl0ZXMoCistICAgIGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCwKKy0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWJ5 dGVzLAorLSAgICBnbG9idXNfc2l6ZV90CQkJCXNlbmRfbGVuZ3RoLAorLSAgICBnbG9idXNfYm9v bF90CQkJCWxhc3RfZGF0YSwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfYnl0ZXNfY2FsbGJh Y2tfdAljYWxsYmFjaywKKy0gICAgdm9pZCAqCQkJCQl1c2VyX2FyZyk7CisrICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCwKKysgICAgZ2xvYnVz X2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcywKKysgICAgZ2xvYnVz X3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX2xlbmd0aCwKKysgICAg Z2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2RhdGEsCisr ICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2J5dGVzX2NhbGxiYWNrX3QgICAgICAgY2FsbGJhY2ss CisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9h cmcpOworIAorIGludAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlY2VpdmVfYnl0ZXMoCistICAg IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCwKKy0gICAgZ2xvYnVzX2J5 dGVfdCAqCQkJCWJ5dGVzLAorLSAgICBnbG9idXNfc2l6ZV90CQkJCW1heF9sZW5ndGgsCistICAg IGdsb2J1c19zaXplX3QJCQkJd2FpdF9mb3JfbGVuZ3RoLAorLSAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9ieXRlc19jYWxsYmFja190CWNhbGxiYWNrLAorLSAgICB2b2lkICoJCQkJCXVzZXJfYXJn KTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1 ZXN0LAorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5 dGVzLAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h eF9sZW5ndGgsCisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2FpdF9mb3JfbGVuZ3RoLAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9ieXRlc19jYWxs YmFja190ICAgICAgIGNhbGxiYWNrLAorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVzZXJfYXJnKTsKKyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zl cl9mYWlsKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QsCist ICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2NhbGxiYWNrX3QJCWNhbGxiYWNrLAorLSAgICB2b2lk ICoJCQkJCXVzZXJfYXJnKTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAg ICAgICAgICAgICByZXF1ZXN0LAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9jYWxsYmFja190 ICAgICAgICAgICAgIGNhbGxiYWNrLAorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVzZXJfYXJnKTsKKyAvKioKKyAgKiBAYnJpZWYgR0FTUyBSZWZlcnJh bHMKKyAgKgorQEAgLTU3OSwyMyArNTc5LDIzIEBAIGdsb2J1c19nYXNzX3RyYW5zZmVyX2ZhaWwo CisgI2lmbmRlZiBET1hZR0VOCisgdHlwZWRlZiBzdHJ1Y3QKKyB7CistICAgIGNoYXIgKioJCQkJ CXVybDsKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQljb3VudDsKKysgICAgY2hhciAqKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw7CisrICAgIGdsb2J1c19zaXplX3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ7CisgfSBnbG9idXNfZ2Fzc190cmFuc2Zl cl9yZWZlcnJhbF90OworIAorIAorIGdsb2J1c19zaXplX3QKKyBnbG9idXNfZ2Fzc190cmFuc2Zl cl9yZWZlcnJhbF9nZXRfY291bnQoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlZmVycmFs X3QgKgkJcmVmZXJyYWwpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZWZlcnJhbF90ICog ICAgICAgICAgIHJlZmVycmFsKTsKKyAKKyBjaGFyICoKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9y ZWZlcnJhbF9nZXRfdXJsKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZWZlcnJhbF90ICoJ CXJlZmVycmFsLAorLSAgICBnbG9idXNfc2l6ZV90CQkJCWluZGV4KTsKKysgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVmZXJyYWxfdCAqICAgICAgICAgICByZWZlcnJhbCwKKysgICAgZ2xvYnVz X3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCk7CisgCisgaW50Cisg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVmZXJyYWxfZGVzdHJveSgKKy0gICAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVmZXJyYWxfdCAqCQlyZWZlcnJhbCk7CisrICAgIGdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlZmVycmFsX3QgKiAgICAgICAgICAgcmVmZXJyYWwpOworIAorICNlbmRpZgorIAorQEAg LTYzMSw2NCArNjMxLDY0IEBAIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlZmVycmFsX2Rlc3Ryb3ko CisgI2lmbmRlZiBET1hZR0VOCisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90eXBlX3QK KyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF90eXBlKAorLSAgICBnbG9idXNfZ2Fz c190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zl cl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QpOworIAorIGdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlcXVlc3Rfc3RhdHVzX3QKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF9z dGF0dXMoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCk7Cisr ICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCk7 CisgCisgY2hhciAqCisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9nZXRfc3ViamVjdCgK Ky0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0KTsKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KTsKKyAKKyBp bnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3NldF9zdWJqZWN0KAorLSAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QsCistICAgIGNoYXIgKgkJCQkJc3Vi amVjdCk7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAg cmVxdWVzdCwKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdWJqZWN0KTsKKyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF9y ZWZlcnJhbCgKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0LAor LSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZWZlcnJhbF90ICoJCXJlZmVycmFsKTsKKysgICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0LAorKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZWZlcnJhbF90ICogICAgICAgICAgIHJlZmVycmFsKTsK KyAKKyBjaGFyICoKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF91cmwoCistICAg IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCk7CisrICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCk7CisgCisgaW50Cisg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zZXRfdXJsKAorLSAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QsCistICAgIGNoYXIgKgkJCQkJdXJsKTsKKysgICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0LAorKyAg ICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCk7CisgCisg Z2xvYnVzX3NpemVfdAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X2xlbmd0aCgK Ky0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0KTsKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KTsKKyAKKyBp bnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF9kZW5pYWxfcmVhc29uKAorLSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QpOworKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QpOworIAorIGNoYXIg KgorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X2RlbmlhbF9tZXNzYWdlKAorLSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QpOworKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QpOworIAorIHZvaWQg KgorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X3VzZXJfcG9pbnRlcigKKy0gICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0KTsKKysgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KTsKKyAKKyBpbnQKKyBn bG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3NldF91c2VyX3BvaW50ZXIoCistICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCwKKy0gICAgdm9pZCAqCQkJCQl1c2Vy X3BvaW50ZXIpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAg ICAgIHJlcXVlc3QsCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXNlcl9wb2ludGVyKTsKKyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1 ZXN0X2Rlc3Ryb3koCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVz dCk7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVx dWVzdCk7CisgCisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zZXRfdHlwZSgK Ky0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0LAorLSAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3R5cGVfdAkJdHlwZSk7CisrICAgIGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCwKKysgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVxdWVzdF90eXBlX3QgICAgICAgICB0eXBlKTsKKyAjZW5kaWYKKyAKKyAK K0BAIC03MDMsMTA2ICs3MDMsMTA2IEBAIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc2V0 X3R5cGUoCisgI2lmbmRlZiBET1hZR0VOCisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdGF0dHJfaW5pdCgKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAq CWF0dHIsCistICAgIGNoYXIgKgkJCQkgICAgICAgIHVybF9zY2hlbWUpOworKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICogICAgICAgIGF0dHIsCisrICAgIGNoYXIgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX3NjaGVtZSk7CisgCisgaW50 CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfZGVzdHJveSgKKy0gICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqCWF0dHIpOworKyAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICogICAgICAgIGF0dHIpOworIAorIGludAorIGdsb2J1c19n YXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl9pbml0KAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zl cl9saXN0ZW5lcmF0dHJfdCAqCWF0dHIsCistICAgIGNoYXIgKgkJCQkgICAgICAgIHVybF9zY2hl bWUpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcmF0dHJfdCAqICAgICAgIGF0 dHIsCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJs X3NjaGVtZSk7CisgCisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJhdHRyX2Rl c3Ryb3koCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl90ICoJYXR0cik7 CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl90ICogICAgICAgYXR0cik7 CisgCisgLyogQmFzZSBBdHRyaWJ1dGUgQWNjZXNzb3JzICovCisgaW50CisgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdGF0dHJfc2V0X3Byb3h5X3VybCgKKy0gICAgZ2xvYnVzX2dhc3NfdHJh bnNmZXJfcmVxdWVzdGF0dHJfdCAqCWF0dHIsCistICAgIGNoYXIgKgkJCQkgICAgICAgIHByb3h5 X3VybCk7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAgICAgICAg YXR0ciwKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw cm94eV91cmwpOworIAorIGludAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX2dl dF9wcm94eV91cmwoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKglh dHRyLAorLSAgICBjaGFyICoqCQkJCQlwcm94eV91cmwpOworKyAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0YXR0cl90ICogICAgICAgIGF0dHIsCisrICAgIGNoYXIgKiogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHlfdXJsKTsKKyAKKyBpbnQKKyBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl9zZXRfYmxvY2tfc2l6ZSgKKy0gICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqCWF0dHIsCistICAgIGdsb2J1c19zaXplX3QJCQkJ YmxvY2tfc2l6ZSk7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAg ICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBibG9ja19zaXplKTsKKyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 YXR0cl9nZXRfYmxvY2tfc2l6ZSgKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0 dHJfdCAqCWF0dHIsCistICAgIGdsb2J1c19zaXplX3QgKgkJCQlibG9ja19zaXplKTsKKysgICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqICAgICAgICBhdHRyLAorKyAgICBn bG9idXNfc2l6ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3NpemUpOwor IAorIGludAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3NldF9maWxlX21vZGUo CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKglhdHRyLAorLSAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9maWxlX21vZGVfdAkJZmlsZV9tb2RlKTsKKysgICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqICAgICAgICBhdHRyLAorKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9maWxlX21vZGVfdCAgICAgICAgICAgIGZpbGVfbW9kZSk7CisgCisgaW50 CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfZ2V0X2ZpbGVfbW9kZSgKKy0gICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqCWF0dHIsCistICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX2ZpbGVfbW9kZV90ICoJCWZpbGVfbW9kZSk7CisrICAgIGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAgICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfZmlsZV9tb2RlX3QgKiAgICAgICAgICBmaWxlX21vZGUpOworIAorIGludAorIGds b2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3NldF9jb25uZWN0aW9uX3JldXNlKAorLSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICoJYXR0ciwKKy0gICAgZ2xvYnVz X2Jvb2xfdAkJCQljb25uZWN0aW9uX3JldXNlKTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdGF0dHJfdCAqICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25fcmV1c2UpOworIAorIGludAorIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX2dldF9jb25uZWN0aW9uX3JldXNlKAorLSAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICoJYXR0ciwKKy0gICAgZ2xvYnVzX2Jv b2xfdCAqCQkJCWNvbm5lY3Rpb25fcmV1c2UpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9y ZXF1ZXN0YXR0cl90ICogICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19ib29sX3QgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9yZXVzZSk7CisgCisgLyogU29ja2V0IEF0 dHJpYnV0ZSBBY2Nlc3NvcnMgKi8KKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 YXR0cl9zZXRfc29ja2V0X3NuZGJ1ZigKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVz dGF0dHJfdCAqCWF0dHIsCistICAgIGludAkJCQkJCXNuZGJ1Zik7CisrICAgIGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAgICAgICAgYXR0ciwKKysgICAgaW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRidWYpOworIAorIGludAorIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX2dldF9zb2NrZXRfc25kYnVmKAorLSAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICoJYXR0ciwKKy0gICAgaW50ICoJCQkJCXNu ZGJ1Zik7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAgICAgICAg YXR0ciwKKysgICAgaW50ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz bmRidWYpOworIAorIGludAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3NldF9z b2NrZXRfcmN2YnVmKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICoJ YXR0ciwKKy0gICAgaW50CQkJCQkJcmN2YnVmKTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdGF0dHJfdCAqICAgICAgICBhdHRyLAorKyAgICBpbnQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJjdmJ1Zik7CisgCisgaW50CisgZ2xvYnVzX2dhc3NfdHJh bnNmZXJfcmVxdWVzdGF0dHJfZ2V0X3NvY2tldF9yY3ZidWYoCistICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX3JlcXVlc3RhdHRyX3QgKglhdHRyLAorLSAgICBpbnQgKgkJCQkJcmN2YnVmKTsKKysg ICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqICAgICAgICBhdHRyLAorKyAg ICBpbnQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjdmJ1Zik7Cisg CisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfc2V0X3NvY2tldF9ub2Rl bGF5KAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl90ICoJYXR0ciwKKy0g ICAgZ2xvYnVzX2Jvb2xfdAkJCQlub2RlbGF5KTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdGF0dHJfdCAqICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5vZGVsYXkpOworIAorIGludAorIGdsb2J1c19nYXNzX3Ry YW5zZmVyX3JlcXVlc3RhdHRyX2dldF9zb2NrZXRfbm9kZWxheSgKKy0gICAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqCWF0dHIsCistICAgIGdsb2J1c19ib29sX3QgKgkJCQlu b2RlbGF5KTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqICAgICAg ICBhdHRyLAorKyAgICBnbG9idXNfYm9vbF90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5vZGVsYXkpOworIAorIC8qIFNlY3VyaXR5IGF0dHJpYnV0ZSBhY2Nlc3NvcnMgKi8KKyBpbnQK KyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9zZWN1cmVfcmVxdWVzdGF0dHJfc2V0X2F1dGhvcml6YXRp b24oCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKglhdHRyLAorLSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9hdXRob3JpemF0aW9uX3QJbW9kZSwKKy0gICAgY2hhciAq CQkJCQlzdWJqZWN0KTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAq ICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9hdXRob3JpemF0aW9uX3Qg ICAgICAgIG1vZGUsCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3ViamVjdCk7CisgCisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfc2VjdXJlX3Jl cXVlc3RhdHRyX2dldF9hdXRob3JpemF0aW9uKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9y ZXF1ZXN0YXR0cl90ICoJYXR0ciwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfYXV0aG9yaXph dGlvbl90ICoJbW9kZSwKKy0gICAgY2hhciAqKgkJCQkJc3ViamVjdCk7CisrICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX3QgKiAgICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfYXV0aG9yaXphdGlvbl90ICogICAgICBtb2RlLAorKyAgICBjaGFyICoqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QpOworICNlbmRpZgorIAor IC8qKgorQEAgLTgxMywyMyArODEzLDIzIEBAIGdsb2J1c19nYXNzX3RyYW5zZmVyX3NlY3VyZV9y ZXF1ZXN0YXR0cl9nZXRfYXV0aG9yaXphdGlvbigKKyAjaWZuZGVmIERPWFlHRU4KKyBpbnQKKyBn bG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcmF0dHJfc2V0X2JhY2tsb2coCistICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl90ICoJYXR0ciwKKy0gICAgaW50CQkJCQkJYmFj a2xvZyk7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl90ICogICAgICAg YXR0ciwKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi YWNrbG9nKTsKKyAKKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcmF0dHJfZ2V0 X2JhY2tsb2coCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl90ICoJYXR0 ciwKKy0gICAgaW50CSoJCQkJCWJhY2tsb2cpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9s aXN0ZW5lcmF0dHJfdCAqICAgICAgIGF0dHIsCisrICAgIGludCAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmFja2xvZyk7CisgCisgaW50CisgZ2xvYnVzX2dhc3NfdHJh bnNmZXJfbGlzdGVuZXJhdHRyX3NldF9wb3J0KAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9s aXN0ZW5lcmF0dHJfdCAqCWF0dHIsCistICAgIHVuc2lnbmVkIHNob3J0CQkJCXBvcnQpOworKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcmF0dHJfdCAqICAgICAgIGF0dHIsCisrICAg IHVuc2lnbmVkIHNob3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCk7CisgCisg aW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJhdHRyX2dldF9wb3J0KAorLSAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcmF0dHJfdCAqCWF0dHIsCistICAgIHVuc2lnbmVk IHNob3J0ICoJCQkJcG9ydCk7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0 cl90ICogICAgICAgYXR0ciwKKysgICAgdW5zaWduZWQgc2hvcnQgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwb3J0KTsKKyAjZW5kaWYKKyAKKyAvKioKK0BAIC04NDEsNjQgKzg0MSw2NCBA QCBleHRlcm4gY29uc3QgZ2xvYnVzX29iamVjdF90eXBlX3QKKyBHTE9CVVNfR0FTU19PQkpFQ1Rf VFlQRV9SRVFVRVNUQVRUUl9ERUZJTklUSU9OOworIAorICNkZWZpbmUgR0xPQlVTX0dBU1NfT0JK RUNUX1RZUEVfUkVRVUVTVEFUVFIgXAorLQkoJkdMT0JVU19HQVNTX09CSkVDVF9UWVBFX1JFUVVF U1RBVFRSX0RFRklOSVRJT04pCisrICAgICAgICAoJkdMT0JVU19HQVNTX09CSkVDVF9UWVBFX1JF UVVFU1RBVFRSX0RFRklOSVRJT04pCisgCisgZ2xvYnVzX29iamVjdF90ICoKKyBnbG9idXNfZ2Fz c190cmFuc2Zlcl9yZXF1ZXN0YXR0cl9pbml0aWFsaXplKAorLSAgICBnbG9idXNfb2JqZWN0X3Qg KgkJCQlvYmosCistICAgIGNoYXIgKgkJCQkJcHJveHlfdXJsLAorLSAgICBnbG9idXNfc2l6ZV90 CQkJCWJsb2NrX3NpemUsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2ZpbGVfbW9kZV90CQlm aWxlX21vZGUsCistICAgIGdsb2J1c19ib29sX3QJCQkJY29ubmVjdGlvbl9yZXVzZSk7CisrICAg IGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLAorKyAgICBj aGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5X3VybCwKKysg ICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja19zaXpl LAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9maWxlX21vZGVfdCAgICAgICAgICAgIGZpbGVf bW9kZSwKKysgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25uZWN0aW9uX3JldXNlKTsKKyAKKyBleHRlcm4gY29uc3QgZ2xvYnVzX29iamVjdF90eXBlX3QK KyBHTE9CVVNfR0FTU19PQkpFQ1RfVFlQRV9TT0NLRVRfUkVRVUVTVEFUVFJfREVGSU5JVElPTjsK KyAKKyAjZGVmaW5lIEdMT0JVU19HQVNTX09CSkVDVF9UWVBFX1NPQ0tFVF9SRVFVRVNUQVRUUiBc CistCSgmR0xPQlVTX0dBU1NfT0JKRUNUX1RZUEVfU09DS0VUX1JFUVVFU1RBVFRSX0RFRklOSVRJ T04pCisrICAgICAgICAoJkdMT0JVU19HQVNTX09CSkVDVF9UWVBFX1NPQ0tFVF9SRVFVRVNUQVRU Ul9ERUZJTklUSU9OKQorIAorIGdsb2J1c19vYmplY3RfdCAqCisgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfc29ja2V0X3JlcXVlc3RhdHRyX2luaXRpYWxpemUoCistICAgIGdsb2J1c19vYmplY3RfdCAq CQkJCW9iaiwKKy0gICAgY2hhciAqCQkJCQlwcm94eV91cmwsCistICAgIGdsb2J1c19zaXplX3QJ CQkJYmxvY2tfc2l6ZSwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfZmlsZV9tb2RlX3QJCWZp bGVfbW9kZSwKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJCQljb25uZWN0aW9uX3JldXNlLAorLSAgICBp bnQJCQkJCQlzbmRidWYsCistICAgIGludAkJCQkJCXJjdmJ1ZiwKKy0gICAgZ2xvYnVzX2Jvb2xf dAkJCQlub2RlbGF5KTsKKysgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAg ICAgICAgICBvYmosCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJveHlfdXJsLAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJsb2NrX3NpemUsCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2ZpbGVfbW9k ZV90ICAgICAgICAgICAgZmlsZV9tb2RlLAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25fcmV1c2UsCisrICAgIGludCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kYnVmLAorKyAgICBpbnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjdmJ1ZiwKKysgICAgZ2xvYnVzX2Jvb2xf dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlbGF5KTsKKyAKKyBleHRlcm4gY29u c3QgZ2xvYnVzX29iamVjdF90eXBlX3QKKyBHTE9CVVNfR0FTU19PQkpFQ1RfVFlQRV9TRUNVUkVf UkVRVUVTVEFUVFJfREVGSU5JVElPTjsKKyAKKyAjZGVmaW5lIEdMT0JVU19HQVNTX09CSkVDVF9U WVBFX1NFQ1VSRV9SRVFVRVNUQVRUUiBcCistCSgmR0xPQlVTX0dBU1NfT0JKRUNUX1RZUEVfU0VD VVJFX1JFUVVFU1RBVFRSX0RFRklOSVRJT04pCisrICAgICAgICAoJkdMT0JVU19HQVNTX09CSkVD VF9UWVBFX1NFQ1VSRV9SRVFVRVNUQVRUUl9ERUZJTklUSU9OKQorIAorIGdsb2J1c19vYmplY3Rf dCAqCisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfc2VjdXJlX3JlcXVlc3RhdHRyX2luaXRpYWxpemUo CistICAgIGdsb2J1c19vYmplY3RfdCAqCQkJCW9iaiwKKy0gICAgY2hhciAqCQkJCQlwcm94eV91 cmwsCistICAgIGdsb2J1c19zaXplX3QJCQkJYmxvY2tfc2l6ZSwKKy0gICAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfZmlsZV9tb2RlX3QJCWZpbGVfbW9kZSwKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJCQlj b25uZWN0aW9uX3JldXNlLAorLSAgICBpbnQJCQkJCQlzbmRidWYsCistICAgIGludAkJCQkJCXJj dmJ1ZiwKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJCQlub2RlbGF5LAorLSAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9hdXRob3JpemF0aW9uX3QJYXV0aG9yaXphdGlvbiwKKy0gICAgY2hhciAqCQkJCQlz dWJqZWN0KTsKKysgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAgICAg ICBvYmosCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJveHlfdXJsLAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJsb2NrX3NpemUsCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2ZpbGVfbW9kZV90ICAg ICAgICAgICAgZmlsZV9tb2RlLAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbm5lY3Rpb25fcmV1c2UsCisrICAgIGludCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc25kYnVmLAorKyAgICBpbnQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJjdmJ1ZiwKKysgICAgZ2xvYnVzX2Jvb2xfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlbGF5LAorKyAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9hdXRob3JpemF0aW9uX3QgICAgICAgIGF1dGhvcml6YXRpb24sCisrICAgIGNoYXIgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdCk7CisgCisgLyogTGlz dGVuZXIgQXR0cmlidXRlIE9iamVjdCBUeXBlcyAqLworIGV4dGVybiBjb25zdCBnbG9idXNfb2Jq ZWN0X3R5cGVfdAorIEdMT0JVU19HQVNTX09CSkVDVF9UWVBFX0xJU1RFTkVSQVRUUl9ERUZJTklU SU9OOworIAorICNkZWZpbmUgR0xPQlVTX0dBU1NfT0JKRUNUX1RZUEVfTElTVEVORVJBVFRSIFwK Ky0JKCZHTE9CVVNfR0FTU19PQkpFQ1RfVFlQRV9MSVNURU5FUkFUVFJfREVGSU5JVElPTikKKysg ICAgICAgICgmR0xPQlVTX0dBU1NfT0JKRUNUX1RZUEVfTElTVEVORVJBVFRSX0RFRklOSVRJT04p CisgCisgZ2xvYnVzX29iamVjdF90ICoKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcmF0 dHJfaW5pdGlhbGl6ZSgKKy0gICAgZ2xvYnVzX29iamVjdF90ICoJCQkJb2JqLAorLSAgICBpbnQJ CQkJCQliYWNrbG9nLAorLSAgICB1bnNpZ25lZCBzaG9ydAkJCQlwb3J0KTsKKysgICAgZ2xvYnVz X29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAgICAgICBvYmosCisrICAgIGludCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2xvZywKKysgICAgdW5zaWdu ZWQgc2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0KTsKKyAKKyAjaWZkZWYg X19jcGx1c3BsdXMKKyB9CitkaWZmIC0tZ2l0IGEvZ2Fzcy90cmFuc2Zlci9zb3VyY2UvbGlicmFy eS9nbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwLmMgYi9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJy YXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHAuYworaW5kZXggOWNmMGIxN2QxLi5jN2Q5ODlj NWYgMTAwNjQ0CistLS0gYS9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nYXNz X3RyYW5zZmVyX2h0dHAuYworKysrIGIvZ2Fzcy90cmFuc2Zlci9zb3VyY2UvbGlicmFyeS9nbG9i dXNfZ2Fzc190cmFuc2Zlcl9odHRwLmMKK0BAIC00Myw3ICs0Myw3IEBACisgCisgdHlwZWRlZiBz dHJ1Y3QKKyB7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJfcHJvdG9f dCAqCWxfcHJvdG87CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJfcHJv dG9fdCAqICAgICAgICBsX3Byb3RvOworICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 X3QgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDsKKyB9CisgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9mYWlsZWRfa2lja291dF9jbG9zdXJlX3Q7CitAQCAtNjksMjMgKzY5LDIzIEBAIHN0YXRp YyBpbnQgZ2xvYnVzX2xfZ2Fzc19sb2NrX2xpbmU9MDsKKyBzdGF0aWMgaW50IGdsb2J1c19sX2dh c3NfbG9ja190bXA9MDsKKyAjZGVmaW5lIE1ZTkFNRSh4KSBzdGF0aWMgY2hhciAqIG15bmFtZT0j eAorICNkZWZpbmUgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xvY2soKSBcCistCXByaW50 ZihzdHJjaHIoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2RlYnVnX2xldmVsLCc5JykgPyAi VGhyZWFkIFslZF0gYWNxdWlyaW5nIG11dGV4IGF0ICVzOiVkXG4iIDogIiIsIFwKKysgICAgICAg IHByaW50ZihzdHJjaHIoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2RlYnVnX2xldmVsLCc5 JykgPyAiVGhyZWFkIFslZF0gYWNxdWlyaW5nIG11dGV4IGF0ICVzOiVkXG4iIDogIiIsIFwKKyAg ICAgICAgICAgICAgICAoaW50KSBnbG9idXNfdGhyZWFkX3NlbGYoKSwgXAorLQkgICAgICAgX19G SUxFX18sIFwKKy0JICAgICAgIF9fTElORV9fKSwgXAorLQlmZmx1c2goc3Rkb3V0KSwgXAorLQln bG9idXNfbF9nYXNzX2xvY2tfdG1wID0gXAorLQkJZ2xvYnVzX211dGV4X2xvY2soJmdsb2J1c19s X2dhc3NfdHJhbnNmZXJfaHR0cF9tdXRleCksIFwKKy0JZ2xvYnVzX2xfZ2Fzc19sb2NrX2xpbmU9 X19MSU5FX18sIFwKKy0JZ2xvYnVzX2xfZ2Fzc19sb2NrX3RtcAorKyAgICAgICAgICAgICAgIF9f RklMRV9fLCBcCisrICAgICAgICAgICAgICAgX19MSU5FX18pLCBcCisrICAgICAgICBmZmx1c2go c3Rkb3V0KSwgXAorKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc19sb2NrX3RtcCA9IFwKKysgICAgICAg ICAgICAgICAgZ2xvYnVzX211dGV4X2xvY2soJmdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9t dXRleCksIFwKKysgICAgICAgIGdsb2J1c19sX2dhc3NfbG9ja19saW5lPV9fTElORV9fLCBcCisr ICAgICAgICBnbG9idXNfbF9nYXNzX2xvY2tfdG1wCisgI2RlZmluZSBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfdW5sb2NrKCkgXAorICAgICAgICAgcHJpbnRmKHN0cmNocihnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfZGVidWdfbGV2ZWwsICc5JykgPyAiVGhyZWFkIFslZF0gcmVsZWFz aW5nIG11dGV4IGF0ICVzOiVkXG4iIDogIiIsIFwKKyAgICAgICAgICAgICAgICAoaW50KSBnbG9i dXNfdGhyZWFkX3NlbGYoKSwgXAorLQkgICAgICAgX19GSUxFX18sIFwKKy0JICAgICAgIF9fTElO RV9fKSwgXAorLQlmZmx1c2goc3Rkb3V0KSwgXAorLQlnbG9idXNfbF9nYXNzX2xvY2tfbGluZSA9 IDAsIFwKKy0JZ2xvYnVzX211dGV4X3VubG9jaygmZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X211dGV4KQorKyAgICAgICAgICAgICAgIF9fRklMRV9fLCBcCisrICAgICAgICAgICAgICAgX19M SU5FX18pLCBcCisrICAgICAgICBmZmx1c2goc3Rkb3V0KSwgXAorKyAgICAgICAgZ2xvYnVzX2xf Z2Fzc19sb2NrX2xpbmUgPSAwLCBcCisrICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbXV0ZXgpCisgI2Vsc2UKKyAjZGVmaW5lIGRlYnVnX3By aW50ZihsZXZlbCwgZm10KQorICNkZWZpbmUgTVlOQU1FKHgpCitAQCAtMTAxLDE0ICsxMDEsMTQg QEAgc3RhdGljIHZvbGF0aWxlIGludCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2lu ZzsKKyBpbnQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfYWN0aXZhdGUodm9pZCkKKyB7 CistICAgIE9NX3VpbnQzMgkJCQltYWpfc3RhdDsKKy0gICAgT01fdWludDMyCQkJCW1pbl9zdGF0 OworLSAgICBnc3NfbmFtZV90IAkJCQluYW1lOworLSAgICBnc3NfY3JlZF9pZF90CQkgICAgICAg IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jcmVkZW50aWFsID0KKysgICAgT01fdWludDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqX3N0YXQ7CisrICAgIE9NX3VpbnQzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1pbl9zdGF0OworKyAgICBnc3NfbmFtZV90ICAgICAgICAg ICAgICAgICAgICAgICAgICBuYW1lOworKyAgICBnc3NfY3JlZF9pZF90ICAgICAgICAgICAgICAg ICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY3JlZGVudGlhbCA9CisgICAgICAg ICAgICAgR1NTX0NfTk9fQ1JFREVOVElBTDsKKy0gICAgZ3NzX2J1ZmZlcl9kZXNjCQkJbmFtZV9i dWZmZXI7CisrICAgIGdzc19idWZmZXJfZGVzYyAgICAgICAgICAgICAgICAgICAgIG5hbWVfYnVm ZmVyOworICAgICBNWU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2FjdGl2YXRlKTsK Ky0gICAgCisrCisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jbG9zaW5nID0gMDsK KyAgICAgbmFtZV9idWZmZXIudmFsdWUgPSBHTE9CVVNfTlVMTDsKKyAgICAgbmFtZV9idWZmZXIu bGVuZ3RoID0gMDsKK0BAIC0xMTYsNjYgKzExNiw2NiBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVy X2h0dHBfYWN0aXZhdGUodm9pZCkKKyAjICAgaWYgZGVmaW5lZChERUJVR19HQVNTX1RSQU5TRkVS KQorICAgICB7CisgICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZGVidWdfbGV2 ZWwgPQorLQkgICAgZ2xvYnVzX21vZHVsZV9nZXRlbnYoIkdMT0JVU19HQVNTX1RSQU5TRkVSX0hU VFBfREVCVUdfTEVWRUwiKTsKKysgICAgICAgICAgICBnbG9idXNfbW9kdWxlX2dldGVudigiR0xP QlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9ERUJVR19MRVZFTCIpOworIAorLQlpZihnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfZGVidWdfbGV2ZWwgPT0gR0xPQlVTX05VTEwpCistCXsKKy0JICAg IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9kZWJ1Z19sZXZlbCA9ICIiOworLQl9CisrICAg ICAgICBpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZGVidWdfbGV2ZWwgPT0gR0xPQlVT X05VTEwpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX2RlYnVnX2xldmVsID0gIiI7CisrICAgICAgICB9CisgICAgIH0KKyAjICAgZW5kaWYKKy0g ICAgCisrCisgICAgIGRlYnVnX3ByaW50ZigxLCAoX0dUU0woIkVudGVyaW5nICVzKClcbiIpLG15 bmFtZSkpOworICAgICBnbG9idXNfbW9kdWxlX2FjdGl2YXRlKEdMT0JVU19DT01NT05fTU9EVUxF KTsKKyAgICAgZ2xvYnVzX21vZHVsZV9hY3RpdmF0ZShHTE9CVVNfR1NJX0dTU19BU1NJU1RfTU9E VUxFKTsKKyAgICAgZ2xvYnVzX21vZHVsZV9hY3RpdmF0ZShHTE9CVVNfSU9fTU9EVUxFKTsKKyAK KyAgICAgZ2xvYnVzX211dGV4X2luaXQoJmdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9tdXRl eCwKKy0JCSAgICAgIEdMT0JVU19OVUxMKTsKKysgICAgICAgICAgICAgICAgICAgICAgR0xPQlVT X05VTEwpOworICAgICBnbG9idXNfY29uZF9pbml0KCZnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfY29uZCwKKy0JCSAgICAgR0xPQlVTX05VTEwpOworKyAgICAgICAgICAgICAgICAgICAgIEdM T0JVU19OVUxMKTsKKyAKKyAgICAgbWFqX3N0YXQgPSBnbG9idXNfZ3NzX2Fzc2lzdF9hY3F1aXJl X2NyZWQoCistCSZtaW5fc3RhdCwKKy0JR1NTX0NfQk9USCwKKy0JJmdsb2J1c19sX2dhc3NfdHJh bnNmZXJfaHR0cF9jcmVkZW50aWFsKTsKKysgICAgICAgICZtaW5fc3RhdCwKKysgICAgICAgIEdT U19DX0JPVEgsCisrICAgICAgICAmZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NyZWRlbnRp YWwpOworIAorICAgICBpZiAobWFqX3N0YXQgIT0gR1NTX1NfQ09NUExFVEUpCisgICAgIHsKKy0J Z290byBlcnJvcl9leGl0OworKyAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICB9CisgCisg ICAgIG1hal9zdGF0ID0gZ3NzX2lucXVpcmVfY3JlZCgKKy0JJm1pbl9zdGF0LAorLQlnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfY3JlZGVudGlhbCwKKy0JJm5hbWUsCistCUdMT0JVU19OVUxM LAorLQlHTE9CVVNfTlVMTCwKKy0JR0xPQlVTX05VTEwpOworKyAgICAgICAgJm1pbl9zdGF0LAor KyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NyZWRlbnRpYWwsCisrICAgICAg ICAmbmFtZSwKKysgICAgICAgIEdMT0JVU19OVUxMLAorKyAgICAgICAgR0xPQlVTX05VTEwsCisr ICAgICAgICBHTE9CVVNfTlVMTCk7CisgCisgICAgIGlmIChtYWpfc3RhdCAhPSBHU1NfU19DT01Q TEVURSkKKyAgICAgeworLQlnb3RvIGVycm9yX2V4aXQ7CisrICAgICAgICBnb3RvIGVycm9yX2V4 aXQ7CisgICAgIH0KKyAKKyAgICAgbWFqX3N0YXQgPSBnc3NfZGlzcGxheV9uYW1lKAorLQkmbWlu X3N0YXQsCistCW5hbWUsCistCSZuYW1lX2J1ZmZlciwKKy0JR0xPQlVTX05VTEwpOworKyAgICAg ICAgJm1pbl9zdGF0LAorKyAgICAgICAgbmFtZSwKKysgICAgICAgICZuYW1lX2J1ZmZlciwKKysg ICAgICAgIEdMT0JVU19OVUxMKTsKKyAKKyAgICAgaWYgKG1hal9zdGF0ICE9IEdTU19TX0NPTVBM RVRFKQorICAgICB7CistCWdvdG8gZXJyb3JfZXhpdDsKKysgICAgICAgIGdvdG8gZXJyb3JfZXhp dDsKKyAgICAgfQorICAgICBtYWpfc3RhdCA9IGdzc19yZWxlYXNlX25hbWUoCistCSZtaW5fc3Rh dCwKKy0JJm5hbWUpOworKyAgICAgICAgJm1pbl9zdGF0LAorKyAgICAgICAgJm5hbWUpOworICAg ICBpZiAobWFqX3N0YXQgIT0gR1NTX1NfQ09NUExFVEUpCisgICAgIHsKKy0JZ290byBlcnJvcl9l eGl0OworKyAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICB9CistCQorKworICAgICBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc3ViamVjdF9uYW1lID0gbmFtZV9idWZmZXIudmFsdWU7 CisgCisgICAgIGlmIChnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY3JlZGVudGlhbCAhPSBH U1NfQ19OT19DUkVERU5USUFMKQorQEAgLTE4NCw3ICsxODQsNyBAQCBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfYWN0aXZhdGUodm9pZCkKKyAgICAgfQorIAorICAgICBkZWJ1Z19wcmludGYo MSwgKF9HVFNMKCJFeGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworLSAgICAKKysKKyAgICAgcmV0 dXJuIEdMT0JVU19TVUNDRVNTOworIAorICBlcnJvcl9leGl0OgorQEAgLTIwNyw3ICsyMDcsNyBA QCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZGVhY3RpdmF0ZSh2b2lkKQorICAgICBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbG9jaygpOworICAgICB3aGlsZShnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfY2xvc2luZyA+IDApCisgICAgIHsKKy0JZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX3dhaXQoKTsKKysgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF93 YWl0KCk7CisgICAgIH0KKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygp OworICAgICBnbG9idXNfbW9kdWxlX2RlYWN0aXZhdGUoR0xPQlVTX0lPX01PRFVMRSk7CitAQCAt MjYzLDI3ICsyNjMsMjcgQEAgZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9odHRwc19kZXNjcmlwdG9y ID0KKyAKKyAvKgorICAqIEZ1bmN0aW9uOiBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Vu ZCgpCistICogCisrICoKKyAgKiBEZXNjcmlwdGlvbjogU2VuZCBhIGJ5dGUgYXJyYXkgdG8gYW4g SFRUUCBzZXJ2ZXIKKy0gKiAKKy0gKiBQYXJhbWV0ZXJzOiAKKy0gKiAKKy0gKiBSZXR1cm5zOiAK KysgKgorKyAqIFBhcmFtZXRlcnM6CisrICoKKysgKiBSZXR1cm5zOgorICAqLworIHN0YXRpYwor IHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2VuZCgKKy0gICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVxdWVzdF9wcm90b190ICoJcHJvdG8sCistICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCwKKy0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWJ1ZmZl ciwKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlidWZmZXJfbGVuZ3RoLAorLSAgICBnbG9idXNfYm9v bF90CQkJCWxhc3RfZGF0YSkKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9wcm90 b190ICogICAgICBwcm90bywKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAg ICAgICAgICAgICByZXF1ZXN0LAorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1ZmZlciwKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBidWZmZXJfbGVuZ3RoLAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZGF0YSkKKyB7CistICAgIGdsb2J1c19yZXN1bHRf dAkJCQlyZXN1bHQ7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90 b190ICoJbmV3X3Byb3RvOworKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc3VsdDsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0 X3Byb3RvX3QgKiBuZXdfcHJvdG87CisgICAgIGdsb2J1c19yZWx0aW1lX3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVsYXlfdGltZTsKKyAgICAgTVlOQU1FKGdsb2J1c19sX2dhc3NfdHJh bnNmZXJfaHR0cF9zZW5kKTsKKy0gICAgCisrCisgICAgIGRlYnVnX3ByaW50ZigxLCAoX0dUU0wo IkVudGVyaW5nICVzKClcbiIpLG15bmFtZSkpOworICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVy X2h0dHBfbG9jaygpOworICAgICBuZXdfcHJvdG8gPSAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0 cF9yZXF1ZXN0X3Byb3RvX3QgKikgcHJvdG87CitAQCAtMzA0LDc3ICszMDQsNzcgQEAgZ2xvYnVz X2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NlbmQoCisgICAgICAqLworICAgICBpZihuZXdfcHJvdG8t PmZhaWx1cmVfb2NjdXJyZWQpCisgICAgIHsKKy0JZ290byBmYWlsX2V4aXQ7CisrICAgICAgICBn b3RvIGZhaWxfZXhpdDsKKyAgICAgfQorIAorICAgICAvKiBSZWdpc3RlciB0aGUgc2VuZCBvZiB0 aGUgZGF0YSAqLworICAgICBpZihuZXdfcHJvdG8tPmNodW5rZWQpCisgICAgIHsKKy0JZ2xvYnVz X3NpemVfdAkJCW51bV9pb3ZlY3M7CistCistCS8qIHNlbmQgY2h1bmsgaGVhZGVyIGFuZCBmb290 ZXIgYXMgYW4gaW92ZWMgYXJyYXkgKi8KKy0Jc3ByaW50ZigoY2hhciAqKSBuZXdfcHJvdG8tPmlv dlswXS5pb3ZfYmFzZSwKKy0JCSIlenglcyIsCistCQluZXdfcHJvdG8tPnVzZXJfYnVmbGVuLAor LQkJQ1JMRik7CistCW5ld19wcm90by0+aW92WzBdLmlvdl9sZW4gPSBzdHJsZW4oKGNoYXIgKikg bmV3X3Byb3RvLT5pb3ZbMF0uaW92X2Jhc2UpOworLQorLQluZXdfcHJvdG8tPmlvdlsxXS5pb3Zf YmFzZSA9ICh2b2lkICopIG5ld19wcm90by0+dXNlcl9idWZmZXI7CistCW5ld19wcm90by0+aW92 WzFdLmlvdl9sZW4gPSBuZXdfcHJvdG8tPnVzZXJfYnVmbGVuOworLQorLQluZXdfcHJvdG8tPmlv dlsyXS5pb3ZfYmFzZSA9IENSTEY7CistCW5ld19wcm90by0+aW92WzJdLmlvdl9sZW4gPSAyOwor LQorLQlpZihsYXN0X2RhdGEgJiYgbmV3X3Byb3RvLT51c2VyX2J1ZmxlbiAhPSAwKQorLQl7Cist CSAgICAvKiBsYXN0IGRhdGEsIG5lZWQgdG8gYXBwZW5kIGEgemVyby1sZW5ndGggY2h1bmsgdG8K Ky0JICAgICAqIGluZGljYXRlIHRoaXMKKy0JICAgICAqLworLQkgICAgbnVtX2lvdmVjcyA9IDQ7 CistCX0KKy0JZWxzZSBpZihsYXN0X2RhdGEgJiYgbmV3X3Byb3RvLT51c2VyX2J1ZmxlbiA9PSAw KQorLQl7CistCSAgICAvKiBsYXN0IGRhdGEsIHdpdGggYSB6ZXJvLWxlbmd0aCBjaHVuayBmcm9t IHRoZSB1c2VyICovCistCSAgICBuZXdfcHJvdG8tPmlvdlsxXS5pb3ZfYmFzZSA9IENSTEY7Cist CSAgICBuZXdfcHJvdG8tPmlvdlsxXS5pb3ZfbGVuID0gMjsKKy0JICAgIG51bV9pb3ZlY3MgPSAy OworLQl9CistCWVsc2UKKy0JeworLQkgICAgLyogbm9ybWFsIGNodW5rICovCistCSAgICBudW1f aW92ZWNzID0gMzsKKy0JfQorLQorLQlkZWJ1Z19wcmludGYoNCwgKF9HVFNMKCIlcygpOiBSZWdp c3RlcmluZyB3cml0ZXZcbiIpLCBteW5hbWUpKTsKKy0JcmVzdWx0ID0gZ2xvYnVzX2lvX3JlZ2lz dGVyX3dyaXRldigKKy0JICAgICZuZXdfcHJvdG8tPmhhbmRsZSwKKy0JICAgIG5ld19wcm90by0+ aW92LAorLQkgICAgbnVtX2lvdmVjcyAvKiAzIGlvdmVjcyBoZWFkZXIsIGJvZHksIGZpbmFsIENS TEYgKi8sCistCSAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGV2X2NhbGxiYWNr LAorLQkgICAgbmV3X3Byb3RvKTsKKysgICAgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAg ICAgICAgbnVtX2lvdmVjczsKKysKKysgICAgICAgIC8qIHNlbmQgY2h1bmsgaGVhZGVyIGFuZCBm b290ZXIgYXMgYW4gaW92ZWMgYXJyYXkgKi8KKysgICAgICAgIHNwcmludGYoKGNoYXIgKikgbmV3 X3Byb3RvLT5pb3ZbMF0uaW92X2Jhc2UsCisrICAgICAgICAgICAgICAgICIlenglcyIsCisrICAg ICAgICAgICAgICAgIG5ld19wcm90by0+dXNlcl9idWZsZW4sCisrICAgICAgICAgICAgICAgIENS TEYpOworKyAgICAgICAgbmV3X3Byb3RvLT5pb3ZbMF0uaW92X2xlbiA9IHN0cmxlbigoY2hhciAq KSBuZXdfcHJvdG8tPmlvdlswXS5pb3ZfYmFzZSk7CisrCisrICAgICAgICBuZXdfcHJvdG8tPmlv dlsxXS5pb3ZfYmFzZSA9ICh2b2lkICopIG5ld19wcm90by0+dXNlcl9idWZmZXI7CisrICAgICAg ICBuZXdfcHJvdG8tPmlvdlsxXS5pb3ZfbGVuID0gbmV3X3Byb3RvLT51c2VyX2J1ZmxlbjsKKysK KysgICAgICAgIG5ld19wcm90by0+aW92WzJdLmlvdl9iYXNlID0gQ1JMRjsKKysgICAgICAgIG5l d19wcm90by0+aW92WzJdLmlvdl9sZW4gPSAyOworKworKyAgICAgICAgaWYobGFzdF9kYXRhICYm IG5ld19wcm90by0+dXNlcl9idWZsZW4gIT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICAv KiBsYXN0IGRhdGEsIG5lZWQgdG8gYXBwZW5kIGEgemVyby1sZW5ndGggY2h1bmsgdG8KKysgICAg ICAgICAgICAgKiBpbmRpY2F0ZSB0aGlzCisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAg bnVtX2lvdmVjcyA9IDQ7CisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmKGxhc3RfZGF0YSAm JiBuZXdfcHJvdG8tPnVzZXJfYnVmbGVuID09IDApCisrICAgICAgICB7CisrICAgICAgICAgICAg LyogbGFzdCBkYXRhLCB3aXRoIGEgemVyby1sZW5ndGggY2h1bmsgZnJvbSB0aGUgdXNlciAqLwor KyAgICAgICAgICAgIG5ld19wcm90by0+aW92WzFdLmlvdl9iYXNlID0gQ1JMRjsKKysgICAgICAg ICAgICBuZXdfcHJvdG8tPmlvdlsxXS5pb3ZfbGVuID0gMjsKKysgICAgICAgICAgICBudW1faW92 ZWNzID0gMjsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAg ICAgICAvKiBub3JtYWwgY2h1bmsgKi8KKysgICAgICAgICAgICBudW1faW92ZWNzID0gMzsKKysg ICAgICAgIH0KKysKKysgICAgICAgIGRlYnVnX3ByaW50Zig0LCAoX0dUU0woIiVzKCk6IFJlZ2lz dGVyaW5nIHdyaXRldlxuIiksIG15bmFtZSkpOworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lv X3JlZ2lzdGVyX3dyaXRldigKKysgICAgICAgICAgICAmbmV3X3Byb3RvLT5oYW5kbGUsCisrICAg ICAgICAgICAgbmV3X3Byb3RvLT5pb3YsCisrICAgICAgICAgICAgbnVtX2lvdmVjcyAvKiAzIGlv dmVjcyBoZWFkZXIsIGJvZHksIGZpbmFsIENSTEYgKi8sCisrICAgICAgICAgICAgZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX3dyaXRldl9jYWxsYmFjaywKKysgICAgICAgICAgICBuZXdfcHJv dG8pOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworLQkvKiBzZW5kIGRhdGEgcmF3ICovCist CWRlYnVnX3ByaW50Zig0LCAoX0dUU0woIiVzKCk6IFJlZ2lzdGVyaW5nIHdyaXRldlxuIiksIG15 bmFtZSkpOworLQlyZXN1bHQgPSBnbG9idXNfaW9fcmVnaXN0ZXJfd3JpdGUoCistCSAgICAmbmV3 X3Byb3RvLT5oYW5kbGUsCistCSAgICBuZXdfcHJvdG8tPnVzZXJfYnVmZmVyLAorLQkgICAgbmV3 X3Byb3RvLT51c2VyX2J1ZmxlbiwKKy0JICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF93 cml0ZV9jYWxsYmFjaywKKy0JICAgIG5ld19wcm90byk7CisrICAgICAgICAvKiBzZW5kIGRhdGEg cmF3ICovCisrICAgICAgICBkZWJ1Z19wcmludGYoNCwgKF9HVFNMKCIlcygpOiBSZWdpc3Rlcmlu ZyB3cml0ZXZcbiIpLCBteW5hbWUpKTsKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pb19yZWdp c3Rlcl93cml0ZSgKKysgICAgICAgICAgICAmbmV3X3Byb3RvLT5oYW5kbGUsCisrICAgICAgICAg ICAgbmV3X3Byb3RvLT51c2VyX2J1ZmZlciwKKysgICAgICAgICAgICBuZXdfcHJvdG8tPnVzZXJf YnVmbGVuLAorKyAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF93cml0ZV9j YWxsYmFjaywKKysgICAgICAgICAgICBuZXdfcHJvdG8pOworICAgICB9CisgCisgICAgIGlmKHJl c3VsdCA9PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworLQkvKgorLQkgKiBSZWdpc3RyYXRpb24g c3VjY2VlZGVkLiBDYWxsYmFjayB0byBHQVNTIG9jY3VycyB3aGVuIEkvTworLQkgKiBjb21wbGV0 ZXMuCistCSAqLworLQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisrICAg ICAgICAvKgorKyAgICAgICAgICogUmVnaXN0cmF0aW9uIHN1Y2NlZWRlZC4gQ2FsbGJhY2sgdG8g R0FTUyBvY2N1cnMgd2hlbiBJL08KKysgICAgICAgICAqIGNvbXBsZXRlcy4KKysgICAgICAgICAq LworKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworIAorLQlk ZWJ1Z19wcmludGYoMSwgKF9HVFNMKCJleGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworLQlyZXR1 cm47CisrICAgICAgICBkZWJ1Z19wcmludGYoMSwgKF9HVFNMKCJleGl0aW5nICVzKClcbiIpLG15 bmFtZSkpOworKyAgICAgICAgcmV0dXJuOworICAgICB9CisgCisgICBmYWlsX2V4aXQ6CitAQCAt MzkxLDkgKzM5MSw5IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zZW5kKAorICAgICBk ZWJ1Z19wcmludGYoNCwgKF9HVFNMKCIlcygpOiBSZWdpc3RlcmluZyBvbmVzaG90XG4iKSwgbXlu YW1lKSk7CisgICAgIGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVzaG90KAorICAgICAgICAg R0xPQlVTX05VTEwsCistCSZkZWxheV90aW1lLAorLQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfY2FsbGJhY2tfc2VuZF9jYWxsYmFjaywKKy0JKHZvaWQgKikgbmV3X3Byb3RvKTsKKysgICAg ICAgICZkZWxheV90aW1lLAorKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Nh bGxiYWNrX3NlbmRfY2FsbGJhY2ssCisrICAgICAgICAodm9pZCAqKSBuZXdfcHJvdG8pOworIAor ICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisgICAgIGRlYnVnX3By aW50ZigxLCAoX0dUU0woImV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7CitAQCAtNDAzLDI5ICs0 MDMsMjkgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NlbmQoCisgCisgLyoKKyAgKiBG dW5jdGlvbjogZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlY2VpdmUoKQorLSAqIAorKyAq CisgICogRGVzY3JpcHRpb246IFNjaGVkdWxlIHRoZSBuZXh0IGJsb2NrIG9mIGRhdGEgZnJvbSB0 aGUgaHR0cCBzZXJ2ZXIKKyAgKiAgICAgICAgICAgICAgdG8gZW5kIHVwIGluIHRoZSBwcm92aWRl ZCBieXRlIGFycmF5CistICogCistICogUGFyYW1ldGVyczogCistICogCistICogUmV0dXJuczog CisrICoKKysgKiBQYXJhbWV0ZXJzOgorKyAqCisrICogUmV0dXJuczoKKyAgKi8KKyBzdGF0aWMK KyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlY2VpdmUoCistICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAqCXByb3RvLAorLSAgICBnbG9idXNfZ2Fz c190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QsCistICAgIGdsb2J1c19ieXRlX3QgKgkJCQli dWZmZXIsCistICAgIGdsb2J1c19zaXplX3QJCQkJYnVmZmVyX2xlbmd0aCwKKy0gICAgZ2xvYnVz X3NpemVfdAkJCQl3YWl0X2Zvcl9sZW5ndGgpCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Jl cXVlc3RfcHJvdG9fdCAqICAgICAgcHJvdG8sCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Jl cXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCwKKysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisrICAgIGdsb2J1c19zaXplX3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2xlbmd0aCwKKysgICAgZ2xvYnVzX3NpemVf dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2Zvcl9sZW5ndGgpCisgeworLSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqCQluZXdfcHJvdG87 CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICogICAgICAg ICBuZXdfcHJvdG87CisgICAgIGdsb2J1c19yZWx0aW1lX3QgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkZWxheV90aW1lOworICAgICBNWU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX3JlY2VpdmUpOworLSAgICAKKysKKyAgICAgZGVidWdfcHJpbnRmKDEsIChfR1RT TCgiRW50ZXJpbmcgJXMoKVxuIiksbXluYW1lKSk7CistICAgIAorKworICAgICBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfbG9jaygpOworICAgICBuZXdfcHJvdG8gPSAoZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKikgcHJvdG87CisgCitAQCAtNDQ2LDkgKzQ0 Niw5IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWNlaXZlKAorICAgICBkZWJ1Z19w cmludGYoNCwgKF9HVFNMKCIlcygpOiBSZWdpc3RlcmluZyBvbmVzaG90XG4iKSwgbXluYW1lKSk7 CisgICAgIGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVzaG90KAorICAgICAgICAgR0xPQlVT X05VTEwsCistCSZkZWxheV90aW1lLAorLQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2Fs bGJhY2tfcmVhZF9idWZmZXJlZF9jYWxsYmFjaywKKy0JKHZvaWQgKikgbmV3X3Byb3RvKTsKKysg ICAgICAgICZkZWxheV90aW1lLAorKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X2NhbGxiYWNrX3JlYWRfYnVmZmVyZWRfY2FsbGJhY2ssCisrICAgICAgICAodm9pZCAqKSBuZXdf cHJvdG8pOworIAorICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7Cisg ICAgIGRlYnVnX3ByaW50ZigxLCAoX0dUU0woImV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7CitA QCAtNDU3LDIxICs0NTcsMjEgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlY2VpdmUo CisgCisgLyoKKyAgKiBGdW5jdGlvbjogZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2ZhaWwo KQorLSAqIAorKyAqCisgICogRGVzY3JpcHRpb246IENhdXNlIHRoZSBnaXZlbiByZXF1ZXN0IHRv IGZhaWwgZm9yIGNsaWVudC1jYXVzZWQgcmVhc29ucworLSAqIAorLSAqIFBhcmFtZXRlcnM6IAor LSAqIAorLSAqIFJldHVybnM6IAorKyAqCisrICogUGFyYW1ldGVyczoKKysgKgorKyAqIFJldHVy bnM6CisgICovCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9m YWlsKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3Byb3RvX3QgKglwcm90bywK Ky0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0KQorKyAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3Byb3RvX3QgKiAgICAgIHByb3RvLAorKyAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QpCisgeworLSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqCW5ld19wcm90bzsK Ky0gICAgZ2xvYnVzX2Jvb2xfdAkJCQlzaWduYWxsZWQ7CisrICAgIGdsb2J1c19nYXNzX3RyYW5z ZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICogbmV3X3Byb3RvOworKyAgICBnbG9idXNfYm9vbF90 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbGxlZDsKKyAgICAgZ2xvYnVzX3Jl c3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIE1ZTkFNRShn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZmFpbCk7CisgCitAQCAtNDg0LDQyICs0ODQsNDIg QEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2ZhaWwoCisgICAgIHNpZ25hbGxlZCA9IEdM T0JVU19GQUxTRTsKKyAgICAgd2hpbGUoIXNpZ25hbGxlZCkKKyAgICAgeworLQlzd2l0Y2gobmV3 X3Byb3RvLT5zdGF0ZSkKKy0JeworLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9T VEFURV9QRU5ESU5HOgorLQkgICAgaWYobmV3X3Byb3RvLT5vbmVzaG90X3JlZ2lzdGVyZWQgPT0g R0xPQlVTX1RSVUUpCistCSAgICB7CistCQluZXdfcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgPSBH TE9CVVNfVFJVRTsKKy0JCXNpZ25hbGxlZCA9IEdMT0JVU19UUlVFOworLQorLQkJYnJlYWs7Cist CSAgICB9CistCSAgICBlbHNlIGlmKG5ld19wcm90by0+b25lc2hvdF9hY3RpdmUpCistCSAgICB7 CistCQluZXdfcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgPSBHTE9CVVNfVFJVRTsKKy0JCXdoaWxl KG5ld19wcm90by0+c3RhdGUgPT0KKy0JCSAgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBf U1RBVEVfUEVORElORykKKy0JCXsKKy0JCSAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf d2FpdCgpOworLQkJfQorLQkJYnJlYWs7CistCSAgICB9CisrICAgICAgICBzd2l0Y2gobmV3X3By b3RvLT5zdGF0ZSkKKysgICAgICAgIHsKKysgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFO U0ZFUl9IVFRQX1NUQVRFX1BFTkRJTkc6CisrICAgICAgICAgICAgaWYobmV3X3Byb3RvLT5vbmVz aG90X3JlZ2lzdGVyZWQgPT0gR0xPQlVTX1RSVUUpCisrICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICBuZXdfcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgPSBHTE9CVVNfVFJVRTsKKysgICAg ICAgICAgICAgICAgc2lnbmFsbGVkID0gR0xPQlVTX1RSVUU7CisrCisrICAgICAgICAgICAgICAg IGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlIGlmKG5ld19wcm90by0+ b25lc2hvdF9hY3RpdmUpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBuZXdfcHJv dG8tPmZhaWx1cmVfb2NjdXJyZWQgPSBHTE9CVVNfVFJVRTsKKysgICAgICAgICAgICAgICAgd2hp bGUobmV3X3Byb3RvLT5zdGF0ZSA9PQorKyAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0FT U19UUkFOU0ZFUl9IVFRQX1NUQVRFX1BFTkRJTkcpCisrICAgICAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF93YWl0KCk7CisrICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQor ICAgICAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfQ09OTkVDVElO RzoKKyAgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX0lETEU6 CistCSAgICAvKiBXZSB3aWxsIHRyYW5zaXRpb24gdG8gdGhlIGNsb3Npbmcgc3RhdGUsIHNpZ25h bGxpbmcgdGhlIGZhaWx1cmUsCistCSAgICAgKiBhbmQgcmVnaXN0ZXJpbmcgdGhlIGNsb3NlICh3 aGljaCB3aWxsIHRyYW5zaXRpb24gdXMgdG8gdGhlIAorLQkgICAgICogZG9uZSBzdGF0ZSkuCist CSAgICAgKi8KKy0JICAgIHNpZ25hbGxlZCA9IEdMT0JVU19UUlVFOworLQkgICAgbmV3X3Byb3Rv LT5mYWlsdXJlX29jY3VycmVkID0gR0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgLyogV2Ugd2ls bCB0cmFuc2l0aW9uIHRvIHRoZSBjbG9zaW5nIHN0YXRlLCBzaWduYWxsaW5nIHRoZSBmYWlsdXJl LAorKyAgICAgICAgICAgICAqIGFuZCByZWdpc3RlcmluZyB0aGUgY2xvc2UgKHdoaWNoIHdpbGwg dHJhbnNpdGlvbiB1cyB0byB0aGUKKysgICAgICAgICAgICAgKiBkb25lIHN0YXRlKS4KKysgICAg ICAgICAgICAgKi8KKysgICAgICAgICAgICBzaWduYWxsZWQgPSBHTE9CVVNfVFJVRTsKKysgICAg ICAgICAgICBuZXdfcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgPSBHTE9CVVNfVFJVRTsKKyAKKy0J ICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZShu ZXdfcHJvdG8pOworKyAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9yZWdpc3Rlcl9jbG9zZShuZXdfcHJvdG8pOworIAorICAgICAgICAgICAgIGlmIChyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2UobmV3X3Byb3RvKTsKKyAgICAgICAgICAg ICB9CistCSAgICBicmVhazsKKysgICAgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgICAgY2Fz ZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX0NMT1NJTkc6CisgICAgICAgICAgIGNh c2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9ET05FOgorQEAgLTUyNyw5ICs1Mjcs OSBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZmFpbCgKKyAgICAgICAgICAgY2FzZSBH TE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX1JFU1BPTkRJTkc6CisgICAgICAgICAgIGNh c2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9SRUZFUlJFRDoKKyAgICAgICAgICAg Y2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX0RFTklFRDoKKy0JICAgIHNpZ25h bGxlZCA9IEdMT0JVU19UUlVFOworLQkgICAgbmV3X3Byb3RvLT5mYWlsdXJlX29jY3VycmVkID0g R0xPQlVTX1RSVUU7CistCSAgICBicmVhazsKKysgICAgICAgICAgICBzaWduYWxsZWQgPSBHTE9C VVNfVFJVRTsKKysgICAgICAgICAgICBuZXdfcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgPSBHTE9C VVNfVFJVRTsKKysgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgfQorICAgICBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CitAQCAtNTQwLDEzICs1NDAsMTMg QEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2ZhaWwoCisgc3RhdGljCisgdm9pZAorIGds b2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF93cml0ZV9jYWxsYmFjaygKKy0gICAgdm9pZCAqCQkJ CQljYWxsYmFja19hcmcsCistICAgIGdsb2J1c19pb19oYW5kbGVfdCAqCQkJaGFuZGxlLAorLSAg ICBnbG9idXNfcmVzdWx0X3QgCQkJCXJlc3VsdCwKKy0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWJ1 ZiwKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQluYnl0ZXMpCisrICAgIHZvaWQgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnLAorKyAgICBnbG9idXNfaW9f aGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX3Jl c3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisrICAgIGdsb2J1c19i eXRlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorKyAgICBnbG9idXNfc2l6 ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlcykKKyB7CistICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICoJCXByb3RvOworKyAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqICAgICAgICAgcHJvdG87Cisg ICAgIE1ZTkFNRShnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGVfY2FsbGJhY2spOwor IAorICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFbnRlcmluZyAlcygpXG4iKSxteW5hbWUp KTsKK0BAIC01NTUsMTEzICs1NTUsMTEzIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF93 cml0ZV9jYWxsYmFjaygKKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xvY2soKTsK KyAKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTIHx8CistCSAgICBwcm90by0+ZmFp bHVyZV9vY2N1cnJlZCB8fAorLQkgICAgcHJvdG8tPnBhcnNlX2Vycm9yKQorKyAgICAgICAgICAg IHByb3RvLT5mYWlsdXJlX29jY3VycmVkIHx8CisrICAgICAgICAgICAgcHJvdG8tPnBhcnNlX2Vy cm9yKQorICAgICB7CistCXByb3RvLT5sYXN0X2RhdGEgPSBHTE9CVVNfVFJVRTsKKysgICAgICAg IHByb3RvLT5sYXN0X2RhdGEgPSBHTE9CVVNfVFJVRTsKKyAgICAgfQorIAorICAgICBpZihwcm90 by0+bGFzdF9kYXRhKQorICAgICB7CistCXByb3RvLT51c2VyX29mZnNldCA9IG5ieXRlczsKKy0J aWYoKHByb3RvLT50eXBlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9QVVQg fHwKKy0JICAgcHJvdG8tPnR5cGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBF X0FQUEVORCkgJiYKKy0JICAgKCFwcm90by0+ZmFpbHVyZV9vY2N1cnJlZCAmJiAhcHJvdG8tPnBh cnNlX2Vycm9yKSkKKy0JeworLQkgICAgaWYocHJvdG8tPmdvdF9yZXNwb25zZSkKKy0JICAgIHsK Ky0JCWdsb2J1c19ieXRlX3QgKiBidWZmZXI7CistCQlnbG9idXNfc2l6ZV90IG9mZnNldDsKKy0J CWdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCByZXF1ZXN0ID0gcHJvdG8tPnJlcXVlc3Q7 CisrICAgICAgICBwcm90by0+dXNlcl9vZmZzZXQgPSBuYnl0ZXM7CisrICAgICAgICBpZigocHJv dG8tPnR5cGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX1BVVCB8fAorKyAg ICAgICAgICAgcHJvdG8tPnR5cGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBF X0FQUEVORCkgJiYKKysgICAgICAgICAgICghcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgJiYgIXBy b3RvLT5wYXJzZV9lcnJvcikpCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYocHJvdG8tPmdv dF9yZXNwb25zZSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdsb2J1c19ieXRl X3QgKiBidWZmZXI7CisrICAgICAgICAgICAgICAgIGdsb2J1c19zaXplX3Qgb2Zmc2V0OworKyAg ICAgICAgICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgcmVxdWVzdCA9IHBy b3RvLT5yZXF1ZXN0OworIAorLQkJaW50IGZhaWxlZCA9IHByb3RvLT5mYWlsdXJlX29jY3VycmVk OworKyAgICAgICAgICAgICAgICBpbnQgZmFpbGVkID0gcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQ7 CisgCistCQlwcm90by0+ZmFpbHVyZV9vY2N1cnJlZCA9IEdMT0JVU19UUlVFOworLQkJYnVmZmVy ID0gcHJvdG8tPnVzZXJfYnVmZmVyOworLQkJb2Zmc2V0ID0gcHJvdG8tPnVzZXJfb2Zmc2V0Owor KyAgICAgICAgICAgICAgICBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZCA9IEdMT0JVU19UUlVFOwor KyAgICAgICAgICAgICAgICBidWZmZXIgPSBwcm90by0+dXNlcl9idWZmZXI7CisrICAgICAgICAg ICAgICAgIG9mZnNldCA9IHByb3RvLT51c2VyX29mZnNldDsKKyAKKy0JCXJlc3VsdCA9IGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZShwcm90byk7CisrICAgICAgICAg ICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9z ZShwcm90byk7CisgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1Mp CisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9jbG9zZShwcm90byk7CisgICAgICAgICAgICAgICAgIH0KKyAKKy0JCWds b2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKy0JCWdsb2J1c19nYXNzX3RyYW5z ZmVyX3Byb3RvX3NlbmRfY29tcGxldGUocmVxdWVzdCwKKy0JCQkJCQkJIGJ1ZmZlciwKKy0JCQkJ CQkJIG9mZnNldCwKKy0JCQkJCQkJIGZhaWxlZCwKKy0JCQkJCQkJIEdMT0JVU19UUlVFKTsKKy0J CWRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7CistCQly ZXR1cm47CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7CistCQkvKiB0aGUgY2FsbGJhY2sg dG8gcmVhZCB0aGUgcmVzcG9uc2UgaXMgcmVnaXN0ZXJlZCBhdAorLQkJICogdGhlIGJlZ2lubmlu ZyBvZiB0aGUgc2VuZCwgc28gd2UgZG8gbm90aGluZyBoZXJlLAorLQkJICogYW5kIHdhaXQgZm9y IHRoZSByZXNwb25zZQorLQkJICovCistCQlwcm90by0+d2FpdGluZ19mb3JfcmVzcG9uc2UgPSBH TE9CVVNfVFJVRTsKKy0JCWdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKy0K Ky0JCWRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7Cist CQlyZXR1cm47CistCSAgICB9CistCX0KKy0JZWxzZQorLQl7CistCSAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0X3QgcmVxdWVzdDsKKy0JICAgIGdsb2J1c19ieXRlX3QgKiBidWY7Cist CSAgICBnbG9idXNfc2l6ZV90IG5ieXRlc19zZW50OworLQkgICAgZ2xvYnVzX2Jvb2xfdCBmYWls OworLQorLQkgICAgcmVxdWVzdCA9IHByb3RvLT5yZXF1ZXN0OworLQkgICAgYnVmID0gcHJvdG8t PnVzZXJfYnVmZmVyOworLQkgICAgbmJ5dGVzX3NlbnQgPSBwcm90by0+dXNlcl9vZmZzZXQ7Cist CSAgICBmYWlsID0gcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQ7CistCSAgICAKKy0JICAgIAorLQkg ICAgLyogbmVlZCB0byByZWdpc3RlciB0aGUgY2xvc2UsIGFuZCBjYWxsYmFjayB0byB0aGUgdXNl ciAqLworLQkgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVy X2Nsb3NlKHByb3RvKTsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX3VubG9jaygpOworKyAgICAgICAgICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90 b19zZW5kX2NvbXBsZXRlKHJlcXVlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xPQlVTX1RSVUUpOworKyAgICAgICAgICAgICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJF eGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgIC8qIHRoZSBjYWxsYmFjayB0byByZWFkIHRoZSByZXNwb25zZSBpcyByZWdpc3RlcmVk IGF0CisrICAgICAgICAgICAgICAgICAqIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbmQsIHNvIHdl IGRvIG5vdGhpbmcgaGVyZSwKKysgICAgICAgICAgICAgICAgICogYW5kIHdhaXQgZm9yIHRoZSBy ZXNwb25zZQorKyAgICAgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICAgICAgcHJvdG8tPndh aXRpbmdfZm9yX3Jlc3BvbnNlID0gR0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgICAgIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKysKKysgICAgICAgICAgICAgICAgZGVi dWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsKKysgICAgICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGVs c2UKKysgICAgICAgIHsKKysgICAgICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 X3QgcmVxdWVzdDsKKysgICAgICAgICAgICBnbG9idXNfYnl0ZV90ICogYnVmOworKyAgICAgICAg ICAgIGdsb2J1c19zaXplX3QgbmJ5dGVzX3NlbnQ7CisrICAgICAgICAgICAgZ2xvYnVzX2Jvb2xf dCBmYWlsOworKworKyAgICAgICAgICAgIHJlcXVlc3QgPSBwcm90by0+cmVxdWVzdDsKKysgICAg ICAgICAgICBidWYgPSBwcm90by0+dXNlcl9idWZmZXI7CisrICAgICAgICAgICAgbmJ5dGVzX3Nl bnQgPSBwcm90by0+dXNlcl9vZmZzZXQ7CisrICAgICAgICAgICAgZmFpbCA9IHByb3RvLT5mYWls dXJlX29jY3VycmVkOworKworKworKyAgICAgICAgICAgIC8qIG5lZWQgdG8gcmVnaXN0ZXIgdGhl IGNsb3NlLCBhbmQgY2FsbGJhY2sgdG8gdGhlIHVzZXIgKi8KKysgICAgICAgICAgICByZXN1bHQg PSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVnaXN0ZXJfY2xvc2UocHJvdG8pOworICAg ICAgICAgICAgIGlmIChyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2UocHJvdG8p OworICAgICAgICAgICAgIH0KKy0JICAgIAorLQkgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX3VubG9jaygpOworIAorLQkgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fc2VuZF9j b21wbGV0ZSgKKy0JCXJlcXVlc3QsCistCQlidWYsCistCQluYnl0ZXNfc2VudCwKKy0JCWZhaWws CistCQlHTE9CVVNfVFJVRSk7CistCSAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5n ICVzKClcbiIpLG15bmFtZSkpOworKyAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF91bmxvY2soKTsKKysKKysgICAgICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90 b19zZW5kX2NvbXBsZXRlKAorKyAgICAgICAgICAgICAgICByZXF1ZXN0LAorKyAgICAgICAgICAg ICAgICBidWYsCisrICAgICAgICAgICAgICAgIG5ieXRlc19zZW50LAorKyAgICAgICAgICAgICAg ICBmYWlsLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfVFJVRSk7CisrICAgICAgICAgICAgZGVi dWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsKKyAKKy0JICAg IHJldHVybjsKKy0JfQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgfQor ICAgICBlbHNlCisgICAgIHsKKy0JZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90IHJlcXVl c3Q7CistCWdsb2J1c19ieXRlX3QgKiBidWY7CistCWdsb2J1c19ib29sX3QgZmFpbDsKKy0JZ2xv YnVzX2Jvb2xfdCBsYXN0X2RhdGE7CistCSAgICAKKy0JcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dB U1NfVFJBTlNGRVJfSFRUUF9TVEFURV9JRExFOworLQorLQlyZXF1ZXN0ID0gcHJvdG8tPnJlcXVl c3Q7CistCWJ1ZiA9IHByb3RvLT51c2VyX2J1ZmZlcjsKKy0JZmFpbCA9IHByb3RvLT5mYWlsdXJl X29jY3VycmVkOworLQlsYXN0X2RhdGEgPSBwcm90by0+bGFzdF9kYXRhOworLQkKKy0KKy0JZ2xv YnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworLQlnbG9idXNfZ2Fzc190cmFuc2Zl cl9wcm90b19zZW5kX2NvbXBsZXRlKHJlcXVlc3QsCistCQkJCQkJIGJ1ZiwKKy0JCQkJCQkgbmJ5 dGVzLAorLQkJCQkJCSBmYWlsLAorLQkJCQkJCSBsYXN0X2RhdGEpOworKyAgICAgICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90IHJlcXVlc3Q7CisrICAgICAgICBnbG9idXNfYnl0ZV90 ICogYnVmOworKyAgICAgICAgZ2xvYnVzX2Jvb2xfdCBmYWlsOworKyAgICAgICAgZ2xvYnVzX2Jv b2xfdCBsYXN0X2RhdGE7CisrCisrICAgICAgICBwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19U UkFOU0ZFUl9IVFRQX1NUQVRFX0lETEU7CisrCisrICAgICAgICByZXF1ZXN0ID0gcHJvdG8tPnJl cXVlc3Q7CisrICAgICAgICBidWYgPSBwcm90by0+dXNlcl9idWZmZXI7CisrICAgICAgICBmYWls ID0gcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQ7CisrICAgICAgICBsYXN0X2RhdGEgPSBwcm90by0+ bGFzdF9kYXRhOworKworKworKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Vu bG9jaygpOworKyAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fc2VuZF9jb21wbGV0 ZShyZXF1ZXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBidWYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5ieXRlcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmFpbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGFzdF9kYXRhKTsKKyAgICAgfQorICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJF eGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworICAgICByZXR1cm47CitAQCAtNjcxLDE0ICs2NzEs MTQgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3dyaXRlX2NhbGxiYWNrKAorIHN0YXRp YworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGV2X2NhbGxiYWNrKAor LSAgICB2b2lkICoJCQkJCWNhbGxiYWNrX2FyZywKKy0gICAgZ2xvYnVzX2lvX2hhbmRsZV90ICoJ CQloYW5kbGUsCistICAgIGdsb2J1c19yZXN1bHRfdCAJCQkJcmVzdWx0LAorLSAgICBzdHJ1Y3Qg aW92ZWMgKgkJCQlpb3YsCistICAgIGdsb2J1c19zaXplX3QJCQkJaW92Y250LAorLSAgICBnbG9i dXNfc2l6ZV90CQkJCW5ieXRlcykKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjYWxsYmFja19hcmcsCisrICAgIGdsb2J1c19pb19oYW5kbGVfdCAqICAg ICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKysgICAgc3RydWN0IGlvdmVjICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpb3YsCisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW92Y250LAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5ieXRlcykKKyB7CistICAgIGdsb2J1c19nYXNzX3RyYW5z ZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICoJCXByb3RvOworKyAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqICAgICAgICAgcHJvdG87CisgICAgIE1ZTkFNRShn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGV2X2NhbGxiYWNrKTsKKyAKKyAgICAgZGVi dWdfcHJpbnRmKDMsIChfR1RTTCgiRW50ZXJpbmcgJXMoKVxuIiksbXluYW1lKSk7CitAQCAtNjg3 LDEzMiArNjg3LDEzMiBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGV2X2NhbGxi YWNrKAorICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbG9jaygpOworIAorICAgICBp ZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MgfHwKKy0JICAgIHByb3RvLT5mYWlsdXJlX29jY3Vy cmVkIHx8CistCSAgICBwcm90by0+cGFyc2VfZXJyb3IpCisrICAgICAgICAgICAgcHJvdG8tPmZh aWx1cmVfb2NjdXJyZWQgfHwKKysgICAgICAgICAgICBwcm90by0+cGFyc2VfZXJyb3IpCisgICAg IHsKKy0JcHJvdG8tPmxhc3RfZGF0YSA9IEdMT0JVU19UUlVFOworKyAgICAgICAgcHJvdG8tPmxh c3RfZGF0YSA9IEdMT0JVU19UUlVFOworICAgICB9CisgCisgICAgIGlmKHByb3RvLT5sYXN0X2Rh dGEpCisgICAgIHsKKy0JcHJvdG8tPnVzZXJfb2Zmc2V0ID0gbmJ5dGVzIC0gaW92WzBdLmlvdl9s ZW4gLSBpb3ZbMl0uaW92X2xlbjsKKysgICAgICAgIHByb3RvLT51c2VyX29mZnNldCA9IG5ieXRl cyAtIGlvdlswXS5pb3ZfbGVuIC0gaW92WzJdLmlvdl9sZW47CisgCistCWlmKChwcm90by0+dHlw ZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfUFVUIHx8CistCSAgIHByb3Rv LT50eXBlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9BUFBFTkQpICYmCist CSAgICghcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgJiYgIXByb3RvLT5wYXJzZV9lcnJvcikpCist CXsKKy0JICAgIGlmKHByb3RvLT5nb3RfcmVzcG9uc2UpCistCSAgICB7CistCQlnbG9idXNfYnl0 ZV90ICogYnVmZmVyOworLQkJZ2xvYnVzX3NpemVfdCBvZmZzZXQ7CistCQlpbnQgZmFpbGVkID0g cHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQ7CistCQlnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 X3QgcmVxdWVzdCA9IHByb3RvLT5yZXF1ZXN0OworKyAgICAgICAgaWYoKHByb3RvLT50eXBlID09 IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9QVVQgfHwKKysgICAgICAgICAgIHBy b3RvLT50eXBlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9BUFBFTkQpICYm CisrICAgICAgICAgICAoIXByb3RvLT5mYWlsdXJlX29jY3VycmVkICYmICFwcm90by0+cGFyc2Vf ZXJyb3IpKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGlmKHByb3RvLT5nb3RfcmVzcG9uc2Up CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBnbG9idXNfYnl0ZV90ICogYnVmZmVy OworKyAgICAgICAgICAgICAgICBnbG9idXNfc2l6ZV90IG9mZnNldDsKKysgICAgICAgICAgICAg ICAgaW50IGZhaWxlZCA9IHByb3RvLT5mYWlsdXJlX29jY3VycmVkOworKyAgICAgICAgICAgICAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgcmVxdWVzdCA9IHByb3RvLT5yZXF1ZXN0 OworIAorLQkJYnVmZmVyID0gcHJvdG8tPnVzZXJfYnVmZmVyOworLQkJb2Zmc2V0ID0gcHJvdG8t PnVzZXJfb2Zmc2V0OworKyAgICAgICAgICAgICAgICBidWZmZXIgPSBwcm90by0+dXNlcl9idWZm ZXI7CisrICAgICAgICAgICAgICAgIG9mZnNldCA9IHByb3RvLT51c2VyX29mZnNldDsKKyAKKy0J CXJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZShwcm90 byk7CisrICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9yZWdpc3Rlcl9jbG9zZShwcm90byk7CisgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0g R0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jbG9zZShwcm90byk7CisgICAgICAgICAgICAg ICAgIH0KKyAKKy0JCWdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKy0JCWds b2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3NlbmRfY29tcGxldGUocmVxdWVzdCwKKy0JCQkJCQkJ IGJ1ZmZlciwKKy0JCQkJCQkJIG9mZnNldCwKKy0JCQkJCQkJIGZhaWxlZCwKKy0JCQkJCQkJIEdM T0JVU19UUlVFKTsKKy0JCWRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiks bXluYW1lKSk7CistCQlyZXR1cm47CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7CistCQkv KiB0aGUgY2FsbGJhY2sgdG8gcmVhZCB0aGUgcmVzcG9uc2UgaXMgcmVnaXN0ZXJlZCBhdAorLQkJ ICogdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VuZCwgc28gd2UgZG8gbm90aGluZyBoZXJlLAorLQkJ ICogYW5kIHdhaXQgZm9yIHRoZSByZXNwb25zZQorLQkJICovCistCQlwcm90by0+d2FpdGluZ19m b3JfcmVzcG9uc2UgPSBHTE9CVVNfVFJVRTsKKy0JCWdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF91bmxvY2soKTsKKy0KKy0JCWRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxu IiksbXluYW1lKSk7CistCQlyZXR1cm47CistCSAgICB9CistCX0KKy0JZWxzZQorLQl7CistCSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgcmVxdWVzdDsKKy0JICAgIGdsb2J1c19i eXRlX3QgKmJ1ZjsKKy0JICAgIGdsb2J1c19zaXplX3QgbmJ5dGVzX3NlbnQ7CistCSAgICBnbG9i dXNfYm9vbF90IGZhaWw7CistCistCSAgICByZXF1ZXN0ID0gcHJvdG8tPnJlcXVlc3Q7CistCSAg ICBidWYgPSBwcm90by0+dXNlcl9idWZmZXI7CistCSAgICBuYnl0ZXNfc2VudCA9IHByb3RvLT51 c2VyX29mZnNldDsKKy0JICAgIGZhaWwgPSBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZDsKKy0KKy0J ICAgIC8qIG5lZWQgdG8gcmVnaXN0ZXIgdGhlIGNsb3NlLCBhbmQgY2FsbGJhY2sgdG8gdGhlIHVz ZXIgKi8KKy0JICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rl cl9jbG9zZShwcm90byk7CisrICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF91bmxvY2soKTsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJv dG9fc2VuZF9jb21wbGV0ZShyZXF1ZXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMT0JVU19UUlVFKTsKKysgICAgICAgICAgICAgICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgi RXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAg ICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICAvKiB0aGUgY2FsbGJhY2sgdG8gcmVhZCB0aGUgcmVzcG9uc2UgaXMgcmVnaXN0ZXJl ZCBhdAorKyAgICAgICAgICAgICAgICAgKiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZW5kLCBzbyB3 ZSBkbyBub3RoaW5nIGhlcmUsCisrICAgICAgICAgICAgICAgICAqIGFuZCB3YWl0IGZvciB0aGUg cmVzcG9uc2UKKysgICAgICAgICAgICAgICAgICovCisrICAgICAgICAgICAgICAgIHByb3RvLT53 YWl0aW5nX2Zvcl9yZXNwb25zZSA9IEdMT0JVU19UUlVFOworKyAgICAgICAgICAgICAgICBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisrCisrICAgICAgICAgICAgICAgIGRl YnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7CisrICAgICAg ICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBl bHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVz dF90IHJlcXVlc3Q7CisrICAgICAgICAgICAgZ2xvYnVzX2J5dGVfdCAqYnVmOworKyAgICAgICAg ICAgIGdsb2J1c19zaXplX3QgbmJ5dGVzX3NlbnQ7CisrICAgICAgICAgICAgZ2xvYnVzX2Jvb2xf dCBmYWlsOworKworKyAgICAgICAgICAgIHJlcXVlc3QgPSBwcm90by0+cmVxdWVzdDsKKysgICAg ICAgICAgICBidWYgPSBwcm90by0+dXNlcl9idWZmZXI7CisrICAgICAgICAgICAgbmJ5dGVzX3Nl bnQgPSBwcm90by0+dXNlcl9vZmZzZXQ7CisrICAgICAgICAgICAgZmFpbCA9IHByb3RvLT5mYWls dXJlX29jY3VycmVkOworKworKyAgICAgICAgICAgIC8qIG5lZWQgdG8gcmVnaXN0ZXIgdGhlIGNs b3NlLCBhbmQgY2FsbGJhY2sgdG8gdGhlIHVzZXIgKi8KKysgICAgICAgICAgICByZXN1bHQgPSBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVnaXN0ZXJfY2xvc2UocHJvdG8pOworICAgICAg ICAgICAgIGlmIChyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2UocHJvdG8pOwor ICAgICAgICAgICAgIH0KKyAKKy0JICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxv Y2soKTsKKy0JICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3NlbmRfY29tcGxldGUoCist CQlyZXF1ZXN0LAorLQkJYnVmLAorLQkJbmJ5dGVzX3NlbnQsCistCQlmYWlsLAorLQkJR0xPQlVT X1RSVUUpOworLQkgICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSxt eW5hbWUpKTsKKy0JICAgIHJldHVybjsKKy0JfQorKyAgICAgICAgICAgIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKysgICAgICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zl cl9wcm90b19zZW5kX2NvbXBsZXRlKAorKyAgICAgICAgICAgICAgICByZXF1ZXN0LAorKyAgICAg ICAgICAgICAgICBidWYsCisrICAgICAgICAgICAgICAgIG5ieXRlc19zZW50LAorKyAgICAgICAg ICAgICAgICBmYWlsLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfVFJVRSk7CisrICAgICAgICAg ICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsKKysg ICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7 CistCWdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCByZXF1ZXN0OworLQlnbG9idXNfYnl0 ZV90ICpidWY7CistCWdsb2J1c19zaXplX3QgbmJ5dGVzX3NlbnQ7CistCWdsb2J1c19ib29sX3Qg ZmFpbDsKKy0JCistCXJlcXVlc3QgPSBwcm90by0+cmVxdWVzdDsKKy0JYnVmID0gcHJvdG8tPnVz ZXJfYnVmZmVyOworLQluYnl0ZXNfc2VudCA9IG5ieXRlcyAtIGlvdlswXS5pb3ZfbGVuIC0gaW92 WzJdLmlvdl9sZW4sCistCWZhaWwgPSBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZDsKKy0KKy0JcHJv dG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9JRExFOworLQorLQln bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CistCWdsb2J1c19nYXNzX3RyYW5z ZmVyX3Byb3RvX3NlbmRfY29tcGxldGUocmVxdWVzdCwKKy0JCQkJCQkgYnVmLAorLQkJCQkJCSBu Ynl0ZXNfc2VudCwKKy0JCQkJCQkgZmFpbCwKKy0JCQkJCQkgR0xPQlVTX0ZBTFNFKTsKKy0JZGVi dWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsKKy0JcmV0dXJu OworKyAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90IHJlcXVlc3Q7CisrICAg ICAgICBnbG9idXNfYnl0ZV90ICpidWY7CisrICAgICAgICBnbG9idXNfc2l6ZV90IG5ieXRlc19z ZW50OworKyAgICAgICAgZ2xvYnVzX2Jvb2xfdCBmYWlsOworKworKyAgICAgICAgcmVxdWVzdCA9 IHByb3RvLT5yZXF1ZXN0OworKyAgICAgICAgYnVmID0gcHJvdG8tPnVzZXJfYnVmZmVyOworKyAg ICAgICAgbmJ5dGVzX3NlbnQgPSBuYnl0ZXMgLSBpb3ZbMF0uaW92X2xlbiAtIGlvdlsyXS5pb3Zf bGVuLAorKyAgICAgICAgZmFpbCA9IHByb3RvLT5mYWlsdXJlX29jY3VycmVkOworKworKyAgICAg ICAgcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9JRExFOwor KworKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworKyAgICAg ICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fc2VuZF9jb21wbGV0ZShyZXF1ZXN0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlc19zZW50 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWls LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9C VVNfRkFMU0UpOworKyAgICAgICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygp XG4iKSxteW5hbWUpKTsKKysgICAgICAgIHJldHVybjsKKyAgICAgfQorIH0KKyAvKiBnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGV2X2NhbGxiYWNrKCkgKi8KKyAKKyAvKgorICAqIEZ1 bmN0aW9uOiBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVhZF9jYWxsYWNrKCkKKy0gKiAK KysgKgorICAqIERlc2NyaXB0aW9uOiBDYWxsYmFjayB3aGVuIHRoZSByZWFkIG9mIGZyb20gdGhl IGNvbm5lY3Rpb24gdG8gdGhlIGFjdGl2ZQorICAqICAgICAgICAgICAgICBidWZmZXIgaGFzIGNv bXBsZXRlZCBvciBmYWlsZWQuCistICogCistICogUGFyYW1ldGVyczogCistICogCistICogUmV0 dXJuczogCisrICoKKysgKiBQYXJhbWV0ZXJzOgorKyAqCisrICogUmV0dXJuczoKKyAgKi8KKyBz dGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlYWRfY2FsbGJhY2so CistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnLAorLSAgICBnbG9idXNfaW9faGFuZGxlX3Qg KgkJCWhhbmRsZSwKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3VsdCwKKy0gICAgZ2xvYnVz X2J5dGVfdCAqCQkJCWJ1ZiwKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQluYnl0ZXMpCisrICAgIHZv aWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnLAor KyAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwK KysgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQs CisrICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAor KyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlcykK KyB7CisgICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy ID0gR0xPQlVTX05VTEw7CisgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9w cm90b190ICogcHJvdG87CitAQCAtODIwLDIxICs4MjAsMjEgQEAgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX3JlYWRfY2FsbGJhY2soCisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGFzdF9kYXRhID0gR0xPQlVTX0ZBTFNFOworICAgICBnbG9idXNf Ym9vbF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgPSBHTE9CVVNfRkFM U0U7CisgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0ID0gMDsKKy0JCisrCisgICAgIE1ZTkFNRShnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf cmVhZF9jYWxsYmFjayk7CistICAgIAorKworICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJF bnRlcmluZyAlcygpXG4iKSxteW5hbWUpKTsKKy0gICAgCisrCisgICAgIHByb3RvID0gKGdsb2J1 c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICopIGNhbGxiYWNrX2FyZzsKKyAK KyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBjaGFy ICogdG1wc3RyOworIAorLQllcnIgPSBnbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCk7CistCXRtcHN0 ciA9IGdsb2J1c19vYmplY3RfcHJpbnRhYmxlX3RvX3N0cmluZyhlcnIpOworLQlkZWJ1Z19wcmlu dGYoNSwgKF9HVFNMKCIlcygpOiBFcnJvcjogJXNcbiIpLCBteW5hbWUsIHRtcHN0cikpOworLQln bG9idXNfbGliY19mcmVlKHRtcHN0cik7CisrICAgICAgICBlcnIgPSBnbG9idXNfZXJyb3JfZ2V0 KHJlc3VsdCk7CisrICAgICAgICB0bXBzdHIgPSBnbG9idXNfb2JqZWN0X3ByaW50YWJsZV90b19z dHJpbmcoZXJyKTsKKysgICAgICAgIGRlYnVnX3ByaW50Zig1LCAoX0dUU0woIiVzKCk6IEVycm9y OiAlc1xuIiksIG15bmFtZSwgdG1wc3RyKSk7CisrICAgICAgICBnbG9idXNfbGliY19mcmVlKHRt cHN0cik7CisgICAgIH0KKyAKKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xvY2so KTsKK0BAIC04NDMsMTExICs4NDMsMTExIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9y ZWFkX2NhbGxiYWNrKAorICAgICBwcm90by0+aGFuZGxlZCArPSBuYnl0ZXM7CisgICAgIGlmKG5i eXRlcyA+IHByb3RvLT51c2VyX3dhaXRsZW4pCisgICAgIHsKKy0JcHJvdG8tPnVzZXJfd2FpdGxl biA9IDA7CisrICAgICAgICBwcm90by0+dXNlcl93YWl0bGVuID0gMDsKKyAgICAgfQorICAgICBl bHNlCisgICAgIHsKKy0JcHJvdG8tPnVzZXJfd2FpdGxlbiAtPSBuYnl0ZXM7CisrICAgICAgICBw cm90by0+dXNlcl93YWl0bGVuIC09IG5ieXRlczsKKyAgICAgfQorIAorICAgICBpZihwcm90by0+ Y2h1bmtlZCkKKyAgICAgeworLQlwcm90by0+Y2h1bmtfbGVmdCAtPSBuYnl0ZXM7CisrICAgICAg ICBwcm90by0+Y2h1bmtfbGVmdCAtPSBuYnl0ZXM7CisgICAgIH0KKyAKKyAgICAgaWYocmVzdWx0 ICE9IEdMT0JVU19TVUNDRVNTICYmCisgICAgICAgIGdsb2J1c19pb19lb2YoZXJyKSkKKyAgICAg eworLQlwcm90by0+ZW9mX3JlYWQgPSBHTE9CVVNfVFJVRTsKKysgICAgICAgIHByb3RvLT5lb2Zf cmVhZCA9IEdMT0JVU19UUlVFOworICAgICB9CisgICAgIGVsc2UgaWYocmVzdWx0ICE9IEdMT0JV U19TVUNDRVNTIHx8CistCSAgICBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZCB8fAorLQkgICAgcHJv dG8tPnBhcnNlX2Vycm9yKQorKyAgICAgICAgICAgIHByb3RvLT5mYWlsdXJlX29jY3VycmVkIHx8 CisrICAgICAgICAgICAgcHJvdG8tPnBhcnNlX2Vycm9yKQorICAgICB7CistCXByb3RvLT5yZWN2 X3N0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SOworKyAg ICAgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1Zf U1RBVEVfRVJST1I7CisgICAgIH0KKyAKKyAgICAgaWYocHJvdG8tPnJlY3Zfc3RhdGUgPT0gR0xP QlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0VPRiAmJgorICAgICAgICBw cm90by0+ZW9mX3JlYWQgPT0gR0xPQlVTX1RSVUUpCisgICAgIHsKKy0JcHJvdG8tPnJlY3Zfc3Rh dGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GOworKyAgICAgICAg cHJvdG8tPnJlY3Zfc3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVf RU9GOworICAgICB9CisgICAgIGVsc2UgaWYocHJvdG8tPnJlY3Zfc3RhdGUgPT0KKy0JICAgICAg ICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfVU5USUxfTEVOR1RIICYmCist CSAgICBwcm90by0+aGFuZGxlZCA9PSBwcm90by0+bGVuZ3RoKQorKyAgICAgICAgICAgICAgICBH TE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfVU5USUxfTEVOR1RIICYmCisrICAg ICAgICAgICAgcHJvdG8tPmhhbmRsZWQgPT0gcHJvdG8tPmxlbmd0aCkKKyAgICAgeworLQlwcm90 by0+cmVjdl9zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FT0Y7 CisrICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBf UkVDVl9TVEFURV9FT0Y7CisgICAgIH0KKyAgICAgZWxzZSBpZihwcm90by0+cmVjdl9zdGF0ZSA9 PQorLQkgICAgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9VTlRJTF9M RU5HVEggJiYKKy0JICAgIHByb3RvLT5lb2ZfcmVhZCA9PSBHTE9CVVNfVFJVRSAmJgorLQkgICAg cHJvdG8tPmhhbmRsZWQgPCBwcm90by0+bGVuZ3RoKQorKyAgICAgICAgICAgICAgICBHTE9CVVNf R0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfVU5USUxfTEVOR1RIICYmCisrICAgICAgICAg ICAgcHJvdG8tPmVvZl9yZWFkID09IEdMT0JVU19UUlVFICYmCisrICAgICAgICAgICAgcHJvdG8t PmhhbmRsZWQgPCBwcm90by0+bGVuZ3RoKQorICAgICB7CistCXByb3RvLT5yZWN2X3N0YXRlID0g R0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SOworKyAgICAgICAgcHJv dG8tPnJlY3Zfc3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJS T1I7CisgICAgIH0KKyAgICAgZWxzZSBpZihuYnl0ZXM9PTAgJiYgcHJvdG8tPmVvZl9yZWFkKQor ICAgICB7CisgICAgICAgICBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZCA9IEdMT0JVU19UUlVFOwor LQlwcm90by0+cmVjdl9zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFU RV9FUlJPUjsKKysgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNG RVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SOworICAgICB9CisgCisgICAgIGlmKChwcm90by0+dHlw ZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfUFVUIHx8CisgICAgICAgIHBy b3RvLT50eXBlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9BUFBFTkQpICYm CisgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBf UkVDVl9TVEFURV9FT0YpCisgICAgIHsKKy0JY2hhciAgKgkJCQkJcmVzcG9uc2U7CistCWdsb2J1 c19zaXplX3QJCQkJcmVzcG9uc2VfbGVuPTA7CistCWdsb2J1c19zaXplX3QJCQkJb2Zmc2V0Owor LQorLQorLQlyZXNwb25zZV9sZW4gKz0gMTsKKy0JcmVzcG9uc2VfbGVuICs9IHN0cmxlbihHTE9C VVNfTF9HRU5FUklDX1JFU1BPTlNFKTsKKy0JcmVzcG9uc2VfbGVuICs9IDM7CistCXJlc3BvbnNl X2xlbiArPSBzdHJsZW4oR0xPQlVTX0xfT0spOworLQlyZXNwb25zZV9sZW4gKz0gMjsKKy0JcmVz cG9uc2UgPSBnbG9idXNfbWFsbG9jKHJlc3BvbnNlX2xlbik7CistCistCXByb3RvLT5zdGF0ZSA9 IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfUkVTUE9ORElORzsKKy0Jb2Zmc2V0ID0g c3ByaW50ZihyZXNwb25zZSwKKy0JCUdMT0JVU19MX0dFTkVSSUNfUkVTUE9OU0UsCistCQkwLAor LQkJMjAwLAorLQkJR0xPQlVTX0xfT0spOworLQlvZmZzZXQgKz0gc3ByaW50ZihyZXNwb25zZSAr IG9mZnNldCwKKy0JCQkgIENSTEYpOworLQorLQlkZWJ1Z19wcmludGYoNCwoX0dUU0woIiVzKCk6 IFJlZ2lzdGVyaW5nIHdyaXRlXG4iKSxteW5hbWUpKTsKKy0JZ2xvYnVzX2lvX3JlZ2lzdGVyX3dy aXRlKCZwcm90by0+aGFuZGxlLAorLQkJCQkgKGdsb2J1c19ieXRlX3QgKikgcmVzcG9uc2UsCist CQkJCSBzdHJsZW4ocmVzcG9uc2UpLAorLQkJCQkgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X3dyaXRlX3Jlc3BvbnNlLAorLQkJCQkgcHJvdG8pOworKyAgICAgICAgY2hhciAgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOworKyAgICAgICAgZ2xvYnVzX3NpemVf dCAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2xlbj0wOworKyAgICAgICAgZ2xv YnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDsKKysKKysKKysgICAg ICAgIHJlc3BvbnNlX2xlbiArPSAxOworKyAgICAgICAgcmVzcG9uc2VfbGVuICs9IHN0cmxlbihH TE9CVVNfTF9HRU5FUklDX1JFU1BPTlNFKTsKKysgICAgICAgIHJlc3BvbnNlX2xlbiArPSAzOwor KyAgICAgICAgcmVzcG9uc2VfbGVuICs9IHN0cmxlbihHTE9CVVNfTF9PSyk7CisrICAgICAgICBy ZXNwb25zZV9sZW4gKz0gMjsKKysgICAgICAgIHJlc3BvbnNlID0gZ2xvYnVzX21hbGxvYyhyZXNw b25zZV9sZW4pOworKworKyAgICAgICAgcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNG RVJfSFRUUF9TVEFURV9SRVNQT05ESU5HOworKyAgICAgICAgb2Zmc2V0ID0gc3ByaW50ZihyZXNw b25zZSwKKysgICAgICAgICAgICAgICAgR0xPQlVTX0xfR0VORVJJQ19SRVNQT05TRSwKKysgICAg ICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgMjAwLAorKyAgICAgICAgICAgICAgICBH TE9CVVNfTF9PSyk7CisrICAgICAgICBvZmZzZXQgKz0gc3ByaW50ZihyZXNwb25zZSArIG9mZnNl dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIENSTEYpOworKworKyAgICAgICAgZGVidWdf cHJpbnRmKDQsKF9HVFNMKCIlcygpOiBSZWdpc3RlcmluZyB3cml0ZVxuIiksbXluYW1lKSk7Cisr ICAgICAgICBnbG9idXNfaW9fcmVnaXN0ZXJfd3JpdGUoJnByb3RvLT5oYW5kbGUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgcmVzcG9uc2UsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKHJlc3BvbnNlKSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf d3JpdGVfcmVzcG9uc2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8p OworICAgICB9CisgICAgIC8qIFJlZ2lzdGVyIHRoZSBzb2NrZXQgZm9yIGNsb3NpbmcgaWYgd2Un cmUgZG9uZSByZWFkaW5nIGZyb20gaXQgKi8KKyAgICAgZWxzZSBpZihwcm90by0+cmVjdl9zdGF0 ZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GIHx8CisgICAgICAg IHByb3RvLT5yZWN2X3N0YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFU RV9FUlJPUikKKyAgICAgeworLQlmYWlsdXJlID0gcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQ7Cist CWJ1ZiA9IHByb3RvLT51c2VyX2J1ZmZlcjsKKy0Jb2Zmc2V0ID0gcHJvdG8tPnVzZXJfb2Zmc2V0 OworLQlyZXF1ZXN0ID0gcHJvdG8tPnJlcXVlc3Q7CisrICAgICAgICBmYWlsdXJlID0gcHJvdG8t PmZhaWx1cmVfb2NjdXJyZWQ7CisrICAgICAgICBidWYgPSBwcm90by0+dXNlcl9idWZmZXI7Cisr ICAgICAgICBvZmZzZXQgPSBwcm90by0+dXNlcl9vZmZzZXQ7CisrICAgICAgICByZXF1ZXN0ID0g cHJvdG8tPnJlcXVlc3Q7CisgICAgICAgICBsYXN0X2RhdGEgPSBHTE9CVVNfVFJVRTsKKyAKKy0J aWYocHJvdG8tPnN0YXRlICE9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfQ0xPU0lO RykKKy0JeworLQkgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lz dGVyX2Nsb3NlKHByb3RvKTsKKysgICAgICAgIGlmKHByb3RvLT5zdGF0ZSAhPSBHTE9CVVNfR0FT U19UUkFOU0ZFUl9IVFRQX1NUQVRFX0NMT1NJTkcpCisrICAgICAgICB7CisrICAgICAgICAgICAg cmVzdWx0ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX2Nsb3NlKHByb3Rv KTsKKyAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Nsb3Nl KHByb3RvKTsKKyAgICAgICAgICAgICB9CistCX0KKy0JZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX3VubG9jaygpOworLQlkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5nIGdsb2J1c19n YXNzX3RyYW5zZmVyX3Byb3RvX3JlY2VpdmVfY29tcGxldGUoKSIpKSk7CistCWdsb2J1c19nYXNz X3RyYW5zZmVyX3Byb3RvX3JlY2VpdmVfY29tcGxldGUocmVxdWVzdCwKKy0JCQkJCQkgICAgYnVm LAorLQkJCQkJCSAgICBvZmZzZXQsCistCQkJCQkJICAgIGZhaWx1cmUsCistCQkJCQkJICAgIGxh c3RfZGF0YSk7CisrICAgICAgICB9CisrICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfdW5sb2NrKCk7CisrICAgICAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5nIGds b2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlY2VpdmVfY29tcGxldGUoKSIpKSk7CisrICAgICAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZWNlaXZlX2NvbXBsZXRlKHJlcXVlc3QsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmYWlsdXJlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsYXN0X2RhdGEpOworICAgICAgICAgZ290byBvdXQ7CisgICAgIH0KKyAKK0BAIC05 NTUsNDQgKzk1NSw0NCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVhZF9jYWxsYmFj aygKKyAgICAgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRU UF9SRUNWX1NUQVRFX0VPRiB8fAorICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9PSBHTE9CVVNf R0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1IpCisgICAgIHsKKy0JLyoKKy0JICog UmVjZWl2ZWQgdGhlIHJlcXVpcmVkIG1pbmltdW0gb2YgZGF0YSBmcm9tIGNvbm5lY3Rpb24sIGFu CistCSAqIGVycm9yLCBvciB0aGUgZW5kLW9mIGZpbGUsIHNpZ25hbCB0aGlzIHRvIEdBU1MKKy0J ICovCistCWlmKHByb3RvLT5zdGF0ZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRF X1BFTkRJTkcpCistCXsKKy0JICAgIHByb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVS X0hUVFBfU1RBVEVfSURMRTsKKy0JfQorLQlpZihwcm90by0+cmVjdl9zdGF0ZSA9PSBHTE9CVVNf R0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GIHx8CistCSAgIHByb3RvLT5yZWN2X3N0 YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FUlJPUikKKy0Jewor LQkgICAgbGFzdF9kYXRhID0gR0xPQlVTX1RSVUU7CistCX0KKy0KKy0JZmFpbHVyZSA9IHByb3Rv LT5mYWlsdXJlX29jY3VycmVkOworLQlidWYgPSBwcm90by0+dXNlcl9idWZmZXI7CistCW9mZnNl dCA9IHByb3RvLT51c2VyX29mZnNldDsKKy0JcmVxdWVzdCA9IHByb3RvLT5yZXF1ZXN0OworLQor LQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CistCWRlYnVnX3ByaW50Zigy LCAoX0dUU0woImNhbGxpbmcgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVjZWl2ZV9jb21w bGV0ZSgpIikpKTsKKy0JZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVjZWl2ZV9jb21wbGV0 ZShyZXF1ZXN0LAorLQkJCQkJCSAgICBidWYsCistCQkJCQkJICAgIG9mZnNldCwKKy0JCQkJCQkg ICAgZmFpbHVyZSwKKy0JCQkJCQkgICAgbGFzdF9kYXRhKTsKKysgICAgICAgIC8qCisrICAgICAg ICAgKiBSZWNlaXZlZCB0aGUgcmVxdWlyZWQgbWluaW11bSBvZiBkYXRhIGZyb20gY29ubmVjdGlv biwgYW4KKysgICAgICAgICAqIGVycm9yLCBvciB0aGUgZW5kLW9mIGZpbGUsIHNpZ25hbCB0aGlz IHRvIEdBU1MKKysgICAgICAgICAqLworKyAgICAgICAgaWYocHJvdG8tPnN0YXRlID09IEdMT0JV U19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfUEVORElORykKKysgICAgICAgIHsKKysgICAgICAg ICAgICBwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX0lETEU7 CisrICAgICAgICB9CisrICAgICAgICBpZihwcm90by0+cmVjdl9zdGF0ZSA9PSBHTE9CVVNfR0FT U19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GIHx8CisrICAgICAgICAgICBwcm90by0+cmVj dl9zdGF0ZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1IpCisr ICAgICAgICB7CisrICAgICAgICAgICAgbGFzdF9kYXRhID0gR0xPQlVTX1RSVUU7CisrICAgICAg ICB9CisrCisrICAgICAgICBmYWlsdXJlID0gcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQ7CisrICAg ICAgICBidWYgPSBwcm90by0+dXNlcl9idWZmZXI7CisrICAgICAgICBvZmZzZXQgPSBwcm90by0+ dXNlcl9vZmZzZXQ7CisrICAgICAgICByZXF1ZXN0ID0gcHJvdG8tPnJlcXVlc3Q7CisrCisrICAg ICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisrICAgICAgICBkZWJ1 Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3Jl Y2VpdmVfY29tcGxldGUoKSIpKSk7CisrICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90 b19yZWNlaXZlX2NvbXBsZXRlKHJlcXVlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2RhdGEpOworICAgICB9 CisgICAgIGVsc2UKKyAgICAgeworLQlyZXN1bHQgPSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfcmVnaXN0ZXJfcmVhZChwcm90byk7CisrICAgICAgICByZXN1bHQgPSBnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfcmVnaXN0ZXJfcmVhZChwcm90byk7CisgCistCWdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKysgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF91bmxvY2soKTsKKyAgICAgfQorIAorIG91dDoKKyAgICAgaWYoZXJyKQorICAgICB7Cist CWdsb2J1c19vYmplY3RfZnJlZShlcnIpOworKyAgICAgICAgZ2xvYnVzX29iamVjdF9mcmVlKGVy cik7CisgICAgIH0KKyAKKyAgICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygp XG4iKSxteW5hbWUpKTsKK0BAIC0xMDAyLDI1ICsxMDAyLDI1IEBAIG91dDoKKyAKKyAvKgorICAq IEZ1bmN0aW9uOiBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVhZF9idWZmZXJlZF9jYWxs YWNrKCkKKy0gKiAKKysgKgorICAqIERlc2NyaXB0aW9uOiBDYWxsYmFjayB3aGVuIHRoZSByZWFk IG9mIGZyb20gdGhlIGh0dHAgdG8gdGhlCisgICogICAgICAgICAgICAgIHJlc3BvbnNlIGJ1ZmZl ciBoYXMgY29tcGxldGVkIG9yIGZhaWxlZC4KKy0gKiAKKy0gKiBQYXJhbWV0ZXJzOiAKKy0gKiAK Ky0gKiBSZXR1cm5zOiAKKysgKgorKyAqIFBhcmFtZXRlcnM6CisrICoKKysgKiBSZXR1cm5zOgor ICAqLworIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVhZF9i dWZmZXJlZF9jYWxsYmFjaygKKy0gICAgdm9pZCAqCQkJCQljYWxsYmFja19hcmcsCistICAgIGds b2J1c19pb19oYW5kbGVfdCAqCQkJaGFuZGxlLAorLSAgICBnbG9idXNfcmVzdWx0X3QJCQkJcmVz dWx0LAorLSAgICBnbG9idXNfYnl0ZV90ICoJCQkJYnVmLAorLSAgICBnbG9idXNfc2l6ZV90CQkJ CW5ieXRlcykKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjYWxsYmFja19hcmcsCisrICAgIGdsb2J1c19pb19oYW5kbGVfdCAqICAgICAgICAgICAgICAg ICAgICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc3VsdCwKKysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBidWYsCisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmJ5dGVzKQorIHsKKy0gICAgZ2xvYnVzX29iamVjdF90ICoJCQkJZXJyID0gR0xP QlVTX05VTEw7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190 ICoJCXByb3RvOworKyAgICBnbG9idXNfb2JqZWN0X3QgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVyciA9IEdMT0JVU19OVUxMOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3Jl cXVlc3RfcHJvdG9fdCAqICAgICAgICAgcHJvdG87CisgICAgIE1ZTkFNRShnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfcmVhZF9idWZmZXJlZF9jYWxsYmFjayk7CisgCisgICAgIGRlYnVnX3By aW50ZigzLCAoX0dUU0woIkVudGVyaW5nICVzKClcbiIpLG15bmFtZSkpOworQEAgLTEwMzEsMTAg KzEwMzEsMTAgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlYWRfYnVmZmVyZWRfY2Fs bGJhY2soCisgICAgIHsKKyAgICAgICAgIGNoYXIgKiB0bXBzdHI7CisgCistCWVyciA9IGdsb2J1 c19lcnJvcl9nZXQocmVzdWx0KTsKKy0JdG1wc3RyID0gZ2xvYnVzX29iamVjdF9wcmludGFibGVf dG9fc3RyaW5nKGVycik7CistCWRlYnVnX3ByaW50Zig1LCAoX0dUU0woIiVzKCk6ICVzXG4iKSwg bXluYW1lLCB0bXBzdHIpKTsKKy0JZ2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOworKyAgICAgICAg ZXJyID0gZ2xvYnVzX2Vycm9yX2dldChyZXN1bHQpOworKyAgICAgICAgdG1wc3RyID0gZ2xvYnVz X29iamVjdF9wcmludGFibGVfdG9fc3RyaW5nKGVycik7CisrICAgICAgICBkZWJ1Z19wcmludGYo NSwgKF9HVFNMKCIlcygpOiAlc1xuIiksIG15bmFtZSwgdG1wc3RyKSk7CisrICAgICAgICBnbG9i dXNfbGliY19mcmVlKHRtcHN0cik7CisgICAgIH0KKyAKKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX2xvY2soKTsKK0BAIC0xMDQ0LDExICsxMDQ0LDExIEBAIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9yZWFkX2J1ZmZlcmVkX2NhbGxiYWNrKAorICAgICBpZihyZXN1bHQgIT0g R0xPQlVTX1NVQ0NFU1MgJiYKKyAgICAgICAgZ2xvYnVzX2lvX2VvZihlcnIpKQorICAgICB7Cist CXByb3RvLT5lb2ZfcmVhZCA9IEdMT0JVU19UUlVFOworKyAgICAgICAgcHJvdG8tPmVvZl9yZWFk ID0gR0xPQlVTX1RSVUU7CisgICAgIH0KKyAgICAgZWxzZSBpZihyZXN1bHQgIT0gR0xPQlVTX1NV Q0NFU1MpCisgICAgIHsKKy0JcHJvdG8tPnJlY3Zfc3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZF Ul9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I7CisrICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9IEdM T0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FUlJPUjsKKyAgICAgfQorIAorICAg ICAvKgorQEAgLTEwNjAsMTA2ICsxMDYwLDEwNiBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfcmVhZF9idWZmZXJlZF9jYWxsYmFjaygKKyAKKyAgICAgaWYocHJvdG8tPmZhaWx1cmVfb2Nj dXJyZWQpCisgICAgIHsKKy0JcHJvdG8tPnJlY3Zfc3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZF Ul9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I7CisrICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9IEdM T0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FUlJPUjsKKyAgICAgfQorIAorICAg ICAvKiBzdWNjZXNzZnVsIHJlYWQgZm9yIHNlcnZlciwgc2VuZCByZXNwb25zZSAqLworICAgICBp ZigocHJvdG8tPnR5cGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX1BVVCB8 fAorLQlwcm90by0+dHlwZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfQVBQ RU5EKSAmJgorKyAgICAgICAgcHJvdG8tPnR5cGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVR VUVTVF9UWVBFX0FQUEVORCkgJiYKKyAgICAgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPT0gR0xPQlVT X0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VPRiAmJgorICAgICAgICBwcm90by0+cmVj dl9zdGF0ZSAhPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1IpCisg ICAgIHsKKy0JY2hhciAgKgkJCQkJcmVzcG9uc2U7CistCWdsb2J1c19zaXplX3QJCQkJcmVzcG9u c2VfbGVuPTA7CistCWdsb2J1c19zaXplX3QJCQkJb2Zmc2V0OworLQorLQorLQlyZXNwb25zZV9s ZW4gKz0gMTsKKy0JcmVzcG9uc2VfbGVuICs9IHN0cmxlbihHTE9CVVNfTF9HRU5FUklDX1JFU1BP TlNFKTsKKy0JcmVzcG9uc2VfbGVuICs9IDM7CistCXJlc3BvbnNlX2xlbiArPSBzdHJsZW4oR0xP QlVTX0xfT0spOworLQlyZXNwb25zZV9sZW4gKz0gMjsKKy0JcmVzcG9uc2UgPSBnbG9idXNfbWFs bG9jKHJlc3BvbnNlX2xlbik7CistCistCXByb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5T RkVSX0hUVFBfU1RBVEVfUkVTUE9ORElORzsKKy0Jb2Zmc2V0ID0gc3ByaW50ZihyZXNwb25zZSwK Ky0JCUdMT0JVU19MX0dFTkVSSUNfUkVTUE9OU0UsCistCQkwLAorLQkJMjAwLAorLQkJR0xPQlVT X0xfT0spOworLQlvZmZzZXQgKz0gc3ByaW50ZihyZXNwb25zZSArIG9mZnNldCwKKy0JCQkgIENS TEYpOworLQorLQlkZWJ1Z19wcmludGYoNCwoX0dUU0woIiVzKCk6IFJlZ2lzdGVyaW5nIHdyaXRl XG4iKSxteW5hbWUpKTsKKy0JZ2xvYnVzX2lvX3JlZ2lzdGVyX3dyaXRlKCZwcm90by0+aGFuZGxl LAorLQkJCQkgKGdsb2J1c19ieXRlX3QgKikgcmVzcG9uc2UsCistCQkJCSBzdHJsZW4ocmVzcG9u c2UpLAorLQkJCQkgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3dyaXRlX3Jlc3BvbnNlLAor LQkJCQkgcHJvdG8pOworKyAgICAgICAgY2hhciAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc3BvbnNlOworKyAgICAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc3BvbnNlX2xlbj0wOworKyAgICAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9mZnNldDsKKysKKysKKysgICAgICAgIHJlc3BvbnNlX2xlbiAr PSAxOworKyAgICAgICAgcmVzcG9uc2VfbGVuICs9IHN0cmxlbihHTE9CVVNfTF9HRU5FUklDX1JF U1BPTlNFKTsKKysgICAgICAgIHJlc3BvbnNlX2xlbiArPSAzOworKyAgICAgICAgcmVzcG9uc2Vf bGVuICs9IHN0cmxlbihHTE9CVVNfTF9PSyk7CisrICAgICAgICByZXNwb25zZV9sZW4gKz0gMjsK KysgICAgICAgIHJlc3BvbnNlID0gZ2xvYnVzX21hbGxvYyhyZXNwb25zZV9sZW4pOworKworKyAg ICAgICAgcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9SRVNQ T05ESU5HOworKyAgICAgICAgb2Zmc2V0ID0gc3ByaW50ZihyZXNwb25zZSwKKysgICAgICAgICAg ICAgICAgR0xPQlVTX0xfR0VORVJJQ19SRVNQT05TRSwKKysgICAgICAgICAgICAgICAgMCwKKysg ICAgICAgICAgICAgICAgMjAwLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfTF9PSyk7CisrICAg ICAgICBvZmZzZXQgKz0gc3ByaW50ZihyZXNwb25zZSArIG9mZnNldCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgIENSTEYpOworKworKyAgICAgICAgZGVidWdfcHJpbnRmKDQsKF9HVFNMKCIl cygpOiBSZWdpc3RlcmluZyB3cml0ZVxuIiksbXluYW1lKSk7CisrICAgICAgICBnbG9idXNfaW9f cmVnaXN0ZXJfd3JpdGUoJnByb3RvLT5oYW5kbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgcmVzcG9uc2UsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RybGVuKHJlc3BvbnNlKSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGVfcmVzcG9uc2UsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8pOworICAgICB9CisgICAgIC8q IFJlZ2lzdGVyIHRoZSBzb2NrZXQgZm9yIGNsb3NpbmcgaWYgd2UncmUgZG9uZSByZWFkaW5nIGZy b20gaXQgKi8KKyAgICAgZWxzZSBpZihwcm90by0+cmVjdl9zdGF0ZSA9PSBHTE9CVVNfR0FTU19U UkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GIHx8CistCSAgICBwcm90by0+cmVjdl9zdGF0ZSA9 PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1IpCisrICAgICAgICAg ICAgcHJvdG8tPnJlY3Zfc3RhdGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NU QVRFX0VSUk9SKQorICAgICB7CistCWlmKHByb3RvLT5zdGF0ZSAhPSBHTE9CVVNfR0FTU19UUkFO U0ZFUl9IVFRQX1NUQVRFX0NMT1NJTkcpCistCXsKKy0JICAgIHJlc3VsdCA9IGdsb2J1c19sX2dh c3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZShwcm90byk7CisrICAgICAgICBpZihwcm90 by0+c3RhdGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9DTE9TSU5HKQorKyAg ICAgICAgeworKyAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9yZWdpc3Rlcl9jbG9zZShwcm90byk7CisgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dh c3NfdHJhbnNmZXJfaHR0cF9jbG9zZShwcm90byk7CisgICAgICAgICAgICAgfQorLQl9CisrICAg ICAgICB9CisgICAgIH0KKyAgICAgaWYocHJvdG8tPnVzZXJfd2FpdGxlbiA9PSAwIHx8CisgICAg ICAgIHByb3RvLT5yZWN2X3N0YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9T VEFURV9FT0YgfHwKKyAgICAgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPT0gR0xPQlVTX0dBU1NfVFJB TlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SKQorICAgICB7CistCWdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlcXVlc3RfdAkJcmVxdWVzdDsKKy0JZ2xvYnVzX2Jvb2xfdAkJCQlsYXN0X2RhdGEgPSBH TE9CVVNfRkFMU0U7CistCWdsb2J1c19ib29sX3QJCQkJZmFpbHVyZSA7CistCWdsb2J1c19ieXRl X3QgKgkJCQlidWY7CistCWdsb2J1c19zaXplX3QJCQkJb2Zmc2V0OworLQkvKgorLQkgKiBSZWNl aXZlZCB0aGUgcmVxdWlyZWQgbWluaW11bSBvZiBkYXRhIGZyb20gY29ubmVjdGlvbiwgYW4KKy0J ICogZXJyb3IsIG9yIHRoZSBlbmQtb2YgZmlsZSwgc2lnbmFsIHRoaXMgdG8gR0FTUworLQkgKi8K Ky0JaWYocHJvdG8tPnN0YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfUEVO RElORykKKy0JeworLQkgICAgcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRU UF9TVEFURV9JRExFOworLQl9CistCWlmKHByb3RvLT5yZWN2X3N0YXRlID09IEdMT0JVU19HQVNT X1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FT0YgfHwKKy0JICAgcHJvdG8tPnJlY3Zfc3RhdGUg PT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SKQorLQl7CistCSAg ICBsYXN0X2RhdGEgPSBHTE9CVVNfVFJVRTsKKy0JfQorLQorLQlpZihlcnIpCistCXsKKy0JICAg IGdsb2J1c19vYmplY3RfZnJlZShlcnIpOworLQkgICAgZXJyID0gR0xPQlVTX05VTEw7CistCX0K Ky0KKy0JcHJvdG8tPm9uZXNob3RfYWN0aXZlID0gR0xPQlVTX0ZBTFNFOworLQlmYWlsdXJlID0g cHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQ7CistCWJ1ZiA9IHByb3RvLT51c2VyX2J1ZmZlcjsKKy0J b2Zmc2V0ID0gcHJvdG8tPnVzZXJfb2Zmc2V0OworLQlyZXF1ZXN0ID0gcHJvdG8tPnJlcXVlc3Q7 CistCistCWdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zaWduYWwoKTsKKy0JZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworLQorLQlkZWJ1Z19wcmludGYoMiwgKF9HVFNM KCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlY2VpdmVfY29tcGxldGUoKVxu IikpKTsKKy0JZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVjZWl2ZV9jb21wbGV0ZShyZXF1 ZXN0LAorLQkJCQkJCSAgICBidWYsCistCQkJCQkJICAgIG9mZnNldCwKKy0JCQkJCQkgICAgZmFp bHVyZSwKKy0JCQkJCQkgICAgbGFzdF9kYXRhKTsKKysgICAgICAgIGdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlcXVlc3RfdCAgICAgICAgICByZXF1ZXN0OworKyAgICAgICAgZ2xvYnVzX2Jvb2xfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZGF0YSA9IEdMT0JVU19GQUxTRTsKKysgICAg ICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlIDsKKysg ICAgICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICBidWY7CisrICAg ICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OworKyAg ICAgICAgLyoKKysgICAgICAgICAqIFJlY2VpdmVkIHRoZSByZXF1aXJlZCBtaW5pbXVtIG9mIGRh dGEgZnJvbSBjb25uZWN0aW9uLCBhbgorKyAgICAgICAgICogZXJyb3IsIG9yIHRoZSBlbmQtb2Yg ZmlsZSwgc2lnbmFsIHRoaXMgdG8gR0FTUworKyAgICAgICAgICovCisrICAgICAgICBpZihwcm90 by0+c3RhdGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9QRU5ESU5HKQorKyAg ICAgICAgeworKyAgICAgICAgICAgIHByb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVS X0hUVFBfU1RBVEVfSURMRTsKKysgICAgICAgIH0KKysgICAgICAgIGlmKHByb3RvLT5yZWN2X3N0 YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FT0YgfHwKKysgICAg ICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVD Vl9TVEFURV9FUlJPUikKKysgICAgICAgIHsKKysgICAgICAgICAgICBsYXN0X2RhdGEgPSBHTE9C VVNfVFJVRTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmKGVycikKKysgICAgICAgIHsKKysg ICAgICAgICAgICBnbG9idXNfb2JqZWN0X2ZyZWUoZXJyKTsKKysgICAgICAgICAgICBlcnIgPSBH TE9CVVNfTlVMTDsKKysgICAgICAgIH0KKysKKysgICAgICAgIHByb3RvLT5vbmVzaG90X2FjdGl2 ZSA9IEdMT0JVU19GQUxTRTsKKysgICAgICAgIGZhaWx1cmUgPSBwcm90by0+ZmFpbHVyZV9vY2N1 cnJlZDsKKysgICAgICAgIGJ1ZiA9IHByb3RvLT51c2VyX2J1ZmZlcjsKKysgICAgICAgIG9mZnNl dCA9IHByb3RvLT51c2VyX29mZnNldDsKKysgICAgICAgIHJlcXVlc3QgPSBwcm90by0+cmVxdWVz dDsKKysKKysgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zaWduYWwoKTsKKysg ICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKysKKysgICAgICAg IGRlYnVnX3ByaW50ZigyLCAoX0dUU0woImNhbGxpbmcgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJv dG9fcmVjZWl2ZV9jb21wbGV0ZSgpXG4iKSkpOworKyAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfcHJvdG9fcmVjZWl2ZV9jb21wbGV0ZShyZXF1ZXN0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9kYXRhKTsK KyAgICAgICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXluYW1l KSk7CistCXJldHVybjsKKysgICAgICAgIHJldHVybjsKKyAgICAgfQorICAgICBlbHNlCisgICAg IHsKKy0JcmVzdWx0ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX3JlYWQo cHJvdG8pOworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Jl Z2lzdGVyX3JlYWQocHJvdG8pOworICAgICB9CisgCisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKK0BAIC0xMTcyLDcgKzExNzIsNyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfcmVhZF9idWZmZXJlZF9jYWxsYmFjaygKKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX3VubG9jaygpOworICAgICBpZihlcnIpCisgICAgIHsKKy0JZ2xvYnVzX29iamVjdF9mcmVl KGVycik7CisrICAgICAgICBnbG9idXNfb2JqZWN0X2ZyZWUoZXJyKTsKKyAgICAgfQorICAgICBk ZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworICAgICBy ZXR1cm47CitAQCAtMTE4MywzNSArMTE4MywzNSBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfcmVhZF9idWZmZXJlZF9jYWxsYmFjaygKKyAgICAgcHJvdG8tPm9uZXNob3RfYWN0aXZlID0g R0xPQlVTX0ZBTFNFOworICAgICBwcm90by0+b25lc2hvdF9hY3RpdmUgPSBHTE9CVVNfRkFMU0U7 CisgCistCQkgICAgCisrCisgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9yZWdpc3Rlcl9jbG9zZShwcm90byk7CisgCisgICAgIGlmKGVycikKKyAgICAgeworLQlnbG9i dXNfb2JqZWN0X2ZyZWUoZXJyKTsKKysgICAgICAgIGdsb2J1c19vYmplY3RfZnJlZShlcnIpOwor ICAgICB9CisgCisgICAgIHsKKy0JZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90IHJlcXVl c3Q7CistCWdsb2J1c19ieXRlX3QgKmJ1ZjsKKy0JZ2xvYnVzX3NpemVfdCBvZmZzZXQ7CisrICAg ICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgcmVxdWVzdDsKKysgICAgICAgIGds b2J1c19ieXRlX3QgKmJ1ZjsKKysgICAgICAgIGdsb2J1c19zaXplX3Qgb2Zmc2V0OworIAorLQly ZXF1ZXN0ID0gcHJvdG8tPnJlcXVlc3Q7CistCWJ1ZiA9IHByb3RvLT51c2VyX2J1ZmZlcjsKKy0J b2Zmc2V0ID0gcHJvdG8tPnVzZXJfb2Zmc2V0OworKyAgICAgICAgcmVxdWVzdCA9IHByb3RvLT5y ZXF1ZXN0OworKyAgICAgICAgYnVmID0gcHJvdG8tPnVzZXJfYnVmZmVyOworKyAgICAgICAgb2Zm c2V0ID0gcHJvdG8tPnVzZXJfb2Zmc2V0OworIAorICAgICAgICAgLyogcmVnaXN0ZXIgY2xvc2Ug ZmFpbGVkLCBhY3QgYXMgdGhvdWdoIGl0IHdhcyBjbG9zZWQgKi8KKyAgICAgICAgIGlmIChyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX2Nsb3NlKHByb3RvKTsKKyAgICAgICAgIH0KKy0JZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworLQlkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJj YWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlY2VpdmVfY29tcGxldGUoKSIpKSk7 CistCWdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlY2VpdmVfY29tcGxldGUocmVxdWVzdCwK Ky0JCQkJCQkgICAgYnVmLAorLQkJCQkJCSAgICBvZmZzZXQsCistCQkJCQkJICAgIEdMT0JVU19U UlVFLAorLQkJCQkJCSAgICBHTE9CVVNfVFJVRSk7CisrICAgICAgICBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfdW5sb2NrKCk7CisrICAgICAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJj YWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlY2VpdmVfY29tcGxldGUoKSIpKSk7 CisrICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZWNlaXZlX2NvbXBsZXRlKHJl cXVlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJ1ZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTE9CVVNfVFJVRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX1RSVUUpOworICAgICB9CisgICAgIGRlYnVnX3By aW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7CisgICAgIHJldHVybjsK K0BAIC0xMjMzLDExICsxMjMzLDExIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWFk X2J1ZmZlcmVkX2NhbGxiYWNrKAorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfY2xvc2VfY2FsbGJhY2soCistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnLAor LSAgICBnbG9idXNfaW9faGFuZGxlX3QgKgkJCWhhbmRsZSwKKy0gICAgZ2xvYnVzX3Jlc3VsdF90 CQkJCXJlc3VsdCkKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjYWxsYmFja19hcmcsCisrICAgIGdsb2J1c19pb19oYW5kbGVfdCAqICAgICAgICAgICAg ICAgICAgICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdCkKKyB7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBf cmVxdWVzdF9wcm90b190ICoJCXByb3RvOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRw X3JlcXVlc3RfcHJvdG9fdCAqICAgICAgICAgcHJvdG87CisgICAgIE1ZTkFNRShnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfY2xvc2VfY2FsbGJhY2spOworIAorICAgICBkZWJ1Z19wcmludGYo MywgKF9HVFNMKCJFbnRlcmluZyAlcygpXG4iKSxteW5hbWUpKTsKK0BAIC0xMjYyLDEzICsxMjYy LDEzIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jbG9zZV9jYWxsYmFjaygKKyBzdGF0 aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Nsb3NlKAorLSAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqCQlwcm90bykKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKiAgICAgICAgIHByb3RvKQor IHsKKyAgICAgcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9E T05FOworIAorICAgICBpZihwcm90by0+ZGVzdHJveV9jYWxsZWQpCisgICAgIHsKKy0JZ2xvYnVz X2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworKyAgICAgICAgZ2xv YnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Byb3RvX2Rlc3Ryb3kocHJvdG8pOworICAgICB9Cisg ICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jbG9zaW5nLS07CisgCitAQCAtMTI4OSwy MCArMTI4OSwyMCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2UoCisgc3RhdGlj CisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVy X2Nsb3NlKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAq CQlwcm90bykKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3Qg KiAgICAgICAgIHByb3RvKQorIHsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90IHJlc3VsdDsKKyAgICAg TVlOQU1FKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZSk7CistICAg IAorKworICAgICBwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRF X0NMT1NJTkc7CisgCisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jbG9zaW5nKys7 CistICAgIAorKworICAgICBkZWJ1Z19wcmludGYoNCwoX0dUU0woIiVzKCk6IHJlZ2lzdGVyaW5n IGNsb3NlIG9uICVwXG4iKSwgbXluYW1lLCAmcHJvdG8tPmhhbmRsZSkpOworICAgICByZXN1bHQg PSBnbG9idXNfaW9fcmVnaXN0ZXJfY2xvc2UoCistCSZwcm90by0+aGFuZGxlLAorLQlnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2VfY2FsbGJhY2ssCistCXByb3RvKTsKKysgICAgICAg ICZwcm90by0+aGFuZGxlLAorKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Ns b3NlX2NhbGxiYWNrLAorKyAgICAgICAgcHJvdG8pOworIAorICAgICByZXR1cm4gcmVzdWx0Owor IH0KK0BAIC0xMzIwLDEyICsxMzIwLDEyIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9y ZWdpc3Rlcl9jbG9zZSgKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX2xpc3RlbmVyX2Nsb3NlX2NhbGxiYWNrKAorLSAgICB2b2lkICoJCQkJY2FsbGJhY2tfYXJn LAorLSAgICBnbG9idXNfaW9faGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBnbG9idXNfcmVzdWx0 X3QJCQlyZXN1bHQpCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh bGxiYWNrX2FyZywKKysgICAgZ2xvYnVzX2lvX2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFu ZGxlLAorKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQpCisg eworICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX3Byb3RvX3QgKgorLQkJ CQkJcHJvdG87CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rv OworICAgICBNWU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX2Nsb3Nl X2NhbGxiYWNrKTsKKyAKKyAgICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgiRW50ZXJpbmcgJXMo KVxuIiksbXluYW1lKSk7CitAQCAtMTMzNCw3ICsxMzM0LDcgQEAgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX2xpc3RlbmVyX2Nsb3NlX2NhbGxiYWNrKAorICAgICBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfbG9jaygpOworICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbGlz dGVuZXJfY2xvc2UocHJvdG8pOworICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5s b2NrKCk7CistICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXlu YW1lKSk7ICAgIAorKyAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nICVzKClcbiIp LG15bmFtZSkpOworIH0KKyAvKiBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJf Y2xvc2VfY2FsbGJhY2soKSAqLworIAorQEAgLTEzNTYsNyArMTM1Niw3IEBAIGdsb2J1c19sX2dh c3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5lcl9jbG9zZSgKKyAKKyAgICAgaWYocHJvdG8tPmRlc3Ry b3lfY2FsbGVkKQorICAgICB7CistCWdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5l cl9wcm90b19kZXN0cm95KHByb3RvKTsKKysgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9saXN0ZW5lcl9wcm90b19kZXN0cm95KHByb3RvKTsKKyAgICAgfQorICAgICBnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2luZy0tOworIAorQEAgLTEzNzUsMTkgKzEzNzUsMTkg QEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX2xpc3RlbmVyX2Nsb3NlKAor IAorICAgICBkZWJ1Z19wcmludGYoNCwoX0dUU0woIiVzKCk6IHJlZ2lzdGVyaW5nIGNsb3NlIG9u ICVwXG4iKSwgbXluYW1lLCAmcHJvdG8tPmhhbmRsZSkpOworICAgICByZXN1bHQgPSBnbG9idXNf aW9fcmVnaXN0ZXJfY2xvc2UoCistCSZwcm90by0+aGFuZGxlLAorLQlnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfbGlzdGVuZXJfY2xvc2VfY2FsbGJhY2ssCistCXByb3RvKTsKKysgICAgICAg ICZwcm90by0+aGFuZGxlLAorKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xp c3RlbmVyX2Nsb3NlX2NhbGxiYWNrLAorKyAgICAgICAgcHJvdG8pOworIAorICAgICBnbG9idXNf YXNzZXJ0KHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyk7CisgCisgICAgIGlmKHJlc3VsdCAhPSBH TE9CVVNfU1VDQ0VTUykKKyAgICAgeworLQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbGlz dGVuZXJfY2xvc2UocHJvdG8pOworKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X2xpc3RlbmVyX2Nsb3NlKHByb3RvKTsKKyAgICAgfQorIH0KKyAvKiBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfcmVnaXN0ZXJfbGlzdGVuZXJfY2xvc2UoKSAqLworLSAgCisrCisgLyoKKyAg KiBGdW5jdGlvbjogZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX3Byb3RvX2Rl c3Ryb3koKQorICAqCitAQCAtMTQwMSw3ICsxNDAxLDcgQEAgc3RhdGljCisgdm9pZAorIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5lcl9wcm90b19kZXN0cm95KAorICAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX3Byb3RvX3QgKgorLQkJCQkJcHJvdG8pCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvKQorIHsKKyAgICAg Z2xvYnVzX2ZyZWUocHJvdG8pOworIH0KK0BAIC0xNDE5LDEwICsxNDE5LDEwIEBAIGdsb2J1c19s X2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5lcl9wcm90b19kZXN0cm95KAorIHN0YXRpYworIHZv aWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZGVzdHJveSgKKy0gICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVxdWVzdF9wcm90b190ICoJcHJvdG8sCistICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCkKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF9wcm90b190ICogICAgICBwcm90bywKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKgkJbmV3X3Byb3RvOworKyAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqICAgICAgICAgbmV3X3Byb3RvOworICAgICBN WU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Rlc3Ryb3kpOworIAorICAgICBkZWJ1 Z19wcmludGYoMSwgKF9HVFNMKCJlbnRlcmluZyAlcygpXG4iKSxteW5hbWUpKTsKK0BAIC0xNDM0 LDExICsxNDM0LDExIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9kZXN0cm95KAorICAg ICAgICBuZXdfcHJvdG8tPnN0YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVf UkVTUE9ORElORyB8fAorICAgICAgICBuZXdfcHJvdG8tPnN0YXRlID09IEdMT0JVU19HQVNTX1RS QU5TRkVSX0hUVFBfU1RBVEVfREVOSUVEKQorICAgICB7CistCW5ld19wcm90by0+ZGVzdHJveV9j YWxsZWQ9R0xPQlVTX1RSVUU7CisrICAgICAgICBuZXdfcHJvdG8tPmRlc3Ryb3lfY2FsbGVkPUdM T0JVU19UUlVFOworICAgICB9CisgICAgIGVsc2UgaWYobmV3X3Byb3RvLT5zdGF0ZSA9PSBHTE9C VVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX0RPTkUpCisgICAgIHsKKy0JZ2xvYnVzX2xfZ2Fz c190cmFuc2Zlcl9odHRwX3Byb3RvX2Rlc3Ryb3kobmV3X3Byb3RvKTsKKysgICAgICAgIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wcm90b19kZXN0cm95KG5ld19wcm90byk7CisgICAgIH0K KyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworICAgICBkZWJ1Z19w cmludGYoMSwgKF9HVFNMKCJleGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworQEAgLTE0NTcsOCAr MTQ1Nyw4IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9kZXN0cm95KAorIHN0YXRpYwor IHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJfZGVzdHJveSgKKy0g ICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfcHJvdG9fdCAqCXByb3RvLAorLSAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90CQlsaXN0ZW5lcikKKysgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfbGlzdGVuZXJfcHJvdG9fdCAqICAgICBwcm90bywKKysgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfbGlzdGVuZXJfdCAgICAgICAgICAgICBsaXN0ZW5lcikKKyB7CisgICAgIGds b2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJfcHJvdG9fdCAqbmV3X3Byb3RvOworICAg ICBNWU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX2Rlc3Ryb3kpOwor QEAgLTE0NjksMTEgKzE0NjksMTEgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3Rl bmVyX2Rlc3Ryb3koCisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9sb2NrKCk7Cisg ICAgIGlmKG5ld19wcm90by0+c3RhdGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNU RU5FUl9DTE9TRUQpCisgICAgIHsKKy0JbmV3X3Byb3RvLT5kZXN0cm95X2NhbGxlZD1HTE9CVVNf VFJVRTsKKysgICAgICAgIG5ld19wcm90by0+ZGVzdHJveV9jYWxsZWQ9R0xPQlVTX1RSVUU7Cisg ICAgIH0KKyAgICAgZWxzZQorICAgICB7CistCWdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9s aXN0ZW5lcl9wcm90b19kZXN0cm95KG5ld19wcm90byk7CisrICAgICAgICBnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJfcHJvdG9fZGVzdHJveShuZXdfcHJvdG8pOworICAgICB9 CisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKyAgICAgZGVidWdf cHJpbnRmKDEsIChfR1RTTCgiZXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsKK0BAIC0xNDkyLDEx ICsxNDkyLDExIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5lcl9kZXN0cm95 KAorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuKAor LSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl9wcm90b190ICoJcHJvdG8sCistICAg IGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QJCWxpc3RlbmVyKQorKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9saXN0ZW5lcl9wcm90b190ICogICAgIHByb3RvLAorKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90ICAgICAgICAgICAgIGxpc3RlbmVyKQorIHsKKyAgICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5lcl9wcm90b190ICpuZXdfcHJvdG87Cist ICAgIGdsb2J1c19yZXN1bHRfdAkJCQlyZXN1bHQ7CisrICAgIGdsb2J1c19yZXN1bHRfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBnbG9idXNfcmVsdGltZV90ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5X3RpbWU7CisgICAgIE1ZTkFNRShnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuKTsKKyAKK0BAIC0xNTA2LDI4ICsxNTA2LDI4IEBA IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW4oCisgICAgIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9sb2NrKCk7CisgCisgICAgIGRlYnVnX3ByaW50Zig0LChfR1RTTCgiJXMo KTogcmVnaXN0ZXJpbmcgbGlzdGVuIG9uICVwXG4iKSwKKy0JCSAgICBteW5hbWUsCistCQkgICAg Jm5ld19wcm90by0+aGFuZGxlKSk7CisrICAgICAgICAgICAgICAgICAgICBteW5hbWUsCisrICAg ICAgICAgICAgICAgICAgICAmbmV3X3Byb3RvLT5oYW5kbGUpKTsKKyAgICAgcmVzdWx0ID0gZ2xv YnVzX2lvX3RjcF9yZWdpc3Rlcl9saXN0ZW4oCistCSZuZXdfcHJvdG8tPmhhbmRsZSwKKy0JZ2xv YnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3Rlbl9jYWxsYmFjaywKKy0JKHZvaWQgKikgbmV3 X3Byb3RvKTsKKysgICAgICAgICZuZXdfcHJvdG8tPmhhbmRsZSwKKysgICAgICAgIGdsb2J1c19s X2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5fY2FsbGJhY2ssCisrICAgICAgICAodm9pZCAqKSBu ZXdfcHJvdG8pOworIAorICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsK KyAgICAgICAgIEdsb2J1c1RpbWVSZWx0aW1lU2V0KGRlbGF5X3RpbWUsIDAsIDApOworLQlkZWJ1 Z19wcmludGYoNCwoX0dUU0woIiVzKCk6IHJlZ2lzdGVyaW5nIG9uZXNob3QgYmVjYXVzZSBsaXN0 ZW4gZmFpbGVkXG4iKSwKKy0JCSAgICBteW5hbWUpKTsKKy0JZ2xvYnVzX2NhbGxiYWNrX3JlZ2lz dGVyX29uZXNob3QoCistCSAgICBHTE9CVVNfTlVMTCwKKy0JICAgICZkZWxheV90aW1lLAorLQkg ICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NhbGxiYWNrX2xpc3Rlbl9jYWxsYmFjaywK Ky0JICAgICh2b2lkICopIG5ld19wcm90byk7CistCQorKyAgICAgICAgZGVidWdfcHJpbnRmKDQs KF9HVFNMKCIlcygpOiByZWdpc3RlcmluZyBvbmVzaG90IGJlY2F1c2UgbGlzdGVuIGZhaWxlZFxu IiksCisrICAgICAgICAgICAgICAgICAgICBteW5hbWUpKTsKKysgICAgICAgIGdsb2J1c19jYWxs YmFja19yZWdpc3Rlcl9vbmVzaG90KAorKyAgICAgICAgICAgIEdMT0JVU19OVUxMLAorKyAgICAg ICAgICAgICZkZWxheV90aW1lLAorKyAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9jYWxsYmFja19saXN0ZW5fY2FsbGJhY2ssCisrICAgICAgICAgICAgKHZvaWQgKikgbmV3 X3Byb3RvKTsKKysKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JbmV3X3Byb3RvLT5zdGF0 ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfTElTVEVOSU5HOworKyAgICAg ICAgbmV3X3Byb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJf TElTVEVOSU5HOworICAgICB9CisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxv Y2soKTsKKyAgICAgZGVidWdfcHJpbnRmKDEsIChfR1RTTCgiZXhpdGluZyAlcygpXG4iKSxteW5h bWUpKTsKK0BAIC0xNTM3LDE1ICsxNTM3LDE1IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9saXN0ZW4oCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9s aXN0ZW5fY2FsbGJhY2soCistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnLAorLSAgICBnbG9i dXNfaW9faGFuZGxlX3QgKgkJCWhhbmRsZSwKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3Vs dCkKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxs YmFja19hcmcsCisrICAgIGdsb2J1c19pb19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlLAorKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdCkKKyB7CisgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJf cHJvdG9fdCAqcHJvdG87CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QJCWxp c3RlbmVyOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90ICAgICAgICAgICAg IGxpc3RlbmVyOworICAgICBNWU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3Rl bl9jYWxsYmFjayk7CistICAgIAorLSAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFbnRlcmlu ZyAlcygpXG4iKSxteW5hbWUpKTsgICAgCisrCisrICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0wo IkVudGVyaW5nICVzKClcbiIpLG15bmFtZSkpOworIAorICAgICBwcm90byA9IChnbG9idXNfZ2Fz c190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX3Byb3RvX3QgKikgY2FsbGJhY2tfYXJnOworICAgICBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbG9jaygpOworQEAgLTE1NTMsMTkgKzE1NTMsMTkg QEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3Rlbl9jYWxsYmFjaygKKyAgICAgc3dp dGNoKHByb3RvLT5zdGF0ZSkKKyAgICAgeworICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNG RVJfSFRUUF9MSVNURU5FUl9MSVNURU5JTkc6CistCXByb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNT X1RSQU5TRkVSX0hUVFBfTElTVEVORVJfUkVBRFk7CistCWJyZWFrOworKyAgICAgICAgcHJvdG8t PnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5FUl9SRUFEWTsKKysgICAg ICAgIGJyZWFrOworICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5F Ul9DTE9TSU5HMToKKyAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVO RVJfQ0xPU0VEOgorLQlicmVhazsKKysgICAgICAgIGJyZWFrOworICAgICAgIGNhc2UgR0xPQlVT X0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5FUl9TVEFSVElORzoKKyAgICAgICBjYXNlIEdMT0JV U19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQUNDRVBUSU5HOgorICAgICAgIGNhc2UgR0xP QlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5FUl9SRUFEWToKKyAgICAgICBjYXNlIEdMT0JV U19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQ0xPU0lORzI6CistCWdsb2J1c19hc3NlcnQo cHJvdG8tPnN0YXRlICE9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfU1RBUlRJ TkcpOworLQlnbG9idXNfYXNzZXJ0KHByb3RvLT5zdGF0ZSAhPSBHTE9CVVNfR0FTU19UUkFOU0ZF Ul9IVFRQX0xJU1RFTkVSX0FDQ0VQVElORyk7CistCWdsb2J1c19hc3NlcnQocHJvdG8tPnN0YXRl ICE9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfUkVBRFkpOworLQlnbG9idXNf YXNzZXJ0KHByb3RvLT5zdGF0ZSAhPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVS X0NMT1NJTkcyKTsKKysgICAgICAgIGdsb2J1c19hc3NlcnQocHJvdG8tPnN0YXRlICE9IEdMT0JV U19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfU1RBUlRJTkcpOworKyAgICAgICAgZ2xvYnVz X2Fzc2VydChwcm90by0+c3RhdGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5F Ul9BQ0NFUFRJTkcpOworKyAgICAgICAgZ2xvYnVzX2Fzc2VydChwcm90by0+c3RhdGUgIT0gR0xP QlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5FUl9SRUFEWSk7CisrICAgICAgICBnbG9idXNf YXNzZXJ0KHByb3RvLT5zdGF0ZSAhPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVS X0NMT1NJTkcyKTsKKyAgICAgfQorIAorICAgICBsaXN0ZW5lciA9IHByb3RvLT5saXN0ZW5lcjsK K0BAIC0xNTgwLDEzICsxNTgwLDEzIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0 ZW5fY2FsbGJhY2soCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9hY2NlcHRfY2FsbGJhY2soCistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnLAorLSAgICBn bG9idXNfaW9faGFuZGxlX3QgKgkJCWhhbmRsZSwKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJl c3VsdCkKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj YWxsYmFja19hcmcsCisrICAgIGdsb2J1c19pb19oYW5kbGVfdCAqICAgICAgICAgICAgICAgICAg ICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc3VsdCkKKyB7CisgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVu ZXJfcHJvdG9fdCAqbDsKKyAgICAgTVlOQU1FKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9h Y2NlcHRfY2FsbGJhY2spOworLSAgICAKKysKKyAgICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgi RW50ZXJpbmcgJXMoKVxuIiksbXluYW1lKSk7CisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9sb2NrKCk7CisgCitAQCAtMTU5Nyw4NCArMTU5Nyw4NCBAQCBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfYWNjZXB0X2NhbGxiYWNrKAorICAgICBzd2l0Y2gobC0+c3RhdGUpCisgICAg IHsKKyAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQUNDRVBU SU5HOgorLQlsLT5yZXF1ZXN0LT5yZXNwb25zZV9idWZmZXIgPSBnbG9idXNfbWFsbG9jKEdMT0JV U19MX0dBU1NfUkVTUE9OU0VfTEVOICoKKy0JCQkJCQkJc2l6ZW9mKGdsb2J1c19ieXRlX3QpKTsK Ky0JbC0+cmVxdWVzdC0+cmVzcG9uc2VfYnVmbGVuID0gR0xPQlVTX0xfR0FTU19SRVNQT05TRV9M RU47CistCWwtPnJlcXVlc3QtPnJlc3BvbnNlX29mZnNldCA9IDA7CistCWwtPnJlcXVlc3QtPnBh cnNlZF9vZmZzZXQgPSAwOworLQorLQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsK Ky0JICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKy0JICAgIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X2NhbGxiYWNrKAorLQkJbCwKKy0JCSZsLT5y ZXF1ZXN0LT5oYW5kbGUsCistCQlyZXN1bHQsCistCQlsLT5yZXF1ZXN0LT5yZXNwb25zZV9idWZm ZXIsCistCQkwKTsKKy0gICAgICAgICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5n IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9hY2NlcHRfY2FsbGJhY2soKVxuIikpKTsgICAg ICAgIAorLQkgICAgcmV0dXJuOworLQl9CistCWVsc2UKKy0JeworKyAgICAgICAgbC0+cmVxdWVz dC0+cmVzcG9uc2VfYnVmZmVyID0gZ2xvYnVzX21hbGxvYyhHTE9CVVNfTF9HQVNTX1JFU1BPTlNF X0xFTiAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoZ2xvYnVzX2J5dGVfdCkpOworKyAgICAgICAgbC0+cmVxdWVzdC0+cmVz cG9uc2VfYnVmbGVuID0gR0xPQlVTX0xfR0FTU19SRVNQT05TRV9MRU47CisrICAgICAgICBsLT5y ZXF1ZXN0LT5yZXNwb25zZV9vZmZzZXQgPSAwOworKyAgICAgICAgbC0+cmVxdWVzdC0+cGFyc2Vk X29mZnNldCA9IDA7CisrCisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9j aygpOworKyAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X2Nh bGxiYWNrKAorKyAgICAgICAgICAgICAgICBsLAorKyAgICAgICAgICAgICAgICAmbC0+cmVxdWVz dC0+aGFuZGxlLAorKyAgICAgICAgICAgICAgICByZXN1bHQsCisrICAgICAgICAgICAgICAgIGwt PnJlcXVlc3QtPnJlc3BvbnNlX2J1ZmZlciwKKysgICAgICAgICAgICAgICAgMCk7CisrICAgICAg ICAgICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyBnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfYWNjZXB0X2NhbGxiYWNrKClcbiIpKSk7CisrICAgICAgICAgICAgcmV0dXJuOwor KyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworICAgICAgICAgICAgIGRlYnVn X3ByaW50Zig0LCAoX0dUU0woIiVzKCk6IFJlZ2lzdGVyaW5nIHJlYWQgb24gJXBcbiIpLAorLQkJ CSAgICAgbXluYW1lLAorLQkJCSAgICAgJmwtPnJlcXVlc3QtPmhhbmRsZSkpOyAgICAgICAgCist CSAgICBnbG9idXNfaW9fcmVnaXN0ZXJfcmVhZCgmbC0+cmVxdWVzdC0+aGFuZGxlLAorLQkJCQkg ICAgbC0+cmVxdWVzdC0+cmVzcG9uc2VfYnVmZmVyLAorLQkJCQkgICAgbC0+cmVxdWVzdC0+cmVz cG9uc2VfYnVmbGVuLAorLQkJCQkgICAgMSwKKy0JCQkJICAgIGdsb2J1c19sX2dhc3NfdHJhbnNm ZXJfaHR0cF9yZXF1ZXN0X2NhbGxiYWNrLAorLQkJCQkgICAgbCk7CistCX0KKy0JYnJlYWs7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmbC0+cmVxdWVzdC0+aGFuZGxlKSk7CisrICAgICAgICAgICAgZ2xvYnVzX2lv X3JlZ2lzdGVyX3JlYWQoJmwtPnJlcXVlc3QtPmhhbmRsZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsLT5yZXF1ZXN0LT5yZXNwb25zZV9idWZmZXIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbC0+cmVxdWVzdC0+cmVzcG9uc2VfYnVmbGVuLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3Rf Y2FsbGJhY2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCk7CisrICAg ICAgICB9CisrICAgICAgICBicmVhazsKKyAKKyAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5T RkVSX0hUVFBfTElTVEVORVJfQ0xPU0lORzI6CisgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFO U0ZFUl9IVFRQX0xJU1RFTkVSX0NMT1NFRDoKKy0JZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X3VubG9jaygpOworLQlnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19uZXdfbGlzdGVuZXJfcmVx dWVzdChsLT5saXN0ZW5lciwKKy0JCQkJCQkJbC0+cmVxdWVzdC0+cmVxdWVzdCwKKy0JCQkJCQkJ R0xPQlVTX05VTEwpOworLQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbG9jaygpOworLQkv KiBzaG91bGQgZGVzdHJveSB0aGUgcHJvdG8tPnJlcXVlc3QgaGVyZT8gKi8KKy0JYnJlYWs7Cisr ICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisrICAgICAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19uZXdfbGlzdGVuZXJfcmVxdWVzdChsLT5saXN0ZW5l ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGwtPnJlcXVlc3QtPnJlcXVlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCk7CisrICAgICAgICBnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfbG9jaygpOworKyAgICAgICAgLyogc2hvdWxkIGRlc3Ryb3kg dGhlIHByb3RvLT5yZXF1ZXN0IGhlcmU/ICovCisrICAgICAgICBicmVhazsKKyAgICAgICBjYXNl IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfU1RBUlRJTkc6CisgICAgICAgY2Fz ZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVSX0xJU1RFTklORzoKKyAgICAgICBj YXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfUkVBRFk6CisgICAgICAgY2Fz ZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVSX0NMT1NJTkcxOgorLQlnbG9idXNf YXNzZXJ0KGwtPnN0YXRlICE9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfU1RB UlRJTkcpOworLQlnbG9idXNfYXNzZXJ0KGwtPnN0YXRlICE9IEdMT0JVU19HQVNTX1RSQU5TRkVS X0hUVFBfTElTVEVORVJfTElTVEVOSU5HKTsKKy0JZ2xvYnVzX2Fzc2VydChsLT5zdGF0ZSAhPSBH TE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVSX1JFQURZKTsKKy0JZ2xvYnVzX2Fzc2Vy dChsLT5zdGF0ZSAhPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVSX0NMT1NJTkcx KTsKKysgICAgICAgIGdsb2J1c19hc3NlcnQobC0+c3RhdGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNG RVJfSFRUUF9MSVNURU5FUl9TVEFSVElORyk7CisrICAgICAgICBnbG9idXNfYXNzZXJ0KGwtPnN0 YXRlICE9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfTElTVEVOSU5HKTsKKysg ICAgICAgIGdsb2J1c19hc3NlcnQobC0+c3RhdGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRU UF9MSVNURU5FUl9SRUFEWSk7CisrICAgICAgICBnbG9idXNfYXNzZXJ0KGwtPnN0YXRlICE9IEdM T0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQ0xPU0lORzEpOworICAgICB9CisgICAg IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKy0gICAgZGVidWdfcHJpbnRm KDMsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSwgbXluYW1lKSk7ICAgICAgICAKKysgICAgZGVi dWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSwgbXluYW1lKSk7CisgfQorIC8q IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9hY2NlcHRfY2FsbGJhY2soKSAqLworIAorIHN0 YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9yZWZlcigK Ky0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9wcm90b190ICoJcnByb3RvLAorLSAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QpCisrICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAqICAgICAgcnByb3RvLAorKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QpCisgeworLSAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqCXByb3RvOworLSAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9yZWZlcnJhbF90IAkJcmVmZXJyYWw7CistICAgIGludAkJCQkJ CXJjOworLSAgICBjaGFyICoJCQkJCXJlZmVycmFsX3N0cmluZzsKKy0gICAgZ2xvYnVzX3NpemVf dAkJCQlyZWZlcnJhbF9jb3VudDsKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlib2R5X2NvdW50PTA7 IC8qIDopICovCistICAgIGdsb2J1c19zaXplX3QJCQkJb2Zmc2V0OworLSAgICBnbG9idXNfc2l6 ZV90CQkJCXg7CistICAgIGdsb2J1c19zaXplX3QJCQkJaTsKKy0gICAgZ2xvYnVzX3NpemVfdAkJ CQlkaWdpdHMgPSAwOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJv dG9fdCAqIHByb3RvOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZWZlcnJhbF90ICAgICAg ICAgICAgIHJlZmVycmFsOworKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJjOworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlZmVycmFsX3N0cmluZzsKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWZlcnJhbF9jb3VudDsKKysgICAgZ2xvYnVzX3NpemVfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5X2NvdW50PTA7IC8qIDopICovCisrICAgIGds b2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OworKyAgICBn bG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg7CisrICAgIGdsb2J1 c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTsKKysgICAgZ2xvYnVzX3Np emVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSAwOworICAgICBNWU5B TUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcmVmZXIpOworLSAgICAKKysK KyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xvY2soKTsKKyAgICAgcHJvdG8gPSAo Z2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKikgcnByb3RvOworIAor ICAgICByYyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X3JlZmVycmFsKHJlcXVl c3QsCistCQkJCQkJICAgJnJlZmVycmFsKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmcmVmZXJyYWwpOworIAorICAgICAvKiBIVFRQLzEuMSAz MDIgRG9jdW1lbnQgTW92ZWQgQ1JMRgorICAgICAgKiBMb2NhdGlvbjogcmVmZXJyYWwudXJsWzBd IENSTEYKK0BAIC0xNzAxLDE3ICsxNzAxLDE3IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9yZXF1ZXN0X3JlZmVyKAorICAgICBib2R5X2NvdW50ICs9IHN0cmxlbihHTE9CVVNfTF9IVE1M X1JFRkVSUkFMX0JPRFlfVEFJTCk7CisgICAgIGZvcihpID0gMCA7IGkgPCByZWZlcnJhbC5jb3Vu dDsgaSsrKQorICAgICB7CistCWJvZHlfY291bnQgKz0gc3RybGVuKEdMT0JVU19MX0hUTUxfSFJF Rik7CistCWJvZHlfY291bnQgKz0gc3RybGVuKHJlZmVycmFsLnVybFtpXSk7CistCWJvZHlfY291 bnQgKz0gc3RybGVuKHJlZmVycmFsLnVybFtpXSk7CisrICAgICAgICBib2R5X2NvdW50ICs9IHN0 cmxlbihHTE9CVVNfTF9IVE1MX0hSRUYpOworKyAgICAgICAgYm9keV9jb3VudCArPSBzdHJsZW4o cmVmZXJyYWwudXJsW2ldKTsKKysgICAgICAgIGJvZHlfY291bnQgKz0gc3RybGVuKHJlZmVycmFs LnVybFtpXSk7CisgICAgIH0KKyAKKyAgICAgLyogY291bnQgdGhlIG51bWJlciBvZiBkZWNpbWFs IGRpZ2l0cyBpbiB0aGUgYm9keSAqLworICAgICB4PWJvZHlfY291bnQ7CisgICAgIGRvCisgICAg IHsKKy0JZGlnaXRzKys7CistCXggLz0gMTA7CisrICAgICAgICBkaWdpdHMrKzsKKysgICAgICAg IHggLz0gMTA7CisgICAgIH0gd2hpbGUoeCA+IDApOworIAorICAgICByZWZlcnJhbF9jb3VudCAr PSBkaWdpdHM7CitAQCAtMTcxOSw0MyArMTcxOSw0MyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVy X2h0dHBfcmVxdWVzdF9yZWZlcigKKyAgICAgcmVmZXJyYWxfc3RyaW5nID0gZ2xvYnVzX21hbGxv YyhyZWZlcnJhbF9jb3VudCArIGJvZHlfY291bnQpOworIAorICAgICBvZmZzZXQgPSBzcHJpbnRm KHJlZmVycmFsX3N0cmluZywKKy0JCSAgICAgR0xPQlVTX0xfUkVGRVJfUkVTUE9OU0UpOworKyAg ICAgICAgICAgICAgICAgICAgIEdMT0JVU19MX1JFRkVSX1JFU1BPTlNFKTsKKyAgICAgb2Zmc2V0 ICs9IHNwcmludGYocmVmZXJyYWxfc3RyaW5nICsgb2Zmc2V0LAorLQkJICAgICAgR0xPQlVTX0xf TE9DQVRJT05fSEVBREVSLAorLQkJICAgICAgcmVmZXJyYWwudXJsWzBdKTsKKysgICAgICAgICAg ICAgICAgICAgICAgR0xPQlVTX0xfTE9DQVRJT05fSEVBREVSLAorKyAgICAgICAgICAgICAgICAg ICAgICByZWZlcnJhbC51cmxbMF0pOworIAorICAgICBvZmZzZXQgKz0gc3ByaW50ZihyZWZlcnJh bF9zdHJpbmcgKyBvZmZzZXQsCistCQkgICAgICBHTE9CVVNfTF9IVE1MX0hFQURFUik7CisrICAg ICAgICAgICAgICAgICAgICAgIEdMT0JVU19MX0hUTUxfSEVBREVSKTsKKyAgICAgb2Zmc2V0ICs9 IHNwcmludGYocmVmZXJyYWxfc3RyaW5nICsgb2Zmc2V0LAorLQkJICAgICAgR0xPQlVTX0xfQ09O VEVOVF9MRU5HVEhfSEVBREVSLAorLQkJICAgICAgYm9keV9jb3VudCk7CisrICAgICAgICAgICAg ICAgICAgICAgIEdMT0JVU19MX0NPTlRFTlRfTEVOR1RIX0hFQURFUiwKKysgICAgICAgICAgICAg ICAgICAgICAgYm9keV9jb3VudCk7CisgICAgIG9mZnNldCArPSBzcHJpbnRmKHJlZmVycmFsX3N0 cmluZyArIG9mZnNldCwKKy0JCSAgICAgIENSTEYpOworKyAgICAgICAgICAgICAgICAgICAgICBD UkxGKTsKKyAKKyAgICAgb2Zmc2V0ICs9IHNwcmludGYocmVmZXJyYWxfc3RyaW5nICsgb2Zmc2V0 LAorLQkJICAgICAgR0xPQlVTX0xfSFRNTF9SRUZFUlJBTF9CT0RZX0hFQUQpOworKyAgICAgICAg ICAgICAgICAgICAgICBHTE9CVVNfTF9IVE1MX1JFRkVSUkFMX0JPRFlfSEVBRCk7CisgICAgIGZv cihpID0gMCA7IGkgPCByZWZlcnJhbC5jb3VudDsgaSsrKQorICAgICB7CistCW9mZnNldCArPSBz cHJpbnRmKHJlZmVycmFsX3N0cmluZyArIG9mZnNldCwKKy0JCQkgIEdMT0JVU19MX0hUTUxfSFJF RiwKKy0JCQkgIHJlZmVycmFsLnVybFtpXSwKKy0JCQkgIHJlZmVycmFsLnVybFtpXSk7CisrICAg ICAgICBvZmZzZXQgKz0gc3ByaW50ZihyZWZlcnJhbF9zdHJpbmcgKyBvZmZzZXQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9IVE1MX0hSRUYsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICByZWZlcnJhbC51cmxbaV0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWZlcnJhbC51cmxbaV0pOworICAgICB9CisgICAgIG9mZnNldCArPSBzcHJpbnRmKHJlZmVycmFs X3N0cmluZyArIG9mZnNldCwKKy0JCSAgICAgIEdMT0JVU19MX0hUTUxfUkVGRVJSQUxfQk9EWV9U QUlMKTsKKysgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfSFRNTF9SRUZFUlJBTF9CT0RZ X1RBSUwpOworIAorICAgICBwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQ X1NUQVRFX1JFRkVSUkVEOworIAorICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZWZlcnJhbF9k ZXN0cm95KCZyZWZlcnJhbCk7CisgCisgICAgIGRlYnVnX3ByaW50Zig0LCAoX0dUU0woIiVzKCk6 IFJlZ2lzdGVyaW5nIHdyaXRlIG9uICVwXG4iKSwKKy0JCSAgICAgbXluYW1lLAorLQkJICAgICAm cHJvdG8tPmhhbmRsZSkpOyAgICAgICAgCisrICAgICAgICAgICAgICAgICAgICAgbXluYW1lLAor KyAgICAgICAgICAgICAgICAgICAgICZwcm90by0+aGFuZGxlKSk7CisgICAgIGdsb2J1c19pb19y ZWdpc3Rlcl93cml0ZSgmcHJvdG8tPmhhbmRsZSwKKy0JCQkgICAgIChnbG9idXNfYnl0ZV90ICop IHJlZmVycmFsX3N0cmluZywKKy0JCQkgICAgIHN0cmxlbihyZWZlcnJhbF9zdHJpbmcpLAorLQkJ CSAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3dyaXRlX3Jlc3BvbnNlLAorLQkJCSAg ICAgcHJvdG8pOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsb2J1c19ieXRlX3Qg KikgcmVmZXJyYWxfc3RyaW5nLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVu KHJlZmVycmFsX3N0cmluZyksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGVfcmVzcG9uc2UsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcm90byk7CisgCisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91 bmxvY2soKTsKKyB9CitAQCAtMTc2NCwyMCArMTc2NCwyMCBAQCBnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfcmVxdWVzdF9yZWZlcigKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190 cmFuc2Zlcl9odHRwX3JlcXVlc3RfZGVueSgKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF9wcm90b190ICoJcnByb3RvLAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 X3QJCXJlcXVlc3QpCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAq ICAgICAgcnByb3RvLAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAg ICAgICAgIHJlcXVlc3QpCisgeworLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVl c3RfcHJvdG9fdCAqCXByb3RvOworLSAgICBjaGFyICoJCQkJCWRlbnlfc3RyaW5nOworLSAgICBn bG9idXNfc2l6ZV90CQkJCWRlbnlfY291bnQ7CistICAgIGdsb2J1c19zaXplX3QJCQkJYm9keV9j b3VudD0wOyAvKiA6KSAqLworLSAgICBnbG9idXNfc2l6ZV90CQkJCW9mZnNldDsKKy0gICAgZ2xv YnVzX3NpemVfdAkJCQl4OworLSAgICBnbG9idXNfc2l6ZV90CQkJCWRpZ2l0cyA9IDA7CistICAg IGludAkJCQkJCXJlYXNvbjsKKy0gICAgY2hhciAqCQkJCQltZXNzYWdlOworKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqIHByb3RvOworKyAgICBjaGFyICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbnlfc3RyaW5nOworKyAgICBn bG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbnlfY291bnQ7Cisr ICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keV9jb3Vu dD0wOyAvKiA6KSAqLworKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mZnNldDsKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB4OworKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRpZ2l0cyA9IDA7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVhc29uOworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1lc3NhZ2U7CisgICAgIE1ZTkFNRShnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfcmVxdWVzdF9kZW55KTsKKy0gICAgCisrCisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9sb2NrKCk7CisgICAgIHByb3RvID0gKGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVx dWVzdF9wcm90b190ICopIHJwcm90bzsKKyAKK0BAIC0xNzg2LDE2ICsxNzg2LDE2IEBAIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X2RlbnkoCisgICAgIGlmKHJlYXNvbiA8IDQw MCB8fAorICAgICAgICByZWFzb24gPj0gNjAwKQorICAgICB7CistCXJlYXNvbiA9IDUwMDsKKy0J bWVzc2FnZSA9IGdsb2J1c19saWJjX3N0cmR1cChHTE9CVVNfTF9ERUZBVUxUX0RFTklBTF9NRVNT QUdFKTsKKysgICAgICAgIHJlYXNvbiA9IDUwMDsKKysgICAgICAgIG1lc3NhZ2UgPSBnbG9idXNf bGliY19zdHJkdXAoR0xPQlVTX0xfREVGQVVMVF9ERU5JQUxfTUVTU0FHRSk7CisgICAgIH0KKyAg ICAgZWxzZQorICAgICB7CistCW1lc3NhZ2UgPSBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 X2dldF9kZW5pYWxfbWVzc2FnZShyZXF1ZXN0KTsKKy0JaWYobWVzc2FnZSA9PSBHTE9CVVNfTlVM TCkKKy0JeworLQkgICAgbWVzc2FnZSA9IGdsb2J1c19saWJjX3N0cmR1cChHTE9CVVNfTF9ERUZB VUxUX0RFTklBTF9NRVNTQUdFKTsKKy0JfQorKyAgICAgICAgbWVzc2FnZSA9IGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3RfZ2V0X2RlbmlhbF9tZXNzYWdlKHJlcXVlc3QpOworKyAgICAgICAg aWYobWVzc2FnZSA9PSBHTE9CVVNfTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBtZXNz YWdlID0gZ2xvYnVzX2xpYmNfc3RyZHVwKEdMT0JVU19MX0RFRkFVTFRfREVOSUFMX01FU1NBR0Up OworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIC8qIEhUVFAvMS4xICVkICVzIENSTEYKK0BA IC0xODIyLDggKzE4MjIsOCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9k ZW55KAorICAgICB4PWJvZHlfY291bnQ7CisgICAgIGRvCisgICAgIHsKKy0JZGlnaXRzKys7Cist CXggLz0gMTA7CisrICAgICAgICBkaWdpdHMrKzsKKysgICAgICAgIHggLz0gMTA7CisgICAgIH0g d2hpbGUoeCA+IDApOworIAorICAgICBkZW55X2NvdW50ICs9IGRpZ2l0czsKK0BAIC0xODMxLDM2 ICsxODMxLDM2IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X2RlbnkoCisg ICAgIGRlbnlfc3RyaW5nID0gZ2xvYnVzX21hbGxvYyhkZW55X2NvdW50ICsgYm9keV9jb3VudCk7 CisgCisgICAgIG9mZnNldCA9IHNwcmludGYoZGVueV9zdHJpbmcsCistCQkgICAgIEdMT0JVU19M X0RFTklBTF9SRVNQT05TRSwKKy0JCSAgICAgcmVhc29uLAorLQkJICAgICBtZXNzYWdlKTsKKysg ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9ERU5JQUxfUkVTUE9OU0UsCisrICAgICAgICAg ICAgICAgICAgICAgcmVhc29uLAorKyAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOworICAg ICBvZmZzZXQgKz0gc3ByaW50ZihkZW55X3N0cmluZyArIG9mZnNldCwKKy0JCSAgICAgIEdMT0JV U19MX0hUTUxfSEVBREVSKTsKKysgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfSFRNTF9I RUFERVIpOworICAgICBvZmZzZXQgKz0gc3ByaW50ZihkZW55X3N0cmluZyArIG9mZnNldCwKKy0J CSAgICAgIEdMT0JVU19MX0NPTlRFTlRfTEVOR1RIX0hFQURFUiwKKy0JCSAgICAgIGJvZHlfY291 bnQpOworKyAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9DT05URU5UX0xFTkdUSF9IRUFE RVIsCisrICAgICAgICAgICAgICAgICAgICAgIGJvZHlfY291bnQpOworICAgICBvZmZzZXQgKz0g c3ByaW50ZihkZW55X3N0cmluZyArIG9mZnNldCwKKy0JCSAgICAgIENSTEYpOworKyAgICAgICAg ICAgICAgICAgICAgICBDUkxGKTsKKyAKKyAgICAgb2Zmc2V0ICs9IHNwcmludGYoZGVueV9zdHJp bmcgKyBvZmZzZXQsCistCQkgICAgICBHTE9CVVNfTF9IVE1MX0RFTklBTF9CT0RZLAorLQkJICAg ICAgcmVhc29uLAorLQkJICAgICAgbWVzc2FnZSwKKy0JCSAgICAgIHJlYXNvbiwKKy0JCSAgICAg IG1lc3NhZ2UpOworKyAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9IVE1MX0RFTklBTF9C T0RZLAorKyAgICAgICAgICAgICAgICAgICAgICByZWFzb24sCisrICAgICAgICAgICAgICAgICAg ICAgIG1lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbiwKKysgICAgICAgICAg ICAgICAgICAgICAgbWVzc2FnZSk7CisgCisgICAgIHByb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNT X1RSQU5TRkVSX0hUVFBfU1RBVEVfREVOSUVEOworIAorICAgICBnbG9idXNfZnJlZShtZXNzYWdl KTsKKyAKKyAgICAgZGVidWdfcHJpbnRmKDQsIChfR1RTTCgiJXMoKTogUmVnaXN0ZXJpbmcgd3Jp dGUgb24gJXBcbiIpLAorLQkJICAgICBteW5hbWUsCistCQkgICAgICZwcm90by0+aGFuZGxlKSk7 ICAgICAgICAKKysgICAgICAgICAgICAgICAgICAgICBteW5hbWUsCisrICAgICAgICAgICAgICAg ICAgICAgJnByb3RvLT5oYW5kbGUpKTsKKyAgICAgZ2xvYnVzX2lvX3JlZ2lzdGVyX3dyaXRlKCZw cm90by0+aGFuZGxlLAorLQkJCSAgICAgKGdsb2J1c19ieXRlX3QgKikgZGVueV9zdHJpbmcsCist CQkJICAgICBzdHJsZW4oZGVueV9zdHJpbmcpLAorLQkJCSAgICAgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX3dyaXRlX3Jlc3BvbnNlLAorLQkJCSAgICAgcHJvdG8pOworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgZGVueV9zdHJpbmcsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oZGVueV9zdHJpbmcpLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3dyaXRlX3Jlc3Bv bnNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8pOworIAorICAgICBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisgfQorQEAgLTE4NjksMTE3ICsxODY5 LDExNyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9kZW55KAorIHN0YXRp YworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9hdXRob3JpemUo CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAqCXJwcm90bywKKy0g ICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0KQorKyAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3Byb3RvX3QgKiAgICAgIHJwcm90bywKKysgICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KQorIHsKKy0gICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKglwcm90bzsKKy0gICAg Y2hhciAqCQkJCQlhdXRob3JpemVfc3RyaW5nOworLSAgICBnbG9idXNfc2l6ZV90CQkJCWF1dGhv cml6ZV9jb3VudD0wOworLSAgICBnbG9idXNfc2l6ZV90CQkJCW9mZnNldDsKKy0gICAgZ2xvYnVz X3NpemVfdAkJCQlsZW5ndGg7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVz dF9wcm90b190ICogcHJvdG87CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXV0aG9yaXplX3N0cmluZzsKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JpemVfY291bnQ9MDsKKysgICAgZ2xvYnVzX3Np emVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ7CisrICAgIGdsb2J1c19z aXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOworICAgICBnbG9idXNf cmVsdGltZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5X3RpbWU7CisgICAgIE1Z TkFNRShnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9hdXRob3JpemUpOworLSAg ICAKKysKKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xvY2soKTsKKyAgICAgcHJv dG8gPSAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKikgcnByb3Rv OworIAorICAgICBzd2l0Y2gocHJvdG8tPnR5cGUpCisgICAgIHsKKyAgICAgICBjYXNlIEdMT0JV U19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9HRVQ6CistCS8qIExldCdzIGFsd2F5cyBzZW5k IGFuIEhUVFAvMS4wIHJlc3BvbnNlLCB0byBtYWtlIHRoaW5ncyBlYXNpZXIgKi8KKy0JbGVuZ3Ro ID0gZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9nZXRfbGVuZ3RoKHByb3RvLT5yZXF1ZXN0 KTsKKy0KKy0JaWYobGVuZ3RoICE9IDApCistCXsKKy0JICAgIGdsb2J1c19zaXplX3QJCQl4ID0g bGVuZ3RoOworLQkgICAgZ2xvYnVzX3NpemVfdAkJCWRpZ2l0cyA9IDA7CistCistCSAgICAvKiBj b3VudCB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIGluIGxlbmd0aCAqLworLQkgICAgZG8K Ky0JICAgIHsKKy0JCWRpZ2l0cysrOworLQkJeCAvPSAxMDsKKy0JICAgIH0gd2hpbGUoeCA+IDAp OworLQkgICAgCistCSAgICAvKiBTZW5kIGEgY29udGVudC1sZW5ndGggZmllbGQgKi8KKy0JICAg IGF1dGhvcml6ZV9jb3VudCArPSBzdHJsZW4oR0xPQlVTX0xfQ09OVEVOVF9MRU5HVEhfSEVBREVS KTsKKy0JICAgIGF1dGhvcml6ZV9jb3VudCArPSBkaWdpdHM7CistICAgICAgICB9CistCSAgICAK Ky0JYXV0aG9yaXplX2NvdW50ICs9IDE7CistCWF1dGhvcml6ZV9jb3VudCArPSBzdHJsZW4oR0xP QlVTX0xfR0VORVJJQ19SRVNQT05TRSk7CistCWF1dGhvcml6ZV9jb3VudCArPSAzOworLQlhdXRo b3JpemVfY291bnQgKz0gc3RybGVuKEdMT0JVU19MX09LKTsKKy0JYXV0aG9yaXplX2NvdW50ICs9 IDI7CistCistCWlmKHByb3RvLT50ZXh0X21vZGUpCistCXsKKy0JICAgIGF1dGhvcml6ZV9jb3Vu dCArPSBzdHJsZW4oR0xPQlVTX0xfVEVYVF9IRUFERVIpOworLQkgICAgYXV0aG9yaXplX3N0cmlu ZyA9IGdsb2J1c19tYWxsb2MoYXV0aG9yaXplX2NvdW50KTsKKy0JICAgIG9mZnNldCA9IHNwcmlu dGYoYXV0aG9yaXplX3N0cmluZywKKy0JCQkgICAgIEdMT0JVU19MX0dFTkVSSUNfUkVTUE9OU0Us CistCQkJICAgICAwLAorLQkJCSAgICAgMjAwLAorLQkJCSAgICAgR0xPQlVTX0xfT0spOworLQkg ICAgb2Zmc2V0ICs9IHNwcmludGYoYXV0aG9yaXplX3N0cmluZyArIG9mZnNldCwKKy0JCQkgICAg ICBHTE9CVVNfTF9URVhUX0hFQURFUik7CistCX0KKy0JZWxzZQorLQl7CistCSAgICBhdXRob3Jp emVfY291bnQgKz0gc3RybGVuKEdMT0JVU19MX0JJTkFSWV9IRUFERVIpOworLQkgICAgYXV0aG9y aXplX3N0cmluZyA9IGdsb2J1c19tYWxsb2MoYXV0aG9yaXplX2NvdW50KTsKKy0JICAgIG9mZnNl dCA9IHNwcmludGYoYXV0aG9yaXplX3N0cmluZywKKy0JCQkgICAgIEdMT0JVU19MX0dFTkVSSUNf UkVTUE9OU0UsCistCQkJICAgICAwLAorLQkJCSAgICAgMjAwLAorLQkJCSAgICAgR0xPQlVTX0xf T0spOworLQkgICAgb2Zmc2V0ICs9IHNwcmludGYoYXV0aG9yaXplX3N0cmluZyArIG9mZnNldCwK Ky0JCQkgICAgICBHTE9CVVNfTF9CSU5BUllfSEVBREVSKTsKKy0JfQorLQorLQlpZihsZW5ndGgg IT0gMCkKKy0JeworLQkgICAgb2Zmc2V0ICs9IHNwcmludGYoYXV0aG9yaXplX3N0cmluZyArIG9m ZnNldCwKKy0JCQkgICAgICBHTE9CVVNfTF9DT05URU5UX0xFTkdUSF9IRUFERVIsCistCQkJICAg ICAgbGVuZ3RoKTsKKy0JfQorLQlvZmZzZXQgKz0gc3ByaW50ZihhdXRob3JpemVfc3RyaW5nICsg b2Zmc2V0LAorLQkJCSAgQ1JMRik7CistCWJyZWFrOworKyAgICAgICAgLyogTGV0J3MgYWx3YXlz IHNlbmQgYW4gSFRUUC8xLjAgcmVzcG9uc2UsIHRvIG1ha2UgdGhpbmdzIGVhc2llciAqLworKyAg ICAgICAgbGVuZ3RoID0gZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9nZXRfbGVuZ3RoKHBy b3RvLT5yZXF1ZXN0KTsKKysKKysgICAgICAgIGlmKGxlbmd0aCAhPSAwKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgIHggPSBsZW5n dGg7CisrICAgICAgICAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgZGln aXRzID0gMDsKKysKKysgICAgICAgICAgICAvKiBjb3VudCB0aGUgbnVtYmVyIG9mIGRlY2ltYWwg ZGlnaXRzIGluIGxlbmd0aCAqLworKyAgICAgICAgICAgIGRvCisrICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICBkaWdpdHMrKzsKKysgICAgICAgICAgICAgICAgeCAvPSAxMDsKKysgICAg ICAgICAgICB9IHdoaWxlKHggPiAwKTsKKysKKysgICAgICAgICAgICAvKiBTZW5kIGEgY29udGVu dC1sZW5ndGggZmllbGQgKi8KKysgICAgICAgICAgICBhdXRob3JpemVfY291bnQgKz0gc3RybGVu KEdMT0JVU19MX0NPTlRFTlRfTEVOR1RIX0hFQURFUik7CisrICAgICAgICAgICAgYXV0aG9yaXpl X2NvdW50ICs9IGRpZ2l0czsKKysgICAgICAgIH0KKysKKysgICAgICAgIGF1dGhvcml6ZV9jb3Vu dCArPSAxOworKyAgICAgICAgYXV0aG9yaXplX2NvdW50ICs9IHN0cmxlbihHTE9CVVNfTF9HRU5F UklDX1JFU1BPTlNFKTsKKysgICAgICAgIGF1dGhvcml6ZV9jb3VudCArPSAzOworKyAgICAgICAg YXV0aG9yaXplX2NvdW50ICs9IHN0cmxlbihHTE9CVVNfTF9PSyk7CisrICAgICAgICBhdXRob3Jp emVfY291bnQgKz0gMjsKKysKKysgICAgICAgIGlmKHByb3RvLT50ZXh0X21vZGUpCisrICAgICAg ICB7CisrICAgICAgICAgICAgYXV0aG9yaXplX2NvdW50ICs9IHN0cmxlbihHTE9CVVNfTF9URVhU X0hFQURFUik7CisrICAgICAgICAgICAgYXV0aG9yaXplX3N0cmluZyA9IGdsb2J1c19tYWxsb2Mo YXV0aG9yaXplX2NvdW50KTsKKysgICAgICAgICAgICBvZmZzZXQgPSBzcHJpbnRmKGF1dGhvcml6 ZV9zdHJpbmcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9HRU5FUklD X1JFU1BPTlNFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDIwMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM T0JVU19MX09LKTsKKysgICAgICAgICAgICBvZmZzZXQgKz0gc3ByaW50ZihhdXRob3JpemVfc3Ry aW5nICsgb2Zmc2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19MX1RF WFRfSEVBREVSKTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAg ICAgICAgICBhdXRob3JpemVfY291bnQgKz0gc3RybGVuKEdMT0JVU19MX0JJTkFSWV9IRUFERVIp OworKyAgICAgICAgICAgIGF1dGhvcml6ZV9zdHJpbmcgPSBnbG9idXNfbWFsbG9jKGF1dGhvcml6 ZV9jb3VudCk7CisrICAgICAgICAgICAgb2Zmc2V0ID0gc3ByaW50ZihhdXRob3JpemVfc3RyaW5n LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfR0VORVJJQ19SRVNQT05T RSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAyMDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9P Syk7CisrICAgICAgICAgICAgb2Zmc2V0ICs9IHNwcmludGYoYXV0aG9yaXplX3N0cmluZyArIG9m ZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9CSU5BUllfSEVB REVSKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmKGxlbmd0aCAhPSAwKQorKyAgICAgICAg eworKyAgICAgICAgICAgIG9mZnNldCArPSBzcHJpbnRmKGF1dGhvcml6ZV9zdHJpbmcgKyBvZmZz ZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfQ09OVEVOVF9MRU5H VEhfSEVBREVSLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7CisrICAg ICAgICB9CisrICAgICAgICBvZmZzZXQgKz0gc3ByaW50ZihhdXRob3JpemVfc3RyaW5nICsgb2Zm c2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JMRik7CisrICAgICAgICBicmVhazsK KyAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9QVVQ6CisgICAg ICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfQVBQRU5EOgorLQkvKiBz ZW5kIG5vdGhpbmcgYmFjayB5ZXQgKi8KKy0JYnJlYWs7CisrICAgICAgICAvKiBzZW5kIG5vdGhp bmcgYmFjayB5ZXQgKi8KKysgICAgICAgIGJyZWFrOworICAgICAgIGRlZmF1bHQ6CistCWdsb2J1 c19hc3NlcnQoR0xPQlVTX0ZBTFNFKTsKKysgICAgICAgIGdsb2J1c19hc3NlcnQoR0xPQlVTX0ZB TFNFKTsKKyAgICAgfQorIAorICAgICBpZihhdXRob3JpemVfY291bnQgIT0gMCkKKyAgICAgewor LQlwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX1JFU1BPTkRJ Tkc7CisrICAgICAgICBwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NU QVRFX1JFU1BPTkRJTkc7CisgCistCWRlYnVnX3ByaW50Zig0LCAoX0dUU0woIiVzKCk6IHJlZ2lz dGVyaW5nIHdyaXRlIG9uICVwXG4iKSwKKy0JCQkgbXluYW1lLAorLQkJCSAmcHJvdG8tPmhhbmRs ZSkpOworKyAgICAgICAgZGVidWdfcHJpbnRmKDQsIChfR1RTTCgiJXMoKTogcmVnaXN0ZXJpbmcg d3JpdGUgb24gJXBcbiIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICZwcm90by0+aGFuZGxlKSk7CisgCistCWdsb2J1c19pb19y ZWdpc3Rlcl93cml0ZSgmcHJvdG8tPmhhbmRsZSwKKy0JCQkJIChnbG9idXNfYnl0ZV90ICopIGF1 dGhvcml6ZV9zdHJpbmcsCistCQkJCSBzdHJsZW4oYXV0aG9yaXplX3N0cmluZyksCistCQkJCSBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGVfcmVzcG9uc2UsCistCQkJCSBwcm90byk7 CisrICAgICAgICBnbG9idXNfaW9fcmVnaXN0ZXJfd3JpdGUoJnByb3RvLT5oYW5kbGUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgYXV0aG9yaXpl X3N0cmluZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oYXV0aG9y aXplX3N0cmluZyksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX3dyaXRlX3Jlc3BvbnNlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByb3RvKTsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JcHJvdG8t PnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9JRExFOworLSAgCisrICAg ICAgICBwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX0lETEU7 CisrCisgICAgICAgICBHbG9idXNUaW1lUmVsdGltZVNldChkZWxheV90aW1lLCAwLCAwKTsKKy0J ZGVidWdfcHJpbnRmKDQsIChfR1RTTCgiJXMoKTogcmVnaXN0ZXJpbmcgb25lc2hvdFxuIiksCist CQkJIG15bmFtZSkpOworLQlnbG9idXNfY2FsbGJhY2tfcmVnaXN0ZXJfb25lc2hvdCgKKy0JICAg IEdMT0JVU19OVUxMLAorLQkgICAgJmRlbGF5X3RpbWUsCistCSAgICBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfY2FsbGJhY2tfcmVhZHlfY2FsbGJhY2ssCistCSAgICAodm9pZCAqKSBwcm90 byk7CisrICAgICAgICBkZWJ1Z19wcmludGYoNCwgKF9HVFNMKCIlcygpOiByZWdpc3RlcmluZyBv bmVzaG90XG4iKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgbXluYW1lKSk7CisrICAgICAg ICBnbG9idXNfY2FsbGJhY2tfcmVnaXN0ZXJfb25lc2hvdCgKKysgICAgICAgICAgICBHTE9CVVNf TlVMTCwKKysgICAgICAgICAgICAmZGVsYXlfdGltZSwKKysgICAgICAgICAgICBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfY2FsbGJhY2tfcmVhZHlfY2FsbGJhY2ssCisrICAgICAgICAgICAg KHZvaWQgKikgcHJvdG8pOworIAorICAgICB9CisgCitAQCAtMTk5MCwxNCArMTk5MCwxNCBAQCBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9hdXRob3JpemUoCisgc3RhdGljCisg dm9pZAorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF93cml0ZV9yZXNwb25zZSgKKy0gICAg dm9pZCAqCQkJCWFyZywKKy0gICAgZ2xvYnVzX2lvX2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAg Z2xvYnVzX3Jlc3VsdF90CQkJcmVzdWx0LAorLSAgICBnbG9idXNfYnl0ZV90ICoJCQlidWYsCist ICAgIGdsb2J1c19zaXplX3QJCQluYnl0ZXMpCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFyZywKKysgICAgZ2xvYnVzX2lvX2hhbmRsZV90ICogICAgICAgICAgICAg ICAgaGFuZGxlLAorKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1 bHQsCisrICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgIGJ1ZiwKKysgICAg Z2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgbmJ5dGVzKQorIHsKKyAgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKiBwcm90bzsKKy0gICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0OworKyAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3Q7CisgCisgICAgIGdsb2J1c19m cmVlKGJ1Zik7CisgCitAQCAtMjAwOCwyOCArMjAwOCwyOCBAQCBnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfd3JpdGVfcmVzcG9uc2UoCisgICAgIHN3aXRjaChwcm90by0+c3RhdGUpCisgICAg IHsKKyAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfUkVTUE9ORElO RzoKKy0JaWYocHJvdG8tPnR5cGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBF X0dFVCkKKy0JeworLQkgICAgcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRU UF9TVEFURV9JRExFOworLQkgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygp OworLQkgICAgCistCSAgICByZXF1ZXN0ID0gcHJvdG8tPnJlcXVlc3Q7CistCistCSAgICBkZWJ1 Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3Jl cXVlc3RfcmVhZHkiKSkpOworLQkgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVz dF9yZWFkeShyZXF1ZXN0LAorLQkJCQkJCSAgICAgKGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVl c3RfcHJvdG9fdCAqKSBwcm90byk7CistCSAgICByZXR1cm47CistCX0KKy0JLyogb3RoZXIgdHlw ZXMgZmFsbCB0aHJvdWdoICovCisrICAgICAgICBpZihwcm90by0+dHlwZSA9PSBHTE9CVVNfR0FT U19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfR0VUKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHBy b3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfSURMRTsKKysgICAg ICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisrCisrICAgICAg ICAgICAgcmVxdWVzdCA9IHByb3RvLT5yZXF1ZXN0OworKworKyAgICAgICAgICAgIGRlYnVnX3By aW50ZigyLCAoX0dUU0woImNhbGxpbmcgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVz dF9yZWFkeSIpKSk7CisrICAgICAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVx dWVzdF9yZWFkeShyZXF1ZXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAq KSBwcm90byk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgLyog b3RoZXIgdHlwZXMgZmFsbCB0aHJvdWdoICovCisgICAgICAgZGVmYXVsdDoKKy0JcmVzdWx0ID0g Z2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX2Nsb3NlKHByb3RvKTsKKysgICAg ICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZShw cm90byk7CisgCisgICAgICAgICBpZiAocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAg ICAgeworICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jbG9zZShwcm90 byk7CisgICAgICAgICB9CistCWdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsK Ky0JcmV0dXJuOworKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygp OworKyAgICAgICAgcmV0dXJuOworICAgICB9CisgfQorIC8qIGdsb2J1c19sX2dhc3NfdHJhbnNm ZXJfaHR0cF93cml0ZV9yZXNwb25zZSgpICovCitAQCAtMjAzNywxNCArMjAzNywxNCBAQCBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfd3JpdGVfcmVzcG9uc2UoCisgc3RhdGljCisgZ2xvYnVz X2Jvb2xfdAorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9hdXRob3JpemF0aW9uX2NhbGxi YWNrKAorLSAgICB2b2lkICoJCQkJCWFyZywKKy0gICAgZ2xvYnVzX2lvX2hhbmRsZV90ICoJCQlo YW5kbGUsCistICAgIGdsb2J1c19yZXN1bHRfdAkJCQlyZXN1bHQsCistICAgIGNoYXIgKgkJCQkJ aWRlbnRpdHksCistICAgIGdzc19jdHhfaWRfdCAgCQkJCWNvbnRleHRfaGFuZGxlKQorKyAgICB2 b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKKysgICAgZ2xv YnVzX2lvX2hhbmRsZV90ICogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGds b2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorKyAgICBj aGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aXR5LAorKyAg ICBnc3NfY3R4X2lkX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfaGFu ZGxlKQorIHsKKyAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5lcl9wcm90b190 ICpwcm90bzsKKy0gICAgaW50CQkJCQkJcmMgPSBHTE9CVVNfRkFMU0U7CisrICAgIGludCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBHTE9CVVNfRkFMU0U7Cisg ICAgIE1ZTkFNRShnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfYXV0aG9yaXphdGlvbl9jYWxs YmFjayk7CisgCisgICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkVudGVyaW5nICVzKClcbiIp LG15bmFtZSkpOworQEAgLTIwNTYsMzMgKzIwNTYsMzMgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zl cl9odHRwX2F1dGhvcml6YXRpb25fY2FsbGJhY2soCisgICAgIHN3aXRjaChwcm90by0+cmVxdWVz dC0+YXV0aG9yaXphdGlvbl9tb2RlKQorICAgICB7CisgICAgICAgY2FzZSBHTE9CVVNfR0FTU19U UkFOU0ZFUl9BVVRIT1JJWkVfU0VMRjoKKy0JaWYoc3RyY21wKGlkZW50aXR5LCBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfc3ViamVjdF9uYW1lKSA9PSAwKQorLQl7CistCSAgICByYyA9IEdM T0JVU19UUlVFOworLQkgICAgZ290byBmaW5pc2g7CistCX0KKy0JZWxzZQorLQl7CistCSAgICBy YyA9IEdMT0JVU19GQUxTRTsKKy0JICAgIGdvdG8gZmluaXNoOworLQl9CisrICAgICAgICBpZihz dHJjbXAoaWRlbnRpdHksIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zdWJqZWN0X25hbWUp ID09IDApCisrICAgICAgICB7CisrICAgICAgICAgICAgcmMgPSBHTE9CVVNfVFJVRTsKKysgICAg ICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAg IHsKKysgICAgICAgICAgICByYyA9IEdMT0JVU19GQUxTRTsKKysgICAgICAgICAgICBnb3RvIGZp bmlzaDsKKysgICAgICAgIH0KKyAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0FVVEhP UklaRV9IT1NUOgorLQlyYyA9IEdMT0JVU19GQUxTRTsKKy0JZ290byBmaW5pc2g7CisrICAgICAg ICByYyA9IEdMT0JVU19GQUxTRTsKKysgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgIGNhc2Ug R0xPQlVTX0dBU1NfVFJBTlNGRVJfQVVUSE9SSVpFX1NVQkpFQ1Q6CistCWlmKHN0cmNtcChpZGVu dGl0eSwgcHJvdG8tPnJlcXVlc3QtPmF1dGhvcml6ZWRfc3ViamVjdCkgPT0gMCkKKy0JeworLQkg ICAgcmMgPSBHTE9CVVNfVFJVRTsKKy0JICAgIGdvdG8gZmluaXNoOworLQl9CistCWVsc2UKKy0g ICAgICAgIHsKKy0JICAgIHJjID0gR0xPQlVTX0ZBTFNFOworLQkgICAgZ290byBmaW5pc2g7Cist CX0KKysgICAgICAgIGlmKHN0cmNtcChpZGVudGl0eSwgcHJvdG8tPnJlcXVlc3QtPmF1dGhvcml6 ZWRfc3ViamVjdCkgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICByYyA9IEdMT0JVU19U UlVFOworKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworKyAgICAgICAgfQorKyAgICAgICAgZWxz ZQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJjID0gR0xPQlVTX0ZBTFNFOworKyAgICAgICAg ICAgIGdvdG8gZmluaXNoOworKyAgICAgICAgfQorICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJB TlNGRVJfQVVUSE9SSVpFX0NBTExCQUNLOgorLQlyYyA9IEdMT0JVU19UUlVFOworLQlnb3RvIGZp bmlzaDsKKysgICAgICAgIHJjID0gR0xPQlVTX1RSVUU7CisrICAgICAgICBnb3RvIGZpbmlzaDsK KyAgICAgfQorIAorICAgZmluaXNoOgorQEAgLTIwOTYsMTUgKzIwOTYsMTUgQEAgZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX2F1dGhvcml6YXRpb25fY2FsbGJhY2soCisgc3RhdGljCisgdm9p ZAorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wcm90b19kZXN0cm95KAorLSAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqCQlwcm90bykKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKiAgICAgICAgIHByb3RvKQor IHsKKyAgICAgaWYocHJvdG8tPnJlc3BvbnNlX2J1ZmZlciAhPSBHTE9CVVNfTlVMTCkKKyAgICAg eworLQlnbG9idXNfZnJlZShwcm90by0+cmVzcG9uc2VfYnVmZmVyKTsKKysgICAgICAgIGdsb2J1 c19mcmVlKHByb3RvLT5yZXNwb25zZV9idWZmZXIpOworICAgICB9CisgICAgIGlmKHByb3RvLT5y ZWFzb24gIT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JZ2xvYnVzX2ZyZWUocHJvdG8tPnJlYXNv bik7CisrICAgICAgICBnbG9idXNfZnJlZShwcm90by0+cmVhc29uKTsKKyAgICAgfQorICAgICBp Zihwcm90by0+Y29ubmVjdGVkX3N1YmplY3QgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKK0BAIC0y MTEyLDIxICsyMTEyLDIxIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wcm90b19kZXN0 cm95KAorICAgICB9CisgICAgIGlmKHByb3RvLT5jbGllbnRfc2lkZSkKKyAgICAgeworLQlnbG9i dXNfdXJsX2Rlc3Ryb3koJnByb3RvLT51cmwpOworKyAgICAgICAgZ2xvYnVzX3VybF9kZXN0cm95 KCZwcm90by0+dXJsKTsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JaWYocHJvdG8tPm1l dGhvZCkKKy0JeworLQkgICAgZ2xvYnVzX2ZyZWUocHJvdG8tPm1ldGhvZCk7CistCX0KKy0JaWYo cHJvdG8tPnVyaSkKKy0JeworLQkgICAgZ2xvYnVzX2ZyZWUocHJvdG8tPnVyaSk7CistCX0KKysg ICAgICAgIGlmKHByb3RvLT5tZXRob2QpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVz X2ZyZWUocHJvdG8tPm1ldGhvZCk7CisrICAgICAgICB9CisrICAgICAgICBpZihwcm90by0+dXJp KQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19mcmVlKHByb3RvLT51cmkpOworKyAg ICAgICAgfQorICAgICB9CisgICAgIGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfa2V5dmFsdWVfZGVz dHJveSgKKy0JJnByb3RvLT5oZWFkZXJzKTsKKysgICAgICAgICZwcm90by0+aGVhZGVycyk7Cisg ICAgIGdsb2J1c19mcmVlKHByb3RvKTsKKyB9CisgLyogZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX3Byb3RvX2Rlc3Ryb3koKSAqLworQEAgLTIxNDMsMjY2ICsyMTQzLDI2NiBAQCBnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfcHJvdG9fZGVzdHJveSgKKyBzdGF0aWMKKyB2b2lkCisgZ2xv YnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX25ld19yZXF1ZXN0KAorLSAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Jl cXVlc3RhdHRyX3QgKglhdHRyKQorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3Qg ICAgICAgICAgICAgIHJlcXVlc3QsCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rh dHRyX3QgKiAgICAgICAgYXR0cikKKyB7CistICAgIGludAkJCQkJCXJjPUdMT0JVU19TVUNDRVNT OworLSAgICBjaGFyICoJCQkJCXByb3h5PUdMT0JVU19OVUxMOworLSAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9maWxlX21vZGVfdAkJZmlsZV9tb2RlPUdMT0JVU19HQVNTX1RSQU5TRkVSX0ZJTEVf TU9ERV9CSU5BUlk7CistICAgIGdsb2J1c19pb19hdHRyX3QJCQkJdGNwX2F0dHI7CistICAgIGds b2J1c19yZXN1bHRfdAkJCQlyZXN1bHQ7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBf cmVxdWVzdF9wcm90b190ICoJCXByb3RvOworLSAgICBpbnQJCQkJCQlzbmRidWY7CistICAgIGlu dAkJCQkJCXJjdmJ1ZjsKKy0gICAgaW50CQkJCQkJbm9kZWxheTsKKysgICAgaW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYz1HTE9CVVNfU1VDQ0VTUzsKKysgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eT1HTE9CVVNf TlVMTDsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfZmlsZV9tb2RlX3QgICAgICAgICAgICBm aWxlX21vZGU9R0xPQlVTX0dBU1NfVFJBTlNGRVJfRklMRV9NT0RFX0JJTkFSWTsKKysgICAgZ2xv YnVzX2lvX2F0dHJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BfYXR0cjsKKysgICAg Z2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisrICAg IGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICogICAgICAgICBwcm90 bzsKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRi dWY7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmN2 YnVmOworKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v ZGVsYXk7CisgICAgIGdsb2J1c19yZWx0aW1lX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVsYXlfdGltZTsKKyAgICAgTVlOQU1FKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9uZXdf cmVxdWVzdCk7CistICAgIAorKworICAgICBkZWJ1Z19wcmludGYoMSwgKF9HVFNMKCJFbnRlcmlu ZyAlcygpXG4iKSxteW5hbWUpKTsKKyAgICAgc3dpdGNoKGdsb2J1c19nYXNzX3RyYW5zZmVyX3Jl cXVlc3RfZ2V0X3R5cGUocmVxdWVzdCkpCisgICAgIHsKKyAgICAgICBjYXNlIEdMT0JVU19HQVNT X1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9HRVQ6CisgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFO U0ZFUl9SRVFVRVNUX1RZUEVfUFVUOgorICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJf UkVRVUVTVF9UWVBFX0FQUEVORDoKKy0JYnJlYWs7CisrICAgICAgICBicmVhazsKKyAgICAgICBk ZWZhdWx0OgorLQlnb3RvIGVycm9yX2V4aXQ7CisrICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Cisg ICAgIH0KKyAKKyAgICAgLyogQWxsb2NhdGUgcHJvdG8gaW5zdGFuY2UgKi8KKy0gICAgcHJvdG8g PSAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKikgCistCWdsb2J1 c19tYWxsb2Moc2l6ZW9mKGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190 KSk7CisrICAgIHByb3RvID0gKGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90 b190ICopCisrICAgICAgICBnbG9idXNfbWFsbG9jKHNpemVvZihnbG9idXNfZ2Fzc190cmFuc2Zl cl9odHRwX3JlcXVlc3RfcHJvdG9fdCkpOworIAorICAgICBpZihwcm90byA9PSBHTE9CVVNfTlVM TCkKKyAgICAgeworLQlnb3RvIGVycm9yX2V4aXQ7CisrICAgICAgICBnb3RvIGVycm9yX2V4aXQ7 CisgICAgIH0KKyAKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2lvX3RjcGF0dHJfaW5pdCgmdGNwX2F0 dHIpOworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKy0JZ290byBw cm90b19lcnJvcjsKKysgICAgICAgIGdvdG8gcHJvdG9fZXJyb3I7CisgICAgIH0KKyAgICAgZ2xv YnVzX2lvX2F0dHJfc2V0X3NvY2tldF9rZWVwYWxpdmUoJnRjcF9hdHRyLCBHTE9CVVNfVFJVRSk7 CisgCisgICAgIGlmKCphdHRyICE9IEdMT0JVU19OVUxMKQorICAgICB7CistCS8qIENoZWNrIGF0 dHJpYnV0ZXMgd2UgY2FyZSBhYm91dCAqLworLQlnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 YXR0cl9nZXRfcHJveHlfdXJsKGF0dHIsCistCQkJCQkJICAgICAgICZwcm94eSk7CistCistCXJj ID0gZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfZ2V0X3NvY2tldF9zbmRidWYoCist CSAgICBhdHRyLAorLQkgICAgJnNuZGJ1Zik7CistCWlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQor LQl7CistCSAgICBnb3RvIHRjcGF0dHJfZXJyb3I7CistCX0KKy0JZWxzZQorLQl7CistCSAgICBp ZihzbmRidWYgIT0gMCkKKy0JICAgIHsKKy0JCWdsb2J1c19pb19hdHRyX3NldF9zb2NrZXRfc25k YnVmKCZ0Y3BfYXR0ciwKKy0JCQkJCQkgc25kYnVmKTsKKy0JICAgIH0KKy0JfQorLQorLQlyYyA9 IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX2dldF9zb2NrZXRfcmN2YnVmKAorLQkg ICAgYXR0ciwKKy0JICAgICZyY3ZidWYpOworLQlpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKy0J eworLQkgICAgZ290byB0Y3BhdHRyX2Vycm9yOworLQl9CistCWVsc2UKKy0JeworLQkgICAgaWYo cmN2YnVmICE9IDApCistCSAgICB7CistCQlnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X3JjdmJ1 ZigmdGNwX2F0dHIsCistCQkJCQkJIHJjdmJ1Zik7CistCSAgICB9CistCX0KKy0KKy0JcmMgPSBn bG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl9nZXRfc29ja2V0X25vZGVsYXkoCistCSAg ICBhdHRyLAorLQkgICAgJm5vZGVsYXkpOworLQlpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKy0J eworLQkgICAgZ290byB0Y3BhdHRyX2Vycm9yOworLQl9CistCWVsc2UKKy0JeworLQkgICAgZ2xv YnVzX2lvX2F0dHJfc2V0X3RjcF9ub2RlbGF5KCZ0Y3BfYXR0ciwKKy0JCQkJCSAgIG5vZGVsYXkp OworLQl9CistCistCS8qIEZpbGUgbW9kZSBpcyBpbXBvcnRhbnQgb24gV2luZG93cyAqLworLQly YyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX2dldF9maWxlX21vZGUoYXR0ciwK Ky0JCQkJCQkJICAgICZmaWxlX21vZGUpOworLQlpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKy0J eworLQkgICAgZ290byB0Y3BhdHRyX2Vycm9yOworLQl9CistCXJjID0gZ2xvYnVzX2dhc3NfdHJh bnNmZXJfcmVxdWVzdGF0dHJfZ2V0X2Jsb2NrX3NpemUoYXR0ciwKKy0JCQkJCQkJICAgICAmcHJv dG8tPmJsb2NrX3NpemUpOworLQlpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAg Z290byB0Y3BhdHRyX2Vycm9yOworLQl9CisrICAgICAgICAvKiBDaGVjayBhdHRyaWJ1dGVzIHdl IGNhcmUgYWJvdXQgKi8KKysgICAgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRy X2dldF9wcm94eV91cmwoYXR0ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnByb3h5KTsKKysKKysgICAgICAgIHJjID0gZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfZ2V0X3NvY2tldF9zbmRidWYoCisrICAgICAgICAgICAg YXR0ciwKKysgICAgICAgICAgICAmc25kYnVmKTsKKysgICAgICAgIGlmKHJjICE9IEdMT0JVU19T VUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gdGNwYXR0cl9lcnJvcjsKKysg ICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZihzbmRi dWYgIT0gMCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdsb2J1c19pb19hdHRy X3NldF9zb2NrZXRfc25kYnVmKCZ0Y3BfYXR0ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc25kYnVmKTsKKysgICAgICAgICAgICB9CisrICAgICAg ICB9CisrCisrICAgICAgICByYyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX2dl dF9zb2NrZXRfcmN2YnVmKAorKyAgICAgICAgICAgIGF0dHIsCisrICAgICAgICAgICAgJnJjdmJ1 Zik7CisrICAgICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAg ICAgICAgICBnb3RvIHRjcGF0dHJfZXJyb3I7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisr ICAgICAgICB7CisrICAgICAgICAgICAgaWYocmN2YnVmICE9IDApCisrICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X3JjdmJ1ZigmdGNwX2F0 dHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJj dmJ1Zik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgcmMgPSBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl9nZXRfc29ja2V0X25vZGVsYXkoCisrICAgICAg ICAgICAgYXR0ciwKKysgICAgICAgICAgICAmbm9kZWxheSk7CisrICAgICAgICBpZihyYyAhPSBH TE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHRjcGF0dHJfZXJy b3I7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAg Z2xvYnVzX2lvX2F0dHJfc2V0X3RjcF9ub2RlbGF5KCZ0Y3BfYXR0ciwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZWxheSk7CisrICAgICAgICB9CisrCisr ICAgICAgICAvKiBGaWxlIG1vZGUgaXMgaW1wb3J0YW50IG9uIFdpbmRvd3MgKi8KKysgICAgICAg IHJjID0gZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfZ2V0X2ZpbGVfbW9kZShhdHRy LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZmaWxlX21vZGUpOworKyAgICAgICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ290byB0Y3BhdHRyX2Vycm9yOworKyAgICAgICAgfQor KyAgICAgICAgcmMgPSBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl9nZXRfYmxvY2tf c2l6ZShhdHRyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcHJvdG8tPmJsb2NrX3NpemUpOworKyAgICAgICAgaWYocmMgIT0g R0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byB0Y3BhdHRyX2Vy cm9yOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIC8qIFZlcmlmeSBVUkwgKi8KKyAgICAg aWYocHJveHkpCisgICAgIHsKKy0JcmMgPSBnbG9idXNfdXJsX3BhcnNlKHByb3h5LAorLQkJCSAg ICAgICZwcm90by0+cHJveHlfdXJsKTsKKy0JaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsK Ky0JICAgIGdvdG8gdGNwYXR0cl9lcnJvcjsKKy0JfQorLQlpZihzdHJjbXAocHJvdG8tPnByb3h5 X3VybC5zY2hlbWUsICJodHRwIikgIT0gMCAmJgorLQkgICBzdHJjbXAocHJvdG8tPnByb3h5X3Vy bC5zY2hlbWUsICJodHRwcyIpICE9IDApCistCXsKKy0JICAgIGdvdG8gcHJveHlfZXJyb3I7Cist CX0KKysgICAgICAgIHJjID0gZ2xvYnVzX3VybF9wYXJzZShwcm94eSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcHJvdG8tPnByb3h5X3VybCk7CisrICAgICAgICBpZihyYyAhPSBH TE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHRjcGF0dHJfZXJy b3I7CisrICAgICAgICB9CisrICAgICAgICBpZihzdHJjbXAocHJvdG8tPnByb3h5X3VybC5zY2hl bWUsICJodHRwIikgIT0gMCAmJgorKyAgICAgICAgICAgc3RyY21wKHByb3RvLT5wcm94eV91cmwu c2NoZW1lLCAiaHR0cHMiKSAhPSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gcHJv eHlfZXJyb3I7CisrICAgICAgICB9CisgICAgIH0KKyAgICAgcHJvdG8tPnVybF9zdHJpbmcgPSBn bG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF91cmwocmVxdWVzdCk7CisgCisgICAgIHJj ID0gZ2xvYnVzX3VybF9wYXJzZShwcm90by0+dXJsX3N0cmluZywKKy0JCQkgICZwcm90by0+dXJs KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm90by0+dXJsKTsKKyAgICAgaWYocmMg IT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKy0JZ290byBwcm94eV9lcnJvcjsKKysgICAgICAg IGdvdG8gcHJveHlfZXJyb3I7CisgICAgIH0KKyAgICAgaWYocHJvdG8tPnVybC51cmxfcGF0aCA9 PSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQlwcm90by0+dXJsLnVybF9wYXRoID0gZ2xvYnVzX2xp YmNfc3RyZHVwKCIvIik7CisrICAgICAgICBwcm90by0+dXJsLnVybF9wYXRoID0gZ2xvYnVzX2xp YmNfc3RyZHVwKCIvIik7CisgICAgIH0KKyAgICAgaWYoc3RyY21wKHByb3RvLT51cmwuc2NoZW1l LCAiaHR0cCIpICE9IDAgJiYKKyAgICAgICAgc3RyY21wKHByb3RvLT51cmwuc2NoZW1lLCAiaHR0 cHMiKSAhPSAwKQorICAgICB7CistCWdvdG8gdXJsX2Vycm9yOworKyAgICAgICAgZ290byB1cmxf ZXJyb3I7CisgICAgIH0KKyAKKyAKKyAgICAgLyogSWYgaHR0cHMsIHNldCBzZWN1cml0eSBhdHRy aWJ1dGVzIG9mIFRDUCBoYW5kbGUgKi8KKyAgICAgaWYoc3RyY21wKHByb3RvLT51cmwuc2NoZW1l LCAiaHR0cHMiKT09IDApCisgICAgIHsKKy0JZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9u X2RhdGFfdAlkYXRhOworLQlnbG9idXNfZ2Fzc190cmFuc2Zlcl9hdXRob3JpemF0aW9uX3QJbW9k ZTsKKy0JY2hhciAqCQkJCQlzdWJqZWN0OworLQlnbG9idXNfcmVzdWx0X3QJCQkJcmVzdWx0Owor LQorLQkKKy0JZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfaW5pdGlhbGl6ZSgm ZGF0YSk7CistCXJlc3VsdCA9IGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aGVudGljYXRp b25fbW9kZSgKKy0JICAgICZ0Y3BfYXR0ciwKKy0JICAgIEdMT0JVU19JT19TRUNVUkVfQVVUSEVO VElDQVRJT05fTU9ERV9NVVRVQUwsCistCSAgICBHTE9CVVNfTlVMTCk7CistCistCWlmKHJlc3Vs dCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byB1cmxfZXJyb3I7CistCX0KKy0J cmVzdWx0ID0gZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9jaGFubmVsX21vZGUoCistCSAgICAm dGNwX2F0dHIsCistCSAgICBHTE9CVVNfSU9fU0VDVVJFX0NIQU5ORUxfTU9ERV9TU0xfV1JBUCk7 CistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byB1cmxfZXJy b3I7CistCX0KKy0JaWYoKmF0dHIgIT0gR0xPQlVTX05VTEwpCistCXsKKy0JICAgIHJjID0gZ2xv YnVzX2dhc3NfdHJhbnNmZXJfc2VjdXJlX3JlcXVlc3RhdHRyX2dldF9hdXRob3JpemF0aW9uKAor LQkJYXR0ciwKKy0JCSZtb2RlLAorLQkJJnN1YmplY3QpOworLQkgICAgaWYocmMgIT0gR0xPQlVT X1NVQ0NFU1MpCistCSAgICB7CistCQlnb3RvIHVybF9lcnJvcjsKKy0JICAgIH0KKy0JfQorLQll bHNlCistCXsKKy0JICAgIG1vZGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9BVVRIT1JJWkVfU0VM RjsKKy0JfQorLQorLQlzd2l0Y2gobW9kZSkKKy0JeworLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJB TlNGRVJfQVVUSE9SSVpFX1NFTEY6CistCSAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2F1 dGhvcml6YXRpb25fbW9kZSgKKy0JCSZ0Y3BfYXR0ciwKKy0JCUdMT0JVU19JT19TRUNVUkVfQVVU SE9SSVpBVElPTl9NT0RFX1NFTEYsCistCQlHTE9CVVNfTlVMTCk7CistCSAgICBicmVhazsKKy0J ICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0FVVEhPUklaRV9IT1NUOgorLQkgICAgc3ViamVj dCA9IGdsb2J1c19tYWxsb2Moc3RybGVuKHByb3RvLT51cmwuaG9zdCkgKworLQkJCQkgICAgIHN0 cmxlbigiL0NOPSIpCistCQkJCSAgICAgKzEpOworLQkgICAgc3ByaW50ZihzdWJqZWN0LAorLQkJ ICAgICIvQ049JXMiLAorLQkJICAgIHByb3RvLT51cmwuaG9zdCk7CistCistCSAgICBnbG9idXNf aW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9zZXRfaWRlbnRpdHkoCistCQkmZGF0YSwKKy0J CXN1YmplY3QpOworLQkgICAgZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9hdXRob3JpemF0aW9u X21vZGUoCistCQkmdGNwX2F0dHIsCistCQlHTE9CVVNfSU9fU0VDVVJFX0FVVEhPUklaQVRJT05f TU9ERV9JREVOVElUWSwKKy0JCSZkYXRhKTsKKy0JICAgIGdsb2J1c19pb19zZWN1cmVfYXV0aG9y aXphdGlvbl9kYXRhX2Rlc3Ryb3koJmRhdGEpOworLQkgICAgZ2xvYnVzX2ZyZWUoc3ViamVjdCk7 CistCSAgICBicmVhazsKKy0JICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0FVVEhPUklaRV9T VUJKRUNUOgorLQkgICAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfc2V0X2lk ZW50aXR5KAorLQkJJmRhdGEsCistCQlzdWJqZWN0KTsKKy0JICAgIGdsb2J1c19pb19hdHRyX3Nl dF9zZWN1cmVfYXV0aG9yaXphdGlvbl9tb2RlKAorLQkJJnRjcF9hdHRyLAorLQkJR0xPQlVTX0lP X1NFQ1VSRV9BVVRIT1JJWkFUSU9OX01PREVfSURFTlRJVFksCistCQkmZGF0YSk7CistCSAgICBn bG9idXNfaW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9kZXN0cm95KCZkYXRhKTsKKy0JICAg IGJyZWFrOworLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfQVVUSE9SSVpFX0NBTExCQUNL OgorLQkgICAgZ2xvYnVzX2Fzc2VydChtb2RlICE9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0FVVEhP UklaRV9DQUxMQkFDSyk7CistCSAgICBnb3RvIHVybF9lcnJvcjsKKy0JfQorKyAgICAgICAgZ2xv YnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfdCAgIGRhdGE7CisrICAgICAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9hdXRob3JpemF0aW9uX3QgICAgbW9kZTsKKysgICAgICAgIGNoYXIg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0OworKyAgICAgICAgZ2xv YnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKysKKysKKysgICAg ICAgIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX2luaXRpYWxpemUoJmRhdGEp OworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9hdXRoZW50aWNh dGlvbl9tb2RlKAorKyAgICAgICAgICAgICZ0Y3BfYXR0ciwKKysgICAgICAgICAgICBHTE9CVVNf SU9fU0VDVVJFX0FVVEhFTlRJQ0FUSU9OX01PREVfTVVUVUFMLAorKyAgICAgICAgICAgIEdMT0JV U19OVUxMKTsKKysKKysgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAg ICAgIHsKKysgICAgICAgICAgICBnb3RvIHVybF9lcnJvcjsKKysgICAgICAgIH0KKysgICAgICAg IHJlc3VsdCA9IGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfY2hhbm5lbF9tb2RlKAorKyAgICAg ICAgICAgICZ0Y3BfYXR0ciwKKysgICAgICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0NIQU5ORUxf TU9ERV9TU0xfV1JBUCk7CisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ290byB1cmxfZXJyb3I7CisrICAgICAgICB9CisrICAg ICAgICBpZigqYXR0ciAhPSBHTE9CVVNfTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBy YyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3NlY3VyZV9yZXF1ZXN0YXR0cl9nZXRfYXV0aG9yaXph dGlvbigKKysgICAgICAgICAgICAgICAgYXR0ciwKKysgICAgICAgICAgICAgICAgJm1vZGUsCisr ICAgICAgICAgICAgICAgICZzdWJqZWN0KTsKKysgICAgICAgICAgICBpZihyYyAhPSBHTE9CVVNf U1VDQ0VTUykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdvdG8gdXJsX2Vycm9y OworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsK KysgICAgICAgICAgICBtb2RlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfQVVUSE9SSVpFX1NFTEY7 CisrICAgICAgICB9CisrCisrICAgICAgICBzd2l0Y2gobW9kZSkKKysgICAgICAgIHsKKysgICAg ICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9BVVRIT1JJWkVfU0VMRjoKKysgICAgICAg ICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJlX2F1dGhvcml6YXRpb25fbW9kZSgKKysgICAg ICAgICAgICAgICAgJnRjcF9hdHRyLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfSU9fU0VDVVJF X0FVVEhPUklaQVRJT05fTU9ERV9TRUxGLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCk7 CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNG RVJfQVVUSE9SSVpFX0hPU1Q6CisrICAgICAgICAgICAgc3ViamVjdCA9IGdsb2J1c19tYWxsb2Mo c3RybGVuKHByb3RvLT51cmwuaG9zdCkgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJsZW4oIi9DTj0iKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArMSk7CisrICAgICAgICAgICAgc3ByaW50ZihzdWJqZWN0LAorKyAgICAgICAgICAgICAg ICAgICAgIi9DTj0lcyIsCisrICAgICAgICAgICAgICAgICAgICBwcm90by0+dXJsLmhvc3QpOwor KworKyAgICAgICAgICAgIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX3NldF9p ZGVudGl0eSgKKysgICAgICAgICAgICAgICAgJmRhdGEsCisrICAgICAgICAgICAgICAgIHN1Ympl Y3QpOworKyAgICAgICAgICAgIGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aG9yaXphdGlv bl9tb2RlKAorKyAgICAgICAgICAgICAgICAmdGNwX2F0dHIsCisrICAgICAgICAgICAgICAgIEdM T0JVU19JT19TRUNVUkVfQVVUSE9SSVpBVElPTl9NT0RFX0lERU5USVRZLAorKyAgICAgICAgICAg ICAgICAmZGF0YSk7CisrICAgICAgICAgICAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9u X2RhdGFfZGVzdHJveSgmZGF0YSk7CisrICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoc3ViamVjdCk7 CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNG RVJfQVVUSE9SSVpFX1NVQkpFQ1Q6CisrICAgICAgICAgICAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRo b3JpemF0aW9uX2RhdGFfc2V0X2lkZW50aXR5KAorKyAgICAgICAgICAgICAgICAmZGF0YSwKKysg ICAgICAgICAgICAgICAgc3ViamVjdCk7CisrICAgICAgICAgICAgZ2xvYnVzX2lvX2F0dHJfc2V0 X3NlY3VyZV9hdXRob3JpemF0aW9uX21vZGUoCisrICAgICAgICAgICAgICAgICZ0Y3BfYXR0ciwK KysgICAgICAgICAgICAgICAgR0xPQlVTX0lPX1NFQ1VSRV9BVVRIT1JJWkFUSU9OX01PREVfSURF TlRJVFksCisrICAgICAgICAgICAgICAgICZkYXRhKTsKKysgICAgICAgICAgICBnbG9idXNfaW9f c2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9kZXN0cm95KCZkYXRhKTsKKysgICAgICAgICAgICBi cmVhazsKKysgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9BVVRIT1JJWkVfQ0FM TEJBQ0s6CisrICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydChtb2RlICE9IEdMT0JVU19HQVNTX1RS QU5TRkVSX0FVVEhPUklaRV9DQUxMQkFDSyk7CisrICAgICAgICAgICAgZ290byB1cmxfZXJyb3I7 CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYocHJvdG8gPT0gR0xPQlVTX05VTEwpCisg ICAgIHsKKy0JZ290byB1cmxfZXJyb3I7CisrICAgICAgICBnb3RvIHVybF9lcnJvcjsKKyAgICAg fQorIAorICAgICAvKiBJbml0aWFsaXplIHRoZSBwcm90byBpbnN0YW5jZSAqLworLSAgICBwcm90 by0+c2VuZF9idWZmZXIJPSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2VuZDsKKy0gICAg cHJvdG8tPnJlY3ZfYnVmZmVyCT0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlY2VpdmU7 CistICAgIHByb3RvLT5mYWlsCQk9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9mYWlsOwor LSAgICBwcm90by0+ZGVueQkJPSBHTE9CVVNfTlVMTDsKKy0gICAgcHJvdG8tPnJlZmVyCT0gR0xP QlVTX05VTEw7CistICAgIHByb3RvLT5hdXRob3JpemUJPSBHTE9CVVNfTlVMTDsKKy0gICAgcHJv dG8tPmRlc3Ryb3kJPSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZGVzdHJveTsKKy0gICAg cHJvdG8tPnRleHRfbW9kZQk9IChmaWxlX21vZGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfRklM RV9NT0RFX1RFWFQpOworLSAgICBwcm90by0+bGluZV9tb2RlCT0gR0xPQlVTX0xfTElORV9NT0RF X1VOS05PV047CistICAgIHByb3RvLT5zdGF0ZQk9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBf U1RBVEVfQ09OTkVDVElORzsKKy0gICAgcHJvdG8tPnJlcXVlc3QJPSByZXF1ZXN0OworLSAgICBw cm90by0+dHlwZQkJPSBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF90eXBlKHJlcXVl c3QpOworLSAgICBwcm90by0+Y29kZQkJPSAwOworLSAgICBwcm90by0+cmVhc29uCT0gMDsKKy0g ICAgcHJvdG8tPnBhcnNlX2Vycm9yCT0gR0xPQlVTX0ZBTFNFOworKyAgICBwcm90by0+c2VuZF9i dWZmZXIgID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NlbmQ7CisrICAgIHByb3RvLT5y ZWN2X2J1ZmZlciAgPSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVjZWl2ZTsKKysgICAg cHJvdG8tPmZhaWwgICAgICAgICA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9mYWlsOwor KyAgICBwcm90by0+ZGVueSAgICAgICAgID0gR0xPQlVTX05VTEw7CisrICAgIHByb3RvLT5yZWZl ciAgICAgICAgPSBHTE9CVVNfTlVMTDsKKysgICAgcHJvdG8tPmF1dGhvcml6ZSAgICA9IEdMT0JV U19OVUxMOworKyAgICBwcm90by0+ZGVzdHJveSAgICAgID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zl cl9odHRwX2Rlc3Ryb3k7CisrICAgIHByb3RvLT50ZXh0X21vZGUgICAgPSAoZmlsZV9tb2RlID09 IEdMT0JVU19HQVNTX1RSQU5TRkVSX0ZJTEVfTU9ERV9URVhUKTsKKysgICAgcHJvdG8tPmxpbmVf bW9kZSAgICA9IEdMT0JVU19MX0xJTkVfTU9ERV9VTktOT1dOOworKyAgICBwcm90by0+c3RhdGUg ICAgICAgID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9DT05ORUNUSU5HOworKyAg ICBwcm90by0+cmVxdWVzdCAgICAgID0gcmVxdWVzdDsKKysgICAgcHJvdG8tPnR5cGUgICAgICAg ICA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X3R5cGUocmVxdWVzdCk7CisrICAg IHByb3RvLT5jb2RlICAgICAgICAgPSAwOworKyAgICBwcm90by0+cmVhc29uICAgICAgID0gMDsK KysgICAgcHJvdG8tPnBhcnNlX2Vycm9yICA9IEdMT0JVU19GQUxTRTsKKyAgICAgcHJvdG8tPmRl c3Ryb3lfY2FsbGVkID0gR0xPQlVTX0ZBTFNFOworLSAgICBwcm90by0+aGVhZGVycwk9IEdMT0JV U19OVUxMOworKyAgICBwcm90by0+aGVhZGVycyAgICAgID0gR0xPQlVTX05VTEw7CisgICAgIHBy b3RvLT5yZXNwb25zZV9idWZmZXIgPSBHTE9CVVNfTlVMTDsKKy0gICAgcHJvdG8tPmxlbmd0aAk9 IDA7CistICAgIHByb3RvLT5oYW5kbGVkCT0gMDsKKy0gICAgcHJvdG8tPmNodW5rZWQJPSBHTE9C VVNfRkFMU0U7CistICAgIHByb3RvLT5jaHVua19sZWZ0CT0gMDsKKysgICAgcHJvdG8tPmxlbmd0 aCAgICAgICA9IDA7CisrICAgIHByb3RvLT5oYW5kbGVkICAgICAgPSAwOworKyAgICBwcm90by0+ Y2h1bmtlZCAgICAgID0gR0xPQlVTX0ZBTFNFOworKyAgICBwcm90by0+Y2h1bmtfbGVmdCAgID0g MDsKKyAgICAgcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgPSBHTE9CVVNfRkFMU0U7CisgICAgIHBy b3RvLT5vbmVzaG90X3JlZ2lzdGVyZWQgPSBHTE9CVVNfRkFMU0U7CisgICAgIHByb3RvLT5vbmVz aG90X2FjdGl2ZSA9IEdMT0JVU19GQUxTRTsKKy0gICAgcHJvdG8tPmVvZl9yZWFkCT0gR0xPQlVT X0ZBTFNFOworLSAgICBwcm90by0+Y2xpZW50X3NpZGUJPSBHTE9CVVNfVFJVRTsKKy0gICAgcHJv dG8tPmNvbm5lY3RlZF9zdWJqZWN0CT0gR0xPQlVTX05VTEw7CisrICAgIHByb3RvLT5lb2ZfcmVh ZCAgICAgPSBHTE9CVVNfRkFMU0U7CisrICAgIHByb3RvLT5jbGllbnRfc2lkZSAgPSBHTE9CVVNf VFJVRTsKKysgICAgcHJvdG8tPmNvbm5lY3RlZF9zdWJqZWN0ICAgID0gR0xPQlVTX05VTEw7Cisg ICAgIHByb3RvLT5wcm94eV9jb25uZWN0ID0gcHJveHkgPyBHTE9CVVNfVFJVRSA6IEdMT0JVU19G QUxTRTsKKyAgICAgcHJvdG8tPmdvdF9yZXNwb25zZSA9IEdMT0JVU19GQUxTRTsKKyAgICAgcHJv dG8tPndhaXRpbmdfZm9yX3Jlc3BvbnNlID0gR0xPQlVTX0ZBTFNFOworQEAgLTI0MTAsNTggKzI0 MTAsNTggQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX25ld19yZXF1ZXN0KAorICAgICAv KiBPcGVuIHRoZSBoYW5kbGUgKi8KKyAgICAgaWYocHJveHkpCisgICAgIHsKKy0JaWYocHJvdG8t PnByb3h5X3VybC5zY2hlbWVfdHlwZSA9PSBHTE9CVVNfVVJMX1NDSEVNRV9IVFRQICYmCistCSAg IHByb3RvLT5wcm94eV91cmwucG9ydCA9PSAwKQorLQl7CistCSAgICBwcm90by0+cHJveHlfdXJs LnBvcnQgPSBHTE9CVVNfTF9ERUZBVUxUX0hUVFBfUE9SVDsKKy0JfQorLQllbHNlIGlmKHByb3Rv LT5wcm94eV91cmwuc2NoZW1lX3R5cGUgPT0gR0xPQlVTX1VSTF9TQ0hFTUVfSFRUUFMgJiYKKy0J CXByb3RvLT5wcm94eV91cmwucG9ydCA9PSAwKQorLQl7CistCSAgICBwcm90by0+cHJveHlfdXJs LnBvcnQgPSBHTE9CVVNfTF9ERUZBVUxUX0hUVFBTX1BPUlQ7CistCX0KKy0JZGVidWdfcHJpbnRm KDQsKF9HVFNMKCIlcygpOiBSZWdpc3RlcmluZyBjb25uZWN0IHRvICVzXG4iKSwKKy0JCQlteW5h bWUsCistCQkJcHJvdG8tPnByb3h5X3VybC5ob3N0KSk7CistCXJlc3VsdCA9IGdsb2J1c19pb190 Y3BfcmVnaXN0ZXJfY29ubmVjdCgKKy0JICAgIHByb3RvLT5wcm94eV91cmwuaG9zdCwKKy0JICAg IHByb3RvLT5wcm94eV91cmwucG9ydCwKKy0JICAgICZ0Y3BfYXR0ciwKKy0JICAgIGdsb2J1c19s X2dhc3NfdHJhbnNmZXJfaHR0cF9jb25uZWN0X2NhbGxiYWNrLAorLQkgICAgcHJvdG8sCistCSAg ICAmcHJvdG8tPmhhbmRsZSk7CisrICAgICAgICBpZihwcm90by0+cHJveHlfdXJsLnNjaGVtZV90 eXBlID09IEdMT0JVU19VUkxfU0NIRU1FX0hUVFAgJiYKKysgICAgICAgICAgIHByb3RvLT5wcm94 eV91cmwucG9ydCA9PSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHByb3RvLT5wcm94eV91 cmwucG9ydCA9IEdMT0JVU19MX0RFRkFVTFRfSFRUUF9QT1JUOworKyAgICAgICAgfQorKyAgICAg ICAgZWxzZSBpZihwcm90by0+cHJveHlfdXJsLnNjaGVtZV90eXBlID09IEdMT0JVU19VUkxfU0NI RU1FX0hUVFBTICYmCisrICAgICAgICAgICAgICAgIHByb3RvLT5wcm94eV91cmwucG9ydCA9PSAw KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHByb3RvLT5wcm94eV91cmwucG9ydCA9IEdMT0JV U19MX0RFRkFVTFRfSFRUUFNfUE9SVDsKKysgICAgICAgIH0KKysgICAgICAgIGRlYnVnX3ByaW50 Zig0LChfR1RTTCgiJXMoKTogUmVnaXN0ZXJpbmcgY29ubmVjdCB0byAlc1xuIiksCisrICAgICAg ICAgICAgICAgICAgICAgICAgbXluYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rv LT5wcm94eV91cmwuaG9zdCkpOworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lvX3RjcF9yZWdp c3Rlcl9jb25uZWN0KAorKyAgICAgICAgICAgIHByb3RvLT5wcm94eV91cmwuaG9zdCwKKysgICAg ICAgICAgICBwcm90by0+cHJveHlfdXJsLnBvcnQsCisrICAgICAgICAgICAgJnRjcF9hdHRyLAor KyAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jb25uZWN0X2NhbGxiYWNr LAorKyAgICAgICAgICAgIHByb3RvLAorKyAgICAgICAgICAgICZwcm90by0+aGFuZGxlKTsKKyAg ICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JaWYocHJvdG8tPnVybC5zY2hlbWVfdHlwZSA9PSBH TE9CVVNfVVJMX1NDSEVNRV9IVFRQICYmCistCSAgIHByb3RvLT51cmwucG9ydCA9PSAwKQorLQl7 CistCSAgICBwcm90by0+dXJsLnBvcnQgPSBHTE9CVVNfTF9ERUZBVUxUX0hUVFBfUE9SVDsKKy0J fQorLQllbHNlIGlmKHByb3RvLT51cmwuc2NoZW1lX3R5cGUgPT0gR0xPQlVTX1VSTF9TQ0hFTUVf SFRUUFMgJiYKKy0JCXByb3RvLT51cmwucG9ydCA9PSAwKQorLQl7CistCSAgICBwcm90by0+dXJs LnBvcnQgPSBHTE9CVVNfTF9ERUZBVUxUX0hUVFBTX1BPUlQ7CistCX0KKy0JZGVidWdfcHJpbnRm KDQsKF9HVFNMKCIlcygpOiBSZWdpc3RlcmluZyBjb25uZWN0IHRvICVzXG4iKSwKKy0JCQlteW5h bWUsCistCQkJcHJvdG8tPnVybC5ob3N0KSk7CistCXJlc3VsdCA9IGdsb2J1c19pb190Y3BfcmVn aXN0ZXJfY29ubmVjdCgKKy0JICAgIHByb3RvLT51cmwuaG9zdCwKKy0JICAgIHByb3RvLT51cmwu cG9ydCwKKy0JICAgICZ0Y3BfYXR0ciwKKy0JICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9jb25uZWN0X2NhbGxiYWNrLAorLQkgICAgcHJvdG8sCistCSAgICAmcHJvdG8tPmhhbmRsZSk7 CistICAgIH0KKy0gICAgaWYocHJveHkpCistICAgIHsKKy0JZ2xvYnVzX3VybF9kZXN0cm95KCZw cm90by0+cHJveHlfdXJsKTsKKysgICAgICAgIGlmKHByb3RvLT51cmwuc2NoZW1lX3R5cGUgPT0g R0xPQlVTX1VSTF9TQ0hFTUVfSFRUUCAmJgorKyAgICAgICAgICAgcHJvdG8tPnVybC5wb3J0ID09 IDApCisrICAgICAgICB7CisrICAgICAgICAgICAgcHJvdG8tPnVybC5wb3J0ID0gR0xPQlVTX0xf REVGQVVMVF9IVFRQX1BPUlQ7CisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmKHByb3RvLT51 cmwuc2NoZW1lX3R5cGUgPT0gR0xPQlVTX1VSTF9TQ0hFTUVfSFRUUFMgJiYKKysgICAgICAgICAg ICAgICAgcHJvdG8tPnVybC5wb3J0ID09IDApCisrICAgICAgICB7CisrICAgICAgICAgICAgcHJv dG8tPnVybC5wb3J0ID0gR0xPQlVTX0xfREVGQVVMVF9IVFRQU19QT1JUOworKyAgICAgICAgfQor KyAgICAgICAgZGVidWdfcHJpbnRmKDQsKF9HVFNMKCIlcygpOiBSZWdpc3RlcmluZyBjb25uZWN0 IHRvICVzXG4iKSwKKysgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgcHJvdG8tPnVybC5ob3N0KSk7CisrICAgICAgICByZXN1bHQgPSBnbG9i dXNfaW9fdGNwX3JlZ2lzdGVyX2Nvbm5lY3QoCisrICAgICAgICAgICAgcHJvdG8tPnVybC5ob3N0 LAorKyAgICAgICAgICAgIHByb3RvLT51cmwucG9ydCwKKysgICAgICAgICAgICAmdGNwX2F0dHIs CisrICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Nvbm5lY3RfY2FsbGJh Y2ssCisrICAgICAgICAgICAgcHJvdG8sCisrICAgICAgICAgICAgJnByb3RvLT5oYW5kbGUpOwor KyAgICB9CisrICAgIGlmKHByb3h5KQorKyAgICB7CisrICAgICAgICBnbG9idXNfdXJsX2Rlc3Ry b3koJnByb3RvLT5wcm94eV91cmwpOworICAgICB9CisgCisgICAgIGlmKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKyAgICAgeworLQlnb3RvIHVybF9lcnJvcjsKKysgICAgICAgIGdvdG8gdXJs X2Vycm9yOworICAgICB9CisgICAgIC8qIFN1Y2Nlc3MhICovCisgICAgIGdsb2J1c19pb190Y3Bh dHRyX2Rlc3Ryb3koJnRjcF9hdHRyKTsKK0BAIC0yNDczLDIyICsyNDczLDIyIEBAIGdsb2J1c19s X2dhc3NfdHJhbnNmZXJfaHR0cF9uZXdfcmVxdWVzdCgKKyAgIHByb3h5X2Vycm9yOgorICAgICBp Zihwcm94eSkKKyAgICAgeworLQlnbG9idXNfdXJsX2Rlc3Ryb3koJnByb3RvLT5wcm94eV91cmwp OworKyAgICAgICAgZ2xvYnVzX3VybF9kZXN0cm95KCZwcm90by0+cHJveHlfdXJsKTsKKyAgICAg fQorICAgdGNwYXR0cl9lcnJvcjoKKyAgICAgZ2xvYnVzX2lvX3RjcGF0dHJfZGVzdHJveSgmdGNw X2F0dHIpOworICAgcHJvdG9fZXJyb3I6CisgICAgIGdsb2J1c19mcmVlKHByb3RvKTsKKyAgIGVy cm9yX2V4aXQ6CistICAKKysKKyAgICAgR2xvYnVzVGltZVJlbHRpbWVTZXQoZGVsYXlfdGltZSwg MCwgMCk7CisgICAgIGRlYnVnX3ByaW50Zig0LChfR1RTTCgiJXMoKTogUmVnaXN0ZXJpbmcgb25l c2hvdFxuIiksCistCQkJbXluYW1lKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgbXluYW1l KSk7CisgICAgIGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVzaG90KAorICAgICAgICAgR0xP QlVTX05VTEwsCistCSZkZWxheV90aW1lLAorLQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf Y2FsbGJhY2tfZGVuaWVkLAorLQkodm9pZCAqKSAoaW50cHRyX3QpIHJlcXVlc3QpOworKyAgICAg ICAgJmRlbGF5X3RpbWUsCisrICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2Fs bGJhY2tfZGVuaWVkLAorKyAgICAgICAgKHZvaWQgKikgKGludHB0cl90KSByZXF1ZXN0KTsKKyAK KyAgICAgZGVidWdfcHJpbnRmKDEsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsK KyB9CitAQCAtMjUwOSw0OCArMjUwOSw0OCBAQCBnbG9idXNfb2JqZWN0X3QgKgorIGdsb2J1c19s X2dhc3NfdHJhbnNmZXJfaHR0cF9uZXdfcmVxdWVzdGF0dHIoCisgICAgIGNoYXIgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX3NjaGVtZSkKKyB7CistICAgIGdsb2J1 c19vYmplY3RfdCAqCQkJCW9iajsKKysgICAgZ2xvYnVzX29iamVjdF90ICogICAgICAgICAgICAg ICAgICAgICAgICAgICBvYmo7CisgICAgIE1ZTkFNRShnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfbmV3X3JlcXVlc3RhdHRyKTsKKyAKKyAgICAgZGVidWdfcHJpbnRmKDEsIChfR1RTTCgiRW50 ZXJpbmcgJXMoKVxuIiksbXluYW1lKSk7CisgICAgIGlmKHN0cmNtcCh1cmxfc2NoZW1lLCAiaHR0 cHMiKSA9PSAwKQorICAgICB7CistCW9iaiA9IGdsb2J1c19vYmplY3RfY29uc3RydWN0KEdMT0JV U19HQVNTX09CSkVDVF9UWVBFX1NFQ1VSRV9SRVFVRVNUQVRUUik7CistCistCWRlYnVnX3ByaW50 ZigxLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7CistCXJldHVybgorLQkgICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfc2VjdXJlX3JlcXVlc3RhdHRyX2luaXRpYWxpemUoCistCQlv YmosCistCQlHTE9CVVNfTlVMTCwKKy0JCTAsCistCQlHTE9CVVNfR0FTU19UUkFOU0ZFUl9GSUxF X01PREVfQklOQVJZLAorLQkJR0xPQlVTX0ZBTFNFLAorLQkJMCwKKy0JCTAsCistCQlHTE9CVVNf RkFMU0UsCistCQlHTE9CVVNfR0FTU19UUkFOU0ZFUl9BVVRIT1JJWkVfSE9TVCwKKy0JCUdMT0JV U19OVUxMKTsKKysgICAgICAgIG9iaiA9IGdsb2J1c19vYmplY3RfY29uc3RydWN0KEdMT0JVU19H QVNTX09CSkVDVF9UWVBFX1NFQ1VSRV9SRVFVRVNUQVRUUik7CisrCisrICAgICAgICBkZWJ1Z19w cmludGYoMSwgKF9HVFNMKCJFeGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworKyAgICAgICAgcmV0 dXJuCisrICAgICAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfc2VjdXJlX3JlcXVlc3RhdHRy X2luaXRpYWxpemUoCisrICAgICAgICAgICAgICAgIG9iaiwKKysgICAgICAgICAgICAgICAgR0xP QlVTX05VTEwsCisrICAgICAgICAgICAgICAgIDAsCisrICAgICAgICAgICAgICAgIEdMT0JVU19H QVNTX1RSQU5TRkVSX0ZJTEVfTU9ERV9CSU5BUlksCisrICAgICAgICAgICAgICAgIEdMT0JVU19G QUxTRSwKKysgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgMCwKKysgICAgICAg ICAgICAgICAgR0xPQlVTX0ZBTFNFLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfR0FTU19UUkFO U0ZFUl9BVVRIT1JJWkVfSE9TVCwKKysgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwpOworICAg ICB9CisgICAgIGVsc2UgaWYoc3RyY21wKHVybF9zY2hlbWUsICJodHRwIikgPT0gMCkKKyAgICAg eworLQlvYmogPSBnbG9idXNfb2JqZWN0X2NvbnN0cnVjdChHTE9CVVNfR0FTU19PQkpFQ1RfVFlQ RV9TT0NLRVRfUkVRVUVTVEFUVFIpOworKyAgICAgICAgb2JqID0gZ2xvYnVzX29iamVjdF9jb25z dHJ1Y3QoR0xPQlVTX0dBU1NfT0JKRUNUX1RZUEVfU09DS0VUX1JFUVVFU1RBVFRSKTsKKyAKKy0J ZGVidWdfcHJpbnRmKDEsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSwgbXluYW1lKSk7CistCXJl dHVybgorLQkgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfc29ja2V0X3JlcXVlc3RhdHRyX2luaXRp YWxpemUoCistCQlvYmosCistCQlHTE9CVVNfTlVMTCwKKy0JCTAsCistCQlHTE9CVVNfR0FTU19U UkFOU0ZFUl9GSUxFX01PREVfQklOQVJZLAorLQkJR0xPQlVTX0ZBTFNFLAorLQkJMCwKKy0JCTAs CistCQlHTE9CVVNfRkFMU0UpOworKyAgICAgICAgZGVidWdfcHJpbnRmKDEsIChfR1RTTCgiRXhp dGluZyAlcygpXG4iKSwgbXluYW1lKSk7CisrICAgICAgICByZXR1cm4KKysgICAgICAgICAgICBn bG9idXNfZ2Fzc190cmFuc2Zlcl9zb2NrZXRfcmVxdWVzdGF0dHJfaW5pdGlhbGl6ZSgKKysgICAg ICAgICAgICAgICAgb2JqLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKysgICAgICAg ICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfRklMRV9N T0RFX0JJTkFSWSwKKysgICAgICAgICAgICAgICAgR0xPQlVTX0ZBTFNFLAorKyAgICAgICAgICAg ICAgICAwLAorKyAgICAgICAgICAgICAgICAwLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfRkFM U0UpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworLQlkZWJ1Z19wcmludGYoMSwgKF9HVFNM KCJFeGl0aW5nICVzKClcbiIpLCBteW5hbWUpKTsKKy0JcmV0dXJuIEdMT0JVU19OVUxMOworKyAg ICAgICAgZGVidWdfcHJpbnRmKDEsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSwgbXluYW1lKSk7 CisrICAgICAgICByZXR1cm4gR0xPQlVTX05VTEw7CisgICAgIH0KKyB9CisgLyogZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX25ld19yZXF1ZXN0YXR0cigpICovCitAQCAtMjU3MCwyNiArMjU3 MCwyNiBAQCBnbG9idXNfb2JqZWN0X3QgKgorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9u ZXdfbGlzdGVuZXJhdHRyKAorICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVybF9zY2hlbWUpCisgeworLSAgICBnbG9idXNfb2JqZWN0X3QgKgkJCQlvYmo7 CisrICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqOwor ICAgICBNWU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX25ld19saXN0ZW5lcmF0dHIp OworLSAgICAKKysKKyAgICAgZGVidWdfcHJpbnRmKDEsIChfR1RTTCgiRW50ZXJpbmcgJXMoKVxu IiksIG15bmFtZSkpOworICAgICBpZihzdHJjbXAodXJsX3NjaGVtZSwgImh0dHBzIikgPT0gMCB8 fAorICAgICAgICBzdHJjbXAodXJsX3NjaGVtZSwgImh0dHAiKSA9PSAwKQorICAgICB7CistCW9i aiA9IGdsb2J1c19vYmplY3RfY29uc3RydWN0KEdMT0JVU19HQVNTX09CSkVDVF9UWVBFX0xJU1RF TkVSQVRUUik7CisrICAgICAgICBvYmogPSBnbG9idXNfb2JqZWN0X2NvbnN0cnVjdChHTE9CVVNf R0FTU19PQkpFQ1RfVFlQRV9MSVNURU5FUkFUVFIpOworIAorLQlkZWJ1Z19wcmludGYoMSwgKF9H VFNMKCJFeGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworLQlyZXR1cm4KKy0JICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl9pbml0aWFsaXplKAorLQkJb2JqLAorLQkJLTEsCist CQkwKTsKKysgICAgICAgIGRlYnVnX3ByaW50ZigxLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiks bXluYW1lKSk7CisrICAgICAgICByZXR1cm4KKysgICAgICAgICAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9saXN0ZW5lcmF0dHJfaW5pdGlhbGl6ZSgKKysgICAgICAgICAgICAgICAgb2JqLAorKyAg ICAgICAgICAgICAgICAtMSwKKysgICAgICAgICAgICAgICAgMCk7CisgICAgIH0KKyAgICAgZWxz ZQorICAgICB7CistCWRlYnVnX3ByaW50ZigxLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXlu YW1lKSk7CistCXJldHVybiBHTE9CVVNfTlVMTDsKKysgICAgICAgIGRlYnVnX3ByaW50ZigxLCAo X0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7CisrICAgICAgICByZXR1cm4gR0xPQlVT X05VTEw7CisgICAgIH0KKyB9CisgLyogZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX25ld19s aXN0ZW5lcmF0dHIoKSAqLworQEAgLTI2MDcsMjQgKzI2MDcsMjQgQEAgZ2xvYnVzX2xfZ2Fzc190 cmFuc2Zlcl9odHRwX25ld19saXN0ZW5lcmF0dHIoCisgc3RhdGljCisgaW50CisgZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX25ld19saXN0ZW5lcigKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfbGlzdGVuZXJfdAkJbGlzdGVuZXIsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3Rl bmVyYXR0cl90ICoJYXR0ciwKKy0gICAgY2hhciAqCQkJCQlzY2hlbWUsCistICAgIGNoYXIgKioJ CQkJCWJhc2VfdXJsLAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl9wcm90b190 ICoqCXJldF9wcm90bykKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdCAgICAg ICAgICAgICBsaXN0ZW5lciwKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJhdHRy X3QgKiAgICAgICBhdHRyLAorKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjaGVtZSwKKysgICAgY2hhciAqKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBiYXNlX3VybCwKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJf cHJvdG9fdCAqKiAgICByZXRfcHJvdG8pCisgeworICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9o dHRwX2xpc3RlbmVyX3Byb3RvX3QgKgorLQkJCQkJCXByb3RvOworLSAgICBnbG9idXNfaW9fYXR0 cl90CQkJCXRjcGF0dHI7CistICAgIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRh X3QJZGF0YTsKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3VsdDsKKy0gICAgaW50CQkJCQkJ cmM7CistICAgIHVuc2lnbmVkIHNob3J0CQkJCXBvcnQ9MDsKKy0gICAgaW50CQkJCQkJYmFja2xv Zz0tMTsKKy0gICAgY2hhcgkJCQkJaG9zdG5hbWVbTUFYSE9TVE5BTUVMRU5dOworLSAgICBnbG9i dXNfc2l6ZV90CQkJCXVybF9zaXplOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByb3RvOworKyAgICBnbG9idXNfaW9fYXR0cl90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRjcGF0dHI7CisrICAgIGdsb2J1c19pb19zZWN1cmVfYXV0aG9yaXph dGlvbl9kYXRhX3QgICAgICAgZGF0YTsKKysgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXN1bHQ7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmM7CisrICAgIHVuc2lnbmVkIHNob3J0ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcG9ydD0wOworKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJhY2tsb2c9LTE7CisrICAgIGNoYXIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWVbTUFYSE9TVE5BTUVMRU5dOworKyAgICBnbG9i dXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zaXplOworICAgICBN WU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX25ld19saXN0ZW5lcik7CistICAgIAor KworICAgICBkZWJ1Z19wcmludGYoMSwgKF9HVFNMKCJFbnRlcmluZyAlcygpXG4iKSxteW5hbWUp KTsKKyAgICAgZ2xvYnVzX2lvX3RjcGF0dHJfaW5pdCgmdGNwYXR0cik7CisgCitAQCAtMjYzMiwx MSArMjYzMiwxMSBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbmV3X2xpc3RlbmVyKAor IAorICAgICAvKiBBbGxvY2F0ZSBwcm90byBpbnN0YW5jZSAqLworICAgICBwcm90byA9IChnbG9i dXNfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX3Byb3RvX3QgKikKKy0JZ2xvYnVzX21hbGxv YyhzaXplb2YoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9saXN0ZW5lcl9wcm90b190KSk7Cisr ICAgICAgICBnbG9idXNfbWFsbG9jKHNpemVvZihnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX2xp c3RlbmVyX3Byb3RvX3QpKTsKKyAKKyAgICAgaWYocHJvdG8gPT0gR0xPQlVTX05VTEwpCisgICAg IHsKKy0JZ290byBmcmVlX3RjcGF0dHI7CisrICAgICAgICBnb3RvIGZyZWVfdGNwYXR0cjsKKyAg ICAgfQorIAorICAgICBwcm90by0+Y2xvc2VfbGlzdGVuZXIgPSBnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfY2xvc2VfbGlzdGVuZXI7CitAQCAtMjY0OCwxMDMgKzI2NDgsMTAzIEBAIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9uZXdfbGlzdGVuZXIoCisgICAgIHByb3RvLT5kZXN0cm95 X2NhbGxlZCA9IEdMT0JVU19GQUxTRTsKKyAgICAgaWYoc3RyY21wKHNjaGVtZSwgImh0dHAiKSA9 PSAwKQorICAgICB7CistCXByb3RvLT51cmxfc2NoZW1lID0gR0xPQlVTX1VSTF9TQ0hFTUVfSFRU UDsKKysgICAgICAgIHByb3RvLT51cmxfc2NoZW1lID0gR0xPQlVTX1VSTF9TQ0hFTUVfSFRUUDsK KyAgICAgfQorICAgICBlbHNlIGlmKHN0cmNtcChzY2hlbWUsICJodHRwcyIpID09IDApCisgICAg IHsKKy0JcmVzdWx0ID0gZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9hdXRoZW50aWNhdGlvbl9t b2RlKAorLQkgICAgJnRjcGF0dHIsCistCSAgICBHTE9CVVNfSU9fU0VDVVJFX0FVVEhFTlRJQ0FU SU9OX01PREVfTVVUVUFMLAorLQkgICAgR0xPQlVTX05VTEwpOworLQlpZihyZXN1bHQgIT0gR0xP QlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gZnJlZV9wcm90bzsKKy0JfQorLQkKKy0JcmVz dWx0ID0gZ2xvYnVzX2lvX2F0dHJfc2V0X3NlY3VyZV9jaGFubmVsX21vZGUoCistCSAgICAmdGNw YXR0ciwKKy0JICAgIEdMT0JVU19JT19TRUNVUkVfQ0hBTk5FTF9NT0RFX1NTTF9XUkFQKTsKKy0K Ky0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLQl7CistCSAgICBnb3RvIGZyZWVfcHJv dG87CistCX0KKy0JcmVzdWx0ID0gZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFf aW5pdGlhbGl6ZSgmZGF0YSk7CistCistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0J eworLQkgICAgZ290byBmcmVlX2F1dGhfZGF0YTsKKy0JfQorLQorLQlyZXN1bHQgPSBnbG9idXNf aW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9zZXRfY2FsbGJhY2soCistCSAgICAmZGF0YSwK Ky0JICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9hdXRob3JpemF0aW9uX2NhbGxiYWNr LAorLQkgICAgcHJvdG8pOworLQkgICAgCistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykK Ky0JeworLQkgICAgZ290byBmcmVlX2F1dGhfZGF0YTsKKy0JfQorLQorLQlyZXN1bHQgPSBnbG9i dXNfaW9fYXR0cl9zZXRfc2VjdXJlX2F1dGhvcml6YXRpb25fbW9kZSgKKy0JICAgICZ0Y3BhdHRy LAorLQkgICAgR0xPQlVTX0lPX1NFQ1VSRV9BVVRIT1JJWkFUSU9OX01PREVfQ0FMTEJBQ0ssCist CSAgICAmZGF0YSk7CistCistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkg ICAgZ290byBmcmVlX2F1dGhfZGF0YTsKKy0JfQorLQorLQlnbG9idXNfaW9fc2VjdXJlX2F1dGhv cml6YXRpb25fZGF0YV9kZXN0cm95KCZkYXRhKTsKKy0KKy0JcHJvdG8tPnVybF9zY2hlbWUgPSBH TE9CVVNfVVJMX1NDSEVNRV9IVFRQUzsKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pb19hdHRy X3NldF9zZWN1cmVfYXV0aGVudGljYXRpb25fbW9kZSgKKysgICAgICAgICAgICAmdGNwYXR0ciwK KysgICAgICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0FVVEhFTlRJQ0FUSU9OX01PREVfTVVUVUFM LAorKyAgICAgICAgICAgIEdMT0JVU19OVUxMKTsKKysgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIGZyZWVfcHJvdG87Cisr ICAgICAgICB9CisrCisrICAgICAgICByZXN1bHQgPSBnbG9idXNfaW9fYXR0cl9zZXRfc2VjdXJl X2NoYW5uZWxfbW9kZSgKKysgICAgICAgICAgICAmdGNwYXR0ciwKKysgICAgICAgICAgICBHTE9C VVNfSU9fU0VDVVJFX0NIQU5ORUxfTU9ERV9TU0xfV1JBUCk7CisrCisrICAgICAgICBpZihyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byBmcmVl X3Byb3RvOworKyAgICAgICAgfQorKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lvX3NlY3VyZV9h dXRob3JpemF0aW9uX2RhdGFfaW5pdGlhbGl6ZSgmZGF0YSk7CisrCisrICAgICAgICBpZihyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byBmcmVl X2F1dGhfZGF0YTsKKysgICAgICAgIH0KKysKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pb19z ZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX3NldF9jYWxsYmFjaygKKysgICAgICAgICAgICAmZGF0 YSwKKysgICAgICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfYXV0aG9yaXphdGlv bl9jYWxsYmFjaywKKysgICAgICAgICAgICBwcm90byk7CisrCisrICAgICAgICBpZihyZXN1bHQg IT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byBmcmVlX2F1 dGhfZGF0YTsKKysgICAgICAgIH0KKysKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pb19hdHRy X3NldF9zZWN1cmVfYXV0aG9yaXphdGlvbl9tb2RlKAorKyAgICAgICAgICAgICZ0Y3BhdHRyLAor KyAgICAgICAgICAgIEdMT0JVU19JT19TRUNVUkVfQVVUSE9SSVpBVElPTl9NT0RFX0NBTExCQUNL LAorKyAgICAgICAgICAgICZkYXRhKTsKKysKKysgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIGZyZWVfYXV0aF9kYXRhOwor KyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2Rh dGFfZGVzdHJveSgmZGF0YSk7CisrCisrICAgICAgICBwcm90by0+dXJsX3NjaGVtZSA9IEdMT0JV U19VUkxfU0NIRU1FX0hUVFBTOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworLQlnb3RvIGZy ZWVfcHJvdG87CisrICAgICAgICBnb3RvIGZyZWVfcHJvdG87CisgICAgIH0KKyAKKyAgICAgaWYo YXR0cikKKyAgICAgeworLQlyYyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyYXR0cl9n ZXRfcG9ydChhdHRyLAorLQkJCQkJCQkmcG9ydCk7CisrICAgICAgICByYyA9IGdsb2J1c19nYXNz X3RyYW5zZmVyX2xpc3RlbmVyYXR0cl9nZXRfcG9ydChhdHRyLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvcnQpOworIAorLQlpZihy YyAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byBmcmVlX3Byb3RvOworLQl9Cisr ICAgICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAg ICBnb3RvIGZyZWVfcHJvdG87CisrICAgICAgICB9CisgCistCXJjID0gZ2xvYnVzX2dhc3NfdHJh bnNmZXJfbGlzdGVuZXJhdHRyX2dldF9iYWNrbG9nKGF0dHIsCistCQkJCQkJCSAgICZiYWNrbG9n KTsKKy0JaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gZnJlZV9wcm90 bzsKKy0JfQorKyAgICAgICAgcmMgPSBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcmF0dHJf Z2V0X2JhY2tsb2coYXR0ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZiYWNrbG9nKTsKKysgICAgICAgIGlmKHJjICE9IEdMT0JV U19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gZnJlZV9wcm90bzsKKysg ICAgICAgIH0KKyAKKyAgICAgfQorICAgICByZXN1bHQgPSBnbG9idXNfaW9fdGNwX2NyZWF0ZV9s aXN0ZW5lcigmcG9ydCwKKy0JCQkJCSAgIGJhY2tsb2csCistCQkJCQkgICAmdGNwYXR0ciwKKy0J CQkJCSAgICZwcm90by0+aGFuZGxlKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYmFja2xvZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnRjcGF0dHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZwcm90by0+aGFuZGxlKTsKKyAgICAgZ2xvYnVzX2lvX3RjcGF0dHJfZGVzdHJveSgm dGNwYXR0cik7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworLQln b3RvIGZyZWVfcHJvdG87CisrICAgICAgICBnb3RvIGZyZWVfcHJvdG87CisgICAgIH0KKyAKKyAg ICAgdXJsX3NpemUgPSAxNTsgLyogaHR0cHM6Ly86NjU1MzZcMCAqLworICAgICBnbG9idXNfbGli Y19nZXRob3N0bmFtZShob3N0bmFtZSwKKy0JCQkgICAgTUFYSE9TVE5BTUVMRU4pOworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNQVhIT1NUTkFNRUxFTik7CisgICAgIHVybF9zaXplICs9 IHN0cmxlbihob3N0bmFtZSk7CisgCisgICAgICpiYXNlX3VybCA9IGdsb2J1c19tYWxsb2ModXJs X3NpemUpOworICAgICBzcHJpbnRmKCpiYXNlX3VybCwKKy0JICAgICIlczovLyVzOiVkIiwKKy0J ICAgIHByb3RvLT51cmxfc2NoZW1lID09IEdMT0JVU19VUkxfU0NIRU1FX0hUVFBTID8KKy0JICAg ICJodHRwcyIgOiAiaHR0cCIsCistCSAgICBob3N0bmFtZSwKKy0JICAgIChpbnQpIHBvcnQpOwor KyAgICAgICAgICAgICIlczovLyVzOiVkIiwKKysgICAgICAgICAgICBwcm90by0+dXJsX3NjaGVt ZSA9PSBHTE9CVVNfVVJMX1NDSEVNRV9IVFRQUyA/CisrICAgICAgICAgICAgImh0dHBzIiA6ICJo dHRwIiwKKysgICAgICAgICAgICBob3N0bmFtZSwKKysgICAgICAgICAgICAoaW50KSBwb3J0KTsK KyAKKyAKKyAgICAgcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNU RU5FUl9TVEFSVElORzsKK0BAIC0yNzcwLDcgKzI3NzAsNyBAQCBnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfbmV3X2xpc3RlbmVyKAorICAqIERlc2NyaXB0aW9uOiBDYWxsZWQgYnkgdGhlIEdB U1Mgc3lzdGVtIHdoZW4gdGhlIHVzZXIgaGFzCisgICogICAgICAgICAgICAgIHJlcXVlc3RlZCB0 aGF0IGEgbGlzdGVuZXIgYmUgY2xvc2VkLiBUaGlzCisgICogICAgICAgICAgICAgIG1heSBiZSBj YWxsZWQgYXQgYW55IHRpbWUsIGJ1dCBvbmx5IG9uY2UKKy0gKgkJcGVyIGxpc3RlbmVyLgorKyAq ICAgICAgICAgICAgICBwZXIgbGlzdGVuZXIuCisgICoKKyAgKiBQYXJhbWV0ZXJzOgorICAqCitA QCAtMjc3OSw1NSArMjc3OSw1NSBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbmV3X2xp c3RlbmVyKAorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xv c2VfbGlzdGVuZXIoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3Byb3RvX3Qg Kglwcm90bywKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdAkJbGlzdGVuZXIp CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3Byb3RvX3QgKiAgICAgcHJvdG8s CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QgICAgICAgICAgICAgbGlzdGVu ZXIpCisgeworICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX3Byb3RvX3Qg KgorLQkJCQkJCW5ld19wcm90bzsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuZXdfcHJvdG87CisgICAgIE1ZTkFNRShnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfY2xvc2VfbGlzdGVuZXIpOworICAgICBkZWJ1Z19wcmludGYoMSwgKF9HVFNMKCJl bnRlcmluZyAlcygpXG4iKSxteW5hbWUpKTsKKyAgICAgbmV3X3Byb3RvID0gKGdsb2J1c19nYXNz X3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJfcHJvdG9fdCAqKSBwcm90bzsKKyAKKyAgICAgZ2xvYnVz X2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xvY2soKTsKKyAgICAgeworLQlzd2l0Y2gobmV3X3Byb3Rv LT5zdGF0ZSkKKy0JeworLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5F Ul9TVEFSVElORzoKKysgICAgICAgIHN3aXRjaChuZXdfcHJvdG8tPnN0YXRlKQorKyAgICAgICAg eworKyAgICAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfU1RB UlRJTkc6CisgICAgICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5F Ul9SRUFEWToKKy0JICAgIC8qIElmIHRoZSBsaXN0ZW5lciBpcyBpbiB0aGUgImlkbGUiIG9yICJy ZWFkeSIgc3RhdGUsIHRoZW4KKy0JICAgICAqIHdlIGNhbiBzaW1wbHkgcmVnaXN0ZXIgdGhlIGNs b3NlLCB3aGljaCB3aWxsIGZyZWUgdGhlCistCSAgICAgKiBwcm90by4gKEdBU1MgaXMgbm90IHdh aXRpbmcgZm9yIGEgY2FsbGJhY2sgbm93LgorLQkgICAgICovCistCSAgICBnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfcmVnaXN0ZXJfbGlzdGVuZXJfY2xvc2UobmV3X3Byb3RvKTsKKy0JICAg IGJyZWFrOworKyAgICAgICAgICAgIC8qIElmIHRoZSBsaXN0ZW5lciBpcyBpbiB0aGUgImlkbGUi IG9yICJyZWFkeSIgc3RhdGUsIHRoZW4KKysgICAgICAgICAgICAgKiB3ZSBjYW4gc2ltcGx5IHJl Z2lzdGVyIHRoZSBjbG9zZSwgd2hpY2ggd2lsbCBmcmVlIHRoZQorKyAgICAgICAgICAgICAqIHBy b3RvLiAoR0FTUyBpcyBub3Qgd2FpdGluZyBmb3IgYSBjYWxsYmFjayBub3cuCisrICAgICAgICAg ICAgICovCisrICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVy X2xpc3RlbmVyX2Nsb3NlKG5ld19wcm90byk7CisrICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5FUl9MSVNURU5JTkc6Cist CSAgICAvKgorLQkgICAgICogSWYgd2UgYXJlIGluIHRoZSAibGlzdGVuaW5nIiBzdGF0ZSwgcmVn aXN0ZXJpbmcgdGhlCistCSAgICAgKiBjbG9zZSB3aWxsIGNhdXNlIHRoZSBsaXN0ZW4gY2FsbGJh Y2sgdG8gZmluaXNoLCBhbmQKKy0JICAgICAqIGFmdGVyIHRoYXQgY2FsbHMgdGhlIHVzZXIsIHRo ZSBjbG9zZSBjYWxsYmFjayB3aWxsIGRlbGV0ZQorLQkgICAgICogdGhpbmdzCistCSAgICAgKi8K Ky0JICAgIG5ld19wcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RF TkVSX0NMT1NJTkcxOworLQkgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVy X2xpc3RlbmVyX2Nsb3NlKG5ld19wcm90byk7CistCSAgICBicmVhazsKKy0JICBjYXNlIEdMT0JV U19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQUNDRVBUSU5HOgorLQkgICAgLyoKKy0JICAg ICAqIElmIHdlIGFyZSBpbiB0aGUgImFjY2VwdGluZyIgc3RhdGUsIHJlZ2lzdGVyaW5nIHRoZQor LQkgICAgICogY2xvc2Ugd2lsbCBjYXVzZSBhbnkgb3V0c3RhbmRpbmcgbGlzdGVuIGNhbGxiYWNr cyB0byBmaW5pc2gsCistCSAgICAgKiBmcm9tIHdoZXJlIHdlIGNhbiBjYWxsIGJhY2sgdG8gR0FT Uy4KKy0JICAgICAqLworLQkgICAgbmV3X3Byb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5T RkVSX0hUVFBfTElTVEVORVJfQ0xPU0lORzI7CistCSAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVy X2h0dHBfcmVnaXN0ZXJfbGlzdGVuZXJfY2xvc2UobmV3X3Byb3RvKTsKKy0JICAgIGJyZWFrOwor LQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5FUl9DTE9TSU5HMToKKy0J ICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQ0xPU0lORzI6CistCSAg Y2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVSX0NMT1NFRDoKKy0JICAgIC8q IHNob3VsZCBub3QgaGFwcGVuICovCistCSAgICBnbG9idXNfYXNzZXJ0KG5ld19wcm90by0+c3Rh dGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5FUl9DTE9TSU5HMSk7CistCSAg ICBnbG9idXNfYXNzZXJ0KG5ld19wcm90by0+c3RhdGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJf SFRUUF9MSVNURU5FUl9DTE9TSU5HMik7CistCSAgICBnbG9idXNfYXNzZXJ0KG5ld19wcm90by0+ c3RhdGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNURU5FUl9DTE9TRUQpOworLQkg ICAgYnJlYWs7CistCX0KKysgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAqIElmIHdlIGFy ZSBpbiB0aGUgImxpc3RlbmluZyIgc3RhdGUsIHJlZ2lzdGVyaW5nIHRoZQorKyAgICAgICAgICAg ICAqIGNsb3NlIHdpbGwgY2F1c2UgdGhlIGxpc3RlbiBjYWxsYmFjayB0byBmaW5pc2gsIGFuZAor KyAgICAgICAgICAgICAqIGFmdGVyIHRoYXQgY2FsbHMgdGhlIHVzZXIsIHRoZSBjbG9zZSBjYWxs YmFjayB3aWxsIGRlbGV0ZQorKyAgICAgICAgICAgICAqIHRoaW5ncworKyAgICAgICAgICAgICAq LworKyAgICAgICAgICAgIG5ld19wcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9I VFRQX0xJU1RFTkVSX0NMT1NJTkcxOworKyAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNm ZXJfaHR0cF9yZWdpc3Rlcl9saXN0ZW5lcl9jbG9zZShuZXdfcHJvdG8pOworKyAgICAgICAgICAg IGJyZWFrOworKyAgICAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVO RVJfQUNDRVBUSU5HOgorKyAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICogSWYgd2UgYXJl IGluIHRoZSAiYWNjZXB0aW5nIiBzdGF0ZSwgcmVnaXN0ZXJpbmcgdGhlCisrICAgICAgICAgICAg ICogY2xvc2Ugd2lsbCBjYXVzZSBhbnkgb3V0c3RhbmRpbmcgbGlzdGVuIGNhbGxiYWNrcyB0byBm aW5pc2gsCisrICAgICAgICAgICAgICogZnJvbSB3aGVyZSB3ZSBjYW4gY2FsbCBiYWNrIHRvIEdB U1MuCisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAgbmV3X3Byb3RvLT5zdGF0ZSA9IEdM T0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQ0xPU0lORzI7CisrICAgICAgICAgICAg Z2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX2xpc3RlbmVyX2Nsb3NlKG5ld19w cm90byk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgIGNhc2UgR0xPQlVTX0dBU1Nf VFJBTlNGRVJfSFRUUF9MSVNURU5FUl9DTE9TSU5HMToKKysgICAgICAgICAgY2FzZSBHTE9CVVNf R0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVSX0NMT1NJTkcyOgorKyAgICAgICAgICBjYXNlIEdM T0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQ0xPU0VEOgorKyAgICAgICAgICAgIC8q IHNob3VsZCBub3QgaGFwcGVuICovCisrICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydChuZXdfcHJv dG8tPnN0YXRlICE9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfTElTVEVORVJfQ0xPU0lORzEp OworKyAgICAgICAgICAgIGdsb2J1c19hc3NlcnQobmV3X3Byb3RvLT5zdGF0ZSAhPSBHTE9CVVNf R0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVSX0NMT1NJTkcyKTsKKysgICAgICAgICAgICBnbG9i dXNfYXNzZXJ0KG5ld19wcm90by0+c3RhdGUgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9M SVNURU5FUl9DTE9TRUQpOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorICAgICB9 CisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKyAgICAgZGVidWdf cHJpbnRmKDEsIChfR1RTTCgiZXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsKK0BAIC0yODUyLDI1 ICsyODUyLDI1IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jbG9zZV9saXN0ZW5lcigK KyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Nvbm5lY3RfY2Fs bGJhY2soCistICAgIHZvaWQgKgkJCQkJYXJnLAorLSAgICBnbG9idXNfaW9faGFuZGxlX3QgKgkJ CWhhbmRsZSwKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3VsdCkKKysgICAgdm9pZCAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsCisrICAgIGdsb2J1c19pb19o YW5kbGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfcmVz dWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkKKyB7CistICAgIGNoYXIg KgkJCQkJY21kOworLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9f dCAqCQlwcm90bzsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0 OworLSAgICBpbnQJCQkJCQljb2RlOworLSAgICBjaGFyICoJCQkJCW1zZzsKKysgICAgY2hhciAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQ7CisrICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICogICAgICAgICBwcm90bzsKKysgICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0OworKyAg ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU7CisrICAg IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnOworICAgICBN WU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Nvbm5lY3RfY2FsbGJhY2spOworLSAg ICAKKysKKyAgICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgiRW50ZXJpbmcgJXMoKVxuIiksIG15 bmFtZSkpOworICAgICAvKgorICAgICAgKiBJbiB0aGlzIGZ1bmN0aW9uLCB3ZSBoYXZlIGNvbXBs ZXRlZCB0aGUgVENQIChhbmQgU1NMKQorICAgICAgKiBjb25uZWN0aW9uIHByb3RvY29sLCBhbmQg d2lsbCBzZW5kIG91ciByZXF1ZXN0IHRvIHRoZQorLSAgICAgKiBzZXJ2ZXIgZm9yIHByb2Nlc3Np bmcuIAorKyAgICAgKiBzZXJ2ZXIgZm9yIHByb2Nlc3NpbmcuCisgICAgICAqLworICAgICBwcm90 byA9IChnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqKQorLQlhcmc7 CisrICAgICAgICBhcmc7CisgCisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9sb2Nr KCk7CisgCitAQCAtMjg3OCwzOCArMjg3OCwzOCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfY29ubmVjdF9jYWxsYmFjaygKKyAKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNT KQorICAgICB7CistCS8qCistCSAqIFRPRE86IEV2YWx1YXRlIGVycm9yIG9iamVjdCBoZXJlLCBw dXQgaW50bworLQkgKiBwcm90by0+Y29kZSBhbmQgcHJvdG8tPnJlYXNvbgorLQkgKi8KKy0JZ290 byBkZW55X2V4aXQ7CisrICAgICAgICAvKgorKyAgICAgICAgICogVE9ETzogRXZhbHVhdGUgZXJy b3Igb2JqZWN0IGhlcmUsIHB1dCBpbnRvCisrICAgICAgICAgKiBwcm90by0+Y29kZSBhbmQgcHJv dG8tPnJlYXNvbgorKyAgICAgICAgICovCisrICAgICAgICBnb3RvIGRlbnlfZXhpdDsKKyAgICAg fQorIAorICAgICBjbWQgPSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY29uc3RydWN0X3Jl cXVlc3QocHJvdG8pOworIAorICAgICBpZihjbWQgPT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0J Z290byBkZW55X2V4aXQ7CisrICAgICAgICBnb3RvIGRlbnlfZXhpdDsKKyAgICAgfQorIAorICAg ICAvKiBTZW5kIG91ciBjb21tYW5kIHRvIHRoZSBzZXJ2ZXIgKi8KKyAgICAgZGVidWdfcHJpbnRm KDQsKF9HVFNMKCIlcygpOiBSZWdpc3RlcmluZyB3cml0ZSBvbiAlcFxuIiksCistCQkgICAgbXlu YW1lLAorLQkJICAgICZwcm90by0+aGFuZGxlKSk7CistICAgIAorKyAgICAgICAgICAgICAgICAg ICAgbXluYW1lLAorKyAgICAgICAgICAgICAgICAgICAgJnByb3RvLT5oYW5kbGUpKTsKKysKKyAg ICAgcmVzdWx0ID0gZ2xvYnVzX2lvX3JlZ2lzdGVyX3dyaXRlKAorLQkmcHJvdG8tPmhhbmRsZSwK Ky0JKGdsb2J1c19ieXRlX3QgKikgY21kLAorLQlzdHJsZW4oY21kKSAqIHNpemVvZihjaGFyKSwK Ky0JZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NvbW1hbmRfY2FsbGJhY2ssCistCXByb3Rv KTsKKysgICAgICAgICZwcm90by0+aGFuZGxlLAorKyAgICAgICAgKGdsb2J1c19ieXRlX3QgKikg Y21kLAorKyAgICAgICAgc3RybGVuKGNtZCkgKiBzaXplb2YoY2hhciksCisrICAgICAgICBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY29tbWFuZF9jYWxsYmFjaywKKysgICAgICAgIHByb3Rv KTsKKyAKKyAgICAgaWYocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTKQorICAgICB7CistCXByb3Rv LT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfUkVRVUVTVElORzsKKy0J Z2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworLSAgICAgICAgZGVidWdfcHJp bnRmKDMsIChfR1RTTCgiRXhpdGluZyAlcygpXG4iKSxteW5hbWUpKTsgICAgCistCXJldHVybjsK KysgICAgICAgIHByb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVf UkVRVUVTVElORzsKKysgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2so KTsKKysgICAgICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXlu YW1lKSk7CisrICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgLyogV3JpdGUgcmVnaXN0 cmF0aW9uIGZhaWxlZCwgZmFsbCB0aHJvdWdoIHRvIGRlbnlfZXhpdCAqLworQEAgLTI5MTcsOCAr MjkxNyw4IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jb25uZWN0X2NhbGxiYWNrKAor ICAgICAvKiBHaXZlIGEgZGVmYXVsdCBlcnJvciBtZXNzYWdlLCBpZiBub25lIGlzIGdlbmVyYXRl ZCBhYm92ZSAqLworICAgICBpZihwcm90by0+Y29kZSA9PSAwKQorICAgICB7CistCXByb3RvLT5j b2RlID0gR0xPQlVTX0xfREVGQVVMVF9GQUlMVVJFX0NPREU7CistCXByb3RvLT5yZWFzb24gPSBn bG9idXNfbGliY19zdHJkdXAoR0xPQlVTX0xfREVGQVVMVF9GQUlMVVJFX1JFQVNPTik7CisrICAg ICAgICBwcm90by0+Y29kZSA9IEdMT0JVU19MX0RFRkFVTFRfRkFJTFVSRV9DT0RFOworKyAgICAg ICAgcHJvdG8tPnJlYXNvbiA9IGdsb2J1c19saWJjX3N0cmR1cChHTE9CVVNfTF9ERUZBVUxUX0ZB SUxVUkVfUkVBU09OKTsKKyAgICAgfQorIAorICAgICAvKgorQEAgLTI5NDQsOSArMjk0NCw5IEBA IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jb25uZWN0X2NhbGxiYWNrKAorICAgICAvKiBT aWduYWwgRGVuaWFsIHRvIHRoZSBHQVNTIHN5c3RlbSAqLworICAgICBkZWJ1Z19wcmludGYoMiwg KF9HVFNMKCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlcXVlc3RfZGVuaWVk IikpKTsKKyAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9kZW5pZWQoCist CXJlcXVlc3QsCistCWNvZGUsCistCW1zZyk7CisrICAgICAgICByZXF1ZXN0LAorKyAgICAgICAg Y29kZSwKKysgICAgICAgIG1zZyk7CisgICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRp bmcgJXMoKVxuIiksbXluYW1lKSk7CisgfQorIC8qIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9jb25uZWN0X2NhbGxiYWNrKCkgKi8KK0BAIC0yOTY3LDIwICsyOTY3LDIwIEBAIGdsb2J1c19s X2dhc3NfdHJhbnNmZXJfaHR0cF9jb25uZWN0X2NhbGxiYWNrKAorIHN0YXRpYworIHZvaWQKKyBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY29tbWFuZF9jYWxsYmFjaygKKy0gICAgdm9pZCAq CQkJCWFyZywgCistICAgIGdsb2J1c19pb19oYW5kbGVfdCAqCQloYW5kbGUsIAorLSAgICBnbG9i dXNfcmVzdWx0X3QJCQlyZXN1bHQsCistICAgIGdsb2J1c19ieXRlX3QgKgkJCWJ1ZiwKKy0gICAg Z2xvYnVzX3NpemVfdAkJCW5ieXRlcykKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXJnLAorKyAgICBnbG9idXNfaW9faGFuZGxlX3QgKiAgICAgICAgICAgICAgICBo YW5kbGUsCisrICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwK KysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgYnVmLAorKyAgICBnbG9i dXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMpCisgeworICAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqIHByb3RvOworLSAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3Q7CistICAgIGludAkJCQkJCWNvZGU7Cist ICAgIGNoYXIgKgkJCQkJcmVhc29uOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 X3QgICAgICAgICAgICAgIHJlcXVlc3Q7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29kZTsKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWFzb247CisgICAgIE1ZTkFNRShnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfY29tbWFuZF9jYWxsYmFjayk7CistICAgIAorKworICAgICBkZWJ1Z19wcmludGYo MywgKF9HVFNMKCJFbnRlcmluZyAlcygpXG4iKSxteW5hbWUpKTsKKy0gCisrCisgICAgIC8qCisg ICAgICAqIEluIHRoaXMgZnVuY3Rpb24sIHdlIGhhdmUgY29tcGxldGVkIHNlbmRpbmcgb3VyIHJl cXVlc3QKKyAgICAgICogdG8gdGhlIHNlcnZlci4gSWYgdGhlcmUgd2FzIHNvbWUgc29ydCBvZiBl cnJvciwgd2UKK0BAIC0yOTk0LDcgKzI5OTQsNyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfY29tbWFuZF9jYWxsYmFjaygKKyAKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNT KQorICAgICB7CistCWdvdG8gZGVueV9leGl0OworKyAgICAgICAgZ290byBkZW55X2V4aXQ7Cisg ICAgIH0KKyAgICAgLyoKKyAgICAgICogRnJlZSB0aGUgcmVxdWVzdCBjb21tYW5kIGJ1ZmZlci4K K0BAIC0zMDA3LDcgKzMwMDcsNyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY29tbWFu ZF9jYWxsYmFjaygKKyAgICAgICogVGhlIGJ1ZmZlciBtYXkgaGF2ZSB0byBncm93IGlmIHRoZXJl IGFyZSBhIGxvdCBvZiBoZWFkZXJzLgorICAgICAgKi8KKyAgICAgcHJvdG8tPnJlc3BvbnNlX2J1 ZmZlciA9IGdsb2J1c19tYWxsb2MoR0xPQlVTX0xfR0FTU19SRVNQT05TRV9MRU4gKgorLQkJCQkJ ICAgc2l6ZW9mKGdsb2J1c19ieXRlX3QpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKGdsb2J1c19ieXRlX3QpKTsKKyAgICAgcHJvdG8tPnJlc3Bv bnNlX2J1ZmxlbiA9IEdMT0JVU19MX0dBU1NfUkVTUE9OU0VfTEVOOworICAgICBwcm90by0+cmVz cG9uc2Vfb2Zmc2V0ID0gMDsKKyAgICAgcHJvdG8tPnBhcnNlZF9vZmZzZXQgPSAwOworQEAgLTMw MTYsNjggKzMwMTYsNjggQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NvbW1hbmRfY2Fs bGJhY2soCisgICAgIHsKKyAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1Rf VFlQRV9QVVQ6CisgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVf QVBQRU5EOgorLQkvKgorLQkgKiBJZiB3ZSBhcmUgYSAicHV0IiBvciAiYXBwZW5kIiByZXF1ZXN0 LCB0aGVuIHdlIGNhbiBzdGFydAorLQkgKiBzZW5kaW5nIGRhdGEgc29ydCBvZiBpbW1lZGlhdGVs eS4gU28gd2Ugc2VuZCBhbiAicmVhZHkiCistCSAqIG1lc3NhZ2UgdG8gdGhlIHNlcnZlci4gQSBs aXR0bGUgb3B0aW1pc3RpYywgcGVyaGFwcy4uLgorLQkgKiBXZSB3aWxsIG5vdCByZWdpc3RlciBm b3IgdGhlIHJlc3BvbnNlIG1lc3NhZ2UgdW50aWwKKy0JICogd2UndmUgc2VudCB0aGUgbGFzdCBk YXRhLgorLQkgKi8KKy0JcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9T VEFURV9JRExFOworLQorLQlkZWJ1Z19wcmludGYoNCwoX0dUU0woIiVzKCk6IFJlZ2lzdGVyaW5n IHJlYWQgb24gJXBcbiIpLAorLQkJCW15bmFtZSwKKy0JCQkmcHJvdG8tPmhhbmRsZSkpOworLQkK Ky0JcmVzdWx0ID0gZ2xvYnVzX2lvX3JlZ2lzdGVyX3JlYWQoCistCSAgICAmcHJvdG8tPmhhbmRs ZSwKKy0JICAgIHByb3RvLT5yZXNwb25zZV9idWZmZXIsCistCSAgICBwcm90by0+cmVzcG9uc2Vf YnVmbGVuLAorLQkgICAgMSwKKy0JICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXNw b25zZV9jYWxsYmFjaywKKy0JICAgIHByb3RvKTsKKy0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUND RVNTKQorLQl7CistCSAgICBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZCA9IEdMT0JVU19UUlVFOwor LQl9CistCWdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKy0JCistCWRlYnVn X3ByaW50ZigyLCAoX0dUU0woImNhbGxpbmcgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVx dWVzdF9yZWFkeSIpKSk7CisrICAgICAgICAvKgorKyAgICAgICAgICogSWYgd2UgYXJlIGEgInB1 dCIgb3IgImFwcGVuZCIgcmVxdWVzdCwgdGhlbiB3ZSBjYW4gc3RhcnQKKysgICAgICAgICAqIHNl bmRpbmcgZGF0YSBzb3J0IG9mIGltbWVkaWF0ZWx5LiBTbyB3ZSBzZW5kIGFuICJyZWFkeSIKKysg ICAgICAgICAqIG1lc3NhZ2UgdG8gdGhlIHNlcnZlci4gQSBsaXR0bGUgb3B0aW1pc3RpYywgcGVy aGFwcy4uLgorKyAgICAgICAgICogV2Ugd2lsbCBub3QgcmVnaXN0ZXIgZm9yIHRoZSByZXNwb25z ZSBtZXNzYWdlIHVudGlsCisrICAgICAgICAgKiB3ZSd2ZSBzZW50IHRoZSBsYXN0IGRhdGEuCisr ICAgICAgICAgKi8KKysgICAgICAgIHByb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVS X0hUVFBfU1RBVEVfSURMRTsKKysKKysgICAgICAgIGRlYnVnX3ByaW50Zig0LChfR1RTTCgiJXMo KTogUmVnaXN0ZXJpbmcgcmVhZCBvbiAlcFxuIiksCisrICAgICAgICAgICAgICAgICAgICAgICAg bXluYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICZwcm90by0+aGFuZGxlKSk7CisrCisr ICAgICAgICByZXN1bHQgPSBnbG9idXNfaW9fcmVnaXN0ZXJfcmVhZCgKKysgICAgICAgICAgICAm cHJvdG8tPmhhbmRsZSwKKysgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyLAorKyAg ICAgICAgICAgIHByb3RvLT5yZXNwb25zZV9idWZsZW4sCisrICAgICAgICAgICAgMSwKKysgICAg ICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVzcG9uc2VfY2FsbGJhY2ssCisr ICAgICAgICAgICAgcHJvdG8pOworKyAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNT KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHByb3RvLT5mYWlsdXJlX29jY3VycmVkID0gR0xP QlVTX1RSVUU7CisrICAgICAgICB9CisrICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfdW5sb2NrKCk7CisrCisrICAgICAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5n IGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlcXVlc3RfcmVhZHkiKSkpOworIAorICAgICAg ICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9yZWFkeSgKKy0JICAgIHByb3Rv LT5yZXF1ZXN0LAorLQkgICAgKGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAq KSBwcm90byk7CisrICAgICAgICAgICAgcHJvdG8tPnJlcXVlc3QsCisrICAgICAgICAgICAgKGds b2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAqKSBwcm90byk7CisgCisgCisgICAg ICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nICVzKClcbiIpLG15bmFtZSkpOwor LQlyZXR1cm47CisrICAgICAgICByZXR1cm47CisgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFO U0ZFUl9SRVFVRVNUX1RZUEVfR0VUOgorLQkvKgorLQkgKiBJZiB3ZSBhcmUgYSAiR0VUIiByZXF1 ZXN0IHdlIGNhbid0IGRvIGFueXRoaW5nCistCSAqIHVudGlsIHRoZSBzZXJ2ZXIgc2VuZHMgdXMg c29tZSBpbmZvLCBhbnl3YXkKKy0JICovCistCWRlYnVnX3ByaW50Zig0LChfR1RTTCgiJXMoKTog UmVnaXN0ZXJpbmcgcmVhZCBvbiAlcFxuIiksCistCQkJbXluYW1lLAorLQkJCSZwcm90by0+aGFu ZGxlKSk7CistCXJlc3VsdCA9IGdsb2J1c19pb19yZWdpc3Rlcl9yZWFkKAorLQkgICAgJnByb3Rv LT5oYW5kbGUsCistCSAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyLAorLQkgICAgcHJvdG8tPnJl c3BvbnNlX2J1ZmxlbiwKKy0JICAgIDEsCistCSAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfcmVzcG9uc2VfY2FsbGJhY2ssCistCSAgICBwcm90byk7CistCWlmKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKy0JeworLQkgICAgLyogc2hvdWxkIGludGVycHJldCB0aGUgZXJyb3Igb2Jq ZWN0ICovCistCSAgICBnb3RvIGRlbnlfZXhpdDsKKy0JfQorLQlnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfdW5sb2NrKCk7CisrICAgICAgICAvKgorKyAgICAgICAgICogSWYgd2UgYXJlIGEg IkdFVCIgcmVxdWVzdCB3ZSBjYW4ndCBkbyBhbnl0aGluZworKyAgICAgICAgICogdW50aWwgdGhl IHNlcnZlciBzZW5kcyB1cyBzb21lIGluZm8sIGFueXdheQorKyAgICAgICAgICovCisrICAgICAg ICBkZWJ1Z19wcmludGYoNCwoX0dUU0woIiVzKCk6IFJlZ2lzdGVyaW5nIHJlYWQgb24gJXBcbiIp LAorKyAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAmcHJvdG8tPmhhbmRsZSkpOworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lvX3JlZ2lz dGVyX3JlYWQoCisrICAgICAgICAgICAgJnByb3RvLT5oYW5kbGUsCisrICAgICAgICAgICAgcHJv dG8tPnJlc3BvbnNlX2J1ZmZlciwKKysgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmbGVu LAorKyAgICAgICAgICAgIDEsCisrICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgIHByb3RvKTsKKysgICAgICAgIGlm KHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICAvKiBz aG91bGQgaW50ZXJwcmV0IHRoZSBlcnJvciBvYmplY3QgKi8KKysgICAgICAgICAgICBnb3RvIGRl bnlfZXhpdDsKKysgICAgICAgIH0KKysgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF91bmxvY2soKTsKKyAgICAgICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgJXMo KVxuIiksbXluYW1lKSk7CistCXJldHVybjsKKysgICAgICAgIHJldHVybjsKKyAgICAgICBkZWZh dWx0OgorLQlnbG9idXNfYXNzZXJ0KHByb3RvLT50eXBlICE9CistCQkgICAgICBHTE9CVVNfR0FT U19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfSU5WQUxJRCk7CistCWdvdG8gZGVueV9leGl0OworKyAg ICAgICAgZ2xvYnVzX2Fzc2VydChwcm90by0+dHlwZSAhPQorKyAgICAgICAgICAgICAgICAgICAg ICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfSU5WQUxJRCk7CisrICAgICAgICBn b3RvIGRlbnlfZXhpdDsKKyAgICAgfQorIAorICAgZGVueV9leGl0OgorQEAgLTMwODksMTMgKzMw ODksMTMgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NvbW1hbmRfY2FsbGJhY2soCisg ICAgIC8qIEdpdmUgYSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UsIGlmIG5vbmUgaXMgZ2VuZXJhdGVk IGFib3ZlICovCisgICAgIGlmKHByb3RvLT5jb2RlID09IDApCisgICAgIHsKKy0JcHJvdG8tPmNv ZGUgPSBHTE9CVVNfTF9ERUZBVUxUX0ZBSUxVUkVfQ09ERTsKKy0JcHJvdG8tPnJlYXNvbiA9IGds b2J1c19saWJjX3N0cmR1cChHTE9CVVNfTF9ERUZBVUxUX0ZBSUxVUkVfUkVBU09OKTsKKysgICAg ICAgIHByb3RvLT5jb2RlID0gR0xPQlVTX0xfREVGQVVMVF9GQUlMVVJFX0NPREU7CisrICAgICAg ICBwcm90by0+cmVhc29uID0gZ2xvYnVzX2xpYmNfc3RyZHVwKEdMT0JVU19MX0RFRkFVTFRfRkFJ TFVSRV9SRUFTT04pOworICAgICB9CisgCisgICAgIHJlcXVlc3QgPSBwcm90by0+cmVxdWVzdDsK KyAgICAgY29kZSA9IHByb3RvLT5jb2RlOworLSAgICByZWFzb24gPSBnbG9idXNfbGliY19zdHJk dXAocHJvdG8tPnJlYXNvbik7IAorKyAgICByZWFzb24gPSBnbG9idXNfbGliY19zdHJkdXAocHJv dG8tPnJlYXNvbik7CisgCisgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9yZWdpc3Rlcl9jbG9zZShwcm90byk7CisgCitAQCAtMzEwMywxNSArMzEwMywxNSBAQCBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY29tbWFuZF9jYWxsYmFjaygKKyAgICAgeworICAgICAg ICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Nsb3NlKHByb3RvKTsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworIAorICAg ICAvKiBTaWduYWwgRGVuaWFsIHRvIHRoZSBHQVNTIHN5c3RlbSAqLworICAgICBkZWJ1Z19wcmlu dGYoMiwgKF9HVFNMKCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlcXVlc3Rf ZGVuaWVkIikpKTsKKyAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9kZW5p ZWQoCistCXJlcXVlc3QsCistCWNvZGUsCistCXJlYXNvbik7CisrICAgICAgICByZXF1ZXN0LAor KyAgICAgICAgY29kZSwKKysgICAgICAgIHJlYXNvbik7CisgICAgIGRlYnVnX3ByaW50ZigzLCAo X0dUU0woIkV4aXRpbmcgJXMoKVxuIiksbXluYW1lKSk7CisgfQorIC8qIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9jb21tYW5kX2NhbGxiYWNrKCkgKi8KK0BAIC0zMTE5LDE1ICszMTE5LDE1 IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jb21tYW5kX2NhbGxiYWNrKAorIHN0YXRp YworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVzcG9uc2VfY2FsbGJhY2so CistICAgIHZvaWQgKgkJCQkJYXJnLAorLSAgICBnbG9idXNfaW9faGFuZGxlX3QgKgkJCWhhbmRs ZSwKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3VsdCwKKy0gICAgZ2xvYnVzX2J5dGVfdCAq CQkJCWJ1ZiwKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQluYnl0ZXMpCisrICAgIHZvaWQgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLAorKyAgICBnbG9idXNfaW9faGFu ZGxlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX3Jlc3Vs dF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisrICAgIGdsb2J1c19ieXRl X3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorKyAgICBnbG9idXNfc2l6ZV90 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlcykKKyB7CistICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICoJCXByb3RvOworLSAgICBnbG9idXNf b2JqZWN0X3QgKgkJCQllcnI9R0xPQlVTX05VTEw7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVy X3JlcXVlc3RfdAkJcmVxdWVzdDsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1 ZXN0X3Byb3RvX3QgKiAgICAgICAgIHByb3RvOworKyAgICBnbG9idXNfb2JqZWN0X3QgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVycj1HTE9CVVNfTlVMTDsKKysgICAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0OworICAgICBpbnQgY29kZTsK KyAgICAgY2hhciAqIHJlYXNvbjsKKyAgICAgTVlOQU1FKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9yZXNwb25zZV9jYWxsYmFjayk7CitAQCAtMzEzOCwxMCArMzEzOCwxMCBAQCBnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVzcG9uc2VfY2FsbGJhY2soCisgICAgIHsKKyAgICAgICAg IGNoYXIgKiB0bXBzdHI7CisgCistCWVyciA9IGdsb2J1c19lcnJvcl9nZXQocmVzdWx0KTsKKy0J dG1wc3RyID0gZ2xvYnVzX29iamVjdF9wcmludGFibGVfdG9fc3RyaW5nKGVycik7CistCWRlYnVn X3ByaW50Zig1LCAoX0dUU0woImdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWFkX2NhbGxi YWNrKCk6ICVzIiksIHRtcHN0cikpOworLQlnbG9idXNfbGliY19mcmVlKHRtcHN0cik7CisrICAg ICAgICBlcnIgPSBnbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCk7CisrICAgICAgICB0bXBzdHIgPSBn bG9idXNfb2JqZWN0X3ByaW50YWJsZV90b19zdHJpbmcoZXJyKTsKKysgICAgICAgIGRlYnVnX3By aW50Zig1LCAoX0dUU0woImdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWFkX2NhbGxiYWNr KCk6ICVzIiksIHRtcHN0cikpOworKyAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOwor ICAgICB9CisgCisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9sb2NrKCk7CitAQCAt MzE1MSwxMyArMzE1MSwxMyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVzcG9uc2Vf Y2FsbGJhY2soCisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUyAmJgorICAgICAgICAh Z2xvYnVzX2lvX2VvZihlcnIpKQorICAgICB7CistCWlmKHByb3RvLT50eXBlID09IEdMT0JVU19H QVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9QVVQgfHwKKy0JICAgcHJvdG8tPnR5cGUgPT0gR0xP QlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0FQUEVORCkKKy0JeworLQkgICAgZ290byBw dXRfZmFpbF9leGl0OworLQl9CisrICAgICAgICBpZihwcm90by0+dHlwZSA9PSBHTE9CVVNfR0FT U19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfUFVUIHx8CisrICAgICAgICAgICBwcm90by0+dHlwZSA9 PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfQVBQRU5EKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGdvdG8gcHV0X2ZhaWxfZXhpdDsKKysgICAgICAgIH0KKyAKKy0JcmVzdWx0 ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX2Nsb3NlKHByb3RvKTsKKysg ICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9z ZShwcm90byk7CisgCisgICAgICAgICBpZiAocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAg ICAgICAgeworQEAgLTMxNjUsMjIgKzMxNjUsMjIgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX3Jlc3BvbnNlX2NhbGxiYWNrKAorICAgICAgICAgfQorIAorIAorLQlnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisrICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVy X2h0dHBfdW5sb2NrKCk7CisgCistCS8qIFRPRE86IEV2YWx1YXRlIGVycm9yIG9iamVjdCwgb3Ig cmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyIGhlcmUgKi8KKy0JZGVidWdfcHJpbnRmKDIsIChfR1RT TCgiY2FsbGluZyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZXF1ZXN0X2RlbmllZCIpKSk7 CistCWdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlcXVlc3RfZGVuaWVkKAorLQkgICAgcmVx dWVzdCwKKy0JICAgIEdMT0JVU19MX0RFRkFVTFRfRkFJTFVSRV9DT0RFLAorLQkgICAgZ2xvYnVz X2xpYmNfc3RyZHVwKEdMT0JVU19MX0RFRkFVTFRfRkFJTFVSRV9SRUFTT04pKTsKKysgICAgICAg IC8qIFRPRE86IEV2YWx1YXRlIGVycm9yIG9iamVjdCwgb3IgcmVzcG9uc2UgZnJvbSB0aGUgc2Vy dmVyIGhlcmUgKi8KKysgICAgICAgIGRlYnVnX3ByaW50ZigyLCAoX0dUU0woImNhbGxpbmcgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9kZW5pZWQiKSkpOworKyAgICAgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9kZW5pZWQoCisrICAgICAgICAgICAgcmVx dWVzdCwKKysgICAgICAgICAgICBHTE9CVVNfTF9ERUZBVUxUX0ZBSUxVUkVfQ09ERSwKKysgICAg ICAgICAgICBnbG9idXNfbGliY19zdHJkdXAoR0xPQlVTX0xfREVGQVVMVF9GQUlMVVJFX1JFQVNP TikpOworIAorLQlpZihlcnIpCistCXsKKy0JICAgIGdsb2J1c19vYmplY3RfZnJlZShlcnIpOwor LQl9CisrICAgICAgICBpZihlcnIpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX29i amVjdF9mcmVlKGVycik7CisrICAgICAgICB9CisgCistICAgICAgICBkZWJ1Z19wcmludGYoMywg KF9HVFNMKCJFeGl0aW5nIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXNwb25zZV9jYWxs YmFjaygpXG4iKSkpOyAgICAgICAgCistCXJldHVybjsKKysgICAgICAgIGRlYnVnX3ByaW50Zigz LCAoX0dUU0woIkV4aXRpbmcgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Jlc3BvbnNlX2Nh bGxiYWNrKClcbiIpKSk7CisrICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgLyogVXBk YXRlIG91ciBjb3VudGVycyAqLworQEAgLTMxODgsNDE4ICszMTg4LDQxOCBAQCBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfcmVzcG9uc2VfY2FsbGJhY2soCisgCisgICAgIGRvCisgICAgIHsK Ky0JLyogUGFyc2UgdGhlIGJ1ZmZlciB0aGF0IHdlIGhhdmUgKi8KKy0JaWYoZ2xvYnVzX2xfZ2Fz c190cmFuc2Zlcl9odHRwX3BhcnNlX3Jlc3BvbnNlKHByb3RvKSkKKy0JeworLQkgICAgLyogcmV0 dXJucyB0cnVlLCBpZiB3ZSBuZWVkIHRvIHJlYWQgc29tZSBtb3JlICovCistCSAgICBnb3RvIHJl cG9zdF9yZWFkOworLQl9CistCistCXN3aXRjaChwcm90by0+dHlwZSkKKy0JeworLQkgIGNhc2Ug R0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0dFVDoKKy0JICAgIC8qIElmIGl0IGlz IGEgR0VUIHJlcXVlc3QsIHdlIG5lZWQgYW4gYWZmaXJtYXRpdmUKKy0JICAgICAqIHJlc3BvbnNl LCBvciBhIGNvbnRpbnVlLCBvciBhIHJlZmVycmFsCistCSAgICAgKi8KKy0JICAgIGlmKHByb3Rv LT5jb2RlIDwgMTAwIHx8CistCSAgICAgICBwcm90by0+Y29kZSA+PSA0MDApCistCSAgICB7Cist CQkvKiBEZW5pZWQgKi8KKy0JCWdvdG8gZGVueV9leGl0OworLQkgICAgfQorLQkgICAgZWxzZSBp Zihwcm90by0+Y29kZSA+PSAxMDAgJiYKKy0JCSAgICBwcm90by0+Y29kZSA8IDIwMCkKKy0JICAg IHsKKy0JCS8qCistCQkgKiBDb250aW51ZS4uLiBSZXNldCBvdXIgcmVzcG9uc2UgYnVmZmVycywK Ky0JCSAqIGFuZCBnZXQgYW5vdGhlciBzZXQgb2YgaGVhZGVycworLQkJICovCistCQltZW1tb3Zl KHByb3RvLT5yZXNwb25zZV9idWZmZXIsCistCQkJcHJvdG8tPnJlc3BvbnNlX2J1ZmZlciArIHBy b3RvLT5wYXJzZWRfb2Zmc2V0LAorLQkJCXByb3RvLT5yZXNwb25zZV9vZmZzZXQgLSBwcm90by0+ cGFyc2VkX29mZnNldCk7CistCistCQlwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC09IHByb3RvLT5w YXJzZWRfb2Zmc2V0OworLQkJcHJvdG8tPnBhcnNlZF9vZmZzZXQgPSAwOworLQorLQkJaWYocHJv dG8tPnJlYXNvbikKKy0JCXsKKy0JCSAgICBnbG9idXNfZnJlZShwcm90by0+cmVhc29uKTsKKy0J CX0KKy0JCXByb3RvLT5jb2RlID0gMDsKKy0JCXByb3RvLT5yZWFzb24gPSBHTE9CVVNfTlVMTDsK Ky0KKy0JCWdsb2J1c19pX2dhc3NfdHJhbnNmZXJfa2V5dmFsdWVfZGVzdHJveSgKKy0JCSAgICAm cHJvdG8tPmhlYWRlcnMpOworLQorLQkJLyoKKy0JCSAqIFRoZXJlIG1heSBiZSBtb3JlIGhlYWRl cnMgaW4gb3VyIGJ1ZmZlciwgc28KKy0JCSAqIHdlIHNob3VsZCBnbyB0aHJvdWdoIHRoZSBwYXJz ZSBsb29wIGFnYWluLAorLQkJICogbWF5YmUKKy0JCSAqLworLQkJaWYocHJvdG8tPnJlc3BvbnNl X29mZnNldCAhPSAwKQorLQkJeworLQkJICAgIGNvbnRpbnVlOworLQkJfQorLQkJZWxzZQorLQkJ eworLQkJICAgIGdvdG8gcmVwb3N0X3JlYWQ7CistCQl9CistCSAgICB9CistCSAgICBlbHNlIGlm KHByb3RvLT5jb2RlID49IDMwMCAmJgorLQkJICAgIHByb3RvLT5jb2RlIDwgNDAwKQorLQkgICAg eworLQkJY2hhciAqKiByZWZlcnJhbDsKKy0JCWdsb2J1c19zaXplX3QgcmVmZXJyYWxfY291bnQ7 CistCQkvKiBXZSd2ZSBnb3QgYSByZWZlcnJhbCBmcm9tIHRoZSBzZXJ2ZXIgKi8KKy0JCWdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9leHRyYWN0X3JlZmVycmFsKHByb3RvLAorLQkJCQkJCQkg ICAgICZyZWZlcnJhbCwKKy0JCQkJCQkJICAgICAmcmVmZXJyYWxfY291bnQpOworLQorLQkJaWYo cmVmZXJyYWwgPT0gR0xPQlVTX05VTEwpCistCQl7CistCQkgICAgZ290byBkZW55X2V4aXQ7Cist CQl9CistCQllbHNlCistCQl7CistCQkgICAgLyogSWYgdGhpcyBpcyBhIGdldCByZXF1ZXN0LCB0 aGVuIHRoZSBwcm90byBsYXllcgorLQkJICAgICAqIGRvZXNuJ3QgaGF2ZSBhIHBvaW50ZXIgdG8g dGhpcyBwcm90byB5ZXQsCistCQkgICAgICogc28gd2UgbmVlZCB0byBhY3QgbGlrZSB0aGV5J3Zl IGRlc3Ryb3llZCB0aGVpcgorLQkJICAgICAqIHJlZmVyZW5jZSB0byBpdAorLQkJICAgICAqLwor LQkJICAgIHByb3RvLT5kZXN0cm95X2NhbGxlZCA9IEdMT0JVU19UUlVFOworLQkJICAgIHJlc3Vs dCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZShwcm90byk7Cisr ICAgICAgICAvKiBQYXJzZSB0aGUgYnVmZmVyIHRoYXQgd2UgaGF2ZSAqLworKyAgICAgICAgaWYo Z2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3BhcnNlX3Jlc3BvbnNlKHByb3RvKSkKKysgICAg ICAgIHsKKysgICAgICAgICAgICAvKiByZXR1cm5zIHRydWUsIGlmIHdlIG5lZWQgdG8gcmVhZCBz b21lIG1vcmUgKi8KKysgICAgICAgICAgICBnb3RvIHJlcG9zdF9yZWFkOworKyAgICAgICAgfQor KworKyAgICAgICAgc3dpdGNoKHByb3RvLT50eXBlKQorKyAgICAgICAgeworKyAgICAgICAgICBj YXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9HRVQ6CisrICAgICAgICAgICAg LyogSWYgaXQgaXMgYSBHRVQgcmVxdWVzdCwgd2UgbmVlZCBhbiBhZmZpcm1hdGl2ZQorKyAgICAg ICAgICAgICAqIHJlc3BvbnNlLCBvciBhIGNvbnRpbnVlLCBvciBhIHJlZmVycmFsCisrICAgICAg ICAgICAgICovCisrICAgICAgICAgICAgaWYocHJvdG8tPmNvZGUgPCAxMDAgfHwKKysgICAgICAg ICAgICAgICBwcm90by0+Y29kZSA+PSA0MDApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICAvKiBEZW5pZWQgKi8KKysgICAgICAgICAgICAgICAgZ290byBkZW55X2V4aXQ7CisrICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYocHJvdG8tPmNvZGUgPj0gMTAwICYmCisr ICAgICAgICAgICAgICAgICAgICBwcm90by0+Y29kZSA8IDIwMCkKKysgICAgICAgICAgICB7Cisr ICAgICAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICAgICAqIENvbnRpbnVlLi4uIFJlc2V0 IG91ciByZXNwb25zZSBidWZmZXJzLAorKyAgICAgICAgICAgICAgICAgKiBhbmQgZ2V0IGFub3Ro ZXIgc2V0IG9mIGhlYWRlcnMKKysgICAgICAgICAgICAgICAgICovCisrICAgICAgICAgICAgICAg IG1lbW1vdmUocHJvdG8tPnJlc3BvbnNlX2J1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAg ICBwcm90by0+cmVzcG9uc2VfYnVmZmVyICsgcHJvdG8tPnBhcnNlZF9vZmZzZXQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHByb3RvLT5wYXJzZWRf b2Zmc2V0KTsKKysKKysgICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtPSBw cm90by0+cGFyc2VkX29mZnNldDsKKysgICAgICAgICAgICAgICAgcHJvdG8tPnBhcnNlZF9vZmZz ZXQgPSAwOworKworKyAgICAgICAgICAgICAgICBpZihwcm90by0+cmVhc29uKQorKyAgICAgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShwcm90by0+cmVhc29u KTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBwcm90by0+Y29kZSA9IDA7 CisrICAgICAgICAgICAgICAgIHByb3RvLT5yZWFzb24gPSBHTE9CVVNfTlVMTDsKKysKKysgICAg ICAgICAgICAgICAgZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9rZXl2YWx1ZV9kZXN0cm95KAorKyAg ICAgICAgICAgICAgICAgICAgJnByb3RvLT5oZWFkZXJzKTsKKysKKysgICAgICAgICAgICAgICAg LyoKKysgICAgICAgICAgICAgICAgICogVGhlcmUgbWF5IGJlIG1vcmUgaGVhZGVycyBpbiBvdXIg YnVmZmVyLCBzbworKyAgICAgICAgICAgICAgICAgKiB3ZSBzaG91bGQgZ28gdGhyb3VnaCB0aGUg cGFyc2UgbG9vcCBhZ2FpbiwKKysgICAgICAgICAgICAgICAgICogbWF5YmUKKysgICAgICAgICAg ICAgICAgICovCisrICAgICAgICAgICAgICAgIGlmKHByb3RvLT5yZXNwb25zZV9vZmZzZXQgIT0g MCkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisr ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgICAgICBnb3RvIHJlcG9zdF9yZWFkOworKyAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYocHJvdG8tPmNvZGUg Pj0gMzAwICYmCisrICAgICAgICAgICAgICAgICAgICBwcm90by0+Y29kZSA8IDQwMCkKKysgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgIGNoYXIgKiogcmVmZXJyYWw7CisrICAgICAgICAg ICAgICAgIGdsb2J1c19zaXplX3QgcmVmZXJyYWxfY291bnQ7CisrICAgICAgICAgICAgICAgIC8q IFdlJ3ZlIGdvdCBhIHJlZmVycmFsIGZyb20gdGhlIHNlcnZlciAqLworKyAgICAgICAgICAgICAg ICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZXh0cmFjdF9yZWZlcnJhbChwcm90bywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnJlZmVycmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmcmVmZXJyYWxfY291bnQpOworKworKyAgICAgICAgICAgICAg ICBpZihyZWZlcnJhbCA9PSBHTE9CVVNfTlVMTCkKKysgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgZ290byBkZW55X2V4aXQ7CisrICAgICAgICAgICAgICAgIH0KKysgICAg ICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAg ICAvKiBJZiB0aGlzIGlzIGEgZ2V0IHJlcXVlc3QsIHRoZW4gdGhlIHByb3RvIGxheWVyCisrICAg ICAgICAgICAgICAgICAgICAgKiBkb2Vzbid0IGhhdmUgYSBwb2ludGVyIHRvIHRoaXMgcHJvdG8g eWV0LAorKyAgICAgICAgICAgICAgICAgICAgICogc28gd2UgbmVlZCB0byBhY3QgbGlrZSB0aGV5 J3ZlIGRlc3Ryb3llZCB0aGVpcgorKyAgICAgICAgICAgICAgICAgICAgICogcmVmZXJlbmNlIHRv IGl0CisrICAgICAgICAgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICAgICAgICAgIHByb3Rv LT5kZXN0cm95X2NhbGxlZCA9IEdMT0JVU19UUlVFOworKyAgICAgICAgICAgICAgICAgICAgcmVz dWx0ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX2Nsb3NlKHByb3RvKTsK KyAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAg ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fz c190cmFuc2Zlcl9odHRwX2Nsb3NlKHByb3RvKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0J CSAgICAKKy0JCSAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CistCQkg ICAgZGVidWdfcHJpbnRmKDIsIChfR1RTTCgiY2FsbGluZyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9w cm90b19yZXF1ZXN0X3JlZmVycmVkIikpKTsKKy0JCSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9w cm90b19yZXF1ZXN0X3JlZmVycmVkKAorLQkJCXJlcXVlc3QsCistCQkJcmVmZXJyYWwsCistCQkJ cmVmZXJyYWxfY291bnQpOworLQkJICAgIHJldHVybjsKKy0JCX0KKy0JICAgIH0KKy0JICAgIGVs c2UKKy0JICAgIHsKKy0JCS8qCistCQkgKiBTdWNjZXNzZnVsIHJlc3BvbnNlIGZvciB0aGUgImdl dCIsIGNoZWNrIGZvcgorLQkJICogaW50ZXJlc3RpbmcgaGVhZGVycywgYW5kIGluZGljYXRlICJy ZWFkeSIgdG8KKy0JCSAqIHRoZSBHQVNTIHN5c3RlbS4gKG5vdGUgdGhhdCBmaXJzdCByZWFkIHdp bGwKKy0JCSAqIGhhdmUgdG8gZGVhbCB3aXRoIHRoZSBkYXRhIGluIAorLQkJICogcHJvdG8tPnJl c3BvbnNlX2J1ZmZlcikKKy0JCSAqLworLQkJY2hhciAqCQkJdmFsdWU7CistCistCQkvKgorLQkJ ICogTG9vayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBoZWFkZXJzIHdlCistCQkgKiBjYXJlIGFi b3V0CistCQkgKi8KKy0JCXZhbHVlID0gZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9rZXl2YWx1ZV9s b29rdXAoCistCQkgICAgJnByb3RvLT5oZWFkZXJzLAorLQkJICAgICJ0cmFuc2Zlci1lbmNvZGlu ZyIpOworLQkJaWYodmFsdWUpCistCQl7CistCQkgICAgY2hhciAqCQkJdG1wOworLQorLQkJICAg IGZvcih0bXAgPSB2YWx1ZTsgKnRtcCAhPSAnXDAnOyB0bXArKykKKy0JCSAgICB7CistCQkJaWYo ISBpc3NwYWNlKCp0bXApKQorLQkJCXsKKy0JCQkgICAgYnJlYWs7CistCQkJfQorLQkJICAgIH0K KysKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxv Y2soKTsKKysgICAgICAgICAgICAgICAgICAgIGRlYnVnX3ByaW50ZigyLCAoX0dUU0woImNhbGxp bmcgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9yZWZlcnJlZCIpKSk7CisrICAg ICAgICAgICAgICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZXF1ZXN0X3JlZmVy cmVkKAorKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsCisrICAgICAgICAgICAgICAg ICAgICAgICAgcmVmZXJyYWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJyYWxfY291 bnQpOworKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIC8qCisrICAgICAgICAgICAgICAgICAqIFN1Y2Nlc3NmdWwgcmVzcG9uc2UgZm9y IHRoZSAiZ2V0IiwgY2hlY2sgZm9yCisrICAgICAgICAgICAgICAgICAqIGludGVyZXN0aW5nIGhl YWRlcnMsIGFuZCBpbmRpY2F0ZSAicmVhZHkiIHRvCisrICAgICAgICAgICAgICAgICAqIHRoZSBH QVNTIHN5c3RlbS4gKG5vdGUgdGhhdCBmaXJzdCByZWFkIHdpbGwKKysgICAgICAgICAgICAgICAg ICogaGF2ZSB0byBkZWFsIHdpdGggdGhlIGRhdGEgaW4KKysgICAgICAgICAgICAgICAgICogcHJv dG8tPnJlc3BvbnNlX2J1ZmZlcikKKysgICAgICAgICAgICAgICAgICovCisrICAgICAgICAgICAg ICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgIHZhbHVlOworKworKyAgICAgICAgICAgICAgICAv KgorKyAgICAgICAgICAgICAgICAgKiBMb29rIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGhlYWRl cnMgd2UKKysgICAgICAgICAgICAgICAgICogY2FyZSBhYm91dAorKyAgICAgICAgICAgICAgICAg Ki8KKysgICAgICAgICAgICAgICAgdmFsdWUgPSBnbG9idXNfaV9nYXNzX3RyYW5zZmVyX2tleXZh bHVlX2xvb2t1cCgKKysgICAgICAgICAgICAgICAgICAgICZwcm90by0+aGVhZGVycywKKysgICAg ICAgICAgICAgICAgICAgICJ0cmFuc2Zlci1lbmNvZGluZyIpOworKyAgICAgICAgICAgICAgICBp Zih2YWx1ZSkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgY2hhciAq ICAgICAgICAgICAgICAgICAgICAgIHRtcDsKKysKKysgICAgICAgICAgICAgICAgICAgIGZvcih0 bXAgPSB2YWx1ZTsgKnRtcCAhPSAnXDAnOyB0bXArKykKKysgICAgICAgICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgICAgICAgICBpZighIGlzc3BhY2UoKnRtcCkpCisrICAgICAgICAg ICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysg ICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICB9CisgI2lmbmRl ZiBUQVJHRVRfQVJDSF9XSU4zMgorLQkJICAgIGlmKHN0cm5jYXNlY21wKHRtcCwgImNodW5rZWQi LCBzdHJsZW4oImNodW5rZWQiKSkgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgIGlmKHN0cm5j YXNlY21wKHRtcCwgImNodW5rZWQiLCBzdHJsZW4oImNodW5rZWQiKSkgPT0gMCkKKyAjZWxzZQor LQkJICAgIGlmKHN0cm5pY21wKHRtcCwgImNodW5rZWQiLCBzdHJsZW4oImNodW5rZWQiKSkgPT0g MCkKKysgICAgICAgICAgICAgICAgICAgIGlmKHN0cm5pY21wKHRtcCwgImNodW5rZWQiLCBzdHJs ZW4oImNodW5rZWQiKSkgPT0gMCkKKyAjZW5kaWYKKy0JCSAgICB7CistCQkJcHJvdG8tPnJlY3Zf YnVmZmVyID0KKy0JCQkgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlY2VpdmU7Cist CQkJcHJvdG8tPmNodW5rZWQgPSBHTE9CVVNfVFJVRTsKKy0JCQlwcm90by0+cmVjdl9zdGF0ZSA9 CistCQkJICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19TSVpF OworLQkJCXByb3RvLT5sZW5ndGggPSAwOworLQkJICAgIH0KKy0JCX0KKy0JCWlmKCFwcm90by0+ Y2h1bmtlZCkKKy0JCXsKKy0JCSAgICAvKiBJZiBib3RoCistCQkgICAgICogVHJhbnNmZXItRW5j b2Rpbmc6IGNodW5rZWQgYW5kCistCQkgICAgICogQ29udGVudC1MZW5ndGg6IDxzb21ldGhpbmc+ CistCQkgICAgICogYXJlIHBhc3NlZCwgdGhlIENvbnRlbnQtbGVuZ3RoIHNob3VsZCBiZSBpZ25v cmVkLAorLQkJICAgICAqIGFjY29yZGluZyB0byBSRkMgMjA2OAorLQkJICAgICAqLworLQkJICAg IHZhbHVlID0gZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9rZXl2YWx1ZV9sb29rdXAoCistCQkJJnBy b3RvLT5oZWFkZXJzLAorLQkJCSJjb250ZW50LWxlbmd0aCIpOworLQorLQkJICAgIGlmKHZhbHVl KQorLQkJICAgIHsKKy0JCQlpbnQJCQlzYXZlX2Vycm5vOworLQkJCWNoYXIgKgkJCXRtcDsKKy0K Ky0JCQlmb3IodG1wID0gdmFsdWU7ICp0bXAgIT0gJ1wwJzsgdG1wKyspCistCQkJeworLQkJCSAg ICBpZighIGlzc3BhY2UoKnRtcCkpCistCQkJICAgIHsKKy0JCQkJYnJlYWs7CistCQkJICAgIH0K Ky0JCQl9CistCQkJZ2xvYnVzX2xpYmNfbG9jaygpOworLQkJCWVycm5vPTA7CistCQkJcHJvdG8t Pmxlbmd0aCA9IHN0cnRvdWwodG1wLAorLQkJCQkJCUdMT0JVU19OVUxMLAorLQkJCQkJCTEwKTsK Ky0JCQlzYXZlX2Vycm5vPWVycm5vOworLQkJCWdsb2J1c19saWJjX3VubG9jaygpOworLQkJCWlm KHNhdmVfZXJybm8gIT0gMCkKKy0JCQl7CistCQkJICAgIHByb3RvLT5jb2RlID0gR0xPQlVTX0xf UFJPVE9DT0xfRkFJTFVSRV9DT0RFOworLQkJCSAgICBwcm90by0+cmVhc29uID0gZ2xvYnVzX2xp YmNfc3RyZHVwKAorLQkJCQlHTE9CVVNfTF9QUk9UT0NPTF9GQUlMVVJFX1JFQVNPTik7CistCQkJ ICAgIGdvdG8gZGVueV9leGl0OworLQkJCX0KKy0JCQlpZihwcm90by0+bGVuZ3RoID09IDApCist CQkJeworLQkJCSAgICBwcm90by0+cmVjdl9zdGF0ZSA9CistCQkJCUdMT0JVU19HQVNTX1RSQU5T RkVSX0hUVFBfUkVDVl9TVEFURV9FUlJPUjsKKy0JCQl9CistCQkJZWxzZQorLQkJCXsKKy0JCQkg ICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorLQkJCQlHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JF Q1ZfU1RBVEVfVU5USUxfTEVOR1RIOworLQkJCX0KKy0JCSAgICB9CistCQkgICAgZWxzZQorLQkJ ICAgIHsKKy0JCQlwcm90by0+cmVjdl9zdGF0ZSA9CistCQkJICAgIEdMT0JVU19HQVNTX1RSQU5T RkVSX0hUVFBfUkVDVl9TVEFURV9VTlRJTF9FT0Y7CistCQkgICAgfQorLQkJICAgIAorLQkJICAg IGlmKCFwcm90by0+dGV4dF9tb2RlKQorLQkJICAgIHsKKy0JCQlnbG9idXNfZ2Fzc190cmFuc2Zl cl9yZXF1ZXN0X3NldF9sZW5ndGgocHJvdG8tPnJlcXVlc3QsCistCQkJCQkJCQlwcm90by0+bGVu Z3RoKTsKKy0JCQorLQkJICAgIH0KKy0JCX0KKy0JCS8qCistCQkgKiBUaGUgcmVzcG9uc2UgYnVm ZmVyJ3MgcmVzaWR1ZSBtYXkgY29udGFpbiBzb21lCistCQkgKiBlbnRpdHkgaW5mb3JtYXRpb24s IHNvIGxldCdzIGtlZXAgaXQgYXJvdW5kLgorLQkJICogQWxzbywgaWYgd2UgYXJlIGluIHRleHQg bW9kZSwgd2UnbGwgaGF2ZSB0byBjb3B5CistCQkgKiB0aGUgZGF0YSBhbnl3YXkgKGJ1dCBzaG91 bGQgdXNlIHRoZSBibG9ja19zaXplKQorLQkJICovCistCQorLQkJIGlmKHByb3RvLT50ZXh0X21v ZGUgJiYKKy0JCSAgICBwcm90by0+YmxvY2tfc2l6ZSA+IHByb3RvLT5yZXNwb25zZV9idWZsZW4p CistCQkgeworLQkJICAgIGdsb2J1c19ieXRlX3QgKgkJdG1wOworLQorLQkJICAgIHRtcCA9IGds b2J1c19saWJjX3JlYWxsb2MocHJvdG8tPnJlc3BvbnNlX2J1ZmZlciwKKy0JCQkJCSAgICAgIHBy b3RvLT5ibG9ja19zaXplICoKKy0JCQkJCQkgIHNpemVvZihnbG9idXNfYnl0ZV90KSk7CistCQkg ICAgaWYodG1wICE9IEdMT0JVU19OVUxMKQorLQkJICAgIHsKKy0JCQlwcm90by0+cmVzcG9uc2Vf YnVmZmVyID0gdG1wOworLQkJCXByb3RvLT5yZXNwb25zZV9idWZsZW4gPSBwcm90by0+YmxvY2tf c2l6ZTsKKy0JCSAgICB9CistCistCQkgfQorLQorLQkJcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dB U1NfVFJBTlNGRVJfSFRUUF9TVEFURV9JRExFOworLQkJZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX3VubG9jaygpOworLQorLQkJZGVidWdfcHJpbnRmKDIsIChfR1RTTCgiY2FsbGluZyBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZXF1ZXN0X3JlYWR5IikpKTsJCWdsb2J1c19nYXNzX3Ry YW5zZmVyX3Byb3RvX3JlcXVlc3RfcmVhZHkoCistCQkgICAgcHJvdG8tPnJlcXVlc3QsCistCQkg ICAgKGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAqKSBwcm90byk7CistCSAg ICB9CistCSAgICBicmVhazsKKy0JICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1Rf VFlQRV9QVVQ6CistCSAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfQVBQ RU5EOgorLQkgICAgLyogSWYgaXQgaXMgYSBQVVQgb3IgQVBQRU5EIHJlcXVlc3QsIHdlIGRvbid0 IGV4cGVjdCBhbnkKKy0JICAgICAqIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlciB1bnRpbCB3ZSdy ZSBkb25lIHNlbmRpbmcsCistCSAgICAgKiBvciB0aGUgc2VydmVyIGtpbGxzIG91ciByZXF1ZXN0 CistCSAgICAgKi8KKy0JICAgIGlmKHByb3RvLT5jb2RlIDwgMTAwIHx8CistCSAgICAgICBwcm90 by0+Y29kZSA+PSA0MDApCistCSAgICB7CistCQkvKiBSZXF1ZXN0IGZhaWxlZC4gKi8KKy0JCWdv dG8gcHV0X2ZhaWxfZXhpdDsKKy0JICAgIH0KKy0JICAgIGVsc2UgaWYocHJvdG8tPmNvZGUgPj0g MzAwICYmCistCQkgICAgcHJvdG8tPmNvZGUgPCA0MDApCistCSAgICB7CistCQljaGFyICoqIHJl ZmVycmFsOworLQkJZ2xvYnVzX3NpemVfdCByZWZlcnJhbF9jb3VudDsKKy0JCS8qIFJlcXVlc3Qg cmVmZXJyZWQuICovCistCQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZXh0cmFjdF9yZWZl cnJhbChwcm90bywKKy0JCQkJCQkJICAgICAmcmVmZXJyYWwsCistCQkJCQkJCSAgICAgJnJlZmVy cmFsX2NvdW50KTsKKy0JCWlmKHJlZmVycmFsID09IEdMT0JVU19OVUxMKQorLQkJeworLQkJICAg IGdvdG8gcHV0X2ZhaWxfZXhpdDsKKy0JCX0KKy0JCWVsc2UgaWYocHJvdG8tPnN0YXRlID09IEdM T0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfU1RBVEVfSURMRSkKKy0JCXsKKy0JCSAgICByZXN1bHQg PSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVnaXN0ZXJfY2xvc2UocHJvdG8pOworKyAg ICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvLT5yZWN2 X2J1ZmZlciA9CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJh bnNmZXJfaHR0cF9yZWNlaXZlOworKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvLT5jaHVu a2VkID0gR0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJlY3Zf c3RhdGUgPQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0FTU19UUkFOU0ZF Ul9IVFRQX1JFQ1ZfU1RBVEVfQ0hVTktfU0laRTsKKysgICAgICAgICAgICAgICAgICAgICAgICBw cm90by0+bGVuZ3RoID0gMDsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAg ICAgfQorKyAgICAgICAgICAgICAgICBpZighcHJvdG8tPmNodW5rZWQpCisrICAgICAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgICAgIC8qIElmIGJvdGgKKysgICAgICAgICAgICAgICAg ICAgICAqIFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIGFuZAorKyAgICAgICAgICAgICAgICAg ICAgICogQ29udGVudC1MZW5ndGg6IDxzb21ldGhpbmc+CisrICAgICAgICAgICAgICAgICAgICAg KiBhcmUgcGFzc2VkLCB0aGUgQ29udGVudC1sZW5ndGggc2hvdWxkIGJlIGlnbm9yZWQsCisrICAg ICAgICAgICAgICAgICAgICAgKiBhY2NvcmRpbmcgdG8gUkZDIDIwNjgKKysgICAgICAgICAgICAg ICAgICAgICAqLworKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnbG9idXNfaV9nYXNzX3Ry YW5zZmVyX2tleXZhbHVlX2xvb2t1cCgKKysgICAgICAgICAgICAgICAgICAgICAgICAmcHJvdG8t PmhlYWRlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRlbnQtbGVuZ3RoIik7Cisr CisrICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSkKKysgICAgICAgICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBzYXZlX2Vy cm5vOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgIHRt cDsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBmb3IodG1wID0gdmFsdWU7ICp0bXAgIT0g J1wwJzsgdG1wKyspCisrICAgICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZighIGlzc3BhY2UoKnRtcCkpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX2xvY2soKTsKKysgICAgICAgICAgICAg ICAgICAgICAgICBlcnJubz0wOworKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvLT5sZW5n dGggPSBzdHJ0b3VsKHRtcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTE9CVVNfTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxMCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9lcnJu bz1lcnJubzsKKysgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbGliY191bmxvY2soKTsK KysgICAgICAgICAgICAgICAgICAgICAgICBpZihzYXZlX2Vycm5vICE9IDApCisrICAgICAgICAg ICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+Y29k ZSA9IEdMT0JVU19MX1BST1RPQ09MX0ZBSUxVUkVfQ09ERTsKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJvdG8tPnJlYXNvbiA9IGdsb2J1c19saWJjX3N0cmR1cCgKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19MX1BST1RPQ09MX0ZBSUxVUkVfUkVBU09OKTsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBkZW55X2V4aXQ7CisrICAgICAgICAg ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHByb3RvLT5sZW5n dGggPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FUlJPUjsKKysgICAg ICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorKyAg ICAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJv dG8tPnJlY3Zfc3RhdGUgPQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVT X0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0xFTkdUSDsKKysgICAgICAgICAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAg ICAgICBlbHNlCisrICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAg ICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9C VVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfVU5USUxfRU9GOworKyAgICAgICAgICAg ICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAgICAgaWYoIXByb3RvLT50ZXh0X21vZGUp CisrICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zZXRfbGVuZ3RoKHByb3RvLT5yZXF1ZXN0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcm90by0+bGVuZ3RoKTsKKysKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAgICAgKiBUaGUgcmVz cG9uc2UgYnVmZmVyJ3MgcmVzaWR1ZSBtYXkgY29udGFpbiBzb21lCisrICAgICAgICAgICAgICAg ICAqIGVudGl0eSBpbmZvcm1hdGlvbiwgc28gbGV0J3Mga2VlcCBpdCBhcm91bmQuCisrICAgICAg ICAgICAgICAgICAqIEFsc28sIGlmIHdlIGFyZSBpbiB0ZXh0IG1vZGUsIHdlJ2xsIGhhdmUgdG8g Y29weQorKyAgICAgICAgICAgICAgICAgKiB0aGUgZGF0YSBhbnl3YXkgKGJ1dCBzaG91bGQgdXNl IHRoZSBibG9ja19zaXplKQorKyAgICAgICAgICAgICAgICAgKi8KKysKKysgICAgICAgICAgICAg ICAgIGlmKHByb3RvLT50ZXh0X21vZGUgJiYKKysgICAgICAgICAgICAgICAgICAgIHByb3RvLT5i bG9ja19zaXplID4gcHJvdG8tPnJlc3BvbnNlX2J1ZmxlbikKKysgICAgICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICB0bXA7Cisr CisrICAgICAgICAgICAgICAgICAgICB0bXAgPSBnbG9idXNfbGliY19yZWFsbG9jKHByb3RvLT5y ZXNwb25zZV9idWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByb3RvLT5ibG9ja19zaXplICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihnbG9idXNfYnl0ZV90KSk7CisrICAgICAgICAg ICAgICAgICAgICBpZih0bXAgIT0gR0xPQlVTX05VTEwpCisrICAgICAgICAgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmZlciA9IHRtcDsK KysgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmbGVuID0gcHJvdG8t PmJsb2NrX3NpemU7CisrICAgICAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAg ICB9CisrCisrICAgICAgICAgICAgICAgIHByb3RvLT5zdGF0ZSA9IEdMT0JVU19HQVNTX1RSQU5T RkVSX0hUVFBfU1RBVEVfSURMRTsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX3VubG9jaygpOworKworKyAgICAgICAgICAgICAgICBkZWJ1Z19wcmludGYoMiwg KF9HVFNMKCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlcXVlc3RfcmVhZHki KSkpOyAgICAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9yZWFkeSgK KysgICAgICAgICAgICAgICAgICAgIHByb3RvLT5yZXF1ZXN0LAorKyAgICAgICAgICAgICAgICAg ICAgKGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAqKSBwcm90byk7CisrICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICBjYXNlIEdMT0JVU19H QVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9QVVQ6CisrICAgICAgICAgIGNhc2UgR0xPQlVTX0dB U1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0FQUEVORDoKKysgICAgICAgICAgICAvKiBJZiBpdCBp cyBhIFBVVCBvciBBUFBFTkQgcmVxdWVzdCwgd2UgZG9uJ3QgZXhwZWN0IGFueQorKyAgICAgICAg ICAgICAqIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlciB1bnRpbCB3ZSdyZSBkb25lIHNlbmRpbmcs CisrICAgICAgICAgICAgICogb3IgdGhlIHNlcnZlciBraWxscyBvdXIgcmVxdWVzdAorKyAgICAg ICAgICAgICAqLworKyAgICAgICAgICAgIGlmKHByb3RvLT5jb2RlIDwgMTAwIHx8CisrICAgICAg ICAgICAgICAgcHJvdG8tPmNvZGUgPj0gNDAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgLyogUmVxdWVzdCBmYWlsZWQuICovCisrICAgICAgICAgICAgICAgIGdvdG8gcHV0X2Zh aWxfZXhpdDsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZihwcm90by0+Y29k ZSA+PSAzMDAgJiYKKysgICAgICAgICAgICAgICAgICAgIHByb3RvLT5jb2RlIDwgNDAwKQorKyAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgY2hhciAqKiByZWZlcnJhbDsKKysgICAgICAg ICAgICAgICAgZ2xvYnVzX3NpemVfdCByZWZlcnJhbF9jb3VudDsKKysgICAgICAgICAgICAgICAg LyogUmVxdWVzdCByZWZlcnJlZC4gKi8KKysgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190 cmFuc2Zlcl9odHRwX2V4dHJhY3RfcmVmZXJyYWwocHJvdG8sCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWZlcnJhbCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnJlZmVycmFsX2NvdW50KTsKKysgICAgICAgICAgICAgICAgaWYocmVmZXJyYWwgPT0gR0xP QlVTX05VTEwpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIGdvdG8g cHV0X2ZhaWxfZXhpdDsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNl IGlmKHByb3RvLT5zdGF0ZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX0lETEUp CisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZShwcm90byk7CisgICAgICAgICAg ICAgICAgICAgICBpZiAocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9jbG9zZShwcm90byk7CisgICAgICAgICAgICAgICAgICAgICB9CistCQkgICAgCistCQkg ICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworLQkJICAgIGRlYnVnX3By aW50ZigyLCAoX0dUU0woImNhbGxpbmcgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVz dF9yZWZlcnJlZCIpKSk7CistCQkgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVz dF9yZWZlcnJlZChyZXF1ZXN0LAorLQkJCQkJCQkJcmVmZXJyYWwsCistCQkJCQkJCQlyZWZlcnJh bF9jb3VudCk7CistICAgICAgICAgICAgICAgICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJF eGl0aW5nIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXNwb25zZV9jYWxsYmFjaygpXG4i KSkpOyAgICAgICAgCistCQkgICAgcmV0dXJuOworLQkJfQorLQkJZWxzZQorLQkJeworLQkJICAg IHByb3RvLT5mYWlsdXJlX29jY3VycmVkID0gR0xPQlVTX1RSVUU7CistCistCQkgICAgcmVzdWx0 ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX2Nsb3NlKHByb3RvKTsKKysK KysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2so KTsKKysgICAgICAgICAgICAgICAgICAgIGRlYnVnX3ByaW50ZigyLCAoX0dUU0woImNhbGxpbmcg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9yZWZlcnJlZCIpKSk7CisrICAgICAg ICAgICAgICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZXF1ZXN0X3JlZmVycmVk KHJlcXVlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlZmVycmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcnJhbF9jb3VudCk7Cisr ICAgICAgICAgICAgICAgICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXNwb25zZV9jYWxsYmFjaygpXG4iKSkpOworKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg ICAgIGVsc2UKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgcHJvdG8t PmZhaWx1cmVfb2NjdXJyZWQgPSBHTE9CVVNfVFJVRTsKKysKKysgICAgICAgICAgICAgICAgICAg IHJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9jbG9zZShwcm90 byk7CisgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQor ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19s X2dhc3NfdHJhbnNmZXJfaHR0cF9jbG9zZShwcm90byk7CisgICAgICAgICAgICAgICAgICAgICB9 CistCQorLQkJICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKy0KKy0J CSAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVy X3Byb3RvX3JlcXVlc3RfcmVmZXJyZWQiKSkpOworLQkJICAgIGdsb2J1c19nYXNzX3RyYW5zZmVy X3Byb3RvX3JlcXVlc3RfcmVmZXJyZWQocmVxdWVzdCwKKy0JCQkJCQkJCXJlZmVycmFsLAorLQkJ CQkJCQkJcmVmZXJyYWxfY291bnQpOworLQkJICAgIAorLSAgICAgICAgICAgICAgICAgICAgZGVi dWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf cmVzcG9uc2VfY2FsbGJhY2soKVxuIikpKTsgICAgICAgIAorLQkJICAgIHJldHVybjsKKy0JCX0K Ky0JICAgIH0KKy0JICAgIGVsc2UgaWYocHJvdG8tPmNvZGUgPj0gMTAwICYmCistCQkgICAgcHJv dG8tPmNvZGUgPCAyMDApCistCSAgICB7CistCQkvKgorLQkJICogQ29udGludWUuLi4gUmVzZXQg b3VyIHJlc3BvbnNlIGJ1ZmZlcnMsCistCQkgKiBhbmQgZ2V0IGFub3RoZXIgc2V0IG9mIGhlYWRl cnMKKy0JCSAqLworLQkJbWVtbW92ZShwcm90by0+cmVzcG9uc2VfYnVmZmVyLAorLQkJCXByb3Rv LT5yZXNwb25zZV9idWZmZXIgKyBwcm90by0+cGFyc2VkX29mZnNldCwKKy0JCQlwcm90by0+cmVz cG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQpOworLQorLQkJcHJvdG8tPnJlc3Bv bnNlX29mZnNldCAtPSBwcm90by0+cGFyc2VkX29mZnNldDsKKy0JCXByb3RvLT5wYXJzZWRfb2Zm c2V0ID0gMDsKKy0KKy0JCWlmKHByb3RvLT5yZWFzb24pCistCQl7CistCQkgICAgZ2xvYnVzX2Zy ZWUocHJvdG8tPnJlYXNvbik7CistCQl9CistCQlwcm90by0+Y29kZSA9IDA7CistCQlwcm90by0+ cmVhc29uID0gR0xPQlVTX05VTEw7CistCistCQlnbG9idXNfaV9nYXNzX3RyYW5zZmVyX2tleXZh bHVlX2Rlc3Ryb3koCistCQkgICAgJnByb3RvLT5oZWFkZXJzKTsKKy0KKy0JCS8qCistCQkgKiBU aGVyZSBtYXkgYmUgbW9yZSBoZWFkZXJzIGluIG91ciBidWZmZXIsIHNvCistCQkgKiB3ZSBzaG91 bGQgZ28gdGhyb3VnaCB0aGUgcGFyc2UgbG9vcCBhZ2FpbiwKKy0JCSAqIG1heWJlCistCQkgKi8K Ky0JCWlmKHByb3RvLT5yZXNwb25zZV9vZmZzZXQgIT0gMCkKKy0JCXsKKy0JCSAgICBjb250aW51 ZTsKKy0JCX0KKy0JCWVsc2UKKy0JCXsKKy0JCSAgICBnb3RvIHJlcG9zdF9yZWFkOworLQkJfQor LQkgICAgfQorLQkgICAgZWxzZQorLQkgICAgeworLQkJZ290byBwdXRfc3VjY2Vzc19leGl0Owor LQkgICAgfQorLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0lOVkFM SUQ6CistCSAgZGVmYXVsdDoKKy0JICAgIGdsb2J1c19hc3NlcnQocHJvdG8tPnR5cGUgIT0KKy0J CQkgIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9JTlZBTElEKTsKKy0JICAgIGds b2J1c19hc3NlcnQoR0xPQlVTX0ZBTFNFKTsKKy0gICAgICAgICAgICBkZWJ1Z19wcmludGYoMywg KF9HVFNMKCJFeGl0aW5nIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXNwb25zZV9jYWxs YmFjaygpXG4iKSkpOyAgICAgICAgCistCSAgICByZXR1cm47CistCX0KKysKKysgICAgICAgICAg ICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKysKKysgICAg ICAgICAgICAgICAgICAgIGRlYnVnX3ByaW50ZigyLCAoX0dUU0woImNhbGxpbmcgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9yZWZlcnJlZCIpKSk7CisrICAgICAgICAgICAgICAg ICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZXF1ZXN0X3JlZmVycmVkKHJlcXVlc3Qs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZmVycmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcnJhbF9jb3VudCk7CisrCisrICAgICAg ICAgICAgICAgICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nIGdsb2J1c19sX2dh c3NfdHJhbnNmZXJfaHR0cF9yZXNwb25zZV9jYWxsYmFjaygpXG4iKSkpOworKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIGVsc2UgaWYocHJvdG8tPmNvZGUgPj0gMTAwICYmCisrICAgICAgICAgICAgICAg ICAgICBwcm90by0+Y29kZSA8IDIwMCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IC8qCisrICAgICAgICAgICAgICAgICAqIENvbnRpbnVlLi4uIFJlc2V0IG91ciByZXNwb25zZSBi dWZmZXJzLAorKyAgICAgICAgICAgICAgICAgKiBhbmQgZ2V0IGFub3RoZXIgc2V0IG9mIGhlYWRl cnMKKysgICAgICAgICAgICAgICAgICovCisrICAgICAgICAgICAgICAgIG1lbW1vdmUocHJvdG8t PnJlc3BvbnNlX2J1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9u c2VfYnVmZmVyICsgcHJvdG8tPnBhcnNlZF9vZmZzZXQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHByb3RvLT5wYXJzZWRfb2Zmc2V0KTsKKysKKysg ICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtPSBwcm90by0+cGFyc2VkX29m ZnNldDsKKysgICAgICAgICAgICAgICAgcHJvdG8tPnBhcnNlZF9vZmZzZXQgPSAwOworKworKyAg ICAgICAgICAgICAgICBpZihwcm90by0+cmVhc29uKQorKyAgICAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShwcm90by0+cmVhc29uKTsKKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgICAgICBwcm90by0+Y29kZSA9IDA7CisrICAgICAgICAgICAg ICAgIHByb3RvLT5yZWFzb24gPSBHTE9CVVNfTlVMTDsKKysKKysgICAgICAgICAgICAgICAgZ2xv YnVzX2lfZ2Fzc190cmFuc2Zlcl9rZXl2YWx1ZV9kZXN0cm95KAorKyAgICAgICAgICAgICAgICAg ICAgJnByb3RvLT5oZWFkZXJzKTsKKysKKysgICAgICAgICAgICAgICAgLyoKKysgICAgICAgICAg ICAgICAgICogVGhlcmUgbWF5IGJlIG1vcmUgaGVhZGVycyBpbiBvdXIgYnVmZmVyLCBzbworKyAg ICAgICAgICAgICAgICAgKiB3ZSBzaG91bGQgZ28gdGhyb3VnaCB0aGUgcGFyc2UgbG9vcCBhZ2Fp biwKKysgICAgICAgICAgICAgICAgICogbWF5YmUKKysgICAgICAgICAgICAgICAgICovCisrICAg ICAgICAgICAgICAgIGlmKHByb3RvLT5yZXNwb25zZV9vZmZzZXQgIT0gMCkKKysgICAgICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAg IH0KKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgICAgICBnb3RvIHJlcG9zdF9yZWFkOworKyAgICAgICAgICAgICAgICB9CisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgIGdvdG8gcHV0X3N1Y2Nlc3NfZXhpdDsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIGNh c2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0lOVkFMSUQ6CisrICAgICAgICAg IGRlZmF1bHQ6CisrICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydChwcm90by0+dHlwZSAhPQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBF X0lOVkFMSUQpOworKyAgICAgICAgICAgIGdsb2J1c19hc3NlcnQoR0xPQlVTX0ZBTFNFKTsKKysg ICAgICAgICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9yZXNwb25zZV9jYWxsYmFjaygpXG4iKSkpOworKyAgICAgICAgICAgIHJl dHVybjsKKysgICAgICAgIH0KKyAgICAgfQorICAgICB3aGlsZShwcm90by0+Y29kZSA9PSAwIHx8 CistCSAgcHJvdG8tPmNvZGUgPT0gMTAwKTsKKy0gICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgi RXhpdGluZyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVzcG9uc2VfY2FsbGJhY2soKVxu IikpKTsgICAgICAgIAorKyAgICAgICAgICBwcm90by0+Y29kZSA9PSAxMDApOworKyAgICBkZWJ1 Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9y ZXNwb25zZV9jYWxsYmFjaygpXG4iKSkpOworICAgICByZXR1cm47CisgCisgICByZXBvc3RfcmVh ZDoKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CistCXByb3RvLT5j b2RlID0gR0xPQlVTX0xfREVGQVVMVF9GQUlMVVJFX0NPREU7CistCXByb3RvLT5yZWFzb24gPSBn bG9idXNfbGliY19zdHJkdXAoR0xPQlVTX0xfREVGQVVMVF9GQUlMVVJFX1JFQVNPTik7CistCWlm KHByb3RvLT50eXBlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9QVVQgfHwK Ky0JICAgcHJvdG8tPnR5cGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0FQ UEVORCkKKysgICAgICAgIHByb3RvLT5jb2RlID0gR0xPQlVTX0xfREVGQVVMVF9GQUlMVVJFX0NP REU7CisrICAgICAgICBwcm90by0+cmVhc29uID0gZ2xvYnVzX2xpYmNfc3RyZHVwKEdMT0JVU19M X0RFRkFVTFRfRkFJTFVSRV9SRUFTT04pOworKyAgICAgICAgaWYocHJvdG8tPnR5cGUgPT0gR0xP QlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX1BVVCB8fAorKyAgICAgICAgICAgcHJvdG8t PnR5cGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0FQUEVORCkKKysgICAg ICAgIHsKKysgICAgICAgICAgICBnb3RvIHB1dF9mYWlsX2V4aXQ7CisrICAgICAgICB9CisrICAg ICAgICBlbHNlCisgICAgICAgICB7CistCSAgICBnb3RvIHB1dF9mYWlsX2V4aXQ7CistCX0KKy0J ZWxzZQorLQl7CistCSAgICBnb3RvIGRlbnlfZXhpdDsKKy0JfQorKyAgICAgICAgICAgIGdvdG8g ZGVueV9leGl0OworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIC8qIFJlYWxsb2NhdGUgYSBs YXJnZXIgYnVmZmVyLCBpZiB3ZSBuZWVkIHRvICovCisgICAgIGlmKHByb3RvLT5yZXNwb25zZV9i dWZsZW4gPT0gcHJvdG8tPnJlc3BvbnNlX29mZnNldCkKKyAgICAgeworLQlnbG9idXNfYnl0ZV90 ICoJCQkJdG1wOworLQl0bXAgPSBnbG9idXNfbGliY19yZWFsbG9jKHByb3RvLT5yZXNwb25zZV9i dWZmZXIsCistCQkJCSAgcHJvdG8tPnJlc3BvbnNlX2J1ZmxlbiAqCistCQkJCSAgICAgIDIgKgor LQkJCQkgICAgICBzaXplb2YoZ2xvYnVzX2J5dGVfdCkpOworLQlpZih0bXAgPT0gR0xPQlVTX05V TEwpCistCXsKKy0JICAgIHByb3RvLT5jb2RlID0gR0xPQlVTX0xfTUFMTE9DX0ZBSUxVUkVfQ09E RTsKKy0JICAgIHByb3RvLT5yZWFzb24gPSBnbG9idXNfbGliY19zdHJkdXAoR0xPQlVTX0xfTUFM TE9DX0ZBSUxVUkVfUkVBU09OKTsKKy0KKy0JICAgIGdvdG8gZGVueV9leGl0OworLQl9CistCWVs c2UKKy0JeworLQkgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmZlciA9IHRtcDsKKy0JICAgIHByb3Rv LT5yZXNwb25zZV9idWZsZW4gKj0gMjsKKy0JfQorKyAgICAgICAgZ2xvYnVzX2J5dGVfdCAqICAg ICAgICAgICAgICAgICAgICAgICAgIHRtcDsKKysgICAgICAgIHRtcCA9IGdsb2J1c19saWJjX3Jl YWxsb2MocHJvdG8tPnJlc3BvbnNlX2J1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmxlbiAqCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAyICoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihnbG9idXNfYnl0ZV90KSk7CisrICAgICAgICBpZih0bXAgPT0gR0xPQlVTX05V TEwpCisrICAgICAgICB7CisrICAgICAgICAgICAgcHJvdG8tPmNvZGUgPSBHTE9CVVNfTF9NQUxM T0NfRkFJTFVSRV9DT0RFOworKyAgICAgICAgICAgIHByb3RvLT5yZWFzb24gPSBnbG9idXNfbGli Y19zdHJkdXAoR0xPQlVTX0xfTUFMTE9DX0ZBSUxVUkVfUkVBU09OKTsKKysKKysgICAgICAgICAg ICBnb3RvIGRlbnlfZXhpdDsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsK KysgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyID0gdG1wOworKyAgICAgICAgICAg IHByb3RvLT5yZXNwb25zZV9idWZsZW4gKj0gMjsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAg ICAvKiBSZWdpc3RlciBhbm90aGVyIHJlYWQgKi8KKyAgICAgZGVidWdfcHJpbnRmKDQsKF9HVFNM KCIlcygpOiBSZWdpc3RlcmluZyByZWFkIG9uICVwXG4iKSwKKy0JCSAgICBteW5hbWUsCistCQkg ICAgJnByb3RvLT5oYW5kbGUpKTsKKysgICAgICAgICAgICAgICAgICAgIG15bmFtZSwKKysgICAg ICAgICAgICAgICAgICAgICZwcm90by0+aGFuZGxlKSk7CisgICAgIHJlc3VsdCA9IGdsb2J1c19p b19yZWdpc3Rlcl9yZWFkKCZwcm90by0+aGFuZGxlLAorLQkJCQkgICAgIHByb3RvLT5yZXNwb25z ZV9idWZmZXIgKworLQkJCQkgICAgIHByb3RvLT5yZXNwb25zZV9vZmZzZXQsCistCQkJCSAgICAg cHJvdG8tPnJlc3BvbnNlX2J1ZmxlbiAtCistCQkJCSAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNl dCwKKy0JCQkJICAgICAxLAorLQkJCQkgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9y ZXNwb25zZV9jYWxsYmFjaywKKy0JCQkJICAgICBwcm90byk7CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByb3RvLT5yZXNwb25zZV9idWZmZXIgKworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmbGVuIC0K KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX29m ZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcm90byk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworLQkv KiBUT0RPIGludGVycHJldCB0aGUgZXJyb3Igb2JqZWN0ICovCistCWdvdG8gZGVueV9leGl0Owor KyAgICAgICAgLyogVE9ETyBpbnRlcnByZXQgdGhlIGVycm9yIG9iamVjdCAqLworKyAgICAgICAg Z290byBkZW55X2V4aXQ7CisgICAgIH0KKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X3VubG9jaygpOworIAorLSAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXNwb25zZV9jYWxsYmFjaygpXG4iKSkpOyAgICAgICAg CisrICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX3Jlc3BvbnNlX2NhbGxiYWNrKClcbiIpKSk7CisgICAgIHJldHVybjsKKyAKKyAg IGRlbnlfZXhpdDoKKyAgICAgaWYoZXJyKQorICAgICB7CistCWdsb2J1c19vYmplY3RfZnJlZShl cnIpOworKyAgICAgICAgZ2xvYnVzX29iamVjdF9mcmVlKGVycik7CisgICAgIH0KKyAKKyAgICAg LyoKK0BAIC0zNjE3LDUwICszNjE3LDUwIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9y ZXNwb25zZV9jYWxsYmFjaygKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zl cl9odHRwX2Nsb3NlKHByb3RvKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2xfZ2Fz c190cmFuc2Zlcl9odHRwX3VubG9jaygpOworIAorICAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNM KCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlcXVlc3RfZGVuaWVkIikpKTsK KyAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9kZW5pZWQocmVxdWVzdCwK Ky0JCQkJCSAgICAgIGNvZGUsCistCQkJCQkgICAgICByZWFzb24pOworLSAgICBkZWJ1Z19wcmlu dGYoMywgKF9HVFNMKCJFeGl0aW5nIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXNwb25z ZV9jYWxsYmFjaygpXG4iKSkpOyAgICAgICAgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlYXNvbik7CisrICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4 aXRpbmcgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Jlc3BvbnNlX2NhbGxiYWNrKClcbiIp KSk7CisgICAgIHJldHVybjsKKyAKKyAgIHB1dF9zdWNjZXNzX2V4aXQ6CisgICAgIHsKKy0JZ2xv YnVzX2J5dGVfdCAqIGJ1ZmZlcjsKKy0JZ2xvYnVzX3NpemVfdCBvZmZzZXQ7CistCWdsb2J1c19i b29sX3QgZmFpbHVyZTsKKysgICAgICAgIGdsb2J1c19ieXRlX3QgKiBidWZmZXI7CisrICAgICAg ICBnbG9idXNfc2l6ZV90IG9mZnNldDsKKysgICAgICAgIGdsb2J1c19ib29sX3QgZmFpbHVyZTsK KysKKyAKKysgICAgICAgIGJ1ZmZlciA9IHByb3RvLT51c2VyX2J1ZmZlcjsKKysgICAgICAgIG9m ZnNldCA9IHByb3RvLT51c2VyX29mZnNldDsKKysgICAgICAgIGZhaWx1cmUgPSBwcm90by0+ZmFp bHVyZV9vY2N1cnJlZDsKKyAKKy0JYnVmZmVyID0gcHJvdG8tPnVzZXJfYnVmZmVyOworLQlvZmZz ZXQgPSBwcm90by0+dXNlcl9vZmZzZXQ7CistCWZhaWx1cmUgPSBwcm90by0+ZmFpbHVyZV9vY2N1 cnJlZDsKKy0JCistCS8qIAorLQkgKiBzdWNjZXNzIHJlc3BvbnNlIGZyb20gYSBzZXJ2ZXIsIHNp Z25hbCB0aGlzIHRvIHRoZSBHQVNTIHN5c3RlbQorLQkgKi8KKy0JZ2xvYnVzX2Fzc2VydChwcm90 by0+c3RhdGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9TVEFURV9QRU5ESU5HKTsKKy0J cmVzdWx0ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX2Nsb3NlKHByb3Rv KTsKKysgICAgICAgIC8qCisrICAgICAgICAgKiBzdWNjZXNzIHJlc3BvbnNlIGZyb20gYSBzZXJ2 ZXIsIHNpZ25hbCB0aGlzIHRvIHRoZSBHQVNTIHN5c3RlbQorKyAgICAgICAgICovCisrICAgICAg ICBnbG9idXNfYXNzZXJ0KHByb3RvLT5zdGF0ZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQ X1NUQVRFX1BFTkRJTkcpOworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zl cl9odHRwX3JlZ2lzdGVyX2Nsb3NlKHByb3RvKTsKKyAgICAgICAgIGlmIChyZXN1bHQgIT0gR0xP QlVTX1NVQ0NFU1MpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX2Nsb3NlKHByb3RvKTsKKyAgICAgICAgIH0KKy0gICAgCistCWdsb2J1c19sX2dh c3NfdHJhbnNmZXJfaHR0cF91bmxvY2soKTsKKy0JZGVidWdfcHJpbnRmKDIsIChfR1RTTCgiY2Fs bGluZyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19zZW5kX2NvbXBsZXRlKCkiKSkpOworLQln bG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19zZW5kX2NvbXBsZXRlKHJlcXVlc3QsCistCQkJCQkJ IGJ1ZmZlciwKKy0JCQkJCQkgb2Zmc2V0LAorLQkJCQkJCSBmYWlsdXJlLAorLQkJCQkJCSBHTE9C VVNfVFJVRSk7CisgCistICAgICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nIGds b2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXNwb25zZV9jYWxsYmFjaygpXG4iKSkpOyAgICAg ICAgCistCXJldHVybjsKKysgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF91bmxv Y2soKTsKKysgICAgICAgIGRlYnVnX3ByaW50ZigyLCAoX0dUU0woImNhbGxpbmcgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcHJvdG9fc2VuZF9jb21wbGV0ZSgpIikpKTsKKysgICAgICAgIGdsb2J1c19n YXNzX3RyYW5zZmVyX3Byb3RvX3NlbmRfY29tcGxldGUocmVxdWVzdCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19UUlVFKTsK KysKKysgICAgICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRpbmcgZ2xvYnVzX2xfZ2Fz c190cmFuc2Zlcl9odHRwX3Jlc3BvbnNlX2NhbGxiYWNrKClcbiIpKSk7CisrICAgICAgICByZXR1 cm47CisgICAgIH0KKyAgIHB1dF9mYWlsX2V4aXQ6CistICAgIC8qIAorKyAgICAvKgorICAgICAg KiByZXF1ZXN0IGZhaWxlZCBhZnRlciBhIHB1dCBvciBhcHBlbmQgb3BlcmF0aW9uLiBXZQorICAg ICAgKiBuZWVkIHRvIHNpZ25hbCB0aGUgZmFpbHVyZSB0byB0aGUgR0FTUyBzeXN0ZW0KKyAgICAg ICovCitAQCAtMzY2OSwzOCArMzY2OSwzOCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf cmVzcG9uc2VfY2FsbGJhY2soCisgCisgICAgIGlmKHByb3RvLT53YWl0aW5nX2Zvcl9yZXNwb25z ZSkKKyAgICAgeworLQlnbG9idXNfYnl0ZV90ICogYnVmZmVyOworLQlnbG9idXNfc2l6ZV90IG9m ZnNldDsKKy0JaW50IGZhaWxlZCA9IHByb3RvLT5mYWlsdXJlX29jY3VycmVkOworLQkKKysgICAg ICAgIGdsb2J1c19ieXRlX3QgKiBidWZmZXI7CisrICAgICAgICBnbG9idXNfc2l6ZV90IG9mZnNl dDsKKysgICAgICAgIGludCBmYWlsZWQgPSBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZDsKKyAKKy0J YnVmZmVyID0gcHJvdG8tPnVzZXJfYnVmZmVyOworLQlvZmZzZXQgPSBwcm90by0+dXNlcl9vZmZz ZXQ7CisgCistCXJlc3VsdCA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWdpc3Rlcl9j bG9zZShwcm90byk7CisrICAgICAgICBidWZmZXIgPSBwcm90by0+dXNlcl9idWZmZXI7CisrICAg ICAgICBvZmZzZXQgPSBwcm90by0+dXNlcl9vZmZzZXQ7CisrCisrICAgICAgICByZXN1bHQgPSBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVnaXN0ZXJfY2xvc2UocHJvdG8pOworIAorICAg ICAgICAgaWYgKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2UocHJvdG8pOworICAgICAgICAg fQorLQkKKy0JZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9jaygpOworLQlkZWJ1Z19w cmludGYoMiwgKF9HVFNMKCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3NlbmRf Y29tcGxldGUoKSIpKSk7CistCWdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3NlbmRfY29tcGxl dGUocmVxdWVzdCwKKy0JCQkJCQkgYnVmZmVyLAorLQkJCQkJCSBvZmZzZXQsCistCQkJCQkJIGZh aWxlZCwKKy0JCQkJCQkgR0xPQlVTX1RSVUUpOworLSAgICAgICAgZGVidWdfcHJpbnRmKDMsIChf R1RTTCgiRXhpdGluZyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVzcG9uc2VfY2FsbGJh Y2soKVxuIikpKTsgICAgICAgIAorLQlyZXR1cm47CisrCisrICAgICAgICBnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7CisrICAgICAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNM KCJjYWxsaW5nIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3NlbmRfY29tcGxldGUoKSIpKSk7 CisrICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19zZW5kX2NvbXBsZXRlKHJlcXVl c3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmYWlsZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMT0JVU19UUlVFKTsKKysgICAgICAgIGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkV4aXRp bmcgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Jlc3BvbnNlX2NhbGxiYWNrKClcbiIpKSk7 CisrICAgICAgICByZXR1cm47CisgCisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistCXByb3Rv LT5mYWlsdXJlX29jY3VycmVkID0gR0xPQlVTX1RSVUU7CistCWdsb2J1c19sX2dhc3NfdHJhbnNm ZXJfaHR0cF91bmxvY2soKTsKKysgICAgICAgIHByb3RvLT5mYWlsdXJlX29jY3VycmVkID0gR0xP QlVTX1RSVUU7CisrICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5sb2NrKCk7 CisgICAgIH0KKy0gICAgZGVidWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfcmVzcG9uc2VfY2FsbGJhY2soKVxuIikpKTsgICAgICAgIAorKyAg ICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9yZXNwb25zZV9jYWxsYmFjaygpXG4iKSkpOworIH0KKyAvKiBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfcmVzcG9uc2VfY2FsbGJhY2soKSAqLworIAorQEAgLTM3MDgsMTcgKzM3MDgs MTcgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Jlc3BvbnNlX2NhbGxiYWNrKAorIHN0 YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9jYWxsYmFj aygKKy0gICAgdm9pZCAqCQkJCQlhcmcsCistICAgIGdsb2J1c19pb19oYW5kbGVfdCAqCQkJaGFu ZGxlLAorLSAgICBnbG9idXNfcmVzdWx0X3QJCQkJcmVzdWx0LAorLSAgICBnbG9idXNfYnl0ZV90 ICoJCQkJYnVmLAorLSAgICBnbG9idXNfc2l6ZV90CQkJCW5ieXRlcykKKysgICAgdm9pZCAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsCisrICAgIGdsb2J1c19pb19o YW5kbGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfcmVz dWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKysgICAgZ2xvYnVzX2J5 dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsCisrICAgIGdsb2J1c19zaXpl X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJ5dGVzKQorIHsKKy0gICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKgkJcHJvdG87CistICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJfcHJvdG9fdCAqCWxfcHJvdG87CistICAgIGds b2J1c19vYmplY3RfdCAqCQkJCQllcnI9R0xPQlVTX05VTEw7CistICAgIGNoYXIgKgkJCQkJCXZh bHVlOworLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCQlyZXF1ZXN0OworKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqICAgICAgICAgcHJv dG87CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVuZXJfcHJvdG9fdCAqICAg ICAgICBsX3Byb3RvOworKyAgICBnbG9idXNfb2JqZWN0X3QgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXJyPUdMT0JVU19OVUxMOworKyAgICBjaGFyICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU7CisrICAgIGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OworICAgICBN WU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfY2FsbGJhY2spOworIAor ICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFbnRlcmluZyAlcygpXG4iKSxteW5hbWUpKTsK K0BAIC0zNzI5LDIxICszNzI5LDIxIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1 ZXN0X2NhbGxiYWNrKAorICAgICB7CisgICAgICAgICBjaGFyICogdG1wc3RyOworIAorLQllcnIg PSBnbG9idXNfZXJyb3JfZ2V0KHJlc3VsdCk7CistCXRtcHN0ciA9IGdsb2J1c19vYmplY3RfcHJp bnRhYmxlX3RvX3N0cmluZyhlcnIpOworLQlkZWJ1Z19wcmludGYoNSwgKF9HVFNMKCJnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVhZF9jYWxsYmFjaygpOiAlcyIpLCB0bXBzdHIpKTsKKy0J Z2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOworKyAgICAgICAgZXJyID0gZ2xvYnVzX2Vycm9yX2dl dChyZXN1bHQpOworKyAgICAgICAgdG1wc3RyID0gZ2xvYnVzX29iamVjdF9wcmludGFibGVfdG9f c3RyaW5nKGVycik7CisrICAgICAgICBkZWJ1Z19wcmludGYoNSwgKF9HVFNMKCJnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfcmVhZF9jYWxsYmFjaygpOiAlcyIpLCB0bXBzdHIpKTsKKysgICAg ICAgIGdsb2J1c19saWJjX2ZyZWUodG1wc3RyKTsKKyAgICAgfQorIAorICAgICBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfbG9jaygpOworIAorICAgICByZXF1ZXN0ID0gcHJvdG8tPnJlcXVl c3Q7CistICAgIAorKworICAgICAvKiBEaWQgdGhlIHJlYWQgc3VjY2VlZD8gKi8KKyAgICAgaWYo cmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTICYmCisgICAgICAgICFnbG9idXNfaW9fZW9mKGVycikp CisgICAgIHsKKy0JZ290byBkZW55X2V4aXQ7CisrICAgICAgICBnb3RvIGRlbnlfZXhpdDsKKyAg ICAgfQorIAorICAgICAvKiBVcGRhdGUgb3VyIGNvdW50ZXJzICovCitAQCAtMzc1Miw3NCArMzc1 Miw3NCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9jYWxsYmFjaygKKyAg ICAgLyogUGFyc2UgdGhlIGJ1ZmZlciB0aGF0IHdlIGhhdmUgKi8KKyAgICAgaWYoZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX3BhcnNlX3JlcXVlc3QocHJvdG8pKQorICAgICB7CistCS8qIHJl dHVybnMgdHJ1ZSwgaWYgd2UgbmVlZCB0byByZWFkIHNvbWUgbW9yZSAqLworLQlpZihwcm90by0+ cGFyc2VkX29mZnNldCA9PSAwICYmCistCSAgIHByb3RvLT5yZXNwb25zZV9vZmZzZXQgPiAwICYm CistCSAgICFpc3VwcGVyKHByb3RvLT5yZXNwb25zZV9idWZmZXJbMF0pKQorLQl7CistCSAgICBn b3RvIGRlbnlfZXhpdDsKKy0JfQorLQlnb3RvIHJlcG9zdF9yZWFkOworKyAgICAgICAgLyogcmV0 dXJucyB0cnVlLCBpZiB3ZSBuZWVkIHRvIHJlYWQgc29tZSBtb3JlICovCisrICAgICAgICBpZihw cm90by0+cGFyc2VkX29mZnNldCA9PSAwICYmCisrICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vf b2Zmc2V0ID4gMCAmJgorKyAgICAgICAgICAgIWlzdXBwZXIocHJvdG8tPnJlc3BvbnNlX2J1ZmZl clswXSkpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byBkZW55X2V4aXQ7CisrICAgICAg ICB9CisrICAgICAgICBnb3RvIHJlcG9zdF9yZWFkOworICAgICB9CisgICAgIGVsc2UgaWYocHJv dG8tPnBhcnNlX2Vycm9yKQorICAgICB7CistCWdvdG8gZGVueV9leGl0OworKyAgICAgICAgZ290 byBkZW55X2V4aXQ7CisgICAgIH0KKyAgICAgZWxzZSBpZihzdHJjbXAocHJvdG8tPnVyaSwgIioi KSA9PSAwKQorICAgICB7CistCS8qIFJlcXVlc3Qgd2UgZG9uJ3QgaGFuZGxlICovCistCWdvdG8g ZGVueV9leGl0OworKyAgICAgICAgLyogUmVxdWVzdCB3ZSBkb24ndCBoYW5kbGUgKi8KKysgICAg ICAgIGdvdG8gZGVueV9leGl0OworICAgICB9CisgICAgIGVsc2UgaWYoc3RyY21wKHByb3RvLT5t ZXRob2QsICJHRVQiKSA9PSAwKQorICAgICB7CistCXByb3RvLT50eXBlID0gR0xPQlVTX0dBU1Nf VFJBTlNGRVJfUkVRVUVTVF9UWVBFX0dFVDsKKysgICAgICAgIHByb3RvLT50eXBlID0gR0xPQlVT X0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0dFVDsKKyAgICAgfQorICAgICBlbHNlIGlmKHN0 cmNtcChwcm90by0+bWV0aG9kLCAiUFVUIikgPT0gMCkKKyAgICAgeworLQlwcm90by0+dHlwZSA9 IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9QVVQ7CisrICAgICAgICBwcm90by0+ dHlwZSA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9QVVQ7CisgICAgIH0KKyAg ICAgZWxzZSBpZihzdHJjbXAocHJvdG8tPm1ldGhvZCwgIlBPU1QiKSA9PSAwICYmCistCSAgICBz dHJuY21wKHByb3RvLT51cmksCistCQkgICAgR0xPQlVTX0xfQVBQRU5EX1VSSSwKKy0JCSAgICBz dHJsZW4oR0xPQlVTX0xfQVBQRU5EX1VSSSkpID09IDApCisrICAgICAgICAgICAgc3RybmNtcChw cm90by0+dXJpLAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfQVBQRU5EX1VSSSwKKysg ICAgICAgICAgICAgICAgICAgIHN0cmxlbihHTE9CVVNfTF9BUFBFTkRfVVJJKSkgPT0gMCkKKyAg ICAgeworLQlnbG9idXNfc2l6ZV90CQkJCWFwcGVuZF9sZW47CistCWdsb2J1c19zaXplX3QJCQkJ dXJpX2xlbjsKKysgICAgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAg ICBhcHBlbmRfbGVuOworKyAgICAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVyaV9sZW47CisgCistCWFwcGVuZF9sZW4gPSBzdHJsZW4oR0xPQlVTX0xfQVBQRU5E X1VSSSk7CistCXVyaV9sZW4gPSBzdHJsZW4ocHJvdG8tPnVyaSkgLSBzdHJsZW4oR0xPQlVTX0xf QVBQRU5EX1VSSSk7CisrICAgICAgICBhcHBlbmRfbGVuID0gc3RybGVuKEdMT0JVU19MX0FQUEVO RF9VUkkpOworKyAgICAgICAgdXJpX2xlbiA9IHN0cmxlbihwcm90by0+dXJpKSAtIHN0cmxlbihH TE9CVVNfTF9BUFBFTkRfVVJJKTsKKyAKKy0JcHJvdG8tPnR5cGUgPSBHTE9CVVNfR0FTU19UUkFO U0ZFUl9SRVFVRVNUX1RZUEVfQVBQRU5EOworLQltZW1tb3ZlKHByb3RvLT51cmksCistCQlwcm90 by0+dXJpICsgYXBwZW5kX2xlbiwKKy0JCXVyaV9sZW4pOworLQlwcm90by0+dXJpW3VyaV9sZW5d ID0gJ1wwJzsKKysgICAgICAgIHByb3RvLT50eXBlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVR VUVTVF9UWVBFX0FQUEVORDsKKysgICAgICAgIG1lbW1vdmUocHJvdG8tPnVyaSwKKysgICAgICAg ICAgICAgICAgcHJvdG8tPnVyaSArIGFwcGVuZF9sZW4sCisrICAgICAgICAgICAgICAgIHVyaV9s ZW4pOworKyAgICAgICAgcHJvdG8tPnVyaVt1cmlfbGVuXSA9ICdcMCc7CisgCisgICAgIH0KKyAg ICAgZWxzZQorICAgICB7CistCS8qIFVua25vd24vVW5zdXBwb3J0ZWQgbWV0aG9kICovCistCWdv dG8gZGVueV9leGl0OworKyAgICAgICAgLyogVW5rbm93bi9VbnN1cHBvcnRlZCBtZXRob2QgKi8K KysgICAgICAgIGdvdG8gZGVueV9leGl0OworICAgICB9CisgICAgIGdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlcXVlc3Rfc2V0X3R5cGUocHJvdG8tPnJlcXVlc3QsCistCQkJCQkgIHByb3RvLT50eXBl KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+dHlw ZSk7CisgICAgIC8qIENvbnN0cnVjdCBVUkwgZm9yIHRoaXMgcmVxdWVzdCAqLworICAgICBpZihz dHJuY21wKHByb3RvLT51cmksICJodHRwczovLyIsIHN0cmxlbigiaHR0cHM6Ly8iKSkgPT0gMCB8 fAorICAgICAgICBzdHJuY21wKHByb3RvLT51cmksICJodHRwOi8vIiwgc3RybGVuKCJodHRwOi8v IikpID09IDApCisgICAgIHsKKy0JZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zZXRfdXJs KHByb3RvLT5yZXF1ZXN0LAorLQkJCQkJICAgICBwcm90by0+dXJpKTsKKysgICAgICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc2V0X3VybChwcm90by0+cmVxdWVzdCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+dXJpKTsKKyAgICAg fQorICAgICBlbHNlCisgICAgIHsKKy0JY2hhciAqIHVybF9iYXNlOworLQljaGFyICogdXJsOwor KyAgICAgICAgY2hhciAqIHVybF9iYXNlOworKyAgICAgICAgY2hhciAqIHVybDsKKyAKKy0JdXJs X2Jhc2UgPSBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl9nZXRfYmFzZV91cmwobF9wcm90 by0+bGlzdGVuZXIpOworLQl1cmwgPSBnbG9idXNfbWFsbG9jKHN0cmxlbih1cmxfYmFzZSkgKyBz dHJsZW4ocHJvdG8tPnVyaSkgKyAxKTsKKy0Jc3ByaW50Zih1cmwsICIlcyVzIiwgdXJsX2Jhc2Us IHByb3RvLT51cmkpOworLQlnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3NldF91cmwocHJv dG8tPnJlcXVlc3QsCistCQkJCQkgICAgIHVybCk7CisrICAgICAgICB1cmxfYmFzZSA9IGdsb2J1 c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX2dldF9iYXNlX3VybChsX3Byb3RvLT5saXN0ZW5lcik7 CisrICAgICAgICB1cmwgPSBnbG9idXNfbWFsbG9jKHN0cmxlbih1cmxfYmFzZSkgKyBzdHJsZW4o cHJvdG8tPnVyaSkgKyAxKTsKKysgICAgICAgIHNwcmludGYodXJsLCAiJXMlcyIsIHVybF9iYXNl LCBwcm90by0+dXJpKTsKKysgICAgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc2V0 X3VybChwcm90by0+cmVxdWVzdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1cmwpOworICAgICB9CisgCisgICAgIC8qCitAQCAtMzgyNyw5NCArMzgyNyw5 NCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9jYWxsYmFjaygKKyAgICAg ICogY2FyZSBhYm91dAorICAgICAgKi8KKyAgICAgdmFsdWUgPSBnbG9idXNfaV9nYXNzX3RyYW5z ZmVyX2tleXZhbHVlX2xvb2t1cCgKKy0JJnByb3RvLT5oZWFkZXJzLAorLQkidHJhbnNmZXItZW5j b2RpbmciKTsKKysgICAgICAgICZwcm90by0+aGVhZGVycywKKysgICAgICAgICJ0cmFuc2Zlci1l bmNvZGluZyIpOworICAgICBpZih2YWx1ZSkKKyAgICAgeworLQljaGFyICoJCQl0bXA7CisrICAg ICAgICBjaGFyICogICAgICAgICAgICAgICAgICB0bXA7CisgCistCWZvcih0bXAgPSB2YWx1ZTsg KnRtcCAhPSAnXDAnOyB0bXArKykKKy0JeworLQkgICAgaWYoISBpc3NwYWNlKCp0bXApKQorLQkg ICAgeworLQkJYnJlYWs7CistCSAgICB9CistCX0KKysgICAgICAgIGZvcih0bXAgPSB2YWx1ZTsg KnRtcCAhPSAnXDAnOyB0bXArKykKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZighIGlzc3Bh Y2UoKnRtcCkpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAg ICAgICAgICB9CisrICAgICAgICB9CisgI2lmbmRlZiBUQVJHRVRfQVJDSF9XSU4zMgorLQlpZihz dHJuY2FzZWNtcCh0bXAsICJjaHVua2VkIiwgc3RybGVuKCJjaHVua2VkIikpID09IDApCisrICAg ICAgICBpZihzdHJuY2FzZWNtcCh0bXAsICJjaHVua2VkIiwgc3RybGVuKCJjaHVua2VkIikpID09 IDApCisgI2Vsc2UKKy0JaWYoc3RybmljbXAodG1wLCAiY2h1bmtlZCIsIHN0cmxlbigiY2h1bmtl ZCIpKSA9PSAwKQorKyAgICAgICAgaWYoc3RybmljbXAodG1wLCAiY2h1bmtlZCIsIHN0cmxlbigi Y2h1bmtlZCIpKSA9PSAwKQorICNlbmRpZgorLQl7CistCSAgICBwcm90by0+cmVjdl9idWZmZXIg PQorLQkJZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlY2VpdmU7CistCSAgICBwcm90by0+ Y2h1bmtlZCA9IEdMT0JVU19UUlVFOworLQkgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorLQkJR0xP QlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0NIVU5LX1NJWkU7CistCSAgICBwcm90 by0+bGVuZ3RoID0gMDsKKy0JfQorKyAgICAgICAgeworKyAgICAgICAgICAgIHByb3RvLT5yZWN2 X2J1ZmZlciA9CisrICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9y ZWNlaXZlOworKyAgICAgICAgICAgIHByb3RvLT5jaHVua2VkID0gR0xPQlVTX1RSVUU7CisrICAg ICAgICAgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorKyAgICAgICAgICAgICAgICBHTE9CVVNfR0FT U19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hVTktfU0laRTsKKysgICAgICAgICAgICBwcm90 by0+bGVuZ3RoID0gMDsKKysgICAgICAgIH0KKyAgICAgfQorICAgICBpZighcHJvdG8tPmNodW5r ZWQpCisgICAgIHsKKy0JLyogSWYgYm90aAorLQkgKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtl ZCBhbmQKKy0JICogQ29udGVudC1MZW5ndGg6IDxzb21ldGhpbmc+CistCSAqIGFyZSBwYXNzZWQs IHRoZSBDb250ZW50LWxlbmd0aCBzaG91bGQgYmUgaWdub3JlZCwKKy0JICogYWNjb3JkaW5nIHRv IFJGQyAyMDY4CistCSAqLworLQl2YWx1ZSA9IGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfa2V5dmFs dWVfbG9va3VwKAorLQkgICAgJnByb3RvLT5oZWFkZXJzLAorLQkgICAgImNvbnRlbnQtbGVuZ3Ro Iik7CistCistCWlmKHZhbHVlKQorLQl7CistCSAgICBpbnQJCQlzYXZlX2Vycm5vOworLQkgICAg Y2hhciAqCQkJdG1wOworLQorLQkgICAgZm9yKHRtcCA9IHZhbHVlOyAqdG1wICE9ICdcMCc7IHRt cCsrKQorLQkgICAgeworLQkJaWYoISBpc3NwYWNlKCp0bXApKQorLQkJeworLQkJICAgIGJyZWFr OworLQkJfQorLQkgICAgfQorLQkgICAgZ2xvYnVzX2xpYmNfbG9jaygpOworLQkgICAgZXJybm89 MDsKKy0JICAgIHByb3RvLT5sZW5ndGggPSBzdHJ0b3VsKHRtcCwKKy0JCQkJICAgIEdMT0JVU19O VUxMLAorLQkJCQkgICAgMTApOworLQkgICAgc2F2ZV9lcnJubz1lcnJubzsKKy0JICAgIGdsb2J1 c19saWJjX3VubG9jaygpOworLQkgICAgaWYoc2F2ZV9lcnJubyAhPSAwKQorLQkgICAgeworLQkJ cHJvdG8tPmNvZGUgPSBHTE9CVVNfTF9QUk9UT0NPTF9GQUlMVVJFX0NPREU7CistCQlwcm90by0+ cmVhc29uID0gZ2xvYnVzX2xpYmNfc3RyZHVwKAorLQkJICAgIEdMT0JVU19MX1BST1RPQ09MX0ZB SUxVUkVfUkVBU09OKTsKKy0JCWdvdG8gZGVueV9leGl0OworLQkgICAgfQorLQkgICAgaWYocHJv dG8tPmxlbmd0aCA9PSAwKQorLQkgICAgeworLQkJcHJvdG8tPnJlY3Zfc3RhdGUgPQorLQkJICAg IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FUlJPUjsKKy0JICAgIH0KKy0J ICAgIGVsc2UKKy0JICAgIHsKKy0JCXByb3RvLT5yZWN2X3N0YXRlID0KKy0JCSAgICBHTE9CVVNf R0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfVU5USUxfTEVOR1RIOworLQkgICAgfQorLQl9 CistCWVsc2UKKy0JeworLQkgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorLQkJR0xPQlVTX0dBU1Nf VFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0VPRjsKKy0JfQorLQkJICAgIAorLQlpZigh cHJvdG8tPnRleHRfbW9kZSkKKy0JeworLQkgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVz dF9zZXRfbGVuZ3RoKHByb3RvLT5yZXF1ZXN0LAorLQkJCQkJCSAgICBwcm90by0+bGVuZ3RoKTsK Ky0JCQorLQl9CisrICAgICAgICAvKiBJZiBib3RoCisrICAgICAgICAgKiBUcmFuc2Zlci1FbmNv ZGluZzogY2h1bmtlZCBhbmQKKysgICAgICAgICAqIENvbnRlbnQtTGVuZ3RoOiA8c29tZXRoaW5n PgorKyAgICAgICAgICogYXJlIHBhc3NlZCwgdGhlIENvbnRlbnQtbGVuZ3RoIHNob3VsZCBiZSBp Z25vcmVkLAorKyAgICAgICAgICogYWNjb3JkaW5nIHRvIFJGQyAyMDY4CisrICAgICAgICAgKi8K KysgICAgICAgIHZhbHVlID0gZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9rZXl2YWx1ZV9sb29rdXAo CisrICAgICAgICAgICAgJnByb3RvLT5oZWFkZXJzLAorKyAgICAgICAgICAgICJjb250ZW50LWxl bmd0aCIpOworKworKyAgICAgICAgaWYodmFsdWUpCisrICAgICAgICB7CisrICAgICAgICAgICAg aW50ICAgICAgICAgICAgICAgICBzYXZlX2Vycm5vOworKyAgICAgICAgICAgIGNoYXIgKiAgICAg ICAgICAgICAgICAgICAgICB0bXA7CisrCisrICAgICAgICAgICAgZm9yKHRtcCA9IHZhbHVlOyAq dG1wICE9ICdcMCc7IHRtcCsrKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYo ISBpc3NwYWNlKCp0bXApKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAg ICBicmVhazsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAg ICBnbG9idXNfbGliY19sb2NrKCk7CisrICAgICAgICAgICAgZXJybm89MDsKKysgICAgICAgICAg ICBwcm90by0+bGVuZ3RoID0gc3RydG91bCh0bXAsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xPQlVTX05VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMTApOworKyAgICAgICAgICAgIHNhdmVfZXJybm89ZXJybm87CisrICAgICAgICAgICAg Z2xvYnVzX2xpYmNfdW5sb2NrKCk7CisrICAgICAgICAgICAgaWYoc2F2ZV9lcnJubyAhPSAwKQor KyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgcHJvdG8tPmNvZGUgPSBHTE9CVVNfTF9Q Uk9UT0NPTF9GQUlMVVJFX0NPREU7CisrICAgICAgICAgICAgICAgIHByb3RvLT5yZWFzb24gPSBn bG9idXNfbGliY19zdHJkdXAoCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9QUk9UT0NP TF9GQUlMVVJFX1JFQVNPTik7CisrICAgICAgICAgICAgICAgIGdvdG8gZGVueV9leGl0OworKyAg ICAgICAgICAgIH0KKysgICAgICAgICAgICBpZihwcm90by0+bGVuZ3RoID09IDApCisrICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9CisrICAgICAgICAg ICAgICAgICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgICAgIEdMT0JV U19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9VTlRJTF9MRU5HVEg7CisrICAgICAgICAg ICAgfQorKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAg IHByb3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgR0xPQlVTX0dBU1NfVFJBTlNG RVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0VPRjsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlm KCFwcm90by0+dGV4dF9tb2RlKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3Rfc2V0X2xlbmd0aChwcm90by0+cmVxdWVzdCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPmxlbmd0aCk7 CisrCisrICAgICAgICB9CisgICAgIH0KKyAgICAgLyoKKyAgICAgICogVGhlIHJlc3BvbnNlIGJ1 ZmZlcidzIHJlc2lkdWUgbWF5IGNvbnRhaW4gc29tZQorQEAgLTM5MjIsMjAgKzM5MjIsMjAgQEAg Z2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfY2FsbGJhY2soCisgICAgICAqIEFs c28sIGlmIHdlIGFyZSBpbiB0ZXh0IG1vZGUsIHdlJ2xsIGhhdmUgdG8gY29weQorICAgICAgKiB0 aGUgZGF0YSBhbnl3YXkgKGJ1dCBzaG91bGQgdXNlIHRoZSBibG9ja19zaXplKQorICAgICAgKi8K Ky0JCisrCisgICAgIGlmKHByb3RvLT50ZXh0X21vZGUgJiYKKyAgICAgICAgcHJvdG8tPmJsb2Nr X3NpemUgPiBwcm90by0+cmVzcG9uc2VfYnVmbGVuKQorICAgICB7CistCWdsb2J1c19ieXRlX3Qg KgkJdG1wOworKyAgICAgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgdG1wOworIAorLQl0bXAg PSBnbG9idXNfbGliY19yZWFsbG9jKHByb3RvLT5yZXNwb25zZV9idWZmZXIsCistCQkJCSAgcHJv dG8tPmJsb2NrX3NpemUgKgorLQkJCQkgIHNpemVvZihnbG9idXNfYnl0ZV90KSk7CistCWlmKHRt cCAhPSBHTE9CVVNfTlVMTCkKKy0JeworLQkgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmZlciA9IHRt cDsKKy0JICAgIHByb3RvLT5yZXNwb25zZV9idWZsZW4gPSBwcm90by0+YmxvY2tfc2l6ZTsKKy0J fQorKyAgICAgICAgdG1wID0gZ2xvYnVzX2xpYmNfcmVhbGxvYyhwcm90by0+cmVzcG9uc2VfYnVm ZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+YmxvY2tfc2l6 ZSAqCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihnbG9idXNfYnl0 ZV90KSk7CisrICAgICAgICBpZih0bXAgIT0gR0xPQlVTX05VTEwpCisrICAgICAgICB7CisrICAg ICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmZlciA9IHRtcDsKKysgICAgICAgICAgICBwcm90 by0+cmVzcG9uc2VfYnVmbGVuID0gcHJvdG8tPmJsb2NrX3NpemU7CisrICAgICAgICB9CisgCisg ICAgIH0KKyAKK0BAIC0zOTQ0LDE2ICszOTQ0LDE2IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9yZXF1ZXN0X2NhbGxiYWNrKAorICAgICBwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19U UkFOU0ZFUl9IVFRQX1NUQVRFX0lETEU7CisgICAgIGlmKHByb3RvLT5jb25uZWN0ZWRfc3ViamVj dCkKKyAgICAgeworLQlnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3NldF9zdWJqZWN0KHBy b3RvLT5yZXF1ZXN0LAorLQkJCQkJCSBnbG9idXNfbGliY19zdHJkdXAocHJvdG8tPmNvbm5lY3Rl ZF9zdWJqZWN0KSk7CisrICAgICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3NldF9z dWJqZWN0KHByb3RvLT5yZXF1ZXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnbG9idXNfbGliY19zdHJkdXAocHJvdG8tPmNvbm5lY3RlZF9zdWJq ZWN0KSk7CisgICAgIH0KKyAKKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3VubG9j aygpOworIAorICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9wcm90b19uZXdfbGlzdGVuZXJfcmVx dWVzdCgKKy0JbF9wcm90by0+bGlzdGVuZXIsCistCXByb3RvLT5yZXF1ZXN0LAorLQkoZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9wcm90b190ICopIHByb3RvKTsKKysgICAgICAgIGxfcHJv dG8tPmxpc3RlbmVyLAorKyAgICAgICAgcHJvdG8tPnJlcXVlc3QsCisrICAgICAgICAoZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9wcm90b190ICopIHByb3RvKTsKKyAKKyAKKyAgICAgZGVi dWdfcHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf cmVxdWVzdF9jYWxsYmFjaygpXG4iKSkpOworQEAgLTM5NjIsNDcgKzM5NjIsNDcgQEAgZ2xvYnVz X2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfY2FsbGJhY2soCisgICByZXBvc3RfcmVhZDoK KyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CistCWdvdG8gZGVueV9l eGl0OworKyAgICAgICAgZ290byBkZW55X2V4aXQ7CisgICAgIH0KKyAKKyAgICAgLyogUmVhbGxv Y2F0ZSBhIGxhcmdlciBidWZmZXIsIGlmIHdlIG5lZWQgdG8gKi8KKyAgICAgaWYocHJvdG8tPnJl c3BvbnNlX2J1ZmxlbiA9PSBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0KQorICAgICB7CistCWdsb2J1 c19ieXRlX3QgKgkJCQl0bXA7CistCXRtcCA9IGdsb2J1c19saWJjX3JlYWxsb2MocHJvdG8tPnJl c3BvbnNlX2J1ZmZlciwKKy0JCQkJICBwcm90by0+cmVzcG9uc2VfYnVmbGVuICoKKy0JCQkJICAg ICAgMiAqCistCQkJCSAgICAgIHNpemVvZihnbG9idXNfYnl0ZV90KSk7CistCWlmKHRtcCA9PSBH TE9CVVNfTlVMTCkKKy0JeworLQkgICAgcHJvdG8tPmNvZGUgPSBHTE9CVVNfTF9NQUxMT0NfRkFJ TFVSRV9DT0RFOworLQkgICAgcHJvdG8tPnJlYXNvbiA9IGdsb2J1c19saWJjX3N0cmR1cChHTE9C VVNfTF9NQUxMT0NfRkFJTFVSRV9SRUFTT04pOworLQorLQkgICAgZ290byBkZW55X2V4aXQ7Cist CX0KKy0JZWxzZQorLQl7CistCSAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyID0gdG1wOworLQkg ICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmxlbiAqPSAyOworLQl9CisrICAgICAgICBnbG9idXNfYnl0 ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgdG1wOworKyAgICAgICAgdG1wID0gZ2xvYnVz X2xpYmNfcmVhbGxvYyhwcm90by0+cmVzcG9uc2VfYnVmZmVyLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmbGVuICoKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDIgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKGdsb2J1c19ieXRlX3QpKTsKKysgICAgICAgIGlmKHRtcCA9PSBH TE9CVVNfTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBwcm90by0+Y29kZSA9IEdMT0JV U19MX01BTExPQ19GQUlMVVJFX0NPREU7CisrICAgICAgICAgICAgcHJvdG8tPnJlYXNvbiA9IGds b2J1c19saWJjX3N0cmR1cChHTE9CVVNfTF9NQUxMT0NfRkFJTFVSRV9SRUFTT04pOworKworKyAg ICAgICAgICAgIGdvdG8gZGVueV9leGl0OworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAg ICAgICAgeworKyAgICAgICAgICAgIHByb3RvLT5yZXNwb25zZV9idWZmZXIgPSB0bXA7CisrICAg ICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmxlbiAqPSAyOworKyAgICAgICAgfQorICAgICB9 CisgCisgICAgIC8qIFJlZ2lzdGVyIGFub3RoZXIgcmVhZCAqLworICAgICBkZWJ1Z19wcmludGYo NCwoX0dUU0woIiVzKCk6IFJlZ2lzdGVyaW5nIHJlYWQgb24gJXBcbiIpLAorLQkJICAgIG15bmFt ZSwKKy0JCSAgICAmcHJvdG8tPmhhbmRsZSkpOworKyAgICAgICAgICAgICAgICAgICAgbXluYW1l LAorKyAgICAgICAgICAgICAgICAgICAgJnByb3RvLT5oYW5kbGUpKTsKKyAgICAgcmVzdWx0ID0g Z2xvYnVzX2lvX3JlZ2lzdGVyX3JlYWQoJnByb3RvLT5oYW5kbGUsCistCQkJCSAgICAgcHJvdG8t PnJlc3BvbnNlX2J1ZmZlciArCistCQkJCSAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCwKKy0J CQkJICAgICBwcm90by0+cmVzcG9uc2VfYnVmbGVuIC0KKy0JCQkJICAgICBwcm90by0+cmVzcG9u c2Vfb2Zmc2V0LAorLQkJCQkgICAgIDEsCistCQkJCSAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zl cl9odHRwX3JlcXVlc3RfY2FsbGJhY2ssCistCQkJCSAgICAgbF9wcm90byk7CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvLT5yZXNwb25zZV9idWZmZXIgKworKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vf YnVmbGVuIC0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJl c3BvbnNlX29mZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX3JlcXVlc3RfY2FsbGJhY2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxfcHJvdG8pOworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisg ICAgIHsKKy0JLyogVE9ETyBpbnRlcnByZXQgdGhlIGVycm9yIG9iamVjdCAqLworLQlnb3RvIGRl bnlfZXhpdDsKKysgICAgICAgIC8qIFRPRE8gaW50ZXJwcmV0IHRoZSBlcnJvciBvYmplY3QgKi8K KysgICAgICAgIGdvdG8gZGVueV9leGl0OworICAgICB9CisgICAgIGdsb2J1c19sX2dhc3NfdHJh bnNmZXJfaHR0cF91bmxvY2soKTsKKyAKK0BAIC00MDEyLDcgKzQwMTIsNyBAQCBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9jYWxsYmFjaygKKyAgIGRlbnlfZXhpdDoKKyAgICAg aWYoZXJyKQorICAgICB7CistCWdsb2J1c19vYmplY3RfZnJlZShlcnIpOworKyAgICAgICAgZ2xv YnVzX29iamVjdF9mcmVlKGVycik7CisgICAgIH0KKyAKKyAgICAgLyoKK0BAIC00MDMzLDEzICs0 MDMzLDEzIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X2NhbGxiYWNrKAor ICAgICB7CisgICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2xvc2UocHJvdG8p OworICAgICB9CistICAgIAorKworICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfdW5s b2NrKCk7CisgCisgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX25ld19saXN0ZW5lcl9y ZXF1ZXN0KAorLQlsX3Byb3RvLT5saXN0ZW5lciwKKy0JcmVxdWVzdCwKKy0JKGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3RfcHJvdG9fdCAqKSBHTE9CVVNfTlVMTCk7CisrICAgICAgICBsX3By b3RvLT5saXN0ZW5lciwKKysgICAgICAgIHJlcXVlc3QsCisrICAgICAgICAoZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF9wcm90b190ICopIEdMT0JVU19OVUxMKTsKKyAKKyAgICAgZGVidWdf cHJpbnRmKDMsIChfR1RTTCgiRXhpdGluZyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVx dWVzdF9jYWxsYmFjaygpXG4iKSkpOworICAgICByZXR1cm47CitAQCAtNDA0OSwyMSArNDA0OSwy MSBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9jYWxsYmFjaygKKyBzdGF0 aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NhbGxiYWNrX3NlbmRfY2Fs bGJhY2soCistICAgIHZvaWQgKgkJCQkJYXJnKQorKyAgICB2b2lkICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFyZykKKyB7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVy X2h0dHBfcmVxdWVzdF9wcm90b190ICoJCXByb3RvOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zl cl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqICAgICAgICAgcHJvdG87CisgICAgIE1ZTkFNRShnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2FsbGJhY2tfc2VuZF9jYWxsYmFjayk7CisgCisgICAg IGRlYnVnX3ByaW50ZigzLCAoX0dUU0woIkVudGVyaW5nICVzKClcbiIpLG15bmFtZSkpOworLSAg ICAKKysKKyAgICAgcHJvdG8gPSAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3By b3RvX3QgKikgYXJnOworIAorICAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5nIGds b2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3NlbmRfY29tcGxldGUoKSIpKSk7CisgICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3Byb3RvX3NlbmRfY29tcGxldGUocHJvdG8tPnJlcXVlc3QsCistCQkJ CQkgICAgIHByb3RvLT51c2VyX2J1ZmZlciwKKy0JCQkJCSAgICAgcHJvdG8tPnVzZXJfb2Zmc2V0 LAorLQkJCQkJICAgICBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZCwKKy0JCQkJCSAgICAgcHJvdG8t PmZhaWx1cmVfb2NjdXJyZWQpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByb3RvLT51c2VyX2J1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcm90by0+dXNlcl9vZmZzZXQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPmZhaWx1 cmVfb2NjdXJyZWQpOworICAgICBkZWJ1Z19wcmludGYoMywgKF9HVFNMKCJFeGl0aW5nIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jYWxsYmFja19zZW5kX2NhbGxiYWNrKClcbiIpKSk7Cisg fQorIAorQEAgLTQwNzEsMjMgKzQwNzEsMjMgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X2NhbGxiYWNrX3NlbmRfY2FsbGJhY2soCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9jYWxsYmFja19yZWFkeV9jYWxsYmFjaygKKy0gICAgdm9pZCAqCQkJCQlh cmcpCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn KQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKglw cm90bzsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKiBw cm90bzsKKyAKKyAgICAgcHJvdG8gPSAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0 X3Byb3RvX3QgKikgYXJnOworIAorICAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5n IGdsb2J1c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlcXVlc3RfcmVhZHkiKSkpOworICAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9wcm90b19yZXF1ZXN0X3JlYWR5KHByb3RvLT5yZXF1ZXN0LAorLQkJ CQkJICAgICAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9wcm90b190ICopIHByb3RvKTsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVxdWVzdF9wcm90b190ICopIHByb3RvKTsKKyB9CisgLyogZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX2NhbGxiYWNrX3JlYWRfYnVmZmVyZWRfY2FsbGJhY2soKSAqLwor IHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY2FsbGJhY2tfcmVh ZF9idWZmZXJlZF9jYWxsYmFjaygKKy0gICAgdm9pZCAqCQkJCQlhcmcpCisrICAgIHZvaWQgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKQorIHsKKy0gICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKglwcm90bzsKKysgICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKiBwcm90bzsKKyAKKyAgICAgcHJv dG8gPSAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKikgYXJnOwor IAorQEAgLTQwOTksMTEgKzQwOTksMTEgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2Nh bGxiYWNrX3JlYWRfYnVmZmVyZWRfY2FsbGJhY2soCisgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNm ZXJfaHR0cF91bmxvY2soKTsKKyAKKyAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Jl YWRfYnVmZmVyZWRfY2FsbGJhY2soYXJnLAorLQkJCQkJCSAgICAgICAmcHJvdG8tPmhhbmRsZSwK Ky0JCQkJCQkgICAgICAgR0xPQlVTX1NVQ0NFU1MsCistCQkJCQkJICAgICAgIHByb3RvLT5yZXNw b25zZV9idWZmZXIgKworLQkJCQkJCSAgICAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCwKKy0J CQkJCQkgICAgICAgMCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZwcm90by0+aGFuZGxlLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfU1VDQ0VTUywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJl c3BvbnNlX2J1ZmZlciArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyB9CisgLyogZ2xv YnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NhbGxiYWNrX3JlYWRfYnVmZmVyZWRfY2FsbGJhY2so KSAqLworIAorQEAgLTQxMTEsMTAgKzQxMTEsMTAgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX2NhbGxiYWNrX3JlYWRfYnVmZmVyZWRfY2FsbGJhY2soCisgc3RhdGljCisgdm9pZAorIGds b2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jYWxsYmFja19saXN0ZW5fY2FsbGJhY2soCistICAg IHZvaWQgKgkJCQkJYXJnKQorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFyZykKKyB7CisgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfbGlzdGVu ZXJfcHJvdG9fdCAqcHJvdG87CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QJ CWxpc3RlbmVyOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9saXN0ZW5lcl90ICAgICAgICAg ICAgIGxpc3RlbmVyOworIAorICAgICBwcm90byA9IChnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRw X2xpc3RlbmVyX3Byb3RvX3QgKikgYXJnOworIAorQEAgLTQxMjIsNyArNDEyMiw3IEBAIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jYWxsYmFja19saXN0ZW5fY2FsbGJhY2soCisgCisgICAg IGlmKHByb3RvLT5zdGF0ZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX0xJU1RFTkVSX0xJ U1RFTklORykKKyAgICAgeworLQlwcm90by0+c3RhdGUgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9I VFRQX0xJU1RFTkVSX1JFQURZOworKyAgICAgICAgcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1Nf VFJBTlNGRVJfSFRUUF9MSVNURU5FUl9SRUFEWTsKKyAgICAgfQorIAorICAgICBsaXN0ZW5lciA9 IHByb3RvLT5saXN0ZW5lcjsKK0BAIC00MTM2LDIxICs0MTM2LDIxIEBAIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9jYWxsYmFja19saXN0ZW5fY2FsbGJhY2soCisgc3RhdGljCisgdm9pZAor IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9hY2NlcHQoCistICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX2xpc3RlbmVyX3Byb3RvX3QgKglwcm90bywKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfbGlzdGVuZXJfdAkJbGlzdGVuZXIsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVl c3RfdAkJcmVxdWVzdCwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAq CWF0dHIpCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3Byb3RvX3QgKiAgICAg cHJvdG8sCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QgICAgICAgICAgICAg bGlzdGVuZXIsCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAg ICAgcmVxdWVzdCwKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0dHJfdCAqICAg ICAgICBhdHRyKQorIHsKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3VsdDsKKy0gICAgZ2xv YnVzX2lvX2F0dHJfdAkJCQl0Y3BfYXR0cjsKKysgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisrICAgIGdsb2J1c19pb19hdHRyX3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGNwX2F0dHI7CisgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVy X2h0dHBfbGlzdGVuZXJfcHJvdG9fdCAqCistCQkJCQkJbF9wcm90bzsKKy0gICAgaW50CQkJCQkJ cmM7CistICAgIGludAkJCQkJCXNuZGJ1ZjsKKy0gICAgaW50CQkJCQkJcmN2YnVmOworLSAgICBn bG9idXNfYm9vbF90CQkJCW5vZGVsYXk7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2ZpbGVf bW9kZV90CQlmaWxlX21vZGU9R0xPQlVTX0dBU1NfVFJBTlNGRVJfRklMRV9NT0RFX0JJTkFSWTsK Ky0gICAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfdAlkYXRhOworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxfcHJvdG87CisrICAg IGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisrICAgIGlu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25kYnVmOworKyAgICBp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjdmJ1ZjsKKysgICAg Z2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlbGF5OworKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9maWxlX21vZGVfdCAgICAgICAgICAgIGZpbGVfbW9kZT1H TE9CVVNfR0FTU19UUkFOU0ZFUl9GSUxFX01PREVfQklOQVJZOworKyAgICBnbG9idXNfaW9fc2Vj dXJlX2F1dGhvcml6YXRpb25fZGF0YV90ICAgICAgIGRhdGE7CisgICAgIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfZmFpbGVkX2tpY2tvdXRfY2xvc3VyZV90ICpraWNrb3V0OworICAgICBnbG9idXNf cmVsdGltZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5X3RpbWU7CisgICAgIE1Z TkFNRShnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfYWNjZXB0KTsKK0BAIC00MTU5LDE5MyAr NDE1OSwxOTMgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2FjY2VwdCgKKyAgICAgbF9w cm90byA9IChnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX2xpc3RlbmVyX3Byb3RvX3QgKikgcHJv dG87CisgCisgICAgIC8qIEFsbG9jYXRlIHByb3RvIGluc3RhbmNlICovCistICAgIGxfcHJvdG8t PnJlcXVlc3QgPSAoZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKikg CistCWdsb2J1c19tYWxsb2Moc2l6ZW9mKGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVz dF9wcm90b190KSk7CisrICAgIGxfcHJvdG8tPnJlcXVlc3QgPSAoZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKikKKysgICAgICAgIGdsb2J1c19tYWxsb2Moc2l6ZW9m KGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190KSk7CisgCisgICAgIGlm KGxfcHJvdG8tPnJlcXVlc3QgPT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JZ290byBlcnJvcl9l eGl0OworKyAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICB9CisgCisgICAgIHJlc3VsdCA9 IGdsb2J1c19pb190Y3BhdHRyX2luaXQoJnRjcF9hdHRyKTsKKyAgICAgaWYocmVzdWx0ICE9IEdM T0JVU19TVUNDRVNTKQorICAgICB7CistCWdvdG8gcHJvdG9fZXJyb3I7CisrICAgICAgICBnb3Rv IHByb3RvX2Vycm9yOworICAgICB9CisgICAgIGdsb2J1c19pb19hdHRyX3NldF9zb2NrZXRfa2Vl cGFsaXZlKCZ0Y3BfYXR0ciwgR0xPQlVTX1RSVUUpOworIAorICAgICBpZihhdHRyICE9IEdMT0JV U19OVUxMICYmCisgICAgICAgICphdHRyICE9IEdMT0JVU19OVUxMKQorICAgICB7CistCS8qIENo ZWNrIGF0dHJpYnV0ZXMgd2UgY2FyZSBhYm91dCAqLworLQlyYyA9IGdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlcXVlc3RhdHRyX2dldF9zb2NrZXRfc25kYnVmKAorLQkgICAgYXR0ciwKKy0JICAgICZz bmRidWYpOworLQlpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byB0Y3Bh dHRyX2Vycm9yOworLQl9CistCWVsc2UKKy0JeworLQkgICAgaWYoc25kYnVmICE9IDApCistCSAg ICB7CistCQlnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X3NuZGJ1ZigmdGNwX2F0dHIsCistCQkJ CQkJIHNuZGJ1Zik7CistCSAgICB9CistCX0KKy0KKy0JcmMgPSBnbG9idXNfZ2Fzc190cmFuc2Zl cl9yZXF1ZXN0YXR0cl9nZXRfc29ja2V0X3JjdmJ1ZigKKy0JICAgIGF0dHIsCistCSAgICAmcmN2 YnVmKTsKKy0JaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gdGNwYXR0 cl9lcnJvcjsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIGlmKHJjdmJ1ZiAhPSAwKQorLQkgICAg eworLQkJZ2xvYnVzX2lvX2F0dHJfc2V0X3NvY2tldF9yY3ZidWYoJnRjcF9hdHRyLAorLQkJCQkJ CSByY3ZidWYpOworLQkgICAgfQorLQl9CistCistCXJjID0gZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdGF0dHJfZ2V0X3NvY2tldF9ub2RlbGF5KAorLQkgICAgYXR0ciwKKy0JICAgICZub2Rl bGF5KTsKKy0JaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gdGNwYXR0 cl9lcnJvcjsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIGdsb2J1c19pb19hdHRyX3NldF90Y3Bf bm9kZWxheSgmdGNwX2F0dHIsCistCQkJCQkgICBub2RlbGF5KTsKKy0JfQorLQorLQkvKiBGaWxl IG1vZGUgaXMgaW1wb3J0YW50IG9uIFdpbmRvd3MgKi8KKy0JcmMgPSBnbG9idXNfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0YXR0cl9nZXRfZmlsZV9tb2RlKGF0dHIsCistCQkJCQkJCSAgICAmZmlsZV9t b2RlKTsKKy0JaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gdGNwYXR0 cl9lcnJvcjsKKy0JfQorLQlyYyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX2dl dF9ibG9ja19zaXplKAorLQkgICAgYXR0ciwKKy0JICAgICZsX3Byb3RvLT5yZXF1ZXN0LT5ibG9j a19zaXplKTsKKy0JaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gdGNw YXR0cl9lcnJvcjsKKy0JfQorKyAgICAgICAgLyogQ2hlY2sgYXR0cmlidXRlcyB3ZSBjYXJlIGFi b3V0ICovCisrICAgICAgICByYyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RhdHRyX2dl dF9zb2NrZXRfc25kYnVmKAorKyAgICAgICAgICAgIGF0dHIsCisrICAgICAgICAgICAgJnNuZGJ1 Zik7CisrICAgICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAg ICAgICAgICBnb3RvIHRjcGF0dHJfZXJyb3I7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisr ICAgICAgICB7CisrICAgICAgICAgICAgaWYoc25kYnVmICE9IDApCisrICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICBnbG9idXNfaW9fYXR0cl9zZXRfc29ja2V0X3NuZGJ1ZigmdGNwX2F0 dHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNu ZGJ1Zik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgcmMgPSBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0YXR0cl9nZXRfc29ja2V0X3JjdmJ1ZigKKysgICAgICAg ICAgICBhdHRyLAorKyAgICAgICAgICAgICZyY3ZidWYpOworKyAgICAgICAgaWYocmMgIT0gR0xP QlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byB0Y3BhdHRyX2Vycm9y OworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIGlm KHJjdmJ1ZiAhPSAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2lv X2F0dHJfc2V0X3NvY2tldF9yY3ZidWYoJnRjcF9hdHRyLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY3ZidWYpOworKyAgICAgICAgICAgIH0KKysg ICAgICAgIH0KKysKKysgICAgICAgIHJjID0gZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdGF0 dHJfZ2V0X3NvY2tldF9ub2RlbGF5KAorKyAgICAgICAgICAgIGF0dHIsCisrICAgICAgICAgICAg Jm5vZGVsYXkpOworKyAgICAgICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7 CisrICAgICAgICAgICAgZ290byB0Y3BhdHRyX2Vycm9yOworKyAgICAgICAgfQorKyAgICAgICAg ZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19pb19hdHRyX3NldF90Y3Bfbm9k ZWxheSgmdGNwX2F0dHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5vZGVsYXkpOworKyAgICAgICAgfQorKworKyAgICAgICAgLyogRmlsZSBtb2RlIGlzIGlt cG9ydGFudCBvbiBXaW5kb3dzICovCisrICAgICAgICByYyA9IGdsb2J1c19nYXNzX3RyYW5zZmVy X3JlcXVlc3RhdHRyX2dldF9maWxlX21vZGUoYXR0ciwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlsZV9tb2RlKTsKKysgICAg ICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdv dG8gdGNwYXR0cl9lcnJvcjsKKysgICAgICAgIH0KKysgICAgICAgIHJjID0gZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdGF0dHJfZ2V0X2Jsb2NrX3NpemUoCisrICAgICAgICAgICAgYXR0ciwK KysgICAgICAgICAgICAmbF9wcm90by0+cmVxdWVzdC0+YmxvY2tfc2l6ZSk7CisrICAgICAgICBp ZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHRj cGF0dHJfZXJyb3I7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgLyogSWYgaHR0cHMsIHNl dCBzZWN1cml0eSBhdHRyaWJ1dGVzIGZvciB0aGUgcmVxdWVzdCAqLworICAgICBpZihsX3Byb3Rv LT51cmxfc2NoZW1lID09IEdMT0JVU19VUkxfU0NIRU1FX0hUVFBTKQorICAgICB7CistCWdsb2J1 c19yZXN1bHRfdAkJCQlyZXN1bHQ7CistCistCQorLQlnbG9idXNfaW9fc2VjdXJlX2F1dGhvcml6 YXRpb25fZGF0YV9pbml0aWFsaXplKCZkYXRhKTsKKy0KKy0JcmVzdWx0ID0gZ2xvYnVzX2lvX2F0 dHJfc2V0X3NlY3VyZV9hdXRoZW50aWNhdGlvbl9tb2RlKAorLQkgICAgJnRjcF9hdHRyLAorLQkg ICAgR0xPQlVTX0lPX1NFQ1VSRV9BVVRIRU5USUNBVElPTl9NT0RFX01VVFVBTCwKKy0JICAgIEdM T0JVU19OVUxMKTsKKy0KKy0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLQl7CistCSAg ICBnb3RvIGZyZWVfYXV0aF9kYXRhOworLQl9CistCXJlc3VsdCA9IGdsb2J1c19pb19hdHRyX3Nl dF9zZWN1cmVfY2hhbm5lbF9tb2RlKAorLQkgICAgJnRjcF9hdHRyLAorLQkgICAgR0xPQlVTX0lP X1NFQ1VSRV9DSEFOTkVMX01PREVfU1NMX1dSQVApOworLQorLQlpZihyZXN1bHQgIT0gR0xPQlVT X1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gZnJlZV9hdXRoX2RhdGE7CistCX0KKy0JaWYoYXR0 ciAhPSBHTE9CVVNfTlVMTCkKKy0JeworLQkgICAgaWYoKmF0dHIgIT0gR0xPQlVTX05VTEwpCist CSAgICB7CistCQlyYyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3NlY3VyZV9yZXF1ZXN0YXR0cl9n ZXRfYXV0aG9yaXphdGlvbigKKy0JCSAgICBhdHRyLAorLQkJICAgICZsX3Byb3RvLT5yZXF1ZXN0 LT5hdXRob3JpemF0aW9uX21vZGUsCistCQkgICAgJmxfcHJvdG8tPnJlcXVlc3QtPmF1dGhvcml6 ZWRfc3ViamVjdCk7CistCistCQlpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JCXsKKy0JCSAg ICBnb3RvIGZyZWVfYXV0aF9kYXRhOworLQkJfQorLQkgICAgfQorLQl9CistCXJlc3VsdCA9IGds b2J1c19pb19zZWN1cmVfYXV0aG9yaXphdGlvbl9kYXRhX3NldF9jYWxsYmFjaygKKy0JICAgICZk YXRhLAorLQkgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2F1dGhvcml6YXRpb25fY2Fs bGJhY2ssCistCSAgICBwcm90byk7CistCSAgICAKKy0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUND RVNTKQorLQl7CistCSAgICBnb3RvIGZyZWVfYXV0aF9kYXRhOworLQl9CistCistCXJlc3VsdCA9 IGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aG9yaXphdGlvbl9tb2RlKAorLQkgICAgJnRj cF9hdHRyLAorLQkgICAgR0xPQlVTX0lPX1NFQ1VSRV9BVVRIT1JJWkFUSU9OX01PREVfQ0FMTEJB Q0ssCistCSAgICAmZGF0YSk7CistCistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0J eworLQkgICAgZ290byBmcmVlX2F1dGhfZGF0YTsKKy0JfQorLQlnbG9idXNfaW9fc2VjdXJlX2F1 dGhvcml6YXRpb25fZGF0YV9kZXN0cm95KCZkYXRhKTsKKysgICAgICAgIGdsb2J1c19yZXN1bHRf dCAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisrCisrCisrICAgICAgICBnbG9idXNf aW9fc2VjdXJlX2F1dGhvcml6YXRpb25fZGF0YV9pbml0aWFsaXplKCZkYXRhKTsKKysKKysgICAg ICAgIHJlc3VsdCA9IGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfYXV0aGVudGljYXRpb25fbW9k ZSgKKysgICAgICAgICAgICAmdGNwX2F0dHIsCisrICAgICAgICAgICAgR0xPQlVTX0lPX1NFQ1VS RV9BVVRIRU5USUNBVElPTl9NT0RFX01VVFVBTCwKKysgICAgICAgICAgICBHTE9CVVNfTlVMTCk7 CisrCisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7Cisr ICAgICAgICAgICAgZ290byBmcmVlX2F1dGhfZGF0YTsKKysgICAgICAgIH0KKysgICAgICAgIHJl c3VsdCA9IGdsb2J1c19pb19hdHRyX3NldF9zZWN1cmVfY2hhbm5lbF9tb2RlKAorKyAgICAgICAg ICAgICZ0Y3BfYXR0ciwKKysgICAgICAgICAgICBHTE9CVVNfSU9fU0VDVVJFX0NIQU5ORUxfTU9E RV9TU0xfV1JBUCk7CisrCisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ290byBmcmVlX2F1dGhfZGF0YTsKKysgICAgICAgIH0K KysgICAgICAgIGlmKGF0dHIgIT0gR0xPQlVTX05VTEwpCisrICAgICAgICB7CisrICAgICAgICAg ICAgaWYoKmF0dHIgIT0gR0xPQlVTX05VTEwpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICByYyA9IGdsb2J1c19nYXNzX3RyYW5zZmVyX3NlY3VyZV9yZXF1ZXN0YXR0cl9nZXRfYXV0 aG9yaXphdGlvbigKKysgICAgICAgICAgICAgICAgICAgIGF0dHIsCisrICAgICAgICAgICAgICAg ICAgICAmbF9wcm90by0+cmVxdWVzdC0+YXV0aG9yaXphdGlvbl9tb2RlLAorKyAgICAgICAgICAg ICAgICAgICAgJmxfcHJvdG8tPnJlcXVlc3QtPmF1dGhvcml6ZWRfc3ViamVjdCk7CisrCisrICAg ICAgICAgICAgICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgICAgICBnb3RvIGZyZWVfYXV0aF9kYXRhOworKyAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgcmVzdWx0ID0gZ2xv YnVzX2lvX3NlY3VyZV9hdXRob3JpemF0aW9uX2RhdGFfc2V0X2NhbGxiYWNrKAorKyAgICAgICAg ICAgICZkYXRhLAorKyAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9hdXRo b3JpemF0aW9uX2NhbGxiYWNrLAorKyAgICAgICAgICAgIHByb3RvKTsKKysKKysgICAgICAgIGlm KHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3Rv IGZyZWVfYXV0aF9kYXRhOworKyAgICAgICAgfQorKworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVz X2lvX2F0dHJfc2V0X3NlY3VyZV9hdXRob3JpemF0aW9uX21vZGUoCisrICAgICAgICAgICAgJnRj cF9hdHRyLAorKyAgICAgICAgICAgIEdMT0JVU19JT19TRUNVUkVfQVVUSE9SSVpBVElPTl9NT0RF X0NBTExCQUNLLAorKyAgICAgICAgICAgICZkYXRhKTsKKysKKysgICAgICAgIGlmKHJlc3VsdCAh PSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIGZyZWVfYXV0 aF9kYXRhOworKyAgICAgICAgfQorKyAgICAgICAgZ2xvYnVzX2lvX3NlY3VyZV9hdXRob3JpemF0 aW9uX2RhdGFfZGVzdHJveSgmZGF0YSk7CisgICAgIH0KKyAKKyAgICAgLyogSW5pdGlhbGl6ZSB0 aGUgcHJvdG8gaW5zdGFuY2UgKi8KKyAgICAgbF9wcm90by0+cmVxdWVzdC0+c2VuZF9idWZmZXI9 IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zZW5kOworLSAgICBsX3Byb3RvLT5yZXF1ZXN0 LT5yZWN2X2J1ZmZlcgk9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWNlaXZlOworLSAg ICBsX3Byb3RvLT5yZXF1ZXN0LT5mYWlsCQk9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9m YWlsOworLSAgICBsX3Byb3RvLT5yZXF1ZXN0LT5kZW55CQk9IGdsb2J1c19sX2dhc3NfdHJhbnNm ZXJfaHR0cF9yZXF1ZXN0X2Rlbnk7CistICAgIGxfcHJvdG8tPnJlcXVlc3QtPnJlZmVyCQk9IGds b2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3JlZmVyOworLSAgICBsX3Byb3RvLT5y ZXF1ZXN0LT5hdXRob3JpemUJCT0gZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3Rf YXV0aG9yaXplOworLSAgICBsX3Byb3RvLT5yZXF1ZXN0LT5kZXN0cm95CQk9IGdsb2J1c19sX2dh c3NfdHJhbnNmZXJfaHR0cF9kZXN0cm95OworLSAgICBsX3Byb3RvLT5yZXF1ZXN0LT50ZXh0X21v ZGUJCT0gKGZpbGVfbW9kZSA9PSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9GSUxFX01PREVfVEVYVCk7 CistICAgIGxfcHJvdG8tPnJlcXVlc3QtPmxpbmVfbW9kZQkJPSBHTE9CVVNfTF9MSU5FX01PREVf VU5LTk9XTjsKKy0gICAgbF9wcm90by0+cmVxdWVzdC0+c3RhdGUJCT0gR0xPQlVTX0dBU1NfVFJB TlNGRVJfSFRUUF9TVEFURV9DT05ORUNUSU5HOworLSAgICBsX3Byb3RvLT5yZXF1ZXN0LT5yZXF1 ZXN0CQk9IHJlcXVlc3Q7CistICAgIGxfcHJvdG8tPnJlcXVlc3QtPnR5cGUJCT0gZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcmVxdWVzdF9nZXRfdHlwZShyZXF1ZXN0KTsKKy0gICAgbF9wcm90by0+cmVx dWVzdC0+Y29kZQkJPSAwOworLSAgICBsX3Byb3RvLT5yZXF1ZXN0LT5yZWFzb24JCT0gMDsKKy0g ICAgbF9wcm90by0+cmVxdWVzdC0+cGFyc2VfZXJyb3IJPSBHTE9CVVNfRkFMU0U7CistICAgIGxf cHJvdG8tPnJlcXVlc3QtPmRlc3Ryb3lfY2FsbGVkIAk9IEdMT0JVU19GQUxTRTsKKy0gICAgbF9w cm90by0+cmVxdWVzdC0+aGVhZGVycwkJPSBHTE9CVVNfTlVMTDsKKy0gICAgbF9wcm90by0+cmVx dWVzdC0+cmVzcG9uc2VfYnVmZmVyCT0gR0xPQlVTX05VTEw7CistICAgIGxfcHJvdG8tPnJlcXVl c3QtPmxlbmd0aAkJPSAwOworLSAgICBsX3Byb3RvLT5yZXF1ZXN0LT5oYW5kbGVkCQk9IDA7Cist ICAgIGxfcHJvdG8tPnJlcXVlc3QtPmNodW5rZWQJCT0gR0xPQlVTX0ZBTFNFOworLSAgICBsX3By b3RvLT5yZXF1ZXN0LT5jaHVua19sZWZ0CT0gMDsKKy0gICAgbF9wcm90by0+cmVxdWVzdC0+ZmFp bHVyZV9vY2N1cnJlZAk9IEdMT0JVU19GQUxTRTsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+cmVj dl9idWZmZXIgICAgICAgPSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVjZWl2ZTsKKysg ICAgbF9wcm90by0+cmVxdWVzdC0+ZmFpbCAgICAgICAgICAgICAgPSBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfZmFpbDsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+ZGVueSAgICAgICAgICAg ICAgPSBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9kZW55OworKyAgICBsX3By b3RvLT5yZXF1ZXN0LT5yZWZlciAgICAgICAgICAgICA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9yZXF1ZXN0X3JlZmVyOworKyAgICBsX3Byb3RvLT5yZXF1ZXN0LT5hdXRob3JpemUgICAg ICAgICA9IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X2F1dGhvcml6ZTsKKysg ICAgbF9wcm90by0+cmVxdWVzdC0+ZGVzdHJveSAgICAgICAgICAgPSBnbG9idXNfbF9nYXNzX3Ry YW5zZmVyX2h0dHBfZGVzdHJveTsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+dGV4dF9tb2RlICAg ICAgICAgPSAoZmlsZV9tb2RlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0ZJTEVfTU9ERV9URVhU KTsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+bGluZV9tb2RlICAgICAgICAgPSBHTE9CVVNfTF9M SU5FX01PREVfVU5LTk9XTjsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+c3RhdGUgICAgICAgICAg ICAgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1NUQVRFX0NPTk5FQ1RJTkc7CisrICAgIGxf cHJvdG8tPnJlcXVlc3QtPnJlcXVlc3QgICAgICAgICAgID0gcmVxdWVzdDsKKysgICAgbF9wcm90 by0+cmVxdWVzdC0+dHlwZSAgICAgICAgICAgICAgPSBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1 ZXN0X2dldF90eXBlKHJlcXVlc3QpOworKyAgICBsX3Byb3RvLT5yZXF1ZXN0LT5jb2RlICAgICAg ICAgICAgICA9IDA7CisrICAgIGxfcHJvdG8tPnJlcXVlc3QtPnJlYXNvbiAgICAgICAgICAgID0g MDsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+cGFyc2VfZXJyb3IgICAgICAgPSBHTE9CVVNfRkFM U0U7CisrICAgIGxfcHJvdG8tPnJlcXVlc3QtPmRlc3Ryb3lfY2FsbGVkICAgID0gR0xPQlVTX0ZB TFNFOworKyAgICBsX3Byb3RvLT5yZXF1ZXN0LT5oZWFkZXJzICAgICAgICAgICA9IEdMT0JVU19O VUxMOworKyAgICBsX3Byb3RvLT5yZXF1ZXN0LT5yZXNwb25zZV9idWZmZXIgICA9IEdMT0JVU19O VUxMOworKyAgICBsX3Byb3RvLT5yZXF1ZXN0LT5sZW5ndGggICAgICAgICAgICA9IDA7CisrICAg IGxfcHJvdG8tPnJlcXVlc3QtPmhhbmRsZWQgICAgICAgICAgID0gMDsKKysgICAgbF9wcm90by0+ cmVxdWVzdC0+Y2h1bmtlZCAgICAgICAgICAgPSBHTE9CVVNfRkFMU0U7CisrICAgIGxfcHJvdG8t PnJlcXVlc3QtPmNodW5rX2xlZnQgICAgICAgID0gMDsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+ ZmFpbHVyZV9vY2N1cnJlZCAgPSBHTE9CVVNfRkFMU0U7CisgICAgIGxfcHJvdG8tPnJlcXVlc3Qt Pm9uZXNob3RfcmVnaXN0ZXJlZCA9IEdMT0JVU19GQUxTRTsKKy0gICAgbF9wcm90by0+cmVxdWVz dC0+b25lc2hvdF9hY3RpdmUJPSBHTE9CVVNfRkFMU0U7CistICAgIGxfcHJvdG8tPnJlcXVlc3Qt PmVvZl9yZWFkCQk9IEdMT0JVU19GQUxTRTsKKy0gICAgbF9wcm90by0+cmVxdWVzdC0+bWV0aG9k CQk9IEdMT0JVU19OVUxMOworLSAgICBsX3Byb3RvLT5yZXF1ZXN0LT51cmkJCT0gR0xPQlVTX05V TEw7CistICAgIGxfcHJvdG8tPnJlcXVlc3QtPnJlc3BvbnNlX29mZnNldAk9IDA7CistICAgIGxf cHJvdG8tPnJlcXVlc3QtPnBhcnNlZF9vZmZzZXQJPSAwOworLSAgICBsX3Byb3RvLT5yZXF1ZXN0 LT5jbGllbnRfc2lkZQk9IEdMT0JVU19GQUxTRTsKKy0gICAgbF9wcm90by0+cmVxdWVzdC0+Y29u bmVjdGVkX3N1YmplY3QJPSBHTE9CVVNfTlVMTDsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+b25l c2hvdF9hY3RpdmUgICAgPSBHTE9CVVNfRkFMU0U7CisrICAgIGxfcHJvdG8tPnJlcXVlc3QtPmVv Zl9yZWFkICAgICAgICAgID0gR0xPQlVTX0ZBTFNFOworKyAgICBsX3Byb3RvLT5yZXF1ZXN0LT5t ZXRob2QgICAgICAgICAgICA9IEdMT0JVU19OVUxMOworKyAgICBsX3Byb3RvLT5yZXF1ZXN0LT51 cmkgICAgICAgICAgICAgICA9IEdMT0JVU19OVUxMOworKyAgICBsX3Byb3RvLT5yZXF1ZXN0LT5y ZXNwb25zZV9vZmZzZXQgICA9IDA7CisrICAgIGxfcHJvdG8tPnJlcXVlc3QtPnBhcnNlZF9vZmZz ZXQgICAgID0gMDsKKysgICAgbF9wcm90by0+cmVxdWVzdC0+Y2xpZW50X3NpZGUgICAgICAgPSBH TE9CVVNfRkFMU0U7CisrICAgIGxfcHJvdG8tPnJlcXVlc3QtPmNvbm5lY3RlZF9zdWJqZWN0ID0g R0xPQlVTX05VTEw7CisgCisgICAgIC8qIFJlZ2lzdGVyIGFjY2VwdCB3aXRoIG5ldyByZXF1ZXN0 ICovCisgICAgIGxfcHJvdG8tPnN0YXRlID0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9MSVNU RU5FUl9BQ0NFUFRJTkc7CisgCisgICAgIGRlYnVnX3ByaW50Zig0LChfR1RTTCgiJXMoKTogUmVn aXN0ZXJpbmcgYWNjZXB0IG9uICVwXG4iKSwKKy0JCSAgICBteW5hbWUsCistCQkgICAgJmxfcHJv dG8tPmhhbmRsZSkpOworKyAgICAgICAgICAgICAgICAgICAgbXluYW1lLAorKyAgICAgICAgICAg ICAgICAgICAgJmxfcHJvdG8tPmhhbmRsZSkpOworICAgICByZXN1bHQgPSBnbG9idXNfaW9fdGNw X3JlZ2lzdGVyX2FjY2VwdCgmbF9wcm90by0+aGFuZGxlLAorLQkJCQkgICZ0Y3BfYXR0ciwKKy0J CQkJICAmbF9wcm90by0+cmVxdWVzdC0+aGFuZGxlLAorLQkJCQkgIGdsb2J1c19sX2dhc3NfdHJh bnNmZXJfaHR0cF9hY2NlcHRfY2FsbGJhY2ssCistCQkJCSAgbF9wcm90byk7CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZ0Y3BfYXR0ciwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmxfcHJvdG8tPnJlcXVlc3QtPmhhbmRsZSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2FjY2VwdF9j YWxsYmFjaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbF9wcm90byk7Cisg ICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byB0 Y3BhdHRyX2Vycm9yOworQEAgLTQzNzAsNyArNDM3MCw3IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNm ZXJfaHR0cF9hY2NlcHQoCisgCisgICAgIEdsb2J1c1RpbWVSZWx0aW1lU2V0KGRlbGF5X3RpbWUs IDAsIDApOworICAgICBkZWJ1Z19wcmludGYoNCwoX0dUU0woIiVzKCk6IFJlZ2lzdGVyaW5nIG9u ZXNob3RcbiIpLAorLQkJCW15bmFtZSkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIG15bmFt ZSkpOworICAgICBraWNrb3V0ID0gZ2xvYnVzX2xpYmNfbWFsbG9jKAorICAgICAgICAgICAgIHNp emVvZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2ZhaWxlZF9raWNrb3V0X2Nsb3N1cmVfdCkpOwor IAorQEAgLTQzNzksOSArNDM3OSw5IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9hY2Nl cHQoCisgCisgICAgIGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVzaG90KAorICAgICAgICAg R0xPQlVTX05VTEwsCistCSZkZWxheV90aW1lLAorLQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfYWNjZXB0X2ZhaWxlZF9raWNrb3V0LAorLQlraWNrb3V0KTsKKysgICAgICAgICZkZWxheV90 aW1lLAorKyAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2FjY2VwdF9mYWlsZWRf a2lja291dCwKKysgICAgICAgIGtpY2tvdXQpOworIAorICAgICBkZWJ1Z19wcmludGYoMSwgKF9H VFNMKCJleGl0aW5nICVzKClcbiIpLG15bmFtZSkpOworIH0KK0BAIC00MzkwLDEwICs0MzkwLDEw IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9hY2NlcHQoCisgc3RhdGljCisgZ2xvYnVz X3Jlc3VsdF90CisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lzdGVyX3JlYWQoCist ICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICoJCXByb3RvKQor KyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqICAgICAgICAg cHJvdG8pCisgeworICAgICBNWU5BTUUoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3JlZ2lz dGVyX3JlYWQpOworLSAgICAKKysKKyAgICAgLyoKKyAgICAgICogSWYgYmluYXJ5LCBhbmQgc29t ZSBjaHVuayBkYXRhIGlzIHVucmVhZCBmcm9tIHRoZSBoYW5kbGUsCisgICAgICAqIG9yIHdlIGFy ZSBub3QgY2h1bmtlZCwgd2UgY2FuIHJlYWQgZGlyZWN0bHkgaW50byB0aGUgdXNlcidzCitAQCAt NDQwMSw3NyArNDQwMSw3NyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVnaXN0ZXJf cmVhZCgKKyAgICAgICogdG8gdGhlIHVzZXIncyBidWZmZXIuCisgICAgICAqLworICAgICBpZihw cm90by0+dGV4dF9tb2RlID09IEdMT0JVU19GQUxTRSAmJgorLQkgICAgKAorLQkJKHByb3RvLT5j aHVua2VkICYmCistCQkgcHJvdG8tPmNodW5rX2xlZnQgPiAwICYmCistCQkgcHJvdG8tPnJlY3Zf c3RhdGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0NIVU5LX0JPRFkp IHx8CistCQkocHJvdG8tPmNodW5rZWQgPT0gR0xPQlVTX0ZBTFNFKQorLQkgICAgKQorKyAgICAg ICAgICAgICgKKysgICAgICAgICAgICAgICAgKHByb3RvLT5jaHVua2VkICYmCisrICAgICAgICAg ICAgICAgICBwcm90by0+Y2h1bmtfbGVmdCA+IDAgJiYKKysgICAgICAgICAgICAgICAgIHByb3Rv LT5yZWN2X3N0YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVO S19CT0RZKSB8fAorKyAgICAgICAgICAgICAgICAocHJvdG8tPmNodW5rZWQgPT0gR0xPQlVTX0ZB TFNFKQorKyAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAKKyAgICAgeworLQlnbG9idXNf c2l6ZV90CQkJCW1pbmltdW07CistCWdsb2J1c19zaXplX3QJCQkJbWF4aW11bTsKKy0KKy0JbWlu aW11bSA9IHByb3RvLT51c2VyX3dhaXRsZW47CistCistCWlmKG1pbmltdW0gPiBwcm90by0+dXNl cl9idWZsZW4gLSBwcm90by0+dXNlcl9vZmZzZXQpCistCXsKKy0JICAgIG1pbmltdW0gPSBwcm90 by0+dXNlcl9idWZsZW4gLSBwcm90by0+dXNlcl9vZmZzZXQ7CistCX0KKy0JaWYocHJvdG8tPmNo dW5rZWQgJiYgbWluaW11bSA+IHByb3RvLT5jaHVua19sZWZ0KQorLQl7CistCSAgICBtaW5pbXVt ID0gcHJvdG8tPmNodW5rX2xlZnQ7CistCX0KKy0JaWYocHJvdG8tPmxlbmd0aCAhPSAwICYmCist CSAgIG1pbmltdW0gPiBwcm90by0+bGVuZ3RoIC0gcHJvdG8tPmhhbmRsZWQpCistCXsKKy0JICAg bWluaW11bSA9IHByb3RvLT5sZW5ndGggLSBwcm90by0+aGFuZGxlZDsKKy0JfQorLQorLQltYXhp bXVtID0gcHJvdG8tPnVzZXJfYnVmbGVuIC0gcHJvdG8tPnVzZXJfb2Zmc2V0OworLQorLQlpZihw cm90by0+Y2h1bmtlZCAmJiBtYXhpbXVtID4gcHJvdG8tPmNodW5rX2xlZnQpCistCXsKKy0JICAg IG1heGltdW0gPSBwcm90by0+Y2h1bmtfbGVmdDsKKy0JfQorLQlpZihwcm90by0+bGVuZ3RoICE9 IDAgJiYKKy0JICAgbWF4aW11bSA+IHByb3RvLT5sZW5ndGggLSBwcm90by0+aGFuZGxlZCkKKy0J eworLQkgICBtYXhpbXVtID0gcHJvdG8tPmxlbmd0aCAtIHByb3RvLT5oYW5kbGVkOworLQl9Cist CistCWRlYnVnX3ByaW50Zig0LChfR1RTTCgiJXMoKTogUmVnaXN0ZXJpbmcgcmVhZCBvbiAlcFxu IiksCistCQkgICAgbXluYW1lLAorLQkJICAgICZwcm90by0+aGFuZGxlKSk7CistCXJldHVybgor LQkgICAgZ2xvYnVzX2lvX3JlZ2lzdGVyX3JlYWQoJnByb3RvLT5oYW5kbGUsCistCQkJCSAgICBw cm90by0+dXNlcl9idWZmZXIgKworLQkJCQkgICAgICAgIHByb3RvLT51c2VyX29mZnNldCwKKy0J CQkJICAgIG1heGltdW0sCistCQkJCSAgICBtaW5pbXVtLAorLQkJCQkgICAgZ2xvYnVzX2xfZ2Fz c190cmFuc2Zlcl9odHRwX3JlYWRfY2FsbGJhY2ssCistCQkJCSAgICBwcm90byk7CistICAgIH0K KysgICAgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVt OworKyAgICAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGlt dW07CisrCisrICAgICAgICBtaW5pbXVtID0gcHJvdG8tPnVzZXJfd2FpdGxlbjsKKysKKysgICAg ICAgIGlmKG1pbmltdW0gPiBwcm90by0+dXNlcl9idWZsZW4gLSBwcm90by0+dXNlcl9vZmZzZXQp CisrICAgICAgICB7CisrICAgICAgICAgICAgbWluaW11bSA9IHByb3RvLT51c2VyX2J1ZmxlbiAt IHByb3RvLT51c2VyX29mZnNldDsKKysgICAgICAgIH0KKysgICAgICAgIGlmKHByb3RvLT5jaHVu a2VkICYmIG1pbmltdW0gPiBwcm90by0+Y2h1bmtfbGVmdCkKKysgICAgICAgIHsKKysgICAgICAg ICAgICBtaW5pbXVtID0gcHJvdG8tPmNodW5rX2xlZnQ7CisrICAgICAgICB9CisrICAgICAgICBp Zihwcm90by0+bGVuZ3RoICE9IDAgJiYKKysgICAgICAgICAgIG1pbmltdW0gPiBwcm90by0+bGVu Z3RoIC0gcHJvdG8tPmhhbmRsZWQpCisrICAgICAgICB7CisrICAgICAgICAgICBtaW5pbXVtID0g cHJvdG8tPmxlbmd0aCAtIHByb3RvLT5oYW5kbGVkOworKyAgICAgICAgfQorKworKyAgICAgICAg bWF4aW11bSA9IHByb3RvLT51c2VyX2J1ZmxlbiAtIHByb3RvLT51c2VyX29mZnNldDsKKysKKysg ICAgICAgIGlmKHByb3RvLT5jaHVua2VkICYmIG1heGltdW0gPiBwcm90by0+Y2h1bmtfbGVmdCkK KysgICAgICAgIHsKKysgICAgICAgICAgICBtYXhpbXVtID0gcHJvdG8tPmNodW5rX2xlZnQ7Cisr ICAgICAgICB9CisrICAgICAgICBpZihwcm90by0+bGVuZ3RoICE9IDAgJiYKKysgICAgICAgICAg IG1heGltdW0gPiBwcm90by0+bGVuZ3RoIC0gcHJvdG8tPmhhbmRsZWQpCisrICAgICAgICB7Cisr ICAgICAgICAgICBtYXhpbXVtID0gcHJvdG8tPmxlbmd0aCAtIHByb3RvLT5oYW5kbGVkOworKyAg ICAgICAgfQorKworKyAgICAgICAgZGVidWdfcHJpbnRmKDQsKF9HVFNMKCIlcygpOiBSZWdpc3Rl cmluZyByZWFkIG9uICVwXG4iKSwKKysgICAgICAgICAgICAgICAgICAgIG15bmFtZSwKKysgICAg ICAgICAgICAgICAgICAgICZwcm90by0+aGFuZGxlKSk7CisrICAgICAgICByZXR1cm4KKysgICAg ICAgICAgICBnbG9idXNfaW9fcmVnaXN0ZXJfcmVhZCgmcHJvdG8tPmhhbmRsZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+dXNlcl9idWZmZXIgKworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+dXNlcl9vZmZzZXQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZWFkX2NhbGxiYWNr LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvKTsKKysgICAgfQor ICAgICBlbHNlCisgICAgIHsKKy0JLyoKKy0JICogSW4gdGV4dCBtb2RlIG9yIGluICJjaHVua2Vk IiBtb2RlLCB3ZSB3aWxsIGhhdmUKKy0JICogdG8gYnVmZmVyIHRoZSBkYXRhIGFuZCB0aGVuIGFw cGx5IHNvbWUgdHJhbnNmb3JtYXRpb24KKy0JICogdG8gaXQgdXBvbiByZWNlaXZpbmcgaXQuCist CSAqLworLQlnbG9idXNfc2l6ZV90CQkJCXNtYWxsZXI7CisrICAgICAgICAvKgorKyAgICAgICAg ICogSW4gdGV4dCBtb2RlIG9yIGluICJjaHVua2VkIiBtb2RlLCB3ZSB3aWxsIGhhdmUKKysgICAg ICAgICAqIHRvIGJ1ZmZlciB0aGUgZGF0YSBhbmQgdGhlbiBhcHBseSBzb21lIHRyYW5zZm9ybWF0 aW9uCisrICAgICAgICAgKiB0byBpdCB1cG9uIHJlY2VpdmluZyBpdC4KKysgICAgICAgICAqLwor KyAgICAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsZXI7 CisgCistCXNtYWxsZXIgPSBwcm90by0+dXNlcl93YWl0bGVuOworKyAgICAgICAgc21hbGxlciA9 IHByb3RvLT51c2VyX3dhaXRsZW47CisgCisgICAgICAgICBpZiAocHJvdG8tPnJlc3BvbnNlX2J1 ZmxlbiAtIHByb3RvLT5yZXNwb25zZV9vZmZzZXQgPT0gMCkKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICAvKiBpZiBidWZmZXIgaXMgZnVsbCwgc2hpZnQgdW5wYXJzZWQgZGF0YSB0byBidWZmZXIg aGVhZCAqLworLQkgICAgbWVtbW92ZShwcm90by0+cmVzcG9uc2VfYnVmZmVyLAorLQkJICAgIHBy b3RvLT5yZXNwb25zZV9idWZmZXIgKyBwcm90by0+cGFyc2VkX29mZnNldCwKKy0JCSAgICBwcm90 by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQpOworLQkgICAgcHJvdG8t PnJlc3BvbnNlX29mZnNldCAtPSBwcm90by0+cGFyc2VkX29mZnNldDsKKy0JICAgIHByb3RvLT5w YXJzZWRfb2Zmc2V0ID0gMDsKKysgICAgICAgICAgICBtZW1tb3ZlKHByb3RvLT5yZXNwb25zZV9i dWZmZXIsCisrICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyICsgcHJv dG8tPnBhcnNlZF9vZmZzZXQsCisrICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vf b2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQpOworKyAgICAgICAgICAgIHByb3RvLT5yZXNw b25zZV9vZmZzZXQgLT0gcHJvdG8tPnBhcnNlZF9vZmZzZXQ7CisrICAgICAgICAgICAgcHJvdG8t PnBhcnNlZF9vZmZzZXQgPSAwOworICAgICAgICAgfQorICAgICAgICAgaWYgKHByb3RvLT5yZXNw b25zZV9idWZsZW4gLSBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0ID09IDApCisgICAgICAgICB7CitA QCAtNDQ5MSwyMyArNDQ5MSwyMyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcmVnaXN0 ZXJfcmVhZCgKKyAgICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmxlbiAqPSAyOwor ICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKy0JaWYoc21hbGxlciA+IHByb3RvLT5yZXNwb25z ZV9idWZsZW4gLSBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0KQorLQl7CistCSAgICBzbWFsbGVyID0g cHJvdG8tPnJlc3BvbnNlX2J1ZmxlbiAtIHByb3RvLT5yZXNwb25zZV9vZmZzZXQ7CistCX0KKy0K Ky0JZGVidWdfcHJpbnRmKDQsKF9HVFNMKCIlcygpOiBSZWdpc3RlcmluZyByZWFkIG9uICVwXG4i KSwKKy0JCQlteW5hbWUsCistCQkJJnByb3RvLT5oYW5kbGUpKTsKKy0JcmV0dXJuCistCSAgICBn bG9idXNfaW9fcmVnaXN0ZXJfcmVhZCgmcHJvdG8tPmhhbmRsZSwKKy0JCQkJICAgIHByb3RvLT5y ZXNwb25zZV9idWZmZXIgKworLQkJCQkgICAgICAgIHByb3RvLT5yZXNwb25zZV9vZmZzZXQsCist CQkJCSAgICBwcm90by0+cmVzcG9uc2VfYnVmbGVuIC0KKy0JCQkJICAgICAgICBwcm90by0+cmVz cG9uc2Vfb2Zmc2V0LAorLQkJCQkgICAgc21hbGxlciwKKy0JCQkJICAgIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9yZWFkX2J1ZmZlcmVkX2NhbGxiYWNrLAorLQkJCQkgICAgcHJvdG8pOwor KyAgICAgICAgaWYoc21hbGxlciA+IHByb3RvLT5yZXNwb25zZV9idWZsZW4gLSBwcm90by0+cmVz cG9uc2Vfb2Zmc2V0KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHNtYWxsZXIgPSBwcm90by0+ cmVzcG9uc2VfYnVmbGVuIC0gcHJvdG8tPnJlc3BvbnNlX29mZnNldDsKKysgICAgICAgIH0KKysK KysgICAgICAgIGRlYnVnX3ByaW50Zig0LChfR1RTTCgiJXMoKTogUmVnaXN0ZXJpbmcgcmVhZCBv biAlcFxuIiksCisrICAgICAgICAgICAgICAgICAgICAgICAgbXluYW1lLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICZwcm90by0+aGFuZGxlKSk7CisrICAgICAgICByZXR1cm4KKysgICAgICAg ICAgICBnbG9idXNfaW9fcmVnaXN0ZXJfcmVhZCgmcHJvdG8tPmhhbmRsZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyICsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNl dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vf YnVmbGVuIC0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8t PnJlc3BvbnNlX29mZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz bWFsbGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dh c3NfdHJhbnNmZXJfaHR0cF9yZWFkX2J1ZmZlcmVkX2NhbGxiYWNrLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHByb3RvKTsKKyAgICAgfQorIH0KKyAKK0BAIC00NTU0LDE1 ICs0NTU0LDE1IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9oZXhfZXNjYXBlKAorIHN0 YXRpYworIGNoYXIgKgorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jb25zdHJ1Y3RfcmVx dWVzdCgKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKgkJ cHJvdG8pCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICog ICAgICAgICBwcm90bykKKyB7CistICAgIGdsb2J1c19zaXplX3QJCQkJY21kX2xlbjsKKy0gICAg Y2hhciAqCQkJCQljbWQgPSBHTE9CVVNfTlVMTDsKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlsZW5n dGg7CistICAgIGNoYXIgKgkJCQkJdXJsID0gR0xPQlVTX05VTEw7CisrICAgIGdsb2J1c19zaXpl X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kX2xlbjsKKysgICAgY2hhciAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSBHTE9CVVNfTlVMTDsKKysg ICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg7Cisr ICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gR0xP QlVTX05VTEw7CisgCisgICAgIC8qIENvbnN0cnVjdCB0aGUgcmVxdWVzdCBzdHJpbmcgdG8gc2Vu ZCB0byB0aGUgc2VydmVyICovCistICAgIGNtZF9sZW4gPSAzOwkJCS8qIGZvciBDUkxGXDAgdGVy bWluYXRpb24gKi8KKysgICAgY21kX2xlbiA9IDM7ICAgICAgICAgICAgICAgICAgICAgICAgLyog Zm9yIENSTEZcMCB0ZXJtaW5hdGlvbiAqLworICAgICBjbWRfbGVuICs9IHN0cmxlbihwcm90by0+ dXJsLmhvc3QpOyAvKiBSZXF1aXJlZCBmb3IgaHR0cC8xLjEqLworICAgICBpZihwcm90by0+cHJv eHlfY29ubmVjdCkKKyAgICAgeworQEAgLTQ1NzMsNyArNDU3Myw3IEBAIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9jb25zdHJ1Y3RfcmVxdWVzdCgKKyAgICAgICAgICAgICByZXR1cm4gTlVM TDsKKyAgICAgICAgIH0KKyAKKy0JY21kX2xlbiArPSBzdHJsZW4odXJsKTsKKysgICAgICAgIGNt ZF9sZW4gKz0gc3RybGVuKHVybCk7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CitAQCAtNDU4 MywyNDIgKzQ1ODMsMjQyIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9jb25zdHJ1Y3Rf cmVxdWVzdCgKKyAgICAgICAgIHsKKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAg IH0KKy0JY21kX2xlbiArPSBzdHJsZW4odXJsKTsKKysgICAgICAgIGNtZF9sZW4gKz0gc3RybGVu KHVybCk7CisgICAgIH0KKyAKKyAgICAgc3dpdGNoKHByb3RvLT50eXBlKQorICAgICB7CisgICAg ICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfR0VUOgorLQljbWRfbGVu ICs9IHN0cmxlbihHTE9CVVNfTF9HRVRfQ09NTUFORCk7CistCWNtZCA9IGdsb2J1c19tYWxsb2Mo Y21kX2xlbiAqIHNpemVvZihnbG9idXNfYnl0ZV90KSk7CisrICAgICAgICBjbWRfbGVuICs9IHN0 cmxlbihHTE9CVVNfTF9HRVRfQ09NTUFORCk7CisrICAgICAgICBjbWQgPSBnbG9idXNfbWFsbG9j KGNtZF9sZW4gKiBzaXplb2YoZ2xvYnVzX2J5dGVfdCkpOworIAorLQlpZihjbWQgPT0gR0xPQlVT X05VTEwpCistCXsKKysgICAgICAgIGlmKGNtZCA9PSBHTE9CVVNfTlVMTCkKKysgICAgICAgIHsK KyAgICAgICAgICAgICBnbG9idXNfbGliY19mcmVlKHVybCk7CisgCistCSAgICByZXR1cm4gR0xP QlVTX05VTEw7ICAgIAorLQl9CistCQorLQlzcHJpbnRmKGNtZCwKKy0JCUdMT0JVU19MX0dFVF9D T01NQU5ELAorLQkJdXJsLAorLQkJcHJvdG8tPnVybC5ob3N0KTsKKy0KKy0Jc3RyY2F0KGNtZCwK Ky0JICAgICAgIENSTEYpOworLQkKKysgICAgICAgICAgICByZXR1cm4gR0xPQlVTX05VTEw7Cisr ICAgICAgICB9CisrCisrICAgICAgICBzcHJpbnRmKGNtZCwKKysgICAgICAgICAgICAgICAgR0xP QlVTX0xfR0VUX0NPTU1BTkQsCisrICAgICAgICAgICAgICAgIHVybCwKKysgICAgICAgICAgICAg ICAgcHJvdG8tPnVybC5ob3N0KTsKKysKKysgICAgICAgIHN0cmNhdChjbWQsCisrICAgICAgICAg ICAgICAgQ1JMRik7CisrCisgICAgICAgICBnbG9idXNfbGliY19mcmVlKHVybCk7CistCXJldHVy biBjbWQ7CisrICAgICAgICByZXR1cm4gY21kOworIAorICAgICAgIGNhc2UgR0xPQlVTX0dBU1Nf VFJBTlNGRVJfUkVRVUVTVF9UWVBFX1BVVDoKKy0JY21kX2xlbiArPSBzdHJsZW4oR0xPQlVTX0xf UFVUX0NPTU1BTkQpOworLQljbWRfbGVuICs9IDI7CistCistCWlmKHByb3RvLT50ZXh0X21vZGUg PT0gR0xPQlVTX1RSVUUpCistCXsKKy0JICAgIGNtZF9sZW4gKz0gc3RybGVuKEdMT0JVU19MX1RF WFRfSEVBREVSKTsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIGNtZF9sZW4gKz0gc3RybGVuKEdM T0JVU19MX0JJTkFSWV9IRUFERVIpOworLQl9CistCQorLQlsZW5ndGggPSBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0X2dldF9sZW5ndGgocHJvdG8tPnJlcXVlc3QpOworLQlpZihsZW5ndGgg IT0gMCkKKy0JeworLQkgICAgZ2xvYnVzX3NpemVfdAkJCXggPSBsZW5ndGg7CistCSAgICBnbG9i dXNfc2l6ZV90CQkJZGlnaXRzID0gMDsKKy0KKy0JICAgIC8qIGNvdW50IHRoZSBudW1iZXIgb2Yg ZGVjaW1hbCBkaWdpdHMgaW4gbGVuZ3RoICovCistCSAgICBkbworLQkgICAgeworLQkJZGlnaXRz Kys7CistCQl4IC89IDEwOworLQkgICAgfSB3aGlsZSh4ID4gMCk7CistCSAgICAKKy0JICAgIGNt ZF9sZW4gKz0gc3RybGVuKEdMT0JVU19MX0NPTlRFTlRfTEVOR1RIX0hFQURFUik7CistCSAgICBj bWRfbGVuICs9IGRpZ2l0czsKKy0JICAgIGNtZCA9IGdsb2J1c19tYWxsb2MoY21kX2xlbiAqIHNp emVvZihnbG9idXNfYnl0ZV90KSk7CistCistCSAgICBpZihjbWQgPT0gR0xPQlVTX05VTEwpCist CSAgICB7CisrICAgICAgICBjbWRfbGVuICs9IHN0cmxlbihHTE9CVVNfTF9QVVRfQ09NTUFORCk7 CisrICAgICAgICBjbWRfbGVuICs9IDI7CisrCisrICAgICAgICBpZihwcm90by0+dGV4dF9tb2Rl ID09IEdMT0JVU19UUlVFKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGNtZF9sZW4gKz0gc3Ry bGVuKEdMT0JVU19MX1RFWFRfSEVBREVSKTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysg ICAgICAgIHsKKysgICAgICAgICAgICBjbWRfbGVuICs9IHN0cmxlbihHTE9CVVNfTF9CSU5BUllf SEVBREVSKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGxlbmd0aCA9IGdsb2J1c19nYXNzX3Ry YW5zZmVyX3JlcXVlc3RfZ2V0X2xlbmd0aChwcm90by0+cmVxdWVzdCk7CisrICAgICAgICBpZihs ZW5ndGggIT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBnbG9idXNfc2l6ZV90ICAgICAg ICAgICAgICAgICAgICAgICB4ID0gbGVuZ3RoOworKyAgICAgICAgICAgIGdsb2J1c19zaXplX3Qg ICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDA7CisrCisrICAgICAgICAgICAgLyogY291 bnQgdGhlIG51bWJlciBvZiBkZWNpbWFsIGRpZ2l0cyBpbiBsZW5ndGggKi8KKysgICAgICAgICAg ICBkbworKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZGlnaXRzKys7CisrICAgICAg ICAgICAgICAgIHggLz0gMTA7CisrICAgICAgICAgICAgfSB3aGlsZSh4ID4gMCk7CisrCisrICAg ICAgICAgICAgY21kX2xlbiArPSBzdHJsZW4oR0xPQlVTX0xfQ09OVEVOVF9MRU5HVEhfSEVBREVS KTsKKysgICAgICAgICAgICBjbWRfbGVuICs9IGRpZ2l0czsKKysgICAgICAgICAgICBjbWQgPSBn bG9idXNfbWFsbG9jKGNtZF9sZW4gKiBzaXplb2YoZ2xvYnVzX2J5dGVfdCkpOworKworKyAgICAg ICAgICAgIGlmKGNtZCA9PSBHTE9CVVNfTlVMTCkKKysgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIGdsb2J1c19saWJjX2ZyZWUodXJsKTsKKy0JCXJldHVybiBHTE9CVVNfTlVMTDsKKy0J ICAgIH0KKy0JICAgIAorLQkgICAgc3ByaW50ZigoY2hhciAqKSBjbWQsCistCQkgICAgR0xPQlVT X0xfUFVUX0NPTU1BTkQsCistCQkgICAgdXJsLAorLQkJICAgIHByb3RvLT51cmwuaG9zdCk7Cist CistCSAgICBzcHJpbnRmKGNtZCArIHN0cmxlbihjbWQpLAorLQkJICAgIEdMT0JVU19MX0NPTlRF TlRfTEVOR1RIX0hFQURFUiwKKy0JCSAgICBsZW5ndGgpOworLQl9CistCWVsc2UKKy0JeworLQkg ICAgY21kX2xlbiArPSBzdHJsZW4oR0xPQlVTX0xfQ0hVTktFRF9IRUFERVIpOworLQkgICAgY21k ID0gZ2xvYnVzX21hbGxvYyhjbWRfbGVuICogc2l6ZW9mKGdsb2J1c19ieXRlX3QpKTsKKy0JICAg IHByb3RvLT5jaHVua2VkID0gR0xPQlVTX1RSVUU7CistCistCSAgICAvKiBoZXggZW5jb2Rpbmcg b2YgZ2xvYnVzX3NpemVfdDogdHdvIGJ5dGVzIHRvIGVuY29kZSBwZXIgOCBiaXRzLAorLQkgICAg ICogcGx1cyBhIENSTEYgdG8gZW5kIHRoZSBjaHVuayBoZWFkZXIKKy0JICAgICAqLworLQkgICAg cHJvdG8tPmlvdlswXS5pb3ZfYmFzZSA9ICh2b2lkICopCistCQlnbG9idXNfbWFsbG9jKChzaXpl b2YoZ2xvYnVzX3NpemVfdCkgKiAyKSArIDIpOworLQkgICAgLyogVGhpcyBuZXZlciBjaGFuZ2Vz ICovCistCSAgICBwcm90by0+aW92WzJdLmlvdl9iYXNlID0gQ1JMRjsKKy0JICAgIHByb3RvLT5p b3ZbMl0uaW92X2xlbiA9IDI7CistCSAgICBwcm90by0+aW92WzNdLmlvdl9iYXNlID0gIjAiIENS TEYgQ1JMRjsKKy0JICAgIHByb3RvLT5pb3ZbM10uaW92X2xlbiA9IHN0cmxlbigiMCIgQ1JMRiBD UkxGKTsKKy0KKy0JICAgIGlmKGNtZCA9PSBHTE9CVVNfTlVMTCkKKy0JICAgIHsKKysgICAgICAg ICAgICAgICAgcmV0dXJuIEdMT0JVU19OVUxMOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAg ICAgICBzcHJpbnRmKChjaGFyICopIGNtZCwKKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19M X1BVVF9DT01NQU5ELAorKyAgICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICAgICAgICAgICAg ICAgICAgcHJvdG8tPnVybC5ob3N0KTsKKysKKysgICAgICAgICAgICBzcHJpbnRmKGNtZCArIHN0 cmxlbihjbWQpLAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfQ09OVEVOVF9MRU5HVEhf SEVBREVSLAorKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoKTsKKysgICAgICAgIH0KKysgICAg ICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICBjbWRfbGVuICs9IHN0cmxlbihHTE9C VVNfTF9DSFVOS0VEX0hFQURFUik7CisrICAgICAgICAgICAgY21kID0gZ2xvYnVzX21hbGxvYyhj bWRfbGVuICogc2l6ZW9mKGdsb2J1c19ieXRlX3QpKTsKKysgICAgICAgICAgICBwcm90by0+Y2h1 bmtlZCA9IEdMT0JVU19UUlVFOworKworKyAgICAgICAgICAgIC8qIGhleCBlbmNvZGluZyBvZiBn bG9idXNfc2l6ZV90OiB0d28gYnl0ZXMgdG8gZW5jb2RlIHBlciA4IGJpdHMsCisrICAgICAgICAg ICAgICogcGx1cyBhIENSTEYgdG8gZW5kIHRoZSBjaHVuayBoZWFkZXIKKysgICAgICAgICAgICAg Ki8KKysgICAgICAgICAgICBwcm90by0+aW92WzBdLmlvdl9iYXNlID0gKHZvaWQgKikKKysgICAg ICAgICAgICAgICAgZ2xvYnVzX21hbGxvYygoc2l6ZW9mKGdsb2J1c19zaXplX3QpICogMikgKyAy KTsKKysgICAgICAgICAgICAvKiBUaGlzIG5ldmVyIGNoYW5nZXMgKi8KKysgICAgICAgICAgICBw cm90by0+aW92WzJdLmlvdl9iYXNlID0gQ1JMRjsKKysgICAgICAgICAgICBwcm90by0+aW92WzJd Lmlvdl9sZW4gPSAyOworKyAgICAgICAgICAgIHByb3RvLT5pb3ZbM10uaW92X2Jhc2UgPSAiMCIg Q1JMRiBDUkxGOworKyAgICAgICAgICAgIHByb3RvLT5pb3ZbM10uaW92X2xlbiA9IHN0cmxlbigi MCIgQ1JMRiBDUkxGKTsKKysKKysgICAgICAgICAgICBpZihjbWQgPT0gR0xPQlVTX05VTEwpCisr ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9idXNfbGliY19mcmVlKHVybCk7Cist CQlyZXR1cm4gR0xPQlVTX05VTEw7CistCSAgICB9CistCSAgICAKKy0JICAgIHNwcmludGYoKGNo YXIgKikgY21kLAorLQkJICAgIEdMT0JVU19MX1BVVF9DT01NQU5ELAorLQkJICAgIHVybCwKKy0J CSAgICBwcm90by0+dXJsLmhvc3QpOworLQkgICAgCistCSAgICBzdHJjYXQoY21kLAorLQkJICAg IEdMT0JVU19MX0NIVU5LRURfSEVBREVSKTsKKy0JfQorLQlpZihwcm90by0+dGV4dF9tb2RlKQor LQl7CistCSAgICBzdHJjYXQoY21kLAorLQkJICAgR0xPQlVTX0xfVEVYVF9IRUFERVIpOworLQl9 CistCWVsc2UKKy0JeworLQkgICAgc3RyY2F0KGNtZCwKKy0JCSAgIEdMT0JVU19MX0JJTkFSWV9I RUFERVIpOworLQl9CistCXN0cmNhdChjbWQsCistCSAgICAgICBDUkxGKTsKKysgICAgICAgICAg ICAgICAgcmV0dXJuIEdMT0JVU19OVUxMOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAg ICBzcHJpbnRmKChjaGFyICopIGNtZCwKKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19MX1BV VF9DT01NQU5ELAorKyAgICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICAgICAgICAgICAgICAg ICAgcHJvdG8tPnVybC5ob3N0KTsKKysKKysgICAgICAgICAgICBzdHJjYXQoY21kLAorKyAgICAg ICAgICAgICAgICAgICAgR0xPQlVTX0xfQ0hVTktFRF9IRUFERVIpOworKyAgICAgICAgfQorKyAg ICAgICAgaWYocHJvdG8tPnRleHRfbW9kZSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBzdHJj YXQoY21kLAorKyAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9URVhUX0hFQURFUik7CisrICAg ICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgc3RyY2F0KGNt ZCwKKysgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfQklOQVJZX0hFQURFUik7CisrICAgICAg ICB9CisrICAgICAgICBzdHJjYXQoY21kLAorKyAgICAgICAgICAgICAgIENSTEYpOworIAorICAg ICAgICAgZ2xvYnVzX2xpYmNfZnJlZSh1cmwpOworLQlyZXR1cm4gY21kOworKyAgICAgICAgcmV0 dXJuIGNtZDsKKyAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVFlQRV9B UFBFTkQ6CistCWNtZF9sZW4gKz0gc3RybGVuKEdMT0JVU19MX0FQUEVORF9DT01NQU5EKTsKKy0J Y21kX2xlbiArPSAyOworLQorLQlpZihwcm90by0+dGV4dF9tb2RlID09IEdMT0JVU19UUlVFKQor LQl7CistCSAgICBjbWRfbGVuICs9IHN0cmxlbihHTE9CVVNfTF9URVhUX0hFQURFUik7CistCX0K Ky0JZWxzZQorLQl7CistCSAgICBjbWRfbGVuICs9IHN0cmxlbihHTE9CVVNfTF9CSU5BUllfSEVB REVSKTsKKy0JfQorLQkKKy0JbGVuZ3RoID0gZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9n ZXRfbGVuZ3RoKHByb3RvLT5yZXF1ZXN0KTsKKy0JaWYobGVuZ3RoICE9IDApCistCXsKKy0JICAg IGdsb2J1c19zaXplX3QJCQl4ID0gbGVuZ3RoOworLQkgICAgZ2xvYnVzX3NpemVfdAkJCWRpZ2l0 cyA9IDA7CistCistCSAgICAvKiBjb3VudCB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIGlu IGxlbmd0aCAqLworLQkgICAgZG8KKy0JICAgIHsKKy0JCWRpZ2l0cysrOworLQkJeCAvPSAxMDsK Ky0JICAgIH0gd2hpbGUoeCA+IDApOworLQkgICAgCistCSAgICBjbWRfbGVuICs9IHN0cmxlbihH TE9CVVNfTF9DT05URU5UX0xFTkdUSF9IRUFERVIpOworLQkgICAgY21kX2xlbiArPSBkaWdpdHM7 CistCSAgICBjbWQgPSBnbG9idXNfbWFsbG9jKGNtZF9sZW4gKiBzaXplb2YoZ2xvYnVzX2J5dGVf dCkpOworLQorLQkgICAgaWYoY21kID09IEdMT0JVU19OVUxMKQorLQkgICAgeworKyAgICAgICAg Y21kX2xlbiArPSBzdHJsZW4oR0xPQlVTX0xfQVBQRU5EX0NPTU1BTkQpOworKyAgICAgICAgY21k X2xlbiArPSAyOworKworKyAgICAgICAgaWYocHJvdG8tPnRleHRfbW9kZSA9PSBHTE9CVVNfVFJV RSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBjbWRfbGVuICs9IHN0cmxlbihHTE9CVVNfTF9U RVhUX0hFQURFUik7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAg ICAgICAgICAgY21kX2xlbiArPSBzdHJsZW4oR0xPQlVTX0xfQklOQVJZX0hFQURFUik7CisrICAg ICAgICB9CisrCisrICAgICAgICBsZW5ndGggPSBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0 X2dldF9sZW5ndGgocHJvdG8tPnJlcXVlc3QpOworKyAgICAgICAgaWYobGVuZ3RoICE9IDApCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAg ICAgeCA9IGxlbmd0aDsKKysgICAgICAgICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAg ICAgICAgICBkaWdpdHMgPSAwOworKworKyAgICAgICAgICAgIC8qIGNvdW50IHRoZSBudW1iZXIg b2YgZGVjaW1hbCBkaWdpdHMgaW4gbGVuZ3RoICovCisrICAgICAgICAgICAgZG8KKysgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgIGRpZ2l0cysrOworKyAgICAgICAgICAgICAgICB4IC89 IDEwOworKyAgICAgICAgICAgIH0gd2hpbGUoeCA+IDApOworKworKyAgICAgICAgICAgIGNtZF9s ZW4gKz0gc3RybGVuKEdMT0JVU19MX0NPTlRFTlRfTEVOR1RIX0hFQURFUik7CisrICAgICAgICAg ICAgY21kX2xlbiArPSBkaWdpdHM7CisrICAgICAgICAgICAgY21kID0gZ2xvYnVzX21hbGxvYyhj bWRfbGVuICogc2l6ZW9mKGdsb2J1c19ieXRlX3QpKTsKKysKKysgICAgICAgICAgICBpZihjbWQg PT0gR0xPQlVTX05VTEwpCisrICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9idXNf bGliY19mcmVlKHVybCk7CistCQlyZXR1cm4gR0xPQlVTX05VTEw7CistCSAgICB9CistCSAgICAK Ky0JICAgIHNwcmludGYoKGNoYXIgKikgY21kLAorLQkJICAgIEdMT0JVU19MX0FQUEVORF9DT01N QU5ELAorLQkJICAgIHVybCwKKy0JCSAgICBwcm90by0+dXJsLmhvc3QpOworLQkgICAgc3ByaW50 ZigoY2hhciAqKSBjbWQgKyBzdHJsZW4oY21kKSwKKy0JCSAgICBHTE9CVVNfTF9DT05URU5UX0xF TkdUSF9IRUFERVIsCistCQkgICAgbGVuZ3RoKTsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIGNt ZF9sZW4gKz0gc3RybGVuKEdMT0JVU19MX0NIVU5LRURfSEVBREVSKTsKKy0JICAgIGNtZCA9IGds b2J1c19tYWxsb2MoY21kX2xlbiAqIHNpemVvZihnbG9idXNfYnl0ZV90KSk7CistCSAgICBwcm90 by0+Y2h1bmtlZCA9IEdMT0JVU19UUlVFOworLQorLQkgICAgLyogaGV4IGVuY29kaW5nIG9mIGds b2J1c19zaXplX3Q6IHR3byBieXRlcyB0byBlbmNvZGUgcGVyIDggYml0cywKKy0JICAgICAqIHBs dXMgYSBDUkxGIHRvIGVuZCB0aGUgY2h1bmsgaGVhZGVyCistCSAgICAgKi8KKy0JICAgIHByb3Rv LT5pb3ZbMF0uaW92X2Jhc2UgPSAodm9pZCAqKQorLQkJZ2xvYnVzX21hbGxvYygoc2l6ZW9mKGds b2J1c19zaXplX3QpICogMikgKyAyKTsKKy0JICAgIC8qIFRoaXMgbmV2ZXIgY2hhbmdlcyAqLwor LQkgICAgcHJvdG8tPmlvdlsyXS5pb3ZfYmFzZSA9IENSTEY7CistCSAgICBwcm90by0+aW92WzJd Lmlvdl9sZW4gPSAyOworLQkgICAgcHJvdG8tPmlvdlszXS5pb3ZfYmFzZSA9ICIwIiBDUkxGIENS TEY7CistCSAgICBwcm90by0+aW92WzNdLmlvdl9sZW4gPSA1OworLQorLQkgICAgaWYoY21kID09 IEdMT0JVU19OVUxMKQorLQkgICAgeworKyAgICAgICAgICAgICAgICByZXR1cm4gR0xPQlVTX05V TEw7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIHNwcmludGYoKGNoYXIgKikgY21k LAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfQVBQRU5EX0NPTU1BTkQsCisrICAgICAg ICAgICAgICAgICAgICB1cmwsCisrICAgICAgICAgICAgICAgICAgICBwcm90by0+dXJsLmhvc3Qp OworKyAgICAgICAgICAgIHNwcmludGYoKGNoYXIgKikgY21kICsgc3RybGVuKGNtZCksCisrICAg ICAgICAgICAgICAgICAgICBHTE9CVVNfTF9DT05URU5UX0xFTkdUSF9IRUFERVIsCisrICAgICAg ICAgICAgICAgICAgICBsZW5ndGgpOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAg ICAgeworKyAgICAgICAgICAgIGNtZF9sZW4gKz0gc3RybGVuKEdMT0JVU19MX0NIVU5LRURfSEVB REVSKTsKKysgICAgICAgICAgICBjbWQgPSBnbG9idXNfbWFsbG9jKGNtZF9sZW4gKiBzaXplb2Yo Z2xvYnVzX2J5dGVfdCkpOworKyAgICAgICAgICAgIHByb3RvLT5jaHVua2VkID0gR0xPQlVTX1RS VUU7CisrCisrICAgICAgICAgICAgLyogaGV4IGVuY29kaW5nIG9mIGdsb2J1c19zaXplX3Q6IHR3 byBieXRlcyB0byBlbmNvZGUgcGVyIDggYml0cywKKysgICAgICAgICAgICAgKiBwbHVzIGEgQ1JM RiB0byBlbmQgdGhlIGNodW5rIGhlYWRlcgorKyAgICAgICAgICAgICAqLworKyAgICAgICAgICAg IHByb3RvLT5pb3ZbMF0uaW92X2Jhc2UgPSAodm9pZCAqKQorKyAgICAgICAgICAgICAgICBnbG9i dXNfbWFsbG9jKChzaXplb2YoZ2xvYnVzX3NpemVfdCkgKiAyKSArIDIpOworKyAgICAgICAgICAg IC8qIFRoaXMgbmV2ZXIgY2hhbmdlcyAqLworKyAgICAgICAgICAgIHByb3RvLT5pb3ZbMl0uaW92 X2Jhc2UgPSBDUkxGOworKyAgICAgICAgICAgIHByb3RvLT5pb3ZbMl0uaW92X2xlbiA9IDI7Cisr ICAgICAgICAgICAgcHJvdG8tPmlvdlszXS5pb3ZfYmFzZSA9ICIwIiBDUkxGIENSTEY7CisrICAg ICAgICAgICAgcHJvdG8tPmlvdlszXS5pb3ZfbGVuID0gNTsKKysKKysgICAgICAgICAgICBpZihj bWQgPT0gR0xPQlVTX05VTEwpCisrICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9i dXNfbGliY19mcmVlKHVybCk7CistCQlyZXR1cm4gR0xPQlVTX05VTEw7CistCSAgICB9CistCSAg ICAKKy0JICAgIHNwcmludGYoKGNoYXIgKikgY21kLAorLQkJICAgIEdMT0JVU19MX0FQUEVORF9D T01NQU5ELAorLQkJICAgIHByb3RvLT51cmwudXJsX3BhdGgsCistCQkgICAgcHJvdG8tPnVybC5o b3N0KTsKKy0JICAgIAorLQkgICAgc3RyY2F0KGNtZCwKKy0JCSAgICBHTE9CVVNfTF9DSFVOS0VE X0hFQURFUik7CistCX0KKy0JaWYocHJvdG8tPnRleHRfbW9kZSkKKy0JeworLQkgICAgc3RyY2F0 KGNtZCwKKy0JCSAgIEdMT0JVU19MX1RFWFRfSEVBREVSKTsKKy0JfQorLQllbHNlCistCXsKKy0J ICAgIHN0cmNhdChjbWQsCistCQkgICBHTE9CVVNfTF9CSU5BUllfSEVBREVSKTsKKy0JfQorLQlz dHJjYXQoY21kLAorLQkgICAgICAgQ1JMRik7CisrICAgICAgICAgICAgICAgIHJldHVybiBHTE9C VVNfTlVMTDsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgc3ByaW50ZigoY2hhciAq KSBjbWQsCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9BUFBFTkRfQ09NTUFORCwKKysg ICAgICAgICAgICAgICAgICAgIHByb3RvLT51cmwudXJsX3BhdGgsCisrICAgICAgICAgICAgICAg ICAgICBwcm90by0+dXJsLmhvc3QpOworKworKyAgICAgICAgICAgIHN0cmNhdChjbWQsCisrICAg ICAgICAgICAgICAgICAgICBHTE9CVVNfTF9DSFVOS0VEX0hFQURFUik7CisrICAgICAgICB9Cisr ICAgICAgICBpZihwcm90by0+dGV4dF9tb2RlKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHN0 cmNhdChjbWQsCisrICAgICAgICAgICAgICAgICAgIEdMT0JVU19MX1RFWFRfSEVBREVSKTsKKysg ICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICBzdHJjYXQo Y21kLAorKyAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9CSU5BUllfSEVBREVSKTsKKysgICAg ICAgIH0KKysgICAgICAgIHN0cmNhdChjbWQsCisrICAgICAgICAgICAgICAgQ1JMRik7CisgCisg ICAgICAgICBnbG9idXNfbGliY19mcmVlKHVybCk7CistCXJldHVybiBjbWQ7CisrICAgICAgICBy ZXR1cm4gY21kOworICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBF X0lOVkFMSUQ6CisgICAgICAgZGVmYXVsdDoKKy0JZ2xvYnVzX2Fzc2VydChwcm90by0+dHlwZSAh PQorLQkJICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0lOVkFMSUQpOwor LQlnbG9idXNfYXNzZXJ0KEdMT0JVU19GQUxTRSk7CisrICAgICAgICBnbG9idXNfYXNzZXJ0KHBy b3RvLT50eXBlICE9CisrICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVS X1JFUVVFU1RfVFlQRV9JTlZBTElEKTsKKysgICAgICAgIGdsb2J1c19hc3NlcnQoR0xPQlVTX0ZB TFNFKTsKKyAgICAgICAgIGdsb2J1c19saWJjX2ZyZWUodXJsKTsKKyAKKy0JcmV0dXJuIEdMT0JV U19OVUxMOworLSAgICB9ICAgIAorKyAgICAgICAgcmV0dXJuIEdMT0JVU19OVUxMOworKyAgICB9 CisgfQorIAorICNlbmRpZiAvKiAhcGFyc2VyIG9ubHkgKi8KKyAKKyAvKgorICAqIEZ1bmN0aW9u OiBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcGFyc2VfcmVzcG9uc2UoKQorLSAqIAorKyAq CisgICogRGVzY3JpcHRpb246IFBhcnNlIGEgYnl0ZSBhcnJheSBjb250YWluaW5nIGEgKG1heWJl KQorICAqICAgICAgICAgICAgICBwYXJ0aWFsIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KKy0g KiAKKysgKgorICAqIFBhcmFtZXRlcnM6ICBQcm90b2NvbCBtb2R1bGUgdGhpcyBwZXJ0YWlucyB0 bworLSAqIAorKyAqCisgICogUmV0dXJuczogIEdMT0JVU19UUlVFIGlmIG1vcmUgaGVhZGVycyBt dXN0IGJlIHJlYWQuCistICogICAgICAgICAgIAorKyAqCisgICovCisgc3RhdGljCisgZ2xvYnVz X2Jvb2xfdAorIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wYXJzZV9yZXNwb25zZSgKKy0g ICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKgkJcHJvdG8pCisr ICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICogICAgICAgICBw cm90bykKKyB7CisgICAgIC8qCisgICAgICAqIFBhcnNlIHRoZSBIVFRQIFJlc3BvbnNlCitAQCAt NDgzNCwyMyArNDgzNCwyMyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcGFyc2VfcmVz cG9uc2UoCisgICAgICAqLworICAgICBpZihwcm90by0+cmVhc29uID09IEdMT0JVU19OVUxMKQor ICAgICB7CistCWlmKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wYXJzZV9zdGF0dXNfbGlu ZShwcm90bykpCistCXsKKy0JICAgIGdvdG8gcmVwb3N0X3JlYWQ7CistCX0KKy0JZWxzZSBpZihw cm90by0+cGFyc2VfZXJyb3IpCistCXsKKy0JICAgIGdvdG8gcGFyc2VfZXJyb3I7CistCX0KKysg ICAgICAgIGlmKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wYXJzZV9zdGF0dXNfbGluZShw cm90bykpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byByZXBvc3RfcmVhZDsKKysgICAg ICAgIH0KKysgICAgICAgIGVsc2UgaWYocHJvdG8tPnBhcnNlX2Vycm9yKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAg ICAgaWYoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3BhcnNlX2hlYWRlcnMocHJvdG8pKQor ICAgICB7CistCWdvdG8gcmVwb3N0X3JlYWQ7CisrICAgICAgICBnb3RvIHJlcG9zdF9yZWFkOwor ICAgICB9CisgICAgIGVsc2UgaWYocHJvdG8tPnBhcnNlX2Vycm9yKQorICAgICB7CistCWdvdG8g cGFyc2VfZXJyb3I7CisrICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOworICAgICB9CisgCisgICAg IHJldHVybiBHTE9CVVNfRkFMU0U7CitAQCAtNDg2NSw3ICs0ODY1LDcgQEAgZ2xvYnVzX2xfZ2Fz c190cmFuc2Zlcl9odHRwX3BhcnNlX3Jlc3BvbnNlKAorIHN0YXRpYworIGdsb2J1c19ib29sX3QK KyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcGFyc2VfcmVxdWVzdCgKKy0gICAgZ2xvYnVz X2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKgkJcHJvdG8pCisrICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICogICAgICAgICBwcm90bykKKyB7 CisgICAgIC8qCisgICAgICAqIFBhcnNlIHRoZSBIVFRQIFJlcXVlc3QKK0BAIC00ODgwLDIzICs0 ODgwLDIzIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wYXJzZV9yZXF1ZXN0KAorICAg ICAgKi8KKyAgICAgaWYocHJvdG8tPm1ldGhvZCA9PSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQlp ZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcGFyc2VfcmVxdWVzdF9saW5lKHByb3RvKSkK Ky0JeworLQkgICAgZ290byByZXBvc3RfcmVhZDsKKy0JfQorLQllbHNlIGlmKHByb3RvLT5wYXJz ZV9lcnJvcikKKy0JeworLQkgICAgZ290byBwYXJzZV9lcnJvcjsKKy0JfQorKyAgICAgICAgaWYo Z2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3BhcnNlX3JlcXVlc3RfbGluZShwcm90bykpCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ290byByZXBvc3RfcmVhZDsKKysgICAgICAgIH0KKysg ICAgICAgIGVsc2UgaWYocHJvdG8tPnBhcnNlX2Vycm9yKQorKyAgICAgICAgeworKyAgICAgICAg ICAgIGdvdG8gcGFyc2VfZXJyb3I7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYoZ2xv YnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3BhcnNlX2hlYWRlcnMocHJvdG8pKQorICAgICB7Cist CWdvdG8gcmVwb3N0X3JlYWQ7CisrICAgICAgICBnb3RvIHJlcG9zdF9yZWFkOworICAgICB9Cisg ICAgIGVsc2UgaWYocHJvdG8tPnBhcnNlX2Vycm9yKQorICAgICB7CistCWdvdG8gcGFyc2VfZXJy b3I7CisrICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOworICAgICB9CisgCisgICAgIHJldHVybiBH TE9CVVNfRkFMU0U7CitAQCAtNDkxMSwxMSArNDkxMSwxMSBAQCBnbG9idXNfbF9nYXNzX3RyYW5z ZmVyX2h0dHBfcGFyc2VfcmVxdWVzdCgKKyBzdGF0aWMKKyBnbG9idXNfYm9vbF90CisgZ2xvYnVz X2xfZ2Fzc190cmFuc2Zlcl9odHRwX3BhcnNlX3N0YXR1c19saW5lKAorLSAgICBnbG9idXNfZ2Fz c190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqCQlwcm90bykKKysgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKiAgICAgICAgIHByb3RvKQorIHsKKy0g ICAgZ2xvYnVzX3NpemVfdAkJCQlvZmZzZXQ7CistICAgIGdsb2J1c19zaXplX3QJCQkJcmVhc29u X29mZnNldDsKKy0gICAgaW50CQkJCQkJcl9vZmZzZXQ7CisrICAgIGdsb2J1c19zaXplX3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OworKyAgICBnbG9idXNfc2l6ZV90ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9vZmZzZXQ7CisrICAgIGludCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcl9vZmZzZXQ7CisgCisgICAgIG9m ZnNldCA9IDA7CisgICAgIC8qCitAQCAtNDkyMyw0MSArNDkyMyw0MSBAQCBnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfcGFyc2Vfc3RhdHVzX2xpbmUoCisgICAgICAqICAgICAgICAgICAgICAg SFRUUC1WZXJzaW9uICAgPSAiSFRUUCIgIi8iIDEqRElHSVQgIi4iIDEqRElHSVQKKyAgICAgICov CisgICAgIGlmKCFnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZmluZF9jcmxmKAorLQlwcm90 by0+cmVzcG9uc2VfYnVmZmVyICsgcHJvdG8tPnBhcnNlZF9vZmZzZXQsCistCXByb3RvLT5yZXNw b25zZV9vZmZzZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCwKKy0JJm9mZnNldCkpCisrICAgICAg ICBwcm90by0+cmVzcG9uc2VfYnVmZmVyICsgcHJvdG8tPnBhcnNlZF9vZmZzZXQsCisrICAgICAg ICBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQsCisrICAgICAg ICAmb2Zmc2V0KSkKKyAgICAgeworLQlyZXR1cm4gR0xPQlVTX1RSVUU7CisrICAgICAgICByZXR1 cm4gR0xPQlVTX1RSVUU7CisgICAgIH0KKyAgICAgLyogUmVwbGFjZSBDUkxGIHdpdGggTlVMTCAq LworICAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyW3Byb3RvLT5wYXJzZWRfb2Zmc2V0ICsgb2Zm c2V0XSA9ICdcMCc7CisgCisgICAgIGlmKHNzY2FuZigoY2hhciAqKSBwcm90by0+cmVzcG9uc2Vf YnVmZmVyICsgcHJvdG8tPnBhcnNlZF9vZmZzZXQsCistCSAgICAgICJIVFRQLyVkLiVkICVkICVu IiwKKy0JICAgICAgJnByb3RvLT5tYWpvciwKKy0JICAgICAgJnByb3RvLT5taW5vciwKKy0JICAg ICAgJnByb3RvLT5jb2RlLAorLQkgICAgICAmcl9vZmZzZXQpICE9IDMpCistICAgIHsKKy0JLyog Tm90IGEgSFRUUCByZXNwb25zZSAqLworLQlpZihwcm90by0+Y29kZSA9PSAwKQorLQl7CistCSAg ICBwcm90by0+Y29kZQk9CistCQlHTE9CVVNfTF9QUk9UT0NPTF9GQUlMVVJFX0NPREU7CistCSAg ICBwcm90by0+cmVhc29uCT0KKy0JCWdsb2J1c19saWJjX3N0cmR1cChHTE9CVVNfTF9QUk9UT0NP TF9GQUlMVVJFX1JFQVNPTik7CistCX0KKy0JcHJvdG8tPnBhcnNlZF9vZmZzZXQgKz0gb2Zmc2V0 OworLQkvKiBza2lwIHRoZSBDUkxGLCBhcyB3ZWxsICovCistCXByb3RvLT5wYXJzZWRfb2Zmc2V0 Kz0yOworLQorLQlnb3RvIHBhcnNlX2Vycm9yOworKyAgICAgICAgICAgICAgIkhUVFAvJWQuJWQg JWQgJW4iLAorKyAgICAgICAgICAgICAgJnByb3RvLT5tYWpvciwKKysgICAgICAgICAgICAgICZw cm90by0+bWlub3IsCisrICAgICAgICAgICAgICAmcHJvdG8tPmNvZGUsCisrICAgICAgICAgICAg ICAmcl9vZmZzZXQpICE9IDMpCisrICAgIHsKKysgICAgICAgIC8qIE5vdCBhIEhUVFAgcmVzcG9u c2UgKi8KKysgICAgICAgIGlmKHByb3RvLT5jb2RlID09IDApCisrICAgICAgICB7CisrICAgICAg ICAgICAgcHJvdG8tPmNvZGUgPQorKyAgICAgICAgICAgICAgICBHTE9CVVNfTF9QUk9UT0NPTF9G QUlMVVJFX0NPREU7CisrICAgICAgICAgICAgcHJvdG8tPnJlYXNvbiAgICAgICA9CisrICAgICAg ICAgICAgICAgIGdsb2J1c19saWJjX3N0cmR1cChHTE9CVVNfTF9QUk9UT0NPTF9GQUlMVVJFX1JF QVNPTik7CisrICAgICAgICB9CisrICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCArPSBvZmZz ZXQ7CisrICAgICAgICAvKiBza2lwIHRoZSBDUkxGLCBhcyB3ZWxsICovCisrICAgICAgICBwcm90 by0+cGFyc2VkX29mZnNldCs9MjsKKysKKysgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7CisgICAg IH0KKyAgICAgcmVhc29uX29mZnNldCA9IChnbG9idXNfc2l6ZV90KSByX29mZnNldDsKKyAKKyAg ICAgcHJvdG8tPnJlYXNvbiA9IGdsb2J1c19saWJjX3N0cmR1cCgoY2hhciAqKSAocHJvdG8tPnJl c3BvbnNlX2J1ZmZlciArCistCQkJCQkJIHByb3RvLT5wYXJzZWRfb2Zmc2V0ICsKKy0JCQkJCQkg cmVhc29uX29mZnNldCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCArCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbl9vZmZzZXQpKTsKKyAgICAgcHJvdG8t PnBhcnNlZF9vZmZzZXQgKz0gb2Zmc2V0OworICAgICAvKiBza2lwIHRoZSBDUkxGLCBhcyB3ZWxs ICovCisgICAgIHByb3RvLT5wYXJzZWRfb2Zmc2V0Kz0yOworQEAgLTQ5NzQsOSArNDk3NCw5IEBA IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wYXJzZV9zdGF0dXNfbGluZSgKKyBzdGF0aWMK KyBnbG9idXNfYm9vbF90CisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3BhcnNlX3JlcXVl c3RfbGluZSgKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3Qg KgkJcHJvdG8pCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190 ICogICAgICAgICBwcm90bykKKyB7CistICAgIGdsb2J1c19zaXplX3QJCQkJb2Zmc2V0OworKyAg ICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDsKKyAK KyAgICAgb2Zmc2V0ID0gMDsKKyAgICAgLyoKK0BAIC00OTkzLDExICs0OTkzLDExIEBAIGdsb2J1 c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wYXJzZV9yZXF1ZXN0X2xpbmUoCisgICAgICAqICAgIGV4 dGVuc2lvbi1tZXRob2QgPSB0b2tlbgorICAgICAgKi8KKyAgICAgaWYoIWdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9maW5kX2NybGYoCistCXByb3RvLT5yZXNwb25zZV9idWZmZXIgKyBwcm90 by0+cGFyc2VkX29mZnNldCwKKy0JcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHByb3RvLT5wYXJz ZWRfb2Zmc2V0LAorLQkmb2Zmc2V0KSkKKysgICAgICAgIHByb3RvLT5yZXNwb25zZV9idWZmZXIg KyBwcm90by0+cGFyc2VkX29mZnNldCwKKysgICAgICAgIHByb3RvLT5yZXNwb25zZV9vZmZzZXQg LSBwcm90by0+cGFyc2VkX29mZnNldCwKKysgICAgICAgICZvZmZzZXQpKQorICAgICB7CistCXJl dHVybiBHTE9CVVNfVFJVRTsKKysgICAgICAgIHJldHVybiBHTE9CVVNfVFJVRTsKKyAgICAgfQor ICAgICAvKiBSZXBsYWNlIENSTEYgd2l0aCBOVUxMICovCisgICAgIHByb3RvLT5yZXNwb25zZV9i dWZmZXJbcHJvdG8tPnBhcnNlZF9vZmZzZXQgKyBvZmZzZXRdID0gJ1wwJzsKK0BAIC01MDA2LDI1 ICs1MDA2LDI1IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wYXJzZV9yZXF1ZXN0X2xp bmUoCisgICAgIHByb3RvLT51cmkgPSBnbG9idXNfbWFsbG9jKG9mZnNldCk7CisgCisgICAgIGlm KHNzY2FuZigoY2hhciAqKSBwcm90by0+cmVzcG9uc2VfYnVmZmVyICsgcHJvdG8tPnBhcnNlZF9v ZmZzZXQsCistCSAgICAgICIlcyAlcyBIVFRQLyVkLiVkIiwKKy0JICAgICAgcHJvdG8tPm1ldGhv ZCwKKy0JICAgICAgcHJvdG8tPnVyaSwKKy0JICAgICAgJnByb3RvLT5tYWpvciwKKy0JICAgICAg JnByb3RvLT5taW5vcikgIT0gNCkKKy0gICAgeworLQkvKiBOb3QgYSBIVFRQIHJlcXVlc3QgKi8K Ky0JaWYocHJvdG8tPmNvZGUgPT0gMCkKKy0JeworLQkgICAgcHJvdG8tPmNvZGUJPQorLQkJR0xP QlVTX0xfUFJPVE9DT0xfRkFJTFVSRV9DT0RFOworLQkgICAgcHJvdG8tPnJlYXNvbgk9CistCQln bG9idXNfbGliY19zdHJkdXAoR0xPQlVTX0xfUFJPVE9DT0xfRkFJTFVSRV9SRUFTT04pOworLQl9 CistCXByb3RvLT5wYXJzZWRfb2Zmc2V0ICs9IG9mZnNldDsKKy0JLyogc2tpcCB0aGUgQ1JMRiwg YXMgd2VsbCAqLworLQlwcm90by0+cGFyc2VkX29mZnNldCs9MjsKKy0KKy0JZ290byBwYXJzZV9l cnJvcjsKKysgICAgICAgICAgICAgICIlcyAlcyBIVFRQLyVkLiVkIiwKKysgICAgICAgICAgICAg IHByb3RvLT5tZXRob2QsCisrICAgICAgICAgICAgICBwcm90by0+dXJpLAorKyAgICAgICAgICAg ICAgJnByb3RvLT5tYWpvciwKKysgICAgICAgICAgICAgICZwcm90by0+bWlub3IpICE9IDQpCisr ICAgIHsKKysgICAgICAgIC8qIE5vdCBhIEhUVFAgcmVxdWVzdCAqLworKyAgICAgICAgaWYocHJv dG8tPmNvZGUgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBwcm90by0+Y29kZSA9Cisr ICAgICAgICAgICAgICAgIEdMT0JVU19MX1BST1RPQ09MX0ZBSUxVUkVfQ09ERTsKKysgICAgICAg ICAgICBwcm90by0+cmVhc29uICAgICAgID0KKysgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNf c3RyZHVwKEdMT0JVU19MX1BST1RPQ09MX0ZBSUxVUkVfUkVBU09OKTsKKysgICAgICAgIH0KKysg ICAgICAgIHByb3RvLT5wYXJzZWRfb2Zmc2V0ICs9IG9mZnNldDsKKysgICAgICAgIC8qIHNraXAg dGhlIENSTEYsIGFzIHdlbGwgKi8KKysgICAgICAgIHByb3RvLT5wYXJzZWRfb2Zmc2V0Kz0yOwor KworKyAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKKyAgICAgfQorIAorICAgICAvKiBza2lwIHRo ZSBDUkxGLCBhcyB3ZWxsICovCitAQCAtNTA0MSwyMSArNTA0MSwyMSBAQCBnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfcGFyc2VfcmVxdWVzdF9saW5lKAorIHN0YXRpYworIGdsb2J1c19ib29s X3QKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcGFyc2VfaGVhZGVycygKKy0gICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKgkJcHJvdG8pCisrICAgIGds b2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICogICAgICAgICBwcm90bykK KyB7CistICAgIGdsb2J1c19ib29sX3QJCQkJYWxsX2hlYWRlcnMgPSBHTE9CVVNfRkFMU0U7Cisr ICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsX2hlYWRl cnMgPSBHTE9CVVNfRkFMU0U7CisgCisgICAgIHdoaWxlKCFhbGxfaGVhZGVycykKKyAgICAgewor LQlpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfcGFyc2Vfb25lX2hlYWRlcihwcm90bywK Ky0JCQkJCQkJJmFsbF9oZWFkZXJzKSkKKy0JeworLQkgICAgcmV0dXJuIEdMT0JVU19UUlVFOwor LQl9CistCWVsc2UgaWYocHJvdG8tPnBhcnNlX2Vycm9yKQorLQl7CistCSAgICByZXR1cm4gR0xP QlVTX0ZBTFNFOworLQl9CisrICAgICAgICBpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf cGFyc2Vfb25lX2hlYWRlcihwcm90bywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZhbGxfaGVhZGVycykpCisrICAgICAgICB7CisrICAg ICAgICAgICAgcmV0dXJuIEdMT0JVU19UUlVFOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBp Zihwcm90by0+cGFyc2VfZXJyb3IpCisrICAgICAgICB7CisrICAgICAgICAgICAgcmV0dXJuIEdM T0JVU19GQUxTRTsKKysgICAgICAgIH0KKyAgICAgfQorICAgICByZXR1cm4gR0xPQlVTX0ZBTFNF OworIH0KK0BAIC01MDY0LDIyICs1MDY0LDIyIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9wYXJzZV9oZWFkZXJzKAorIHN0YXRpYworIGdsb2J1c19ib29sX3QKKyBnbG9idXNfbF9nYXNz X3RyYW5zZmVyX2h0dHBfcGFyc2Vfb25lX2hlYWRlcigKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3QgKgkJcHJvdG8sCistICAgIGdsb2J1c19ib29sX3QgKgkJ CQlsYXN0X2hlYWRlcikKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3By b3RvX3QgKiAgICAgICAgIHByb3RvLAorKyAgICBnbG9idXNfYm9vbF90ICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxhc3RfaGVhZGVyKQorIHsKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlv ZmZzZXQ7CistICAgIGdsb2J1c19ib29sX3QJCQkJZW5kX29mX2hlYWRlcjsKKy0gICAgZ2xvYnVz X3NpemVfdAkJCSAgICAgICAgY29udGludWF0aW9uPTA7CistICAgIGNoYXIgKgkJCQkJdmFsdWU7 CistICAgIGNoYXIgKgkJCQkJbmV3X3ZhbHVlOworLSAgICBpbnQJCQkJCQlpOworKyAgICBnbG9i dXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDsKKysgICAgZ2xv YnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfb2ZfaGVhZGVyOwor KyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVh dGlvbj0wOworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlOworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5ld192YWx1ZTsKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpOworIAorICAgICAvKgorICAgICAgKiBtZXNzYWdlLWhlYWRlciA9IGZpZWxkLW5hbWUg IjoiIFsgZmllbGQtdmFsdWUgXSBDUkxGCisgICAgICAqCisgICAgICAqICAgIGZpZWxkLW5hbWUg ICAgID0gdG9rZW4KKyAgICAgICogICAgZmllbGQtdmFsdWUgICAgPSAqKCBmaWVsZC1jb250ZW50 IHwgTFdTICkKKy0gICAgICogICAgTFdTCQkgPSBbQ1JMRl0gMSooIFNQIHwgSFQgKQorKyAgICAg KiAgICBMV1MgICAgICAgICAgICA9IFtDUkxGXSAxKiggU1AgfCBIVCApCisgICAgICAqCisgICAg ICAqICAgIGZpZWxkLWNvbnRlbnQgID0gPHRoZSBPQ1RFVHMgbWFraW5nIHVwIHRoZSBmaWVsZC12 YWx1ZQorICAgICAgKiAgICAgICAgICAgICAgICAgICAgIGFuZCBjb25zaXN0aW5nIG9mIGVpdGhl ciAqVEVYVCBvciBjb21iaW5hdGlvbnMKK0BAIC01MDkwLDcgKzUwOTAsNyBAQCBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfcGFyc2Vfb25lX2hlYWRlcigKKyAgICAgICogICAgdHNwZWNpYWxz ICAgICAgPSAiKCIgfCAiKSIgfCAiPCIgfCAiPiIgfCAiQCIKKyAgICAgICogICAgICAgICAgICAg ICAgICAgfCAiLCIgfCAiOyIgfCAiOiIgfCAiXCIgfCA8Ij4KKyAgICAgICogICAgICAgICAgICAg ICAgICAgfCAiLyIgfCAiWyIgfCAiXSIgfCAiPyIgfCAiPSIKKy0gICAgICoJCQkgfCAieyIgfCAi fSIgfCBTUCB8IEhUCisrICAgICAqICAgICAgICAgICAgICAgICAgIHwgInsiIHwgIn0iIHwgU1Ag fCBIVAorICAgICAgKgorICAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGEgbGl0dGxlIGxh eCBvbiB0aGUgY2hhcmFjdGVyIHJlc3RyaWN0aW9ucy4uLgorICAgICAgKi8KK0BAIC01MTAwLDQz ICs1MTAwLDQzIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9wYXJzZV9vbmVfaGVhZGVy KAorICAgICAvKiBGaW5kIHRoZSBjb21wbGV0ZSBoZWFkZXIgKHdoaWNoIG1heSBzcGFuIG11bHRp cGxlIGxpbmVzKSAqLworICAgICB3aGlsZSghZW5kX29mX2hlYWRlcikKKyAgICAgeworLQkvKiBG aW5kIHRoZSBlbmQgb2YgdGhpcyBoZWFkZXIgbGluZSAqLworLQlpZighIGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9maW5kX2NybGYoCistCSAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyICsK Ky0JICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCArCistCSAgICAgICAgY29udGludWF0aW9u LAorLQkgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtCistCSAgICAgICAgcHJvdG8tPnBhcnNl ZF9vZmZzZXQgLQorLQkgICAgICAgIGNvbnRpbnVhdGlvbiwKKy0JICAgICZvZmZzZXQpKQorLQl7 CistCSAgICByZXR1cm4gR0xPQlVTX1RSVUU7CistCX0KKy0JZWxzZSBpZihvZmZzZXQgPT0gMCkK Ky0JeworLQkgICAgZW5kX29mX2hlYWRlciA9IEdMT0JVU19UUlVFOworLQkgICAgYnJlYWs7Cist CX0KKy0JLyoKKy0JICogUmVhY2hlZCBlbmQtb2YtcmVhZCBkYXRhIGJlZm9yZSBiZWluZyBhYmxl IHRvIGRldGVjdCBhCistCSAqIGNvbnRpbnVhdGlvbgorLQkgKi8KKy0JaWYocHJvdG8tPnBhcnNl ZF9vZmZzZXQgKyBjb250aW51YXRpb24gKyBvZmZzZXQgKyAyID49CistCSAgIHByb3RvLT5yZXNw b25zZV9vZmZzZXQpCistCXsKKy0JICAgIHJldHVybiBHTE9CVVNfVFJVRTsKKy0JfQorLQkvKiBD aGVjayBmb3IgY29udGludWF0aW9uIChMV1MpICovCistCWlmKGlzbHdzKHByb3RvLT5yZXNwb25z ZV9idWZmZXJbcHJvdG8tPnBhcnNlZF9vZmZzZXQgKworLQkJCQkgICAgICAgY29udGludWF0aW9u ICsgb2Zmc2V0ICsgMl0pKQorLQl7CistCSAgICBjb250aW51YXRpb24gKz0gb2Zmc2V0ICsgMjsK Ky0JfQorLQllbHNlCistCXsKKy0JICAgIC8qIE5vIGNvbnRpbnVhdGlvbiwgd2UgaGF2ZSBhIGhl YWRlciAqLworLQkgICAgZW5kX29mX2hlYWRlciA9IEdMT0JVU19UUlVFOworLQl9CisrICAgICAg ICAvKiBGaW5kIHRoZSBlbmQgb2YgdGhpcyBoZWFkZXIgbGluZSAqLworKyAgICAgICAgaWYoISBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfZmluZF9jcmxmKAorKyAgICAgICAgICAgIHByb3Rv LT5yZXNwb25zZV9idWZmZXIgKworKyAgICAgICAgICAgICAgICBwcm90by0+cGFyc2VkX29mZnNl dCArCisrICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiwKKysgICAgICAgICAgICBwcm90by0+ cmVzcG9uc2Vfb2Zmc2V0IC0KKysgICAgICAgICAgICAgICAgcHJvdG8tPnBhcnNlZF9vZmZzZXQg LQorKyAgICAgICAgICAgICAgICBjb250aW51YXRpb24sCisrICAgICAgICAgICAgJm9mZnNldCkp CisrICAgICAgICB7CisrICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19UUlVFOworKyAgICAgICAg fQorKyAgICAgICAgZWxzZSBpZihvZmZzZXQgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAg ICBlbmRfb2ZfaGVhZGVyID0gR0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgYnJlYWs7CisrICAg ICAgICB9CisrICAgICAgICAvKgorKyAgICAgICAgICogUmVhY2hlZCBlbmQtb2YtcmVhZCBkYXRh IGJlZm9yZSBiZWluZyBhYmxlIHRvIGRldGVjdCBhCisrICAgICAgICAgKiBjb250aW51YXRpb24K KysgICAgICAgICAqLworKyAgICAgICAgaWYocHJvdG8tPnBhcnNlZF9vZmZzZXQgKyBjb250aW51 YXRpb24gKyBvZmZzZXQgKyAyID49CisrICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0 KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJldHVybiBHTE9CVVNfVFJVRTsKKysgICAgICAg IH0KKysgICAgICAgIC8qIENoZWNrIGZvciBjb250aW51YXRpb24gKExXUykgKi8KKysgICAgICAg IGlmKGlzbHdzKHByb3RvLT5yZXNwb25zZV9idWZmZXJbcHJvdG8tPnBhcnNlZF9vZmZzZXQgKwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiArIG9m ZnNldCArIDJdKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBjb250aW51YXRpb24gKz0gb2Zm c2V0ICsgMjsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAg ICAgICAvKiBObyBjb250aW51YXRpb24sIHdlIGhhdmUgYSBoZWFkZXIgKi8KKysgICAgICAgICAg ICBlbmRfb2ZfaGVhZGVyID0gR0xPQlVTX1RSVUU7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAg ICAgLyogVGhpcyBpcyB0aGUgbGFzdCBoZWFkZXIgaWYgaXQgY29uc2lzdHMgb2YgQ1JMRiBvbmx5 ICovCitAQCAtNTE0NCw0MCArNTE0NCw0MCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf cGFyc2Vfb25lX2hlYWRlcigKKyAgICAgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmZlcltwcm90by0+ cGFyc2VkX29mZnNldCArIDFdID09IExGICYmCisgICAgICAgIGNvbnRpbnVhdGlvbiArIG9mZnNl dCA9PSAwKQorICAgICB7CistCSpsYXN0X2hlYWRlciA9IEdMT0JVU19UUlVFOworLQlwcm90by0+ cGFyc2VkX29mZnNldCArPSAyOworKyAgICAgICAgKmxhc3RfaGVhZGVyID0gR0xPQlVTX1RSVUU7 CisrICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCArPSAyOworIAorLQlyZXR1cm4gR0xPQlVT X0ZBTFNFOworKyAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKyAgICAgfQorIAorICAgICAv KiBDYW5vbmljYWwgZm9ybSBvZiBoZWFkZXIgaXMgbG93ZXItY2FzZSAqLworICAgICBmb3IoaSA9 IHByb3RvLT5wYXJzZWRfb2Zmc2V0OyBpIDwgcHJvdG8tPnBhcnNlZF9vZmZzZXQgKyBjb250aW51 YXRpb24gKyBvZmZzZXQ7IGkrKykKKyAgICAgeworLQlpZihwcm90by0+cmVzcG9uc2VfYnVmZmVy W2ldID09ICc6JykKKy0JeworLQkgICAgYnJlYWs7CistCX0KKy0JZWxzZQorLQl7CistCSAgICBw cm90by0+cmVzcG9uc2VfYnVmZmVyW2ldID0KKy0JCShjaGFyKSB0b2xvd2VyKChpbnQpIChwcm90 by0+cmVzcG9uc2VfYnVmZmVyW2ldKSk7CistCX0KKysgICAgICAgIGlmKHByb3RvLT5yZXNwb25z ZV9idWZmZXJbaV0gPT0gJzonKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGJyZWFrOworKyAg ICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIHByb3RvLT5y ZXNwb25zZV9idWZmZXJbaV0gPQorKyAgICAgICAgICAgICAgICAoY2hhcikgdG9sb3dlcigoaW50 KSAocHJvdG8tPnJlc3BvbnNlX2J1ZmZlcltpXSkpOworKyAgICAgICAgfQorICAgICB9CisgCisg ICAgIGlmKHByb3RvLT5yZXNwb25zZV9idWZmZXJbaV0gIT0gJzonKQorICAgICB7CistCS8qIFRo ZSBoZWFkZXIncyBuYW1lIGlzIGlsbGVnYWwgKi8KKy0JcHJvdG8tPmNvZGUJPSBHTE9CVVNfTF9Q Uk9UT0NPTF9GQUlMVVJFX0NPREU7CistCWlmKHByb3RvLT5yZWFzb24gIT0gR0xPQlVTX05VTEwp CistCXsKKy0JICAgIGdsb2J1c19mcmVlKHByb3RvLT5yZWFzb24pOworLQl9CistCXByb3RvLT5y ZWFzb24gPQorLQkgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKEdMT0JVU19MX1BST1RPQ09MX0ZBSUxV UkVfUkVBU09OKTsKKysgICAgICAgIC8qIFRoZSBoZWFkZXIncyBuYW1lIGlzIGlsbGVnYWwgKi8K KysgICAgICAgIHByb3RvLT5jb2RlICAgICA9IEdMT0JVU19MX1BST1RPQ09MX0ZBSUxVUkVfQ09E RTsKKysgICAgICAgIGlmKHByb3RvLT5yZWFzb24gIT0gR0xPQlVTX05VTEwpCisrICAgICAgICB7 CisrICAgICAgICAgICAgZ2xvYnVzX2ZyZWUocHJvdG8tPnJlYXNvbik7CisrICAgICAgICB9Cisr ICAgICAgICBwcm90by0+cmVhc29uID0KKysgICAgICAgICAgICBnbG9idXNfbGliY19zdHJkdXAo R0xPQlVTX0xfUFJPVE9DT0xfRkFJTFVSRV9SRUFTT04pOworIAorLQlwcm90by0+cGFyc2VfZXJy b3IgPSBHTE9CVVNfVFJVRTsKKysgICAgICAgIHByb3RvLT5wYXJzZV9lcnJvciA9IEdMT0JVU19U UlVFOworIAorLQlyZXR1cm4gR0xPQlVTX0ZBTFNFOworKyAgICAgICAgcmV0dXJuIEdMT0JVU19G QUxTRTsKKyAgICAgfQorIAorICAgICAvKiBOVUxMLXRlcm1pbmF0ZSB0aGUgaGVhZGVyJ3MgbmFt ZSAqLworQEAgLTUxODksMzkgKzUxODksMzkgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X3BhcnNlX29uZV9oZWFkZXIoCisgICAgIHByb3RvLT5yZXNwb25zZV9idWZmZXJbcHJvdG8tPnBh cnNlZF9vZmZzZXQrY29udGludWF0aW9uK29mZnNldF0gPSAnXDAnOworIAorICAgICAvKgorLSAg ICAgKiBBZGQgaGVhZGVyIHRvIHRhYmxlLiBJZiBpdCBhbHJlYWR5IHRoZXJlLCBhcHBlbmQgYSAK KysgICAgICogQWRkIGhlYWRlciB0byB0YWJsZS4gSWYgaXQgYWxyZWFkeSB0aGVyZSwgYXBwZW5k IGEKKyAgICAgICogY29tbWEgYW5kIHRoZSBuZXcgaGVhZGVyJ3MgdmFsdWUuCisgICAgICAqLwor ICAgICB2YWx1ZSA9IChjaGFyICopIGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfa2V5dmFsdWVfbG9v a3VwKAorLQkmcHJvdG8tPmhlYWRlcnMsCistCShjaGFyICopIChwcm90by0+cmVzcG9uc2VfYnVm ZmVyICsgcHJvdG8tPnBhcnNlZF9vZmZzZXQpKTsKKysgICAgICAgICZwcm90by0+aGVhZGVycywK KysgICAgICAgIChjaGFyICopIChwcm90by0+cmVzcG9uc2VfYnVmZmVyICsgcHJvdG8tPnBhcnNl ZF9vZmZzZXQpKTsKKyAKKyAgICAgaWYodmFsdWUgPT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0J LyogTmV3IGhlYWRlciAqLworLQlnbG9idXNfaV9nYXNzX3RyYW5zZmVyX2tleXZhbHVlX2luc2Vy dCgKKy0JICAgICZwcm90by0+aGVhZGVycywKKy0JICAgIGdsb2J1c19saWJjX3N0cmR1cCgoY2hh ciAqKSAocHJvdG8tPnJlc3BvbnNlX2J1ZmZlciArCistCQkJCQkgcHJvdG8tPnBhcnNlZF9vZmZz ZXQpKSwKKy0JICAgIGdsb2J1c19saWJjX3N0cmR1cChuZXdfdmFsdWUpKTsKKysgICAgICAgIC8q IE5ldyBoZWFkZXIgKi8KKysgICAgICAgIGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfa2V5dmFsdWVf aW5zZXJ0KAorKyAgICAgICAgICAgICZwcm90by0+aGVhZGVycywKKysgICAgICAgICAgICBnbG9i dXNfbGliY19zdHJkdXAoKGNoYXIgKikgKHByb3RvLT5yZXNwb25zZV9idWZmZXIgKworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnBhcnNlZF9vZmZzZXQp KSwKKysgICAgICAgICAgICBnbG9idXNfbGliY19zdHJkdXAobmV3X3ZhbHVlKSk7CisgICAgIH0K KyAgICAgZWxzZQorICAgICB7CistCS8qIEV4aXN0aW5nIGhlYWRlciwgYXBwZW5kICovCistCWds b2J1c19ieXRlX3QgKgkJCW5ld19wdHI7CisrICAgICAgICAvKiBFeGlzdGluZyBoZWFkZXIsIGFw cGVuZCAqLworKyAgICAgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICBuZXdfcHRy OworIAorLQluZXdfcHRyID0gZ2xvYnVzX2xpYmNfcmVhbGxvYyh2YWx1ZSwKKy0JCQkJICAgICAg KHN0cmxlbih2YWx1ZSkgKworLQkJCQkgICAgICAgICAgc3RybGVuKG5ld192YWx1ZSkgKyAyKSAq CistCQkJCSAgICAgICAgICBzaXplb2YoZ2xvYnVzX2J5dGVfdCkpOworLQlzdHJjYXQoKGNoYXIg KikgbmV3X3B0ciwKKy0JICAgICAgICIsIik7CistCXN0cmNhdCgoY2hhciAqKSBuZXdfcHRyLAor LQkJbmV3X3ZhbHVlKTsKKy0JZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9rZXl2YWx1ZV9yZXBsYWNl KAorLQkgICAgJnByb3RvLT5oZWFkZXJzLAorLQkgICAgKGNoYXIgKikgKHByb3RvLT5yZXNwb25z ZV9idWZmZXIgKyBwcm90by0+cGFyc2VkX29mZnNldCksCistCSAgICAoY2hhciAqKSBuZXdfcHRy KTsKKysgICAgICAgIG5ld19wdHIgPSBnbG9idXNfbGliY19yZWFsbG9jKHZhbHVlLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmxlbih2YWx1ZSkgKworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihuZXdfdmFsdWUpICsg MikgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihn bG9idXNfYnl0ZV90KSk7CisrICAgICAgICBzdHJjYXQoKGNoYXIgKikgbmV3X3B0ciwKKysgICAg ICAgICAgICAgICAiLCIpOworKyAgICAgICAgc3RyY2F0KChjaGFyICopIG5ld19wdHIsCisrICAg ICAgICAgICAgICAgIG5ld192YWx1ZSk7CisrICAgICAgICBnbG9idXNfaV9nYXNzX3RyYW5zZmVy X2tleXZhbHVlX3JlcGxhY2UoCisrICAgICAgICAgICAgJnByb3RvLT5oZWFkZXJzLAorKyAgICAg ICAgICAgIChjaGFyICopIChwcm90by0+cmVzcG9uc2VfYnVmZmVyICsgcHJvdG8tPnBhcnNlZF9v ZmZzZXQpLAorKyAgICAgICAgICAgIChjaGFyICopIG5ld19wdHIpOworICAgICB9CisgCisgICAg IC8qIE1vdmUgdGhlICJwYXJzZWQiIHBvaW50ZXIgdG8gdGhlIGVuZCBvZiB3aGF0IHdlJ3ZlIGp1 c3QgaGFuZGxlZCAqLworQEAgLTUyMzQsMjUgKzUyMzQsMjUgQEAgZ2xvYnVzX2xfZ2Fzc190cmFu c2Zlcl9odHRwX3BhcnNlX29uZV9oZWFkZXIoCisgc3RhdGljCisgZ2xvYnVzX2Jvb2xfdAorIGds b2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9maW5kX2NybGYoCistICAgIGdsb2J1c19ieXRlX3Qg KgkJCQlieXRlcywKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlsZW4sCistICAgIGdsb2J1c19zaXpl X3QgKgkJCQljcmxmX29mZnNldCkKKysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBieXRlcywKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsZW4sCisrICAgIGdsb2J1c19zaXplX3QgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3JsZl9vZmZzZXQpCisgeworLSAgICBpbnQJCQkJCQlpOworKyAgICBpbnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk7CisgCisgICAgIGlmKGxl biA9PSAwKQorICAgICB7CistCXJldHVybiBHTE9CVVNfRkFMU0U7CisrICAgICAgICByZXR1cm4g R0xPQlVTX0ZBTFNFOworICAgICB9CisgICAgIC8qIFNlZSBpZiB3ZSBjYW4gZmluZCB0aGUgZW5k IGFuIGh0dHAgbWV0YS1pbmZvcm1hdGlvbiBsaW5lICovCisgICAgIGZvciAoaSA9IDA7IGkgPCBs ZW4tMTsgaSsrKQorICAgICB7CistCWlmKGJ5dGVzW2ldID09IENSICYmCistCSAgIGJ5dGVzW2kr MV0gPT0gTEYpCistCXsKKy0JICAgICpjcmxmX29mZnNldCA9IGk7CistCSAgICByZXR1cm4gR0xP QlVTX1RSVUU7CistCX0KKysgICAgICAgIGlmKGJ5dGVzW2ldID09IENSICYmCisrICAgICAgICAg ICBieXRlc1tpKzFdID09IExGKQorKyAgICAgICAgeworKyAgICAgICAgICAgICpjcmxmX29mZnNl dCA9IGk7CisrICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19UUlVFOworKyAgICAgICAgfQorICAg ICB9CisgICAgIHJldHVybiBHTE9CVVNfRkFMU0U7CisgfQorQEAgLTUyNjAsNzQgKzUyNjAsNzQg QEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2ZpbmRfY3JsZigKKyAKKyAvKgorICAqIEZ1 bmN0aW9uOiBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY29weV90ZXh0X2J1ZmZlcigpCist ICogCisrICoKKyAgKiBEZXNjcmlwdGlvbjogQ29weSBhIHRleHQgYXJyYXkgZnJvbSBhbiBIVFRQ LW1lc3NhZ2UgdG8KKyAgKiAgICAgICAgICAgICAgYSB1c2VyJ3MgYnVmZmVyLCBjb252ZXJ0aW5n IGVuZC1vZi1saW5lIGNoYXJhY3RlcnMKKy0gKgkJdG8gdGhlIGxvY2FsIGhvc3QgZm9ybWF0LiBE ZXRlcm1pbmVzIHRoZSBtZXNzYWdlCistICoJCWxpbmUgZm9ybWF0IGJhc2VkIG9uIHRoZSBmaXJz dCBlbmQtb2YtbGluZSBpdAorLSAqCQlyZWFjaGVzIGlmIGl0IGlzIHVua25vd24uCistICogCist ICogUGFyYW1ldGVyczogCistICogCistICogUmV0dXJuczogCisrICogICAgICAgICAgICAgIHRv IHRoZSBsb2NhbCBob3N0IGZvcm1hdC4gRGV0ZXJtaW5lcyB0aGUgbWVzc2FnZQorKyAqICAgICAg ICAgICAgICBsaW5lIGZvcm1hdCBiYXNlZCBvbiB0aGUgZmlyc3QgZW5kLW9mLWxpbmUgaXQKKysg KiAgICAgICAgICAgICAgcmVhY2hlcyBpZiBpdCBpcyB1bmtub3duLgorKyAqCisrICogUGFyYW1l dGVyczoKKysgKgorKyAqIFJldHVybnM6CisgICovCisgdm9pZAorIGdsb2J1c19sX2dhc3NfdHJh bnNmZXJfaHR0cF9jb3B5X3RleHRfYnVmZmVyKAorLSAgICBnbG9idXNfYnl0ZV90ICoJCQkJb3V0 cHV0LAorLSAgICBnbG9idXNfYnl0ZV90ICoJCQkJaW5wdXQsCistICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX2h0dHBfbGluZV9tb2RlX3QgKglsaW5lX21vZGUsCistICAgIGdsb2J1c19zaXplX3QJ CQkJbWF4X2lucHV0LAorLSAgICBnbG9idXNfc2l6ZV90CQkJCW1heF9vdXRwdXQsCistICAgIGds b2J1c19zaXplX3QgKgkJCQlpbnB1dF9jb3BpZWQsCistICAgIGdsb2J1c19zaXplX3QgKgkJCQlv dXRwdXRfY29waWVkKQorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dHB1dCwKKysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnB1dCwKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9saW5lX21vZGVf dCAqICAgICBsaW5lX21vZGUsCisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWF4X2lucHV0LAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1heF9vdXRwdXQsCisrICAgIGdsb2J1c19zaXplX3QgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5wdXRfY29waWVkLAorKyAgICBnbG9idXNfc2l6ZV90ICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9jb3BpZWQpCisgeworLSAgICBnbG9i dXNfc2l6ZV90CQkJCXNyYzsKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlkc3Q7CisrICAgIGdsb2J1 c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOworKyAgICBnbG9idXNf c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdDsKKyAgICAgc3JjID0gMDsK KyAgICAgZHN0ID0gMDsKKyAKKyAgICAgLyogTmVlZCB0byBkZXRlcm1pbmUgdGhlIGxpbmUgdGVy bWluYXRvciAqLworICAgICBpZigqbGluZV9tb2RlID09IEdMT0JVU19MX0xJTkVfTU9ERV9VTktO T1dOKQorICAgICB7CistCXdoaWxlKHNyYyA8IG1heF9pbnB1dC0xICYmIGRzdCA8IG1heF9vdXRw dXQtMSkKKy0JeworKyAgICAgICAgd2hpbGUoc3JjIDwgbWF4X2lucHV0LTEgJiYgZHN0IDwgbWF4 X291dHB1dC0xKQorKyAgICAgICAgeworICAgICAgICAgICAgIGlmKGlucHV0W3NyY10gPT0gQ1Ig JiYgKCpsaW5lX21vZGUpID09CistCQkgICAgR0xPQlVTX0xfTElORV9NT0RFX1VOS05PV04pCist CSAgICB7CistCQlpZihpbnB1dFtzcmMrMV0gPT0gTEYpCistCQl7CistCQkgICAgKmxpbmVfbW9k ZSA9IEdMT0JVU19MX0xJTkVfTU9ERV9DUkxGOworLQkJICAgIGJyZWFrOworLQkJfQorLQkJZWxz ZQorLQkJeworLQkJICAgICpsaW5lX21vZGUgPSBHTE9CVVNfTF9MSU5FX01PREVfQ1I7CistCQkg ICAgYnJlYWs7CistCQl9CistCSAgICB9CistCSAgICBlbHNlIGlmKGlucHV0W3NyY10gPT0gTEYg JiYgKCpsaW5lX21vZGUpID09CistCQkgICAgR0xPQlVTX0xfTElORV9NT0RFX1VOS05PV04pCist CSAgICB7CistCQkqbGluZV9tb2RlID0gR0xPQlVTX0xfTElORV9NT0RFX0xGOworLQkJYnJlYWs7 CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7CistCQlvdXRwdXRbZHN0XSA9IEdMT0JVU19M X1RFWFRfQllURShpbnB1dFtzcmNdKTsKKy0JCWRzdCsrOworLQkJc3JjKys7CistCQkKKy0JCWNv bnRpbnVlOworLQkgICAgfQorLQl9CistCS8qIGRpZCB3ZSBmaW5pc2ggYmVjYXVzZSB3ZSByZWFk IHRoZSBlbmQtb2YtaW5wdXQgb3Igb3V0cHV0PyAqLworLQlpZihzcmMgPT0gbWF4X2lucHV0LTEg fHwKKy0JICAgZHN0ID09IG1heF9vdXRwdXQtMSkKKy0JeworLQkgICAgKmlucHV0X2NvcGllZCA9 IHNyYzsKKy0JICAgICpvdXRwdXRfY29waWVkID0gZHN0OworLQkgICAgcmV0dXJuOworLQl9Cisr ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTF9MSU5FX01PREVfVU5LTk9XTikKKysgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgIGlmKGlucHV0W3NyYysxXSA9PSBMRikKKysgICAgICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgKmxpbmVfbW9kZSA9IEdMT0JVU19MX0xJ TkVfTU9ERV9DUkxGOworKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgICAgICAqbGluZV9tb2RlID0gR0xPQlVTX0xfTElORV9NT0RFX0NSOworKyAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9 CisrICAgICAgICAgICAgZWxzZSBpZihpbnB1dFtzcmNdID09IExGICYmICgqbGluZV9tb2RlKSA9 PQorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfTElORV9NT0RFX1VOS05PV04pCisrICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICAqbGluZV9tb2RlID0gR0xPQlVTX0xfTElORV9N T0RFX0xGOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAg ICAgICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgb3V0cHV0W2RzdF0g PSBHTE9CVVNfTF9URVhUX0JZVEUoaW5wdXRbc3JjXSk7CisrICAgICAgICAgICAgICAgIGRzdCsr OworKyAgICAgICAgICAgICAgICBzcmMrKzsKKysKKysgICAgICAgICAgICAgICAgY29udGludWU7 CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgLyogZGlkIHdlIGZpbmlzaCBi ZWNhdXNlIHdlIHJlYWQgdGhlIGVuZC1vZi1pbnB1dCBvciBvdXRwdXQ/ICovCisrICAgICAgICBp ZihzcmMgPT0gbWF4X2lucHV0LTEgfHwKKysgICAgICAgICAgIGRzdCA9PSBtYXhfb3V0cHV0LTEp CisrICAgICAgICB7CisrICAgICAgICAgICAgKmlucHV0X2NvcGllZCA9IHNyYzsKKysgICAgICAg ICAgICAqb3V0cHV0X2NvcGllZCA9IGRzdDsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAg ICB9CisgICAgIH0KKyAKKyAgICAgLyoKK0BAIC01MzM2LDEwMiArNTMzNiwxMDIgQEAgZ2xvYnVz X2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NvcHlfdGV4dF9idWZmZXIoCisgICAgICAqLworICAgICB3 aGlsZShzcmMgPCBtYXhfaW5wdXQgJiYgZHN0IDwgbWF4X291dHB1dCkKKyAgICAgeworLQlpZihp bnB1dFtzcmNdID09IENSICYmIGlucHV0W3NyYysxXSA9PSBMRiAmJgorLQkgICAqbGluZV9tb2Rl ID09IEdMT0JVU19MX0xJTkVfTU9ERV9DUkxGKQorLQl7CistCSAgICBzd2l0Y2goZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX2xpbmVfbW9kZSkKKy0JICAgIHsKKy0JICAgICAgY2FzZSBHTE9C VVNfTF9MSU5FX01PREVfQ1I6CistCQkvKiBDUkxGIHRvIENSICovCistCQlvdXRwdXRbZHN0XSA9 IENSOworLQkJZHN0Kys7CistCQlzcmMgKz0gMjsKKy0JCWJyZWFrOworLQkgICAgICBjYXNlIEdM T0JVU19MX0xJTkVfTU9ERV9DUkxGOgorLQkJLyogQ1JMRiB0byBDUkxGICovCistCQlvdXRwdXRb ZHN0XT0gQ1I7CistCQlkc3QrKzsKKy0JCW91dHB1dFtkc3RdPSBMRjsKKy0JCWRzdCsrOworLQkJ c3JjICs9IDI7CistCQlicmVhazsKKy0JICAgICAgY2FzZSBHTE9CVVNfTF9MSU5FX01PREVfTEY6 CistCQkvKiBDUkxGIHRvIExGICovCistCQlvdXRwdXRbZHN0XT0gTEY7CistCQlkc3QrKzsKKy0J CXNyYyArPSAyOworLQkJYnJlYWs7CistCSAgICAgIGNhc2UgR0xPQlVTX0xfTElORV9NT0RFX1VO S05PV046CistCQlnbG9idXNfYXNzZXJ0KGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9saW5l X21vZGUgIT0KKy0JCQkgICAgICBHTE9CVVNfTF9MSU5FX01PREVfVU5LTk9XTik7CistCSAgICB9 CistCX0KKy0JZWxzZSBpZihpbnB1dFtzcmNdID09IENSICYmICpsaW5lX21vZGUgPT0gR0xPQlVT X0xfTElORV9NT0RFX0NSKQorLQl7CistCSAgICBzd2l0Y2goZ2xvYnVzX2xfZ2Fzc190cmFuc2Zl cl9odHRwX2xpbmVfbW9kZSkKKy0JICAgIHsKKy0JICAgICAgY2FzZSBHTE9CVVNfTF9MSU5FX01P REVfQ1I6CistCQkvKiBDUiB0byBDUiAqLworLQkJb3V0cHV0W2RzdF0gPSBDUjsKKy0JCWRzdCsr OworLQkJc3JjKys7CistCQlicmVhazsKKy0JICAgICAgY2FzZSBHTE9CVVNfTF9MSU5FX01PREVf Q1JMRjoKKy0JCS8qIENSIHRvIENSTEYgKi8KKy0JCW91dHB1dFtkc3RdPSBDUjsKKy0JCWRzdCsr OworLQkJb3V0cHV0W2RzdF09IExGOworLQkJZHN0Kys7CistCQlzcmMrKzsKKy0JCWJyZWFrOwor LQkgICAgICBjYXNlIEdMT0JVU19MX0xJTkVfTU9ERV9MRjoKKy0JCS8qIENSTEYgdG8gTEYgKi8K Ky0JCW91dHB1dFtkc3RdPSBMRjsKKy0JCWRzdCsrOworLQkJc3JjKys7CistCQlicmVhazsKKy0J ICAgICAgY2FzZSBHTE9CVVNfTF9MSU5FX01PREVfVU5LTk9XTjoKKy0JCWdsb2J1c19hc3NlcnQo Z2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpbmVfbW9kZSAhPQorLQkJCSAgICAgIEdMT0JV U19MX0xJTkVfTU9ERV9VTktOT1dOKTsKKy0JICAgIH0KKy0JfQorLQllbHNlIGlmKGlucHV0W3Ny Y10gPT0gTEYgJiYgKmxpbmVfbW9kZSA9PSBHTE9CVVNfTF9MSU5FX01PREVfTEYpCistCXsKKy0J ICAgIHN3aXRjaChnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbGluZV9tb2RlKQorLQkgICAg eworLQkgICAgICBjYXNlIEdMT0JVU19MX0xJTkVfTU9ERV9DUjoKKy0JCS8qIExGIHRvIENSICov CistCQlvdXRwdXRbZHN0XSA9IENSOworLQkJZHN0Kys7CistCQlzcmMrKzsKKy0JCWJyZWFrOwor LQkgICAgICBjYXNlIEdMT0JVU19MX0xJTkVfTU9ERV9DUkxGOgorLQkJLyogTEYgdG8gQ1JMRiAq LworLQkJb3V0cHV0W2RzdF09IENSOworLQkJZHN0Kys7CistCQlvdXRwdXRbZHN0XT0gTEY7Cist CQlkc3QrKzsKKy0JCXNyYysrOworLQkJYnJlYWs7CistCSAgICAgIGNhc2UgR0xPQlVTX0xfTElO RV9NT0RFX0xGOgorLQkJLyogTEYgdG8gTEYgKi8KKy0JCW91dHB1dFtkc3RdPSBMRjsKKy0JCWRz dCsrOworLQkJc3JjKys7CistCQlicmVhazsKKy0JICAgICAgY2FzZSBHTE9CVVNfTF9MSU5FX01P REVfVU5LTk9XTjoKKy0JCWdsb2J1c19hc3NlcnQoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X2xpbmVfbW9kZSAhPQorLQkJCSAgICAgIEdMT0JVU19MX0xJTkVfTU9ERV9VTktOT1dOKTsKKy0J ICAgIH0KKy0JfQorLQllbHNlCistCXsKKy0JICAgIG91dHB1dFtkc3RdID0gR0xPQlVTX0xfVEVY VF9CWVRFKGlucHV0W3NyY10pOworLQkgICAgZHN0Kys7CistCSAgICBzcmMrKzsKKy0JICAgIAor LQkgICAgY29udGludWU7CistCX0KKysgICAgICAgIGlmKGlucHV0W3NyY10gPT0gQ1IgJiYgaW5w dXRbc3JjKzFdID09IExGICYmCisrICAgICAgICAgICAqbGluZV9tb2RlID09IEdMT0JVU19MX0xJ TkVfTU9ERV9DUkxGKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHN3aXRjaChnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfbGluZV9tb2RlKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgIGNhc2UgR0xPQlVTX0xfTElORV9NT0RFX0NSOgorKyAgICAgICAgICAgICAgICAvKiBDUkxG IHRvIENSICovCisrICAgICAgICAgICAgICAgIG91dHB1dFtkc3RdID0gQ1I7CisrICAgICAgICAg ICAgICAgIGRzdCsrOworKyAgICAgICAgICAgICAgICBzcmMgKz0gMjsKKysgICAgICAgICAgICAg ICAgYnJlYWs7CisrICAgICAgICAgICAgICBjYXNlIEdMT0JVU19MX0xJTkVfTU9ERV9DUkxGOgor KyAgICAgICAgICAgICAgICAvKiBDUkxGIHRvIENSTEYgKi8KKysgICAgICAgICAgICAgICAgb3V0 cHV0W2RzdF09IENSOworKyAgICAgICAgICAgICAgICBkc3QrKzsKKysgICAgICAgICAgICAgICAg b3V0cHV0W2RzdF09IExGOworKyAgICAgICAgICAgICAgICBkc3QrKzsKKysgICAgICAgICAgICAg ICAgc3JjICs9IDI7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgY2Fz ZSBHTE9CVVNfTF9MSU5FX01PREVfTEY6CisrICAgICAgICAgICAgICAgIC8qIENSTEYgdG8gTEYg Ki8KKysgICAgICAgICAgICAgICAgb3V0cHV0W2RzdF09IExGOworKyAgICAgICAgICAgICAgICBk c3QrKzsKKysgICAgICAgICAgICAgICAgc3JjICs9IDI7CisrICAgICAgICAgICAgICAgIGJyZWFr OworKyAgICAgICAgICAgICAgY2FzZSBHTE9CVVNfTF9MSU5FX01PREVfVU5LTk9XTjoKKysgICAg ICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydChnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbGlu ZV9tb2RlICE9CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfTElORV9N T0RFX1VOS05PV04pOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGVsc2Ug aWYoaW5wdXRbc3JjXSA9PSBDUiAmJiAqbGluZV9tb2RlID09IEdMT0JVU19MX0xJTkVfTU9ERV9D UikKKysgICAgICAgIHsKKysgICAgICAgICAgICBzd2l0Y2goZ2xvYnVzX2xfZ2Fzc190cmFuc2Zl cl9odHRwX2xpbmVfbW9kZSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBjYXNlIEdM T0JVU19MX0xJTkVfTU9ERV9DUjoKKysgICAgICAgICAgICAgICAgLyogQ1IgdG8gQ1IgKi8KKysg ICAgICAgICAgICAgICAgb3V0cHV0W2RzdF0gPSBDUjsKKysgICAgICAgICAgICAgICAgZHN0Kys7 CisrICAgICAgICAgICAgICAgIHNyYysrOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAg ICAgICAgICAgIGNhc2UgR0xPQlVTX0xfTElORV9NT0RFX0NSTEY6CisrICAgICAgICAgICAgICAg IC8qIENSIHRvIENSTEYgKi8KKysgICAgICAgICAgICAgICAgb3V0cHV0W2RzdF09IENSOworKyAg ICAgICAgICAgICAgICBkc3QrKzsKKysgICAgICAgICAgICAgICAgb3V0cHV0W2RzdF09IExGOwor KyAgICAgICAgICAgICAgICBkc3QrKzsKKysgICAgICAgICAgICAgICAgc3JjKys7CisrICAgICAg ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgY2FzZSBHTE9CVVNfTF9MSU5FX01PREVf TEY6CisrICAgICAgICAgICAgICAgIC8qIENSTEYgdG8gTEYgKi8KKysgICAgICAgICAgICAgICAg b3V0cHV0W2RzdF09IExGOworKyAgICAgICAgICAgICAgICBkc3QrKzsKKysgICAgICAgICAgICAg ICAgc3JjKys7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgY2FzZSBH TE9CVVNfTF9MSU5FX01PREVfVU5LTk9XTjoKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2Fzc2Vy dChnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbGluZV9tb2RlICE9CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfTElORV9NT0RFX1VOS05PV04pOworKyAgICAgICAg ICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYoaW5wdXRbc3JjXSA9PSBMRiAmJiAq bGluZV9tb2RlID09IEdMT0JVU19MX0xJTkVfTU9ERV9MRikKKysgICAgICAgIHsKKysgICAgICAg ICAgICBzd2l0Y2goZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2xpbmVfbW9kZSkKKysgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICBjYXNlIEdMT0JVU19MX0xJTkVfTU9ERV9DUjoKKysg ICAgICAgICAgICAgICAgLyogTEYgdG8gQ1IgKi8KKysgICAgICAgICAgICAgICAgb3V0cHV0W2Rz dF0gPSBDUjsKKysgICAgICAgICAgICAgICAgZHN0Kys7CisrICAgICAgICAgICAgICAgIHNyYysr OworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgIGNhc2UgR0xPQlVTX0xf TElORV9NT0RFX0NSTEY6CisrICAgICAgICAgICAgICAgIC8qIExGIHRvIENSTEYgKi8KKysgICAg ICAgICAgICAgICAgb3V0cHV0W2RzdF09IENSOworKyAgICAgICAgICAgICAgICBkc3QrKzsKKysg ICAgICAgICAgICAgICAgb3V0cHV0W2RzdF09IExGOworKyAgICAgICAgICAgICAgICBkc3QrKzsK KysgICAgICAgICAgICAgICAgc3JjKys7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAg ICAgICAgICAgY2FzZSBHTE9CVVNfTF9MSU5FX01PREVfTEY6CisrICAgICAgICAgICAgICAgIC8q IExGIHRvIExGICovCisrICAgICAgICAgICAgICAgIG91dHB1dFtkc3RdPSBMRjsKKysgICAgICAg ICAgICAgICAgZHN0Kys7CisrICAgICAgICAgICAgICAgIHNyYysrOworKyAgICAgICAgICAgICAg ICBicmVhazsKKysgICAgICAgICAgICAgIGNhc2UgR0xPQlVTX0xfTElORV9NT0RFX1VOS05PV046 CisrICAgICAgICAgICAgICAgIGdsb2J1c19hc3NlcnQoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9o dHRwX2xpbmVfbW9kZSAhPQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19M X0xJTkVfTU9ERV9VTktOT1dOKTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAg ICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgb3V0cHV0W2RzdF0gPSBHTE9CVVNfTF9U RVhUX0JZVEUoaW5wdXRbc3JjXSk7CisrICAgICAgICAgICAgZHN0Kys7CisrICAgICAgICAgICAg c3JjKys7CisrCisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisgICAgIH0KKyAg ICAgKmlucHV0X2NvcGllZCA9IHNyYzsKKyAgICAgKm91dHB1dF9jb3BpZWQgPSBkc3Q7CitAQCAt NTQ0MSw5NyArNTQ0MSw5NyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfY29weV90ZXh0 X2J1ZmZlcigKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl91bmJ1ZmZl cl90ZXh0KAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAq CQlwcm90bykKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3Qg KiAgICAgICAgIHByb3RvKQorIHsKKyAgICAgLyoKKyAgICAgICogQ29weSB0aGUgdGV4dCBmcm9t IHRoZSBwcm90bydzIHJlc3BvbnNlIGJ1ZmZlciB0byB0aGUKKyAgICAgICogdXNlcidzIGJ1ZmZl cgorICAgICAgKi8KKy0gICAgZ2xvYnVzX3NpemVfdAkJCWlucHV0X2NvcGllZDsKKy0gICAgZ2xv YnVzX3NpemVfdAkJCW91dHB1dF9jb3BpZWQ7CistICAgIGdsb2J1c19zaXplX3QJCQlzcmNfbWF4 OworLSAgICBnbG9idXNfYm9vbF90CQkJcmVkbyA9IEdMT0JVU19GQUxTRTsKKysgICAgZ2xvYnVz X3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfY29waWVkOworKyAgICBnbG9idXNf c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfY29waWVkOworKyAgICBnbG9idXNf c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBzcmNfbWF4OworKyAgICBnbG9idXNfYm9vbF90 ICAgICAgICAgICAgICAgICAgICAgICByZWRvID0gR0xPQlVTX0ZBTFNFOworIAorICAgICBkbwor ICAgICB7CistCXNyY19tYXggPSBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNl ZF9vZmZzZXQ7CisrICAgICAgICBzcmNfbWF4ID0gcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHBy b3RvLT5wYXJzZWRfb2Zmc2V0OworIAorLQlpZihwcm90by0+Y2h1bmtlZCAmJgorLQkgICAoc3Jj X21heCA+IHByb3RvLT5jaHVua19sZWZ0KSkKKy0JeworLQkgICAgc3JjX21heCA9IHByb3RvLT5j aHVua19sZWZ0OworLQl9CisrICAgICAgICBpZihwcm90by0+Y2h1bmtlZCAmJgorKyAgICAgICAg ICAgKHNyY19tYXggPiBwcm90by0+Y2h1bmtfbGVmdCkpCisrICAgICAgICB7CisrICAgICAgICAg ICAgc3JjX21heCA9IHByb3RvLT5jaHVua19sZWZ0OworKyAgICAgICAgfQorIAorICAgICAvKgor ICAgICAgKiBDb3B5IHRoZSB0ZXh0LCBjb252ZXJ0aW5nIHRvIDctYml0IFVTLUFTQ0lJLCBhbmQK KyAgICAgICogY29udmVydGluZyB0aGUgZG9jdW1lbnQncyBlbmQtb2YtbGluZSB0byBiZSB0aGUg bG9jYWwKKyAgICAgICogbWFjaGluZSdzIGVuZC1vZi1saW5lIGNoYXJhY3RlcgorICAgICAgKi8K Ky0JZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2NvcHlfdGV4dF9idWZmZXIoCistCSAgICBw cm90by0+dXNlcl9idWZmZXIgKyBwcm90by0+dXNlcl9vZmZzZXQsCistCSAgICBwcm90by0+cmVz cG9uc2VfYnVmZmVyICsgcHJvdG8tPnBhcnNlZF9vZmZzZXQsCistCSAgICAmcHJvdG8tPmxpbmVf bW9kZSwKKy0JICAgIHNyY19tYXgsCistCSAgICBwcm90by0+dXNlcl9idWZsZW4gLSBwcm90by0+ dXNlcl9vZmZzZXQsCistCSAgICAmaW5wdXRfY29waWVkLAorLQkgICAgJm91dHB1dF9jb3BpZWQp OworLQorLQlwcm90by0+dXNlcl9vZmZzZXQgKz0gb3V0cHV0X2NvcGllZDsKKy0JcHJvdG8tPnBh cnNlZF9vZmZzZXQgKz0gaW5wdXRfY29waWVkOworLQlwcm90by0+aGFuZGxlZCArPSBpbnB1dF9j b3BpZWQ7CistCWlmKHByb3RvLT5jaHVua2VkKQorLQl7CistCSAgICBwcm90by0+Y2h1bmtfbGVm dCAtPSBpbnB1dF9jb3BpZWQ7CistCX0KKy0KKy0JaWYob3V0cHV0X2NvcGllZCA+IHByb3RvLT51 c2VyX3dhaXRsZW4pCistCXsKKy0JICAgIHByb3RvLT51c2VyX3dhaXRsZW4gPSAwOworLQl9Cist CWVsc2UKKy0JeworLQkgICAgcHJvdG8tPnVzZXJfd2FpdGxlbiAtPSBvdXRwdXRfY29waWVkOwor LQl9CistCWlmKHByb3RvLT5yZXNwb25zZV9vZmZzZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCA9 PSAxICYmCistCSAgIHByb3RvLT5saW5lX21vZGUgPT0gR0xPQlVTX0xfTElORV9NT0RFX1VOS05P V04pCistCXsKKy0JICAgIGlmKHByb3RvLT5yZXNwb25zZV9idWZmZXJbcHJvdG8tPnBhcnNlZF9v ZmZzZXRdID09IENSKQorLQkgICAgeworLQkJcHJvdG8tPmxpbmVfbW9kZSA9IEdMT0JVU19MX0xJ TkVfTU9ERV9DUjsKKy0JCXJlZG8gPSBHTE9CVVNfVFJVRTsKKy0JICAgIH0KKy0JICAgIGVsc2Ug aWYgKHByb3RvLT5yZXNwb25zZV9idWZmZXJbcHJvdG8tPnBhcnNlZF9vZmZzZXRdID09IExGKQor LQkgICAgeworLQkJcHJvdG8tPmxpbmVfbW9kZSA9IEdMT0JVU19MX0xJTkVfTU9ERV9MRjsKKy0J CXJlZG8gPSBHTE9CVVNfVFJVRTsKKy0JICAgIH0KKy0JICAgIGVsc2UKKy0JICAgIHsKKy0JCS8q IGRvZXNuJ3QgbWF0dGVyLCBzaW5jZSB0aGUgZG9jdW1lbnQgY29udGFpbnMgbm8gbmV3bGluZXMg Ki8KKy0JCXByb3RvLT5saW5lX21vZGUgPSBHTE9CVVNfTF9MSU5FX01PREVfTEY7CistCQlyZWRv ID0gR0xPQlVTX1RSVUU7CistCSAgICB9CistCX0KKy0JZWxzZQorLQl7CistCSAgICByZWRvID0g R0xPQlVTX0ZBTFNFOworLQl9CisrICAgICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf Y29weV90ZXh0X2J1ZmZlcigKKysgICAgICAgICAgICBwcm90by0+dXNlcl9idWZmZXIgKyBwcm90 by0+dXNlcl9vZmZzZXQsCisrICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmZlciArIHBy b3RvLT5wYXJzZWRfb2Zmc2V0LAorKyAgICAgICAgICAgICZwcm90by0+bGluZV9tb2RlLAorKyAg ICAgICAgICAgIHNyY19tYXgsCisrICAgICAgICAgICAgcHJvdG8tPnVzZXJfYnVmbGVuIC0gcHJv dG8tPnVzZXJfb2Zmc2V0LAorKyAgICAgICAgICAgICZpbnB1dF9jb3BpZWQsCisrICAgICAgICAg ICAgJm91dHB1dF9jb3BpZWQpOworKworKyAgICAgICAgcHJvdG8tPnVzZXJfb2Zmc2V0ICs9IG91 dHB1dF9jb3BpZWQ7CisrICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCArPSBpbnB1dF9jb3Bp ZWQ7CisrICAgICAgICBwcm90by0+aGFuZGxlZCArPSBpbnB1dF9jb3BpZWQ7CisrICAgICAgICBp Zihwcm90by0+Y2h1bmtlZCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBwcm90by0+Y2h1bmtf bGVmdCAtPSBpbnB1dF9jb3BpZWQ7CisrICAgICAgICB9CisrCisrICAgICAgICBpZihvdXRwdXRf Y29waWVkID4gcHJvdG8tPnVzZXJfd2FpdGxlbikKKysgICAgICAgIHsKKysgICAgICAgICAgICBw cm90by0+dXNlcl93YWl0bGVuID0gMDsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAg ICAgIHsKKysgICAgICAgICAgICBwcm90by0+dXNlcl93YWl0bGVuIC09IG91dHB1dF9jb3BpZWQ7 CisrICAgICAgICB9CisrICAgICAgICBpZihwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8t PnBhcnNlZF9vZmZzZXQgPT0gMSAmJgorKyAgICAgICAgICAgcHJvdG8tPmxpbmVfbW9kZSA9PSBH TE9CVVNfTF9MSU5FX01PREVfVU5LTk9XTikKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZihw cm90by0+cmVzcG9uc2VfYnVmZmVyW3Byb3RvLT5wYXJzZWRfb2Zmc2V0XSA9PSBDUikKKysgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgIHByb3RvLT5saW5lX21vZGUgPSBHTE9CVVNfTF9M SU5FX01PREVfQ1I7CisrICAgICAgICAgICAgICAgIHJlZG8gPSBHTE9CVVNfVFJVRTsKKysgICAg ICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZiAocHJvdG8tPnJlc3BvbnNlX2J1ZmZlcltw cm90by0+cGFyc2VkX29mZnNldF0gPT0gTEYpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICBwcm90by0+bGluZV9tb2RlID0gR0xPQlVTX0xfTElORV9NT0RFX0xGOworKyAgICAgICAg ICAgICAgICByZWRvID0gR0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAg IGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIC8qIGRvZXNuJ3QgbWF0dGVy LCBzaW5jZSB0aGUgZG9jdW1lbnQgY29udGFpbnMgbm8gbmV3bGluZXMgKi8KKysgICAgICAgICAg ICAgICAgcHJvdG8tPmxpbmVfbW9kZSA9IEdMT0JVU19MX0xJTkVfTU9ERV9MRjsKKysgICAgICAg ICAgICAgICAgcmVkbyA9IEdMT0JVU19UUlVFOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0K KysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICByZWRvID0gR0xPQlVTX0ZB TFNFOworKyAgICAgICAgfQorICAgICB9IHdoaWxlKHJlZG8pOworIAorICAgICAvKiBSZXNldCBv dXIgYnVmZmVyLCBpZiB3ZSd2ZSByZWFkIGl0IGFsbCAqLworICAgICBpZihwcm90by0+cGFyc2Vk X29mZnNldCA9PSBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0KQorICAgICB7CistCXByb3RvLT5wYXJz ZWRfb2Zmc2V0ID0gMDsKKy0JcHJvdG8tPnJlc3BvbnNlX29mZnNldCA9IDA7CisrICAgICAgICBw cm90by0+cGFyc2VkX29mZnNldCA9IDA7CisrICAgICAgICBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0 ID0gMDsKKyAgICAgfQorICAgICBlbHNlIGlmKHByb3RvLT5wYXJzZWRfb2Zmc2V0ICE9IDApCisg ICAgIHsKKy0JLyogVGhpcyBtYXkgbm90IGJlIG5lY2Vzc2FyeSAqLworLQltZW1tb3ZlKHByb3Rv LT5yZXNwb25zZV9idWZmZXIsCistCQlwcm90by0+cmVzcG9uc2VfYnVmZmVyICsgcHJvdG8tPnBh cnNlZF9vZmZzZXQsCistCQlwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9v ZmZzZXQpOworLQlwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC09IHByb3RvLT5wYXJzZWRfb2Zmc2V0 OworLQlwcm90by0+cGFyc2VkX29mZnNldCA9IDA7CisrICAgICAgICAvKiBUaGlzIG1heSBub3Qg YmUgbmVjZXNzYXJ5ICovCisrICAgICAgICBtZW1tb3ZlKHByb3RvLT5yZXNwb25zZV9idWZmZXIs CisrICAgICAgICAgICAgICAgIHByb3RvLT5yZXNwb25zZV9idWZmZXIgKyBwcm90by0+cGFyc2Vk X29mZnNldCwKKysgICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHByb3Rv LT5wYXJzZWRfb2Zmc2V0KTsKKysgICAgICAgIHByb3RvLT5yZXNwb25zZV9vZmZzZXQgLT0gcHJv dG8tPnBhcnNlZF9vZmZzZXQ7CisrICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCA9IDA7Cisg ICAgIH0KKyB9CisgLyogZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl91bmJ1ZmZlcl90ZXh0KCkgKi8K K0BAIC01NTM5LDU4ICs1NTM5LDU4IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfdW5idWZmZXJf dGV4dCgKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl91bmJ1ZmZlcl9i aW5hcnkoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICoJ CXByb3RvKQorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAq ICAgICAgICAgcHJvdG8pCisgeworICAgICAvKgorICAgICAgKiBDb3B5IHRoZSBiaW5hcnkgZnJv bSB0aGUgcHJvdG8ncyByZXNwb25zZSBidWZmZXIgdG8gdGhlCisgICAgICAqIHVzZXIncyBidWZm ZXIKKyAgICAgICovCistICAgIGdsb2J1c19zaXplX3QJCQlzbWFsbGVyOworKyAgICBnbG9idXNf c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBzbWFsbGVyOworIAorICAgICBzbWFsbGVyID0g cHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHByb3RvLT5wYXJzZWRfb2Zmc2V0OworICAgICBpZihz bWFsbGVyID4gcHJvdG8tPnVzZXJfYnVmbGVuIC0gcHJvdG8tPnVzZXJfb2Zmc2V0KQorICAgICB7 CistCXNtYWxsZXIgPSBwcm90by0+dXNlcl9idWZsZW4gLSBwcm90by0+dXNlcl9vZmZzZXQ7Cisr ICAgICAgICBzbWFsbGVyID0gcHJvdG8tPnVzZXJfYnVmbGVuIC0gcHJvdG8tPnVzZXJfb2Zmc2V0 OworICAgICB9CisgICAgIGlmKHByb3RvLT5jaHVua2VkICYmCisgICAgICAgIHNtYWxsZXIgPiBw cm90by0+Y2h1bmtfbGVmdCkKKyAgICAgeworLQlzbWFsbGVyID0gcHJvdG8tPmNodW5rX2xlZnQ7 CisrICAgICAgICBzbWFsbGVyID0gcHJvdG8tPmNodW5rX2xlZnQ7CisgICAgIH0KKyAgICAgbWVt Y3B5KHByb3RvLT51c2VyX2J1ZmZlciArIHByb3RvLT51c2VyX29mZnNldCwKKy0JICAgcHJvdG8t PnJlc3BvbnNlX2J1ZmZlciArIHByb3RvLT5wYXJzZWRfb2Zmc2V0LAorLQkgICBzbWFsbGVyKTsK KysgICAgICAgICAgIHByb3RvLT5yZXNwb25zZV9idWZmZXIgKyBwcm90by0+cGFyc2VkX29mZnNl dCwKKysgICAgICAgICAgIHNtYWxsZXIpOworIAorICAgICBwcm90by0+dXNlcl9vZmZzZXQgKz0g c21hbGxlcjsKKyAgICAgcHJvdG8tPnBhcnNlZF9vZmZzZXQgKz0gc21hbGxlcjsKKyAgICAgcHJv dG8tPmhhbmRsZWQgKz0gc21hbGxlcjsKKyAgICAgaWYocHJvdG8tPmNodW5rZWQpCisgICAgIHsK Ky0JcHJvdG8tPmNodW5rX2xlZnQgLT0gc21hbGxlcjsKKysgICAgICAgIHByb3RvLT5jaHVua19s ZWZ0IC09IHNtYWxsZXI7CisgICAgIH0KKyAKKyAgICAgaWYoc21hbGxlciA+IHByb3RvLT51c2Vy X3dhaXRsZW4pCisgICAgIHsKKy0JcHJvdG8tPnVzZXJfd2FpdGxlbiA9IDA7CisrICAgICAgICBw cm90by0+dXNlcl93YWl0bGVuID0gMDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JcHJv dG8tPnVzZXJfd2FpdGxlbiAtPSBzbWFsbGVyOworKyAgICAgICAgcHJvdG8tPnVzZXJfd2FpdGxl biAtPSBzbWFsbGVyOworICAgICB9CisgICAgIC8qIFJlc2V0IG91ciBidWZmZXIsIGlmIHdlJ3Zl IHJlYWQgaXQgYWxsICovCisgICAgIGlmKHByb3RvLT5wYXJzZWRfb2Zmc2V0ID09IHByb3RvLT5y ZXNwb25zZV9vZmZzZXQpCisgICAgIHsKKy0JcHJvdG8tPnBhcnNlZF9vZmZzZXQgPSAwOworLQlw cm90by0+cmVzcG9uc2Vfb2Zmc2V0ID0gMDsKKysgICAgICAgIHByb3RvLT5wYXJzZWRfb2Zmc2V0 ID0gMDsKKysgICAgICAgIHByb3RvLT5yZXNwb25zZV9vZmZzZXQgPSAwOworICAgICB9CisgICAg IGVsc2UgaWYocHJvdG8tPnBhcnNlZF9vZmZzZXQgIT0gMCkKKyAgICAgeworLQkvKiBUaGlzIG1h eSBub3QgYmUgbmVjZXNzYXJ5ICovCistCW1lbW1vdmUocHJvdG8tPnJlc3BvbnNlX2J1ZmZlciwK Ky0JCXByb3RvLT5yZXNwb25zZV9idWZmZXIgKyBwcm90by0+cGFyc2VkX29mZnNldCwKKy0JCXBy b3RvLT5yZXNwb25zZV9vZmZzZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCk7CistCXByb3RvLT5y ZXNwb25zZV9vZmZzZXQgLT0gcHJvdG8tPnBhcnNlZF9vZmZzZXQ7CistCXByb3RvLT5wYXJzZWRf b2Zmc2V0ID0gMDsKKysgICAgICAgIC8qIFRoaXMgbWF5IG5vdCBiZSBuZWNlc3NhcnkgKi8KKysg ICAgICAgIG1lbW1vdmUocHJvdG8tPnJlc3BvbnNlX2J1ZmZlciwKKysgICAgICAgICAgICAgICAg cHJvdG8tPnJlc3BvbnNlX2J1ZmZlciArIHByb3RvLT5wYXJzZWRfb2Zmc2V0LAorKyAgICAgICAg ICAgICAgICBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQpOwor KyAgICAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtPSBwcm90by0+cGFyc2VkX29mZnNldDsK KysgICAgICAgIHByb3RvLT5wYXJzZWRfb2Zmc2V0ID0gMDsKKyAgICAgfQorIH0KKyAvKiBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX3VuYnVmZmVyX2JpbmFyeSgpICovCitAQCAtNTYwMCwxNyArNTYw MCwxNyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX3VuYnVmZmVyX2JpbmFyeSgKKyBzdGF0aWMK KyBnbG9idXNfYm9vbF90CisgaXNsd3MoCistICAgIGNoYXIgCQkJCQlieXRlKQorKyAgICBjaGFy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUpCisgeworICAgICBy ZXR1cm4oYnl0ZSA9PSAnICcgfHwKKy0JICAgYnl0ZSA9PSAnXHQnKTsKKysgICAgICAgICAgIGJ5 dGUgPT0gJ1x0Jyk7CisgfQorIC8qIGlzbHdzKCkgKi8KKyAKKyBzdGF0aWMKKyBnbG9idXNfYm9v bF90CisgaXNjaGFyKAorLSAgICBjaGFyIAkJCQkJYnl0ZSkKKysgICAgY2hhciAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlKQorIHsKKyAgICAgcmV0dXJuKCAodW5z aWduZWQgY2hhcikgYnl0ZSA8PSAxMjcgKTsKKyB9CitAQCAtNTYxOSwzOSArNTYxOSwzOSBAQCBp c2NoYXIoCisgc3RhdGljCisgZ2xvYnVzX2Jvb2xfdAorIGlzdHNwZWNpYWwoCistICAgIGNoYXIg CQkJCQlieXRlKQorKyAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJ5dGUpCisgeworICAgICByZXR1cm4gKGJ5dGUgPT0gJygnIHx8IGJ5dGUgPT0gJyknIHx8 IGJ5dGUgPT0gJzwnIHx8CistCSAgICBieXRlID09ICc+JyB8fCBieXRlID09ICdAJyB8fCBieXRl ID09ICcsJyB8fAorLQkgICAgYnl0ZSA9PSAnOycgfHwgYnl0ZSA9PSAnOicgfHwgYnl0ZSA9PSAn XFwnIHx8CistCSAgICBieXRlID09ICciJyB8fCBieXRlID09ICcvJyB8fCBieXRlID09ICdbJyB8 fAorLQkgICAgYnl0ZSA9PSAnXScgfHwgYnl0ZSA9PSAnPycgfHwgYnl0ZSA9PSAnPScgfHwKKy0J ICAgIGJ5dGUgPT0gJ3snIHx8IGJ5dGUgPT0gJ30nIHx8IGJ5dGUgPT0gJyAnIHx8CistCSAgICBi eXRlID09ICdcdCcpOworKyAgICAgICAgICAgIGJ5dGUgPT0gJz4nIHx8IGJ5dGUgPT0gJ0AnIHx8 IGJ5dGUgPT0gJywnIHx8CisrICAgICAgICAgICAgYnl0ZSA9PSAnOycgfHwgYnl0ZSA9PSAnOicg fHwgYnl0ZSA9PSAnXFwnIHx8CisrICAgICAgICAgICAgYnl0ZSA9PSAnIicgfHwgYnl0ZSA9PSAn LycgfHwgYnl0ZSA9PSAnWycgfHwKKysgICAgICAgICAgICBieXRlID09ICddJyB8fCBieXRlID09 ICc/JyB8fCBieXRlID09ICc9JyB8fAorKyAgICAgICAgICAgIGJ5dGUgPT0gJ3snIHx8IGJ5dGUg PT0gJ30nIHx8IGJ5dGUgPT0gJyAnIHx8CisrICAgICAgICAgICAgYnl0ZSA9PSAnXHQnKTsKKyB9 CisgLyogaXN0c3BlY2lhbCgpICovCisgCisgZ2xvYnVzX2Jvb2xfdAorIGlzY3RsKAorLSAgICBj aGFyCQkJCQlieXRlKQorKyAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJ5dGUpCisgeworICAgICByZXR1cm4gKChieXRlID49IChjaGFyKSAwICYmIGJ5dGUg PD0gKGNoYXIpIDMxKSB8fAorLQkgICAgYnl0ZSA9PSAoY2hhcikgMTI3KTsKKysgICAgICAgICAg ICBieXRlID09IChjaGFyKSAxMjcpOworIH0KKyAKKyBzdGF0aWMKKyBnbG9idXNfYm9vbF90Cisg aXNoZXgoCistICAgIGNoYXIJCQkJCWJ5dGUpCisrICAgIGNoYXIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnl0ZSkKKyB7CisgICAgIHJldHVybiAoYnl0ZSA9PSAnQScg fHwgYnl0ZSA9PSAnQicgfHwgYnl0ZSA9PSAnQycgfHwKKy0JICAgIGJ5dGUgPT0gJ0QnIHx8IGJ5 dGUgPT0gJ0UnIHx8IGJ5dGUgPT0gJ0YnIHx8CistCSAgICBieXRlID09ICdhJyB8fCBieXRlID09 ICdiJyB8fCBieXRlID09ICdjJyB8fAorLQkgICAgYnl0ZSA9PSAnZCcgfHwgYnl0ZSA9PSAnZScg fHwgYnl0ZSA9PSAnZicgfHwKKy0JICAgIGJ5dGUgPT0gJzAnIHx8IGJ5dGUgPT0gJzEnIHx8IGJ5 dGUgPT0gJzInIHx8CistCSAgICBieXRlID09ICczJyB8fCBieXRlID09ICc0JyB8fCBieXRlID09 ICc1JyB8fAorLQkgICAgYnl0ZSA9PSAnNicgfHwgYnl0ZSA9PSAnNycgfHwgYnl0ZSA9PSAnOCcg fHwKKy0JICAgIGJ5dGUgPT0gJzknKTsKKysgICAgICAgICAgICBieXRlID09ICdEJyB8fCBieXRl ID09ICdFJyB8fCBieXRlID09ICdGJyB8fAorKyAgICAgICAgICAgIGJ5dGUgPT0gJ2EnIHx8IGJ5 dGUgPT0gJ2InIHx8IGJ5dGUgPT0gJ2MnIHx8CisrICAgICAgICAgICAgYnl0ZSA9PSAnZCcgfHwg Ynl0ZSA9PSAnZScgfHwgYnl0ZSA9PSAnZicgfHwKKysgICAgICAgICAgICBieXRlID09ICcwJyB8 fCBieXRlID09ICcxJyB8fCBieXRlID09ICcyJyB8fAorKyAgICAgICAgICAgIGJ5dGUgPT0gJzMn IHx8IGJ5dGUgPT0gJzQnIHx8IGJ5dGUgPT0gJzUnIHx8CisrICAgICAgICAgICAgYnl0ZSA9PSAn NicgfHwgYnl0ZSA9PSAnNycgfHwgYnl0ZSA9PSAnOCcgfHwKKysgICAgICAgICAgICBieXRlID09 ICc5Jyk7CisgfQorIC8qCisgICogYWxsIHNjYW4gYW5kIHBhcnNlIGZ1bmN0aW9ucyByZXR1cm4g R0xPQlVTX1RSVUUgaWYgbW9yZSBkYXRhCitAQCAtNTY2MCwxMSArNTY2MCwxMSBAQCBpc2hleCgK KyBzdGF0aWMKKyBnbG9idXNfYm9vbF90CisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3Nj YW5fc3Rhcl9sd3MoCistICAgIGdsb2J1c19ieXRlX3QgKgkJCQlpbnB1dCwKKy0gICAgZ2xvYnVz X3NpemVfdAkJCQltYXhfdG9fc2NhbiwKKy0gICAgZ2xvYnVzX3NpemVfdCAqCQkJCWVuZF9vZl90 b2tlbikKKysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnB1dCwKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt YXhfdG9fc2NhbiwKKysgICAgZ2xvYnVzX3NpemVfdCAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbmRfb2ZfdG9rZW4pCisgeworLSAgICBnbG9idXNfc2l6ZV90CQkJCWk7CisrICAgIGds b2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTsKKyAKKyAgICAgKmVu ZF9vZl90b2tlbiA9IDA7CisgICAgIC8qCitAQCAtNTY4OSw0OCArNTY4OSw0OCBAQCBnbG9idXNf bF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9zdGFyX2x3cygKKyAgICAgICovCisgICAgIGZvcihp ID0gMDsgaSA8IG1heF90b19zY2FuOyBpKyspCisgICAgIHsKKy0JaWYoaW5wdXRbaV0gPT0gJyAn IHx8IGlucHV0W2ldID09ICdcdCcpCistCXsKKy0JICAgIGNvbnRpbnVlOworLQl9CistCWlmKGlu cHV0W2ldID09IENSKQorLQl7CistCSAgICBpZihpICsgMiA+PSBtYXhfdG9fc2NhbikKKy0JICAg IHsKKy0JCS8qIG5vdCBlbm91Z2ggZGF0YSAqLworLQkJcmV0dXJuIEdMT0JVU19UUlVFOworLQkg ICAgfQorLQkgICAgZWxzZQorLQkgICAgeworLQkJaWYoaW5wdXRbaSsxXSA9PSBMRiAmJgorLQkJ ICAgKGlucHV0W2krMl0gPT0gJyAnIHx8CistCQkgICAgaW5wdXRbaSsyXSA9PSAnXHQnKSkKKy0J CXsKKy0JCSAgICAvKiBwYXNzIG92ZXIgTEYgKi8KKy0JCSAgICBpKys7CistCQkgICAgY29udGlu dWU7CistCQl9CistCQllbHNlCistCQl7CistCQkgICAgLyogVGhpcyBDUiBkb2Vzbid0IG1hdGNo IG91ciBwYXR0ZXJuICovCistCQkgICAgaWYoaSAhPSAwKQorLQkJICAgIHsKKy0JCQkvKiBJZiB3 ZSd2ZSBzd2FsbG93ZWQgYW55IHdoaXRlc3BhY2UsIG5vdGUgaXQgKi8KKy0JCQkqZW5kX29mX3Rv a2VuID0gaTsKKy0JCSAgICB9CistCQkgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKy0JCX0KKy0J ICAgIH0KKy0JfQorLQllbHNlCistCXsKKy0JICAgIC8qIGVuZCBvZiBtYXRjaCAqLworLQkgICAg aWYoaSAhPSAwKQorLQkgICAgeworLQkJKmVuZF9vZl90b2tlbiA9IGk7CistCSAgICB9CistCSAg ICByZXR1cm4gR0xPQlVTX0ZBTFNFOworLQl9CisrICAgICAgICBpZihpbnB1dFtpXSA9PSAnICcg fHwgaW5wdXRbaV0gPT0gJ1x0JykKKysgICAgICAgIHsKKysgICAgICAgICAgICBjb250aW51ZTsK KysgICAgICAgIH0KKysgICAgICAgIGlmKGlucHV0W2ldID09IENSKQorKyAgICAgICAgeworKyAg ICAgICAgICAgIGlmKGkgKyAyID49IG1heF90b19zY2FuKQorKyAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgLyogbm90IGVub3VnaCBkYXRhICovCisrICAgICAgICAgICAgICAgIHJldHVy biBHTE9CVVNfVFJVRTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZQorKyAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYoaW5wdXRbaSsxXSA9PSBMRiAmJgorKyAgICAg ICAgICAgICAgICAgICAoaW5wdXRbaSsyXSA9PSAnICcgfHwKKysgICAgICAgICAgICAgICAgICAg IGlucHV0W2krMl0gPT0gJ1x0JykpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgICAgIC8qIHBhc3Mgb3ZlciBMRiAqLworKyAgICAgICAgICAgICAgICAgICAgaSsrOworKyAg ICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAg ICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAv KiBUaGlzIENSIGRvZXNuJ3QgbWF0Y2ggb3VyIHBhdHRlcm4gKi8KKysgICAgICAgICAgICAgICAg ICAgIGlmKGkgIT0gMCkKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg ICAgICAgICAvKiBJZiB3ZSd2ZSBzd2FsbG93ZWQgYW55IHdoaXRlc3BhY2UsIG5vdGUgaXQgKi8K KysgICAgICAgICAgICAgICAgICAgICAgICAqZW5kX29mX3Rva2VuID0gaTsKKysgICAgICAgICAg ICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTE9CVVNfRkFMU0U7Cisr ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBl bHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgLyogZW5kIG9mIG1hdGNoICovCisrICAgICAg ICAgICAgaWYoaSAhPSAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgKmVuZF9v Zl90b2tlbiA9IGk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHJldHVybiBHTE9CVVNf RkFMU0U7CisrICAgICAgICB9CisgICAgIH0KKyAgICAgLyoKKyAgICAgICogSWYgd2UgaGF2ZW4n dCBoaXQgYW4gZW5kIG9mIHRoZSBMV1MgYnkgdGhlIGVuZCBvZiBpbnB1dCwKK0BAIC01NzQzLDEx ICs1NzQzLDExIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2FuX3N0YXJfbHdzKAor IHN0YXRpYworIGdsb2J1c19ib29sX3QKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nh bl90b2tlbigKKy0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWlucHV0LAorLSAgICBnbG9idXNfc2l6 ZV90CQkJCW1heF90b19zY2FuLAorLSAgICBnbG9idXNfc2l6ZV90ICoJCQkJZW5kX29mX3Rva2Vu KQorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0 LAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF90 b19zY2FuLAorKyAgICBnbG9idXNfc2l6ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVuZF9vZl90b2tlbikKKyB7CistICAgIGdsb2J1c19zaXplX3QJCQkJaTsKKysgICAgZ2xvYnVz X3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOworIAorICAgICAqZW5kX29m X3Rva2VuID0gMDsKKyAKK0BAIC01NzU4LDIwICs1NzU4LDIwIEBAIGdsb2J1c19sX2dhc3NfdHJh bnNmZXJfaHR0cF9zY2FuX3Rva2VuKAorICAgICAgKiB0c3BlY2lhbHMgICAgICA9ICIoIiB8ICIp IiB8ICI8IiB8ICI+IiB8ICJAIgorICAgICAgKiAgICAgICAgICAgICAgICAgICB8ICIsIiB8ICI7 IiB8ICI6IiB8ICJcIiB8IDwiPgorICAgICAgKiAgICAgICAgICAgICAgICAgICB8ICIvIiB8ICJb IiB8ICJdIiB8ICI/IiB8ICI9IgorLSAgICAgKgkJCSB8ICJ7IiB8ICJ9IiB8IFNQIHwgSFQKKysg ICAgICogICAgICAgICAgICAgICAgICAgfCAieyIgfCAifSIgfCBTUCB8IEhUCisgICAgICAqLwor ICAgICBmb3IoaSA9IDA7IGkgPCBtYXhfdG9fc2NhbjsgaSsrKQorICAgICB7CistCWlmKCFpc2No YXIoaW5wdXRbaV0pIHx8CistCSAgIGlzY3RsKGlucHV0W2ldKSB8fAorLQkgICBpc3RzcGVjaWFs KGlucHV0W2ldKSkKKy0JeworLQkgICAgaWYoaSAhPSAwKQorLQkgICAgeworLQkJKmVuZF9vZl90 b2tlbiA9IGk7CistCSAgICB9CistCSAgICByZXR1cm4gR0xPQlVTX0ZBTFNFOworLQl9CisrICAg ICAgICBpZighaXNjaGFyKGlucHV0W2ldKSB8fAorKyAgICAgICAgICAgaXNjdGwoaW5wdXRbaV0p IHx8CisrICAgICAgICAgICBpc3RzcGVjaWFsKGlucHV0W2ldKSkKKysgICAgICAgIHsKKysgICAg ICAgICAgICBpZihpICE9IDApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAqZW5k X29mX3Rva2VuID0gaTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgcmV0dXJuIEdMT0JV U19GQUxTRTsKKysgICAgICAgIH0KKyAgICAgfQorICAgICByZXR1cm4gR0xPQlVTX1RSVUU7IC8q IG5lZWQgbW9yZSBkYXRhICovCisgfQorQEAgLTU3ODAsMTIgKzU3ODAsMTIgQEAgZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX3NjYW5fdG9rZW4oCisgc3RhdGljCisgZ2xvYnVzX2Jvb2xfdAor IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2FuX3FkdGV4dCgKKy0gICAgZ2xvYnVzX2J5 dGVfdCAqCQkJCWlucHV0LAorLSAgICBnbG9idXNfc2l6ZV90CQkJCW1heF90b19zY2FuLAorLSAg ICBnbG9idXNfc2l6ZV90ICoJCQkJZW5kX29mX3FkdGV4dCkKKysgICAgZ2xvYnVzX2J5dGVfdCAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwKKysgICAgZ2xvYnVzX3NpemVfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfdG9fc2NhbiwKKysgICAgZ2xvYnVzX3Np emVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfb2ZfcWR0ZXh0KQorIHsKKy0g ICAgZ2xvYnVzX3NpemVfdAkJCQlpOworLSAgICBnbG9idXNfc2l6ZV90CQkJCWo7CisrICAgIGds b2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTsKKysgICAgZ2xvYnVz X3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOworIAorICAgICAvKgorICAg ICAgKiBxZHRleHQgICAgICAgICA9IDxhbnkgVEVYVCBleGNlcHQgPCI+PgorQEAgLTU3OTgsNTQg KzU3OTgsNTQgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NjYW5fcWR0ZXh0KAorIAor ICAgICBmb3IoaSA9IDA7IGkgPCBtYXhfdG9fc2NhbjsgaSsrKQorICAgICB7CistCS8qIEFsd2F5 cyBhYnNvcmIgTFdTIGluIHF1b3RlcyAqLworLQlpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfc2Nhbl9zdGFyX2x3cygKKy0JICAgIGlucHV0ICsgaSwKKy0JICAgIG1heF90b19zY2FuIC0g aSwKKy0JICAgICZqKSkKKy0JeworLQkgICAgcmV0dXJuIEdMT0JVU19UUlVFOyAvKiBuZWVkIG1v cmUgdG8gc2NhbiAqLworLQl9CistCWVsc2UgaWYoaiAhPSAwKQorLQl7CistCSAgICBpICs9IGo7 CQkvKiBzY2FubmVkIHNvbWUgTFdTICovCistCSAgICBjb250aW51ZTsKKy0JfQorLQllbHNlIGlm KGlucHV0W2ldID09ICdcXCcpCistCXsKKy0JICAgIC8qIGFic29yYiBxdW90ZWQtcGFpciAqLwor LQkgICAgaWYoaSArIDEgPCBtYXhfdG9fc2NhbikKKy0JICAgIHsKKy0JCWlmKGlzY2hhcihpbnB1 dFtpKzFdKSkKKy0JCXsKKy0JCSAgICBpKys7CistCQkgICAgCistCQkgICAgY29udGludWU7Cist CQl9CistCQllbHNlCistCQl7CistCQkgICAgKmVuZF9vZl9xZHRleHQgPSBpOworLQkJICAgIHJl dHVybiBHTE9CVVNfRkFMU0U7CistCQl9CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7Cist CQlyZXR1cm4gR0xPQlVTX1RSVUU7CS8qIG5lZWQgbW9yZSB0byBzY2FuICovCistCSAgICB9Cist CX0KKy0JZWxzZSBpZighaXNjdGwoaW5wdXRbaV0pKQorLQl7CistCSAgICBjb250aW51ZTsgICAg CistCX0KKy0JZWxzZSBpZihpICE9IDApCistCXsKKy0JICAgICplbmRfb2ZfcWR0ZXh0ID0gaTsK Ky0JICAgIHJldHVybiBHTE9CVVNfRkFMU0U7CistCX0gICAKKy0JZWxzZQorLQl7CistCSAgICBy ZXR1cm4gR0xPQlVTX0ZBTFNFOworLQl9CisrICAgICAgICAvKiBBbHdheXMgYWJzb3JiIExXUyBp biBxdW90ZXMgKi8KKysgICAgICAgIGlmKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2Fu X3N0YXJfbHdzKAorKyAgICAgICAgICAgIGlucHV0ICsgaSwKKysgICAgICAgICAgICBtYXhfdG9f c2NhbiAtIGksCisrICAgICAgICAgICAgJmopKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJl dHVybiBHTE9CVVNfVFJVRTsgLyogbmVlZCBtb3JlIHRvIHNjYW4gKi8KKysgICAgICAgIH0KKysg ICAgICAgIGVsc2UgaWYoaiAhPSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGkgKz0gajsg ICAgICAgICAgICAgLyogc2Nhbm5lZCBzb21lIExXUyAqLworKyAgICAgICAgICAgIGNvbnRpbnVl OworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZihpbnB1dFtpXSA9PSAnXFwnKQorKyAgICAg ICAgeworKyAgICAgICAgICAgIC8qIGFic29yYiBxdW90ZWQtcGFpciAqLworKyAgICAgICAgICAg IGlmKGkgKyAxIDwgbWF4X3RvX3NjYW4pCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICBpZihpc2NoYXIoaW5wdXRbaSsxXSkpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgICAgIGkrKzsKKysKKysgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAg ICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICAgICAgKmVuZF9vZl9xZHRleHQgPSBpOworKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgIH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICByZXR1cm4gR0xPQlVTX1RSVUU7ICAgICAvKiBuZWVkIG1vcmUgdG8gc2NhbiAqLworKyAgICAg ICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYoIWlzY3RsKGlucHV0W2ldKSkK KysgICAgICAgIHsKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAg IGVsc2UgaWYoaSAhPSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAgICplbmRfb2ZfcWR0ZXh0 ID0gaTsKKysgICAgICAgICAgICByZXR1cm4gR0xPQlVTX0ZBTFNFOworKyAgICAgICAgfQorKyAg ICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJldHVybiBHTE9CVVNfRkFMU0U7 CisrICAgICAgICB9CisgICAgIH0KKyAgICAgcmV0dXJuIEdMT0JVU19UUlVFOworIH0KK0BAIC01 ODU0LDUwICs1ODU0LDUwIEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2FuX3FkdGV4 dCgKKyBzdGF0aWMKKyBnbG9idXNfYm9vbF90CisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X3NjYW5fcXVvdGVkX3N0cmluZygKKy0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWlucHV0LAorLSAg ICBnbG9idXNfc2l6ZV90CQkJCW1heF90b19zY2FuLAorLSAgICBnbG9idXNfc2l6ZV90ICoJCQkJ ZW5kX29mX3F0ZF9zdHJpbmcpCisrICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5wdXQsCisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWF4X3RvX3NjYW4sCisrICAgIGdsb2J1c19zaXplX3QgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW5kX29mX3F0ZF9zdHJpbmcpCisgeworLSAgICBnbG9idXNfc2l6 ZV90IAkJCQlpOworKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGk7CisgICAgIC8qCistICAgICAqIHF1b3RlZC1zdHJpbmcgID0gKCA8Ij4gKihxZHRleHQp IDwiPiApIAorKyAgICAgKiBxdW90ZWQtc3RyaW5nICA9ICggPCI+ICoocWR0ZXh0KSA8Ij4gKQor ICAgICAgKi8KKyAKKyAgICAgKmVuZF9vZl9xdGRfc3RyaW5nID0gMDsKKyAKKyAgICAgaWYobWF4 X3RvX3NjYW4gPT0gMCkKKyAgICAgeworLQlyZXR1cm4gR0xPQlVTX1RSVUU7CisrICAgICAgICBy ZXR1cm4gR0xPQlVTX1RSVUU7CisgICAgIH0KKyAKKyAgICAgLyogcXVvdGVkIHRleHQgbXVzdCBi ZWdpbiB3aXRoICciJyAqLworICAgICBpZihpbnB1dFswXSAhPSAnIicpCisgICAgIHsKKy0JcmV0 dXJuIEdMT0JVU19GQUxTRTsKKysgICAgICAgIHJldHVybiBHTE9CVVNfRkFMU0U7CisgICAgIH0K KyAKKyAgICAgaWYoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NjYW5fcWR0ZXh0KAorLQlp bnB1dCsxLAorLQltYXhfdG9fc2Nhbi0xLAorLQkmaSkpCisrICAgICAgICBpbnB1dCsxLAorKyAg ICAgICAgbWF4X3RvX3NjYW4tMSwKKysgICAgICAgICZpKSkKKyAgICAgeworLQlyZXR1cm4gR0xP QlVTX1RSVUU7CS8qIG5lZWQgbW9yZSBkYXRhICovCisrICAgICAgICByZXR1cm4gR0xPQlVTX1RS VUU7ICAgICAvKiBuZWVkIG1vcmUgZGF0YSAqLworICAgICB9CisgCisgICAgIGlmKGkgPT0gbWF4 X3RvX3NjYW4gLSAxKQorICAgICB7CistCXJldHVybiBHTE9CVVNfVFJVRTsJLyogbmVlZCBtb3Jl IGRhdGEgKi8KKysgICAgICAgIHJldHVybiBHTE9CVVNfVFJVRTsgICAgIC8qIG5lZWQgbW9yZSBk YXRhICovCisgICAgIH0KKyAKKyAgICAgLyogcXVvdGVkIHRleHQgbXVzdCBlbmQgd2l0aCAnIicg Ki8KKyAgICAgaWYoaW5wdXRbaV0gPT0gJyInKQorICAgICB7CistCSplbmRfb2ZfcXRkX3N0cmlu ZyA9IGkrMTsKKy0JcmV0dXJuIEdMT0JVU19GQUxTRTsKKysgICAgICAgICplbmRfb2ZfcXRkX3N0 cmluZyA9IGkrMTsKKysgICAgICAgIHJldHVybiBHTE9CVVNfRkFMU0U7CisgICAgIH0KKyAgICAg ZWxzZQorICAgICB7CistCXJldHVybiBHTE9CVVNfRkFMU0U7CisrICAgICAgICByZXR1cm4gR0xP QlVTX0ZBTFNFOworICAgICB9CisgfQorIC8qIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9z Y2FuX3F1b3RlZF9zdHJpbmcoKSAqLworQEAgLTU5MDYsMTMgKzU5MDYsMTMgQEAgZ2xvYnVzX2xf Z2Fzc190cmFuc2Zlcl9odHRwX3NjYW5fcXVvdGVkX3N0cmluZygKKyBzdGF0aWMKKyBnbG9idXNf Ym9vbF90CisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NjYW5fY2h1bmtfZXh0KAorLSAg ICBnbG9idXNfYnl0ZV90ICoJCQkJaW5wdXQsCistICAgIGdsb2J1c19zaXplX3QJCQkJbWF4X3Rv X3NjYW4sCistICAgIGdsb2J1c19zaXplX3QgKgkJCQllbmRfb2ZfY2h1bmtfZXh0KQorKyAgICBn bG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LAorKyAgICBn bG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF90b19zY2FuLAor KyAgICBnbG9idXNfc2l6ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9vZl9j aHVua19leHQpCisgeworLSAgICBnbG9idXNfc2l6ZV90CQkJCWk7CistICAgIGdsb2J1c19zaXpl X3QJCQkJajsKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJCQlzZW1pY29sb24gPSBHTE9CVVNfRkFMU0U7 CisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTsKKysg ICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOworKyAgICBn bG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbWljb2xvbiA9IEdM T0JVU19GQUxTRTsKKyAKKyAgICAgLyoKKyAgICAgICogY2h1bmstZXh0ICAgICAgPSAqKCAiOyIg Y2h1bmstZXh0LW5hbWUgWyAiPSIgY2h1bmstZXh0LXZhbHVlIF0gKQorQEAgLTU5MjUsMTAgKzU5 MjUsMTAgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NjYW5fY2h1bmtfZXh0KAorIAor ICAgICBmb3IoOzspCisgICAgIHsKKy0JaWYobWF4X3RvX3NjYW4gLSBpID09IDApCistCXsKKy0J ICAgIHJldHVybiBHTE9CVVNfVFJVRTsKKy0JfQorKyAgICAgICAgaWYobWF4X3RvX3NjYW4gLSBp ID09IDApCisrICAgICAgICB7CisrICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19UUlVFOworKyAg ICAgICAgfQorICAgICAgICAgZWxzZSBpZiAoaW5wdXRbaV0gIT0gQ1IpCisgICAgICAgICB7Cisg ICAgICAgICAgICAgLyogRG9uJ3Qgc2NhbiAqTFdTIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMg YSBuZXdsaW5lLiBBc3N1bWUgdGhhdCBubworQEAgLTU5NDcsMTI1ICs1OTQ3LDEyNSBAQCBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9jaHVua19leHQoCisgICAgICAgICAgICAgfQor ICAgICAgICAgfQorIAorLQlpZihpICsgMSA+PSBtYXhfdG9fc2NhbikKKy0JeworLQkgICAgcmV0 dXJuIEdMT0JVU19UUlVFOworLQl9CistCS8qCistCSAqIE9ubHkgY29uc3VtZSBMV1MgaWYgdGhl cmUgaXMgYSBzZW1pY29sb24sCistCSAqIG90aGVyd2lzZSwgd2UgbWF5IGNvbnN1bWUgcGFydCBv ZiBDUkxGL21lc3NhZ2UgYm9keQorLQkgKi8KKy0JaWYoaW5wdXRbaV0gIT0gJzsnICYmIHNlbWlj b2xvbikKKy0JeworLQkgICAgKmVuZF9vZl9jaHVua19leHQgPSBpOworLQkgICAgcmV0dXJuIEdM T0JVU19GQUxTRTsKKy0JfQorLQllbHNlIGlmKGlucHV0W2ldICE9ICc7JykKKy0JeworLQkgICAg cmV0dXJuIEdMT0JVU19GQUxTRTsKKy0JfQorLQorLQlzZW1pY29sb24gPSBHTE9CVVNfVFJVRTsK Ky0KKy0JLyogcGFzcyBvdmVyICc7JyAqLworLQlpKys7CistCistCS8qIHNraXAgYW55IExXUyAq LworLQlpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9zdGFyX2x3cygKKy0JICAg IGlucHV0ICsgaSwKKy0JICAgIG1heF90b19zY2FuIC0gaSwKKy0JICAgICZqKSkKKy0JeworLQkg ICAgcmV0dXJuIEdMT0JVU19UUlVFOyAvKiBtb3JlIHRvIHNjYW4gKi8KKy0JfQorLQllbHNlIGlm KGogIT0gMCkKKy0JeworLQkgICAgaSArPSBqOyAvKiBzY2FubmVkIHNvbWUgTFdTICovCistCX0K Ky0KKy0JLyogc2NhbiBmb3IgY2h1bmstZXh0LW5hbWUgKi8KKy0JaWYoZ2xvYnVzX2xfZ2Fzc190 cmFuc2Zlcl9odHRwX3NjYW5fdG9rZW4oCistCSAgICBpbnB1dCArIGksCistCSAgICBtYXhfdG9f c2NhbiAtIGksCistCSAgICAmaikpCistCXsKKy0JICAgIHJldHVybiBHTE9CVVNfVFJVRTsKKy0J fQorLQllbHNlIGlmKGogPT0gMCkgLyogaWxsZWdhbCwgJzsnIGJ1dCBubyB0b2tlbiAqLworLQl7 CistCSAgICAqZW5kX29mX2NodW5rX2V4dCA9IDA7CistCSAgICByZXR1cm4gR0xPQlVTX0ZBTFNF OworLQl9CistCWVsc2UKKy0JeworLQkgICAgaSArPSBqOworLQl9CistCistCS8qIHNraXAgYW55 IExXUyAqLworLQlpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9zdGFyX2x3cygK Ky0JICAgIGlucHV0ICsgaSwKKy0JICAgIG1heF90b19zY2FuIC0gaSwKKy0JICAgICZqKSkKKy0J eworLQkgICAgcmV0dXJuIEdMT0JVU19UUlVFOyAvKiBtb3JlIHRvIHNjYW4gKi8KKy0JfQorLQll bHNlIGlmKGogIT0gMCkKKy0JeworLQkgICAgaSArPSBqOyAvKiBzY2FubmVkIHNvbWUgbGVhZGlu ZyBMV1MgKi8KKy0JfQorLQorLQkvKiBjaGVjayBmb3IgJz0nICovCistCWlmKGkgKyAxID49IG1h eF90b19zY2FuKQorLQl7CistCSAgICByZXR1cm4gR0xPQlVTX1RSVUU7CistCX0KKy0JaWYoaW5w dXRbaV0gPT0gJzsnKSAvKiBjaHVuay1leHQgd2l0aG91dCBjaHVuay1leHQtdmFsdWUgKi8KKy0J eworLQkgICAgY29udGludWU7CistCX0KKy0JZWxzZSBpZihpbnB1dFtpXSAhPSAnPScpCistCXsK Ky0JICAgICplbmRfb2ZfY2h1bmtfZXh0ID0gaTsKKy0JICAgIHJldHVybiBHTE9CVVNfRkFMU0U7 CistCX0KKy0JLyogcGFzcyBvdmVyICc9JyAqLworLQlpKys7CistCistCS8qIHNraXAgYW55IExX UyAqLworLQlpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9zdGFyX2x3cygKKy0J ICAgIGlucHV0K2ksCistCSAgICBtYXhfdG9fc2Nhbi1pLAorLQkgICAgJmopKQorLQl7CistCSAg ICByZXR1cm4gR0xPQlVTX1RSVUU7IC8qIG1vcmUgdG8gc2NhbiAqLworLQl9CistCWVsc2UgaWYo aiAhPSAwKQorLQl7CistCSAgICBpICs9IGo7IC8qIHNjYW5uZWQgc29tZSBMV1MgKi8KKy0JfQor LQorLQorLQkvKiBjaGVjayBmb3IgY2h1bmstZXh0LXZhbHVlLCBlaXRoZXIgYSB0b2tlbiwgb3Ig YSBxdW90ZWQtc3RyaW5nICovCistCWlmKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2Fu X3Rva2VuKAorLQkgICAgaW5wdXQgKyBpLAorLQkgICAgbWF4X3RvX3NjYW4gLSBpLAorLQkgICAg JmopKQorLQl7CistCSAgICByZXR1cm4gR0xPQlVTX1RSVUU7IC8qIG1vcmUgdG8gc2NhbiAqLwor LQl9CistCS8qIG5vIHRva2VuLCB0cnkgdG8gc2NhbiBxdW90ZWQgc3RyaW5nICovCistCWVsc2Ug aWYoaiA9PSAwICYmCistCQlnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9xdW90ZWRf c3RyaW5nKAorLQkJICAgIGlucHV0ICsgaSwKKy0JCSAgICBtYXhfdG9fc2NhbiAtIGksCistCQkg ICAgJmopKQorLQl7CistCSAgICByZXR1cm4gR0xPQlVTX1RSVUU7IC8qIG1vcmUgdG8gc2NhbiAq LworLQl9CistCWVsc2UKKy0JeworLQkgICAgaSArPSBqOworLQl9CisrICAgICAgICBpZihpICsg MSA+PSBtYXhfdG9fc2NhbikKKysgICAgICAgIHsKKysgICAgICAgICAgICByZXR1cm4gR0xPQlVT X1RSVUU7CisrICAgICAgICB9CisrICAgICAgICAvKgorKyAgICAgICAgICogT25seSBjb25zdW1l IExXUyBpZiB0aGVyZSBpcyBhIHNlbWljb2xvbiwKKysgICAgICAgICAqIG90aGVyd2lzZSwgd2Ug bWF5IGNvbnN1bWUgcGFydCBvZiBDUkxGL21lc3NhZ2UgYm9keQorKyAgICAgICAgICovCisrICAg ICAgICBpZihpbnB1dFtpXSAhPSAnOycgJiYgc2VtaWNvbG9uKQorKyAgICAgICAgeworKyAgICAg ICAgICAgICplbmRfb2ZfY2h1bmtfZXh0ID0gaTsKKysgICAgICAgICAgICByZXR1cm4gR0xPQlVT X0ZBTFNFOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZihpbnB1dFtpXSAhPSAnOycpCisr ICAgICAgICB7CisrICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKysgICAgICAgIH0K KysKKysgICAgICAgIHNlbWljb2xvbiA9IEdMT0JVU19UUlVFOworKworKyAgICAgICAgLyogcGFz cyBvdmVyICc7JyAqLworKyAgICAgICAgaSsrOworKworKyAgICAgICAgLyogc2tpcCBhbnkgTFdT ICovCisrICAgICAgICBpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9zdGFyX2x3 cygKKysgICAgICAgICAgICBpbnB1dCArIGksCisrICAgICAgICAgICAgbWF4X3RvX3NjYW4gLSBp LAorKyAgICAgICAgICAgICZqKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICByZXR1cm4gR0xP QlVTX1RSVUU7IC8qIG1vcmUgdG8gc2NhbiAqLworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBp ZihqICE9IDApCisrICAgICAgICB7CisrICAgICAgICAgICAgaSArPSBqOyAvKiBzY2FubmVkIHNv bWUgTFdTICovCisrICAgICAgICB9CisrCisrICAgICAgICAvKiBzY2FuIGZvciBjaHVuay1leHQt bmFtZSAqLworKyAgICAgICAgaWYoZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NjYW5fdG9r ZW4oCisrICAgICAgICAgICAgaW5wdXQgKyBpLAorKyAgICAgICAgICAgIG1heF90b19zY2FuIC0g aSwKKysgICAgICAgICAgICAmaikpCisrICAgICAgICB7CisrICAgICAgICAgICAgcmV0dXJuIEdM T0JVU19UUlVFOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZihqID09IDApIC8qIGlsbGVn YWwsICc7JyBidXQgbm8gdG9rZW4gKi8KKysgICAgICAgIHsKKysgICAgICAgICAgICAqZW5kX29m X2NodW5rX2V4dCA9IDA7CisrICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKysgICAg ICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICBpICs9IGo7Cisr ICAgICAgICB9CisrCisrICAgICAgICAvKiBza2lwIGFueSBMV1MgKi8KKysgICAgICAgIGlmKGds b2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2FuX3N0YXJfbHdzKAorKyAgICAgICAgICAgIGlu cHV0ICsgaSwKKysgICAgICAgICAgICBtYXhfdG9fc2NhbiAtIGksCisrICAgICAgICAgICAgJmop KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJldHVybiBHTE9CVVNfVFJVRTsgLyogbW9yZSB0 byBzY2FuICovCisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmKGogIT0gMCkKKysgICAgICAg IHsKKysgICAgICAgICAgICBpICs9IGo7IC8qIHNjYW5uZWQgc29tZSBsZWFkaW5nIExXUyAqLwor KyAgICAgICAgfQorKworKyAgICAgICAgLyogY2hlY2sgZm9yICc9JyAqLworKyAgICAgICAgaWYo aSArIDEgPj0gbWF4X3RvX3NjYW4pCisrICAgICAgICB7CisrICAgICAgICAgICAgcmV0dXJuIEdM T0JVU19UUlVFOworKyAgICAgICAgfQorKyAgICAgICAgaWYoaW5wdXRbaV0gPT0gJzsnKSAvKiBj aHVuay1leHQgd2l0aG91dCBjaHVuay1leHQtdmFsdWUgKi8KKysgICAgICAgIHsKKysgICAgICAg ICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYoaW5wdXRbaV0gIT0g Jz0nKQorKyAgICAgICAgeworKyAgICAgICAgICAgICplbmRfb2ZfY2h1bmtfZXh0ID0gaTsKKysg ICAgICAgICAgICByZXR1cm4gR0xPQlVTX0ZBTFNFOworKyAgICAgICAgfQorKyAgICAgICAgLyog cGFzcyBvdmVyICc9JyAqLworKyAgICAgICAgaSsrOworKworKyAgICAgICAgLyogc2tpcCBhbnkg TFdTICovCisrICAgICAgICBpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9zdGFy X2x3cygKKysgICAgICAgICAgICBpbnB1dCtpLAorKyAgICAgICAgICAgIG1heF90b19zY2FuLWks CisrICAgICAgICAgICAgJmopKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJldHVybiBHTE9C VVNfVFJVRTsgLyogbW9yZSB0byBzY2FuICovCisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlm KGogIT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBpICs9IGo7IC8qIHNjYW5uZWQgc29t ZSBMV1MgKi8KKysgICAgICAgIH0KKysKKysKKysgICAgICAgIC8qIGNoZWNrIGZvciBjaHVuay1l eHQtdmFsdWUsIGVpdGhlciBhIHRva2VuLCBvciBhIHF1b3RlZC1zdHJpbmcgKi8KKysgICAgICAg IGlmKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2FuX3Rva2VuKAorKyAgICAgICAgICAg IGlucHV0ICsgaSwKKysgICAgICAgICAgICBtYXhfdG9fc2NhbiAtIGksCisrICAgICAgICAgICAg JmopKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJldHVybiBHTE9CVVNfVFJVRTsgLyogbW9y ZSB0byBzY2FuICovCisrICAgICAgICB9CisrICAgICAgICAvKiBubyB0b2tlbiwgdHJ5IHRvIHNj YW4gcXVvdGVkIHN0cmluZyAqLworKyAgICAgICAgZWxzZSBpZihqID09IDAgJiYKKysgICAgICAg ICAgICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX3NjYW5fcXVvdGVkX3N0cmluZygK KysgICAgICAgICAgICAgICAgICAgIGlucHV0ICsgaSwKKysgICAgICAgICAgICAgICAgICAgIG1h eF90b19zY2FuIC0gaSwKKysgICAgICAgICAgICAgICAgICAgICZqKSkKKysgICAgICAgIHsKKysg ICAgICAgICAgICByZXR1cm4gR0xPQlVTX1RSVUU7IC8qIG1vcmUgdG8gc2NhbiAqLworKyAgICAg ICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIGkgKz0gajsKKysg ICAgICAgIH0KKyAgICAgfQorIH0KKyAvKiBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nh bl9jaHVua19leHQoKSAqLworQEAgLTYwNzMsMTEgKzYwNzMsMTEgQEAgZ2xvYnVzX2xfZ2Fzc190 cmFuc2Zlcl9odHRwX3NjYW5fY2h1bmtfZXh0KAorIHN0YXRpYworIGdsb2J1c19ib29sX3QKKyBn bG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9jaHVua19zaXplKAorLSAgICBnbG9idXNf Ynl0ZV90ICoJCQkJaW5wdXQsCistICAgIGdsb2J1c19zaXplX3QJCQkJbWF4X3RvX3NjYW4sCist ICAgIGdsb2J1c19zaXplX3QgKgkJCQllbmRfb2ZfY2h1bmtfc2l6ZSkKKysgICAgZ2xvYnVzX2J5 dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwKKysgICAgZ2xvYnVzX3Np emVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfdG9fc2NhbiwKKysgICAgZ2xv YnVzX3NpemVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRfb2ZfY2h1bmtfc2l6 ZSkKKyB7CistICAgIGdsb2J1c19zaXplX3QJCQkJaTsKKysgICAgZ2xvYnVzX3NpemVfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpOworIAorICAgICAvKgorICAgICAgKiBoZXgtbm8t emVybyAgICA9IDxIRVggZXhjbHVkaW5nICIwIj4KK0BAIC02MDg5LDI4ICs2MDg5LDI4IEBAIGds b2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2FuX2NodW5rX3NpemUoCisgCisgICAgIGlmKGkg Pj0gbWF4X3RvX3NjYW4pCisgICAgIHsKKy0JcmV0dXJuIEdMT0JVU19UUlVFOworKyAgICAgICAg cmV0dXJuIEdMT0JVU19UUlVFOworICAgICB9CisgCisgICAgIGlmKGlucHV0W2ldID09ICcwJyAm JgorICAgICAgICBpICsgMSA8IG1heF90b19zY2FuKQorICAgICB7CistCSplbmRfb2ZfY2h1bmtf c2l6ZSA9IDE7CistCXJldHVybiBHTE9CVVNfRkFMU0U7CisrICAgICAgICAqZW5kX29mX2NodW5r X3NpemUgPSAxOworKyAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKyAgICAgfQorIAorICAg ICBmb3IoOyBpIDwgbWF4X3RvX3NjYW47IGkrKykKKyAgICAgeworLQlpZihpbnB1dFtpXSA9PSAn ICcgfHwKKy0JICAgaW5wdXRbaV0gPT0gJ1x0JykKKy0JeworLQkgICAgY29udGludWU7CistCX0K Ky0JaWYoIWlzaGV4KGlucHV0W2ldKSkKKy0JeworLQkgICAgKmVuZF9vZl9jaHVua19zaXplID0g aTsKKy0JICAgIHJldHVybiBHTE9CVVNfRkFMU0U7CistCX0KKysgICAgICAgIGlmKGlucHV0W2ld ID09ICcgJyB8fAorKyAgICAgICAgICAgaW5wdXRbaV0gPT0gJ1x0JykKKysgICAgICAgIHsKKysg ICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGlmKCFpc2hleChpbnB1 dFtpXSkpCisrICAgICAgICB7CisrICAgICAgICAgICAgKmVuZF9vZl9jaHVua19zaXplID0gaTsK KysgICAgICAgICAgICByZXR1cm4gR0xPQlVTX0ZBTFNFOworKyAgICAgICAgfQorICAgICB9Cisg ICAgIHJldHVybiBHTE9CVVNfVFJVRTsKKyB9CitAQCAtNjExOCwyMSArNjExOCwyMSBAQCBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9jaHVua19zaXplKAorIAorIC8qCisgICogRnVu Y3Rpb246IGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9oYW5kbGVfY2h1bmsoKQorLSAqIAor KyAqCisgICogRGVzY3JpcHRpb246ICBQYXJzZSBhbnkgY2h1bmsgaGVhZGVyL2Zvb3RlciBpbmZv cm1hdGlvbiwgYW5kCisgICogICAgICAgICAgICAgICBjb3B5IGNodW5rIGRhdGEgKHdpdGggYXBw cm9wcmlhdGUgdGV4dC1tb2RlCisgICogICAgICAgICAgICAgICB0cmFuc2xhdGlvbnMpIGludG8g dGhlIHVzZXIncyBidWZmZXJzCistICogCistICogUGFyYW1ldGVyczogCistICogCistICogUmV0 dXJuczogCisrICoKKysgKiBQYXJhbWV0ZXJzOgorKyAqCisrICogUmV0dXJuczoKKyAgKi8KKyBz dGF0aWMKKyBnbG9idXNfYm9vbF90CisgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRwX2hhbmRs ZV9jaHVuaygKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0X3Byb3RvX3Qg KgkJcHJvdG8pCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190 ICogICAgICAgICBwcm90bykKKyB7CistICAgIGdsb2J1c19zaXplX3QJCQkJaTsKKysgICAgZ2xv YnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOworIAorICAgICBpZiAo IHByb3RvLT5yZXNwb25zZV9vZmZzZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCA9PSAwICkKKyAg ICAgeworQEAgLTYxNDUsMTYgKzYxNDUsMTYgQEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9odHRw X2hhbmRsZV9jaHVuaygKKyAgICAgICAgICAgICBzd2l0Y2gocHJvdG8tPnJlY3Zfc3RhdGUpCisg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9I VFRQX1JFQ1ZfU1RBVEVfVU5USUxfTEVOR1RIOgorLSAgCQlpZiAocHJvdG8tPmxlbmd0aCA9PSBw cm90by0+aGFuZGxlZCkKKy0JCXsKKy0JCSAgICBwcm90by0+cmVjdl9zdGF0ZSA9CistCQkJR0xP QlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VPRjsKKy0JCX0KKy0JCWVsc2UgCist CQl7CistCQkgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorLQkJCUdMT0JVU19HQVNTX1RSQU5TRkVS X0hUVFBfUkVDVl9TVEFURV9FUlJPUjsKKy0JCX0KKysgICAgICAgICAgICAgICAgaWYgKHByb3Rv LT5sZW5ndGggPT0gcHJvdG8tPmhhbmRsZWQpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAg ICAgICAgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgICAgICAg ICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GOworKyAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorKyAgICAgICAgICAgICAgICAgICAg ICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FUlJPUjsKKysgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgICAgICAgIGNh c2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0VPRjoKK0BAIC02 MTY0LDggKzYxNjQsOCBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfaGFuZGxlX2NodW5r KAorIAorICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgcHJvdG8tPmZh aWx1cmVfb2NjdXJyZWQgPSBHTE9CVVNfVFJVRTsKKy0JCXByb3RvLT5yZWN2X3N0YXRlID0KKy0J ICAgICAgICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SOwor KyAgICAgICAgICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9CisrICAgICAgICAgICAgICAgICAg ICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I7CisgICAgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICByZXR1cm4gR0xPQlVT X0ZBTFNFOworQEAgLTYxNzQsMjI5ICs2MTc0LDIyOSBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVy X2h0dHBfaGFuZGxlX2NodW5rKAorIAorICAgICB3aGlsZShwcm90by0+cmVzcG9uc2Vfb2Zmc2V0 IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQgPiAwKQorICAgICB7CistCXN3aXRjaChwcm90by0+cmVj dl9zdGF0ZSkKKy0JeworLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NU QVRFX0NIVU5LX1NJWkU6CistCSAgICBpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nh bl9jaHVua19zaXplKAorLQkJcHJvdG8tPnJlc3BvbnNlX2J1ZmZlciArIHByb3RvLT5wYXJzZWRf b2Zmc2V0LAorLQkJcHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHByb3RvLT5wYXJzZWRfb2Zmc2V0 LAorLQkJJmkpKQorLQkgICAgeworLQkJLyogdHJ1ZSA9PSBuZWVkIG1vcmUgZGF0YSAqLworLQkJ cmV0dXJuIEdMT0JVU19UUlVFOworLQkgICAgfQorLQkgICAgZWxzZSBpZihpID09IDApCistCSAg ICB7CistCQlwcm90by0+cmVjdl9zdGF0ZSA9CistCQkgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJf SFRUUF9SRUNWX1NUQVRFX0VSUk9SOworLQkJcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgPQorLQkJ ICAgIEdMT0JVU19UUlVFOworLQkJcmV0dXJuIEdMT0JVU19GQUxTRTsKKy0JICAgIH0KKy0KKy0J ICAgIHByb3RvLT5jaHVua19sZWZ0ID0gc3RydG91bCgoY2hhciAqKSBwcm90by0+cmVzcG9uc2Vf YnVmZmVyICsKKy0JCQkJCXByb3RvLT5wYXJzZWRfb2Zmc2V0LAorLQkJCQkJR0xPQlVTX05VTEws CistCQkJCQkxNik7CistCSAgICBwcm90by0+cGFyc2VkX29mZnNldCArPSBpOworLQkgICAgaWYo cHJvdG8tPmNodW5rX2xlZnQgPT0gMCkKKy0JICAgIHsKKy0JCS8qCistCQkgKiBsYXN0IGNodW5r IGNhbiBub3QgYmUgZm9sbG93ZWQgYnkgY2h1bmstZXh0IGVsZW1lbnRzLAorLQkJICogYnV0IG1h eSBiZSBmb2xsb3dlZCBieSBhIHNldCBvZiBmb290ZXJzCistCQkgKi8KKy0JCXByb3RvLT5yZWN2 X3N0YXRlID0KKy0JCSAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hV TktfRk9PVEVSOworLQkJYnJlYWs7CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7CistCQlw cm90by0+cmVjdl9zdGF0ZSA9CistCQkgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNW X1NUQVRFX0NIVU5LX0VYVDsKKy0JICAgIH0KKy0JICAgIC8qIEZBTExTVEhST1VHSCAqLworLQkg IGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0NIVU5LX0VYVDoKKy0J ICAgIGlmKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9zY2FuX2NodW5rX2V4dCgKKy0JCXBy b3RvLT5yZXNwb25zZV9idWZmZXIgKyBwcm90by0+cGFyc2VkX29mZnNldCwKKy0JCXByb3RvLT5y ZXNwb25zZV9vZmZzZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCwKKy0JCSZpKSkKKy0JICAgIHsK Ky0JCS8qIHRydWUgPT0gbmVlZCBtb3JlIGRhdGEgKi8KKy0JCXJldHVybiBHTE9CVVNfVFJVRTsK Ky0JICAgIH0KKy0JICAgIGVsc2UKKy0JICAgIHsKKy0JCXByb3RvLT5wYXJzZWRfb2Zmc2V0ICs9 IGk7CistCQlwcm90by0+cmVjdl9zdGF0ZSA9CistCQkgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJf SFRUUF9SRUNWX1NUQVRFX0NIVU5LX0VORF9IRUFERVJfQ1I7CistCQkvKiBGQUxMU1RIUk9VR0gg Ki8KKy0JICAgIH0KKy0JICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFU RV9DSFVOS19FTkRfSEVBREVSX0NSOgorLQkgICAgaWYocHJvdG8tPnJlc3BvbnNlX29mZnNldCAt IHByb3RvLT5wYXJzZWRfb2Zmc2V0ID4gMCkKKy0JICAgIHsKKy0JCWlmKHByb3RvLT5yZXNwb25z ZV9idWZmZXJbcHJvdG8tPnBhcnNlZF9vZmZzZXRdICE9IENSKQorLQkJeworLQkJICAgIHByb3Rv LT5wYXJzZV9lcnJvcj1HTE9CVVNfVFJVRTsKKy0JCSAgICBwcm90by0+ZmFpbHVyZV9vY2N1cnJl ZCA9IEdMT0JVU19UUlVFOworLQkJICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKy0JCQlHTE9CVVNf R0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I7CistCQkgICAgcmV0dXJuIEdMT0JV U19GQUxTRTsKKy0JCX0KKy0JCXByb3RvLT5yZWN2X3N0YXRlID0KKy0JCSAgICBHTE9CVVNfR0FT U19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hVTktfRU5EX0hFQURFUl9MRjsKKy0JCXByb3Rv LT5wYXJzZWRfb2Zmc2V0Kys7CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7CistCQlyZXR1 cm4gR0xPQlVTX1RSVUU7CistCSAgICB9CistCSAgICAvKiBGQUxMU1RIUk9VR0ggKi8KKy0JICBj YXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19FTkRfSEVBREVS X0xGOgorLQkgICAgaWYocHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHByb3RvLT5wYXJzZWRfb2Zm c2V0ID4gMCkKKy0JICAgIHsKKy0JCWlmKHByb3RvLT5yZXNwb25zZV9idWZmZXJbcHJvdG8tPnBh cnNlZF9vZmZzZXRdICE9IExGKQorLQkJeworLQkJICAgIHByb3RvLT5wYXJzZV9lcnJvcj1HTE9C VVNfVFJVRTsKKy0JCSAgICBwcm90by0+ZmFpbHVyZV9vY2N1cnJlZD1HTE9CVVNfVFJVRTsKKy0J CSAgICByZXR1cm4gR0xPQlVTX0ZBTFNFOworLQkJfQorLQkJcHJvdG8tPnJlY3Zfc3RhdGUgPQor LQkJICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19CT0RZOwor LQkJcHJvdG8tPnBhcnNlZF9vZmZzZXQrKzsKKy0JICAgIH0KKy0JICAgIGVsc2UKKy0JICAgIHsK Ky0JCXJldHVybiBHTE9CVVNfVFJVRTsKKy0JICAgIH0KKy0JICAgIC8qIEZBTExTVEhST1VHSCAq LworLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0NIVU5LX0JP RFk6CistCSAgICBpZihwcm90by0+Y2h1bmtfbGVmdCA9PSAwKQorLQkgICAgeworLQkJcHJvdG8t PnJlY3Zfc3RhdGUgPQorLQkJICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFU RV9DSFVOS19FTkRfQk9EWV9DUjsKKy0JICAgIH0KKy0JICAgIGVsc2UKKy0JICAgIHsKKy0JCWJy ZWFrOworLQkgICAgfQorLQkgICAgLyogRkFMTFNUSFJPVUdIICovCistCistCSAgY2FzZSBHTE9C VVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hVTktfRU5EX0JPRFlfQ1I6CistCSAg ICBpZihwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQgPiAwKQor LQkgICAgeworLQkJaWYocHJvdG8tPnJlc3BvbnNlX2J1ZmZlcltwcm90by0+cGFyc2VkX29mZnNl dF0gIT0gQ1IpCistCQl7CistCQkgICAgcHJvdG8tPnBhcnNlX2Vycm9yPUdMT0JVU19UUlVFOwor LQkJICAgIHByb3RvLT5mYWlsdXJlX29jY3VycmVkPUdMT0JVU19UUlVFOworLQkJICAgIHByb3Rv LT5yZWN2X3N0YXRlID0KKy0JCQlHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVf RVJST1I7CistCQkgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKy0JCX0KKy0JCXByb3RvLT5yZWN2 X3N0YXRlID0KKy0JCSAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hV TktfRU5EX0JPRFlfTEY7CistCQlwcm90by0+cGFyc2VkX29mZnNldCsrOworLQkgICAgfQorLQkg ICAgZWxzZQorLQkgICAgeworLQkJcmV0dXJuIEdMT0JVU19UUlVFOworLQkgICAgfQorLQkgICAg LyogRkFMTFNUSFJPVUdIICovCistCistCSAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQ X1JFQ1ZfU1RBVEVfQ0hVTktfRU5EX0JPRFlfTEY6CistCSAgICBpZihwcm90by0+cmVzcG9uc2Vf b2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQgPiAwKQorLQkgICAgeworLQkJaWYocHJvdG8t PnJlc3BvbnNlX2J1ZmZlcltwcm90by0+cGFyc2VkX29mZnNldF0gIT0gTEYpCistCQl7CistCQkg ICAgcHJvdG8tPnBhcnNlX2Vycm9yPUdMT0JVU19UUlVFOworLQkJICAgIHByb3RvLT5mYWlsdXJl X29jY3VycmVkPUdMT0JVU19UUlVFOworLQkJICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKy0JCQlH TE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I7CistCQkgICAgcmV0dXJu IEdMT0JVU19GQUxTRTsKKy0JCX0KKy0JCXByb3RvLT5yZWN2X3N0YXRlID0KKy0JCSAgICBHTE9C VVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hVTktfU0laRTsKKy0JCXByb3RvLT5w YXJzZWRfb2Zmc2V0Kys7CistCQlicmVhazsKKy0JICAgIH0KKy0JICAgIGVsc2UKKy0JICAgIHsK Ky0JCXJldHVybiBHTE9CVVNfVFJVRTsKKy0JICAgIH0KKy0JICBjYXNlIEdMT0JVU19HQVNTX1RS QU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19GT09URVI6CistCSAgICBpZihnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2h0dHBfcGFyc2VfaGVhZGVycyhwcm90bykpCistCSAgICB7CistCQkvKiBu ZWVkIG1vcmUgZGF0YSAqLworLQkJcmV0dXJuIEdMT0JVU19UUlVFOworLQkgICAgfQorLQkgICAg ZWxzZSBpZihwcm90by0+cGFyc2VfZXJyb3IpCistCSAgICB7CistCQlwcm90by0+ZmFpbHVyZV9v Y2N1cnJlZD1HTE9CVVNfVFJVRTsKKy0JCXByb3RvLT5yZWN2X3N0YXRlID0gCistCQkgICAgR0xP QlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SOworLQkJcmV0dXJuIEdMT0JV U19GQUxTRTsKKy0JICAgIH0KKy0JICAgIGVsc2UKKy0JICAgIHsKKy0JCXByb3RvLT5yZWN2X3N0 YXRlID0KKy0JCSAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GOwor LQkJcmV0dXJuIEdMT0JVU19GQUxTRTsKKy0JICAgIH0KKy0JICBjYXNlIEdMT0JVU19HQVNTX1RS QU5TRkVSX0hUVFBfUkVDVl9TVEFURV9VTlRJTF9FT0Y6CistCSAgY2FzZSBHTE9CVVNfR0FTU19U UkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfVU5USUxfTEVOR1RIOgorLQkgICAgYnJlYWs7CistCist CSAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I6CistCSAg Y2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GOgorLQkgICAgcmV0 dXJuIEdMT0JVU19GQUxTRTsKKy0JfQorLQorLQlpZihwcm90by0+cmVjdl9zdGF0ZSA9PQorLQkg ICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0xFTkdUSCB8 fAorLQkgICBwcm90by0+cmVjdl9zdGF0ZSA9PQorLQkgICAgICAgR0xPQlVTX0dBU1NfVFJBTlNG RVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0VPRiB8fAorLQkgICBwcm90by0+cmVjdl9zdGF0ZSA9 PQorLQkgICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0NIVU5LX0JP RFkpCistCXsKKy0JICAgIGlmKHByb3RvLT51c2VyX2J1ZmxlbiA+IHByb3RvLT51c2VyX29mZnNl dCAmJgorLQkgICAgICAgcHJvdG8tPnJlc3BvbnNlX29mZnNldCA+IHByb3RvLT5wYXJzZWRfb2Zm c2V0KQorLQkgICAgeworLQkJLyogc29tZSByb29tIGlzIGluIHRoZSB1c2VyJ3MgYnVmZmVyIGZv ciBuZXcgZGF0YSAqLworLQkJaWYocHJvdG8tPnRleHRfbW9kZSkKKy0JCXsKKy0JCSAgICBnbG9i dXNfbF9nYXNzX3RyYW5zZmVyX3VuYnVmZmVyX3RleHQocHJvdG8pOworLQkJfQorLQkJZWxzZQor LQkJeworLQkJICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfdW5idWZmZXJfYmluYXJ5KHByb3Rv KTsKKy0JCX0KKy0JCS8qIGNoZWNrIHRvIHNlZSBpZiB3ZSd2ZSBmYWlsZWQvY29tcGxldGVkIGJl Y2F1c2Ugb2YgdGhpcyAqLworLQkJaWYocHJvdG8tPnJlY3Zfc3RhdGUgPT0gR0xPQlVTX0dBU1Nf VFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0xFTkdUSCAmJgorLQkJICAgcHJvdG8tPmxl bmd0aCA9PSBwcm90by0+aGFuZGxlZCkKKy0JCXsKKy0JCSAgICBwcm90by0+cmVjdl9zdGF0ZSA9 CistCQkJR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VPRjsKKy0JCX0KKy0J CWVsc2UgaWYocHJvdG8tPnJlY3Zfc3RhdGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9S RUNWX1NUQVRFX1VOVElMX0xFTkdUSCAmJgorLQkJCXByb3RvLT5lb2ZfcmVhZCAmJgorLQkJCXBy b3RvLT5yZXNwb25zZV9vZmZzZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCA9PSAwKQorLQkJewor LQkJICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKy0JCQlHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQ X1JFQ1ZfU1RBVEVfRVJST1I7CistCQl9CistCQllbHNlIGlmKHByb3RvLT5yZWN2X3N0YXRlID09 IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9VTlRJTF9FT0YgJiYKKy0JCQlw cm90by0+ZW9mX3JlYWQgJiYKKy0JCQlwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBh cnNlZF9vZmZzZXQgPT0gMCkKKy0JCXsKKy0JCSAgICBwcm90by0+cmVjdl9zdGF0ZSA9CistCQkJ R0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VPRjsKKy0JCX0KKy0KKy0JICAg IH0KKy0JICAgIGVsc2UKKy0JICAgIHsKKy0JCXJldHVybiBHTE9CVVNfRkFMU0U7CistCSAgICB9 CistCX0KKysgICAgICAgIHN3aXRjaChwcm90by0+cmVjdl9zdGF0ZSkKKysgICAgICAgIHsKKysg ICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hVTktf U0laRToKKysgICAgICAgICAgICBpZihnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfc2Nhbl9j aHVua19zaXplKAorKyAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2VfYnVmZmVyICsgcHJv dG8tPnBhcnNlZF9vZmZzZXQsCisrICAgICAgICAgICAgICAgIHByb3RvLT5yZXNwb25zZV9vZmZz ZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCwKKysgICAgICAgICAgICAgICAgJmkpKQorKyAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgLyogdHJ1ZSA9PSBuZWVkIG1vcmUgZGF0YSAqLwor KyAgICAgICAgICAgICAgICByZXR1cm4gR0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIGVsc2UgaWYoaSA9PSAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dBU1Nf VFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SOworKyAgICAgICAgICAgICAgICBwcm90by0+ ZmFpbHVyZV9vY2N1cnJlZCA9CisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfVFJVRTsKKysg ICAgICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKysgICAgICAgICAgICB9CisrCisr ICAgICAgICAgICAgcHJvdG8tPmNodW5rX2xlZnQgPSBzdHJ0b3VsKChjaGFyICopIHByb3RvLT5y ZXNwb25zZV9idWZmZXIgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcm90by0+cGFyc2VkX29mZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX05VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDE2KTsKKysgICAgICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCArPSBpOworKyAg ICAgICAgICAgIGlmKHByb3RvLT5jaHVua19sZWZ0ID09IDApCisrICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAgICAgKiBsYXN0IGNodW5rIGNhbiBub3Qg YmUgZm9sbG93ZWQgYnkgY2h1bmstZXh0IGVsZW1lbnRzLAorKyAgICAgICAgICAgICAgICAgKiBi dXQgbWF5IGJlIGZvbGxvd2VkIGJ5IGEgc2V0IG9mIGZvb3RlcnMKKysgICAgICAgICAgICAgICAg ICovCisrICAgICAgICAgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAg ICAgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19GT09URVI7 CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBl bHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9 CisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RB VEVfQ0hVTktfRVhUOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICAvKiBGQUxMU1RIUk9V R0ggKi8KKysgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RB VEVfQ0hVTktfRVhUOgorKyAgICAgICAgICAgIGlmKGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9zY2FuX2NodW5rX2V4dCgKKysgICAgICAgICAgICAgICAgcHJvdG8tPnJlc3BvbnNlX2J1ZmZl ciArIHByb3RvLT5wYXJzZWRfb2Zmc2V0LAorKyAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9u c2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQsCisrICAgICAgICAgICAgICAgICZpKSkK KysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIC8qIHRydWUgPT0gbmVlZCBtb3JlIGRh dGEgKi8KKysgICAgICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19UUlVFOworKyAgICAgICAgICAg IH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBw cm90by0+cGFyc2VkX29mZnNldCArPSBpOworKyAgICAgICAgICAgICAgICBwcm90by0+cmVjdl9z dGF0ZSA9CisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JF Q1ZfU1RBVEVfQ0hVTktfRU5EX0hFQURFUl9DUjsKKysgICAgICAgICAgICAgICAgLyogRkFMTFNU SFJPVUdIICovCisrICAgICAgICAgICAgfQorKyAgICAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RS QU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19FTkRfSEVBREVSX0NSOgorKyAgICAgICAgICAg IGlmKHByb3RvLT5yZXNwb25zZV9vZmZzZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCA+IDApCisr ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZihwcm90by0+cmVzcG9uc2VfYnVmZmVy W3Byb3RvLT5wYXJzZWRfb2Zmc2V0XSAhPSBDUikKKysgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgcHJvdG8tPnBhcnNlX2Vycm9yPUdMT0JVU19UUlVFOworKyAgICAgICAg ICAgICAgICAgICAgcHJvdG8tPmZhaWx1cmVfb2NjdXJyZWQgPSBHTE9CVVNfVFJVRTsKKysgICAg ICAgICAgICAgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgICAg ICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I7CisrICAgICAg ICAgICAgICAgICAgICByZXR1cm4gR0xPQlVTX0ZBTFNFOworKyAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgICAg IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19FTkRfSEVBREVSX0xG OworKyAgICAgICAgICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCsrOworKyAgICAgICAgICAg IH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBy ZXR1cm4gR0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIC8qIEZBTExT VEhST1VHSCAqLworKyAgICAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVD Vl9TVEFURV9DSFVOS19FTkRfSEVBREVSX0xGOgorKyAgICAgICAgICAgIGlmKHByb3RvLT5yZXNw b25zZV9vZmZzZXQgLSBwcm90by0+cGFyc2VkX29mZnNldCA+IDApCisrICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICBpZihwcm90by0+cmVzcG9uc2VfYnVmZmVyW3Byb3RvLT5wYXJzZWRf b2Zmc2V0XSAhPSBMRikKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAg cHJvdG8tPnBhcnNlX2Vycm9yPUdMT0JVU19UUlVFOworKyAgICAgICAgICAgICAgICAgICAgcHJv dG8tPmZhaWx1cmVfb2NjdXJyZWQ9R0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gR0xPQlVTX0ZBTFNFOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAg IHByb3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19HQVNTX1RS QU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19CT0RZOworKyAgICAgICAgICAgICAgICBwcm90 by0+cGFyc2VkX29mZnNldCsrOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlCisr ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICByZXR1cm4gR0xPQlVTX1RSVUU7CisrICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIC8qIEZBTExTVEhST1VHSCAqLworKyAgICAgICAgICBj YXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19CT0RZOgorKyAg ICAgICAgICAgIGlmKHByb3RvLT5jaHVua19sZWZ0ID09IDApCisrICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9CisrICAgICAgICAgICAgICAgICAgICBH TE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hVTktfRU5EX0JPRFlfQ1I7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICAvKiBGQUxMU1RI Uk9VR0ggKi8KKysKKysgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JF Q1ZfU1RBVEVfQ0hVTktfRU5EX0JPRFlfQ1I6CisrICAgICAgICAgICAgaWYocHJvdG8tPnJlc3Bv bnNlX29mZnNldCAtIHByb3RvLT5wYXJzZWRfb2Zmc2V0ID4gMCkKKysgICAgICAgICAgICB7Cisr ICAgICAgICAgICAgICAgIGlmKHByb3RvLT5yZXNwb25zZV9idWZmZXJbcHJvdG8tPnBhcnNlZF9v ZmZzZXRdICE9IENSKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBw cm90by0+cGFyc2VfZXJyb3I9R0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgICAgICAgICBwcm90 by0+ZmFpbHVyZV9vY2N1cnJlZD1HTE9CVVNfVFJVRTsKKysgICAgICAgICAgICAgICAgICAgIHBy b3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0FTU19U UkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRVJST1I7CisrICAgICAgICAgICAgICAgICAgICByZXR1 cm4gR0xPQlVTX0ZBTFNFOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHBy b3RvLT5yZWN2X3N0YXRlID0KKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19HQVNTX1RSQU5T RkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19FTkRfQk9EWV9MRjsKKysgICAgICAgICAgICAgICAg cHJvdG8tPnBhcnNlZF9vZmZzZXQrKzsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxz ZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19UUlVFOwor KyAgICAgICAgICAgIH0KKysgICAgICAgICAgICAvKiBGQUxMU1RIUk9VR0ggKi8KKysKKysgICAg ICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfQ0hVTktfRU5E X0JPRFlfTEY6CisrICAgICAgICAgICAgaWYocHJvdG8tPnJlc3BvbnNlX29mZnNldCAtIHByb3Rv LT5wYXJzZWRfb2Zmc2V0ID4gMCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGlm KHByb3RvLT5yZXNwb25zZV9idWZmZXJbcHJvdG8tPnBhcnNlZF9vZmZzZXRdICE9IExGKQorKyAg ICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBwcm90by0+cGFyc2VfZXJyb3I9 R0xPQlVTX1RSVUU7CisrICAgICAgICAgICAgICAgICAgICBwcm90by0+ZmFpbHVyZV9vY2N1cnJl ZD1HTE9CVVNfVFJVRTsKKysgICAgICAgICAgICAgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0K KysgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1Zf U1RBVEVfRVJST1I7CisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xPQlVTX0ZBTFNFOwor KyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHByb3RvLT5yZWN2X3N0YXRlID0K KysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFU RV9DSFVOS19TSVpFOworKyAgICAgICAgICAgICAgICBwcm90by0+cGFyc2VkX29mZnNldCsrOwor KyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxz ZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19UUlVFOwor KyAgICAgICAgICAgIH0KKysgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQ X1JFQ1ZfU1RBVEVfQ0hVTktfRk9PVEVSOgorKyAgICAgICAgICAgIGlmKGdsb2J1c19sX2dhc3Nf dHJhbnNmZXJfaHR0cF9wYXJzZV9oZWFkZXJzKHByb3RvKSkKKysgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgIC8qIG5lZWQgbW9yZSBkYXRhICovCisrICAgICAgICAgICAgICAgIHJldHVy biBHTE9CVVNfVFJVRTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZihwcm90 by0+cGFyc2VfZXJyb3IpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBwcm90by0+ ZmFpbHVyZV9vY2N1cnJlZD1HTE9CVVNfVFJVRTsKKysgICAgICAgICAgICAgICAgcHJvdG8tPnJl Y3Zfc3RhdGUgPQorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRU UF9SRUNWX1NUQVRFX0VSUk9SOworKyAgICAgICAgICAgICAgICByZXR1cm4gR0xPQlVTX0ZBTFNF OworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9CisrICAgICAgICAgICAgICAgICAgICBH TE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfRU9GOworKyAgICAgICAgICAgICAg ICByZXR1cm4gR0xPQlVTX0ZBTFNFOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgY2FzZSBH TE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfVU5USUxfRU9GOgorKyAgICAgICAg ICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9VTlRJTF9MRU5HVEg6 CisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJB TlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VSUk9SOgorKyAgICAgICAgICBjYXNlIEdMT0JVU19HQVNT X1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FT0Y6CisrICAgICAgICAgICAgcmV0dXJuIEdMT0JV U19GQUxTRTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmKHByb3RvLT5yZWN2X3N0YXRlID09 CisrICAgICAgICAgICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX1VO VElMX0xFTkdUSCB8fAorKyAgICAgICAgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPT0KKysgICAgICAg ICAgICAgICBHTE9CVVNfR0FTU19UUkFOU0ZFUl9IVFRQX1JFQ1ZfU1RBVEVfVU5USUxfRU9GIHx8 CisrICAgICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9PQorKyAgICAgICAgICAgICAgIEdMT0JV U19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9DSFVOS19CT0RZKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGlmKHByb3RvLT51c2VyX2J1ZmxlbiA+IHByb3RvLT51c2VyX29mZnNldCAm JgorKyAgICAgICAgICAgICAgIHByb3RvLT5yZXNwb25zZV9vZmZzZXQgPiBwcm90by0+cGFyc2Vk X29mZnNldCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIC8qIHNvbWUgcm9vbSBp cyBpbiB0aGUgdXNlcidzIGJ1ZmZlciBmb3IgbmV3IGRhdGEgKi8KKysgICAgICAgICAgICAgICAg aWYocHJvdG8tPnRleHRfbW9kZSkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICAgICAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl91bmJ1ZmZlcl90ZXh0KHByb3RvKTsKKysgICAg ICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfdW5idWZmZXJfYmlu YXJ5KHByb3RvKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvKiBjaGVj ayB0byBzZWUgaWYgd2UndmUgZmFpbGVkL2NvbXBsZXRlZCBiZWNhdXNlIG9mIHRoaXMgKi8KKysg ICAgICAgICAgICAgICAgaWYocHJvdG8tPnJlY3Zfc3RhdGUgPT0gR0xPQlVTX0dBU1NfVFJBTlNG RVJfSFRUUF9SRUNWX1NUQVRFX1VOVElMX0xFTkdUSCAmJgorKyAgICAgICAgICAgICAgICAgICBw cm90by0+bGVuZ3RoID09IHByb3RvLT5oYW5kbGVkKQorKyAgICAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgICAgICBwcm90by0+cmVjdl9zdGF0ZSA9CisrICAgICAgICAgICAgICAgICAg ICAgICAgR0xPQlVTX0dBU1NfVFJBTlNGRVJfSFRUUF9SRUNWX1NUQVRFX0VPRjsKKysgICAgICAg ICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIGlmKHByb3RvLT5yZWN2X3N0YXRlID09 IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9VTlRJTF9MRU5HVEggJiYKKysg ICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+ZW9mX3JlYWQgJiYKKysgICAgICAgICAgICAg ICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vfb2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQg PT0gMCkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJl Y3Zfc3RhdGUgPQorKyAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVS X0hUVFBfUkVDVl9TVEFURV9FUlJPUjsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICBlbHNlIGlmKHByb3RvLT5yZWN2X3N0YXRlID09IEdMT0JVU19HQVNTX1RSQU5TRkVSX0hU VFBfUkVDVl9TVEFURV9VTlRJTF9FT0YgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICBwcm90 by0+ZW9mX3JlYWQgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICBwcm90by0+cmVzcG9uc2Vf b2Zmc2V0IC0gcHJvdG8tPnBhcnNlZF9vZmZzZXQgPT0gMCkKKysgICAgICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICAgICAgcHJvdG8tPnJlY3Zfc3RhdGUgPQorKyAgICAgICAgICAgICAg ICAgICAgICAgIEdMT0JVU19HQVNTX1RSQU5TRkVSX0hUVFBfUkVDVl9TVEFURV9FT0Y7CisrICAg ICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZQorKyAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsKKysgICAg ICAgICAgICB9CisrICAgICAgICB9CisgICAgIH0KKyAgICAgcmV0dXJuIEdMT0JVU19GQUxTRTsK KyB9CitAQCAtNjQwNSwzNyArNjQwNSwzNyBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBf aGFuZGxlX2NodW5rKAorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0 dHBfZXh0cmFjdF9yZWZlcnJhbCgKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1 ZXN0X3Byb3RvX3QgKgkJcHJvdG8sCistICAgIGNoYXIgKioqCQkJCQkJcmVmZXJyYWwsCistICAg IGdsb2J1c19zaXplX3QgKgkJCQkJcmVmZXJyYWxfY291bnQpCisrICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX2h0dHBfcmVxdWVzdF9wcm90b190ICogICAgICAgICBwcm90bywKKysgICAgY2hhciAq KiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVycmFsLAor KyAgICBnbG9idXNfc2l6ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVmZXJyYWxfY291bnQpCisgeworLSAgICBjaGFyICoJCQkJbG9jYXRpb247CistICAgIGNoYXIg KgkJCQlwOworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlv bjsKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDsKKyAKKyAgICAg bG9jYXRpb24gPSBnbG9idXNfaV9nYXNzX3RyYW5zZmVyX2tleXZhbHVlX2xvb2t1cCgKKy0JJnBy b3RvLT5oZWFkZXJzLAorLQkibG9jYXRpb24iKTsKKysgICAgICAgICZwcm90by0+aGVhZGVycywK KysgICAgICAgICJsb2NhdGlvbiIpOworICAgICBpZihsb2NhdGlvbiA9PSBHTE9CVVNfTlVMTCkK KyAgICAgeworLQkqcmVmZXJyYWwgPSBHTE9CVVNfTlVMTDsKKy0JKnJlZmVycmFsX2NvdW50ID0g MDsKKysgICAgICAgICpyZWZlcnJhbCA9IEdMT0JVU19OVUxMOworKyAgICAgICAgKnJlZmVycmFs X2NvdW50ID0gMDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JcCA9IGxvY2F0aW9uOwor KyAgICAgICAgcCA9IGxvY2F0aW9uOworIAorLQlmb3IocD1sb2NhdGlvbjsgKnAgIT0gJ1wwJzsg cCsrKQorLQl7CistCSAgICBpZighaXNzcGFjZSgqcCkpCistCSAgICB7CistCQlicmVhazsKKy0J ICAgIH0KKy0JfQorKyAgICAgICAgZm9yKHA9bG9jYXRpb247ICpwICE9ICdcMCc7IHArKykKKysg ICAgICAgIHsKKysgICAgICAgICAgICBpZighaXNzcGFjZSgqcCkpCisrICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisgCist CSpyZWZlcnJhbCA9IChjaGFyICoqKSBnbG9idXNfbWFsbG9jKHNpemVvZihjaGFyICopKTsKKy0J KCpyZWZlcnJhbClbMF0gPSBnbG9idXNfbGliY19zdHJkdXAocCk7CisrICAgICAgICAqcmVmZXJy YWwgPSAoY2hhciAqKikgZ2xvYnVzX21hbGxvYyhzaXplb2YoY2hhciAqKSk7CisrICAgICAgICAo KnJlZmVycmFsKVswXSA9IGdsb2J1c19saWJjX3N0cmR1cChwKTsKKyAKKy0JKnJlZmVycmFsX2Nv dW50ID0gMTsKKysgICAgICAgICpyZWZlcnJhbF9jb3VudCA9IDE7CisgICAgIH0KKyAgICAgcmV0 dXJuOworIH0KK0BAIC02NDYyLDE3ICs2NDYyLDE3IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJf aHR0cF9hY2NlcHRfZmFpbGVkX2tpY2tvdXQoCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dh c3NfdHJhbnNmZXJfaHR0cF9jYWxsYmFja19kZW5pZWQoCistICAgIHZvaWQgKgkJCQkJYXJnKQor KyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZykKKyB7 CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdDsKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0OworIAorICAg ICByZXF1ZXN0ID0gKGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCkgKGludHB0cl90KSBh cmc7CistICAgIAorKworICAgICBkZWJ1Z19wcmludGYoMiwgKF9HVFNMKCJjYWxsaW5nIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3Byb3RvX3JlcXVlc3RfZGVuaWVkIikpKTsKKyAgICAgZ2xvYnVzX2dh c3NfdHJhbnNmZXJfcHJvdG9fcmVxdWVzdF9kZW5pZWQoCistCXJlcXVlc3QsCistCUdMT0JVU19M X0RFRkFVTFRfRkFJTFVSRV9DT0RFLAorLQlnbG9idXNfbGliY19zdHJkdXAoR0xPQlVTX0xfREVG QVVMVF9GQUlMVVJFX1JFQVNPTikpOworKyAgICAgICAgcmVxdWVzdCwKKysgICAgICAgIEdMT0JV U19MX0RFRkFVTFRfRkFJTFVSRV9DT0RFLAorKyAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKEdM T0JVU19MX0RFRkFVTFRfRkFJTFVSRV9SRUFTT04pKTsKKyB9CisgI2VuZGlmIC8qICFHTE9CVVNf R0FTU19UUkFOU0ZFUl9IVFRQX1BBUlNFUl9URVNUICovCisgI2VuZGlmIC8qIEdMT0JVU19ET05U X0RPQ1VNRU5UX0lOVEVSTkFMICovCitkaWZmIC0tZ2l0IGEvZ2Fzcy90cmFuc2Zlci9zb3VyY2Uv bGlicmFyeS9nbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0LmMgYi9nYXNzL3RyYW5zZmVyL3Nv dXJjZS9saWJyYXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3QuYworaW5kZXggZDAyNWRk ZTlkLi5lYjIxZmJiOTggMTAwNjQ0CistLS0gYS9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5 L2dsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3QuYworKysrIGIvZ2Fzcy90cmFuc2Zlci9zb3Vy Y2UvbGlicmFyeS9nbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0LmMKK0BAIC0yMCw3ICsyMCw3 IEBACisgICogQGJyaWVmIEdBU1MgVHJhbnNmZXIgUmVxdWVzdAorICAqCisgICogVGhpcyBtb2R1 bGUgaW1wbGVtZW50cyB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgYWNjZXNzb3JzIGZvciB0aGUKKy0g KiBHQVNTIHRyYW5zZmVyIGxpYnJhcnkgCisrICogR0FTUyB0cmFuc2ZlciBsaWJyYXJ5CisgICov CisgI2VuZGlmCisgCitAQCAtNDEsMjAgKzQxLDIwIEBACisgICovCisgZ2xvYnVzX2dhc3NfdHJh bnNmZXJfcmVxdWVzdF90eXBlX3QKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF90 eXBlKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QpCisrICAg IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCkKKyB7 CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc3RydWN0X3QgKglyZXE7CisrICAg IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc3RydWN0X3QgKiAgICAgcmVxOworIAorICAg ICByZXEgPQorLQlnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgmZ2xvYnVzX2lfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCistCQkJCSAgIHJlcXVlc3QpOworKyAgICAgICAgZ2xvYnVz X2hhbmRsZV90YWJsZV9sb29rdXAoJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9oYW5k bGVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCk7CisgICAg IGlmKHJlcSA9PSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQlyZXR1cm4gR0xPQlVTX0dBU1NfVFJB TlNGRVJfUkVRVUVTVF9UWVBFX0lOVkFMSUQ7CisrICAgICAgICByZXR1cm4gR0xPQlVTX0dBU1Nf VFJBTlNGRVJfUkVRVUVTVF9UWVBFX0lOVkFMSUQ7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7 CistCXJldHVybiByZXEtPnR5cGU7CisrICAgICAgICByZXR1cm4gcmVxLT50eXBlOworICAgICB9 CisgfQorIC8qIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X3R5cGUoKSAqLworQEAg LTc1LDIxICs3NSwyMSBAQCBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF90eXBlKAor ICAqLworIHZvaWQgKgorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X3VzZXJfcG9p bnRlcigKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0KQorKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QpCisg eworLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICoJcmVxOworKyAg ICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICogICAgIHJlcTsKKyAKKyAg ICAgcmVxID0KKy0JZ2xvYnVzX2hhbmRsZV90YWJsZV9sb29rdXAoJmdsb2J1c19pX2dhc3NfdHJh bnNmZXJfcmVxdWVzdF9oYW5kbGVzLAorLQkJCQkgICByZXF1ZXN0KTsKKysgICAgICAgIGdsb2J1 c19oYW5kbGVfdGFibGVfbG9va3VwKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFu ZGxlcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpOworICAg ICBpZihyZXEgPT0gR0xPQlVTX05VTEx8fAorICAgICAgICByZXEtPnR5cGUgPT0gR0xPQlVTX0dB U1NfVFJBTlNGRVJfUkVRVUVTVF9UWVBFX0lOVkFMSUQpCisgICAgIHsKKy0JcmV0dXJuIEdMT0JV U19OVUxMOworKyAgICAgICAgcmV0dXJuIEdMT0JVU19OVUxMOworICAgICB9CisgICAgIGVsc2UK KyAgICAgeworLQlyZXR1cm4gcmVxLT51c2VyX3BvaW50ZXI7CisrICAgICAgICByZXR1cm4gcmVx LT51c2VyX3BvaW50ZXI7CisgICAgIH0KKyB9CisgLyogZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF9nZXRfdXNlcl9wb2ludGVyKCkgKi8KK0BAIC0xMTUsMjIgKzExNSwyMiBAQCBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF91c2VyX3BvaW50ZXIoCisgICovCisgaW50CisgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zZXRfdXNlcl9wb2ludGVyKAorLSAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QsCistICAgIHZvaWQgKgkJCQkJdXNlcl9w b2ludGVyKQorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAg IHJlcXVlc3QsCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdXNlcl9wb2ludGVyKQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9z dHJ1Y3RfdCAqCXJlcTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zdHJ1Y3Rf dCAqICAgICByZXE7CisgCisgICAgIHJlcSA9CistCWdsb2J1c19oYW5kbGVfdGFibGVfbG9va3Vw KCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKy0JCQkJICAgcmVxdWVz dCk7CisrICAgICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgmZ2xvYnVzX2lfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXF1ZXN0KTsKKyAgICAgaWYocmVxID09IEdMT0JVU19OVUxMKQorICAgICB7CistCXJl dHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9FUlJPUl9JTlZBTElEX1VTRTsKKysgICAgICAgIHJl dHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9FUlJPUl9JTlZBTElEX1VTRTsKKyAgICAgfQorICAg ICBlbHNlCisgICAgIHsKKy0JcmVxLT51c2VyX3BvaW50ZXIgPSB1c2VyX3BvaW50ZXI7CistCXJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKysgICAgICAgIHJlcS0+dXNlcl9wb2ludGVyID0gdXNlcl9w b2ludGVyOworKyAgICAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworICAgICB9CisgfQorIC8q IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc2V0X3VzZXJfcG9pbnRlcigpICovCitAQCAt MTUzLDQ2ICsxNTMsNDYgQEAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zZXRfdXNlcl9w b2ludGVyKAorICAqLworIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc3RhdHVzX3QKKyBn bG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF9zdGF0dXMoCistICAgIGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCkKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJh bnNmZXJfcmVxdWVzdF9zdHJ1Y3RfdCAqCXJlcTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdF9zdHJ1Y3RfdCAqICAgICByZXE7CisgCisgICAgIHJlcSA9CistCWdsb2J1c19oYW5k bGVfdGFibGVfbG9va3VwKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywK Ky0JCQkJICAgcmVxdWVzdCk7CisrICAgICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgm Z2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KTsKKyAgICAgaWYocmVxICE9IEdMT0JVU19OVUxM KQorICAgICB7CistCXN3aXRjaChyZXEtPnN0YXR1cykKKy0JeworLQkgIGNhc2UgR0xPQlVTX0dB U1NfVFJBTlNGRVJfUkVRVUVTVF9TVEFSVElORzM6CistCSAgY2FzZSBHTE9CVVNfR0FTU19UUkFO U0ZFUl9SRVFVRVNUX1BFTkRJTkc6CistCSAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFV RVNUX0FDVElORzoKKy0JICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfQUNUSU5H X1RPX1BFTkRJTkc6CistCSAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0FDQ0VQ VElORzoKKy0JICAgIHJldHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1BFTkRJTkc7 CistCSAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0FDVElOR19UT19GQUlMSU5H OgorLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9GQUlMSU5HOgorLQkgIGNh c2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9GQUlMRUQ6CistCSAgY2FzZSBHTE9CVVNf R0FTU19UUkFOU0ZFUl9SRVFVRVNUX1NFUlZFUl9GQUlMMToKKy0JICBjYXNlIEdMT0JVU19HQVNT X1RSQU5TRkVSX1JFUVVFU1RfU0VSVkVSX0ZBSUwyOgorLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJB TlNGRVJfUkVRVUVTVF9TRVJWRVJfRkFJTDM6CistCSAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZF Ul9SRVFVRVNUX1VTRVJfRkFJTDoKKy0JICAgIHJldHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9S RVFVRVNUX0ZBSUxFRDsKKy0JICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfRklO SVNISU5HOgorLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9ET05FOgorLQkg ICAgcmV0dXJuIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfRE9ORTsKKy0JICBjYXNlIEdM T0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfU1RBUlRJTkc6CistCSAgY2FzZSBHTE9CVVNfR0FT U19UUkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HMjoKKy0JICAgIHJldHVybiBHTE9CVVNfR0FTU19U UkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HOworLQkgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNGRVJf UkVRVUVTVF9SRUZFUlJFRDoKKy0JICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1Rf QUNUSU5HX1RPX1JFRkVSUklORzoKKy0JICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVF U1RfUkVGRVJSSU5HOgorLQkgICAgcmV0dXJuIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1Rf UkVGRVJSRUQ7CistCSAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0RFTklFRDoK Ky0JICAgIHJldHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0RFTklFRDsKKy0JICBj YXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfSU5WQUxJRDoKKy0JICAgIHJldHVybiBH TE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0lOVkFMSUQ7CistCX0KKysgICAgICAgIHN3aXRj aChyZXEtPnN0YXR1cykKKysgICAgICAgIHsKKysgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19U UkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HMzoKKysgICAgICAgICAgY2FzZSBHTE9CVVNfR0FTU19U UkFOU0ZFUl9SRVFVRVNUX1BFTkRJTkc6CisrICAgICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJB TlNGRVJfUkVRVUVTVF9BQ1RJTkc6CisrICAgICAgICAgIGNhc2UgR0xPQlVTX0dBU1NfVFJBTlNG RVJfUkVRVUVTVF9BQ1RJTkdfVE9fUEVORElORzoKKysgICAgICAgICAgY2FzZSBHTE9CVVNfR0FT U19UUkFOU0ZFUl9SRVFVRVNUX0FDQ0VQVElORzoKKysgICAgICAgICAgICByZXR1cm4gR0xPQlVT X0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9QRU5ESU5HOworKyAgICAgICAgICBjYXNlIEdMT0JVU19H QVNTX1RSQU5TRkVSX1JFUVVFU1RfQUNUSU5HX1RPX0ZBSUxJTkc6CisrICAgICAgICAgIGNhc2Ug R0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9GQUlMSU5HOgorKyAgICAgICAgICBjYXNlIEdM T0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfRkFJTEVEOgorKyAgICAgICAgICBjYXNlIEdMT0JV U19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfU0VSVkVSX0ZBSUwxOgorKyAgICAgICAgICBjYXNlIEdM T0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfU0VSVkVSX0ZBSUwyOgorKyAgICAgICAgICBjYXNl IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfU0VSVkVSX0ZBSUwzOgorKyAgICAgICAgICBj YXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfVVNFUl9GQUlMOgorKyAgICAgICAgICAg IHJldHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0ZBSUxFRDsKKysgICAgICAgICAg Y2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0ZJTklTSElORzoKKysgICAgICAgICAg Y2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0RPTkU6CisrICAgICAgICAgICAgcmV0 dXJuIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfRE9ORTsKKysgICAgICAgICAgY2FzZSBH TE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HOgorKyAgICAgICAgICBjYXNlIEdM T0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfU1RBUlRJTkcyOgorKyAgICAgICAgICAgIHJldHVy biBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HOworKyAgICAgICAgICBjYXNl IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfUkVGRVJSRUQ6CisrICAgICAgICAgIGNhc2Ug R0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9BQ1RJTkdfVE9fUkVGRVJSSU5HOgorKyAgICAg ICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfUkVGRVJSSU5HOgorKyAgICAg ICAgICAgIHJldHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1JFRkVSUkVEOworKyAg ICAgICAgICBjYXNlIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfREVOSUVEOgorKyAgICAg ICAgICAgIHJldHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0RFTklFRDsKKysgICAg ICAgICAgY2FzZSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX0lOVkFMSUQ6CisrICAgICAg ICAgICAgcmV0dXJuIEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfSU5WQUxJRDsKKysgICAg ICAgIH0KKyAgICAgfQorICAgICByZXR1cm4gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9J TlZBTElEOworIH0KK0BAIC0yMjQsNDUgKzIyNCw0NSBAQCBnbG9idXNfZ2Fzc190cmFuc2Zlcl9y ZXF1ZXN0X2dldF9zdGF0dXMoCisgICovCisgaW50CisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF9nZXRfcmVmZXJyYWwoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJ cmVxdWVzdCwKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVmZXJyYWxfdCAqCQlyZWZlcnJh bCkKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1 ZXN0LAorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZWZlcnJhbF90ICogICAgICAgICAgIHJl ZmVycmFsKQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zdHJ1Y3RfdCAq CXJlcTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zdHJ1Y3RfdCAqICAgICBy ZXE7CisgCisgICAgIC8qIFNhbml0eSBjaGVjayBvZiBhcmd1bWVudHMgKi8KKyAgICAgaWYocmVm ZXJyYWwgPT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JcmV0dXJuIEdMT0JVU19HQVNTX1RSQU5T RkVSX0VSUk9SX05VTExfUE9JTlRFUjsKKysgICAgICAgIHJldHVybiBHTE9CVVNfR0FTU19UUkFO U0ZFUl9FUlJPUl9OVUxMX1BPSU5URVI7CisgICAgIH0KKyAgICAgLyogQ2hlY2sgZm9yIGlsbGVn YWwgaGFuZGxlICovCisgICAgIHJlcSA9CistCWdsb2J1c19oYW5kbGVfdGFibGVfbG9va3VwKCZn bG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKy0JCQkJICAgcmVxdWVzdCk7 CisrICAgICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgmZ2xvYnVzX2lfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXF1ZXN0KTsKKyAgICAgaWYocmVxID09IEdMT0JVU19OVUxMKQorICAgICB7CistCXJldHVy biBHTE9CVVNfR0FTU19UUkFOU0ZFUl9FUlJPUl9JTlZBTElEX1VTRTsKKysgICAgICAgIHJldHVy biBHTE9CVVNfR0FTU19UUkFOU0ZFUl9FUlJPUl9JTlZBTElEX1VTRTsKKyAgICAgfQorICAgICBl bHNlIGlmKHJlcS0+cmVmZXJyYWxfY291bnQgPT0gMCkKKyAgICAgeworLQlyZWZlcnJhbC0+dXJs ID0gR0xPQlVTX05VTEw7CistCXJlZmVycmFsLT5jb3VudCA9IDA7CisrICAgICAgICByZWZlcnJh bC0+dXJsID0gR0xPQlVTX05VTEw7CisrICAgICAgICByZWZlcnJhbC0+Y291bnQgPSAwOworIAor LQlyZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisrICAgICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7 CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistCWdsb2J1c19zaXplX3QJCQkJaTsKKysgICAg ICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICBpOworIAorLQlyZWZl cnJhbC0+dXJsID0KKy0JICAgIGdsb2J1c19tYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiByZXEtPnJl ZmVycmFsX2NvdW50KTsKKysgICAgICAgIHJlZmVycmFsLT51cmwgPQorKyAgICAgICAgICAgIGds b2J1c19tYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiByZXEtPnJlZmVycmFsX2NvdW50KTsKKyAKKy0J Zm9yKGkgPSAwOyBpIDwgcmVxLT5yZWZlcnJhbF9jb3VudDsgaSsrKQorLQl7CistCSAgICByZWZl cnJhbC0+dXJsW2ldID0gZ2xvYnVzX2xpYmNfc3RyZHVwKHJlcS0+cmVmZXJyYWxfdXJsW2ldKTsK Ky0JfQorLQlyZWZlcnJhbC0+Y291bnQgPSByZXEtPnJlZmVycmFsX2NvdW50OworKyAgICAgICAg Zm9yKGkgPSAwOyBpIDwgcmVxLT5yZWZlcnJhbF9jb3VudDsgaSsrKQorKyAgICAgICAgeworKyAg ICAgICAgICAgIHJlZmVycmFsLT51cmxbaV0gPSBnbG9idXNfbGliY19zdHJkdXAocmVxLT5yZWZl cnJhbF91cmxbaV0pOworKyAgICAgICAgfQorKyAgICAgICAgcmVmZXJyYWwtPmNvdW50ID0gcmVx LT5yZWZlcnJhbF9jb3VudDsKKyAKKy0JcmV0dXJuIEdMT0JVU19TVUNDRVNTOworKyAgICAgICAg cmV0dXJuIEdMT0JVU19TVUNDRVNTOworICAgICB9CisgfQorIC8qIGdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlcXVlc3RfZ2V0X3JlZmVycmFsKCkgKi8KK0BAIC0yODUsMjAgKzI4NSwyMCBAQCBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF9yZWZlcnJhbCgKKyAgKi8KKyBjaGFyICoKKyBn bG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF91cmwoCistICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCkKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfcmVxdWVzdF9zdHJ1Y3RfdCAqCXJlcTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF9zdHJ1Y3RfdCAqICAgICByZXE7CisgCisgICAgIHJlcSA9CistCWdsb2J1c19oYW5kbGVf dGFibGVfbG9va3VwKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKy0J CQkJICAgcmVxdWVzdCk7CisrICAgICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgmZ2xv YnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXF1ZXN0KTsKKyAgICAgaWYocmVxID09IEdMT0JVU19OVUxMKQor ICAgICB7CistCXJldHVybiBHTE9CVVNfTlVMTDsKKysgICAgICAgIHJldHVybiBHTE9CVVNfTlVM TDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JcmV0dXJuIHJlcS0+dXJsOworKyAgICAg ICAgcmV0dXJuIHJlcS0+dXJsOworICAgICB9CisgfQorIC8qIGdsb2J1c19nYXNzX3RyYW5zZmVy X3JlcXVlc3RfZ2V0X3VybCgpICovCitAQCAtMzIwLDIwICszMjAsMjAgQEAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF9nZXRfdXJsKAorICAqLworIGdsb2J1c19zaXplX3QKKyBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF9sZW5ndGgoCistICAgIGdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCkKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVz dF90ICAgICAgICAgICAgICByZXF1ZXN0KQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdF9zdHJ1Y3RfdCAqCXJlcTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVz dF9zdHJ1Y3RfdCAqICAgICByZXE7CisgCisgICAgIHJlcSA9CistCWdsb2J1c19oYW5kbGVfdGFi bGVfbG9va3VwKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKy0JCQkJ ICAgcmVxdWVzdCk7CisrICAgICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgmZ2xvYnVz X2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXF1ZXN0KTsKKyAgICAgaWYocmVxID09IEdMT0JVU19OVUxMKQorICAg ICB7CistCXJldHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9MRU5HVEhfVU5LTk9XTjsKKysgICAg ICAgIHJldHVybiBHTE9CVVNfR0FTU19UUkFOU0ZFUl9MRU5HVEhfVU5LTk9XTjsKKyAgICAgfQor ICAgICBlbHNlCisgICAgIHsKKy0JcmV0dXJuIHJlcS0+bGVuZ3RoOworKyAgICAgICAgcmV0dXJu IHJlcS0+bGVuZ3RoOworICAgICB9CisgfQorIAorQEAgLTM2MSwyMyArMzYxLDIzIEBAIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X2xlbmd0aCgKKyAgKi8KKyBpbnQKKyBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3NldF90eXBlKAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zl cl9yZXF1ZXN0X3QJCXJlcXVlc3QsCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rf dHlwZV90CQl0eXBlKQorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAg ICAgICAgIHJlcXVlc3QsCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdHlwZV90 ICAgICAgICAgdHlwZSkKKyB7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc3Ry dWN0X3QgKglyZXE7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc3RydWN0X3Qg KiAgICAgcmVxOworIAorICAgICByZXEgPQorLQlnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgm Z2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCistCQkJCSAgIHJlcXVlc3Qp OworKyAgICAgICAgZ2xvYnVzX2hhbmRsZV90YWJsZV9sb29rdXAoJmdsb2J1c19pX2dhc3NfdHJh bnNmZXJfcmVxdWVzdF9oYW5kbGVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVxdWVzdCk7CisgICAgIGlmKHJlcSA9PSBHTE9CVVNfTlVMTHx8CisgICAgICAgIHJlcS0+ dHlwZSAhPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9SRVFVRVNUX1RZUEVfSU5WQUxJRCkKKyAgICAg eworLQlyZXR1cm4gR0xPQlVTX0dBU1NfVFJBTlNGRVJfRVJST1JfSU5WQUxJRF9VU0U7CisrICAg ICAgICByZXR1cm4gR0xPQlVTX0dBU1NfVFJBTlNGRVJfRVJST1JfSU5WQUxJRF9VU0U7CisgICAg IH0KKyAgICAgZWxzZQorICAgICB7CistCXJlcS0+dHlwZSA9IHR5cGU7CistCXJldHVybiBHTE9C VVNfU1VDQ0VTUzsKKysgICAgICAgIHJlcS0+dHlwZSA9IHR5cGU7CisrICAgICAgICByZXR1cm4g R0xPQlVTX1NVQ0NFU1M7CisgICAgIH0KKyB9CisgLyogZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF9zZXRfdHlwZSgpICovCitAQCAtNDEwLDIzICs0MTAsMjMgQEAgZ2xvYnVzX2dhc3NfdHJh bnNmZXJfcmVxdWVzdF9zZXRfdHlwZSgKKyAgKi8KKyBpbnQKKyBnbG9idXNfZ2Fzc190cmFuc2Zl cl9yZXF1ZXN0X3NldF91cmwoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJ cmVxdWVzdCwKKy0gICAgY2hhciAqCQkJCQl1cmwpCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVy X3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCwKKysgICAgY2hhciAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwpCisgeworLSAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICoJcmVxOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9y ZXF1ZXN0X3N0cnVjdF90ICogICAgIHJlcTsKKyAKKyAgICAgcmVxID0KKy0JZ2xvYnVzX2hhbmRs ZV90YWJsZV9sb29rdXAoJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9oYW5kbGVzLAor LQkJCQkgICByZXF1ZXN0KTsKKysgICAgICAgIGdsb2J1c19oYW5kbGVfdGFibGVfbG9va3VwKCZn bG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpOworICAgICBpZihyZXEgPT0gR0xPQlVTX05VTEwg fHwKKyAgICAgICAgcmVxLT51cmwgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JcmV0dXJuIEdM T0JVU19HQVNTX1RSQU5TRkVSX0VSUk9SX0lOVkFMSURfVVNFOworKyAgICAgICAgcmV0dXJuIEdM T0JVU19HQVNTX1RSQU5TRkVSX0VSUk9SX0lOVkFMSURfVVNFOworICAgICB9CisgICAgIGVsc2UK KyAgICAgeworLQlyZXEtPnVybCA9IHVybDsKKy0JcmV0dXJuIEdMT0JVU19TVUNDRVNTOworKyAg ICAgICAgcmVxLT51cmwgPSB1cmw7CisrICAgICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7Cisg ICAgIH0KKyB9CisgCitAQCAtNDUzLDIxICs0NTMsMjEgQEAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdF9zZXRfdXJsKAorICAqLworIHZvaWQKKyBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1 ZXN0X3NldF9sZW5ndGgoCistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVx dWVzdCwKKy0gICAgZ2xvYnVzX3NpemVfdAkJCQlsZW5ndGgpCisrICAgIGdsb2J1c19nYXNzX3Ry YW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCwKKysgICAgZ2xvYnVzX3NpemVf dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpCisgeworLSAgICBnbG9idXNf Z2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICoJcmVxOworKyAgICBnbG9idXNfZ2Fzc190 cmFuc2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICogICAgIHJlcTsKKyAKKyAgICAgcmVxID0KKy0JZ2xv YnVzX2hhbmRsZV90YWJsZV9sb29rdXAoJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9o YW5kbGVzLAorLQkJCQkgICByZXF1ZXN0KTsKKysgICAgICAgIGdsb2J1c19oYW5kbGVfdGFibGVf bG9va3VwKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpOworICAgICBpZihyZXEgPT0gR0xP QlVTX05VTEwpCisgICAgIHsKKy0JcmV0dXJuIDsKKysgICAgICAgIHJldHVybiA7CisgICAgIH0K KyAgICAgZWxzZQorICAgICB7CistCXJlcS0+bGVuZ3RoID0gbGVuZ3RoOworKyAgICAgICAgcmVx LT5sZW5ndGggPSBsZW5ndGg7CisgICAgIH0KKyB9CisgLyogZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdF9zZXRfbGVuZ3RoKCkgKi8KK0BAIC00OTEsMjAgKzQ5MSwyMCBAQCBnbG9idXNfZ2Fz c190cmFuc2Zlcl9yZXF1ZXN0X3NldF9sZW5ndGgoCisgICovCisgaW50CisgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF9nZXRfZGVuaWFsX3JlYXNvbigKKy0gICAgZ2xvYnVzX2dhc3NfdHJh bnNmZXJfcmVxdWVzdF90IAkJcmVxdWVzdCkKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfcmVxdWVzdF9zdHJ1Y3RfdCAqCXJlcTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVx dWVzdF9zdHJ1Y3RfdCAqICAgICByZXE7CisgCisgICAgIHJlcSA9CistCWdsb2J1c19oYW5kbGVf dGFibGVfbG9va3VwKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKy0J CQkJICAgcmVxdWVzdCk7CisrICAgICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgmZ2xv YnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXF1ZXN0KTsKKyAgICAgaWYocmVxID09IEdMT0JVU19OVUxMKQor ICAgICB7CistCXJldHVybiAwOworKyAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAgICAgZWxz ZQorICAgICB7CistCXJldHVybiByZXEtPmRlbmlhbF9yZWFzb247CisrICAgICAgICByZXR1cm4g cmVxLT5kZW5pYWxfcmVhc29uOworICAgICB9CisgfQorIAorQEAgLTUyNiwyMCArNTI2LDIwIEBA IGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0X2RlbmlhbF9yZWFzb24oCisgICovCisg Y2hhciAqCisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9nZXRfZGVuaWFsX21lc3NhZ2Uo CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCkKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90ICAgICAgICAgICAgICByZXF1ZXN0KQorIHsKKy0g ICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zdHJ1Y3RfdCAqCXJlcTsKKysgICAgZ2xv YnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zdHJ1Y3RfdCAqICAgICByZXE7CisgCisgICAgIHJl cSA9CistCWdsb2J1c19oYW5kbGVfdGFibGVfbG9va3VwKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVy X3JlcXVlc3RfaGFuZGxlcywKKy0JCQkJICAgcmVxdWVzdCk7CisrICAgICAgICBnbG9idXNfaGFu ZGxlX3RhYmxlX2xvb2t1cCgmZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2hhbmRsZXMs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KTsKKyAgICAgaWYo cmVxID09IEdMT0JVU19OVUxMKQorICAgICB7CistCXJldHVybiBHTE9CVVNfTlVMTDsKKysgICAg ICAgIHJldHVybiBHTE9CVVNfTlVMTDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JcmV0 dXJuIGdsb2J1c19saWJjX3N0cmR1cChyZXEtPmRlbmlhbF9tZXNzYWdlKTsKKysgICAgICAgIHJl dHVybiBnbG9idXNfbGliY19zdHJkdXAocmVxLT5kZW5pYWxfbWVzc2FnZSk7CisgICAgIH0KKyB9 CisgCitAQCAtNTQ4LDcgKzU0OCw3IEBAIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZ2V0 X2RlbmlhbF9tZXNzYWdlKAorICAqIEBpbmdyb3VwIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVl c3QKKyAgKgorICAqIFRoaXMgZnVuY3Rpb24gcXVlcmllcyBhIHJlcXVlc3QgaGFuZGxlIHRvIGRl dGVybWluZSB0aGUgc3ViamVjdAorLSAqIGlkZW50aXR5IG9mIHRoZSBjbGllbnQgd2hvIGluaXRp YXRlZCB0aGUgcmVxdWVzdC4gCisrICogaWRlbnRpdHkgb2YgdGhlIGNsaWVudCB3aG8gaW5pdGlh dGVkIHRoZSByZXF1ZXN0LgorICAqIFRoZSBzdHJpbmcgbXVzdCBub3QgYmUgZnJlZWQgYnkgdGhl IGNhbGxlci4KKyAgKgorICAqIEBwYXJhbSByZXF1ZXN0CitAQCAtNTYwLDIwICs1NjAsMjAgQEAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9nZXRfZGVuaWFsX21lc3NhZ2UoCisgICovCisg Y2hhciAqCisgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9nZXRfc3ViamVjdCgKKy0gICAg Z2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF90CQlyZXF1ZXN0KQorKyAgICBnbG9idXNfZ2Fz c190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAgICAgICAgIHJlcXVlc3QpCisgeworLSAgICBnbG9i dXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICoJcmVxOworKyAgICBnbG9idXNfZ2Fz c190cmFuc2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICogICAgIHJlcTsKKyAKKyAgICAgcmVxID0KKy0J Z2xvYnVzX2hhbmRsZV90YWJsZV9sb29rdXAoJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVz dF9oYW5kbGVzLAorLQkJCQkgICByZXF1ZXN0KTsKKysgICAgICAgIGdsb2J1c19oYW5kbGVfdGFi bGVfbG9va3VwKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpOworICAgICBpZihyZXEgPT0g R0xPQlVTX05VTEwpCisgICAgIHsKKy0JcmV0dXJuIEdMT0JVU19OVUxMOworKyAgICAgICAgcmV0 dXJuIEdMT0JVU19OVUxMOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworLQlyZXR1cm4gcmVx LT5zdWJqZWN0OworKyAgICAgICAgcmV0dXJuIHJlcS0+c3ViamVjdDsKKyAgICAgfQorIH0KKyAv KiBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF9zdWJqZWN0KCkgKi8KK0BAIC01ODMs MjYgKzU4MywyNiBAQCBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dldF9zdWJqZWN0KAor ICAqLworIGludAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc2V0X3N1YmplY3QoCist ICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdAkJcmVxdWVzdCwKKy0gICAgY2hhciAq CQkJCQlzdWJqZWN0KQorKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QgICAgICAg ICAgICAgIHJlcXVlc3QsCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3ViamVjdCkKKyB7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rf c3RydWN0X3QgKglyZXE7CisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc3RydWN0 X3QgKiAgICAgcmVxOworIAorICAgICByZXEgPQorLQlnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1 cCgmZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCistCQkJCSAgIHJlcXVl c3QpOworKyAgICAgICAgZ2xvYnVzX2hhbmRsZV90YWJsZV9sb29rdXAoJmdsb2J1c19pX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF9oYW5kbGVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVxdWVzdCk7CisgICAgIGlmKHJlcSA9PSBHTE9CVVNfTlVMTCkKKyAgICAgeworLQly ZXR1cm4gR0xPQlVTX0dBU1NfVFJBTlNGRVJfRVJST1JfSU5WQUxJRF9VU0U7CisrICAgICAgICBy ZXR1cm4gR0xPQlVTX0dBU1NfVFJBTlNGRVJfRVJST1JfSU5WQUxJRF9VU0U7CisgICAgIH0KKyAg ICAgZWxzZSBpZihyZXEtPnN1YmplY3QgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JcmV0dXJu IEdMT0JVU19HQVNTX1RSQU5TRkVSX0VSUk9SX0lOVkFMSURfVVNFOworKyAgICAgICAgcmV0dXJu IEdMT0JVU19HQVNTX1RSQU5TRkVSX0VSUk9SX0lOVkFMSURfVVNFOworICAgICB9CisgICAgIGVs c2UKKyAgICAgeworLQlyZXEtPnN1YmplY3QgPSBzdWJqZWN0OworLQlyZXR1cm4gR0xPQlVTX1NV Q0NFU1M7CisrICAgICAgICByZXEtPnN1YmplY3QgPSBzdWJqZWN0OworKyAgICAgICAgcmV0dXJu IEdMT0JVU19TVUNDRVNTOworICAgICB9CisgfQorIC8qIGdsb2J1c19nYXNzX3RyYW5zZmVyX3Jl cXVlc3Rfc2V0X3N1YmplY3QoKSAqLworQEAgLTYzMCwxOSArNjMwLDE5IEBAIGdsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3Rfc2V0X3N1YmplY3QoCisgICovCisgaW50CisgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF9kZXN0cm95KAorLSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1 ZXN0X3QJCXJlcXVlc3QpCisrICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAg ICAgICAgICAgcmVxdWVzdCkKKyB7CistICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rf c3RydWN0X3QgKglyZXE7CistICAgIGludAkJCQkJCXJjOworKyAgICBnbG9idXNfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0X3N0cnVjdF90ICogICAgIHJlcTsKKysgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAKKyAgICAgZ2xvYnVzX2lfZ2Fzc190cmFu c2Zlcl9sb2NrKCk7CisgICAgIHJlcSA9CistCWdsb2J1c19oYW5kbGVfdGFibGVfbG9va3VwKCZn bG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKy0JCQkJICAgcmVxdWVzdCk7 CisrICAgICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2xvb2t1cCgmZ2xvYnVzX2lfZ2Fzc190cmFu c2Zlcl9yZXF1ZXN0X2hhbmRsZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXF1ZXN0KTsKKyAgICAgaWYocmVxID09IEdMT0JVU19OVUxMKQorICAgICB7CistCXJjID0g R0xPQlVTX0dBU1NfVFJBTlNGRVJfRVJST1JfSU5WQUxJRF9VU0U7CistCWdvdG8gZmluaXNoOwor KyAgICAgICAgcmMgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9FUlJPUl9JTlZBTElEX1VTRTsKKysg ICAgICAgIGdvdG8gZmluaXNoOworICAgICB9CisgICAgIGlmKHJlcS0+c3RhdHVzICE9IEdMT0JV U19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfRkFJTEVEICYmCisgICAgICAgIHJlcS0+c3RhdHVzICE9 IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfRE9ORSAmJgorQEAgLTY1Myw4ICs2NTMsOCBA QCBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2Rlc3Ryb3koCisgICAgICAgIHJlcS0+c3Rh dHVzICE9IEdMT0JVU19HQVNTX1RSQU5TRkVSX1JFUVVFU1RfQUNUSU5HX1RPX0ZBSUxJTkcgJiYK KyAgICAgICAgcmVxLT5zdGF0dXMgIT0gR0xPQlVTX0dBU1NfVFJBTlNGRVJfUkVRVUVTVF9ERU5J RUQpCisgICAgIHsKKy0JcmMgPSBHTE9CVVNfR0FTU19UUkFOU0ZFUl9FUlJPUl9JTlZBTElEX1VT RTsKKy0JZ290byBmaW5pc2g7CisrICAgICAgICByYyA9IEdMT0JVU19HQVNTX1RSQU5TRkVSX0VS Uk9SX0lOVkFMSURfVVNFOworKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgIH0KKyAKKyAgICAg cmMgPSAgZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2Rlc3Ryb3kocmVxdWVzdCk7CitA QCAtNjc3LDkgKzY3Nyw5IEBAIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZGVzdHJveSgK KyAgKiBAbm90ZSBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIHJlcXVlc3Qg aGFuZGxlIG11dGV4IGxvY2suCisgICoKKyAgKiBAcGFyYW0gcmVxdWVzdAorLSAqICAgICAgICBU aGUgcmVxdWVzdCBoYW5kbGUgdG8gaW5pdGlhbGl6ZS4gSWYgdGhpcyBmdW5jdGlvbiBpcyBzdWNj ZXNzZnVsLCAKKysgKiAgICAgICAgVGhlIHJlcXVlc3QgaGFuZGxlIHRvIGluaXRpYWxpemUuIElm IHRoaXMgZnVuY3Rpb24gaXMgc3VjY2Vzc2Z1bCwKKyAgKiAgICAgICAgdGhlIHZhbHVlIHBvaW50 ZWQgdG8gYnkgdGhpcyB3aWxsIGJlIGluaXRpYWxpemVkIHRvIHRoZSBuZXcKKy0gKiAgICAgICAg aGFuZGxlIGlkOyBvdGhlcndpc2UsIHRoZSBpdCB3aWxsIGJlIHNldCB0byAKKysgKiAgICAgICAg aGFuZGxlIGlkOyBvdGhlcndpc2UsIHRoZSBpdCB3aWxsIGJlIHNldCB0bworICAqICAgICAgICBH TE9CVVNfTlVMTF9IQU5ETEUuCisgICogQHBhcmFtIGF0dHIKKyAgKiAgICAgICAgVGhlIHJlcXVl c3QgYXR0cmlidXRlcyB0byB1c2UgdG8gY3JlYXRlIHRoZSBoYW5kbGUuIElmIG5vbi1OVUxMLAor QEAgLTcwNiw2OSArNzA2LDY5IEBAIGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9pbml0 KAorICAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9jYWxsYmFja190ICAgICAgICAgICAgIGNhbGxi YWNrLAorICAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz ZXJfYXJnKQorIHsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zdHJ1Y3RfdCAq CXJlcTsKKysgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9zdHJ1Y3RfdCAqICAgICBy ZXE7CisgCisgICAgIHJlcSA9IGdsb2J1c19tYWxsb2Moc2l6ZW9mKGdsb2J1c19nYXNzX3RyYW5z ZmVyX3JlcXVlc3Rfc3RydWN0X3QpKTsKKyAgICAgaWYocmVxID09IEdMT0JVU19OVUxMKQorICAg ICB7CistCWdvdG8gZXJyb3JfZXhpdDsKKysgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAg fQorIAorICAgICBpZih1cmwpCisgICAgIHsKKy0JcmVxLT51cmwgPSBnbG9idXNfbGliY19zdHJk dXAodXJsKTsKKysgICAgICAgIHJlcS0+dXJsID0gZ2xvYnVzX2xpYmNfc3RyZHVwKHVybCk7Cisg ICAgICAgICBpZihyZXEtPnVybCA9PSBHTE9CVVNfTlVMTCkKKyAgICAgICAgIHsKKy0JICAgIGdv dG8gZnJlZV9yZXE7CisrICAgICAgICAgICAgZ290byBmcmVlX3JlcTsKKyAgICAgICAgIH0KKyAg ICAgfQorICAgICBlbHNlCisgICAgIHsKKy0JcmVxLT51cmwgPSBHTE9CVVNfTlVMTDsKKy0gICAg fQorLSAgICByZXEtPnR5cGUJCQk9IHR5cGU7CistICAgIHJlcS0+c3RhdHVzCQkJPSBHTE9CVVNf R0FTU19UUkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HOworLSAgICByZXEtPnJlZmVycmFsX3VybAkJ PSBHTE9CVVNfTlVMTDsKKy0gICAgcmVxLT5yZWZlcnJhbF9jb3VudAkJPSAwOworLSAgICByZXEt PmNhbGxiYWNrCQk9IGNhbGxiYWNrOworLSAgICByZXEtPmNhbGxiYWNrX2FyZwkJPSB1c2VyX2Fy ZzsKKy0gICAgcmVxLT5wcm90bwkJCT0gR0xPQlVTX05VTEw7CistICAgIHJlcS0+c3ViamVjdAkJ PSBHTE9CVVNfTlVMTDsKKy0gICAgcmVxLT5kZW5pYWxfcmVhc29uCQk9IDA7CistICAgIHJlcS0+ ZGVuaWFsX21lc3NhZ2UJCT0gR0xPQlVTX05VTEw7CistICAgIHJlcS0+aGFuZGxlZF9sZW5ndGgJ CT0gMDsKKy0gICAgcmVxLT5wb3N0ZWRfbGVuZ3RoCQk9IDA7CistICAgIHJlcS0+ZmFpbF9jYWxs YmFjawkJPSBHTE9CVVNfTlVMTDsKKy0gICAgcmVxLT5jbGllbnRfc2lkZQkJPSBHTE9CVVNfRkFM U0U7CistICAgIHJlcS0+dXNlcl9wb2ludGVyCQk9IEdMT0JVU19OVUxMOworKyAgICAgICAgcmVx LT51cmwgPSBHTE9CVVNfTlVMTDsKKysgICAgfQorKyAgICByZXEtPnR5cGUgICAgICAgICAgICAg ICAgICAgPSB0eXBlOworKyAgICByZXEtPnN0YXR1cyAgICAgICAgICAgICAgICAgPSBHTE9CVVNf R0FTU19UUkFOU0ZFUl9SRVFVRVNUX1NUQVJUSU5HOworKyAgICByZXEtPnJlZmVycmFsX3VybCAg ICAgICAgICAgPSBHTE9CVVNfTlVMTDsKKysgICAgcmVxLT5yZWZlcnJhbF9jb3VudCAgICAgICAg ID0gMDsKKysgICAgcmVxLT5jYWxsYmFjayAgICAgICAgICAgICAgID0gY2FsbGJhY2s7CisrICAg IHJlcS0+Y2FsbGJhY2tfYXJnICAgICAgICAgICA9IHVzZXJfYXJnOworKyAgICByZXEtPnByb3Rv ICAgICAgICAgICAgICAgICAgPSBHTE9CVVNfTlVMTDsKKysgICAgcmVxLT5zdWJqZWN0ICAgICAg ICAgICAgICAgID0gR0xPQlVTX05VTEw7CisrICAgIHJlcS0+ZGVuaWFsX3JlYXNvbiAgICAgICAg ICA9IDA7CisrICAgIHJlcS0+ZGVuaWFsX21lc3NhZ2UgICAgICAgICA9IEdMT0JVU19OVUxMOwor KyAgICByZXEtPmhhbmRsZWRfbGVuZ3RoICAgICAgICAgPSAwOworKyAgICByZXEtPnBvc3RlZF9s ZW5ndGggICAgICAgICAgPSAwOworKyAgICByZXEtPmZhaWxfY2FsbGJhY2sgICAgICAgICAgPSBH TE9CVVNfTlVMTDsKKysgICAgcmVxLT5jbGllbnRfc2lkZSAgICAgICAgICAgID0gR0xPQlVTX0ZB TFNFOworKyAgICByZXEtPnVzZXJfcG9pbnRlciAgICAgICAgICAgPSBHTE9CVVNfTlVMTDsKKyAK KyAgICAgZ2xvYnVzX2ZpZm9faW5pdCgmcmVxLT5wZW5kaW5nX2RhdGEpOworICAgICBpZihhdHRy KQorICAgICB7CistCWlmKCphdHRyKQorLQl7CistCSAgICByZXEtPmF0dHIgPSBnbG9idXNfb2Jq ZWN0X2NvcHkoKmF0dHIpOworLQkgICAgaWYocmVxLT5hdHRyID09IEdMT0JVU19OVUxMKQorLQkg ICAgeworLQkgICAgICAgIGdvdG8gZnJlZV9maWZvOworLQkgICAgfQorLQl9CistCWVsc2UKKy0J eworLQkgICAgcmVxLT5hdHRyID0gR0xPQlVTX05VTEw7CistCX0KKysgICAgICAgIGlmKCphdHRy KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJlcS0+YXR0ciA9IGdsb2J1c19vYmplY3RfY29w eSgqYXR0cik7CisrICAgICAgICAgICAgaWYocmVxLT5hdHRyID09IEdMT0JVU19OVUxMKQorKyAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ290byBmcmVlX2ZpZm87CisrICAgICAgICAg ICAgfQorKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAg IHJlcS0+YXR0ciA9IEdMT0JVU19OVUxMOworKyAgICAgICAgfQorICAgICB9CisgICAgIGVsc2UK KyAgICAgeworLQlyZXEtPmF0dHIgPSBHTE9CVVNfTlVMTDsKKysgICAgICAgIHJlcS0+YXR0ciA9 IEdMT0JVU19OVUxMOworICAgICB9CisgCisgICAgICpyZXF1ZXN0ID0gZ2xvYnVzX2hhbmRsZV90 YWJsZV9pbnNlcnQoJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9oYW5kbGVzLAorLQkJ CQkJICAodm9pZCAqKSByZXEsCistCQkJCQkgIDIpOworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh2b2lkICopIHJlcSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyKTsKKyAgICAgZ2xvYnVzX2xpc3RfaW5zZXJ0KCZnbG9idXNf aV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RzLAorLQkJICAgICAgICh2b2lkICopIChpbnRwdHJfdCkg KCpyZXF1ZXN0KSk7CistICAgIAorKyAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgKGlu dHB0cl90KSAoKnJlcXVlc3QpKTsKKysKKyAgICAgcmV0dXJuOworIAorICAgZnJlZV9maWZvOgor QEAgLTgwNCwzMiArODA0LDMyIEBAIGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9pbml0 KAorICAqLworIGludAorIGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9kZXN0cm95KAor LSAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X3QJCXJlcXVlc3QpCisrICAgIGdsb2J1 c19nYXNzX3RyYW5zZmVyX3JlcXVlc3RfdCAgICAgICAgICAgICAgcmVxdWVzdCkKKyB7CistICAg IGdsb2J1c19ib29sX3QJCQkJcmVmZXJlbmNlZDsKKy0gICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJf cmVxdWVzdF9zdHJ1Y3RfdCAqCXJlcTsKKysgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWZlcmVuY2VkOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9y ZXF1ZXN0X3N0cnVjdF90ICogICAgIHJlcTsKKyAKKyAgICAgcmVxID0KKy0JZ2xvYnVzX2hhbmRs ZV90YWJsZV9sb29rdXAoJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9oYW5kbGVzLAor LQkJCQkgICByZXF1ZXN0KTsKKysgICAgICAgIGdsb2J1c19oYW5kbGVfdGFibGVfbG9va3VwKCZn bG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpOworICAgICBpZihyZXEgPT0gR0xPQlVTX05VTEwp CisgICAgIHsKKy0JcmV0dXJuIEdMT0JVU19HQVNTX1RSQU5TRkVSX0VSUk9SX0lOVkFMSURfVVNF OworKyAgICAgICAgcmV0dXJuIEdMT0JVU19HQVNTX1RSQU5TRkVSX0VSUk9SX0lOVkFMSURfVVNF OworICAgICB9CisgCisgICAgIHJlZmVyZW5jZWQgPQorLQlnbG9idXNfaGFuZGxlX3RhYmxlX2Rl Y3JlbWVudF9yZWZlcmVuY2UoJmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9oYW5kbGVz LAorLQkJCQkJCXJlcXVlc3QpOworKyAgICAgICAgZ2xvYnVzX2hhbmRsZV90YWJsZV9kZWNyZW1l bnRfcmVmZXJlbmNlKCZnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfaGFuZGxlcywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KTsK KyAgICAgaWYoIXJlZmVyZW5jZWQpCisgICAgIHsKKy0JaW50CQkJCQlpOworLQlnbG9idXNfbGlz dF90ICoJCQkJdG1wOworKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGk7CisrICAgICAgICBnbG9idXNfbGlzdF90ICogICAgICAgICAgICAgICAgICAgICAg ICAgdG1wOworKworKyAgICAgICAgdG1wID0gZ2xvYnVzX2xpc3Rfc2VhcmNoKGdsb2J1c19pX2dh c3NfdHJhbnNmZXJfcmVxdWVzdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZvaWQgKikgKGludHB0cl90KSByZXF1ZXN0KTsKKyAKKy0JdG1wID0gZ2xvYnVzX2xpc3Rfc2Vh cmNoKGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVzdHMsCistCQkJCSAodm9pZCAqKSAoaW50 cHRyX3QpIHJlcXVlc3QpOworLQkKKyAjaWYgREVCVUdfR0FTU19UUkFOU0ZFUgorLQlwcmludGYo X0dUU0woInJlbW92aW5nIGZyb20gbGlzdFxuIikpOworKyAgICAgICAgcHJpbnRmKF9HVFNMKCJy ZW1vdmluZyBmcm9tIGxpc3RcbiIpKTsKKyAjZW5kaWYKKyAgICAgICAgIGlmICh0bXApCisgICAg ICAgICB7CitAQCAtODM3LDcgKzgzNyw3IEBAIGdsb2J1c19pX2dhc3NfdHJhbnNmZXJfcmVxdWVz dF9kZXN0cm95KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXApOworIAorICAg ICAgICAgICAgIGdsb2J1c19jb25kX3NpZ25hbCgmZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9zaHV0 ZG93bl9jb25kKTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihyZXEtPmF0dHIp CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9idXNfb2JqZWN0X2ZyZWUocmVx LT5hdHRyKTsKK0BAIC04NzYsMTEgKzg3NiwxMSBAQCBnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3Jl cXVlc3RfZGVzdHJveSgKKyAgICAgICAgICAgICByZXF1ZXN0ID0gR0xPQlVTX05VTExfSEFORExF OworICAgICAgICAgfQorIAorLQlyZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisrICAgICAgICByZXR1 cm4gR0xPQlVTX1NVQ0NFU1M7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistCXJldHVybiBH TE9CVVNfU1VDQ0VTUzsKKysgICAgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgfQor IH0KKyAvKiBnbG9idXNfaV9nYXNzX3RyYW5zZmVyX3JlcXVlc3RfZGVzdHJveSgpICovCistLSAK KzIuNTQuMAorCgpkaWZmIC0tZ2l0IGEvMDAwMi1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2Fy bmluZ3MucGF0Y2ggYi8wMDAyLUZpeC1jb21waWxlci1hbmQtZG94eWdlbi13YXJuaW5ncy5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzcwN2FmCi0tLSAvZGV2L251 bGwKKysrIGIvMDAwMi1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2gKQEAg LTAsMCArMSwxMzIgQEAKK0Zyb20gNGVlMDhkMTNlMjk2MzMwOWUyMDYzZGM0NWRlZGQwNjczMzdk M2I3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHRpYXMgRWxsZXJ0IDxtYXR0 aWFzLmVsbGVydEBwaHlzaWNzLnV1LnNlPgorRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAwMDoxNToz NyArMDIwMAorU3ViamVjdDogW1BBVENIIDIvMl0gRml4IGNvbXBpbGVyIGFuZCBkb3h5Z2VuIHdh cm5pbmdzCisKKy0tLQorIGdhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3Nf dHJhbnNmZXIuYyAgICB8ICAzICstLQorIGdhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xv YnVzX2dhc3NfdHJhbnNmZXIuaCAgICB8IDEwICsrKysrLS0tLS0KKyAuLi4vc291cmNlL2xpYnJh cnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cC5jICAgICAgICAgfCAgNCArLS0tCisgLi4uL3Nv dXJjZS9saWJyYXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3QuYyAgICAgIHwgIDcgKy0t LS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkK KworZGlmZiAtLWdpdCBhL2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3Nf dHJhbnNmZXIuYyBiL2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3NfdHJh bnNmZXIuYworaW5kZXggMWJjM2IyN2YyLi45MjgwOTIwOWUgMTAwNjQ0CistLS0gYS9nYXNzL3Ry YW5zZmVyL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVyLmMKKysrKyBiL2dhc3Mv dHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXIuYworQEAgLTE2MSw3 ICsxNjEsNiBAQCBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2RlYWN0aXZhdGUodm9pZCkKKyAgICAg eworICAgICAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfdCAgICAgICAgIHRtcDsK KyAgICAgICAgIGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3N0cnVjdF90ICpsOworLSAg ICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOworIAorICAg ICAgICAgdG1wID0gKGdsb2J1c19nYXNzX3RyYW5zZmVyX2xpc3RlbmVyX3QpIChpbnRwdHJfdCkK KyAgICAgICAgICAgICBnbG9idXNfbGlzdF9maXJzdChyZXN0KTsKK0BAIC0xNzIsNyArMTcxLDcg QEAgZ2xvYnVzX2xfZ2Fzc190cmFuc2Zlcl9kZWFjdGl2YXRlKHZvaWQpCisgICAgICAgICAgICAg Jmdsb2J1c19pX2dhc3NfdHJhbnNmZXJfbGlzdGVuZXJfaGFuZGxlcywKKyAgICAgICAgICAgICB0 bXApOworIAorLSAgICAgICAgcmMgPSBnbG9idXNfaV9nYXNzX3RyYW5zZmVyX2Nsb3NlX2xpc3Rl bmVyKAorKyAgICAgICAgZ2xvYnVzX2lfZ2Fzc190cmFuc2Zlcl9jbG9zZV9saXN0ZW5lcigKKyAg ICAgICAgICAgICB0bXAsCisgICAgICAgICAgICAgbCwKKyAgICAgICAgICAgICBnbG9idXNfbF9n YXNzX3RyYW5zZmVyX2xpc3RlbmVyX2Nsb3NlX2NhbGxiYWNrLAorZGlmZiAtLWdpdCBhL2dhc3Mv dHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXIuaCBiL2dhc3MvdHJh bnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXIuaAoraW5kZXggNjUwZmI0 MDJjLi42MTdkZjg3ZTIgMTAwNjQ0CistLS0gYS9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5 L2dsb2J1c19nYXNzX3RyYW5zZmVyLmgKKysrKyBiL2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJh cnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXIuaAorQEAgLTI1Miw3ICsyNTIsNyBAQCB0eXBlZGVmIGVu dW0KKyAKKyAvKioKKyAgKiBHQVNTIGVycm9yIGNvZGVzCistICogQGluZ3JvdXAgZ2xvYnVzX2dh c3NfY29uc3RhbnRzCisrICogQGluZ3JvdXAgZ2xvYnVzX2dhc3NfdHJhbnNmZXIKKyAgKi8KKyBl bnVtCisgeworQEAgLTI5Myw3ICsyOTMsNyBAQCBlbnVtCisgfTsKKyAKKyAvKioKKy0gKiBAaW5n cm91cCBnbG9idXNfZ2Fzc19jb25zdGFudHMKKysgKiBAaW5ncm91cCBnbG9idXNfZ2Fzc190cmFu c2ZlcgorICAqCisgICogRGVmYXVsdCBidWZmZXIgbGVuZ3RoIGZvciB0aGUgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfYXNzaXN0IGxpYnJhcnkuCisgICoKK0BAIC0zMDUsNyArMzA1LDcgQEAgZW51bQor IH07CisgCisgLyoqCistICogQGluZ3JvdXAgZ2xvYnVzX2dhc3NfY29uc3RhbnRzCisrICogQGlu Z3JvdXAgZ2xvYnVzX2dhc3NfdHJhbnNmZXIKKyAgKgorICAqIFZhbHVlIGZvciBmaWxlcyB3ZSBk b24ndCBrbm93IHRoZSBsZW5ndGggb2YuCisgICoKK0BAIC0zMTQsNyArMzE0LDcgQEAgZW51bQor ICNkZWZpbmUgR0xPQlVTX0dBU1NfVFJBTlNGRVJfTEVOR1RIX1VOS05PV04gMFVMCisgCisgLyoq CistICogQGluZ3JvdXAgZ2xvYnVzX2dhc3NfY29uc3RhbnRzCisrICogQGluZ3JvdXAgZ2xvYnVz X2dhc3NfdHJhbnNmZXIKKyAgKgorICAqIFZhbHVlIGZvciB0aW1lc3RhbXBzIHdlIGRvbid0IGtu b3cgdGhlIHZhbHVlIG9mLgorICAqCitAQCAtNTA0LDcgKzUwNCw3IEBAIGdsb2J1c19nYXNzX3Ry YW5zZmVyX2xpc3RlbmVyX3NldF91c2VyX3BvaW50ZXIoCisgCisgLyoqCisgICogQGRlZmdyb3Vw IGdsb2J1c19nYXNzX3RyYW5zZmVyX2RhdGEgU2VuZGluZyBhbmQgUmVjZWl2aW5nIERhdGEKKy0g KiBAaW5ncm91cCBnbG9idXNfZ2Fzc190YW5zZmVyCisrICogQGluZ3JvdXAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXIKKyAgKiBAYnJpZWYgU2VuZGluZyBhbmQgUmVjZWl2aW5nIERhdGEKKyAgKi8KKyAK K2RpZmYgLS1naXQgYS9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nYXNzX3Ry YW5zZmVyX2h0dHAuYyBiL2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfaHR0cC5jCitpbmRleCBjN2Q5ODljNWYuLjkyNmU0ODUwNCAxMDA2NDQKKy0tLSBh L2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cC5j CisrKysgYi9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nYXNzX3RyYW5zZmVy X2h0dHAuYworQEAgLTE2NjAsNyArMTY2MCw2IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0 cF9yZXF1ZXN0X3JlZmVyKAorIHsKKyAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1 ZXN0X3Byb3RvX3QgKiBwcm90bzsKKyAgICAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVmZXJyYWxf dCAgICAgICAgICAgICByZWZlcnJhbDsKKy0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByYzsKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWZlcnJhbF9zdHJpbmc7CisgICAgIGdsb2J1c19zaXplX3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJyYWxfY291bnQ7CisgICAgIGdsb2J1c19zaXpl X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keV9jb3VudD0wOyAvKiA6KSAqLwor QEAgLTE2NzMsOCArMTY3Miw3IEBAIGdsb2J1c19sX2dhc3NfdHJhbnNmZXJfaHR0cF9yZXF1ZXN0 X3JlZmVyKAorICAgICBnbG9idXNfbF9nYXNzX3RyYW5zZmVyX2h0dHBfbG9jaygpOworICAgICBw cm90byA9IChnbG9idXNfZ2Fzc190cmFuc2Zlcl9odHRwX3JlcXVlc3RfcHJvdG9fdCAqKSBycHJv dG87CisgCistICAgIHJjID0gZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVzdF9nZXRfcmVmZXJy YWwocmVxdWVzdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmcmVmZXJyYWwpOworKyAgICBnbG9idXNfZ2Fzc190cmFuc2Zlcl9yZXF1ZXN0X2dl dF9yZWZlcnJhbChyZXF1ZXN0LCAmcmVmZXJyYWwpOworIAorICAgICAvKiBIVFRQLzEuMSAzMDIg RG9jdW1lbnQgTW92ZWQgQ1JMRgorICAgICAgKiBMb2NhdGlvbjogcmVmZXJyYWwudXJsWzBdIENS TEYKK2RpZmYgLS1naXQgYS9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nYXNz X3RyYW5zZmVyX3JlcXVlc3QuYyBiL2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVz X2dhc3NfdHJhbnNmZXJfcmVxdWVzdC5jCitpbmRleCBlYjIxZmJiOTguLjVhNzAxMGIwZCAxMDA2 NDQKKy0tLSBhL2dhc3MvdHJhbnNmZXIvc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dhc3NfdHJhbnNm ZXJfcmVxdWVzdC5jCisrKysgYi9nYXNzL3RyYW5zZmVyL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19n YXNzX3RyYW5zZmVyX3JlcXVlc3QuYworQEAgLTQ0NSwxMSArNDQ1LDYgQEAgZ2xvYnVzX2dhc3Nf dHJhbnNmZXJfcmVxdWVzdF9zZXRfdXJsKAorICAqICAgICAgICBBIGhhbmRsZSB0byB0aGUgcmVx dWVzdCB0byBtb2RpZnkuCisgICogQHBhcmFtIGxlbmd0aAorICAqICAgICAgICBUaGUgbGVuZ3Ro IG9mIHRoZSBmaWxlIHJlcXVlc3QuCistICoKKy0gKiBAcmV0dmFsIEdMT0JVU19TVUNDRVNTCist ICogICAgICAgICBUaGUgVVJMIHdhcyBzZXQgZm9yIHRoZSByZXF1ZXN0IGhhbmRsZS4KKy0gKiBA cmV0dmFsIEdMT0JVU19HQVNTX1RSQU5TRkVSX0VSUk9SX0lOVkFMSURfVVNFCistICogICAgICAg ICBUaGUgcmVxdWVzdCBoYW5kbGUgd2FzIGludmFsaWQsIG9yIHRoZSBVUkwgaGFkIGFscmVhZHkg YmVlbiBzZXQuCisgICovCisgdm9pZAorIGdsb2J1c19nYXNzX3RyYW5zZmVyX3JlcXVlc3Rfc2V0 X2xlbmd0aCgKK0BAIC00NjMsNyArNDU4LDcgQEAgZ2xvYnVzX2dhc3NfdHJhbnNmZXJfcmVxdWVz dF9zZXRfbGVuZ3RoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz dCk7CisgICAgIGlmKHJlcSA9PSBHTE9CVVNfTlVMTCkKKyAgICAgeworLSAgICAgICAgcmV0dXJu IDsKKysgICAgICAgIHJldHVybjsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0tIAorMi41 NC4wCisKCmRpZmYgLS1naXQgYS9nbG9idXMtZ2Fzcy10cmFuc2Zlci5zcGVjIGIvZ2xvYnVzLWdh c3MtdHJhbnNmZXIuc3BlYwppbmRleCAwMjVkOTUzLi5jODE2NjM5IDEwMDY0NAotLS0gYS9nbG9i dXMtZ2Fzcy10cmFuc2Zlci5zcGVjCisrKyBiL2dsb2J1cy1nYXNzLXRyYW5zZmVyLnNwZWMKQEAg LTEsMTMgKzEsMTUgQEAKIE5hbWU6CQlnbG9idXMtZ2Fzcy10cmFuc2ZlcgogJWdsb2JhbCBfbmFt ZSAlKHRyIC0gXyA8PDwgJXtuYW1lfSkKIFZlcnNpb246CTkuNQotUmVsZWFzZToJMiV7P2Rpc3R9 CitSZWxlYXNlOgkzJXs/ZGlzdH0KIFN1bW1hcnk6CUdyaWQgQ29tbXVuaXR5IFRvb2xraXQgLSBH bG9idXMgR2FzcyBUcmFuc2ZlcgogCiBMaWNlbnNlOglBcGFjaGUtMi4wCiBVUkw6CQlodHRwczov L2dpdGh1Yi5jb20vZ3JpZGNmL2djdC8KIFNvdXJjZToJCWh0dHBzOi8vcmVwby5ncmlkY2Yub3Jn L2djdDYvc291cmNlcy8le19uYW1lfS0le3ZlcnNpb259LnRhci5negogU291cmNlODoJUkVBRE1F CitQYXRjaDA6CQkwMDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hpdGUtc3BhY2Uu cGF0Y2gKK1BhdGNoMToJCTAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBh dGNoCiAKIEJ1aWxkUmVxdWlyZXM6CW1ha2UKIEJ1aWxkUmVxdWlyZXM6CWdjYwpAQCAtNTcsNiAr NTksOCBAQCBHbG9idXMgR2FzcyBUcmFuc2ZlciBEb2N1bWVudGF0aW9uIEZpbGVzCiAKICVwcmVw CiAlc2V0dXAgLXEgLW4gJXtfbmFtZX0tJXt2ZXJzaW9ufQorJXBhdGNoIC1QMCAtcDQKKyVwYXRj aCAtUDEgLXA0CiAKICVidWlsZAogIyBSZWR1Y2Ugb3ZlcmxpbmtpbmcKQEAgLTEwNSw2ICsxMDks OSBAQCBybSAle2J1aWxkcm9vdH0le19wa2dkb2NkaXJ9L0dMT0JVU19MSUNFTlNFCiAlbGljZW5z ZSBHTE9CVVNfTElDRU5TRQogCiAlY2hhbmdlbG9nCisqIFN1biBKdW4gMTQgMjAyNiBNYXR0aWFz IEVsbGVydCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51dS5zZT4gLSA5LjUtMworLSBGaXggY29t cGlsZXIgYW5kIGRveHlnZW4gd2FybmluZ3MKKwogKiBGcmkgSmFuIDE2IDIwMjYgRmVkb3JhIFJl bGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSA5LjUtMgogLSBS ZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0X01hc3Nf UmVidWlsZAogCg==