ZGlmZiAtLWdpdCBhL2F1dG8vY2MvYmNjIGIvYXV0by9jYy9iY2MKaW5kZXggYTc2YjY4Zi4uNGI4ODEyOSAxMDA2NDQKLS0tIGEvYXV0by9jYy9iY2MKKysrIGIvYXV0by9jYy9iY2MKQEAgLTM0LDEwICszNCwxMCBAQAogCiAKICMgcHJlY29tcGlsZWQgaGVhZGVycwotQ09SRV9ERVBTPSIkQ09SRV9ERVBTICRPQkpTL25neF9jb25maWcuY3NtIgotTkdYX1BDSD0iJE9CSlMvbmd4X2NvbmZpZy5jc20iCi1OR1hfQlVJTERfUENIPSItSD0kT0JKUy9uZ3hfY29uZmlnLmNzbSIKLU5HWF9VU0VfUENIPSItSHUgLUg9JE9CSlMvbmd4X2NvbmZpZy5jc20iCitDT1JFX0RFUFM9IiRDT1JFX0RFUFMgJE5HWF9PQkpTL25neF9jb25maWcuY3NtIgorTkdYX1BDSD0iJE5HWF9PQkpTL25neF9jb25maWcuY3NtIgorTkdYX0JVSUxEX1BDSD0iLUg9JE5HWF9PQkpTL25neF9jb25maWcuY3NtIgorTkdYX1VTRV9QQ0g9Ii1IdSAtSD0kTkdYX09CSlMvbmd4X2NvbmZpZy5jc20iCiAKIAogIyBXaW4zMiBHVUkgbW9kZSBhcHBsaWNhdGlvbgpAQCAtNDUsMTEgKzQ1LDExIEBACiAKIAogIyB0aGUgcmVzb3VyY2UgZmlsZQotTkdYX1JFUz0iJE9CSlMvbmdpbngucmVzIgotTkdYX1JDQz0iYnJjYzMyIC1mbyRPQkpTL25naW54LnJlcyBcJChDT1JFX0lOQ1MpICROR1hfV0lOMzJfUkMiCitOR1hfUkVTPSIkTkdYX09CSlMvbmdpbngucmVzIgorTkdYX1JDQz0iYnJjYzMyIC1mbyROR1hfT0JKUy9uZ2lueC5yZXMgXCQoQ09SRV9JTkNTKSAkTkdYX1dJTjMyX1JDIgogIyB0aGUgcHJhZ21hIGFsbG93cyB0byBsaW5rIHRoZSByZXNvdXJjZSBmaWxlIHVzaW5nIGJjYzMyIGFuZAogIyB0byBhdm9pZCB0aGUgZGlyZWN0IGlsaW5rMzIgY2FsbGluZyBhbmQgdGhlIGMwdzMyLm9iaidzIFdpbk1haW4vbWFpbiBwcm9ibGVtCi1OR1hfUFJBR01BPSIjcHJhZ21hIHJlc291cmNlIFwiJE9CSlMvbmdpbngucmVzXCIiCitOR1hfUFJBR01BPSIjcHJhZ21hIHJlc291cmNlIFwiJE5HWF9PQkpTL25naW54LnJlc1wiIgogCiAKIG5neF9pbmNsdWRlX29wdD0iLUkiCmRpZmYgLS1naXQgYS9hdXRvL2NjL2NvbmYgYi9hdXRvL2NjL2NvbmYKaW5kZXggYzFmNTc3ZS4uMGE1ZGI5ZSAxMDA2NDQKLS0tIGEvYXV0by9jYy9jb25mCisrKyBiL2F1dG8vY2MvY29uZgpAQCAtOTIsMTEgKzkyLDExIEBACiBDRkxBR1M9IiRDRkxBR1MgJE5HWF9DQ19PUFQiCiAKIAotaWYgWyAiJFBMQVRGT1JNIiAhPSB3aW4zMiBdOyB0aGVuCitpZiBbICIkTkdYX1BMQVRGT1JNIiAhPSB3aW4zMiBdOyB0aGVuCiAKICAgICBpZiB0ZXN0IC1uICIkTkdYX0xEX09QVCI7IHRoZW4KICAgICAgICAgbmd4X2ZlYXR1cmU9LS13aXRoLWxkLW9wdD1cIiROR1hfTERfT1BUXCIKLSAgICAgICAgbmd4X2ZlYXR1cmVfbmFtZT0iRFVNTVkiCisgICAgICAgIG5neF9mZWF0dXJlX25hbWU9CiAgICAgICAgIG5neF9mZWF0dXJlX3J1bj1ubwogICAgICAgICBuZ3hfZmVhdHVyZV9pbmNzPQogICAgICAgICBuZ3hfZmVhdHVyZV9saWJzPQpAQCAtMTExLDcgKzExMSw3IEBACiAgICAgZmkKIAogICAgIG5neF9mZWF0dXJlPSJnY2MgdmFyaWFkaWMgbWFjcm9zIgotICAgIG5neF9mZWF0dXJlX25hbWU9IkhBVkVfR0NDX1ZBUklBRElDX01BQ1JPUyIKKyAgICBuZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9HQ0NfVkFSSUFESUNfTUFDUk9TIgogICAgIG5neF9mZWF0dXJlX3J1bj15ZXMKICAgICBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3RkaW8uaD4KICNkZWZpbmUgdmFyKGR1bW15LCBhcmdzLi4uKSAgc3ByaW50ZihhcmdzKSIKQEAgLTEyMyw3ICsxMjMsNyBAQAogCiAKICAgICBuZ3hfZmVhdHVyZT0iQzk5IHZhcmlhZGljIG1hY3JvcyIKLSAgICBuZ3hfZmVhdHVyZV9uYW1lPSJIQVZFX0M5OV9WQVJJQURJQ19NQUNST1MiCisgICAgbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfQzk5X1ZBUklBRElDX01BQ1JPUyIKICAgICBuZ3hfZmVhdHVyZV9ydW49eWVzCiAgICAgbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN0ZGlvLmg+CiAjZGVmaW5lIHZhcihkdW1teSwgLi4uKSBzcHJpbnRmKF9fVkFfQVJHU19fKSIKQEAgLTEzNSw3ICsxMzUsNyBAQAogCiAKICMgICAgbmd4X2ZlYXR1cmU9ImlubGluZSIKLSMgICAgbmd4X2ZlYXR1cmVfbmFtZT0iRFVNTVkiCisjICAgIG5neF9mZWF0dXJlX25hbWU9CiAjICAgIG5neF9mZWF0dXJlX3J1bj1ubwogIyAgICBuZ3hfZmVhdHVyZV9pbmNzPSJpbnQgaW5saW5lIGYodm9pZCkgeyByZXR1cm4gMSB9IgogIyAgICBuZ3hfZmVhdHVyZV9saWJzPQpkaWZmIC0tZ2l0IGEvYXV0by9jYy9pY2MgYi9hdXRvL2NjL2ljYwppbmRleCA4OWM2ZjM1Li5hMzJlZWM0IDEwMDY0NAotLS0gYS9hdXRvL2NjL2ljYworKysgYi9hdXRvL2NjL2ljYwpAQCAtMTgsNyArMTgsNyBAQAogSVBPPSItaXBvIC1pcG9fb2JqIgogQ0ZMQUdTPSIkQ0ZMQUdTICRJUE8iCiBDT1JFX0xJTks9IiRDT1JFX0xJTksgJElQTyIKLUNPUkVfTElOSz0iJENPUkVfTElOSyAtb3B0X3JlcG9ydF9maWxlPSRPQkpTL29wdF9yZXBvcnRfZmlsZSIKK0NPUkVfTElOSz0iJENPUkVfTElOSyAtb3B0X3JlcG9ydF9maWxlPSROR1hfT0JKUy9vcHRfcmVwb3J0X2ZpbGUiCiAKIGNhc2UgJENQVSBpbgogICAgIHBlbnRpdW0pCmRpZmYgLS1naXQgYS9hdXRvL2NjL21zdmMgYi9hdXRvL2NjL21zdmMKaW5kZXggODI3MmNhYy4uMGZhMWEyYyAxMDA2NDQKLS0tIGEvYXV0by9jYy9tc3ZjCisrKyBiL2F1dG8vY2MvbXN2YwpAQCAtNzcsMTUgKzc3LDE1IEBACiAKICMgcHJlY29tcGlsZWQgaGVhZGVycwogaWYgWyAkTkdYX0NDX05BTUUgIT0gbXN2YzcgXTsgdGhlbgotICAgIENPUkVfREVQUz0iJENPUkVfREVQUyAkT0JKUy9uZ3hfY29uZmlnLnBjaCIKLSAgICBOR1hfUENIPSIkT0JKUy9uZ3hfY29uZmlnLnBjaCIKLSAgICBOR1hfQlVJTERfUENIPSItWWNuZ3hfY29uZmlnLmggLUZwJE9CSlMvbmd4X2NvbmZpZy5wY2giCi0gICAgTkdYX1VTRV9QQ0g9Ii1ZdW5neF9jb25maWcuaCAtRnAkT0JKUy9uZ3hfY29uZmlnLnBjaCIKKyAgICBDT1JFX0RFUFM9IiRDT1JFX0RFUFMgJE5HWF9PQkpTL25neF9jb25maWcucGNoIgorICAgIE5HWF9QQ0g9IiROR1hfT0JKUy9uZ3hfY29uZmlnLnBjaCIKKyAgICBOR1hfQlVJTERfUENIPSItWWNuZ3hfY29uZmlnLmggLUZwJE5HWF9PQkpTL25neF9jb25maWcucGNoIgorICAgIE5HWF9VU0VfUENIPSItWXVuZ3hfY29uZmlnLmggLUZwJE5HWF9PQkpTL25neF9jb25maWcucGNoIgogZmkKIAogCiAjIHRoZSByZXNvdXJjZSBmaWxlCi1OR1hfUkVTPSIkT0JKUy9uZ2lueC5yZXMiCitOR1hfUkVTPSIkTkdYX09CSlMvbmdpbngucmVzIgogTkdYX1JDQz0icmMgLWZvJE5HWF9SRVMgXCQoQ09SRV9JTkNTKSAkTkdYX1dJTjMyX1JDIgogQ09SRV9MSU5LPSIkTkdYX1JFUyAkQ09SRV9MSU5LIgogCmRpZmYgLS1naXQgYS9hdXRvL2NjL293YyBiL2F1dG8vY2Mvb3djCmluZGV4IDc4OWZmYWQuLjg4ZmZkYjEgMTAwNjQ0Ci0tLSBhL2F1dG8vY2Mvb3djCisrKyBiL2F1dG8vY2Mvb3djCkBAIC02MywxMCArNjMsMTAgQEAKIAogCiAjIHRoZSBwcmVjb21waWxlZCBoZWFkZXJzIAotQ09SRV9ERVBTPSIkQ09SRV9ERVBTICRPQkpTL25neF9jb25maWcucGNoIgotTkdYX1BDSD0iJE9CSlMvbmd4X2NvbmZpZy5wY2giCi1OR1hfQlVJTERfUENIPSItZmhxPSRPQkpTL25neF9jb25maWcucGNoIgotTkdYX1VTRV9QQ0g9Ii1maD0kT0JKUy9uZ3hfY29uZmlnLnBjaCIKK0NPUkVfREVQUz0iJENPUkVfREVQUyAkTkdYX09CSlMvbmd4X2NvbmZpZy5wY2giCitOR1hfUENIPSIkTkdYX09CSlMvbmd4X2NvbmZpZy5wY2giCitOR1hfQlVJTERfUENIPSItZmhxPSROR1hfT0JKUy9uZ3hfY29uZmlnLnBjaCIKK05HWF9VU0VfUENIPSItZmg9JE5HWF9PQkpTL25neF9jb25maWcucGNoIgogCiAKIExJTks9IlwkKENDKSIKQEAgLTc2LDcgKzc2LDggQEAKIAogCiAjIHRoZSByZXNvdXJjZSBmaWxlCi1OR1hfUkNDPSJ3cmMgXCQoQ09SRV9JTkNTKSAtZm89JE9CSlMvbmdpbngucmVzICROR1hfV0lOMzJfUkMgJE9CSlMvbmdpbnguZXhlIgorTkdYX1JDQz0id3JjIFwkKENPUkVfSU5DUykgLWZvPSROR1hfT0JKUy9uZ2lueC5yZXMgIgorTkdYX1JDQz0iJE5HWF9SQ0MgJE5HWF9XSU4zMl9SQyAkTkdYX09CSlMvbmdpbnguZXhlIgogCiAKIG5neF9pbmNsdWRlX29wdD0iLWk9IgpkaWZmIC0tZ2l0IGEvYXV0by9jb25maWd1cmUgYi9hdXRvL2NvbmZpZ3VyZQppbmRleCBkNWNjN2UwLi4wY2QxN2VhIDEwMDc1NQotLS0gYS9hdXRvL2NvbmZpZ3VyZQorKysgYi9hdXRvL2NvbmZpZ3VyZQpAQCAtNywyNiArNywyNiBAQAogLiBhdXRvL2luaXQKIC4gYXV0by9zb3VyY2VzCiAKLXRlc3QgLWQgJE9CSlMgfHwgbWtkaXIgJE9CSlMKK3Rlc3QgLWQgJE5HWF9PQkpTIHx8IG1rZGlyICROR1hfT0JKUwogCiBlY2hvID4gJE5HWF9BVVRPX0hFQURFUlNfSAogZWNobyA+ICROR1hfQVVUT19DT05GSUdfSAogZWNobyA+ICROR1hfQVVUT0NPTkZfRVJSCiAKIAotaWYgWyAkREVCVUcgPSBZRVMgXTsgdGhlbgoraWYgWyAkTkdYX0RFQlVHID0gWUVTIF07IHRoZW4KICAgICBoYXZlPU5HWF9ERUJVRyAuIGF1dG8vaGF2ZQogZmkKIAogCi1pZiBbICIkUExBVEZPUk0iICE9IHdpbjMyIF07IHRoZW4KK2lmIFsgIiROR1hfUExBVEZPUk0iICE9IHdpbjMyIF07IHRoZW4KICAgICAuIGF1dG8vaGVhZGVycwogZmkKIAogLiBhdXRvL2NjL2NvbmYKIC4gYXV0by9vcy9jb25mCiAKLWlmIFsgIiRQTEFURk9STSIgIT0gd2luMzIgXTsgdGhlbgoraWYgWyAiJE5HWF9QTEFURk9STSIgIT0gd2luMzIgXTsgdGhlbgogICAgIC4gYXV0by90aHJlYWRzCiBmaQogCkBAIC0zNywyMSArMzcsMjEgQEAKIC4gYXV0by9saWIvbWFrZQogLiBhdXRvL2luc3RhbGwKIAotaWYgWyAiJFBMQVRGT1JNIiAhPSB3aW4zMiBdOyB0aGVuCitpZiBbICIkTkdYX1BMQVRGT1JNIiAhPSB3aW4zMiBdOyB0aGVuCiAgICAgLiBhdXRvL3VuaXgKIGZpCiAKICMgU1RVQgogLiBhdXRvL3N0dWJzCiAKLWhhdmU9TkdYX1BSRUZJWCB2YWx1ZT0iXCIkUFJFRklYL1wiIiAuIGF1dG8vZGVmaW5lCi1oYXZlPU5HWF9TQklOX1BBVEggdmFsdWU9IlwiJFNCSU5fUEFUSFwiIiAuIGF1dG8vZGVmaW5lCi1oYXZlPU5HWF9DT05GX1BBVEggdmFsdWU9IlwiJENPTkZfUEFUSFwiIiAuIGF1dG8vZGVmaW5lCi1oYXZlPU5HWF9QSURfUEFUSCB2YWx1ZT0iXCIkUElEX1BBVEhcIiIgLiBhdXRvL2RlZmluZQotaWYgWyAiLiRFUlJPUl9MT0dfUEFUSCIgIT0gIi4iIF07IHRoZW4KLSAgICBoYXZlPU5HWF9FUlJPUl9MT0dfUEFUSCB2YWx1ZT0iXCIkRVJST1JfTE9HX1BBVEhcIiIgLiBhdXRvL2RlZmluZQoraGF2ZT1OR1hfUFJFRklYIHZhbHVlPSJcIiROR1hfUFJFRklYL1wiIiAuIGF1dG8vZGVmaW5lCitoYXZlPU5HWF9TQklOX1BBVEggdmFsdWU9IlwiJE5HWF9TQklOX1BBVEhcIiIgLiBhdXRvL2RlZmluZQoraGF2ZT1OR1hfQ09ORl9QQVRIIHZhbHVlPSJcIiROR1hfQ09ORl9QQVRIXCIiIC4gYXV0by9kZWZpbmUKK2hhdmU9TkdYX1BJRF9QQVRIIHZhbHVlPSJcIiROR1hfUElEX1BBVEhcIiIgLiBhdXRvL2RlZmluZQoraWYgdGVzdCAtbiAiJE5HWF9FUlJPUl9MT0dfUEFUSCI7IHRoZW4KKyAgICBoYXZlPU5HWF9FUlJPUl9MT0dfUEFUSCB2YWx1ZT0iXCIkTkdYX0VSUk9SX0xPR19QQVRIXCIiIC4gYXV0by9kZWZpbmUKIGZpCi1oYXZlPU5HWF9IVFRQX0xPR19QQVRIIHZhbHVlPSJcIiRIVFRQX0xPR19QQVRIXCIiIC4gYXV0by9kZWZpbmUKK2hhdmU9TkdYX0hUVFBfTE9HX1BBVEggdmFsdWU9IlwiJE5HWF9IVFRQX0xPR19QQVRIXCIiIC4gYXV0by9kZWZpbmUKIAogaGF2ZT1OR1hfVVNFUiB2YWx1ZT0iXCIkTkdYX1VTRVJcIiIgLiBhdXRvL2RlZmluZQogaGF2ZT1OR1hfR1JPVVAgdmFsdWU9IlwiJE5HWF9HUk9VUFwiIiAuIGF1dG8vZGVmaW5lCmRpZmYgLS1naXQgYS9hdXRvL2VuZGlhbmVzcyBiL2F1dG8vZW5kaWFuZXNzCmluZGV4IDY0MGI0NjUuLjU3OGRkNDUgMTAwNjQ0Ci0tLSBhL2F1dG8vZW5kaWFuZXNzCisrKyBiL2F1dG8vZW5kaWFuZXNzCkBAIC0yNSw3ICsyNSw3IEBACiBpZiBbIC14ICROR1hfQVVUT1RFU1QgXTsgdGhlbgogICAgIGlmICROR1hfQVVUT1RFU1QgMj4mMSA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICBlY2hvICIgbGl0dGxlIGVuZGlhbmVzcyIKLSAgICAgICAgaGF2ZT1IQVZFX0xJVFRMRV9FTkRJQU4gLiBhdXRvL2hhdmUKKyAgICAgICAgaGF2ZT1OR1hfSEFWRV9MSVRUTEVfRU5ESUFOIC4gYXV0by9oYXZlCiAgICAgZWxzZQogICAgICAgICBlY2hvICIgYmlnIGVuZGlhbmVzcyIKICAgICBmaQpkaWZmIC0tZ2l0IGEvYXV0by9mZWF0dXJlIGIvYXV0by9mZWF0dXJlCmluZGV4IDQxMGY1MzkuLjBmYmJlODQgMTAwNjQ0Ci0tLSBhL2F1dG8vZmVhdHVyZQorKysgYi9hdXRvL2ZlYXR1cmUKQEAgLTE0LDkgKzE0LDcgQEAKIG5neF9mb3VuZD1ubwogCiBpZiB0ZXN0IC1uICIkbmd4X2ZlYXR1cmVfbmFtZSI7IHRoZW4KLSAgICBuZ3hfaGF2ZV9mZWF0dXJlPWBlY2hvIE5HWF8kbmd4X2ZlYXR1cmVfbmFtZSB8IHRyICdbYS16XScgJ1tBLVpdJ2AKLSAgICAjIFNUVUIKLSAgICBuZ3hfaGF2ZV9mZWF0dXJlMD1gZWNobyBIQVZFXyRuZ3hfZmVhdHVyZV9uYW1lIHwgdHIgJ1thLXpdJyAnW0EtWl0nYAorICAgIG5neF9oYXZlX2ZlYXR1cmU9YGVjaG8gJG5neF9mZWF0dXJlX25hbWUgfCB0ciAnW2Etel0nICdbQS1aXSdgCiBmaQogCiBjYXQgPDwgRU5EID4gJE5HWF9BVVRPVEVTVC5jCkBAIC01MSwxMSArNDksNiBAQAogICAgICAgICAgICAgICAgaGF2ZT0kbmd4X2hhdmVfZmVhdHVyZSAuIGF1dG8vaGF2ZQogICAgICAgICAgICBmaQogCi0gICAgICAgICAgICNTVFVCCi0gICAgICAgICAgIGlmIHRlc3QgLW4gIiRuZ3hfZmVhdHVyZV9uYW1lIjsgdGhlbgotICAgICAgICAgICAgICAgaGF2ZT0kbmd4X2hhdmVfZmVhdHVyZTAgLiBhdXRvL2hhdmUKLSAgICAgICAgICAgZmkKLQogICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiIGZvdW5kIGJ1dCBpcyBub3Qgd29ya2luZyIKICAgICAgICBmaQpAQCAtNjgsMTEgKzYxLDYgQEAKICAgICAgICAgICAgaGF2ZT0kbmd4X2hhdmVfZmVhdHVyZSAuIGF1dG8vaGF2ZQogICAgICAgIGZpCiAKLSAgICAgICAjU1RVQgotICAgICAgIGlmIHRlc3QgLW4gIiRuZ3hfZmVhdHVyZV9uYW1lIjsgdGhlbgotICAgICAgICAgICBoYXZlPSRuZ3hfaGF2ZV9mZWF0dXJlMCAuIGF1dG8vaGF2ZQotICAgICAgIGZpCi0KICAgICBmaQogCiBlbHNlCmRpZmYgLS1naXQgYS9hdXRvL2Z1bmMgYi9hdXRvL2Z1bmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MGQ2MzQuLjAwMDAwMDAKLS0tIGEvYXV0by9mdW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jIENvcHlyaWdodCAoQykgSWdvciBTeXNvZXYKLQotCi1lY2hvICRuZ3hfbiAiY2hlY2tpbmcgZm9yICRuZ3hfZnVuYyAuLi4iICRuZ3hfYwotZWNobyA+PiAkTkdYX0VSUgotZWNobyAiY2hlY2tpbmcgZm9yICRuZ3hfZnVuYyIgPj4gJE5HWF9FUlIKLQotbmd4X2ZvdW5kPW5vCi0KLWZ1bmM9YGVjaG8gJG5neF9mdW5jIHwgc2VkIC1lICdzLygpJC8vJyB8IHRyICdbYS16XScgJ1tBLVpdJ2AKLQotY2F0IDw8IEVORCA+ICROR1hfQVVUT1RFU1QuYwotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0kTkdYX1VOSVNURF9ICi0kbmd4X2Z1bmNfaW5jCi0KLWludCBtYWluKCkgewotICAgICRuZ3hfZnVuY190ZXN0OwotICAgIHJldHVybiAwOwotfQotCi1FTkQKLQotdGVzdD0iJENDX1dBUk4gJENDX1RFU1RfRkxBR1MgLW8gJE5HWF9BVVRPVEVTVCAkTkdYX0FVVE9URVNULmMgJG5neF9mdW5jX2xpYnMiCi1ldmFsICIkdGVzdCA+PiAkTkdYX0VSUiAyPiYxIgotCi1pZiBbIC14ICROR1hfQVVUT1RFU1QgXTsgdGhlbgotICAgIGVjaG8gIiBmb3VuZCIKLSAgICBoYXZlPUhBVkVfJGZ1bmMgLiBhdXRvL2hhdmUKLSAgICBuZ3hfZm91bmQ9eWVzCi0KLWVsc2UKLSAgICBlY2hvICIgbm90IGZvdW5kIgotICAgIGVjaG8gIi0tLS0tLS0tLSIgPj4gJE5HWF9FUlIKLSAgICBjYXQgJE5HWF9BVVRPVEVTVC5jID4+ICROR1hfRVJSCi0gICAgZWNobyAiLS0tLS0tLS0tIiA+PiAkTkdYX0VSUgotICAgIGVjaG8gJHRlc3QgPj4gJE5HWF9FUlIKLSAgICBlY2hvICItLS0tLS0tLS0iID4+ICROR1hfRVJSCi1maQotCi1ybSAkTkdYX0FVVE9URVNUKgpkaWZmIC0tZ2l0IGEvYXV0by9pbml0IGIvYXV0by9pbml0CmluZGV4IDA4MGNjMjguLjBiMzNjM2IgMTAwNjQ0Ci0tLSBhL2F1dG8vaW5pdAorKysgYi9hdXRvL2luaXQKQEAgLTEyLDkgKzEyLDggQEAKIE5HWF9BVVRPQ09ORl9FUlI9JE5HWF9PQkpTL2F1dG9jb25mLmVycgogCiAjIFNUVUJzCi1PQkpTPSROR1hfT0JKUwotTkdYX0VSUj0kT0JKUy9hdXRvY29uZi5lcnIKLU1BS0VGSUxFPSRPQkpTL01ha2VmaWxlCitOR1hfRVJSPSROR1hfT0JKUy9hdXRvY29uZi5lcnIKK01BS0VGSUxFPSROR1hfT0JKUy9NYWtlZmlsZQogCiAKIE5HWF9QQ0g9CkBAIC01NCw5ICs1Myw5IEBACiAJcm0gLXJmIE1ha2VmaWxlICROR1hfT0JKUwogCiB1cGdyYWRlOgotCSRTQklOX1BBVEggLXQKLQlraWxsIC1VU1IyIFxgY2F0ICRQSURfUEFUSFxgCisJJE5HWF9TQklOX1BBVEggLXQKKwlraWxsIC1VU1IyIFxgY2F0ICROR1hfUElEX1BBVEhcYAogCXNsZWVwIDEKLQl0ZXN0IC1mICRQSURfUEFUSC5uZXdiaW4KLQlraWxsIC1XSU5DSCBcYGNhdCAkUElEX1BBVEhcYAorCXRlc3QgLWYgJE5HWF9QSURfUEFUSC5uZXdiaW4KKwlraWxsIC1XSU5DSCBcYGNhdCAkTkdYX1BJRF9QQVRIXGAKIEVORApkaWZmIC0tZ2l0IGEvYXV0by9pbnN0YWxsIGIvYXV0by9pbnN0YWxsCmluZGV4IGJhZTA5MmIuLjdhMjZkMDQgMTAwNjQ0Ci0tLSBhL2F1dG8vaW5zdGFsbAorKysgYi9hdXRvL2luc3RhbGwKQEAgLTIsNDAgKzIsNDAgQEAKICMgQ29weXJpZ2h0IChDKSBJZ29yIFN5c29ldgogCiAKLWNhdCA8PCBFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICRNQUtFRklMRQorY2F0IDw8IEVORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PiAkTkdYX01BS0VGSUxFCiAKIGluc3RhbGw6Ci0JdGVzdCAtZCAkUFJFRklYIHx8IG1rZGlyIC1wICRQUkVGSVgKKwl0ZXN0IC1kICROR1hfUFJFRklYIHx8IG1rZGlyIC1wICROR1hfUFJFRklYCiAKLQl0ZXN0IC1kIGBkaXJuYW1lICRTQklOX1BBVEhgIHx8IG1rZGlyIC1wIGBkaXJuYW1lICRTQklOX1BBVEhgCi0JdGVzdCAhIC1mICRTQklOX1BBVEggfHwgbXYgJFNCSU5fUEFUSCAkU0JJTl9QQVRILm9sZAotCWNwICRPQkpTL25naW54ICRTQklOX1BBVEgKKwl0ZXN0IC1kIGBkaXJuYW1lICROR1hfU0JJTl9QQVRIYCB8fCBta2RpciAtcCBgZGlybmFtZSAkTkdYX1NCSU5fUEFUSGAKKwl0ZXN0ICEgLWYgJE5HWF9TQklOX1BBVEggfHwgbXYgJE5HWF9TQklOX1BBVEggJE5HWF9TQklOX1BBVEgub2xkCisJY3AgJE5HWF9PQkpTL25naW54ICROR1hfU0JJTl9QQVRICiAKLQl0ZXN0IC1kIGBkaXJuYW1lICRDT05GX1BBVEhgIHx8IG1rZGlyIC1wIGBkaXJuYW1lICRDT05GX1BBVEhgCisJdGVzdCAtZCBgZGlybmFtZSAkTkdYX0NPTkZfUEFUSGAgfHwgbWtkaXIgLXAgYGRpcm5hbWUgJE5HWF9DT05GX1BBVEhgCiAKLQljcCBjb25mL2tvaS13aW4gYGRpcm5hbWUgJENPTkZfUEFUSGAKKwljcCBjb25mL2tvaS13aW4gYGRpcm5hbWUgJE5HWF9DT05GX1BBVEhgCiAKLQl0ZXN0IC1mIGBkaXJuYW1lICRDT05GX1BBVEhgL21pbWUudHlwZXMgfHwgXAotCQljcCBjb25mL21pbWUudHlwZXMgYGRpcm5hbWUgJENPTkZfUEFUSGAvbWltZS50eXBlcwotCWNwIGNvbmYvbWltZS50eXBlcyBgZGlybmFtZSAkQ09ORl9QQVRIYC9taW1lLnR5cGVzLmRlZmF1bHQKKwl0ZXN0IC1mIGBkaXJuYW1lICROR1hfQ09ORl9QQVRIYC9taW1lLnR5cGVzIHx8IFwKKwkJY3AgY29uZi9taW1lLnR5cGVzIGBkaXJuYW1lICROR1hfQ09ORl9QQVRIYC9taW1lLnR5cGVzCisJY3AgY29uZi9taW1lLnR5cGVzIGBkaXJuYW1lICROR1hfQ09ORl9QQVRIYC9taW1lLnR5cGVzLmRlZmF1bHQKIAotCXRlc3QgLWYgJENPTkZfUEFUSCB8fCBjcCBjb25mL25naW54LmNvbmYgJENPTkZfUEFUSAotCWNwIGNvbmYvbmdpbnguY29uZiBgZGlybmFtZSAkQ09ORl9QQVRIYC9uZ2lueC5jb25mLmRlZmF1bHQKKwl0ZXN0IC1mICROR1hfQ09ORl9QQVRIIHx8IGNwIGNvbmYvbmdpbnguY29uZiAkTkdYX0NPTkZfUEFUSAorCWNwIGNvbmYvbmdpbnguY29uZiBgZGlybmFtZSAkTkdYX0NPTkZfUEFUSGAvbmdpbnguY29uZi5kZWZhdWx0CiAKLQl0ZXN0IC1kIGBkaXJuYW1lICRQSURfUEFUSGAgfHwgbWtkaXIgLXAgYGRpcm5hbWUgJFBJRF9QQVRIYAorCXRlc3QgLWQgYGRpcm5hbWUgJE5HWF9QSURfUEFUSGAgfHwgbWtkaXIgLXAgYGRpcm5hbWUgJE5HWF9QSURfUEFUSGAKIAotCXRlc3QgLWQgYGRpcm5hbWUgJEhUVFBfTE9HX1BBVEhgIHx8IG1rZGlyIC1wIGBkaXJuYW1lICRIVFRQX0xPR19QQVRIYAorCXRlc3QgLWQgYGRpcm5hbWUgJE5HWF9IVFRQX0xPR19QQVRIYCB8fCBcCisJCW1rZGlyIC1wIGBkaXJuYW1lICROR1hfSFRUUF9MT0dfUEFUSGAKIAotCXRlc3QgLWQgJFBSRUZJWC9odG1sIHx8IGNwIC1yIGh0bWwgJFBSRUZJWAotCi0JI3Rlc3QgLWQgJFBSRUZJWC90ZW1wIHx8IG1rZGlyIC1wICRQUkVGSVgvdGVtcAorCXRlc3QgLWQgJE5HWF9QUkVGSVgvaHRtbCB8fCBjcCAtciBodG1sICROR1hfUFJFRklYCiBFTkQKIAogCi1pZiBbICIuJEVSUk9SX0xPR19QQVRIIiAhPSAiLiIgXTsgdGhlbgotICAgIGNhdCA8PCBFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gJE1BS0VGSUxFCitpZiB0ZXN0IC1uICIkTkdYX0VSUk9SX0xPR19QQVRIIjsgdGhlbgorICAgIGNhdCA8PCBFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PiAkTkdYX01BS0VGSUxFCiAKLQl0ZXN0IC1kIGBkaXJuYW1lICRFUlJPUl9MT0dfUEFUSGAgfHwgbWtkaXIgLXAgYGRpcm5hbWUgJEVSUk9SX0xPR19QQVRIYAorCXRlc3QgLWQgYGRpcm5hbWUgJE5HWF9FUlJPUl9MT0dfUEFUSGAgfHwgXAorCQlta2RpciAtcCBgZGlybmFtZSAkTkdYX0VSUk9SX0xPR19QQVRIYAogRU5ECiAKIGZpCmRpZmYgLS1naXQgYS9hdXRvL2xpYi9tZDUvY29uZiBiL2F1dG8vbGliL21kNS9jb25mCmluZGV4IDI3ZmQ2NDEuLjgxMjI0MjMgMTAwNjQ0Ci0tLSBhL2F1dG8vbGliL21kNS9jb25mCisrKyBiL2F1dG8vbGliL21kNS9jb25mCkBAIC03LDcgKzcsNyBAQAogICAgIGlmIGdyZXAgTUQ1X0luaXQgJE1ENS9tZDUuaCA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgICMgT3BlblNTTCBtZDUKICAgICAgICAgT1BFTlNTTF9NRDU9WUVTCi0gICAgICAgIGhhdmU9SEFWRV9PUEVOU1NMX01ENSAuIGF1dG8vaGF2ZQorICAgICAgICBoYXZlPU5HWF9IQVZFX09QRU5TU0xfTUQ1IC4gYXV0by9oYXZlCiAgICAgZWxzZQogICAgICAgICAjIHJzYXJlZiBtZDUKICAgICAgICAgT1BFTlNTTF9NRDU9Tk8KQEAgLTQzLDEzICs0MywxMyBAQAogCiBlbHNlCiAKLSAgICBpZiBbICRQTEFURk9STSAhPSB3aW4zMiBdOyB0aGVuCisgICAgaWYgWyAkTkdYX1BMQVRGT1JNICE9IHdpbjMyIF07IHRoZW4KICAgICAgICAgTUQ1PU5PCiAKICAgICAgICAgIyBTb2xhcmlzIDgvOQogCiAgICAgICAgIG5neF9mZWF0dXJlPSJyc2FyZWYgbWQ1IGxpYnJhcnkiCi0gICAgICAgIG5neF9mZWF0dXJlX25hbWU9InJzYXJlZl9tZDUiCisgICAgICAgIG5neF9mZWF0dXJlX25hbWU9CiAgICAgICAgIG5neF9mZWF0dXJlX3J1bj1ubwogICAgICAgICBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8bWQ1Lmg+IgogICAgICAgICBuZ3hfZmVhdHVyZV9saWJzPSItbG1kNSIKQEAgLTY2LDcgKzY2LDcgQEAKICAgICAgICAgICAgICMgRnJlZUJTRAogCiAgICAgICAgICAgICBuZ3hfZmVhdHVyZT0icnNhcmVmIG1kIGxpYnJhcnkiCi0gICAgICAgICAgICBuZ3hfZmVhdHVyZV9uYW1lPSJyc2FyZWZfbWQ1IgorICAgICAgICAgICAgbmd4X2ZlYXR1cmVfbmFtZT0KICAgICAgICAgICAgIG5neF9mZWF0dXJlX3J1bj1ubwogICAgICAgICAgICAgbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPG1kNS5oPiIKICAgICAgICAgICAgIG5neF9mZWF0dXJlX2xpYnM9Ii1sbWQiCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgICAgICAgICAjIE9wZW5TU0wgY3J5cHRvIGxpYnJhcnkKIAogICAgICAgICAgICAgICAgbmd4X2ZlYXR1cmU9Ik9wZW5TU0wgbWQ1IGNyeXB0byBsaWJyYXJ5IgotICAgICAgICAgICAgICAgbmd4X2ZlYXR1cmVfbmFtZT0iT3BlblNTTF9tZDUiCisgICAgICAgICAgICAgICBuZ3hfZmVhdHVyZV9uYW1lPSJOR1hfT1BFTlNTTF9NRDUiCiAgICAgICAgICAgICAgICBuZ3hfZmVhdHVyZV9ydW49bm8KICAgICAgICAgICAgICAgIG5neF9mZWF0dXJlX2luY3M9IiNpbmNsdWRlIDxvcGVuc3NsL21kNS5oPiIKICAgICAgICAgICAgICAgIG5neF9mZWF0dXJlX2xpYnM9Ii1sY3J5cHRvIgpAQCAtOTgsNyArOTgsNyBAQAogCiAKICAgICAgICAgaWYgWyAkbmd4X2ZvdW5kID0geWVzIF07IHRoZW4KLSAgICAgICAgICAgIGhhdmU9SEFWRV9PUEVOU1NMX01ENV9IIC4gYXV0by9oYXZlCisgICAgICAgICAgICBoYXZlPU5HWF9IQVZFX09QRU5TU0xfTUQ1X0ggLiBhdXRvL2hhdmUKICAgICAgICAgICAgIENPUkVfTElCUz0iJENPUkVfTElCUyAkbmd4X2ZlYXR1cmVfbGlicyIKICAgICAgICAgICAgIE1ENT1ZRVMKICAgICAgICAgICAgIE1ENV9MSUI9Y3J5cHRvCmRpZmYgLS1naXQgYS9hdXRvL2xpYi9tZDUvbWFrZSBiL2F1dG8vbGliL21kNS9tYWtlCmluZGV4IDVkZmRkZmEuLmIzMzNkNGQgMTAwNjQ0Ci0tLSBhL2F1dG8vbGliL21kNS9tYWtlCisrKyBiL2F1dG8vbGliL21kNS9tYWtlCkBAIC0yNSw3ICsyNSw3IEBACiBkb25lPU5PCiAKIAotY2FzZSAkUExBVEZPUk0gaW4KK2Nhc2UgJE5HWF9QTEFURk9STSBpbgogCiAgICAgd2luMzIpCiAgICAgICAgIGNwIGF1dG8vbGliL21kNS8kbmd4X21ha2VmaWxlICRNRDUKZGlmZiAtLWdpdCBhL2F1dG8vbGliL29wZW5zc2wvY29uZiBiL2F1dG8vbGliL29wZW5zc2wvY29uZgppbmRleCA4ZWY0ZjNhLi4wYTcwZjMzIDEwMDY0NAotLS0gYS9hdXRvL2xpYi9vcGVuc3NsL2NvbmYKKysrIGIvYXV0by9saWIvb3BlbnNzbC9jb25mCkBAIC0xOCwxMSArMTgsMTEgQEAKIAogZWxzZQogCi0gICAgaWYgWyAkUExBVEZPUk0gIT0gd2luMzIgXTsgdGhlbgorICAgIGlmIFsgJE5HWF9QTEFURk9STSAhPSB3aW4zMiBdOyB0aGVuCiAgICAgICAgIE9QRU5TU0w9Tk8KIAogICAgICAgICBuZ3hfZmVhdHVyZT0iT3BlblNTTCBsaWJyYXJ5IgotICAgICAgICBuZ3hfZmVhdHVyZV9uYW1lPSJPcGVuU1NMIgorICAgICAgICBuZ3hfZmVhdHVyZV9uYW1lPSJOR1hfT1BFTlNTTCIKICAgICAgICAgbmd4X2ZlYXR1cmVfcnVuPW5vCiAgICAgICAgIG5neF9mZWF0dXJlX2luY3M9IiNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPiIKICAgICAgICAgbmd4X2ZlYXR1cmVfbGlicz0iLWxzc2wgLWxjcnlwdG8iCkBAIC0zMCw3ICszMCw2IEBACiAgICAgICAgIC4gYXV0by9mZWF0dXJlCiAKICAgICAgICAgaWYgWyAkbmd4X2ZvdW5kID0geWVzIF07IHRoZW4KLSAgICAgICAgICAgIGhhdmU9TkdYX09QRU5TU0wgLiBhdXRvL2hhdmUKICAgICAgICAgICAgIENPUkVfREVQUz0iJENPUkVfREVQUyAkT1BFTlNTTF9ERVBTIgogICAgICAgICAgICAgQ09SRV9TUkNTPSIkQ09SRV9TUkNTICRPUEVOU1NMX1NSQ1MiCiAgICAgICAgICAgICBDT1JFX0xJQlM9IiRDT1JFX0xJQlMgJG5neF9mZWF0dXJlX2xpYnMiCmRpZmYgLS1naXQgYS9hdXRvL2xpYi9vcGVuc3NsL21ha2UgYi9hdXRvL2xpYi9vcGVuc3NsL21ha2UKaW5kZXggNWU5MzFjYi4uMjhhYjAwMyAxMDA2NDQKLS0tIGEvYXV0by9saWIvb3BlbnNzbC9tYWtlCisrKyBiL2F1dG8vbGliL29wZW5zc2wvbWFrZQpAQCAtMiw3ICsyLDcgQEAKICMgQ29weXJpZ2h0IChDKSBJZ29yIFN5c29ldgogCiAKLWNhc2UgJFBMQVRGT1JNIGluCitjYXNlICROR1hfUExBVEZPUk0gaW4KICAgICAqKQogICAgICAgICBlY2hvICIkT1BFTlNTTC9saWJzc2wuYToiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gJE1BS0VGSUxFCiAgICAgICAgIGVjaG8gIgljZCAkT1BFTlNTTCBcXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICRNQUtFRklMRQpkaWZmIC0tZ2l0IGEvYXV0by9saWIvcGNyZS9jb25mIGIvYXV0by9saWIvcGNyZS9jb25mCmluZGV4IGNmMjZiZTIuLjE2OGFjYmEgMTAwNjQ0Ci0tLSBhL2F1dG8vbGliL3BjcmUvY29uZgorKysgYi9hdXRvL2xpYi9wY3JlL2NvbmYKQEAgLTQyLDE0ICs0MiwxNCBAQAogCiBlbHNlCiAKLSAgICBpZiBbICRQTEFURk9STSAhPSB3aW4zMiBdOyB0aGVuCisgICAgaWYgWyAkTkdYX1BMQVRGT1JNICE9IHdpbjMyIF07IHRoZW4KICAgICAgICAgUENSRT1OTwogCiAgICAgICAgICMgRnJlZUJTRCBQQ1JFIHBvcnQgcmVxdWlyZXMgLS13aXRoLWNjLW9wdD0iLUkgL3Vzci9sb2NhbC9pbmNsdWRlIgogICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1sZC1vcHQ9Ii1MIC91c3IvbG9jYWwvbGliIgogICAgICAgICAKICAgICAgICAgbmd4X2ZlYXR1cmU9IlBDUkUgbGlicmFyeSIKLSAgICAgICAgbmd4X2ZlYXR1cmVfbmFtZT0iUENSRSIKKyAgICAgICAgbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX1BDUkUiCiAgICAgICAgIG5neF9mZWF0dXJlX3J1bj1ubwogICAgICAgICBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8cGNyZS5oPiIKICAgICAgICAgbmd4X2ZlYXR1cmVfbGlicz0iLWxwY3JlIgpkaWZmIC0tZ2l0IGEvYXV0by9saWIvcGNyZS9tYWtlIGIvYXV0by9saWIvcGNyZS9tYWtlCmluZGV4IGE2MGZlZGIuLjI3ZDc3NGIgMTAwNjQ0Ci0tLSBhL2F1dG8vbGliL3BjcmUvbWFrZQorKysgYi9hdXRvL2xpYi9wY3JlL21ha2UKQEAgLTIyLDcgKzIyLDcgQEAKIGVzYWMKIAogCi1jYXNlICRQTEFURk9STSBpbgorY2FzZSAkTkdYX1BMQVRGT1JNIGluCiAKICAgICB3aW4zMikKICAgICAgICAgY3AgYXV0by9saWIvcGNyZS9wYXRjaC5wY3JlLmluICRQQ1JFCmRpZmYgLS1naXQgYS9hdXRvL2xpYi96bGliL2NvbmYgYi9hdXRvL2xpYi96bGliL2NvbmYKaW5kZXggNzk3YTJkMy4uOGVkZDNmMyAxMDA2NDQKLS0tIGEvYXV0by9saWIvemxpYi9jb25mCisrKyBiL2F1dG8vbGliL3psaWIvY29uZgpAQCAtMzcsMTMgKzM3LDEzIEBACiAKIGVsc2UKIAotICAgIGlmIFsgJFBMQVRGT1JNICE9IHdpbjMyIF07IHRoZW4KKyAgICBpZiBbICROR1hfUExBVEZPUk0gIT0gd2luMzIgXTsgdGhlbgogICAgICAgICBaTElCPU5PCiAKICAgICAgICAgIyBGcmVlQlNELCBTb2xhcmlzLCBMaW51eAogCiAgICAgICAgIG5neF9mZWF0dXJlPSJ6bGliIGxpYnJhcnkiCi0gICAgICAgIG5neF9mZWF0dXJlX25hbWU9InpsaWIiCisgICAgICAgIG5neF9mZWF0dXJlX25hbWU9CiAgICAgICAgIG5neF9mZWF0dXJlX3J1bj1ubwogICAgICAgICBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8emxpYi5oPiIKICAgICAgICAgbmd4X2ZlYXR1cmVfbGlicz0iLWx6IgpkaWZmIC0tZ2l0IGEvYXV0by9saWIvemxpYi9tYWtlIGIvYXV0by9saWIvemxpYi9tYWtlCmluZGV4IDJlNWVhODQuLjE4ODRiNTAgMTAwNjQ0Ci0tLSBhL2F1dG8vbGliL3psaWIvbWFrZQorKysgYi9hdXRvL2xpYi96bGliL21ha2UKQEAgLTI2LDcgKzI2LDcgQEAKIGRvbmU9Tk8KIAogCi1jYXNlICRQTEFURk9STSBpbgorY2FzZSAkTkdYX1BMQVRGT1JNIGluCiAKICAgICB3aW4zMikKICAgICAgICAgY3AgYXV0by9saWIvemxpYi8kbmd4X21ha2VmaWxlICRaTElCCmRpZmYgLS1naXQgYS9hdXRvL21ha2UgYi9hdXRvL21ha2UKaW5kZXggNTVmMzZjOS4uOWI2ZTRiZSAxMDA2NDQKLS0tIGEvYXV0by9tYWtlCisrKyBiL2F1dG8vbWFrZQpAQCAtMiwxMCArMiwxMSBAQAogIyBDb3B5cmlnaHQgKEMpIElnb3IgU3lzb2V2CiAKIAotbWtkaXIgLXAgJE9CSlMvc3JjL2NvcmUgJE9CSlMvc3JjL2V2ZW50ICRPQkpTL3NyYy9ldmVudC9tb2R1bGVzIFwKLSAgICAgICAgICRPQkpTL3NyYy9vcy91bml4ICRPQkpTL3NyYy9vcy93aW4zMiBcCi0gICAgICAgICAkT0JKUy9zcmMvaHR0cCAkT0JKUy9zcmMvaHR0cC9tb2R1bGVzICRPQkpTL3NyYy9odHRwL21vZHVsZXMvcHJveHkgXAotICAgICAgICAgJE9CSlMvc3JjL2ltYXAKK21rZGlyIC1wICROR1hfT0JKUy9zcmMvY29yZSAkTkdYX09CSlMvc3JjL2V2ZW50ICROR1hfT0JKUy9zcmMvZXZlbnQvbW9kdWxlcyBcCisgICAgICAgICAkTkdYX09CSlMvc3JjL29zL3VuaXggJE5HWF9PQkpTL3NyYy9vcy93aW4zMiBcCisgICAgICAgICAkTkdYX09CSlMvc3JjL2h0dHAgJE5HWF9PQkpTL3NyYy9odHRwL21vZHVsZXMgXAorCSAkTkdYX09CSlMvc3JjL2h0dHAvbW9kdWxlcy9wcm94eSBcCisgICAgICAgICAkTkdYX09CSlMvc3JjL2ltYXAKIAogCiBuZ3hfb2Jqc19kaXI9JE5HWF9PQkpTJG5neF9yZWdleF9kaXJzZXAKQEAgLTMzLDcgKzM0LDcgQEAKIAogIyBBTExfSU5DUywgcmVxdWlyZWQgYnkgT3BlbldhdGNvbSBDIHByZWNvbXBpbGVkIGhlYWRlcnMKIAotbmd4X2luY3M9YGVjaG8gJENPUkVfSU5DUyAkT0JKUyAkSFRUUF9JTkNTICRJTUFQX0lOQ1NcCituZ3hfaW5jcz1gZWNobyAkQ09SRV9JTkNTICROR1hfT0JKUyAkSFRUUF9JTkNTICRJTUFQX0lOQ1NcCiAgICAgfCBzZWQgLWUgInMvICAqXChbXiBdW14gXSpcKS8kbmd4X3JlZ2V4X2NvbnQkbmd4X2luY2x1ZGVfb3B0XDEvZyIgXAogICAgICAgICAgIC1lICJzL1wvLyRuZ3hfcmVnZXhfZGlyc2VwL2ciYAogCkBAIC01Myw3ICs1NCw3IEBACiAgICAgfCBzZWQgLWUgInMvICAqXChbXiBdW14gXSpcKS8kbmd4X3JlZ2V4X2NvbnRcMS9nIiBcCiAgICAgICAgICAgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCiAKLW5neF9pbmNzPWBlY2hvICRDT1JFX0lOQ1MgJE9CSlMgXAorbmd4X2luY3M9YGVjaG8gJENPUkVfSU5DUyAkTkdYX09CSlMgXAogICAgIHwgc2VkIC1lICJzLyAgKlwoW14gXVteIF0qXCkvJG5neF9yZWdleF9jb250JG5neF9pbmNsdWRlX29wdFwxL2ciIFwKICAgICAgICAgICAtZSAicy9cLy8kbmd4X3JlZ2V4X2RpcnNlcC9nImAKIApAQCAtMjg3LDEzICsyODgsMTMgQEAKICMgdGhlIHByZWNvbXBpbGVkIGhlYWRlcnMKIAogaWYgdGVzdCAtbiAiJE5HWF9QQ0giOyB0aGVuCi0gICAgZWNobyAiI2luY2x1ZGUgPG5neF9jb25maWcuaD4iID4gJE9CSlMvbmd4X3BjaC5jCisgICAgZWNobyAiI2luY2x1ZGUgPG5neF9jb25maWcuaD4iID4gJE5HWF9PQkpTL25neF9wY2guYwogCi0gICAgbmd4X3BjaD0ic3JjL2NvcmUvbmd4X2NvbmZpZy5oICRPU19DT05GSUcgJE9CSlMvbmd4X2F1dG9fY29uZmlnLmgiCisgICAgbmd4X3BjaD0ic3JjL2NvcmUvbmd4X2NvbmZpZy5oICRPU19DT05GSUcgJE5HWF9PQkpTL25neF9hdXRvX2NvbmZpZy5oIgogICAgIG5neF9wY2g9YGVjaG8gIiROR1hfUENIOgkkbmd4X3BjaCIgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCiAKICAgICBuZ3hfc3JjPSJcJChDQykgXCQoQ0ZMQUdTKSAkTkdYX0JVSUxEX1BDSCAkbmd4X2NvbXBpbGVfb3B0IFwkKEFMTF9JTkNTKSIKLSAgICBuZ3hfc3JjPSIkbmd4X3NyYyAkbmd4X29iam91dCRPQkpTL25neF9wY2gub2JqICRPQkpTL25neF9wY2guYyIKKyAgICBuZ3hfc3JjPSIkbmd4X3NyYyAkbmd4X29iam91dCROR1hfT0JKUy9uZ3hfcGNoLm9iaiAkTkdYX09CSlMvbmd4X3BjaC5jIgogICAgIG5neF9zcmM9YGVjaG8gJG5neF9zcmMgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCiAKICAgICBjYXQgPDwgRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gJE5HWF9NQUtFRklMRQpkaWZmIC0tZ2l0IGEvYXV0by9tb2R1bGVzIGIvYXV0by9tb2R1bGVzCmluZGV4IGU5YTQyZTMuLmYwMmU4MDMgMTAwNjQ0Ci0tLSBhL2F1dG8vbW9kdWxlcworKysgYi9hdXRvL21vZHVsZXMKQEAgLTcsNyArNyw3IEBACiBmaQogCiBpZiBbICRFVkVOVF9TRUxFQ1QgPSBZRVMgXTsgdGhlbgotICAgIGhhdmU9SEFWRV9TRUxFQ1QgLiBhdXRvL2hhdmUKKyAgICBoYXZlPU5HWF9IQVZFX1NFTEVDVCAuIGF1dG8vaGF2ZQogICAgIENPUkVfU1JDUz0iJENPUkVfU1JDUyAkU0VMRUNUX1NSQ1MiCiAgICAgRVZFTlRfTU9EVUxFUz0iJEVWRU5UX01PRFVMRVMgJFNFTEVDVF9NT0RVTEUiCiBmaQpAQCAtMTgsMjkgKzE4LDI5IEBACiBmaQogCiBpZiBbICRFVkVOVF9QT0xMID0gWUVTIF07IHRoZW4KLSAgICBoYXZlPUhBVkVfUE9MTCAuIGF1dG8vaGF2ZQorICAgIGhhdmU9TkdYX0hBVkVfUE9MTCAuIGF1dG8vaGF2ZQogICAgIENPUkVfU1JDUz0iJENPUkVfU1JDUyAkUE9MTF9TUkNTIgogICAgIEVWRU5UX01PRFVMRVM9IiRFVkVOVF9NT0RVTEVTICRQT0xMX01PRFVMRSIKIGZpCiAKIAotaWYgWyAkVEVTVF9CVUlMRF9ERVZQT0xMID0gWUVTIF07IHRoZW4KLSAgICBoYXZlPUhBVkVfREVWUE9MTCAuIGF1dG8vaGF2ZQotICAgIGhhdmU9VEVTVF9CVUlMRF9ERVZQT0xMIC4gYXV0by9oYXZlCitpZiBbICROR1hfVEVTVF9CVUlMRF9ERVZQT0xMID0gWUVTIF07IHRoZW4KKyAgICBoYXZlPU5HWF9IQVZFX0RFVlBPTEwgLiBhdXRvL2hhdmUKKyAgICBoYXZlPU5HWF9URVNUX0JVSUxEX0RFVlBPTEwgLiBhdXRvL2hhdmUKICAgICBFVkVOVF9NT0RVTEVTPSIkRVZFTlRfTU9EVUxFUyAkREVWUE9MTF9NT0RVTEUiCiAgICAgQ09SRV9TUkNTPSIkQ09SRV9TUkNTICRERVZQT0xMX1NSQ1MiCiBmaQogCi1pZiBbICRURVNUX0JVSUxEX0VQT0xMID0gWUVTIF07IHRoZW4KLSAgICBoYXZlPUhBVkVfRVBPTEwgLiBhdXRvL2hhdmUKLSAgICBoYXZlPVRFU1RfQlVJTERfRVBPTEwgLiBhdXRvL2hhdmUKK2lmIFsgJE5HWF9URVNUX0JVSUxEX0VQT0xMID0gWUVTIF07IHRoZW4KKyAgICBoYXZlPU5HWF9IQVZFX0VQT0xMIC4gYXV0by9oYXZlCisgICAgaGF2ZT1OR1hfVEVTVF9CVUlMRF9FUE9MTCAuIGF1dG8vaGF2ZQogICAgIEVWRU5UX01PRFVMRVM9IiRFVkVOVF9NT0RVTEVTICRFUE9MTF9NT0RVTEUiCiAgICAgQ09SRV9TUkNTPSIkQ09SRV9TUkNTICRFUE9MTF9TUkNTIgogZmkKIAotaWYgWyAkVEVTVF9CVUlMRF9SVFNJRyA9IFlFUyBdOyB0aGVuCi0gICAgaGF2ZT1IQVZFX1JUU0lHIC4gYXV0by9oYXZlCi0gICAgaGF2ZT1URVNUX0JVSUxEX1JUU0lHIC4gYXV0by9oYXZlCitpZiBbICROR1hfVEVTVF9CVUlMRF9SVFNJRyA9IFlFUyBdOyB0aGVuCisgICAgaGF2ZT1OR1hfSEFWRV9SVFNJRyAuIGF1dG8vaGF2ZQorICAgIGhhdmU9TkdYX1RFU1RfQlVJTERfUlRTSUcgLiBhdXRvL2hhdmUKICAgICBFVkVOVF9NT0RVTEVTPSIkRVZFTlRfTU9EVUxFUyAkUlRTSUdfTU9EVUxFIgogICAgIENPUkVfU1JDUz0iJENPUkVfU1JDUyAkUlRTSUdfU1JDUyIKIGZpCkBAIC0xMzUsOCArMTM1LDExIEBACiAgICAgSFRUUF9TUkNTPSIkSFRUUF9TUkNTICRIVFRQX1BST1hZX1NSQ1MiCiBmaQogCi1pZiBbIC1yICRPQkpTL2F1dG8gXTsgdGhlbgotICAgIC4gJE9CSlMvYXV0bworIyBTVFVCCisjSFRUUF9TUkNTPSIkSFRUUF9TUkNTICRIVFBQX0ZJTEVfQ0FDSEVfU1JDUyIKKworaWYgWyAtciAkTkdYX09CSlMvYXV0byBdOyB0aGVuCisgICAgLiAkTkdYX09CSlMvYXV0bwogZmkKIAogbW9kdWxlcz0iJENPUkVfTU9EVUxFUyAkRVZFTlRfTU9EVUxFUyIKZGlmZiAtLWdpdCBhL2F1dG8vb3B0aW9ucyBiL2F1dG8vb3B0aW9ucwppbmRleCAwNjQ4OGM4Li4yNjZlYTMxIDEwMDY0NAotLS0gYS9hdXRvL29wdGlvbnMKKysrIGIvYXV0by9vcHRpb25zCkBAIC00LDI5ICs0LDI5IEBACiAKIGhlbHA9bm8KIAotUFJFRklYPQotU0JJTl9QQVRIPQotQ09ORl9QQVRIPQotRVJST1JfTE9HX1BBVEg9Ci1QSURfUEFUSD0KK05HWF9QUkVGSVg9CitOR1hfU0JJTl9QQVRIPQorTkdYX0NPTkZfUEFUSD0KK05HWF9FUlJPUl9MT0dfUEFUSD0KK05HWF9QSURfUEFUSD0KIE5HWF9VU0VSPQogTkdYX0dST1VQPQotSFRUUF9MT0dfUEFUSD0KK05HWF9IVFRQX0xPR19QQVRIPQogCiBDQz0ke0NDOi1nY2N9CiBDUFA9CiBOR1hfT0JKUz1vYmpzCiAKLURFQlVHPU5PCitOR1hfREVCVUc9Tk8KIE5HWF9DQ19PUFQ9CiBOR1hfTERfT1BUPQogQ1BVPU5PCiAKLVRFU1RfQlVJTERfREVWUE9MTD1OTwotVEVTVF9CVUlMRF9FUE9MTD1OTwotVEVTVF9CVUlMRF9SVFNJRz1OTworTkdYX1RFU1RfQlVJTERfREVWUE9MTD1OTworTkdYX1RFU1RfQlVJTERfRVBPTEw9Tk8KK05HWF9URVNUX0JVSUxEX1JUU0lHPU5PCiAKLVBMQVRGT1JNPQorTkdYX1BMQVRGT1JNPQogTkdYX1dJTkU9CiAKIEVWRU5UX0ZPVU5EPU5PCkBAIC01Miw3ICs1Miw3IEBACiAKIElNQVA9Tk8KIAotTU9EVUxFUz0KK05HWF9NT0RVTEVTPQogCiBVU0VfUENSRT1OTwogUENSRT1OT05FCkBAIC04MiwxNSArODIsMTUgQEAKICAgICBjYXNlICIkb3B0aW9uIiBpbgogICAgICAgICAtLWhlbHApICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPXllcyAgICAgICAgICAgICAgICAgICA7OwogCi0gICAgICAgIC0tcHJlZml4PSopICAgICAgICAgICAgICAgICAgICAgIFBSRUZJWD0iJHZhbHVlIiAgICAgICAgICAgIDs7Ci0gICAgICAgIC0tc2Jpbi1wYXRoPSopICAgICAgICAgICAgICAgICAgIFNCSU5fUEFUSD0iJHZhbHVlIiAgICAgICAgIDs7Ci0gICAgICAgIC0tY29uZi1wYXRoPSopICAgICAgICAgICAgICAgICAgIENPTkZfUEFUSD0iJHZhbHVlIiAgICAgICAgIDs7Ci0gICAgICAgIC0tZXJyb3ItbG9nLXBhdGg9KikgICAgICAgICAgICAgIEVSUk9SX0xPR19QQVRIPSIkdmFsdWUiICAgIDs7Ci0gICAgICAgIC0tcGlkLXBhdGg9KikgICAgICAgICAgICAgICAgICAgIFBJRF9QQVRIPSIkdmFsdWUiICAgICAgICAgIDs7CisgICAgICAgIC0tcHJlZml4PSopICAgICAgICAgICAgICAgICAgICAgIE5HWF9QUkVGSVg9IiR2YWx1ZSIgICAgICAgIDs7CisgICAgICAgIC0tc2Jpbi1wYXRoPSopICAgICAgICAgICAgICAgICAgIE5HWF9TQklOX1BBVEg9IiR2YWx1ZSIgICAgIDs7CisgICAgICAgIC0tY29uZi1wYXRoPSopICAgICAgICAgICAgICAgICAgIE5HWF9DT05GX1BBVEg9IiR2YWx1ZSIgICAgIDs7CisgICAgICAgIC0tZXJyb3ItbG9nLXBhdGg9KikgICAgICAgICAgICAgIE5HWF9FUlJPUl9MT0dfUEFUSD0iJHZhbHVlIjs7CisgICAgICAgIC0tcGlkLXBhdGg9KikgICAgICAgICAgICAgICAgICAgIE5HWF9QSURfUEFUSD0iJHZhbHVlIiAgICAgIDs7CiAgICAgICAgIC0tdXNlcj0qKSAgICAgICAgICAgICAgICAgICAgICAgIE5HWF9VU0VSPSIkdmFsdWUiICAgICAgICAgIDs7CiAgICAgICAgIC0tZ3JvdXA9KikgICAgICAgICAgICAgICAgICAgICAgIE5HWF9HUk9VUD0iJHZhbHVlIiAgICAgICAgIDs7CiAKLSAgICAgICAgLS1jcm9zc2J1aWxkPSopICAgICAgICAgICAgICAgICAgUExBVEZPUk09IiR2YWx1ZSIgICAgICAgICAgOzsKKyAgICAgICAgLS1jcm9zc2J1aWxkPSopICAgICAgICAgICAgICAgICAgTkdYX1BMQVRGT1JNPSIkdmFsdWUiICAgICAgOzsKIAogICAgICAgICAtLWJ1aWxkZGlyPSopICAgICAgICAgICAgICAgICAgICBOR1hfT0JKUz0iJHZhbHVlIiAgICAgICAgICA7OwogCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgLS13aXRoLXRocmVhZHMpICAgICAgICAgICAgICAgICAgVVNFX1RIUkVBRFM9InB0aHJlYWRzIiAgICAgOzsKIAogICAgICAgICAtLXdpdGhvdXQtaHR0cCkgICAgICAgICAgICAgICAgICBIVFRQPU5PICAgICAgICAgICAgICAgICAgICA7OwotICAgICAgICAtLWh0dHAtbG9nLXBhdGg9KikgICAgICAgICAgICAgICBIVFRQX0xPR19QQVRIPSIkdmFsdWUiICAgICA7OworICAgICAgICAtLWh0dHAtbG9nLXBhdGg9KikgICAgICAgICAgICAgICBOR1hfSFRUUF9MT0dfUEFUSD0iJHZhbHVlIiA7OwogCiAgICAgICAgIC0td2l0aC1odHRwX3NzbF9tb2R1bGUpICAgICAgICAgIEhUVFBfU1NMPVlFUyAgICAgICAgICAgICAgIDs7CiAgICAgICAgIC0td2l0aG91dC1odHRwX2NoYXJzZXRfbW9kdWxlKSAgIEhUVFBfQ0hBUlNFVD1OTyAgICAgICAgICAgIDs7CkBAIC0xMjcsNyArMTI3LDcgQEAKICAgICAgICAgLS13aXRoLWNjLW9wdD0qKSAgICAgICAgICAgICAgICAgTkdYX0NDX09QVD0iJHZhbHVlIiAgICAgICAgOzsKICAgICAgICAgLS13aXRoLWxkLW9wdD0qKSAgICAgICAgICAgICAgICAgTkdYX0xEX09QVD0iJHZhbHVlIiAgICAgICAgOzsKICAgICAgICAgLS13aXRoLWNwdS1vcHQ9KikgICAgICAgICAgICAgICAgQ1BVPSIkdmFsdWUiICAgICAgICAgICAgICAgOzsKLSAgICAgICAgLS13aXRoLWRlYnVnKSAgICAgICAgICAgICAgICAgICAgREVCVUc9WUVTICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgLS13aXRoLWRlYnVnKSAgICAgICAgICAgICAgICAgICAgTkdYX0RFQlVHPVlFUyAgICAgICAgICAgICAgOzsKIAogICAgICAgICAtLXdpdGhvdXQtcGNyZSkgICAgICAgICAgICAgICAgICBVU0VfUENSRT1ESVNBQkxFRCAgICAgICAgICA7OwogICAgICAgICAtLXdpdGgtcGNyZT0qKSAgICAgICAgICAgICAgICAgICBQQ1JFPSIkdmFsdWUiICAgICAgICAgICAgICA7OwpAQCAtMTQzLDkgKzE0Myw5IEBACiAgICAgICAgIC0td2l0aC16bGliLW9wdD0qKSAgICAgICAgICAgICAgIFpMSUJfT1BUPSIkdmFsdWUiICAgICAgICAgIDs7CiAgICAgICAgIC0td2l0aC16bGliLWFzbT0qKSAgICAgICAgICAgICAgIFpMSUJfQVNNPSIkdmFsdWUiICAgICAgICAgIDs7CiAKLSAgICAgICAgLS10ZXN0LWJ1aWxkLWRldnBvbGwpICAgICAgICAgICAgVEVTVF9CVUlMRF9ERVZQT0xMPVlFUyAgICAgOzsKLSAgICAgICAgLS10ZXN0LWJ1aWxkLWVwb2xsKSAgICAgICAgICAgICAgVEVTVF9CVUlMRF9FUE9MTD1ZRVMgICAgICAgOzsKLSAgICAgICAgLS10ZXN0LWJ1aWxkLXJ0c2lnKSAgICAgICAgICAgICAgVEVTVF9CVUlMRF9SVFNJRz1ZRVMgICAgICAgOzsKKyAgICAgICAgLS10ZXN0LWJ1aWxkLWRldnBvbGwpICAgICAgICAgICAgTkdYX1RFU1RfQlVJTERfREVWUE9MTD1ZRVMgOzsKKyAgICAgICAgLS10ZXN0LWJ1aWxkLWVwb2xsKSAgICAgICAgICAgICAgTkdYX1RFU1RfQlVJTERfRVBPTEw9WUVTICAgOzsKKyAgICAgICAgLS10ZXN0LWJ1aWxkLXJ0c2lnKSAgICAgICAgICAgICAgTkdYX1RFU1RfQlVJTERfUlRTSUc9WUVTICAgOzsKIAogICAgICAgICAqKQogICAgICAgICAgICAgZWNobyAiJDA6IGVycm9yOiBpbnZhbGlkIG9wdGlvbiBcIiRvcHRpb25cIiIKQEAgLTIwMiwxMyArMjAyLDEzIEBACiBmaQogCiAKLWlmIFsgIi4kUExBVEZPUk0iID0gIi53aW4zMiIgXTsgdGhlbgoraWYgWyAiLiROR1hfUExBVEZPUk0iID0gIi53aW4zMiIgXTsgdGhlbgogICAgIE5HWF9XSU5FPSRXSU5FCiBmaQogCiAKLWlmIHRlc3QgLXogIiRQUkVGSVgiOyB0aGVuCi0gICAgUFJFRklYPS91c3IvbG9jYWwvbmdpbngKK2lmIHRlc3QgLXogIiROR1hfUFJFRklYIjsgdGhlbgorICAgIE5HWF9QUkVGSVg9L3Vzci9sb2NhbC9uZ2lueAogZmkKIAogCkBAIC0yMTcsNzUgKzIxNyw3NSBAQAogZmkKIAogCi1jYXNlICIuJFNCSU5fUEFUSCIgaW4KK2Nhc2UgIi4kTkdYX1NCSU5fUEFUSCIgaW4KICAgICAuLyopCiAgICAgOzsKIAogICAgIC4pCi0gICAgICAgIFNCSU5fUEFUSD0kUFJFRklYL3NiaW4vbmdpbngKKyAgICAgICAgTkdYX1NCSU5fUEFUSD0kTkdYX1BSRUZJWC9zYmluL25naW54CiAgICAgOzsKIAogICAgICopCi0gICAgICAgIFNCSU5fUEFUSD0kUFJFRklYLyRTQklOX1BBVEgKKyAgICAgICAgTkdYX1NCSU5fUEFUSD0kTkdYX1BSRUZJWC8kTkdYX1NCSU5fUEFUSAogICAgIDs7CiBlc2FjCiAKIAotY2FzZSAiLiRDT05GX1BBVEgiIGluCitjYXNlICIuJE5HWF9DT05GX1BBVEgiIGluCiAgICAgLi8qKQogICAgIDs7CiAKICAgICAuKQotICAgICAgICBDT05GX1BBVEg9JFBSRUZJWC9jb25mL25naW54LmNvbmYKKyAgICAgICAgTkdYX0NPTkZfUEFUSD0kTkdYX1BSRUZJWC9jb25mL25naW54LmNvbmYKICAgICA7OwogCiAgICAgKikKLSAgICAgICAgQ09ORl9QQVRIPSRQUkVGSVgvJENPTkZfUEFUSAorICAgICAgICBOR1hfQ09ORl9QQVRIPSROR1hfUFJFRklYLyROR1hfQ09ORl9QQVRICiAgICAgOzsKIGVzYWMKIAogCi1jYXNlICIuJFBJRF9QQVRIIiBpbgorY2FzZSAiLiROR1hfUElEX1BBVEgiIGluCiAgICAgLi8qKQogICAgIDs7CiAKICAgICAuKQotICAgICAgICBQSURfUEFUSD0kUFJFRklYL2xvZ3MvbmdpbngucGlkCisgICAgICAgIE5HWF9QSURfUEFUSD0kTkdYX1BSRUZJWC9sb2dzL25naW54LnBpZAogICAgIDs7CiAKICAgICAqKQotICAgICAgICBQSURfUEFUSD0kUFJFRklYLyRQSURfUEFUSAorICAgICAgICBOR1hfUElEX1BBVEg9JE5HWF9QUkVGSVgvJE5HWF9QSURfUEFUSAogICAgIDs7CiBlc2FjCiAKIAotY2FzZSAiLiRFUlJPUl9MT0dfUEFUSCIgaW4KK2Nhc2UgIi4kTkdYX0VSUk9SX0xPR19QQVRIIiBpbgogICAgIC4vKikKICAgICA7OwogCiAgICAgLikKLSAgICAgICAgRVJST1JfTE9HX1BBVEg9JFBSRUZJWC9sb2dzL2Vycm9yLmxvZworICAgICAgICBOR1hfRVJST1JfTE9HX1BBVEg9JE5HWF9QUkVGSVgvbG9ncy9lcnJvci5sb2cKICAgICA7OwogCiAgICAgLnN0ZGVycikKLSAgICAgICAgRVJST1JfTE9HX1BBVEg9CisgICAgICAgIE5HWF9FUlJPUl9MT0dfUEFUSD0KICAgICA7OwogCiAgICAgKikKLSAgICAgICAgRVJST1JfTE9HX1BBVEg9JFBSRUZJWC8kRVJST1JfTE9HX1BBVEgKKyAgICAgICAgTkdYX0VSUk9SX0xPR19QQVRIPSROR1hfUFJFRklYLyROR1hfRVJST1JfTE9HX1BBVEgKICAgICA7OwogZXNhYwogCiAKLWNhc2UgIi4kSFRUUF9MT0dfUEFUSCIgaW4KK2Nhc2UgIi4kTkdYX0hUVFBfTE9HX1BBVEgiIGluCiAgICAgLi8qKQogICAgIDs7CiAKICAgICAuKQotICAgICAgICBIVFRQX0xPR19QQVRIPSRQUkVGSVgvbG9ncy9hY2Nlc3MubG9nCisgICAgICAgIE5HWF9IVFRQX0xPR19QQVRIPSROR1hfUFJFRklYL2xvZ3MvYWNjZXNzLmxvZwogICAgIDs7CiAKICAgICAqKQotICAgICAgICBIVFRQX0xPR19QQVRIPSRQUkVGSVgvJEhUVFBfTE9HX1BBVEgKKyAgICAgICAgTkdYX0hUVFBfTE9HX1BBVEg9JE5HWF9QUkVGSVgvJE5HWF9IVFRQX0xPR19QQVRICiAgICAgOzsKIGVzYWMKZGlmZiAtLWdpdCBhL2F1dG8vb3MvY29uZiBiL2F1dG8vb3MvY29uZgppbmRleCA1ZGNmNDAwLi41NjhiNzE4IDEwMDY0NAotLS0gYS9hdXRvL29zL2NvbmYKKysrIGIvYXV0by9vcy9jb25mCkBAIC0yLDcgKzIsNyBAQAogIyBDb3B5cmlnaHQgKEMpIElnb3IgU3lzb2V2CiAKIAotaWYgWyAiLiRQTEFURk9STSIgPSAiLiIgXTsgdGhlbgoraWYgdGVzdCAteiAiJE5HWF9QTEFURk9STSI7IHRoZW4KICAgICBlY2hvICJjaGVja2luZyBmb3IgT1MiCiAKICAgICBTWVNURU09YHVuYW1lIC1zIDI+L2Rldi9udWxsYApAQCAtMTEsMTIgKzExLDEyIEBACiAKICAgICBlY2hvICIgKyAkU1lTVEVNICRSRUxFQVNFICRNQUNISU5FIgogCi0gICAgUExBVEZPUk09IiRTWVNURU06JFJFTEVBU0U6JE1BQ0hJTkUiOworICAgIE5HWF9QTEFURk9STT0iJFNZU1RFTTokUkVMRUFTRTokTUFDSElORSI7CiBlbHNlCi0gICAgZWNobyAiYnVpbGRpbmcgZm9yICRQTEFURk9STSIKKyAgICBlY2hvICJidWlsZGluZyBmb3IgJE5HWF9QTEFURk9STSIKIGZpCiAKLWNhc2UgJFBMQVRGT1JNIGluCitjYXNlICROR1hfUExBVEZPUk0gaW4KIAogICAgIEZyZWVCU0Q6KiB8IERyYWdvbkZseToqKQogICAgICAgICAuIGF1dG8vb3MvZnJlZWJzZApAQCAtNDMsNyArNDMsNyBAQAogZXNhYwogCiAKLWlmIFsgJFBMQVRGT1JNICE9IHdpbjMyIF07IHRoZW4KK2lmIFsgJE5HWF9QTEFURk9STSAhPSB3aW4zMiBdOyB0aGVuCiAKICAgICBpZiB0ZXN0IC16ICIkTkdYX1VTRVIiOyB0aGVuCiAgICAgICAgIE5HWF9VU0VSPW5vYm9keQpAQCAtNTIsNyArNTIsNyBAQAogCiAKICAgICBuZ3hfZmVhdHVyZT0iL2Rldi9wb2xsIgotICAgIG5neF9mZWF0dXJlX25hbWU9ImRldnBvbGwiCisgICAgbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfREVWUE9MTCIKICAgICBuZ3hfZmVhdHVyZV9ydW49bm8KICAgICBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3lzL2RldnBvbGwuaD4iCiAgICAgbmd4X2ZlYXR1cmVfbGlicz0KQEAgLTY1LDcgKzY1LDYgQEAKICAgICAuIGF1dG8vZmVhdHVyZQogCiAgICAgaWYgWyAkbmd4X2ZvdW5kID0geWVzIF07IHRoZW4KLSAgICAgICAgaGF2ZT1IQVZFX0RFVlBPTEwgLiBhdXRvL2hhdmUKICAgICAgICAgQ09SRV9TUkNTPSIkQ09SRV9TUkNTICRERVZQT0xMX1NSQ1MiCiAgICAgICAgIEVWRU5UX01PRFVMRVM9IiRFVkVOVF9NT0RVTEVTICRERVZQT0xMX01PRFVMRSIKICAgICAgICAgRVZFTlRfRk9VTkQ9WUVTCkBAIC03NCw3ICs3Myw3IEBACiAKICAgICBpZiB0ZXN0IC16ICIkTkdYX0tRVUVVRV9DSEVDS0VEIjsgdGhlbgogICAgICAgICBuZ3hfZmVhdHVyZT0ia3F1ZXVlIgotICAgICAgICBuZ3hfZmVhdHVyZV9uYW1lPSJrcXVldWUiCisgICAgICAgIG5neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX0tRVUVVRSIKICAgICAgICAgbmd4X2ZlYXR1cmVfcnVuPW5vCiAgICAgICAgIG5neF9mZWF0dXJlX2luY3M9IiNpbmNsdWRlIDxzeXMvZXZlbnQuaD4iCiAgICAgICAgIG5neF9mZWF0dXJlX2xpYnM9CkBAIC04MywxNCArODIsMTMgQEAKIAogICAgICAgICBpZiBbICRuZ3hfZm91bmQgPSB5ZXMgXTsgdGhlbgogCi0gICAgICAgICAgICBoYXZlPUhBVkVfS1FVRVVFIC4gYXV0by9oYXZlCi0gICAgICAgICAgICBoYXZlPUhBVkVfQ0xFQVJfRVZFTlQgLiBhdXRvL2hhdmUKKyAgICAgICAgICAgIGhhdmU9TkdYX0hBVkVfQ0xFQVJfRVZFTlQgLiBhdXRvL2hhdmUKICAgICAgICAgICAgIEVWRU5UX01PRFVMRVM9IiRFVkVOVF9NT0RVTEVTICRLUVVFVUVfTU9EVUxFIgogICAgICAgICAgICAgQ09SRV9TUkNTPSIkQ09SRV9TUkNTICRLUVVFVUVfU1JDUyIKICAgICAgICAgICAgIEVWRU5UX0ZPVU5EPVlFUwogCiAgICAgICAgICAgICBuZ3hfZmVhdHVyZT0ia3F1ZXVlJ3MgTk9URV9MT1dBVCIKLSAgICAgICAgICAgIG5neF9mZWF0dXJlX25hbWU9IkhBVkVfTE9XQVRfRVZFTlQiCisgICAgICAgICAgICBuZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9MT1dBVF9FVkVOVCIKICAgICAgICAgICAgIG5neF9mZWF0dXJlX3J1bj1ubwogICAgICAgICAgICAgbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9ldmVudC5oPiIKICAgICAgICAgICAgIG5neF9mZWF0dXJlX2xpYnM9CmRpZmYgLS1naXQgYS9hdXRvL29zL2ZyZWVic2QgYi9hdXRvL29zL2ZyZWVic2QKaW5kZXggYmEyZTE4OC4uZTM1YjkzMyAxMDA2NDQKLS0tIGEvYXV0by9vcy9mcmVlYnNkCisrKyBiL2F1dG8vb3MvZnJlZWJzZApAQCAtNDUsNyArNDUsNyBAQAogaWYgWyAkb3NyZWxkYXRlIC1ndCAzMDAwMDcgXTsgdGhlbgogICAgIGVjaG8gIiArIHVzaW5nIHNlbmRmaWxlKCkiCiAKLSAgICBoYXZlPUhBVkVfU0VOREZJTEUgLiBhdXRvL2hhdmUKKyAgICBoYXZlPU5HWF9IQVZFX1NFTkRGSUxFIC4gYXV0by9oYXZlCiAgICAgQ09SRV9TUkNTPSIkQ09SRV9TUkNTICRGUkVFQlNEX1NFTkRGSUxFX1NSQ1MiCiBmaQogCkBAIC01Nyw4ICs1Nyw4IEBACiB0aGVuCiAgICAgZWNobyAiICsgdXNpbmcga3F1ZXVlIgogCi0gICAgaGF2ZT1IQVZFX0tRVUVVRSAuIGF1dG8vaGF2ZQotICAgIGhhdmU9SEFWRV9DTEVBUl9FVkVOVCAuIGF1dG8vaGF2ZQorICAgIGhhdmU9TkdYX0hBVkVfS1FVRVVFIC4gYXV0by9oYXZlCisgICAgaGF2ZT1OR1hfSEFWRV9DTEVBUl9FVkVOVCAuIGF1dG8vaGF2ZQogICAgIEVWRU5UX01PRFVMRVM9IiRFVkVOVF9NT0RVTEVTICRLUVVFVUVfTU9EVUxFIgogICAgIENPUkVfU1JDUz0iJENPUkVfU1JDUyAkS1FVRVVFX1NSQ1MiCiAgICAgRVZFTlRfRk9VTkQ9WUVTCkBAIC03Myw3ICs3Myw3IEBACiAgICAgIC1vICR2ZXJzaW9uIC1nZSA1MDAwMTggXQogdGhlbgogICAgIGVjaG8gIiArIHVzaW5nIGtxdWV1ZSdzIE5PVEVfTE9XQVQiCi0gICAgaGF2ZT1IQVZFX0xPV0FUX0VWRU5UIC4gYXV0by9oYXZlCisgICAgaGF2ZT1OR1hfSEFWRV9MT1dBVF9FVkVOVCAuIGF1dG8vaGF2ZQogZmkKIAogCkBAIC04NSw3ICs4NSw3IEBACiAjCiAjICAgIGlmIFsgJHZlcnNpb24gLWd0IDQ2MDEwMSBdOyB0aGVuCiAjICAgICAgICBlY2hvICIgKyBrcXVldWUncyBFVkZJTFRfU0lHTkFMIGlzIHNhZmUiCi0jICAgICAgICBoYXZlPUhBVkVfU0FGRV9FVkZJTFRfU0lHTkFMIC4gYXV0by9oYXZlCisjICAgICAgICBoYXZlPU5HWF9IQVZFX1NBRkVfRVZGSUxUX1NJR05BTCAuIGF1dG8vaGF2ZQogIyAgICBlbHNlCiAjICAgICAgICBlY2hvICIkMDogZXJyb3I6IHRoZSBrcXVldWUncyBFVkZJTFRfU0lHTkFMIGlzIHVuc2FmZSBvbiB0aGlzIgogIyAgICAgICAgZWNobyAiRnJlZUJTRCB2ZXJzaW9uLCBzbyAtLXdpdGgtdGhyZWFkcz1yZm9yayBjb3VsZCBub3QgYmUgdXNlZCIKQEAgLTEwMCw3ICsxMDAsNyBAQAogICAgIGlmIFsgXCggJHZlcnNpb24gLWx0IDUwMDAwMCAtYSAkdmVyc2lvbiAtZ2UgNDMwMDAwIFwpIFwKICAgICAgICAgIC1vICR2ZXJzaW9uIC1nZSA1MDAwMTQgXQogICAgIHRoZW4KLSAgICAgICAgaGF2ZT1IQVZFX0FJTyAuIGF1dG8vaGF2ZQorICAgICAgICBoYXZlPU5HWF9IQVZFX0FJTyAuIGF1dG8vaGF2ZQogICAgICAgICBFVkVOVF9NT0RVTEVTPSIkRVZFTlRfTU9EVUxFUyAkQUlPX01PRFVMRSIKICAgICAgICAgQ09SRV9TUkNTPSIkQ09SRV9TUkNTICRBSU9fU1JDUyIKICAgICBlbHNlCmRpZmYgLS1naXQgYS9hdXRvL29zL2xpbnV4IGIvYXV0by9vcy9saW51eAppbmRleCBlNGNiZDZkLi42ODczNzdiIDEwMDY0NAotLS0gYS9hdXRvL29zL2xpbnV4CisrKyBiL2F1dG8vb3MvbGludXgKQEAgLTM3LDcgKzM3LDggQEAKIAogaWYgWyAkdmVyc2lvbiAtZ2UgMTMxNjA5IC1vICRFVkVOVF9SVFNJRyA9IFlFUyBdOyB0aGVuCiAgICAgZWNobyAiICsgdXNpbmcgcnQgc2lnbmFscyIKLSAgICBoYXZlPUhBVkVfUlRTSUcgLiBhdXRvL2hhdmUKKyAgICBoYXZlPU5HWF9IQVZFX1JUU0lHIC4gYXV0by9oYXZlCisgICAgaGF2ZT1OR1hfSEFWRV9QT0xMIC4gYXV0by9oYXZlCiAgICAgRVZFTlRfTU9EVUxFUz0iJEVWRU5UX01PRFVMRVMgJFJUU0lHX01PRFVMRSIKICAgICBDT1JFX1NSQ1M9IiRDT1JFX1NSQ1MgJFJUU0lHX1NSQ1MiCiAgICAgRVZFTlRfRk9VTkQ9WUVTCkBAIC00Nyw3ICs0OCw3IEBACiAjIGVwb2xsLCBFUE9MTEVUIHZlcnNpb24KIAogbmd4X2ZlYXR1cmU9ImVwb2xsIgotbmd4X2ZlYXR1cmVfbmFtZT0iZXBvbGwiCituZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9FUE9MTCIKIG5neF9mZWF0dXJlX3J1bj1ubwogbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9lcG9sbC5oPiIKIG5neF9mZWF0dXJlX2xpYnM9CkBAIC02MCw4ICs2MSw3IEBACiAuIGF1dG8vZmVhdHVyZQogCiBpZiBbICRuZ3hfZm91bmQgPSB5ZXMgXTsgdGhlbgotICAgIGhhdmU9SEFWRV9FUE9MTCAuIGF1dG8vaGF2ZQotICAgIGhhdmU9SEFWRV9DTEVBUl9FVkVOVCAuIGF1dG8vaGF2ZQorICAgIGhhdmU9TkdYX0hBVkVfQ0xFQVJfRVZFTlQgLiBhdXRvL2hhdmUKICAgICBDT1JFX1NSQ1M9IiRDT1JFX1NSQ1MgJEVQT0xMX1NSQ1MiCiAgICAgRVZFTlRfTU9EVUxFUz0iJEVWRU5UX01PRFVMRVMgJEVQT0xMX01PRFVMRSIKICAgICBFVkVOVF9GT1VORD1ZRVMKQEAgLTcyLDcgKzcyLDcgQEAKIAogQ0NfQVVYX0ZMQUdTPSItRF9HTlVfU09VUkNFIgogbmd4X2ZlYXR1cmU9InNlbmRmaWxlKCkiCi1uZ3hfZmVhdHVyZV9uYW1lPSJzZW5kZmlsZSIKK25neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX1NFTkRGSUxFIgogbmd4X2ZlYXR1cmVfcnVuPW5vCiBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+Igogbmd4X2ZlYXR1cmVfbGlicz0KQEAgLTkwLDcgKzkwLDcgQEAKIAogQ0NfQVVYX0ZMQUdTPSItRF9HTlVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCiBuZ3hfZmVhdHVyZT0ic2VuZGZpbGU2NCgpIgotbmd4X2ZlYXR1cmVfbmFtZT0iSEFWRV9TRU5ERklMRTY0Igorbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfU0VOREZJTEU2NCIKIG5neF9mZWF0dXJlX3J1bj1ubwogbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9zZW5kZmlsZS5oPiIKIG5neF9mZWF0dXJlX2xpYnM9CkBAIC0xMDUsNyArMTA1LDcgQEAKICMgcHJjdGwoUFJfU0VUX0RVTVBBQkxFKQogCiBuZ3hfZmVhdHVyZT0icHJjdGwoUFJfU0VUX0RVTVBBQkxFKSIKLW5neF9mZWF0dXJlX25hbWU9IkhBVkVfUFJfU0VUX0RVTVBBQkxFIgorbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfUFJfU0VUX0RVTVBBQkxFIgogbmd4X2ZlYXR1cmVfcnVuPXllcwogbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9wcmN0bC5oPiIKIG5neF9mZWF0dXJlX2xpYnM9CmRpZmYgLS1naXQgYS9hdXRvL29zL3NvbGFyaXMgYi9hdXRvL29zL3NvbGFyaXMKaW5kZXggNjI3MDhjZC4uNzIzYWQ4NCAxMDA2NDQKLS0tIGEvYXV0by9vcy9zb2xhcmlzCisrKyBiL2F1dG8vb3Mvc29sYXJpcwpAQCAtMjMsNyArMjMsNyBAQAogQ0NfQVVYX0ZMQUdTPSItRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1scnQiCiAKIAotY2FzZSAkUExBVEZPUk0gaW4KK2Nhc2UgJE5HWF9QTEFURk9STSBpbgogCiAgICAgKjpzdW40dSkKICAgICAgICAgIyAiLW1jcHU9djkiIGVuYWJsZXMgdGhlICJjYXNhIiBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb24KQEAgLTQzLDcgKzQzLDcgQEAKIAogCiBuZ3hfZmVhdHVyZT0ic2VuZGZpbGV2KCkiCi1uZ3hfZmVhdHVyZV9uYW1lPSJzZW5kZmlsZSIKK25neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX1NFTkRGSUxFIgogbmd4X2ZlYXR1cmVfcnVuPW5vCiBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+Igogbmd4X2ZlYXR1cmVfbGlicz0iLWxzZW5kZmlsZSIKQEAgLTU0LDcgKzU0LDYgQEAKIAogCiBpZiBbICRuZ3hfZm91bmQgPSB5ZXMgXTsgdGhlbgotICAgIGhhdmU9SEFWRV9TRU5ERklMRSAuIGF1dG8vaGF2ZQogICAgIENPUkVfU1JDUz0iJENPUkVfU1JDUyAkU09MQVJJU19TRU5ERklMRVZfU1JDUyIKICAgICBDT1JFX0xJQlM9IiRDT1JFX0xJQlMgLWxzZW5kZmlsZSIKIGZpCmRpZmYgLS1naXQgYS9hdXRvL29zL3dpbjMyIGIvYXV0by9vcy93aW4zMgppbmRleCBkZmJiMjQ2Li41NTY3NTM1IDEwMDY0NAotLS0gYS9hdXRvL29zL3dpbjMyCisrKyBiL2F1dG8vb3Mvd2luMzIKQEAgLTI2LDUgKzI2LDUgQEAKICAgICBFVkVOVF9NT0RVTEVTPSIkRVZFTlRfTU9EVUxFUyAkU0VMRUNUX01PRFVMRSIKIGZpCiAKLWhhdmU9SEFWRV9BSU8gLiBhdXRvL2hhdmUKLWhhdmU9SEFWRV9JT0NQIC4gYXV0by9oYXZlCitoYXZlPU5HWF9IQVZFX0FJTyAuIGF1dG8vaGF2ZQoraGF2ZT1OR1hfSEFWRV9JT0NQIC4gYXV0by9oYXZlCmRpZmYgLS1naXQgYS9hdXRvL3N1bW1hcnkgYi9hdXRvL3N1bW1hcnkKaW5kZXggYjhmYjgxZC4uMzlhMTU5OSAxMDA2NDQKLS0tIGEvYXV0by9zdW1tYXJ5CisrKyBiL2F1dG8vc3VtbWFyeQpAQCAtOTUsMTQgKzk1LDE0IEBACiBmaQogCiAKLWVjaG8gIiAgbmdpbnggcGF0aCBwcmVmaXg6ICRQUkVGSVgiCi1lY2hvICIgIG5naW54IGJpbmFyeSBmaWxlOiAkU0JJTl9QQVRIIgotZWNobyAiICBuZ2lueCBjb25maWd1cmF0aW9uIGZpbGU6ICRDT05GX1BBVEgiCi1lY2hvICIgIG5naW54IHBpZCBmaWxlOiAkUElEX1BBVEgiCi1pZiBbICIuJEVSUk9SX0xPR19QQVRIIiAhPSAiLiIgXTsgdGhlbgotICAgIGVjaG8gIiAgbmdpbnggZXJyb3IgbG9nIGZpbGU6ICRFUlJPUl9MT0dfUEFUSCIKK2VjaG8gIiAgbmdpbnggcGF0aCBwcmVmaXg6ICROR1hfUFJFRklYIgorZWNobyAiICBuZ2lueCBiaW5hcnkgZmlsZTogJE5HWF9TQklOX1BBVEgiCitlY2hvICIgIG5naW54IGNvbmZpZ3VyYXRpb24gZmlsZTogJE5HWF9DT05GX1BBVEgiCitlY2hvICIgIG5naW54IHBpZCBmaWxlOiAkTkdYX1BJRF9QQVRIIgoraWYgdGVzdCAtbiAiJE5HWF9FUlJPUl9MT0dfUEFUSCI7IHRoZW4KKyAgICBlY2hvICIgIG5naW54IGVycm9yIGxvZyBmaWxlOiAkTkdYX0VSUk9SX0xPR19QQVRIIgogZWxzZQogICAgIGVjaG8gIiAgbmdpbnggbG9ncyBlcnJvcnMgdG8gc3RkZXJyIgogZmkKLWVjaG8gIiAgbmdpbnggaHR0cCBhY2Nlc3MgbG9nIGZpbGU6ICRIVFRQX0xPR19QQVRIIgorZWNobyAiICBuZ2lueCBodHRwIGFjY2VzcyBsb2cgZmlsZTogJE5HWF9IVFRQX0xPR19QQVRIIgogZWNobwpkaWZmIC0tZ2l0IGEvYXV0by90aHJlYWRzIGIvYXV0by90aHJlYWRzCmluZGV4IGExMmVlZDMuLmRhMDMwMzYgMTAwNjQ0Ci0tLSBhL2F1dG8vdGhyZWFkcworKysgYi9hdXRvL3RocmVhZHMKQEAgLTksNyArOSw3IEBACiAgICAgICAgIENPUkVfREVQUz0iJENPUkVfREVQUyAkRlJFRUJTRF9SRk9SS19ERVBTIgogICAgICAgICBDT1JFX1NSQ1M9IiRDT1JFX1NSQ1MgJEZSRUVCU0RfUkZPUktfU1JDUyIKIAotICAgICAgICBjYXNlICRQTEFURk9STSBpbgorICAgICAgICBjYXNlICROR1hfUExBVEZPUk0gaW4KICAgICAgICAgICAgICo6aTM4NikKICAgICAgICAgICAgICAgICBpZiBbIFwoICR2ZXJzaW9uIC1ndCA1MDAwMDAgLWEgJHZlcnNpb24gLWx0IDUwMTAwMCBcKSBcCiAgICAgICAgICAgICAgICAgICAgICAtbyAkdmVyc2lvbiAtbHQgNDkxMDAwIF0KQEAgLTQyLDcgKzQyLDcgQEAKICAgICA7OwogCiAgICAgbGliY19yKQotICAgICAgICBjYXNlICRQTEFURk9STSBpbgorICAgICAgICBjYXNlICROR1hfUExBVEZPUk0gaW4KICAgICAgICAgICAgIEZyZWVCU0Q6WzM0XSopCiAgICAgICAgICAgICAgICAgaGF2ZT1OR1hfVEhSRUFEUyAuIGF1dG8vaGF2ZQogICAgICAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtcHRocmVhZCIKZGlmZiAtLWdpdCBhL2F1dG8vdW5peCBiL2F1dG8vdW5peAppbmRleCBmMGU3ZjJlLi43Y2QxZGZlIDEwMDc1NQotLS0gYS9hdXRvL3VuaXgKKysrIGIvYXV0by91bml4CkBAIC03NCw3ICs3NCw3IEBACiAKIAogbmd4X2ZlYXR1cmU9InNldHByb2N0aXRsZSgpIgotbmd4X2ZlYXR1cmVfbmFtZT0iSEFWRV9TRVRQUk9DVElUTEUiCituZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9TRVRQUk9DVElUTEUiCiBuZ3hfZmVhdHVyZV9ydW49bm8KIG5neF9mZWF0dXJlX2luY3M9CiBuZ3hfZmVhdHVyZV9saWJzPQpAQCAtODMsNyArODMsNyBAQAogCiAKIG5neF9mZWF0dXJlPSJwcmVhZCgpIgotbmd4X2ZlYXR1cmVfbmFtZT0icHJlYWQiCituZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9QUkVBRCIKIG5neF9mZWF0dXJlX3J1bj1ubwogbmd4X2ZlYXR1cmVfaW5jcz0KIG5neF9mZWF0dXJlX2xpYnM9CkBAIC05Miw3ICs5Miw3IEBACiAKIAogbmd4X2ZlYXR1cmU9InB3cml0ZSgpIgotbmd4X2ZlYXR1cmVfbmFtZT0icHdyaXRlIgorbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfUFdSSVRFIgogbmd4X2ZlYXR1cmVfcnVuPW5vCiBuZ3hfZmVhdHVyZV9pbmNzPQogbmd4X2ZlYXR1cmVfbGlicz0KQEAgLTEwMSw3ICsxMDEsNyBAQAogCiAKIG5neF9mZWF0dXJlPSJzdHJlcnJvcl9yKCkiCi1uZ3hfZmVhdHVyZV9uYW1lPSJzdHJlcnJvcl9yIgorbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfU1RSRVJST1JfUiIKIG5neF9mZWF0dXJlX3J1bj15ZXMKIG5neF9mZWF0dXJlX2luY3M9IiNpbmNsdWRlIDxzdHJpbmcuaD4iCiBuZ3hfZmVhdHVyZV9saWJzPQpAQCAtMTEzLDcgKzExMyw3IEBACiAjIEdOVSBzdHlsZSBzdHJlcnJvcl9yKCkgcmV0dXJucyBub3QgbGVuZ3RoLCBidXQgcG9pbnRlcgogCiBuZ3hfZmVhdHVyZT0iZ251IHN0eWxlIHN0cmVycm9yX3IoKSIKLW5neF9mZWF0dXJlX25hbWU9ImdudV9zdHJlcnJvcl9yIgorbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfR05VX1NUUkVSUk9SX1IiCiBuZ3hfZmVhdHVyZV9ydW49eWVzCiBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3RyaW5nLmg+Igogbmd4X2ZlYXR1cmVfbGlicz0KQEAgLTEyMyw3ICsxMjMsNyBAQAogCiAKIG5neF9mZWF0dXJlPSJsb2NhbHRpbWVfcigpIgotbmd4X2ZlYXR1cmVfbmFtZT0ibG9jYWx0aW1lX3IiCituZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9MT0NBTFRJTUVfUiIKIG5neF9mZWF0dXJlX3J1bj1ubwogbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHRpbWUuaD4iCiBuZ3hfZmVhdHVyZV9saWJzPQpAQCAtMTMyLDcgKzEzMiw3IEBACiAKIAogbmd4X2ZlYXR1cmU9InBvc2l4X21lbWFsaWduKCkiCi1uZ3hfZmVhdHVyZV9uYW1lPSJwb3NpeF9tZW1hbGlnbiIKK25neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX1BPU0lYX01FTUFMSUdOIgogbmd4X2ZlYXR1cmVfcnVuPW5vCiBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3RkbGliLmg+Igogbmd4X2ZlYXR1cmVfbGlicz0KQEAgLTE0MSw3ICsxNDEsNyBAQAogCiAKIG5neF9mZWF0dXJlPSJtZW1hbGlnbigpIgotbmd4X2ZlYXR1cmVfbmFtZT0ibWVtYWxpZ24iCituZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9NRU1BTElHTiIKIG5neF9mZWF0dXJlX3J1bj1ubwogbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN0ZGxpYi5oPiIKIG5neF9mZWF0dXJlX2xpYnM9CkBAIC0xNTAsNyArMTUwLDcgQEAKIAogCiBuZ3hfZmVhdHVyZT0ic2NoZWRfeWllbGQoKSIKLW5neF9mZWF0dXJlX25hbWU9IkhBVkVfU0NIRURfWUlFTEQiCituZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9TQ0hFRF9ZSUVMRCIKIG5neF9mZWF0dXJlX3J1bj1ubwogbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHNjaGVkLmg+Igogbmd4X2ZlYXR1cmVfbGlicz0KQEAgLTE1OSw3ICsxNTksNyBAQAogCiAKIG5neF9mZWF0dXJlPSJtbWFwKE1BUF9BTk9OfE1BUF9TSEFSRUQpIgotbmd4X2ZlYXR1cmVfbmFtZT0iTUFQX0FOT04iCituZ3hfZmVhdHVyZV9uYW1lPSJOR1hfSEFWRV9NQVBfQU5PTiIKIG5neF9mZWF0dXJlX3J1bj15ZXMKIG5neF9mZWF0dXJlX2luY3M9IiNpbmNsdWRlIDxzeXMvbW1hbi5oPiIKIG5neF9mZWF0dXJlX2xpYnM9CkBAIC0xNzEsNyArMTcxLDcgQEAKIAogCiBuZ3hfZmVhdHVyZT0nbW1hcCgiL2Rldi96ZXJvIiwgTUFQX1NIQVJFRCknCi1uZ3hfZmVhdHVyZV9uYW1lPSJNQVBfREVWWkVSTyIKK25neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX01BUF9ERVZaRVJPIgogbmd4X2ZlYXR1cmVfcnVuPXllcwogbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KQEAgLTE4NSw3ICsxODUsNyBAQAogCiAKIG5neF9mZWF0dXJlPSJTeXN0ZW0gViBzaGFyZWQgbWVtb3J5Igotbmd4X2ZlYXR1cmVfbmFtZT0iU1lTVlNITSIKK25neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX1NZU1ZTSE0iCiBuZ3hfZmVhdHVyZV9ydW49eWVzCiBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8c3lzL2lwYy5oPgogI2luY2x1ZGUgPHN5cy9zaG0uaD4iCkBAIC0xOTgsNyArMTk4LDcgQEAKIAogCiBuZ3hfZmVhdHVyZT0ic3RydWN0IG1zZ2hkci5tc2dfY29udHJvbCIKLW5neF9mZWF0dXJlX25hbWU9Im1zZ2hkcl9tc2dfY29udHJvbCIKK25neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX01TR0hEUl9NU0dfQ09OVFJPTCIKIG5neF9mZWF0dXJlX3J1bj1ubwogbmd4X2ZlYXR1cmVfaW5jcz0iI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4iCiBuZ3hfZmVhdHVyZV9saWJzPQpAQCAtMjA3LDcgKzIwNyw3IEBACiAKIAogbmd4X2ZlYXR1cmU9ImlvY3RsKEZJT05CSU8pIgotbmd4X2ZlYXR1cmVfbmFtZT0iRklPTkJJTyIKK25neF9mZWF0dXJlX25hbWU9Ik5HWF9IQVZFX0ZJT05CSU8iCiBuZ3hfZmVhdHVyZV9ydW49bm8KIG5neF9mZWF0dXJlX2luY3M9IiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICROR1hfSU5DTFVERV9TWVNfRklMSU9fSCIKQEAgLTIxNyw3ICsyMTcsNyBAQAogCiAKIG5neF9mZWF0dXJlPSJzdHJ1Y3QgdG0udG1fZ210b2ZmIgotbmd4X2ZlYXR1cmVfbmFtZT0iZ210b2ZmIgorbmd4X2ZlYXR1cmVfbmFtZT0iTkdYX0hBVkVfR01UT0ZGIgogbmd4X2ZlYXR1cmVfcnVuPW5vCiBuZ3hfZmVhdHVyZV9pbmNzPSIjaW5jbHVkZSA8dGltZS5oPiIKIG5neF9mZWF0dXJlX2xpYnM9CmRpZmYgLS1naXQgYS9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbCBiL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCmluZGV4IDQzZmRhODguLmY0NjBkYmIgMTAwNjQ0Ci0tLSBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCisrKyBiL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCkBAIC02LDYgKzYsNTQgQEAKICAgICAgICAgICAgIHRpdGxlPSJuZ2lueCI+CiAKIAorPGNoYW5nZXMgdmVyPSIwLjEuOSIgZGF0ZT0iMjUuMTEuMjAwNCI+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK8XTzMkg1yDawdDSz9PFIMXT1NggIi8vIiwgIi8uLyIsICIvLi4vIiDJzMkgIiVYWCIsINTPINDSz8vTydLVxc3Zygor2sHQ0s/TINDF0sXEwdfBzNPRIMLF2iDB0sfVzcXO1M/XLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIHByb3hpZWQgcmVxdWVzdCB3YXMgc2VudCB3aXRob3V0IGFyZ3VtZW50cyBpZiB0aGUgcmVxdWVzdCBjb250YWlucworIi8vIiwgIi8uLyIsICIvLi4vIiBvciAiJVhYIi4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0skg09bB1MnJIMLPzNjbycggz9TXxdTP1yDJzs/HxMEgz87JINDF0sXEwdfBzMnT2CDOxSDQz8zOz9PU2MAuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgbGFyZ2UgY29tcHJlc3NlZCByZXNwb25zZXMgbWF5IGJlIHRyYW5zZmVycmVkIG5vdCBjb21wbGV0ZWx5LgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK87FINDF0sXEwdfBzMnT2CDGwcrM2SDCz8zY28UgMkcgzsEgTGludXgsIM7F0M/ExMXS1snXwcDdxc0gc2VuZGZpbGU2NCgpLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIGZpbGVzIGJpZ2dlciB0aGFuIDJHIHdhcyBub3QgdHJhbnNmZXJyZWQgb24gTGludXggdGhhdCBkb2VzIG5vdCBzdXBwb3J0CitzZW5kZmlsZTY0KCkuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorzsEgTGludXgg0NLJIMvPzsbJx9XSwcPJySDTws/Sy8kgztXWzs8gwtnMzyDPwtHawdTFzNjOzyDJ09DPzNjaz9fB1NgKK9DB0sHNxdTSIC0td2l0aC1wb2xsX21vZHVsZTsKK8/bycLLwSDQz9HXyczB09gg1yAwLjEuOC4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3doaWxlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIG9uIExpbnV4IHRoZSAtLXdpdGgtcG9sbF9tb2R1bGUgcGFyYW1ldGVyCit3YXMgcmVxdWlyZWQ7CitidWcgYXBwZWFyZWQgaW4gMC4xLjguCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPC9jaGFuZ2VzPgorCisKIDxjaGFuZ2VzIHZlcj0iMC4xLjgiIGRhdGU9IjIwLjExLjIwMDQiPgogCiA8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5jIGIvc3JjL2NvcmUvbmdpbnguYwppbmRleCA1M2FjNjY2Li44ODdmYzc5IDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ2lueC5jCisrKyBiL3NyYy9jb3JlL25naW54LmMKQEAgLTExMiw3ICsxMTIsNyBAQAogCiAKIAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LCBjaGFyICpjb25zdCAqZW52cCkKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndikKIHsKICAgICBuZ3hfaW50X3QgICAgICAgICBpOwogICAgIG5neF9sb2dfdCAgICAgICAgKmxvZzsKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmggYi9zcmMvY29yZS9uZ2lueC5oCmluZGV4IDVmMjMzOWIuLmQ3MzdkNmIgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25naW54LmgKKysrIGIvc3JjL2NvcmUvbmdpbnguaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05HSU5YX0hfSU5DTFVERURfCiAKIAotI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS44IgorI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS45IgogCiAjZGVmaW5lIE5HSU5YX1ZBUiAgICAgICAgICAiTkdJTlgiCiAjZGVmaW5lIE5HWF9ORVdQSURfRVhUICAgICAiLm5ld2JpbiIKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9idWYuYyBiL3NyYy9jb3JlL25neF9idWYuYwppbmRleCA3ZDM3OTg5Li5kZWRmNDQ0IDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfYnVmLmMKKysrIGIvc3JjL2NvcmUvbmd4X2J1Zi5jCkBAIC0xNDAsNyArMTQwLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSNpZiAoSEFWRV9XUklURV9aRVJPQ09QWSkKKyNpZiAoTkdYX0hBVkVfV1JJVEVfWkVST0NPUFkpCiAgICAgICAgIGlmICgoKmJ1c3kpLT5idWYtPnplcm9jb3B5X2J1c3kpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ3hfY29uZmlnLmggYi9zcmMvY29yZS9uZ3hfY29uZmlnLmgKaW5kZXggNDNmZDk4NS4uOTE2YjFiNSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmd4X2NvbmZpZy5oCisrKyBiL3NyYy9jb3JlL25neF9jb25maWcuaApAQCAtMTEsNiArMTEsMTMgQEAKICNpbmNsdWRlIDxuZ3hfYXV0b19oZWFkZXJzLmg+CiAKIAorI2lmICgoX19HTlVfXyA9PSAyKSAmJiAoX19HTlVDX01JTk9SX18gPCA4KSkKKyNkZWZpbmUgTkdYX01BWF9VSU5UMzJfVkFMVUUgIDB4ZmZmZmZmZmZMTAorI2Vsc2UKKyNkZWZpbmUgTkdYX01BWF9VSU5UMzJfVkFMVUUgIDB4ZmZmZmZmZmYKKyNlbmRpZgorCisKICNpZiBkZWZpbmVkIF9fRHJhZ29uRmx5X18gJiYgIWRlZmluZWQgX19GcmVlQlNEX18KICNkZWZpbmUgX19GcmVlQlNEX18gICAgICAgIDQKICNkZWZpbmUgX19GcmVlQlNEX3ZlcnNpb24gIDQ4MDEwMQpAQCAtMTI3LDEyICsxMzQsNSBAQAogI2RlZmluZSBOR1hfTUFYSE9TVE5BTUVMRU4gTUFYSE9TVE5BTUVMRU4KICovCiAKLSNpZiAoKF9fR05VX18gPT0gMikgJiYgKF9fR05VQ19NSU5PUl9fIDwgOCkpCi0jZGVmaW5lIE5HWF9NQVhfVUlOVDMyX1ZBTFVFICAweGZmZmZmZmZmTEwKLSNlbHNlCi0jZGVmaW5lIE5HWF9NQVhfVUlOVDMyX1ZBTFVFICAweGZmZmZmZmZmCi0jZW5kaWYKLQotCiAKICNlbmRpZiAvKiBfTkdYX0NPTkZJR19IX0lOQ0xVREVEXyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X2Nvbm5lY3Rpb24uaCBiL3NyYy9jb3JlL25neF9jb25uZWN0aW9uLmgKaW5kZXggZTIyNTdhYy4uNDBmMTlhOCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmd4X2Nvbm5lY3Rpb24uaAorKysgYi9zcmMvY29yZS9uZ3hfY29ubmVjdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBACiAgICAgdW5zaWduZWQgICAgICAgICAgbm9uYmxvY2tpbmdfYWNjZXB0OjE7CiAgICAgdW5zaWduZWQgICAgICAgICAgbm9uYmxvY2tpbmc6MTsKICAgICB1bnNpZ25lZCAgICAgICAgICBzaGFyZWQ6MTsgICAgLyogc2hhcmVkIGJldHdlZW4gdGhyZWFkcyBvciBwcm9jZXNzZXMgKi8KLSNpZiAoSEFWRV9ERUZFUlJFRF9BQ0NFUFQpCisjaWYgKE5HWF9IQVZFX0RFRkVSUkVEX0FDQ0VQVCkKICAgICB1bnNpZ25lZCAgICAgICAgICBkZWZlcnJlZF9hY2NlcHQ6MTsKICNlbmRpZgogCkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICBuZ3hfc3NsX3QgICAgICAgICAgKnNzbDsKICNlbmRpZgogCi0jaWYgKEhBVkVfSU9DUCkKKyNpZiAoTkdYX0hBVkVfSU9DUCkKICAgICBzdHJ1Y3Qgc29ja2FkZHIgICAgKmxvY2FsX3NvY2thZGRyOwogICAgIHNvY2tsZW5fdCAgICAgICAgICAgbG9jYWxfc29ja2xlbjsKICNlbmRpZgpAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgdW5zaWduZWQgICAgICAgICAgICB0Y3Bfbm9kZWxheToxOwogICAgIHNpZ25lZCAgICAgICAgICAgICAgdGNwX25vcHVzaDoyOwogCi0jaWYgKEhBVkVfSU9DUCkKKyNpZiAoTkdYX0hBVkVfSU9DUCkKICAgICB1bnNpZ25lZCAgICAgICAgICAgIGFjY2VwdF9jb250ZXh0X3VwZGF0ZWQ6MTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ3hfb3V0cHV0X2NoYWluLmMgYi9zcmMvY29yZS9uZ3hfb3V0cHV0X2NoYWluLmMKaW5kZXggZDJmYmYxMi4uMWMzNjdjYyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmd4X291dHB1dF9jaGFpbi5jCisrKyBiL3NyYy9jb3JlL25neF9vdXRwdXRfY2hhaW4uYwpAQCAtOSwxMSArOSwxOCBAQAogI2luY2x1ZGUgPG5neF9ldmVudC5oPgogCiAKLSNkZWZpbmUgTkdYX05PTkUgICAgICAxCisjaWYgMAorI2RlZmluZSBOR1hfU0VOREZJTEVfTElNSVQgIDQwOTYKKyNlbmRpZgorCisKKyNkZWZpbmUgTkdYX05PTkUgICAgICAgICAgICAxCiAKIAogc3RhdGljIG5neF9pbmxpbmUgbmd4X2ludF90CiAgICAgbmd4X291dHB1dF9jaGFpbl9uZWVkX3RvX2NvcHkobmd4X291dHB1dF9jaGFpbl9jdHhfdCAqY3R4LCBuZ3hfYnVmX3QgKmJ1Zik7CitzdGF0aWMgbmd4X2ludF90IG5neF9vdXRwdXRfY2hhaW5fYWRkX2NvcHkobmd4X3Bvb2xfdCAqcG9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9jaGFpbl90ICoqY2hhaW4sIG5neF9jaGFpbl90ICppbik7CiBzdGF0aWMgbmd4X2ludF90IG5neF9vdXRwdXRfY2hhaW5fY29weV9idWYobmd4X2J1Zl90ICpkc3QsIG5neF9idWZfdCAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF91aW50X3Qgc2VuZGZpbGUpOwogCkBAIC0yNiwxNyArMzMsMjAgQEAKIAogICAgIGlmIChjdHgtPmluID09IE5VTEwgJiYgY3R4LT5idXN5ID09IE5VTEwpIHsKIAotICAgICAgIC8qCi0gICAgICAgICogdGhlIHNob3J0IHBhdGggZm9yIHRoZSBjYXNlIHdoZW4gdGhlIGN0eC0+aW4gYW5kIGN0eC0+YnVzeSBjaGFpbnMKLSAgICAgICAgKiBhcmUgZW1wdHksIHRoZSBpbmNvbWluZyBjaGFpbiBpcyBlbXB0eSB0b28gb3IgaGFzIHRoZSBzaW5nbGUgYnVmCi0gICAgICAgICogdGhhdCBkb2VzIG5vdCByZXF1aXJlIHRoZSBjb3B5Ci0gICAgICAgICovCisgICAgICAgIC8qCisgICAgICAgICAqIHRoZSBzaG9ydCBwYXRoIGZvciB0aGUgY2FzZSB3aGVuIHRoZSBjdHgtPmluIGFuZCBjdHgtPmJ1c3kgY2hhaW5zCisgICAgICAgICAqIGFyZSBlbXB0eSwgdGhlIGluY29taW5nIGNoYWluIGlzIGVtcHR5IHRvbyBvciBoYXMgdGhlIHNpbmdsZSBidWYKKyAgICAgICAgICogdGhhdCBkb2VzIG5vdCByZXF1aXJlIHRoZSBjb3B5CisgICAgICAgICAqLwogCiAgICAgICAgIGlmIChpbiA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gY3R4LT5vdXRwdXRfZmlsdGVyKGN0eC0+ZmlsdGVyX2N0eCwgaW4pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGluLT5uZXh0ID09IE5VTEwKKyNpZiAoTkdYX1NFTkRGSUxFX0xJTUlUKQorICAgICAgICAgICAgJiYgIShpbi0+YnVmLT5pbl9maWxlICYmIGluLT5idWYtPmZpbGVfbGFzdCA+IE5HWF9TRU5ERklMRV9MSU1JVCkKKyNlbmRpZgogICAgICAgICAgICAgJiYgKCFuZ3hfb3V0cHV0X2NoYWluX25lZWRfdG9fY29weShjdHgsIGluLT5idWYpKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGN0eC0+b3V0cHV0X2ZpbHRlcihjdHgtPmZpbHRlcl9jdHgsIGluKTsKQEAgLTQ2LDcgKzU2LDcgQEAKICAgICAvKiBhZGQgdGhlIGluY29taW5nIGJ1ZiB0byB0aGUgY2hhaW4gY3R4LT5pbiAqLwogCiAgICAgaWYgKGluKSB7Ci0gICAgICAgIGlmIChuZ3hfY2hhaW5fYWRkX2NvcHkoY3R4LT5wb29sLCAmY3R4LT5pbiwgaW4pID09IE5HWF9FUlJPUikgeworICAgICAgICBpZiAobmd4X291dHB1dF9jaGFpbl9hZGRfY29weShjdHgtPnBvb2wsICZjdHgtPmluLCBpbikgPT0gTkdYX0VSUk9SKSB7CiAgICAgICAgICAgICByZXR1cm4gTkdYX0VSUk9SOwogICAgICAgICB9CiAgICAgfQpAQCAtMTkxLDExICsyMDEsMjMgQEAKIHN0YXRpYyBuZ3hfaW5saW5lIG5neF9pbnRfdAogICAgIG5neF9vdXRwdXRfY2hhaW5fbmVlZF90b19jb3B5KG5neF9vdXRwdXRfY2hhaW5fY3R4X3QgKmN0eCwgbmd4X2J1Zl90ICpidWYpCiB7CisgICAgbmd4X3VpbnRfdCAgc2VuZGZpbGU7CisKICAgICBpZiAobmd4X2J1Zl9zcGVjaWFsKGJ1ZikpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKCFjdHgtPnNlbmRmaWxlKSB7CisgICAgc2VuZGZpbGUgPSBjdHgtPnNlbmRmaWxlOworCisjaWYgKE5HWF9TRU5ERklMRV9MSU1JVCkKKworICAgIGlmIChidWYtPmluX2ZpbGUgJiYgYnVmLT5maWxlX3BvcyA+PSBOR1hfU0VOREZJTEVfTElNSVQpIHsKKyAgICAgICAgc2VuZGZpbGUgPSAwOworICAgIH0KKworI2VuZGlmCisKKyAgICBpZiAoIXNlbmRmaWxlKSB7CiAKICAgICAgICAgaWYgKCFuZ3hfYnVmX2luX21lbW9yeShidWYpKSB7CiAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTIxNiw2ICsyMzgsNzEgQEAKIH0KIAogCitzdGF0aWMgbmd4X2ludF90IG5neF9vdXRwdXRfY2hhaW5fYWRkX2NvcHkobmd4X3Bvb2xfdCAqcG9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfY2hhaW5fdCAqKmNoYWluLCBuZ3hfY2hhaW5fdCAqaW4pCit7CisgICAgbmd4X2NoYWluX3QgICpjbCwgKipsbDsKKyNpZiAoTkdYX1NFTkRGSUxFX0xJTUlUKQorICAgIG5neF9idWZfdCAgICAqYiwgKmJ1ZjsKKyNlbmRpZgorCisgICAgbGwgPSBjaGFpbjsKKworICAgIGZvciAoY2wgPSAqY2hhaW47IGNsOyBjbCA9IGNsLT5uZXh0KSB7CisgICAgICAgIGxsID0gJmNsLT5uZXh0OworICAgIH0KKworICAgIHdoaWxlIChpbikgeworCisgICAgICAgIGlmICghKGNsID0gbmd4X2FsbG9jX2NoYWluX2xpbmsocG9vbCkpKSB7CisgICAgICAgICAgICByZXR1cm4gTkdYX0VSUk9SOworICAgICAgICB9CisKKyNpZiAoTkdYX1NFTkRGSUxFX0xJTUlUKQorCisgICAgICAgIGJ1ZiA9IGluLT5idWY7CisKKyAgICAgICAgaWYgKGJ1Zi0+aW5fZmlsZQorICAgICAgICAgICAgJiYgYnVmLT5maWxlX3BvcyA8IE5HWF9TRU5ERklMRV9MSU1JVAorICAgICAgICAgICAgJiYgYnVmLT5maWxlX2xhc3QgPiBOR1hfU0VOREZJTEVfTElNSVQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghKGIgPSBuZ3hfY2FsbG9jX2J1Zihwb29sKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0VSUk9SOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBuZ3hfbWVtY3B5KGIsIGJ1Ziwgc2l6ZW9mKG5neF9idWZfdCkpOworCisgICAgICAgICAgICBpZiAobmd4X2J1Zl9pbl9tZW1vcnkoYnVmKSkgeworICAgICAgICAgICAgICAgIGJ1Zi0+cG9zICs9IChzc2l6ZV90KSAoTkdYX1NFTkRGSUxFX0xJTUlUIC0gYnVmLT5maWxlX3Bvcyk7CisgICAgICAgICAgICAgICAgYi0+bGFzdCA9IGJ1Zi0+cG9zOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWYtPmZpbGVfcG9zID0gTkdYX1NFTkRGSUxFX0xJTUlUOworICAgICAgICAgICAgYi0+ZmlsZV9sYXN0ID0gTkdYX1NFTkRGSUxFX0xJTUlUOworCisgICAgICAgICAgICBjbC0+YnVmID0gYjsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2wtPmJ1ZiA9IGJ1ZjsKKyAgICAgICAgICAgIGluID0gaW4tPm5leHQ7CisgICAgICAgIH0KKworI2Vsc2UKKyAgICAgICAgY2wtPmJ1ZiA9IGluLT5idWY7CisgICAgICAgIGluID0gaW4tPm5leHQ7CisKKyNlbmRpZgorCisgICAgICAgICpsbCA9IGNsOworICAgICAgICBsbCA9ICZjbC0+bmV4dDsKKyAgICB9CisKKyAgICAqbGwgPSBOVUxMOworCisgICAgcmV0dXJuIE5HWF9PSzsKK30KKworCiBzdGF0aWMgbmd4X2ludF90IG5neF9vdXRwdXRfY2hhaW5fY29weV9idWYobmd4X2J1Zl90ICpkc3QsIG5neF9idWZfdCAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF91aW50X3Qgc2VuZGZpbGUpCiB7CkBAIC0yMjgsNiArMzE1LDE0IEBACiAgICAgICAgIHNpemUgPSBkc3QtPmVuZCAtIGRzdC0+cG9zOwogICAgIH0KIAorI2lmIChOR1hfU0VOREZJTEVfTElNSVQpCisKKyAgICBpZiAoc3JjLT5pbl9maWxlICYmIHNyYy0+ZmlsZV9wb3MgPj0gTkdYX1NFTkRGSUxFX0xJTUlUKSB7CisgICAgICAgIHNlbmRmaWxlID0gMDsKKyAgICB9CisKKyNlbmRpZgorCiAgICAgaWYgKG5neF9idWZfaW5fbWVtb3J5KHNyYykpIHsKICAgICAgICAgbmd4X21lbWNweShkc3QtPnBvcywgc3JjLT5wb3MsIHNpemUpOwogICAgICAgICBzcmMtPnBvcyArPSBzaXplOwpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X3RpbWVzLmMgYi9zcmMvY29yZS9uZ3hfdGltZXMuYwppbmRleCBmMDZkNjQ0Li41Y2EyMzVjIDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ3hfdGltZXMuYworKysgYi9zcmMvY29yZS9uZ3hfdGltZXMuYwpAQCAtMTYyLDEyICsxNjIsMTIgQEAKICAgICBuZ3hfY2FjaGVkX2h0dHBfdGltZS5kYXRhID0gcDsKIAogCi0jaWYgKEhBVkVfR0VUVElNRVpPTkUpCisjaWYgKE5HWF9IQVZFX0dFVFRJTUVaT05FKQogCiAgICAgbmd4X2dtdG9mZiA9IG5neF9nZXR0aW1lem9uZSgpOwogICAgIG5neF9nbXRpbWUocyArIG5neF9nbXRvZmYgKiA2MCwgJnRtKTsKIAotI2VsaWYgKEhBVkVfR01UT0ZGKQorI2VsaWYgKE5HWF9IQVZFX0dNVE9GRikKIAogICAgIG5neF9sb2NhbHRpbWUoJnRtKTsKICAgICBuZ3hfZ210b2ZmID0gdG0ubmd4X3RtX2dtdG9mZiAvIDYwOwpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2Fpb19tb2R1bGUuYyBiL3NyYy9ldmVudC9tb2R1bGVzL25neF9haW9fbW9kdWxlLmMKaW5kZXggMzk4YzU3MS4uYmRkMzFjZiAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2Fpb19tb2R1bGUuYworKysgYi9zcmMvZXZlbnQvbW9kdWxlcy9uZ3hfYWlvX21vZHVsZS5jCkBAIC05LDcgKzksNyBAQAogI2luY2x1ZGUgPG5neF9ldmVudC5oPgogI2luY2x1ZGUgPG5neF9haW8uaD4KIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogI2luY2x1ZGUgPG5neF9rcXVldWVfbW9kdWxlLmg+CiAjZW5kaWYKIApAQCAtMjcsNyArMjcsNyBAQAogICAgIG5neF9haW9fcmVhZF9jaGFpbiwKICAgICBuZ3hfYWlvX3dyaXRlLAogICAgIG5neF9haW9fd3JpdGVfY2hhaW4sCi0gICAgTkdYX0hBVkVfWkVST0NPUFkKKyAgICAwCiB9OwogCiAKQEAgLTY0LDcgKzY0LDcgQEAKIAogCiAKLSNpZiAoSEFWRV9LUVVFVUUpCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkKIAogc3RhdGljIGludCBuZ3hfYWlvX2luaXQobmd4X2N5Y2xlX3QgKmN5Y2xlKQogewpAQCAtMTUyLDcgKzE1Miw3IEBACiAgICAgcmV0dXJuIG5neF9rcXVldWVfbW9kdWxlX2N0eC5hY3Rpb25zLnByb2Nlc3NfZXZlbnRzKGN5Y2xlKTsKIH0KIAotI2VuZGlmIC8qIEhBVkVfS1FVRVVFICovCisjZW5kaWYgLyogTkdYX0hBVkVfS1FVRVVFICovCiAKIAogI2lmIDAKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9tb2R1bGVzL25neF9kZXZwb2xsX21vZHVsZS5jIGIvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2RldnBvbGxfbW9kdWxlLmMKaW5kZXggNjYzZTJiZi4uMWE0OGNlYyAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2RldnBvbGxfbW9kdWxlLmMKKysrIGIvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2RldnBvbGxfbW9kdWxlLmMKQEAgLTksNyArOSw3IEBACiAjaW5jbHVkZSA8bmd4X2V2ZW50Lmg+CiAKIAotI2lmIChURVNUX0JVSUxEX0RFVlBPTEwpCisjaWYgKE5HWF9URVNUX0JVSUxEX0RFVlBPTEwpCiAKIC8qIFNvbGFyaXMgZGVjbGFyYXRpb25zICovCiAKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9tb2R1bGVzL25neF9lcG9sbF9tb2R1bGUuYyBiL3NyYy9ldmVudC9tb2R1bGVzL25neF9lcG9sbF9tb2R1bGUuYwppbmRleCA4MDk2OTMyLi5hMmVlYWIwIDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbW9kdWxlcy9uZ3hfZXBvbGxfbW9kdWxlLmMKKysrIGIvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2Vwb2xsX21vZHVsZS5jCkBAIC05LDcgKzksNyBAQAogI2luY2x1ZGUgPG5neF9ldmVudC5oPgogCiAKLSNpZiAoVEVTVF9CVUlMRF9FUE9MTCkKKyNpZiAoTkdYX1RFU1RfQlVJTERfRVBPTEwpCiAKIC8qIGVwb2xsIGRlY2xhcmF0aW9ucyAqLwogCkBAIC0xNjgsNyArMTY4LDcgQEAKIAogICAgIG5neF9ldmVudF9hY3Rpb25zID0gbmd4X2Vwb2xsX21vZHVsZV9jdHguYWN0aW9uczsKIAotI2lmIChIQVZFX0NMRUFSX0VWRU5UKQorI2lmIChOR1hfSEFWRV9DTEVBUl9FVkVOVCkKICAgICBuZ3hfZXZlbnRfZmxhZ3MgPSBOR1hfVVNFX0NMRUFSX0VWRU5UCiAjZWxzZQogICAgIG5neF9ldmVudF9mbGFncyA9IE5HWF9VU0VfTEVWRUxfRVZFTlQKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9tb2R1bGVzL25neF9rcXVldWVfbW9kdWxlLmMgYi9zcmMvZXZlbnQvbW9kdWxlcy9uZ3hfa3F1ZXVlX21vZHVsZS5jCmluZGV4IGUwZmFlNmYuLjQ5YzIyYTkgMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9tb2R1bGVzL25neF9rcXVldWVfbW9kdWxlLmMKKysrIGIvc3JjL2V2ZW50L21vZHVsZXMvbmd4X2txdWV1ZV9tb2R1bGUuYwpAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgbmd4X2V2ZW50X2FjdGlvbnMgPSBuZ3hfa3F1ZXVlX21vZHVsZV9jdHguYWN0aW9uczsKIAogICAgIG5neF9ldmVudF9mbGFncyA9IE5HWF9VU0VfT05FU0hPVF9FVkVOVAotI2lmIChIQVZFX0NMRUFSX0VWRU5UKQorI2lmIChOR1hfSEFWRV9DTEVBUl9FVkVOVCkKICAgICAgICAgICAgICAgICAgICAgIHxOR1hfVVNFX0NMRUFSX0VWRU5UCiAjZWxzZQogICAgICAgICAgICAgICAgICAgICAgfE5HWF9VU0VfTEVWRUxfRVZFTlQKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9tb2R1bGVzL25neF9ydHNpZ19tb2R1bGUuYyBiL3NyYy9ldmVudC9tb2R1bGVzL25neF9ydHNpZ19tb2R1bGUuYwppbmRleCAzYzBlYTk1Li5kMDE3ZjA1IDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbW9kdWxlcy9uZ3hfcnRzaWdfbW9kdWxlLmMKKysrIGIvc3JjL2V2ZW50L21vZHVsZXMvbmd4X3J0c2lnX21vZHVsZS5jCkBAIC05LDcgKzksNyBAQAogI2luY2x1ZGUgPG5neF9ldmVudC5oPgogCiAKLSNpZiAoVEVTVF9CVUlMRF9SVFNJRykKKyNpZiAoTkdYX1RFU1RfQlVJTERfUlRTSUcpCiAKICNkZWZpbmUgRl9TRVRTSUcgICAgICAgMTAKICNkZWZpbmUgU0lHUlRNSU4gICAgICAgMzMKQEAgLTIxNyw3ICsyMTcsNyBAQAogICAgICAgICByZXR1cm4gTkdYX0VSUk9SOwogICAgIH0KIAotI2lmIChIQVZFX09ORVNJR0ZEKQorI2lmIChOR1hfSEFWRV9PTkVTSUdGRCkKICAgICBpZiAoZmNudGwoYy0+ZmQsIEZfU0VUQVVYRkwsIE9fT05FU0lHRkQpID09IC0xKSB7CiAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgYy0+bG9nLCBuZ3hfZXJybm8sCiAgICAgICAgICAgICAgICAgICAgICAgImZjbnRsKEZfU0VUQVVYRkwpIGZhaWxlZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L21vZHVsZXMvbmd4X3NlbGVjdF9tb2R1bGUuYyBiL3NyYy9ldmVudC9tb2R1bGVzL25neF9zZWxlY3RfbW9kdWxlLmMKaW5kZXggMTRlNmY4MS4uMDU1NGVlOSAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L21vZHVsZXMvbmd4X3NlbGVjdF9tb2R1bGUuYworKysgYi9zcmMvZXZlbnQvbW9kdWxlcy9uZ3hfc2VsZWN0X21vZHVsZS5jCkBAIC0yNTgsNyArMjU4LDcgQEAKICAgICBuZ3hfY29ubmVjdGlvbl90ICAgICAgICAgKmM7CiAgICAgbmd4X2Vwb2NoX21zZWNfdCAgICAgICAgICBkZWx0YTsKICAgICBzdHJ1Y3QgdGltZXZhbCAgICAgICAgICAgIHR2LCAqdHA7Ci0jaWYgKEhBVkVfU0VMRUNUX0NIQU5HRV9USU1FT1VUKQorI2lmIChOR1hfSEFWRV9TRUxFQ1RfQ0hBTkdFX1RJTUVPVVQpCiAgICAgc3RhdGljIG5neF9lcG9jaF9tc2VjX3QgICBkZWx0YXMgPSAwOwogI2VuZGlmCiAKQEAgLTM2Miw3ICszNjIsNyBAQAogICAgICAgICBlcnIgPSAwOwogICAgIH0KIAotI2lmIChIQVZFX1NFTEVDVF9DSEFOR0VfVElNRU9VVCkKKyNpZiAoTkdYX0hBVkVfU0VMRUNUX0NIQU5HRV9USU1FT1VUKQogCiAgICAgaWYgKHRpbWVyICE9IE5HWF9USU1FUl9JTkZJTklURSkgewogICAgICAgICBkZWx0YSA9IHRpbWVyIC0gKHR2LnR2X3NlYyAqIDEwMDAgKyB0di50dl91c2VjIC8gMTAwMCk7CkBAIC00MDMsNyArNDAzLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotI2Vsc2UgLyogIShIQVZFX1NFTEVDVF9DSEFOR0VfVElNRU9VVCkgKi8KKyNlbHNlIC8qICEoTkdYX0hBVkVfU0VMRUNUX0NIQU5HRV9USU1FT1VUKSAqLwogCiAgICAgbmd4X2dldHRpbWVvZmRheSgmdHYpOwogICAgIG5neF90aW1lX3VwZGF0ZSh0di50dl9zZWMpOwpAQCAtNDI3LDcgKzQyNyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSNlbmRpZiAvKiBIQVZFX1NFTEVDVF9DSEFOR0VfVElNRU9VVCAqLworI2VuZGlmIC8qIE5HWF9IQVZFX1NFTEVDVF9DSEFOR0VfVElNRU9VVCAqLwogCiAgICAgbmd4X2xvZ19kZWJ1ZzEoTkdYX0xPR19ERUJVR19FVkVOVCwgY3ljbGUtPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAic2VsZWN0IHJlYWR5ICVkIiwgcmVhZHkpOwpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L25neF9ldmVudC5jIGIvc3JjL2V2ZW50L25neF9ldmVudC5jCmluZGV4IGIzYmY1MzAuLmJkNDUxYmMgMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9uZ3hfZXZlbnQuYworKysgYi9zcmMvZXZlbnQvbmd4X2V2ZW50LmMKQEAgLTM3MSw3ICszNzEsNyBAQAogCiAgICAgICAgIHJldi0+YWNjZXB0ID0gMTsKIAotI2lmIChIQVZFX0RFRkVSUkVEX0FDQ0VQVCkKKyNpZiAoTkdYX0hBVkVfREVGRVJSRURfQUNDRVBUKQogICAgICAgICByZXYtPmRlZmVycmVkX2FjY2VwdCA9IHNbaV0uZGVmZXJyZWRfYWNjZXB0OwogI2VuZGlmCiAKQEAgLTcxOSw3ICs3MTksNyBAQAogICAgIHJ0c2lnID0gMDsKICAgICBmZCA9IDA7CiAKLSNpZiAoSEFWRV9FUE9MTCkgJiYgIShURVNUX0JVSUxEX0VQT0xMKQorI2lmIChOR1hfSEFWRV9FUE9MTCkgJiYgIShOR1hfVEVTVF9CVUlMRF9FUE9MTCkKIAogICAgIGZkID0gZXBvbGxfY3JlYXRlKDEwMCk7CiAKQEAgLTczNSw3ICs3MzUsNyBAQAogCiAjZW5kaWYKIAotI2lmIChIQVZFX1JUU0lHKQorI2lmIChOR1hfSEFWRV9SVFNJRykKIAogICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgewogICAgICAgICBjb25uZWN0aW9ucyA9IERFRkFVTFRfQ09OTkVDVElPTlM7CkBAIC03NDUsMjEgKzc0NSwyMSBAQAogCiAjZW5kaWYKIAotI2lmIChIQVZFX0RFVlBPTEwpCisjaWYgKE5HWF9IQVZFX0RFVlBPTEwpCiAKICAgICBjb25uZWN0aW9ucyA9IERFRkFVTFRfQ09OTkVDVElPTlM7CiAgICAgbW9kdWxlID0gJm5neF9kZXZwb2xsX21vZHVsZTsKIAogI2VuZGlmCiAKLSNpZiAoSEFWRV9LUVVFVUUpCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkKIAogICAgIGNvbm5lY3Rpb25zID0gREVGQVVMVF9DT05ORUNUSU9OUzsKICAgICBtb2R1bGUgPSAmbmd4X2txdWV1ZV9tb2R1bGU7CiAKICNlbmRpZgogCi0jaWYgKEhBVkVfU0VMRUNUKQorI2lmIChOR1hfSEFWRV9TRUxFQ1QpCiAKICAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKIApkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L25neF9ldmVudC5oIGIvc3JjL2V2ZW50L25neF9ldmVudC5oCmluZGV4IDQ0NzI4ZTMuLmQxNTZhNjMgMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9uZ3hfZXZlbnQuaAorKysgYi9zcmMvZXZlbnQvbmd4X2V2ZW50LmgKQEAgLTE1LDcgKzE1LDcgQEAKICNkZWZpbmUgTkdYX0lOVkFMSURfSU5ERVggIDB4ZDBkMGQwZDAKIAogCi0jaWYgKEhBVkVfSU9DUCkKKyNpZiAoTkdYX0hBVkVfSU9DUCkKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFdTQU9WRVJMQVBQRUQgICAgb3ZscDsKQEAgLTg2LDcgKzg2LDcgQEAKICAgICB1bnNpZ25lZCAgICAgICAgIGFjY2VwdF9jb250ZXh0X3VwZGF0ZWQ6MTsKICNlbmRpZgogCi0jaWYgKEhBVkVfS1FVRVVFKQorI2lmIChOR1hfSEFWRV9LUVVFVUUpCiAgICAgdW5zaWduZWQgICAgICAgICBrcV92bm9kZToxOwogCiAgICAgLyogdGhlIHBlbmRpbmcgZXJybm8gcmVwb3J0ZWQgYnkga3F1ZXVlICovCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgKiAgIGFjY2VwdDogICAgIDEgaWYgYWNjZXB0IG1hbnksIDAgb3RoZXJ3aXNlCiAgICAgICovCiAKLSNpZiAoSEFWRV9LUVVFVUUpIHx8IChIQVZFX0lPQ1ApCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkgfHwgKE5HWF9IQVZFX0lPQ1ApCiAgICAgaW50ICAgICAgICAgICAgICBhdmFpbGFibGU7CiAjZWxzZQogICAgIHVuc2lnbmVkICAgICAgICAgYXZhaWxhYmxlOjE7CkBAIC0xMTcsOSArMTE3LDkgQEAKICAgICBuZ3hfZXZlbnRfaGFuZGxlcl9wdCAgZXZlbnRfaGFuZGxlcjsKIAogCi0jaWYgKEhBVkVfQUlPKQorI2lmIChOR1hfSEFWRV9BSU8pCiAKLSNpZiAoSEFWRV9JT0NQKQorI2lmIChOR1hfSEFWRV9JT0NQKQogICAgIG5neF9ldmVudF9vdmxwX3Qgb3ZscDsKICNlbHNlCiAgICAgc3RydWN0IGFpb2NiICAgICBhaW9jYjsKQEAgLTE1NCwxMiArMTU0LDEyIEBACiAgICAgdW5zaWduZWQgICAgICAgICBwb3N0ZWRfdGltZWRvdXQ6MTsKICAgICB1bnNpZ25lZCAgICAgICAgIHBvc3RlZF9lb2Y6MTsKIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogICAgIC8qIHRoZSBwZW5kaW5nIGVycm5vIHJlcG9ydGVkIGJ5IGtxdWV1ZSAqLwogICAgIGludCAgICAgICAgICAgICAgcG9zdGVkX2Vycm5vOwogI2VuZGlmCiAKLSNpZiAoSEFWRV9LUVVFVUUpIHx8IChIQVZFX0lPQ1ApCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkgfHwgKE5HWF9IQVZFX0lPQ1ApCiAgICAgaW50ICAgICAgICAgICAgICBwb3N0ZWRfYXZhaWxhYmxlOwogI2Vsc2UKICAgICB1bnNpZ25lZCAgICAgICAgIHBvc3RlZF9hdmFpbGFibGU6MTsKQEAgLTI3Miw3ICsyNzIsNyBAQAogCiAvKgogICogTmVlZCB0byBhZGQgc29ja2V0IG9yIGhhbmRsZSBvbmx5IG9uY2UgLSBpL28gY29tcGxldGlvbiBwb3J0LgotICogSXQgYWxzbyByZXF1aXJlcyBIQVZFX0FJTyBhbmQgTkdYX1VTRV9BSU9fRVZFTlQgdG8gYmUgc2V0LgorICogSXQgYWxzbyByZXF1aXJlcyBOR1hfSEFWRV9BSU8gYW5kIE5HWF9VU0VfQUlPX0VWRU5UIHRvIGJlIHNldC4KICAqLwogI2RlZmluZSBOR1hfVVNFX0lPQ1BfRVZFTlQgICAgICAgMHgwMDAwMDIwMAogCkBAIC0yOTYsNyArMjk2LDcgQEAKICNkZWZpbmUgTkdYX1ZOT0RFX0VWRU5UICAgIDAKIAogCi0jaWYgKEhBVkVfS1FVRVVFKQorI2lmIChOR1hfSEFWRV9LUVVFVUUpCiAKICNkZWZpbmUgTkdYX1JFQURfRVZFTlQgICAgIEVWRklMVF9SRUFECiAjZGVmaW5lIE5HWF9XUklURV9FVkVOVCAgICBFVkZJTFRfV1JJVEUKQEAgLTMyNSw3ICszMjUsNyBAQAogI2RlZmluZSBOR1hfRElTQUJMRV9FVkVOVCAgRVZfRElTQUJMRQogCiAKLSNlbGlmIChIQVZFX0RFVlBPTEwpCisjZWxpZiAoTkdYX0hBVkVfREVWUE9MTCkKIAogI2RlZmluZSBOR1hfUkVBRF9FVkVOVCAgICAgUE9MTElOCiAjZGVmaW5lIE5HWF9XUklURV9FVkVOVCAgICBQT0xMT1VUCkBAIC0zMzQsNyArMzM0LDcgQEAKICNkZWZpbmUgTkdYX09ORVNIT1RfRVZFTlQgIDEKIAogCi0jZWxpZiAoSEFWRV9FUE9MTCkKKyNlbGlmIChOR1hfSEFWRV9FUE9MTCkKIAogI2RlZmluZSBOR1hfUkVBRF9FVkVOVCAgICAgRVBPTExJTgogI2RlZmluZSBOR1hfV1JJVEVfRVZFTlQgICAgRVBPTExPVVQKQEAgLTM0Nyw3ICszNDcsNyBAQAogI2VuZGlmCiAKIAotI2VsaWYgKEhBVkVfUE9MTCkKKyNlbGlmIChOR1hfSEFWRV9QT0xMKQogCiAjZGVmaW5lIE5HWF9SRUFEX0VWRU5UICAgICBQT0xMSU4KICNkZWZpbmUgTkdYX1dSSVRFX0VWRU5UICAgIFBPTExPVVQKQEAgLTM2NCwxMCArMzY0LDEwIEBACiAjZGVmaW5lIE5HWF9MRVZFTF9FVkVOVCAgICAwCiAjZGVmaW5lIE5HWF9PTkVTSE9UX0VWRU5UICAxCiAKLSNlbmRpZiAvKiBIQVZFX0tRVUVVRSAqLworI2VuZGlmIC8qIE5HWF9IQVZFX0tRVUVVRSAqLwogCiAKLSNpZiAoSEFWRV9JT0NQKQorI2lmIChOR1hfSEFWRV9JT0NQKQogI2RlZmluZSBOR1hfSU9DUF9BQ0NFUFQgICAgICAwCiAjZGVmaW5lIE5HWF9JT0NQX0lPICAgICAgICAgIDEKICNkZWZpbmUgTkdYX0lPQ1BfQ09OTkVDVCAgICAgMgpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L25neF9ldmVudF9vcGVuc3NsLmMgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X29wZW5zc2wuYwppbmRleCBiNWM1YjcyLi4yOTRmM2I0IDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbmd4X2V2ZW50X29wZW5zc2wuYworKysgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X29wZW5zc2wuYwpAQCAtOSw3ICs5LDcgQEAKICNpbmNsdWRlIDxuZ3hfZXZlbnQuaD4KIAogCi1zdGF0aWMgbmd4X2ludF90IG5neF9zc2xfd3JpdGUobmd4X2Nvbm5lY3Rpb25fdCAqYywgdV9jaGFyICpkYXRhLCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgc3NpemVfdCBuZ3hfc3NsX3dyaXRlKG5neF9jb25uZWN0aW9uX3QgKmMsIHVfY2hhciAqZGF0YSwgc2l6ZV90IHNpemUpOwogCiAKIG5neF9pbnRfdCBuZ3hfc3NsX2luaXQobmd4X2xvZ190ICpsb2cpCkBAIC01OCw3ICs1OCw3IEBACiB9CiAKIAotbmd4X2ludF90IG5neF9zc2xfcmVjdihuZ3hfY29ubmVjdGlvbl90ICpjLCB1X2NoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCitzc2l6ZV90IG5neF9zc2xfcmVjdihuZ3hfY29ubmVjdGlvbl90ICpjLCB1X2NoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7CiAgICAgaW50ICAgICAgICAgbiwgc3NsZXJyOwogICAgIG5neF9lcnJfdCAgIGVycjsKQEAgLTIzOSw3ICsyMzksNyBAQAogfQogCiAKLXN0YXRpYyBuZ3hfaW50X3Qgbmd4X3NzbF93cml0ZShuZ3hfY29ubmVjdGlvbl90ICpjLCB1X2NoYXIgKmRhdGEsIHNpemVfdCBzaXplKQorc3RhdGljIHNzaXplX3Qgbmd4X3NzbF93cml0ZShuZ3hfY29ubmVjdGlvbl90ICpjLCB1X2NoYXIgKmRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGludCAgICAgICAgIG4sIHNzbGVycjsKICAgICBuZ3hfZXJyX3QgICBlcnI7CmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbmd4X2V2ZW50X29wZW5zc2wuaCBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5oCmluZGV4IDY5ZDhkMTIuLmRiZGI1ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5oCisrKyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5oCkBAIC00MSw3ICs0MSw3IEBACiAKICNkZWZpbmUgbmd4X3NzbF9oYW5kc2hha2UoYykgICAgIE5HWF9PSwogCi1uZ3hfaW50X3Qgbmd4X3NzbF9yZWN2KG5neF9jb25uZWN0aW9uX3QgKmMsIHVfY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSk7Citzc2l6ZV90IG5neF9zc2xfcmVjdihuZ3hfY29ubmVjdGlvbl90ICpjLCB1X2NoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpOwogbmd4X2NoYWluX3QgKm5neF9zc2xfc2VuZF9jaGFpbihuZ3hfY29ubmVjdGlvbl90ICpjLCBuZ3hfY2hhaW5fdCAqaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZl90IGxpbWl0KTsKIG5neF9pbnRfdCBuZ3hfc3NsX3NodXRkb3duKG5neF9jb25uZWN0aW9uX3QgKmMpOwpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L25neF9ldmVudF9waXBlLmMgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X3BpcGUuYwppbmRleCBhMmVkYzcxLi4zY2E4YTBjIDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbmd4X2V2ZW50X3BpcGUuYworKysgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X3BpcGUuYwpAQCAtMTMyLDcgKzEzMiw3IEBACiAgICAgICAgICAgICAgICAgcC0+dXBzdHJlYW1fZW9mID0gMTsKICAgICAgICAgICAgICAgICBwLT5yZWFkID0gMTsKIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogICAgICAgICAgICAgICAgIGlmIChwLT51cHN0cmVhbS0+cmVhZC0+a3FfZXJybm8pIHsKICAgICAgICAgICAgICAgICAgICAgcC0+dXBzdHJlYW0tPnJlYWQtPmVycm9yID0gMTsKICAgICAgICAgICAgICAgICAgICAgcC0+dXBzdHJlYW1fZXJyb3IgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L25neF9ldmVudF9wb3N0ZWQuYyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfcG9zdGVkLmMKaW5kZXggYWVkMDdmYS4uYTk5YTQzNCAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L25neF9ldmVudF9wb3N0ZWQuYworKysgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X3Bvc3RlZC5jCkBAIC0xMjAsNyArMTIwLDcgQEAKICAgICAgICAgICAgIGV2LT5yZWFkeSB8PSBldi0+cG9zdGVkX3JlYWR5OwogICAgICAgICAgICAgZXYtPnRpbWVkb3V0IHw9IGV2LT5wb3N0ZWRfdGltZWRvdXQ7CiAgICAgICAgICAgICBldi0+cGVuZGluZ19lb2YgfD0gZXYtPnBvc3RlZF9lb2Y7Ci0jaWYgKEhBVkVfS1FVRVVFKQorI2lmIChOR1hfSEFWRV9LUVVFVUUpCiAgICAgICAgICAgICBldi0+a3FfZXJybm8gfD0gZXYtPnBvc3RlZF9lcnJubzsKICNlbmRpZgogICAgICAgICAgICAgaWYgKGV2LT5wb3N0ZWRfYXZhaWxhYmxlKSB7CkBAIC0xMzAsNyArMTMwLDcgQEAKICAgICAgICAgICAgIGV2LT5wb3N0ZWRfcmVhZHkgPSAwOwogICAgICAgICAgICAgZXYtPnBvc3RlZF90aW1lZG91dCA9IDA7CiAgICAgICAgICAgICBldi0+cG9zdGVkX2VvZiA9IDA7Ci0jaWYgKEhBVkVfS1FVRVVFKQorI2lmIChOR1hfSEFWRV9LUVVFVUUpCiAgICAgICAgICAgICBldi0+cG9zdGVkX2Vycm5vID0gMDsKICNlbmRpZgogICAgICAgICAgICAgZXYtPnBvc3RlZF9hdmFpbGFibGUgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9nemlwX2ZpbHRlci5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9nemlwX2ZpbHRlci5jCmluZGV4IGY4OTgwYWYuLmIwOTNkNTggMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZ3ppcF9maWx0ZXIuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2d6aXBfZmlsdGVyLmMKQEAgLTIzNywxNCArMjM3LDE0IEBACiAKIHN0YXRpYyB1X2NoYXIgIGd6aGVhZGVyWzEwXSA9IHsgMHgxZiwgMHg4YiwgWl9ERUZMQVRFRCwgMCwgMCwgMCwgMCwgMCwgMCwgMyB9OwogCi0jaWYgKEhBVkVfTElUVExFX0VORElBTikKKyNpZiAoTkdYX0hBVkVfTElUVExFX0VORElBTikKIAogc3RydWN0IGd6dHJhaWxlciB7CiAgICAgdWludDMyX3QgIGNyYzMyOwogICAgIHVpbnQzMl90ICB6bGVuOwogfTsKIAotI2Vsc2UgLyogSEFWRV9CSUdfRU5ESUFOICovCisjZWxzZSAvKiBOR1hfSEFWRV9CSUdfRU5ESUFOICovCiAKIHN0cnVjdCBnenRyYWlsZXIgewogICAgIHVfY2hhciAgY3JjMzJbNF07CkBAIC00MzcsNyArNDM3LDggQEAKIHN0YXRpYyBuZ3hfaW50X3Qgbmd4X2h0dHBfZ3ppcF9ib2R5X2ZpbHRlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X2NoYWluX3QgKmluKQogewotICAgIGludCAgICAgICAgICAgICAgICAgICAgcmMsIHdiaXRzLCBtZW1sZXZlbCwgbGFzdDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIHJjLCB3Yml0cywgbWVtbGV2ZWw7CisgICAgbmd4X2ludF90ICAgICAgICAgICAgICBsYXN0OwogICAgIHN0cnVjdCBnenRyYWlsZXIgICAgICAqdHJhaWxlcjsKICAgICBuZ3hfYnVmX3QgICAgICAgICAgICAgKmI7CiAgICAgbmd4X2NoYWluX3QgICAgICAgICAgICpjbDsKQEAgLTQ2OSw3ICs0NzAsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBXZSBwcmVhbGxvY2F0ZSBhIG1lbW9yeSBmb3IgemxpYiBpbiBvbmUgYnVmZmVyICgyMDBLLTQwMEspLCB0aGlzCiAgICAgICAgICAqIGRpY3JlYXNlcyBhIG51bWJlciBvZiBtYWxsb2MoKSBhbmQgZnJlZSgpIGNhbGxzIGFuZCBhbHNvIHByb2JhYmx5Ci0gICAgICAgICAqIGRpY3JlYXNlcyBhIG51bWJlciBvZiBzeXNjYWxscyAoc2JyaygpIG9yIHNvKS4KKyAgICAgICAgICogZGljcmVhc2VzIGEgbnVtYmVyIG9mIHN5c2NhbGxzIChzYnJrKCkgYW5kIHNvIG9uKS4KICAgICAgICAgICogQmVzaWRlcyB3ZSBmcmVlIHRoaXMgbWVtb3J5IGFzIHNvb24gYXMgdGhlIGd6aXBwaW5nIHdpbGwgY29tcGxldGUKICAgICAgICAgICogYW5kIGRvIG5vdCB3YWl0IHdoaWxlIGEgd2hvbGUgcmVzcG9uc2Ugd2lsbCBiZSBzZW50IHRvIGEgY2xpZW50LgogICAgICAgICAgKgpAQCAtNTEyLDggKzUxMywxOSBAQAogICAgICAgICB9CiAgICAgICAgIGNsLT5idWYgPSBiOwogICAgICAgICBjbC0+bmV4dCA9IE5VTEw7Ci0gICAgICAgIGN0eC0+b3V0ID0gY2w7Ci0gICAgICAgIGN0eC0+bGFzdF9vdXQgPSAmY2wtPm5leHQ7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogV2UgcGFzcyB0aGUgZ3poZWFkZXIgdG8gdGhlIG5leHQgZmlsdGVyIG5vdyB0byBhdm9pZCBpdHMgbGlua2luZworICAgICAgICAgKiB0byB0aGUgY3R4LT5idXN5IGNoYWluLiAgemxpYiBkb2VzIG5vdCB1c3VhbGx5IG91dHB1dCB0aGUgY29tcHJlc3NlZAorICAgICAgICAgKiBkYXRhIGluIHRoZSBpbml0aWFsIGl0ZXJhdGlvbnMsIHNvIHRoZSBnemhlYWRlciB0aGF0IHdhcyBsaW5rZWQKKyAgICAgICAgICogdG8gdGhlIGN0eC0+YnVzeSBjaGFpbiB3b3VsZCBiZSBmbHVzaGVkIGJ5IG5neF9odHRwX3dyaXRlX2ZpbHRlcigpLgorICAgICAgICAgKi8KKworICAgICAgICBpZiAobmd4X2h0dHBfbmV4dF9ib2R5X2ZpbHRlcihyLCBjbCkgPT0gTkdYX0VSUk9SKSB7CisgICAgICAgICAgICByZXR1cm4gbmd4X2h0dHBfZ3ppcF9lcnJvcihjdHgpOworICAgICAgICB9CisKKyAgICAgICAgY3R4LT5sYXN0X291dCA9ICZjdHgtPm91dDsKIAogICAgICAgICBjdHgtPmNyYzMyID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7CiAgICAgICAgIGN0eC0+Zmx1c2ggPSBaX05PX0ZMVVNIOwpAQCAtNzI3LDcgKzczOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGItPmxhc3QgKz0gODsKICAgICAgICAgICAgICAgICB9CiAKLSNpZiAoSEFWRV9MSVRUTEVfRU5ESUFOKQorI2lmIChOR1hfSEFWRV9MSVRUTEVfRU5ESUFOKQogICAgICAgICAgICAgICAgIHRyYWlsZXItPmNyYzMyID0gY3R4LT5jcmMzMjsKICAgICAgICAgICAgICAgICB0cmFpbGVyLT56bGVuID0gY3R4LT56aW47CiAjZWxzZQpAQCAtNzYzLDcgKzc3NSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobGFzdCA9PSBOR1hfQUdBSU4pIHsKKyAgICAgICAgaWYgKGxhc3QgPT0gTkdYX0FHQUlOICYmICFjdHgtPmRvbmUpIHsKICAgICAgICAgICAgIHJldHVybiBOR1hfQUdBSU47CiAgICAgICAgIH0KIApAQCAtODgxLDcgKzg5Myw5IEBACiB7CiAgICAgZGVmbGF0ZUVuZCgmY3R4LT56c3RyZWFtKTsKIAotICAgIG5neF9wZnJlZShjdHgtPnJlcXVlc3QtPnBvb2wsIGN0eC0+cHJlYWxsb2NhdGVkKTsKKyAgICBpZiAoY3R4LT5wcmVhbGxvY2F0ZWQpIHsKKyAgICAgICAgbmd4X3BmcmVlKGN0eC0+cmVxdWVzdC0+cG9vbCwgY3R4LT5wcmVhbGxvY2F0ZWQpOworICAgIH0KIAogICAgIGN0eC0+enN0cmVhbS5hdmFpbF9pbiA9IDA7CiAgICAgY3R4LT56c3RyZWFtLmF2YWlsX291dCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2luZGV4X2hhbmRsZXIuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfaGFuZGxlci5jCmluZGV4IDAxM2Y2MmIuLjMzODY5NTMgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfaGFuZGxlci5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfaGFuZGxlci5jCkBAIC0xMCwxOSArMTAsMTkgQEAKIAogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgbmd4X2FycmF5X3QgICAgICAgICAgICAgaW5kaWNlczsKLSAgICBzaXplX3QgICAgICAgICAgICAgICAgICBtYXhfaW5kZXhfbGVuOwotICAgIG5neF9odHRwX2NhY2hlX2hhc2hfdCAgKmluZGV4X2NhY2hlOworICAgIG5neF9hcnJheV90ICAgICAgICAgICAgICBpbmRpY2VzOworICAgIHNpemVfdCAgICAgICAgICAgICAgICAgICBtYXhfaW5kZXhfbGVuOworICAgIG5neF9odHRwX2NhY2hlX2hhc2hfdCAgICppbmRleF9jYWNoZTsKIH0gbmd4X2h0dHBfaW5kZXhfbG9jX2NvbmZfdDsKIAogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgbmd4X3VpbnRfdCAgICAgICAgIGluZGV4OwotICAgIHVfY2hhciAgICAgICAgICAgICpsYXN0OwotICAgIG5neF9zdHJfdCAgICAgICAgICBwYXRoOwotICAgIG5neF9zdHJfdCAgICAgICAgICByZWRpcmVjdDsKLSAgICBuZ3hfaHR0cF9jYWNoZV90ICAqY2FjaGU7Ci0gICAgdW5zaWduZWQgICAgICAgICAgIHRlc3RlZDoxOworICAgIG5neF91aW50X3QgICAgICAgICAgICAgICBpbmRleDsKKyAgICB1X2NoYXIgICAgICAgICAgICAgICAgICAqbGFzdDsKKyAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgICAgcGF0aDsKKyAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgICAgcmVkaXJlY3Q7CisgICAgbmd4X2h0dHBfY2FjaGVfZW50cnlfdCAgKmNhY2hlOworICAgIG5neF91aW50X3QgICAgICAgICAgICAgICB0ZXN0ZWQ7IC8qIHVuc2lnbmVkICB0ZXN0ZWQ6MSAqLwogfSBuZ3hfaHR0cF9pbmRleF9jdHhfdDsKIAogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X2NhY2hlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X2NhY2hlLmMKaW5kZXggZjBiNTZmNS4uODZiODQyNCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9wcm94eS9uZ3hfaHR0cF9wcm94eV9jYWNoZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvcHJveHkvbmd4X2h0dHBfcHJveHlfY2FjaGUuYwpAQCAtMjk3LDcgKzI5Nyw3IEBACiAKICAgICBpZiAocmMgPT0gTkdYX0FHQUlOKSB7CiAKLSAgICAgICAgaWYgKChuZ3hfZXZlbnRfZmxhZ3MgJiAoTkdYX1VTRV9DTEVBUl9FVkVOVHxOR1hfSEFWRV9LUVVFVUVfRVZFTlQpKQorICAgICAgICBpZiAoKG5neF9ldmVudF9mbGFncyAmIChOR1hfVVNFX0NMRUFSX0VWRU5UfE5HWF9VU0VfS1FVRVVFX0VWRU5UKSkKICAgICAgICAgICAgICYmICFwLT5yZXF1ZXN0LT5jb25uZWN0aW9uLT53cml0ZS0+YWN0aXZlKQogICAgICAgICB7CiAgICAgICAgICAgICAvKgpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9wcm94eS9uZ3hfaHR0cF9wcm94eV9oYW5kbGVyLmMgYi9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X2hhbmRsZXIuYwppbmRleCBjMGE4Y2YzLi40MjVhMWE2IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X2hhbmRsZXIuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X2hhbmRsZXIuYwpAQCAtNDE0LDcgKzQxNCw3IEBACiAgICAgbmd4X2xvZ19kZWJ1ZzEoTkdYX0xPR19ERUJVR19IVFRQLCBldi0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICJodHRwIHByb3h5IGNoZWNrIGNsaWVudCwgd3JpdGUgZXZlbnQ6JWQiLCBldi0+d3JpdGUpOwogCi0jaWYgKEhBVkVfS1FVRVVFKQorI2lmIChOR1hfSEFWRV9LUVVFVUUpCiAKICAgICBpZiAobmd4X2V2ZW50X2ZsYWdzICYgTkdYX1VTRV9LUVVFVUVfRVZFTlQpIHsKIApAQCAtNTYzLDkgKzU2Myw5IEBACiAgICAgICovCiAKICNpZiAwCi0jaWYgKEhBVkVfS1FVRVVFKQorI2lmIChOR1hfSEFWRV9LUVVFVUUpCiAKLSAgICBpZiAoKG5neF9ldmVudF9mbGFncyAmIE5HWF9IQVZFX0tRVUVVRV9FVkVOVCkgJiYgcmV2LT5rcV9lb2YpIHsKKyAgICBpZiAoKG5neF9ldmVudF9mbGFncyAmIE5HWF9VU0VfS1FVRVVFX0VWRU5UKSAmJiByZXYtPmtxX2VvZikgewogICAgICAgICBuZ3hfaHR0cF9idXN5X3VubG9jayhwLT5sY2YtPmJ1c3lfbG9jaywgJnAtPmJ1c3lfbG9jayk7CiAKICAgICAgICAgbmd4X2RlbF90aW1lcihyZXYpOwpAQCAtMTQwMCw3ICsxNDAwLDcgQEAKICAgICAgICAgcmV0dXJuIE5HWF9DT05GX0VSUk9SOwogICAgIH0KIAotI2VsaWYgIShIQVZFX1NPX1NORExPV0FUKQorI2VsaWYgIShOR1hfSEFWRV9TT19TTkRMT1dBVCkKIAogICAgIG5neF9jb25mX2xvZ19lcnJvcihOR1hfTE9HX1dBUk4sIGNmLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAiXCJwcm94eV9zZW5kX2xvd2F0XCIgaXMgbm90IHN1cHBvcnRlZCwgaWdub3JlZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9wcm94eS9uZ3hfaHR0cF9wcm94eV9oYW5kbGVyLmggYi9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X2hhbmRsZXIuaAppbmRleCAwOTRlZTNiLi44YWI4OGFkIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X2hhbmRsZXIuaAorKysgYi9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X2hhbmRsZXIuaApAQCAtMTQyLDcgKzE0Miw3IEBACiAKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIG5neF9odHRwX2NhY2hlX2N0eF90ICAgICAgICAgICAgIGN0eDsKKyAgICBuZ3hfaHR0cF9jYWNoZV90ICAgICAgICAgICAgICAgICBjdHg7CiAgICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOwogICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19saW5lOwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X3Vwc3RyZWFtLmMgYi9zcmMvaHR0cC9tb2R1bGVzL3Byb3h5L25neF9odHRwX3Byb3h5X3Vwc3RyZWFtLmMKaW5kZXggMDg1MmE0Mi4uMjNkNDBjNCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9wcm94eS9uZ3hfaHR0cF9wcm94eV91cHN0cmVhbS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvcHJveHkvbmd4X2h0dHBfcHJveHlfdXBzdHJlYW0uYwpAQCAtNzgyLDcgKzc4Miw3IEBACiAgICAgbmd4X2xvZ19kZWJ1ZzAoTkdYX0xPR19ERUJVR19IVFRQLCBjLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgImh0dHAgcHJveHkgc2VuZCByZXF1ZXN0Iik7CiAKLSNpZiAoSEFWRV9LUVVFVUUpCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkKIAogICAgIGlmICgobmd4X2V2ZW50X2ZsYWdzICYgTkdYX1VTRV9LUVVFVUVfRVZFTlQpCiAgICAgICAgICYmICFwLT5yZXF1ZXN0X3NlbnQKQEAgLTEyODcsOCArMTI4Nyw4IEBACiAgICAgICAgIGhlYWRlci0+bGVuZ3RoID0gci0+aGVhZGVyc19vdXQuY29udGVudF9sZW5ndGhfbjsKICAgICAgICAgcC0+Y2FjaGUtPmN0eC5sZW5ndGggPSByLT5oZWFkZXJzX291dC5jb250ZW50X2xlbmd0aF9uOwogCi0gICAgICAgIGhlYWRlci0+a2V5X2xlbiA9IHAtPmNhY2hlLT5jdHgua2V5LmxlbjsKLSAgICAgICAgbmd4X21lbWNweSgmaGVhZGVyLT5rZXksIHAtPmNhY2hlLT5jdHgua2V5LmRhdGEsIGhlYWRlci0+a2V5X2xlbik7CisgICAgICAgIGhlYWRlci0+a2V5X2xlbiA9IHAtPmNhY2hlLT5jdHgua2V5MC5sZW47CisgICAgICAgIG5neF9tZW1jcHkoJmhlYWRlci0+a2V5LCBwLT5jYWNoZS0+Y3R4LmtleTAuZGF0YSwgaGVhZGVyLT5rZXlfbGVuKTsKICAgICAgICAgaGVhZGVyLT5rZXlbaGVhZGVyLT5rZXlfbGVuXSA9IExGOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfY2FjaGUuYyBiL3NyYy9odHRwL25neF9odHRwX2NhY2hlLmMKaW5kZXggMjI1NzJhNS4uYWJkZWFlOSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfY2FjaGUuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9jYWNoZS5jCkBAIC02Myw3ICs2Myw3IEBACiAKICAgICAgICAgICAgIGNbaV0ucmVmcysrOwogCi0gICAgICAgICAgICBpZiAoKCEoY1tpXS5ub3RpZnkgJiYgKG5neF9ldmVudF9mbGFncyAmIE5HWF9IQVZFX0tRVUVVRV9FVkVOVCkpKQorICAgICAgICAgICAgaWYgKCghKGNbaV0ubm90aWZ5ICYmIChuZ3hfZXZlbnRfZmxhZ3MgJiBOR1hfVVNFX0tRVUVVRV9FVkVOVCkpKQogICAgICAgICAgICAgICAgICYmIChuZ3hfY2FjaGVkX3RpbWUgLSBjW2ldLnVwZGF0ZWQgPj0gaGFzaC0+dXBkYXRlKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjW2ldLmV4cGlyZWQgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfY2FjaGUuaCBiL3NyYy9odHRwL25neF9odHRwX2NhY2hlLmgKaW5kZXggNDBmNDg1Mi4uYWE2NjkwMiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfY2FjaGUuaAorKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9jYWNoZS5oCkBAIC0xNCwxMSArMTQsMTIgQEAKIAogCiAvKgotICogVGhlIDcgdXNlcyBiZWZvcmUgYW4gYWxsb2NhdGlvbi4KKyAqIFRoZSAzIGJpdHMgYWxsb3dzIHRoZSA3IHVzZXMgYmVmb3JlIHRoZSBjYWNoZSBlbnRyeSBhbGxvY2F0aW9uLgogICogV2UgY2FuIHVzZSBtYXhpbXVtIDcgYml0cywgaS5lIHVwIHRvIHRoZSAxMjcgdXNlcy4KICAqLwogI2RlZmluZSBOR1hfSFRUUF9DQUNIRV9MQVpZX0FMTE9DQVRJT05fQklUUyAgMwogCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICB1aW50MzJfdCAgICAgICAgIGNyYzsKICAgICBuZ3hfc3RyX3QgICAgICAgIGtleTsKQEAgLTQ1LDcgKzQ2LDcgQEAKICAgICAgICAgb2ZmX3QgICAgICAgIHNpemU7CiAgICAgICAgIG5neF9zdHJfdCAgICB2YWx1ZTsKICAgICB9IGRhdGE7Ci19IG5neF9odHRwX2NhY2hlX3Q7Cit9IG5neF9odHRwX2NhY2hlX2VudHJ5X3Q7CiAKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtNjIsNyArNjMsNyBAQAogI2RlZmluZSBOR1hfSFRUUF9DQUNIRV9ORUxUUyAgNAogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgbmd4X2h0dHBfY2FjaGVfdCAgICAgICAgICplbHRzOworICAgIG5neF9odHRwX2NhY2hlX2VudHJ5X3QgICAqZWx0czsKICAgICBzaXplX3QgICAgICAgICAgICAgICAgICAgIGhhc2g7CiAgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgICBuZWx0czsKICAgICB0aW1lX3QgICAgICAgICAgICAgICAgICAgIGxpZmU7CkBAIC03Niw5ICs3Nyw5IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBuZ3hfaHR0cF9jYWNoZV9oYXNoX3QgICAgKmhhc2g7Ci0gICAgbmd4X2h0dHBfY2FjaGVfdCAgICAgICAgICpjYWNoZTsKKyAgICBuZ3hfaHR0cF9jYWNoZV9lbnRyeV90ICAgKmNhY2hlOwogICAgIG5neF9maWxlX3QgICAgICAgICAgICAgICAgZmlsZTsKLSAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgICAgIGtleTsKKyAgICBuZ3hfYXJyYXlfdCAgICAgICAgICAgICAgIGtleTsKICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgIGNyYzsKICAgICB1X2NoYXIgICAgICAgICAgICAgICAgICAgIG1kNVsxNl07CiAgICAgbmd4X3BhdGhfdCAgICAgICAgICAgICAgICpwYXRoOwpAQCAtOTAsNyArOTEsMTAgQEAKICAgICBzc2l6ZV90ICAgICAgICAgICAgICAgICAgIGhlYWRlcl9zaXplOwogICAgIHNpemVfdCAgICAgICAgICAgICAgICAgICAgZmlsZV9zdGFydDsKICAgICBuZ3hfbG9nX3QgICAgICAgICAgICAgICAgKmxvZzsKLX0gbmd4X2h0dHBfY2FjaGVfY3R4X3Q7CisKKyAgICAvKiBTVFVCICovCisgICAgbmd4X3N0cl90ICAgICAgICAgICAgICAgICBrZXkwOworfSBuZ3hfaHR0cF9jYWNoZV90OwogCiAKIApAQCAtOTksNiArMTAzLDggQEAKICNkZWZpbmUgTkdYX0hUVFBfQ0FDSEVfVEhFX1NBTUUgIDMKIAogCisjaWYgMAorCiBuZ3hfaHR0cF9jYWNoZV90ICpuZ3hfaHR0cF9jYWNoZV9nZXQobmd4X2h0dHBfY2FjaGVfaGFzaF90ICpjYWNoZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfaHR0cF9jbGVhbnVwX3QgKmNsZWFudXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X3N0cl90ICprZXksIHVpbnQzMl90ICpjcmMpOwpAQCAtMTI3LDUgKzEzMyw3IEBACiAKIGNoYXIgKm5neF9odHRwX3NldF9jYWNoZV9zbG90KG5neF9jb25mX3QgKmNmLCBuZ3hfY29tbWFuZF90ICpjbWQsIHZvaWQgKmNvbmYpOwogCisjZW5kaWYKKwogCiAjZW5kaWYgLyogX05HWF9IVFRQX0NBQ0hFX0hfSU5DTFVERURfICovCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYwppbmRleCBjNzY0YjJhLi5jNGNiOGI5IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMKQEAgLTE4MjgsNyArMTgyOCw3IEBACiAgICAgICAgIHJldHVybiBOR1hfQ09ORl9FUlJPUjsKICAgICB9CiAKLSNlbGlmICEoSEFWRV9TT19TTkRMT1dBVCkKKyNlbGlmICEoTkdYX0hBVkVfU09fU05ETE9XQVQpCiAKICAgICBuZ3hfY29uZl9sb2dfZXJyb3IoTkdYX0xPR19XQVJOLCBjZiwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgIlwic2VuZF9sb3dhdFwiIGlzIG5vdCBzdXBwb3J0ZWQsIGlnbm9yZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX2ZpbGVfY2FjaGUuYyBiL3NyYy9odHRwL25neF9odHRwX2ZpbGVfY2FjaGUuYwppbmRleCA4ZjkyMGQyLi4xYjI1OGM5IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9maWxlX2NhY2hlLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfZmlsZV9jYWNoZS5jCkBAIC05LDE5ICs5LDIwIEBACiAjaW5jbHVkZSA8bmd4X2h0dHAuaD4KIAogCi0jaWYgKEhBVkVfT1BFTlNTTF9NRDVfSCkKKyNpZiAoTkdYX0hBVkVfT1BFTlNTTF9NRDVfSCkKICNpbmNsdWRlIDxvcGVuc3NsL21kNS5oPgogI2Vsc2UKICNpbmNsdWRlIDxtZDUuaD4KICNlbmRpZgogCi0jaWYgKEhBVkVfT1BFTlNTTF9NRDUpCisjaWYgKE5HWF9PUEVOU1NMX01ENSkKICNkZWZpbmUgIE1ENUluaXQgICAgTUQ1X0luaXQKICNkZWZpbmUgIE1ENVVwZGF0ZSAgTUQ1X1VwZGF0ZQogI2RlZmluZSAgTUQ1RmluYWwgICBNRDVfRmluYWwKICNlbmRpZgogCiAKKyNpZiAwCiAKIGludCBuZ3hfaHR0cF9jYWNoZV9nZXRfZmlsZShuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIG5neF9odHRwX2NhY2hlX2N0eF90ICpjdHgpCiB7CkBAIC0yMzcsMyArMjM4LDUgQEAKIAogICAgIHJldHVybiBOR1hfT0s7CiB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfcGFyc2UuYyBiL3NyYy9odHRwL25neF9odHRwX3BhcnNlLmMKaW5kZXggYmZlNWVmYi4uYTRlN2Q4MCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcGFyc2UuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9wYXJzZS5jCkBAIC02ODYsNyArNjg2LDcgQEAKIAogICAgIGNoID0gKnArKzsKIAotICAgIHdoaWxlIChwIDwgci0+dXJpX3N0YXJ0ICsgci0+dXJpLmxlbiArIDEgJiYgci0+YXJnc19zdGFydCA9PSBOVUxMKSB7CisgICAgd2hpbGUgKHAgPCByLT51cmlfZW5kICYmIHItPmFyZ3Nfc3RhcnQgPT0gTlVMTCkgewogCiAgICAgICAgIC8qCiAgICAgICAgICAqIHdlIHVzZSAiY2ggPSAqcCsrIiBpbnNpZGUgdGhlIGN5Y2xlIGJ1dCB0aGlzIG9wZXJhdGlvbiBpcyBzYWZlCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKaW5kZXggYTJjZjFhMC4uYjYwMTNmYyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwpAQCAtNTMyLDYgKzUzMiw3IEBACiAgICAgICAgICAgICAgICAgci0+dXJpLmxlbiA9IHItPnVyaV9lbmQgLSByLT51cmlfc3RhcnQ7CiAgICAgICAgICAgICB9CiAKKwogICAgICAgICAgICAgaWYgKHItPmNvbXBsZXhfdXJpIHx8IHItPnF1b3RlZF91cmkpIHsKIAogICAgICAgICAgICAgICAgIGlmICghKHItPnVyaS5kYXRhID0gbmd4X3BhbGxvYyhyLT5wb29sLCByLT51cmkubGVuICsgMSkpKSB7CkBAIC01NTcsNiArNTU4LDcgQEAKICAgICAgICAgICAgICAgICByLT51cmkuZGF0YSA9IHItPnVyaV9zdGFydDsKICAgICAgICAgICAgIH0KIAorCiAgICAgICAgICAgICByLT51bnBhcnNlZF91cmkubGVuID0gci0+dXJpX2VuZCAtIHItPnVyaV9zdGFydDsKICAgICAgICAgICAgIHItPnVucGFyc2VkX3VyaS5kYXRhID0gci0+dXJpX3N0YXJ0OwogCkBAIC0xNzUxLDcgKzE3NTMsNyBAQAogCiAgICAgY3R4ID0gKG5neF9odHRwX2xvZ19jdHhfdCAqKSByZXYtPmxvZy0+ZGF0YTsKIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogCiAgICAgaWYgKG5neF9ldmVudF9mbGFncyAmIE5HWF9VU0VfS1FVRVVFX0VWRU5UKSB7CiAgICAgICAgIGlmIChyZXYtPnBlbmRpbmdfZW9mKSB7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmggYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmgKaW5kZXggMzFiMTE4Ny4uMTQxZGFhMSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaApAQCAtMjIwLDcgKzIyMCw3IEBACiAKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIG5neF9odHRwX2NhY2hlX2hhc2hfdCAgICpoYXNoOwotICAgICAgICAgICAgbmd4X2h0dHBfY2FjaGVfdCAgICAgICAgKmNhY2hlOworICAgICAgICAgICAgbmd4X2h0dHBfY2FjaGVfZW50cnlfdCAgKmNhY2hlOwogICAgICAgICB9IGNhY2hlOwogICAgIH0gZGF0YTsKIApAQCAtMjU0LDcgKzI1NCw3IEBACiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgKipzcnZfY29uZjsKICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAqKmxvY19jb25mOwogCi0gICAgbmd4X2h0dHBfY2FjaGVfdCAgICAgICAgICpjYWNoZTsKKyAgICBuZ3hfaHR0cF9jYWNoZV9lbnRyeV90ICAgKmNhY2hlOwogCiAgICAgbmd4X2ZpbGVfdCAgICAgICAgICAgICAgICBmaWxlOwogCmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfYWlvX3JlYWQuYyBiL3NyYy9vcy91bml4L25neF9haW9fcmVhZC5jCmluZGV4IGQwMTEwNTQuLjJhNjZlYjggMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9haW9fcmVhZC5jCisrKyBiL3NyYy9vcy91bml4L25neF9haW9fcmVhZC5jCkBAIC05LDcgKzksNyBAQAogI2luY2x1ZGUgPG5neF9ldmVudC5oPgogI2luY2x1ZGUgPG5neF9haW8uaD4KIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogI2luY2x1ZGUgPG5neF9rcXVldWVfbW9kdWxlLmg+CiAjZW5kaWYKIApAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICByZXYtPmFpb2NiLmFpb19idWYgPSBidWY7CiAgICAgICAgIHJldi0+YWlvY2IuYWlvX25ieXRlcyA9IHNpemU7CiAKLSNpZiAoSEFWRV9LUVVFVUUpCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkKICAgICAgICAgcmV2LT5haW9jYi5haW9fc2lnZXZlbnQuc2lnZXZfbm90aWZ5X2txdWV1ZSA9IG5neF9rcXVldWU7CiAgICAgICAgIHJldi0+YWlvY2IuYWlvX3NpZ2V2ZW50LnNpZ2V2X25vdGlmeSA9IFNJR0VWX0tFVkVOVDsKICAgICAgICAgcmV2LT5haW9jYi5haW9fc2lnZXZlbnQuc2lnZXZfdmFsdWUuc2lndmFsX3B0ciA9IHJldjsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9haW9fd3JpdGUuYyBiL3NyYy9vcy91bml4L25neF9haW9fd3JpdGUuYwppbmRleCBmMTAyYmEzLi4xZDhjMWFhIDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfYWlvX3dyaXRlLmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X2Fpb193cml0ZS5jCkBAIC05LDcgKzksNyBAQAogI2luY2x1ZGUgPG5neF9ldmVudC5oPgogI2luY2x1ZGUgPG5neF9haW8uaD4KIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogI2luY2x1ZGUgPG5neF9rcXVldWVfbW9kdWxlLmg+CiAjZW5kaWYKIApAQCAtNDMsNyArNDMsNyBAQAogICAgICAgICB3ZXYtPmFpb2NiLmFpb19idWYgPSBidWY7CiAgICAgICAgIHdldi0+YWlvY2IuYWlvX25ieXRlcyA9IHNpemU7CiAKLSNpZiAoSEFWRV9LUVVFVUUpCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkKICAgICAgICAgd2V2LT5haW9jYi5haW9fc2lnZXZlbnQuc2lnZXZfbm90aWZ5X2txdWV1ZSA9IG5neF9rcXVldWU7CiAgICAgICAgIHdldi0+YWlvY2IuYWlvX3NpZ2V2ZW50LnNpZ2V2X25vdGlmeSA9IFNJR0VWX0tFVkVOVDsKICAgICAgICAgd2V2LT5haW9jYi5haW9fc2lnZXZlbnQuc2lnZXZfdmFsdWUuc2lndmFsX3B0ciA9IHdldjsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9hbGxvYy5jIGIvc3JjL29zL3VuaXgvbmd4X2FsbG9jLmMKaW5kZXggN2VjNGY4Ny4uMjU4YTEwZiAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X2FsbG9jLmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X2FsbG9jLmMKQEAgLTQwLDcgKzQwLDcgQEAKIH0KIAogCi0jaWYgKEhBVkVfUE9TSVhfTUVNQUxJR04pCisjaWYgKE5HWF9IQVZFX1BPU0lYX01FTUFMSUdOKQogCiB2b2lkICpuZ3hfbWVtYWxpZ24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUsIG5neF9sb2dfdCAqbG9nKQogewpAQCAtNTgsNyArNTgsNyBAQAogICAgIHJldHVybiBwOwogfQogCi0jZWxpZiAoSEFWRV9NRU1BTElHTikKKyNlbGlmIChOR1hfSEFWRV9NRU1BTElHTikKIAogdm9pZCAqbmd4X21lbWFsaWduKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBuZ3hfbG9nX3QgKmxvZykKIHsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9hbGxvYy5oIGIvc3JjL29zL3VuaXgvbmd4X2FsbG9jLmgKaW5kZXggMDA4NGMyYy4uNjY1NjJhMSAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X2FsbG9jLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X2FsbG9jLmgKQEAgLTI1LDcgKzI1LDcgQEAKICAqIGFsbG9jYXRpb25zIGJpZ2dlciB0aGFuIHBhZ2Ugc2l6ZSBhdCB0aGUgcGFnZSBib3VuZGFyeS4KICAqLwogCi0jaWYgKEhBVkVfUE9TSVhfTUVNQUxJR04gfHwgSEFWRV9NRU1BTElHTikKKyNpZiAoTkdYX0hBVkVfUE9TSVhfTUVNQUxJR04gfHwgTkdYX0hBVkVfTUVNQUxJR04pCiAKIHZvaWQgKm5neF9tZW1hbGlnbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgbmd4X2xvZ190ICpsb2cpOwogCmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfY2hhbm5lbC5jIGIvc3JjL29zL3VuaXgvbmd4X2NoYW5uZWwuYwppbmRleCAwYmZiZDBkLi5iMWIzNmM1IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfY2hhbm5lbC5jCisrKyBiL3NyYy9vcy91bml4L25neF9jaGFubmVsLmMKQEAgLTE3LDcgKzE3LDcgQEAKICAgICBzdHJ1Y3QgaW92ZWMgICAgICAgIGlvdlsxXTsKICAgICBzdHJ1Y3QgbXNnaGRyICAgICAgIG1zZzsKIAotI2lmIChIQVZFX01TR0hEUl9NU0dfQ09OVFJPTCkKKyNpZiAoTkdYX0hBVkVfTVNHSERSX01TR19DT05UUk9MKQogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgY21zZ2hkciAgY207CkBAIC04Myw3ICs4Myw3IEBACiAgICAgc3RydWN0IGlvdmVjICAgICAgICBpb3ZbMV07CiAgICAgc3RydWN0IG1zZ2hkciAgICAgICBtc2c7CiAKLSNpZiAoSEFWRV9NU0dIRFJfTVNHX0NPTlRST0wpCisjaWYgKE5HWF9IQVZFX01TR0hEUl9NU0dfQ09OVFJPTCkKICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCBjbXNnaGRyICBjbTsKICAgICAgICAgY2hhciAgICAgICAgICAgIHNwYWNlW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkpXTsKQEAgLTEwMCw3ICsxMDAsNyBAQAogICAgIG1zZy5tc2dfaW92ID0gaW92OwogICAgIG1zZy5tc2dfaW92bGVuID0gMTsKIAotI2lmIChIQVZFX01TR0hEUl9NU0dfQ09OVFJPTCkKKyNpZiAoTkdYX0hBVkVfTVNHSERSX01TR19DT05UUk9MKQogICAgIG1zZy5tc2dfY29udHJvbCA9IChjYWRkcl90KSAmY21zZzsKICAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY21zZyk7CiAjZWxzZQpAQCAtMTMxLDcgKzEzMSw3IEBACiAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CiAgICAgfQogCi0jaWYgKEhBVkVfTVNHSERSX01TR19DT05UUk9MKQorI2lmIChOR1hfSEFWRV9NU0dIRFJfTVNHX0NPTlRST0wpCiAKICAgICBpZiAoY2gtPmNvbW1hbmQgPT0gTkdYX0NNRF9PUEVOX0NIQU5ORUwpIHsKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X2Vycm5vLmMgYi9zcmMvb3MvdW5peC9uZ3hfZXJybm8uYwppbmRleCBjZWQwZWFmLi42MDdiMzYxIDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfZXJybm8uYworKysgYi9zcmMvb3MvdW5peC9uZ3hfZXJybm8uYwpAQCAtOCw3ICs4LDcgQEAKICNpbmNsdWRlIDxuZ3hfY29yZS5oPgogCiAKLSNpZiAoTkdYX1NUUkVSUk9SX1IpCisjaWYgKE5HWF9IQVZFX1NUUkVSUk9SX1IpCiAKIHVfY2hhciAqbmd4X3N0cmVycm9yX3IoaW50IGVyciwgdV9jaGFyICplcnJzdHIsIHNpemVfdCBzaXplKQogewpAQCAtMjgsNyArMjgsNyBAQAogICAgIHJldHVybiBlcnJzdHI7CiB9CiAKLSNlbGlmIChOR1hfR05VX1NUUkVSUk9SX1IpCisjZWxpZiAoTkdYX0hBVkVfR05VX1NUUkVSUk9SX1IpCiAKIC8qIExpbnV4IHN0cmVycm9yX3IoKSAqLwogCmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfZXJybm8uaCBiL3NyYy9vcy91bml4L25neF9lcnJuby5oCmluZGV4IGU4N2VjNWYuLmMxYzU4MDEgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9lcnJuby5oCisrKyBiL3NyYy9vcy91bml4L25neF9lcnJuby5oCkBAIC00Niw3ICs0Niw3IEBACiAjZGVmaW5lIG5neF9zZXRfc29ja2V0X2Vycm5vKGVycikgIGVycm5vID0gZXJyCiAKIAotI2lmIChIQVZFX1NUUkVSUk9SX1IgfHwgSEFWRV9HTlVfU1RSRVJST1JfUikKKyNpZiAoTkdYX0hBVkVfU1RSRVJST1JfUiB8fCBOR1hfSEFWRV9HTlVfU1RSRVJST1JfUikKIAogdV9jaGFyICpuZ3hfc3RyZXJyb3JfcihpbnQgZXJyLCB1X2NoYXIgKmVycnN0ciwgc2l6ZV90IHNpemUpOwogCmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfZmlsZXMuYyBiL3NyYy9vcy91bml4L25neF9maWxlcy5jCmluZGV4IDUyYWE5YjYuLmU2N2IyY2EgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9maWxlcy5jCisrKyBiL3NyYy9vcy91bml4L25neF9maWxlcy5jCkBAIC0xNSw3ICsxNSw3IEBACiAgICAgbmd4X2xvZ19kZWJ1ZzQoTkdYX0xPR19ERUJVR19DT1JFLCBmaWxlLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgInJlYWQ6ICVkLCAlcCwgJXV6LCAlTyIsIGZpbGUtPmZkLCBidWYsIHNpemUsIG9mZnNldCk7CiAKLSNpZiAoTkdYX1BSRUFEKQorI2lmIChOR1hfSEFWRV9QUkVBRCkKIAogICAgIG4gPSBwcmVhZChmaWxlLT5mZCwgYnVmLCBzaXplLCBvZmZzZXQpOwogCkBAIC02MCw3ICs2MCw3IEBACiAgICAgbmd4X2xvZ19kZWJ1ZzQoTkdYX0xPR19ERUJVR19DT1JFLCBmaWxlLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgIndyaXRlOiAlZCwgJXAsICV1eiwgJU8iLCBmaWxlLT5mZCwgYnVmLCBzaXplLCBvZmZzZXQpOwogCi0jaWYgKE5HWF9QV1JJVEUpCisjaWYgKE5HWF9IQVZFX1BXUklURSkKIAogICAgIG4gPSBwd3JpdGUoZmlsZS0+ZmQsIGJ1Ziwgc2l6ZSwgb2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2RfY29uZmlnLmggYi9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9jb25maWcuaAppbmRleCA3ZjNiMjg2Li4zNWJmMWY1IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9jb25maWcuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9jb25maWcuaApAQCAtNjAsMjMgKzYwLDIzIEBACiAjaW5jbHVkZSA8bmd4X2F1dG9fY29uZmlnLmg+CiAKIAotI2lmIChIQVZFX1BPTEwpCisjaWYgKE5HWF9IQVZFX1BPTEwpCiAjaW5jbHVkZSA8cG9sbC5oPgogI2VuZGlmCiAKIAotI2lmIChIQVZFX0FJTykKKyNpZiAoTkdYX0hBVkVfQUlPKQogI2luY2x1ZGUgPGFpby5oPgogI2VuZGlmCiAKIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogI2luY2x1ZGUgPHN5cy9ldmVudC5oPgogI2VuZGlmCiAKIAotI2lmIGRlZmluZWQgU09fQUNDRVBURklMVEVSICYmICFkZWZpbmVkIEhBVkVfREVGRVJSRURfQUNDRVBUCi0jZGVmaW5lIEhBVkVfREVGRVJSRURfQUNDRVBUICAxCisjaWYgZGVmaW5lZCBTT19BQ0NFUFRGSUxURVIgJiYgIWRlZmluZWQgTkdYX0hBVkVfREVGRVJSRURfQUNDRVBUCisjZGVmaW5lIE5HWF9IQVZFX0RFRkVSUkVEX0FDQ0VQVCAgMQogI2VuZGlmCiAKIApAQCAtOTEsOCArOTEsOCBAQAogI2VuZGlmCiAKIAotI2lmbmRlZiBIQVZFX0lOSEVSSVRFRF9OT05CTE9DSwotI2RlZmluZSBIQVZFX0lOSEVSSVRFRF9OT05CTE9DSyAgMQorI2lmbmRlZiBOR1hfSEFWRV9JTkhFUklURURfTk9OQkxPQ0sKKyNkZWZpbmUgTkdYX0hBVkVfSU5IRVJJVEVEX05PTkJMT0NLICAxCiAjZW5kaWYKIAogCmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9pbml0LmMgYi9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9pbml0LmMKaW5kZXggZmFmOGU5Zi4uYjc2ZGMwYyAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2RfaW5pdC5jCisrKyBiL3NyYy9vcy91bml4L25neF9mcmVlYnNkX2luaXQuYwpAQCAtMzAsNyArMzAsNyBAQAogICAgIG5neF91bml4X3JlY3YsCiAgICAgbmd4X3JlYWR2X2NoYWluLAogICAgIG5neF91bml4X3NlbmQsCi0jaWYgKEhBVkVfU0VOREZJTEUpCisjaWYgKE5HWF9IQVZFX1NFTkRGSUxFKQogICAgIG5neF9mcmVlYnNkX3NlbmRmaWxlX2NoYWluLAogICAgIE5HWF9JT19TRU5ERklMRQogI2Vsc2UKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIHZlcnNpb24gPSBuZ3hfZnJlZWJzZF9rZXJuX29zcmVsZGF0ZTsKIAogCi0jaWYgKEhBVkVfU0VOREZJTEUpCisjaWYgKE5HWF9IQVZFX1NFTkRGSUxFKQogCiAgICAgLyoKICAgICAgKiBUaGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgc2VuZGZpbGUoKSAibmJ5dGVzIGJ1ZyIgaXMgY29tcGxleCBlbm91Z2guCkBAIC0xNjEsNyArMTYxLDcgQEAKIAogI2VuZGlmCiAKLSNlbmRpZiAvKiBIQVZFX1NFTkRGSUxFICovCisjZW5kaWYgLyogTkdYX0hBVkVfU0VOREZJTEUgKi8KIAogCiAgICAgaWYgKCh2ZXJzaW9uIDwgNTAwMDAwICYmIHZlcnNpb24gPj0gNDQwMDAzKSB8fCB2ZXJzaW9uID49IDUwMDAxNykgewpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2RfcmZvcmtfdGhyZWFkLmMgYi9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9yZm9ya190aHJlYWQuYwppbmRleCBiNjQzMjViLi41ZGZkNDY4IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9yZm9ya190aHJlYWQuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9yZm9ya190aHJlYWQuYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9BR0FJTjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG5neF9mcmVlYnNkX2h3X25jcHUgPiAxICYmIHRyaWVzKysgPCAxMDAwKSB7CisgICAgICAgICAgICBpZiAobmd4X25jcHUgPiAxICYmIHRyaWVzKysgPCAxMDAwKSB7CiAKICAgICAgICAgICAgICAgICAvKiB0aGUgc3BpbmxvY2sgaXMgdXNlZCBvbmx5IG9uIHRoZSBTTVAgc3lzdGVtICovCiAKQEAgLTU4MSw3ICs1ODEsNyBAQAogICAgIH0KIAogICAgIGN2LT5zaWdubyA9IE5HWF9DVl9TSUdOQUw7Ci0gICAgY3YtPnRpZCA9IDA7CisgICAgY3YtPnRpZCA9IC0xOwogICAgIGN2LT5sb2cgPSBsb2c7CiAgICAgY3YtPmtxID0gLTE7CiAKQEAgLTY0MCw2ICs2NDAsOCBAQAogICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCBjdi0+bG9nLCBuZ3hfZXJybm8sICJrZXZlbnQoKSBmYWlsZWQiKTsKICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CiAgICAgICAgIH0KKworICAgICAgICBjdi0+dGlkID0gbmd4X3RocmVhZF9zZWxmKCk7CiAgICAgfQogCiAgICAgaWYgKG5neF9tdXRleF91bmxvY2sobSkgPT0gTkdYX0VSUk9SKSB7CkBAIC03MTQsNiArNzE2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgImN2ICVwIHRvIHNpZ25hbCAlUCAlZCIsCiAgICAgICAgICAgICAgICAgICAgY3YsIGN2LT50aWQsIGN2LT5zaWdubyk7CiAKKyAgICBpZiAoY3YtPnRpZCA9PSAtMSkgeworICAgICAgICByZXR1cm4gTkdYX09LOworICAgIH0KKwogICAgIGlmIChraWxsKGN2LT50aWQsIGN2LT5zaWdubykgPT0gLTEpIHsKIAogICAgICAgICBlcnIgPSBuZ3hfZXJybm87CmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9zZW5kZmlsZV9jaGFpbi5jIGIvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2Rfc2VuZGZpbGVfY2hhaW4uYwppbmRleCAxOTJhMWExLi5mODZlMWMwIDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9zZW5kZmlsZV9jaGFpbi5jCisrKyBiL3NyYy9vcy91bml4L25neF9mcmVlYnNkX3NlbmRmaWxlX2NoYWluLmMKQEAgLTU1LDcgKzU1LDcgQEAKICAgICAgICAgcmV0dXJuIGluOwogICAgIH0KIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogCiAgICAgaWYgKChuZ3hfZXZlbnRfZmxhZ3MgJiBOR1hfVVNFX0tRVUVVRV9FVkVOVCkgJiYgd2V2LT5wZW5kaW5nX2VvZikgewogICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgYy0+bG9nLCB3ZXYtPmtxX2Vycm5vLApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X2xpbnV4X2NvbmZpZy5oIGIvc3JjL29zL3VuaXgvbmd4X2xpbnV4X2NvbmZpZy5oCmluZGV4IDU3ZWU1MDUuLjYyMGI1OWQgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9saW51eF9jb25maWcuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfbGludXhfY29uZmlnLmgKQEAgLTU2LDM1ICs1NiwzNyBAQAogI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgogI2VuZGlmCiAKKwogI2lmIChOR1hfSEFWRV9TRU5ERklMRTY0KQogI2luY2x1ZGUgPHN5cy9zZW5kZmlsZS5oPgogI2Vsc2UKIGV4dGVybiBzc2l6ZV90IHNlbmRmaWxlKGludCBzLCBpbnQgZmQsIGludDMyX3QgKm9mZnNldCwgc2l6ZV90IHNpemUpOworI2RlZmluZSBOR1hfU0VOREZJTEVfTElNSVQgIChOR1hfTUFYX1VJTlQzMl9WQUxVRSArIDEpCiAjZW5kaWYKIAogCi0jaWYgKEhBVkVfUE9MTCkKKyNpZiAoTkdYX0hBVkVfUE9MTCkKICNpbmNsdWRlIDxwb2xsLmg+CiAjZW5kaWYKIAogCi0jaWYgKEhBVkVfRVBPTEwpCisjaWYgKE5HWF9IQVZFX0VQT0xMKQogI2luY2x1ZGUgPHN5cy9lcG9sbC5oPgotI2VuZGlmIC8qIEhBVkVfRVBPTEwgKi8KLQotCi0jaWYgZGVmaW5lZCBUQ1BfREVGRVJfQUNDRVBUICYmICFkZWZpbmVkIEhBVkVfREVGRVJSRURfQUNDRVBUCi0jZGVmaW5lIEhBVkVfREVGRVJSRURfQUNDRVBUICAxCiAjZW5kaWYKIAogCi0jaWZuZGVmIEhBVkVfSU5IRVJJVEVEX05PTkJMT0NLCi0jZGVmaW5lIEhBVkVfSU5IRVJJVEVEX05PTkJMT0NLICAwCisjaWYgZGVmaW5lZCBUQ1BfREVGRVJfQUNDRVBUICYmICFkZWZpbmVkIE5HWF9IQVZFX0RFRkVSUkVEX0FDQ0VQVAorI2RlZmluZSBOR1hfSEFWRV9ERUZFUlJFRF9BQ0NFUFQgIDEKICNlbmRpZgogCiAKLSNpZm5kZWYgSEFWRV9TRUxFQ1RfQ0hBTkdFX1RJTUVPVVQKLSNkZWZpbmUgSEFWRV9TRUxFQ1RfQ0hBTkdFX1RJTUVPVVQgICAxCisjaWZuZGVmIE5HWF9IQVZFX0lOSEVSSVRFRF9OT05CTE9DSworI2RlZmluZSBOR1hfSEFWRV9JTkhFUklURURfTk9OQkxPQ0sgIDAKKyNlbmRpZgorCisKKyNpZm5kZWYgTkdYX0hBVkVfU0VMRUNUX0NIQU5HRV9USU1FT1VUCisjZGVmaW5lIE5HWF9IQVZFX1NFTEVDVF9DSEFOR0VfVElNRU9VVCAgIDEKICNlbmRpZgogCiAjaWZuZGVmIE5HWF9TRVRQUk9DVElUTEVfVVNFU19FTlYKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9saW51eF9pbml0LmMgYi9zcmMvb3MvdW5peC9uZ3hfbGludXhfaW5pdC5jCmluZGV4IDM5N2QzNDIuLjljMWM4NDcgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9saW51eF9pbml0LmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X2xpbnV4X2luaXQuYwpAQCAtMTgsNyArMTgsNyBAQAogICAgIG5neF91bml4X3JlY3YsCiAgICAgbmd4X3JlYWR2X2NoYWluLAogICAgIG5neF91bml4X3NlbmQsCi0jaWYgKEhBVkVfU0VOREZJTEUpCisjaWYgKE5HWF9IQVZFX1NFTkRGSUxFKQogICAgIG5neF9saW51eF9zZW5kZmlsZV9jaGFpbiwKICAgICBOR1hfSU9fU0VOREZJTEUKICNlbHNlCmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfbGludXhfc2VuZGZpbGVfY2hhaW4uYyBiL3NyYy9vcy91bml4L25neF9saW51eF9zZW5kZmlsZV9jaGFpbi5jCmluZGV4IGFkNDBmNTUuLmJjZjlkNGMgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9saW51eF9zZW5kZmlsZV9jaGFpbi5jCisrKyBiL3NyYy9vcy91bml4L25neF9saW51eF9zZW5kZmlsZV9jaGFpbi5jCkBAIC0xMyw3ICsxMyw3IEBACiAgKiBPbiBMaW51eCB1cCB0byAyLjQuMjEgc2VuZGZpbGUoKSAoc3lzY2FsbCAjMTg3KSB3b3JrcyB3aXRoIDMyLWJpdAogICogb2Zmc2V0cyBvbmx5IGFuZCB0aGUgaW5jbHVkaW5nIDxzeXMvc2VuZGZpbGUuaD4gYnJlYWtzIHRoZSBjb21waWxpbmcKICAqIGlmIG9mZl90IGlzIDY0IGJpdCB3aWRlLiAgU28gd2UgdXNlIG93biBzZW5kZmlsZSgpIGRlZmluaXRpb24gd2hlcmUgb2Zmc2V0Ci0gKiBwYXJhbWV0ZXIgaXMgaW50MzJfdCBhbmQgdXNlIHNlbmRmaWxlKCkgd2l0aCB0aGUgZmlsZSBwYXJ0cyBiZWxvdyAyRy4KKyAqIHBhcmFtZXRlciBpcyBpbnQzMl90IGFuZCB1c2Ugc2VuZGZpbGUoKSBmb3IgdGhlIGZpbGUgcGFydHMgYmVsb3cgMkcgb25seS4KICAqCiAgKiBMaW51eCAyLjQuMjEgaGFzIGEgbmV3IHNlbmRmaWxlNjQoKSBzeXNjYWxsICMyMzkuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9vcy5oIGIvc3JjL29zL3VuaXgvbmd4X29zLmgKaW5kZXggZGM5ZjdhOC4uZWU5MWRmMyAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X29zLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X29zLmgKQEAgLTE1LDE4ICsxNSw2IEBACiAjZGVmaW5lIE5HWF9JT19TRU5ERklMRSAgICAxCiAjZGVmaW5lIE5HWF9JT19aRVJPQ09QWSAgICAyCiAKLSNpZiAoSEFWRV9TRU5ERklMRSkKLSNkZWZpbmUgTkdYX0hBVkVfU0VOREZJTEUgIE5HWF9JT19TRU5ERklMRQotI2Vsc2UKLSNkZWZpbmUgTkdYX0hBVkVfU0VOREZJTEUgIDAKLSNlbmRpZgotCi0jaWYgKEhBVkVfWkVST0NPUFkpCi0jZGVmaW5lIE5HWF9IQVZFX1pFUk9DT1BZICBOR1hfSU9fWkVST0NPUFkKLSNlbHNlCi0jZGVmaW5lIE5HWF9IQVZFX1pFUk9DT1BZICAwCi0jZW5kaWYKLQogCiB0eXBlZGVmIHNzaXplX3QgKCpuZ3hfcmVjdl9wdCkobmd4X2Nvbm5lY3Rpb25fdCAqYywgdV9jaGFyICpidWYsIHNpemVfdCBzaXplKTsKIHR5cGVkZWYgc3NpemVfdCAoKm5neF9yZWN2X2NoYWluX3B0KShuZ3hfY29ubmVjdGlvbl90ICpjLCBuZ3hfY2hhaW5fdCAqaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3Bvc2l4X2NvbmZpZy5oIGIvc3JjL29zL3VuaXgvbmd4X3Bvc2l4X2NvbmZpZy5oCmluZGV4IGIxODcyMzYuLmY5YzkxYTQgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9wb3NpeF9jb25maWcuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfcG9zaXhfY29uZmlnLmgKQEAgLTcwLDE3ICs3MCwxNyBAQAogI2luY2x1ZGUgPG5neF9hdXRvX2NvbmZpZy5oPgogCiAKLSNpZiAoSEFWRV9QT0xMKQorI2lmIChOR1hfSEFWRV9QT0xMKQogI2luY2x1ZGUgPHBvbGwuaD4KICNlbmRpZgogCiAKLSNpZiAoSEFWRV9LUVVFVUUpCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkKICNpbmNsdWRlIDxzeXMvZXZlbnQuaD4KICNlbmRpZgogCiAKLSNpZiAoSEFWRV9ERVZQT0xMKQorI2lmIChOR1hfSEFWRV9ERVZQT0xMKQogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogI2luY2x1ZGUgPHN5cy9kZXZwb2xsLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9wb3NpeF9pbml0LmMgYi9zcmMvb3MvdW5peC9uZ3hfcG9zaXhfaW5pdC5jCmluZGV4IDE5ZDY1YTQuLjU2YmUwY2UgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9wb3NpeF9pbml0LmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X3Bvc2l4X2luaXQuYwpAQCAtMTIxLDcgKzEyMSw3IEBACiAKICAgICBuZ3hfbWF4X3NvY2tldHMgPSBybG10LnJsaW1fY3VyOwogCi0jaWYgKEhBVkVfSU5IRVJJVEVEX05PTkJMT0NLKQorI2lmIChOR1hfSEFWRV9JTkhFUklURURfTk9OQkxPQ0spCiAgICAgbmd4X2luaGVyaXRlZF9ub25ibG9ja2luZyA9IDE7CiAjZWxzZQogICAgIG5neF9pbmhlcml0ZWRfbm9uYmxvY2tpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3NfY3ljbGUuYyBiL3NyYy9vcy91bml4L25neF9wcm9jZXNzX2N5Y2xlLmMKaW5kZXggMzdiMmVmMS4uM2QxYzUxYiAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3NfY3ljbGUuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfcHJvY2Vzc19jeWNsZS5jCkBAIC02MDcsNiArNjA3LDEwIEBACiAKIHN0YXRpYyB2b2lkIG5neF93b3JrZXJfcHJvY2Vzc19jeWNsZShuZ3hfY3ljbGVfdCAqY3ljbGUsIHZvaWQgKmRhdGEpCiB7CisgICAgbmd4X2ludF90ICAgICAgICAgIG47CisgICAgbmd4X2Vycl90ICAgICAgICAgIGVycjsKKyAgICBuZ3hfY29yZV9jb25mX3QgICAqY2NmOworCiAgICAgbmd4X3dvcmtlcl9wcm9jZXNzX2luaXQoY3ljbGUpOwogCiAgICAgbmd4X3NldHByb2N0aXRsZSgid29ya2VyIHByb2Nlc3MiKTsKQEAgLTYxOCw2ICs2MjIsOCBAQAogICAgICAgICBleGl0KDIpOwogICAgIH0KIAorICAgIGNjZiA9IChuZ3hfY29yZV9jb25mX3QgKikgbmd4X2dldF9jb25mKGN5Y2xlLT5jb25mX2N0eCwgbmd4X2NvcmVfbW9kdWxlKTsKKwogICAgIGlmIChuZ3hfdGhyZWFkc19uKSB7CiAgICAgICAgIGlmIChuZ3hfaW5pdF90aHJlYWRzKG5neF90aHJlYWRzX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjZi0+dGhyZWFkX3N0YWNrX3NpemUsIGN5Y2xlKSA9PSBOR1hfRVJST1IpCkBAIC05MTQsMTAgKzkyMCw5IEBACiAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5neF90aHJlYWRzX247IGkrKykgewogICAgICAgICAgICAgaWYgKG5neF90aHJlYWRzW2ldLnN0YXRlIDwgTkdYX1RIUkVBRF9FWElUKSB7Ci0gICAgICAgICAgICAgICAgbmd4X2NvbmRfc2lnbmFsKG5neF90aHJlYWRzW2ldLmN2KTsKLQotICAgICAgICAgICAgICAgIGlmIChuZ3hfdGhyZWFkc1tpXS5jdi0+dGlkID09IChuZ3hfdGlkX3QpIC0xKSB7CisgICAgICAgICAgICAgICAgaWYgKG5neF9jb25kX3NpZ25hbChuZ3hfdGhyZWFkc1tpXS5jdikgPT0gTkdYX0VSUk9SKSB7CiAgICAgICAgICAgICAgICAgICAgIG5neF90aHJlYWRzW2ldLnN0YXRlID0gTkdYX1RIUkVBRF9ET05FOworCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbGl2ZSA9IDE7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTU1LDggKzk2MCw2IEBACiAgICAgbmd4X2NvcmVfdGxzX3QgICAqdGxzOwogICAgIG5neF9jeWNsZV90ICAgICAgKmN5Y2xlOwogCi0gICAgdGhyLT5jdi0+dGlkID0gbmd4X3RocmVhZF9zZWxmKCk7Ci0KICAgICBjeWNsZSA9IChuZ3hfY3ljbGVfdCAqKSBuZ3hfY3ljbGU7CiAKICAgICBzaWdlbXB0eXNldCgmc2V0KTsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9yZWFkdl9jaGFpbi5jIGIvc3JjL29zL3VuaXgvbmd4X3JlYWR2X2NoYWluLmMKaW5kZXggMmRiOTk4YS4uN2M1N2I3YSAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3JlYWR2X2NoYWluLmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X3JlYWR2X2NoYWluLmMKQEAgLTksNyArOSw3IEBACiAjaW5jbHVkZSA8bmd4X2V2ZW50Lmg+CiAKIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogCiBzc2l6ZV90IG5neF9yZWFkdl9jaGFpbihuZ3hfY29ubmVjdGlvbl90ICpjLCBuZ3hfY2hhaW5fdCAqY2hhaW4pCiB7CkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICByZXR1cm4gbjsKIH0KIAotI2Vsc2UgLyogISBOQVZFX0tRVUVVRSAqLworI2Vsc2UgLyogISBOR1hfSEFWRV9LUVVFVUUgKi8KIAogc3NpemVfdCBuZ3hfcmVhZHZfY2hhaW4obmd4X2Nvbm5lY3Rpb25fdCAqYywgbmd4X2NoYWluX3QgKmNoYWluKQogewpAQCAtMjE2LDQgKzIxNiw0IEBACiAgICAgcmV0dXJuIG47CiB9CiAKLSNlbmRpZiAvKiBOQVZFX0tRVUVVRSAqLworI2VuZGlmIC8qIE5HWF9IQVZFX0tRVUVVRSAqLwpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3JlY3YuYyBiL3NyYy9vcy91bml4L25neF9yZWN2LmMKaW5kZXggZDU4Y2E5ZS4uMzY5YmU2NiAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3JlY3YuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfcmVjdi5jCkBAIC05LDcgKzksNyBAQAogI2luY2x1ZGUgPG5neF9ldmVudC5oPgogCiAKLSNpZiAoSEFWRV9LUVVFVUUpCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkKIAogc3NpemVfdCBuZ3hfdW5peF9yZWN2KG5neF9jb25uZWN0aW9uX3QgKmMsIHVfY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKIHsKQEAgLTExNSw3ICsxMTUsNyBAQAogICAgIHJldHVybiBuOwogfQogCi0jZWxzZSAvKiAhIE5BVkVfS1FVRVVFICovCisjZWxzZSAvKiAhIE5HWF9IQVZFX0tRVUVVRSAqLwogCiBzc2l6ZV90IG5neF91bml4X3JlY3Yobmd4X2Nvbm5lY3Rpb25fdCAqYywgdV9jaGFyICpidWYsIHNpemVfdCBzaXplKQogewpAQCAtMTcwLDQgKzE3MCw0IEBACiAgICAgcmV0dXJuIG47CiB9CiAKLSNlbmRpZiAvKiBOQVZFX0tRVUVVRSAqLworI2VuZGlmIC8qIE5HWF9IQVZFX0tRVUVVRSAqLwpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3NlbmQuYyBiL3NyYy9vcy91bml4L25neF9zZW5kLmMKaW5kZXggZmY1MDFjMy4uZWNkMTM2MiAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3NlbmQuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfc2VuZC5jCkBAIC0xNyw3ICsxNyw3IEBACiAKICAgICB3ZXYgPSBjLT53cml0ZTsKIAotI2lmIChIQVZFX0tRVUVVRSkKKyNpZiAoTkdYX0hBVkVfS1FVRVVFKQogCiAgICAgaWYgKChuZ3hfZXZlbnRfZmxhZ3MgJiBOR1hfVVNFX0tRVUVVRV9FVkVOVCkgJiYgd2V2LT5wZW5kaW5nX2VvZikgewogICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgYy0+bG9nLCB3ZXYtPmtxX2Vycm5vLApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3NoYXJlZC5jIGIvc3JjL29zL3VuaXgvbmd4X3NoYXJlZC5jCmluZGV4IDBlZGM4Y2IuLjgwYjVmNjAgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9zaGFyZWQuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfc2hhcmVkLmMKQEAgLTgsNyArOCw3IEBACiAjaW5jbHVkZSA8bmd4X2NvcmUuaD4KIAogCi0jaWYgKEhBVkVfTUFQX0FOT04pCisjaWYgKE5HWF9IQVZFX01BUF9BTk9OKQogCiB2b2lkICpuZ3hfY3JlYXRlX3NoYXJlZF9tZW1vcnkoc2l6ZV90IHNpemUsIG5neF9sb2dfdCAqbG9nKQogewpAQCAtMjUsNyArMjUsNyBAQAogICAgIHJldHVybiBwOwogfQogCi0jZWxpZiAoSEFWRV9NQVBfREVWWkVSTykKKyNlbGlmIChOR1hfSEFWRV9NQVBfREVWWkVSTykKIAogdm9pZCAqbmd4X2NyZWF0ZV9zaGFyZWRfbWVtb3J5KHNpemVfdCBzaXplLCBuZ3hfbG9nX3QgKmxvZykKIHsKQEAgLTU2LDcgKzU2LDcgQEAKICAgICByZXR1cm4gcDsKIH0KIAotI2VsaWYgKEhBVkVfU1lTVlNITSkKKyNlbGlmIChOR1hfSEFWRV9TWVNWU0hNKQogCiAjaW5jbHVkZSA8c3lzL2lwYy5oPgogI2luY2x1ZGUgPHN5cy9zaG0uaD4KZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9zb2NrZXQuYyBiL3NyYy9vcy91bml4L25neF9zb2NrZXQuYwppbmRleCBkYTkzNmIyLi41MjNmMWY0IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfc29ja2V0LmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X3NvY2tldC5jCkBAIC0yMCw3ICsyMCw3IEBACiAgKi8KIAogCi0jaWYgKEhBVkVfRklPTkJJTykKKyNpZiAoTkdYX0hBVkVfRklPTkJJTykKIAogaW50IG5neF9ub25ibG9ja2luZyhuZ3hfc29ja2V0X3QgcykKIHsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9zb2NrZXQuaCBiL3NyYy9vcy91bml4L25neF9zb2NrZXQuaAppbmRleCA0ZGNmOTI0Li5iMzgxOTY3IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfc29ja2V0LmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X3NvY2tldC5oCkBAIC0xOSw3ICsxOSw3IEBACiAjZGVmaW5lIG5neF9zb2NrZXRfbiAgICAgICAgInNvY2tldCgpIgogCiAKLSNpZiAoSEFWRV9GSU9OQklPKQorI2lmIChOR1hfSEFWRV9GSU9OQklPKQogCiBpbnQgbmd4X25vbmJsb2NraW5nKG5neF9zb2NrZXRfdCBzKTsKIGludCBuZ3hfYmxvY2tpbmcobmd4X3NvY2tldF90IHMpOwpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfY29uZmlnLmggYi9zcmMvb3MvdW5peC9uZ3hfc29sYXJpc19jb25maWcuaAppbmRleCA4ZjE4NDE3Li40NTI4NTBjIDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfc29sYXJpc19jb25maWcuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfc29sYXJpc19jb25maWcuaApAQCAtNDksMzUgKzQ5LDM1IEBACiAjaW5jbHVkZSA8bmd4X2F1dG9fY29uZmlnLmg+CiAKIAotI2lmIChIQVZFX1BPTEwpCisjaWYgKE5HWF9IQVZFX1BPTEwpCiAjaW5jbHVkZSA8cG9sbC5oPgogI2VuZGlmCiAKIAotI2lmIChIQVZFX1NFTkRGSUxFKQorI2lmIChOR1hfSEFWRV9TRU5ERklMRSkKICNpbmNsdWRlIDxzeXMvc2VuZGZpbGUuaD4KICNlbmRpZgogCiAKLSNpZiAoSEFWRV9BSU8pCisjaWYgKE5HWF9IQVZFX0FJTykKICNpbmNsdWRlIDxhaW8uaD4KICNlbmRpZgogCiAKLSNpZiAoSEFWRV9ERVZQT0xMKQorI2lmIChOR1hfSEFWRV9ERVZQT0xMKQogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogI2luY2x1ZGUgPHN5cy9kZXZwb2xsLmg+CiAjZW5kaWYKIAogCi0jaWZuZGVmIEhBVkVfSU5IRVJJVEVEX05PTkJMT0NLCi0jZGVmaW5lIEhBVkVfSU5IRVJJVEVEX05PTkJMT0NLICAxCisjaWZuZGVmIE5HWF9IQVZFX0lOSEVSSVRFRF9OT05CTE9DSworI2RlZmluZSBOR1hfSEFWRV9JTkhFUklURURfTk9OQkxPQ0sgIDEKICNlbmRpZgogCiAKLSNpZm5kZWYgSEFWRV9TT19TTkRMT1dBVAorI2lmbmRlZiBOR1hfSEFWRV9TT19TTkRMT1dBVAogLyogc2V0c29ja29wdChTT19TTkRMT1dBVCkgcmV0dXJucyBlcnJvciAiT3B0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wiICovCi0jZGVmaW5lIEhBVkVfU09fU05ETE9XQVQgICAgICAgICAwCisjZGVmaW5lIE5HWF9IQVZFX1NPX1NORExPV0FUICAgICAgICAgMAogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfaW5pdC5jIGIvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfaW5pdC5jCmluZGV4IGM2NzExOTcuLjAzMDcyZWQgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9zb2xhcmlzX2luaXQuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfc29sYXJpc19pbml0LmMKQEAgLTE3LDcgKzE3LDcgQEAKICAgICBuZ3hfdW5peF9yZWN2LAogICAgIG5neF9yZWFkdl9jaGFpbiwKICAgICBuZ3hfdW5peF9zZW5kLAotI2lmIChIQVZFX1NFTkRGSUxFKQorI2lmIChOR1hfSEFWRV9TRU5ERklMRSkKICAgICBuZ3hfc29sYXJpc19zZW5kZmlsZXZfY2hhaW4sCiAgICAgTkdYX0lPX1NFTkRGSUxFCiAjZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3RocmVhZC5oIGIvc3JjL29zL3VuaXgvbmd4X3RocmVhZC5oCmluZGV4IGFjN2NmYWQuLmU2MzBiMzUgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF90aHJlYWQuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfdGhyZWFkLmgKQEAgLTUzLDcgKzUzLDYgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIHB0aHJlYWRfY29uZF90ICAgIGNvbmQ7Ci0gICAgbmd4X3RpZF90ICAgICAgICAgdGlkOwogICAgIG5neF9sb2dfdCAgICAgICAgKmxvZzsKIH0gbmd4X2NvbmRfdDsKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3RpbWUuYyBiL3NyYy9vcy91bml4L25neF90aW1lLmMKaW5kZXggYzQzODk1MC4uMjBlYzQ2NCAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3RpbWUuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfdGltZS5jCkBAIC0xMCw3ICsxMCw3IEBACiAKIHZvaWQgbmd4X2xvY2FsdGltZShuZ3hfdG1fdCAqdG0pCiB7Ci0jaWYgKEhBVkVfTE9DQUxUSU1FX1IpCisjaWYgKE5HWF9IQVZFX0xPQ0FMVElNRV9SKQogICAgIHRpbWVfdCAgICAgbm93OwogCiAgICAgbm93ID0gbmd4X3RpbWUoKTsKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF90aW1lLmggYi9zcmMvb3MvdW5peC9uZ3hfdGltZS5oCmluZGV4IGE2YWNmNTkuLmYyNTczMjUgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF90aW1lLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X3RpbWUuaApAQCAtMzYsNyArMzYsNyBAQAogI2RlZmluZSBuZ3hfdG1fd2RheV90ICBpbnQKIAogCi0jaWYgKEhBVkVfR01UT0ZGKQorI2lmIChOR1hfSEFWRV9HTVRPRkYpCiAjZGVmaW5lIG5neF90bV9nbXRvZmYgIHRtX2dtdG9mZgogI2RlZmluZSBuZ3hfdG1fem9uZSAgICB0bV96b25lCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF93cml0ZXZfY2hhaW4uYyBiL3NyYy9vcy91bml4L25neF93cml0ZXZfY2hhaW4uYwppbmRleCBlMzg5MzIyLi4yYWY2NDY5IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfd3JpdGV2X2NoYWluLmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X3dyaXRldl9jaGFpbi5jCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgIHJldHVybiBpbjsKICAgICB9CiAKLSNpZiAoSEFWRV9LUVVFVUUpCisjaWYgKE5HWF9IQVZFX0tRVUVVRSkKIAogICAgIGlmICgobmd4X2V2ZW50X2ZsYWdzICYgTkdYX1VTRV9LUVVFVUVfRVZFTlQpICYmIHdldi0+cGVuZGluZ19lb2YpIHsKICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0lORk8sIGMtPmxvZywgd2V2LT5rcV9lcnJubywKZGlmZiAtLWdpdCBhL3NyYy9vcy93aW4zMi9uZ3hfb3MuaCBiL3NyYy9vcy93aW4zMi9uZ3hfb3MuaAppbmRleCBjMjdmOGE4Li42ZDcyMGZhIDEwMDY0NAotLS0gYS9zcmMvb3Mvd2luMzIvbmd4X29zLmgKKysrIGIvc3JjL29zL3dpbjMyL25neF9vcy5oCkBAIC0xNSwxOCArMTUsNiBAQAogI2RlZmluZSBOR1hfSU9fU0VOREZJTEUgICAgMQogI2RlZmluZSBOR1hfSU9fWkVST0NPUFkgICAgMgogCi0jaWYgKEhBVkVfU0VOREZJTEUpCi0jZGVmaW5lIE5HWF9IQVZFX1NFTkRGSUxFICBOR1hfSU9fU0VOREZJTEUKLSNlbHNlCi0jZGVmaW5lIE5HWF9IQVZFX1NFTkRGSUxFICAwCi0jZW5kaWYKLQotI2lmIChIQVZFX1pFUk9DT1BZKQotI2RlZmluZSBOR1hfSEFWRV9aRVJPQ09QWSAgTkdYX0lPX1pFUk9DT1BZCi0jZWxzZQotI2RlZmluZSBOR1hfSEFWRV9aRVJPQ09QWSAgMAotI2VuZGlmCi0KIAogdHlwZWRlZiBzc2l6ZV90ICgqbmd4X3JlY3ZfcHQpKG5neF9jb25uZWN0aW9uX3QgKmMsIHVfY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSk7CiB0eXBlZGVmIHNzaXplX3QgKCpuZ3hfcmVjdl9jaGFpbl9wdCkobmd4X2Nvbm5lY3Rpb25fdCAqYywgbmd4X2NoYWluX3QgKmluKTsKZGlmZiAtLWdpdCBhL3NyYy9vcy93aW4zMi9uZ3hfdGltZS5oIGIvc3JjL29zL3dpbjMyL25neF90aW1lLmgKaW5kZXggNjY1OTc2ZC4uNGNiOTg0MSAxMDA2NDQKLS0tIGEvc3JjL29zL3dpbjMyL25neF90aW1lLmgKKysrIGIvc3JjL29zL3dpbjMyL25neF90aW1lLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogI2RlZmluZSBuZ3hfbXNsZWVwICAgICAgIFNsZWVwCiAKLSNkZWZpbmUgSEFWRV9HRVRUSU1FWk9ORSAgMQorI2RlZmluZSBOR1hfSEFWRV9HRVRUSU1FWk9ORSAgMQogCiBuZ3hfaW50X3Qgbmd4X2dldHRpbWV6b25lKHZvaWQpOwogdm9pZCBuZ3hfZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0cCk7CmRpZmYgLS1naXQgYS9zcmMvb3Mvd2luMzIvbmd4X3dpbjMyX2NvbmZpZy5oIGIvc3JjL29zL3dpbjMyL25neF93aW4zMl9jb25maWcuaAppbmRleCBlN2QzMDg2Li5jNzcwM2MyIDEwMDY0NAotLS0gYS9zcmMvb3Mvd2luMzIvbmd4X3dpbjMyX2NvbmZpZy5oCisrKyBiL3NyYy9vcy93aW4zMi9uZ3hfd2luMzJfY29uZmlnLmgKQEAgLTExNSwzNyArMTE1LDMxIEBACiAKIAogI2RlZmluZSBUSU1FX1RfTEVOICAgICAgICBzaXplb2YoIi0yMTQ3NDgzNjQ4IikgLSAxCisjZGVmaW5lIE9GRl9UX01BWF9WQUxVRSAgIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyNkZWZpbmUgTkdYX0hBVkVfTElUVExFX0VORElBTiAgMQorCisjZGVmaW5lIE5HWF9USFJFQURTICAgICAgIDEKIAogCiAjZGVmaW5lIE5HWF9XSU5fTlQgICAgICAgIDIwMDAwMAogCiAKLSNkZWZpbmUgTkdYX1RIUkVBRFMgICAgICAgMQotCi0KLSNpZm5kZWYgSEFWRV9JTkhFUklURURfTk9OQkxPQ0sKLSNkZWZpbmUgSEFWRV9JTkhFUklURURfTk9OQkxPQ0sgIDEKKyNpZm5kZWYgTkdYX0hBVkVfSU5IRVJJVEVEX05PTkJMT0NLCisjZGVmaW5lIE5HWF9IQVZFX0lOSEVSSVRFRF9OT05CTE9DSyAgMQogI2VuZGlmCiAKLSNpZm5kZWYgSEFWRV9XSU4zMl9UUkFOU01JVFBBQ0tFVFMKLSNkZWZpbmUgSEFWRV9XSU4zMl9UUkFOU01JVFBBQ0tFVFMgIDEKLSNkZWZpbmUgSEFWRV9XSU4zMl9UUkFOU01JVEZJTEUgICAgIDAKKyNpZm5kZWYgTkdYX0hBVkVfV0lOMzJfVFJBTlNNSVRQQUNLRVRTCisjZGVmaW5lIE5HWF9IQVZFX1dJTjMyX1RSQU5TTUlUUEFDS0VUUyAgMQorI2RlZmluZSBOR1hfSEFWRV9XSU4zMl9UUkFOU01JVEZJTEUgICAgIDAKICNlbmRpZgogCi0jaWZuZGVmIEhBVkVfV0lOMzJfVFJBTlNNSVRGSUxFCi0jZGVmaW5lIEhBVkVfV0lOMzJfVFJBTlNNSVRGSUxFICAxCisjaWZuZGVmIE5HWF9IQVZFX1dJTjMyX1RSQU5TTUlURklMRQorI2RlZmluZSBOR1hfSEFWRV9XSU4zMl9UUkFOU01JVEZJTEUgIDEKICNlbmRpZgogCi0jaWYgKEhBVkVfV0lOMzJfVFJBTlNNSVRQQUNLRVRTKSB8fCAoSEFWRV9XSU4zMl9UUkFOU01JVEZJTEUpCi0jZGVmaW5lIEhBVkVfU0VOREZJTEUgIDEKKyNpZiAoTkdYX0hBVkVfV0lOMzJfVFJBTlNNSVRQQUNLRVRTKSB8fCAoTkdYX0hBVkVfV0lOMzJfVFJBTlNNSVRGSUxFKQorI2RlZmluZSBOR1hfSEFWRV9TRU5ERklMRSAgMQogI2VuZGlmCiAKIAotI2RlZmluZSBPRkZfVF9NQVhfVkFMVUUgIDkyMjMzNzIwMzY4NTQ3NzU4MDcKLQotCi0vKiBTVFVCICovCi0jZGVmaW5lIEhBVkVfTElUVExFX0VORElBTiAgMQotCi0KICNlbmRpZiAvKiBfTkdYX1dJTjMyX0NPTkZJR19IX0lOQ0xVREVEXyAqLwo=