ZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX2JpbmFyeS96eGljX2FwcF9yZWxlYXNlL2dsaWJjL2xpYi9saWJ1cGlfYWIuYSBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX2JpbmFyeS96eGljX2FwcF9yZWxlYXNlL2dsaWJjL2xpYi9saWJ1cGlfYWIuYQppbmRleCBiYzg2YTIwLi40ZGVhMjg1IDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19iaW5hcnkvenhpY19hcHBfcmVsZWFzZS9nbGliYy9saWIvbGlidXBpX2FiLmEKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfYmluYXJ5L3p4aWNfYXBwX3JlbGVhc2UvZ2xpYmMvbGliL2xpYnVwaV9hYi5hCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX2JpbmFyeS96eGljX2FwcF9yZWxlYXNlL2dsaWJjL2xpYi9saWJ1cGlfYWIuc28gYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19iaW5hcnkvenhpY19hcHBfcmVsZWFzZS9nbGliYy9saWIvbGlidXBpX2FiLnNvCmluZGV4IDI2Nzk3MzAuLmZlMDY5ZDQgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX2JpbmFyeS96eGljX2FwcF9yZWxlYXNlL2dsaWJjL2xpYi9saWJ1cGlfYWIuc28KKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfYmluYXJ5L3p4aWNfYXBwX3JlbGVhc2UvZ2xpYmMvbGliL2xpYnVwaV9hYi5zbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y29uZmlnL2F0Y21kX3N0cmVhbV9wcm9jLmMgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y29uZmlnL2F0Y21kX3N0cmVhbV9wcm9jLmMKaW5kZXggOTI1ZWUwYy4uOWM0MTJjOSAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGNvbmZpZy9hdGNtZF9zdHJlYW1fcHJvYy5jCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjb25maWcvYXRjbWRfc3RyZWFtX3Byb2MuYwpAQCAtMjgsMTggKzI4LDE4IEBACiAJY2hhciAqYXRfc3RyID0gTlVMTDsNCiAJaW50IGF0X2ZkID0gMDsNCiANCi0JYXRfcHJpbnQoQVRfRVJSLCIkJCQkJHN5bmNfYXRjbWRfc3RyZWFtIGluZGV4PSVzXG4iLGluZGV4KTsNCisJYXRfcHJpbnQoQVRfREVCVUcsIiQkJCQkc3luY19hdGNtZF9zdHJlYW0gaW5kZXg9JXNcbiIsaW5kZXgpOw0KIA0KIAlzbnByaW50Zihudm5hbWUsIHNpemVvZihudm5hbWUpLCAiYXRjbWRfc3RyZWFtJWQiLCBhdG9pKGluZGV4KSk7DQogCXNjX2NmZ19nZXQobnZuYW1lLCBudnZhbHVlLCBOVl9NQVhfVkFMX0xFTik7DQogDQotCWF0X3ByaW50KEFUX0VSUiwiJCQkJCRzeW5jX2F0Y21kX3N0cmVhbSBudj0lcyBudmxlbj0lZFxuIixudnZhbHVlLCBzdHJsZW4obnZ2YWx1ZSkpOw0KKwlhdF9wcmludChBVF9ERUJVRywiJCQkJCRzeW5jX2F0Y21kX3N0cmVhbSBudj0lcyBudmxlbj0lZFxuIixudnZhbHVlLCBzdHJsZW4obnZ2YWx1ZSkpOw0KIA0KIAlhdF9zdHIgPSBtYWxsb2MoU09DX01TR19NQVhfTEVOKTsNCiAJaWYoYXRfc3RyID09IE5VTEwpe3NvZnRhcF9hc3NlcnQoIiIpO30NCiAJc3ByaW50ZihhdF9zdHIsIiVzOiVzIixudm5hbWUsIG52dmFsdWUpOwkNCiANCi0JYXRfcHJpbnQoQVRfRVJSLCIkJCQkJHN5bmNfYXRjbWRfc3RyZWFtIGxlbj0lZFxuIixzdHJsZW4oYXRfc3RyKSk7DQorCWF0X3ByaW50KEFUX0RFQlVHLCIkJCQkJHN5bmNfYXRjbWRfc3RyZWFtIGxlbj0lZFxuIixzdHJsZW4oYXRfc3RyKSk7DQogDQogCWF0X2ZkID0gYXRfY29udGV4dF9nZXRfZmRfYnlfcG9zKHBvc2l0aW9uKTsNCiAJYXRfc29jbXNnX3dyaXRlKGF0X2ZkLCBNT0RVTEVfSURfQVRfQ1RMLE1PRFVMRV9JRF9BVF9DVEwsIE1TR19DTURfU1lOQ19BVENNRF9TVFJFQU0sIHN0cmxlbihhdF9zdHIpLCBhdF9zdHIpOyAgDQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGNvbmZpZy9wc19ub3JtYWwuYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfbm9ybWFsLmMKaW5kZXggZTBjODgwMC4uM2E5ZjViNyAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGNvbmZpZy9wc19ub3JtYWwuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y29uZmlnL3BzX25vcm1hbC5jCkBAIC0xMjA2LDcgKzEyMDYsNyBAQAogew0KIAlUX3pBdF9TaWduYWxCYXJJbmZvIHNpZ25hbEJhckluZm8gPSB7MH07DQogCW5vcm1hbF9nZXRzaWduYWxiYXJpbmZvKCZzaWduYWxCYXJJbmZvLCBaQVRfU0lHTkFMQkFSX1RZUEVfTFRFKTsNCi0gICAgcHJpbnRmKCJhdEJhc2VfQ2FsY0x0ZVNpZ25hbEJhcjogJWQgPD0gc2lnYmFyMCA8PSAlZCwgJWQgPD0gc2lnYmFyMSA8PSAlZCwgJWQgPD0gc2lnYmFyMiA8PSAlZCwgJWQgPD0gc2lnYmFyMyA8PSAlZCwlZCA8PSBzaWdiYXI0IDw9ICVkLCAlZCA8PSBzaWdiYXI1IDw9ICVkLCFcbiIsIFwNCisgICAgYXRfcHJpbnQoQVRfREVCVUcsImF0QmFzZV9DYWxjTHRlU2lnbmFsQmFyOiAlZCA8PSBzaWdiYXIwIDw9ICVkLCAlZCA8PSBzaWdiYXIxIDw9ICVkLCAlZCA8PSBzaWdiYXIyIDw9ICVkLCAlZCA8PSBzaWdiYXIzIDw9ICVkLCVkIDw9IHNpZ2JhcjQgPD0gJWQsICVkIDw9IHNpZ2JhcjUgPD0gJWQsIVxuIiwgXA0KIAkJICAgICAgICAgc2lnbmFsQmFySW5mby5zaWduYWxiYXIwX2xvdywgc2lnbmFsQmFySW5mby5zaWduYWxiYXIwX2hpZ2gsIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMV9sb3csIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMV9oaWdoLHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMl9sb3csIFwNCiAJCQkJIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMl9oaWdoLHNpZ25hbEJhckluZm8uc2lnbmFsYmFyM19sb3csc2lnbmFsQmFySW5mby5zaWduYWxiYXIzX2hpZ2gsc2lnbmFsQmFySW5mby5zaWduYWxiYXI0X2xvdywgc2lnbmFsQmFySW5mby5zaWduYWxiYXI0X2hpZ2gsIFwNCiAJCSAgICAgICAgIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyNV9sb3csIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyNV9oaWdoKTsgDQpAQCAtMTI1Myw3ICsxMjUzLDcgQEAKIHsNCiAJVF96QXRfU2lnbmFsQmFySW5mbyBzaWduYWxCYXJJbmZvID0gezB9Ow0KIAlub3JtYWxfZ2V0c2lnbmFsYmFyaW5mbygmc2lnbmFsQmFySW5mbywgWkFUX1NJR05BTEJBUl9UWVBFX1REUyk7DQotICAgIHByaW50ZigiYXRCYXNlX0NhbGNUZFNpZ25hbEJhcjogJWQgPD0gc2lnYmFyMCA8PSAlZCwgJWQgPD0gc2lnYmFyMSA8PSAlZCwgJWQgPD0gc2lnYmFyMiA8PSAlZCwgJWQgPD0gc2lnYmFyMyA8PSAlZCwlZCA8PSBzaWdiYXI0IDw9ICVkLCAlZCA8PSBzaWdiYXI1IDw9ICVkIVxuIiwgXA0KKyAgICBhdF9wcmludChBVF9ERUJVRywiYXRCYXNlX0NhbGNUZFNpZ25hbEJhcjogJWQgPD0gc2lnYmFyMCA8PSAlZCwgJWQgPD0gc2lnYmFyMSA8PSAlZCwgJWQgPD0gc2lnYmFyMiA8PSAlZCwgJWQgPD0gc2lnYmFyMyA8PSAlZCwlZCA8PSBzaWdiYXI0IDw9ICVkLCAlZCA8PSBzaWdiYXI1IDw9ICVkIVxuIiwgXA0KIAkJICAgICAgICAgc2lnbmFsQmFySW5mby5zaWduYWxiYXIwX2xvdywgc2lnbmFsQmFySW5mby5zaWduYWxiYXIwX2hpZ2gsIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMV9sb3csIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMV9oaWdoLHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMl9sb3csIFwNCiAJCQkJIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMl9oaWdoLHNpZ25hbEJhckluZm8uc2lnbmFsYmFyM19sb3csc2lnbmFsQmFySW5mby5zaWduYWxiYXIzX2hpZ2gsc2lnbmFsQmFySW5mby5zaWduYWxiYXI0X2xvdywgc2lnbmFsQmFySW5mby5zaWduYWxiYXI0X2hpZ2gsIFwNCiAJCSAgICAgICAgIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyNV9sb3csIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyNV9oaWdoKTsgDQpAQCAtMTMwMSw3ICsxMzAxLDcgQEAKIAlUX3pBdF9TaWduYWxCYXJJbmZvIHNpZ25hbEJhckluZm8gPSB7MH07DQogDQogCW5vcm1hbF9nZXRzaWduYWxiYXJpbmZvKCZzaWduYWxCYXJJbmZvLCBaQVRfU0lHTkFMQkFSX1RZUEVfR1NNKTsNCi0gICAgcHJpbnRmKCJhdEJhc2VfQ2FsY090aGVyU2lnbmFsQmFyOiAlZCA8PSBzaWdiYXIwIDw9ICVkLCAlZCA8PSBzaWdiYXIxIDw9ICVkLCAlZCA8PSBzaWdiYXIyIDw9ICVkLCAlZCA8PSBzaWdiYXIzIDw9ICVkLCVkIDw9IHNpZ2JhcjQgPD0gJWQsICVkIDw9IHNpZ2JhcjUgPD0gJWQsIVxuIiwgXA0KKyAgICBhdF9wcmludChBVF9ERUJVRywiYXRCYXNlX0NhbGNPdGhlclNpZ25hbEJhcjogJWQgPD0gc2lnYmFyMCA8PSAlZCwgJWQgPD0gc2lnYmFyMSA8PSAlZCwgJWQgPD0gc2lnYmFyMiA8PSAlZCwgJWQgPD0gc2lnYmFyMyA8PSAlZCwlZCA8PSBzaWdiYXI0IDw9ICVkLCAlZCA8PSBzaWdiYXI1IDw9ICVkLCFcbiIsIFwNCiAJCSAgICAgICAgIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMF9sb3csIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyMF9oaWdoLCBzaWduYWxCYXJJbmZvLnNpZ25hbGJhcjFfbG93LCBzaWduYWxCYXJJbmZvLnNpZ25hbGJhcjFfaGlnaCxzaWduYWxCYXJJbmZvLnNpZ25hbGJhcjJfbG93LCBcDQogCQkJCSBzaWduYWxCYXJJbmZvLnNpZ25hbGJhcjJfaGlnaCxzaWduYWxCYXJJbmZvLnNpZ25hbGJhcjNfbG93LHNpZ25hbEJhckluZm8uc2lnbmFsYmFyM19oaWdoLHNpZ25hbEJhckluZm8uc2lnbmFsYmFyNF9sb3csIHNpZ25hbEJhckluZm8uc2lnbmFsYmFyNF9oaWdoLCBcDQogCQkgICAgICAgICBzaWduYWxCYXJJbmZvLnNpZ25hbGJhcjVfbG93LCBzaWduYWxCYXJJbmZvLnNpZ25hbGJhcjVfaGlnaCk7IA0KQEAgLTEzNjAsNyArMTM2MCw3IEBACiAgICAgY2hhciBuZXRUeXBlWzMwXSA9IHswfTsNCiAgICAgY2hhciBzdHJSc3NpWzMwXSA9IHsgMCB9Ow0KICAgICBsb25nICBjc3EgID0gMDsNCi0gICAgYXRfcHJpbnQoQVRfREVCVUcsIm5vcm1hbF9jYWxjc2lnbmFsYmFyIVxuIik7DQorICAgIC8vYXRfcHJpbnQoQVRfREVCVUcsIm5vcm1hbF9jYWxjc2lnbmFsYmFyIVxuIik7DQogICAgIFVJTlQzMiBzaWduYWxiYXIgPSAwOw0KICAgICBjaGFyIG9sZFNpZ25hbGJhclsxMF0gPSB7MH07DQogICAgIGNoYXIgbmV3U2lnbmFsYmFyWzEwXSA9IHswfTsNCkBAIC0yMjAzLDE5ICsyMjAzLDE5IEBACiAJICAgICYmMCA9PSBzdHJjbXAoIm1vZGVtX2luaXRfY29tcGxldGUiLG1vZGVtU3RhdGUpKQ0KICAgICB7DQogICAgICAgICBzY19jZmdfc2V0KE5WX1BJTl9QVUtfUFJPQ0VTUywgImVuZCIpOw0KLSAgICAgICAgcHJpbnRmKCJwaW5fcHVrX3Byb2Nlc3MgPSBlbmQgLS0tIG1vZGVtX2luaXRfY29tcGxldGUiKTsgDQorICAgICAgICBhdF9wcmludChBVF9ERUJVRywicGluX3B1a19wcm9jZXNzID0gZW5kIC0tLSBtb2RlbV9pbml0X2NvbXBsZXRlIik7IA0KICAgICB9DQogICAgIC8qd2ViIHBpbqGicHVrwuvR6daktq/X973hyvi686Ost6JaQVRfU1lTQ09ORklHUkVBRF9DTUQqLw0KICAgICBlbHNlIGlmKHN0cmNtcChwaW5Qcm9jZXNzLCJiZWdpbiIpID09IDApDQogICAgIHsNCiAgICAgICAgIHNjX2NmZ19zZXQoTlZfUElOX1BVS19QUk9DRVNTLCAiZW5kIik7DQotICAgICAgICBwcmludGYoInBpbl9wdWtfcHJvY2VzcyA9IGVuZCIpOyANCisgICAgICAgIGF0X3ByaW50KEFUX0RFQlVHLCJwaW5fcHVrX3Byb2Nlc3MgPSBlbmQiKTsgDQogICAgIH0NCiAJCQ0KICAgICAvKndlYiBwaW7C67ncwO22r9f3tKW3olpyYXC6887ez8LSu8z1QVSjrL2rQVTD/MHu1LS4s9a1zqpBVE1JQU4qLw0KICAgICBpZihzdHJjbXAocGluTWFuYWdlLCJiZWdpbiIpID09IDApDQogICAgIHsNCi0gICAgICAgIHByaW50ZigicGluX21hbmFnZV9wcm9jZXNzID0gZW5kIik7ICAgICAgICANCisgICAgICAgIGF0X3ByaW50KEFUX0RFQlVHLCJwaW5fbWFuYWdlX3Byb2Nlc3MgPSBlbmQiKTsgICAgICAgIA0KICAgICAgICAgc2NfY2ZnX3NldChOVl9QSU5fTUFOQUdFX1BST0NFU1MsICJlbmQiKTsNCiAgICAgfQ0KIH0NCkBAIC00NTA3LDcgKzQ1MDcsNyBAQAogCWNoYXIgdmVyc2lvbm1vZGVbMl0gPSB7MH07DQogDQogICAgIHZvaWQgKnBbNl0gPSB7JnRBdFJlcy5zdGF0LCB0QXRSZXMubGFjLCB0QXRSZXMucmFjLCAmdEF0UmVzLmFjdCwgdEF0UmVzLmNpLCAmdEF0UmVzLnN1YmFjdH07DQotICAgIGF0X3ByaW50KEFUX0RFQlVHLCJjZ3JlZ19hdXRvX2FjdCBhdF9wYXJhcz0lcyFcbiIsYXRfcGFyYXMpOw0KKyAgICAvL2F0X3ByaW50KEFUX0RFQlVHLCJjZ3JlZ19hdXRvX2FjdCBhdF9wYXJhcz0lcyFcbiIsYXRfcGFyYXMpOw0KICAgICBwYXJzZV9wYXJhbTIoIiVkLCVzLCVzLCVkLCVzLCVkIiwgYXRfcGFyYXMsIHApOw0KICAgICBhdF9wcmludChBVF9ERUJVRywiY2dyZWdfYXV0b19hY3Qgc3RhdD0lZCxsYWM9JXMscmFjPSVzLGFjdD0lZCxjaT0lcyxzdWJhY3Q9JWQhXG4iLA0KICAgICB0QXRSZXMuc3RhdCwgdEF0UmVzLmxhYywgdEF0UmVzLnJhYywgdEF0UmVzLmFjdCwgdEF0UmVzLmNpLCB0QXRSZXMuc3ViYWN0KTsgIA0KQEAgLTUyMTIsNyArNTIxMiw3IEBACiAgICAgew0KICAgICAgICAgc25wcmludGYoY29udmVydERhdGFTdHIrc3RybGVuKGNvbnZlcnREYXRhU3RyKSxBVF9VU1NEX0RBVEFfVE9fV0VCX0xFTiwiJTA0eCIsZGF0YVN0cltpRGF0YUxlbl0pOw0KICAgICB9DQotICAgIHByaW50ZigiJXNcbiIsY29udmVydERhdGFTdHIpOw0KKyAgICBhdF9wcmludChBVF9ERUJVRywiJXNcbiIsY29udmVydERhdGFTdHIpOw0KIH0NCiANCiBWT0lEIGF0QmFzZV9Db252ZXJ0OEJpdFRvVUNTMihjb25zdCBDSEFSICpkYXRhU3RyLENIQVIgKmNvbnZlcnREYXRhU3RyLFVJTlQxNiBkYXRhTGVuKQ0KQEAgLTUyMzQsNyArNTIzNCw3IEBACiAJICAgICAgc25wcmludGYoY29udmVydERhdGFTdHIrc3RybGVuKGNvbnZlcnREYXRhU3RyKSxBVF9VU1NEX0RBVEFfVE9fV0VCX0xFTiwiJWMiLGRhdGFTdHJbaURhdGFMZW5dKTsNCiAJIH0NCiAgICAgIH0NCi0gICAgIHByaW50ZigiJXNcbiIsY29udmVydERhdGFTdHIpOw0KKyAgICAgYXRfcHJpbnQoQVRfREVCVUcsIiVzXG4iLGNvbnZlcnREYXRhU3RyKTsNCiB9DQogDQogDQpAQCAtNTI2Myw3ICs1MjYzLDcgQEAKICAgICB9DQogICAgIGVsc2UNCiAgICAgew0KLSAgICAgICAgcHJpbnRmKCJEQ1MgUmVwb3J0ZWQgY2FuJ3QgYmUgcHJvY2Vzc2VkISEhIVxuIik7DQorICAgICAgICBhdF9wcmludChBVF9ERUJVRywiRENTIFJlcG9ydGVkIGNhbid0IGJlIHByb2Nlc3NlZCEhISFcbiIpOw0KICAgICAgICAgcmV0dXJuIEZBTFNFOw0KICAgICB9DQogfQ0KZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfcGRwLmMgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y29uZmlnL3BzX3BkcC5jCmluZGV4IGZmMTY0ZGIuLjRmM2FiMTMgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfcGRwLmMKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGNvbmZpZy9wc19wZHAuYwpAQCAtMjA1Myw3ICsyMDUzLDcgQEAKIAljdXJfY2lkID0gcGRwRGVhY3RSZXEuY19pZDsNCiANCiAJDQotCWF0X3ByaW50KEFUX0VSUiwicGRwX2RlYWN0X2Z1bmM6IHNvdXJjZSBpcyAleCwgZ19kZWZjaWRfbXNnLm1vZGlkIGlzICV4LCBjaWQgaXMgJWRcbiIscF9tc2ctPnNyY19pZCwgZ19kZWZjaWRfbW5nLm1vZGlkLCBjdXJfY2lkKTsNCisJYXRfcHJpbnQoQVRfREVCVUcsInBkcF9kZWFjdF9mdW5jOiBzb3VyY2UgaXMgJXgsIGdfZGVmY2lkX21zZy5tb2RpZCBpcyAleCwgY2lkIGlzICVkXG4iLHBfbXNnLT5zcmNfaWQsIGdfZGVmY2lkX21uZy5tb2RpZCwgY3VyX2NpZCk7DQogCWlmKGNvbnRleHQtPnNvdXJjZSA9PSBNT0RVTEVfSURfUFBQRCkNCiAJew0KIAkJLy+21NPaUEPW1bbLt6LG8LXEcHBwIHRlcm1pbmF0ZaOs1NrQrcnMzeqzybrzo6xwcHDNqNaqYXRfY3Rst6LG8HBkcMilvKS77g0KQEAgLTM0ODYsNyArMzQ4Niw3IEBACiAJYXRfcHJpbnQoQVRfREVCVUcsIkBAQEBAQEBAQEBAQEBzdGFydF9wZHBfYXV0b19kaWFsIGdfcGRwX3NldF9pbmZvPTB4JXAsIGF1dG9fY29ubmVjdCBpcyAlcyFcbiIsZ19kZWZjaWRfbW5nLnNldF9pbmZvLCBhdXRvX3JlY29ubmVjdCk7DQogCWlmKCgwID09IGNoZWNrX2lzX2ZkKGdfZGVmY2lkX21uZy5tb2RpZCkpICYmIDAgPT0gc3RyY21wKGF1dG9fcmVjb25uZWN0LCIxIikpDQogCXsNCi0JCWF0X3ByaW50KEFUX0RFQlVHLCJAQEBAQEBAQEBAQEBAc3RhcnRfcGRwX2F1dG9fZGlhbDogYXBuIGlzICVzLCBtb2RpZCBpcyAleCFcbiIsIGdfZGVmY2lkX21uZy5zZXRfaW5mby0+Y29tbV9pbmZvLmFwbiwgZ19kZWZjaWRfbW5nLm1vZGlkKTsNCisJCS8vYXRfcHJpbnQoQVRfREVCVUcsIkBAQEBAQEBAQEBAQEBzdGFydF9wZHBfYXV0b19kaWFsOiBhcG4gaXMgJXMsIG1vZGlkIGlzICV4IVxuIiwgZ19kZWZjaWRfbW5nLnNldF9pbmZvLT5jb21tX2luZm8uYXBuLCBnX2RlZmNpZF9tbmcubW9kaWQpOw0KIAkJLy/K1bW916TN+LPJuaa686OsyejWw9K7uPY1c7aoyrHG96Oss6zKsbrzvfjQ0HBkcLKmusXH68fzDQogCQlpZigwID09IHN0cmNtcChyZWNvbm5lY3RfdHlwZSwic2ltcGxlIikpDQogCQl7DQpAQCAtMzU1OSw3ICszNTU5LDcgQEAKIAlpbnQgY2lkLGJlYXJpZDsNCiAJY2hhciBhcG5bMjU2XT0gezB9Ow0KIAl2b2lkICpwWzNdID0geyZjaWQsICZiZWFyaWQsIGFwbn07DQotCWF0X3ByaW50KEFUX0VSUiwiQEAhIUBAY2djb250cmRwX2F1dG9fYWN0IGF0X3BhcmFzPSVzIVxuIixhdF9wYXJhcyk7DQorCS8vYXRfcHJpbnQoQVRfRVJSLCJAQCEhQEBjZ2NvbnRyZHBfYXV0b19hY3QgYXRfcGFyYXM9JXMhXG4iLGF0X3BhcmFzKTsNCiAJcmV0ID0gcGFyc2VfcGFyYW0oIiVkLCVkLCUyNTVzIiwgYXRfcGFyYXMsIHApOw0KIAlpZiAocmV0ICE9IEFUX1BBUlNFX09LKQ0KIAkJcmV0dXJuIEFUX0VORDsNCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y29uZmlnL3BzX3Ntcy5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGNvbmZpZy9wc19zbXMuYwppbmRleCA1NWJkNzZiLi42ZWM5MWFiIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y29uZmlnL3BzX3Ntcy5jCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjb25maWcvcHNfc21zLmMKQEAgLTU0NSw3ICs1NDUsNyBAQAogCQl0Wm1nbFJzcC5sZW5ndGggPSB0U21zUGFyYS5sZW5ndGg7DQogCQlzc2NhbmYoYXRfc3RyLCIlMzk5cyIsIHRabWdsUnNwLnBkdSk7DQogCQl3YWl0aW5nX3BkdSA9IEZBTFNFOw0KLQkJcHJpbnRmKCJbYXQtc21zXSBwZHUgZGF0YV9sZW46JWQsIHN0cjolcyFcbiIsIHN0cmxlbih0Wm1nbFJzcC5wZHUpLHRabWdsUnNwLnBkdSk7DQorCQlhdF9wcmludChBVF9ERUJVRywiW2F0LXNtc10gcGR1IGRhdGFfbGVuOiVkLCBzdHI6JXMhXG4iLCAoaW50KXN0cmxlbih0Wm1nbFJzcC5wZHUpLHRabWdsUnNwLnBkdSk7DQogCQkjaWYgKEFQUF9PU19UWVBFID09IEFQUF9PU19MSU5VWCkvL2NvcmVto6zQ6NKq08W7r6Os0OjSqtT2vNPF0LbPyse38bTm1NpzbXPEo7/pDQogCQlpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9BVF9DVEwsIE1PRFVMRV9JRF9TTVMsIE1TR19DTURfWk1HTF9JTkQsIHNpemVvZihUX3pTbXNfU21zSW5kKSwgKHVuc2lnbmVkIGNoYXIgKikmdFptZ2xSc3AsMCk7DQogCQkjZW5kaWYNCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9jb20uYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X2NvbS5jCmluZGV4IDQ1Y2I3ODguLjRhYmRlYjAgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X2NvbS5jCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X2NvbS5jCkBAIC04MTUsNyArODE1LDcgQEAKIAkJCQltZW1jcHkodm9sdGVfbXNnLm1zZ19kYXRhLCBidWYrc25kX2xlbiwgbmV4dF9sZW4pOw0KIAkJCQl2b2x0ZV9tc2cubXNnX2xlbiA9IG5leHRfbGVuOw0KIAkJCQlyZXQgPSBpcGNfc2VuZF9tZXNzYWdlKE1PRFVMRV9JRF9BVF9DVEwsIE1PRFVMRV9JRF9WT0xURSwgTVNHX0NNRF9GRDFfQVRDVExfVE9fVk9MVEUsIHNpemVvZihWT0xURV9NU0dfREFUQSksICh1bnNpZ25lZCBjaGFyICopJnZvbHRlX21zZywgSVBDX05PV0FJVCk7DQotCQkJCWF0X3ByaW50KEFUX0VSUiwiPT09PT5GRDFfQVRDVExfVE9fVk9MVEUrJWQgc3RyPSVzXG4iLCBzbmRfbGVuLCBidWYrc25kX2xlbik7DQorCQkJCWF0X3ByaW50KEFUX0RFQlVHLCI9PT09PkZEMV9BVENUTF9UT19WT0xURSslZCBzdHI9JXNcbiIsIHNuZF9sZW4sIGJ1ZitzbmRfbGVuKTsNCiAJCQkJc25kX2xlbiA9IHNuZF9sZW4gKyBuZXh0X2xlbjsNCiAJCQl9DQogCQl9DQpAQCAtODQwLDcgKzg0MCw3IEBACiAJCQkJbWVtY3B5KHZvbHRlX21zZy5tc2dfZGF0YSwgYnVmK3NuZF9sZW4sIG5leHRfbGVuKTsNCiAJCQkJdm9sdGVfbXNnLm1zZ19sZW4gPSBuZXh0X2xlbjsNCiAJCQkJcmV0ID0gaXBjX3NlbmRfbWVzc2FnZShNT0RVTEVfSURfQVRfQ1RMLCBNT0RVTEVfSURfVk9MVEUsIE1TR19DTURfRkQyX0FUQ1RMX1RPX1ZPTFRFLCBzaXplb2YoVk9MVEVfTVNHX0RBVEEpLCAodW5zaWduZWQgY2hhciAqKSZ2b2x0ZV9tc2csIElQQ19OT1dBSVQpOw0KLQkJCQlhdF9wcmludChBVF9FUlIsIj09PT0+RkQyX0FUQ1RMX1RPX1ZPTFRFKyVkIHN0cj0lc1xuIiwgc25kX2xlbiwgYnVmK3NuZF9sZW4pOw0KKwkJCQlhdF9wcmludChBVF9ERUJVRywiPT09PT5GRDJfQVRDVExfVE9fVk9MVEUrJWQgc3RyPSVzXG4iLCBzbmRfbGVuLCBidWYrc25kX2xlbik7DQogCQkJCXNuZF9sZW4gPSBzbmRfbGVuICsgbmV4dF9sZW47DQogCQkJfQ0KIAkJfQ0KQEAgLTk1MSw3ICs5NTEsNyBAQAogICAgICAgICBzb2NrZmQgPSBzb2NrZXQoUEZfVU5JWCwgU09DS19TVFJFQU0sIDApOw0KICAgICAgICAgaWYoc29ja2ZkIDwgMCkNCiAgICAgICAgIHsNCi0gICAgICAgICAgICBwcmludGYoInNvY2tldCBmYWlsZWQgOiAlcyFcclxuIiwgc3RyZXJyb3IoZXJybm8pKTsNCisgICAgICAgICAgICBhdF9wcmludChBVF9ERUJVRywic29ja2V0IGZhaWxlZCA6ICVzIVxyXG4iLCBzdHJlcnJvcihlcnJubykpOw0KICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgIH0NCiAgICAgICAgIGFkZHIuc3VuX2ZhbWlseSA9IEFGX1VOSVg7DQpAQCAtOTYxLDcgKzk2MSw3IEBACiAgICAgICAgIHJldCA9IGNvbm5lY3Qoc29ja2ZkLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIGxlbik7DQogICAgICAgICBpZihyZXQgPCAwKQ0KICAgICAgICAgew0KLSAgICAgICAgICAgIHByaW50ZigiY29ubmVjdCBmYWlsZWQgOiAlcyFcclxuIiwgc3RyZXJyb3IoZXJybm8pKTsNCisgICAgICAgICAgICBhdF9wcmludChBVF9ERUJVRywiY29ubmVjdCBmYWlsZWQgOiAlcyFcclxuIiwgc3RyZXJyb3IoZXJybm8pKTsNCiAgICAgICAgICAgICBjbG9zZShzb2NrZmQpOw0KICAgICAgICAgICAgIHNvY2tmZCA9IC0xOw0KICAgICAgICAgICAgIHJldHVybiAtMTsNCkBAIC05ODYsNyArOTg2LDcgQEAKIAkJCWdvdG8gc2VuZF9hZ2FpbjsNCiAgICAgICAgIGVsc2UNCiAgICAgICAgIHsNCi0gICAgICAgICAgICBwcmludGYoInVuaXhfc2VuZF9wcm9jOiBzZW5kIGZhaWxlZDogZXJybm89JWQsICVzXHJcbiIsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOyAgICAgICAgDQorICAgICAgICAgICAgYXRfcHJpbnQoQVRfREVCVUcsInVuaXhfc2VuZF9wcm9jOiBzZW5kIGZhaWxlZDogZXJybm89JWQsICVzXHJcbiIsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOyAgICAgICAgDQogICAgICAgICAgICAgY2xvc2Uoc29ja2ZkKTsNCiAgICAgICAgICAgICBzb2NrZmQgPSAtMTsNCiAgICAgICAgICAgICByZXR1cm4gLTE7DQpAQCAtOTk0LDcgKzk5NCw3IEBACiAgICAgfQ0KICAgICBlbHNlIGlmKGxlbiA9PSAwKQ0KICAgICB7DQotCQlwcmludGYoInVuaXhfc2VuZF9wcm9jOiBzZW5kIDAgZGF0YSBlcnJubz0lZCwgJXMgXG4iLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsNCisJCWF0X3ByaW50KEFUX0RFQlVHLCJ1bml4X3NlbmRfcHJvYzogc2VuZCAwIGRhdGEgZXJybm89JWQsICVzIFxuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7DQogICAgIH0NCiAjZW5kaWYNCiAgICAgcmV0dXJuIDA7DQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGN0cmwvYXRfY29udGV4dC5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGN0cmwvYXRfY29udGV4dC5jCmluZGV4IDQzYjNkNDAuLmM4N2M4ZDIgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X2NvbnRleHQuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9jb250ZXh0LmMKQEAgLTI5OSw3ICsyOTksNyBAQAogCQl9DQogCX0NCiAJaWYoKHN0cnN0cihwb3J0X25hbWUsIi9kZXYvdHR5R1MxIikgPT0gTlVMTCkgJiYgKHN0cnN0cihjYXBfcG9ydF9uYW1lLCAiL2Rldi90dHlHUzEiKSAhPSBOVUxMKSl7DQotCQkvKmdfZmFycHNfZmQyID0gYXRfb3BlbigiL2Rldi9hcm1wc19ycG1zZ2NoMzEiLE9fUkRXUik7DQorCQlnX2ZhcnBzX2ZkMiA9IGF0X29wZW4oIi9kZXYvYXJtcHNfcnBtc2djaDMxIixPX1JEV1IpOw0KIAkJYXRfcHJpbnQoQVRfRVJSLCJpbml0IG9wZW4gYXJtcHNfcnBtc2djaDMxID0+IGZkOiAlZCBlcl9ubzogJWRcbiIsIGdfZmFycHNfZmQyLCBlcnJubyk7DQogCQlpZihnX2ZhcnBzX2ZkMiA+PSAwKXsNCiAJCQljaGFubmVsX2NvbmZpZyhnX2ZhcnBzX2ZkMik7DQpAQCAtMzA3LDcgKzMwNyw3IEBACiAJCQkJYXRfY2xvc2UoZ19mYXJwc19mZDIpOw0KIAkJCQlnX2ZhcnBzX2ZkMj0tMTsNCiAJCQl9DQotCQl9Ki8NCisJCX0NCiAJfQ0KIAlhdF9wb3J0bW5nX3NldF9zdGF0ZV9wcm9jKCIvZGV2L3B0bXgiLDEsMCk7DQogI2VuZGlmDQpAQCAtNDgwLDcgKzQ4MCw3IEBACiB7DQogICAgIHN0cnVjdCBhdF9jaGFubmVsX2luZm8qIG5vZGUgPSBhdF9jaGFubmVsX2hlYWRbcG9zaXRpb25dOw0KICAgICBzdHJ1Y3QgYXRfY2hhbm5lbF9pbmZvKiB0bXBfbm9kZSA9IE5VTEw7DQotCWF0X3ByaW50KEFUX0VSUiwiY29udGV4dF9nZXRfZnJlZV9jaG5pbmZvX25vZGUgXG4iKTsNCisJLy9hdF9wcmludChBVF9FUlIsImNvbnRleHRfZ2V0X2ZyZWVfY2huaW5mb19ub2RlIFxuIik7DQogICAgIGZvcig7bm9kZTsgbm9kZSA9IG5vZGUtPm5leHQpDQogICAgIHsNCiAgICAgICAgIGlmKChjb250ZXh0X3R5cGUgPT0gQVRfQ0xJRU5UIHx8IGNvbnRleHRfdHlwZSA9PSBBVF9GV0RfRE9XTikgJiYgKG5vZGUtPnJlc2VydmVkID09IDEpKQ0KQEAgLTgwOSw3ICs4MDksNyBAQAogew0KICAgICBzdHJ1Y3QgYXRfY29udGV4dCAqIGNvbnRleHQgPSBOVUxMOw0KICAgICBzdHJ1Y3QgYXRfY2hhbm5lbF9pbmZvICogYXRfY2hhbm5lbCA9IGF0X2NvbnRleHRfZmluZF9jaG5fYnlfZmQoYXRfZmQpOw0KLQlhdF9wcmludChBVF9FUlIsICJhdF9jb250ZXh0X2FsbG9jX2N0eF9ieV9mZCBcbiIpOw0KKwkvL2F0X3ByaW50KEFUX0VSUiwgImF0X2NvbnRleHRfYWxsb2NfY3R4X2J5X2ZkIFxuIik7DQogCWlmKGNvbnRleHRfdHlwZSAhPSBBVF9GV0RfVVAmJmNvbnRleHRfdHlwZSAhPSBBVF9TRVJWRVIpDQogCXsNCiAJCXNvZnRhcF9hc3NlcnQoImFwaSBvbmx5IHN1cHBvcnQgdXAgYW5kIHNlcnZlciwgbm93IGNvbnRleHRfdHlwZSBpcyAlZCIsY29udGV4dF90eXBlKTsNCkBAIC04MjYsNyArODI2LDcgQEAKICAgICAgICAgYXRfcHJpbnQoQVRfRVJSLCJFUlI6IHdvcmtfc3RhdGUgZXJyICx3b3JrX3N0YXRlIGlzICVkLCBjb250ZXh0IHR5cGUgaXMgJWRcbiIsYXRfY2hhbm5lbC0+d29ya19zdGF0ZSxjb250ZXh0X3R5cGUpOw0KICAgICB9DQogICAgIGF0X2NoYW5uZWwtPndvcmtfc3RhdGUgfD0gKDE8PGNvbnRleHRfdHlwZSk7DQotCWF0X3ByaW50KEFUX0VSUiwiYXRfY29udGV4dF9hbGxvY19jdHhfYnlfZmRcbiIpOw0KKwkvL2F0X3ByaW50KEFUX0VSUiwiYXRfY29udGV4dF9hbGxvY19jdHhfYnlfZmRcbiIpOw0KICAgICBjb250ZXh0ID0gY29udGV4dF9hbGxvY19hdF9jb250ZXh0KGF0X2NoYW5uZWwsY29udGV4dF90eXBlKTsNCiAgICAgcmV0dXJuIGNvbnRleHQ7DQogfQ0KQEAgLTg3Nyw3ICs4NzcsNyBAQAogICAgICAgICBmcmVlKGNvbnRleHQtPmFwcF9wYXJhbSk7DQogICAgIC8vx+W/1bbU06bNqLXAyc+1xM67zbwNCiAgICAgYXRfY2hhbm4tPndvcmtfc3RhdGUgXj0gKDE8PGNvbnRleHQtPmNvbnRleHRfdHlwZSk7DQotICAgIGF0X3ByaW50KEFUX0RFQlVHLCJhdF9jb250ZXh0X2ZyZWVfY3R4IGF0X2ZkID0gJWQgIHN0YXRlID0gJWQgXG4iLGF0X2NoYW5uLT5hdF9mZCxhdF9jaGFubi0+d29ya19zdGF0ZSk7DQorICAgIC8vYXRfcHJpbnQoQVRfREVCVUcsImF0X2NvbnRleHRfZnJlZV9jdHggYXRfZmQgPSAlZCAgc3RhdGUgPSAlZCBcbiIsYXRfY2hhbm4tPmF0X2ZkLGF0X2NoYW5uLT53b3JrX3N0YXRlKTsNCiAgICAgcmV0ID0gY29udGV4dF9kZWxfYXRfY29udGV4dChjb250ZXh0KTsNCiAJLy9hdF9mZNCh09owo6zU8su1w/e1scewYXTNqLXA0tG+rbnYsdWjrNDo0qq9q82otcDJz8/CzsTSssrNt8W19A0KIAlpZihhdF9jaGFubi0+YXRfZmQgPCAwKQ0KQEAgLTEyNTgsNyArMTI1OCw3IEBACiAJLy9pZihsZWZ0X2xlbiA9PSAwKQ0KIAkJLy9yZXQgPSBsZW47DQogCQkNCi0JYXRfcHJpbnQoQVRfRVJSLCJhdF93cml0ZSBmZD0lZCxsZW49JWQscmV0PSVkLGRhdGE9JXMgXG4iLGF0X2ZkLGxlbixyZXQsZ2V0X3NtYWxsX3N0cihkYXRhKSk7DQorCS8vYXRfcHJpbnQoQVRfREVCVUcsImF0X3dyaXRlIGZkPSVkLGxlbj0lZCxyZXQ9JWQsZGF0YT0lcyBcbiIsYXRfZmQsbGVuLHJldCxnZXRfc21hbGxfc3RyKGRhdGEpKTsNCiAJDQogCXJldHVybiByZXQ7DQogfQ0KQEAgLTEzNDMsNyArMTM0Myw3IEBACiB7DQogCU1TR19CVUYgc3RNc2cgPSB7MH07DQogDQotCWF0X3ByaW50KEFUX0VSUiwiRW50ZXIgcmVzZW5kX3Jjdl9hdHN0ciwgZmQ6JWQgc3RyOiVzISEhXG4iLCBhdF9mZCwgYXRfc3RyKTsNCisJYXRfcHJpbnQoQVRfREVCVUcsIkVudGVyIHJlc2VuZF9yY3ZfYXRzdHIsIGZkOiVkIHN0cjolcyEhIVxuIiwgYXRfZmQsIGF0X3N0cik7DQogDQogCWlmKGF0X2ZkID49IE1PRFVMRV9JRF9BVENUTF9UT19WT0xURSAmJiBhdF9mZCA8IE1PRFVMRV9JRF9BVENUTF9UT19WT0xURStWT0xURV9QVFkxX01BWCkNCiAJew0KQEAgLTE0MTMsNyArMTQxMyw3IEBACiAgICAgTVNHX0JVRiBzdE1zZyA9IHswfTsNCiAJYXRfbXNnLmF0X2ZkID0gYXRfZmQ7DQogDQotCWF0X3ByaW50KEFUX0VSUiwiRW50ZXIgZGVsYXlfcmVzZW5kX2F0c3RyLCBhdF9zdHI6JXMhISFcbiIsIGF0X3N0cik7DQorCWF0X3ByaW50KEFUX0RFQlVHLCJFbnRlciBkZWxheV9yZXNlbmRfYXRzdHIsIGF0X3N0cjolcyEhIVxuIiwgYXRfc3RyKTsNCiANCiAJLy96ZG0g1eLA78rH08nT2mF0w/zB7r3izvbN6rPJuvOjrNLRvq29q1xyXG7IpbP9o6zI57n7YXTNqLXAsrvX48qxo6zQ6NKqvathdMP8we4NCiAJLy/W2NDCtbHX9rTTYXTNqLXAtsHIobW9tcRhdMP8we63orj41vfP37PMtKbA7aOs0vK0y9Do0qq9q1xyXG7W2NDCzO2808nPDQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGN0cmwvYXRfY3RsLmMgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9jdGwuYwppbmRleCBkNDkwMzA4Li42MDJlZmQ5IDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9jdGwuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9jdGwuYwpAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgc3RydWN0IGF0X2NvbnRleHQgKmNvbnRleHQgPSBOVUxMOw0KICAgICBzdHJ1Y3QgYXBwX2NsdF9vcHNfdCAqZXh0X25vZCA9IE5VTEw7DQogICAgIGludCBpc19ibF90b192b2x0ZSA9IDA7DQotCWF0X3ByaW50KEFUX0VSUiwicmN2X2NsdF9yZXFfbXNnX3Byb2MgXG4iKTsNCisJLy9hdF9wcmludChBVF9FUlIsInJjdl9jbHRfcmVxX21zZ19wcm9jIFxuIik7DQogICAgIC8qIMXQts/Kx7fxzqrNrNK7uPbEo7/pt6LLzcC0tcTBrND4wb3M9dK70fm1xMfrx/PP+8+io6zI57n7ysejrNTyyKHP+7jDtM6y2df3Ki8NCiAgICAgaWYoMSA9PSBhdF9jb250ZXh0X2NsdF9hYm9ydF9oYW5kbGUobXNnX2J1ZikpDQogICAgICAgICByZXR1cm4gMTsNCkBAIC00MDcsNyArNDA3LDcgQEAKICAgICBzdHJ1Y3QgYXRfY29udGV4dCAqY29udGV4dCA9IE5VTEw7DQogDQogCWlmKG1zZ19idWYtPnVzTXNnQ21kICE9IEFUQ1RMX1JDVl9BVF9TVFJfTVNHKS8vttTT2sC019TX08/fs8y1xGF0w/zB7s/7z6KjrLK7tPLToQ0KLSAgICAJYXRfcHJpbnQoQVRfRVJSLCJyY3ZfbXNnX3Byb2MgcmVjdiB1c01zZ0NtZCA9IDB4JXgsIHNvdXJjZSBpcyAweCV4XG4iLG1zZ19idWYtPnVzTXNnQ21kLCBtc2dfYnVmLT5zcmNfaWQpOw0KKyAgICAJYXRfcHJpbnQoQVRfREVCVUcsInJjdl9tc2dfcHJvYyByZWN2IHVzTXNnQ21kID0gMHgleCwgc291cmNlIGlzIDB4JXhcbiIsbXNnX2J1Zi0+dXNNc2dDbWQsIG1zZ19idWYtPnNyY19pZCk7DQogICAgIHN3aXRjaCAobXNnX2J1Zi0+dXNNc2dDbWQpDQogICAgIHsNCiAgICAgY2FzZSBBVENUTF9SQ1ZfQVRfU1RSX01TRzovKiBhdM2otcDP+8+itKbA7aGjwLTX1GF0X2N0bNfTz9+zzLXEz/vPoiovDQpAQCAtNDk4LDggKzQ5OCw4IEBACiAJCWludCB2b2x0ZV9yZXFfZmQgPSB2b2x0ZV9yZXEtPmF0X2ZkOw0KIAkJaWYodm9sdGVfcmVxX2ZkID49IDEgJiYgdm9sdGVfcmVxX2ZkIDw9IFZPTFRFX1BUWTFfTUFYKQ0KIAkJew0KLQkJCWF0X3ByaW50KEFUX0VSUiwiPT09PT5GRDFfVk9MVEVfVE9fQVRDVEwgZmQ9JWRcbiIsIHZvbHRlX3JlcV9mZCk7DQotCQkJYXRfcHJpbnQoQVRfRVJSLCI9PT09PkZEMV9WT0xURV9UT19BVENUTCBzdHI9JXNcbiIsIHZvbHRlX3JlcS0+bXNnX2RhdGEpOw0KKwkJCWF0X3ByaW50KEFUX0RFQlVHLCI9PT09PkZEMV9WT0xURV9UT19BVENUTCBmZD0lZCxzdHI9JXNcbiIsIHZvbHRlX3JlcV9mZCx2b2x0ZV9yZXEtPm1zZ19kYXRhKTsNCisJCQkvL2F0X3ByaW50KEFUX0VSUiwiPT09PT5GRDFfVk9MVEVfVE9fQVRDVEwgc3RyPSVzXG4iLCB2b2x0ZV9yZXEtPm1zZ19kYXRhKTsNCiAJCQlzYXZlX21vbml0b3JfYXRfYnVmKE1PRFVMRV9JRF9BVENUTF9UT19WT0xURSt2b2x0ZV9yZXFfZmQtMSwgKGNoYXIgKil2b2x0ZV9yZXEtPm1zZ19kYXRhLCB2b2x0ZV9yZXEtPm1zZ19sZW4sIEFUX1JFQ1ZfVFlQRSk7DQogCQkJcmN2X2F0X3N0cl9wcm9jKE1PRFVMRV9JRF9BVENUTF9UT19WT0xURSt2b2x0ZV9yZXFfZmQtMSwgKGNoYXIgKil2b2x0ZV9yZXEtPm1zZ19kYXRhLCB2b2x0ZV9yZXEtPm1zZ19sZW4pOw0KIAkJfQ0KQEAgLTUxMiw4ICs1MTIsOCBAQAogCQlpbnQgdm9sdGVfcmVxX2ZkID0gdm9sdGVfcmVxLT5hdF9mZDsNCiAJCWlmKHZvbHRlX3JlcV9mZCA+PSAxICYmIHZvbHRlX3JlcV9mZCA8PSBWT0xURV9QVFkyX01BWCkNCiAJCXsNCi0JCQlhdF9wcmludChBVF9FUlIsIj09PT0+RkQyX1ZPTFRFX1RPX0FUQ1RMIGZkPSVkXG4iLCB2b2x0ZV9yZXFfZmQpOw0KLQkJCWF0X3ByaW50KEFUX0VSUiwiPT09PT5GRDJfVk9MVEVfVE9fQVRDVEwgc3RyPSVzXG4iLCB2b2x0ZV9yZXEtPm1zZ19kYXRhKTsNCisJCQlhdF9wcmludChBVF9ERUJVRywiPT09PT5GRDJfVk9MVEVfVE9fQVRDVEwgZmQ9JWQsIHN0cj0lc1xuIiwgdm9sdGVfcmVxX2ZkLCB2b2x0ZV9yZXEtPm1zZ19kYXRhKTsNCisJCQkvL2F0X3ByaW50KEFUX0VSUiwiPT09PT5GRDJfVk9MVEVfVE9fQVRDVEwgc3RyPSVzXG4iLCB2b2x0ZV9yZXEtPm1zZ19kYXRhKTsNCiAJCSAgICBzYXZlX21vbml0b3JfYXRfYnVmKE1PRFVMRV9JRF9WT0xURV9UT19BVENUTCt2b2x0ZV9yZXFfZmQtMSwgKGNoYXIgKil2b2x0ZV9yZXEtPm1zZ19kYXRhLCB2b2x0ZV9yZXEtPm1zZ19sZW4sIEFUX1JFQ1ZfVFlQRSk7DQogCQkJcmN2X2F0X3N0cl9wcm9jKE1PRFVMRV9JRF9WT0xURV9UT19BVENUTCt2b2x0ZV9yZXFfZmQtMSwgKGNoYXIgKil2b2x0ZV9yZXEtPm1zZ19kYXRhLCB2b2x0ZV9yZXEtPm1zZ19sZW4pOw0KIAkJfQ0KQEAgLTU3Miw3ICs1NzIsNyBAQAogI2lmZGVmIF9VU0VfQkwJDQogCWNhc2UgTVNHX0NNRF9NT0RFU0VUX1JFUToNCiAJew0KLQkJYXRfcHJpbnQoQVRfRVJSLCJyZWN2IE1TR19DTURfTU9ERVNFVF9SRVFcbiIpOw0KKwkJYXRfcHJpbnQoQVRfREVCVUcsInJlY3YgTVNHX0NNRF9NT0RFU0VUX1JFUVxuIik7DQogDQogCQl6bW9kZV9tc2dfYWN0KG1zZ19idWYpOw0KIAkJYnJlYWs7DQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGN0cmwvYXRfbmV0ZG9nLmMgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9uZXRkb2cuYwppbmRleCA2ZDhiOWMxLi5hMjljYmRiIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9uZXRkb2cuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9uZXRkb2cuYwpAQCAtODgsNyArODgsNyBAQAogc3RhdGljIHZvaWQgYXRfY29udGV4dF9wcmludChzdHJ1Y3QgYXRfY29udGV4dCAqIGN0X25vZGUpDQogew0KICAgICBzdHJ1Y3QgbGlzdF9oZWFkICogZW50cnkgPSBOVUxMOw0KLSAgICBhdF9wcmludChBVF9FUlIsImNoPSVwIHR5cGU9JWQgc3JjPSV4IG1zZ2lkPSV4IHBhcmE9JXAgZndkY3Q9JXAgdGljaz0lbGRcbiIsY3Rfbm9kZS0+YXRfY2hhbm5lbA0KKyAgICBhdF9wcmludChBVF9ERUJVRywiY2g9JXAgdHlwZT0lZCBzcmM9JXggbXNnaWQ9JXggcGFyYT0lcCBmd2RjdD0lcCB0aWNrPSVsZFxuIixjdF9ub2RlLT5hdF9jaGFubmVsDQogICAgICAgICAgICAgICxjdF9ub2RlLT5jb250ZXh0X3R5cGUsY3Rfbm9kZS0+c291cmNlLGN0X25vZGUtPm1zZ19pZCxjdF9ub2RlLT5hcHBfcGFyYW0sY3Rfbm9kZS0+ZndkX2NvbnRleHQsY3Rfbm9kZS0+Y3VyX3RpY2spOw0KICAgICBhdF9wcmludChBVF9FUlIsInByZWZpeD0lc1xuIixjdF9ub2RlLT5hdF9jbWRfcHJlZml4KTsNCiAgICAgbGlzdF9mb3JfZWFjaChlbnRyeSwmZ19hcHBjbHRfbGlzdCkNCmRpZmYgLS1naXQgYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF9yY3Ztc2cuYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X3Jjdm1zZy5jCmluZGV4IDdjYTczOTEuLmZkMDBkNWUgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X3Jjdm1zZy5jCisrKyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X3Jjdm1zZy5jCkBAIC0zODIsNyArMzgyLDcgQEAKIAlzdHJ1Y3Qgc2VyX29wc190ICpyY3ZfcmVxX25vZGUgPSBOVUxMOw0KIAlzdHJ1Y3QgYXRfY2hhbm5lbF9pbmZvICpuZXdfY2hhbiA9IE5VTEw7DQogCXZvaWQgKiByZXNfbXNnID0gTlVMTDsNCi0JYXRfcHJpbnQoQVRfRVJSLCAiZXh0X3JlcV90b19hcHAgXG4iKTsNCisJLy9hdF9wcmludChBVF9FUlIsICJleHRfcmVxX3RvX2FwcCBcbiIpOw0KIAkvL7bUt8e159DFwODAqdW5QVTH68fztcTGpcXktKbA7Q0KICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHJjdl9yZXFfbm9kZSwmZ19zZXJfbGlzdCxsaXN0KQ0KICAgICB7ICAgIA0KQEAgLTQyMCw3ICs0MjAsNyBAQAogCQkJCQlzb2Z0YXBfYXNzZXJ0KCJleGNlcHRpb24iKTsNCiAgICAgICAgICAgICAgICAgaWYocmN2X3JlcV9ub2RlLT5tb2R1bGVfaWQpDQogICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgCQ0KLQkJCQkJYXRfcHJpbnQoQVRfRVJSLCAiZXh0X3JlcV90b19hcHAgMlxuIik7DQorCQkJCQkvL2F0X3ByaW50KEFUX0VSUiwgImV4dF9yZXFfdG9fYXBwIDJcbiIpOw0KIAkJCQkgICAgLy+21NPat/7O8bbL1bzTw7XEYXTNqLXAo6y+39PQtsDVvNDUo6y99tTaYXTNqLXA0tG+rbnYsdXKsaOsyerH68nPz8LOxLLFu+HKp7Dco6zS8rTLys23xcTatOa686Os1rG907e1u9i8tL/Jo6zO3tDo1Nm3osvNz/vPog0KICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGF0X2NvbnRleHRfYWxsb2NfY3R4X2J5X2ZkKGF0X2ZkLEFUX1NFUlZFUik7DQogCQkJCQlpZihOVUxMID09IGNvbnRleHQpDQpAQCAtNTU5LDcgKzU1OSw3IEBACiAgICAgc3RydWN0IGF0X2NvbnRleHQgKnVwX2NvbnRleHQ7DQogICAgIHN0cnVjdCBhdF9jb250ZXh0ICpkb3duX2NvbnRleHQ7DQogICAgIGludCAgICBkb3duX3Bvc2l0aW9uID0gMDsNCi0JYXRfcHJpbnQoQVRfRVJSLCAiZndkX3JlcV9hdF9wcm9jIFxuIik7DQorCS8vYXRfcHJpbnQoQVRfRVJSLCAiZndkX3JlcV9hdF9wcm9jIFxuIik7DQogCS8vyc/TztPWytW1vcfrx/PA4EFUw/zB7qOs16q3orj4z8LTzg0KICAgICBjb250ZXh0ID0gYXRfY29udGV4dF9maW5kX2N0eF9ieV9mZF90eXBlKGF0X2ZkLCBBVF9GV0RfVVApOyAvLyBrdyAzDQogICAgIGlmKGNvbnRleHQpDQpAQCAtNzI1LDcgKzcyNSw3IEBACiAgICAgaW50IG1zZ3R5cGUgPSBnZXRfbXNndHlwZShhdF9zdHIpOw0KICAgICBpbnQgcmV0ID0gQVRfRU5EOw0KIA0KLQlhdF9wcmludChBVF9FUlIsICJyY3Ztc2dfcnNwX2F0X2Z3ZF9kb3duIGNvbnRleHQtPnByZWZpeCA9ICVzIFxuIiAsY29udGV4dC0+YXRfY21kX3ByZWZpeCk7DQorCWF0X3ByaW50KEFUX0RFQlVHLCAicmN2bXNnX3JzcF9hdF9md2RfZG93biBjb250ZXh0LT5wcmVmaXggPSAlcyBcbiIgLGNvbnRleHQtPmF0X2NtZF9wcmVmaXgpOw0KICAgICAvKiC21NPa16q3os/C087K1bW9tcTTprTwtKbA7SzWu9PQUERQvKS77rXE16q3otDo0qq84L/Yo6zSu7DjtcRBVMP8we7Xqreizt7Q6Lzgv9gs1rG909eqt6LNuLSruPjJz9POzrvWwyovDQogICAgIGlmKGNvbnRleHQtPmF0X3Byb2MgIT0gTlVMTCkNCiAgICAgew0KQEAgLTc2OCw3ICs3NjgsNyBAQAogICAgIGludCAgICByZXNfbXNnbGVuID0gMDsNCiAgICAgc3RydWN0IGFwcF9jbHRfb3BzX3QgKmNsdF9ub2QgPSBOVUxMOw0KIA0KLSAgICBhdF9wcmludChBVF9FUlIsICJyY3Ztc2dfcnNwX2F0X2NsaWVudCBjb250ZXh0LT5wcmVmaXggPSAlcyBcbiIgLGNvbnRleHQtPmF0X2NtZF9wcmVmaXgpOw0KKyAgICBhdF9wcmludChBVF9ERUJVRywgInJjdm1zZ19yc3BfYXRfY2xpZW50IGNvbnRleHQtPnByZWZpeCA9ICVzIFxuIiAsY29udGV4dC0+YXRfY21kX3ByZWZpeCk7DQogDQogCS8v0L7GrMjP1qTF0LbPt9bWpw0KIAlpZihhdGNtZF9zdHJlYW1fcmVwX3Byb2MoY29udGV4dCwgYXRfc3RyKSkNCkBAIC04OTIsMTIgKzg5MiwxMiBAQAogCQkJaWYoYXRfc3Ryc3RyKFBzbUluZEF0Q21kUHJlZml4LCB0ZW1wX3ByZWZpeCkpDQogCQkJew0KIAkJCQlzZXRfZndkX2ZkKEJST0FEQ0FTVF9GV0QpOwkJCQkNCi0JCQkJYXRfcHJpbnQoQVRfRVJSLCJbWFhYXXNldF9md2RfZmQgIDExMVxuIik7DQorCQkJCWF0X3ByaW50KEFUX0RFQlVHLCJbWFhYXXNldF9md2RfZmQgIDExMVxuIik7DQogCQkJfQ0KIAkJCWVsc2UNCiAJCQl7DQogCQkJCXNldF9md2RfZmQoQlJPQURDQVNUX1ZPTFRFKTsNCi0JCQkJYXRfcHJpbnQoQVRfRVJSLCJbWFhYXXNldF9md2RfZmQgIDIyMlxuIik7DQorCQkJCWF0X3ByaW50KEFUX0RFQlVHLCJbWFhYXXNldF9md2RfZmQgIDIyMlxuIik7DQogCQkJfQ0KIAkJfQ0KIAkJZWxzZSBpZihzdHJsZW4oRndJbmRBdENtZFByZWZpeCkgIT0gMCkNCkBAIC05MDUsMTggKzkwNSwxOCBAQAogCQkJaWYoYXRfc3Ryc3RyKEZ3SW5kQXRDbWRQcmVmaXgsIHRlbXBfcHJlZml4KSkNCiAJCQl7DQogCQkJCXNldF9md2RfZmQoQlJPQURDQVNUX0ZXRCk7CQ0KLQkJCQlhdF9wcmludChBVF9FUlIsIltYWFhdc2V0X2Z3ZF9mZCAgMzMzXG4iKTsNCisJCQkJYXRfcHJpbnQoQVRfREVCVUcsIltYWFhdc2V0X2Z3ZF9mZCAgMzMzXG4iKTsNCiAJCQl9DQogCQkJZWxzZQ0KIAkJCXsNCiAJCQkJc2V0X2Z3ZF9mZChCUk9BRENBU1RfVk9MVEUpOwkNCi0JCQkJYXRfcHJpbnQoQVRfRVJSLCJbWFhYXXNldF9md2RfZmQgIDQ0NFxuIik7DQorCQkJCWF0X3ByaW50KEFUX0RFQlVHLCJbWFhYXXNldF9md2RfZmQgIDQ0NFxuIik7DQogCQkJfQ0KIAkJfQ0KIAkJZWxzZQ0KIAkJew0KIAkJCXNldF9md2RfZmQoQlJPQURDQVNUX0ZXRCk7CQ0KLQkJCWF0X3ByaW50KEFUX0VSUiwiW1hYWF1zZXRfZndkX2ZkICA1NTVcbiIpOw0KKwkJCWF0X3ByaW50KEFUX0RFQlVHLCJbWFhYXXNldF9md2RfZmQgIDU1NVxuIik7DQogCQl9DQogCX0JDQogCS8qIL2rVk9MVEW1xNb3tq/Jz7Got6LLzbj4RkFSX1BTKi8NCkBAIC05MjcsMTIgKzkyNywxMiBAQAogCQkJaWYoYXRfc3Ryc3RyKFBzbUluZEF0Q21kUHJlZml4LCB0ZW1wX3ByZWZpeCkpDQogCQkJew0KIAkJCQlzZXRfZndkX2ZkKEJST0FEQ0FTVF9GQVJQUyk7CQ0KLQkJCQlhdF9wcmludChBVF9FUlIsIltYWFhdc2V0X2Z3ZF9mZCAgNjY2XG4iKTsNCisJCQkJYXRfcHJpbnQoQVRfREVCVUcsIltYWFhdc2V0X2Z3ZF9mZCAgNjY2XG4iKTsNCiAJCQl9DQogCQkJZWxzZQ0KIAkJCXsNCiAJCQkJc2V0X2Z3ZF9mZCgwKTsJDQotCQkJCWF0X3ByaW50KEFUX0VSUiwiW1hYWF1zZXRfZndkX2ZkICA3NzdcbiIpOw0KKwkJCQlhdF9wcmludChBVF9ERUJVRywiW1hYWF1zZXRfZndkX2ZkICA3NzdcbiIpOw0KIAkJCX0NCiAJCX0NCiAJCWVsc2UgaWYoc3RybGVuKEZ3SW5kQXRDbWRQcmVmaXgpICE9IDApDQpAQCAtOTQwLDI1ICs5NDAsMjUgQEAKIAkJCWlmKGF0X3N0cnN0cihGd0luZEF0Q21kUHJlZml4LCB0ZW1wX3ByZWZpeCkpDQogCQkJew0KIAkJCQlzZXRfZndkX2ZkKEJST0FEQ0FTVF9GQVJQUyk7CQ0KLQkJCQlhdF9wcmludChBVF9FUlIsIltYWFhdc2V0X2Z3ZF9mZCA4ODhcbiIpOw0KKwkJCQlhdF9wcmludChBVF9ERUJVRywiW1hYWF1zZXRfZndkX2ZkIDg4OFxuIik7DQogCQkJfQ0KIAkJCWVsc2UNCiAJCQl7DQogCQkJCXNldF9md2RfZmQoMCk7CQ0KLQkJCQlhdF9wcmludChBVF9FUlIsIltYWFhdc2V0X2Z3ZF9mZCAgOTk5XG4iKTsNCisJCQkJYXRfcHJpbnQoQVRfREVCVUcsIltYWFhdc2V0X2Z3ZF9mZCAgOTk5XG4iKTsNCiAJCQl9DQogCQl9CQkNCiAJCWVsc2UNCiAJCXsNCiAJCQlzZXRfZndkX2ZkKEJST0FEQ0FTVF9GQVJQUyk7CQ0KLQkJCWF0X3ByaW50KEFUX0VSUiwiW1hYWF1zZXRfZndkX2ZkICBBQUFcbiIpOw0KKwkJCWF0X3ByaW50KEFUX0RFQlVHLCJbWFhYXXNldF9md2RfZmQgIEFBQVxuIik7DQogCQl9CQkNCiAJfQ0KIAkvL2ZksrvKx9XmyrW1xM2otcCjqL2rz/vPotS01/fOqmZko6nJz8rVtb21xNb3tq/Jz7GosruyztPruf3Cyw0KIAllbHNlIGlmKGNoZWNrX2lzX2ZkKGF0X2ZkKSA9PSAwICYmIHBvc2l0aW9uID09IE5FQVJfUFMpDQogCXsNCiAJCXNldF9md2RfZmQoQlJPQURDQVNUX0ZBUlBTKTsJDQotCQlhdF9wcmludChBVF9FUlIsIltYWFhdc2V0X2Z3ZF9mZCAgQkJCXG4iKTsNCisJCWF0X3ByaW50KEFUX0RFQlVHLCJbWFhYXXNldF9md2RfZmQgIEJCQlxuIik7DQogCX0NCiANCiB9DQpAQCAtOTc5LDcgKzk3OSw3IEBACiAgICAgICAgIGlmKCAocHJlZml4X2xlbiA+MCAmJiBhdF9jbWRfcHJlZml4ICE9IE5VTEwgJiYgMCA9PSBhdF9zdHJuY21wKGNvbnRleHQtPmF0X2NtZF9wcmVmaXgsKGNoYXIqKWF0X2NtZF9wcmVmaXgsIHByZWZpeF9sZW4pKQ0KICAgICAgICAgICAgICAgICB8fCAocHJlZml4X2xlbiA+MCAmJiBhdF9jbWRfcHJlZml4ICE9IE5VTEwgJiYgMD09c3RybmNtcCgiPiAiLGF0X2NtZF9wcmVmaXgsIHByZWZpeF9sZW4pKSkNCiAgICAgICAgIHsNCi0gICAgICAgIAlhdF9wcmludChBVF9FUlIsInJlY2VpdmUgY2xpZW50IGluZm9ybSBzdHIgPSAlcywgZmQgPSAlZFxuIiwgYXRfc3RyLCBhdF9mZCk7DQorICAgICAgICAJYXRfcHJpbnQoQVRfRVJSLCJyZWNlaXZlIGNsaWVudCBpbmZvcm0gc3RyID0gJXMsIGZkID0gJWRcbiIsIGdldF9zbWFsbF9zdHIoYXRfc3RyKSwgYXRfZmQpOw0KICAgICAgICAgCS8v0L7GrMjP1qTF0LbPt9bWpw0KIAkJCWlmKGF0Y21kX3N0cmVhbV9pbmZvcm1fcHJvYyhjb250ZXh0LCBhdF9zdHIpKQ0KIAkJCQlyZXR1cm4gMDsJCQkNCkBAIC0xMDEwLDggKzEwMTAsOCBAQAogICAgICAgICAgKi8NCiAgICAgICAgIGlmKCAocHJlZml4X2xlbiA+MCAmJiBhdF9jbWRfcHJlZml4ICE9IE5VTEwgJiYgMCA9PSBhdF9zdHJuY21wKGZ3ZF9jb250ZXh0LT5hdF9jbWRfcHJlZml4LCAoY2hhciopYXRfY21kX3ByZWZpeCwgcHJlZml4X2xlbikpDQogICAgICAgICAgICAgICAgIHx8KHByZWZpeF9sZW4gPjAgJiYgYXRfY21kX3ByZWZpeCAhPSBOVUxMICYmIDA9PXN0cm5jbXAoIj4gIixhdF9jbWRfcHJlZml4LCBwcmVmaXhfbGVuKSkgKQ0KLSAgICAgICAgew0KLSAgICAgICAgCWF0X3ByaW50KEFUX0VSUiwicmVjZWl2ZSBmd2RfZG93biBpbmZvcm0gc3RyID0gJXMsIGZkID0gJWRcbiIsIGF0X3N0ciwgYXRfZmQpOw0KKyAgICAgICAgewkJCQ0KKwkJCWF0X3ByaW50KEFUX0VSUiwicmVjZWl2ZSBmd2RfZG93biBpbmZvcm0gc3RyID0gJXMsIGZkID0gJWRcbiIsIGdldF9zbWFsbF9zdHIoYXRfc3RyKSwgYXRfZmQpOw0KIAkJCXNldF9md2RfZmQoZndkX2NvbnRleHQtPmZ3ZF9jb250ZXh0LT5hdF9jaGFubmVsLT5hdF9mZCk7DQogCQkJaWYoc3Ryc3RyKGF0X3N0ciwiPiAiKSAhPSBOVUxMKQ0KIAkJCXsNCkBAIC0xMDMwLDcgKzEwMzAsNyBAQAogICAgIC8qINK7sOPW97avyc+xqKOsvfa0psDtZ19hdXRvX2Zkzai1wLXE1ve2r8nPsai6zVZPTFRFtcTW97avyc+xqKOsZ19hdXRvX2ZkxKzIz9Gh1PG12tK7uPa08r+qtcRORUFSX1BTzrvWw7XEYXTNqLXAKi8NCiAgICAgaWYoZ19hdXRvX2ZkID09IGF0X2ZkIHx8IHBvc2l0aW9uID09IFBPU0lUSU9OX1ZPTFRFIHx8IHBvc2l0aW9uID09IEZBUl9QUykNCiAgICAgew0KLSAgICAJYXRfcHJpbnQoQVRfRVJSLCJyZWNlaXZlIGF1dG8gcmVwb3J0IHN0ciA9ICVzLCBmZCA9ICVkLCBnX2F1dG9fZmQgPSAlZCwgcG9zaXRpb24gPSAlZFxuIiwgYXRfc3RyLCBhdF9mZCwgZ19hdXRvX2ZkLCBwb3NpdGlvbik7DQorICAgIAlhdF9wcmludChBVF9ERUJVRywicmVjZWl2ZSBhdXRvIHJlcG9ydCBzdHIgPSAlcywgZmQgPSAlZCwgZ19hdXRvX2ZkID0gJWQsIHBvc2l0aW9uID0gJWRcbiIsIGdldF9zbWFsbF9zdHIoYXRfc3RyKSwgYXRfZmQsIGdfYXV0b19mZCwgcG9zaXRpb24pOw0KIA0KIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwmZ19pbmZvcm1fbGlzdCxsaXN0KQ0KIAkJew0KQEAgLTEwNjEsNyArMTA2MSw3IEBACiAgICAgICAgICAgICAvL8/7z6K3osvNyqew3KOs1rG907e1u9hFUlJPUrKiys23xc2otcDJz8/CzsQNCiAgICAgICAgICAgICBpZihhdF9jbWRfcGFyYXMgJiYgMCAhPSBpcGNfc2VuZF9tZXNzYWdlMihNT0RVTEVfSURfQVRfQ1RMLCBlbnRyeTAtPm1vZHVsZV9pZCwgZW50cnkwLT5yZXFfbXNnX2lkLCBzdHJsZW4oYXRfY21kX3BhcmFzKSsxLCBhdF9jbWRfcGFyYXMsMCkpDQogICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBhdF9wcmludChBVF9FUlIsImluZm9ybV9hY3QgYXRfY21kX3ByZWZpeDAgaXBjIGVyclxuIik7DQorICAgICAgICAgICAgICAgIGF0X3ByaW50KEFUX0RFQlVHLCJpbmZvcm1fYWN0IGF0X2NtZF9wcmVmaXgwIGlwYyBlcnJcbiIpOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCkBAIC0xMTgwLDcgKzExODAsNyBAQAogICAgIAlpZihmd2RfZmQgIT0gMCAmJiB3aG9sZV9hdF90eXBlICE9IGF0X3N0cl90eXBlKQ0KIAkJCXJldHVybiAwOw0KIAkJCQ0KLSAgICAJYXRfcHJpbnQoQVRfRVJSLCJhdF9yY3Ztc2dfaGFuZGxlIEFUX1RZUEVfUkVRVUVTVCBzdHI9JXMsIGF0X2ZkID0gJWQsIGF0X2NtZF9wYXJhczogJXMsIHByZWZpeF9sZW46ICVkLCBwYXJhc19sZW46ICVkXG4iLGF0X3N0ciwgYXRfZmQsKGNoYXIgKilhdF9jbWRfcGFyYXMsIHByZWZpeF9sZW4sIHBhcmFzX2xlbik7DQorICAgIAlhdF9wcmludChBVF9ERUJVRywiYXRfcmN2bXNnX2hhbmRsZSBBVF9UWVBFX1JFUVVFU1Qgc3RyPSVzLCBhdF9mZCA9ICVkLCBhdF9jbWRfcGFyYXM6ICVzLCBwcmVmaXhfbGVuOiAlZCwgcGFyYXNfbGVuOiAlZFxuIixhdF9zdHIsIGF0X2ZkLChjaGFyICopYXRfY21kX3BhcmFzLCBwcmVmaXhfbGVuLCBwYXJhc19sZW4pOw0KIAkJLy+1scew17qzpLbItPPT2sew17rX7rTzsaO05rOktsjKsaOssai07SBhZGQgYnkgenByIDIxMDExNQ0KIAkJaWYocHJlZml4X2xlbiA+PSBBVF9DTURfUFJFRklYKQ0KIAkJew0KQEAgLTExOTQsMTQgKzExOTQsMTQgQEAKICAgICB9DQogICAgIGVsc2UgaWYoYXRfc3RyX3R5cGUgPT0gQVRfVFlQRV9SRVNQT05TRSkvL8/s06bA4MP8we60psDtDQogICAgIHsNCi0gICAgCWF0X3ByaW50KEFUX0VSUiwiYXRfcmN2bXNnX2hhbmRsZSBBVF9UWVBFX1JFU1BPTlNFIHN0cj0lcywgYXRfZmQgPSAlZCwgYXRfY21kX3BhcmFzOiAlcywgcHJlZml4X2xlbjogJWQsIHBhcmFzX2xlbjogJWRcbiIsYXRfc3RyLCBhdF9mZCwoY2hhciAqKWF0X2NtZF9wYXJhcywgcHJlZml4X2xlbiwgcGFyYXNfbGVuKTsNCisgICAgCWF0X3ByaW50KEFUX0RFQlVHLCJhdF9yY3Ztc2dfaGFuZGxlIEFUX1RZUEVfUkVTUE9OU0Ugc3RyPSVzLCBhdF9mZCA9ICVkLCBhdF9jbWRfcGFyYXM6ICVzLCBwcmVmaXhfbGVuOiAlZCwgcGFyYXNfbGVuOiAlZFxuIixhdF9zdHIsIGF0X2ZkLChjaGFyICopYXRfY21kX3BhcmFzLCBwcmVmaXhfbGVuLCBwYXJhc19sZW4pOw0KICAgICAgICAgcmV0dXJuIHJjdl9hdF9yc3BfaGFuZGxlKGF0X2ZkLCBhdF9zdHIsIGF0X2NtZF9wcmVmaXgsIHByZWZpeF9sZW4sIGF0X2NtZF9wYXJhcywgcGFyYXNfbGVuKTsNCiAgICAgfQ0KICAgICBlbHNlIGlmKGF0X3N0cl90eXBlID09IEFUX1RZUEVfSU5GT1JNKS8v1tC85L3hufvD/MHuus3W97avyc+xqLSmwO0NCiAgICAgICAgIHJldHVybiByY3ZfYXRfaW5mb3JtX2hhbmRsZShhdF9mZCwgYXRfc3RyLCBhdF9jbWRfcHJlZml4LCBwcmVmaXhfbGVuLCBhdF9jbWRfcGFyYXMsIHBhcmFzX2xlbik7DQogICAgIGVsc2UgaWYoYXRfc3RyX3R5cGUgPT0gQVRfVFlQRV9QRFUpLy9QRFW0psDtDQogICAgIHsNCi0gICAgCWF0X3ByaW50KEFUX0VSUiwiYXRfcmN2bXNnX2hhbmRsZSBBVF9UWVBFX1BEVSBhdF9mZCA9ICVkLCBwcmVmaXhfbGVuOiAlZCwgcGFyYXNfbGVuOiAlZFxuIiwgYXRfZmQsIHByZWZpeF9sZW4sIHBhcmFzX2xlbik7DQorICAgIAlhdF9wcmludChBVF9ERUJVRywiYXRfcmN2bXNnX2hhbmRsZSBBVF9UWVBFX1BEVSBhdF9mZCA9ICVkLCBwcmVmaXhfbGVuOiAlZCwgcGFyYXNfbGVuOiAlZFxuIiwgYXRfZmQsIHByZWZpeF9sZW4sIHBhcmFzX2xlbik7DQogCQlpZihhdF9jbWRfcGFyYXMpDQogCQlyZXR1cm4gcmN2X3Ntc19wZHVfaGFuZGxlKGF0X2ZkLCBhdF9zdHIsIGF0X2NtZF9wcmVmaXgsIHByZWZpeF9sZW4sIGF0X2NtZF9wYXJhcywgcGFyYXNfbGVuKTsNCiAgICAgfQ0KZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X3RpbWVvdXQuYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3BsYXRmb3JtL2F0X2N0bC9zcmMvYXRjdHJsL2F0X3RpbWVvdXQuYwppbmRleCA5ZDY5MTBiLi4wZjJjZWVmIDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9wbGF0Zm9ybS9hdF9jdGwvc3JjL2F0Y3RybC9hdF90aW1lb3V0LmMKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vcGxhdGZvcm0vYXRfY3RsL3NyYy9hdGN0cmwvYXRfdGltZW91dC5jCkBAIC0yNjMsNyArMjYzLDcgQEAKIA0KICAgICBpZihsaXN0X2VtcHR5KGhlYWQpKQ0KICAgICB7DQotICAgICAgICBhdF9wcmludChBVF9ERUJVRywiY2FjaGVfbXNnX3Byb2MgaXMgZW1wdHlcbiIpOw0KKyAgICAgICAgLy9hdF9wcmludChBVF9ERUJVRywiY2FjaGVfbXNnX3Byb2MgaXMgZW1wdHlcbiIpOw0KICAgICAgICAgcmV0dXJuOw0KICAgICB9DQogICAgIGVsc2UNCkBAIC0yNzksNyArMjc5LDcgQEAKICAgICAgICAgICAgIHBuZXh0ID0gcG5leHQtPm5leHQ7DQogICAgICAgICAgICAgbGlzdF9kZWwodGVtcCk7DQogICAgICAgICAgICAgbXNnX2J1ZiA9ICYoKChzdHJ1Y3QgcmVxX3dhaXRtc2cgKil0ZW1wKS0+bXNnX2J1Zik7DQotCQkJYXRfcHJpbnQoQVRfRVJSLCJjYWNoZV9tc2dfcHJvYyBwcm9jXG4iKTsNCisJCQlhdF9wcmludChBVF9ERUJVRywiY2FjaGVfbXNnX3Byb2MgcHJvY1xuIik7DQogICAgICAgICAgICAgcmN2X21zZ19wcm9jKG1zZ19idWYpOw0KICAgICAgICAgICAgIGZyZWUodGVtcCk7DQogICAgICAgICB9DQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL2F0Y2hhbm5lbC5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL2F0Y2hhbm5lbC5jCmluZGV4IGM2ZjFlYTEuLmJhODI2MWYgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9yaWwvcmVmZXJlbmNlLXJpbC9hdGNoYW5uZWwuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvYXRjaGFubmVsLmMKQEAgLTI0OCw3ICsyNDgsNyBAQAogCiAJcHRocmVhZF9tdXRleF9sb2NrKCZjaG4tPnNfYXRjaG5tdXRleCk7CiAKLQlSTE9HRCgicHJvY2Vzc0xpbmUgbGluZTolcyIsIGxpbmUpOworCS8vUkxPR0QoInByb2Nlc3NMaW5lIGxpbmU6JXMiLCBsaW5lKTsKIAlpZiAoc3BfcmVzcG9uc2UgPT0gTlVMTCkgewogCQlSTE9HRCgicHJvY2Vzc0xpbmUgKHNwX3Jlc3BvbnNlID09IE5VTEwpIik7CiAJCS8qIG5vIGNvbW1hbmQgcGVuZGluZyAqLwpAQCAtMzYzLDcgKzM2Myw3IEBACiAJCWlmIChsaXN0X2VtcHR5KCZhdGNobmN0eC5hdF9yZWN2X2xpc3QpKSB7CiAJCQlpZiAocHRocmVhZF9jb25kX3dhaXQoJmF0Y2huY3R4LmF0X3JlY3ZfY29uZCwgJmF0Y2huY3R4LmF0X3JlY3ZfbG9jaykgPT0gRVRJTUVET1VUKSB7CiAJCQkJcHRocmVhZF9tdXRleF91bmxvY2soJmF0Y2huY3R4LmF0X3JlY3ZfbG9jayk7Ci0JCQkJUkxPR0QoIiVzICVkIiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7CisJCQkJLy9STE9HRCgiJXMgJWQiLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKIAkJCQlnb3RvIGFnYWluOwogCQkJfQogCQl9CkBAIC0zNzUsMTAgKzM3NSwxMSBAQAogCQkJQVRfRFVNUCgiPDwgIiwgcF9yZWFkLCBjb3VudCk7CiAKIAkJCWNoYW5uZWwgPSBhdF9nZXRfY2hhbm5lbF9ieV9uYW1lKG5vZGUtPm5hbWUpOworI2lmIDAKIAkJCWlmIChOVUxMICE9IGNoYW5uZWwpIHsKIAkJCQlSTE9HRCgiJXMgJWQgJXMgJXMiLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCBub2RlLT5uYW1lLCBwX3JlYWQpOwogCQkJfQotCisjZW5kaWYKIAkJCSpjaG4gPSBjaGFubmVsOwogCiAJCQlsaXN0X2RlbCgmbm9kZS0+bGlzdCk7CkBAIC0zOTMsOCArMzk0LDggQEAKIAkvKiBhIGZ1bGwgbGluZSBpbiB0aGUgYnVmZmVyLiBQbGFjZSBhIFwwIG92ZXIgdGhlIFxyIGFuZCByZXR1cm4gKi8KIAogCXJldCA9IHNfQVRCdWZmZXI7Ci0KLQlSTE9HRCgiUklMQVQ8ICVzXG4iLCByZXQpOworCWlmKDAgIT0gc3RybmNtcChyZXQsICIrWkVNU0NJUSIsIHN0cmxlbigiK1pFTVNDSVEiKSkpCisJCVJMT0dEKCJSSUxBVDwgJXNcbiIsIHJldCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNjYzLDcgKzY2NCw3IEBACiAJCWdvdG8gZXJyb3I7CiAJfQogCi0JUkxPR0QoImF0X3NlbmRfY29tbWFuZF9mdWxsX25vbG9jayAlZCIsIF9fTElORV9fKTsKKwkvL1JMT0dEKCJhdF9zZW5kX2NvbW1hbmRfZnVsbF9ub2xvY2sgJWQiLCBfX0xJTkVfXyk7CiAJY2hhbm5lbC0+c190eXBlID0gdHlwZTsKIAljaGFubmVsLT5zX3Jlc3BvbnNlUHJlZml4ID0gcmVzcG9uc2VQcmVmaXg7CiAJY2hhbm5lbC0+c19zbXNQRFUgPSBzbXNwZHU7CkBAIC02OTUsNyArNjk2LDcgQEAKIAkJCWdvdG8gZXJyb3I7CiAJCX0KIAl9Ci0JUkxPR0QoImF0X3NlbmRfY29tbWFuZF9mdWxsX25vbG9jayAlZCIsIF9fTElORV9fKTsKKwkvL1JMT0dEKCJhdF9zZW5kX2NvbW1hbmRfZnVsbF9ub2xvY2sgJWQiLCBfX0xJTkVfXyk7CiAJaWYgKHBwX291dFJlc3BvbnNlID09IE5VTEwpIHsKIAkJYXRfcmVzcG9uc2VfZnJlZShjaGFubmVsLT5zcF9yZXNwb25zZSk7CiAJfSBlbHNlIHsKQEAgLTcxNCw3ICs3MTUsNyBAQAogCWVyciA9IDA7CiBlcnJvcjoKIAljbGVhclBlbmRpbmdDb21tYW5kKGNoYW5uZWwpOwotCVJMT0dEKCJhdF9zZW5kX2NvbW1hbmRfZnVsbF9ub2xvY2sgJWQiLCBfX0xJTkVfXyk7CisJLy9STE9HRCgiYXRfc2VuZF9jb21tYW5kX2Z1bGxfbm9sb2NrICVkIiwgX19MSU5FX18pOwogCXJldHVybiBlcnI7CiB9CiAKQEAgLTEwNzQsNyArMTA3NSw3IEBACiAJCWNoYW5uZWwgPSBjdHgtPmF0Y2huaW5mb1tpXTsKIAkJaWYgKDAgPT0gY2hhbm5lbC0+c3RhdGUpIHsKIAkJCWNoYW5uZWwtPnN0YXRlID0gMTsKLQkJCVJMT0dEKCJhdF9nZXRfZnJlZV9jaGFubmVsICVzIiwgY2hhbm5lbC0+bmFtZSk7CisJCQkvL1JMT0dEKCJhdF9nZXRfZnJlZV9jaGFubmVsICVzIiwgY2hhbm5lbC0+bmFtZSk7CiAJCQlyZXR1cm4gY2hhbm5lbDsKIAkJfQogCX0KQEAgLTEwODksNyArMTA5MCw3IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgWlhJQ19BVENITl9TVU07IGkrKykgewogCQlpZiAoY2hhbm5lbCA9PSBjdHgtPmF0Y2huaW5mb1tpXSkgewotCQkJUkxPR0QoImF0X3JlbGVhc2VfY2hhbm5lbCAlcyIsIGNoYW5uZWwtPm5hbWUpOworCQkJLy9STE9HRCgiYXRfcmVsZWFzZV9jaGFubmVsICVzIiwgY2hhbm5lbC0+bmFtZSk7CiAJCQljaGFubmVsLT5zdGF0ZSA9IDA7CiAJCQljbGVhclBlbmRpbmdDb21tYW5kKGNoYW5uZWwpOwogCQkJcmV0dXJuOwpAQCAtMTEyNCwxMSArMTEyNSwxMSBAQAogCQljdXJsZW4gPSBzdHJsZW4ocF9yZWFkKTsKIAkJc3RybmNweSgmY2hhbm5lbC0+c3RvcmVfY21kW2NoYW5uZWwtPnN0b3JlX2NtZF9sZW5dLCBwX3JlYWQsIGN1cmxlbik7CiAJCWNoYW5uZWwtPnN0b3JlX2NtZF9sZW4gKz0gY3VybGVuOwotCQlSTE9HRCgicmVhZF9jYiAlZCBjdXJsZW46JWQiLCBfX0xJTkVfXywgY3VybGVuKTsKKwkJLy9STE9HRCgicmVhZF9jYiAlZCBjdXJsZW46JWQiLCBfX0xJTkVfXywgY3VybGVuKTsKIAkJcmV0dXJuIDA7CiAJfSBlbHNlIGlmICgwIDwgY2hhbm5lbC0+c3RvcmVfY21kX2xlbikgewogCQljdXJsZW4gPSBzdHJsZW4ocF9yZWFkKTsKLQkJUkxPR0QoInJlYWRfY2IgJWQgY3VybGVuOiVkIiwgX19MSU5FX18sIGN1cmxlbik7CisJCS8vUkxPR0QoInJlYWRfY2IgJWQgY3VybGVuOiVkIiwgX19MSU5FX18sIGN1cmxlbik7CiAJCXN0cm5jcHkoJmNoYW5uZWwtPnN0b3JlX2NtZFtjaGFubmVsLT5zdG9yZV9jbWRfbGVuXSwgcF9yZWFkLCBjdXJsZW4pOwogCQljaGFubmVsLT5zdG9yZV9jbWRfbGVuICs9IGN1cmxlbjsKIApAQCAtMTE0Miw3ICsxMTQzLDcgQEAKIAkJcF9lb2wgPSBmaW5kTmV4dEVPTChjaGFubmVsLT5zdG9yZV9jbWQpOwogI2VuZGlmCiAKLQkJUkxPR0QoInJlYWRfY2IgY3VybGVuOiVkIiwgc3RybmxlbihjaGFubmVsLT5zdG9yZV9jbWQsIE1BWF9BVF9SRVNQT05TRSkpOworCQkvL1JMT0dEKCJyZWFkX2NiIGN1cmxlbjolZCIsIHN0cm5sZW4oY2hhbm5lbC0+c3RvcmVfY21kLCBNQVhfQVRfUkVTUE9OU0UpKTsKIAl9CiAKIAl3aGlsZSAoTlVMTCAhPSBwX2VvbCkgewpAQCAtMTE2Nyw3ICsxMTY4LDcgQEAKIAkJbm9kZS0+ZGF0YVtjdXJsZW5dID0gJ1wwJzsKIAkJbm9kZS0+c2l6ZSA9IGN1cmxlbjsKIAkJc3RybmNweShub2RlLT5uYW1lLCBjaGFubmVsLT5uYW1lLCBzaXplb2Yobm9kZS0+bmFtZSkpOwotCQlSTE9HRCgicmVhZF9jYiBjdXJsZW46JWQgbm9kZS0+ZGF0YTogJXMiLCBjdXJsZW4sIG5vZGUtPmRhdGEpOworCQkvL1JMT0dEKCJyZWFkX2NiIGN1cmxlbjolZCBub2RlLT5kYXRhOiAlcyIsIGN1cmxlbiwgbm9kZS0+ZGF0YSk7CiAJCXB0aHJlYWRfbXV0ZXhfbG9jaygmYXRjaG5jdHguYXRfcmVjdl9sb2NrKTsKIAkJbGlzdF9hZGRfdGFpbCgmbm9kZS0+bGlzdCwgJmF0Y2huY3R4LmF0X3JlY3ZfbGlzdCk7CiAJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhdGNobmN0eC5hdF9yZWN2X2xvY2spOwpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JlZmVyZW5jZS1yaWwuYyBiL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9yaWwvcmVmZXJlbmNlLXJpbC9yZWZlcmVuY2UtcmlsLmMKaW5kZXggZjlhMGY2Yy4uNDI5MjBhNiAxMDA3NTUKLS0tIGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JlZmVyZW5jZS1yaWwuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvcmVmZXJlbmNlLXJpbC5jCkBAIC0yNjYsNyArMjY2LDcgQEAKIA0KIAkJCWlmIChOVUxMICE9IHBpbmZvKSB7DQogDQotCQkJCVJMT0dEKCJyZXF1ZXN0IGluZm86IC0tcmVxdWVzdCAlZCAtLXNlcnZpY2V0eXBlICVkIC0tZGF0YXR5cGUgJWQiLCBwaW5mby0+cmVxdWVzdCwgcGluZm8tPnNlcnZpY2V0eXBlLCBwaW5mby0+dHlwZSk7DQorCQkJCS8vUkxPR0QoInJlcXVlc3QgaW5mbzogLS1yZXF1ZXN0ICVkIC0tc2VydmljZXR5cGUgJWQgLS1kYXRhdHlwZSAlZCIsIHBpbmZvLT5yZXF1ZXN0LCBwaW5mby0+c2VydmljZXR5cGUsIHBpbmZvLT50eXBlKTsNCiAJCQkJcmVxdWVzdFByb2MocGluZm8tPnJlcXVlc3QsIHBpbmZvLT5kYXRhLCBwaW5mby0+ZGF0YWxlbiwgcGluZm8tPnQpOw0KIAkJCX0gZWxzZSB7DQogCQkJCVJMT0dFKCJyaWxfcmVmX2RlcXVldWVfZGlzcGF0Y2g6IHJlcXVlc3QgaW52YWxpZCEiKTsNCkBAIC0xNDgxLDcgKzE0ODEsNyBAQAogDQogCUlOSVRfTElTVF9IRUFEKCZ0bXBfbGlzdCk7DQogCXdoaWxlICghc19jbG9zZWQpIHsNCi0JCVJMT0dJKCIlcyB3YWl0aW5nIHJlcXVlc3QiLCB3b3JrcS0+bmFtZSk7DQorCQkvL1JMT0dJKCIlcyB3YWl0aW5nIHJlcXVlc3QiLCB3b3JrcS0+bmFtZSk7DQogCQlwdGhyZWFkX211dGV4X2xvY2soJndvcmtxLT5tdXRleCk7DQogCQlpZiAobGlzdF9lbXB0eSgmd29ya3EtPnJlcV9xdWV1ZSkpIHsNCiAJCQlpZiAocHRocmVhZF9jb25kX3dhaXQoJndvcmtxLT5jb25kLCAmd29ya3EtPm11dGV4KSA9PSBFVElNRURPVVQpIHsNCkBAIC0xNDkzLDcgKzE0OTMsNyBAQAogCQlsaXN0X2RlbF9pbml0KCZ3b3JrcS0+cmVxX3F1ZXVlKTsNCiANCiAJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3b3JrcS0+bXV0ZXgpOw0KLQkJUkxPR0koIiVzIHByb2Nlc3NpbmcgcmVxdWVzdCIsIHdvcmtxLT5uYW1lKTsNCisJCS8vUkxPR0koIiVzIHByb2Nlc3NpbmcgcmVxdWVzdCIsIHdvcmtxLT5uYW1lKTsNCiAJCXJpbF9yZWZfZGVxdWV1ZV9kaXNwYXRjaCgmdG1wX2xpc3QpOw0KIAl9DQogDQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JpbF9jYy5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JpbF9jYy5jCmluZGV4IGYxODM5NTEuLjhhMzU2NWMgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9yaWwvcmVmZXJlbmNlLXJpbC9yaWxfY2MuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvcmlsX2NjLmMKQEAgLTIwMSw3ICsyMDEsNyBAQAogDQogCWlmICgxID09IG9ub2ZmKSB7DQogCQlpZiAoMCAhPSBhbHNhX3ZvaWNlX29wZW4obW9kZSkpIHsNCi0JCQlSTE9HRCgiY2Nfdm9pY2Vfb3Blbl9hdCBhbHNhX3ZvaWNlX29wZW5cbiIpOw0KKwkJCVJMT0dFKCJjY192b2ljZV9vcGVuX2F0IGFsc2Ffdm9pY2Vfb3BlbiBmYWlsXG4iKTsNCiAJCQlyZXR1cm4gLTE7DQogCQl9DQogDQpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JpbF9tbS5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JpbF9tbS5jCmluZGV4IDY1ZDM1ZDUuLjM1NDlkMDIgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9yaWwvcmVmZXJlbmNlLXJpbC9yaWxfbW0uYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvcmlsX21tLmMKQEAgLTQ2NiwxMCArNDY2LDEwIEBACiAJcFplbWluZm8gPSBhbGxvY2Eoc3RybGVuKGF0X3BhcmFzKSAvIDIpOw0KIAloZXhTdHIyQnl0ZUFycihhdF9wYXJhcywgcFplbWluZm8pOw0KIAlwRW1JbmZvX0luZCA9IChUX3pFTV9FbUluZm9fSW5kKilwWmVtaW5mbzsNCi0JUkxPR0QoInJlcXVlc3RHZXRDZWxsSW5mb0xpc3QgYlZlcnNpb249JWRcbiIsIHBFbUluZm9fSW5kLT5iVmVyc2lvbik7DQotCVJMT0dEKCJyZXF1ZXN0R2V0Q2VsbEluZm9MaXN0IGJSYXRUeXBlPTB4JXhcbiIsIHBFbUluZm9fSW5kLT5iUmF0VHlwZSk7DQotCVJMT0dEKCJyZXF1ZXN0R2V0Q2VsbEluZm9MaXN0IGJTcmNJbmRleD0lZFxuIiwgcEVtSW5mb19JbmQtPmJTcmNJbmRleCk7DQotCVJMT0dEKCJyZXF1ZXN0R2V0Q2VsbEluZm9MaXN0IGJEZXNJbmRleD0lZFxuIiwgcEVtSW5mb19JbmQtPmJEZXNJbmRleCk7DQorCVJMT0dEKCJyZXF1ZXN0R2V0Q2VsbEluZm9MaXN0IGJWZXJzaW9uPSVkLGJSYXRUeXBlPTB4JXhcbiIsIHBFbUluZm9fSW5kLT5iVmVyc2lvbixwRW1JbmZvX0luZC0+YlJhdFR5cGUpOw0KKwkvL1JMT0dEKCJyZXF1ZXN0R2V0Q2VsbEluZm9MaXN0IGJSYXRUeXBlPTB4JXhcbiIsIHBFbUluZm9fSW5kLT5iUmF0VHlwZSk7DQorCS8vUkxPR0QoInJlcXVlc3RHZXRDZWxsSW5mb0xpc3QgYlNyY0luZGV4PSVkXG4iLCBwRW1JbmZvX0luZC0+YlNyY0luZGV4KTsNCisJLy9STE9HRCgicmVxdWVzdEdldENlbGxJbmZvTGlzdCBiRGVzSW5kZXg9JWRcbiIsIHBFbUluZm9fSW5kLT5iRGVzSW5kZXgpOw0KIA0KIAltZW1zZXQoY2ksIDAsIHNpemVvZihjaSkpOw0KIA0KQEAgLTU1OSwxNSArNTU5LDE1IEBACiAJCWNpWzBdLnJlZ2lzdGVyZWQgPSAxOw0KIAkJY2lbMF0udGltZVN0YW1wID0gY3VyVGltZTsNCiANCi0JCVJMT0dEKCJwYXJzZUNlbGxJbmZvIHdjZG1hIGJNQ0MxOiVkLCBiTUNDMjolZCwgYk1DQzM6JWQiLCBwTmFzSW5mby0+dFBsbW4uYk1DQzEsIHBOYXNJbmZvLT50UGxtbi5iTUNDMiwgcE5hc0luZm8tPnRQbG1uLmJNQ0MzKTsNCi0JCVJMT0dEKCJwYXJzZUNlbGxJbmZvIHdjZG1hIGJNTkMxOiVkLCBiTU5DMjolZCIsIHBOYXNJbmZvLT50UGxtbi5iTU5DMSwgcE5hc0luZm8tPnRQbG1uLmJNTkMyKTsNCisJCS8vUkxPR0QoInBhcnNlQ2VsbEluZm8gd2NkbWEgYk1DQzE6JWQsIGJNQ0MyOiVkLCBiTUNDMzolZCIsIHBOYXNJbmZvLT50UGxtbi5iTUNDMSwgcE5hc0luZm8tPnRQbG1uLmJNQ0MyLCBwTmFzSW5mby0+dFBsbW4uYk1DQzMpOw0KKwkJLy9STE9HRCgicGFyc2VDZWxsSW5mbyB3Y2RtYSBiTU5DMTolZCwgYk1OQzI6JWQiLCBwTmFzSW5mby0+dFBsbW4uYk1OQzEsIHBOYXNJbmZvLT50UGxtbi5iTU5DMik7DQogDQogCQlzbnByaW50ZihzbWNjLCA0LCAiJWQlZCVkIiwgcE5hc0luZm8tPnRQbG1uLmJNQ0MxLCBwTmFzSW5mby0+dFBsbW4uYk1DQzIsIHBOYXNJbmZvLT50UGxtbi5iTUNDMyk7DQogCQlzbWNjWzNdID0gJ1wwJzsNCiAJCXNucHJpbnRmKHNtbmMsIDMsICIlZCVkIiwgcE5hc0luZm8tPnRQbG1uLmJNTkMxLCBwTmFzSW5mby0+dFBsbW4uYk1OQzIpOw0KIAkJc21uY1syXSA9ICdcMCc7DQogDQotCQlSTE9HRCgicGFyc2VDZWxsSW5mbyB3Y2RtYSBzbWNjOiVzLCBzbW5jOiVzIiwgc21jYywgc21uYyk7DQorCQkvL1JMT0dEKCJwYXJzZUNlbGxJbmZvIHdjZG1hIHNtY2M6JXMsIHNtbmM6JXMiLCBzbWNjLCBzbW5jKTsNCiANCiAJCXB3Y2RtYS0+Y2VsbElkZW50aXR5V2NkbWEubWNjID0gYXRvaShzbWNjKTsNCiAJCXB3Y2RtYS0+Y2VsbElkZW50aXR5V2NkbWEubW5jID0gYXRvaShzbW5jKTsNCkBAIC02MDQsNyArNjA0LDcgQEAKIAkJCXB3Y2RtYS0+c2lnbmFsU3RyZW5ndGhXY2RtYS5iaXRFcnJvclJhdGUgPSB0d2NkbWFFbUluZm8tPnVXY2VsbE1lYXNJbmZvLnROb3REY2hJbmZvLnRGZGRTQ2VsbFJlc2VsSW5mby50U2NlbGxJbmZvLmJFY05vOw0KIAkJfQ0KIA0KLQkJUkxPR0QoInBhcnNlQ2VsbEluZm8gd2NkbWEgcHNjOiAlZCwgc2lnbmFsU3RyZW5ndGg6JWQsIGJpdEVycm9yUmF0ZTolZCIsIHB3Y2RtYS0+Y2VsbElkZW50aXR5V2NkbWEucHNjLCBwd2NkbWEtPnNpZ25hbFN0cmVuZ3RoV2NkbWEuc2lnbmFsU3RyZW5ndGgsIHB3Y2RtYS0+c2lnbmFsU3RyZW5ndGhXY2RtYS5iaXRFcnJvclJhdGUpOw0KKwkJLy9STE9HRCgicGFyc2VDZWxsSW5mbyB3Y2RtYSBwc2M6ICVkLCBzaWduYWxTdHJlbmd0aDolZCwgYml0RXJyb3JSYXRlOiVkIiwgcHdjZG1hLT5jZWxsSWRlbnRpdHlXY2RtYS5wc2MsIHB3Y2RtYS0+c2lnbmFsU3RyZW5ndGhXY2RtYS5zaWduYWxTdHJlbmd0aCwgcHdjZG1hLT5zaWduYWxTdHJlbmd0aFdjZG1hLmJpdEVycm9yUmF0ZSk7DQogCX0gZWxzZSBpZiAocEVtSW5mb19JbmQtPmJSYXRUeXBlID09IDEpIHsNCiAJCWNpWzBdLmNlbGxJbmZvVHlwZSA9IFJJTF9DRUxMX0lORk9fVFlQRV9URF9TQ0RNQTsNCiAJCWNpWzBdLnJlZ2lzdGVyZWQgPSAxOw0KQEAgLTczMyw3ICs3MzMsNyBAQAogCSAqIHNvIGF2YWlsYWJsZSBvcGVyYXRvciBjb3VudCBzaG91bGQgYmUgbnVtX29mX2xlZnRfcGFyZW50aGVzZXMgLSAyDQogCSAqLw0KIAlhdmFpbGFibGVPcHROdW1iZXIgPSAobHBhcmVuID4gMSkgPyAobHBhcmVuIC0gMikgOiAwOw0KLQlSTE9HRCgiJXM6IGF2YWlsYWJsZSBvcGVyYXRvciBudW1iZXI6JWQiLCBfX0ZVTkNUSU9OX18sIGF2YWlsYWJsZU9wdE51bWJlcik7DQorCS8vUkxPR0QoIiVzOiBhdmFpbGFibGUgb3BlcmF0b3IgbnVtYmVyOiVkIiwgX19GVU5DVElPTl9fLCBhdmFpbGFibGVPcHROdW1iZXIpOw0KIAlyZXN1bHQgPSBhbGxvY2EoYXZhaWxhYmxlT3B0TnVtYmVyICogQVZBSUxBQkxFX05FVFdPUktTX0lURU1fTlVNICogc2l6ZW9mKGNoYXIgKikpOw0KIAlnZXRBdmFpbGFibGVOZXR3b3Jrc1Jlc3VsdChhdmFpbGFibGVPcHROdW1iZXIsIHJlc3VsdCwgbGluZSk7DQogCVJJTF9vblJlcXVlc3RDb21wbGV0ZSh0b2tlbiwgUklMX0VfU1VDQ0VTUywgcmVzdWx0LCBzaXplb2YoY2hhciAqKSAqIGF2YWlsYWJsZU9wdE51bWJlciAqIEFWQUlMQUJMRV9ORVRXT1JLU19JVEVNX05VTSk7DQpAQCAtMTA2Myw3ICsxMDYzLDcgQEAKIAlBVFJlc3BvbnNlICAqcmVzcG9uc2UgPSBOVUxMOw0KIA0KIAlSTE9HRCgicmlsX3JlcXVlc3RfcmFkaW9fcmVzZXQoKSIpOw0KLQlSTE9HRCgicmlsX3JlcXVlc3RfcmFkaW9fcmVzZXQ6IHNlbmQgQVQrQ0ZVTj0wIik7DQorCS8vUkxPR0QoInJpbF9yZXF1ZXN0X3JhZGlvX3Jlc2V0OiBzZW5kIEFUK0NGVU49MCIpOw0KIAllcnIgPSBhdF9zZW5kX2NvbW1hbmRfdGltZW91dCgiQVQrQ0ZVTj0wIiwgJnJlc3BvbnNlLCBUSU1FT1VUX0NGVU4pOw0KIAlET19NTV9SRVNQT05TRV9FUlJPUl9KRFVHRTsNCiANCkBAIC0xMDcxLDcgKzEwNzEsNyBAQAogDQogCWF0X3Jlc3BvbnNlX2ZyZWUocmVzcG9uc2UpOw0KIA0KLQlSTE9HRCgicmlsX3JlcXVlc3RfcmFkaW9fcmVzZXQ6IHNlbmQgQVQrQ0ZVTj0xIik7DQorCS8vUkxPR0QoInJpbF9yZXF1ZXN0X3JhZGlvX3Jlc2V0OiBzZW5kIEFUK0NGVU49MSIpOw0KIA0KIAllcnIgPSBhdF9zZW5kX2NvbW1hbmRfdGltZW91dCgiQVQrQ0ZVTj0xIiwgJnJlc3BvbnNlLCBUSU1FT1VUX0NGVU4pOw0KIAlpZiAoKGVyciA8IDAgfHwgcmVzcG9uc2UtPnN1Y2Nlc3MgPT0gMCkgJiYgKGlzUmFkaW9PbigpICE9IDEpKSB7DQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAKIAl2YWx1ZSA9IGF0b2koc3RyVGVtcCk7DQogCVJMT0dEKCJpbml0X3N5c19tb2RlOiB2YWx1ZT0lZCwgc3lzX21vZGU9JWQiLCB2YWx1ZSwgZ2V0Q3VyTndNb2RlKCkpOw0KIAlpZiAodmFsdWUgIT0gZ2V0Q3VyTndNb2RlKCkpIHsNCi0JCVJMT0dEKCJpbml0X3N5c19tb2RlOiBSSUxfVU5TT0xfUkVTUE9OU0VfVk9JQ0VfTkVUV09SS19TVEFURV9DSEFOR0VEIik7DQorCQkvL1JMT0dEKCJpbml0X3N5c19tb2RlOiBSSUxfVU5TT0xfUkVTUE9OU0VfVk9JQ0VfTkVUV09SS19TVEFURV9DSEFOR0VEIik7DQogCQlzZXRDdXJOd01vZGUodmFsdWUpOw0KIAkJUklMX29uVW5zb2xpY2l0ZWRSZXNwb25zZShSSUxfVU5TT0xfUkVTUE9OU0VfVk9JQ0VfTkVUV09SS19TVEFURV9DSEFOR0VELCBOVUxMLCAwKTsNCiAJfQ0KQEAgLTExMzMsNyArMTEzMyw3IEBACiANCiAJUkxPR0QoImhhbmRsZV9tb2RlOiB2YWx1ZT0lZCwgc3lzX21vZGU9JWQiLCB2YWx1ZSwgZ2V0Q3VyTndNb2RlKCkpOw0KIAlpZiAodmFsdWUgIT0gZ2V0Q3VyTndNb2RlKCkpIHsNCi0JCVJMT0dEKCJoYW5kbGVfbW9kZTogUklMX1VOU09MX1JFU1BPTlNFX1ZPSUNFX05FVFdPUktfU1RBVEVfQ0hBTkdFRCIpOw0KKwkJLy9STE9HRCgiaGFuZGxlX21vZGU6IFJJTF9VTlNPTF9SRVNQT05TRV9WT0lDRV9ORVRXT1JLX1NUQVRFX0NIQU5HRUQiKTsNCiAJCXNldEN1ck53TW9kZSh2YWx1ZSk7DQogCQlSSUxfb25VbnNvbGljaXRlZFJlc3BvbnNlKFJJTF9VTlNPTF9SRVNQT05TRV9WT0lDRV9ORVRXT1JLX1NUQVRFX0NIQU5HRUQsIE5VTEwsIDApOw0KIAl9DQpAQCAtMTQwMSw4ICsxNDAxLDggQEAKIA0KIAkJcmVzdWx0LkdXX1NpZ25hbFN0cmVuZ3RoLmJpdEVycm9yUmF0ZSA9IGJlcjsNCiANCi0JCVJMT0dEKCJyaWxfcmVxdWVzdF9zaWduYWxfc3RyZW5ndGggcmVzdWx0LkdXX1NpZ25hbFN0cmVuZ3RoLnNpZ25hbFN0cmVuZ3RoID0gJWQiLA0KLQkJICAgICAgcmVzdWx0LkdXX1NpZ25hbFN0cmVuZ3RoLnNpZ25hbFN0cmVuZ3RoKTsNCisJCS8vUkxPR0QoInJpbF9yZXF1ZXN0X3NpZ25hbF9zdHJlbmd0aCByZXN1bHQuR1dfU2lnbmFsU3RyZW5ndGguc2lnbmFsU3RyZW5ndGggPSAlZCIsDQorCQkvLyAgICAgIHJlc3VsdC5HV19TaWduYWxTdHJlbmd0aC5zaWduYWxTdHJlbmd0aCk7DQogCX0NCiAJUklMX29uUmVxdWVzdENvbXBsZXRlKHRva2VuLCBSSUxfRV9TVUNDRVNTLCAmcmVzdWx0LCBzaXplb2YocmVzdWx0KSk7DQogCWdvdG8gZXhpdDsNCkBAIC0xNTUxLDcgKzE1NTEsNyBAQAogDQogCQkvKlZhbGlkIHZhbHVlcyBhcmUgKDAtNDksIDI1NSkqLw0KIAkJcmVzcG9uc2VbMjBdID0gZWNubzsNCi0JCVJMT0dEKCJyZXF1ZXN0U2lnbmFsU3RyZW5ndGggJWQgJWQgJWQgJWQiLHJlc3BvbnNlWzE3XSxyZXNwb25zZVsxOF0scmVzcG9uc2VbMTldLHJlc3BvbnNlWzIwXSk7DQorCQkvL1JMT0dEKCJyZXF1ZXN0U2lnbmFsU3RyZW5ndGggJWQgJWQgJWQgJWQiLHJlc3BvbnNlWzE3XSxyZXNwb25zZVsxOF0scmVzcG9uc2VbMTldLHJlc3BvbnNlWzIwXSk7DQogI2VuZGlmCQkNCiAJfQ0KIA0KQEAgLTE5NTYsMTcgKzE5NTYsMTcgQEAKIA0KIAlSTE9HRCgicmlsX3JlcXVlc3RfcmFkaW9fcG93ZXIoKTogb25PZmY9JWQsIGN1cnJlbnRTdGF0ZT0lZCIsIG9uT2ZmLCBjdXJyZW50U3RhdGUpOw0KIAlpZiAob25PZmYgPT0gNCkgew0KLQkJUkxPR0QoIm9uT2ZmPSVkLCBjdXJyZW50U3RhdGU9JWQgICAtLT4gQVQrQ0ZVTj00Iiwgb25PZmYsIGN1cnJlbnRTdGF0ZSk7DQorCQkvL1JMT0dEKCJvbk9mZj0lZCwgY3VycmVudFN0YXRlPSVkICAgLS0+IEFUK0NGVU49NCIsIG9uT2ZmLCBjdXJyZW50U3RhdGUpOw0KIAkJZXJyID0gYXRfc2VuZF9jb21tYW5kX3RpbWVvdXQoIkFUK0NGVU49NCIsICZyZXNwb25zZSwgVElNRU9VVF9DRlVOKTsNCiAJCURPX01NX1JFU1BPTlNFX0VSUk9SX0pEVUdFOw0KIAkJc2V0UmFkaW9TdGF0ZU9mZigpOwkJDQogCX0gZWxzZSBpZiAob25PZmYgPT0gMCkgew0KLQkJUkxPR0QoIm9uT2ZmPSVkLCBjdXJyZW50U3RhdGU9JWQgICAtLT4gQVQrQ0ZVTj00Iiwgb25PZmYsIGN1cnJlbnRTdGF0ZSk7DQorCQkvL1JMT0dEKCJvbk9mZj0lZCwgY3VycmVudFN0YXRlPSVkICAgLS0+IEFUK0NGVU49NCIsIG9uT2ZmLCBjdXJyZW50U3RhdGUpOw0KIAkJZXJyID0gYXRfc2VuZF9jb21tYW5kX3RpbWVvdXQoIkFUK0NGVU49NCIsICZyZXNwb25zZSwgVElNRU9VVF9DRlVOKTsNCiAJCURPX01NX1JFU1BPTlNFX0VSUk9SX0pEVUdFOwkJDQogCQlzZXRSYWRpb1N0YXRlT2ZmKCk7DQogCX0gZWxzZSBpZiAob25PZmYgPT0gMSkgew0KLQkJUkxPR0QoIm9uT2ZmPSVkLCBjdXJyZW50U3RhdGU9JWQgICAtLT4gQVQrQ0ZVTj0xIiwgb25PZmYsIGN1cnJlbnRTdGF0ZSk7DQorCQkvL1JMT0dEKCJvbk9mZj0lZCwgY3VycmVudFN0YXRlPSVkICAgLS0+IEFUK0NGVU49MSIsIG9uT2ZmLCBjdXJyZW50U3RhdGUpOw0KIAkJZXJyID0gYXRfc2VuZF9jb21tYW5kX3RpbWVvdXQoIkFUK0NGVU49MSIsICZyZXNwb25zZSwgVElNRU9VVF9DRlVOKTsNCiAJCWlmICgoZXJyIDwgMCB8fCByZXNwb25zZS0+c3VjY2VzcyA9PSAwKSAmJiAoaXNSYWRpb09uKCkgIT0gMSkpIHsNCiAJCQlnb3RvIGVycm9yOw0KZGlmZiAtLWdpdCBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9yaWwvcmVmZXJlbmNlLXJpbC9yaWxfc2ltLmMgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvcmlsX3NpbS5jCmluZGV4IDVkNzlmZGEuLjRkMTFkYzAgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9yaWwvcmVmZXJlbmNlLXJpbC9yaWxfc2ltLmMKKysrIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JpbF9zaW0uYwpAQCAtMzAwLDcgKzMwMCw3IEBACiBzdGF0aWMgdm9pZCBvblNpbUluaXRSZWFkeSh2b2lkICpwYXJhbSkKIHsKIAlzU2ltU3RhdHVzID0gU0lNX1JFQURZOwotCVJMT0dJKCJbJXNdOiBzZXQgc1NpbVN0YXR1cz0lZCIsIF9fRlVOQ1RJT05fXywgc1NpbVN0YXR1cyk7CisJLy9STE9HSSgiWyVzXTogc2V0IHNTaW1TdGF0dXM9JWQiLCBfX0ZVTkNUSU9OX18sIHNTaW1TdGF0dXMpOwogCiAJaW50IHN0YXR1cyA9IGdldFJhZGlvU3RhdGUoKTsKIAlpZiAoKHN0YXR1cyAhPSBSQURJT19TVEFURV9PRkYpICYmIChzdGF0dXMgIT0gUkFESU9fU1RBVEVfVU5BVkFJTEFCTEUpICYmIChzdGF0dXMgIT0gUkFESU9fU1RBVEVfU0lNX1JFQURZKSkgewpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAKIAlSSUxfb25SZXF1ZXN0Q29tcGxldGUodG9rZW4sIFJJTF9FX0dFTkVSSUNfRkFJTFVSRSwgTlVMTCwgMCk7CiAJLy8yMDE0MDYwNCB6b3V4aWFvamllIGFkZCBmb3Igc2ltIGVycm9yIHByb3RlY3QKIAlSSUxfb25VbnNvbGljaXRlZFJlc3BvbnNlKFJJTF9VTlNPTF9TVEtfU0VTU0lPTl9FTkQsIE5VTEwsIDApOwotCVJMT0dEKCJlcnJvciBSSUxfVU5TT0xfU1RLX1NFU1NJT05fRU5EIHNlbmQiKTsKKwkvL1JMT0dEKCJlcnJvciBSSUxfVU5TT0xfU1RLX1NFU1NJT05fRU5EIHNlbmQiKTsKIGV4aXQ6CiAJYXRfcmVzcG9uc2VfZnJlZShyZXNwb25zZSk7CiB9CkBAIC0xMTYwLDcgKzExNjAsNyBAQAogCQlpZiAoZXJyIDwgMCkgewogCQkJZ290byBlcnJvcjsKIAkJfQotCQlSTE9HRCgiJXM6IHJlc3VsdD0lcyIsIF9fRlVOQ1RJT05fXywgcmVzdWx0KTsKKwkJLy9STE9HRCgiJXM6IHJlc3VsdD0lcyIsIF9fRlVOQ1RJT05fXywgcmVzdWx0KTsKIAkJUklMX29uUmVxdWVzdENvbXBsZXRlKHRva2VuLCBSSUxfRV9TVUNDRVNTLCByZXN1bHQsIHNpemVvZihjaGFyICopKTsKIAkJZ290byBleGl0OwogCX0KQEAgLTExOTksNyArMTE5OSw3IEBACiAJCiAJYXRfcmVzcG9uc2VfZnJlZShyZXNwb25zZSk7CiAJCi0JUkxPR0QoInJpbF9yZXF1ZXN0X3NpbWNhcmRfcmVzZXQ6IHNlbmQgQVQrQ0ZVTj01Iik7CisJLy9STE9HRCgicmlsX3JlcXVlc3Rfc2ltY2FyZF9yZXNldDogc2VuZCBBVCtDRlVOPTUiKTsKIAllcnIgPSBhdF9zZW5kX2NvbW1hbmRfdGltZW91dCgiQVQrQ0ZVTj01IiwgJnJlc3BvbnNlLCBUSU1FT1VUX0NGVU4pOwogCWlmIChlcnIgPCAwIHx8IHJlc3BvbnNlLT5zdWNjZXNzID09IDApIHsKIAkJZ290byBlcnJvcjsKQEAgLTEyMDksNyArMTIwOSw3IEBACiAKIAlhdF9yZXNwb25zZV9mcmVlKHJlc3BvbnNlKTsKIAotCVJMT0dEKCJyaWxfcmVxdWVzdF9zaW1jYXJkX3Jlc2V0OiBzZW5kIEFUK1pVSU5JVD0wLDEsMCwwIik7CisJLy9STE9HRCgicmlsX3JlcXVlc3Rfc2ltY2FyZF9yZXNldDogc2VuZCBBVCtaVUlOSVQ9MCwxLDAsMCIpOwogCiAJZXJyID0gYXRfc2VuZF9jb21tYW5kX3NpbmdsZWxpbmUoIkFUK1pVSU5JVD0wLDEsMCwwIiwgIitaVUlOSVQ6IiwgJnJlc3BvbnNlKTsKIAlpZiAoZXJyIDwgMCB8fCByZXNwb25zZS0+c3VjY2VzcyA9PSAwIHx8IHJlc3BvbnNlLT5wX2ludGVybWVkaWF0ZXMgPT0gTlVMTCkgewpAQCAtMTI0OCw3ICsxMjQ4LDcgQEAKIAkJCWdvdG8gZXJyb3I7CiAKIAkJY2FzZSAzMDogLy9pbml0IHN1Y2VzcwotCQkJUkxPR0QoInJpbF9yZXF1ZXN0X3NpbWNhcmRfcmVzZXQ6IHN1Y2Nlc3MhIik7CisJCQkvL1JMT0dEKCJyaWxfcmVxdWVzdF9zaW1jYXJkX3Jlc2V0OiBzdWNjZXNzISIpOwogCQkJUklMX29uUmVxdWVzdENvbXBsZXRlKHRva2VuLCBSSUxfRV9TVUNDRVNTLCBOVUxMLCAwKTsKIAkJCWdvdG8gZXhpdDsKIApkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JpbF9zcy5jIGIvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3JpbF9zcy5jCmluZGV4IGY4YzllMjAuLjljNGUwNDMgMTAwNzU1Ci0tLSBhL2NhcC96eDI5NzUyMHYzL3p4aWNfY29kZS96eGljX3NvdXJjZS96eGljX2FwcF9vcGVuL3Nkay9yaWwvcmVmZXJlbmNlLXJpbC9yaWxfc3MuYworKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvcmlsX3NzLmMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY2FwL3p4Mjk3NTIwdjMvenhpY19jb2RlL3p4aWNfc291cmNlL3p4aWNfYXBwX29wZW4vc2RrL3JpbC9yZWZlcmVuY2UtcmlsL3p4aWNfbG9nLmggYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvenhpY19sb2cuaAppbmRleCBkNjY3M2RjLi5hN2NmYWM3IDEwMDc1NQotLS0gYS9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvenhpY19sb2cuaAorKysgYi9jYXAvengyOTc1MjB2My96eGljX2NvZGUvenhpY19zb3VyY2UvenhpY19hcHBfb3Blbi9zZGsvcmlsL3JlZmVyZW5jZS1yaWwvenhpY19sb2cuaApAQCAtMTEsNyArMTEsNyBAQAogLy96eGljX2xvZ19hcHBlbmRfc2xvZyhtb2QsIHByaW8sICIlcwklZCAiZm10IlxuIiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXywgIyNfX1ZBX0FSR1NfXyk7DQogDQogI2RlZmluZSByaWxfbG9nX3Nsb2cobW9kLHByaW8sZm10LC4uLikgZG8gewlcDQotCQkJenhpY19sb2dfYXBwZW5kX3Nsb2cobW9kLCBwcmlvLCBmbXQiXG4iLCAjI19fVkFfQVJHU19fKTsgXA0KKwkJCXNsb2cobW9kLCBwcmlvLCBmbXQiXG4iLCAjI19fVkFfQVJHU19fKTsgXA0KIAkJfSB3aGlsZSgwKQ0KIA0KICNkZWZpbmUgUkxPR0QoLi4uKSBkbyB7cmlsX2xvZ19zbG9nKFJJTF9QUklOVCxTTE9HX0RFQlVHLF9fVkFfQVJHU19fKTt9d2hpbGUoMCkNCg==