ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggOTA5YjRjYi4uMWQ0MDFmOCAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSw2OSBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4xLjMwIiBkYXRlPSIxNC4wNS4yMDA1Ij4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgor0NLJIMnT0M/M2NrP18HOyckgU1NJINLBws/eycog0NLPw8XT0yDNz8cg2sHDycvMydTY09EuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgd29ya2VyIHByb2Nlc3MgbWF5IGdvdCBjYXVnaHQgaW4gYW4gZW5kbGVzcyBsb29wIGlmIHRoZSBTU0kgd2FzIHVzZWQuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgor0NLJIMnT0M/M2NrP18HOyckgU1NMIM/U18XUIM3PxyDQxdLFxMHXwdTY09EgzsUgxM8gy8/Ow8EuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgcmVzcG9uc2UgZW5jcnlwdGVkIGJ5IFNTTCBtYXkgbm90IHRyYW5zZmVycmVkIGNvbXBsZXRlLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK8XTzMkgxMzJzsEg3sHT1Mkgz9TXxdTBLCDQz8zV3sXOzs/HzyDawSDPxMnOINLB2iDP1CDQ0s/L08nS1cXNz8fPIMnMyQorRmFzdENHSSDTxdLXxdLBIMLZzMEg0sHXzsEgNTAwIMLBytQsINTPIG5naW54INfP2tfSwd3BzCDLz8Qgz9TXxdTBIDUwMDsKK9cg0sXWyc3FINDSz8vTySDP28nCy8Eg0M/R18nMwdPYINTPzNjLzyDXIDAuMS4yOS4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK2lmIHRoZSBsZW5ndGggb2YgdGhlIHJlc3BvbnNlIHBhcnQgcmVjZWl2ZWQgYXQgb25jZSBmcm9tIHByb3hpZWQKK29yIEZhc3RDR0kgc2VydmVyIHdhcyBlcXVhbCB0byA1MDAsIHRoZW4gbmdpbnggcmV0dXJucyB0aGUgNTAwIHJlc3BvbnNlIGNvZGU7CitpbiBwcm94eSBtb2RlIHRoZSBidWcgYXBwZWFyZWQgaW4gMC4xLjI5IG9ubHkuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorbmdpbnggzsUg097J1MHMIM7F18XSztnNySDEydLFy9TJ19kg0yA4LcAgyczJIDktwCDQwdLBzcXU0sHNyS4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK25naW54IGRpZCBub3QgY29uc2lkZXIgdGhlIGRpcmVjdGl2ZXMgd2l0aCA4IG9yIDkgcGFyYW1ldGVycyBhcyBpbnZhbGlkLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+Cis8cGFyYSBsYW5nPSJydSI+CivEydLFy9TJ18EgcmV0dXJuIM3P1sXUINfP2tfSwd3B1Nggy8/EIM/U18XUwSAyMDQuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgInJldHVybiIgZGlyZWN0aXZlIGNhbiByZXR1cm4gdGhlIDIwNCByZXNwb25zZSBjb2RlLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+Cis8cGFyYSBsYW5nPSJydSI+CivEydLFy9TJ18EgaWdub3JlX2ludmFsaWRfaGVhZGVycy4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSAiaWdub3JlX2ludmFsaWRfaGVhZGVycyIgZGlyZWN0aXZlLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzwvY2hhbmdlcz4KKworCiA8Y2hhbmdlcyB2ZXI9IjAuMS4yOSIgZGF0ZT0iMTIuMDUuMjAwNSI+CiAKIDxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+CkBAIC0xNTksMTIgKzIyMiwxMiBAQAogCiA8Y2hhbmdlIHR5cGU9ImNoYW5nZSI+CiA8cGFyYSBsYW5nPSJydSI+Ci3EydLFy9TJ19kgZmFzdGNnaV9zZXRfdmFyIMkgZmFzdGNnaV9wYXJhbXMg1dDSwdrEzsXO2SDJIMTPzNbO2SDC2dTYCi3awc3FztkgxMnSxcvUydfBzckgZmFzdGNnaV9wYXJhbS4KK8TJ0sXL1MnX2SBmYXN0Y2dpX3Jvb3QsIGZhc3RjZ2lfc2V0X3ZhciDJIGZhc3RjZ2lfcGFyYW1zINXQ0sHaxM7FztkKK8kgxM/M1s7ZIMLZ1Ngg2sHNxc7ZIMTJ0sXL1MnXwc3JIGZhc3RjZ2lfcGFyYW0uCiA8L3BhcmE+CiA8cGFyYSBsYW5nPSJlbiI+Ci10aGUgImZhc3RjZ2lfc2V0X3ZhciIgYW5kICJmYXN0Y2dpX3BhcmFtcyIgZGlyZWN0aXZlIGFyZSBjYW5jZWxlZCBhbmQKLW11c3QgYmUgcmVwbGFjZWQgd2l0aCB0aGUgZmFzdGNnaV9wYXJhbSBkaXJlY3RpdmVzLgordGhlICJmYXN0Y2dpX3Jvb3QiLCAiZmFzdGNnaV9zZXRfdmFyIiBhbmQgImZhc3RjZ2lfcGFyYW1zIiBkaXJlY3RpdmUKK2FyZSBjYW5jZWxlZCBhbmQgbXVzdCBiZSByZXBsYWNlZCB3aXRoIHRoZSBmYXN0Y2dpX3BhcmFtIGRpcmVjdGl2ZXMuCiA8L3BhcmE+CiA8L2NoYW5nZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmdpbnguaCBiL3NyYy9jb3JlL25naW54LmgKaW5kZXggNGQyN2E4Ny4uZGMxZTE0MyAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmdpbnguaAorKysgYi9zcmMvY29yZS9uZ2lueC5oCkBAIC04LDcgKzgsNyBAQAogI2RlZmluZSBfTkdJTlhfSF9JTkNMVURFRF8KIAogCi0jZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4xLjI5IgorI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS4zMCIKIAogI2RlZmluZSBOR0lOWF9WQVIgICAgICAgICAgIk5HSU5YIgogI2RlZmluZSBOR1hfTkVXUElEX0VYVCAgICAgIi5uZXdiaW4iCmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ3hfY29uZl9maWxlLmMgYi9zcmMvY29yZS9uZ3hfY29uZl9maWxlLmMKaW5kZXggYjliMjIwMC4uNDIxNDNiZCAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmd4X2NvbmZfZmlsZS5jCisrKyBiL3NyYy9jb3JlL25neF9jb25mX2ZpbGUuYwpAQCAtMjYzLDcgKzI2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2YtPmFyZ3MtPm5lbHRzIDw9IDEwCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjZi0+YXJncy0+bmVsdHMgPD0gTkdYX0NPTkZfTUFYX0FSR1MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChjbWQtPnR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIGFyZ3VtZW50X251bWJlcltjZi0+YXJncy0+bmVsdHMgLSAxXSkpCiAgICAgICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X2NvbmZfZmlsZS5oIGIvc3JjL2NvcmUvbmd4X2NvbmZfZmlsZS5oCmluZGV4IDg5OWYwNDYuLjFmNGU3MmMgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9jb25mX2ZpbGUuaAorKysgYi9zcmMvY29yZS9uZ3hfY29uZl9maWxlLmgKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgTkdYX0NPTkZfVEFLRTYgICAgICAgMHgwMDAwMDA0MAogI2RlZmluZSBOR1hfQ09ORl9UQUtFNyAgICAgICAweDAwMDAwMDgwCiAKKyNkZWZpbmUgTkdYX0NPTkZfTUFYX0FSR1MgICAgOAorCiAjZGVmaW5lIE5HWF9DT05GX1RBS0UxMiAgICAgIChOR1hfQ09ORl9UQUtFMXxOR1hfQ09ORl9UQUtFMikKICNkZWZpbmUgTkdYX0NPTkZfVEFLRTEzICAgICAgKE5HWF9DT05GX1RBS0UxfE5HWF9DT05GX1RBS0UzKQogCmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbmd4X2V2ZW50X29wZW5zc2wuYyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5jCmluZGV4IGFmZGY0NjMuLjcwNTNmYTMgMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5jCisrKyBiL3NyYy9ldmVudC9uZ3hfZXZlbnRfb3BlbnNzbC5jCkBAIC0zNjEsOCArMzYxLDkgQEAKICAgICAgICAgICAgIHJldHVybiBOR1hfQ0hBSU5fRVJST1I7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgICAgIG4gPSAwOworICAgICAgICBpZiAobiA9PSBOR1hfQUdBSU4pIHsKKyAgICAgICAgICAgIGMtPmJ1ZmZlcmVkID0gMTsKKyAgICAgICAgICAgIHJldHVybiBpbjsKICAgICAgICAgfQogCiAgICAgICAgIGJ1Zi0+cG9zICs9IG47CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYwppbmRleCAxM2FhNDQwLi4yYTliM2I3IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMKQEAgLTE0NCw2ICsxNDQsMTMgQEAKICAgICAgIG9mZnNldG9mKG5neF9odHRwX2NvcmVfc3J2X2NvbmZfdCwgcmVzdHJpY3RfaG9zdF9uYW1lcyksCiAgICAgICAmbmd4X2h0dHBfcmVzdHJpY3RfaG9zdF9uYW1lcyB9LAogCisgICAgeyBuZ3hfc3RyaW5nKCJpZ25vcmVfaW52YWxpZF9oZWFkZXJzIiksCisgICAgICBOR1hfSFRUUF9NQUlOX0NPTkZ8TkdYX0hUVFBfU1JWX0NPTkZ8TkdYX0NPTkZfRkxBRywKKyAgICAgIG5neF9jb25mX3NldF9mbGFnX3Nsb3QsCisgICAgICBOR1hfSFRUUF9TUlZfQ09ORl9PRkZTRVQsCisgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9jb3JlX3Nydl9jb25mX3QsIGlnbm9yZV9pbnZhbGlkX2hlYWRlcnMpLAorICAgICAgTlVMTCB9LAorCiAgICAgeyBuZ3hfc3RyaW5nKCJsb2NhdGlvbiIpLAogICAgICAgTkdYX0hUVFBfU1JWX0NPTkZ8TkdYX0hUVFBfTE9DX0NPTkZ8TkdYX0NPTkZfQkxPQ0t8TkdYX0NPTkZfVEFLRTEyLAogICAgICAgbmd4X2h0dHBfY29yZV9sb2NhdGlvbiwKQEAgLTUwNSw3ICs1MTIsMTAgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHJjID49IE5HWF9IVFRQX1NQRUNJQUxfUkVTUE9OU0UgfHwgcmMgPT0gTkdYX0VSUk9SKSB7CisgICAgICAgICAgICBpZiAocmMgPj0gTkdYX0hUVFBfU1BFQ0lBTF9SRVNQT05TRQorICAgICAgICAgICAgICAgIHx8IHJjID09IE5HWF9IVFRQX05PX0NPTlRFTlQKKyAgICAgICAgICAgICAgICB8fCByYyA9PSBOR1hfRVJST1IpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbmd4X2h0dHBfZmluYWxpemVfcmVxdWVzdChyLCByYyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTU3OCw2ICsxNTg4LDcgQEAKICAgICBjc2NmLT5jbGllbnRfaGVhZGVyX3RpbWVvdXQgPSBOR1hfQ09ORl9VTlNFVF9NU0VDOwogICAgIGNzY2YtPmNsaWVudF9oZWFkZXJfYnVmZmVyX3NpemUgPSBOR1hfQ09ORl9VTlNFVF9TSVpFOwogICAgIGNzY2YtPnJlc3RyaWN0X2hvc3RfbmFtZXMgPSBOR1hfQ09ORl9VTlNFVF9VSU5UOworICAgIGNzY2YtPmlnbm9yZV9pbnZhbGlkX2hlYWRlcnMgPSBOR1hfQ09ORl9VTlNFVDsKIAogICAgIHJldHVybiBjc2NmOwogfQpAQCAtMTY2Myw2ICsxNjc0LDkgQEAKICAgICBuZ3hfY29uZl9tZXJnZV91bnNpZ25lZF92YWx1ZShjb25mLT5yZXN0cmljdF9ob3N0X25hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+cmVzdHJpY3RfaG9zdF9uYW1lcywgMCk7CiAKKyAgICBuZ3hfY29uZl9tZXJnZV92YWx1ZShjb25mLT5pZ25vcmVfaW52YWxpZF9oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+aWdub3JlX2ludmFsaWRfaGVhZGVycywgMSk7CisKICAgICByZXR1cm4gTkdYX0NPTkZfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmggYi9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5oCmluZGV4IDJiMmExZDAuLjQ2M2M2YjcgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmgKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuaApAQCAtODcsNiArODcsOCBAQAogICAgIG5neF9tc2VjX3QgICAgICAgICAgICAgICAgIGNsaWVudF9oZWFkZXJfdGltZW91dDsKIAogICAgIG5neF91aW50X3QgICAgICAgICAgICAgICAgIHJlc3RyaWN0X2hvc3RfbmFtZXM7CisKKyAgICBuZ3hfZmxhZ190ICAgICAgICAgICAgICAgICBpZ25vcmVfaW52YWxpZF9oZWFkZXJzOwogfSBuZ3hfaHR0cF9jb3JlX3Nydl9jb25mX3Q7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfaGVhZGVyX2ZpbHRlcl9tb2R1bGUuYyBiL3NyYy9odHRwL25neF9odHRwX2hlYWRlcl9maWx0ZXJfbW9kdWxlLmMKaW5kZXggYzFkMjZmYS4uZjNkZWZhMCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfaGVhZGVyX2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9oZWFkZXJfZmlsdGVyX21vZHVsZS5jCkBAIC00OCw3ICs0OCw3IEBACiAgICAgbmd4X251bGxfc3RyaW5nLCAgLyogIjIwMSBDcmVhdGVkIiAqLwogICAgIG5neF9udWxsX3N0cmluZywgIC8qICIyMDIgQWNjZXB0ZWQiICovCiAgICAgbmd4X251bGxfc3RyaW5nLCAgLyogIjIwMyBOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbiIgKi8KLSAgICBuZ3hfbnVsbF9zdHJpbmcsICAvKiAiMjA0IE5vIENvbnRlbnQiICovCisgICAgbmd4X3N0cmluZygiMjA0IE5vIENvbnRlbnQiKSwKICAgICBuZ3hfbnVsbF9zdHJpbmcsICAvKiAiMjA1IFJlc2V0IENvbnRlbnQiICovCiAgICAgbmd4X3N0cmluZygiMjA2IFBhcnRpYWwgQ29udGVudCIpLAogCkBAIC0xNjcsOCArMTY3LDggQEAKIAogICAgIGlmIChyLT5oZWFkZXJzX291dC5sYXN0X21vZGlmaWVkX3RpbWUgIT0gLTEpIHsKICAgICAgICAgaWYgKHItPmhlYWRlcnNfb3V0LnN0YXR1cyAhPSBOR1hfSFRUUF9PSwotICAgICAgICAgICAgJiYgci0+aGVhZGVyc19vdXQuc3RhdHVzICE9IE5HWF9IVFRQX05PVF9NT0RJRklFRAotICAgICAgICAgICAgJiYgci0+aGVhZGVyc19vdXQuc3RhdHVzICE9IE5HWF9IVFRQX1BBUlRJQUxfQ09OVEVOVCkKKyAgICAgICAgICAgICYmIHItPmhlYWRlcnNfb3V0LnN0YXR1cyAhPSBOR1hfSFRUUF9QQVJUSUFMX0NPTlRFTlQKKyAgICAgICAgICAgICYmIHItPmhlYWRlcnNfb3V0LnN0YXR1cyAhPSBOR1hfSFRUUF9OT1RfTU9ESUZJRUQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHItPmhlYWRlcnNfb3V0Lmxhc3RfbW9kaWZpZWRfdGltZSA9IC0xOwogICAgICAgICAgICAgci0+aGVhZGVyc19vdXQubGFzdF9tb2RpZmllZCA9IE5VTEw7CkBAIC0xOTMsNiArMTkzLDE2IEBACiAgICAgICAgICAgICAvKiAyWFggKi8KICAgICAgICAgICAgIHN0YXR1cyA9IHItPmhlYWRlcnNfb3V0LnN0YXR1cyAtIE5HWF9IVFRQX09LOwogCisgICAgICAgICAgICBpZiAoci0+aGVhZGVyc19vdXQuc3RhdHVzID09IE5HWF9IVFRQX05PX0NPTlRFTlQpIHsKKyAgICAgICAgICAgICAgICByLT5oZWFkZXJfb25seSA9IDE7CisgICAgICAgICAgICAgICAgci0+aGVhZGVyc19vdXQuY29udGVudF90eXBlLmxlbiA9IDA7CisgICAgICAgICAgICAgICAgci0+aGVhZGVyc19vdXQuY29udGVudF90eXBlLmRhdGEgPSBOVUxMOworICAgICAgICAgICAgICAgIHItPmhlYWRlcnNfb3V0Lmxhc3RfbW9kaWZpZWRfdGltZSA9IC0xOworICAgICAgICAgICAgICAgIHItPmhlYWRlcnNfb3V0Lmxhc3RfbW9kaWZpZWQgPSBOVUxMOworICAgICAgICAgICAgICAgIHItPmhlYWRlcnNfb3V0LmNvbnRlbnRfbGVuZ3RoID0gTlVMTDsKKyAgICAgICAgICAgICAgICByLT5oZWFkZXJzX291dC5jb250ZW50X2xlbmd0aF9uID0gLTE7CisgICAgICAgICAgICB9CisKICAgICAgICAgfSBlbHNlIGlmIChyLT5oZWFkZXJzX291dC5zdGF0dXMgPCBOR1hfSFRUUF9CQURfUkVRVUVTVCkgewogICAgICAgICAgICAgLyogM1hYICovCiAgICAgICAgICAgICBzdGF0dXMgPSByLT5oZWFkZXJzX291dC5zdGF0dXMgLSBOR1hfSFRUUF9NT1ZFRF9QRVJNQU5FTlRMWQpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfcGFyc2UuYyBiL3NyYy9odHRwL25neF9odHRwX3BhcnNlLmMKaW5kZXggNzUyYjZhMS4uMDI3ZDllZiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcGFyc2UuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9wYXJzZS5jCkBAIC01MjksNiArNTI5LDggQEAKIAogICAgICAgICAvKiBmaXJzdCBjaGFyICovCiAgICAgICAgIGNhc2Ugc3dfc3RhcnQ6CisgICAgICAgICAgICByLT5pbnZhbGlkX2hlYWRlciA9IDA7CisKICAgICAgICAgICAgIHN3aXRjaCAoY2gpIHsKICAgICAgICAgICAgIGNhc2UgQ1I6CiAgICAgICAgICAgICAgICAgci0+aGVhZGVyX2VuZCA9IHA7CkBAIC01NTIsNiArNTU0LDggQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgci0+aW52YWxpZF9oZWFkZXIgPSAxOworCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIH0KQEAgLTYwNiw2ICs2MTAsOCBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICByLT5pbnZhbGlkX2hlYWRlciA9IDE7CisKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIHNwYWNlKiBiZWZvcmUgaGVhZGVyIHZhbHVlICovCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKaW5kZXggMjg0MTJiNi4uNGNiZjkxNSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwpAQCAtNzI1LDYgKzcyNSw3IEBACiAgICAgbmd4X2Nvbm5lY3Rpb25fdCAgICAgICAgICAgKmM7CiAgICAgbmd4X2h0dHBfaGVhZGVyX3QgICAgICAgICAgKmhoOwogICAgIG5neF9odHRwX3JlcXVlc3RfdCAgICAgICAgICpyOworICAgIG5neF9odHRwX2NvcmVfc3J2X2NvbmZfdCAgICpjc2NmOwogICAgIG5neF9odHRwX2NvcmVfbWFpbl9jb25mX3QgICpjbWNmOwogCiAgICAgYyA9IHJldi0+ZGF0YTsKQEAgLTc0Miw2ICs3NDMsNyBAQAogICAgIH0KIAogICAgIGNtY2YgPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX21haW5fY29uZihyLCBuZ3hfaHR0cF9jb3JlX21vZHVsZSk7CisgICAgY3NjZiA9IG5neF9odHRwX2dldF9tb2R1bGVfc3J2X2NvbmYociwgbmd4X2h0dHBfY29yZV9tb2R1bGUpOwogICAgIGhoID0gKG5neF9odHRwX2hlYWRlcl90ICopIGNtY2YtPmhlYWRlcnNfaW5faGFzaC5idWNrZXRzOwogCiAgICAgcmMgPSBOR1hfQUdBSU47CkBAIC03ODMsOCArNzg1LDcgQEAKIAogICAgICAgICBpZiAocmMgPT0gTkdYX09LKSB7CiAKLSNpZiAwCi0gICAgICAgICAgICBpZiAoci0+aW52YWxpZF9oZWFkZXIpIHsKKyAgICAgICAgICAgIGlmIChyLT5pbnZhbGlkX2hlYWRlciAmJiBjc2NmLT5pZ25vcmVfaW52YWxpZF9oZWFkZXJzKSB7CiAKICAgICAgICAgICAgICAgICAvKiB0aGVyZSB3YXMgZXJyb3Igd2hpbGUgYSBoZWFkZXIgbGluZSBwYXJzaW5nICovCiAKQEAgLTc5Niw3ICs3OTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhlYWRlcik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICAgICAgLyogYSBoZWFkZXIgbGluZSBoYXMgYmVlbiBwYXJzZWQgc3VjY2Vzc2Z1bGx5ICovCiAKQEAgLTE0MDYsNyArMTQwNiw5IEBACiAgICAgbmd4X2xvZ19kZWJ1ZzIoTkdYX0xPR19ERUJVR19IVFRQLCByLT5jb25uZWN0aW9uLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgImh0dHAgZmluYWxpemUgcmVxdWVzdDogJWQsIFwiJVZcIiIsIHJjLCAmci0+dXJpKTsKIAotICAgIGlmIChyLT5wYXJlbnQgJiYgcmMgPj0gTkdYX0hUVFBfU1BFQ0lBTF9SRVNQT05TRSkgeworICAgIGlmIChyLT5wYXJlbnQKKyAgICAgICAgJiYgKHJjID49IE5HWF9IVFRQX1NQRUNJQUxfUkVTUE9OU0UgfHwgcmMgPT0gTkdYX0hUVFBfTk9fQ09OVEVOVCkpCisgICAgewogICAgICAgICBuZ3hfaHR0cF9maW5hbGl6ZV9yZXF1ZXN0KHIsIG5neF9odHRwX3NwZWNpYWxfcmVzcG9uc2VfaGFuZGxlcihyLCByYykpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ1MCw3ICsxNDUyLDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyYyA+PSBOR1hfSFRUUF9TUEVDSUFMX1JFU1BPTlNFKSB7CisgICAgaWYgKHJjID49IE5HWF9IVFRQX1NQRUNJQUxfUkVTUE9OU0UgfHwgcmMgPT0gTkdYX0hUVFBfTk9fQ09OVEVOVCkgewogCiAgICAgICAgIGlmIChyLT5jb25uZWN0aW9uLT5yZWFkLT50aW1lcl9zZXQpIHsKICAgICAgICAgICAgIG5neF9kZWxfdGltZXIoci0+Y29ubmVjdGlvbi0+cmVhZCk7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmggYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmgKaW5kZXggNWIyNjE1MS4uZjA1YmMxYiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaApAQCAtNDIsNiArNDIsNyBAQAogCiAKICNkZWZpbmUgTkdYX0hUVFBfT0sgICAgICAgICAgICAgICAgICAgICAgICAyMDAKKyNkZWZpbmUgTkdYX0hUVFBfTk9fQ09OVEVOVCAgICAgICAgICAgICAgICAyMDQKICNkZWZpbmUgTkdYX0hUVFBfUEFSVElBTF9DT05URU5UICAgICAgICAgICAyMDYKIAogI2RlZmluZSBOR1hfSFRUUF9TUEVDSUFMX1JFU1BPTlNFICAgICAgICAgIDMwMApAQCAtMzM3LDYgKzMzOCw4IEBACiAgICAgLyogVVJJIHdpdGggIlwwIiBvciAiJTAwIiAqLwogICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvX2luX3VyaToxOwogCisgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRfaGVhZGVyOjE7CisKICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfbG9jYXRpb246MTsKICAgICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfdW5wYXJzZWRfdXJpOjE7CiAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaV9jaGFuZ2VkOjE7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9zcGVjaWFsX3Jlc3BvbnNlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9zcGVjaWFsX3Jlc3BvbnNlLmMKaW5kZXggNTM2MDY4Yi4uNTU5MWRiYyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfc3BlY2lhbF9yZXNwb25zZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3NwZWNpYWxfcmVzcG9uc2UuYwpAQCAtMTkxLDYgKzE5MSwxMCBAQAogCiBzdGF0aWMgbmd4X3N0cl90IGVycm9yX3BhZ2VzW10gPSB7CiAKKyAgICBuZ3hfbnVsbF9zdHJpbmcsICAgICAgICAgICAgIC8qIDIwNCAqLworCisjZGVmaW5lIE5HWF9IVFRQX0xFVkVMXzIwMCAgMQorCiAgICAgLyogbmd4X251bGxfc3RyaW5nLCAqLyAgICAgICAvKiAzMDAgKi8KICAgICBuZ3hfc3RyaW5nKGVycm9yXzMwMV9wYWdlKSwKICAgICBuZ3hfc3RyaW5nKGVycm9yXzMwMl9wYWdlKSwKQEAgLTI5MCwxNyArMjk0LDIzIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZXJyb3IgPCBOR1hfSFRUUF9CQURfUkVRVUVTVCkgeworICAgIGlmIChlcnJvciA9PSBOR1hfSFRUUF9OT19DT05URU5UKSB7CisgICAgICAgIC8qIDIwNCAqLworICAgICAgICBlcnIgPSAwOworCisgICAgfSBlbHNlIGlmIChlcnJvciA8IE5HWF9IVFRQX0JBRF9SRVFVRVNUKSB7CiAgICAgICAgIC8qIDNYWCAqLwogICAgICAgICBlcnIgPSBlcnJvciAtIE5HWF9IVFRQX01PVkVEX1BFUk1BTkVOVExZOwogCiAgICAgfSBlbHNlIGlmIChlcnJvciA8IE5HWF9IVFRQX05HWF9DT0RFUykgewogICAgICAgICAvKiA0WFggKi8KLSAgICAgICAgZXJyID0gZXJyb3IgLSBOR1hfSFRUUF9CQURfUkVRVUVTVCArIE5HWF9IVFRQX0xFVkVMXzMwMDsKKyAgICAgICAgZXJyID0gZXJyb3IgLSBOR1hfSFRUUF9CQURfUkVRVUVTVCArIE5HWF9IVFRQX0xFVkVMXzIwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgTkdYX0hUVFBfTEVWRUxfMzAwOwogCiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogNDlYLCA1WFggKi8KLSAgICAgICAgZXJyID0gZXJyb3IgLSBOR1hfSFRUUF9OR1hfQ09ERVMgKyBOR1hfSFRUUF9MRVZFTF8zMDAKKyAgICAgICAgZXJyID0gZXJyb3IgLSBOR1hfSFRUUF9OR1hfQ09ERVMgKyBOR1hfSFRUUF9MRVZFTF8yMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBOR1hfSFRUUF9MRVZFTF8zMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBOR1hfSFRUUF9MRVZFTF80MDA7CiAgICAgICAgIHN3aXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgIGNhc2UgTkdYX0hUVFBfVE9fSFRUUFM6CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYwppbmRleCBmNzY2ZDdkLi4wOTI4ZmJkIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmMKQEAgLTc3OSwxMiArNzc5LDYgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChuID09IE5HWF9IVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUikgewotICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9maW5hbGl6ZV9yZXF1ZXN0KHIsIHUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdYX0hUVFBfSU5URVJOQUxfU0VSVkVSX0VSUk9SKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIHUtPmhlYWRlcl9pbi5sYXN0ICs9IG47CiAKICNpZiAwCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF93cml0ZV9maWx0ZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF93cml0ZV9maWx0ZXJfbW9kdWxlLmMKaW5kZXggZTBmMzgyOC4uMmQ5ZGI4YiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfd3JpdGVfZmlsdGVyX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3dyaXRlX2ZpbHRlcl9tb2R1bGUuYwpAQCAtMTY4LDYgKzE2OCw3IEBACiAgICAgICAgIHJldHVybiBOR1hfT0s7CiAgICAgfQogCisjaWYgMAogICAgIC8qCiAgICAgICogYXZvaWQgdGhlIG91dHB1dCBpZiB0aGVyZSBhcmUgbm8gaW5jb21pbmcgYnVmcyBidXQgdGhlcmUgYXJlCiAgICAgICogdGhlIHBvc3Rwb25lZCByZXF1ZXN0cyBvciBkYXRhCkBAIC0xNzYsNiArMTc3LDcgQEAKICAgICBpZiAoaW4gPT0gTlVMTCAmJiByLT5wb3N0cG9uZWQpIHsKICAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICB9CisjZW5kaWYKIAogICAgIGlmIChjLT53cml0ZS0+ZGVsYXllZCkgewogICAgICAgICByZXR1cm4gTkdYX0FHQUlOOwo=