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: Kaleb S. KEITHLEY To: git-commits@fedoraproject.org Subject: [rpms/libntirpc] rawhide: include required fixes and updates that ntirpc never tagged or released Date: Sat, 13 Jun 2026 11:57:13 GMT Message-ID: <178135183355.1.17455897998671699188.rpms-libntirpc-261a8a189a18@fedoraproject.org> List-ID: X-Git-Repo: rpms/libntirpc X-Git-Branch: rawhide X-Git-Rev: 261a8a189a1847a6317c543cd621f70f6531fbd8 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvbGlibnRpcnBjCkJy YW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogMjYxYThhMTg5YTE4NDdhNjMxN2M1NDNjZDYyMWY3MGY2 NTMxZmJkOApBdXRob3IgOiBLYWxlYiBTLiBLRUlUSExFWSA8a2tlaXRobGVAcmVkaGF0LmNvbT4K RGF0ZSAgIDogMjAyNi0wNi0xM1QwNzoxMDo1NS0wNDowMApTdGF0cyAgOiArMjc5OC8tNDMgaW4g NCBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvbGli bnRpcnBjL2MvMjYxYThhMTg5YTE4NDdhNjMxN2M1NDNjZDYyMWY3MGY2NTMxZmJkOD9icmFuY2g9 cmF3aGlkZQoKTG9nOgppbmNsdWRlIHJlcXVpcmVkIGZpeGVzIGFuZCB1cGRhdGVzIHRoYXQgbnRp cnBjIG5ldmVyIHRhZ2dlZCBvciByZWxlYXNlZAoKLS0tCmRpZmYgLS1naXQgYS8wMDAyLTcuMnBs dXMucGF0Y2ggYi8wMDAyLTcuMnBsdXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZDdlMGU3ZQotLS0gL2Rldi9udWxsCisrKyBiLzAwMDItNy4ycGx1cy5wYXRjaApA QCAtMCwwICsxLDI3OTIgQEAKK2RpZmYgLXVyIG50aXJwYy03LjIvQ01ha2VMaXN0cy50eHQgbnRp cnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvQ01ha2VMaXN0cy50 eHQKKy0tLSBudGlycGMtNy4yL0NNYWtlTGlzdHMudHh0CTIwMjYtMDMtMTggMTE6NDU6NDAuMzU5 NDcwNDM2IC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5 NzgyNTZiZDEvQ01ha2VMaXN0cy50eHQJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0 MDAKK0BAIC0zNywxOCArMzcsNyBAQAorIAorIHNldChDTUFLRV9QT1NJVElPTl9JTkRFUEVOREVO VF9DT0RFIE9OKQorIAorLSMgSW5zdGFsbCBkZXN0aW5hdGlvbiwgaWYgYnVpbHQgc3RhbmRhbG9u ZQorLWdldF9wcm9wZXJ0eShVU0VfTElCNjQgR0xPQkFMIFBST1BFUlRZIEZJTkRfTElCUkFSWV9V U0VfTElCNjRfUEFUSFMpCistaWYgKFVTRV9MSUI2NCkKKy0Jc2V0KExJQl9JTlNUQUxMX0RJUiBs aWI2NCBDQUNIRSBQQVRICistCQkiU3BlY2lmeSBuYW1lIG9mIGxpYmRpciBpbnNpZGUgaW5zdGFs bCBwYXRoIikKKy1lbHNlIChVU0VfTElCNjQpCistCXNldChMSUJfSU5TVEFMTF9ESVIgbGliIENB Q0hFIFBBVEgKKy0JCSJTcGVjaWZ5IG5hbWUgb2YgbGliZGlyIGluc2lkZSBpbnN0YWxsIHBhdGgi KQorLWVuZGlmIChVU0VfTElCNjQpCistCistc2V0KFNZU1RFTV9MSUJSQVJJRVMgJHtTWVNURU1f TElCUkFSSUVTfSkKKy1zZXQoQklOQVJZX0xJQlJBUklFUyAke0JJTkFSWV9MSUJSQVJJRVN9KQor K2luY2x1ZGUoR05VSW5zdGFsbERpcnMpCisgCisgaW5jbHVkZShHZXRHaXRSZXZpc2lvbkRlc2Ny aXB0aW9uKQorIGdldF9naXRfaGVhZF9yZXZpc2lvbihHSVRfUkVGU1BFQyBfR0lUX0hFQURfQ09N TUlUKQorQEAgLTMxNywyMSArMzA2LDE5IEBACisgZW5kaWYgKE5PVCBUQVJHRVQgZGlzdCkKKyAK KyBpZiAoTk9UIFRBUkdFVCBycG0pCistYWRkX2N1c3RvbV90YXJnZXQoIHJwbSBERVBFTkRTIGRp c3QpCistYWRkX2N1c3RvbV9jb21tYW5kKFRBUkdFVCBycG0KKythZGRfY3VzdG9tX3RhcmdldCgg cnBtCisgICAgICAgICAgICAgICAgICAgQ09NTUFORCBzaCAtYyAicnBtYnVpbGQgLXRhICR7UEtH X05BTUV9IgorIAkJICBWRVJCQVRJTQorIAkJICBERVBFTkRTIGRpc3QpCisgCisgc2V0KFJQTURF U1QgIi0tZGVmaW5lICdfc3JjcnBtZGlyICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSciKQor LWFkZF9jdXN0b21fdGFyZ2V0KCBzcnBtIERFUEVORFMgZGlzdCkKKy1hZGRfY3VzdG9tX2NvbW1h bmQoVEFSR0VUIHNycG0KKythZGRfY3VzdG9tX3RhcmdldCggc3JwbQorICAgICAgICAgICAgICAg ICAgIENPTU1BTkQgc2ggLWMgInJwbWJ1aWxkICR7UlBNREVTVH0gLXRzICR7UEtHX05BTUV9Igor IAkJICBWRVJCQVRJTQorIAkJICBERVBFTkRTIGRpc3QpCisgZW5kaWYgKE5PVCBUQVJHRVQgcnBt KQorICMjIyMjIyMjIyMjIGluc3RhbGwgZmlsZXMgIyMjIyMjIyMjIyMjIyMjCisgCistaW5zdGFs bChGSUxFUyAgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2xpYm50aXJwYy5wYyBERVNUSU5BVElPTiAk e0xJQl9JTlNUQUxMX0RJUn0vcGtnY29uZmlnKQorLWluc3RhbGwoRElSRUNUT1JZICAke05USVJQ Q19CQVNFX0RJUn0vbnRpcnBjIERFU1RJTkFUSU9OIGluY2x1ZGUpCistaW5zdGFsbChGSUxFUyAg JHtQUk9KRUNUX0JJTkFSWV9ESVJ9L250aXJwYy92ZXJzaW9uLmggREVTVElOQVRJT04gaW5jbHVk ZS9udGlycGMpCisraW5zdGFsbChGSUxFUyAgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2xpYm50aXJw Yy5wYyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfS9wa2djb25maWcpCisraW5z dGFsbChESVJFQ1RPUlkgICR7TlRJUlBDX0JBU0VfRElSfS9udGlycGMgREVTVElOQVRJT04gJHtD TUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9KQorK2luc3RhbGwoRklMRVMgICR7UFJPSkVDVF9CSU5B UllfRElSfS9udGlycGMvdmVyc2lvbi5oIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9JTkNM VURFRElSfS9udGlycGMpCitPbmx5IGluIG50aXJwYy03LjI6IENNYWtlTGlzdHMudHh0Lm9yaWcK K09ubHkgaW4gbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDE6 IC5naXRodWIKK2RpZmYgLXVyIG50aXJwYy03LjIvbGlibnRpcnBjLnBjLmluLmNtYWtlIG50aXJw Yy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL2xpYm50aXJwYy5wYy5p bi5jbWFrZQorLS0tIG50aXJwYy03LjIvbGlibnRpcnBjLnBjLmluLmNtYWtlCTIwMjUtMDktMjMg MTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTVi YWI3NzM0N2VlMTI5NzgyNTZiZDEvbGlibnRpcnBjLnBjLmluLmNtYWtlCTIwMjYtMDUtMTggMTk6 NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMSw2ICsxLDYgQEAKKyBwcmVmaXg9QENNQUtFX0lO U1RBTExfUFJFRklYQAorIGV4ZWNfcHJlZml4PSR7cHJlZml4fQorLWxpYmRpcj0ke3ByZWZpeH0v QExJQl9JTlNUQUxMX0RJUkAKKytsaWJkaXI9JHtwcmVmaXh9L0BDTUFLRV9JTlNUQUxMX0xJQkRJ UkAKKyBpbmNsdWRlZGlyPSR7cHJlZml4fS9pbmNsdWRlL250aXJwYworIAorIE5hbWU6IGxpYm50 aXJwYworZGlmZiAtdXIgbnRpcnBjLTcuMi9udGlycGMvbHR0bmcvbnRpcnBjX3RyYWNlcy5oIG50 aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL250aXJwYy9sdHRu Zy9udGlycGNfdHJhY2VzLmgKKy0tLSBudGlycGMtNy4yL250aXJwYy9sdHRuZy9udGlycGNfdHJh Y2VzLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3 NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMvbHR0bmcvbnRpcnBj X3RyYWNlcy5oCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMzIsNiAr MzIsMTIgQEAKKyAjZGVmaW5lIF9fUzIoeCkgX19TMSh4KQorICNkZWZpbmUgTElORV9BU19TVFJJ TkcgX19TMihfX0xJTkVfXykKKyAKKysjaWZuZGVmIFVOVVNFRAorKyNkZWZpbmUgVU5VU0VEX0FU VFIgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKKysjZGVmaW5lIFVOVVNFRCguLi4pIFVOVVNFRF8o X19WQV9BUkdTX18pCisrI2RlZmluZSBVTlVTRURfKGFyZykgTk9UX1VTRURfIyNhcmcgVU5VU0VE X0FUVFIKKysjZW5kaWYKKysKKyAjaWZkZWYgVVNFX0xUVE5HX05USVJQQworIAorICNpbmNsdWRl ICJsdHRuZ19nZW5lcmF0b3IuaCIKK0BAIC01Nyw3ICs2Myw3IEBACisgCisgLyogV2UgY2FsbCB0 aGUgZW1wdHkgZnVuY3Rpb24gd2l0aCB0aGUgdmFyaWFibGUgYXJncyB0byBhdm9pZCB1bnVzZWQg dmFyaWFibGVzCisgICogd2FybmluZyB3aGVuIExUVE5HIHRyYWNlcyBhcmUgZGlzYWJsZWQgKi8K Ky1zdGF0aWMgdm9pZCBpbmxpbmUgbnRpcnBjX2VtcHR5X2Z1bmN0aW9uKGNvbnN0IGNoYXIqIHVu dXNlZCwgLi4uKSB7fQorK3N0YXRpYyB2b2lkIGlubGluZSBudGlycGNfZW1wdHlfZnVuY3Rpb24o Y29uc3QgY2hhciogVU5VU0VEKHVudXNlZCksIC4uLikge30KKyAKKyAjZGVmaW5lIE5USVJQQ19B VVRPX1RSQUNFUE9JTlQocHJvdl9uYW1lLCBldmVudF9uYW1lLCBsb2dfbGV2ZWwsIC4uLikgXAor IAkJbnRpcnBjX2VtcHR5X2Z1bmN0aW9uKCJ1bnVzZWQiLCAjI19fVkFfQVJHU19fKQorQEAgLTc0 LDQgKzgwLDQgQEAKKyAjZW5kaWYgLyogVFBfSU5UX0FSUiAqLworIAorICNlbmRpZiAvLyBVU0Vf TFRUTkdfTlRJUlBDCistI2VuZGlmIC8vIF9fTlRJUlBDX1RSQUNFU19IX18KK1wgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorKyNlbmRpZiAvLyBfX05USVJQQ19UUkFDRVNfSF9fCitkaWZmIC11 ciBudGlycGMtNy4yL250aXJwYy9ycGMvY2xudC5oIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1 YmFiNzczNDdlZTEyOTc4MjU2YmQxL250aXJwYy9ycGMvY2xudC5oCistLS0gbnRpcnBjLTcuMi9u dGlycGMvcnBjL2NsbnQuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysr IG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL250aXJwYy9y cGMvY2xudC5oCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMTE1LDYg KzExNSw3IEBACisgCW11dGV4X3QgY2xfbG9jazsJLyogc2VyaWFsaXplIHByaXZhdGUgZGF0YSAq LworIAlzdHJ1Y3QgcnBjX2VyciBjbF9lcnJvcjsgLyogc3BlY2lmaWMgZXJyb3IgY29kZSAqLwor IAlpbnQzMl90IGNsX3JlZmNudDsJLyogaGFuZGxlIHJlZmVyZW5jZSBjb3VudCAqLworKwlib29s IHJkbWFfY2xudDsJCS8qIHRyYW5zcG9ydCByZG1hICovCisgCXVpbnQxNl90IGNsX2ZsYWdzOwkv KiBzdGF0ZSBmbGFncyAqLworIAorIH0gQ0xJRU5UOworQEAgLTQ4OSw2ICs0OTAsMTEgQEAKKyAJ CQkJY29uc3QgcnBjcHJvZ190LCBjb25zdCBycGN2ZXJzX3QsCisgCQkJCWNvbnN0IHVfaW50LCBj b25zdCB1X2ludCwgY29uc3QgdWludDMyX3QpOworIAorK0NMSUVOVCAqCisrY2xudF9yZG1hX2Ny ZWF0ZShpbnQgZmQsIGNoYXIgKmhvc3QsIGludCBwb3J0LCBpbnQgcmVjdl9zeiwKKysgICAgaW50 IHNlbmRfc3osIGludCBwYWdlX3N6LCBjb25zdCBycGNwcm9nX3QgcHJvZywKKysgICAgY29uc3Qg cnBjdmVyc190IHZlcnMsIGNvbnN0IHVpbnQzMl90IGZsYWdzKTsKKysKKyBzdGF0aWMgaW5saW5l IENMSUVOVCAqCisgY2xudF92Y19uY3JlYXRlKGNvbnN0IGludCBmZCwgY29uc3Qgc3RydWN0IG5l dGJ1ZiAqcmFkZHIsCisgCQljb25zdCBycGNwcm9nX3QgcHJvZywgY29uc3QgcnBjdmVyc190IHZl cnMsCitAQCAtNTAzLDYgKzUwOSw5IEBACisgICovCisgZXh0ZXJuIENMSUVOVCAqY2xudF92Y19u Y3JlYXRlX3N2Yyhjb25zdCBTVkNYUFJUICosIGNvbnN0IHJwY3Byb2dfdCwKKyAJCQkJICAgY29u c3QgcnBjdmVyc190LCBjb25zdCB1aW50MzJfdCk7CisrCisrZXh0ZXJuIENMSUVOVCAqY2xudF9y ZG1hX25jcmVhdGVmKGNvbnN0IFNWQ1hQUlQgKiwgY29uc3QgcnBjcHJvZ190LAorKwkJCQkgIGNv bnN0IHJwY3ZlcnNfdCwgY29uc3QgdWludDMyX3QsIGJvb2wpOworIC8qCisgICogICAgICBjb25z dCBTVkNYUFJUICp4cHJ0OyAgICAgICAgICAgICAgICAgICAgLS0gYWN0aXZlIHNlcnZpY2UgeHBy dAorICAqICAgICAgY29uc3QgcnBjcHJvZ190IHByb2c7ICAgICAgICAgICAgICAgICAgIC0tIFJQ QyBwcm9ncmFtIG51bWJlcgorZGlmZiAtdXIgbnRpcnBjLTcuMi9udGlycGMvcnBjL2hhcHJveHku aCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMv cnBjL2hhcHJveHkuaAorLS0tIG50aXJwYy03LjIvbnRpcnBjL3JwYy9oYXByb3h5LmgJMjAyNS0w OS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEz ZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMvcnBjL2hhcHJveHkuaAkyMDI2LTA1LTE4 IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTMwLDYgKzMwLDEzIEBACisgCisgI2luY2x1 ZGUgImNvbmZpZy5oIgorIAorKy8qIEFkZGluZyBtYWNybyBmb3IgY29tcGF0aWJpbHR5IG9mIGMr KyBjb21waWxhdGlvbiAqLworKyNpZmRlZiBfX2NwbHVzcGx1cworKyNpZm5kZWYgX1N0YXRpY19h c3NlcnQKKysjZGVmaW5lIF9TdGF0aWNfYXNzZXJ0IHN0YXRpY19hc3NlcnQKKysjZW5kaWYKKysj ZW5kaWYKKysKKyAjaWZuZGVmIF9OVElSUENfUlBDX0hBUFJPWFlfSAorICNkZWZpbmUgX05USVJQ Q19SUENfSEFQUk9YWV9ICisgCitAQCAtMTIyLDYgKzEyOSw3IEBACisgCXVpbnQxNl90IHNyY19w b3J0OworIAl1aW50MTZfdCBkc3RfcG9ydDsKKyB9OworKworIF9TdGF0aWNfYXNzZXJ0KAorIAlz aXplb2Yoc3RydWN0IHByb3h5X2hlYWRlcl9hZGRyX2lwNF9wYXJ0KSA9PSBQUDJfQUREUl9MRU5f SU5FVCwKKyAJInByb3h5X2hlYWRlcl9hZGRyX2lwNF9wYXJ0IHNpemUgaXMgbm90IGVxdWFsIHRv IFBQMl9BRERSX0xFTl9JTkVUIik7CitAQCAtMTMyLDYgKzE0MCw3IEBACisgCXVpbnQxNl90IHNy Y19wb3J0OworIAl1aW50MTZfdCBkc3RfcG9ydDsKKyB9OworKworIF9TdGF0aWNfYXNzZXJ0KAor IAlzaXplb2Yoc3RydWN0IHByb3h5X2hlYWRlcl9hZGRyX2lwNl9wYXJ0KSA9PSBQUDJfQUREUl9M RU5fSU5FVDYsCisgCSJwcm94eV9oZWFkZXJfYWRkcl9pcDZfcGFydCBzaXplIGlzIG5vdCBlcXVh bCB0byBQUDJfQUREUl9MRU5fSU5FVDYiKTsKK2RpZmYgLXVyIG50aXJwYy03LjIvbnRpcnBjL3Jw Yy9zdmMuaCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9u dGlycGMvcnBjL3N2Yy5oCistLS0gbnRpcnBjLTcuMi9udGlycGMvcnBjL3N2Yy5oCTIwMjUtMDkt MjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4 YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3JwYy9zdmMuaAkyMDI2LTA1LTE4IDE5OjQw OjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTE4MCw2ICsxODAsNyBAQAorICNkZWZpbmUgU1ZDX1hQ UlRfRkxBR19SRU1PVEVfQUREUl9TRVQJMHgwMjAwCS8qIHJlbW90ZSBhZGRyIHdhcyBmaW5hbCBz ZXQgKi8KKyAjZGVmaW5lIFNWQ19YUFJUX0ZMQUdfUkVBRFkJCTB4MDQwMAkvKiByZWFkeSB0byB1 c2UgKi8KKyAjZGVmaW5lIFNWQ19YUFJUX0ZMQUdfSU9RX1dSSVRJTkcJMHgwODAwCS8qIHhwcnQg aXMgdXNlZCBieSBzdmNfaW9xX3dyaXRlICovCisrI2RlZmluZSBTVkNfWFBSVF9GTEFHX05PX1NF VAkJMHgxMDAwICAvKiBkbyBub3QgcmVnaXN0ZXIgd2l0aCBycGNiaW5kICovCisgCisgI2RlZmlu ZSBTVkNfWFBSVF9GTEFHX0RFU1RST1lFRCAoU1ZDX1hQUlRfRkxBR19ERVNUUk9ZSU5HIFwKKyAJ CQkJfCBTVkNfWFBSVF9GTEFHX1JFTEVBU0lORykKK0BAIC0yNzIsNyArMjczLDExIEBACisgCQlz dHJ1Y3QgeworIAkJCXN2Y19yZXFfZnVuX3QgcHJvY2Vzc19jYjsKKyAJCQlzdmNfeHBydF9mdW5f dCByZW1vdGVfYWRkcl9zZXRfY2I7CisrI2lmZGVmIF9fY3BsdXNwbHVzCisrCQl9Y29ubmVjdGlv bl9kaXNwYXRjaF9vcHM7CisrI2Vsc2UKKyAJCX07CisrI2VuZGlmCisgCQlzdmNfeHBydF9mdW5f dCByZW5kZXp2b3VzX2NiOworIAl9ICB4cF9kaXNwYXRjaDsKKyAJU1ZDWFBSVCAqeHBfcGFyZW50 OworQEAgLTMxNSw2ICszMjAsOCBAQAorIAlpbnQgeHBfaWZpbmRleDsJCS8qIGludGVyZmFjZSBp bmRleCAqLworIAlpbnQgeHBfc2lfdHlwZTsJCS8qIHNpIHR5cGUgKi8KKyAJaW50IHhwX3R5cGU7 CQkvKiB4cHJ0IHR5cGUgKi8KKysJY2hhciAqeHBfaXA7CQkvKiByZW1vdGUgaXAgKi8KKysJaW50 IHhwX3BvcnQ7CQkvKiByZW1vdGUgcG9ydCAqLworIAorIAlpbnQzMl90IHhwX3JlZmNudDsJLyog aGFuZGxlIHJlZmVyZW5jZSBjb3VudCAqLworIAl1aW50MTZfdCB4cF9mbGFnczsJLyogZmxhZ3Mg Ki8KK0BAIC0zMjcsNiArMzM0LDEwIEBACisgCQlzdHJ1Y3QgaW42X3BrdGluZm8gaW42OworICNl bmRpZgorIAl9IHhwX3BrdGluZm87CisrCisrCS8qIENsaWVudCBkZXRhaWxzIC0gSVAgQWRkcmVz cyAmIFBvcnQgKi8KKysJY2hhciB4cF9jbG50X2FkZHJbSU5FVDZfQUREUlNUUkxFTl07CisrCXVp bnQxNl90IHhwX2NsbnRfcG9ydDsKKyB9OworIAorICNkZWZpbmUgWFBSVF9GTVQgInhwcnQ6IFtw dHIgPSB7fSxmbGFncyA9IHt9LGZkID0ge30sdHlwZSA9IHt9LHJlZmNudCA9IHt9XSIKK2RpZmYg LXVyIG50aXJwYy03LjIvbnRpcnBjL3JwYy94ZHIuaCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhh NWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGlycGMvcnBjL3hkci5oCistLS0gbnRpcnBjLTcuMi9u dGlycGMvcnBjL3hkci5oCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysg bnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvbnRpcnBjL3Jw Yy94ZHIuaAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTEyMyw3ICsx MjMsNyBAQAorIAlWSU9fREFUQSwgICAgICAgICAgICAgICAvKiBkYXRhIGJ1ZmZlciAqLworIAlW SU9fVFJBSUxFUl9MRU4sCS8qIGxlbmd0aCBmaWVsZCBmb3IgZm9sbG93aW5nIFRSQUlMRVIgYnVm ZmVyICovCisgCVZJT19UUkFJTEVSLCAgICAgICAgICAgIC8qIHRyYWlsZXIgYnVmZmVyIGFmdGVy IGRhdGEgKi8KKy19IHZpb190eXBlOworK30gdmlvX3R5cGVfdDsKKyAKKyAvKiBYRFIgYnVmZmVy IHZlY3RvciBkZXNjcmlwdG9ycyAqLworIHR5cGVkZWYgc3RydWN0IHhkcl92aW8geworQEAgLTEz Myw3ICsxMzMsNyBAQAorIAl1aW50OF90ICp2aW9fd3JhcDsJLyogbWF4aW11bSB2aW9fdGFpbCAq LworIAl1aW50MzJfdCB2aW9fbGVuZ3RoOwkvKiBsZW5ndGggb2YgYnVmZmVyLCB1c2VkIGZvciB2 ZWN0b3IKKyAJCQkJICAgcHJlLWFsbG9jYXRpb24gKi8KKy0JdmlvX3R5cGUgdmlvX3R5cGU7CS8q IHR5cGUgb2YgYnVmZmVyICovICAgCisrCXZpb190eXBlX3QgdmlvX3R5cGU7CS8qIHR5cGUgb2Yg YnVmZmVyICovICAgCisgfSB4ZHJfdmlvOworIAorIC8qIHZpb193cmFwID49IHZpb190YWlsID49 IHZpb19oZWFkID49IHZpb19iYXNlICovCitAQCAtMTYyLDcgKzE2MiwxMSBAQAorIAkJCQkgKiAw OiBub3QgYWxsb2NhdGVkICovCisgCXVfaW50CXVpb19mbGFnczsKKyAJaW50MzJfdCB1aW9fcmVm ZXJlbmNlczsKKysjaWZkZWYgX19jcGx1c3BsdXMKKysJeGRyX3ZpbyB1aW9fdmlvWzFdOworKyNl bHNlCisgCXhkcl92aW8JdWlvX3Zpb1swXTsJLyogYXBwZW5kZWQgdmVjdG9ycyAqLworKyNlbmRp ZgorIH0geGRyX3VpbzsKKyAKKyAvKiBPcCBmbGFncyAqLworZGlmZiAtdXIgbnRpcnBjLTcuMi9u dGlycGMvcnBjL3hkcl9pbmxpbmUuaCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3 ZWUxMjk3ODI1NmJkMS9udGlycGMvcnBjL3hkcl9pbmxpbmUuaAorLS0tIG50aXJwYy03LjIvbnRp cnBjL3JwYy94ZHJfaW5saW5lLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAK KysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9udGly cGMvcnBjL3hkcl9pbmxpbmUuaAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAor QEAgLTUyLDYgKzUyLDE3IEBACisgI2luY2x1ZGUgPHJwYy90eXBlcy5oPgorICNpbmNsdWRlIDxy cGMveGRyLmg+CisgCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlm CisrCisrI2lmbmRlZiBVTlVTRUQKKysjZGVmaW5lIFVOVVNFRF9BVFRSIF9fYXR0cmlidXRlX18o KHVudXNlZCkpCisrI2RlZmluZSBVTlVTRUQoLi4uKSBVTlVTRURfKF9fVkFfQVJHU19fKQorKyNk ZWZpbmUgVU5VU0VEXyhhcmcpIE5PVF9VU0VEXyMjYXJnIFVOVVNFRF9BVFRSCisrI2VuZGlmCisr CisrCisgLyoKKyAgKiBYRFIgaW50ZWdlcnMKKyAgKi8KK0BAIC02MzksNyArNjUwLDcgQEAKKyB9 CisgCisgc3RhdGljIGlubGluZSBib29sCisteGRyX2J5dGVzX2ZyZWUoWERSICp4ZHJzLCBjaGFy ICoqY3BwLCBzaXplX3Qgc2l6ZSkKKyt4ZHJfYnl0ZXNfZnJlZShYRFIgKlVOVVNFRCh4ZHJzKSwg Y2hhciAqKmNwcCwgc2l6ZV90IHNpemUpCisgeworIAlpZiAoKmNwcCkgeworIAkJbWVtX2ZyZWUo KmNwcCwgc2l6ZSk7CitAQCAtODQwLDcgKzg1MSw3IEBACisgfQorIAorIHN0YXRpYyBpbmxpbmUg Ym9vbAorLXhkcl9hcnJheV9mcmVlKFhEUiAqeGRycywgY2hhciAqKmNwcCwgdV9pbnQgKnNpemVw LCB1X2ludCBtYXhzaXplLAorK3hkcl9hcnJheV9mcmVlKFhEUiAqeGRycywgY2hhciAqKmNwcCwg dV9pbnQgKnNpemVwLCB1X2ludCBVTlVTRUQobWF4c2l6ZSksCisgCSAgICAgICB1X2ludCBzZWxl bSwgeGRycHJvY190IHhkcl9lbGVtKQorIHsKKyAJY2hhciAqdGFyZ2V0ID0gKmNwcDsKK0BAIC05 OTMsNyArMTAwNCw3IEBACisgfQorIAorIHN0YXRpYyBpbmxpbmUgYm9vbAorLXhkcl9zdHJpbmdf ZnJlZShYRFIgKnhkcnMsIGNoYXIgKipjcHApCisreGRyX3N0cmluZ19mcmVlKFhEUiAqVU5VU0VE KHhkcnMpLCBjaGFyICoqY3BwKQorIHsKKyAJaWYgKCpjcHApIHsKKyAJCW1lbV9mcmVlKCpjcHAs IHN0cmxlbigqY3BwKSArIDEpOworQEAgLTEwNjQsNCArMTA3NSw4IEBACisgCXJldHVybiAoaW5s aW5lX3hkcl91X2ludDY0X3QoeGRycywgKHVfaW50NjRfdCAqKSB1bGxwKSk7CisgfQorIAorKyNp ZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYgLyogZXh0ZXJuICJDIiAqLworKworICNlbmRp ZgkJCQkvKiBfVElSUENfSU5MSU5FX1hEUl9IICovCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9j bG50X2dlbmVyaWMuYyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1 NmJkMS9zcmMvY2xudF9nZW5lcmljLmMKKy0tLSBudGlycGMtNy4yL3NyYy9jbG50X2dlbmVyaWMu YwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJi MTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9jbG50X2dlbmVyaWMuYwkyMDI2 LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTQ0NywxMCArNDQ3LDQzIEBACisg CXJldHVybiAoMSk7CisgfQorIAorKy8qCisrICogSGVscGVyIGZ1bmN0aW9uIHRvIGluc2VydCBS RE1BIGNsaWVudCByZXF1ZXN0IGludG8gY2FsbF9leHBpcmVzCisrICovCisrc3RhdGljIHZvaWQK KytyZG1hX2NsbnRfcmVxX2V4cGlyZV9pbnNlcnQoc3RydWN0IGNsbnRfcmVxICpjYykKKyt7Cisr CXN0cnVjdCBjeF9kYXRhICpjeCA9IENYX0RBVEEoY2MtPmNjX2NsbnQpOworKwlzdHJ1Y3QgcnBj X2RwbHhfcmVjICpyZWMgPSBjeC0+Y3hfcmVjOworKwlzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlICpu djsKKysJc3RydWN0IHRpbWVzcGVjIHRzOworKworKwkvKiBDYWxjdWxhdGUgZXhwaXJhdGlvbiB0 aW1lICovCisrCSh2b2lkKWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDX0ZBU1QsICZ0cyk7 CisrCXRpbWVzcGVjYWRkKCZ0cywgJmNjLT5jY190aW1lb3V0LCAmdHMpOworKwljYy0+Y2NfZXhw aXJlX21zID0gdGltZXNwZWNfbXMoJnRzKTsKKysKKysJcnBjX2RwbHhfcmxpKHJlYyk7CisrCWNj LT5jY19mbGFncyA9IENMTlRfUkVRX0ZMQUdfRVhQSVJJTkc7CisrIHJlcGVhdDoKKysJbnYgPSBv cHJfcmJ0cmVlX2luc2VydCgmcmVjLT5yZG1hX2NhbGxfZXhwaXJlcywgJmNjLT5jY19ycXN0KTsK KysJaWYgKG52KSB7CisrCQkvKiBhZGQgdGhpcyBzbGlnaHRseSBsYXRlciAqLworKwkJY2MtPmNj X2V4cGlyZV9tcysrOworKwkJZ290byByZXBlYXQ7CisrCX0KKysJcnBjX2RwbHhfcnVpKHJlYyk7 CisrfQorKworIGVudW0gY2xudF9zdGF0CisgY2xudF9yZXFfY2FsbGJhY2soc3RydWN0IGNsbnRf cmVxICpjYykKKyB7CistCXN2Y19ycXN0X2V4cGlyZV9pbnNlcnQoY2MpOworKwkvKiBBZGQgdG8g YXBwcm9wcmlhdGUgY2FsbF9leHBpcmVzIGxpc3QgYmFzZWQgb24gdHJhbnNwb3J0IHR5cGUgKi8K KysJaWYgKGNjLT5jY19jbG50LT5yZG1hX2NsbnQpIHsKKysJCXJkbWFfY2xudF9yZXFfZXhwaXJl X2luc2VydChjYyk7CisrCX0gZWxzZSB7CisrCQlzdmNfcnFzdF9leHBpcmVfaW5zZXJ0KGNjKTsK KysJfQorIAorIAlyZXR1cm4gQ0xOVF9DQUxMX09OQ0UoY2MpOworIH0KK0BAIC00OTIsNiArNTI1 LDIwIEBACisgCXJldHVybiAoUlBDX1NVQ0NFU1MpOworIH0KKyAKKysvKgorKyAqIEhlbHBlciBm dW5jdGlvbiB0byByZW1vdmUgUkRNQSBjbGllbnQgcmVxdWVzdCBmcm9tIGNhbGxfZXhwaXJlcwor KyAqLworK3ZvaWQKKytyZG1hX2NsbnRfcmVxX2V4cGlyZV9yZW1vdmUoc3RydWN0IGNsbnRfcmVx ICpjYykKKyt7CisrCXN0cnVjdCBjeF9kYXRhICpjeCA9IENYX0RBVEEoY2MtPmNjX2NsbnQpOwor KwlzdHJ1Y3QgcnBjX2RwbHhfcmVjICpyZWMgPSBjeC0+Y3hfcmVjOworKworKwlycGNfZHBseF9y bGkocmVjKTsKKysJb3ByX3JidHJlZV9yZW1vdmUoJnJlYy0+cmRtYV9jYWxsX2V4cGlyZXMsICZj Yy0+Y2NfcnFzdCk7CisrCXJwY19kcGx4X3J1aShyZWMpOworK30KKysKKyB2b2lkCisgY2xudF9y ZXFfcmVzZXQoc3RydWN0IGNsbnRfcmVxICpjYykKKyB7CitAQCAtNTA1LDcgKzU1MiwxMiBAQAor IAkJCQkJICAgQ0xOVF9SRVFfRkxBR19BQ0tTWU5DIHwKKyAJCQkJCSAgIENMTlRfUkVRX0ZMQUdf RVhQSVJJTkcpCisgCSAgICAmIENMTlRfUkVRX0ZMQUdfRVhQSVJJTkcpIHsKKy0JCXN2Y19ycXN0 X2V4cGlyZV9yZW1vdmUoY2MpOworKwkJLyogUmVtb3ZlIGZyb20gYXBwcm9wcmlhdGUgY2FsbF9l eHBpcmVzIGxpc3QgYmFzZWQgb24gdHJhbnNwb3J0IHR5cGUgKi8KKysJCWlmIChjYy0+Y2NfY2xu dC0+cmRtYV9jbG50KSB7CisrCQkJcmRtYV9jbG50X3JlcV9leHBpcmVfcmVtb3ZlKGNjKTsKKysJ CX0gZWxzZSB7CisrCQkJc3ZjX3Jxc3RfZXhwaXJlX3JlbW92ZShjYyk7CisrCQl9CisgCQljYy0+ Y2NfZXhwaXJlX21zID0gMDsJLyogYXRvbWljIGJhcnJpZXIocykgKi8KKyAJfQorIH0KK0BAIC01 MjUsNiArNTc3LDcgQEAKKyAJY2MtPmNjX3JlZnJlc2hlcyA9IDI7CisgCWNjLT5jY190aW1lb3V0 ID0gdGltZW91dDsKKyAKKysKKyAJaWYgKHRpbWVvdXQudHZfbnNlYyA8IDAgfHwgdGltZW91dC50 dl9uc2VjID4gOTk5OTk5OTk5CisgCSB8fCB0aW1lb3V0LnR2X3NlYyA8IDApIHsKKyAJCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKK0BAIC01ODUsNyArNjM4LDExIEBACisgCWlmIChh dG9taWNfcG9zdGNsZWFyX3VpbnQxNl90X2JpdHMoJmNjLT5jY19mbGFncywKKyAJCQkJCSAgIENM TlRfUkVRX0ZMQUdfRVhQSVJJTkcpCisgCSAgICAmIENMTlRfUkVRX0ZMQUdfRVhQSVJJTkcpIHsK Ky0JCXN2Y19ycXN0X2V4cGlyZV9yZW1vdmUoY2MpOworKwkJaWYgKGNjLT5jY19jbG50LT5yZG1h X2NsbnQpIHsKKysJCQlyZG1hX2NsbnRfcmVxX2V4cGlyZV9yZW1vdmUoY2MpOworKwkJfSBlbHNl IHsKKysJCQlzdmNfcnFzdF9leHBpcmVfcmVtb3ZlKGNjKTsKKysJCX0KKyAJCWNjLT5jY19leHBp cmVfbXMgPSAwOwkvKiBhdG9taWMgYmFycmllcihzKSAqLworIAl9CisgCitkaWZmIC11ciBudGly cGMtNy4yL3NyYy9jbG50X2ludGVybmFsLmggbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3 NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2NsbnRfaW50ZXJuYWwuaAorLS0tIG50aXJwYy03LjIvc3Jj L2NsbnRfaW50ZXJuYWwuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysr IG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9jbG50 X2ludGVybmFsLmgJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC02NCw1 ICs2NCw5IEBACisgLyogaW4gc3ZjX3Jxc3QuYyAqLworIHZvaWQgc3ZjX3Jxc3RfZXhwaXJlX2lu c2VydChzdHJ1Y3QgY2xudF9yZXEgKik7Cisgdm9pZCBzdmNfcnFzdF9leHBpcmVfcmVtb3ZlKHN0 cnVjdCBjbG50X3JlcSAqKTsKKy0KKyt2b2lkIHN2Y19ycXN0X2V4cGlyZV90YXNrKHN0cnVjdCB3 b3JrX3Bvb2xfZW50cnkgKik7CisraW50IHN2Y19ycXN0X2V4cGlyZV9jbXBmKGNvbnN0IHN0cnVj dCBvcHJfcmJ0cmVlX25vZGUgKmxocywKKysJCQkgY29uc3Qgc3RydWN0IG9wcl9yYnRyZWVfbm9k ZSAqcmhzKTsKKyt2b2lkIHJkbWFfY2xudF9yZXFfZXhwaXJlX3JlbW92ZShzdHJ1Y3QgY2xudF9y ZXEgKik7CisrYm9vbCBjbG50X2RhdGFfaXN2YWxpZChzdHJ1Y3QgcnBjX2NsaWVudCAqKTsKKyAj ZW5kaWYJCQkJLyogX0NMTlRfSU5URVJOQUxfSCAqLworZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMv Y2xudF9yZG1hLmMgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZi ZDEvc3JjL2NsbnRfcmRtYS5jCistLS0gbnRpcnBjLTcuMi9zcmMvY2xudF9yZG1hLmMJMjAyNS0w OS0yMyAxMDowNToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEz ZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvY2xudF9yZG1hLmMJMjAyNi0wNS0xOCAxOTo0 MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC01NCw2ICs1NCw3IEBACisgI2luY2x1ZGUgPGVyci5o PgorICNpbmNsdWRlICJycGNfY29tLmgiCisgI2luY2x1ZGUgImNsbnRfaW50ZXJuYWwuaCIKKysj aW5jbHVkZSAic3ZjX2ludGVybmFsLmgiCisgI2luY2x1ZGUgInJwY19yZG1hLmgiCisgCisgI2Rl ZmluZSBNQVhfREVGQVVMVF9GRFMJCSAyMDAwMAorQEAgLTg4LDI5ICs4OSwxMDEgQEAKKyAgKiBm b2xsb3dlZCBieSBDTE5UX0RFU1RST1koKSBhcyBuZWNlc3NhcnkuCisgICovCisgQ0xJRU5UICoK Ky1jbG50X3JkbWFfbmNyZWF0ZWYoUkRNQVhQUlQgKnJkbWFfeHBydCwJCS8qIGluaXQgYnV0IE5P VCBjb25uZWN0KCllZCAqLworK2NsbnRfcmRtYV9uY3JlYXRlZihjb25zdCBTVkNYUFJUICp4cHJ0 LAkJLyogaW5pdCBidXQgTk9UIGNvbm5lY3QoKWVkICovCisgCQkgICBjb25zdCBycGNwcm9nX3Qg cHJvZ3JhbSwKKyAJCSAgIGNvbnN0IHJwY3ZlcnNfdCB2ZXJzaW9uLAorLQkJICAgY29uc3QgdV9p bnQgZmxhZ3MpCisrCQkgICBjb25zdCB1X2ludCBmbGFncywgYm9vbCBjcmVhdGUpCisgeworIAlz dHJ1Y3QgY21fZGF0YSAqY20gPSBjbG50X3JkbWFfZGF0YV96YWxsb2MoKTsKKyAJQ0xJRU5UICpj bCA9ICZjbS0+Y21fY3guY3hfYzsKKyAJc3RydWN0IHJwY19tc2cgY2FsbF9tc2c7CisgCVhEUiB4 ZHJzWzFdOwkJLyogdGVtcCBYRFIgc3RyZWFtICovCisgCistCWNsLT5jbF9vcHMgPSBjbG50X3Jk bWFfb3BzKCk7CistCistCWlmICghcmRtYV94cHJ0IHx8IHJkbWFfeHBydC0+c3RhdGUgIT0gUkRN QVhTX0lOSVRJQUwpIHsKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCQki JXM6ICVwQCVwIGNhbGxlZCB3aXRoIGludmFsaWQgdHJhbnNwb3J0IGFkZHJlc3MiLAorLQkJCV9f ZnVuY19fLCBjbCwgcmRtYV94cHJ0KTsKKy0JCWNsLT5jbF9lcnJvci5yZV9zdGF0dXMgPSBSUENf VU5LTk9XTkFERFI7CistCQlyZXR1cm4gKGNsKTsKKysJUkRNQVhQUlQgKnJkbWFfeHBydCA9IE5V TEw7CisrCWlmIChjcmVhdGUpIHsKKysJCXJkbWFfeHBydCA9IHJwY19yZG1hX2FsbG9jYXRlKCgo UkRNQVhQUlQgKil4cHJ0KS0+eGEpOworKwkJaWYgKCFyZG1hX3hwcnQpIHsKKysJCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJCSIlczogcmRtYSBhbGxvY2F0ZSBmYWlsZWQi LCBfX2Z1bmNfXyk7CisrCQkJY2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19TWVNURU1FUlJP UjsKKysJCQlyZXR1cm4gY2w7CisrCQl9CisrCX0gZWxzZSB7CisrCQlyZG1hX3hwcnQgPSAoUkRN QVhQUlQgKil4cHJ0OworKwkJcmRtYV94cHJ0LT5zaGFyZWQgPSB0cnVlOworKwkJLyogVGFrZSBy ZWYgZm9yIHNoYXJlZCB4cHJ0ICovCisrCQlTVkNfUkVGKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQs IFNWQ19SRUZfRkxBR19OT05FKTsKKyAJfQorKworIAljbS0+Y21fY3guY3hfcmVjID0gJnJkbWFf eHBydC0+c21fZHI7CisrCWNsLT5jbF9vcHMgPSBjbG50X3JkbWFfb3BzKCk7CisrCWNsLT5yZG1h X2NsbnQgPSB0cnVlOworIAorLQlycGNfcmRtYV9jb25uZWN0KHJkbWFfeHBydCk7CistCXJwY19y ZG1hX2Nvbm5lY3RfZmluYWxpemUocmRtYV94cHJ0KTsKKysJLyogVGhpcyBpcyB1c2VkIHdoZW4g d2Ugd2FudCB0byBjcmVhdGUgc2VwZXJhdGUKKysJICogY29ubmVjdGlvbiBmb3IgY2FsbGJhY2sg Y2hhbm5lbC4KKysJICogeHBydCB3ZSBhcmUgcGFzc2luZyBpcyBleGlzdGluZyBjb25uZWN0aW9u LAorKwkgKiBzbyB3ZSBuZWVkIHNlcGFyZXQgZmxhZyB0byBpbmRpY2F0ZSB3ZSB3YW50IHRvCisr CSAqIGNyZWF0ZSBuZXcgY29ubmVjdGlvbiBvciBleGlzdGluZyBvbmUgYXMgY2FsbGJhY2sgY2hh bm5lbC4KKysJICogRm9yIE5GU3Y0LjEgaXRzIGFsd2F5cyBmYWxzZSwgc2luY2Ugd2Ugd2FudCB0 byB1c2Ugc2FtZSBjb25uZWN0aW9uLiAqLworKwlpZiAoY3JlYXRlKSB7CisrCQkvKiBDb3B5IHJl bW90ZSBpcCAqLworKwkJc3ZjX3JkbWFfb3BzKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOworKwor KwkJcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2lwID0gbWVtX2FsbG9jKFNPQ0tfTkFNRV9NQVgp OworKwkJbWVtY3B5KHJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwgeHBydC0+eHBfaXAsIFNP Q0tfTkFNRV9NQVgpOworKwkJcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3BvcnQgPSB4cHJ0LT54 cF9wb3J0OworKworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLCAiJXM6IGNy ZWF0ZSByZG1hIGNsbnQgaXAgJXMgcG9ydCAlZCIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydC0+ c21fZHIueHBydC54cF9pcCwgcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3BvcnQpOworKworKwkJ LyogUkRNQVhfQ0xJRU5UIGluZGljYXRlIGlzIGNsaWVudCBjb25uZWN0aW9uIGZyb20KKysJCSAq IHNlcnZlciB0byBjbGllbnQgaWYgd2UgYXJlIGNyZWF0aW5nIG5ldyBjb25uZWN0aW9uCisrCQkg KiBmb3Igc2VydmVyIGxpc3RlbiBjb25uZWN0aW9uIHdlIHVzZSB4YS0+YmFja2xvZworKwkJICog Zm9yIGNsaWVudCB0byBzZXJ2ZXIgY29ubmVjdGlvbiB3ZSB1c2UgUkRNQVhfU0VSVkVSX0NISUxE ICovCisrCQlyZG1hX3hwcnQtPnNlcnZlciA9IFJETUFYX0NMSUVOVDsKKysKKysJCWlmICghcmRt YV94cHJ0IHx8IHJkbWFfeHBydC0+c3RhdGUgIT0gUkRNQVhTX0lOSVRJQUwpIHsKKysJCQlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJCSIlczogJXBAJXAgY2FsbGVkIHdpdGgg aW52YWxpZCB0cmFuc3BvcnQgYWRkcmVzcyIsCisrCQkJCV9fZnVuY19fLCBjbCwgcmRtYV94cHJ0 KTsKKysJCQljbC0+Y2xfZXJyb3IucmVfc3RhdHVzID0gUlBDX1VOS05PV05BRERSOworKwkJCXJl dHVybiAoY2wpOworKwkJfQorKworKwkJaWYgKHJwY19yZG1hX2Nvbm5lY3RfcHJlcGFyZShyZG1h X3hwcnQpKSB7CisrCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IGZhaWxl ZCIsIF9fZnVuY19fKTsKKysJCQljbC0+Y2xfZXJyb3IucmVfc3RhdHVzID0gUlBDX1VOS05PV05B RERSOworKwkJCXJldHVybiAoY2wpOworKwkJfQorKworKwkJaWYgKHJwY19yZG1hX2Nvbm5lY3Qo cmRtYV94cHJ0KSkgeworKwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKysJCQkJ IiVzOiByZG1hIGNvbm5lY3QgZmFpbGVkIiwgX19mdW5jX18pOworKwkJCWNsLT5jbF9lcnJvci5y ZV9zdGF0dXMgPSBSUENfVU5LTk9XTkFERFI7CisrCQkJcmV0dXJuIChjbCk7CisrCQl9CisrCQlp ZiAocnBjX3JkbWFfY29ubmVjdF9maW5hbGl6ZShyZG1hX3hwcnQpKSB7CisrCQkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX0VSUk9SLAorKwkJCQkiJXM6IHJkbWEgY29ubmVjdCBmaW5hbGl6ZSBm YWlsZWQiLCBfX2Z1bmNfXyk7CisrCQkJY2wtPmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19VTktO T1dOQUREUjsKKysJCQlyZXR1cm4gKGNsKTsKKysJCX0KKysKKysJCXN0cnVjdCBycGNfZHBseF9y ZWMgKnJlYyA9IFJFQ19YUFJUKHhwcnQpOworKwkJcmRtYV94cHJ0LT5zbV9kci5yZWN2c3ogPSBy ZWMtPnJlY3ZzejsKKysJCXJkbWFfeHBydC0+c21fZHIuc2VuZHN6ID0gcmVjLT5zZW5kc3o7Cisr CQlyZG1hX3hwcnQtPnNtX2RyLnBhZ2VzeiA9IHJlYy0+cGFnZXN6OworKworKwkJcmRtYV94cHJ0 LT5zbV9kci5yZWN2X2hkcl9zeiA9IHJlYy0+cmVjdl9oZHJfc3o7CisrCQlyZG1hX3hwcnQtPnNt X2RyLnNlbmRfaGRyX3N6ID0gcmVjLT5zZW5kX2hkcl9zejsKKysKKysJCWlmICh4ZHJfcmRtYV9j cmVhdGUocmRtYV94cHJ0KSkgeworKwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwK KysJCQkJIiVzOiBidWZmZXIgYWxsb2NhdGlvbiBmYWlsZWQiLCBfX2Z1bmNfXyk7CisrCQkJY2wt PmNsX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19TWVNURU1FUlJPUjsKKysJCQlyZXR1cm4gKGNsKTsK KysJCX0KKysJfQorIAorIAkvKgorIAkgKiBpbml0aWFsaXplIGNhbGwgbWVzc2FnZQorQEAgLTE2 MiwyMyArMjM1LDQyIEBACisgCQl4ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJnJkbWFfeHBydC0+c21f ZHIuaW9xLCAmcmRtYV94cHJ0LT5jYnFoLAorIAkJCQkgImNhbGwgY29udGV4dCIsIDEsIElPUV9G TEFHX05PTkUpOworIAlzdHJ1Y3QgcnBjX3JkbWFfY2JjICpjYmMgPSAoc3RydWN0IHJwY19yZG1h X2NiYyAqKShfSU9RKGhhdmUpKTsKKysKKysgICAgICAgIGNiYy0+cmVjdnEueGRyc1swXS54X2xp YlsxXSA9CisrICAgICAgICBjYmMtPnNlbmRxLnhkcnNbMF0ueF9saWJbMV0gPQorKyAgICAgICAg Y2JjLT5kYXRhcS54ZHJzWzBdLnhfbGliWzFdID0KKysgICAgICAgIGNiYy0+ZnJlZXEueGRyc1sw XS54X2xpYlsxXSA9IHJkbWFfeHBydDsKKysKKysgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygm cmRtYV94cHJ0LT5jYmNsaXN0LnFtdXRleCk7CisrCisrICAgICAgICBjYmMtPmNhbGxfaW5saW5l ID0gMTsKKysgICAgICAgIGNiYy0+ZGF0YV9jaHVua191diA9IE5VTEw7CisrICAgICAgICBjYmMt PnJlZmNudCA9IDE7IC8vIFNlbnRpbmVsIHJlZgorKwlTVkNfUkVGKCZyZG1hX3hwcnQtPnNtX2Ry LnhwcnQsIFNWQ19SRUZfRkxBR19OT05FKTsgLy8gZm9yIGNiYyByZWYKKysgICAgICAgIGNiYy0+ Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfUkVMRUFTRTsKKysgICAgICAgIGNiYy0+cmVhZF93YWl0cyA9 IDA7CisrICAgICAgICBjYmMtPndyaXRlX3dhaXRzID0gMDsKKysgICAgICAgIGNiYy0+YWN0aXZl ID0gZmFsc2U7CisrICAgICAgICBjYmMtPm5vbl9yZWdpc3RlcmVkX2J1ZiA9IE5VTEw7CisrICAg ICAgICBjYmMtPm5vbl9yZWdpc3RlcmVkX2J1Zl9sZW4gPSAwOworKworKyAgICAgICAgVEFJTFFf SU5TRVJUX1RBSUwoJnJkbWFfeHBydC0+Y2JjbGlzdC5xaCwgJmNiYy0+Y2JjX2xpc3QsIHEpOwor KyAgICAgICAgcmRtYV94cHJ0LT5jYmNsaXN0LnFjb3VudCsrOworKyAgICAgICAgcHRocmVhZF9t dXRleF91bmxvY2soJnJkbWFfeHBydC0+Y2JjbGlzdC5xbXV0ZXgpOworKworIAlYRFIgKnhkcnM7 CisgCXVfaW50MzJfdCAqdWludDMycDsKKyAKKy0JLyogZnJlZSBvbGQgYnVmZmVycyAoc2hvdWxk IGRvIG5vdGhpbmcpICovCistCXhkcl9pb3FfcmVsZWFzZSgmY2JjLT5yZWN2cS5pb3FfdXYudXZx aCk7CistCXhkcl9pb3FfcmVsZWFzZSgmY2JjLT5zZW5kcS5pb3FfdXYudXZxaCk7CistCXhkcl9y ZG1hX2NhbGxxKHJkbWFfeHBydCk7CistCistCWNiYy0+cmVjdnEueGRyc1swXS54X2xpYlsxXSA9 CistCWNiYy0+c2VuZHEueGRyc1swXS54X2xpYlsxXSA9IHJkbWFfeHBydDsKKysJY2MtPmNjX3Rp bWVvdXQudHZfc2VjID0gY2MtPmNjX3RpbWVvdXQudHZfbnNlYyA9IDA7CisgCistCSh2b2lkKSB4 ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZyZG1hX3hwcnQtPm91dGJ1ZnNfZGF0 YS51dnFoLAorKwkvKiBVc2UgaGRyIGJ1ZmZlciBzaW5jZSBjYWxsYmFja3MgZG9uJ3QgY29udGFp biBkYXRhICovCisrCSh2b2lkKSB4ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZy ZG1hX3hwcnQtPm91dGJ1ZnNfaGRyLnV2cWgsCisgCQkJCSJjYWxsIGJ1ZmZlciIsIDEsIElPUV9G TEFHX05PTkUpOworIAl4ZHJfaW9xX3Jlc2V0KCZjYmMtPnNlbmRxLCAwKTsKKyAKKyAJeGRycyA9 IGNiYy0+c2VuZHEueGRyczsKKyAJY2MtPmNjX2Vycm9yLnJlX3N0YXR1cyA9IFJQQ19TVUNDRVNT OworKwl4ZHJzLT54X29wID0gWERSX0VOQ09ERTsKKyAKKyAJbXV0ZXhfbG9jaygmY2wtPmNsX2xv Y2spOworIAl1aW50MzJwID0gKHVfaW50MzJfdCAqKSZjeC0+Y3hfbWNhbGxjWzBdOworQEAgLTE5 NCwxNiArMjg2LDIwIEBACisgCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfQ0xOVF9SRE1BLAor IAkJCSIlczogJXBAJXAgZmFpbGVkIiwKKyAJCQlfX2Z1bmNfXywgY2wsIGN4LT5jeF9yZWMpOwor LQkJeGRyX2lvcV9yZWxlYXNlKCZjYmMtPnNlbmRxLmlvcV91di51dnFoKTsKKysJCWNiY19yZWxl YXNlX2l0KGNiYyk7CisgCQlyZXR1cm4gKFJQQ19DQU5URU5DT0RFQVJHUyk7CisgCX0KKyAJbXV0 ZXhfdW5sb2NrKCZjbC0+Y2xfbG9jayk7CisgCisrCS8qIHNlbmQgcmVxdWVzdCBhbmQgcmVjdiBy ZXNwb25zZSAqLworIAlpZiAoIXhkcl9yZG1hX2NsbnRfZmx1c2hvdXQoY2JjKSkgeworKwkJY2Jj X3JlbGVhc2VfaXQoY2JjKTsKKyAJCWNsLT5jbF9lcnJvci5yZV9lcnJubyA9IGVycm5vOworIAkJ cmV0dXJuIChSUENfQ0FOVFNFTkQpOworIAl9CisgCisrCWNiY19yZWxlYXNlX2l0KGNiYyk7Cisr CisgCXJldHVybiAoUlBDX1NVQ0NFU1MpOworIH0KKyAKK2RpZmYgLXVyIG50aXJwYy03LjIvc3Jj L2NsbnRfdmMuYyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJk MS9zcmMvY2xudF92Yy5jCistLS0gbnRpcnBjLTcuMi9zcmMvY2xudF92Yy5jCTIwMjUtMDktMjMg MTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTVi YWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL2NsbnRfdmMuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAw MDAwMDAwMCAtMDQwMAorQEAgLTczLDYgKzczLDkgQEAKKyAjaW5jbHVkZSAic3ZjX2lvcS5oIgor ICNpbmNsdWRlICJjbG50X2ludGVybmFsLmgiCisgI2luY2x1ZGUgInN2Y19pbnRlcm5hbC5oIgor KyNpZmRlZiBVU0VfUlBDX1JETUEKKysjaW5jbHVkZSAicnBjX3JkbWEuaCIKKysjZW5kaWYKKyAK KyBzdGF0aWMgZW51bSB4cHJ0X3N0YXQgY2xudF92Y19wcm9jZXNzKHN0cnVjdCBzdmNfcmVxICpy ZXEpOworIHN0YXRpYyBzdHJ1Y3QgY2xudF9vcHMgKmNsbnRfdmNfb3BzKHZvaWQpOworQEAgLTEy NCw2ICsxMjcsNDkgQEAKKyAgKiAgICAgIHNlcnZlciB0cmFucHNvcnRzIHNoYXJpbmcgYW4gdW5k ZXJseWluZyBieXRlc3RyZWFtIChNYXR0KS4KKyAgKi8KKyAKKysjaWZkZWYgVVNFX1JQQ19SRE1B CisrLyogQ3JlYXRlIG5ldyBSRE1BIGNsaWVudCB3aXRoIHNwZWNpZmllZCBjb25uZWN0aW9uIHBh cmFtZXRlcnMgKi8KKytDTElFTlQgKgorK2NsbnRfcmRtYV9jcmVhdGUoaW50IGZkLCBjaGFyICpo b3N0LCBpbnQgcG9ydCwgaW50IHJlY3Zfc3osIGludCBzZW5kX3N6LAorKyAgICBpbnQgcGFnZV9z eiwgY29uc3QgcnBjcHJvZ190IHByb2csIGNvbnN0IHJwY3ZlcnNfdCB2ZXJzLAorKyAgICBjb25z dCB1aW50MzJfdCBmbGFncykKKyt7CisrCXN0cnVjdCBycGNfcmRtYV9hdHRyIHRtcF94YSA9IHsK KysJCS5zdGF0aXN0aWNzX3ByZWZpeCA9IE5VTEwsCisrCQkubm9kZSA9ICI6OiIsCisrCQkucG9y dCA9ICIyMDA0OSIsICAgICAgICAgICAgICAgIC8qIGRlZmF1bHQgcG9ydCAyMDA0OSAqLworKwkJ LnNxX2RlcHRoID0gMzIsICAgICAgICAgICAgICAgICAvKiBkZWZhdWx0IHdhcyA1MCAqLworKwkJ Lm1heF9zZW5kX3NnZSA9IDMyLCAgICAgICAgICAgICAvKiBtaW5pbXVtIDIgKi8KKysJCS5ycV9k ZXB0aCA9IDMyLCAgICAgICAgICAgICAgICAgLyogZGVmYXVsdCB3YXMgNTAgKi8KKysJCS5tYXhf cmVjdl9zZ2UgPSAzMSwgICAgICAgICAgICAgLyogbWluaW11bSAxICovCisrCQkuYmFja2xvZyA9 IDEwLCAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gMiAqLworKwkJLmNyZWRpdHMgPSAzMCwg ICAgICAgICAgICAgICAgICAvKiBkZWZhdWx0IDEwICovCisrCQkuZGVzdHJveV9vbl9kaXNjb25u ZWN0ID0gdHJ1ZSwKKysJCS51c2Vfc3JxID0gZmFsc2UsCisrCX07CisrCXN0cnVjdCBycGNfcmRt YV9hdHRyICp1c2VfeGEgPSBtZW1fYWxsb2Moc2l6ZW9mKHN0cnVjdCBycGNfcmRtYV9hdHRyKSk7 CisrCW1lbWNweSh1c2VfeGEsICZ0bXBfeGEsIHNpemVvZihzdHJ1Y3QgcnBjX3JkbWFfYXR0cikp OworKwlTVkNYUFJUICp4cHJ0ID0gc3ZjX2ZkX25jcmVhdGVmKGZkLCBzZW5kX3N6LCByZWN2X3N6 LCBmbGFncyk7CisrCWlmICgheHBydCkgeworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VS Uk9SLCAiJXM6IEZhaWxlZCB0byBjcmVhdGUgeHBydCBmZCAlZCIsCisrCQkJX19mdW5jX18sIGZk KTsKKysJCXJldHVybiBOVUxMOworKwl9CisrCVJETUFYUFJUICpyZG1hX3hwcnQgPSAoUkRNQVhQ UlQgKil4cHJ0OworKwlyZG1hX3hwcnQtPnhhID0gdXNlX3hhOworKwlzdHJ1Y3QgcnBjX2RwbHhf cmVjICpyZWMgPSBSRUNfWFBSVCh4cHJ0KTsKKysJcmVjLT5yZWN2c3ogPSBSRE1BX0RBVEFfQ0hV TktfU1o7CisrCXJlYy0+c2VuZHN6ID0gUkRNQV9EQVRBX0NIVU5LX1NaOworKwlyZWMtPnBhZ2Vz eiA9IHBhZ2Vfc3o7CisrCXJlYy0+cmVjdl9oZHJfc3ogPSBSRE1BX0hEUl9DSFVOS19TWjsKKysJ cmVjLT5zZW5kX2hkcl9zeiA9IFJETUFfSERSX0NIVU5LX1NaOworKwl4cHJ0LT54cF9pcCA9IGhv c3Q7CisrCXhwcnQtPnhwX3BvcnQgPSBwb3J0OworKwkvKiBjcmVhdGUgcmRtYV94cHJ0IHVzaW5n IHhwcnQgKi8KKysJcmV0dXJuIGNsbnRfcmRtYV9uY3JlYXRlZih4cHJ0LCBwcm9nLCB2ZXJzLCBm bGFncywgdHJ1ZSk7CisrfQorKyNlbmRpZgorKworIC8qCisgICogQ3JlYXRlIGEgY2xpZW50IGhh bmRsZSBmb3IgYSBjb25uZWN0aW9uLgorICAqIERlZmF1bHQgb3B0aW9ucyBhcmUgc2V0LCB3aGlj aCB0aGUgdXNlciBjYW4gY2hhbmdlIHVzaW5nIGNsbnRfY29udHJvbCgpJ3MuCitkaWZmIC11ciBu dGlycGMtNy4yL3NyYy9DTWFrZUxpc3RzLnR4dCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJh Yjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvQ01ha2VMaXN0cy50eHQKKy0tLSBudGlycGMtNy4yL3Ny Yy9DTWFrZUxpc3RzLnR4dAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysr IG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9DTWFr ZUxpc3RzLnR4dAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTUsOSAr NSw2IEBACisgICAtRF9HTlVfU09VUkNFCisgKQorIAorLSMgb2sgb24gTGludXggYW5kIEZyZWVC U0Qgdy9HQ0MgYW5kIGNsYW5nIGNvbXBpbGVycworLXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtF X0NfRkxBR1N9IC1mUElDIikKKy0KKyAjIyMjIyMjIyMjIyBuZXh0IHRhcmdldCAjIyMjIyMjIyMj IyMjIyMKKyAKKyBTRVQobnRpcnBjX2NvbW1vbl9TUkNTCitAQCAtMjcsNyArMjQsNiBAQAorICAg Z2V0bmV0Y29uZmlnLmMKKyAgIGdldG5ldHBhdGguYworICAgZ2V0cGVlcmVpZC5jCistICBnZXRy cGNlbnQuYworICAgbXRfbWlzYy5jCisgICBwbWFwX3Byb3QuYworICAgcG1hcF9wcm90Mi5jCitA QCAtMTM2LDcgKzEzMiw3IEBACisgICBTT1ZFUlNJT04gIiR7TlRJUlBDX01BSk9SX1ZFUlNJT059 JHtOVElSUENfTUlOT1JfVkVSU0lPTn0iCisgICApCisgCistaW5zdGFsbChUQVJHRVRTIG50aXJw YyBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0pCisraW5zdGFsbChUQVJHRVRTIG50aXJw YyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSkKKyAKKyAjIyMjIyMjIyMjIyBp bnN0YWxsIGZpbGVzICMjIyMjIyMjIyMjIyMjIworIAorZGlmZiAtdXIgbnRpcnBjLTcuMi9zcmMv bGlibnRpcnBjLm1hcC5pbi5jbWFrZSBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3 ZWUxMjk3ODI1NmJkMS9zcmMvbGlibnRpcnBjLm1hcC5pbi5jbWFrZQorLS0tIG50aXJwYy03LjIv c3JjL2xpYm50aXJwYy5tYXAuaW4uY21ha2UJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAwMDAg LTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJk MS9zcmMvbGlibnRpcnBjLm1hcC5pbi5jbWFrZQkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAw MCAtMDQwMAorQEAgLTcwLDYgKzcwLDggQEAKKyAgICAgY2xudF92Y19nZXRfY2xpZW50X3hwcnQ7 CisgICAgIGNsbnRfdmNfbmNyZWF0ZWY7CisgICAgIGNsbnRfdmNfbmNyZWF0ZV9zdmM7CisrICAg IGNsbnRfcmRtYV9jcmVhdGU7CisrICAgIGNsbnRfcmRtYV9uY3JlYXRlZjsKKyAKKyAgICAgIyBl KgorICAgICBlbmRuZXRjb25maWc7CitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9sdHRuZy9DTWFr ZUxpc3RzLnR4dCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJk MS9zcmMvbHR0bmcvQ01ha2VMaXN0cy50eHQKKy0tLSBudGlycGMtNy4yL3NyYy9sdHRuZy9DTWFr ZUxpc3RzLnR4dAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJw Yy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9sdHRuZy9DTWFr ZUxpc3RzLnR4dAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTIyLDcg KzIyLDcgQEAKKyAgIFNPVkVSU0lPTiAiJHtOVElSUENfTUFKT1JfVkVSU0lPTn0ke05USVJQQ19N SU5PUl9WRVJTSU9OfSIKKyApCisgCistaW5zdGFsbChUQVJHRVRTIG50aXJwY190cmFjZXBvaW50 cyBDT01QT05FTlQgdHJhY2luZyBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0gKQorK2lu c3RhbGwoVEFSR0VUUyBudGlycGNfdHJhY2Vwb2ludHMgQ09NUE9ORU5UIHRyYWNpbmcgREVTVElO QVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0gKQorIAorIGFkZF9saWJyYXJ5KG50aXJwY19s dHRuZyBTVEFUSUMgbHR0bmdfZGVmaW5lcy5jKQorICNhZGRfc2FuaXRpemVycyhudGlycGNfbHR0 bmcpCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9tZXRyaWNzX2xpYm50aXJwYy5oIG50aXJwYy01 Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9tZXRyaWNzX2xpYm50 aXJwYy5oCistLS0gbnRpcnBjLTcuMi9zcmMvbWV0cmljc19saWJudGlycGMuaAkyMDI1LTA5LTIz IDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1 YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9tZXRyaWNzX2xpYm50aXJwYy5oCTIwMjYtMDUtMTgg MTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMzMsNiArMzMsNyBAQAorICNpbmNsdWRlIDxy cGMvYXV0aF9nc3MuaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8cnBjL2F1dGhfc3RhdC5oPgorKyNp bmNsdWRlIDx0aW1lLmg+CisgCisgdHlwZWRlZiBlbnVtIGdzc19zdmNfYXV0aF9zdGVwIHsKKyAJ VkFMSURBVEVfQVVUSF9EQVRBID0gMCwKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL21vbml0b3Jp bmcvQ01ha2VMaXN0cy50eHQgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5 NzgyNTZiZDEvc3JjL21vbml0b3JpbmcvQ01ha2VMaXN0cy50eHQKKy0tLSBudGlycGMtNy4yL3Ny Yy9tb25pdG9yaW5nL0NNYWtlTGlzdHMudHh0CTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAw IC0wNDAwCisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZi ZDEvc3JjL21vbml0b3JpbmcvQ01ha2VMaXN0cy50eHQJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAw MDAwMDAgLTA0MDAKK0BAIC04LDEzICs4LDEzIEBACisgCisgYWRkX2xpYnJhcnkobnRpcnBjbW9u aXRvcmluZyBTSEFSRUQgJHtudGlycGNtb25pdG9yaW5nX1NSQ1N9KQorIGFkZF9zYW5pdGl6ZXJz KG50aXJwY21vbml0b3JpbmcpCistc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG50aXJwY21vbml0b3Jp bmcgUFJPUEVSVElFUyBDT01QSUxFX0ZMQUdTICItZlBJQyIKKytzZXRfdGFyZ2V0X3Byb3BlcnRp ZXMobnRpcnBjbW9uaXRvcmluZyBQUk9QRVJUSUVTCisgICBWRVJTSU9OICR7TlRJUlBDX1ZFUlNJ T059CisgICBTT1ZFUlNJT04gIiR7TlRJUlBDX01BSk9SX1ZFUlNJT059JHtOVElSUENfTUlOT1Jf VkVSU0lPTn0iCisgICApCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMobnRpcnBjbW9uaXRv cmluZyAgICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcHJvbWV0aGV1cy1j cHAtbGl0ZS9jb3JlL2luY2x1ZGUpCisgc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhf RkxBR1N9IC1wZWRhbnRpYy1lcnJvcnMgLVdlcnJvciAtV2FsbCAtV2V4dHJhIikKKy1pbnN0YWxs KFRBUkdFVFMgbnRpcnBjbW9uaXRvcmluZyBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0p CisraW5zdGFsbChUQVJHRVRTIG50aXJwY21vbml0b3JpbmcgREVTVElOQVRJT04gJHtDTUFLRV9J TlNUQUxMX0xJQkRJUn0pCisgCisgIyMjIyMjIyMjIyMgaW5zdGFsbCBmaWxlcyAjIyMjIyMjIyMj IyMjIyMKKy1pbnN0YWxsKEZJTEVTICBpbmNsdWRlL21vbml0b3JpbmcuaCBERVNUSU5BVElPTiBp bmNsdWRlL250aXJwYykKKytpbnN0YWxsKEZJTEVTICBpbmNsdWRlL21vbml0b3JpbmcuaCBERVNU SU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vbnRpcnBjKQorZGlmZiAtdXIgbnRp cnBjLTcuMi9zcmMvcnBjX2RwbHhfaW50ZXJuYWwuaCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhh NWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvcnBjX2RwbHhfaW50ZXJuYWwuaAorLS0tIG50aXJw Yy03LjIvc3JjL3JwY19kcGx4X2ludGVybmFsLmgJMjAyNS0wOS0yMyAxMDowNToxOS4wMDAwMDAw MDAgLTA0MDAKKysrKyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1 NmJkMS9zcmMvcnBjX2RwbHhfaW50ZXJuYWwuaAkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAw MCAtMDQwMAorQEAgLTU3LDYgKzU3LDcgQEAKKyAJc3RydWN0IHhkcl9pb3EgaW9xOworIAlzdHJ1 Y3QgcG9vbHFfaGVhZCB3cml0ZXE7CS8qKjwgcG9vbHEgZm9yIHdyaXRlIHJlcXVlc3RzICovCisg CXN0cnVjdCBvcHJfcmJ0cmVlIGNhbGxfcmVwbGllczsKKysJc3RydWN0IG9wcl9yYnRyZWUgcmRt YV9jYWxsX2V4cGlyZXM7CS8qKjwgY2FsbCBleHBpcmF0aW9uIHRyZWUgZm9yIFJETUEgKi8KKyAJ c3RydWN0IG9wcl9yYnRyZWVfbm9kZSBmZF9ub2RlOworIAlzdHJ1Y3QgeworIAkJcnBjX2RwbHhf bG9ja190IGxvY2s7CitAQCAtMTE0LDExICsxMTUsMTYgQEAKKyAJY29uZF9kZXN0cm95KCZsb2Nr LT53ZS5jdik7CisgfQorIAorKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIGNhbGxfZXhwaXJl cyBjb21wYXJpc29uIGZ1bmN0aW9uICovCisraW50IHN2Y19ycXN0X2V4cGlyZV9jbXBmKGNvbnN0 IHN0cnVjdCBvcHJfcmJ0cmVlX25vZGUgKmxocywKKysJCQkgY29uc3Qgc3RydWN0IG9wcl9yYnRy ZWVfbm9kZSAqcmhzKTsKKysKKyBzdGF0aWMgaW5saW5lIHZvaWQKKyBycGNfZHBseF9yZWNfaW5p dChzdHJ1Y3QgcnBjX2RwbHhfcmVjICpyZWMpCisgeworIAlycGNfZHBseF9sb2NrX2luaXQoJnJl Yy0+cmVjdi5sb2NrKTsKKyAJb3ByX3JidHJlZV9pbml0KCZyZWMtPmNhbGxfcmVwbGllcywgY2xu dF9yZXFfeGlkX2NtcGYpOworKwlvcHJfcmJ0cmVlX2luaXQoJnJlYy0+cmRtYV9jYWxsX2V4cGly ZXMsIHN2Y19ycXN0X2V4cGlyZV9jbXBmKTsKKyAJbXV0ZXhfaW5pdCgmcmVjLT54cHJ0LnhwX2xv Y2ssIE5VTEwpOworIAlUQUlMUV9JTklUKCZyZWMtPndyaXRlcS5xaCk7CisgCW11dGV4X2luaXQo JnJlYy0+d3JpdGVxLnFtdXRleCwgTlVMTCk7CitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9ycGNf cmRtYS5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3Ny Yy9ycGNfcmRtYS5jCistLS0gbnRpcnBjLTcuMi9zcmMvcnBjX3JkbWEuYwkyMDI1LTA5LTIzIDEw OjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFi NzczNDdlZTEyOTc4MjU2YmQxL3NyYy9ycGNfcmRtYS5jCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAw MDAwMDAwIC0wNDAwCitAQCAtNzQsNiArNzQsNyBAQAorICNpbmNsdWRlICJtaXNjL2Fic3RyYWN0 X2F0b21pYy5oIgorICNpbmNsdWRlICJycGNfcmRtYS5oIgorICNpbmNsdWRlICJzdmNfaW50ZXJu YWwuaCIKKysjaW5jbHVkZSAiY2xudF9pbnRlcm5hbC5oIgorIAorICNpZmRlZiBIQVZFX1ZBTEdS SU5EX01FTUNIRUNLX0gKKyAjICBpbmNsdWRlIDx2YWxncmluZC9tZW1jaGVjay5oPgorQEAgLTMy OSw3ICszMzAsNyBAQAorIAlpbnQgY2xlYW51cF9jb3VudCA9IDA7CisgCXN0cnVjdCBwb29scV9o ZWFkICppb3FoID0gJnJkbWFfeHBydC0+Y2JjbGlzdDsKKyAKKy0JX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VWRU5ULCAiJXMoKSBiZWZvcmUgY2xlYW51cCAiCisrCV9fd2FybngoVElSUENfREVC VUdfRkxBR19SUENfUkRNQSwgIiVzKCkgYmVmb3JlIGNsZWFudXAgIgorIAkgICAgIiVwIHhwX3Jl ZmNudCAlZCBhY3RpdmUgcmVxdWVzdHMgJWQgcWNvdW50ICVkIiwKKyAJICAgIF9fZnVuY19fLCAm cmRtYV94cHJ0LT5zbV9kci54cHJ0LAorIAkgICAgcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3Jl ZmNudCwgcmRtYV94cHJ0LT5hY3RpdmVfcmVxdWVzdHMsCitAQCAtMzc2LDcgKzM3Nyw3IEBACisg CQkJCWNiY19yZWxlYXNlID0gdHJ1ZTsKKyAJCQkJY2JjX3JlbGVhc2VfY291bnQgPSBjYmMtPndy aXRlX3dhaXRzOworIAorLQkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlcyBh Y3RpdmUgY2JjICVwICIKKysJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLCAi JXMgYWN0aXZlIGNiYyAlcCAiCisgCQkJCSAgICAiY2JjX3JlZiAlZCByZWFkX3dhaXRzICVkIHdy aXRlX3dhaXRzICVkICIKKyAJCQkJICAgICJhY3RpdmUgcmVxdWVzdHMgJWQgcmRtYV94cHJ0ICVw IiwKKyAJCQkJICAgIF9fZnVuY19fLCBjYmMsIGNiYy0+cmVmY250LCBjYmMtPnJlYWRfd2FpdHMs CitAQCAtMzg2LDcgKzM4Nyw3IEBACisgCisgCQkJaWYgKCFjYmNfcmVsZWFzZSkgeworIAkJCQkv KiBQZW5kaW5nIHJlcXVlc3Qgc2hvdWxkIGNsZWFudXAgdGhpcyBjYmMgKi8KKy0JCQkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULCAiJXMgYWN0aXZlIGNiYyAlcCAiCisrCQkJCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwgIiVzIGFjdGl2ZSBjYmMgJXAgIgorIAkJCQkg ICAgImNiY19yZWYgJWQgcmVhZF93YWl0cyAlZCB3cml0ZV93YWl0cyAlZCAiCisgCQkJCSAgICAi YWN0aXZlIHJlcXVlc3RzICVkIHJkbWFfeHBydCAlcCIsCisgCQkJCSAgICBfX2Z1bmNfXywgY2Jj LCBjYmMtPnJlZmNudCwgY2JjLT5yZWFkX3dhaXRzLAorQEAgLTQxNyw3ICs0MTgsNyBAQAorIAor IAlwdGhyZWFkX211dGV4X3VubG9jaygmaW9xaC0+cW11dGV4KTsKKyAKKy0JX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULCAiJXMoKSBhZnRlciBjbGVhbnVwICIKKysJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX1JQQ19SRE1BLCAiJXMoKSBhZnRlciBjbGVhbnVwICIKKyAJICAgICIlcCB4 cF9yZWZjbnQgJWQgYWN0aXZlIHJlcXVlc3RzICVkIGNsZWFudXAgY291bnQgJWQgIgorIAkgICAg InFjb3VudCAlZCIsCisgCSAgICBfX2Z1bmNfXywgJnJkbWFfeHBydC0+c21fZHIueHBydCwKK0BA IC01MTUsNyArNTE2LDcgQEAKKyAKKyAJCXJwY19yZG1hX3N0YXRlLmNxX3RocmVhZF9pZHNbcnBj X3JkbWFfc3RhdGUuY3FfdGhyZWFkX2NvdW50XSA9IHRocmlkOworIAorLQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1B LAorIAkJCSIlcygpIHRocmVhZCAlbHggc3Bhd25lZCBmb3IgZXBvbGwgJWQiLAorIAkJCV9fZnVu Y19fLAorIAkJCSh1bnNpZ25lZCBsb25nKXRocmlkLAorQEAgLTY2MSw3ICs2NjIsNyBAQAorIAkJ cmV0dXJuIHJjOworIAl9CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJIiVwOnJwY19yZG1hX2ZkX2Fk ZCBmZDolZCBlcG9sbGZkOiVkIiwKKyAJCXB0aHJlYWRfc2VsZigpLCBmZCwgZXBvbGxmZCk7Cisg CitAQCAtNjcxLDcgKzY3Miw3IEBACisgaW50CisgcnBjX3JkbWFfZmRfZGVsKGludCBmZCwgaW50 IGVwb2xsZmQpCisgeworLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCSIlcDpycGNfcmRtYV9mZF9kZWwgZmQ6 JWQgZXBvbGxmZDolZCIsCisgCQlwdGhyZWFkX3NlbGYoKSwgZmQsIGVwb2xsZmQpOworIAorQEAg LTg0NCw4ICs4NDUsOCBAQAorICAqCisgICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsIHdvcmsgY29t cGxldGlvbiBzdGF0dXMgaWYgbm90IDAKKyAgKi8KKy1zdGF0aWMgaW50CistcnBjX3JkbWFfY3Ff ZXZlbnRfaGFuZGxlcihSRE1BWFBSVCAqcmRtYV94cHJ0KQorK2ludAorK3JwY19yZG1hX2NxX2V2 ZW50X2hhbmRsZXIoUkRNQVhQUlQgKnJkbWFfeHBydCwgaW50IGV4cGVjdGVkX3BvbGxfY291bnQp CisgeworIAlzdHJ1Y3QgaWJ2X3djIHdjW0lCVl9QT0xMX0VWRU5UU107CisgCXN0cnVjdCBpYnZf Y3EgKmV2X2NxOworQEAgLTg1OCw2ICs4NTksOSBAQAorIAl1aW50MzJfdCBsZW47CisgCWludCBw b2xsX2NvdW50ID0gSUJWX1BPTExfQ09VTlQ7CisgCisrCWlmIChleHBlY3RlZF9wb2xsX2NvdW50 KQorKwkJcG9sbF9jb3VudCA9IGV4cGVjdGVkX3BvbGxfY291bnQ7CisrCisgCXJjID0gaWJ2X2dl dF9jcV9ldmVudChyZG1hX3hwcnQtPmNvbXBfY2hhbm5lbCwgJmV2X2NxLCAmZXZfY3R4KTsKKyAJ aWYgKHJjKSB7CisgCQlyYyA9IGVycm5vOworQEAgLTEwNDcsNiArMTA1MSw1NiBAQAorIH0KKyAK KyAvKioKKysgKiBycGNfcmRtYV9wcm9jZXNzX3RyYW5zcG9ydF9leHBpcmVzOiBwcm9jZXNzIGV4 cGlyZWQgY2xpZW50IHJlcXVlc3RzIGZvciBhIHNwZWNpZmljIFJETUEgdHJhbnNwb3J0CisrICog U2ltaWxhciB0byB0aGUgY2FsbF9leHBpcmVzIHByb2Nlc3NpbmcgaW4gc3ZjX3Jxc3RfZXBvbGxf bG9vcAorKyAqCisrICogQHBhcmFtW0lOXSByZG1hX3hwcnQgUkRNQSB0cmFuc3BvcnQgdG8gcHJv Y2VzcworKyAqIEBwYXJhbVtJTl0gZXhwaXJlX21zIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29u ZHMKKysgKiBAcGFyYW1bSU5PVVRdIHRpbWVvdXRfbXMgcG9pbnRlciB0byB0aW1lb3V0IHZhbHVl IHRvIGJlIHVwZGF0ZWQKKysgKi8KKytzdGF0aWMgdm9pZAorK3JwY19yZG1hX3Byb2Nlc3NfdHJh bnNwb3J0X2V4cGlyZXMoUkRNQVhQUlQgKnJkbWFfeHBydCwgaW50IGV4cGlyZV9tcywgaW50ICp0 aW1lb3V0X21zKQorK3sKKysJc3RydWN0IGNsbnRfcmVxICpjYzsKKysJc3RydWN0IG9wcl9yYnRy ZWVfbm9kZSAqbl9ub2RlOworKwlzdHJ1Y3QgcnBjX2RwbHhfcmVjICpyZWM7CisrCWludCBtaW5f dGltZW91dCA9ICp0aW1lb3V0X21zOworKworKwlpZiAoIXJkbWFfeHBydCkKKysJCXJldHVybjsK KysKKysJcmVjID0gJnJkbWFfeHBydC0+c21fZHI7CisrCisrCS8qIFByb2Nlc3MgcmRtYV9jYWxs X2V4cGlyZXMgZm9yIHRoaXMgdHJhbnNwb3J0IC0gc2ltaWxhciB0byBzdmNfcnFzdF9lcG9sbF9s b29wICovCisrCXJwY19kcGx4X3JsaShyZWMpOworKwl3aGlsZSAoKG5fbm9kZSA9IG9wcl9yYnRy ZWVfZmlyc3QoJnJlYy0+cmRtYV9jYWxsX2V4cGlyZXMpKSkgeworKwkJY2MgPSBvcHJfY29udGFp bmVyb2Yobl9ub2RlLCBzdHJ1Y3QgY2xudF9yZXEsIGNjX3Jxc3QpOworKworKwkJaWYgKGNjLT5j Y19leHBpcmVfbXMgPiBleHBpcmVfbXMpIHsKKysJCQlpbnQgdHJhbnNwb3J0X3RpbWVvdXQgPSBj Yy0+Y2NfZXhwaXJlX21zIC0gZXhwaXJlX21zOworKwkJCWlmICh0cmFuc3BvcnRfdGltZW91dCA8 IG1pbl90aW1lb3V0KSB7CisrCQkJCW1pbl90aW1lb3V0ID0gdHJhbnNwb3J0X3RpbWVvdXQ7Cisr CQkJfQorKwkJCWJyZWFrOworKwkJfQorKworKwkJLyogb3JkZXIgZGVwZW5kZW50ICovCisrCQlh dG9taWNfY2xlYXJfdWludDE2X3RfYml0cygmY2MtPmNjX2ZsYWdzLAorKwkJCQkJICAgQ0xOVF9S RVFfRkxBR19FWFBJUklORyk7CisrCQlvcHJfcmJ0cmVlX3JlbW92ZSgmcmVjLT5yZG1hX2NhbGxf ZXhwaXJlcywgJmNjLT5jY19ycXN0KTsKKysJCWNjLT5jY19leHBpcmVfbXMgPSAwOwkvKiBhdG9t aWMgYmFycmllcihzKSAqLworKworKwkJYXRvbWljX2luY191aW50MzJfdCgmY2MtPmNjX3JlZmNu dCk7CisrCQljYy0+Y2Nfd3BlLmZ1biA9IHN2Y19ycXN0X2V4cGlyZV90YXNrOworKwkJY2MtPmNj X3dwZS5hcmcgPSBOVUxMOworKwkJd29ya19wb29sX3N1Ym1pdCgmc3ZjX3dvcmtfcG9vbCwgJmNj LT5jY193cGUpOworKwl9CisrCXJwY19kcGx4X3J1aShyZWMpOworKworKwkqdGltZW91dF9tcyA9 IG1pbl90aW1lb3V0OworK30KKysKKysvKioKKyAgKiBycGNfcmRtYV9jcV90aHJlYWQ6IHRocmVh ZCBmdW5jdGlvbiB3aGljaCB3YWl0cyBmb3IgbmV3IGNvbXBsZXRpb24gZXZlbnRzCisgICogYW5k IGdpdmVzIHRoZW0gdG8gaGFuZGxlciAodGhlbiBhY2sgdGhlIGV2ZW50KQorICAqCitAQCAtMTA1 NiwyNCArMTExMCwzMCBAQAorIHsKKyAJUkRNQVhQUlQgKnJkbWFfeHBydDsKKyAJc3RydWN0IGVw b2xsX2V2ZW50IGVwb2xsX2V2ZW50c1tFUE9MTF9FVkVOVFNdOworKwlzdHJ1Y3QgdGltZXNwZWMg dHM7CisrCWludCB0aW1lb3V0X21zOworKwlpbnQgZXhwaXJlX21zOworIAlpbnQgaTsKKyAJaW50 IG47CisgCWludCByYzsKKyAJaW50IGVwb2xsZmQgPSAqKChpbnQgKikgYXJnKTsKKyAKKy0JX193 YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorLQkJIiVwLCBTdGFydGluZyBycGNfcmRtYV9j cV90aHJlYWQgZXBvbGxmZDolZCIsCistCQlwdGhyZWFkX3NlbGYoKSwgZXBvbGxmZCk7CistCist CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19G TEFHX1JQQ19SRE1BLAorIAkJIiVwLCBTdGFydGluZyBycGNfcmRtYV9jcV90aHJlYWQgZXBvbGxm ZDolZCIsCisgCQlwdGhyZWFkX3NlbGYoKSwgZXBvbGxmZCk7CisgCisgCXJjdV9yZWdpc3Rlcl90 aHJlYWQoKTsKKyAKKyAJd2hpbGUgKHJwY19yZG1hX3N0YXRlLnJ1bl9jb3VudCA+IDApIHsKKysJ CXRpbWVvdXRfbXMgPSBFUE9MTF9XQUlUX01TOworKworKwkJLyogUHJvY2VzcyBjYWxsX2V4cGly ZXMgZm9yIFJETUEgdHJhbnNwb3J0cyAqLworKwkJLyogY29hcnNlIG5zZWMsIG5vdCBzeXN0ZW0g dGltZSAqLworKwkJKHZvaWQpY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUNfRkFTVCwgJnRz KTsKKysJCWV4cGlyZV9tcyA9IHRpbWVzcGVjX21zKCZ0cyk7CisrCisgCQluID0gZXBvbGxfd2Fp dChlcG9sbGZkLAorLQkJCQllcG9sbF9ldmVudHMsIEVQT0xMX0VWRU5UUywgRVBPTExfV0FJVF9N Uyk7CisrCQkJCWVwb2xsX2V2ZW50cywgRVBPTExfRVZFTlRTLCB0aW1lb3V0X21zKTsKKyAJCWlm IChuID09IDApCisgCQkJY29udGludWU7CisgCitAQCAtMTA5OCw2ICsxMTU4LDkgQEAKKyAJCQkJ Y29udGludWU7CisgCQkJfQorIAorKwkJCS8qIFByb2Nlc3MgY2FsbF9leHBpcmVzIGZvciB0aGlz IFJETUEgdHJhbnNwb3J0ICovCisrCQkJcnBjX3JkbWFfcHJvY2Vzc190cmFuc3BvcnRfZXhwaXJl cyhyZG1hX3hwcnQsIGV4cGlyZV9tcywgJnRpbWVvdXRfbXMpOworKworIAkJCWlmIChlcG9sbF9l dmVudHNbaV0uZXZlbnRzID09IEVQT0xMRVJSCisgCQkJIHx8IGVwb2xsX2V2ZW50c1tpXS5ldmVu dHMgPT0gRVBPTExIVVApIHsKKyAJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAor QEAgLTExMTYsNyArMTE3OSw3IEBACisgCisgCQkJbXV0ZXhfbG9jaygmcmRtYV94cHJ0LT5jbV9s b2NrKTsKKyAKKy0JCQlyYyA9IHJwY19yZG1hX2NxX2V2ZW50X2hhbmRsZXIocmRtYV94cHJ0KTsK KysJCQlyYyA9IHJwY19yZG1hX2NxX2V2ZW50X2hhbmRsZXIocmRtYV94cHJ0LCAwKTsKKyAJCQlp ZiAocmMpIHsKKyAJCQkJU1ZDX0RFU1RST1koJnJkbWFfeHBydC0+c21fZHIueHBydCk7CisgCQkJ fQorQEAgLTExNjEsNyArMTIyNCw3IEBACisgCisgCXN3aXRjaCAoZXZlbnQtPmV2ZW50KSB7Cisg CWNhc2UgUkRNQV9DTV9FVkVOVF9BRERSX1JFU09MVkVEOgorLQkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VWRU5ULAorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJ CSIlcygpICVwIEFERFJfUkVTT0xWRUQiLAorIAkJCV9fZnVuY19fLCByZG1hX3hwcnQpOworIAkJ bXV0ZXhfbG9jaygmcmRtYV94cHJ0LT5jbV9sb2NrKTsKK0BAIC0xMTcxLDcgKzEyMzQsNyBAQAor IAkJYnJlYWs7CisgCisgCWNhc2UgUkRNQV9DTV9FVkVOVF9ST1VURV9SRVNPTFZFRDoKKy0JCV9f d2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxB R19SUENfUkRNQSwKKyAJCQkiJXMoKSAlcCBST1VURV9SRVNPTFZFRCIsCisgCQkJX19mdW5jX18s IHJkbWFfeHBydCk7CisgCQltdXRleF9sb2NrKCZyZG1hX3hwcnQtPmNtX2xvY2spOworQEAgLTEx ODEsMjYgKzEyNDQsMjggQEAKKyAJCWJyZWFrOworIAorIAljYXNlIFJETUFfQ01fRVZFTlRfRVNU QUJMSVNIRUQ6CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkJIiVzKCkgJXAgRVNUQUJMSVNIRUQiLAor IAkJCV9fZnVuY19fLCByZG1hX3hwcnQpOworIAorIAkJcmRtYV94cHJ0LT5zdGF0ZSA9IFJETUFY U19DT05ORUNURUQ7CisgCistCQlpbnQgY3FfZmQgPSByZG1hX3hwcnQtPmNvbXBfY2hhbm5lbC0+ ZmQ7CistCQlpbnQgY3FfdGhyZWFkX2luZGV4ID0gY3FfZmQgJSBOVU1fQ1FfRVBPTExfVEhSRUFE UzsKKy0JCXJjID0gcnBjX3JkbWFfZmRfYWRkKHJkbWFfeHBydCwgY3FfZmQsCisrCQlpZiAocmRt YV94cHJ0LT5zZXJ2ZXIpIHsKKysJCQlpbnQgY3FfZmQgPSByZG1hX3hwcnQtPmNvbXBfY2hhbm5l bC0+ZmQ7CisrCQkJaW50IGNxX3RocmVhZF9pbmRleCA9IGNxX2ZkICUgTlVNX0NRX0VQT0xMX1RI UkVBRFM7CisrCQkJcmMgPSBycGNfcmRtYV9mZF9hZGQocmRtYV94cHJ0LCBjcV9mZCwKKyAJCQkJ ICAgICBycGNfcmRtYV9zdGF0ZS5jcV9lcG9sbGZkW2NxX3RocmVhZF9pbmRleF0pOworLQkJaWYg KHJjKSB7CistCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJCQkiJXM6JXUg RVJST1IgKHJldHVybikiLAorLQkJCQlfX2Z1bmNfXywgX19MSU5FX18pOworKwkJCWlmIChyYykg eworKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJCQkiJXM6JXUgRVJS T1IgKHJldHVybikiLAorKwkJCQkJX19mdW5jX18sIF9fTElORV9fKTsKKysJCQl9CisrCQkJcnBj X3JkbWFfc3RhdHNfYWRkKHJkbWFfeHBydCk7CisgCQl9CistCQlycGNfcmRtYV9zdGF0c19hZGQo cmRtYV94cHJ0KTsKKyAJCWJyZWFrOworIAorIAljYXNlIFJETUFfQ01fRVZFTlRfQ09OTkVDVF9S RVFVRVNUOgorLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJCSIlcygpICVwIENPTk5FQ1RfUkVRVUVTVCIs CisgCQkJX19mdW5jX18sIHJkbWFfeHBydCk7CisgCQlycGNfcmRtYV9zdGF0ZS5jX3IuaWRfcXVl dWVbMF0gPSBjbV9pZDsKK0BAIC0xMjIzLDcgKzEyODgsNyBAQAorIAkJYnJlYWs7CisgCisgCWNh c2UgUkRNQV9DTV9FVkVOVF9ESVNDT05ORUNURUQ6CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVZFTlQsCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkJIiVz KCkgJXBbJXVdIERJU0NPTk5FQ1QgRVZFTlQuLi4iLAorIAkJCV9fZnVuY19fLCByZG1hX3hwcnQs IHJkbWFfeHBydC0+c3RhdGUpOworIAorQEAgLTEyMzIsMTQgKzEyOTcsMTQgQEAKKyAJCWJyZWFr OworIAorIAljYXNlIFJETUFfQ01fRVZFTlRfREVWSUNFX1JFTU9WQUw6CistCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JE TUEsCisgCQkJIiVzKCkgJXBbJXVdIGNtYSBkZXRlY3RlZCBkZXZpY2UgcmVtb3ZhbCEhISEiLAor IAkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUpOworIAkJcmMgPSBFTk9E RVY7CisgCQlicmVhazsKKyAKKyAJY2FzZSBSRE1BX0NNX0VWRU5UX1RJTUVXQUlUX0VYSVQ6Cist CQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfUlBDX1JETUEsCisgCQkgICAgIiVzKCkgJXBbJXVdIFJETUFfQ01fRVZFTlRfVElNRVdB SVRfRVhJVCIsCisgCQkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSk7 CisgCitAQCAtMTM1Miw2ICsxNDE3LDQxIEBACisgCXB0aHJlYWRfZXhpdChOVUxMKTsKKyB9Cisg CisrLyogSGFuZGxlIFJETUEgY29ubmVjdGlvbiBtYW5hZ2VyIGV2ZW50cyBzeW5jaHJvbm91c2x5 ICovCisraW50CisrcnBjX3JkbWFfY21fZXZlbnRfaGFuZGxlcl9pbmxpbmUoUkRNQVhQUlQgKnJk bWFfeHBydCwgaW50IGV4cGVjdGVkX2V2ZW50KQorK3sKKysJaW50IHJjID0gMDsKKysJc3RydWN0 IHJkbWFfY21fZXZlbnQgKmV2ZW50ID0gTlVMTDsKKysKKysJcmMgPSByZG1hX2dldF9jbV9ldmVu dChyZG1hX3hwcnQtPmV2ZW50X2NoYW5uZWwsICZldmVudCk7CisrCWlmIChyYykgeworKwkJcmMg PSBlcnJubzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiByZG1hIGdl dCBldmVudCBmYWlsZWQgeHBydCAlcCAiCisrCQkJImVyciAlZCIsIF9fZnVuY19fLCByZG1hX3hw cnQsIHJjKTsKKysJCWdvdG8gb3V0OworKwl9CisrCisrCWlmIChldmVudC0+ZXZlbnQgIT0gZXhw ZWN0ZWRfZXZlbnQpIHsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiB1 bmV4cGVjdGVkIGV2ZW50ICVkLCBleHBlY3RlZCAlZCAiCisrCQkJInhwcnQgJXMiLCBfX2Z1bmNf XywgZXZlbnQtPmV2ZW50LCBleHBlY3RlZF9ldmVudCk7CisrCX0KKysKKysJU1ZDX1JFRigmcmRt YV94cHJ0LT5zbV9kci54cHJ0LCBTVkNfUkVGX0ZMQUdfTk9ORSk7CisrCisrCXJjID0gcnBjX3Jk bWFfY21fZXZlbnRfaGFuZGxlcihyZG1hX3hwcnQsIGV2ZW50KTsKKysKKysJcmRtYV9hY2tfY21f ZXZlbnQoZXZlbnQpOworKworKwlTVkNfUkVMRUFTRSgmcmRtYV94cHJ0LT5zbV9kci54cHJ0LCBT VkNfUkVGX0ZMQUdfTk9ORSk7CisrCisrb3V0OgorKwlpZiAocmMpCisrCQlTVkNfREVTVFJPWSgm cmRtYV94cHJ0LT5zbV9kci54cHJ0KTsKKysKKysJcmV0dXJuIHJjOworK30KKysKKyAvKioKKyAg KiBycGNfcmRtYV9kZXN0cm95X3N0dWZmOiBkZXN0cm95cyBhbGwgcXAtcmVsYXRlZCBzdHVmZiBm b3IgdXMKKyAgKgorQEAgLTEzNzMsNyArMTQ3Myw4IEBACisgCX0KKyAKKyAJaWYgKHJkbWFfeHBy dC0+Y29tcF9jaGFubmVsKSB7CistCQlpZiAocmRtYV94cHJ0LT5zdGF0ZSA9PSBSRE1BWFNfQ09O TkVDVEVEKSB7CisrCQlpZiAocmRtYV94cHJ0LT5zZXJ2ZXIgJiYKKysJCSAgICAocmRtYV94cHJ0 LT5zdGF0ZSA9PSBSRE1BWFNfQ09OTkVDVEVEKSkgeworIAkJCWludCBjcV9mZCA9ICgoUkRNQVhQ UlQgKilyZG1hX3hwcnQpLT5jb21wX2NoYW5uZWwtPmZkOworIAkJCWludCBjcV90aHJlYWRfaW5k ZXggPSBjcV9mZCAlIE5VTV9DUV9FUE9MTF9USFJFQURTOworIAkJCXJwY19yZG1hX2ZkX2RlbChj cV9mZCwKK0BAIC0xMzk2LDcgKzE0OTcsNyBAQAorIHN0YXRpYyB2b2lkCisgcmRtYV9kZXN0cm95 X2NiY3MoUkRNQVhQUlQgKnJkbWFfeHBydCkgeworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZM QUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJICAgICIl cygpIERlc3Ryb3lpbmcgeHBydCAlcCBjYmNzIHFjb3VudCAldSBxc2l6ZSAldSB0b3RhbCBjYmNz X21lbW9yeSAldSIsCisgCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPmNicWgu cWNvdW50LCByZG1hX3hwcnQtPmNicWgucXNpemUsCisgCSAgICByZG1hX3hwcnQtPmNicWgucWNv dW50ICogcmRtYV94cHJ0LT5jYnFoLnFzaXplKTsKK0BAIC0xNDM2LDcgKzE1MzcsNyBAQAorIAor IHN0YXRpYyB2b2lkCisgcmRtYV9kZXN0cm95X2lvX2J1ZnMoUkRNQVhQUlQgKnJkbWFfeHBydCkg eworLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVC VUdfRkxBR19SUENfUkRNQSwKKyAJICAgICIlcygpIERlc3Ryb3lpbmcgeHBydCAlcCBpb19idWZz IiwKKyAJICAgIF9fZnVuY19fLCByZG1hX3hwcnQpOworIAorQEAgLTE0NTYsMTMgKzE1NTcsMTMg QEAKKyAJCQlzdHJ1Y3QgcnBjX2lvX2J1ZnMgKmlvX2J1ZiA9CisgCQkJCW9wcl9jb250YWluZXJv ZihoYXZlLCBzdHJ1Y3QgcnBjX2lvX2J1ZnMsIHEpOworIAorLQkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FVkVOVCwgIiVzIERlc3Ryb3kgaW9fYnVmICVwIGlvcWggJXAgY291bnQgJWQiLAor KwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwgIiVzIERlc3Ryb3kgaW9fYnVm ICVwIGlvcWggJXAgY291bnQgJWQiLAorIAkJCSAgICBfX2Z1bmNfXywgaW9fYnVmLCBpb3FoLCBp b3FoLT5xY291bnQpOworIAorIAkJCWlmICgoaW9fYnVmLT50eXBlID09IElPX0JVRl9BTEwpIHx8 CisgCQkJICAgIChpb19idWYtPnR5cGUgPT0gSU9fSU5CVUZfSERSKSkgeworIAkJCQlzdHJ1Y3Qg cG9vbHFfaGVhZCAqaW9xaF9idWZzID0gJnJkbWFfeHBydC0+aW5idWZzX2hkci51dnFoOworLQkJ CQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCQkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19SUENfUkRNQSwKKyAJCQkJICAgICIlcygpIERlc3Ryb3lpbmcgJXAgaW5idWZzX2hk ciBoZWFkICVwIGNvdW50ICVkIGlvX2J1ZiAlcCIsCisgCQkJCSAgICBfX2Z1bmNfXywgcmRtYV94 cHJ0LCBpb3FoX2J1ZnMsIGlvcWhfYnVmcy0+cWNvdW50LCBpb19idWYpOworIAkJCQl4ZHJfcmRt YV9idWZfcG9vbF9kZXN0cm95KGlvcWhfYnVmcywgaW9fYnVmKTsKK0BAIC0xNDcxLDcgKzE1NzIs NyBAQAorIAkJCWlmICgoaW9fYnVmLT50eXBlID09IElPX0JVRl9BTEwpIHx8CisgCQkJICAgIChp b19idWYtPnR5cGUgPT0gSU9fT1VUQlVGX0hEUikpIHsKKyAJCQkJc3RydWN0IHBvb2xxX2hlYWQg KmlvcWhfYnVmcyA9ICZyZG1hX3hwcnQtPm91dGJ1ZnNfaGRyLnV2cWg7CistCQkJCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQ Q19SRE1BLAorIAkJCQkgICAgIiVzKCkgRGVzdHJveWluZyAlcCBvdXRidWZzX2hkciBoZWFkICVw IGNvdW50ICVkIGlvX2J1ZiAlcCIsCisgCQkJCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCBpb3Fo X2J1ZnMsIGlvcWhfYnVmcy0+cWNvdW50LCBpb19idWYpOworIAkJCQl4ZHJfcmRtYV9idWZfcG9v bF9kZXN0cm95KGlvcWhfYnVmcywgaW9fYnVmKTsKK0BAIC0xNDgwLDcgKzE1ODEsNyBAQAorIAkJ CWlmICgoaW9fYnVmLT50eXBlID09IElPX0JVRl9BTEwpIHx8CisgCQkJICAgIChpb19idWYtPnR5 cGUgPT0gSU9fSU5CVUZfREFUQSkpIHsKKyAJCQkJc3RydWN0IHBvb2xxX2hlYWQgKmlvcWhfYnVm cyA9ICZyZG1hX3hwcnQtPmluYnVmc19kYXRhLnV2cWg7CistCQkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FVkVOVCwKKysJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAor IAkJCQkgICAgIiVzKCkgRGVzdHJveWluZyAlcCBpbmJ1ZnNfZGF0YSBoZWFkICVwIGNvdW50ICVk IGlvX2J1ZiAlcCIsCisgCQkJCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCBpb3FoX2J1ZnMsIGlv cWhfYnVmcy0+cWNvdW50LCBpb19idWYpOworIAkJCQl4ZHJfcmRtYV9idWZfcG9vbF9kZXN0cm95 KGlvcWhfYnVmcywgaW9fYnVmKTsKK0BAIC0xNDg5LDcgKzE1OTAsNyBAQAorIAkJCWlmICgoaW9f YnVmLT50eXBlID09IElPX0JVRl9BTEwpIHx8CisgCQkJICAgIChpb19idWYtPnR5cGUgPT0gSU9f T1VUQlVGX0RBVEEpKSB7CisgCQkJCXN0cnVjdCBwb29scV9oZWFkICppb3FoX2J1ZnMgPSAmcmRt YV94cHJ0LT5vdXRidWZzX2RhdGEudXZxaDsKKy0JCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFH X0VWRU5ULAorKwkJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkJCSAg ICAiJXMoKSBEZXN0cm95aW5nICVwIG91dGJ1ZnNfZGF0YSBoZWFkICVwIGNvdW50ICVkIGlvX2J1 ZiAlcCIsCisgCQkJCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCBpb3FoX2J1ZnMsIGlvcWhfYnVm cy0+cWNvdW50LCBpb19idWYpOworIAkJCQl4ZHJfcmRtYV9idWZfcG9vbF9kZXN0cm95KGlvcWhf YnVmcywgaW9fYnVmKTsKK0BAIC0xNTkwLDcgKzE2OTEsNyBAQAorICAqCisgICogQHJldHVybiBy ZG1hX3hwcnQgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlCisgICovCistc3RhdGljIFJETUFY UFJUICoKKytSRE1BWFBSVCAqCisgcnBjX3JkbWFfYWxsb2NhdGUoY29uc3Qgc3RydWN0IHJwY19y ZG1hX2F0dHIgKnhhKQorIHsKKyAJUkRNQVhQUlQgKnJkbWFfeHBydDsKK0BAIC0xNzM5LDkgKzE4 NDAsMTMgQEAKKyAJCQlfX2Z1bmNfXyk7CisgCQlnb3RvIGZhaWx1cmU7CisgCX0KKy0JX193YXJu eChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorLQkJIiVzKCkgTkZTL1JETUEgZW5naW5lIGJv dW5kIHJlY3ZzeiAlbGx1IHNlbmRzeiAlbGx1IHJkbWFfeHBydCAlcCIsCistCQlfX2Z1bmNfXywg cmRtYV94cHJ0LT5zbV9kci5yZWN2c3osIHJkbWFfeHBydC0+c21fZHIuc2VuZHN6LCByZG1hX3hw cnQpOworKworKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQgfCBUSVJQQ19ERUJVR19G TEFHX1JQQ19SRE1BLAorKwkJIiVzKCkgUkRNQTogTkZTL1JETUEgdHJhbnNwb3J0IHJlYWR5IG9u IHBvcnQgJXMgcmVjdnN6PSVsbHUgc2VuZHN6PSVsbHUgeHBydD0lcCIsCisrCQlfX2Z1bmNfXywg eGEtPnBvcnQsCisrCQkodW5zaWduZWQgbG9uZyBsb25nKXJkbWFfeHBydC0+c21fZHIucmVjdnN6 LAorKwkJKHVuc2lnbmVkIGxvbmcgbG9uZylyZG1hX3hwcnQtPnNtX2RyLnNlbmRzeiwKKysJCXJk bWFfeHBydCk7CisgCisgCXJldHVybiAoJnJkbWFfeHBydC0+c21fZHIueHBydCk7CisgCitAQCAt MTc5MCw3ICsxODk1LDcgQEAKKyAJICAgIElCVl9RUF9QQVRIX01UVSB8IElCVl9RUF9ERVNUX1FQ TiB8IElCVl9RUF9SUV9QU04gfAorIAkgICAgSUJWX1FQX01BWF9ERVNUX1JEX0FUT01JQyB8IElC Vl9RUF9NSU5fUk5SX1RJTUVSLCAmcXBfYXR0cik7CisgCistCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJIiVz KCkgJXBbJXVdIGlidl9xdWVyeV9xcCBwYXRoIG10dSAlZCBzdGF0ZSAlZCBxcCB0eXBlICVkIiwK KyAJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGF0dHIucXBfc3RhdGUs CisgCQlhdHRyLnBhdGhfbXR1LCBxcF9hdHRyLnFwX3R5cGUpOworQEAgLTE3OTksNiArMTkwNCw0 OCBAQAorIAlyZXR1cm4gMDsKKyB9CisgCisrLyogSW5pdGlhbGl6ZSBSRE1BIGNsaWVudCBjb21w bGV0aW9uIGNoYW5uZWwgYW5kIHF1ZXVlICovCisraW50CisrcnBjX3JkbWFfc2V0dXBfc3R1ZmZf Y2xpZW50KFJETUFYUFJUICpyZG1hX3hwcnQpCisreworKwlpbnQgcmMgPSAwOworKworKwlyZG1h X3hwcnQtPmNvbXBfY2hhbm5lbCA9IGlidl9jcmVhdGVfY29tcF9jaGFubmVsKHJkbWFfeHBydC0+ Y21faWQtPnZlcmJzKTsKKysJaWYgKCFyZG1hX3hwcnQtPmNvbXBfY2hhbm5lbCkgeworKwkJcmMg PSBlcnJubzsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzOiBjcmVhdGUg Y29tcCBjaGFubmVsIGZhaWxlZCB4cHJ0ICVwICIKKysJCQkiZXJyICVkIiwgX19mdW5jX18sIHJk bWFfeHBydCwgcmMpOworKwkJZ290byBvdXQ7CisrCX0KKysKKysJcmRtYV94cHJ0LT5jcSA9IGli dl9jcmVhdGVfY3EocmRtYV94cHJ0LT5jbV9pZC0+dmVyYnMsIE1BWF9DUV9TSVpFKHJkbWFfeHBy dC0+eGEpLAorKwkgICAgcmRtYV94cHJ0LCByZG1hX3hwcnQtPmNvbXBfY2hhbm5lbCwgMCk7Cisr CWlmICghcmRtYV94cHJ0LT5jcSkgeworKwkJcmMgPSBlcnJubzsKKysJCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FUlJPUiwgIiVzOiBjcmVhdGUgY3EgZmFpbGVkIHhwcnQgJXAgZXJyICVkIiwK KysJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByYyk7CisrCQlnb3RvIG91dDsKKysJfQorKworKwly YyA9IGlidl9yZXFfbm90aWZ5X2NxKHJkbWFfeHBydC0+Y3EsIDApOworKwlpZiAocmMpIHsKKysJ CXJjID0gZXJybm87CisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogbm90 aWZ5IGNxIGZhaWxlZCB4cHJ0ICVwIGVyciAlZCIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydCwg cmMpOworKwkJZ290byBvdXQ7CisrCX0KKysKKysJcmMgPSBycGNfcmRtYV9jcmVhdGVfcXAocmRt YV94cHJ0LCByZG1hX3hwcnQtPmNtX2lkKTsKKysJaWYgKHJjKSB7CisrCQlyYyA9IGVycm5vOwor KwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IGNyZWF0ZSBxcCBmYWlsZWQg eHBydCAlcCBlcnIgJWQiLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJjKTsKKysJfQorKwor K291dDoKKysJcmV0dXJuIHJjOworK30KKysKKyAvKioKKyAgKiBycGNfcmRtYV9zZXR1cF9zdHVm Zjogc2V0dXAgcGQsIHFwIGFuJyBzdHVmZgorICAqCitAQCAtMTkyMSwxMCArMjA2OCwxNCBAQAor IC8qKgorICAqIHJwY19yZG1hX3NldHVwX2NicQorICAqLworLXN0YXRpYyBpbnQKKytpbnQKKyBy cGNfcmRtYV9zZXR1cF9jYnEoUkRNQVhQUlQgKnJkbWFfeHBydCwKKyAgICAgc3RydWN0IHBvb2xx X2hlYWQgKmlvcWgsIHVfaW50IGRlcHRoLCB1X2ludCBzZ2UpCisgeworKwlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfUlBDX1JETUEsCisrCQkiJXM6IHNldHVwIGNicSB4cHJ0ICVwIGRlcHRoICVk IHNnZSAlZCIsCisrCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCBkZXB0aCwgc2dlKTsKKysKKyAJaWYg KGlvcWgtPnFzaXplKSB7CisgCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisgCQkJ IiVzKCkgY29udGV4dHMgYWxyZWFkeSBhbGxvY2F0ZWQiLAorQEAgLTE5NDgsNyArMjA5OSw3IEBA CisgCQlycGNfcmRtYV9hbGxvY2F0ZV9jYmNfbG9ja2VkKGlvcWgpOworIAl9CisgCistCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FVkVOVCwgIiVzIFRvdGFsIGNiY3NfbWVtb3J5ICV1ICIKKysJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLCAiJXMgVG90YWwgY2Jjc19tZW1vcnkg JXUgIgorIAkgICAgInFjb3VudCAldSBxc2l6ZSAldSB4cHJ0ICVwIiwKKyAJICAgIF9fZnVuY19f LCBpb3FoLT5xY291bnQgKiBpb3FoLT5xc2l6ZSwKKyAJICAgIGlvcWgtPnFjb3VudCwgaW9xaC0+ cXNpemUsIHJkbWFfeHBydCk7CitAQCAtMjAzNSw2ICsyMTg2LDE3IEBACisgCX0KKyAKKyAJcmRt YV94cHJ0LT5zdGF0ZSA9IFJETUFYU19MSVNURU5JTkc7CisrCisrCS8qIExvZyBhdCBFVkVOVCBs ZXZlbCB0aGF0IFJETUEgbGlzdGVuZXIgaXMgdXAgKi8KKysJX193YXJueChUSVJQQ19ERUJVR19G TEFHX0VWRU5ULAorKwkJIiVzKCkgUkRNQTogTkZTL1JETUEgc2VydmVyIGlzIG5vdyBsaXN0ZW5p bmcgb24gbm9kZSAlcyBwb3J0ICVzIChiYWNrbG9nPSVkIHNxX2RlcHRoPSVkIHJxX2RlcHRoPSVk KSIsCisrCQlfX2Z1bmNfXywKKysJCXJkbWFfeHBydC0+eGEtPm5vZGUgPyByZG1hX3hwcnQtPnhh LT5ub2RlIDogIioiLAorKwkJcmRtYV94cHJ0LT54YS0+cG9ydCwKKysJCXJkbWFfeHBydC0+eGEt PmJhY2tsb2csCisrCQlyZG1hX3hwcnQtPnhhLT5zcV9kZXB0aCwKKysJCXJkbWFfeHBydC0+eGEt PnJxX2RlcHRoKTsKKysKKyAJYXRvbWljX2luY19pbnQzMl90KCZycGNfcmRtYV9zdGF0ZS5ydW5f Y291bnQpOworIAorIAlyYyA9IHJwY19yZG1hX3RocmVhZF9jcmVhdGVfZXBvbGwoJnJwY19yZG1h X3N0YXRlLmNtX3RocmVhZF9pZCwKK0BAIC0yMjE4LDcgKzIzODAsNyBAQAorIHsKKyAJc3RydWN0 IHJkbWFfY21faWQgKmNtX2lkOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQs CisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKyAJCSIlcygpICVwWyV1XSBs aXN0ZW5pbmcgKGFmdGVyIGJpbmRfc2VydmVyKSIsCisgCQlfX2Z1bmNfXywgbF9yZG1hX3hwcnQs IGxfcmRtYV94cHJ0LT5zdGF0ZSk7CisgCitAQCAtMjI4MSwyNSArMjQ0MywyOSBAQAorIAlzdHJ1 Y3QgcmRtYV9hZGRyaW5mbyAqcmVzOworIAlpbnQgcmM7CisgCistCW11dGV4X2xvY2soJnJkbWFf eHBydC0+Y21fbG9jayk7CistCisgCWRvIHsKKyAJCW1lbXNldCgmaGludHMsIDAsIHNpemVvZiho aW50cykpOworIAkJaGludHMuYWlfcG9ydF9zcGFjZSA9IHJkbWFfeHBydC0+Y29ubl90eXBlOwor IAorLQkJcmMgPSByZG1hX2dldGFkZHJpbmZvKHJkbWFfeHBydC0+eGEtPm5vZGUsIHJkbWFfeHBy dC0+eGEtPnBvcnQsCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsICIlczog cmVzb2x2ZSAlcyBwb3J0ICVkIiwgX19mdW5jX18sCisrCQkJcmRtYV94cHJ0LT5zbV9kci54cHJ0 LnhwX2lwLCByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcG9ydCk7CisrCQljaGFyIHBvcnRfc3Ry W1NPQ0tfTkFNRV9NQVhdOworKwkJc25wcmludGYocG9ydF9zdHIsIFNPQ0tfTkFNRV9NQVgsICIl ZCIsIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9wb3J0KTsKKysKKysJCXJjID0gcmRtYV9nZXRh ZGRyaW5mbyhyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHBvcnRfc3RyLAorIAkJCQkJJmhp bnRzLCAmcmVzKTsKKyAJCWlmIChyYykgeworIAkJCXJjID0gZXJybm87CisgCQkJX193YXJueChU SVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJCQkiJXMoKSAlcFsldV0gcmRtYV9nZXRhZGRyaW5m bzogJXMgKCVkKSIsCistCQkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUs IHN0cmVycm9yKHJjKSwgcmMpOworKwkJCQkiJXMoKSAlcFsldV0gcmRtYV9nZXRhZGRyaW5mbzog JXMgKCVkKSBpcCAlcyBwb3J0ICVkIiwKKysJCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94 cHJ0LT5zdGF0ZSwgc3RyZXJyb3IocmMpLCByYywKKysJCQkJcmRtYV94cHJ0LT5zbV9kci54cHJ0 LnhwX2lwLCByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcG9ydCk7CisgCQkJYnJlYWs7CisgCQl9 CisgCisgCQlyYyA9IHJkbWFfcmVzb2x2ZV9hZGRyKHJkbWFfeHBydC0+Y21faWQsIHJlcy0+YWlf c3JjX2FkZHIsCisgCQkJCQlyZXMtPmFpX2RzdF9hZGRyLAorLQkJCQkJX19zdmNfcGFyYW1zLT5p ZGxlX3RpbWVvdXQpOworKwkJCQkJNTAwMCk7CisgCQlpZiAocmMpIHsKKyAJCQlyYyA9IGVycm5v OworIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKK0BAIC0yMzA5LDE0ICsyNDc1 LDggQEAKKyAJCX0KKyAJCXJkbWFfZnJlZWFkZHJpbmZvKHJlcyk7CisgCistCQl3aGlsZSAocmRt YV94cHJ0LT5zdGF0ZSA9PSBSRE1BWFNfSU5JVElBTCkgeworLQkJCWNvbmRfd2FpdCgmcmRtYV94 cHJ0LT5jbV9jb25kLCAmcmRtYV94cHJ0LT5jbV9sb2NrKTsKKy0JCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfUlBDX1JETUEsCistCQkJCSIlcygpICVwWyV1XSBhZnRlciBjb25kX3dhaXQiLAor LQkJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlKTsKKy0JCX0KKy0KKy0J CWlmIChyZG1hX3hwcnQtPnN0YXRlICE9IFJETUFYU19BRERSX1JFU09MVkVEKSB7CisrCQlyYyA9 IHJwY19yZG1hX2NtX2V2ZW50X2hhbmRsZXJfaW5saW5lKHJkbWFfeHBydCwgUkRNQV9DTV9FVkVO VF9BRERSX1JFU09MVkVEKTsKKysJCWlmIChyYykgeworIAkJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19FUlJPUiwKKyAJCQkJIiVzKCkgQ291bGQgbm90IHJlc29sdmUgYWRkciIsCisgCQkJCV9f ZnVuY19fKTsKK0BAIC0yMzI1LDcgKzI0ODUsNyBAQAorIAkJfQorIAorIAkJcmMgPSByZG1hX3Jl c29sdmVfcm91dGUocmRtYV94cHJ0LT5jbV9pZCwKKy0JCQkJCV9fc3ZjX3BhcmFtcy0+aWRsZV90 aW1lb3V0KTsKKysJCQkJCTUwMDApOworIAkJaWYgKHJjKSB7CisgCQkJcmRtYV94cHJ0LT5zdGF0 ZSA9IFJETUFYU19FUlJPUjsKKyAJCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCitA QCAtMjMzNCwxNCArMjQ5NCw4IEBACisgCQkJYnJlYWs7CisgCQl9CisgCistCQl3aGlsZSAocmRt YV94cHJ0LT5zdGF0ZSA9PSBSRE1BWFNfQUREUl9SRVNPTFZFRCkgeworLQkJCWNvbmRfd2FpdCgm cmRtYV94cHJ0LT5jbV9jb25kLCAmcmRtYV94cHJ0LT5jbV9sb2NrKTsKKy0JCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCistCQkJCSIlcygpICVwWyV1XSBhZnRlciBjb25kX3dh aXQiLAorLQkJCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlKTsKKy0JCX0K Ky0KKy0JCWlmIChyZG1hX3hwcnQtPnN0YXRlICE9IFJETUFYU19ST1VURV9SRVNPTFZFRCkgewor KwkJcmMgPSBycGNfcmRtYV9jbV9ldmVudF9oYW5kbGVyX2lubGluZShyZG1hX3hwcnQsIFJETUFf Q01fRVZFTlRfUk9VVEVfUkVTT0xWRUQpOworKwkJaWYgKHJjKSB7CisgCQkJX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VSUk9SLAorIAkJCQkiJXMoKSBDb3VsZCBub3QgcmVzb2x2ZSByb3V0ZSIs CisgCQkJCV9fZnVuY19fKTsKK0BAIC0yMzUwLDggKzI1MDQsNiBAQAorIAkJfQorIAl9IHdoaWxl ICgwKTsKKyAKKy0JbXV0ZXhfdW5sb2NrKCZyZG1hX3hwcnQtPmNtX2xvY2spOworLQorIAlyZXR1 cm4gcmM7CisgfQorIAorQEAgLTIzOTgsNiArMjU1MCwzOSBAQAorIAkJCV9fZnVuY19fLCByZG1h X3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIHN0cmVycm9yKHJjKSwgcmMpOworIAl9CisgCisrCXJj ID0gcnBjX3JkbWFfY21fZXZlbnRfaGFuZGxlcl9pbmxpbmUocmRtYV94cHJ0LCBSRE1BX0NNX0VW RU5UX0VTVEFCTElTSEVEKTsKKysJaWYgKHJjKSB7CisrCQlyYyA9IGVycm5vOworKwkJX193YXJu eChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiJXM6IGNvbmVjdCBmYWlsZWQgeHBydCAlcCBlcnIg JWQiLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJjKTsKKysJfQorKworKwlyZXR1cm4gcmM7 CisrfQorKworKy8qIFByZXBhcmUgUkRNQSBjb25uZWN0aW9uIGJ5IGNyZWF0aW5nIGV2ZW50IGNo YW5uZWwgYW5kIENNIElEICovCisraW50CisrcnBjX3JkbWFfY29ubmVjdF9wcmVwYXJlKFJETUFY UFJUICpyZG1hX3hwcnQpCisreworKwlpbnQgcmMgPSAwOworKworKwlyZG1hX3hwcnQtPmV2ZW50 X2NoYW5uZWwgPSByZG1hX2NyZWF0ZV9ldmVudF9jaGFubmVsKCk7CisrCWlmICghcmRtYV94cHJ0 LT5ldmVudF9jaGFubmVsKSB7CisrCQlyYyA9IGVycm5vOworKwkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VSUk9SLCAiJXM6IGNyZWF0ZSBldmVudCBjaGFubmVsIGZhaWxlZCAiCisrCQkJImlw ICVzIGVyciAlZCIsIF9fZnVuY19fLCByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHJjKTsK KysJCWdvdG8gb3V0OworKwl9CisrCisrCXJjID0gcmRtYV9jcmVhdGVfaWQocmRtYV94cHJ0LT5l dmVudF9jaGFubmVsLCAmcmRtYV94cHJ0LT5jbV9pZCwgcmRtYV94cHJ0LAorKwkgICAgcmRtYV94 cHJ0LT5jb25uX3R5cGUpOworKwlpZiAocmMpIHsKKysJCXJjID0gZXJybm87CisrCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsICIlczogY3JlYXRlIGlkIGZhaWxlZCBpcCAlcyBlcnIg JWQiLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXAsIHJjKTsKKysJ CWdvdG8gb3V0OworKwl9Cisrb3V0OgorIAlyZXR1cm4gcmM7CisgfQorIAorQEAgLTI0MjcsMjkg KzI2MTIsMjAgQEAKKyAJCXJldHVybiBFSU5WQUw7CisgCX0KKyAKKy0JaWYgKHJkbWFfeHBydC0+ c2VydmVyKSB7CisrCWlmIChyZG1hX3hwcnQtPnNlcnZlciAhPSBSRE1BWF9DTElFTlQpIHsKKyAJ CV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKyAJCQkiJXMoKSBvbmx5IGNhbGxlZCBm cm9tIGNsaWVudCBzaWRlISIsCisgCQkJX19mdW5jX18pOworIAkJcmV0dXJuIEVJTlZBTDsKKyAJ fQorIAorLQlyYyA9IHJwY19yZG1hX3RocmVhZF9jcmVhdGVfZXBvbGwoJnJwY19yZG1hX3N0YXRl LmNtX3RocmVhZF9pZCwKKy0JCXJwY19yZG1hX2NtX3RocmVhZCwgcmRtYV94cHJ0LCAmcnBjX3Jk bWFfc3RhdGUuY21fZXBvbGxmZCk7CistCWlmIChyYykgeworLQkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VSUk9SLAorLQkJCSIlcygpICVwWyV1XSBycGNfcmRtYV90aHJlYWRfY3JlYXRlX2Vw b2xsIGZhaWxlZDogJXMgKCVkKSIsCistCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0 LT5zdGF0ZSwgc3RyZXJyb3IocmMpLCByYyk7CistCQlyZXR1cm4gcmM7CistCX0KKy0KKyAJcmMg PSBycGNfcmRtYV9iaW5kX2NsaWVudChyZG1hX3hwcnQpOworIAlpZiAocmMpCisgCQlyZXR1cm4g cmM7CisgCXJjID0gcnBjX3JkbWFfcGRfZ2V0KHJkbWFfeHBydCk7CisgCWlmIChyYykKKyAJCXJl dHVybiByYzsKKy0JcmMgPSBycGNfcmRtYV9zZXR1cF9zdHVmZihyZG1hX3hwcnQpOworKwlyYyA9 IHJwY19yZG1hX3NldHVwX3N0dWZmX2NsaWVudChyZG1hX3hwcnQpOworIAlpZiAocmMpIHsKKyAJ CXJwY19yZG1hX2Rlc3Ryb3lfc3R1ZmYocmRtYV94cHJ0KTsKKyAJCXJldHVybiByYzsKK0BAIC0y NDU3LDExICsyNjMzLDcgQEAKKyAJcmMgPSBycGNfcmRtYV9zZXR1cF9jYnEocmRtYV94cHJ0LCAm cmRtYV94cHJ0LT5jYnFoLAorIAkJCQlyZG1hX3hwcnQtPnhhLT5ycV9kZXB0aCArIHJkbWFfeHBy dC0+eGEtPnNxX2RlcHRoLAorIAkJCQlyZG1hX3hwcnQtPnhhLT5jcmVkaXRzKTsKKy0JaWYgKHJj KQorLQkJcmV0dXJuIHJjOworLQorLQlyZXR1cm4gcnBjX3JkbWFfZmRfYWRkKHJkbWFfeHBydCwg cmRtYV94cHJ0LT5ldmVudF9jaGFubmVsLT5mZCwKKy0JCQkJcnBjX3JkbWFfc3RhdGUuY21fZXBv bGxmZCk7CisrCXJldHVybiByYzsKKyB9CisgCisgZXh0ZXJuIG11dGV4X3Qgb3BzX2xvY2s7Citk aWZmIC11ciBudGlycGMtNy4yL3NyYy9ycGNfcmRtYS5oIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNm OGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9ycGNfcmRtYS5oCistLS0gbnRpcnBjLTcuMi9z cmMvcnBjX3JkbWEuaAkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50 aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9ycGNfcmRt YS5oCTIwMjYtMDUtMTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtODcsNiArODcsMTAg QEAKKyAjZGVmaW5lIENCQ19GTEFHX05PTkUJCTB4MDAwMAorICNkZWZpbmUgQ0JDX0ZMQUdfUkVM RUFTRQkweDAwMDEKKyAjZGVmaW5lIENCQ19GTEFHX1JFTEVBU0lORwkweDAwMDIKKysvKiBzdmNf cmVxdWVzdCByZXR1cm5lZCBYUFJUX1NVU1BFTkQgKGUuZy4gUU9TLCBhc3luYyByZXF1ZXN0IGhh bmRsaW5nKQorKyAqIHdyYXBfY2FsbGJhY2sgZGVmZXJyZWQgdGhlIHNlbnRpbmVsIGNiY19yZWxl YXNlX2l0IHRvIHhkcl9yZG1hX3N2Y19mbHVzaG91dAorKyAqIHNvIHRoYXQgZGF0YXEgYnVmZmVy cyByZW1haW4gdmFsaWQgYWNyb3NzIHRoZSBzdXNwZW5zaW9uIHdpbmRvdy4gKi8KKysjZGVmaW5l IENCQ19GTEFHX1NFTlRJTkVMX1BFTkRJTkcgMHgwMDA0CisgCisgI2RlZmluZSBSRE1BX0NCX1RJ TUVPVVRfU0VDIDEwCisgCitAQCAtMjIyLDYgKzIyNiw3IEBACisgCQkJCQkgKiAtMSAoUkRNQVhf U0VSVkVSX0NISUxEKToKKyAJCQkJCSAqIHNlcnZlciBoYXMgYWNjZXB0ZWQgY29ubmVjdGlvbgor IAkJCQkJICovCisrCWJvb2wgc2hhcmVkOworIAorIAllbnVtIHJkbWFfdHJhbnNwb3J0X3N0YXRl IHsKKyAJCVJETUFYU19JTklUSUFMLCAJLyogYXNzdW1lcyB6ZXJvLCBuZXZlciBzZXQgKi8KK0BA IC0zNzQsNiArMzc5LDcgQEAKKyBlbnVtIHhwcnRfc3RhdCBzdmNfcmRtYV9yZW5kZXp2b3VzKFNW Q1hQUlQgKik7CisgCisgLyogY2xpZW50ICovCisraW50IHJwY19yZG1hX2Nvbm5lY3RfcHJlcGFy ZShSRE1BWFBSVCAqKTsKKyBpbnQgcnBjX3JkbWFfY29ubmVjdChSRE1BWFBSVCAqKTsKKyBpbnQg cnBjX3JkbWFfY29ubmVjdF9maW5hbGl6ZShSRE1BWFBSVCAqKTsKKyAKK0BAIC0zODMsNyArMzg5 LDcgQEAKKyB2b2lkIHhkcl9yZG1hX2FkZF9vdXRidWZzX2RhdGEoUkRNQVhQUlQgKnJkbWFfeHBy dCk7Cisgdm9pZCB4ZHJfcmRtYV9hZGRfaW5idWZzX2hkcihSRE1BWFBSVCAqcmRtYV94cHJ0KTsK KyB2b2lkIHhkcl9yZG1hX2FkZF9vdXRidWZzX2hkcihSRE1BWFBSVCAqcmRtYV94cHJ0KTsKKy12 b2lkIHhkcl9yZG1hX2NhbGxxKFJETUFYUFJUICopOworK3ZvaWQgeGRyX3JkbWFfY2FsbHEoUkRN QVhQUlQgKiwgaW50KTsKKyAKKyBib29sIHhkcl9yZG1hX2NsbnRfcmVwbHkoWERSICosIHVfaW50 MzJfdCk7CisgYm9vbCB4ZHJfcmRtYV9jbG50X2ZsdXNob3V0KHN0cnVjdCBycGNfcmRtYV9jYmMg Kik7CitAQCAtNDA2LDQgKzQxMiwxMyBAQAorIGludCB4ZHJfcmRtYV9kZXJlZ19tcihSRE1BWFBS VCAqcmRtYV94cHJ0LCBzdHJ1Y3QgaWJ2X21yICptciwKKyAgICAgdWludDhfdCAqYnVmZmVyX2Fs aWduZWQsIHVpbnQzMl90IGJ1ZmZlcl90b3RhbCk7CisgCisraW50IHJwY19yZG1hX2NxX2V2ZW50 X2hhbmRsZXIoUkRNQVhQUlQgKiwgaW50KTsKKysKKytSRE1BWFBSVCAqIHJwY19yZG1hX2FsbG9j YXRlKGNvbnN0IHN0cnVjdCBycGNfcmRtYV9hdHRyICopOworKworK2ludCBycGNfcmRtYV9zZXR1 cF9jYnEoUkRNQVhQUlQgKiwgc3RydWN0IHBvb2xxX2hlYWQgKiwKKysgICAgdV9pbnQgZGVwdGgs IHVfaW50IHNnZSk7CisrCisrdm9pZCBzdmNfcmRtYV9vcHMoU1ZDWFBSVCAqKTsKKysKKyAjZW5k aWYgLyogIV9USVJQQ19SUENfUkRNQV9IICovCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9zdmMu YyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvc3Zj LmMKKy0tLSBudGlycGMtNy4yL3NyYy9zdmMuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAw MCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2 YmQxL3NyYy9zdmMuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTM3 OCw3ICszNzgsNyBAQAorICBycGNiX2l0OgorIAlyd2xvY2tfdW5sb2NrKCZzdmNfbG9jayk7Cisg CS8qIG5vdyByZWdpc3RlciB0aGUgaW5mb3JtYXRpb24gd2l0aCB0aGUgbG9jYWwgYmluZGVyIHNl cnZpY2UgKi8KKy0JaWYgKG5jb25mKSB7CisrCWlmIChuY29uZiAmJiAoKHhwcnQtPnhwX2ZsYWdz ICYgU1ZDX1hQUlRfRkxBR19OT19TRVQpID09IDApKSB7CisgCQkvKkxJTlRFRCBjb25zdCBjYXN0 YXdheSAqLworIAkJZHVtbXkgPQorIAkJICAgIHJwY2Jfc2V0KHByb2csIHZlcnMsIChzdHJ1Y3Qg bmV0Y29uZmlnICopbmNvbmYsCitkaWZmIC11ciBudGlycGMtNy4yL3NyYy9zdmNfaW50ZXJuYWwu aCBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS9zcmMvc3Zj X2ludGVybmFsLmgKKy0tLSBudGlycGMtNy4yL3NyYy9zdmNfaW50ZXJuYWwuaAkyMDI1LTA5LTIz IDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1 YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfaW50ZXJuYWwuaAkyMDI2LTA1LTE4IDE5OjQw OjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSA8c3lzL3Nv Y2tldC5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPG1pc2Mvb3NfZXBv bGwuaD4KKysjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisgI2luY2x1ZGUgPHJwYy9ycGNfbXNnLmg+ CisgCisgI2luY2x1ZGUgInJwY19kcGx4X2ludGVybmFsLmgiCitAQCAtMTk0LDcgKzE5NSw0NiBA QAorIHZvaWQgc3ZjX3Jxc3RfeHBydF9zZW5kX2NvbXBsZXRlKFNWQ1hQUlQgKik7Cisgdm9pZCBz dmNfcnFzdF91bmhvb2soU1ZDWFBSVCAqKTsKKyAKKysvKiBBbGxvdyBtdWNoIG1vcmUgc3BhY2Ug dGhhbiB3ZSByZWFsbHkgbmVlZCBmb3IgYSBzb2NrIG5hbWUuIEFuIElQVjQgYWRkcmVzcworKyAq IGVtYmVkZGVkIGluIElQdjYgY291bGQgdXNlIDQ1IGJ5dGVzIGFuZCB0aGVuIGlmIHdlIGFkZCBh IHBvcnQsIHRoYXQgd291bGQgYmUKKysgKiBhbiBhZGRpdGlvbmFsIDYgYnl0ZXMgKDo2NTUzNSkg Zm9yIGEgdG90YWwgb2YgNTEsIGFuZCB0aGVuIG9uZSBtb3JlIGZvciBOVUwKKysgKiB0ZXJtaW5h dGlvbi4gV2UgY291bGQgdXNlIDY0IGluc3RlYWQgb2YgMTI4LgorKyAqLworKyNkZWZpbmUgU09D S19OQU1FX01BWCAxMjgKKysKKyB0eXBlZGVmIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNvY2th ZGRyX3Q7CisgaW50IHN2Y19nZXRfcG9ydChzb2NrYWRkcl90ICopOworIAorK3N0YXRpYyBpbmxp bmUgdm9pZCAqc29ja2V0X2FkZHIoc29ja2FkZHJfdCAqYWRkcikKKyt7CisrCXN3aXRjaCAoYWRk ci0+c3NfZmFtaWx5KSB7CisrCWNhc2UgQUZfSU5FVDoKKysJCXJldHVybiAmKCgoc3RydWN0IHNv Y2thZGRyX2luICopYWRkciktPnNpbl9hZGRyKTsKKysJY2FzZSBBRl9JTkVUNjoKKysJCXJldHVy biAmKCgoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHIpLT5zaW42X2FkZHIpOworKyNpZmRlZiBS UENfVlNPQ0sKKysJY2FzZSBBRl9WU09DSzoKKysJCXJldHVybiAmKCgoc3RydWN0IHNvY2thZGRy X3ZtICopYWRkciktPnN2bV9jaWQpOworKyNlbmRpZiAvKiBWU09DSyAqLworKwlkZWZhdWx0Ogor KwkJcmV0dXJuIGFkZHI7CisrCX0KKyt9CisrCisrc3RhdGljIGlubGluZSBib29sIHNwcmludF9z b2NraXAoc29ja2FkZHJfdCAqYWRkciwgY2hhciAqYnVmLCBpbnQgbGVuKQorK3sKKysjaWZkZWYg UlBDX1ZTT0NLCisrCWlmIChhZGRyLT5zc19mYW1pbHkgPT0gQUZfVlNPQ0spIHsKKysJCWludCBy YyA9IHNucHJpbnRmKGJ1ZiwgbGVuLCAiJWQiLAorKwkJCSAoKHN0cnVjdCBzb2NrYWRkcl92bSAq KWFkZHIpLT5zdm1fY2lkKSk7CisrCQlyZXR1cm4gcmMgPj0gMCAmJiByYyA8IGxlbjsKKysJfQor KyNlbmRpZiAvKiBWU09DSyAqLworKworKwlpZiAoYWRkci0+c3NfZmFtaWx5ICE9IEFGX0lORVQg JiYgYWRkci0+c3NfZmFtaWx5ICE9IEFGX0lORVQ2KQorKwkJcmV0dXJuIGZhbHNlOworKworKwly ZXR1cm4gaW5ldF9udG9wKGFkZHItPnNzX2ZhbWlseSwgc29ja2V0X2FkZHIoYWRkciksIGJ1Ziwg bGVuKSAhPSBOVUxMOworK30KKysKKyAjZW5kaWYJCQkJLyogVElSUENfU1ZDX0lOVEVSTkFMX0gg Ki8KK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL3N2Y19yZG1hLmMgbnRpcnBjLTVjNzYxYmIxODZl OWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y19yZG1hLmMKKy0tLSBudGlycGMt Ny4yL3NyYy9zdmNfcmRtYS5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisr KysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2 Y19yZG1hLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC02MCw3ICs2 MCw2IEBACisgI2luY2x1ZGUgPHJwYy9zdmNfcnFzdC5oPgorICNpbmNsdWRlIDxycGMvc3ZjX2F1 dGguaD4KKyAKKy1zdGF0aWMgdm9pZCBzdmNfcmRtYV9vcHMoU1ZDWFBSVCAqKTsKKyAKKyAvKgor ICAqIHN2Y19yZG1hX3JlbmRlenZvdXM6IHdhaXRzIGZvciBjb25uZWN0aW9uIHJlcXVlc3QKK0BA IC05NSwxMSArOTQsMTggQEAKKyAJbWVtY3B5KHJkbWFfeHBydC0+c21fZHIueHBydC54cF9yZW1v dGUubmIuYnVmLCBzcywKKyAJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9yZW1vdGUubmIubGVu KTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorLQkJIiVzOiV1IGxvY2Fs ICVwIHJlbW90ZSAlcCB4cHJ0ICVwIiwgX19mdW5jX18sIF9fTElORV9fLAorKwlyZG1hX3hwcnQt PnNtX2RyLnhwcnQueHBfaXAgPSBtZW1fYWxsb2MoU09DS19OQU1FX01BWCk7CisrCXNwcmludF9z b2NraXAoc3MsIHJkbWFfeHBydC0+c21fZHIueHBydC54cF9pcCwKKysJICAgIFNPQ0tfTkFNRV9N QVgpOworKwlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcG9ydCA9IHN2Y19nZXRfcG9ydChzcyk7 CisrCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwKKysJCSIlczoldSBsb2Nh bCAlcCByZW1vdGUgJXAgeHBydCAlcCByZW1vdGUgaXAgJXMiLAorKwkJX19mdW5jX18sIF9fTElO RV9fLAorIAkJJnJkbWFfeHBydC0+c21fZHIueHBydC54cF9sb2NhbC5uYiwKKyAJCSZyZG1hX3hw cnQtPnNtX2RyLnhwcnQueHBfcmVtb3RlLm5iLAorLQkJJnJkbWFfeHBydC0+c21fZHIueHBydCk7 CisrCQkmcmRtYV94cHJ0LT5zbV9kci54cHJ0LAorKwkJcmRtYV94cHJ0LT5zbV9kci54cHJ0Lnhw X2lwKTsKKyAKKyAJc3ZjX3JkbWFfb3BzKCZyZG1hX3hwcnQtPnNtX2RyLnhwcnQpOworIAlyZG1h X3hwcnQtPnNtX2RyLnJlY3ZzeiA9IHJlcV9yZG1hX3hwcnQtPnNtX2RyLnJlY3ZzejsKK0BAIC0x NTUsNyArMTYxLDcgQEAKKyAJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorIAkJIiVz OiV1IE5ldyBSRE1BIGNsaWVudCBjb25uZWN0ZWQgeHBydCAlcCwgeHBfZmQgJWQsICIKKyAJCSJx cF9udW0gJWQsIHhwX2ZkICVkIGlzX3JkbWFfZW5hYmxlZCAlZCB0byBsb2NhbCBwb3J0ICVkICIK Ky0JCSJmcm9tIHJlbW90ZSBwb3J0ICVkIHJlZiAlZCBlcG9sbCAlIzA0eCIsCisrCQkiZnJvbSBy ZW1vdGUgcG9ydCAlZCByZWYgJWQgZXBvbGwgJSMwNHggcmVtb3RlIGlwICVzIiwKKyAJCV9fZnVu Y19fLCBfX0xJTkVfXywKKyAJCSZyZG1hX3hwcnQtPnNtX2RyLnhwcnQsIHJkbWFfeHBydC0+c21f ZHIueHBydC54cF9mZCwKKyAJCXJkbWFfeHBydC0+cXAtPnFwX251bSwKK0BAIC0xNjUsNyArMTcx LDggQEAKKyAJCXJkbWFfeHBydC0+c21fZHIueHBydC54cF9yZW1vdGUubmIuYnVmID8KKyAJCXN2 Y19nZXRfcG9ydChyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfcmVtb3RlLm5iLmJ1ZikgOiAwLAor IAkJcmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX3JlZmNudCwKKy0JCXJkbWFfeHBydC0+c21fZHIu eHBydC54cF9mbGFncyk7CisrCQlyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3MsCisrCQly ZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfaXApOworIAorIAlyZXR1cm4gKFhQUlRfSURMRSk7Cisg fQorQEAgLTIyMSw2ICsyMjgsMjcgQEAKKyAJCXJldHVybiAoWFBSVF9ESUVEKTsKKyAJfQorIAor KwkvKiBpbiBvcmRlciBvZiBsaWtlbGlob29kICovCisrCWlmIChyZXEtPnJxX21zZy5ybV9kaXJl Y3Rpb24gPT0gQ0FMTCkgeworKwkJLyogYW4gb3JkaW5hcnkgY2FsbCBoZWFkZXIgKi8KKysJCWdv dG8gcHJvY2Vzc19jYWxsOworKwl9CisrCisrCWlmIChyZXEtPnJxX21zZy5ybV9kaXJlY3Rpb24g PT0gUkVQTFkpIHsKKysJCS8qIHJlcGx5IGhlYWRlciAoeHBydCBPSykgKi8KKysJCWNsbnRfcmVx X3Byb2Nlc3NfcmVwbHkocmVxLT5ycV94cHJ0LCByZXEpOworKwkJcmV0dXJuIFhQUlRfSURMRTsK KysJfQorKworKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfV0FSTiwKKysJCSIlczogJXAgZmQg JWQgZmFpbGVkIGRpcmVjdGlvbiAlIiBQUkl1MzIKKysJCSIgKHdpbGwgc2V0IGRlYWQpIiwKKysJ CV9fZnVuY19fLCByZXEtPnJxX3hwcnQsIHJlcS0+cnFfeHBydC0+eHBfZmQsCisrCQlyZXEtPnJx X21zZy5ybV9kaXJlY3Rpb24pOworKwlyZXR1cm4gKFhQUlRfRElFRCk7CisrCisrcHJvY2Vzc19j YWxsOgorKworIAkvKiB0aGUgY2hlY2tzdW0gKi8KKyAJcmVxLT5ycV9ja3N1bSA9IDA7CisgCitA QCAtMjg5LDcgKzMxNyw3IEBACisgCisgCXN2Y19ycXN0X3hwcnRfdW5yZWdpc3Rlcl9yZG1hKHhw cnQsIGZsYWdzKTsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCSAgICAiJXMoKSAlcFsldV0iLAorIAkg ICAgX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSk7CisgCitAQCAtMzEzLDcg KzM0MSw3IEBACisgeworIAlSRE1BWFBSVCAqcmRtYV94cHJ0ID0gUkRNQV9EUihSRUNfWFBSVCh4 cHJ0KSk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChU SVJQQ19ERUJVR19GTEFHX1JQQ19SRE1BLAorIAkJIiVzKCkgJXAgeHBfcmVmY250ICUiIFBSSWQz MgorIAkJIiBzaG91bGQgYWN0dWFsbHkgZGVzdHJveSB0aGluZ3MgQCAlczolZCIsCisgCQlfX2Z1 bmNfXywgeHBydCwgeHBydC0+eHBfcmVmY250LCB0YWcsIGxpbmUpOworQEAgLTM2OCw3ICszOTYs NyBAQAorIAlyZXR1cm4gKFRSVUUpOworIH0KKyAKKy1zdGF0aWMgdm9pZAorK3ZvaWQKKyBzdmNf cmRtYV9vcHMoU1ZDWFBSVCAqeHBydCkKKyB7CisgCXN0YXRpYyBzdHJ1Y3QgeHBfb3BzIG9wczsK K2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL3N2Y19ycXN0LmMgbnRpcnBjLTVjNzYxYmIxODZlOWVh M2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y19ycXN0LmMKKy0tLSBudGlycGMtNy4y L3NyYy9zdmNfcnFzdC5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAwCisrKysg bnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y19y cXN0LmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0yOTcsNyArMjk3 LDcgQEAKKyBzdGF0aWMgdm9pZCBzdmNfcnFzdF9lcG9sbF9sb29wKHN0cnVjdCB3b3JrX3Bvb2xf ZW50cnkgKndwZSk7Cisgc3RhdGljIHZvaWQgc3ZjX2NvbXBsZXRlX3Rhc2soc3RydWN0IHN2Y19y cXN0X3JlYyAqc3JfcmVjLCBib29sIGZpbmlzaGVkKTsKKyAKKy1zdGF0aWMgaW50CisraW50Cisg c3ZjX3Jxc3RfZXhwaXJlX2NtcGYoY29uc3Qgc3RydWN0IG9wcl9yYnRyZWVfbm9kZSAqbGhzLAor IAkJICAgICBjb25zdCBzdHJ1Y3Qgb3ByX3JidHJlZV9ub2RlICpyaHMpCisgeworQEAgLTM3MSw3 ICszNzEsNyBAQAorIAlldl9zaWcoc3JfcmVjLT5zdlswXSwgMCk7CS8qIHNlbmQgd2FrZXVwICov CisgfQorIAorLXN0YXRpYyB2b2lkCisrdm9pZAorIHN2Y19ycXN0X2V4cGlyZV90YXNrKHN0cnVj dCB3b3JrX3Bvb2xfZW50cnkgKndwZSkKKyB7CisgCXN0cnVjdCBjbG50X3JlcSAqY2MgPSBvcHJf Y29udGFpbmVyb2Yod3BlLCBzdHJ1Y3QgY2xudF9yZXEsIGNjX3dwZSk7CitkaWZmIC11ciBudGly cGMtNy4yL3NyYy9zdmNfdmMuYyBudGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUx Mjk3ODI1NmJkMS9zcmMvc3ZjX3ZjLmMKKy0tLSBudGlycGMtNy4yL3NyYy9zdmNfdmMuYwkyMDI1 LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTll YTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy9zdmNfdmMuYwkyMDI2LTA1LTE4IDE5OjQw OjIwLjAwMDAwMDAwMCAtMDQwMAorQEAgLTc0LDYgKzc0LDcgQEAKKyAjaW5jbHVkZSA8cnBjL3N2 Y19hdXRoLmg+CisgI2luY2x1ZGUgPHJwYy9zdmNfcnFzdC5oPgorICNpbmNsdWRlIDxycGMveGRy X2lvcS5oPgorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyAKKyAjaW5jbHVkZSAicnBjX2NvbS5o IgorICNpbmNsdWRlICJjbG50X2ludGVybmFsLmgiCitAQCAtNDM4LDYgKzQzOSw3IEBACisgCXNv Y2tsZW5fdCBsZW47CisgCXN0YXRpYyBpbnQgbiA9IDE7CisgCXN0cnVjdCB0aW1ldmFsIHRpbWV2 YWw7CisrCXN0cnVjdCBzb2NrYWRkciAqc2E7CisgCisgCVhQUlRfQVVUT19UUkFDRVBPSU5UKHhw cnQsIHJlbmRlenZvdXNfc3RhcnQsIFRSQUNFX0lORk8sCisgCQkicmVuZGV6dm91c19zdGFydCIp OworQEAgLTUwNSw2ICs1MDcsMjggQEAKKyAJbmV3eHBydC0+eHBfcmVtb3RlLm5iLmxlbiA9IGxl bjsKKyAJWFBSVF9UUkFDRShuZXd4cHJ0LCBfX2Z1bmNfXywgX19mdW5jX18sIF9fTElORV9fKTsK KyAKKysJc2EgPSAoc3RydWN0IHNvY2thZGRyICopbmV3eHBydC0+eHBfcmVtb3RlLm5iLmJ1ZjsK KysJLyogU3RvcmUgY2xpZW50IGluZm9ybWF0aW9uIChJUCAmIFBvcnQpIGluIFNWQ1hQUlQgKi8K KysJaWYgKG5ld3hwcnQtPnhwX3JlbW90ZS5uYi5sZW4gPiAwICYmIHNhICE9IE5VTEwpIHsKKysJ CWlmIChzYS0+c2FfZmFtaWx5ID09IEFGX0lORVQpIHsKKysJCQlzdHJ1Y3Qgc29ja2FkZHJfaW4g KnNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYTsKKysJCQlpbmV0X250b3AoQUZfSU5FVCwg JnNpbi0+c2luX2FkZHIsIG5ld3hwcnQtPnhwX2NsbnRfYWRkciwKKysJCQkJCXNpemVvZihuZXd4 cHJ0LT54cF9jbG50X2FkZHIpKTsKKysJCQluZXd4cHJ0LT54cF9jbG50X3BvcnQgPSBudG9ocyhz aW4tPnNpbl9wb3J0KTsKKysJCX0gZWxzZSBpZiAoc2EtPnNhX2ZhbWlseSA9PSBBRl9JTkVUNikg eworKwkJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAq KXNhOworKwkJCWluZXRfbnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRkciwgbmV3eHBydC0+ eHBfY2xudF9hZGRyLAorKwkJCQkJc2l6ZW9mKG5ld3hwcnQtPnhwX2NsbnRfYWRkcikpOworKwkJ CW5ld3hwcnQtPnhwX2NsbnRfcG9ydCA9IG50b2hzKHNpbjYtPnNpbjZfcG9ydCk7CisrCQl9IGVs c2UgeworKwkJCXNucHJpbnRmKG5ld3hwcnQtPnhwX2NsbnRfYWRkciwgc2l6ZW9mKG5ld3hwcnQt PnhwX2NsbnRfYWRkciksICJ1bmtub3duIik7CisrCQkJbmV3eHBydC0+eHBfY2xudF9wb3J0ID0g MDsKKysJCX0KKysJfSBlbHNlIHsKKysJCXNucHJpbnRmKG5ld3hwcnQtPnhwX2NsbnRfYWRkciwg c2l6ZW9mKG5ld3hwcnQtPnhwX2NsbnRfYWRkciksICJub19hZGRyIik7CisrCQluZXd4cHJ0LT54 cF9jbG50X3BvcnQgPSAwOworKwl9CisrCisgCS8qIFhYWCBmdmRsIC0gaXMgdGhpcyB1c2VmdWw/ IChZZXMuICBNYXR0KSAqLworIAlpZiAoc2kuc2lfcHJvdG8gPT0gSVBQUk9UT19UQ1ApIHsKKyAJ CWxlbiA9IDE7CitAQCAtOTc5LDcgKzEwMDMsNyBAQAorIAlTVkNYUFJUICp4cHJ0LCBzdHJ1Y3Qg cHJveHlfaGVhZGVyX3BhcnQgKnByb3h5X2hlYWRlcl9wYXJ0KQorIHsKKyAJZW51bSBoYXByb3h5 X3JldF9jb2RlIHJldDsKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dh cm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisgCQkiJXM6ICVwIGZkICVkIHByb3h5IGln bm9yZWQgZm9yIGxvY2FsLiBsZW4gaWdub3JlZDogJWQiLAorIAkJX19mdW5jX18sIHhwcnQsIHhw cnQtPnhwX2ZkLCBwcm94eV9oZWFkZXJfcGFydC0+bGVuKTsKKyAJY29uc3QgZW51bSBoYXByb3h5 X3JldF9jb2RlIGlnbm9yZV9yZW1haW5pbmdfZGF0YV9yZXN1bHQgPQorQEAgLTEyMDUsOSArMTIy OSw5IEBACisgCQkJCQkJeHBydCwKKyAJCQkJCQlTVkNfWFBSVF9GTEFHX0FEREVEX1JFQ1YpKSkg eworIAkJCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLAorLQkJCQkJCSIlczogJXAg ZmQgJWQgc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQgZGVhZCkiLAorKwkJ CQkJCSIlczogJXAgZmQgJWQgc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAod2lsbCBzZXQg ZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAorIAkJCQkJCSJzdmNfdmNfd2FpdCIsCistCQkJCQkJ eHBydCwgeHBydC0+eHBfZmQpOworKwkJCQkJCXhwcnQsIHhwcnQtPnhwX2ZkLCB4cHJ0LT54cF9j bG50X2FkZHIsIHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQkJCQlTVkNfREVTVFJPWSh4cHJ0KTsK KyAJCQkJCWNvZGUgPSBFSU5WQUw7CisgCQkJCX0KK0BAIC0xMjE2LDggKzEyNDAsOCBAQAorIAkJ CQlyZXR1cm4gU1ZDX1NUQVQoeHBydCk7CisgCQkJfQorIAkJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19XQVJOLAorLQkJCQkiJXM6ICVwIGZkICVkIHJlY3YgZXJybm8gJWQgKHdpbGwgc2V0IGRl YWQpIiwKKy0JCQkJInN2Y192Y193YWl0IiwgeHBydCwgeHBydC0+eHBfZmQsIGNvZGUpOworKwkJ CQkiJXM6ICVwIGZkICVkIHJlY3YgZXJybm8gJWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6 ICVzOiV1IiwKKysJCQkJInN2Y192Y193YWl0IiwgeHBydCwgeHBydC0+eHBfZmQsIGNvZGUsIHhw cnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCQlTVkNfREVTVFJPWSh4 cHJ0KTsKKyAKKyAJCQlYUFJUX0FVVE9fVFJBQ0VQT0lOVCh4cHJ0LCByZWN2X2VyciwKK0BAIC0x MjI3LDggKzEyNTEsOCBAQAorIAorIAkJaWYgKHVubGlrZWx5KCFybGVuKSkgeworIAkJCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19TVkNfVkMsCistCQkJCSIlczogJXAgZmQgJWQgcmVjdiBjbG9z ZWQgKHdpbGwgc2V0IGRlYWQpIiwKKy0JCQkJInN2Y192Y193YWl0IiwgeHBydCwgeHBydC0+eHBf ZmQpOworKwkJCQkiJXM6ICVwIGZkICVkIHJlY3YgY2xvc2VkICh3aWxsIHNldCBkZWFkKSAtIGNs aWVudGlwOiAlczoldSIsCisrCQkJCSJzdmNfdmNfd2FpdCIsIHhwcnQsIHhwcnQtPnhwX2ZkLCB4 cHJ0LT54cF9jbG50X2FkZHIsIHhwcnQtPnhwX2NsbnRfcG9ydCk7CisgCQkJU1ZDX0RFU1RST1ko eHBydCk7CisgCisgCQkJWFBSVF9BVVRPX1RSQUNFUE9JTlQoeHBydCwgcmVjdl9lbXB0eSwKK0BA IC0xMjQzLDYgKzEyNjcsMTYgQEAKKyAJCQkic3hfZmJ0YmMgPSAlMDh4IiwgKGludCl4ZC0+c3hf ZmJ0YmMpOworIAorIAkJaWYgKHhkLT5zeF9mYnRiYyA9PSBQUDJfU0lHX1VJTlQzMikgeworKwkJ CS8qIFNpbmNlIHRoaXMgaXMgaGFwcm94eSBoZWFkZXIgY2xlYXIgb2ZmIHN4X2ZidGJjCisrCQkJ ICogSW4gY2FzZSBvZiBIQVBST1hZX1JFVF9DT0RFX19JR05PUkVfTE9DQUwsCisrCQkJICogaGFu ZGxlX2hhcHJveHlfaGVhZGVyKCkgZG8gcmVhcm0gdGhlIHhwcnQgcmVjdiBmZC4KKysJCQkgKiBj YXVzaW5nIGEgcmFjZSBpZiB0aGUgdGhyZWFkIGdldHMgc2NoZWR1bGVkCisrCQkJICogb3V0IGFm dGVyIHJlYXJtIGFuZCBlcG9sbF93YWl0IGdldHMgZGF0YSBhdmFpbGFibGUKKysJCQkgKiBldmVu dCwgdGhlbiBuZXcgcmVjdiBlbmR1cCBpbiBlbHNlY2FzZQorKwkJCSAqICJpZiAoIXhkLT5zeF9m YnRiYykiCisrCQkJICogYW5kIHdpbGwgY2F1c2UgdXYgdG8gTlVMTCAqLworKwkJCXhkLT5zeF9m YnRiYyA9IDA7CisrCisgCQkJLyogSEEgUHJveHkgVjI/ICovCisgCQkJZW51bSBoYXByb3h5X3Jl dF9jb2RlIHJldCA9IGhhbmRsZV9oYXByb3h5X2hlYWRlcih4cHJ0KTsKKyAJCQlzd2l0Y2ggKHJl dCkgeworQEAgLTEyNTIsMTcgKzEyODYsMTUgQEAKKyAJCQkJCXJldHVybiBTVkNfU1RBVCh4cHJ0 KTsKKyAJCQkJfQorIAkJCQkvKiBOb3cgbG9vayB0byBzZWUgaWYgdGhlcmUncyBtb3JlLi4uICov CistCSAgICAgICAgICAgICAgICAgICAgICAgIHhkLT5zeF9mYnRiYyA9IDA7CisgCQkJCWhhcF9h Z2FpbiA9IHRydWU7CisgCQkJCWdvdG8gYWdhaW47CisgCQkJY2FzZSBIQVBST1hZX1JFVF9DT0RF X19GQUlMVVJFOgorIAkJCQlTVkNfREVTVFJPWSh4cHJ0KTsKKyAJCQkJcmV0dXJuIFNWQ19TVEFU KHhwcnQpOworIAkJCWNhc2UgSEFQUk9YWV9SRVRfQ09ERV9fSUdOT1JFX0xPQ0FMOgorLQkJCQkv KiBjbGVhciBvZmYgc3hfZmJ0YmMgKi8KKy0JICAgICAgICAgICAgICAgICAgICAgICAgeGQtPnN4 X2ZidGJjID0gMDsKKyAJCQkJcmV0dXJuIFNWQ19TVEFUKHhwcnQpOworIAkJCWNhc2UgSEFQUk9Y WV9SRVRfQ09ERV9fTk9UX0hBUFJPWFk6CisrCQkJCXhkLT5zeF9mYnRiYyA9IFBQMl9TSUdfVUlO VDMyOworIAkJCQlicmVhazsKKyAJCQl9CisgCQl9CitAQCAtMTI3Niw4ICsxMzA4LDggQEAKKyAK KyAJCWlmICh1bmxpa2VseSgheGQtPnN4X2ZidGJjKSkgeworIAkJCV9fd2FybngoVElSUENfREVC VUdfRkxBR19FUlJPUiwKKy0JCQkJIiVzOiAlcCBmZCAlZCBmcmFnbWVudCBpcyB6ZXJvICh3aWxs IHNldCBkZWFkKSIsCistCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54cF9mZCk7CisrCQkJCSIl czogJXAgZmQgJWQgZnJhZ21lbnQgaXMgemVybyAod2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDog JXM6JXUiLAorKwkJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIHhwcnQtPnhwX2NsbnRf YWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCQlTVkNfREVTVFJPWSh4cHJ0KTsKKyAKKyAJ CQlYUFJUX0FVVE9fVFJBQ0VQT0lOVCh4cHJ0LCByZWN2X25vX3JlY29yZCwKK0BAIC0xMzAzLDE0 ICsxMzM1LDE0IEBACisgCisgCQlpZiAoY29kZSA9PSBFQUdBSU4gfHwgY29kZSA9PSBFV09VTERC TE9DSykgeworIAkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19TVkNfVkMsCistCQkJCSIlczog JXAgZmQgJWQgcmVjdiBlcnJubyAlZCAodHJ5IGFnYWluKSIsCistCQkJCV9fZnVuY19fLCB4cHJ0 LCB4cHJ0LT54cF9mZCwgY29kZSk7CisrCQkJCSIlczogJXAgZmQgJWQgcmVjdiBlcnJubyAlZCAo dHJ5IGFnYWluKSAtIGNsaWVudGlwOiAlczoldSIsCisrCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0 LT54cF9mZCwgY29kZSwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOwor IAkJCWlmICh1bmxpa2VseShzdmNfcnFzdF9yZWFybV9ldmVudHMoCisgCQkJCQkJeHBydCwKKyAJ CQkJCQlTVkNfWFBSVF9GTEFHX0FEREVEX1JFQ1YpKSkgeworIAkJCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVJST1IsCistCQkJCQkiJXM6ICVwIGZkICVkIHN2Y19ycXN0X3JlYXJtX2V2ZW50 cyBmYWlsZWQgKHdpbGwgc2V0IGRlYWQpIiwKKy0JCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54 cF9mZCk7CisrCQkJCQkiJXM6ICVwIGZkICVkIHN2Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQg KHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwKKysJCQkJCV9fZnVuY19fLCB4cHJ0 LCB4cHJ0LT54cF9mZCwgeHBydC0+eHBfY2xudF9hZGRyLCB4cHJ0LT54cF9jbG50X3BvcnQpOwor IAkJCQlTVkNfREVTVFJPWSh4cHJ0KTsKKyAJCQkJY29kZSA9IEVJTlZBTDsKKyAJCQl9CitAQCAt MTMyMSw4ICsxMzUzLDggQEAKKyAJCQlyZXR1cm4gU1ZDX1NUQVQoeHBydCk7CisgCQl9CisgCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCistCQkJIiVzOiAlcCBmZCAlZCByZWN2IGVy cm5vICVkICh3aWxsIHNldCBkZWFkKSIsCistCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2Zk LCBjb2RlKTsKKysJCQkiJXM6ICVwIGZkICVkIHJlY3YgZXJybm8gJWQgKHdpbGwgc2V0IGRlYWQp IC0gY2xpZW50aXA6ICVzOiV1IiwKKysJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIGNv ZGUsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCVNWQ19ERVNU Uk9ZKHhwcnQpOworIAorIAkJWFBSVF9BVVRPX1RSQUNFUE9JTlQoeHBydCwgcmVjdl9lcnJvciwK K0BAIC0xMzMzLDggKzEzNjUsOCBAQAorIAorIAlpZiAodW5saWtlbHkoIXJsZW4pKSB7CisgCQlf X3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfU1ZDX1ZDLAorLQkJCSIlczogJXAgZmQgJWQgcmVjdiBj bG9zZWQgKHdpbGwgc2V0IGRlYWQpIiwKKy0JCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQp OworKwkJCSIlczogJXAgZmQgJWQgcmVjdiBjbG9zZWQgKHdpbGwgc2V0IGRlYWQpIC0gY2xpZW50 aXA6ICVzOiV1IiwKKysJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+eHBfZmQsIHhwcnQtPnhwX2Ns bnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCVNWQ19ERVNUUk9ZKHhwcnQpOworIAor IAkJWFBSVF9BVVRPX1RSQUNFUE9JTlQoeHBydCwgcmVjdl9jbG9zZWQsCitAQCAtMTM1OCw4ICsx MzkwLDggQEAKKyAJCWlmICh1bmxpa2VseShzdmNfcnFzdF9yZWFybV9ldmVudHMoeHBydCwKKyAJ CQkJCQkgICBTVkNfWFBSVF9GTEFHX0FEREVEX1JFQ1YpKSkgeworIAkJCV9fd2FybngoVElSUENf REVCVUdfRkxBR19FUlJPUiwKKy0JCQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVu dHMgZmFpbGVkICh3aWxsIHNldCBkZWFkKSIsCistCQkJCV9fZnVuY19fLCB4cHJ0LCB4cHJ0LT54 cF9mZCk7CisrCQkJCSIlczogJXAgZmQgJWQgc3ZjX3Jxc3RfcmVhcm1fZXZlbnRzIGZhaWxlZCAo d2lsbCBzZXQgZGVhZCkgLSBjbGllbnRpcDogJXM6JXUiLAorKwkJCQlfX2Z1bmNfXywgeHBydCwg eHBydC0+eHBfZmQsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJ CQlYUFJUX1VOSVFVRV9BVVRPX1RSQUNFUE9JTlQoeHBydCwgcmVhcm1fZmFpbGVkLAorIAkJCQlU UkFDRV9FUlIsICJSZWFybSBmYWlsZWQiKTsKKyAJCQlTVkNfREVTVFJPWSh4cHJ0KTsKK0BAIC0x Mzg1LDggKzE0MTcsOCBAQAorIAorIAlpZiAodW5saWtlbHkoc3ZjX3Jxc3RfcmVhcm1fZXZlbnRz KHhwcnQsIFNWQ19YUFJUX0ZMQUdfQURERURfUkVDVikpKSB7CisgCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVJST1IsCistCQkJIiVzOiAlcCBmZCAlZCBzdmNfcnFzdF9yZWFybV9ldmVudHMg ZmFpbGVkICh3aWxsIHNldCBkZWFkKSIsCistCQkJX19mdW5jX18sIHhwcnQsIHhwcnQtPnhwX2Zk KTsKKysJCQkiJXM6ICVwIGZkICVkIHN2Y19ycXN0X3JlYXJtX2V2ZW50cyBmYWlsZWQgKHdpbGwg c2V0IGRlYWQpIC0gY2xpZW50aXA6ICVzOiV1IiwKKysJCQlfX2Z1bmNfXywgeHBydCwgeHBydC0+ eHBfZmQsIHhwcnQtPnhwX2NsbnRfYWRkciwgeHBydC0+eHBfY2xudF9wb3J0KTsKKyAJCXhkcl9p b3FfZGVzdHJveSh4aW9xLCB4aW9xLT5pb3Ffcy5xc2l6ZSk7CisgCQlTVkNfREVTVFJPWSh4cHJ0 KTsKKyAKK2RpZmYgLXVyIG50aXJwYy03LjIvc3JjL3N2Y194cHJ0LmMgbnRpcnBjLTVjNzYxYmIx ODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3N2Y194cHJ0LmMKKy0tLSBudGly cGMtNy4yL3NyYy9zdmNfeHBydC5jCTIwMjUtMDktMjMgMTA6MDU6MTkuMDAwMDAwMDAwIC0wNDAw CisrKysgbnRpcnBjLTVjNzYxYmIxODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3Jj L3N2Y194cHJ0LmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC00MTQs MTEgKzQxNCwxNyBAQAorIAkJCQkJZ290byByZXN0YXJ0OworIAkJCQl9CisgCQkJfQorLQkJCS8q IElmIGV4aXRzIGVhcmxpZXIsIGNsZWFyIHRoZSBmbGFnIGV4cGxpY2l0bHkgKi8KKysJCQkvKgor KwkJCSAqIEdldCB0aGUgbmV4dCBub2RlIEJFRk9SRSByZWxlYXNpbmcgdGhlIHJlZmVyZW5jZS4K KysJCQkgKiBTVkNfUkVMRUFTRSBtYXkgdHJpZ2dlciBkZXN0cnVjdGlvbiBpZiByZWZjbnQgZHJv cHMKKysJCQkgKiB0byAwLCB3aGljaCBmcmVlcyB0aGUgbWVtb3J5LiBUaGUgbWVtb3J5IGNhbiBi ZQorKwkJCSAqIGltbWVkaWF0ZWx5IHJldXNlZCBieSBhbm90aGVyIHhwcnQgKHVzZS1hZnRlci1m cmVlKS4KKysJCQkgKi8KKysJCQluID0gb3ByX3JidHJlZV9uZXh0KG4pOworKwkJCS8qIE5vdyBz YWZlIHRvIHJlbGVhc2UgLSB3ZSBoYXZlIHRoZSBuZXh0IG5vZGUgKi8KKyAJCQlhdG9taWNfY2xl YXJfdWludDE2X3RfYml0cygKKyAJCQkJJnJlYy0+eHBydC54cF9mbGFncywgU1ZDX1hQUlRfVFJF RV9MT0NLRUQpOworIAkJCVNWQ19SRUxFQVNFKCZyZWMtPnhwcnQsIFNWQ19SRUxFQVNFX0ZMQUdf Tk9ORSk7CistCQkJbiA9IG9wcl9yYnRyZWVfbmV4dChuKTsKKyAJCX0JCS8qIGN1cnIgcGFydGl0 aW9uICovCisgCQlyd2xvY2tfdW5sb2NrKCZ0LT5sb2NrKTsgLyogdCAhTE9DS0VEICovCisgCQlw X2l4Kys7CitkaWZmIC11ciBudGlycGMtNy4yL3NyYy94ZHJfaW9xLmMgbnRpcnBjLTVjNzYxYmIx ODZlOWVhM2Y4YTViYWI3NzM0N2VlMTI5NzgyNTZiZDEvc3JjL3hkcl9pb3EuYworLS0tIG50aXJw Yy03LjIvc3JjL3hkcl9pb3EuYwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAor KysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy94 ZHJfaW9xLmMJMjAyNi0wNS0xOCAxOTo0MDoyMC4wMDAwMDAwMDAgLTA0MDAKK0BAIC0yNjAsNiAr MjYwLDcgQEAKKyAJCSAgICAmcmRtYV94cHJ0LT5sYXN0X2V4dHJhX2J1Zl9hbGxvY2F0aW9uX3Rp bWUpOworIAl9CisgCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsICJpbyBidWYgcmVm ICVwIHJlZnMgJWQiLCBpb19idWYsIGlvX2J1Zi0+cmVmcyk7CisgCXJldHVybiBhdG9taWNfaW5j X3VpbnQzMl90KCZpb19idWYtPnJlZnMpOworIH0KKyAKK0BAIC0yOTEsNyArMjkyLDcgQEAKKyB7 CisgCXN0cnVjdCBwb29scV9oZWFkICppb3FoID0gZ2V0X2RhdGFfcG9vbHFfaGVhZChpb19idWYs IHJkbWFfeHBydCk7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FVkVOVCwgIiVzOiBT dGFydCBzaHJpbmtpbmcgeHBydCAlcCAiCisrCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIs ICIlczogU3RhcnQgc2hyaW5raW5nIHhwcnQgJXAgIgorIAkgICAgImlvX2J1ZiAlcCByZWZzICVk IGlvcWggJXAgY291bnQgJWQiLAorIAkgICAgX19mdW5jX18sIHJkbWFfeHBydCwgaW9fYnVmLCBp b19idWYtPnJlZnMsIGlvcWgsCisgCSAgICBpb3FoLT5xY291bnQpOworQEAgLTM4NSw3ICszODYs NyBAQAorIAkJCXJkbWFfeHBydC0+aW9fYnVmc19jb3VudC0tOworIAkJCXJkbWFfeHBydC0+aW9f YnVmcy5xY291bnQtLTsKKyAKKy0JCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIl czogeHBydCAlcCBzaHJpbmsgIgorKwkJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsICIl czogeHBydCAlcCBzaHJpbmsgIgorIAkJCSAgICAiaW9fYnVmICVwIHJlZnMgJWQgaW9fYnVmcyBj b3VudCAlZCAlZCIsCisgCQkJICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIGlvX2J1ZiwgaW9fYnVm LT5yZWZzLAorIAkJCSAgICByZG1hX3hwcnQtPmlvX2J1ZnNfY291bnQsCitAQCAtNDAzLDYgKzQw NCw3IEBACisgCXN0cnVjdCBycGNfaW9fYnVmcyAqaW9fYnVmID0gZ2V0X3BhcmVudF9jaHVuayho YXZlKTsKKyAJdWludDMyX3QgcmVmcyA9IGF0b21pY19kZWNfdWludDMyX3QoJmlvX2J1Zi0+cmVm cyk7CisgCVJETUFYUFJUICpyZG1hX3hwcnQgPSAoUkRNQVhQUlQgKilpb19idWYtPmN0eDsKKysJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwgImlvIGJ1ZiB1bnJlZiAlcCByZWZzICVkIiwg aW9fYnVmLCBpb19idWYtPnJlZnMpOworIAorIAkvKiBDaGVjayBpZiBpdHMgb24gb24gZGVtYW5k IGFsbG9jYXRlZCBkYXRhIGJ1ZiAqLworIAlpZiAoaXNfc2hyaW5rX2J1Zihpb19idWYsIHJkbWFf eHBydCkpIHsKK0BAIC02NDgsNyArNjUwLDcgQEAKKyAJCQkgICAgaW9fYnVmLT5idWZmZXJfYWxp Z25lZCwgaW9fYnVmLT5idWZmZXJfdG90YWwpKTsKKyAJCQlpb19idWYtPm1yID0gTlVMTDsKKyAK Ky0JCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlcygpIEZyZWUgeHBydCAlcCBt ciAiCisrCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwgIiVzKCkgRnJlZSB4cHJ0ICVw IG1yICIKKyAJCQkgICAgImlvX2J1ZnMgJXAgc2l6ZSAldSBpb19idWYgJXAiLCBfX2Z1bmNfXywg cmRtYV94cHJ0LAorIAkJCSAgICBpb19idWYtPmJ1ZmZlcl9hbGlnbmVkLCBpb19idWYtPmJ1ZmZl cl90b3RhbCwgaW9fYnVmKTsKKyAKK0BAIC05OTgsMTIgKzEwMDAsMTIgQEAKKyAJfQorIAorIAkv KgorLQkgKiBTbWFsbCBSRE1BIFdyaXRlcworLQkgKiBJZiBkYXRhIGlzIGlubGluZSwgaXQgc2hv dWxkIGJlIHBhcnQgb2YgbmZzX2J1ZmZlciBpdHNlbGYuCistCSAqIFNvLCB0byBhdm9pZCB0aGUg SUxMRUdBTF9PUCwgc3RhcnQgc2hvdWxkIGFkdmFuY2UgYnkgZGF0YWxlbgorLQkgKiB0byBwaWNr IHRoZSBjb3JyZWN0IE9QIHdoaWxlIGRlY29kaW5nIHRoZSBDT01QT1VORCBvcHMuCisrCSAqIFNt YWxsIFJETUEgV3JpdGVzIChJbmxpbmUgUkRNQSkKKysJICogVGhlIHdyaXRlIGRhdGEgZml0cyBl bnRpcmVseSB3aXRoaW4gdGhlIGN1cnJlbnQgKE5GUyBoZWFkZXIpIFVWCisrCSAqIGF0IHRoZSBj dXJyZW50IFhEUiBwb3NpdGlvbi4gIFJldHVybiAnc3RhcnQnIHVuY2hhbmdlZCBzbyB0aGF0Cisr CSAqIFhEUl9GSUxMQlVGUyByZWFkcyB0aGUgYWN0dWFsIGRhdGEgYnl0ZXMuCisgCSAqLworLQly ZXR1cm4gc3RhcnQgKyBkYXRhbGVuOworKwlyZXR1cm4gc3RhcnQ7CisgCisgfQorIAorQEAgLTEw MjcsOSArMTAyOSwxNSBAQAorIAkgKiBuZXh0IG5mcyBoZWFkZXIgaW4gY29tcG91bmQgb3AuICov CisgCWlmIChkYXRhbGVuID4gKCh1aW50cHRyX3QpeGRycy0+eF92LnZpb190YWlsIC0gKHVpbnRw dHJfdCl4ZHJzLT54X2RhdGEpKSB7CisgCQlvZmZzZXQgPSAodWludHB0cl90KXhkcnMtPnhfdi52 aW9fdGFpbCAtICh1aW50cHRyX3QpeGRycy0+eF9kYXRhOworKwkJcmV0dXJuIHN0YXJ0IC0gb2Zm c2V0OworIAl9CisgCistCXJldHVybiBzdGFydCAtIG9mZnNldDsKKysJLyogSW5saW5lIFJETUE6 ICdzdGFydCcgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBkYXRhIGJ5dGUKKysJICogKGdl dHN0YXJ0ZGF0YXBvcyByZXR1cm5lZCBpdCB1bmNoYW5nZWQpLiAgJ2RhdGFsZW4nIGhlcmUgaXMK KysJICogUk5EVVAoZGF0YV9sZW4pLCBpLmUuIHRoZSBkYXRhIGJ5dGVzIHBsdXMgYW55IFhEUiBh bGlnbm1lbnQKKysJICogcGFkZGluZy4gIEFkdmFuY2UgcGFzdCBib3RoIHNvIHRoZSBkZWNvZGVy IGlzIHBvc2l0aW9uZWQgYXQKKysJICogdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNvbXBvdW5kIG9w LiAqLworKwlyZXR1cm4gc3RhcnQgKyBkYXRhbGVuOworIH0KKyAKKyBzdGF0aWMgYm9vbAorQEAg LTE4NTUsNyArMTg2Myw3IEBACisgCisgCXdoaWxlIChpZHggPCBpb3ZfY291bnQpIHsKKyAJCS8q IEFub3RoZXIgVFJBSUxFUiBidWZmZXIgdG8gbWFuYWdlICovCistCQl2aW9fdHlwZSB2dCA9IHZl Y3RvcltpZHhdLnZpb190eXBlOworKwkJdmlvX3R5cGVfdCB2dCA9IHZlY3RvcltpZHhdLnZpb190 eXBlOworIAorIAkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwKKyAJCQkiQ2FsbGluZyB4 ZHJfaW9xX3VzZV9vcl9hbGxvY2F0ZSBmb3IgaWR4ICVkIGZvciAlcyIsCitkaWZmIC11ciBudGly cGMtNy4yL3NyYy94ZHJfcmRtYS5jIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdl ZTEyOTc4MjU2YmQxL3NyYy94ZHJfcmRtYS5jCistLS0gbnRpcnBjLTcuMi9zcmMveGRyX3JkbWEu YwkyMDI1LTA5LTIzIDEwOjA1OjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJi MTg2ZTllYTNmOGE1YmFiNzczNDdlZTEyOTc4MjU2YmQxL3NyYy94ZHJfcmRtYS5jCTIwMjYtMDUt MTggMTk6NDA6MjAuMDAwMDAwMDAwIC0wNDAwCitAQCAtMjExLDE3ICsyMTEsMTggQEAKKyAJaW50 IHJldCA9IDA7CisgCWludDMyX3Qgd3JpdGVfd2FpdHMgPSBhdG9taWNfZGVjX2ludDMyX3QoJmNi Yy0+d3JpdGVfd2FpdHMpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSLAorLQkg ICAgIiVzKCkgJXBbJXVdIGNiYyAlcCBjYmNfcmVmICVkIHdyaXRlX3dhaXRzICVkXG4iLAorLQkg ICAgX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0ZSwgY2JjLAorLQkgICAgY2Jj LT5yZWZjbnQsIHdyaXRlX3dhaXRzKTsKKyAKKyAJaWYgKHJkbWFfeHBydC0+c21fZHIueHBydC54 cF9mbGFncyAmIFNWQ19YUFJUX0ZMQUdfREVTVFJPWUVEKSB7CistCQlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVJST1IsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisrCQlfX3dhcm54KFRJ UlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisgCQkg ICAgImNiY19yZWYgJWQgd3JpdGVfd2FpdHMgJWQgYWxyZWFkeSBkZXN0cm95ZWQiLAorIAkJICAg IF9fZnVuY19fLCByZG1hX3hwcnQsIGNiYywgY2JjLT5yZWZjbnQsIHdyaXRlX3dhaXRzKTsKKyAK KyAJCXJldCA9ICAtMTsKKysJfSBlbHNlIHsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19Y RFIsCisrCQkJIiVzKCkgJXBbJXVdIGNiYyAlcCBjYmNfcmVmICVkIHdyaXRlX3dhaXRzICVkXG4i LAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNiYywKKysJCQlj YmMtPnJlZmNudCwgd3JpdGVfd2FpdHMpOworIAl9CisgCisgCWNiY19yZWxlYXNlX2l0KGNiYyk7 CitAQCAtMjM1LDE3ICsyMzYsMTggQEAKKyAJaW50IHJldCA9IDA7CisgCWludCB3cml0ZV93YWl0 cyA9IGF0b21pY19kZWNfaW50MzJfdCgmY2JjLT53cml0ZV93YWl0cyk7CisgCistCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JICAgICIlcygpICVwWyV1XSBjYmMgJXAgcmVmcyAl ZCB3cml0ZV93YWl0cyAlZFxuIiwKKy0JICAgIF9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBy dC0+c3RhdGUsIGNiYywKKy0JICAgIGNiYy0+cmVmY250LCB3cml0ZV93YWl0cyk7CisgCisgCWlm IChyZG1hX3hwcnQtPnNtX2RyLnhwcnQueHBfZmxhZ3MgJiBTVkNfWFBSVF9GTEFHX0RFU1RST1lF RCkgeworLQkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VSUk9SLCAiICVzIHJkbWFfeHBydCAl cCBjYmMgJXAgIgorKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLCAiICVzIHJk bWFfeHBydCAlcCBjYmMgJXAgIgorIAkJICAgICJjYmNfcmVmICVkIHdyaXRlX3dhaXRzICVkIGFs cmVhZHkgZGVzdHJveWVkIiwKKyAJCSAgICBfX2Z1bmNfXywgcmRtYV94cHJ0LCBjYmMsIGNiYy0+ cmVmY250LCB3cml0ZV93YWl0cyk7CisgCisgCQlyZXQgPSAtMTsKKysJfSBlbHNlIHsKKysJCV9f d2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwKKysJCQkiJXMoKSAlcFsldV0gY2JjICVwIHJl ZnMgJWQgd3JpdGVfd2FpdHMgJWRcbiIsCisrCQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94 cHJ0LT5zdGF0ZSwgY2JjLAorKwkJCWNiYy0+cmVmY250LCB3cml0ZV93YWl0cyk7CisgCX0KKyAK KyAJY2JjX3JlbGVhc2VfaXQoY2JjKTsKK0BAIC0yNjAsMTUgKzI2MiwxNSBAQAorIHsKKyAJaW50 IHJldCA9IDA7CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFIsCistCQkiJXMoKSAl cFsldV0gY2JjICVwXG4iLAorLQkJX19mdW5jX18sIHJkbWFfeHBydCwgcmRtYV94cHJ0LT5zdGF0 ZSwgY2JjKTsKKy0KKyAJaWYgKHJkbWFfeHBydC0+c21fZHIueHBydC54cF9mbGFncyAmIFNWQ19Y UFJUX0ZMQUdfREVTVFJPWUVEKSB7CistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1Is ICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisrCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf WERSX1JETUEsICIgJXMgcmRtYV94cHJ0ICVwIGNiYyAlcCAiCisgCQkJImFscmVhZHkgZGVzdHJv eWVkIiwgX19mdW5jX18sIHJkbWFfeHBydCwgY2JjKTsKKyAKKyAJCXJldCA9IC0xOworKwl9IGVs c2UgeworKwkJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwKKysJCQkiJXMoKSAlcFsldV0g Y2JjICVwXG4iLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+c3RhdGUsIGNi Yyk7CisgCX0KKyAKKyAJeGRyX3JkbWFfY2FsbGJhY2tfc2lnbmFsKGNiYywgcmRtYV94cHJ0KTsK K0BAIC0yODMsMTUgKzI4NSwxNiBAQAorIHsKKyAJaW50IHJldCA9IDA7CisgCistCV9fd2Fybngo VElSUENfREVCVUdfRkxBR19FUlJPUiwKKy0JCSIlcygpICVwWyV1XSBjYmMgJXBcbiIsCistCQlf X2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMpOworLQorIAlpZiAocmRt YV94cHJ0LT5zbV9kci54cHJ0LnhwX2ZsYWdzICYgU1ZDX1hQUlRfRkxBR19ERVNUUk9ZRUQpIHsK Ky0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiAlcyByZG1hX3hwcnQgJXAgY2Jj ICVwICIKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiAlcyByZG1hX3hw cnQgJXAgY2JjICVwICIKKyAJCQkiYWxyZWFkeSBkZXN0cm95ZWQiLCBfX2Z1bmNfXywgcmRtYV94 cHJ0LCBjYmMpOworIAorIAkJcmV0ID0gLTE7CisrCX0gZWxzZSB7CisrCQlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJIiVzKCkgJXBbJXVdIGNiYyAlcFxuIiwKKysJCQlfX2Z1 bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMpOworKworIAl9CisgCisgCXhk cl9yZG1hX2NhbGxiYWNrX3NpZ25hbChjYmMsIHJkbWFfeHBydCk7CitAQCAtMzA4LDE1ICszMTEs MTYgQEAKKyB7CisgCWludCByZXQgPSAwOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdf RVJST1IsCistCQkiRXJyb3IgaW4gcmVjdiBjYWxsYmFjayAlcygpICVwWyV1XSBjYmMgJXBcbiIs CistCQlfX2Z1bmNfXywgcmRtYV94cHJ0LCByZG1hX3hwcnQtPnN0YXRlLCBjYmMpOworLQorIAlp ZiAocmRtYV94cHJ0LT5zbV9kci54cHJ0LnhwX2ZsYWdzICYgU1ZDX1hQUlRfRkxBR19ERVNUUk9Z RUQpIHsKKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiAlcyByZG1hX3hwcnQg JXAgY2JjICVwICIKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwgIiAlcyBy ZG1hX3hwcnQgJXAgY2JjICVwICIKKyAJCQkiYWxyZWFkeSBkZXN0cm95ZWQiLCBfX2Z1bmNfXywg cmRtYV94cHJ0LCBjYmMpOworIAorIAkJcmV0ID0gLTE7CisrCX0gZWxzZSB7CisrCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfRVJST1IsCisrCQkJIkVycm9yIGluIHJlY3YgY2FsbGJhY2sgJXMo KSAlcFsldV0gY2JjICVwXG4iLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQsIHJkbWFfeHBydC0+ c3RhdGUsIGNiYyk7CisrCisgCX0KKyAKKyAJY2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19SRUxF QVNFOworQEAgLTM1NSw2ICszNTksMzMgQEAKKyAKKyAJYXRvbWljX2RlY191aW50MzJfdCgmcmRt YV94cHJ0LT5hY3RpdmVfcmVxdWVzdHMpOworIAorKwlpZiAoKGVudW0geHBydF9zdGF0KXJldCA9 PSBYUFJUX1NVU1BFTkQpIHsKKysJCS8qCisrCQkgKiBUaGUgcmVxdWVzdCB3YXMgc3VzcGVuZGVk IG1pZC1jb21wb3VuZAorKwkJICogZS5nLiBRT1MgQlcgdGhyb3R0bGUsIGFzeW5jIElPIGJhY2tl bmQuCisrCQkgKiBObyBSRE1BIFdSSVRFL1NFTkQgb3BlcmF0aW9ucyBoYXZlIGJlZW4gcG9zdGVk CisrCQkgKiB5ZXQsIHNvIGNiYy0+cmVmY250IGlzIHN0aWxsIDEgKHNlbnRpbmVsIG9ubHkpLiAg UmVsZWFzaW5nCisrCQkgKiB0aGUgc2VudGluZWwgaGVyZSB3b3VsZCBkcm9wIHJlZmNudCB0byAw LCB3aGljaCB0cmlnZ2VycworKwkJICogeGRyX3JkbWFfaW9xX3JlbGVhc2UoJmNiYy0+ZGF0YXEp LCB6ZXJvaW5nIGRhdGFxLnFjb3VudCBhbmQKKysJCSAqIHJldHVybmluZyBkYXRhX2NodW5rX3V2 IHRvIHRoZSBwb29sIHdoaWxlIHRoZSBzdXNwZW5kZWQKKysJCSAqIHJlcXVlc3Qgc3RpbGwgaG9s ZHMgYSBwb2ludGVyIHRvIGl0LiAgVGhlIHN1YnNlcXVlbnQKKysJCSAqIHhkcl9yZG1hX3N2Y19m bHVzaG91dCBjYWxsIHdvdWxkIHRoZW4gaGl0OgorKwkJICogICBhc3NlcnQoZGF0YXEucWNvdW50 ID4gMCkgIGZpcmVzIHdpdGggcWNvdW50ID09IDAKKysJCSAqCisrCQkgKiBGaXg6IG1hcmsgRkxB R19SRUxFQVNFIChzbyBjbGVhbnVwIGZpcmVzIHdoZW4gcmVmcyBldmVudHVhbGx5CisrCQkgKiBy ZWFjaCAwKSBidXQgZGVmZXIgdGhlIHNlbnRpbmVsIGNiY19yZWxlYXNlX2l0IHRvCisrCQkgKiB4 ZHJfcmRtYV9zdmNfZmx1c2hvdXQsIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBSRE1BIG9wZXJhdGlv bnMKKysJCSAqIGFyZSBwb3N0ZWQgb24gdGhlIHJlc3VtZSBwYXRoIGFuZCB0aGVpciByZWZzIGtl ZXAgdGhlIGNiYworKwkJICogYWxpdmUuCisrCQkgKi8KKysJCV9fd2FybngoVElSUENfREVCVUdf RkxBR19YRFIsCisrCQkJIiVzIHJkbWFfeHBydCAlcCBjYmMgJXAgc3VzcGVuZGVkLCBkZWZlcnJp bmcgIgorKwkJCSJzZW50aW5lbCByZWxlYXNlIHRvIGZsdXNob3V0IiwKKysJCQlfX2Z1bmNfXywg cmRtYV94cHJ0LCBjYmMpOworKwkJY2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19SRUxFQVNFIHwg Q0JDX0ZMQUdfU0VOVElORUxfUEVORElORzsKKysJCXJldHVybiByZXQ7CisrCX0KKysKKyBlcnI6 CisgCWNiYy0+Y2JjX2ZsYWdzID0gQ0JDX0ZMQUdfUkVMRUFTRTsKKyAKK0BAIC00NjEsNiArNDky LDM1IEBACisgCXJldHVybiAwOworIH0KKyAKKysvKiBQb3N0IHN5bmNocm9ub3VzIFJETUEgcmVj ZWl2ZSBvcGVyYXRpb24gKi8KKytzdGF0aWMgaW50CisreGRyX3JkbWFfcG9zdF9yZWN2X3N5bmMo UkRNQVhQUlQgKnJkbWFfeHBydCwgc3RydWN0IHJwY19yZG1hX2NiYyAqY2JjLCBpbnQgc2dlKQor K3sKKysJY2JjLT5wb3NpdGl2ZV9jYiA9IHhkcl9yZG1hX3dyYXBfY2FsbGJhY2s7CisrCWNiYy0+ bmVnYXRpdmVfY2IgPSB4ZHJfcmRtYV9kZXN0cm95X2NhbGxiYWNrX3JlY3Y7CisrCWNiYy0+Y2Fs bGJhY2tfYXJnID0gTlVMTDsKKysJY2JjLT5jYWxsX2lubGluZSA9IDE7CisrCisrCVNWQ19SRUYo JnJkbWFfeHBydC0+c21fZHIueHBydCwgU1ZDX1JFRl9GTEFHX05PTkUpOworKworKwlpbnQgcmV0 ID0geGRyX3JkbWFfcG9zdF9yZWN2X24ocmRtYV94cHJ0LCBjYmMsIHNnZSk7CisrCisrCWlmIChy ZXQpIHsKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19FUlJPUiwgIiVzIHBvc3RfcmVjdiBm YWlsZWQgcmRtYV94cHJ0ICVwICIKKysJCQkiY2JjICVwIGVycm9yICVkIiwgX19mdW5jX18sIHJk bWFfeHBydCwgY2JjLCByZXQpOworKworKwkJY2JjLT5jYmNfZmxhZ3MgPSBDQkNfRkxBR19SRUxF QVNFOworKworKwkJLyogUmVsZWFzZSBzZW50aW5lbCByZWYgKi8KKysJCWNiY19yZWxlYXNlX2l0 KGNiYyk7CisrCisrCQlTVkNfREVTVFJPWSgmcmRtYV94cHJ0LT5zbV9kci54cHJ0KTsKKysJfQor KwlycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVyKHJkbWFfeHBydCwgMSk7CisrCisrCXJldHVybiBy ZXQ7CisrfQorKworIC8qKgorICAqIHhkcl9yZG1hX3Bvc3RfcmVjdl9jYjogUG9zdCByZWNlaXZl IGNodW5rKHMpIHdpdGggc3RhbmRhcmQgY2FsbGJhY2tzLgorICAqCitAQCAtNjU1LDYgKzcxNSwz OSBAQAorIAorIH0KKyAKKysvKiBQb3N0IHN5bmNocm9ub3VzIFJETUEgc2VuZCBvcGVyYXRpb24g d2l0aCBjYWxsYmFjayAqLworK3N0YXRpYyBpbmxpbmUgaW50CisreGRyX3JkbWFfc3luY19zZW5k X2NiKFJETUFYUFJUICpyZG1hX3hwcnQsIHN0cnVjdCBycGNfcmRtYV9jYmMgKmNiYywgaW50IHNn ZSkKKyt7CisrCWludCByZXQ7CisrCisrCWNiYy0+cG9zaXRpdmVfY2IgPSB4ZHJfcmRtYV9yZXNw b25kX2NhbGxiYWNrX3NlbmQ7CisrCWNiYy0+bmVnYXRpdmVfY2IgPSB4ZHJfcmRtYV9kZXN0cm95 X2NhbGxiYWNrX3NlbmQ7CisrCWNiYy0+Y2FsbGJhY2tfYXJnID0gTlVMTDsKKysJY2JjLT5jYWxs X2lubGluZSA9IDE7CisrCWludDMyX3Qgd3JpdGVfd2FpdHMgPSBhdG9taWNfaW5jX2ludDMyX3Qo JmNiYy0+d3JpdGVfd2FpdHMpOworKworKwljYmNfcmVmX2l0KGNiYywgcmRtYV94cHJ0KTsKKysK KysJcmV0ID0geGRyX3JkbWFfcG9zdF9zZW5kX24ocmRtYV94cHJ0LCBjYmMsIHNnZSwgTlVMTCwg SUJWX1dSX1NFTkQpOworKworKwlpZiAocmV0KSB7CisrCQl3cml0ZV93YWl0cyA9IGF0b21pY19k ZWNfaW50MzJfdCgmY2JjLT53cml0ZV93YWl0cyk7CisrCisrCQljYmNfcmVsZWFzZV9pdChjYmMp OworKworKwkJU1ZDX0RFU1RST1koJnJkbWFfeHBydC0+c21fZHIueHBydCk7CisrCisrCQkvKiBB c3N1bWluZyB0aGVyZSB3b24ndCBiZSBjYWxsYmFjayAqLworKwkJX193YXJueChUSVJQQ19ERUJV R19GTEFHX0VSUk9SLCAiJXM6IGZhaWxlZCByZXQgJWQgZXJyICVkIgorKwkJICAgICIgcmRtYV94 cHJ0ICVwIGNiYyAlcCBjYmNfcmVmICVkIHdyaXRlX3dhaXRzICVkIiwKKysJCSAgICBfX2Z1bmNf XywgcmV0LCBlcnJubywgcmRtYV94cHJ0LCBjYmMsIGNiYy0+cmVmY250LAorKwkJICAgIHdyaXRl X3dhaXRzKTsKKysJfQorKwlycGNfcmRtYV9jcV9ldmVudF9oYW5kbGVyKHJkbWFfeHBydCwgMik7 CisrCisrCXJldHVybiByZXQ7CisrfQorIC8qKgorICAqIFBvc3QgYSB3b3JrIGNodW5rIHdpdGgg c3RhbmRhcmQgY2FsbGJhY2tzLgorICAqCitAQCAtODg3LDggKzk4MCwxMCBAQAorIAorIC8qIHBv c3QgcmVjdiBidWZmZXJzICovCisgdm9pZAorLXhkcl9yZG1hX2NhbGxxKFJETUFYUFJUICpyZG1h X3hwcnQpCisreGRyX3JkbWFfY2FsbHEoUkRNQVhQUlQgKnJkbWFfeHBydCwgaW50IHN5bmMpCisg eworKwlpbnQgcmMgPSAwOworKworIAkvKiBHZXQgY29udGV4dCBidWYgZnJvbSBjYnFoIGFuZCBh ZGQgdG8gc21fZHIKKyAJICogcnBjX3JkbWFfYWxsb2NhdGUtPnhkcl9pb3Ffc2V0dXAoJnJkbWFf eHBydC0+c21fZHIuaW9xKTsKKyAJICogQ2hlY2sgaWYgd2UgaGF2ZSBjcmVkaXRzIGF2YWlsYWJs ZWQgZnJvbSBjYnFoCitAQCAtOTI3LDcgKzEwMjIsNyBAQAorIAorIAlwdGhyZWFkX211dGV4X2xv Y2soJnJkbWFfeHBydC0+Y2JjbGlzdC5xbXV0ZXgpOworIAorLQljYmMtPmNhbGxfaW5saW5lID0g MDsKKysJY2JjLT5jYWxsX2lubGluZSA9IHN5bmM7CisgCWNiYy0+ZGF0YV9jaHVua191diA9IE5V TEw7CisgCWNiYy0+cmVmY250ID0gMTsgLy8gU2VudGluZWwgcmVmCisgCWNiYy0+Y2JjX2ZsYWdz ID0gQ0JDX0ZMQUdfTk9ORTsKK0BAIC05NDEsOCArMTAzNiwxMyBAQAorIAlyZG1hX3hwcnQtPmNi Y2xpc3QucWNvdW50Kys7CisgCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZyZG1hX3hwcnQtPmNiY2xp c3QucW11dGV4KTsKKyAKKysJaWYgKHN5bmMpCisrCQlyYyA9IHhkcl9yZG1hX3Bvc3RfcmVjdl9z eW5jKHJkbWFfeHBydCwgY2JjLCAxKTsKKysJZWxzZQorKwkJcmMgPSB4ZHJfcmRtYV9wb3N0X3Jl Y3ZfY2IocmRtYV94cHJ0LCBjYmMsIDEpOworKworIAkvKiByZG1hX3hwcnQgcmVmIGlzIHRha2Vu IGJ5IHhkcl9yZG1hX3Bvc3RfcmVjdl9jYiAqLworLQlpZiAoeGRyX3JkbWFfcG9zdF9yZWN2X2Ni KHJkbWFfeHBydCwgY2JjLCAxKSkgeworKwlpZiAocmMpIHsKKyAJCSBfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfRVJST1IsICIlczogcmVjdiBmYWlsZWQgJXAiLAorIAkJCV9fZnVuY19fLCByZG1h X3hwcnQpOworIAl9CitAQCAtOTczLDcgKzEwNzMsNyBAQAorIAorIAkJZGF0YS0+cmRtYV91diA9 IDE7CisgCistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfUlBDX1JETUEsCisrCQlfX3dhcm54 KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkJIiVzKCkgcmVjdmJ1ZiBhdCAlcCBiYXNl ICVwIiwKKyAJCQlfX2Z1bmNfXywgZGF0YSwgYl9hZGRyKTsKKyAKK0BAIC0xMDQ3LDcgKzExNDcs NyBAQAorIAlyZG1hX3hwcnQtPmlvX2J1ZnNfY291bnQrKzsKKyAJcmRtYV94cHJ0LT5pb19idWZz LnFjb3VudCsrOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGlvIGJ1ZnMgY291bnQgJXUg aW9fYnVmICVwIHJkbWFfeHBydCAlcCIsCisgCQlfX2Z1bmNfXywgcmRtYV94cHJ0LT5pb19idWZz X2NvdW50LCBpb19idWYsIHJkbWFfeHBydCk7CisgCitAQCAtMTA3MSw3ICsxMTcxLDcgQEAKKyAJ aWYgKG1yKSB7CisgCQlhdG9taWNfYWRkX3VpbnQ2NF90KCZ0b3RhbF9yZG1hX3JlZ19tZW0sIGJ1 ZmZlcl90b3RhbCk7CisgCistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlczog dG90YWxfcmRtYV9yZWdfbWVtICVsbHUgcmVnaXN0ZXJlZCwgIgorKwkJX193YXJueChUSVJQQ19E RUJVR19GTEFHX1hEUl9SRE1BLCAiJXM6IHRvdGFsX3JkbWFfcmVnX21lbSAlbGx1IHJlZ2lzdGVy ZWQsICIKKyAJCSAgICAicmVnaXN0ZXJpbmcgZm9yIHhwcnQgJXAgbXIgJXAgYnVmZmVyX2FsaWdu ZWQgJXAgYnVmZmVyX3RvdGFsICV1IiwKKyAJCSAgICBfX2Z1bmNfXywgYXRvbWljX2ZldGNoX3Vp bnQ2NF90KCZ0b3RhbF9yZG1hX3JlZ19tZW0pLAorIAkJICAgIHJkbWFfeHBydCwgbXIsIGJ1ZmZl cl9hbGlnbmVkLCBidWZmZXJfdG90YWwpOworQEAgLTExMDQsNyArMTIwNCw3IEBACisgCX0gZWxz ZSB7CisgCQlhdG9taWNfc3ViX3VpbnQ2NF90KCZ0b3RhbF9yZG1hX3JlZ19tZW0sIGJ1ZmZlcl90 b3RhbCk7CisgCistCQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsICIlczogdG90YWxf cmRtYV9yZWdfbWVtICVsbHUgcmVnaXN0ZXJlZCwgIgorKwkJX193YXJueChUSVJQQ19ERUJVR19G TEFHX1hEUl9SRE1BLCAiJXM6IHRvdGFsX3JkbWFfcmVnX21lbSAlbGx1IHJlZ2lzdGVyZWQsICIK KyAJCSAgICAidW5yZWdpc3RlcmluZyBmb3IgeHBydCAlcCBtciAlcCBidWZmZXJfYWxpZ25lZCAl cCBidWZmZXJfdG90YWwgJXUiLAorIAkJICAgIF9fZnVuY19fLCBhdG9taWNfZmV0Y2hfdWludDY0 X3QoJnRvdGFsX3JkbWFfcmVnX21lbSksCisgCQkgICAgcmRtYV94cHJ0LCBtciwgYnVmZmVyX2Fs aWduZWQsIGJ1ZmZlcl90b3RhbCk7CitAQCAtMTEyMSw3ICsxMjIxLDcgQEAKKyAJdWludDMyX3Qg YnVmZmVyX3RvdGFsID0gcmRtYV94cHJ0LT5zbV9kci5zZW5kX2hkcl9zeiAqIGhkcl9xZGVwdGg7 CisgCXN0cnVjdCBycGNfaW9fYnVmcyAqaW9fYnVmID0gTlVMTDsKKyAKKy0JX193YXJueChUSVJQ Q19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEs CisgCQkiJXMoKSBidWZmZXJfdG90YWwgJWxsdSwgc2VuZHN6ICVsbHUgc3EgJWxsdSByZG1hX3hw cnQgJXAgcGFnZXN6ICVsbHUiLAorIAkJX19mdW5jX18sIGJ1ZmZlcl90b3RhbCwgcmRtYV94cHJ0 LT5zbV9kci5zZW5kX2hkcl9zeiwgaGRyX3FkZXB0aCwKKyAJCXJkbWFfeHBydCwgcmRtYV94cHJ0 LT5zbV9kci5wYWdlc3opOworQEAgLTExMzEsNyArMTIzMSw3IEBACisgCWFzc2VydChidWZmZXJf YWxpZ25lZCk7CisgCW1lbXNldChidWZmZXJfYWxpZ25lZCwgMCwgYnVmZmVyX3RvdGFsKTsKKyAK Ky0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVH X0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBwcm90ZWN0aW9u IGRvbWFpbiAlcCByZG1hX3hwcnQgJXAiLAorIAkJX19mdW5jX18sIGJ1ZmZlcl9hbGlnbmVkLCBy ZG1hX3hwcnQtPnBkLT5wZCwgcmRtYV94cHJ0KTsKKyAKK0BAIC0xMTU4LDcgKzEyNTgsNyBAQAor IAl1aW50MzJfdCBidWZmZXJfdG90YWwgPSByZG1hX3hwcnQtPnNtX2RyLnNlbmRzeiAqIGRhdGFf cWRlcHRoOworIAlzdHJ1Y3QgcnBjX2lvX2J1ZnMgKmlvX2J1ZiA9IE5VTEw7CisgCistCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19FVkVOVCwKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hE Ul9SRE1BLAorIAkJIiVzKCkgYnVmZmVyX3RvdGFsICVsbHUsIHNlbmRzeiAlbGx1IHNxICVsbHUg cmRtYV94cHJ0ICVwIHBhZ2VzeiAlbGx1IiwKKyAJCV9fZnVuY19fLCBidWZmZXJfdG90YWwsIHJk bWFfeHBydC0+c21fZHIuc2VuZHN6LCBkYXRhX3FkZXB0aCwKKyAJCXJkbWFfeHBydCwgcmRtYV94 cHJ0LT5zbV9kci5wYWdlc3opOworQEAgLTExNjgsNyArMTI2OCw3IEBACisgCWFzc2VydChidWZm ZXJfYWxpZ25lZCk7CisgCW1lbXNldChidWZmZXJfYWxpZ25lZCwgMCwgYnVmZmVyX3RvdGFsKTsK KyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RF QlVHX0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBwcm90ZWN0 aW9uIGRvbWFpbiAlcCByZG1hX3hwcnQgJXAiLAorIAkJX19mdW5jX18sIGJ1ZmZlcl9hbGlnbmVk LCByZG1hX3hwcnQtPnBkLT5wZCwgcmRtYV94cHJ0KTsKKyAKK0BAIC0xMTk1LDcgKzEyOTUsNyBA QAorIAl1aW50MzJfdCBidWZmZXJfdG90YWwgPSByZG1hX3hwcnQtPnNtX2RyLnJlY3ZfaGRyX3N6 ICogaGRyX3FkZXB0aDsKKyAJc3RydWN0IHJwY19pb19idWZzICppb19idWYgPSBOVUxMOworIAor LQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2FybngoVElSUENfREVCVUdf RkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl90b3RhbCAlbGx1LCByZWN2c3ogJWxsdSBy cSAlbGx1IHJkbWFfeHBydCAlcCBwYWdlc3ogJWxsdSIsCisgCQlfX2Z1bmNfXywgYnVmZmVyX3Rv dGFsLCByZG1hX3hwcnQtPnNtX2RyLnJlY3ZfaGRyX3N6LCBoZHJfcWRlcHRoLAorIAkJcmRtYV94 cHJ0LCByZG1hX3hwcnQtPnNtX2RyLnBhZ2Vzeik7CitAQCAtMTIwNSw3ICsxMzA1LDcgQEAKKyAJ YXNzZXJ0KGJ1ZmZlcl9hbGlnbmVkKTsKKyAJbWVtc2V0KGJ1ZmZlcl9hbGlnbmVkLCAwLCBidWZm ZXJfdG90YWwpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9fd2Fy bngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl9hbGlnbmVkIGF0 ICVwIHByb3RlY3Rpb24gZG9tYWluICVwIHJkbWFfeHBydCAlcCIsCisgCQlfX2Z1bmNfXywgYnVm ZmVyX2FsaWduZWQsIHJkbWFfeHBydC0+cGQtPnBkLCByZG1hX3hwcnQpOworIAorQEAgLTEyMzIs NyArMTMzMiw3IEBACisgCXVpbnQzMl90IGJ1ZmZlcl90b3RhbCA9IHJkbWFfeHBydC0+c21fZHIu cmVjdnN6ICogZGF0YV9xZGVwdGg7CisgCXN0cnVjdCBycGNfaW9fYnVmcyAqaW9fYnVmID0gTlVM TDsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBD X0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBidWZmZXJfdG90YWwgJWxsdSwgcmVjdnN6 ICVsbHUgcnEgJWxsdSByZG1hX3hwcnQgJXAgcGFnZXN6ICVsbHUiLAorIAkJX19mdW5jX18sIGJ1 ZmZlcl90b3RhbCwgcmRtYV94cHJ0LT5zbV9kci5yZWN2c3osIGRhdGFfcWRlcHRoLAorIAkJcmRt YV94cHJ0LCByZG1hX3hwcnQtPnNtX2RyLnBhZ2Vzeik7CitAQCAtMTI0Miw3ICsxMzQyLDcgQEAK KyAJYXNzZXJ0KGJ1ZmZlcl9hbGlnbmVkKTsKKyAJbWVtc2V0KGJ1ZmZlcl9hbGlnbmVkLCAwLCBi dWZmZXJfdG90YWwpOworIAorLQlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfRVZFTlQsCisrCV9f d2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCSIlcygpIGJ1ZmZlcl9hbGlnbmVk IGF0ICVwIHByb3RlY3Rpb24gZG9tYWluICVwIHJkbWFfeHBydCAlcCIsCisgCQlfX2Z1bmNfXywg YnVmZmVyX2FsaWduZWQsIHJkbWFfeHBydC0+cGQtPnBkLCByZG1hX3hwcnQpOworIAorQEAgLTEy OTcsNyArMTM5Nyw3IEBACisgCisgCXJkbWFfeHBydC0+YnVmZmVyX3RvdGFsID0gdGlycGNfYnVm Zl90b3RhbCArIHRvdGFsX2hkcl9zejsKKyAKKy0JX193YXJueChUSVJQQ19ERUJVR19GTEFHX0VW RU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisgCQkiJXMoKSBidWZm ZXJfdG90YWwgJWxsdSglbGx1ICsgJWxsdSksIHJkbWFfeHBydCAlcCBwYWdlc3ogJWxsdSAiCisg CQkicmVjdnN6IGRhdGEgJWxsdSBoZHIgJWxsdSBycSAlbGx1ICIKKyAJCSJzZW5kc3ogZGF0YSAl bGx1IGhkciAlbGx1IHNxICVsbHUiLAorQEAgLTEzMTEsNyArMTQxMSw3IEBACisgCWFzc2VydChy ZG1hX3hwcnQtPmJ1ZmZlcl9hbGlnbmVkKTsKKyAJbWVtc2V0KHJkbWFfeHBydC0+YnVmZmVyX2Fs aWduZWQsIDAsIHJkbWFfeHBydC0+YnVmZmVyX3RvdGFsKTsKKyAKKy0JX193YXJueChUSVJQQ19E RUJVR19GTEFHX0VWRU5ULAorKwlfX3dhcm54KFRJUlBDX0RFQlVHX0ZMQUdfWERSX1JETUEsCisg CQkiJXMoKSBidWZmZXJfYWxpZ25lZCBhdCAlcCBwcm90ZWN0aW9uIGRvbWFpbiAlcCByZG1hX3hw cnQgJXAiLAorIAkJX19mdW5jX18sIHJkbWFfeHBydC0+YnVmZmVyX2FsaWduZWQsIHJkbWFfeHBy dC0+cGQtPnBkLCByZG1hX3hwcnQpOworIAorQEAgLTEzNzAsMTggKzE0NzAsMTggQEAKKyAJICog d2UgY291bGQgaGF2ZSBtYXggY2JjcyByZXF1aXJlZCB3aWxsIGJlIGNhbGxxX3NpemUgKiAyICov CisgCWludCBjYWxscV9zaXplID0gTUFYX1JFQ1ZfT1VUU1RBTkRJTkcocmRtYV94cHJ0LT54YSk7 CisgCistCV9fd2FybngoVElSUENfREVCVUdfRkxBR19SUENfUkRNQSwgImNhbGxxIHNpemUgJWQi LCBjYWxscV9zaXplKTsKKysJX193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUl9SRE1BLCAiY2Fs bHEgc2l6ZSAlZCIsIGNhbGxxX3NpemUpOworIAorIAlwb29scV9oZWFkX3NldHVwKCZyZG1hX3hw cnQtPmNiY2xpc3QpOworIAorIAl3aGlsZSAocmRtYV94cHJ0LT5zbV9kci5pb3EuaW9xX3V2LnV2 cWgucWNvdW50IDwgY2FsbHFfc2l6ZSkgeworIAkJLyogUG9zdCBjYWxscV9zaXplIGJ1ZmZlcnMg dG8gZG8gZmlyc3QgcmVjdnMKKyAJCSAqIGNhbGxiYWNrIHdpbGwgYmUgZG9uZSBvbiByZWN2IHdo aWNoIHNob3VsZCByZWFyYW0gYWdhaW4gKi8KKy0JCV9fd2FybngoVElSUENfREVCVUdfRkxBR19S UENfUkRNQSwKKysJCV9fd2FybngoVElSUENfREVCVUdfRkxBR19YRFJfUkRNQSwKKyAJCQkiJXMo KSBxY291bnQgJWQgY2FsbHEgc2l6ZSAlZCIsCisgCQkJX19mdW5jX18sIHJkbWFfeHBydC0+c21f ZHIuaW9xLmlvcV91di51dnFoLnFjb3VudCwKKyAJCQljYWxscV9zaXplKTsKKy0JCXhkcl9yZG1h X2NhbGxxKHJkbWFfeHBydCk7CisrCQl4ZHJfcmRtYV9jYWxscShyZG1hX3hwcnQsIDApOworIAl9 CisgCisgCXJldHVybiAwOworQEAgLTE1MDUsNyArMTYwNSw3IEBACisgCWFzc2VydChjYmMtPndy aXRlX3dhaXRzID09IDApOworIAorIAkvKiBNYWludGFpbiBtYXhfb3V0c3RhbmRpbmcgKi8KKy0J eGRyX3JkbWFfY2FsbHEocmRtYV94cHJ0KTsKKysJeGRyX3JkbWFfY2FsbHEocmRtYV94cHJ0LCAw KTsKKyAKKyAJLyogR2V0IGluYnVmIGZyb20gcmVjdnEgKi8KKyAJY2JjLT5jYWxsX3V2ID0gSU9R XyhUQUlMUV9GSVJTVCgmY2JjLT5yZWN2cS5pb3FfdXYudXZxaC5xaCkpOworQEAgLTE4NzMsMTUg KzE5NzMsMTYgQEAKKyAJCWFsbG9jYXRlX2hlYWRlciA9IDE7CisgCisgCQlpZiAoYWxsb2NhdGVf aGVhZGVyKSB7CistCQkJaGF2ZSA9IHhkcl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5zZW5kcSwg JnJkbWFfeHBydC0+b3V0YnVmc19oZHIudXZxaCwKKy0JCQkJCSJzcmVwbHkgYnVmZmVyIiwgMSwg SU9RX0ZMQUdfTk9ORSk7CistCisrCQkJLyogV2l0aCBBQ0wgc3VwcG9ydCB3ZSBjb3VsZCBuZWVk IGJ1ZmZlcnMgPjhrICovCisrCQkJaGF2ZSA9IHhkcl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5z ZW5kcSwgJnJkbWFfeHBydC0+b3V0YnVmc19kYXRhLnV2cWgsCisrCQkJCSJzcmVwbHkgYnVmZmVy IiwgMSwgSU9RX0ZMQUdfTk9ORSk7CisgCisgCQkJLyogYnVmZmVyIGlzIGxpbWl0ZWQgc2l6ZSAq LworIAkJCUlPUV8oaGF2ZSktPnYudmlvX2hlYWQgPQorIAkJCUlPUV8oaGF2ZSktPnYudmlvX3Rh aWwgPSBJT1FfKGhhdmUpLT52LnZpb19iYXNlOworIAkJCUlPUV8oaGF2ZSktPnYudmlvX3dyYXAg PSAoY2hhciAqKUlPUV8oaGF2ZSktPnYudmlvX2Jhc2UKKy0JCQkJCSsgcmRtYV94cHJ0LT5zbV9k ci5zZW5kX2hkcl9zejsKKysJCQkJKyByZG1hX3hwcnQtPnNtX2RyLnNlbmRzejsKKysKKyAJCQkv KiBtYWtlIHJvb20gYXQgaGVhZCBmb3IgUkRNQSBoZWFkZXIgKi8KKyAJCQl4ZHJfaW9xX3Jlc2V0 KCZjYmMtPnNlbmRxLCAwKTsKKyAJCX0KK0BAIC0xOTAzLDE2ICsyMDA0LDM1IEBACisgCQkJCUlP UV8oaGF2ZSktPnYudmlvX3dyYXAgPSAoY2hhciAqKUlPUV8oaGF2ZSktPnYudmlvX2Jhc2UKKyAJ CQkJCSsgcmRtYV94cHJ0LT5zbV9kci5zZW5kX2hkcl9zejsKKyAJCQl9IGVsc2UgeworLQkJCQkv KiBGb3IgcmVwbHlfbGlzdCB3ZSBjb3B5IGZyb20gcHJvdG9jb2wgYnVmZmVyIHNvIGFsbG9jYXRl IGJpZ2dlcgorLQkJCQkgKiBjaHVuayAqLworLQkJCQlhc3NlcnQobCA8PSByZG1hX3hwcnQtPnNt X2RyLnNlbmRzeik7CisrCQkJCS8qIEZvciByZXBseV9saXN0IHdlIGNvcHkgZnJvbSBwcm90b2Nv bCBidWZmZXIgc28gYWxsb2NhdGUKKysJCQkJICogYmlnZ2VyIGNodW5rLgorKwkJCQkgKgorKwkJ CQkgKiBUaGUgY2xpZW50J3MgcmVwbHkgY2h1bmsgbGVuZ3RoIChsKSBjYW4gbGVnYWxseSBleGNl ZWQKKysJCQkJICogc2VuZHN6OiB0aGUgY2xpZW50IHByZS1yZWdpc3RlcnMgYSBidWZmZXIgb2Yg bWF4Y291bnQgKworKwkJCQkgKiBORlMgQ09NUE9VTkQgb3ZlcmhlYWQgKGEgZmV3IGh1bmRyZWQg Ynl0ZXMpLCBhbmQgd2hlbgorKwkJCQkgKiBtYXhjb3VudCA9PSBzZW5kc3ogKD0gUkRNQV9EQVRB X0NIVU5LX1NaID0gMSBNaUIpIHRoZQorKwkJCQkgKiB0b3RhbCBsID4gc2VuZHN6LgorKwkJCQkg KgorKwkJCQkgKiB2aW9fd3JhcCBpcyBzZXQgdG8gbWluKGwsIHNlbmRzeik6CisrCQkJCSAqIGwg PCBzZW5kc3o6IGhvbm91ciB0aGUgY2xpZW50J3MgYWN0dWFsIGNodW5rIGNhcGFjaXR5LgorKwkJ CQkgKiBsID49IHNlbmRzejogY2FwIGF0IHRoZSBwaHlzaWNhbCBidWZmZXIgc2l6ZSB0byBwcmV2 ZW50CisrCQkJCSAqIGEgc2VydmVyLXNpZGUgYnVmZmVyIG92ZXJmbG93ICh0aGUgb3ZlcmZsb3cg ZGF0YSBpcworKwkJCQkgKiBvbmx5IE5GUyBoZWFkZXIgYnl0ZXMsIGZhciBsZXNzIHRoYW4gc2Vu ZHN6KS4KKysJCQkJICoKKysJCQkJICogVGhlIFJETUEgV1JJVEUgc2l6ZSBpcyBkZXJpdmVkIGZy b20gaW9xdXZfbGVuZ3RoKCkgPQorKwkJCQkgKiB2aW9fdGFpbCAtIHZpb19oZWFkIChhY3R1YWwg Ynl0ZXMgd3JpdHRlbiBieSBYRFIpLCBuZXZlcgorKwkJCQkgKiBmcm9tIGwsIHNvIHRoZSB0cmFu c2ZlciBzdGF5cyB3aXRoaW4gYm90aCB0aGUgc2VydmVyIGJ1ZmZlcgorKwkJCQkgKiBhbmQgdGhl IGNsaWVudCdzIHByZS1yZWdpc3RlcmVkIHJlZ2lvbi4KKysJCQkJICovCisgCQkJCWhhdmUgPSB4 ZHJfcmRtYV9pb3FfdXZfZmV0Y2goJmNiYy0+c2VuZHEsICZyZG1hX3hwcnQtPm91dGJ1ZnNfZGF0 YS51dnFoLAorIAkJCQkgICAgInNyZXBseSBidWZmZXIiLCAxLCBJT1FfRkxBR19OT05FKTsKKyAK Ky0JCQkJLyogYnVmZmVyIGlzIGxpbWl0ZWQgc2l6ZSAqLworKwkJCQkvKiBidWZmZXIgaXMgbGlt aXRlZCB0byBtaW4obCwgc2VuZHN6KSAqLworIAkJCQlJT1FfKGhhdmUpLT52LnZpb19oZWFkID0K KyAJCQkJSU9RXyhoYXZlKS0+di52aW9fdGFpbCA9IElPUV8oaGF2ZSktPnYudmlvX2Jhc2U7Cist CQkJCUlPUV8oaGF2ZSktPnYudmlvX3dyYXAgPSAoY2hhciAqKUlPUV8oaGF2ZSktPnYudmlvX2Jh c2UgKyBsOworKwkJCQlJT1FfKGhhdmUpLT52LnZpb193cmFwID0gKGNoYXIgKilJT1FfKGhhdmUp LT52LnZpb19iYXNlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChsIDwg cmRtYV94cHJ0LT5zbV9kci5zZW5kc3oKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgID8gbCA6IHJkbWFfeHBydC0+c21fZHIuc2VuZHN6KTsKKyAJCQl9CisgCQl9CisgCQlp ZiAoIWFsbG9jYXRlX2hlYWRlcikKK0BAIC0xOTM4LDIxICsyMDU4LDIyIEBACisgYm9vbAorIHhk cl9yZG1hX2NsbnRfZmx1c2hvdXQoc3RydWN0IHJwY19yZG1hX2NiYyAqY2JjKQorIHsKKy0vKiBG SVhNRTogZGVjaWRlIGhvdyBtYW55IGJ1ZmZlcnMgd2UgdXNlIGluIGFyZ3VtZW50ISEhISEhICov CistI2RlZmluZSBudW1fY2h1bmtzIChyZG1hX3hwcnQtPnhhLT5jcmVkaXRzIC0gMSkKKy0KKy0J UkRNQVhQUlQgKnJkbWFfeHBydCA9IHhfcmRtYV94cHJ0KGNiYy0+cmVjdnEueGRycyk7CisrCVJE TUFYUFJUICpyZG1hX3hwcnQgPSB4X3JkbWFfeHBydChjYmMtPnNlbmRxLnhkcnMpOworIAlzdHJ1 Y3QgcnBjX21zZyAqbXNnOworIAlzdHJ1Y3QgcmRtYV9tc2cgKnJtc2c7CistCXN0cnVjdCB4ZHJf d3JpdGVfbGlzdCAqd19hcnJheTsKKyAJc3RydWN0IHhkcl9pb3FfdXYgKmhlYWRfdXY7CisgCXN0 cnVjdCB4ZHJfaW9xX3V2ICpob2xkX3V2OworLQlzdHJ1Y3QgcG9vbHFfZW50cnkgKmhhdmU7Cist CWludCBpID0gMDsKKyAKKysJLyogaG9sZCBORlMgcmVxdWVzdCAqLworIAlob2xkX3V2ID0gSU9R XyhUQUlMUV9GSVJTVCgmY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xaCkpOworKworKwlwdGhyZWFk X211dGV4X2xvY2soJmNiYy0+c2VuZHEuaW9xX3V2LnV2cWgucW11dGV4KTsKKysJVEFJTFFfUkVN T1ZFKCZjYmMtPnNlbmRxLmlvcV91di51dnFoLnFoLCAmaG9sZF91di0+dXZxLCBxKTsKKysJKGNi Yy0+c2VuZHEuaW9xX3V2LnV2cWgucWNvdW50KS0tOworKwlwdGhyZWFkX211dGV4X3VubG9jaygm Y2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xbXV0ZXgpOworKworIAltc2cgPSAoc3RydWN0IHJwY19t c2cgKikoaG9sZF91di0+di52aW9faGVhZCk7CistCXhkcl90YWlsX3VwZGF0ZShjYmMtPnJlY3Zx LnhkcnMpOworKwl4ZHJfdGFpbF91cGRhdGUoY2JjLT5zZW5kcS54ZHJzKTsKKyAKKyAJc3dpdGNo KG50b2hsKG1zZy0+cm1fZGlyZWN0aW9uKSkgeworIAkgICAgY2FzZSBDQUxMOgorQEAgLTE5NzAs MTQgKzIwOTEsMTEgQEAKKyAJCXJldHVybiAoZmFsc2UpOworIAl9CisgCistCWNiYy0+cmVjdnEu aW9xX3V2LnV2cV9mZXRjaCA9IHhkcl9yZG1hX2lvcV91dl9mZXRjaF9ub3RoaW5nOworKwljYmMt PnNlbmRxLmlvcV91di51dnFfZmV0Y2ggPSB4ZHJfcmRtYV9pb3FfdXZfZmV0Y2hfbm90aGluZzsK KyAKKy0JaGVhZF91diA9IElPUV8oeGRyX3JkbWFfaW9xX3V2X2ZldGNoKCZjYmMtPnJlY3ZxLCAm cmRtYV94cHJ0LT5vdXRidWZzX2RhdGEudXZxaCwKKysJaGVhZF91diA9IElPUV8oeGRyX3JkbWFf aW9xX3V2X2ZldGNoKCZjYmMtPnNlbmRxLCAmcmRtYV94cHJ0LT5vdXRidWZzX2hkci51dnFoLAor IAkJCQkJImNfaGVhZCBidWZmZXIiLCAxLCBJT1FfRkxBR19OT05FKSk7CisgCistCSh2b2lkKXhk cl9yZG1hX2lvcV91dl9mZXRjaCgmY2JjLT5zZW5kcSwgJnJkbWFfeHBydC0+aW5idWZzX2RhdGEu dXZxaCwKKy0JCQkJImNhbGwgYnVmZmVycyIsIG51bV9jaHVua3MsIElPUV9GTEFHX05PTkUpOwor LQorIAlybXNnID0gbV8oaGVhZF91di0+di52aW9faGVhZCk7CisgCXJtc2ctPnJkbWFfeGlkID0g bXNnLT5ybV94aWQ7CisgCXJtc2ctPnJkbWFfdmVycyA9IGh0b25sKFJQQ1JETUFfVkVSU0lPTik7 CitAQCAtMTk4NywzMSArMjEwNSwyNSBAQAorIAkvKiBubyByZWFkLCB3cml0ZSBjaHVua3MuICov CisgCXJtc2ctPnJkbWFfYm9keS5yZG1hX21zZy5yZG1hX3JlYWRzID0gMDsgLyogaHRvbmwoMCk7 ICovCisgCXJtc2ctPnJkbWFfYm9keS5yZG1hX21zZy5yZG1hX3dyaXRlcyA9IDA7IC8qIGh0b25s KDApOyAqLworLQorLQkvKiByZXBseSBjaHVuayAqLworLQl3X2FycmF5ID0gKHdsX3QgKikmcm1z Zy0+cmRtYV9ib2R5LnJkbWFfbXNnLnJkbWFfcmVwbHk7CistCXdfYXJyYXktPnByZXNlbnQgPSBo dG9ubCgxKTsKKy0Jd19hcnJheS0+ZWxlbWVudHMgPSBodG9ubChudW1fY2h1bmtzKTsKKy0KKy0J VEFJTFFfRk9SRUFDSChoYXZlLCAmY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5xaCwgcSkgeworLQkJ c3RydWN0IHhkcl9yZG1hX3NlZ21lbnQgKndfc2VnID0KKy0JCQkmd19hcnJheS0+ZW50cnlbaSsr XS50YXJnZXQ7CistCQl1aW50MzJfdCBsZW5ndGggPSBpb3F1dl9sZW5ndGgoSU9RXyhoYXZlKSk7 CistCistCQl3X3NlZy0+aGFuZGxlID0gaHRvbmwocmRtYV94cHJ0LT5tci0+cmtleSk7CistCQl3 X3NlZy0+bGVuZ3RoID0gaHRvbmwobGVuZ3RoKTsKKy0JCXhkcl9lbmNvZGVfaHlwZXIoKHVpbnQz Ml90Kikmd19zZWctPm9mZnNldCwKKy0JCQkJICh1aW50cHRyX3QpSU9RXyhoYXZlKS0+di52aW9f aGVhZCk7CistCX0KKysJcm1zZy0+cmRtYV9ib2R5LnJkbWFfbXNnLnJkbWFfcmVwbHkgPSAwOwor IAorIAloZWFkX3V2LT52LnZpb190YWlsID0gaGVhZF91di0+di52aW9faGVhZAorIAkJCQkrIHhk cl9yZG1hX2hlYWRlcl9sZW5ndGgocm1zZyk7CisgCisrCXB0aHJlYWRfbXV0ZXhfbG9jaygmY2Jj LT5zZW5kcS5pb3FfdXYudXZxaC5xbXV0ZXgpOworKwlUQUlMUV9JTlNFUlRfVEFJTCgmY2JjLT5z ZW5kcS5pb3FfdXYudXZxaC5xaCwgJmhvbGRfdXYtPnV2cSwgcSk7CisrCShjYmMtPnNlbmRxLmlv cV91di51dnFoLnFjb3VudCkrKzsKKysJcHRocmVhZF9tdXRleF91bmxvY2soJmNiYy0+c2VuZHEu aW9xX3V2LnV2cWgucW11dGV4KTsKKysKKyAJcnBjcmRtYV9kdW1wX21zZyhoZWFkX3V2LCAiY2xu dGhlYWQiLCBtc2ctPnJtX3hpZCk7CisgCXJwY3JkbWFfZHVtcF9tc2coaG9sZF91diwgImNsbnRj YWxsIiwgbXNnLT5ybV94aWQpOworIAorIAkvKiBhY3R1YWwgc2VuZCwgY2FsbGJhY2sgd2lsbCB0 YWtlIGNhcmUgb2YgY2xlYW51cCAqLworLQl4ZHJfcmRtYV9hc3luY19zZW5kX2NiKHJkbWFfeHBy dCwgY2JjLCAyKTsKKysJY2JjLT5oYXZlID0gVEFJTFFfRklSU1QoJmNiYy0+c2VuZHEuaW9xX3V2 LnV2cWgucWgpOworKwlpZiAocmRtYV94cHJ0LT5zaGFyZWQpCisrCQl4ZHJfcmRtYV9hc3luY19z ZW5kX2NiKHJkbWFfeHBydCwgY2JjLCAyKTsKKysJZWxzZQorKwkJeGRyX3JkbWFfc3luY19zZW5k X2NiKHJkbWFfeHBydCwgY2JjLCAyKTsKKyAJcmV0dXJuICh0cnVlKTsKKyB9CisgCitAQCAtMjIx MSw2ICsyMzIzLDcgQEAKKyAJCSAqIHByb3RvY29scyBhbmQgVUlPX0ZMQUdfUkVGRVIgd2lsbCBi ZSBzZXQuCisgCQkgKiBmaXJzdF9idWYgPSBuZnNfaGVhZGVyIGJ1ZiArIHJkbWFfd3JpdGUgYnVm cyAqLworIAkJaWYgKHJkbWFfYnVmX3VzZWQpIHsKKysJCQkvKiBkYXRhX2NodW5rIGJ1ZmZlciB3 aWxsIGJlIHNldCBieSB4X3B1dGJ1ZnMgdG8gdmlvX2hlYWQgKi8KKyAJCQlyZG1hX2J1Zl9hZGRy ID0gZmlyc3Rfc2VuZF9idWZfdXYtPnYudmlvX2hlYWQ7CisgCQkJcmRtYV9idWZfbGVuID0gaW9x dXZfbGVuZ3RoKGZpcnN0X3NlbmRfYnVmX3V2KTsKKyAJCQlpZiAoZmlyc3Rfc2VuZF9idWZfdXYt PnUudWlvX2ZsYWdzICYgVUlPX0ZMQUdfUkVGRVIpCitAQCAtMjI2Miw4ICsyMzc1LDEzIEBACisg CQkJdWludDMyX3QgbGVuZ3RoID0gbnRvaGwoY19zZWctPmxlbmd0aCk7CisgCQkJdWludDMyX3Qg bmZzX2hlYWRlcl9sZW4gPSBpb3F1dl9sZW5ndGgobmZzX2hlYWRlcl91dik7CisgCistCQkJYXNz ZXJ0KGxlbmd0aCA8PSByZG1hX3hwcnQtPnNtX2RyLnNlbmRzeik7CistCisrCQkJLyogRG8gbm90 IGFzc2VydCwgaWYgbGVuZ3RoID4gc2VuZHN6OiB0aGUgY2xpZW50IGNhbiBsZWdpdGltYXRlbHkK KysJCQkgKiBwcmUtcmVnaXN0ZXIgYSByZXBseSBjaHVuayBsYXJnZXIgdGhhbiBzZW5kc3ogKGUu Zy4gd2hlbgorKwkJCSAqIG1heGNvdW50IGVxdWFscyBzZW5kc3ogdGhlIHRvdGFsIGNodW5rIGlu Y2x1ZGVzIE5GUyBDT01QT1VORAorKwkJCSAqIG92ZXJoZWFkIHB1c2hpbmcgbCBhYm92ZSBzZW5k c3opLiBUaGUgYWN0dWFsIFJETUEgV1JJVEUgc2l6ZQorKwkJCSAqIGlzIHdyaXRlX2xlbiA9IG1p bihyZG1hX2J1Zl9sZW4sIGxlbmd0aCkgPD0gc2VuZHN6LCBzbyB0aGUKKysJCQkgKiB0cmFuc2Zl ciBpcyBhbHdheXMgd2l0aGluIHRoZSBzZXJ2ZXIncyByZWdpc3RlcmVkIGJ1ZmZlci4KKysJCQkg Ki8KKyAJCQkqd19zZWcgPSAqY19zZWc7CisgCisgCQkJX193YXJueChUSVJQQ19ERUJVR19GTEFH X1hEUiwKK0BAIC0yMzgzLDYgKzI1MDEsMjYgQEAKKyAJCXVpb19yZWZlci0+dWlvX3JlbGVhc2Uo dWlvX3JlZmVyLCBVSU9fRkxBR19OT05FKTsKKyAJfQorIAorKwkvKgorKwkgKiBSZWxlYXNlIHRo ZSBkZWZlcnJlZCBzZW50aW5lbCByZWYgd2hlbiB0aGUgcmVxdWVzdCB3YXMgc3VzcGVuZGVkCisr CSAqIGJ5IHdyYXBfY2FsbGJhY2sgKGUuZy4gUU9TLCBhc3luYyBJTykuIEluIHRoYXQgcGF0aCBD QkNfRkxBR19SRUxFQVNFCisrCSAqIHdhcyBzZXQgYnV0IGNiY19yZWxlYXNlX2l0IHdhcyBpbnRl bnRpb25hbGx5IHNraXBwZWQgdG8ga2VlcAorKwkgKiBjYmMtPmRhdGFxIGFsaXZlLiAgTm93IHRo YXQgYWxsIFJETUEgb3BlcmF0aW9ucyBoYXZlIGJlZW4gcG9zdGVkCisrCSAqICh0YWtpbmcgdGhl aXIgb3duIHJlZnMpLCBpdCBpcyBzYWZlIHRvIGRyb3AgdGhlIHNlbnRpbmVsLiAgVGhlCisrCSAq IGxhc3QgUkRNQSBjb21wbGV0aW9uIHdpbGwgdGhlbiBzZWUgcmVmY250PT0wIHdpdGggQ0JDX0ZM QUdfUkVMRUFTRQorKwkgKiBzZXQgYW5kIHRyaWdnZXIgdGhlIG5vcm1hbCBjYmMgY2xlYW51cC4K KysJICoKKysJICogRm9yIHRoZSBub3JtYWwgKG5vbi1zdXNwZW5kZWQpIHBhdGggQ0JDX0ZMQUdf U0VOVElORUxfUEVORElORyBpcworKwkgKiBuZXZlciBzZXQsIHNvIHRoaXMgaXMgYSBuby1vcC4K KysJICovCisrCWlmIChjYmMtPmNiY19mbGFncyAmIENCQ19GTEFHX1NFTlRJTkVMX1BFTkRJTkcp IHsKKysJCWNiYy0+Y2JjX2ZsYWdzICY9IH5DQkNfRkxBR19TRU5USU5FTF9QRU5ESU5HOworKwkJ X193YXJueChUSVJQQ19ERUJVR19GTEFHX1hEUiwKKysJCQkiJXMgcmRtYV94cHJ0ICVwIGNiYyAl cCByZWxlYXNpbmcgZGVmZXJyZWQgc2VudGluZWwiLAorKwkJCV9fZnVuY19fLCByZG1hX3hwcnQs IGNiYyk7CisrCQljYmNfcmVsZWFzZV9pdChjYmMpOworKwl9CisrCisgCV9fd2FybngoVElSUENf REVCVUdfRkxBR19YRFIsICIlczogY2JjICVwIHJlY3ZxICVwICVkIHNlbmRxICVwICVkIHJkbWFf eHBydCAlcCIsCisgCQlfX2Z1bmNfXywgY2JjLCAmY2JjLT5yZWN2cSwgY2JjLT5yZWN2cS5pb3Ff dXYudXZxaC5xY291bnQsICZjYmMtPnNlbmRxLAorIAkJY2JjLT5zZW5kcS5pb3FfdXYudXZxaC5x Y291bnQsIHJkbWFfeHBydCk7CitkaWZmIC11ciBudGlycGMtNy4yL3Rlc3RzL3JwY3BpbmcuYyBu dGlycGMtNWM3NjFiYjE4NmU5ZWEzZjhhNWJhYjc3MzQ3ZWUxMjk3ODI1NmJkMS90ZXN0cy9ycGNw aW5nLmMKKy0tLSBudGlycGMtNy4yL3Rlc3RzL3JwY3BpbmcuYwkyMDI1LTA5LTIzIDEwOjA1OjE5 LjAwMDAwMDAwMCAtMDQwMAorKysrIG50aXJwYy01Yzc2MWJiMTg2ZTllYTNmOGE1YmFiNzczNDdl ZTEyOTc4MjU2YmQxL3Rlc3RzL3JwY3BpbmcuYwkyMDI2LTA1LTE4IDE5OjQwOjIwLjAwMDAwMDAw MCAtMDQwMAorQEAgLTM0LDYgKzM0LDcgQEAKKyAjaW5jbHVkZSA8cnBjL3JwYy5oPgorICNpbmNs dWRlIDxycGMvc3ZjX2F1dGguaD4KKyAKKysKKyAjaW5jbHVkZSAibHR0bmcvbnRpcnBjX3RyYWNl cy5oIgorICNpZiBkZWZpbmVkKFVTRV9MVFROR19OVElSUEMpICYmICFkZWZpbmVkKExUVE5HX1BB UlNJTkcpCisgI2luY2x1ZGUgImx0dG5nL2dlbmVyYXRlZF90cmFjZXMvcnBjcGluZy5oIgorQEAg LTQ0LDYgKzQ1LDExIEBACisgc3RhdGljIHVpbnQzMl90IHJwY3BpbmdfdGhyZWFkczsKKyAKKyBz dGF0aWMgc3RydWN0IHRpbWVzcGVjIHRvID0gezMwLCAwfTsKKyt0eXBlZGVmIGVudW0geworKwlU Q1AgPSAxLAorKwlSRE1BID0gMiwKKysJUkFXID0gMworK30gcHJvdG9fdDsKKyAKKyBzdHJ1Y3Qg c3RhdGUgeworIAlDTElFTlQgKmhhbmRsZTsKK0BAIC01Myw2ICs1OSw3IEBACisgCXN0cnVjdCB0 aW1lc3BlYyBzdG9wcGluZzsKKyAJaW50IGNvdW50OworIAlpbnQgcHJvYzsKKysJcHJvdG9fdCBw cm90bzsKKyAJaW50IGlkOworIAl1aW50MzJfdCBmYWlsdXJlczsKKyAJdWludDMyX3QgcmVzcG9u c2VzOworQEAgLTE4Myw5ICsxOTAsMTEgQEAKKyAJCX0KKyAJfQorIAorLQlwdGhyZWFkX211dGV4 X2xvY2soJnMtPnNfbXV0ZXgpOworLQlwdGhyZWFkX2NvbmRfd2FpdCgmcy0+c19jb25kLCAmcy0+ c19tdXRleCk7CistCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzLT5zX211dGV4KTsKKysJaWYgKHMt PnByb3RvICE9IFJETUEpIHsKKysJCXB0aHJlYWRfbXV0ZXhfbG9jaygmcy0+c19tdXRleCk7Cisr CQlwdGhyZWFkX2NvbmRfd2FpdCgmcy0+c19jb25kLCAmcy0+c19tdXRleCk7CisrCQlwdGhyZWFk X211dGV4X3VubG9jaygmcy0+c19tdXRleCk7CisrCX0KKyAJY2xvY2tfZ2V0dGltZShDTE9DS19N T05PVE9OSUMsICZzLT5zdG9wcGluZyk7CisgCisgCWlmIChhdG9taWNfZGVjX3VpbnQzMl90KCZy cGNwaW5nX3RocmVhZHMpID4gMCkgeworQEAgLTI1NCw5ICsyNjMsMTMgQEAKKyAJaW50IHByb2Mg PSAwOworIAlpbnQgc2VuZF9zeiA9IDgxOTI7CisgCWludCByZWN2X3N6ID0gODE5MjsKKysjaWZk ZWYgVVNFX1JQQ19SRE1BCisrCWludCBwYWdlX3N6ID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOwor KyNlbmRpZgorIAl1bnNpZ25lZCBpbnQgZmFpbHVyZXMgPSAwOworIAl1bnNpZ25lZCBpbnQgdGlt ZW91dHMgPSAwOworIAlib29sIHJwY2JpbmQgPSBmYWxzZTsKKysJcHJvdG9fdCBwcm90b191c2Vk ID0gMDsKKyAKKyAJTlRJUlBDX0FVVE9fVFJBQ0VQT0lOVChycGNwaW5nLCB0ZXN0LCBUUkFDRV9J TkZPLCAiQm9vIik7CisgCitAQCAtMzM0LDcgKzM0Nyw4IEBACisgCQkJCQkgICAiY2xudF9uY3Jl YXRlIGZhaWxlZCIpOworIAkJCQlleGl0KDIpOworIAkJCX0KKy0JCX0gZWxzZSB7CisrCQl9IGVs c2UgaWYgKHN0cmNtcChwcm90bywgInJkbWEiKSkgeworKwkJCXByb3RvX3VzZWQgPSBUQ1A7Cisg CQkJLyogY29ubmVjdCB0byBob3N0OnBvcnQgKi8KKyAJCQlzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFn ZSBzczsKKyAJCQlzdHJ1Y3QgbmV0YnVmIHJhZGRyID0geworQEAgLTM1Niw3ICszNzAsMjYgQEAK KyAJCQkJCSAgICJjbG50X25jcmVhdGUgZmFpbGVkIik7CisgCQkJCWV4aXQoNCk7CisgCQkJfQor KwkJfSBlbHNlIHsKKysJCQlwcm90b191c2VkID0gUkRNQTsKKysJCQlpbnQgZmQgPSBnZXRfY29u bl9mZChob3N0LCBwb3J0KTsKKysJCQlpZiAoZmQgPD0gMCkgeworKwkJCQlwZXJyb3IoImdldF9j b25uX2ZkIGZhaWxlZCIpOworKwkJCQlleGl0KDMpOworKwkJCX0KKysjaWZkZWYgVVNFX1JQQ19S RE1BCisrCQkJY2xudCA9IGNsbnRfcmRtYV9jcmVhdGUoZmQsIGhvc3QsIDIwMDQ5LCByZWN2X3N6 LAorKwkJCSAgICBzZW5kX3N6LCBwYWdlX3N6LCBwcm9nLCB2ZXJzLCBDTE5UX0NSRUFURV9GTEFH X0NMT1NFKTsKKysJCQlpZiAoQ0xOVF9GQUlMVVJFKGNsbnQpKSB7CisrCQkJCXJwY19wZXJyb3Io JmNsbnQtPmNsX2Vycm9yLCAiY2xudF9yZG1hX2NyZWF0ZSBmYWlsZWQiKTsKKysJCQkJZXhpdCg0 KTsKKysJCQl9CisrI2Vsc2UKKysJCQlwZXJyb3IoInJkbWEgbm90IGVuYWJsZWQiKTsKKysJCQll eGl0KDQpOworKyNlbmRpZgorIAkJfQorKworIAkJcyA9ICZzdGF0ZXNbaV07CisgCQljbG50LT5j bF91MSA9IHM7CisgCitAQCAtMzY0LDYgKzM5Nyw3IEBACisgCQlzLT5pZCA9IGk7CisgCQlzLT5j b3VudCA9IGNvdW50OworIAkJcy0+cHJvYyA9IHByb2M7CisrCQlzLT5wcm90byA9IHByb3RvX3Vz ZWQ7CisgCQlwdGhyZWFkX2NyZWF0ZSgmdCwgTlVMTCwgd29ya2VyLCBzKTsKKyAJfQorIAoKZGlm ZiAtLWdpdCBhLzM1Mi5wYXRjaCBiLzM1Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZTkzMWRjYy4uMDAwMDAwMAotLS0gYS8zNTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw0MCArMCwwIEBACi1Gcm9tIDZkNDA0Y2ZiYTViMDZlZWI2MmQ5NjVhNWM3ODMxN2FiNjAxZmNi NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDcmlzdGlhbiBMZSA8Z2l0QGxlY3Jp cy5kZXY+Ci1EYXRlOiBUaHUsIDE3IEp1bCAyMDI1IDEyOjUzOjIyICswMjAwCi1TdWJqZWN0OiBb UEFUQ0hdIEJ1bXAgQ01ha2UgcG9saWNpZXMKLQotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCA4ICsr Ky0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK LQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDAx ZmU1M2FlMS4uZTZhMWQwM2Y4IDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NN YWtlTGlzdHMudHh0Ci1AQCAtMiw3ICsyLDcgQEAKLSAKLSAjIEN1cnJlbnQgdmVyc2lvbiBhcyBv ZiBGZWRvcmEgMTYuICBOb3QgdGVzdGVkIHdpdGggZWFybGllci4KLSAKLS1jbWFrZV9taW5pbXVt X3JlcXVpcmVkKFZFUlNJT04gMi42LjMpCi0rY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9O IDIuNi4uLjQuMCkKLSAKLSBzZXQoQ01BS0VfTU9EVUxFX1BBVEggJHtDTUFLRV9NT0RVTEVfUEFU SH0gIiR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcy8iKQotIAotQEAgLTMxMiwxNSAr MzEyLDEzIEBAIHNldCggUEtHX05BTUUgIiR7Q1BBQ0tfUEFDS0FHRV9OQU1FfS0ke0NQQUNLX1BB Q0tBR0VfVkVSU0lPTn0udGFyLmd6IikKLSBlbmRpZiAoTk9UIFRBUkdFVCBkaXN0KQotIAotIGlm IChOT1QgVEFSR0VUIHJwbSkKLS1hZGRfY3VzdG9tX3RhcmdldCggcnBtIERFUEVORFMgZGlzdCkK LS1hZGRfY3VzdG9tX2NvbW1hbmQoVEFSR0VUIHJwbQotK2FkZF9jdXN0b21fdGFyZ2V0KCBycG0K LSAgICAgICAgICAgICAgICAgICBDT01NQU5EIHNoIC1jICJycG1idWlsZCAtdGEgJHtQS0dfTkFN RX0iCi0gCQkgIFZFUkJBVElNCi0gCQkgIERFUEVORFMgZGlzdCkKLSAKLSBzZXQoUlBNREVTVCAi LS1kZWZpbmUgJ19zcmNycG1kaXIgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9JyIpCi0tYWRk X2N1c3RvbV90YXJnZXQoIHNycG0gREVQRU5EUyBkaXN0KQotLWFkZF9jdXN0b21fY29tbWFuZChU QVJHRVQgc3JwbQotK2FkZF9jdXN0b21fdGFyZ2V0KCBzcnBtCi0gICAgICAgICAgICAgICAgICAg Q09NTUFORCBzaCAtYyAicnBtYnVpbGQgJHtSUE1ERVNUfSAtdHMgJHtQS0dfTkFNRX0iCi0gCQkg IFZFUkJBVElNCi0gCQkgIERFUEVORFMgZGlzdCkKCmRpZmYgLS1naXQgYS9saWJudGlycGMuc3Bl YyBiL2xpYm50aXJwYy5zcGVjCmluZGV4IGY4MzhkMTQuLjVjZjg4Y2UgMTAwNjQ0Ci0tLSBhL2xp Ym50aXJwYy5zcGVjCisrKyBiL2xpYm50aXJwYy5zcGVjCkBAIC0zLDcgKzMsNyBAQAogCiBOYW1l OgkJbGlibnRpcnBjCiBWZXJzaW9uOgk3LjIKLVJlbGVhc2U6CTElez9kZXY6JXtkZXZ9fSV7P2Rp c3R9CitSZWxlYXNlOgkyJXs/ZGV2OiV7ZGV2fX0lez9kaXN0fQogU3VtbWFyeToJTmV3IFRyYW5z cG9ydCBJbmRlcGVuZGVudCBSUEMgTGlicmFyeQogTGljZW5zZToJQlNELTMtQ2xhdXNlCiBVcmw6 CQlodHRwczovL2dpdGh1Yi5jb20vbmZzLWdhbmVzaGEvbnRpcnBjCkBAIC0xMiw3ICsxMiw3IEBA IFVybDoJCWh0dHBzOi8vZ2l0aHViLmNvbS9uZnMtZ2FuZXNoYS9udGlycGMKICVnbG9iYWwgcHJv bWV0aF92ZXJfc2hvcnQJNDhkMDljNDUKIFNvdXJjZTA6CWh0dHBzOi8vZ2l0aHViLmNvbS9uZnMt Z2FuZXNoYS9udGlycGMvYXJjaGl2ZS92JXt2ZXJzaW9ufS9udGlycGMtJXt2ZXJzaW9ufSV7P2Rl djole2Rldn19LnRhci5negogU291cmNlMToJaHR0cHM6Ly9naXRodWIuY29tL2JpYWtzL3Byb21l dGhldXMtY3BwLWxpdGUvYXJjaGl2ZS8le3Byb21ldGhfdmVyX2xvbmd9L3Byb21ldGhldXMtY3Bw LWxpdGUtJXtwcm9tZXRoX3Zlcl9zaG9ydH0udGFyLmd6Ci1QYXRjaDoJCTAwMDEtQ01ha2VMaXN0 cy50eHQucGF0Y2gKK1BhdGNoOgkJMDAwMi03LjJwbHVzLnBhdGNoCiAKIEJ1aWxkUmVxdWlyZXM6 CWNtYWtlIGdjYyBnY2MtYysrCiAlaWZhcmNoIHg4Nl82NCBhYXJjaDY0CkBAIC05NSw2ICs5NSwx MCBAQCBsbiAtcyAle25hbWV9LnNvLiV7dmVyc2lvbn0gJXtidWlsZHJvb3R9JXtfbGliZGlyfS8l e25hbWV9LnNvLjcKICV7X2xpYmRpcn0vcGtnY29uZmlnL2xpYm50aXJwYy5wYwogCiAlY2hhbmdl bG9nCisqIEZyaSBKdW4gMTIgMjAyNiBLYWxlYiBTLiBLRUlUSExFWSA8a2tlaXRobGUgYXQgcmVk aGF0LmNvbT4gNy4yLTIKKy0gbnRpcnBjLTcuMiwgbnRpcnBjIGRpZCBub3QgdGFnL3JlbGVhc2Ug cmVxdWlyZWQgdXBkYXRlcyBmb3IKKyAgZ2FuZXNoYS04LjEgYW5kIGxhdGVyCisKICogVHVlIFNl cCAzMCAyMDI1IEthbGViIFMuIEtFSVRITEVZIDxra2VpdGhsZSBhdCByZWRoYXQuY29tPiA3LjIt MQogLSBudGlycGMtNy4yIEdBCiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRl eCA5ZTE5NDI3Li5iMjU3NDVkIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAg LTEsMyArMSwyIEBACi1TSEE1MTIgKG50aXJwYy03LjAudGFyLmd6KSA9IGI0ZTVjNjllNDY5ODgz NzRhNjZiODZmNmMzM2UyNDFiMWQ3MzI1YzI3ZWNjYTE3NGM3YjE1NjBlM2Q5Y2ExNzRhYjYzM2Y1 MWIzYjNlMTg1Mjg2N2MxZTYyMTAwY2Y4NGRjOTAzMWY0OWQyMjkyYmIzNjRkMzFhY2YwYjU3MDNm CiBTSEE1MTIgKHByb21ldGhldXMtY3BwLWxpdGUtNDhkMDljNDUudGFyLmd6KSA9IGFlNzE5OWM1 Y2MyNjViZTEwYjgyMDQ2YWMxMGZhNDM4ZGIyNzk3YWQ5ODIxMTYzY2UzZjVlMmMyN2NjMDE2NTNi M2E4MjNiNTNjYjFhZWNiN2RjYzZkMThjMGYxNjkzMzUxMDQ3N2U4Y2VlNDM3ZDBhN2EyMjQ4MjBj YTVmZWJjCiBTSEE1MTIgKG50aXJwYy03LjIudGFyLmd6KSA9IDlkNDA3NWRiNzFhOTUxMTQzMDli ZGQzM2I2MDI1YTBjOWI4MDVhZWZiMGI5MmI4NTQ0Mzk1OTIwYmI0NDAyYTFjNWJhZWVlNjdmMzQ2 NmIwNmM0NGFiYjFhZmFiMjhmODg5YTk5ZjEwN2NhMGFkNjY3OThhMDk2YzU2NGJkNzM4Cg==