ZGlmZiAtLWdpdCBhL2F1dG8vbWFrZSBiL2F1dG8vbWFrZQppbmRleCA5YjZlNGJlLi5mMzA0YWM3IDEwMDY0NAotLS0gYS9hdXRvL21ha2UKKysrIGIvYXV0by9tYWtlCkBAIC0zMiw3ICszMiw3IEBACiBmaQogCiAKLSMgQUxMX0lOQ1MsIHJlcXVpcmVkIGJ5IE9wZW5XYXRjb20gQyBwcmVjb21waWxlZCBoZWFkZXJzCisjIEFMTF9JTkNTLCByZXF1aXJlZCBieSB0aGUgYWRkb25zIGFuZCBieSBPcGVuV2F0Y29tIEMgcHJlY29tcGlsZWQgaGVhZGVycwogCiBuZ3hfaW5jcz1gZWNobyAkQ09SRV9JTkNTICROR1hfT0JKUyAkSFRUUF9JTkNTICRJTUFQX0lOQ1NcCiAgICAgfCBzZWQgLWUgInMvICAqXChbXiBdW14gXSpcKS8kbmd4X3JlZ2V4X2NvbnQkbmd4X2luY2x1ZGVfb3B0XDEvZyIgXApAQCAtMTIwLDEwICsxMjAsMzIgQEAKIGZpCiAKIAoraWYgdGVzdCAtbiAiJE5HWF9BRERPTl9TUkNTIjsgdGhlbgorCitjYXQgPDwgRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gJE5HWF9NQUtFRklMRQorCitBRERPTl9ERVBTID0gXCQoQ09SRV9EUEVTKSAkTkdYX0FERE9OX0RFUFMKKworRU5ECisKK2ZpCisKKwogIyBuZ2lueAogCiBuZ3hfYWxsX3NyY3M9YGVjaG8gJG5neF9hbGxfc3JjcyB8IHNlZCAtZSAicy9cLy8kbmd4X3JlZ2V4X2RpcnNlcC9nImAKLW5neF9tb2R1bGVzX2M9YGVjaG8gJE5HWF9NT0RVTEVTX0MgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCisKK2ZvciBuZ3hfc3JjIGluICROR1hfQURET05fU1JDUworZG8KKyAgICBuZ3hfb2JqPSJhZGRvbi9gYmFzZW5hbWUgXGBkaXJuYW1lICRuZ3hfc3JjXGBgIgorCisgICAgdGVzdCAtZCAkTkdYX09CSlMvJG5neF9vYmogfHwgbWtkaXIgLXAgJE5HWF9PQkpTLyRuZ3hfb2JqCisKKyAgICBuZ3hfb2JqPWBlY2hvICRuZ3hfb2JqL1xgYmFzZW5hbWUgJG5neF9zcmNcYCBcCisgICAgICAgIHwgc2VkIC1lICJzL1wvLyRuZ3hfcmVnZXhfZGlyc2VwL2ciYAorCisgICAgbmd4X2FsbF9zcmNzPSIkbmd4X2FsbF9zcmNzICRuZ3hfb2JqIgorZG9uZQogCiBuZ3hfYWxsX29ianM9YGVjaG8gJG5neF9hbGxfc3JjcyBcCiAgICAgfCBzZWQgLWUgInMvXChbXiBdKlwuXCljcHAvJE5HWF9PQkpTXC9cMSRuZ3hfb2JqZXh0L2ciIFwKQEAgLTEzMSw2ICsxNTMsOCBAQAogICAgICAgICAgIC1lICJzL1woW14gXSpcLlwpYy8kTkdYX09CSlNcL1wxJG5neF9vYmpleHQvZyIgXAogICAgICAgICAgIC1lICJzL1woW14gXSpcLlwpUy8kTkdYX09CSlNcL1wxJG5neF9vYmpleHQvZyJgCiAKK25neF9tb2R1bGVzX2M9YGVjaG8gJE5HWF9NT0RVTEVTX0MgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCisKIG5neF9tb2R1bGVzX29iaj1gZWNobyAkbmd4X21vZHVsZXNfYyB8IHNlZCAtZSAicy9cKC4qXC5cKWMvXDEkbmd4X29iamV4dC8iYAogCiAKQEAgLTE4NSw3ICsyMDksNiBAQAogCiBmb3Igbmd4X3NyYyBpbiAkQ09SRV9TUkNTCiBkbwotCiAgICAgbmd4X3NyYz1gZWNobyAkbmd4X3NyYyB8IHNlZCAtZSAicy9cLy8kbmd4X3JlZ2V4X2RpcnNlcC9nImAKICAgICBuZ3hfb2JqPWBlY2hvICRuZ3hfc3JjIFwKICAgICAgICAgfCBzZWQgLWUgInMvXlwoLipcLlwpY3BwJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCkBAIC0yMTUsNyArMjM4LDYgQEAKIAogICAgIGZvciBuZ3hfc3JjIGluICRIVFRQX1NSQ1MKICAgICBkbwotCiAgICAgICAgIG5neF9zcmM9YGVjaG8gJG5neF9zcmMgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCiAgICAgICAgIG5neF9vYmo9YGVjaG8gJG5neF9zcmMgXAogICAgICAgICAgICAgfCBzZWQgLWUgInMvXlwoLipcLlwpY3BwJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCkBAIC0yMjksNyArMjUxLDYgQEAKIAkkbmd4X2NjJG5neF90YWIkbmd4X29iam91dCRuZ3hfb2JqJG5neF90YWIkbmd4X3NyYwogCiBFTkQKLQogICAgICBkb25lCiAKIGZpCkBAIC0yNDcsNyArMjY4LDYgQEAKIAogICAgIGZvciBuZ3hfc3JjIGluICRJTUFQX1NSQ1MKICAgICBkbwotCiAgICAgICAgIG5neF9zcmM9YGVjaG8gJG5neF9zcmMgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCiAgICAgICAgIG5neF9vYmo9YGVjaG8gJG5neF9zcmMgXAogICAgICAgICAgICAgfCBzZWQgLWUgInMvXlwoLipcLlwpY3BwJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCkBAIC0yNjEsNyArMjgxLDM4IEBACiAJJG5neF9jYyRuZ3hfdGFiJG5neF9vYmpvdXQkbmd4X29iaiRuZ3hfdGFiJG5neF9zcmMKIAogRU5ECisgICAgIGRvbmUKIAorZmkKKworCisjIHRoZSBhZGRvbnMgc291cmNlcworCitpZiB0ZXN0IC1uICIkTkdYX0FERE9OX1NSQ1MiOyB0aGVuCisKKyAgICBuZ3hfY2M9IlwkKENDKSAkbmd4X2NvbXBpbGVfb3B0IFwkKENGTEFHUykgJG5neF91c2VfcGNoIFwkKEFMTF9JTkNTKSIKKworICAgIGZvciBuZ3hfc3JjIGluICROR1hfQURET05fU1JDUworICAgIGRvCisgICAgICAgIG5neF9vYmo9ImFkZG9uL2BiYXNlbmFtZSBcYGRpcm5hbWUgJG5neF9zcmNcYGAiCisKKyAgICAgICAgbmd4X29iaj1gZWNobyAkbmd4X29iai9cYGJhc2VuYW1lICRuZ3hfc3JjXGAgXAorICAgICAgICAgICAgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCisKKyAgICAgICAgbmd4X29iaj1gZWNobyAkbmd4X29iaiBcCisgICAgICAgICAgICB8IHNlZCAtZSAicy9eXCguKlwuXCljcHAkLyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0L2ciIFwKKyAgICAgICAgICAgICAgICAgIC1lICJzL15cKC4qXC5cKWNjJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCisgICAgICAgICAgICAgICAgICAtZSAicy9eXCguKlwuXCljJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCisgICAgICAgICAgICAgICAgICAtZSAicy9eXCguKlwuXClTJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nImAKKworICAgICAgICBuZ3hfc3JjPWBlY2hvICRuZ3hfc3JjIHwgc2VkIC1lICJzL1wvLyRuZ3hfcmVnZXhfZGlyc2VwL2ciYAorCisgICAgICAgIGNhdCA8PCBFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICROR1hfTUFLRUZJTEUKKworJG5neF9vYmo6CVwkKEFERE9OX0RFUFMpJG5neF9jb250JG5neF9zcmMKKwkkbmd4X2NjJG5neF90YWIkbmd4X29iam91dCRuZ3hfb2JqJG5neF90YWIkbmd4X3NyYworCitFTkQKICAgICAgZG9uZQogCiBmaQpkaWZmIC0tZ2l0IGEvYXV0by9tb2R1bGVzIGIvYXV0by9tb2R1bGVzCmluZGV4IDJjMDAxZTIuLjFmZTlhYzggMTAwNjQ0Ci0tLSBhL2F1dG8vbW9kdWxlcworKysgYi9hdXRvL21vZHVsZXMKQEAgLTE2MiwxMCArMTYyLDMyIEBACiAgICAgSFRUUF9TUkNTPSIkSFRUUF9TUkNTIHNyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3R1Yl9zdGF0dXNfbW9kdWxlLmMiCiBmaQogCi1pZiBbIC1yICROR1hfT0JKUy9hdXRvIF07IHRoZW4KLSAgICAuICROR1hfT0JKUy9hdXRvCisjaWYgWyAtciAkTkdYX09CSlMvYXV0byBdOyB0aGVuCisjICAgIC4gJE5HWF9PQkpTL2F1dG8KKyNmaQorCisKK2lmIHRlc3QgLW4gIiROR1hfQURET05TIjsgdGhlbgorCisgICAgZWNobyBjb25maWd1cmluZyBhZGRpdGlvbmFsIG1vZHVsZXMKKworICAgIGZvciBuZ3hfYWRkb25fZGlyIGluICROR1hfQURET05TCisgICAgZG8KKyAgICAgICAgZWNobyAiYWRkaW5nIG1vZHVsZSBpbiAkbmd4X2FkZG9uX2RpciIKKworICAgICAgICBpZiB0ZXN0IC1mICRuZ3hfYWRkb25fZGlyL2NvbmZpZzsgdGhlbgorICAgICAgICAgICAgLiAkbmd4X2FkZG9uX2Rpci9jb25maWcKKworICAgICAgICAgICAgZWNobyAiICsgJG5neF9hZGRvbl9uYW1lIHdhcyBjb25maWd1cmVkIgorCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVjaG8gIiQwOiBlcnJvcjogbm8gJG5neF9hZGRvbl9kaXIvY29uZmlnIHdhcyBmb3VuZCIKKyAgICAgICAgICAgIGV4aXQgMQorICAgICAgICBmaQorICAgIGRvbmUKIGZpCiAKKwogbW9kdWxlcz0iJENPUkVfTU9EVUxFUyAkRVZFTlRfTU9EVUxFUyIKIAogaWYgWyAkSFRUUCA9IFlFUyBdOyB0aGVuCkBAIC0xNzQsOCArMTk2LDExIEBACiAgICAgICAgICAgICAgJEhUVFBfQ09QWV9GSUxURVJfTU9EVUxFIFwKICAgICAgICAgICAgICAkSFRUUF9SQU5HRV9CT0RZX0ZJTFRFUl9NT0RVTEUgXAogICAgICAgICAgICAgICRIVFRQX05PVF9NT0RJRklFRF9GSUxURVJfTU9EVUxFIgorCisgICAgTkdYX0FERE9OX0RFUFM9IiROR1hfQURET05fREVQUyBcJChIVFRQX0RFUFMpIgogZmkKIAorCiBJTUFQX01PRFVMRVM9JElNQVBfTU9EVUxFCiAKIGlmIFsgJElNQVAgPSBZRVMgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvYXV0by9vcHRpb25zIGIvYXV0by9vcHRpb25zCmluZGV4IDdiYjkzYWMuLmRkNzQwZmUgMTAwNjQ0Ci0tLSBhL2F1dG8vb3B0aW9ucworKysgYi9hdXRvL29wdGlvbnMKQEAgLTYzLDcgKzYzLDcgQEAKIAogSU1BUD1OTwogCi1OR1hfTU9EVUxFUz0KK05HWF9BRERPTlM9CiAKIFVTRV9QQ1JFPU5PCiBQQ1JFPU5PTkUKQEAgLTEzOSw3ICsxMzksNyBAQAogCiAgICAgICAgIC0td2l0aC1pbWFwKSAgICAgICAgICAgICAgICAgICAgIElNQVA9WUVTICAgICAgICAgICAgICAgICAgIDs7CiAKLSAgICAgICAgLS13aXRoLW1vZHVsZT0qKSAgICAgICAgICAgICAgICAgTkdYX01PRFVMRVM9IiROR1hfTU9EVUxFUyAkdmFsdWVzIiA7OworICAgICAgICAtLWFkZC1tb2R1bGU9KikgICAgICAgICAgICAgICAgICBOR1hfQURET05TPSIkTkdYX0FERE9OUyAkdmFsdWUiIDs7CiAKICAgICAgICAgLS13aXRoLWNjPSopICAgICAgICAgICAgICAgICAgICAgQ0M9IiR2YWx1ZSIgICAgICAgICAgICAgICAgOzsKICAgICAgICAgLS13aXRoLWNwcD0qKSAgICAgICAgICAgICAgICAgICAgQ1BQPSIkdmFsdWUiICAgICAgICAgICAgICAgOzsKZGlmZiAtLWdpdCBhL2F1dG8vb3MvY29uZiBiL2F1dG8vb3MvY29uZgppbmRleCA3MWExNDNkLi43Mzc1MTk5IDEwMDY0NAotLS0gYS9hdXRvL29zL2NvbmYKKysrIGIvYXV0by9vcy9jb25mCkBAIC0xMjMsNCArMTIzLDE1IEBACiAgICAgICAgICAgICAuIGF1dG8vZmVhdHVyZQogICAgICAgICBmaQogICAgIGZpCisKKyAgICBpZiBbIE5HWF9TWVNURU0gIT0gIk5ldEJTRCIgXTsgdGhlbgorCisgICAgICAgICMgTmV0QlNEIDIuMCBpbmNvbXBhdGlibHkgZGVmaW5lcyBrZXZlbnQudWRhdGEgYXMgImludHB0cl90IgorICAgICAgICBjYXQgPDwgRU5EID4+ICROR1hfQVVUT19DT05GSUdfSAorCisjZGVmaW5lIE5HWF9LUVVFVUVfVURBVEFfVCAgKHZvaWQgKikKKworRU5ECisKKyAgICAgZmkKIGZpCmRpZmYgLS1naXQgYS9hdXRvL29zL2ZyZWVic2QgYi9hdXRvL29zL2ZyZWVic2QKaW5kZXggZTM1YjkzMy4uZGZiNTQ3ZiAxMDA2NDQKLS0tIGEvYXV0by9vcy9mcmVlYnNkCisrKyBiL2F1dG8vb3MvZnJlZWJzZApAQCAtNjQsNiArNjQsNyBAQAogICAgIEVWRU5UX0ZPVU5EPVlFUwogZmkKIAorCiBOR1hfS1FVRVVFX0NIRUNLRUQ9WUVTCiAKIApkaWZmIC0tZ2l0IGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwgYi9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbAppbmRleCBkYTFiOTU0Li45NmM4MzgxIDEwMDY0NAotLS0gYS9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbAorKysgYi9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbApAQCAtOSw2ICs5LDQxIEBACiA8dGl0bGUgbGFuZz0iZW4iPm5naW54IGNoYW5nZWxvZzwvdGl0bGU+CiAKIAorPGNoYW5nZXMgdmVyPSIwLjEuMTkiIGRhdGU9IjE2LjAyLjIwMDUiPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivF08zJINcg2sHQ0s/TxSDF09TYIM7VzNgsINTPIMTM0SDMz8vBzNjO2cgg2sHQ0s/Tz9cg1MXQxdLYINfP2tfSwd3BxdTT0Qorz9vJwsvBIDQwNC4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK25vdywgaWYgcmVxdWVzdCBjb250YWlucyB0aGUgemVybywgdGhlbiB0aGUgNDA0IGVycm9yIGlzIHJldHVybmVkCitmb3IgdGhlIGxvY2FsIHJlcXVlc3RzLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK25naW54IM7FINPPwsnSwczT0SDQz8QgTmV0QlNEIDIuMC4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK25naW54IGNvdWxkIG5vdCBiZSBidWlsdCBvbiBOZXRCU0QgMi4wLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9fPINfSxc3RIN7Uxc7J0SDUxczBINrB0NLP08Egy8zJxc7UwSDXIFNTTCDTz8XEyc7FzsnJIM3PxyDQ0s/J2s/K1Mkg1MHKzcHV1C4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSB0aW1lb3V0IG1heSBvY2N1ciB3aGlsZSByZWFkaW5nIG9mIHRoZSB0aGUgY2xpZW50IHJlcXVlc3QgYm9keQordmlhIFNTTCBjb25uZWN0aW9ucy4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8L2NoYW5nZXM+CisKKwogPGNoYW5nZXMgdmVyPSIwLjEuMTgiIGRhdGU9IjA5LjAyLjIwMDUiPgogCiA8Y2hhbmdlIHR5cGU9Indvcmthcm91bmQiPgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmdpbnguaCBiL3NyYy9jb3JlL25naW54LmgKaW5kZXggZGJhZGI0NS4uMDcxY2YxYyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmdpbnguaAorKysgYi9zcmMvY29yZS9uZ2lueC5oCkBAIC04LDcgKzgsNyBAQAogI2RlZmluZSBfTkdJTlhfSF9JTkNMVURFRF8KIAogCi0jZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4xLjE4IgorI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS4xOSIKIAogI2RlZmluZSBOR0lOWF9WQVIgICAgICAgICAgIk5HSU5YIgogI2RlZmluZSBOR1hfTkVXUElEX0VYVCAgICAgIi5uZXdiaW4iCmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ3hfcmFkaXhfdHJlZS5jIGIvc3JjL2NvcmUvbmd4X3JhZGl4X3RyZWUuYwppbmRleCBlMGNlMDk1Li5mYTA1NmFmIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfcmFkaXhfdHJlZS5jCisrKyBiL3NyYy9jb3JlL25neF9yYWRpeF90cmVlLmMKQEAgLTEyLDcgKzEyLDcgQEAKIAogCiBuZ3hfcmFkaXhfdHJlZV90ICoKLW5neF9yYWRpeF90cmVlX2NyZWF0ZShuZ3hfcG9vbF90ICpwb29sLCBuZ3hfdWludF90IHByZWFsbG9jYXRlKQorbmd4X3JhZGl4X3RyZWVfY3JlYXRlKG5neF9wb29sX3QgKnBvb2wsIG5neF9pbnRfdCBwcmVhbGxvY2F0ZSkKIHsKICAgICB1aW50MzJfdCAgICAgICAgICAga2V5LCBtYXNrLCBpbmM7CiAgICAgbmd4X3JhZGl4X3RyZWVfdCAgKnRyZWU7CkBAIC0zNSwxMyArMzUsNDYgQEAKICAgICB0cmVlLT5yb290LT5wYXJlbnQgPSBOVUxMOwogICAgIHRyZWUtPnJvb3QtPnZhbHVlID0gTkdYX1JBRElYX05PX1ZBTFVFOwogCisgICAgaWYgKHByZWFsbG9jYXRlID09IDApIHsKKyAgICAgICAgcmV0dXJuIHRyZWU7CisgICAgfQorCiAgICAgLyoKICAgICAgKiBXZSBwcmVhbGxvY2F0ZSB0aGUgZmlyc3Qgbm9kZXM6IDAsIDEsIDAwLCAwMSwgMTAsIDExLCAwMDAsIDAwMSwgZXRjLiwKICAgICAgKiB0byBpbmNyZWFzZSB0aGUgVExCIGhpdHMgZXZlbiBpZiBmb3IgdGhlIGZpcnN0IGxvb2t1cCBpdGVyYXRpb25zLgogICAgICAqIE9uIHRoZSAzMi1iaXQgcGxhdGZvcm1zIHRoZSA3IHByZWFsbG9jYXRlZCBiaXRzIHRha2VzIGNvbnRpbnVvdXMgNEssCi0gICAgICogOCAtIDhLLCA5IC0gMTZLLCBldGMuCisgICAgICogOCAtIDhLLCA5IC0gMTZLLCBldGMuICBPbiB0aGUgNjQtYml0IHBsYXRmb3JtcyB0aGUgNiBwcmVhbGxvY2F0ZWQgYml0cworICAgICAqIHRha2VzIGNvbnRpbnVvdXMgNEssIDcgLSA4SywgOCAtIDE2SywgZXRjLiAgVGhlcmUgaXMgbm8gc2Vuc2UgdG8KKyAgICAgKiB0byBwcmVhbGxvY2F0ZSBtb3JlIHRoYW4gb25lIHBhZ2UsIGJlY2F1c2UgZnVydGhlciBwcmVhbGxvY2F0aW9uCisgICAgICogZGlzdHJpYnV0ZSB0aGUgb25seSBiaXQgcGVyIHBhZ2UuICBJbnN0ZWFkLCB0aGUgcmFuZG9tIGluc2VydGlvbgorICAgICAqIG1heSBkaXN0cmlidXRlIHNldmVyYWwgYml0cyBwZXIgcGFnZS4KKyAgICAgKgorICAgICAqIFRodXMsIGJ5IGRlZmF1bHQgd2UgcHJlYWxsb2NhdGUgbWF4aW11bQorICAgICAqICAgICA2IGJpdHMgb24gYW1kNjQgKDY0LWJpdCBwbGF0Zm9ybSBhbmQgNEsgcGFnZXMpCisgICAgICogICAgIDcgYml0cyBvbiBpMzg2ICgzMi1iaXQgcGxhdGZvcm0gYW5kIDRLIHBhZ2VzKQorICAgICAqICAgICA3IGJpdHMgb24gc3BhcmM2NCBpbiA2NC1iaXQgbW9kZSAoOEsgcGFnZXMpCisgICAgICogICAgIDggYml0cyBvbiBzcGFyYzY0IGluIDMyLWJpdCBtb2RlICg4SyBwYWdlcykKICAgICAgKi8KIAorICAgIGlmIChwcmVhbGxvY2F0ZSA9PSAtMSkgeworICAgICAgICBzd2l0Y2ggKG5neF9wYWdlc2l6ZSAvIHNpemVvZihuZ3hfcmFkaXhfdHJlZV90KSkgeworCisgICAgICAgIC8qIGFtZDY0ICovCisgICAgICAgIGNhc2UgMTI4OgorICAgICAgICAgICAgcHJlYWxsb2NhdGUgPSA2OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogaTM4Niwgc3BhcmM2NCAqLworICAgICAgICBjYXNlIDI1NjoKKyAgICAgICAgICAgIHByZWFsbG9jYXRlID0gNzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIHNwYXJjNjQgaW4gMzItYml0IG1vZGUgKi8KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHByZWFsbG9jYXRlID0gODsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG1hc2sgPSAwOwogICAgIGluYyA9IDB4ODAwMDAwMDA7CiAKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9yYWRpeF90cmVlLmggYi9zcmMvY29yZS9uZ3hfcmFkaXhfdHJlZS5oCmluZGV4IDk5YzZlZWEuLjAyYTlmMzggMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9yYWRpeF90cmVlLmgKKysrIGIvc3JjL2NvcmUvbmd4X3JhZGl4X3RyZWUuaApAQCAtMzQsNyArMzQsNyBAQAogCiAKIG5neF9yYWRpeF90cmVlX3QgKm5neF9yYWRpeF90cmVlX2NyZWF0ZShuZ3hfcG9vbF90ICpwb29sLAotICAgIG5neF91aW50X3QgcHJlYWxsb2NhdGUpOworICAgIG5neF9pbnRfdCBwcmVhbGxvY2F0ZSk7CiBuZ3hfaW50X3Qgbmd4X3JhZGl4MzJ0cmVlX2luc2VydChuZ3hfcmFkaXhfdHJlZV90ICp0cmVlLAogICAgIHVpbnQzMl90IGtleSwgdWludDMyX3QgbWFzaywgdWludHB0cl90IHZhbHVlKTsKIG5neF9pbnRfdCBuZ3hfcmFkaXgzMnRyZWVfZGVsZXRlKG5neF9yYWRpeF90cmVlX3QgKnRyZWUsCmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ3hfdGltZXMuYyBiL3NyYy9jb3JlL25neF90aW1lcy5jCmluZGV4IDIzNGE4YWUuLjkzNTQyMzIgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF90aW1lcy5jCisrKyBiL3NyYy9jb3JlL25neF90aW1lcy5jCkBAIC0zMDgsNyArMzA4LDYgQEAKICAgICAgICAgICAgICAgICBtZGF5IC09IDI4OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KIC8qCiAgKiAgdGhlcmUgaXMgbm8gInlkYXkiIGluIFdpbjMyIFNZU1RFTVRJTUUKICAqCkBAIC0zMTYsNyArMzE1LDcgQEAKICAqICAgICAgeWRheSArPSAzMSArIDI4OwogICoKICAqICAgICAgaWYgKCh5ZWFyICUgNCA9PSAwKSAmJiAoeWVhciAlIDEwMCB8fCAoeWVhciAlIDQwMCA9PSAwKSkpIHsKLSAqICAgICAgICAgICB5ZGF5Kys7CisgKiAgICAgICAgICB5ZGF5Kys7CiAgKiAgICAgIH0KICAqLwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9tb2R1bGVzL25neF9rcXVldWVfbW9kdWxlLmMgYi9zcmMvZXZlbnQvbW9kdWxlcy9uZ3hfa3F1ZXVlX21vZHVsZS5jCmluZGV4IDQ5YzIyYTkuLjQ5NzcwZmQgMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9tb2R1bGVzL25neF9rcXVldWVfbW9kdWxlLmMKKysrIGIvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2txdWV1ZV9tb2R1bGUuYwpAQCAtMzkwLDcgKzM5MCw3IEBACiAgICAga2V2LT5pZGVudCA9IGMtPmZkOwogICAgIGtldi0+ZmlsdGVyID0gZmlsdGVyOwogICAgIGtldi0+ZmxhZ3MgPSBmbGFnczsKLSAgICBrZXYtPnVkYXRhID0gKHZvaWQgKikgKCh1aW50cHRyX3QpIGV2IHwgZXYtPmluc3RhbmNlKTsKKyAgICBrZXYtPnVkYXRhID0gTkdYX0tRVUVVRV9VREFUQV9UICgodWludHB0cl90KSBldiB8IGV2LT5pbnN0YW5jZSk7CiAKICAgICBpZiAoZmlsdGVyID09IEVWRklMVF9WTk9ERSkgewogICAgICAgICBrZXYtPmZmbGFncyA9IE5PVEVfREVMRVRFfE5PVEVfV1JJVEV8Tk9URV9FWFRFTkQKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5jIGIvc3JjL2V2ZW50L25neF9ldmVudF9vcGVuc3NsLmMKaW5kZXggMTVhMjVkMS4uY2FkZDBhYSAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L25neF9ldmVudF9vcGVuc3NsLmMKKysrIGIvc3JjL2V2ZW50L25neF9ldmVudF9vcGVuc3NsLmMKQEAgLTExLDEyICsxMSwxNCBAQAogI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+CiAKIAorc3RhdGljIG5neF9pbnRfdCBuZ3hfc3NsX2hhbmRsZV9yZWN2KG5neF9jb25uZWN0aW9uX3QgKmMsIGludCBuKTsKIHN0YXRpYyB2b2lkIG5neF9zc2xfd3JpdGVfaGFuZGxlcihuZ3hfZXZlbnRfdCAqd2V2KTsKIHN0YXRpYyBzc2l6ZV90IG5neF9zc2xfd3JpdGUobmd4X2Nvbm5lY3Rpb25fdCAqYywgdV9jaGFyICpkYXRhLCBzaXplX3Qgc2l6ZSk7CiBzdGF0aWMgdm9pZCBuZ3hfc3NsX3JlYWRfaGFuZGxlcihuZ3hfZXZlbnRfdCAqcmV2KTsKIAogCi1uZ3hfaW50X3Qgbmd4X3NzbF9pbml0KG5neF9sb2dfdCAqbG9nKQorbmd4X2ludF90CituZ3hfc3NsX2luaXQobmd4X2xvZ190ICpsb2cpCiB7CiAgICAgRU5HSU5FICAqZW5naW5lOwogCkBAIC0yOCw4ICszMCw5IEBACiB9CiAKIAotbmd4X2ludF90IG5neF9zc2xfY3JlYXRlX3Nlc3Npb24obmd4X3NzbF9jdHhfdCAqc3NsX2N0eCwgbmd4X2Nvbm5lY3Rpb25fdCAqYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF91aW50X3QgZmxhZ3MpCituZ3hfaW50X3QKK25neF9zc2xfY3JlYXRlX3Nlc3Npb24obmd4X3NzbF9jdHhfdCAqc3NsX2N0eCwgbmd4X2Nvbm5lY3Rpb25fdCAqYywKKyAgICBuZ3hfdWludF90IGZsYWdzKQogeyAgIAogICAgIG5neF9zc2xfdCAgKnNzbDsKIApAQCAtNjUsNTggKzY4LDEwNSBAQAogfQogCiAKLXNzaXplX3Qgbmd4X3NzbF9yZWN2KG5neF9jb25uZWN0aW9uX3QgKmMsIHVfY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKK3NzaXplX3QKK25neF9zc2xfcmVjdihuZ3hfY29ubmVjdGlvbl90ICpjLCB1X2NoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7Ci0gICAgaW50ICAgICAgICAgbiwgc3NsZXJyOwotICAgIG5neF9lcnJfdCAgIGVycjsKLSAgICBjaGFyICAgICAgICpoYW5kc2hha2U7CisgICAgaW50ICBuLCBieXRlczsKIAotICAgIG4gPSBTU0xfcmVhZChjLT5zc2wtPnNzbCwgYnVmLCBzaXplKTsKKyAgICBpZiAoYy0+c3NsLT5sYXN0ID09IE5HWF9FUlJPUikgeworICAgICAgICByZXR1cm4gTkdYX0VSUk9SOworICAgIH0KIAotICAgIG5neF9sb2dfZGVidWcxKE5HWF9MT0dfREVCVUdfRVZFTlQsIGMtPmxvZywgMCwgIlNTTF9yZWFkOiAlZCIsIG4pOyAKKyAgICBieXRlcyA9IDA7CiAKLSAgICBpZiAobiA+IDApIHsKKyAgICAvKgorICAgICAqIFNTTF9yZWFkKCkgbWF5IHJldHVybiBkYXRhIGluIHBhcnRzLCBzbyB0cnkgdG8gcmVhZAorICAgICAqIHVudGlsIFNTTF9yZWFkKCkgd291bGQgcmV0dXJuIG5vIGRhdGEKKyAgICAgKi8KKworICAgIGZvciAoIDs7ICkgeworCisgICAgICAgIG4gPSBTU0xfcmVhZChjLT5zc2wtPnNzbCwgYnVmLCBzaXplKTsKKworICAgICAgICBuZ3hfbG9nX2RlYnVnMShOR1hfTE9HX0RFQlVHX0VWRU5ULCBjLT5sb2csIDAsICJTU0xfcmVhZDogJWQiLCBuKTsgCisKKyAgICAgICAgaWYgKG4gPiAwKSB7CisKKyAgICAgICAgICAgIGJ5dGVzICs9IG47CiAKICNpZiAoTkdYX0RFQlVHKQogCi0gICAgICAgIGlmICghYy0+c3NsLT5oYW5kc2hha2VkICYmIFNTTF9pc19pbml0X2ZpbmlzaGVkKGMtPnNzbC0+c3NsKSkgewotICAgICAgICAgICAgY2hhciAgICAgICAgIGJ1ZlsxMjldLCAqcywgKmQ7Ci0gICAgICAgICAgICBTU0xfQ0lQSEVSICAqY2lwaGVyOworICAgICAgICAgICAgaWYgKCFjLT5zc2wtPmhhbmRzaGFrZWQgJiYgU1NMX2lzX2luaXRfZmluaXNoZWQoYy0+c3NsLT5zc2wpKSB7CisgICAgICAgICAgICAgICAgY2hhciAgICAgICAgIGJ1ZlsxMjldLCAqcywgKmQ7CisgICAgICAgICAgICAgICAgU1NMX0NJUEhFUiAgKmNpcGhlcjsKIAotICAgICAgICAgICAgYy0+c3NsLT5oYW5kc2hha2VkID0gMTsKKyAgICAgICAgICAgICAgICBjLT5zc2wtPmhhbmRzaGFrZWQgPSAxOwogCi0gICAgICAgICAgICBjaXBoZXIgPSBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKGMtPnNzbC0+c3NsKTsKKyAgICAgICAgICAgICAgICBjaXBoZXIgPSBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKGMtPnNzbC0+c3NsKTsKIAotICAgICAgICAgICAgaWYgKGNpcGhlcikgewotICAgICAgICAgICAgICAgIFNTTF9DSVBIRVJfZGVzY3JpcHRpb24oY2lwaGVyLCAmYnVmWzFdLCAxMjgpOworICAgICAgICAgICAgICAgIGlmIChjaXBoZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgU1NMX0NJUEhFUl9kZXNjcmlwdGlvbihjaXBoZXIsICZidWZbMV0sIDEyOCk7CiAKLSAgICAgICAgICAgICAgICBmb3IgKHMgPSAmYnVmWzFdLCBkID0gYnVmOyAqczsgcysrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgqcyA9PSAnICcgJiYgKmQgPT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzID0gJmJ1ZlsxXSwgZCA9IGJ1ZjsgKnM7IHMrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpzID09ICcgJyAmJiAqZCA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpzID09ICdcbicgfHwgKnMgPT0gJ1xyJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAqKytkID0gKnM7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoKnMgPT0gJ1xuJyB8fCAqcyA9PSAnXHInKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpkICE9ICcgJykgeworICAgICAgICAgICAgICAgICAgICAgICAgZCsrOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgKisrZCA9ICpzOworICAgICAgICAgICAgICAgICAgICAqZCA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAgICAgbmd4X2xvZ19kZWJ1ZzEoTkdYX0xPR19ERUJVR19FVkVOVCwgYy0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1NMIGNpcGhlcjogXCIlc1wiIiwgJmJ1ZlsxXSk7IAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG5neF9sb2dfZGVidWcwKE5HWF9MT0dfREVCVUdfRVZFTlQsIGMtPmxvZywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNTTCBubyBzaGFyZWQgY2lwaGVycyIpOyAKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisjZW5kaWYKIAotICAgICAgICAgICAgICAgIGlmICgqZCAhPSAnICcpIHsKLSAgICAgICAgICAgICAgICAgICAgZCsrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgKmQgPSAnXDAnOworICAgICAgICBjLT5zc2wtPmxhc3QgPSBuZ3hfc3NsX2hhbmRsZV9yZWN2KGMsIG4pOwogCi0gICAgICAgICAgICAgICAgbmd4X2xvZ19kZWJ1ZzEoTkdYX0xPR19ERUJVR19FVkVOVCwgYy0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTU0wgY2lwaGVyOiBcIiVzXCIiLCAmYnVmWzFdKTsgCisgICAgICAgIGlmIChjLT5zc2wtPmxhc3QgIT0gTkdYX09LKSB7CisKKyAgICAgICAgICAgIGlmIChieXRlcykgeworICAgICAgICAgICAgICAgIHJldHVybiBieXRlczsKKwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0VWRU5ULCBjLT5sb2csIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNTTCBubyBzaGFyZWQgY2lwaGVycyIpOyAKKyAgICAgICAgICAgICAgICByZXR1cm4gYy0+c3NsLT5sYXN0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSNlbmRpZgorICAgICAgICBzaXplIC09IG47CisKKyAgICAgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGJ5dGVzOworICAgICAgICB9CisKKyAgICAgICAgYnVmICs9IG47CisgICAgfQorfQorCisKK3N0YXRpYyBuZ3hfaW50X3QKK25neF9zc2xfaGFuZGxlX3JlY3Yobmd4X2Nvbm5lY3Rpb25fdCAqYywgaW50IG4pCit7CisgICAgaW50ICAgICAgICAgc3NsZXJyOworICAgIG5neF9lcnJfdCAgIGVycjsKKyAgICBjaGFyICAgICAgICpoYW5kc2hha2U7CisKKyAgICBpZiAobiA+IDApIHsKIAogICAgICAgICBpZiAoYy0+c3NsLT5zYXZlZF93cml0ZV9oYW5kbGVyKSB7CiAKQEAgLTEzNyw3ICsxODcsNyBAQAogICAgICAgICAgICAgbmd4X211dGV4X3VubG9jayhuZ3hfcG9zdGVkX2V2ZW50c19tdXRleCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICB9CiAKICAgICBpZiAoIVNTTF9pc19pbml0X2ZpbmlzaGVkKGMtPnNzbC0+c3NsKSkgewpAQCAtMTk3LDcgKzI0Nyw4IEBACiB9CiAKIAotc3RhdGljIHZvaWQgbmd4X3NzbF93cml0ZV9oYW5kbGVyKG5neF9ldmVudF90ICp3ZXYpCitzdGF0aWMgdm9pZAorbmd4X3NzbF93cml0ZV9oYW5kbGVyKG5neF9ldmVudF90ICp3ZXYpCiB7CiAgICAgbmd4X2Nvbm5lY3Rpb25fdCAgKmM7CiAKQEAgLTIxNCw4ICsyNjUsOCBAQAogICogdGhlIG91dHB1dCB0byBkZWNyZWFzZSBhIFNTTCBvdmVyaGVhZCBzb21lIG1vcmUuCiAgKi8KIAotbmd4X2NoYWluX3QgKm5neF9zc2xfc2VuZF9jaGFpbihuZ3hfY29ubmVjdGlvbl90ICpjLCBuZ3hfY2hhaW5fdCAqaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZl90IGxpbWl0KQorbmd4X2NoYWluX3QgKgorbmd4X3NzbF9zZW5kX2NoYWluKG5neF9jb25uZWN0aW9uX3QgKmMsIG5neF9jaGFpbl90ICppbiwgb2ZmX3QgbGltaXQpCiB7CiAgICAgaW50ICAgICAgICAgIG47CiAgICAgbmd4X3VpbnRfdCAgIGZsdXNoOwpAQCAtMzM4LDcgKzM4OSw4IEBACiB9CiAKIAotc3RhdGljIHNzaXplX3Qgbmd4X3NzbF93cml0ZShuZ3hfY29ubmVjdGlvbl90ICpjLCB1X2NoYXIgKmRhdGEsIHNpemVfdCBzaXplKQorc3RhdGljIHNzaXplX3QKK25neF9zc2xfd3JpdGUobmd4X2Nvbm5lY3Rpb25fdCAqYywgdV9jaGFyICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpbnQgICAgICAgICBuLCBzc2xlcnI7CiAgICAgbmd4X2Vycl90ICAgZXJyOwpAQCAtNDI0LDcgKzQ3Niw4IEBACiB9CiAKIAotc3RhdGljIHZvaWQgbmd4X3NzbF9yZWFkX2hhbmRsZXIobmd4X2V2ZW50X3QgKnJldikKK3N0YXRpYyB2b2lkCituZ3hfc3NsX3JlYWRfaGFuZGxlcihuZ3hfZXZlbnRfdCAqcmV2KQogewogICAgIG5neF9jb25uZWN0aW9uX3QgICpjOwogCkBAIC00MzMsNyArNDg2LDggQEAKIH0KIAogCi1uZ3hfaW50X3Qgbmd4X3NzbF9zaHV0ZG93bihuZ3hfY29ubmVjdGlvbl90ICpjKQorbmd4X2ludF90CituZ3hfc3NsX3NodXRkb3duKG5neF9jb25uZWN0aW9uX3QgKmMpCiB7CiAgICAgaW50ICAgICAgICAgbiwgc3NsZXJyLCBtb2RlOwogICAgIG5neF91aW50X3QgIGFnYWluOwpAQCAtNTIwLDggKzU3NCw4IEBACiB9CiAKIAotdm9pZCBuZ3hfc3NsX2Vycm9yKG5neF91aW50X3QgbGV2ZWwsIG5neF9sb2dfdCAqbG9nLCBuZ3hfZXJyX3QgZXJyLAotICAgICAgICAgICAgICAgICAgIGNoYXIgKmZtdCwgLi4uKQordm9pZAorbmd4X3NzbF9lcnJvcihuZ3hfdWludF90IGxldmVsLCBuZ3hfbG9nX3QgKmxvZywgbmd4X2Vycl90IGVyciwgY2hhciAqZm10LCAuLi4pCiB7ICAgCiAgICAgdV9jaGFyICAgZXJyc3RyW05HWF9NQVhfQ09ORl9FUlJTVFJdLCAqcCwgKmxhc3Q7CiAgICAgdmFfbGlzdCAgYXJnczsKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5oIGIvc3JjL2V2ZW50L25neF9ldmVudF9vcGVuc3NsLmgKaW5kZXggMjI0Y2M4NC4uYWZlYmRlNiAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L25neF9ldmVudF9vcGVuc3NsLmgKKysrIGIvc3JjL2V2ZW50L25neF9ldmVudF9vcGVuc3NsLmgKQEAgLTE3LDYgKzE3LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFNTTCAgICAgICAgICAgICAgICAgICAqc3NsOworICAgIG5neF9pbnRfdCAgICAgICAgICAgICAgbGFzdDsKICAgICBuZ3hfYnVmX3QgICAgICAgICAgICAgKmJ1ZjsKICAgICBuZ3hfZXZlbnRfaGFuZGxlcl9wdCAgIHNhdmVkX3JlYWRfaGFuZGxlcjsKICAgICBuZ3hfZXZlbnRfaGFuZGxlcl9wdCAgIHNhdmVkX3dyaXRlX2hhbmRsZXI7CkBAIC00OSwxMCArNTAsMTAgQEAKIAogc3NpemVfdCBuZ3hfc3NsX3JlY3Yobmd4X2Nvbm5lY3Rpb25fdCAqYywgdV9jaGFyICpidWYsIHNpemVfdCBzaXplKTsKIG5neF9jaGFpbl90ICpuZ3hfc3NsX3NlbmRfY2hhaW4obmd4X2Nvbm5lY3Rpb25fdCAqYywgbmd4X2NoYWluX3QgKmluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZfdCBsaW1pdCk7CisgICAgb2ZmX3QgbGltaXQpOwogbmd4X2ludF90IG5neF9zc2xfc2h1dGRvd24obmd4X2Nvbm5lY3Rpb25fdCAqYyk7CiB2b2lkIG5neF9zc2xfZXJyb3Iobmd4X3VpbnRfdCBsZXZlbCwgbmd4X2xvZ190ICpsb2csIG5neF9lcnJfdCBlcnIsCi0gICAgICAgICAgICAgICAgICAgY2hhciAqZm10LCAuLi4pOworICAgIGNoYXIgKmZtdCwgLi4uKTsKIAogCiAjZW5kaWYgLyogX05HWF9FVkVOVF9PUEVOU1NMX0hfSU5DTFVERURfICovCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2F1dG9pbmRleF9oYW5kbGVyLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2F1dG9pbmRleF9oYW5kbGVyLmMKaW5kZXggYWMyNDM4ZS4uMmU1NTVhMCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9hdXRvaW5kZXhfaGFuZGxlci5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfYXV0b2luZGV4X2hhbmRsZXIuYwpAQCAtMTI4LDYgKzEyOCwxMSBAQAogICAgICAgICByZXR1cm4gTkdYX0RFQ0xJTkVEOwogICAgIH0KIAorICAgIC8qIFRPRE86IFdpbjMyICovCisgICAgaWYgKHItPnplcm9faW5fdXJpKSB7CisgICAgICAgIHJldHVybiBOR1hfREVDTElORUQ7CisgICAgfQorCiAgICAgYWxjZiA9IG5neF9odHRwX2dldF9tb2R1bGVfbG9jX2NvbmYociwgbmd4X2h0dHBfYXV0b2luZGV4X21vZHVsZSk7CiAKICAgICBpZiAoIWFsY2YtPmVuYWJsZSkgewpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9nZW9fbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2dlb19tb2R1bGUuYwppbmRleCA3ZDE3ZjAzLi4wZDgyNjdkIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2dlb19tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2dlb19tb2R1bGUuYwpAQCAtMTAsOSArMTAsOSBAQAogCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBuZ3hfcmFkaXhfdHJlZV90ICAgICAgICAgICAqdHJlZTsKLSAgICBuZ3hfcG9vbF90ICAgICAgICAgICAgICAgICAqcG9vbDsKLSAgICBuZ3hfYXJyYXlfdCAgICAgICAgICAgICAgICAgdmFsdWVzOworICAgIG5neF9yYWRpeF90cmVlX3QgICp0cmVlOworICAgIG5neF9wb29sX3QgICAgICAgICpwb29sOworICAgIG5neF9hcnJheV90ICAgICAgICB2YWx1ZXM7CiB9IG5neF9odHRwX2dlb19jb25mX3Q7CiAKIApAQCAtNjMsMjEgKzYzLDMxIEBACiAKIC8qIEFGX0lORVQgb25seSAqLwogCi1zdGF0aWMgbmd4X2h0dHBfdmFyaWFibGVfdmFsdWVfdCAqbmd4X2h0dHBfZ2VvX3ZhcmlhYmxlKG5neF9odHRwX3JlcXVlc3RfdCAqciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkKK3N0YXRpYyBuZ3hfaHR0cF92YXJpYWJsZV92YWx1ZV90ICoKK25neF9odHRwX2dlb192YXJpYWJsZShuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIHZvaWQgKmRhdGEpCiB7CiAgICAgbmd4X3JhZGl4X3RyZWVfdCAqdHJlZSA9IGRhdGE7CiAKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gICpzaW47CisgICAgc3RydWN0IHNvY2thZGRyX2luICAgICAgICAgKnNpbjsKKyAgICBuZ3hfaHR0cF92YXJpYWJsZV92YWx1ZV90ICAqdmFyOwogCiAgICAgc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSByLT5jb25uZWN0aW9uLT5zb2NrYWRkcjsKIAotICAgIHJldHVybiAobmd4X2h0dHBfdmFyaWFibGVfdmFsdWVfdCAqKQorICAgIG5neF9sb2dfZGVidWcwKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgICJodHRwIGdlbyBzdGFydGVkIik7CisKKyAgICB2YXIgID0gKG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKikKICAgICAgICAgICAgICAgICAgICAgICAgbmd4X3JhZGl4MzJ0cmVlX2ZpbmQodHJlZSwgbnRvaGwoc2luLT5zaW5fYWRkci5zX2FkZHIpKTsKKworICAgIG5neF9sb2dfZGVidWcyKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgICJodHRwIGdlbzogJVYgJVYiLCAmci0+Y29ubmVjdGlvbi0+YWRkcl90ZXh0LCAmdmFyLT50ZXh0KTsKKworICAgIHJldHVybiB2YXI7CiB9CiAKIAotc3RhdGljIGNoYXIgKm5neF9odHRwX2dlb19ibG9jayhuZ3hfY29uZl90ICpjZiwgbmd4X2NvbW1hbmRfdCAqY21kLCB2b2lkICpjb25mKQorc3RhdGljIGNoYXIgKgorbmd4X2h0dHBfZ2VvX2Jsb2NrKG5neF9jb25mX3QgKmNmLCBuZ3hfY29tbWFuZF90ICpjbWQsIHZvaWQgKmNvbmYpCiB7CiAgICAgY2hhciAgICAgICAgICAgICAgICAgKnJ2OwogICAgIG5neF9zdHJfdCAgICAgICAgICAgICp2YWx1ZTsKQEAgLTkxLDcgKzEwMSw3IEBACiAgICAgICAgIHJldHVybiBOR1hfQ09ORl9FUlJPUjsKICAgICB9CiAKLSAgICBpZiAoISh0cmVlID0gbmd4X3JhZGl4X3RyZWVfY3JlYXRlKGNmLT5wb29sLCA4KSkpIHsKKyAgICBpZiAoISh0cmVlID0gbmd4X3JhZGl4X3RyZWVfY3JlYXRlKGNmLT5wb29sLCAtMSkpKSB7CiAgICAgICAgIHJldHVybiBOR1hfQ09ORl9FUlJPUjsKICAgICB9CiAKQEAgLTE0OCw3ICsxNTgsOCBAQAogCiAvKiBBRl9JTkVUIG9ubHkgKi8KIAotc3RhdGljIGNoYXIgKm5neF9odHRwX2dlbyhuZ3hfY29uZl90ICpjZiwgbmd4X2NvbW1hbmRfdCAqZHVtbXksIHZvaWQgKmNvbmYpCitzdGF0aWMgY2hhciAqCituZ3hfaHR0cF9nZW8obmd4X2NvbmZfdCAqY2YsIG5neF9jb21tYW5kX3QgKmR1bW15LCB2b2lkICpjb25mKQogewogICAgIG5neF9pbnRfdCAgICAgICAgICAgICAgICAgICByYywgbjsKICAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICAgaTsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZ3ppcF9maWx0ZXIuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZ3ppcF9maWx0ZXIuYwppbmRleCBjY2Y1ZGM0Li5jN2ExNmE3IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2d6aXBfZmlsdGVyLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9nemlwX2ZpbHRlci5jCkBAIC0yMTYsNyArMjE2LDcgQEAKICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtZXJnZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiAqLwogCiAgICAgbmd4X2h0dHBfZ3ppcF9jcmVhdGVfY29uZiwgICAgICAgICAgICAgLyogY3JlYXRlIGxvY2F0aW9uIGNvbmZpZ3VyYXRpb24gKi8KLSAgICBuZ3hfaHR0cF9nemlwX21lcmdlX2NvbmYsICAgICAgICAgICAgICAvKiBtZXJnZSBsb2NhdGlvbiBjb25maWd1cmF0aW9uICovCisgICAgbmd4X2h0dHBfZ3ppcF9tZXJnZV9jb25mICAgICAgICAgICAgICAgLyogbWVyZ2UgbG9jYXRpb24gY29uZmlndXJhdGlvbiAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2luZGV4X2hhbmRsZXIuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfaGFuZGxlci5jCmluZGV4IDg5MmI4MjUuLjFjN2QwZGYgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfaGFuZGxlci5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfaGFuZGxlci5jCkBAIC0xMjAsNiArMTIwLDExIEBACiAgICAgICAgIHJldHVybiBOR1hfREVDTElORUQ7CiAgICAgfQogCisgICAgLyogVE9ETzogV2luMzIgKi8KKyAgICBpZiAoci0+emVyb19pbl91cmkpIHsKKyAgICAgICAgcmV0dXJuIE5HWF9ERUNMSU5FRDsKKyAgICB9CisKICAgICBsb2cgPSByLT5jb25uZWN0aW9uLT5sb2c7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2lfZmlsdGVyLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzaV9maWx0ZXIuYwppbmRleCAzMzRkZDUzLi5lZWI1MTVmIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzaV9maWx0ZXIuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzaV9maWx0ZXIuYwpAQCAtNTE4LDQ4ICs1MTgsNDkgQEAKICNlbmRpZgogCiAKLXN0YXRpYyBuZ3hfaW50X3Qgbmd4X2h0dHBfc3NpX3BhcnNlKG5neF9odHRwX3JlcXVlc3RfdCAqciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9odHRwX3NzaV9jdHhfdCAqY3R4KQorc3RhdGljIG5neF9pbnRfdAorbmd4X2h0dHBfc3NpX3BhcnNlKG5neF9odHRwX3JlcXVlc3RfdCAqciwgbmd4X2h0dHBfc3NpX2N0eF90ICpjdHgpCiB7Ci0gICAgY2hhciAgICAgICAgICAgICAgICAgICpwLCAqbGFzdCwgKmVuZCwgY2g7CisgICAgdV9jaGFyICAgICAgICAgICAgICAgICpwLCAqbGFzdCwgKmVuZCwgY2g7CiAgICAgbmd4X2h0dHBfc3NpX2NvbmZfdCAgICpjb25mOwogICAgIG5neF9odHRwX3NzaV9zdGF0ZV9lICAgc3RhdGU7CiAKICAgICBjb25mID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9sb2NfY29uZihyLCBuZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZSk7CiAKICAgICBzdGF0ZSA9IGN0eC0+c3RhdGU7Ci0gICAgcCA9IGN0eC0+cG9zOwogICAgIGVuZCA9IGN0eC0+YnVmLT5sYXN0OwogICAgIGxhc3QgPSBOVUxMOwogCi0gICAgd2hpbGUgKHAgPCBlbmQpIHsKLSAgICAgICAgY2ggPSAqcCsrOworICAgIGZvciAocCA9IGN0eC0+cG9zOyBwIDwgZW5kOyBwKyspIHsKKworICAgICAgICBjaCA9ICpwOworCisgICAgICAgIGlmIChzdGF0ZSA9PSBzc2lfc3RhcnRfc3RhdGUpIHsKKworICAgICAgICAgICAgLyogdGhlIHRpZ2h0IGxvb3AgKi8KKworICAgICAgICAgICAgZm9yICggLyogdm9pZCAqLyA7IHAgPCBlbmQ7IHArKykgeworICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnPCcpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGFzdCA9IHA7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBzc2lfdGFnX3N0YXRlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocCA9PSBlbmQpIHsKKyAgICAgICAgICAgICAgICBjdHgtPmxhc3QgPSBwOworICAgICAgICAgICAgICAgIGN0eC0+cG9zID0gcDsKKyAgICAgICAgICAgICAgICBjdHgtPnN0YXRlID0gc3NpX3N0YXJ0X3N0YXRlOworCisgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1NTSV9DT1BZOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewogCiAgICAgICAgIGNhc2Ugc3NpX3N0YXJ0X3N0YXRlOgotCi0gICAgICAgICAgICAvKiBhIHRpZ2h0IGxvb3AgKi8KLQotICAgICAgICAgICAgZm9yICggOzsgKSB7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJzwnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzc2lfdGFnX3N0YXRlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAocCA9PSBlbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgY3R4LT5sYXN0ID0gcDsKLSAgICAgICAgICAgICAgICAgICAgY3R4LT5wb3MgPSBwOwotICAgICAgICAgICAgICAgICAgICBjdHgtPnN0YXRlID0gc3NpX3N0YXJ0X3N0YXRlOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOR1hfSFRUUF9TU0lfQ09QWTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjaCA9ICpwKys7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ugc3NpX3RhZ19zdGF0ZToKQEAgLTU2OSw3ICs1NzAsNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICAgICAgICBsYXN0ID0gcCAtIDE7CisgICAgICAgICAgICAgICAgbGFzdCA9IHA7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC01ODYsNyArNTg3LDcgQEAKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgICAgICAgICAgbGFzdCA9IHAgLSAxOworICAgICAgICAgICAgICAgIGxhc3QgPSBwOwogICAgICAgICAgICAgICAgIHN0YXRlID0gc3NpX3RhZ19zdGF0ZTsKICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNjA0LDcgKzYwNSw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgJzwnOgotICAgICAgICAgICAgICAgIGxhc3QgPSBwIC0gMTsKKyAgICAgICAgICAgICAgICBsYXN0ID0gcDsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IHNzaV90YWdfc3RhdGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTYyMSwxMSArNjIyLDEwIEBACiAgICAgICAgICAgICAgICAgY3R4LT5sYXN0ID0gbGFzdDsKICAgICAgICAgICAgICAgICBjdHgtPnBvcyA9IHA7CiAgICAgICAgICAgICAgICAgY3R4LT5zdGF0ZSA9IHNzaV9wcmVjb21tYW5kX3N0YXRlOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1NTSV9DT1BZOworICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICAgICAgICBsYXN0ID0gcCAtIDE7CisgICAgICAgICAgICAgICAgbGFzdCA9IHA7CiAgICAgICAgICAgICAgICAgc3RhdGUgPSBzc2lfdGFnX3N0YXRlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC02NDUsMTQgKzY0NSwxNCBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGN0eC0+Y29tbWFuZC5sZW4gPSAxOwogICAgICAgICAgICAgICAgIGN0eC0+Y29tbWFuZC5kYXRhID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9wYWxsb2Moci0+cG9vbCwgTkdYX0hUVFBfU1NJX0NPTU1BTkRfTEVOICsgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfcGFsbG9jKHItPnBvb2wsIE5HWF9IVFRQX1NTSV9DT01NQU5EX0xFTik7CiAgICAgICAgICAgICAgICAgaWYgKGN0eC0+Y29tbWFuZC5kYXRhID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBjdHgtPmNvbW1hbmQuZGF0YVswXSA9IGNoOwotICAgICAgICAgICAgICAgIGN0eC0+Y29tbWFuZC5sZW4gPSAxOwogICAgICAgICAgICAgICAgIHN0YXRlID0gc3NpX2NvbW1hbmRfc3RhdGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC02NjUsMjAgKzY2NSwxNSBAQAogICAgICAgICAgICAgY2FzZSBDUjoKICAgICAgICAgICAgIGNhc2UgTEY6CiAgICAgICAgICAgICBjYXNlICdcdCc6Ci0gICAgICAgICAgICAgICAgY3R4LT5jb21tYW5kLmRhdGFbY3R4LT5jb21tYW5kLmxlbl0gPSAwOwogICAgICAgICAgICAgICAgIHN0YXRlID0gc3NpX3ByZXBhcmFtX3N0YXRlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICctJzoKLSAgICAgICAgICAgICAgICBjdHgtPmNvbW1hbmQuZGF0YVtjdHgtPmNvbW1hbmQubGVuXSA9IDA7CiAgICAgICAgICAgICAgICAgc3RhdGUgPSBzc2lfY29tbWVudF9lbmQwX3N0YXRlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlmIChjdHgtPmNvbW1hbmQubGVuID49IE5HWF9IVFRQX1NTSV9DT01NQU5EX0xFTikgewotICAgICAgICAgICAgICAgICAgICBjdHgtPmNvbW1hbmQuZGF0YVtOR1hfSFRUUF9TU0lfQ09NTUFORF9MRU5dID0gMDsKLQotICAgICAgICAgICAgICAgICAgICBjdHgtPmxhc3QgPSBsYXN0OworICAgICAgICAgICAgICAgIGlmIChjdHgtPmNvbW1hbmQubGVuID09IE5HWF9IVFRQX1NTSV9DT01NQU5EX0xFTikgewogICAgICAgICAgICAgICAgICAgICBjdHgtPnBvcyA9IHA7CiAgICAgICAgICAgICAgICAgICAgIGN0eC0+c3RhdGUgPSBzc2lfZXJyb3Jfc3RhdGU7CiAKQEAgLTcwNCwyOCArNjk5LDMwIEBACiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cGFyYW1zLmVsdHMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBuZ3hfaW5pdF9hcnJheShjdHgtPnBhcmFtcywgci0+cG9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSwgc2l6ZW9mKG5neF90YWJsZV9lbHRfdCksIE5HWF9FUlJPUik7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZ3hfYXJyYXlfaW5pdCgmY3R4LT5wYXJhbXMgPSByLT5wb29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgc2l6ZW9mKG5neF90YWJsZV9lbHRfdCkpID0gTkdYX0VSUk9SKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0VSUk9SOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCEoY3R4LT5wYXJhbSA9IG5neF9wdXNoX2FycmF5KCZjdHgtPnBhcmFtcykpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoY3R4LT5wYXJhbSA9IG5neF9hcnJheV9wdXNoKCZjdHgtPnBhcmFtcykpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgY3R4LT5wYXJhbS0+a2V5LmxlbiA9IDE7CiAgICAgICAgICAgICAgICAgY3R4LT5wYXJhbS0+a2V5LmRhdGEgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9wYWxsb2Moci0+cG9vbCwgTkdYX0hUVFBfU1NJX1BBUkFNX0xFTiArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfcGFsbG9jKHItPnBvb2wsIE5HWF9IVFRQX1NTSV9QQVJBTV9MRU4pOwogICAgICAgICAgICAgICAgIGlmIChjdHgtPnBhcmFtLT5rZXkuZGF0YSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGN0eC0+cGFyYW0tPmtleS5kYXRhWzBdID0gY2g7Ci0gICAgICAgICAgICAgICAgY3R4LT5wYXJhbS0+a2V5LmxlbiA9IDE7CiAKLSAgICAgICAgICAgICAgICBjdHgtPnBhcmFtLT52YWx1ZS5kYXRhID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9wYWxsb2Moci0+cG9vbCwgY29uZi0+dmFsdWVfbGVuICsgMSk7CisgICAgICAgICAgICAgICAgY3R4LT5wYXJhbS0+dmFsdWUubGVuID0gMDsKKyAgICAgICAgICAgICAgICBjdHgtPnBhcmFtLT52YWx1ZS5kYXRhID0gbmd4X3BhbGxvYyhyLT5wb29sLCBjb25mLT52YWx1ZV9sZW4pOwogICAgICAgICAgICAgICAgIGlmIChjdHgtPnBhcmFtLT52YWx1ZS5kYXRhID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3R4LT5wYXJhbS0+dmFsdWUubGVuID0gMDsKIAogICAgICAgICAgICAgICAgIHN0YXRlID0gc3NpX3BhcmFtX3N0YXRlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzM5LDI3ICs3MzYsMjEgQEAKICAgICAgICAgICAgIGNhc2UgQ1I6CiAgICAgICAgICAgICBjYXNlIExGOgogICAgICAgICAgICAgY2FzZSAnXHQnOgotICAgICAgICAgICAgICAgIGN0eC0+cGFyYW0tPmtleS5kYXRhW2N0eC0+cGFyYW0tPmtleS5sZW5dID0gMDsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IHNzaV9wcmVlcXVhbF9zdGF0ZTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAnPSc6Ci0gICAgICAgICAgICAgICAgY3R4LT5wYXJhbS0+a2V5LmRhdGFbY3R4LT5wYXJhbS0+a2V5Lmxlbl0gPSAwOwogICAgICAgICAgICAgICAgIHN0YXRlID0gc3NpX3ByZXZhbHVlX3N0YXRlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICctJzoKLSAgICAgICAgICAgICAgICBjdHgtPmxhc3QgPSBsYXN0OwogICAgICAgICAgICAgICAgIGN0eC0+cG9zID0gcDsKICAgICAgICAgICAgICAgICBjdHgtPnN0YXRlID0gc3NpX2Vycm9yX2VuZDBfc3RhdGU7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0lOVkFMSURfUEFSQU07CiAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKGN0eC0+cGFyYW0tPmtleS5sZW4gPj0gTkdYX0hUVFBfU1NJX1BBUkFNX0xFTikgewotICAgICAgICAgICAgICAgICAgICBjdHgtPnBhcmFtLT5rZXkuZGF0YVtOR1hfSFRUUF9TU0lfUEFSQU1fTEVOXSA9IDA7Ci0KLSAgICAgICAgICAgICAgICAgICAgY3R4LT5sYXN0ID0gbGFzdDsKKyAgICAgICAgICAgICAgICBpZiAoY3R4LT5wYXJhbS0+a2V5LmxlbiA9PSBOR1hfSFRUUF9TU0lfUEFSQU1fTEVOKSB7CiAgICAgICAgICAgICAgICAgICAgIGN0eC0+cG9zID0gcDsKICAgICAgICAgICAgICAgICAgICAgY3R4LT5zdGF0ZSA9IHNzaV9lcnJvcl9zdGF0ZTsKIApAQCAtNzg0LDcgKzc3NSw2IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgJy0nOgotICAgICAgICAgICAgICAgIGN0eC0+bGFzdCA9IGxhc3Q7CiAgICAgICAgICAgICAgICAgY3R4LT5wb3MgPSBwOwogICAgICAgICAgICAgICAgIGN0eC0+c3RhdGUgPSBzc2lfZXJyb3JfZW5kMF9zdGF0ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdGF0aWNfaGFuZGxlci5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zdGF0aWNfaGFuZGxlci5jCmluZGV4IGZhMmJjZDUuLjFmZjQ1ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3RhdGljX2hhbmRsZXIuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3N0YXRpY19oYW5kbGVyLmMKQEAgLTg3LDYgKzg3LDExIEBACiAgICAgICAgIHJldHVybiBOR1hfREVDTElORUQ7CiAgICAgfQogCisgICAgLyogVE9ETzogV2luMzIgKi8KKyAgICBpZiAoci0+emVyb19pbl91cmkpIHsKKyAgICAgICAgcmV0dXJuIE5HWF9ERUNMSU5FRDsKKyAgICB9CisKICAgICBpZiAoci0+bWV0aG9kICE9IE5HWF9IVFRQX0dFVCAmJiByLT5tZXRob2QgIT0gTkdYX0hUVFBfSEVBRCkgewogICAgICAgICByZXR1cm4gTkdYX0hUVFBfTk9UX0FMTE9XRUQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYyBiL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMKaW5kZXggOGI2NmE3OS4uYjNjMWExNCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jCkBAIC00MTUsNiArNDE1LDggQEAKIAogICAgIHItPnVyaV9jaGFuZ2VkID0gMTsKICAgICByLT51cmlfY2hhbmdlcyA9IDExOworICAgIHItPnBoYXNlID0gTkdYX0hUVFBfUkVXUklURV9QSEFTRTsKKyAgICByLT5waGFzZV9oYW5kbGVyID0gMDsKIAogICAgIG5neF9odHRwX2NvcmVfcnVuX3BoYXNlcyhyKTsKIH0KQEAgLTQ0NywxMSArNDQ5LDcgQEAKIAogICAgIGZvciAoLyogdm9pZCAqLzsgci0+cGhhc2UgPCBOR1hfSFRUUF9MQVNUX1BIQVNFOyByLT5waGFzZSsrKSB7CiAKLSAgICAgICAgaWYgKHItPnBoYXNlID09IE5HWF9IVFRQX0ZJTkRfQ09ORklHX1BIQVNFICYmICFyLT51cmlfY2hhbmdlZCkgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoci0+cGhhc2UgPT0gTkdYX0hUVFBfRklORF9DT05GSUdfUEhBU0UgKyAxICYmIHItPnVyaV9jaGFuZ2VkKSB7CisgICAgICAgIGlmIChyLT5waGFzZSA9PSBOR1hfSFRUUF9SRVdSSVRFX1BIQVNFICsgMSAmJiByLT51cmlfY2hhbmdlZCkgewogCiAgICAgICAgICAgICBuZ3hfbG9nX2RlYnVnMShOR1hfTE9HX0RFQlVHX0hUVFAsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmkgY2hhbmdlczogJWQiLCByLT51cmlfY2hhbmdlcyk7CkBAIC00NzIsOCArNDcwLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHItPnVyaV9jaGFuZ2VkID0gMDsKLSAgICAgICAgICAgIHItPnBoYXNlID0gTkdYX0hUVFBfUkVXUklURV9QSEFTRTsKKyAgICAgICAgICAgIHItPnBoYXNlID0gTkdYX0hUVFBfRklORF9DT05GSUdfUEhBU0U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoci0+cGhhc2UgPT0gTkdYX0hUVFBfQ09OVEVOVF9QSEFTRSAmJiByLT5jb250ZW50X2hhbmRsZXIpIHsKQEAgLTUyNSw3ICs1MjIsNyBAQAogCiAgICAgLyogbm8gY29udGVudCBoYW5kbGVyIHdhcyBmb3VuZCAqLwogCi0gICAgaWYgKHItPnVyaS5kYXRhW3ItPnVyaS5sZW4gLSAxXSA9PSAnLycpIHsKKyAgICBpZiAoci0+dXJpLmRhdGFbci0+dXJpLmxlbiAtIDFdID09ICcvJyAmJiAhci0+emVyb19pbl91cmkpIHsKIAogICAgICAgICBjbGNmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9sb2NfY29uZihyLCBuZ3hfaHR0cF9jb3JlX21vZHVsZSk7CiAKQEAgLTU1MCw2ICs1NDcsOSBAQAogICAgIG5neF9odHRwX2NvcmVfbG9jX2NvbmZfdCAgKmNsY2Y7CiAgICAgbmd4X2h0dHBfY29yZV9zcnZfY29uZl90ICAqY3NjZjsKIAorICAgIHItPmNvbnRlbnRfaGFuZGxlciA9IE5VTEw7CisgICAgci0+dXJpX2NoYW5nZWQgPSAwOworCiAgICAgY3NjZiA9IG5neF9odHRwX2dldF9tb2R1bGVfc3J2X2NvbmYociwgbmd4X2h0dHBfY29yZV9tb2R1bGUpOwogCiAgICAgcmMgPSBuZ3hfaHR0cF9jb3JlX2ZpbmRfbG9jYXRpb24ociwgJmNzY2YtPmxvY2F0aW9ucywgMCk7CkBAIC05NTUsMTAgKzk1NSw2IEBACiAgICAgY3NjZiA9IG5neF9odHRwX2dldF9tb2R1bGVfc3J2X2NvbmYociwgbmd4X2h0dHBfY29yZV9tb2R1bGUpOwogICAgIHItPmxvY19jb25mID0gY3NjZi0+Y3R4LT5sb2NfY29uZjsKIAotICAgIHItPnBoYXNlID0gMDsKLSAgICByLT5waGFzZV9oYW5kbGVyID0gMDsKLSAgICByLT5jb250ZW50X2hhbmRsZXIgPSBOVUxMOwotCiAgICAgbmd4X2h0dHBfaGFuZGxlcihyKTsKIAogICAgIHJldHVybiBOR1hfRE9ORTsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmggYi9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5oCmluZGV4IDFjNjA5OTEuLmRiYWVmNmYgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmgKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuaApAQCAtMjUsOSArMjUsOSBAQAogCiAKIHR5cGVkZWYgZW51bSB7Ci0gICAgTkdYX0hUVFBfUkVXUklURV9QSEFTRSA9IDAsCisgICAgTkdYX0hUVFBfRklORF9DT05GSUdfUEhBU0UgPSAwLAogCi0gICAgTkdYX0hUVFBfRklORF9DT05GSUdfUEhBU0UsCisgICAgTkdYX0hUVFBfUkVXUklURV9QSEFTRSwKIAogICAgIE5HWF9IVFRQX0FDQ0VTU19QSEFTRSwKICAgICBOR1hfSFRUUF9DT05URU5UX1BIQVNFLApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfbG9nX2hhbmRsZXIuYyBiL3NyYy9odHRwL25neF9odHRwX2xvZ19oYW5kbGVyLmMKaW5kZXggNzIyYjlmOC4uMGQwMzFmZSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfbG9nX2hhbmRsZXIuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9sb2dfaGFuZGxlci5jCkBAIC0xMzcsNyArMTM3LDcgQEAKICAgICB7IG5neF9zdHJpbmcoImFkZHIiKSwgSU5FVF9BRERSU1RSTEVOIC0gMSwgTlVMTCwgTlVMTCwgbmd4X2h0dHBfbG9nX2FkZHIgfSwKICAgICB7IG5neF9zdHJpbmcoImNvbm4iKSwgTkdYX0lOVDMyX0xFTiwgTlVMTCwgTlVMTCwgbmd4X2h0dHBfbG9nX2Nvbm5lY3Rpb24gfSwKICAgICB7IG5neF9zdHJpbmcoInBpcGUiKSwgMSwgTlVMTCwgTlVMTCwgbmd4X2h0dHBfbG9nX3BpcGUgfSwKLSAgICB7IG5neF9zdHJpbmcoInRpbWUiKSwgc2l6ZW9mKCIyOC9TZXAvMTk3MDoxMjowMDowMCIpIC0gMSwKKyAgICB7IG5neF9zdHJpbmcoInRpbWUiKSwgc2l6ZW9mKCIyOC9TZXAvMTk3MDoxMjowMDowMCArMDYwMCIpIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgbmd4X2h0dHBfbG9nX3RpbWUgfSwKICAgICB7IG5neF9zdHJpbmcoIm1zZWMiKSwgTkdYX1RJTUVfVF9MRU4gKyA0LCBOVUxMLCBOVUxMLCBuZ3hfaHR0cF9sb2dfbXNlYyB9LAogICAgIHsgbmd4X3N0cmluZygic3RhdHVzIiksIDMsIE5VTEwsIE5VTEwsIG5neF9odHRwX2xvZ19zdGF0dXMgfSwKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3BhcnNlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9wYXJzZS5jCmluZGV4IGY1OTEyYWMuLmNhODRkMTYgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3BhcnNlLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcGFyc2UuYwpAQCAtMTA5LDYgKzEwOSwxMiBAQAogCiAgICAgICAgIC8qIHNwYWNlKiBiZWZvcmUgVVJJICovCiAgICAgICAgIGNhc2Ugc3dfc3BhY2VzX2JlZm9yZV91cmk6CisgICAgICAgICAgICBpZiAoKGNoID49ICdBJyAmJiBjaCA8PSAnWicpIHx8IChjaCA+PSAnYScgJiYgY2ggPD0gJ3onKSkgeworICAgICAgICAgICAgICAgIHItPnNjaGVtYV9zdGFydCA9IHA7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBzd19zY2hlbWE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHN3aXRjaCAoY2gpIHsKICAgICAgICAgICAgIGNhc2UgJy8nOgogICAgICAgICAgICAgICAgIHItPnVyaV9zdGFydCA9IHA7CkBAIC0xMTcsMjUgKzEyMywyMSBAQAogICAgICAgICAgICAgY2FzZSAnICc6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlmICgoY2ggPj0gJ0EnICYmIGNoIDw9ICdaJykgfHwgKGNoID49ICdhJyAmJiBjaCA8PSAneicpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHItPnNjaGVtYV9zdGFydCA9IHA7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3dfc2NoZW1hOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1BBUlNFX0lOVkFMSURfUkVRVUVTVDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ugc3dfc2NoZW1hOgorICAgICAgICAgICAgaWYgKChjaCA+PSAnQScgJiYgY2ggPD0gJ1onKSB8fCAoY2ggPj0gJ2EnICYmIGNoIDw9ICd6JykpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc3dpdGNoIChjaCkgewogICAgICAgICAgICAgY2FzZSAnOic6CiAgICAgICAgICAgICAgICAgci0+c2NoZW1hX2VuZCA9IHA7CiAgICAgICAgICAgICAgICAgc3RhdGUgPSBzd19zY2hlbWFfc2xhc2g7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlmICgoY2ggPj0gJ0EnICYmIGNoIDw9ICdaJykgfHwgKGNoID49ICdhJyAmJiBjaCA8PSAneicpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0hUVFBfUEFSU0VfSU5WQUxJRF9SRVFVRVNUOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjIsNiArMTY0LDEyIEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIHN3X2hvc3Q6CisgICAgICAgICAgICBpZiAoKGNoID49ICdBJyAmJiBjaCA8PSAnWicpIHx8IChjaCA+PSAnYScgJiYgY2ggPD0gJ3onKQorICAgICAgICAgICAgICAgIHx8IChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB8fCBjaCA9PSAnLicgfHwgY2ggPT0gJy0nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBzd2l0Y2ggKGNoKSB7CiAgICAgICAgICAgICBjYXNlICc6JzoKICAgICAgICAgICAgICAgICByLT5ob3N0X2VuZCA9IHA7CkBAIC0xNzMsMTYgKzE4MSwxNSBAQAogICAgICAgICAgICAgICAgIHN0YXRlID0gc3dfYWZ0ZXJfc2xhc2hfaW5fdXJpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpZiAoKGNoID49ICdBJyAmJiBjaCA8PSAnWicpIHx8IChjaCA+PSAnYScgJiYgY2ggPD0gJ3onKQotICAgICAgICAgICAgICAgICAgICB8fCAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykgfHwgY2ggPT0gJy4nIHx8IGNoID09ICctJykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0hUVFBfUEFSU0VfSU5WQUxJRF9SRVFVRVNUOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBzd19wb3J0OgorICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc3dpdGNoIChjaCkgewogICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICAgci0+cG9ydF9lbmQgPSBwOwpAQCAtMTkwLDE2ICsxOTcsMjYgQEAKICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN3X2FmdGVyX3NsYXNoX2luX3VyaTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKGNoIDwgJzAnICYmIGNoID4gJzknKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOR1hfSFRUUF9QQVJTRV9JTlZBTElEX1JFUVVFU1Q7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVybiBOR1hfSFRUUF9QQVJTRV9JTlZBTElEX1JFUVVFU1Q7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvKiBjaGVjayAiLy4iLCAiLy8iLCAiJSIsIGFuZCAiXCIgKFdpbjMyKSBpbiBVUkkgKi8KICAgICAgICAgY2FzZSBzd19hZnRlcl9zbGFzaF9pbl91cmk6CisKKyAgICAgICAgICAgIGlmICgoY2ggPj0gJ2EnICYmIGNoIDw9ICd6JykKKyAgICAgICAgICAgICAgICB8fCAoY2ggPj0gJ0EnICYmIGNoIDw9ICdaJykKKyAgICAgICAgICAgICAgICB8fCAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBzd19jaGVja191cmk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgICAgIGNhc2UgJyAnOgorICAgICAgICAgICAgICAgIHItPnVyaV9lbmQgPSBwOworICAgICAgICAgICAgICAgIHN0YXRlID0gc3dfaHR0cF8wOTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1I6CiAgICAgICAgICAgICAgICAgci0+dXJpX2VuZCA9IHA7CiAgICAgICAgICAgICAgICAgci0+aHR0cF9taW5vciA9IDk7CkBAIC0yMDksMTAgKzIyNiw2IEBACiAgICAgICAgICAgICAgICAgci0+dXJpX2VuZCA9IHA7CiAgICAgICAgICAgICAgICAgci0+aHR0cF9taW5vciA9IDk7CiAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgY2FzZSAnICc6Ci0gICAgICAgICAgICAgICAgci0+dXJpX2VuZCA9IHA7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBzd19odHRwXzA5OwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnLic6CiAgICAgICAgICAgICAgICAgci0+Y29tcGxleF91cmkgPSAxOwogICAgICAgICAgICAgICAgIHN0YXRlID0gc3dfdXJpOwpAQCAtMjIxLDIwICsyMzQsMjUgQEAKICAgICAgICAgICAgICAgICByLT5xdW90ZWRfdXJpID0gMTsKICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN3X3VyaTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJy8nOgorICAgICAgICAgICAgICAgIHItPmNvbXBsZXhfdXJpID0gMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IHN3X3VyaTsKKyAgICAgICAgICAgICAgICBicmVhazsKICNpZiAoTkdYX1dJTjMyKQogICAgICAgICAgICAgY2FzZSAnXFwnOgogICAgICAgICAgICAgICAgIHItPmNvbXBsZXhfdXJpID0gMTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IHN3X3VyaTsKICAgICAgICAgICAgICAgICBicmVhazsKICNlbmRpZgotICAgICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICAgICAgci0+Y29tcGxleF91cmkgPSAxOworICAgICAgICAgICAgY2FzZSAnPyc6CisgICAgICAgICAgICAgICAgci0+YXJnc19zdGFydCA9IHAgKyAxOworICAgICAgICAgICAgICAgIHN0YXRlID0gc3dfdXJpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgICAgICAgci0+cGx1c19pbl91cmkgPSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnPyc6Ci0gICAgICAgICAgICAgICAgci0+YXJnc19zdGFydCA9IHAgKyAxOwotICAgICAgICAgICAgICAgIHN0YXRlID0gc3dfdXJpOworICAgICAgICAgICAgY2FzZSAnXDAnOgorICAgICAgICAgICAgICAgIHItPnplcm9faW5fdXJpID0gMTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgc3RhdGUgPSBzd19jaGVja191cmk7CkBAIC0yNDQsNyArMjYyLDI2IEBACiAKICAgICAgICAgLyogY2hlY2sgIi8iLCAiJSIgYW5kICJcIiAoV2luMzIpIGluIFVSSSAqLwogICAgICAgICBjYXNlIHN3X2NoZWNrX3VyaToKKworICAgICAgICAgICAgaWYgKChjaCA+PSAnYScgJiYgY2ggPD0gJ3onKQorICAgICAgICAgICAgICAgIHx8IChjaCA+PSAnQScgJiYgY2ggPD0gJ1onKQorICAgICAgICAgICAgICAgIHx8IChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICAgICAgY2FzZSAnLyc6CisgICAgICAgICAgICAgICAgci0+dXJpX2V4dCA9IE5VTEw7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBzd19hZnRlcl9zbGFzaF9pbl91cmk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgICAgICAgICByLT51cmlfZXh0ID0gcCArIDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcgJzoKKyAgICAgICAgICAgICAgICByLT51cmlfZW5kID0gcDsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IHN3X2h0dHBfMDk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENSOgogICAgICAgICAgICAgICAgIHItPnVyaV9lbmQgPSBwOwogICAgICAgICAgICAgICAgIHItPmh0dHBfbWlub3IgPSA5OwpAQCAtMjU0LDQwICsyOTEsMzYgQEAKICAgICAgICAgICAgICAgICByLT51cmlfZW5kID0gcDsKICAgICAgICAgICAgICAgICByLT5odHRwX21pbm9yID0gOTsKICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICBjYXNlICcgJzoKLSAgICAgICAgICAgICAgICByLT51cmlfZW5kID0gcDsKLSAgICAgICAgICAgICAgICBzdGF0ZSA9IHN3X2h0dHBfMDk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICcuJzoKLSAgICAgICAgICAgICAgICByLT51cmlfZXh0ID0gcCArIDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgKE5HWF9XSU4zMikKICAgICAgICAgICAgIGNhc2UgJ1xcJzoKICAgICAgICAgICAgICAgICByLT5jb21wbGV4X3VyaSA9IDE7CiAgICAgICAgICAgICAgICAgc3RhdGUgPSBzd19hZnRlcl9zbGFzaF9pbl91cmk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICAgICAgICAgIGNhc2UgJy8nOgotICAgICAgICAgICAgICAgIHItPnVyaV9leHQgPSBOVUxMOwotICAgICAgICAgICAgICAgIHN0YXRlID0gc3dfYWZ0ZXJfc2xhc2hfaW5fdXJpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnKyc6Ci0gICAgICAgICAgICAgICAgci0+cGx1c19pbl91cmkgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnJSc6CiAgICAgICAgICAgICAgICAgci0+cXVvdGVkX3VyaSA9IDE7CiAgICAgICAgICAgICAgICAgc3RhdGUgPSBzd191cmk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcrJzoKKyAgICAgICAgICAgICAgICByLT5wbHVzX2luX3VyaSA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICc/JzoKICAgICAgICAgICAgICAgICByLT5hcmdzX3N0YXJ0ID0gcCArIDE7CiAgICAgICAgICAgICAgICAgc3RhdGUgPSBzd191cmk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdcMCc6CisgICAgICAgICAgICAgICAgci0+emVyb19pbl91cmkgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyogVVJJICovCiAgICAgICAgIGNhc2Ugc3dfdXJpOgogICAgICAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICAgICAgY2FzZSAnICc6CisgICAgICAgICAgICAgICAgci0+dXJpX2VuZCA9IHA7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBzd19odHRwXzA5OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDUjoKICAgICAgICAgICAgICAgICByLT51cmlfZW5kID0gcDsKICAgICAgICAgICAgICAgICByLT5odHRwX21pbm9yID0gOTsKQEAgLTMwMCw5ICszMzMsOCBAQAogICAgICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgICAgICAgci0+cGx1c19pbl91cmkgPSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnICc6Ci0gICAgICAgICAgICAgICAgci0+dXJpX2VuZCA9IHA7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBzd19odHRwXzA5OworICAgICAgICAgICAgY2FzZSAnXDAnOgorICAgICAgICAgICAgICAgIHItPnplcm9faW5fdXJpID0gMTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTQ2LDEyICs5NzgsMjAgQEAKICAgICAgICAgY2FzZSBzd19xdW90ZWRfc2Vjb25kOgogICAgICAgICAgICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHsKICAgICAgICAgICAgICAgICBjaCA9ICh1X2NoYXIpICgoZGVjb2RlZCA8PCA0KSArIGNoIC0gJzAnKTsKKwogICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnJScpIHsKICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzd191c3VhbDsKICAgICAgICAgICAgICAgICAgICAgKnUrKyA9IGNoOwogICAgICAgICAgICAgICAgICAgICBjaCA9ICpwKys7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXDAnKSB7CisgICAgICAgICAgICAgICAgICAgIHItPnplcm9faW5fdXJpID0gMTsKKyAgICAgICAgICAgICAgICAgICAgKnUrKyA9IGNoOworICAgICAgICAgICAgICAgICAgICBjaCA9ICpwKys7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgc3RhdGUgPSBxdW90ZWRfc3RhdGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKaW5kZXggMjA5YzU0Ny4uYTYwNDZmMSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwpAQCAtNTgsMTMgKzU4LDEzIEBACiAgICAgeyBuZ3hfc3RyaW5nKCJIb3N0IiksIG9mZnNldG9mKG5neF9odHRwX2hlYWRlcnNfaW5fdCwgaG9zdCkgfSwKICAgICB7IG5neF9zdHJpbmcoIkNvbm5lY3Rpb24iKSwgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCBjb25uZWN0aW9uKSB9LAogICAgIHsgbmd4X3N0cmluZygiSWYtTW9kaWZpZWQtU2luY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9oZWFkZXJzX2luX3QsIGlmX21vZGlmaWVkX3NpbmNlKSB9LAorICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9oZWFkZXJzX2luX3QsIGlmX21vZGlmaWVkX3NpbmNlKSB9LAogICAgIHsgbmd4X3N0cmluZygiVXNlci1BZ2VudCIpLCBvZmZzZXRvZihuZ3hfaHR0cF9oZWFkZXJzX2luX3QsIHVzZXJfYWdlbnQpIH0sCiAgICAgeyBuZ3hfc3RyaW5nKCJSZWZlcmVyIiksIG9mZnNldG9mKG5neF9odHRwX2hlYWRlcnNfaW5fdCwgcmVmZXJlcikgfSwKICAgICB7IG5neF9zdHJpbmcoIkNvbnRlbnQtTGVuZ3RoIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCBjb250ZW50X2xlbmd0aCkgfSwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCBjb250ZW50X2xlbmd0aCkgfSwKICAgICB7IG5neF9zdHJpbmcoIkNvbnRlbnQtVHlwZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCBjb250ZW50X3R5cGUpIH0sCisgICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX2hlYWRlcnNfaW5fdCwgY29udGVudF90eXBlKSB9LAogCiAgICAgeyBuZ3hfc3RyaW5nKCJSYW5nZSIpLCBvZmZzZXRvZihuZ3hfaHR0cF9oZWFkZXJzX2luX3QsIHJhbmdlKSB9LAogI2lmIDAKQEAgLTczLDIyICs3MywyOSBAQAogCiAjaWYgKE5HWF9IVFRQX0daSVApCiAgICAgeyBuZ3hfc3RyaW5nKCJBY2NlcHQtRW5jb2RpbmciKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX2hlYWRlcnNfaW5fdCwgYWNjZXB0X2VuY29kaW5nKSB9LAorICAgICAgICAgICAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9oZWFkZXJzX2luX3QsIGFjY2VwdF9lbmNvZGluZykgfSwKICAgICB7IG5neF9zdHJpbmcoIlZpYSIpLCBvZmZzZXRvZihuZ3hfaHR0cF9oZWFkZXJzX2luX3QsIHZpYSkgfSwKICNlbmRpZgogCiAgICAgeyBuZ3hfc3RyaW5nKCJBdXRob3JpemF0aW9uIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX2hlYWRlcnNfaW5fdCwgYXV0aG9yaXphdGlvbikgfSwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCBhdXRob3JpemF0aW9uKSB9LAogCiAgICAgeyBuZ3hfc3RyaW5nKCJLZWVwLUFsaXZlIiksIG9mZnNldG9mKG5neF9odHRwX2hlYWRlcnNfaW5fdCwga2VlcF9hbGl2ZSkgfSwKIAogI2lmIChOR1hfSFRUUF9QUk9YWSkKICAgICB7IG5neF9zdHJpbmcoIlgtRm9yd2FyZGVkLUZvciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCB4X2ZvcndhcmRlZF9mb3IpIH0sCisgICAgICAgICAgICAgICAgIG9mZnNldG9mKG5neF9odHRwX2hlYWRlcnNfaW5fdCwgeF9mb3J3YXJkZWRfZm9yKSB9LAogICAgIHsgbmd4X3N0cmluZygiWC1SZWFsLUlQIiksIG9mZnNldG9mKG5neF9odHRwX2hlYWRlcnNfaW5fdCwgeF9yZWFsX2lwKSB9LAogICAgIHsgbmd4X3N0cmluZygiWC1VUkwiKSwgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCB4X3VybCkgfSwKICNlbmRpZgogCisjaWYgKE5HWF9IVFRQX0hFQURFUlMpCisgICAgeyBuZ3hfc3RyaW5nKCJBY2NlcHQiKSwgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCBhY2NlcHQpIH0sCisgICAgeyBuZ3hfc3RyaW5nKCJBY2NlcHQtTGFuZ3VhZ2UiKSwKKyAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCBhY2NlcHRfbGFuZ3VhZ2UpIH0sCisgICAgeyBuZ3hfc3RyaW5nKCJWaWEiKSwgb2Zmc2V0b2Yobmd4X2h0dHBfaGVhZGVyc19pbl90LCB2aWEpIH0sCisjZW5kaWYKKwogICAgIHsgbmd4X251bGxfc3RyaW5nLCAwIH0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaCBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaAppbmRleCBhNGUzZDBlLi41NDJhNjg5IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmgKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oCkBAIC0xNTIsNiArMTUyLDExIEBACiAgICAgbmd4X3RhYmxlX2VsdF90ICAqeF91cmw7CiAjZW5kaWYKIAorI2lmIChOR1hfSFRUUF9IRUFERVJTKQorICAgIG5neF90YWJsZV9lbHRfdCAgKmFjY2VwdDsKKyAgICBuZ3hfdGFibGVfZWx0X3QgICphY2NlcHRfbGFuZ3VhZ2U7CisjZW5kaWYKKwogICAgIG5neF9hcnJheV90ICAgICAgIGNvb2tpZXM7CiAKICAgICBzaXplX3QgICAgICAgICAgICBob3N0X25hbWVfbGVuOwpAQCAtMzI1LDYgKzMzMCw5IEBACiAgICAgLyogVVJJIHdpdGggIisiICovCiAgICAgdW5zaWduZWQgICAgICAgICAgICAgcGx1c19pbl91cmk6MTsKIAorICAgIC8qIFVSSSB3aXRoICJcMCIgb3IgIiUwMCIgKi8KKyAgICB1bnNpZ25lZCAgICAgICAgICAgICB6ZXJvX2luX3VyaToxOworCiAgICAgdW5zaWduZWQgICAgICAgICAgICAgdXJpX2NoYW5nZWQ6MTsKICAgICB1bnNpZ25lZCAgICAgICAgICAgICB1cmlfY2hhbmdlczo0OwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF93cml0ZV9maWx0ZXIuYyBiL3NyYy9odHRwL25neF9odHRwX3dyaXRlX2ZpbHRlci5jCmluZGV4IGQ0ZGU0YTEuLjc1OTgwMWYgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3dyaXRlX2ZpbHRlci5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3dyaXRlX2ZpbHRlci5jCkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsLT5idWYtPmZpbGVfbGFzdCk7CiAKICAgICAgICAgICAgIG5neF9kZWJ1Z19wb2ludCgpOworICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTE0NCw2ICsxNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBjbC0+YnVmLT5maWxlX2xhc3QpOwogCiAgICAgICAgICAgICBuZ3hfZGVidWdfcG9pbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CiAgICAgICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfbGludXhfc2VuZGZpbGVfY2hhaW4uYyBiL3NyYy9vcy91bml4L25neF9saW51eF9zZW5kZmlsZV9jaGFpbi5jCmluZGV4IGQ0NWQ3YzAuLmFjOGMzMDMgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9saW51eF9zZW5kZmlsZV9jaGFpbi5jCisrKyBiL3NyYy9vcy91bml4L25neF9saW51eF9zZW5kZmlsZV9jaGFpbi5jCkBAIC0xMDIsNiArMTAyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsLT5idWYtPmZpbGVfbGFzdCk7CiAKICAgICAgICAgICAgICAgICBuZ3hfZGVidWdfcG9pbnQoKTsKKworICAgICAgICAgICAgICAgIHJldHVybiBOR1hfQ0hBSU5fRVJST1I7CiAgICAgICAgICAgICB9CiAjZW5kaWYKIAo=