ZGlmZiAtLWdpdCBhL2F1dG8vY2MvZ2NjIGIvYXV0by9jYy9nY2MKaW5kZXggMjFhNzM0MC4uOTZlYTg2NSAxMDA2NDQKLS0tIGEvYXV0by9jYy9nY2MKKysrIGIvYXV0by9jYy9nY2MKQEAgLTEwMSw2ICsxMDEsMTYgQEAKICAgICAgICAgTkdYX0NQVV9DQUNIRV9MSU5FPTY0CiAgICAgOzsKIAorICAgIHBwYzY0KQorICAgICAgICAjIGJ1aWxkIDY0LWJpdCBQb3dlclBDIGJpbmFyeQorICAgICAgICBDUFVfT1BUPSItbTY0IgorICAgICAgICBDUFVfT1BUPSIkQ1BVX09QVCAtZmFsaWduLWZ1bmN0aW9ucz0zMiAtZmFsaWduLWxhYmVscz0zMiIKKyAgICAgICAgQ1BVX09QVD0iJENQVV9PUFQgLWZhbGlnbi1sb29wcz0zMiAtZmFsaWduLWp1bXBzPTMyIgorICAgICAgICBDT1JFX0xJTks9IiRDT1JFX0xJTksgLW02NCIKKyAgICAgICAgQ0NfQVVYX0ZMQUdTPSIkQ0NfQVVYX0ZMQUdTIC1tNjQiCisgICAgICAgIE5HWF9DUFVfQ0FDSEVfTElORT0xMjgKKyAgICA7OworCiBlc2FjCiAKIApkaWZmIC0tZ2l0IGEvYXV0by9vcHRpb25zIGIvYXV0by9vcHRpb25zCmluZGV4IDJmNGJlNjIuLjRmZjExMDAgMTAwNjQ0Ci0tLSBhL2F1dG8vb3B0aW9ucworKysgYi9hdXRvL29wdGlvbnMKQEAgLTI2Nyw3ICsyNjcsOCBAQAogICAtLXdpdGgtY2Mtb3B0PU9QVElPTlMgICAgICAgICAgICAgIHNldCBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIEMgY29tcGlsZXIKICAgLS13aXRoLWxkLW9wdD1PUFRJT05TICAgICAgICAgICAgICBzZXQgYWRkaXRpb25hbCBvcHRpb25zIGZvciBsaW5rZXIKICAgLS13aXRoLWNwdS1vcHQ9Q1BVICAgICAgICAgICAgICAgICBidWlsZCBmb3Igc3BlY2lmaWVkIENQVSwgdGhlIHZhbGlkIHZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW50aXVtLCBwZW50aXVtcHJvLCBwZW50aXVtNCwgc3BhcmM2NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbnRpdW0sIHBlbnRpdW1wcm8sIHBlbnRpdW0zLCBwZW50aXVtNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdGhsb24sIG9wdGVyb24sIHNwYXJjMzIsIHNwYXJjNjQsIHBwYzY0CiAKICAgLS13aXRob3V0LXBjcmUgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIFBDUkUgbGliYXJhcnkgdXNhZ2UKICAgLS13aXRoLXBjcmU9RElSICAgICAgICAgICAgICAgICAgICBzZXQgcGF0aCB0byBQQ1JFIGxpYnJhcnkgc291cmNlcwpkaWZmIC0tZ2l0IGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwgYi9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbAppbmRleCA5M2NmYWVjLi5iMDRhYTkzIDEwMDY0NAotLS0gYS9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbAorKysgYi9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbApAQCAtOSw2ICs5LDczIEBACiA8dGl0bGUgbGFuZz0iZW4iPm5naW54IGNoYW5nZWxvZzwvdGl0bGU+CiAKIAorPGNoYW5nZXMgdmVyPSIwLjMuMjgiIGRhdGU9IjE2LjAyLjIwMDYiPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgorxMnSxcvUydfBIHJlc3RyaWN0X2hvc3RfbmFtZXMg1dDSwdrEzsXOwS4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSAicmVzdHJpY3RfaG9zdF9uYW1lcyIgZGlyZWN0aXZlIGlzIGNhbmNlbGVkLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+Cis8cGFyYSBsYW5nPSJydSI+CivQwdLBzcXU0iDLz87GycfV0sHDyckgLS13aXRoLWNwdS1vcHQ9cHBjNjQuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgLS13aXRoLWNwdS1vcHQ9cHBjNjQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgor0NLJIM7Fy8/Uz9LZyCDV08zP18nRyCDQ0s/L08nSz9fBzs7PxSDTz8XEyc7FzsnFINMgy8zJxc7Uz80g2sHXxdLbwczP09gKK9DSxdbExdfSxc3Fzs7PLgor89DB08nCzyD3zMHEyc3J0tUg+9XUz9fVLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgorb24gc29tZSBjb25kaXRpb24gdGhlIHByb3hpZWQgY29ubmVjdGlvbiB3aXRoIGEgY2xpZW50IHdhcyB0ZXJtaW5hdGVkCitwcmVtYXR1cmVseS4KK1RoYW5rcyB0byBWbGFkaW1pciBTaHV0b2ZmLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9PU0s/LwSDawcfPzM/Xy8EgIlgtQWNjZWwtTGltaXQtUmF0ZSIgzsUg1d7J1NnXwczB09ggxMzRINrB0NLP08/XLAor0MXSxc7B0NLB18zFzs7ZyCDTINDPzc/d2MAg09TSz8vJICJYLUFjY2VsLVJlZGlyZWN0Ii4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSAiWC1BY2NlbC1MaW1pdC1SYXRlIiBoZWFkZXIgbGluZSB3YXMgbm90IHRha2VuIGludG8gYWNjb3VudAoraWYgdGhlIHJlcXVlc3Qgd2FzIHJlZGlyZWN0ZWQgdXNpbmcgdGhlICJYLUFjY2VsLVJlZGlyZWN0IiBoZWFkZXIgbGluZS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivEydLFy9TJ18EgcG9zdF9hY3Rpb24g0sHCz9TBzMEg1M/M2MvPINDP08zFINXT0MXbzs/HzyDawdfF0tvFzsnRINrB0NLP08EuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgInBvc3RfYWN0aW9uIiBkaXJlY3RpdmUgcmFuIG9ubHkgYWZ0ZXIgYSBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgYSByZXF1ZXN0LgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9TFzM8g0NLPy9PJ0s/Xwc7Oz8fPIM/U18XUwSwg08/axMHXwcXNz8fPIMTJ0sXL1MnXz8ogcG9zdF9hY3Rpb24sCivQxdLFxMHXwczP09ggy8zJxc7U1S4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSBwcm94aWVkIHJlc3BvbnNlIGJvZHkgZ2VuZXJhdGVkIGJ5IHRoZSAicG9zdF9hY3Rpb24iIGRpcmVjdGl2ZQord2FzIHRyYW5zZmVycmVkIHRvIGEgY2xpZW50LgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzwvY2hhbmdlcz4KKworCiA8Y2hhbmdlcyB2ZXI9IjAuMy4yNyIgZGF0ZT0iMDguMDIuMjAwNiI+CiAKIDxjaGFuZ2UgdHlwZT0iY2hhbmdlIj4KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmggYi9zcmMvY29yZS9uZ2lueC5oCmluZGV4IDc0YmE4MDkuLjVhZGI0N2QgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25naW54LmgKKysrIGIvc3JjL2NvcmUvbmdpbnguaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05HSU5YX0hfSU5DTFVERURfCiAKIAotI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMy4yNyIKKyNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjMuMjgiCiAKICNkZWZpbmUgTkdJTlhfVkFSICAgICAgICAgICJOR0lOWCIKICNkZWZpbmUgTkdYX09MRFBJRF9FWFQgICAgICIub2xkYmluIgpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X3N0cmluZy5jIGIvc3JjL2NvcmUvbmd4X3N0cmluZy5jCmluZGV4IGM5OTc3OGQuLjZhODE5ODQgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9zdHJpbmcuYworKysgYi9zcmMvY29yZS9uZ3hfc3RyaW5nLmMKQEAgLTMxMiw3ICszMTIsNyBAQAogICAgICAgICAgICAgICAgIGhleGFkZWNpbWFsID0gMjsKICAgICAgICAgICAgICAgICBzaWduID0gMDsKICAgICAgICAgICAgICAgICB6ZXJvID0gJzAnOwotICAgICAgICAgICAgICAgIHdpZHRoID0gODsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IE5HWF9QVFJfU0laRSAqIDI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgJ2MnOgpkaWZmIC0tZ2l0IGEvc3JjL2V2ZW50L25neF9ldmVudF9waXBlLmMgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X3BpcGUuYwppbmRleCBmZmI3OTI5Li4wOWI2ZjZhIDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbmd4X2V2ZW50X3BpcGUuYworKysgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X3BpcGUuYwpAQCAtNjAsOCArNjAsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBOR1hfQUJPUlQ7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocmV2LT5hY3RpdmUpIHsKKyAgICAgICAgaWYgKHJldi0+YWN0aXZlICYmICFyZXYtPnJlYWR5KSB7CiAgICAgICAgICAgICBuZ3hfYWRkX3RpbWVyKHJldiwgcC0+cmVhZF90aW1lb3V0KTsKKworICAgICAgICB9IGVsc2UgaWYgKHJldi0+dGltZXJfc2V0KSB7CisgICAgICAgICAgICBuZ3hfZGVsX3RpbWVyKHJldik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcxLDggKzc0LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gTkdYX0FCT1JUOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHdldi0+YWN0aXZlICYmICF3ZXYtPnJlYWR5ICYmICF3ZXYtPmRlbGF5ZWQpIHsKLSAgICAgICAgICAgIG5neF9hZGRfdGltZXIod2V2LCBwLT5zZW5kX3RpbWVvdXQpOworICAgICAgICBpZiAoIXdldi0+ZGVsYXllZCkgeworICAgICAgICAgICAgaWYgKHdldi0+YWN0aXZlICYmICF3ZXYtPnJlYWR5KSB7CisgICAgICAgICAgICAgICAgbmd4X2FkZF90aW1lcih3ZXYsIHAtPnNlbmRfdGltZW91dCk7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2V2LT50aW1lcl9zZXQpIHsKKyAgICAgICAgICAgICAgICBuZ3hfZGVsX3RpbWVyKHdldik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZW1wdHlfZ2lmX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9lbXB0eV9naWZfbW9kdWxlLmMKaW5kZXggYzdhZjEyMS4uZDcyOTgzYSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9lbXB0eV9naWZfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9lbXB0eV9naWZfbW9kdWxlLmMKQEAgLTE0OCw3ICsxNDgsNyBAQAogICAgIGItPmxhc3RfYnVmID0gMTsKIAogICAgIHItPmhlYWRlcnNfb3V0LnN0YXR1cyA9IE5HWF9IVFRQX09LOwotICAgIHItPmhlYWRlcnNfb3V0LmNvbnRlbnRfbGVuZ3RoX24gPSBiLT5sYXN0IC0gYi0+cG9zOworICAgIHItPmhlYWRlcnNfb3V0LmNvbnRlbnRfbGVuZ3RoX24gPSBzaXplb2Yobmd4X2VtcHR5X2dpZik7CiAgICAgci0+aGVhZGVyc19vdXQubGFzdF9tb2RpZmllZF90aW1lID0gMjMzNDk2MDA7CiAKICAgICByYyA9IG5neF9odHRwX3NlbmRfaGVhZGVyKHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yZWZlcmVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yZWZlcmVyX21vZHVsZS5jCmluZGV4IDRlYWMyNjMuLjNhZDQxOWIgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmVmZXJlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3JlZmVyZXJfbW9kdWxlLmMKQEAgLTMzNCw2ICszMzQsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgdXJpLmxlbiA9IDA7CisgICAgICAgIHVyaS5kYXRhID0gTlVMTDsKIAogICAgICAgICBpZiAobmd4X3N0cmNtcCh2YWx1ZVtpXS5kYXRhLCAic2VydmVyX25hbWVzIikgPT0gMCkgewogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL3BlcmwvbmdpbngueHMgYi9zcmMvaHR0cC9tb2R1bGVzL3BlcmwvbmdpbngueHMKaW5kZXggYzI0Nzg4Yy4uMmQ3ZWRlMCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9wZXJsL25naW54LnhzCisrKyBiL3NyYy9odHRwL21vZHVsZXMvcGVybC9uZ2lueC54cwpAQCAtNDE1LDkgKzQxNSwxMSBAQAogCiAKIGludAotc2VuZGZpbGUociwgZmlsZW5hbWUpCitzZW5kZmlsZShyLCBmaWxlbmFtZSwgb2Zmc2V0ID0gLTEsIGJ5dGVzID0gMCkKICAgICBuZ2lueCAgICAgICAgICAgICAgICAgICAgIHIKICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgKmZpbGVuYW1lCisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ7CisgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgICBieXRlczsKIAogICAgIFBSRUlOSVQ6CiAKQEAgLTQ2MCwxNyArNDYyLDI2IEBACiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKLSAgICBpZiAobmd4X2ZkX2luZm8oZmQsICZmaSkgPT0gTkdYX0ZJTEVfRVJST1IpIHsKLSAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0NSSVQsIHItPmNvbm5lY3Rpb24tPmxvZywgbmd4X2Vycm5vLAotICAgICAgICAgICAgICAgICAgICAgIG5neF9mZF9pbmZvX24gIiBcIiVzXCIgZmFpbGVkIiwgZmlsZW5hbWUpOworICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKKyAgICAgICAgb2Zmc2V0ID0gMDsKKyAgICB9CiAKLSAgICAgICAgaWYgKG5neF9jbG9zZV9maWxlKGZkKSA9PSBOR1hfRklMRV9FUlJPUikgewotICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCByLT5jb25uZWN0aW9uLT5sb2csIG5neF9lcnJubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X2Nsb3NlX2ZpbGVfbiAiIFwiJXNcIiBmYWlsZWQiLCBmaWxlbmFtZSk7CisgICAgaWYgKGJ5dGVzID09IDApIHsKKyAgICAgICAgaWYgKG5neF9mZF9pbmZvKGZkLCAmZmkpID09IE5HWF9GSUxFX0VSUk9SKSB7CisgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQ1JJVCwgci0+Y29ubmVjdGlvbi0+bG9nLCBuZ3hfZXJybm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9mZF9pbmZvX24gIiBcIiVzXCIgZmFpbGVkIiwgZmlsZW5hbWUpOworCisgICAgICAgICAgICBpZiAobmd4X2Nsb3NlX2ZpbGUoZmQpID09IE5HWF9GSUxFX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCByLT5jb25uZWN0aW9uLT5sb2csIG5neF9lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9jbG9zZV9maWxlX24gIiBcIiVzXCIgZmFpbGVkIiwgZmlsZW5hbWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSRVRWQUwgPSBOR1hfRVJST1I7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisKICAgICAgICAgfQogCi0gICAgICAgIFJFVFZBTCA9IE5HWF9FUlJPUjsKLSAgICAgICAgZ290byBkb25lOworICAgICAgICBieXRlcyA9IG5neF9maWxlX3NpemUoJmZpKSAtIG9mZnNldDsKICAgICB9CiAKICAgICBjbG4tPmhhbmRsZXIgPSBuZ3hfcG9vbF9jbGVhbnVwX2ZpbGU7CkBAIC00ODEsOCArNDkyLDkgQEAKICAgICBjbG5mLT5sb2cgPSByLT5wb29sLT5sb2c7CiAKICAgICBiLT5pbl9maWxlID0gMTsKLSAgICBiLT5maWxlX3BvcyA9IDA7Ci0gICAgYi0+ZmlsZV9sYXN0ID0gbmd4X2ZpbGVfc2l6ZSgmZmkpOworCisgICAgYi0+ZmlsZV9wb3MgPSBvZmZzZXQ7CisgICAgYi0+ZmlsZV9sYXN0ID0gb2Zmc2V0ICsgYnl0ZXM7CiAKICAgICBiLT5maWxlLT5mZCA9IGZkOwogICAgIGItPmZpbGUtPmxvZyA9IHItPmNvbm5lY3Rpb24tPmxvZzsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cC5jCmluZGV4IDYyMTFmMGUuLjdmMTlhNDMgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHAuYwpAQCAtNTM0LDcgKzUzNCw2IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGNoZWNrIHdoZXRoZXIgYWxsIG5hbWUtYmFzZWQgc2VydmVycyBoYXZlIHRoZSBzYW1lIGNvbmZpZ3VyYWl0b24KICAgICAgICAgICogICAgIGFzIHRoZSBkZWZhdWx0IHNlcnZlciwKLSAgICAgICAgICogb3Igc29tZSBzZXJ2ZXJzIHJlc3RyaWN0IHRoZSBob3N0IG5hbWVzLAogICAgICAgICAgKiBvciBzb21lIHNlcnZlcnMgZGlzYWJsZSBvcHRpbWl6aW5nIHRoZSBzZXJ2ZXIgbmFtZXMKICAgICAgICAgICovCiAKQEAgLTU0NSw5ICs1NDQsNyBAQAogICAgICAgICAgICAgZm9yIChzID0gMDsgcyA8IGluX2FkZHJbYV0ubmFtZXMubmVsdHM7IHMrKykgewogCiAgICAgICAgICAgICAgICAgaWYgKGluX2FkZHJbYV0uY29yZV9zcnZfY29uZiAhPSBuYW1lW3NdLmNvcmVfc3J2X2NvbmYKLSAgICAgICAgICAgICAgICAgICAgfHwgbmFtZVtzXS5jb3JlX3Nydl9jb25mLT5vcHRpbWl6ZV9zZXJ2ZXJfbmFtZXMgPT0gMAotICAgICAgICAgICAgICAgICAgICB8fCBuYW1lW3NdLmNvcmVfc3J2X2NvbmYtPnJlc3RyaWN0X2hvc3RfbmFtZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIT0gTkdYX0hUVFBfUkVTVFJJQ1RfSE9TVF9PRkYpCisgICAgICAgICAgICAgICAgICAgIHx8IG5hbWVbc10uY29yZV9zcnZfY29uZi0+b3B0aW1pemVfc2VydmVyX25hbWVzID09IDApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBnb3RvIHZpcnR1YWxfbmFtZXM7CiAgICAgICAgICAgICAgICAgfQpAQCAtNTU2LDcgKzU1Myw2IEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogaWYgYWxsIG5hbWUtYmFzZWQgc2VydmVycyBoYXZlIHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAqICAgICAgICAgYXMgdGhlIGRlZmF1bHQgc2VydmVyLAotICAgICAgICAgICAgICogICAgIGFuZCBubyBzZXJ2ZXJzIHJlc3RyaWN0IHRoZSBob3N0IG5hbWVzLAogICAgICAgICAgICAgICogICAgIGFuZCBubyBzZXJ2ZXJzIGRpc2FibGUgb3B0aW1pemluZyB0aGUgc2VydmVyIG5hbWVzCiAgICAgICAgICAgICAgKiB0aGVuIHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZW0gYXQgcnVuLXRpbWUgYXQgYWxsCiAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jCmluZGV4IDFiYzQzZGUuLmRhMTQyYzMgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYwpAQCAtNjcsMTQgKzY3LDYgQEAKIH07CiAKIAotc3RhdGljIG5neF9jb25mX2VudW1fdCAgbmd4X2h0dHBfcmVzdHJpY3RfaG9zdF9uYW1lc1tdID0gewotICAgIHsgbmd4X3N0cmluZygib2ZmIiksIE5HWF9IVFRQX1JFU1RSSUNUX0hPU1RfT0ZGIH0sCi0gICAgeyBuZ3hfc3RyaW5nKCJvbiIpLCBOR1hfSFRUUF9SRVNUUklDVF9IT1NUX09OIH0sCi0gICAgeyBuZ3hfc3RyaW5nKCJjbG9zZSIpLCBOR1hfSFRUUF9SRVNUUklDVF9IT1NUX0NMT1NFIH0sCi0gICAgeyBuZ3hfbnVsbF9zdHJpbmcsIDAgfQotfTsKLQotCiBzdGF0aWMgbmd4X2NvbW1hbmRfdCAgbmd4X2h0dHBfY29yZV9jb21tYW5kc1tdID0gewogCiAgICAgeyBuZ3hfc3RyaW5nKCJ2YXJpYWJsZXNfaGFzaF9tYXhfc2l6ZSIpLApAQCAtMTQ3LDEzICsxMzksNiBAQAogICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfY29yZV9zcnZfY29uZl90LCBsYXJnZV9jbGllbnRfaGVhZGVyX2J1ZmZlcnMpLAogICAgICAgTlVMTCB9LAogCi0gICAgeyBuZ3hfc3RyaW5nKCJyZXN0cmljdF9ob3N0X25hbWVzIiksCi0gICAgICBOR1hfSFRUUF9NQUlOX0NPTkZ8TkdYX0hUVFBfU1JWX0NPTkZ8TkdYX0NPTkZfVEFLRTEsCi0gICAgICBuZ3hfY29uZl9zZXRfZW51bV9zbG90LAotICAgICAgTkdYX0hUVFBfU1JWX0NPTkZfT0ZGU0VULAotICAgICAgb2Zmc2V0b2Yobmd4X2h0dHBfY29yZV9zcnZfY29uZl90LCByZXN0cmljdF9ob3N0X25hbWVzKSwKLSAgICAgICZuZ3hfaHR0cF9yZXN0cmljdF9ob3N0X25hbWVzIH0sCi0KICAgICB7IG5neF9zdHJpbmcoIm9wdGltaXplX3NlcnZlcl9uYW1lcyIpLAogICAgICAgTkdYX0hUVFBfTUFJTl9DT05GfE5HWF9IVFRQX1NSVl9DT05GfE5HWF9DT05GX0ZMQUcsCiAgICAgICBuZ3hfY29uZl9zZXRfZmxhZ19zbG90LApAQCAtNzQ3LDcgKzczMiw5IEBACiAgICAgICAgIHItPmNvbm5lY3Rpb24tPnRjcF9ub3B1c2ggPSBOR1hfVENQX05PUFVTSF9ESVNBQkxFRDsKICAgICB9CiAKLSAgICByLT5saW1pdF9yYXRlID0gY2xjZi0+bGltaXRfcmF0ZTsKKyAgICBpZiAoci0+bGltaXRfcmF0ZSA9PSAwKSB7CisgICAgICAgIHItPmxpbWl0X3JhdGUgPSBjbGNmLT5saW1pdF9yYXRlOworICAgIH0KIAogICAgIGlmIChjbGNmLT5oYW5kbGVyKSB7CiAgICAgICAgIHItPmNvbnRlbnRfaGFuZGxlciA9IGNsY2YtPmhhbmRsZXI7CkBAIC0xODc5LDcgKzE4NjYsNiBAQAogICAgIGNzY2YtPnJlcXVlc3RfcG9vbF9zaXplID0gTkdYX0NPTkZfVU5TRVRfU0laRTsKICAgICBjc2NmLT5jbGllbnRfaGVhZGVyX3RpbWVvdXQgPSBOR1hfQ09ORl9VTlNFVF9NU0VDOwogICAgIGNzY2YtPmNsaWVudF9oZWFkZXJfYnVmZmVyX3NpemUgPSBOR1hfQ09ORl9VTlNFVF9TSVpFOwotICAgIGNzY2YtPnJlc3RyaWN0X2hvc3RfbmFtZXMgPSBOR1hfQ09ORl9VTlNFVF9VSU5UOwogICAgIGNzY2YtPm9wdGltaXplX3NlcnZlcl9uYW1lcyA9IE5HWF9DT05GX1VOU0VUOwogICAgIGNzY2YtPmlnbm9yZV9pbnZhbGlkX2hlYWRlcnMgPSBOR1hfQ09ORl9VTlNFVDsKIApAQCAtMTk2NSw5ICsxOTUxLDYgQEAKICAgICAgICAgcmV0dXJuIE5HWF9DT05GX0VSUk9SOwogICAgIH0KIAotICAgIG5neF9jb25mX21lcmdlX3Vuc2lnbmVkX3ZhbHVlKGNvbmYtPnJlc3RyaWN0X2hvc3RfbmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LT5yZXN0cmljdF9ob3N0X25hbWVzLCAwKTsKLQogICAgIG5neF9jb25mX21lcmdlX3ZhbHVlKGNvbmYtPm9wdGltaXplX3NlcnZlcl9uYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYtPm9wdGltaXplX3NlcnZlcl9uYW1lcywgMSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmggYi9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5oCmluZGV4IDZkODE1YTcuLjlmNWI2NWMgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmgKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuaApAQCAtMTEyLDggKzExMiw2IEBACiAKICAgICBuZ3hfbXNlY190ICAgICAgICAgICAgICAgICBjbGllbnRfaGVhZGVyX3RpbWVvdXQ7CiAKLSAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICByZXN0cmljdF9ob3N0X25hbWVzOwotCiAgICAgbmd4X2ZsYWdfdCAgICAgICAgICAgICAgICAgb3B0aW1pemVfc2VydmVyX25hbWVzOwogICAgIG5neF9mbGFnX3QgICAgICAgICAgICAgICAgIGlnbm9yZV9pbnZhbGlkX2hlYWRlcnM7CiB9IG5neF9odHRwX2NvcmVfc3J2X2NvbmZfdDsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwppbmRleCBhYTJiODVmLi5iOTc1MTVjIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCkBAIC0yNSw3ICsyNSw3IEBACiAgICAgbmd4X3RhYmxlX2VsdF90ICpoLCBuZ3hfdWludF90IG9mZnNldCk7CiAKIHN0YXRpYyBuZ3hfaW50X3Qgbmd4X2h0dHBfcHJvY2Vzc19yZXF1ZXN0X2hlYWRlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIpOwotc3RhdGljIG5neF9pbnRfdCBuZ3hfaHR0cF9maW5kX3ZpcnR1YWxfc2VydmVyKG5neF9odHRwX3JlcXVlc3RfdCAqcik7CitzdGF0aWMgdm9pZCBuZ3hfaHR0cF9maW5kX3ZpcnR1YWxfc2VydmVyKG5neF9odHRwX3JlcXVlc3RfdCAqcik7CiAKIHN0YXRpYyB2b2lkIG5neF9odHRwX3JlcXVlc3RfaGFuZGxlcihuZ3hfZXZlbnRfdCAqZXYpOwogc3RhdGljIG5neF9pbnRfdCBuZ3hfaHR0cF9zZXRfd3JpdGVfaGFuZGxlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIpOwpAQCAtMzksNiArMzksNyBAQAogc3RhdGljIHZvaWQgbmd4X2h0dHBfa2VlcGFsaXZlX2hhbmRsZXIobmd4X2V2ZW50X3QgKmV2KTsKIHN0YXRpYyB2b2lkIG5neF9odHRwX3NldF9saW5nZXJpbmdfY2xvc2Uobmd4X2h0dHBfcmVxdWVzdF90ICpyKTsKIHN0YXRpYyB2b2lkIG5neF9odHRwX2xpbmdlcmluZ19jbG9zZV9oYW5kbGVyKG5neF9ldmVudF90ICpldik7CitzdGF0aWMgbmd4X2ludF90IG5neF9odHRwX3Bvc3RfYWN0aW9uKG5neF9odHRwX3JlcXVlc3RfdCAqcik7CiBzdGF0aWMgdm9pZCBuZ3hfaHR0cF9jbG9zZV9yZXF1ZXN0KG5neF9odHRwX3JlcXVlc3RfdCAqciwgbmd4X2ludF90IGVycm9yKTsKIHN0YXRpYyB2b2lkIG5neF9odHRwX3JlcXVlc3RfZG9uZShuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIG5neF9pbnRfdCBlcnJvcik7CiBzdGF0aWMgdm9pZCBuZ3hfaHR0cF9jbG9zZV9jb25uZWN0aW9uKG5neF9jb25uZWN0aW9uX3QgKmMpOwpAQCAtMTE2NCw5ICsxMTY1LDggQEAKIHN0YXRpYyBuZ3hfaW50X3QKIG5neF9odHRwX3Byb2Nlc3NfcmVxdWVzdF9oZWFkZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyKQogewotICAgIHNpemVfdCAgICAgICAgICAgICAgICAgICAgICBsZW47Ci0gICAgdV9jaGFyICAgICAgICAgICAgICAgICAgICAgKnVhLCAqdXNlcl9hZ2VudCwgY2g7Ci0gICAgbmd4X2h0dHBfY29yZV9zcnZfY29uZl90ICAgKmNzY2Y7CisgICAgc2l6ZV90ICAgbGVuOworICAgIHVfY2hhciAgKnVhLCAqdXNlcl9hZ2VudCwgY2g7CiAKICAgICBpZiAoci0+aGVhZGVyc19pbi5ob3N0KSB7CiAgICAgICAgIGZvciAobGVuID0gMDsgbGVuIDwgci0+aGVhZGVyc19pbi5ob3N0LT52YWx1ZS5sZW47IGxlbisrKSB7CkBAIC0xMTg1LDIwICsxMTg1LDcgQEAKIAogICAgICAgICByLT5oZWFkZXJzX2luLmhvc3RfbmFtZV9sZW4gPSBsZW47CiAKLSAgICAgICAgaWYgKG5neF9odHRwX2ZpbmRfdmlydHVhbF9zZXJ2ZXIocikgIT0gTkdYX09LKSB7Ci0gICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xpZW50IHNlbnQgaW52YWxpZCBcIkhvc3RcIiBoZWFkZXIiKTsKLQotICAgICAgICAgICAgY3NjZiA9IG5neF9odHRwX2dldF9tb2R1bGVfc3J2X2NvbmYociwgbmd4X2h0dHBfY29yZV9tb2R1bGUpOwotCi0gICAgICAgICAgICBpZiAoY3NjZi0+cmVzdHJpY3RfaG9zdF9uYW1lcyA9PSBOR1hfSFRUUF9SRVNUUklDVF9IT1NUX0NMT1NFKSB7Ci0gICAgICAgICAgICAgICAgbmd4X2h0dHBfY2xvc2VfcmVxdWVzdChyLCBOR1hfSFRUUF9CQURfUkVRVUVTVCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmd4X2h0dHBfZmluYWxpemVfcmVxdWVzdChyLCBOR1hfSFRUUF9JTlZBTElEX0hPU1QpOwotICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKLSAgICAgICAgfQorICAgICAgICBuZ3hfaHR0cF9maW5kX3ZpcnR1YWxfc2VydmVyKHIpOwogCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHItPmh0dHBfdmVyc2lvbiA+IE5HWF9IVFRQX1ZFUlNJT05fMTApIHsKQEAgLTEzMTYsNyArMTMwMyw3IEBACiB9CiAKIAotc3RhdGljIG5neF9pbnRfdAorc3RhdGljIHZvaWQKIG5neF9odHRwX2ZpbmRfdmlydHVhbF9zZXJ2ZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyKQogewogICAgIHNpemVfdCAgICAgICAgICAgICAgICAgICAgIGxlbjsKQEAgLTEzMjgsNyArMTMxNSw3IEBACiAgICAgdm4gPSByLT52aXJ0dWFsX25hbWVzOwogCiAgICAgaWYgKHZuID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIE5HWF9PSzsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGhvc3QgPSByLT5oZWFkZXJzX2luLmhvc3QtPnZhbHVlLmRhdGE7CkBAIC0xMzUxLDEzICsxMzM4LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGNzY2YgPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX3Nydl9jb25mKHIsIG5neF9odHRwX2NvcmVfbW9kdWxlKTsKLQotICAgIGlmIChjc2NmLT5yZXN0cmljdF9ob3N0X25hbWVzID09IE5HWF9IVFRQX1JFU1RSSUNUX0hPU1RfT0ZGKSB7Ci0gICAgICAgIHJldHVybiBOR1hfT0s7Ci0gICAgfQotCi0gICAgcmV0dXJuIE5HWF9FUlJPUjsKKyAgICByZXR1cm47CiAKIGZvdW5kOgogCkBAIC0xMzc0LDcgKzEzNTUsNyBAQAogICAgICAgICByLT5jb25uZWN0aW9uLT5sb2ctPmxvZ19sZXZlbCA9IGNsY2YtPmVycl9sb2ctPmxvZ19sZXZlbDsKICAgICB9CiAKLSAgICByZXR1cm4gTkdYX09LOworICAgIHJldHVybjsKIH0KIAogCkBAIC0xNDExLDcgKzEzOTIsMTUgQEAKICAgICAgICAgICAgICAgICAgICAiaHR0cCBmaW5hbGl6ZSByZXF1ZXN0OiAlZCwgXCIlVj8lVlwiIiwKICAgICAgICAgICAgICAgICAgICByYywgJnItPnVyaSwgJnItPmFyZ3MpOwogCi0gICAgaWYgKHJjID09IE5HWF9FUlJPUiB8fCByLT5jb25uZWN0aW9uLT5lcnJvcikgeworICAgIGlmIChyYyA9PSBOR1hfRVJST1IKKyAgICAgICAgfHwgcmMgPT0gTkdYX0hUVFBfUkVRVUVTVF9USU1FX09VVAorICAgICAgICB8fCByLT5jb25uZWN0aW9uLT5lcnJvcikKKyAgICB7CisKKyAgICAgICAgaWYgKG5neF9odHRwX3Bvc3RfYWN0aW9uKHIpID09IE5HWF9PSykgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgbmd4X2h0dHBfY2xvc2VfcmVxdWVzdChyLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1MTUsMTIgKzE1MDQsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2xjZiA9IG5neF9odHRwX2dldF9tb2R1bGVfbG9jX2NvbmYociwgbmd4X2h0dHBfY29yZV9tb2R1bGUpOwotCi0gICAgaWYgKGNsY2YtPnBvc3RfYWN0aW9uLmRhdGEpIHsKLSAgICAgICAgci0+aHR0cF92ZXJzaW9uID0gTkdYX0hUVFBfVkVSU0lPTl85OwotICAgICAgICByLT5oZWFkZXJfb25seSA9IDE7Ci0gICAgICAgIG5neF9odHRwX2ludGVybmFsX3JlZGlyZWN0KHIsICZjbGNmLT5wb3N0X2FjdGlvbiwgTlVMTCk7CisgICAgaWYgKG5neF9odHRwX3Bvc3RfYWN0aW9uKHIpID09IE5HWF9PSykgewogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTM3LDE3ICsxNTIxLDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIDAKLSAgICBpZiAoci0+Y29ubmVjdGlvbi0+cmVhZC0+cGVuZGluZ19lb2YpIHsKLSNpZiAoTkdYX0hBVkVfS1FVRVVFKQotICAgICAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0hUVFAsIHItPmNvbm5lY3Rpb24tPmxvZywKLSAgICAgICAgICAgICAgICAgICAgICAgci0+Y29ubmVjdGlvbi0+cmVhZC0+a3FfZXJybm8sCi0gICAgICAgICAgICAgICAgICAgICAgICJrZXZlbnQoKSByZXBvcnRlZCBhYm91dCBhbiBjbG9zZWQgY29ubmVjdGlvbiIpOwotI2VuZGlmCi0gICAgICAgIG5neF9odHRwX2Nsb3NlX3JlcXVlc3QociwgMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKKyAgICBjbGNmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9sb2NfY29uZihyLCBuZ3hfaHR0cF9jb3JlX21vZHVsZSk7CiAKICAgICBpZiAoIW5neF90ZXJtaW5hdGUKICAgICAgICAgICYmICFuZ3hfZXhpdGluZwpAQCAtMTYxNiw3ICsxNTkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCB0aW1lZCBvdXQiKTsKICAgICAgICAgICAgIGMtPnRpbWVkb3V0ID0gMTsKIAotICAgICAgICAgICAgbmd4X2h0dHBfY2xvc2VfcmVxdWVzdChyLCBOR1hfSFRUUF9SRVFVRVNUX1RJTUVfT1VUKTsKKyAgICAgICAgICAgIG5neF9odHRwX2ZpbmFsaXplX3JlcXVlc3QociwgTkdYX0hUVFBfUkVRVUVTVF9USU1FX09VVCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI2NSw3ICsyMjM5LDI3IEBACiB9CiAKIAotdm9pZAorc3RhdGljIG5neF9pbnRfdAorbmd4X2h0dHBfcG9zdF9hY3Rpb24obmd4X2h0dHBfcmVxdWVzdF90ICpyKQoreworICAgIG5neF9odHRwX2NvcmVfbG9jX2NvbmZfdCAgKmNsY2Y7CisKKyAgICBjbGNmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9sb2NfY29uZihyLCBuZ3hfaHR0cF9jb3JlX21vZHVsZSk7CisKKyAgICBpZiAoY2xjZi0+cG9zdF9hY3Rpb24uZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOR1hfREVDTElORUQ7CisgICAgfQorCisgICAgci0+aHR0cF92ZXJzaW9uID0gTkdYX0hUVFBfVkVSU0lPTl85OworICAgIHItPmhlYWRlcl9vbmx5ID0gMTsKKworICAgIG5neF9odHRwX2ludGVybmFsX3JlZGlyZWN0KHIsICZjbGNmLT5wb3N0X2FjdGlvbiwgTlVMTCk7CisKKyAgICByZXR1cm4gTkdYX09LOworfQorCisKK3N0YXRpYyB2b2lkCiBuZ3hfaHR0cF9jbG9zZV9yZXF1ZXN0KG5neF9odHRwX3JlcXVlc3RfdCAqciwgbmd4X2ludF90IGVycm9yKQogewogICAgIG5neF9jb25uZWN0aW9uX3QgICAgKmM7CkBAIC0yMjg1LDcgKzIyNzksNyBAQAogfQogCiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBuZ3hfaHR0cF9yZXF1ZXN0X2RvbmUobmd4X2h0dHBfcmVxdWVzdF90ICpyLCBuZ3hfaW50X3QgZXJyb3IpCiB7CiAgICAgbmd4X2xvZ190ICAgICAgICAgICAgICAgICAgKmxvZzsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaCBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaAppbmRleCA5ZjRhZTIxLi5mYWNkNThlIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmgKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oCkBAIC03NywxMSArNzcsNyBAQAogICovCiAjZGVmaW5lIE5HWF9IVFRQX1RPX0hUVFBTICAgICAgICAgICAgICAgICAgNDk3CiAKLS8qCi0gKiBXZSB1c2UgdGhlIHNwZWNpYWwgY29kZSBmb3IgdGhlIHJlcXVlc3RzIHdpdGggaW52YWxpZCBob3N0IG5hbWUKLSAqIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gNFhYIGluIGFuIGVycm9yIHBhZ2UgcmVkaXJlY3Rpb24KLSAqLwotI2RlZmluZSBOR1hfSFRUUF9JTlZBTElEX0hPU1QgICAgICAgICAgICAgIDQ5OAorLyogNDk4IGlzIHRoZSBjYW5jZWxlZCBjb2RlIGZvciB0aGUgcmVxdWVzdHMgd2l0aCBpbnZhbGlkIGhvc3QgbmFtZSAqLwogCiAvKgogICogSFRUUCBkb2VzIG5vdCBkZWZpbmUgdGhlIGNvZGUgZm9yIHRoZSBjYXNlIHdoZW4gYSBjbGllbnQgY2xvc2VkCkBAIC0xMDcsMTMgKzEwMyw2IEBACiAKIAogdHlwZWRlZiBlbnVtIHsKLSAgICBOR1hfSFRUUF9SRVNUUklDVF9IT1NUX09GRiA9IDAsCi0gICAgTkdYX0hUVFBfUkVTVFJJQ1RfSE9TVF9PTiwKLSAgICBOR1hfSFRUUF9SRVNUUklDVF9IT1NUX0NMT1NFCi19IG5neF9odHRwX3Jlc3RyaWN0X2hvc3RfZTsKLQotCi10eXBlZGVmIGVudW0gewogICAgIE5HWF9IVFRQX0lOSVRJTkdfUkVRVUVTVF9TVEFURSA9IDAsCiAgICAgTkdYX0hUVFBfUkVBRElOR19SRVFVRVNUX1NUQVRFLAogICAgIE5HWF9IVFRQX1BST0NFU1NfUkVRVUVTVF9TVEFURSwKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3NwZWNpYWxfcmVzcG9uc2UuYyBiL3NyYy9odHRwL25neF9odHRwX3NwZWNpYWxfcmVzcG9uc2UuYwppbmRleCA2M2EzYTM0Li40YmI0MmNkIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9zcGVjaWFsX3Jlc3BvbnNlLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfc3BlY2lhbF9yZXNwb25zZS5jCkBAIC0zNDMsMTEgKzM0Myw2IEBACiAgICAgICAgICAgICAgICAgci0+aGVhZGVyc19vdXQuc3RhdHVzID0gTkdYX0hUVFBfQkFEX1JFUVVFU1Q7CiAgICAgICAgICAgICAgICAgZXJyb3IgPSBOR1hfSFRUUF9CQURfUkVRVUVTVDsKICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSBOR1hfSFRUUF9JTlZBTElEX0hPU1Q6Ci0gICAgICAgICAgICAgICAgci0+aGVhZGVyc19vdXQuc3RhdHVzID0gTkdYX0hUVFBfTk9UX0ZPVU5EOwotICAgICAgICAgICAgICAgIGVycm9yID0gTkdYX0hUVFBfTk9UX0ZPVU5EOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYwppbmRleCA5YWZhNGQ1Li5jYjU1MjgzIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmMKQEAgLTEyMDksNyArMTIwOSwxMCBAQAogCiAgICAgcmMgPSBuZ3hfaHR0cF9zZW5kX2hlYWRlcihyKTsKIAotICAgIGlmIChyYyA9PSBOR1hfRVJST1IgfHwgcmMgPiBOR1hfT0spIHsKKyAgICBpZiAocmMgPT0gTkdYX0VSUk9SCisgICAgICAgIHx8IHJjID4gTkdYX09LCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvc3RfYWN0aW9uICovCisgICAgICAgIHx8IChyLT5odHRwX3ZlcnNpb24gPT0gTkdYX0hUVFBfVkVSU0lPTl85ICYmIHItPmhlYWRlcl9vbmx5KSkgewogICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9maW5hbGl6ZV9yZXF1ZXN0KHIsIHUsIHJjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9hdG9taWMuaCBiL3NyYy9vcy91bml4L25neF9hdG9taWMuaAppbmRleCBjNTA1MDI3Li43OTE5ODI2IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfYXRvbWljLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X2F0b21pYy5oCkBAIC0xMTUsNyArMTE1LDcgQEAKICNlbmRpZgogCiAKLSNlbGlmICggX19wcGNfXyB8fCBfX3Bvd2VycGNfXyApCisjZWxpZiAoIF9fcG93ZXJwY19fIHx8IF9fUE9XRVJQQ19fICkKIAogI2RlZmluZSBOR1hfSEFWRV9BVE9NSUNfT1BTICAxCiAKZGlmZiAtLWdpdCBhL3NyYy9vcy93aW4zMi9uZ3hfd2luMzJfY29uZmlnLmggYi9zcmMvb3Mvd2luMzIvbmd4X3dpbjMyX2NvbmZpZy5oCmluZGV4IGYyYzdhMDYuLjhkZjA1ODYgMTAwNjQ0Ci0tLSBhL3NyYy9vcy93aW4zMi9uZ3hfd2luMzJfY29uZmlnLmgKKysrIGIvc3JjL29zL3dpbjMyL25neF93aW4zMl9jb25maWcuaApAQCAtMTI1LDYgKzEyNSw3IEBACiB0eXBlZGVmIGludCAgICAgICAgICAgICAgIHNpZ19hdG9taWNfdDsKIAogCisjZGVmaW5lIE5HWF9QVFJfU0laRSAgICAgICAgICAgIDQKICNkZWZpbmUgTkdYX1NJWkVfVF9MRU4gICAgICAgICAgc2l6ZW9mKCItMjE0NzQ4MzY0OCIpIC0gMQogI2RlZmluZSBOR1hfTUFYX1NJWkVfVF9WQUxVRQkyMTQ3NDgzNjQ3CiAjZGVmaW5lIE5HWF9USU1FX1RfTEVOICAgICAgICAgIHNpemVvZigiLTIxNDc0ODM2NDgiKSAtIDEK