From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ig3gH-0007xS-QI for qemu-devel@nongnu.org; Thu, 11 Oct 2007 15:26:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ig3gE-0007wN-1w for qemu-devel@nongnu.org; Thu, 11 Oct 2007 15:26:48 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ig3gD-0007w7-Oo for qemu-devel@nongnu.org; Thu, 11 Oct 2007 15:26:45 -0400 Received: from nf-out-0910.google.com ([64.233.182.187]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ig3gB-0000XF-9X for qemu-devel@nongnu.org; Thu, 11 Oct 2007 15:26:45 -0400 Received: by nf-out-0910.google.com with SMTP id 30so624631nfu for ; Thu, 11 Oct 2007 12:26:39 -0700 (PDT) Message-ID: Date: Thu, 11 Oct 2007 22:26:38 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] RFC: fix run of 32 bits Linux executables on 64 bits targets In-Reply-To: <470D1C9A.2000505@bellard.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_21072_23414610.1192130799073" References: <1192002128.9976.186.camel@rapid> <470C8AD9.6000002@bellard.org> <20071010174906.GC3379@networkno.de> <470D1C9A.2000505@bellard.org> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_21072_23414610.1192130799073 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/10/07, Fabrice Bellard wrote: > Thiemo Seufer wrote: > > Fabrice Bellard wrote: > >> J. Mayer wrote: > >>> Following the patches done for elfload32, it appeared to me that there > >>> were still problems that would prevent 32 bits executables to run on 64 > >>> bits target in linux user mode emulation. > >>> [...] > >> Are you sure it is a good idea to try to add 32 bit executable support to a > >> 64 bit target ? In the end you will need to write a 64 bit to 32 bit linux > >> syscall converter which would mean duplicating all the linux-user code of > >> the corresponding 32 bit target (think of ioctls with strutures, signals > >> frames, etc...). > > > > I would think this feature will be limited to platforms which can handle > > 32bit and 64bit binaries with a single personality. > > I am not sure it is a common case ! > > However, I suggest to emulate a 32 bit user linux system with a 64 bit > guest CPU running in 32 bit compatibily mode. It would be useful to test > 64 bit CPUs in 32 bit compatibility mode. The only required modification > in linux user is to rename target_ulong so that it can have a different > size of the CPU word default size. I made a patch to rename target_ulong/long to abi_ulong/long and also add a new emulator target that uses the 32 bit ABI with 64 bit CPU. Some Sparc32 binaries run, others don't, possibly indicating bugs in the Sparc64 emulation! The patch is quite large because of the renaming, but this shouldn't have effect to any other target. Any comments? ------=_Part_21072_23414610.1192130799073 Content-Type: text/x-diff; name="linux32.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="linux32.diff"; filename="linux32.diff" X-Attachment-Id: f_f7nnvbsg SW5kZXg6IHFlbXUvbGludXgtdXNlci9hbHBoYS9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVt dS5vcmlnL2xpbnV4LXVzZXIvYWxwaGEvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTMuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvYWxwaGEvc3lzY2FsbC5oCTIwMDctMTAt MTEgMTk6MTc6NDUuMDAwMDAwMDAwICswMDAwCkBAIC0yLDQwICsyLDQwIEBACiAjZGVmaW5lIF9f VVNFUl9EUwkoMSkKIAogc3RydWN0IHRhcmdldF9wdF9yZWdzIHsKLQl0YXJnZXRfdWxvbmcgcjA7 Ci0JdGFyZ2V0X3Vsb25nIHIxOwotCXRhcmdldF91bG9uZyByMjsKLQl0YXJnZXRfdWxvbmcgcjM7 Ci0JdGFyZ2V0X3Vsb25nIHI0OwotCXRhcmdldF91bG9uZyByNTsKLQl0YXJnZXRfdWxvbmcgcjY7 Ci0JdGFyZ2V0X3Vsb25nIHI3OwotCXRhcmdldF91bG9uZyByODsKLQl0YXJnZXRfdWxvbmcgcjE5 OwotCXRhcmdldF91bG9uZyByMjA7Ci0JdGFyZ2V0X3Vsb25nIHIyMTsKLQl0YXJnZXRfdWxvbmcg cjIyOwotCXRhcmdldF91bG9uZyByMjM7Ci0JdGFyZ2V0X3Vsb25nIHIyNDsKLQl0YXJnZXRfdWxv bmcgcjI1OwotCXRhcmdldF91bG9uZyByMjY7Ci0JdGFyZ2V0X3Vsb25nIHIyNzsKLQl0YXJnZXRf dWxvbmcgcjI4OwotCXRhcmdldF91bG9uZyBoYWU7CisJYWJpX3Vsb25nIHIwOworCWFiaV91bG9u ZyByMTsKKwlhYmlfdWxvbmcgcjI7CisJYWJpX3Vsb25nIHIzOworCWFiaV91bG9uZyByNDsKKwlh YmlfdWxvbmcgcjU7CisJYWJpX3Vsb25nIHI2OworCWFiaV91bG9uZyByNzsKKwlhYmlfdWxvbmcg cjg7CisJYWJpX3Vsb25nIHIxOTsKKwlhYmlfdWxvbmcgcjIwOworCWFiaV91bG9uZyByMjE7CisJ YWJpX3Vsb25nIHIyMjsKKwlhYmlfdWxvbmcgcjIzOworCWFiaV91bG9uZyByMjQ7CisJYWJpX3Vs b25nIHIyNTsKKwlhYmlfdWxvbmcgcjI2OworCWFiaV91bG9uZyByMjc7CisJYWJpX3Vsb25nIHIy ODsKKwlhYmlfdWxvbmcgaGFlOwogLyogSlJQIC0gVGhlc2UgYXJlIHRoZSB2YWx1ZXMgcHJvdmlk ZWQgdG8gYTAtYTIgYnkgUEFMY29kZSAqLwotCXRhcmdldF91bG9uZyB0cmFwX2EwOwotCXRhcmdl dF91bG9uZyB0cmFwX2ExOwotCXRhcmdldF91bG9uZyB0cmFwX2EyOworCWFiaV91bG9uZyB0cmFw X2EwOworCWFiaV91bG9uZyB0cmFwX2ExOworCWFiaV91bG9uZyB0cmFwX2EyOwogLyogVGhlc2Ug YXJlIHNhdmVkIGJ5IFBBTC1jb2RlOiAqLwotCXRhcmdldF91bG9uZyBwczsKLQl0YXJnZXRfdWxv bmcgcGM7Ci0JdGFyZ2V0X3Vsb25nIGdwOwotCXRhcmdldF91bG9uZyByMTY7Ci0JdGFyZ2V0X3Vs b25nIHIxNzsKLQl0YXJnZXRfdWxvbmcgcjE4OworCWFiaV91bG9uZyBwczsKKwlhYmlfdWxvbmcg cGM7CisJYWJpX3Vsb25nIGdwOworCWFiaV91bG9uZyByMTY7CisJYWJpX3Vsb25nIHIxNzsKKwlh YmlfdWxvbmcgcjE4OwogLyogVGhvc2UgaXMgbmVlZGVkIGJ5IHFlbXUgdG8gdGVtcG9yYXJ5IHN0 b3JlIHRoZSB1c2VyIHN0YWNrIHBvaW50ZXIgKi8KLSAgICAgICAgdGFyZ2V0X3Vsb25nIHVzcDsK LSAgICAgICAgdGFyZ2V0X3Vsb25nIHVuaXF1ZTsKKyAgICAgICAgYWJpX3Vsb25nIHVzcDsKKyAg ICAgICAgYWJpX3Vsb25nIHVuaXF1ZTsKIH07CiAKICNkZWZpbmUgVU5BTUVfTUFDSElORSAiYWxw aGEiCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvYWxwaGEvdGFyZ2V0X3NpZ25hbC5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL2FscGhhL3RhcmdldF9zaWduYWwuaAkyMDA3LTEw LTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2FscGhhL3Rh cmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ1LjAwMDAwMDAwMCArMDAwMApAQCAtNiw5 ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBzeXNj YWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7Ci0J dGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91bG9u ZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlhYmlf dWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBAQAog I2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1oJNDA5NgogI2RlZmluZSBUQVJHRVRfU0lHU1RLU1oJ CTE2Mzg0CiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0YXRl KENQVUFscGhhU3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zy b21fY3B1c3RhdGUoQ1BVQWxwaGFTdGF0ZSAqc3RhdGUpCiB7CiAgICAgcmV0dXJuIHN0YXRlLT5p cltJUl9TUF07CiB9CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvYXJtL3RhcmdldF9zaWduYWwuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9hcm0vdGFyZ2V0X3NpZ25hbC5oCTIw MDctMTAtMTEgMTk6MTc6MTMuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvYXJt L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ1LjAwMDAwMDAwMCArMDAwMApAQCAt Niw5ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBz eXNjYWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7 Ci0JdGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91 bG9uZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlh YmlfdWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBA QAogI2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1oJMjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RL U1oJCTgxOTIKIAotc3RhdGljIGlubGluZSB0YXJnZXRfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3Rh dGUoQ1BVQVJNU3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zy b21fY3B1c3RhdGUoQ1BVQVJNU3RhdGUgKnN0YXRlKQogewogICAgcmV0dXJuIHN0YXRlLT5yZWdz WzEzXTsKIH0KSW5kZXg6IHFlbXUvbGludXgtdXNlci9jcmlzL3RhcmdldF9zaWduYWwuaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9jcmlzL3RhcmdldF9zaWduYWwuaAkyMDA3 LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2NyaXMv dGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6NDUuMDAwMDAwMDAwICswMDAwCkBAIC02 LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5 c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsK LQl0YXJnZXRfdWxvbmcgc3Nfc3A7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NpemU7Ci0JdGFyZ2V0X2xv bmcgc3NfZmxhZ3M7CisJYWJpX3Vsb25nIHNzX3NwOworCWFiaV91bG9uZyBzc19zaXplOworCWFi aV9sb25nIHNzX2ZsYWdzOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3IEBA CiAjZGVmaW5lIFRBUkdFVF9NSU5TSUdTVEtTWiAgICAyMDQ4CiAjZGVmaW5lIFRBUkdFVF9TSUdT VEtTWiAgICAgICA4MTkyCiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9t X2NwdXN0YXRlKENQVUNSSVNTdGF0ZSAqc3RhdGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBn ZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVDUklTU3RhdGUgKnN0YXRlKQogewogICAgIHJldHVybiBz dGF0ZS0+cmVnc1sxNF07CiB9CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvZWxmbG9hZC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL2VsZmxvYWQuYwkyMDA3LTEwLTExIDE5OjE3 OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2VsZmxvYWQuYwkyMDA3LTEw LTExIDE5OjE3OjQ1LjAwMDAwMDAwMCArMDAwMApAQCAtMTcyLDcgKzE3Miw3IEBACiAKIHN0YXRp YyBpbmxpbmUgdm9pZCBpbml0X3RocmVhZChzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgKnJlZ3MsIHN0 cnVjdCBpbWFnZV9pbmZvICppbmZvcCkKIHsKLSAgICB0YXJnZXRfbG9uZyBzdGFjayA9IGluZm9w LT5zdGFydF9zdGFjazsKKyAgICBhYmlfbG9uZyBzdGFjayA9IGluZm9wLT5zdGFydF9zdGFjazsK ICAgICBtZW1zZXQocmVncywgMCwgc2l6ZW9mKCpyZWdzKSk7CiAgICAgcmVncy0+QVJNX2Nwc3Ig PSAweDEwOwogICAgIGlmIChpbmZvcC0+ZW50cnkgJiAxKQpAQCAtMjE0LDcgKzIxNCwxMSBAQAog CiAjZGVmaW5lIEVMRl9TVEFSVF9NTUFQIDB4ODAwMDAwMDAKIAorI2lmbmRlZiBUQVJHRVRfQUJJ MzIKICNkZWZpbmUgZWxmX2NoZWNrX2FyY2goeCkgKCAoeCkgPT0gRU1fU1BBUkNWOSB8fCAoeCkg PT0gRU1fU1BBUkMzMlBMVVMgKQorI2Vsc2UKKyNkZWZpbmUgZWxmX2NoZWNrX2FyY2goeCkgKCAo eCkgPT0gRU1fU1BBUkMzMlBMVVMgfHwgKHgpID09IEVNX1NQQVJDICkKKyNlbmRpZgogCiAjZGVm aW5lIEVMRl9DTEFTUyAgIEVMRkNMQVNTNjQKICNkZWZpbmUgRUxGX0RBVEEgICAgRUxGREFUQTJN U0IKQEAgLTIyNCwxNCArMjI4LDIwIEBACiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3RocmVh ZChzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgKnJlZ3MsIHN0cnVjdCBpbWFnZV9pbmZvICppbmZvcCkK IHsKKyNpZm5kZWYgVEFSR0VUX0FCSTMyCiAgICAgcmVncy0+dHN0YXRlID0gMDsKKyNlbmRpZgog ICAgIHJlZ3MtPnBjID0gaW5mb3AtPmVudHJ5OwogICAgIHJlZ3MtPm5wYyA9IHJlZ3MtPnBjICsg NDsKICAgICByZWdzLT55ID0gMDsKKyNpZmRlZiBUQVJHRVRfQUJJMzIKKyAgICByZWdzLT51X3Jl Z3NbMTRdID0gaW5mb3AtPnN0YXJ0X3N0YWNrIC0gMTYgKiA0OworI2Vsc2UKICAgICBpZiAocGVy c29uYWxpdHkoaW5mb3AtPnBlcnNvbmFsaXR5KSA9PSBQRVJfTElOVVgzMikKICAgICAgICAgcmVn cy0+dV9yZWdzWzE0XSA9IGluZm9wLT5zdGFydF9zdGFjayAtIDE2ICogNDsKICAgICBlbHNlCiAg ICAgICAgIHJlZ3MtPnVfcmVnc1sxNF0gPSBpbmZvcC0+c3RhcnRfc3RhY2sgLSAxNiAqIDggLSBT VEFDS19CSUFTOworI2VuZGlmCiB9CiAKICNlbHNlCkBAIC0zMTMsMTAgKzMyMywxMCBAQAogCiBz dGF0aWMgaW5saW5lIHZvaWQgaW5pdF90aHJlYWQoc3RydWN0IHRhcmdldF9wdF9yZWdzICpfcmVn cywgc3RydWN0IGltYWdlX2luZm8gKmluZm9wKQogewotICAgIHRhcmdldF91bG9uZyBwb3MgPSBp bmZvcC0+c3RhcnRfc3RhY2s7Ci0gICAgdGFyZ2V0X3Vsb25nIHRtcDsKKyAgICBhYmlfdWxvbmcg cG9zID0gaW5mb3AtPnN0YXJ0X3N0YWNrOworICAgIGFiaV91bG9uZyB0bXA7CiAjaWZkZWYgVEFS R0VUX1BQQzY0Ci0gICAgdGFyZ2V0X3Vsb25nIGVudHJ5LCB0b2M7CisgICAgYWJpX3Vsb25nIGVu dHJ5LCB0b2M7CiAjZW5kaWYKIAogICAgIF9yZWdzLT5tc3IgPSAxIDw8IE1TUl9QUjsgLyogU2V0 IHVzZXIgbW9kZSAqLwpAQCAtMzMzLDkgKzM0Myw5IEBACiAgICAgICogZXhlY3V0aW9uIG9mIFBQ QyBCU0QgcHJvZ3JhbXMuCiAgICAgICovCiAgICAgX3JlZ3MtPmdwclszXSA9IHRnZXRsKHBvcyk7 Ci0gICAgcG9zICs9IHNpemVvZih0YXJnZXRfdWxvbmcpOworICAgIHBvcyArPSBzaXplb2YoYWJp X3Vsb25nKTsKICAgICBfcmVncy0+Z3ByWzRdID0gcG9zOwotICAgIGZvciAodG1wID0gMTsgdG1w ICE9IDA7IHBvcyArPSBzaXplb2YodGFyZ2V0X3Vsb25nKSkKKyAgICBmb3IgKHRtcCA9IDE7IHRt cCAhPSAwOyBwb3MgKz0gc2l6ZW9mKGFiaV91bG9uZykpCiAgICAgICAgIHRtcCA9IGxkbChwb3Mp OwogICAgIF9yZWdzLT5ncHJbNV0gPSBwb3M7CiB9CkBAIC01ODgsOCArNTk4LDggQEAKICAqIHRv IGJlIHB1dCBkaXJlY3RseSBpbnRvIHRoZSB0b3Agb2YgbmV3IHVzZXIgbWVtb3J5LgogICoKICAq Lwotc3RhdGljIHRhcmdldF91bG9uZyBjb3B5X2VsZl9zdHJpbmdzKGludCBhcmdjLGNoYXIgKiog YXJndiwgdm9pZCAqKnBhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X3Vsb25nIHApCitzdGF0aWMgYWJpX3Vsb25nIGNvcHlfZWxmX3N0cmluZ3MoaW50IGFy Z2MsY2hhciAqKiBhcmd2LCB2b2lkICoqcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhYmlfdWxvbmcgcCkKIHsKICAgICBjaGFyICp0bXAsICp0bXAxLCAqcGFnID0g TlVMTDsKICAgICBpbnQgbGVuLCBvZmZzZXQgPSAwOwpAQCAtNjM4LDEwICs2NDgsMTAgQEAKICAg ICByZXR1cm4gcDsKIH0KIAotc3RhdGljIHRhcmdldF91bG9uZyBzZXR1cF9hcmdfcGFnZXModGFy Z2V0X3Vsb25nIHAsIHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sCitzdGF0aWMgYWJpX3Vsb25n IHNldHVwX2FyZ19wYWdlcyhhYmlfdWxvbmcgcCwgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbWFnZV9pbmZvICpp bmZvKQogewotICAgIHRhcmdldF91bG9uZyBzdGFja19iYXNlLCBzaXplLCBlcnJvcjsKKyAgICBh YmlfdWxvbmcgc3RhY2tfYmFzZSwgc2l6ZSwgZXJyb3I7CiAgICAgaW50IGk7CiAKICAgICAvKiBD cmVhdGUgZW5vdWdoIHN0YWNrIHRvIGhvbGQgZXZlcnl0aGluZy4gIElmIHdlIGRvbid0IHVzZQpA QCAtNjc3LDcgKzY4Nyw3IEBACiAgICAgcmV0dXJuIHA7CiB9CiAKLXN0YXRpYyB2b2lkIHNldF9i cmsodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcgZW5kKQorc3RhdGljIHZvaWQgc2V0 X2JyayhhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBlbmQpCiB7CiAJLyogcGFnZS1hbGlnbiB0 aGUgc3RhcnQgYW5kIGVuZCBhZGRyZXNzZXMuLi4gKi8KICAgICAgICAgc3RhcnQgPSBIT1NUX1BB R0VfQUxJR04oc3RhcnQpOwpAQCAtNjk2LDkgKzcwNiw5IEBACiAvKiBXZSBuZWVkIHRvIGV4cGxp Y2l0bHkgemVybyBhbnkgZnJhY3Rpb25hbCBwYWdlcyBhZnRlciB0aGUgZGF0YQogICAgc2VjdGlv biAoaS5lLiBic3MpLiAgVGhpcyB3b3VsZCBjb250YWluIHRoZSBqdW5rIGZyb20gdGhlIGZpbGUg dGhhdAogICAgc2hvdWxkIG5vdCBiZSBpbiBtZW1vcnkuICovCi1zdGF0aWMgdm9pZCBwYWR6ZXJv KHRhcmdldF91bG9uZyBlbGZfYnNzLCB0YXJnZXRfdWxvbmcgbGFzdF9ic3MpCitzdGF0aWMgdm9p ZCBwYWR6ZXJvKGFiaV91bG9uZyBlbGZfYnNzLCBhYmlfdWxvbmcgbGFzdF9ic3MpCiB7Ci0gICAg ICAgIHRhcmdldF91bG9uZyBuYnl0ZTsKKyAgICAgICAgYWJpX3Vsb25nIG5ieXRlOwogCiAJaWYg KGVsZl9ic3MgPj0gbGFzdF9ic3MpCiAJCXJldHVybjsKQEAgLTcwOSw3ICs3MTksNyBAQAogICAg ICAgICAgICBwYXRjaCB0YXJnZXRfbW1hcCgpLCBidXQgaXQgaXMgbW9yZSBjb21wbGljYXRlZCBh cyB0aGUgZmlsZQogICAgICAgICAgICBzaXplIG11c3QgYmUga25vd24gKi8KICAgICAgICAgaWYg KHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSA8IHFlbXVfaG9zdF9wYWdlX3NpemUpIHsKLSAgICAg ICAgICAgIHRhcmdldF91bG9uZyBlbmRfYWRkciwgZW5kX2FkZHIxOworICAgICAgICAgICAgYWJp X3Vsb25nIGVuZF9hZGRyLCBlbmRfYWRkcjE7CiAgICAgICAgICAgICBlbmRfYWRkcjEgPSAoZWxm X2JzcyArIHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSAtIDEpICYKICAgICAgICAgICAgICAgICB+ KHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSAtIDEpOwogICAgICAgICAgICAgZW5kX2FkZHIgPSBI T1NUX1BBR0VfQUxJR04oZWxmX2Jzcyk7CkBAIC03MzEsMTYgKzc0MSwxNiBAQAogfQogCiAKLXN0 YXRpYyB0YXJnZXRfdWxvbmcgY3JlYXRlX2VsZl90YWJsZXModGFyZ2V0X3Vsb25nIHAsIGludCBh cmdjLCBpbnQgZW52YywKK3N0YXRpYyBhYmlfdWxvbmcgY3JlYXRlX2VsZl90YWJsZXMoYWJpX3Vs b25nIHAsIGludCBhcmdjLCBpbnQgZW52YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGVsZmhkciAqIGV4ZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhcmdldF91bG9uZyBsb2FkX2FkZHIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBsb2FkX2JpYXMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBpbnRlcnBfbG9hZF9hZGRyLCBp bnQgaWJjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25n IGxvYWRfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vs b25nIGxvYWRfYmlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJp X3Vsb25nIGludGVycF9sb2FkX2FkZHIsIGludCBpYmNzLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW1hZ2VfaW5mbyAqaW5mbykKIHsKLSAgICAgICAgdGFy Z2V0X3Vsb25nIHNwOworICAgICAgICBhYmlfdWxvbmcgc3A7CiAgICAgICAgIGludCBzaXplOwot ICAgICAgICB0YXJnZXRfdWxvbmcgdV9wbGF0Zm9ybTsKKyAgICAgICAgYWJpX3Vsb25nIHVfcGxh dGZvcm07CiAgICAgICAgIGNvbnN0IGNoYXIgKmtfcGxhdGZvcm07CiAgICAgICAgIGNvbnN0IGlu dCBuID0gc2l6ZW9mKGVsZl9hZGRyX3QpOwogCkBAIC03NTYsNyArNzY2LDcgQEAKIAkvKgogCSAq IEZvcmNlIDE2IGJ5dGUgX2ZpbmFsXyBhbGlnbm1lbnQgaGVyZSBmb3IgZ2VuZXJhbGl0eS4KIAkg Ki8KLSAgICAgICAgc3AgPSBzcCAmfiAodGFyZ2V0X3Vsb25nKTE1OworICAgICAgICBzcCA9IHNw ICZ+IChhYmlfdWxvbmcpMTU7CiAgICAgICAgIHNpemUgPSAoRExJTkZPX0lURU1TICsgMSkgKiAy OwogICAgICAgICBpZiAoa19wbGF0Zm9ybSkKICAgICAgICAgICBzaXplICs9IDI7CkBAIC03ODYs MTggKzc5NiwxOCBAQAogICAgICAgICBORVdfQVVYX0VOVCAoQVRfTlVMTCwgMCk7CiAKICAgICAg ICAgLyogVGhlcmUgbXVzdCBiZSBleGFjdGx5IERMSU5GT19JVEVNUyBlbnRyaWVzIGhlcmUuICAq LwotICAgICAgICBORVdfQVVYX0VOVChBVF9QSERSLCAodGFyZ2V0X3Vsb25nKShsb2FkX2FkZHIg KyBleGVjLT5lX3Bob2ZmKSk7Ci0gICAgICAgIE5FV19BVVhfRU5UKEFUX1BIRU5ULCAodGFyZ2V0 X3Vsb25nKShzaXplb2YgKHN0cnVjdCBlbGZfcGhkcikpKTsKLSAgICAgICAgTkVXX0FVWF9FTlQo QVRfUEhOVU0sICh0YXJnZXRfdWxvbmcpKGV4ZWMtPmVfcGhudW0pKTsKLSAgICAgICAgTkVXX0FV WF9FTlQoQVRfUEFHRVNaLCAodGFyZ2V0X3Vsb25nKShUQVJHRVRfUEFHRV9TSVpFKSk7Ci0gICAg ICAgIE5FV19BVVhfRU5UKEFUX0JBU0UsICh0YXJnZXRfdWxvbmcpKGludGVycF9sb2FkX2FkZHIp KTsKLSAgICAgICAgTkVXX0FVWF9FTlQoQVRfRkxBR1MsICh0YXJnZXRfdWxvbmcpMCk7CisgICAg ICAgIE5FV19BVVhfRU5UKEFUX1BIRFIsIChhYmlfdWxvbmcpKGxvYWRfYWRkciArIGV4ZWMtPmVf cGhvZmYpKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfUEhFTlQsIChhYmlfdWxvbmcpKHNpemVv ZiAoc3RydWN0IGVsZl9waGRyKSkpOworICAgICAgICBORVdfQVVYX0VOVChBVF9QSE5VTSwgKGFi aV91bG9uZykoZXhlYy0+ZV9waG51bSkpOworICAgICAgICBORVdfQVVYX0VOVChBVF9QQUdFU1os IChhYmlfdWxvbmcpKFRBUkdFVF9QQUdFX1NJWkUpKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRf QkFTRSwgKGFiaV91bG9uZykoaW50ZXJwX2xvYWRfYWRkcikpOworICAgICAgICBORVdfQVVYX0VO VChBVF9GTEFHUywgKGFiaV91bG9uZykwKTsKICAgICAgICAgTkVXX0FVWF9FTlQoQVRfRU5UUlks IGxvYWRfYmlhcyArIGV4ZWMtPmVfZW50cnkpOwotICAgICAgICBORVdfQVVYX0VOVChBVF9VSUQs ICh0YXJnZXRfdWxvbmcpIGdldHVpZCgpKTsKLSAgICAgICAgTkVXX0FVWF9FTlQoQVRfRVVJRCwg KHRhcmdldF91bG9uZykgZ2V0ZXVpZCgpKTsKLSAgICAgICAgTkVXX0FVWF9FTlQoQVRfR0lELCAo dGFyZ2V0X3Vsb25nKSBnZXRnaWQoKSk7Ci0gICAgICAgIE5FV19BVVhfRU5UKEFUX0VHSUQsICh0 YXJnZXRfdWxvbmcpIGdldGVnaWQoKSk7Ci0gICAgICAgIE5FV19BVVhfRU5UKEFUX0hXQ0FQLCAo dGFyZ2V0X3Vsb25nKSBFTEZfSFdDQVApOworICAgICAgICBORVdfQVVYX0VOVChBVF9VSUQsIChh YmlfdWxvbmcpIGdldHVpZCgpKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfRVVJRCwgKGFiaV91 bG9uZykgZ2V0ZXVpZCgpKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfR0lELCAoYWJpX3Vsb25n KSBnZXRnaWQoKSk7CisgICAgICAgIE5FV19BVVhfRU5UKEFUX0VHSUQsIChhYmlfdWxvbmcpIGdl dGVnaWQoKSk7CisgICAgICAgIE5FV19BVVhfRU5UKEFUX0hXQ0FQLCAoYWJpX3Vsb25nKSBFTEZf SFdDQVApOwogICAgICAgICBpZiAoa19wbGF0Zm9ybSkKICAgICAgICAgICAgIE5FV19BVVhfRU5U KEFUX1BMQVRGT1JNLCB1X3BsYXRmb3JtKTsKICNpZmRlZiBBUkNIX0RMSU5GTwpAQCAtODE0LDE3 ICs4MjQsMTcgQEAKIH0KIAogCi1zdGF0aWMgdGFyZ2V0X3Vsb25nIGxvYWRfZWxmX2ludGVycChz dHJ1Y3QgZWxmaGRyICogaW50ZXJwX2VsZl9leCwKK3N0YXRpYyBhYmlfdWxvbmcgbG9hZF9lbGZf aW50ZXJwKHN0cnVjdCBlbGZoZHIgKiBpbnRlcnBfZWxmX2V4LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGludGVycHJldGVyX2ZkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nICppbnRlcnBfbG9hZF9hZGRyKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nICppbnRlcnBfbG9hZF9hZGRy KQogewogCXN0cnVjdCBlbGZfcGhkciAqZWxmX3BoZGF0YSAgPSAgTlVMTDsKIAlzdHJ1Y3QgZWxm X3BoZHIgKmVwcG50OwotCXRhcmdldF91bG9uZyBsb2FkX2FkZHIgPSAwOworCWFiaV91bG9uZyBs b2FkX2FkZHIgPSAwOwogCWludCBsb2FkX2FkZHJfc2V0ID0gMDsKIAlpbnQgcmV0dmFsOwotCXRh cmdldF91bG9uZyBsYXN0X2JzcywgZWxmX2JzczsKLQl0YXJnZXRfdWxvbmcgZXJyb3I7CisJYWJp X3Vsb25nIGxhc3RfYnNzLCBlbGZfYnNzOworCWFiaV91bG9uZyBlcnJvcjsKIAlpbnQgaTsKIAog CWVsZl9ic3MgPSAwOwpAQCAtODM4LDIwICs4NDgsMjAgQEAKIAlpZiAoKGludGVycF9lbGZfZXgt PmVfdHlwZSAhPSBFVF9FWEVDICYmCiAgICAgICAgICAgICAgaW50ZXJwX2VsZl9leC0+ZV90eXBl ICE9IEVUX0RZTikgfHwKIAkgICAhZWxmX2NoZWNrX2FyY2goaW50ZXJwX2VsZl9leC0+ZV9tYWNo aW5lKSkgewotCQlyZXR1cm4gfigodGFyZ2V0X3Vsb25nKTBVTCk7CisJCXJldHVybiB+KChhYmlf dWxvbmcpMFVMKTsKIAl9CiAKIAogCS8qIE5vdyByZWFkIGluIGFsbCBvZiB0aGUgaGVhZGVyIGlu Zm9ybWF0aW9uICovCiAKIAlpZiAoc2l6ZW9mKHN0cnVjdCBlbGZfcGhkcikgKiBpbnRlcnBfZWxm X2V4LT5lX3BobnVtID4gVEFSR0VUX1BBR0VfU0laRSkKLQkgICAgcmV0dXJuIH4odGFyZ2V0X3Vs b25nKTBVTDsKKwkgICAgcmV0dXJuIH4oYWJpX3Vsb25nKTBVTDsKIAogCWVsZl9waGRhdGEgPSAg KHN0cnVjdCBlbGZfcGhkciAqKQogCQltYWxsb2Moc2l6ZW9mKHN0cnVjdCBlbGZfcGhkcikgKiBp bnRlcnBfZWxmX2V4LT5lX3BobnVtKTsKIAogCWlmICghZWxmX3BoZGF0YSkKLQkgIHJldHVybiB+ KCh0YXJnZXRfdWxvbmcpMFVMKTsKKwkgIHJldHVybiB+KChhYmlfdWxvbmcpMFVMKTsKIAogCS8q CiAJICogSWYgdGhlIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUgaGFzIGNoYW5nZWQsIHRoZW4gcHVu dCwgc2luY2UKQEAgLTg1OSw3ICs4NjksNyBAQAogCSAqLwogCWlmIChpbnRlcnBfZWxmX2V4LT5l X3BoZW50c2l6ZSAhPSBzaXplb2Yoc3RydWN0IGVsZl9waGRyKSkgewogCSAgICBmcmVlKGVsZl9w aGRhdGEpOwotCSAgICByZXR1cm4gfigodGFyZ2V0X3Vsb25nKTBVTCk7CisJICAgIHJldHVybiB+ KChhYmlfdWxvbmcpMFVMKTsKICAgICAgICAgfQogCiAJcmV0dmFsID0gbHNlZWsoaW50ZXJwcmV0 ZXJfZmQsIGludGVycF9lbGZfZXgtPmVfcGhvZmYsIFNFRUtfU0VUKTsKQEAgLTkwMCw4ICs5MTAs OCBAQAogCSAgaWYgKGVwcG50LT5wX3R5cGUgPT0gUFRfTE9BRCkgewogCSAgICBpbnQgZWxmX3R5 cGUgPSBNQVBfUFJJVkFURSB8IE1BUF9ERU5ZV1JJVEU7CiAJICAgIGludCBlbGZfcHJvdCA9IDA7 Ci0JICAgIHRhcmdldF91bG9uZyB2YWRkciA9IDA7Ci0JICAgIHRhcmdldF91bG9uZyBrOworCSAg ICBhYmlfdWxvbmcgdmFkZHIgPSAwOworCSAgICBhYmlfdWxvbmcgazsKIAogCSAgICBpZiAoZXBw bnQtPnBfZmxhZ3MgJiBQRl9SKSBlbGZfcHJvdCA9ICBQUk9UX1JFQUQ7CiAJICAgIGlmIChlcHBu dC0+cF9mbGFncyAmIFBGX1cpIGVsZl9wcm90IHw9IFBST1RfV1JJVEU7CkBAIC05MjEsNyArOTMx LDcgQEAKIAkgICAgICAvKiBSZWFsIGVycm9yICovCiAJICAgICAgY2xvc2UoaW50ZXJwcmV0ZXJf ZmQpOwogCSAgICAgIGZyZWUoZWxmX3BoZGF0YSk7Ci0JICAgICAgcmV0dXJuIH4oKHRhcmdldF91 bG9uZykwVUwpOworCSAgICAgIHJldHVybiB+KChhYmlfdWxvbmcpMFVMKTsKIAkgICAgfQogCiAJ ICAgIGlmICghbG9hZF9hZGRyX3NldCAmJiBpbnRlcnBfZWxmX2V4LT5lX3R5cGUgPT0gRVRfRFlO KSB7CkBAIC05NjYsNyArOTc2LDcgQEAKIAlmcmVlKGVsZl9waGRhdGEpOwogCiAJKmludGVycF9s b2FkX2FkZHIgPSBsb2FkX2FkZHI7Ci0JcmV0dXJuICgodGFyZ2V0X3Vsb25nKSBpbnRlcnBfZWxm X2V4LT5lX2VudHJ5KSArIGxvYWRfYWRkcjsKKwlyZXR1cm4gKChhYmlfdWxvbmcpIGludGVycF9l bGZfZXgtPmVfZW50cnkpICsgbG9hZF9hZGRyOwogfQogCiAvKiBCZXN0IGF0dGVtcHQgdG8gbG9h ZCBzeW1ib2xzIGZyb20gdGhpcyBFTEYgb2JqZWN0LiAqLwpAQCAtMTA1NCwyMiArMTA2NCwyMiBA QAogICAgIHN0cnVjdCBlbGZoZHIgaW50ZXJwX2VsZl9leDsKICAgICBzdHJ1Y3QgZXhlYyBpbnRl cnBfZXg7CiAgICAgaW50IGludGVycHJldGVyX2ZkID0gLTE7IC8qIGF2b2lkIHdhcm5pbmcgKi8K LSAgICB0YXJnZXRfdWxvbmcgbG9hZF9hZGRyLCBsb2FkX2JpYXM7CisgICAgYWJpX3Vsb25nIGxv YWRfYWRkciwgbG9hZF9iaWFzOwogICAgIGludCBsb2FkX2FkZHJfc2V0ID0gMDsKICAgICB1bnNp Z25lZCBpbnQgaW50ZXJwcmV0ZXJfdHlwZSA9IElOVEVSUFJFVEVSX05PTkU7CiAgICAgdW5zaWdu ZWQgY2hhciBpYmNzMl9pbnRlcnByZXRlcjsKICAgICBpbnQgaTsKLSAgICB0YXJnZXRfdWxvbmcg bWFwcGVkX2FkZHI7CisgICAgYWJpX3Vsb25nIG1hcHBlZF9hZGRyOwogICAgIHN0cnVjdCBlbGZf cGhkciAqIGVsZl9wcG50OwogICAgIHN0cnVjdCBlbGZfcGhkciAqZWxmX3BoZGF0YTsKLSAgICB0 YXJnZXRfdWxvbmcgZWxmX2JzcywgaywgZWxmX2JyazsKKyAgICBhYmlfdWxvbmcgZWxmX2Jzcywg aywgZWxmX2JyazsKICAgICBpbnQgcmV0dmFsOwogICAgIGNoYXIgKiBlbGZfaW50ZXJwcmV0ZXI7 Ci0gICAgdGFyZ2V0X3Vsb25nIGVsZl9lbnRyeSwgaW50ZXJwX2xvYWRfYWRkciA9IDA7CisgICAg YWJpX3Vsb25nIGVsZl9lbnRyeSwgaW50ZXJwX2xvYWRfYWRkciA9IDA7CiAgICAgaW50IHN0YXR1 czsKLSAgICB0YXJnZXRfdWxvbmcgc3RhcnRfY29kZSwgZW5kX2NvZGUsIHN0YXJ0X2RhdGEsIGVu ZF9kYXRhOwotICAgIHRhcmdldF91bG9uZyByZWxvY19mdW5jX2Rlc2MgPSAwOwotICAgIHRhcmdl dF91bG9uZyBlbGZfc3RhY2s7CisgICAgYWJpX3Vsb25nIHN0YXJ0X2NvZGUsIGVuZF9jb2RlLCBz dGFydF9kYXRhLCBlbmRfZGF0YTsKKyAgICBhYmlfdWxvbmcgcmVsb2NfZnVuY19kZXNjID0gMDsK KyAgICBhYmlfdWxvbmcgZWxmX3N0YWNrOwogICAgIGNoYXIgcGFzc2VkX2ZpbGVub1s2XTsKIAog ICAgIGliY3MyX2ludGVycHJldGVyID0gMDsKQEAgLTExMjUsOSArMTEzNSw5IEBACiAgICAgZWxm X2JyayA9IDA7CiAKIAotICAgIGVsZl9zdGFjayA9IH4oKHRhcmdldF91bG9uZykwVUwpOworICAg IGVsZl9zdGFjayA9IH4oKGFiaV91bG9uZykwVUwpOwogICAgIGVsZl9pbnRlcnByZXRlciA9IE5V TEw7Ci0gICAgc3RhcnRfY29kZSA9IH4oKHRhcmdldF91bG9uZykwVUwpOworICAgIHN0YXJ0X2Nv ZGUgPSB+KChhYmlfdWxvbmcpMFVMKTsKICAgICBlbmRfY29kZSA9IDA7CiAgICAgc3RhcnRfZGF0 YSA9IDA7CiAgICAgZW5kX2RhdGEgPSAwOwpAQCAtMTI2Myw5ICsxMjczLDkgQEAKICAgICAvKiBP SywgVGhpcyBpcyB0aGUgcG9pbnQgb2Ygbm8gcmV0dXJuICovCiAgICAgaW5mby0+ZW5kX2RhdGEg PSAwOwogICAgIGluZm8tPmVuZF9jb2RlID0gMDsKLSAgICBpbmZvLT5zdGFydF9tbWFwID0gKHRh cmdldF91bG9uZylFTEZfU1RBUlRfTU1BUDsKKyAgICBpbmZvLT5zdGFydF9tbWFwID0gKGFiaV91 bG9uZylFTEZfU1RBUlRfTU1BUDsKICAgICBpbmZvLT5tbWFwID0gMDsKLSAgICBlbGZfZW50cnkg PSAodGFyZ2V0X3Vsb25nKSBlbGZfZXguZV9lbnRyeTsKKyAgICBlbGZfZW50cnkgPSAoYWJpX3Vs b25nKSBlbGZfZXguZV9lbnRyeTsKIAogICAgIC8qIERvIHRoaXMgc28gdGhhdCB3ZSBjYW4gbG9h ZCB0aGUgaW50ZXJwcmV0ZXIsIGlmIG5lZWQgYmUuICBXZSB3aWxsCiAgICAgICAgY2hhbmdlIHNv bWUgb2YgdGhlc2UgbGF0ZXIgKi8KQEAgLTEyODIsNyArMTI5Miw3IEBACiAgICAgZm9yKGkgPSAw LCBlbGZfcHBudCA9IGVsZl9waGRhdGE7IGkgPCBlbGZfZXguZV9waG51bTsgaSsrLCBlbGZfcHBu dCsrKSB7CiAgICAgICAgIGludCBlbGZfcHJvdCA9IDA7CiAgICAgICAgIGludCBlbGZfZmxhZ3Mg PSAwOwotICAgICAgICB0YXJnZXRfdWxvbmcgZXJyb3I7CisgICAgICAgIGFiaV91bG9uZyBlcnJv cjsKIAogCWlmIChlbGZfcHBudC0+cF90eXBlICE9IFBUX0xPQUQpCiAgICAgICAgICAgICBjb250 aW51ZTsKQEAgLTEzNzQsNyArMTM4NCw3IEBACiAJY2xvc2UoaW50ZXJwcmV0ZXJfZmQpOwogCWZy ZWUoZWxmX2ludGVycHJldGVyKTsKIAotCWlmIChlbGZfZW50cnkgPT0gfigodGFyZ2V0X3Vsb25n KTBVTCkpIHsKKwlpZiAoZWxmX2VudHJ5ID09IH4oKGFiaV91bG9uZykwVUwpKSB7CiAJICAgIHBy aW50ZigiVW5hYmxlIHRvIGxvYWQgaW50ZXJwcmV0ZXJcbiIpOwogCSAgICBmcmVlKGVsZl9waGRh dGEpOwogCSAgICBleGl0KC0xKTsKSW5kZXg6IHFlbXUvbGludXgtdXNlci9mbGF0LmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvZmxhdC5oCTIwMDctMTAtMTEgMTk6MTc6MTMu MDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvZmxhdC5oCTIwMDctMTAtMTEgMTk6 MTc6NDUuMDAwMDAwMDAwICswMDAwCkBAIC0yMiwyNSArMjIsMjUgQEAKIAogc3RydWN0IGZsYXRf aGRyIHsKIAljaGFyIG1hZ2ljWzRdOwotCXRhcmdldF91bG9uZyByZXY7ICAgICAgICAgIC8qIHZl cnNpb24gKGFzIGFib3ZlKSAqLwotCXRhcmdldF91bG9uZyBlbnRyeTsgICAgICAgIC8qIE9mZnNl dCBvZiBmaXJzdCBleGVjdXRhYmxlIGluc3RydWN0aW9uCisJYWJpX3Vsb25nIHJldjsgICAgICAg ICAgLyogdmVyc2lvbiAoYXMgYWJvdmUpICovCisJYWJpX3Vsb25nIGVudHJ5OyAgICAgICAgLyog T2Zmc2V0IG9mIGZpcnN0IGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb24KIAkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2l0aCB0ZXh0IHNlZ21lbnQgZnJvbSBiZWdpbm5pbmcgb2YgZmlsZSAq LwotCXRhcmdldF91bG9uZyBkYXRhX3N0YXJ0OyAgIC8qIE9mZnNldCBvZiBkYXRhIHNlZ21lbnQg ZnJvbSBiZWdpbm5pbmcgb2YKKwlhYmlfdWxvbmcgZGF0YV9zdGFydDsgICAvKiBPZmZzZXQgb2Yg ZGF0YSBzZWdtZW50IGZyb20gYmVnaW5uaW5nIG9mCiAJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZpbGUgKi8KLQl0YXJnZXRfdWxvbmcgZGF0YV9lbmQ7ICAgICAvKiBPZmZzZXQgb2Yg ZW5kIG9mIGRhdGEgc2VnbWVudAorCWFiaV91bG9uZyBkYXRhX2VuZDsgICAgIC8qIE9mZnNldCBv ZiBlbmQgb2YgZGF0YSBzZWdtZW50CiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy b20gYmVnaW5uaW5nIG9mIGZpbGUgKi8KLQl0YXJnZXRfdWxvbmcgYnNzX2VuZDsgICAgICAvKiBP ZmZzZXQgb2YgZW5kIG9mIGJzcyBzZWdtZW50IGZyb20gYmVnaW5uaW5nCisJYWJpX3Vsb25nIGJz c19lbmQ7ICAgICAgLyogT2Zmc2V0IG9mIGVuZCBvZiBic3Mgc2VnbWVudCBmcm9tIGJlZ2lubmlu ZwogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBmaWxlICovCiAKIAkvKiAoSXQg aXMgYXNzdW1lZCB0aGF0IGRhdGFfZW5kIHRocm91Z2ggYnNzX2VuZCBmb3JtcyB0aGUgYnNzIHNl Z21lbnQuKSAqLwogCi0JdGFyZ2V0X3Vsb25nIHN0YWNrX3NpemU7ICAgLyogU2l6ZSBvZiBzdGFj aywgaW4gYnl0ZXMgKi8KLQl0YXJnZXRfdWxvbmcgcmVsb2Nfc3RhcnQ7ICAvKiBPZmZzZXQgb2Yg cmVsb2NhdGlvbiByZWNvcmRzIGZyb20KKwlhYmlfdWxvbmcgc3RhY2tfc2l6ZTsgICAvKiBTaXpl IG9mIHN0YWNrLCBpbiBieXRlcyAqLworCWFiaV91bG9uZyByZWxvY19zdGFydDsgIC8qIE9mZnNl dCBvZiByZWxvY2F0aW9uIHJlY29yZHMgZnJvbQogCSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZWdpbm5pbmcgb2YgZmlsZSAqLwotCXRhcmdldF91bG9uZyByZWxvY19jb3VudDsgIC8q IE51bWJlciBvZiByZWxvY2F0aW9uIHJlY29yZHMgKi8KLQl0YXJnZXRfdWxvbmcgZmxhZ3M7Ci0J dGFyZ2V0X3Vsb25nIGJ1aWxkX2RhdGU7ICAgLyogV2hlbiB0aGUgcHJvZ3JhbS9saWJyYXJ5IHdh cyBidWlsdCAqLwotCXRhcmdldF91bG9uZyBmaWxsZXJbNV07ICAgIC8qIFJlc2VydmVyZWQsIHNl dCB0byB6ZXJvICovCisJYWJpX3Vsb25nIHJlbG9jX2NvdW50OyAgLyogTnVtYmVyIG9mIHJlbG9j YXRpb24gcmVjb3JkcyAqLworCWFiaV91bG9uZyBmbGFnczsKKwlhYmlfdWxvbmcgYnVpbGRfZGF0 ZTsgICAvKiBXaGVuIHRoZSBwcm9ncmFtL2xpYnJhcnkgd2FzIGJ1aWx0ICovCisJYWJpX3Vsb25n IGZpbGxlcls1XTsgICAgLyogUmVzZXJ2ZXJlZCwgc2V0IHRvIHplcm8gKi8KIH07CiAKICNkZWZp bmUgRkxBVF9GTEFHX1JBTSAgICAweDAwMDEgLyogbG9hZCBwcm9ncmFtIGVudGlyZWx5IGludG8g UkFNICovCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvZmxhdGxvYWQuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBx ZW11Lm9yaWcvbGludXgtdXNlci9mbGF0bG9hZC5jCTIwMDctMTAtMTEgMTk6MTc6MTMuMDAwMDAw MDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvZmxhdGxvYWQuYwkyMDA3LTEwLTExIDE5OjE3 OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNjMsMTMgKzYzLDEzIEBACiAjZGVmaW5lIFVOTE9BREVE X0xJQiAweDdmZjAwMGZmCQkvKiBQbGFjZWhvbGRlciBmb3IgdW51c2VkIGxpYnJhcnkgKi8KIAog c3RydWN0IGxpYl9pbmZvIHsKLSAgICB0YXJnZXRfdWxvbmcgc3RhcnRfY29kZTsJLyogU3RhcnQg b2YgdGV4dCBzZWdtZW50ICovCi0gICAgdGFyZ2V0X3Vsb25nIHN0YXJ0X2RhdGE7CS8qIFN0YXJ0 IG9mIGRhdGEgc2VnbWVudCAqLwotICAgIHRhcmdldF91bG9uZyBlbmRfZGF0YTsgICAgICAvKiBT dGFydCBvZiBic3Mgc2VjdGlvbiAqLwotICAgIHRhcmdldF91bG9uZyBzdGFydF9icms7CS8qIEVu ZCBvZiBkYXRhIHNlZ21lbnQgKi8KLSAgICB0YXJnZXRfdWxvbmcgdGV4dF9sZW47CS8qIExlbmd0 aCBvZiB0ZXh0IHNlZ21lbnQgKi8KLSAgICB0YXJnZXRfdWxvbmcgZW50cnk7CQkvKiBTdGFydCBh ZGRyZXNzIGZvciB0aGlzIG1vZHVsZSAqLwotICAgIHRhcmdldF91bG9uZyBidWlsZF9kYXRlOwkv KiBXaGVuIHRoaXMgb25lIHdhcyBjb21waWxlZCAqLworICAgIGFiaV91bG9uZyBzdGFydF9jb2Rl OwkvKiBTdGFydCBvZiB0ZXh0IHNlZ21lbnQgKi8KKyAgICBhYmlfdWxvbmcgc3RhcnRfZGF0YTsJ LyogU3RhcnQgb2YgZGF0YSBzZWdtZW50ICovCisgICAgYWJpX3Vsb25nIGVuZF9kYXRhOyAgICAg IC8qIFN0YXJ0IG9mIGJzcyBzZWN0aW9uICovCisgICAgYWJpX3Vsb25nIHN0YXJ0X2JyazsJLyog RW5kIG9mIGRhdGEgc2VnbWVudCAqLworICAgIGFiaV91bG9uZyB0ZXh0X2xlbjsJLyogTGVuZ3Ro IG9mIHRleHQgc2VnbWVudCAqLworICAgIGFiaV91bG9uZyBlbnRyeTsJCS8qIFN0YXJ0IGFkZHJl c3MgZm9yIHRoaXMgbW9kdWxlICovCisgICAgYWJpX3Vsb25nIGJ1aWxkX2RhdGU7CS8qIFdoZW4g dGhpcyBvbmUgd2FzIGNvbXBpbGVkICovCiAgICAgc2hvcnQgbG9hZGVkOwkJLyogSGFzIHRoaXMg bGlicmFyeSBiZWVuIGxvYWRlZD8gKi8KIH07CiAKQEAgLTg5LDcgKzg5LDcgQEAKICAqLwogCiAv KiBQdXNoIGEgYmxvY2sgb2Ygc3RyaW5ncyBvbnRvIHRoZSBndWVzdCBzdGFjay4gICovCi1zdGF0 aWMgdGFyZ2V0X3Vsb25nIGNvcHlfc3RyaW5ncyh0YXJnZXRfdWxvbmcgcCwgaW50IG4sIGNoYXIg KipzKQorc3RhdGljIGFiaV91bG9uZyBjb3B5X3N0cmluZ3MoYWJpX3Vsb25nIHAsIGludCBuLCBj aGFyICoqcykKIHsKICAgICBpbnQgbGVuOwogCkBAIC0xMDIsOCArMTAyLDggQEAKICAgICByZXR1 cm4gcDsKIH0KIAotaW50IHRhcmdldF9wcmVhZChpbnQgZmQsIHRhcmdldF91bG9uZyBwdHIsIHRh cmdldF91bG9uZyBsZW4sCi0gICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBvZmZzZXQpCitp bnQgdGFyZ2V0X3ByZWFkKGludCBmZCwgYWJpX3Vsb25nIHB0ciwgYWJpX3Vsb25nIGxlbiwKKyAg ICAgICAgICAgICAgICAgYWJpX3Vsb25nIG9mZnNldCkKIHsKICAgICB2b2lkICpidWY7CiAgICAg aW50IHJldDsKQEAgLTI2MiwxNSArMjYyLDE1IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwog Ci1zdGF0aWMgdGFyZ2V0X3Vsb25nCi1jYWxjX3JlbG9jKHRhcmdldF91bG9uZyByLCBzdHJ1Y3Qg bGliX2luZm8gKnAsIGludCBjdXJpZCwgaW50IGludGVybmFscCkKK3N0YXRpYyBhYmlfdWxvbmcK K2NhbGNfcmVsb2MoYWJpX3Vsb25nIHIsIHN0cnVjdCBsaWJfaW5mbyAqcCwgaW50IGN1cmlkLCBp bnQgaW50ZXJuYWxwKQogewotICAgIHRhcmdldF91bG9uZyBhZGRyOworICAgIGFiaV91bG9uZyBh ZGRyOwogICAgIGludCBpZDsKLSAgICB0YXJnZXRfdWxvbmcgc3RhcnRfYnJrOwotICAgIHRhcmdl dF91bG9uZyBzdGFydF9kYXRhOwotICAgIHRhcmdldF91bG9uZyB0ZXh0X2xlbjsKLSAgICB0YXJn ZXRfdWxvbmcgc3RhcnRfY29kZTsKKyAgICBhYmlfdWxvbmcgc3RhcnRfYnJrOworICAgIGFiaV91 bG9uZyBzdGFydF9kYXRhOworICAgIGFiaV91bG9uZyB0ZXh0X2xlbjsKKyAgICBhYmlfdWxvbmcg c3RhcnRfY29kZTsKIAogI2lmZGVmIENPTkZJR19CSU5GTVRfU0hBUkVEX0ZMQVQKICNlcnJvciBu ZWVkcyBjaGVja2luZwpAQCAtMzgxLDE5ICszODEsMTkgQEAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwogCiBzdGF0aWMgaW50IGxvYWRfZmxhdF9maWxlKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJt LAotCQlzdHJ1Y3QgbGliX2luZm8gKmxpYmluZm8sIGludCBpZCwgdGFyZ2V0X3Vsb25nICpleHRy YV9zdGFjaykKKwkJc3RydWN0IGxpYl9pbmZvICpsaWJpbmZvLCBpbnQgaWQsIGFiaV91bG9uZyAq ZXh0cmFfc3RhY2spCiB7CiAgICAgc3RydWN0IGZsYXRfaGRyICogaGRyOwotICAgIHRhcmdldF91 bG9uZyB0ZXh0cG9zID0gMCwgZGF0YXBvcyA9IDAsIHJlc3VsdDsKLSAgICB0YXJnZXRfdWxvbmcg cmVhbGRhdGFzdGFydCA9IDA7Ci0gICAgdGFyZ2V0X3Vsb25nIHRleHRfbGVuLCBkYXRhX2xlbiwg YnNzX2xlbiwgc3RhY2tfbGVuLCBmbGFnczsKLSAgICB0YXJnZXRfdWxvbmcgbWVtcCA9IDA7IC8q IGZvciBmaW5kaW5nIHRoZSBicmsgYXJlYSAqLwotICAgIHRhcmdldF91bG9uZyBleHRyYTsKLSAg ICB0YXJnZXRfdWxvbmcgcmVsb2MgPSAwLCBycDsKKyAgICBhYmlfdWxvbmcgdGV4dHBvcyA9IDAs IGRhdGFwb3MgPSAwLCByZXN1bHQ7CisgICAgYWJpX3Vsb25nIHJlYWxkYXRhc3RhcnQgPSAwOwor ICAgIGFiaV91bG9uZyB0ZXh0X2xlbiwgZGF0YV9sZW4sIGJzc19sZW4sIHN0YWNrX2xlbiwgZmxh Z3M7CisgICAgYWJpX3Vsb25nIG1lbXAgPSAwOyAvKiBmb3IgZmluZGluZyB0aGUgYnJrIGFyZWEg Ki8KKyAgICBhYmlfdWxvbmcgZXh0cmE7CisgICAgYWJpX3Vsb25nIHJlbG9jID0gMCwgcnA7CiAg ICAgaW50IGksIHJldiwgcmVsb2NzID0gMDsKLSAgICB0YXJnZXRfdWxvbmcgZnBvczsKLSAgICB0 YXJnZXRfdWxvbmcgc3RhcnRfY29kZSwgZW5kX2NvZGU7Ci0gICAgdGFyZ2V0X3Vsb25nIGluZHhf bGVuOworICAgIGFiaV91bG9uZyBmcG9zOworICAgIGFiaV91bG9uZyBzdGFydF9jb2RlLCBlbmRf Y29kZTsKKyAgICBhYmlfdWxvbmcgaW5keF9sZW47CiAKICAgICBoZHIgPSAoKHN0cnVjdCBmbGF0 X2hkciAqKSBicHJtLT5idWYpOwkJLyogZXhlYy1oZWFkZXIgKi8KIApAQCAtNDQwLDE0ICs0NDAs MTQgQEAKICAgICAvKgogICAgICAqIGNhbGN1bGF0ZSB0aGUgZXh0cmEgc3BhY2Ugd2UgbmVlZCB0 byBtYXAgaW4KICAgICAgKi8KLSAgICBleHRyYSA9IHJlbG9jcyAqIHNpemVvZih0YXJnZXRfdWxv bmcpOworICAgIGV4dHJhID0gcmVsb2NzICogc2l6ZW9mKGFiaV91bG9uZyk7CiAgICAgaWYgKGV4 dHJhIDwgYnNzX2xlbiArIHN0YWNrX2xlbikKICAgICAgICAgZXh0cmEgPSBic3NfbGVuICsgc3Rh Y2tfbGVuOwogCiAgICAgLyogQWRkIHNwYWNlIGZvciBsaWJyYXJ5IGJhc2UgcG9pbnRlcnMuICBN YWtlIHN1cmUgdGhpcyBkb2VzIG5vdAogICAgICAgIG1pc2FsaWduIHRoZSAgZG9lc24ndCBtaXNh bGlnbiB0aGUgZGF0YSBzZWdtZW50LiAgKi8KLSAgICBpbmR4X2xlbiA9IE1BWF9TSEFSRURfTElC UyAqIHNpemVvZih0YXJnZXRfdWxvbmcpOwotICAgIGluZHhfbGVuID0gKGluZHhfbGVuICsgMTUp ICYgfih0YXJnZXRfdWxvbmcpMTU7CisgICAgaW5keF9sZW4gPSBNQVhfU0hBUkVEX0xJQlMgKiBz aXplb2YoYWJpX3Vsb25nKTsKKyAgICBpbmR4X2xlbiA9IChpbmR4X2xlbiArIDE1KSAmIH4oYWJp X3Vsb25nKTE1OwogCiAgICAgLyoKICAgICAgKiB0aGVyZSBhcmUgYSBjb3VwbGUgb2YgY2FzZXMg aGVyZSwgIHRoZSBzZXBhcmF0ZSBjb2RlL2RhdGEKQEAgLTQ4NSwxMiArNDg1LDEyIEBACiAjaWZk ZWYgQ09ORklHX0JJTkZNVF9aRkxBVAogICAgICAgICBpZiAoZmxhZ3MgJiBGTEFUX0ZMQUdfR1pE QVRBKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzX2V4ZWMoYnBybSwgZnBvcywg KGNoYXIgKikgZGF0YXBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhX2xlbiArIChyZWxvY3MgKiBzaXplb2YodGFyZ2V0X3Vsb25nKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9sZW4gKyAocmVsb2NzICogc2l6ZW9mKGFiaV91 bG9uZykpKQogICAgICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICB7CiAgICAgICAgICAgICBy ZXN1bHQgPSB0YXJnZXRfcHJlYWQoYnBybS0+ZmQsIGRhdGFwb3MsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YV9sZW4gKyAocmVsb2NzICogc2l6ZW9mKHRhcmdldF91bG9u ZykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfbGVuICsgKHJlbG9j cyAqIHNpemVvZihhYmlfdWxvbmcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmcG9zKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzdWx0IDwgMCkgewpAQCAtNTQ0LDcg KzU0NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dF9sZW4sIDAp OwogICAgICAgICAgICAgaWYgKHJlc3VsdCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0 ID0gdGFyZ2V0X3ByZWFkKGJwcm0tPmZkLCBkYXRhcG9zLAotICAgICAgICAgICAgICAgICAgICBk YXRhX2xlbiArIChyZWxvY3MgKiBzaXplb2YodGFyZ2V0X3Vsb25nKSksCisgICAgICAgICAgICAg ICAgICAgIGRhdGFfbGVuICsgKHJlbG9jcyAqIHNpemVvZihhYmlfdWxvbmcpKSwKICAgICAgICAg ICAgICAgICAgICAgbnRvaGwoaGRyLT5kYXRhX3N0YXJ0KSk7CiAgICAgICAgICAgICB9CiAgICAg ICAgIH0KQEAgLTU5Nyw3ICs1OTcsNyBAQAogICAgIGlmIChmbGFncyAmIEZMQVRfRkxBR19HT1RQ SUMpIHsKICAgICAgICAgcnAgPSBkYXRhcG9zOwogICAgICAgICB3aGlsZSAoMSkgewotICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIGFkZHI7CisgICAgICAgICAgICBhYmlfdWxvbmcgYWRkcjsKICAg ICAgICAgICAgIGFkZHIgPSB0Z2V0bChycCk7CiAgICAgICAgICAgICBpZiAoYWRkciA9PSAtMSkK ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTYwNyw3ICs2MDcsNyBAQAogICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVOT0VYRUM7CiAgICAgICAgICAgICAgICAgdHB1dGwocnAsIGFkZHIp OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcnAgKz0gc2l6ZW9mKHRhcmdldF91bG9uZyk7 CisgICAgICAgICAgICBycCArPSBzaXplb2YoYWJpX3Vsb25nKTsKICAgICAgICAgfQogICAgIH0K IApAQCAtNjI0LDEyICs2MjQsMTIgQEAKICAgICAgKi8KICAgICBpZiAocmV2ID4gT0xEX0ZMQVRf VkVSU0lPTikgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVsb2NzOyBpKyspIHsKLSAgICAg ICAgICAgIHRhcmdldF91bG9uZyBhZGRyLCByZWx2YWw7CisgICAgICAgICAgICBhYmlfdWxvbmcg YWRkciwgcmVsdmFsOwogCiAgICAgICAgICAgICAvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIHBv aW50ZXIgdG8gYmUKICAgICAgICAgICAgICAgIHJlbG9jYXRlZCAob2YgY291cnNlLCB0aGUgYWRk cmVzcyBoYXMgdG8gYmUKICAgICAgICAgICAgICAgIHJlbG9jYXRlZCBmaXJzdCkuICAqLwotICAg ICAgICAgICAgcmVsdmFsID0gdGdldGwocmVsb2MgKyBpICogc2l6ZW9mICh0YXJnZXRfdWxvbmcp KTsKKyAgICAgICAgICAgIHJlbHZhbCA9IHRnZXRsKHJlbG9jICsgaSAqIHNpemVvZiAoYWJpX3Vs b25nKSk7CiAgICAgICAgICAgICBhZGRyID0gZmxhdF9nZXRfcmVsb2NhdGVfYWRkcihyZWx2YWwp OwogICAgICAgICAgICAgcnAgPSBjYWxjX3JlbG9jKGFkZHIsIGxpYmluZm8sIGlkLCAxKTsKICAg ICAgICAgICAgIGlmIChycCA9PSBSRUxPQ19GQUlMRUQpCkBAIC02NTcsOCArNjU3LDggQEAKICAg ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByZWxvY3M7IGkr KykgewotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHJlbHZhbDsKLSAgICAgICAgICAgIHJlbHZh bCA9IHRnZXRsKHJlbG9jICsgaSAqIHNpemVvZiAodGFyZ2V0X3Vsb25nKSk7CisgICAgICAgICAg ICBhYmlfdWxvbmcgcmVsdmFsOworICAgICAgICAgICAgcmVsdmFsID0gdGdldGwocmVsb2MgKyBp ICogc2l6ZW9mIChhYmlfdWxvbmcpKTsKICAgICAgICAgICAgIG9sZF9yZWxvYygmbGliaW5mb1sw XSwgcmVsdmFsKTsKICAgICAgICAgfQogICAgIH0KQEAgLTcxMiwxMCArNzEyLDEwIEBACiAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpbWFnZV9pbmZvICogaW5mbykKIHsKICAgICBzdHJ1Y3Qg bGliX2luZm8gbGliaW5mb1tNQVhfU0hBUkVEX0xJQlNdOwotICAgIHRhcmdldF91bG9uZyBwID0g YnBybS0+cDsKLSAgICB0YXJnZXRfdWxvbmcgc3RhY2tfbGVuOwotICAgIHRhcmdldF91bG9uZyBz dGFydF9hZGRyOwotICAgIHRhcmdldF91bG9uZyBzcDsKKyAgICBhYmlfdWxvbmcgcCA9IGJwcm0t PnA7CisgICAgYWJpX3Vsb25nIHN0YWNrX2xlbjsKKyAgICBhYmlfdWxvbmcgc3RhcnRfYWRkcjsK KyAgICBhYmlfdWxvbmcgc3A7CiAgICAgaW50IHJlczsKICAgICBpbnQgaSwgajsKIApAQCAtNzQw LDcgKzc0MCw3IEBACiAgICAgLyogVXBkYXRlIGRhdGEgc2VnbWVudCBwb2ludGVycyBmb3IgYWxs IGxpYnJhcmllcyAqLwogICAgIGZvciAoaT0wOyBpPE1BWF9TSEFSRURfTElCUzsgaSsrKSB7CiAg ICAgICAgIGlmIChsaWJpbmZvW2ldLmxvYWRlZCkgewotICAgICAgICAgICAgdGFyZ2V0X3Vsb25n IHA7CisgICAgICAgICAgICBhYmlfdWxvbmcgcDsKICAgICAgICAgICAgIHAgPSBsaWJpbmZvW2ld LnN0YXJ0X2RhdGE7CiAgICAgICAgICAgICBmb3IgKGo9MDsgajxNQVhfU0hBUkVEX0xJQlM7IGor KykgewogICAgICAgICAgICAgICAgIHAgLT0gNDsKQEAgLTc1OCwxMiArNzU4LDEyIEBACiAgICAg cCA9IGNvcHlfc3RyaW5ncyhwLCBicHJtLT5lbnZjLCBicHJtLT5lbnZwKTsKICAgICBwID0gY29w eV9zdHJpbmdzKHAsIGJwcm0tPmFyZ2MsIGJwcm0tPmFyZ3YpOwogICAgIC8qIEFsaWduIHN0YWNr LiAgKi8KLSAgICBzcCA9IHAgJiB+KHRhcmdldF91bG9uZykoc2l6ZW9mKHRhcmdldF91bG9uZykg LSAxKTsKKyAgICBzcCA9IHAgJiB+KGFiaV91bG9uZykoc2l6ZW9mKGFiaV91bG9uZykgLSAxKTsK ICAgICAvKiBFbmZvcmNlIGZpbmFsIHN0YWNrIGFsaWdubWVudCBvZiAxNiBieXRlcy4gIFRoaXMg aXMgc3VmZmljaWVudAogICAgICAgIGZvciBhbGwgY3VycmVudCB0YXJnZXRzLCBhbmQgZXhjZXNz IGFsaWdubWVudCBpcyBoYXJtbGVzcy4gICovCiAgICAgc3RhY2tfbGVuID0gYnBybS0+ZW52YyAr IGJwcm0tPmFyZ2MgKyAyOwogICAgIHN0YWNrX2xlbiArPSAzOwkvKiBhcmdjLCBhcnZnLCBhcmdw ICovCi0gICAgc3RhY2tfbGVuICo9IHNpemVvZih0YXJnZXRfdWxvbmcpOworICAgIHN0YWNrX2xl biAqPSBzaXplb2YoYWJpX3Vsb25nKTsKICAgICBpZiAoKHNwICsgc3RhY2tfbGVuKSAmIDE1KQog ICAgICAgICBzcCAtPSAxNiAtICgoc3AgKyBzdGFja19sZW4pICYgMTUpOwogICAgIHNwID0gbG9h ZGVyX2J1aWxkX2FyZ3B0cihicHJtLT5lbnZjLCBicHJtLT5hcmdjLCBzcCwgcCwgMSk7CkluZGV4 OiBxZW11L2xpbnV4LXVzZXIvaTM4Ni9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmln L2xpbnV4LXVzZXIvaTM4Ni9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzoxMy4wMDAwMDAwMDAg KzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9pMzg2L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3 OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMzEsNyArMzEsNyBAQAogCiBzdHJ1Y3QgdGFyZ2V0X21v ZGlmeV9sZHRfbGR0X3MgewogICAgIHVuc2lnbmVkIGludCAgZW50cnlfbnVtYmVyOwotICAgIHRh cmdldF91bG9uZyBiYXNlX2FkZHI7CisgICAgYWJpX3Vsb25nIGJhc2VfYWRkcjsKICAgICB1bnNp Z25lZCBpbnQgbGltaXQ7CiAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogfTsKQEAgLTc5LDIyICs3 OSwyMiBAQAogLyoKICAqIG5vcm1hbCByZWdzLCB3aXRoIHNwZWNpYWwgbWVhbmluZyBmb3IgdGhl IHNlZ21lbnQgZGVzY3JpcHRvcnMuLgogICovCi0JdGFyZ2V0X2xvbmcgZWJ4OwotCXRhcmdldF9s b25nIGVjeDsKLQl0YXJnZXRfbG9uZyBlZHg7Ci0JdGFyZ2V0X2xvbmcgZXNpOwotCXRhcmdldF9s b25nIGVkaTsKLQl0YXJnZXRfbG9uZyBlYnA7Ci0JdGFyZ2V0X2xvbmcgZWF4OwotCXRhcmdldF9s b25nIF9fbnVsbF9kczsKLQl0YXJnZXRfbG9uZyBfX251bGxfZXM7Ci0JdGFyZ2V0X2xvbmcgX19u dWxsX2ZzOwotCXRhcmdldF9sb25nIF9fbnVsbF9nczsKLQl0YXJnZXRfbG9uZyBvcmlnX2VheDsK LQl0YXJnZXRfbG9uZyBlaXA7CisJYWJpX2xvbmcgZWJ4OworCWFiaV9sb25nIGVjeDsKKwlhYmlf bG9uZyBlZHg7CisJYWJpX2xvbmcgZXNpOworCWFiaV9sb25nIGVkaTsKKwlhYmlfbG9uZyBlYnA7 CisJYWJpX2xvbmcgZWF4OworCWFiaV9sb25nIF9fbnVsbF9kczsKKwlhYmlfbG9uZyBfX251bGxf ZXM7CisJYWJpX2xvbmcgX19udWxsX2ZzOworCWFiaV9sb25nIF9fbnVsbF9nczsKKwlhYmlfbG9u ZyBvcmlnX2VheDsKKwlhYmlfbG9uZyBlaXA7CiAJdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwot CXRhcmdldF9sb25nIGVmbGFnczsKLQl0YXJnZXRfbG9uZyBlc3A7CisJYWJpX2xvbmcgZWZsYWdz OworCWFiaV9sb25nIGVzcDsKIAl1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CiAvKgogICogdGhl c2UgYXJlIHNwZWNpZmljIHRvIHY4NiBtb2RlOgpAQCAtMTA2LDE0ICsxMDYsMTQgQEAKIH07CiAK IHN0cnVjdCB0YXJnZXRfcmV2ZWN0b3JlZF9zdHJ1Y3QgewotCXRhcmdldF91bG9uZyBfX21hcFs4 XTsJCQkvKiAyNTYgYml0cyAqLworCWFiaV91bG9uZyBfX21hcFs4XTsJCQkvKiAyNTYgYml0cyAq LwogfTsKIAogc3RydWN0IHRhcmdldF92bTg2X3N0cnVjdCB7CiAJc3RydWN0IHRhcmdldF92bTg2 X3JlZ3MgcmVnczsKLQl0YXJnZXRfdWxvbmcgZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNjcmVlbl9i aXRtYXA7Ci0JdGFyZ2V0X3Vsb25nIGNwdV90eXBlOworCWFiaV91bG9uZyBmbGFnczsKKwlhYmlf dWxvbmcgc2NyZWVuX2JpdG1hcDsKKwlhYmlfdWxvbmcgY3B1X3R5cGU7CiAJc3RydWN0IHRhcmdl dF9yZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKIAlzdHJ1Y3QgdGFyZ2V0X3JldmVj dG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7CiB9OwpAQCAtMTI0LDcgKzEyNCw3IEBACiAj ZGVmaW5lIFRBUkdFVF9WTTg2X1NDUkVFTl9CSVRNQVAJMHgwMDAxCiAKIHN0cnVjdCB0YXJnZXRf dm04NnBsdXNfaW5mb19zdHJ1Y3QgewotICAgICAgICB0YXJnZXRfdWxvbmcgZmxhZ3M7CisgICAg ICAgIGFiaV91bG9uZyBmbGFnczsKICNkZWZpbmUgVEFSR0VUX2ZvcmNlX3JldHVybl9mb3JfcGlj ICgxIDw8IDApCiAjZGVmaW5lIFRBUkdFVF92bTg2ZGJnX2FjdGl2ZSAgICAgICAoMSA8PCAxKSAg LyogZm9yIGRlYnVnZ2VyICovCiAjZGVmaW5lIFRBUkdFVF92bTg2ZGJnX1RGcGVuZGlnICAgICAo MSA8PCAyKSAgLyogZm9yIGRlYnVnZ2VyICovCkBAIC0xMzQsOSArMTM0LDkgQEAKIAogc3RydWN0 IHRhcmdldF92bTg2cGx1c19zdHJ1Y3QgewogCXN0cnVjdCB0YXJnZXRfdm04Nl9yZWdzIHJlZ3M7 Ci0JdGFyZ2V0X3Vsb25nIGZsYWdzOwotCXRhcmdldF91bG9uZyBzY3JlZW5fYml0bWFwOwotCXRh cmdldF91bG9uZyBjcHVfdHlwZTsKKwlhYmlfdWxvbmcgZmxhZ3M7CisJYWJpX3Vsb25nIHNjcmVl bl9iaXRtYXA7CisJYWJpX3Vsb25nIGNwdV90eXBlOwogCXN0cnVjdCB0YXJnZXRfcmV2ZWN0b3Jl ZF9zdHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAJc3RydWN0IHRhcmdldF9yZXZlY3RvcmVkX3N0cnVj dCBpbnQyMV9yZXZlY3RvcmVkOwogCXN0cnVjdCB0YXJnZXRfdm04NnBsdXNfaW5mb19zdHJ1Y3Qg dm04NnBsdXM7CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvaTM4Ni90YXJnZXRfc2lnbmFsLmgKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvaTM4Ni90YXJnZXRfc2lnbmFsLmgJMjAw Ny0xMC0xMSAxOToxNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9pMzg2 L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAt Niw5ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBz eXNjYWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7 Ci0JdGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91 bG9uZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlh YmlfdWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBA QAogI2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1oJMjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RL U1oJCTgxOTIKIAotc3RhdGljIGlubGluZSB0YXJnZXRfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3Rh dGUoQ1BVWDg2U3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zy b21fY3B1c3RhdGUoQ1BVWDg2U3RhdGUgKnN0YXRlKQogewogICAgIHJldHVybiBzdGF0ZS0+cmVn c1tSX0VTUF07CiB9CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbGludXhsb2FkLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbGludXhsb2FkLmMJMjAwNy0xMC0xMSAxOToxNzox My4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9saW51eGxvYWQuYwkyMDA3LTEw LTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMTMsNyArMTMsNyBAQAogI2RlZmluZSBO R1JPVVBTIDMyCiAKIC8qID8/PyBUaGlzIHNob3VsZCByZWFsbHkgYmUgc29tZXdoZXJlIGVsc2Uu ICAqLwotdm9pZCBtZW1jcHlfdG9fdGFyZ2V0KHRhcmdldF91bG9uZyBkZXN0LCBjb25zdCB2b2lk ICpzcmMsCit2b2lkIG1lbWNweV90b190YXJnZXQoYWJpX3Vsb25nIGRlc3QsIGNvbnN0IHZvaWQg KnNyYywKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxlbikKIHsKICAgICB2 b2lkICpob3N0X3B0cjsKQEAgLTEwOSwxMiArMTA5LDEyIEBACiB9CiAKIC8qIENvbnN0cnVjdCB0 aGUgZW52cCBhbmQgYXJndiB0YWJsZXMgb24gdGhlIHRhcmdldCBzdGFjay4gICovCi10YXJnZXRf dWxvbmcgbG9hZGVyX2J1aWxkX2FyZ3B0cihpbnQgZW52YywgaW50IGFyZ2MsIHRhcmdldF91bG9u ZyBzcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBzdHJp bmdwLCBpbnQgcHVzaF9wdHIpCithYmlfdWxvbmcgbG9hZGVyX2J1aWxkX2FyZ3B0cihpbnQgZW52 YywgaW50IGFyZ2MsIGFiaV91bG9uZyBzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFiaV91bG9uZyBzdHJpbmdwLCBpbnQgcHVzaF9wdHIpCiB7Ci0gICAgaW50IG4gPSBzaXpl b2YodGFyZ2V0X3Vsb25nKTsKLSAgICB0YXJnZXRfdWxvbmcgZW52cDsKLSAgICB0YXJnZXRfdWxv bmcgYXJndjsKKyAgICBpbnQgbiA9IHNpemVvZihhYmlfdWxvbmcpOworICAgIGFiaV91bG9uZyBl bnZwOworICAgIGFiaV91bG9uZyBhcmd2OwogCiAgICAgc3AgLT0gKGVudmMgKyAxKSAqIG47CiAg ICAgZW52cCA9IHNwOwpJbmRleDogcWVtdS9saW51eC11c2VyL202OGsvc3lzY2FsbC5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL202OGsvc3lzY2FsbC5oCTIwMDctMTAtMTEg MTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvbTY4ay9zeXNjYWxs LmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTMsMTQgKzMsMTQgQEAK ICAgIHN0YWNrIGR1cmluZyBhIHN5c3RlbSBjYWxsLiAqLwogCiBzdHJ1Y3QgdGFyZ2V0X3B0X3Jl Z3MgewotICAgIHRhcmdldF9sb25nIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3OwotICAgIHRh cmdldF9sb25nIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2OwotICAgIHRhcmdldF91bG9uZyBk MDsKLSAgICB0YXJnZXRfdWxvbmcgdXNwOwotICAgIHRhcmdldF91bG9uZyBvcmlnX2QwOworICAg IGFiaV9sb25nIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3OworICAgIGFiaV9sb25nIGEwLCBh MSwgYTIsIGEzLCBhNCwgYTUsIGE2OworICAgIGFiaV91bG9uZyBkMDsKKyAgICBhYmlfdWxvbmcg dXNwOworICAgIGFiaV91bG9uZyBvcmlnX2QwOwogICAgIGludDE2X3Qgc3RrYWRqOwogICAgIHVp bnQxNl90IHNyOwotICAgIHRhcmdldF91bG9uZyBwYzsKKyAgICBhYmlfdWxvbmcgcGM7CiAgICAg dWludDE2X3QgZm50dmV4OwogICAgIHVpbnQxNl90IF9fZmlsbDsKIH07CkluZGV4OiBxZW11L2xp bnV4LXVzZXIvbTY4ay90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xp bnV4LXVzZXIvbTY4ay90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9tNjhrL3RhcmdldF9zaWduYWwuaAkyMDA3LTEw LTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNiw5ICs2LDkgQEAKIC8qIHRoaXMgc3Ry dWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBzeXNjYWxsIGhhbmRsaW5nICovCiAKIHR5 cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NwOwot CXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91bG9uZyBzc19zaXplOworCWFiaV91bG9u ZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlhYmlfdWxvbmcgc3Nfc2l6ZTsKIH0gdGFy Z2V0X3N0YWNrX3Q7CiAKIApJbmRleDogcWVtdS9saW51eC11c2VyL21haW4uYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9tYWluLmMJMjAwNy0xMC0xMSAxOToxNzoxMy4wMDAw MDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9tYWluLmMJMjAwNy0xMC0xMSAxOToxNzo0 Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTE2OCw3ICsxNjgsNyBAQAogdm9pZCBjcHVfbG9vcChDUFVY ODZTdGF0ZSAqZW52KQogewogICAgIGludCB0cmFwbnI7Ci0gICAgdGFyZ2V0X3Vsb25nIHBjOwor ICAgIGFiaV91bG9uZyBwYzsKICAgICB0YXJnZXRfc2lnaW5mb190IGluZm87CiAKICAgICBmb3Io OzspIHsKQEAgLTMwNSwxMSArMzA1LDExIEBACiAjaWZkZWYgVEFSR0VUX0FSTQogCiAvKiBYWFg6 IGZpbmQgYSBiZXR0ZXIgc29sdXRpb24gKi8KLWV4dGVybiB2b2lkIHRiX2ludmFsaWRhdGVfcGFn ZV9yYW5nZSh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91bG9uZyBlbmQpOworZXh0ZXJuIHZv aWQgdGJfaW52YWxpZGF0ZV9wYWdlX3JhbmdlKGFiaV91bG9uZyBzdGFydCwgYWJpX3Vsb25nIGVu ZCk7CiAKLXN0YXRpYyB2b2lkIGFybV9jYWNoZV9mbHVzaCh0YXJnZXRfdWxvbmcgc3RhcnQsIHRh cmdldF91bG9uZyBsYXN0KQorc3RhdGljIHZvaWQgYXJtX2NhY2hlX2ZsdXNoKGFiaV91bG9uZyBz dGFydCwgYWJpX3Vsb25nIGxhc3QpCiB7Ci0gICAgdGFyZ2V0X3Vsb25nIGFkZHIsIGxhc3QxOwor ICAgIGFiaV91bG9uZyBhZGRyLCBsYXN0MTsKIAogICAgIGlmIChsYXN0IDwgc3RhcnQpCiAgICAg ICAgIHJldHVybjsKQEAgLTQ3NCw3ICs0NzQsNyBAQAogc3RhdGljIGlubGluZSB2b2lkIHNhdmVf d2luZG93X29mZnNldChDUFVTUEFSQ1N0YXRlICplbnYsIGludCBjd3AxKQogewogICAgIHVuc2ln bmVkIGludCBpOwotICAgIHRhcmdldF91bG9uZyBzcF9wdHI7CisgICAgYWJpX3Vsb25nIHNwX3B0 cjsKIAogICAgIHNwX3B0ciA9IGVudi0+cmVnYmFzZVtnZXRfcmVnX2luZGV4KGVudiwgY3dwMSwg NildOwogI2lmIGRlZmluZWQoREVCVUdfV0lOKQpAQCAtNDgzLDcgKzQ4Myw3IEBACiAjZW5kaWYK ICAgICBmb3IoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CiAgICAgICAgIHRwdXRsKHNwX3B0ciwgZW52 LT5yZWdiYXNlW2dldF9yZWdfaW5kZXgoZW52LCBjd3AxLCA4ICsgaSldKTsKLSAgICAgICAgc3Bf cHRyICs9IHNpemVvZih0YXJnZXRfdWxvbmcpOworICAgICAgICBzcF9wdHIgKz0gc2l6ZW9mKGFi aV91bG9uZyk7CiAgICAgfQogfQogCkBAIC01MDUsNyArNTA1LDcgQEAKIHN0YXRpYyB2b2lkIHJl c3RvcmVfd2luZG93KENQVVNQQVJDU3RhdGUgKmVudikKIHsKICAgICB1bnNpZ25lZCBpbnQgbmV3 X3dpbSwgaSwgY3dwMTsKLSAgICB0YXJnZXRfdWxvbmcgc3BfcHRyOworICAgIGFiaV91bG9uZyBz cF9wdHI7CiAKICAgICBuZXdfd2ltID0gKChlbnYtPndpbSA8PCAxKSB8IChlbnYtPndpbSA+PiAo TldJTkRPV1MgLSAxKSkpICYKICAgICAgICAgKCgxTEwgPDwgTldJTkRPV1MpIC0gMSk7CkBAIC01 MTksNyArNTE5LDcgQEAKICNlbmRpZgogICAgIGZvcihpID0gMDsgaSA8IDE2OyBpKyspIHsKICAg ICAgICAgZW52LT5yZWdiYXNlW2dldF9yZWdfaW5kZXgoZW52LCBjd3AxLCA4ICsgaSldID0gdGdl dGwoc3BfcHRyKTsKLSAgICAgICAgc3BfcHRyICs9IHNpemVvZih0YXJnZXRfdWxvbmcpOworICAg ICAgICBzcF9wdHIgKz0gc2l6ZW9mKGFiaV91bG9uZyk7CiAgICAgfQogICAgIGVudi0+d2ltID0g bmV3X3dpbTsKICNpZmRlZiBUQVJHRVRfU1BBUkM2NApAQCAtNTcyLDE0ICs1NzIsMTQgQEAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+cmVnd3B0clsyXSwgZW52LT5yZWd3cHRy WzNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5yZWd3cHRyWzRdLCBlbnYt PnJlZ3dwdHJbNV0pOwogICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBpbnQpcmV0ID49ICh1bnNp Z25lZCBpbnQpKC01MTUpKSB7Ci0jaWZkZWYgVEFSR0VUX1NQQVJDNjQKKyNpZiBkZWZpbmVkKFRB UkdFVF9TUEFSQzY0KSAmJiAhZGVmaW5lZChUQVJHRVRfQUJJMzIpCiAgICAgICAgICAgICAgICAg ZW52LT54Y2MgfD0gUFNSX0NBUlJZOwogI2Vsc2UKICAgICAgICAgICAgICAgICBlbnYtPnBzciB8 PSBQU1JfQ0FSUlk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICByZXQgPSAtcmV0OwogICAgICAg ICAgICAgfSBlbHNlIHsKLSNpZmRlZiBUQVJHRVRfU1BBUkM2NAorI2lmIGRlZmluZWQoVEFSR0VU X1NQQVJDNjQpICYmICFkZWZpbmVkKFRBUkdFVF9BQkkzMikKICAgICAgICAgICAgICAgICBlbnYt PnhjYyAmPSB+UFNSX0NBUlJZOwogI2Vsc2UKICAgICAgICAgICAgICAgICBlbnYtPnBzciAmPSB+ UFNSX0NBUlJZOwpAQCAtNTkxLDYgKzU5MSw5IEBACiAgICAgICAgICAgICBlbnYtPm5wYyA9IGVu di0+bnBjICsgNDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4ODM6IC8qIGZs dXNoIHdpbmRvd3MgKi8KKyNpZmRlZiBUQVJHRVRfQUJJMzIKKyAgICAgICAgY2FzZSAweDEwMzoK KyNlbmRpZgogICAgICAgICAgICAgZmx1c2hfd2luZG93cyhlbnYpOwogICAgICAgICAgICAgLyog bmV4dCBpbnN0cnVjdGlvbiAqLwogICAgICAgICAgICAgZW52LT5wYyA9IGVudi0+bnBjOwpAQCAt NzA4LDEyICs3MTEsMTIgQEAKIH0KIAogLyogWFhYOiB0byBiZSBmaXhlZCAqLwotaW50IHBwY19k Y3JfcmVhZCAocHBjX2Rjcl90ICpkY3JfZW52LCBpbnQgZGNybiwgdGFyZ2V0X3Vsb25nICp2YWxw KQoraW50IHBwY19kY3JfcmVhZCAocHBjX2Rjcl90ICpkY3JfZW52LCBpbnQgZGNybiwgYWJpX3Vs b25nICp2YWxwKQogewogICAgIHJldHVybiAtMTsKIH0KIAotaW50IHBwY19kY3Jfd3JpdGUgKHBw Y19kY3JfdCAqZGNyX2VudiwgaW50IGRjcm4sIHRhcmdldF91bG9uZyB2YWwpCitpbnQgcHBjX2Rj cl93cml0ZSAocHBjX2Rjcl90ICpkY3JfZW52LCBpbnQgZGNybiwgYWJpX3Vsb25nIHZhbCkKIHsK ICAgICByZXR1cm4gLTE7CiB9CkBAIC0xNDg5LDggKzE0OTIsOCBAQAogICAgICAgICAgICAgICAg IHJldCA9IC1FTk9TWVM7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlu dCBuYl9hcmdzOwotICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBzcF9yZWc7Ci0gICAgICAg ICAgICAgICAgdGFyZ2V0X3Vsb25nIGFyZzUgPSAwLCBhcmc2ID0gMCwgYXJnNyA9IDAsIGFyZzgg PSAwOworICAgICAgICAgICAgICAgIGFiaV91bG9uZyBzcF9yZWc7CisgICAgICAgICAgICAgICAg YWJpX3Vsb25nIGFyZzUgPSAwLCBhcmc2ID0gMCwgYXJnNyA9IDAsIGFyZzggPSAwOwogCiAgICAg ICAgICAgICAgICAgbmJfYXJncyA9IG1pcHNfc3lzY2FsbF9hcmdzW3N5c2NhbGxfbnVtXTsKICAg ICAgICAgICAgICAgICBzcF9yZWcgPSBlbnYtPmdwclsyOV1bZW52LT5jdXJyZW50X3RjXTsKQEAg LTIyNDQsNyArMjI0Nyw3IEBACiAgICAgICAgIGludCBpOwogCiAgICAgICAgIGZvcihpID0gMDsg aSA8IDI4OyBpKyspIHsKLSAgICAgICAgICAgIGVudi0+aXJbaV0gPSAoKHRhcmdldF91bG9uZyAq KXJlZ3MpW2ldOworICAgICAgICAgICAgZW52LT5pcltpXSA9ICgoYWJpX3Vsb25nICopcmVncylb aV07CiAgICAgICAgIH0KICAgICAgICAgZW52LT5pcHJbSVBSX1VTUF0gPSByZWdzLT51c3A7CiAg ICAgICAgIGVudi0+aXJbMzBdID0gcmVncy0+dXNwOwpJbmRleDogcWVtdS9saW51eC11c2VyL21p cHMvc3lzY2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL21pcHMvc3lz Y2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4 LXVzZXIvbWlwcy9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAK QEAgLTQsMTggKzQsMTggQEAKIAogc3RydWN0IHRhcmdldF9wdF9yZWdzIHsKIAkvKiBQYWQgYnl0 ZXMgZm9yIGFyZ3VtZW50IHNhdmUgc3BhY2Ugb24gdGhlIHN0YWNrLiAqLwotCXRhcmdldF91bG9u ZyBwYWQwWzZdOworCWFiaV91bG9uZyBwYWQwWzZdOwogCiAJLyogU2F2ZWQgbWFpbiBwcm9jZXNz b3IgcmVnaXN0ZXJzLiAqLwotCXRhcmdldF91bG9uZyByZWdzWzMyXTsKKwlhYmlfdWxvbmcgcmVn c1szMl07CiAKIAkvKiBTYXZlZCBzcGVjaWFsIHJlZ2lzdGVycy4gKi8KLQl0YXJnZXRfdWxvbmcg Y3AwX3N0YXR1czsKLQl0YXJnZXRfdWxvbmcgbG87Ci0JdGFyZ2V0X3Vsb25nIGhpOwotCXRhcmdl dF91bG9uZyBjcDBfYmFkdmFkZHI7Ci0JdGFyZ2V0X3Vsb25nIGNwMF9jYXVzZTsKLQl0YXJnZXRf dWxvbmcgY3AwX2VwYzsKKwlhYmlfdWxvbmcgY3AwX3N0YXR1czsKKwlhYmlfdWxvbmcgbG87CisJ YWJpX3Vsb25nIGhpOworCWFiaV91bG9uZyBjcDBfYmFkdmFkZHI7CisJYWJpX3Vsb25nIGNwMF9j YXVzZTsKKwlhYmlfdWxvbmcgY3AwX2VwYzsKIH07CiAKIC8qIFRhcmdldCBlcnJubyBkZWZpbml0 aW9ucyB0YWtlbiBmcm9tIGFzbS1taXBzL2Vycm5vLmggKi8KSW5kZXg6IHFlbXUvbGludXgtdXNl ci9taXBzL3RhcmdldF9zaWduYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNl ci9taXBzL3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAw MAorKysgcWVtdS9saW51eC11c2VyL21pcHMvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6 MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVm aW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBz dHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKLQl0YXJnZXRfbG9uZyBzc19zcDsKLQl0YXJnZXRf dWxvbmcgc3Nfc2l6ZTsKLQl0YXJnZXRfbG9uZyBzc19mbGFnczsKKwlhYmlfbG9uZyBzc19zcDsK KwlhYmlfdWxvbmcgc3Nfc2l6ZTsKKwlhYmlfbG9uZyBzc19mbGFnczsKIH0gdGFyZ2V0X3N0YWNr X3Q7CiAKIApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1ogICAg MjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RLU1ogICAgICAgODE5MgogCi1zdGF0aWMgaW5saW5l IHRhcmdldF91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVNSVBTU3RhdGUgKnN0YXRlKQor c3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVTUlQU1N0YXRl ICpzdGF0ZSkKIHsKICAgICByZXR1cm4gc3RhdGUtPmdwclsyOV1bc3RhdGUtPmN1cnJlbnRfdGNd OwogfQpJbmRleDogcWVtdS9saW51eC11c2VyL21pcHM2NC9zeXNjYWxsLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlwczY0L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3 OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL21pcHM2NC9zeXNjYWxsLmgJ MjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTQsMTUgKzQsMTUgQEAKIAog c3RydWN0IHRhcmdldF9wdF9yZWdzIHsKIAkvKiBTYXZlZCBtYWluIHByb2Nlc3NvciByZWdpc3Rl cnMuICovCi0JdGFyZ2V0X3Vsb25nIHJlZ3NbMzJdOworCWFiaV91bG9uZyByZWdzWzMyXTsKIAog CS8qIFNhdmVkIHNwZWNpYWwgcmVnaXN0ZXJzLiAqLwotCXRhcmdldF91bG9uZyBjcDBfc3RhdHVz OwotCXRhcmdldF91bG9uZyBsbzsKLQl0YXJnZXRfdWxvbmcgaGk7Ci0JdGFyZ2V0X3Vsb25nIGNw MF9iYWR2YWRkcjsKLQl0YXJnZXRfdWxvbmcgY3AwX2NhdXNlOwotCXRhcmdldF91bG9uZyBjcDBf ZXBjOworCWFiaV91bG9uZyBjcDBfc3RhdHVzOworCWFiaV91bG9uZyBsbzsKKwlhYmlfdWxvbmcg aGk7CisJYWJpX3Vsb25nIGNwMF9iYWR2YWRkcjsKKwlhYmlfdWxvbmcgY3AwX2NhdXNlOworCWFi aV91bG9uZyBjcDBfZXBjOwogfTsKIAogLyogVGFyZ2V0IGVycm5vIGRlZmluaXRpb25zIHRha2Vu IGZyb20gYXNtLW1pcHMvZXJybm8uaCAqLwpJbmRleDogcWVtdS9saW51eC11c2VyL21pcHM2NC90 YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlwczY0 L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysg cWVtdS9saW51eC11c2VyL21pcHM2NC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzo0 Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTYsOSArNiw5IEBACiAvKiB0aGlzIHN0cnVjdCBkZWZpbmVz IGEgc3RhY2sgdXNlZCBkdXJpbmcgc3lzY2FsbCBoYW5kbGluZyAqLwogCiB0eXBlZGVmIHN0cnVj dCB0YXJnZXRfc2lnYWx0c3RhY2sgewotCXRhcmdldF9sb25nIHNzX3NwOwotCXRhcmdldF91bG9u ZyBzc19zaXplOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOworCWFiaV9sb25nIHNzX3NwOworCWFi aV91bG9uZyBzc19zaXplOworCWFiaV9sb25nIHNzX2ZsYWdzOwogfSB0YXJnZXRfc3RhY2tfdDsK IAogCkBAIC0yMSw3ICsyMSw3IEBACiAjZGVmaW5lIFRBUkdFVF9NSU5TSUdTVEtTWiAgICAyMDQ4 CiAjZGVmaW5lIFRBUkdFVF9TSUdTVEtTWiAgICAgICA4MTkyCiAKLXN0YXRpYyBpbmxpbmUgdGFy Z2V0X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0YXRlKENQVU1JUFNTdGF0ZSAqc3RhdGUpCitzdGF0 aWMgaW5saW5lIGFiaV91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVNSVBTU3RhdGUgKnN0 YXRlKQogewogICAgIHJldHVybiBzdGF0ZS0+Z3ByWzI5XVtzdGF0ZS0+Y3VycmVudF90Y107CiB9 CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbWlwc24zMi9zeXNjYWxsLmgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlwc24zMi9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzox NC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9taXBzbjMyL3N5c2NhbGwuaAky MDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNCwxNSArNCwxNSBAQAogCiBz dHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgewogCS8qIFNhdmVkIG1haW4gcHJvY2Vzc29yIHJlZ2lzdGVy cy4gKi8KLQl0YXJnZXRfdWxvbmcgcmVnc1szMl07CisJYWJpX3Vsb25nIHJlZ3NbMzJdOwogCiAJ LyogU2F2ZWQgc3BlY2lhbCByZWdpc3RlcnMuICovCi0JdGFyZ2V0X3Vsb25nIGNwMF9zdGF0dXM7 Ci0JdGFyZ2V0X3Vsb25nIGxvOwotCXRhcmdldF91bG9uZyBoaTsKLQl0YXJnZXRfdWxvbmcgY3Aw X2JhZHZhZGRyOwotCXRhcmdldF91bG9uZyBjcDBfY2F1c2U7Ci0JdGFyZ2V0X3Vsb25nIGNwMF9l cGM7CisJYWJpX3Vsb25nIGNwMF9zdGF0dXM7CisJYWJpX3Vsb25nIGxvOworCWFiaV91bG9uZyBo aTsKKwlhYmlfdWxvbmcgY3AwX2JhZHZhZGRyOworCWFiaV91bG9uZyBjcDBfY2F1c2U7CisJYWJp X3Vsb25nIGNwMF9lcGM7CiB9OwogCiAvKiBUYXJnZXQgZXJybm8gZGVmaW5pdGlvbnMgdGFrZW4g ZnJvbSBhc20tbWlwcy9lcnJuby5oICovCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbWlwc24zMi90 YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlwc24z Mi90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysr IHFlbXUvbGludXgtdXNlci9taXBzbjMyL3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3 OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBUQVJHRVRfTUlO U0lHU1RLU1ogICAgMjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RLU1ogICAgICAgODE5MgogCi1z dGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVNSVBTU3Rh dGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUo Q1BVTUlQU1N0YXRlICpzdGF0ZSkKIHsKICAgICByZXR1cm4gc3RhdGUtPmdwclsyOV1bc3RhdGUt PmN1cnJlbnRfdGNdOwogfQpJbmRleDogcWVtdS9saW51eC11c2VyL21tYXAuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9tbWFwLmMJMjAwNy0xMC0xMSAxOToxNzoxMy4wMDAw MDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9tbWFwLmMJMjAwNy0xMC0xMSAxOToxNzo0 Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTMwLDkgKzMwLDkgQEAKIC8vI2RlZmluZSBERUJVR19NTUFQ CiAKIC8qIE5PVEU6IGFsbCB0aGUgY29uc3RhbnRzIGFyZSB0aGUgSE9TVCBvbmVzLCBidXQgYWRk cmVzc2VzIGFyZSB0YXJnZXQuICovCi1pbnQgdGFyZ2V0X21wcm90ZWN0KHRhcmdldF91bG9uZyBz dGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50IHByb3QpCitpbnQgdGFyZ2V0X21wcm90ZWN0KGFi aV91bG9uZyBzdGFydCwgYWJpX3Vsb25nIGxlbiwgaW50IHByb3QpCiB7Ci0gICAgdGFyZ2V0X3Vs b25nIGVuZCwgaG9zdF9zdGFydCwgaG9zdF9lbmQsIGFkZHI7CisgICAgYWJpX3Vsb25nIGVuZCwg aG9zdF9zdGFydCwgaG9zdF9lbmQsIGFkZHI7CiAgICAgaW50IHByb3QxLCByZXQ7CiAKICNpZmRl ZiBERUJVR19NTUFQCkBAIC05NiwxMSArOTYsMTEgQEAKIH0KIAogLyogbWFwIGFuIGluY29tcGxl dGUgaG9zdCBwYWdlICovCi1zdGF0aWMgaW50IG1tYXBfZnJhZyh0YXJnZXRfdWxvbmcgcmVhbF9z dGFydCwKLSAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vs b25nIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgIGludCBwcm90LCBpbnQgZmxhZ3MsIGludCBm ZCwgdGFyZ2V0X3Vsb25nIG9mZnNldCkKK3N0YXRpYyBpbnQgbW1hcF9mcmFnKGFiaV91bG9uZyBy ZWFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxv bmcgZW5kLAorICAgICAgICAgICAgICAgICAgICAgaW50IHByb3QsIGludCBmbGFncywgaW50IGZk LCBhYmlfdWxvbmcgb2Zmc2V0KQogewotICAgIHRhcmdldF91bG9uZyByZWFsX2VuZCwgcmV0LCBh ZGRyOworICAgIGFiaV91bG9uZyByZWFsX2VuZCwgcmV0LCBhZGRyOwogICAgIHZvaWQgKmhvc3Rf c3RhcnQ7CiAgICAgaW50IHByb3QxLCBwcm90X25ldzsKIApAQCAtMTUyLDE3ICsxNTIsMTcgQEAK IH0KIAogLyogTk9URTogYWxsIHRoZSBjb25zdGFudHMgYXJlIHRoZSBIT1NUIG9uZXMgKi8KLXRh cmdldF9sb25nIHRhcmdldF9tbWFwKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxl biwgaW50IHByb3QsCi0gICAgICAgICAgICAgICAgIGludCBmbGFncywgaW50IGZkLCB0YXJnZXRf dWxvbmcgb2Zmc2V0KQorYWJpX2xvbmcgdGFyZ2V0X21tYXAoYWJpX3Vsb25nIHN0YXJ0LCBhYmlf dWxvbmcgbGVuLCBpbnQgcHJvdCwKKyAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBpbnQgZmQs IGFiaV91bG9uZyBvZmZzZXQpCiB7Ci0gICAgdGFyZ2V0X3Vsb25nIHJldCwgZW5kLCByZWFsX3N0 YXJ0LCByZWFsX2VuZCwgcmV0YWRkciwgaG9zdF9vZmZzZXQsIGhvc3RfbGVuOworICAgIGFiaV91 bG9uZyByZXQsIGVuZCwgcmVhbF9zdGFydCwgcmVhbF9lbmQsIHJldGFkZHIsIGhvc3Rfb2Zmc2V0 LCBob3N0X2xlbjsKICAgICB1bnNpZ25lZCBsb25nIGhvc3Rfc3RhcnQ7CiAjaWYgZGVmaW5lZChf X2FscGhhX18pIHx8IGRlZmluZWQoX19zcGFyY19fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IFwKICAgICAgICAgZGVmaW5lZChfX2lhNjQpIHx8IGRlZmluZWQoX19taXBzX18pCi0gICAgc3Rh dGljIHRhcmdldF91bG9uZyBsYXN0X3N0YXJ0ID0gMHg0MDAwMDAwMDsKKyAgICBzdGF0aWMgYWJp X3Vsb25nIGxhc3Rfc3RhcnQgPSAweDQwMDAwMDAwOwogI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9f KQogICAgIC8qIEN5Z3dpbiBkb2Vzbid0IGhhdmUgYSB3aG9sZSBsb3Qgb2YgYWRkcmVzcyBzcGFj ZS4gICovCi0gICAgc3RhdGljIHRhcmdldF91bG9uZyBsYXN0X3N0YXJ0ID0gMHgxODAwMDAwMDsK KyAgICBzdGF0aWMgYWJpX3Vsb25nIGxhc3Rfc3RhcnQgPSAweDE4MDAwMDAwOwogI2VuZGlmCiAK ICNpZmRlZiBERUJVR19NTUFQCkBAIC0yMjgsNyArMjI4LDcgQEAKICAgICAgICAgICAgICAqIFRB UkdFVF9QQUdFX1NJWkUsIHNlZSBleGVjLmMuIHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSBpcyB0 aGUKICAgICAgICAgICAgICAqIGhvc3RzIHJlYWwgcGFnZSBzaXplLgogICAgICAgICAgICAgICov Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgaG9zdF9lbmQ7CisgICAgICAgICAgICBhYmlfdWxv bmcgaG9zdF9lbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGhvc3RfYWxpZ25lZF9zdGFy dDsKIAogICAgICAgICAgICAgaG9zdF9sZW4gPSBIT1NUX1BBR0VfQUxJR04oaG9zdF9sZW4gKyBx ZW11X2hvc3RfcGFnZV9zaXplCkBAIC0zNTQsOSArMzU0LDkgQEAKICAgICByZXR1cm4gc3RhcnQ7 CiB9CiAKLWludCB0YXJnZXRfbXVubWFwKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25n IGxlbikKK2ludCB0YXJnZXRfbXVubWFwKGFiaV91bG9uZyBzdGFydCwgYWJpX3Vsb25nIGxlbikK IHsKLSAgICB0YXJnZXRfdWxvbmcgZW5kLCByZWFsX3N0YXJ0LCByZWFsX2VuZCwgYWRkcjsKKyAg ICBhYmlfdWxvbmcgZW5kLCByZWFsX3N0YXJ0LCByZWFsX2VuZCwgYWRkcjsKICAgICBpbnQgcHJv dCwgcmV0OwogCiAjaWZkZWYgREVCVUdfTU1BUApAQCAtNDA4LDkgKzQwOCw5IEBACiAKIC8qIFhY WDogY3VycmVudGx5LCB3ZSBvbmx5IGhhbmRsZSBNQVBfQU5PTllNT1VTIGFuZCBub3QgTUFQX0ZJ WEVECiAgICBibG9ja3Mgd2hpY2ggaGF2ZSBiZWVuIGFsbG9jYXRlZCBzdGFydGluZyBvbiBhIGhv c3QgcGFnZSAqLwotdGFyZ2V0X2xvbmcgdGFyZ2V0X21yZW1hcCh0YXJnZXRfdWxvbmcgb2xkX2Fk ZHIsIHRhcmdldF91bG9uZyBvbGRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxv bmcgbmV3X3NpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgdGFy Z2V0X3Vsb25nIG5ld19hZGRyKQorYWJpX2xvbmcgdGFyZ2V0X21yZW1hcChhYmlfdWxvbmcgb2xk X2FkZHIsIGFiaV91bG9uZyBvbGRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcg bmV3X3NpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgYWJpX3Vs b25nIG5ld19hZGRyKQogewogICAgIGludCBwcm90OwogICAgIHVuc2lnbmVkIGxvbmcgaG9zdF9h ZGRyOwpAQCAtNDI2LDkgKzQyNiw5IEBACiAgICAgcmV0dXJuIG5ld19hZGRyOwogfQogCi1pbnQg dGFyZ2V0X21zeW5jKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50IGZs YWdzKQoraW50IHRhcmdldF9tc3luYyhhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBsZW4sIGlu dCBmbGFncykKIHsKLSAgICB0YXJnZXRfdWxvbmcgZW5kOworICAgIGFiaV91bG9uZyBlbmQ7CiAK ICAgICBpZiAoc3RhcnQgJiB+VEFSR0VUX1BBR0VfTUFTSykKICAgICAgICAgcmV0dXJuIC1FSU5W QUw7CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvcHBjL3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBx ZW11Lm9yaWcvbGludXgtdXNlci9wcGMvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvcHBjL3N5c2NhbGwuaAkyMDA3LTEwLTEx IDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNDQsNyArNDQsNyBAQAogCiAvKiBpb2N0bHMg Ki8KIHN0cnVjdCB0YXJnZXRfcmV2ZWN0b3JlZF9zdHJ1Y3QgewotCXRhcmdldF91bG9uZyBfX21h cFs4XTsJCQkvKiAyNTYgYml0cyAqLworCWFiaV91bG9uZyBfX21hcFs4XTsJCQkvKiAyNTYgYml0 cyAqLwogfTsKIAogLyoKSW5kZXg6IHFlbXUvbGludXgtdXNlci9wcGMvdGFyZ2V0X3NpZ25hbC5o Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL3BwYy90YXJnZXRfc2lnbmFsLmgJ MjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9w cGMvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBA IC02LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5n IHN5c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNr IHsKLQl0YXJnZXRfdWxvbmcgc3Nfc3A7Ci0JdGFyZ2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0 X3Vsb25nIHNzX3NpemU7CisJYWJpX3Vsb25nIHNzX3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOwor CWFiaV91bG9uZyBzc19zaXplOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3 IEBACiAjZGVmaW5lIFRBUkdFVF9NSU5TSUdTVEtTWiAgICAyMDQ4CiAjZGVmaW5lIFRBUkdFVF9T SUdTVEtTWiAgICAgICA4MTkyCiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9m cm9tX2NwdXN0YXRlKENQVVBQQ1N0YXRlICpzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgYWJpX3Vsb25n IGdldF9zcF9mcm9tX2NwdXN0YXRlKENQVVBQQ1N0YXRlICpzdGF0ZSkKIHsKICAgICByZXR1cm4g c3RhdGUtPmdwclsxXTsKIH0KSW5kZXg6IHFlbXUvbGludXgtdXNlci9wcGM2NC9zeXNjYWxsLmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvcHBjNjQvc3lzY2FsbC5oCTIwMDct MTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvcHBjNjQv c3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC00NCw3ICs0 NCw3IEBACiAKIC8qIGlvY3RscyAqLwogc3RydWN0IHRhcmdldF9yZXZlY3RvcmVkX3N0cnVjdCB7 Ci0JdGFyZ2V0X3Vsb25nIF9fbWFwWzhdOwkJCS8qIDI1NiBiaXRzICovCisJYWJpX3Vsb25nIF9f bWFwWzhdOwkJCS8qIDI1NiBiaXRzICovCiB9OwogCiAvKgpJbmRleDogcWVtdS9saW51eC11c2Vy L3BwYzY0L3RhcmdldF9zaWduYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNl ci9wcGM2NC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvbGludXgtdXNlci9wcGM2NC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAx OToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTYsOSArNiw5IEBACiAvKiB0aGlzIHN0cnVjdCBk ZWZpbmVzIGEgc3RhY2sgdXNlZCBkdXJpbmcgc3lzY2FsbCBoYW5kbGluZyAqLwogCiB0eXBlZGVm IHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgewotCXRhcmdldF91bG9uZyBzc19zcDsKLQl0YXJn ZXRfbG9uZyBzc19mbGFnczsKLQl0YXJnZXRfdWxvbmcgc3Nfc2l6ZTsKKwlhYmlfdWxvbmcgc3Nf c3A7CisJYWJpX2xvbmcgc3NfZmxhZ3M7CisJYWJpX3Vsb25nIHNzX3NpemU7CiB9IHRhcmdldF9z dGFja190OwogCiAKQEAgLTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgVEFSR0VUX01JTlNJR1NUS1Na ICAgIDIwNDgKICNkZWZpbmUgVEFSR0VUX1NJR1NUS1NaICAgICAgIDgxOTIKIAotc3RhdGljIGlu bGluZSB0YXJnZXRfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVUFBDU3RhdGUgKnN0YXRl KQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVUFBDU3Rh dGUgKnN0YXRlKQogewogICAgIHJldHVybiBzdGF0ZS0+Z3ByWzFdOwogfQpJbmRleDogcWVtdS9s aW51eC11c2VyL3FlbXUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9xZW11 LmgJMjAwNy0xMC0xMSAxOToxNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNl ci9xZW11LmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTEsMTMgKzEs MjQgQEAKICNpZm5kZWYgUUVNVV9ICiAjZGVmaW5lIFFFTVVfSAogCi0jaW5jbHVkZSAidGh1bmsu aCIKLQogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUg InN5c2NhbGxfZGVmcy5oIgogCiAjaW5jbHVkZSAiY3B1LmgiCisKKyNpZmRlZiBUQVJHRVRfQUJJ MzIKK3R5cGVkZWYgdWludDMyX3QgYWJpX3Vsb25nOwordHlwZWRlZiBpbnQzMl90IGFiaV9sb25n OworI2RlZmluZSBUQVJHRVRfQUJJX0JJVFMgMzIKKyNkZWZpbmUgT1ZFUlJJREVfRUxGX0NMQVNT IEVMRkNMQVNTMzIKKyNlbHNlCit0eXBlZGVmIHRhcmdldF91bG9uZyBhYmlfdWxvbmc7Cit0eXBl ZGVmIHRhcmdldF9sb25nIGFiaV9sb25nOworI2RlZmluZSBUQVJHRVRfQUJJX0JJVFMgVEFSR0VU X0xPTkdfQklUUworI2VuZGlmCisKKyNpbmNsdWRlICJ0aHVuay5oIgorI2luY2x1ZGUgInN5c2Nh bGxfZGVmcy5oIgogI2luY2x1ZGUgInN5c2NhbGwuaCIKICNpbmNsdWRlICJ0YXJnZXRfc2lnbmFs LmgiCiAjaW5jbHVkZSAiZ2Ric3R1Yi5oIgpAQCAtMTcsMjAgKzI4LDIwIEBACiAgKiB0YXNrX3N0 cnVjdCBmaWVsZHMgaW4gdGhlIGtlcm5lbAogICovCiBzdHJ1Y3QgaW1hZ2VfaW5mbyB7Ci0JdGFy Z2V0X3Vsb25nCWxvYWRfYWRkcjsKLQl0YXJnZXRfdWxvbmcJc3RhcnRfY29kZTsKLQl0YXJnZXRf dWxvbmcJZW5kX2NvZGU7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICBzdGFydF9kYXRhOwotCXRh cmdldF91bG9uZwllbmRfZGF0YTsKLQl0YXJnZXRfdWxvbmcJc3RhcnRfYnJrOwotCXRhcmdldF91 bG9uZwlicms7Ci0JdGFyZ2V0X3Vsb25nCXN0YXJ0X21tYXA7Ci0JdGFyZ2V0X3Vsb25nCW1tYXA7 Ci0JdGFyZ2V0X3Vsb25nCXJzczsKLQl0YXJnZXRfdWxvbmcJc3RhcnRfc3RhY2s7Ci0JdGFyZ2V0 X3Vsb25nCWVudHJ5OwotICAgICAgICB0YXJnZXRfdWxvbmcgICAgY29kZV9vZmZzZXQ7Ci0gICAg ICAgIHRhcmdldF91bG9uZyAgICBkYXRhX29mZnNldDsKKwlhYmlfdWxvbmcJbG9hZF9hZGRyOwor CWFiaV91bG9uZwlzdGFydF9jb2RlOworCWFiaV91bG9uZwllbmRfY29kZTsKKyAgICAgICAgYWJp X3Vsb25nICAgIHN0YXJ0X2RhdGE7CisJYWJpX3Vsb25nCWVuZF9kYXRhOworCWFiaV91bG9uZwlz dGFydF9icms7CisJYWJpX3Vsb25nCWJyazsKKwlhYmlfdWxvbmcJc3RhcnRfbW1hcDsKKwlhYmlf dWxvbmcJbW1hcDsKKwlhYmlfdWxvbmcJcnNzOworCWFiaV91bG9uZwlzdGFydF9zdGFjazsKKwlh YmlfdWxvbmcJZW50cnk7CisgICAgICAgIGFiaV91bG9uZyAgICBjb2RlX29mZnNldDsKKyAgICAg ICAgYWJpX3Vsb25nICAgIGRhdGFfb2Zmc2V0OwogICAgICAgICBjaGFyICAgICAgICAgICAgKipo b3N0X2FyZ3Y7CiAJaW50CQlwZXJzb25hbGl0eTsKIH07CkBAIC02Nyw3ICs3OCw3IEBACiAgICAg aW50IHN3aV9lcnJubzsKICNlbmRpZgogI2lmIGRlZmluZWQoVEFSR0VUX0kzODYpICYmICFkZWZp bmVkKFRBUkdFVF9YODZfNjQpCi0gICAgdGFyZ2V0X3Vsb25nIHRhcmdldF92ODY7CisgICAgYWJp X3Vsb25nIHRhcmdldF92ODY7CiAgICAgc3RydWN0IHZtODZfc2F2ZWRfc3RhdGUgdm04Nl9zYXZl ZF9yZWdzOwogICAgIHN0cnVjdCB0YXJnZXRfdm04NnBsdXNfc3RydWN0IHZtODZwbHVzOwogICAg IHVpbnQzMl90IHY4NmZsYWdzOwpAQCAtMTA1LDcgKzExNiw3IEBACiBzdHJ1Y3QgbGludXhfYmlu cHJtIHsKICAgICAgICAgY2hhciBidWZbMTI4XTsKICAgICAgICAgdm9pZCAqcGFnZVtNQVhfQVJH X1BBR0VTXTsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIHA7CisgICAgICAgIGFiaV91bG9uZyBwOwog CWludCBmZDsKICAgICAgICAgaW50IGVfdWlkLCBlX2dpZDsKICAgICAgICAgaW50IGFyZ2MsIGVu dmM7CkBAIC0xMTUsOCArMTI2LDggQEAKIH07CiAKIHZvaWQgZG9faW5pdF90aHJlYWQoc3RydWN0 IHRhcmdldF9wdF9yZWdzICpyZWdzLCBzdHJ1Y3QgaW1hZ2VfaW5mbyAqaW5mb3ApOwotdGFyZ2V0 X3Vsb25nIGxvYWRlcl9idWlsZF9hcmdwdHIoaW50IGVudmMsIGludCBhcmdjLCB0YXJnZXRfdWxv bmcgc3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgc3Ry aW5ncCwgaW50IHB1c2hfcHRyKTsKK2FiaV91bG9uZyBsb2FkZXJfYnVpbGRfYXJncHRyKGludCBl bnZjLCBpbnQgYXJnYywgYWJpX3Vsb25nIHNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWJpX3Vsb25nIHN0cmluZ3AsIGludCBwdXNoX3B0cik7CiBpbnQgbG9hZGVyX2V4ZWMo Y29uc3QgY2hhciAqIGZpbGVuYW1lLCBjaGFyICoqIGFyZ3YsIGNoYXIgKiogZW52cCwKICAgICAg ICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgKiByZWdzLCBzdHJ1Y3QgaW1hZ2VfaW5mbyAq aW5mb3ApOwogCkBAIC0xMzAsMTQgKzE0MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaW1hZ2VfaW5mbyAqaW5mbyk7CiAjZW5kaWYKIAotdm9pZCBtZW1jcHlfdG9fdGFy Z2V0KHRhcmdldF91bG9uZyBkZXN0LCBjb25zdCB2b2lkICpzcmMsCit2b2lkIG1lbWNweV90b190 YXJnZXQoYWJpX3Vsb25nIGRlc3QsIGNvbnN0IHZvaWQgKnNyYywKICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGxlbik7Ci12b2lkIHRhcmdldF9zZXRfYnJrKHRhcmdldF91bG9u ZyBuZXdfYnJrKTsKLXRhcmdldF9sb25nIGRvX2Jyayh0YXJnZXRfdWxvbmcgbmV3X2Jyayk7Cit2 b2lkIHRhcmdldF9zZXRfYnJrKGFiaV91bG9uZyBuZXdfYnJrKTsKK2FiaV9sb25nIGRvX2Jyayhh YmlfdWxvbmcgbmV3X2Jyayk7CiB2b2lkIHN5c2NhbGxfaW5pdCh2b2lkKTsKLXRhcmdldF9sb25n IGRvX3N5c2NhbGwodm9pZCAqY3B1X2VudiwgaW50IG51bSwgdGFyZ2V0X2xvbmcgYXJnMSwKLSAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcgYXJnMiwgdGFyZ2V0X2xvbmcgYXJnMywg dGFyZ2V0X2xvbmcgYXJnNCwKLSAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcgYXJn NSwgdGFyZ2V0X2xvbmcgYXJnNik7CithYmlfbG9uZyBkb19zeXNjYWxsKHZvaWQgKmNwdV9lbnYs IGludCBudW0sIGFiaV9sb25nIGFyZzEsCisgICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25n IGFyZzIsIGFiaV9sb25nIGFyZzMsIGFiaV9sb25nIGFyZzQsCisgICAgICAgICAgICAgICAgICAg ICAgIGFiaV9sb25nIGFyZzUsIGFiaV9sb25nIGFyZzYpOwogdm9pZCBnZW11X2xvZyhjb25zdCBj aGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwxLDIpKSk7CiBleHRl cm4gQ1BVU3RhdGUgKmdsb2JhbF9lbnY7CiB2b2lkIGNwdV9sb29wKENQVVN0YXRlICplbnYpOwpA QCAtMTU3LDI4ICsxNjgsMjggQEAKIGxvbmcgZG9fcnRfc2lncmV0dXJuKENQVVN0YXRlICplbnYp OwogaW50IGRvX3NpZ2FsdHN0YWNrKGNvbnN0IHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgKnVz cywKICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrICp1b3NzLAot ICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBzcCk7CisgICAgICAgICAgICAgICAgICAg YWJpX3Vsb25nIHNwKTsKIAogI2lmZGVmIFRBUkdFVF9JMzg2CiAvKiB2bTg2LmMgKi8KIHZvaWQg c2F2ZV92ODZfc3RhdGUoQ1BVWDg2U3RhdGUgKmVudik7CiB2b2lkIGhhbmRsZV92bTg2X3RyYXAo Q1BVWDg2U3RhdGUgKmVudiwgaW50IHRyYXBubyk7CiB2b2lkIGhhbmRsZV92bTg2X2ZhdWx0KENQ VVg4NlN0YXRlICplbnYpOwotaW50IGRvX3ZtODYoQ1BVWDg2U3RhdGUgKmVudiwgbG9uZyBzdWJm dW5jdGlvbiwgdGFyZ2V0X3Vsb25nIHY4Nl9hZGRyKTsKK2ludCBkb192bTg2KENQVVg4NlN0YXRl ICplbnYsIGxvbmcgc3ViZnVuY3Rpb24sIGFiaV91bG9uZyB2ODZfYWRkcik7CiAjZWxpZiBkZWZp bmVkKFRBUkdFVF9TUEFSQzY0KQogdm9pZCBzcGFyYzY0X3NldF9jb250ZXh0KENQVVNQQVJDU3Rh dGUgKmVudik7CiB2b2lkIHNwYXJjNjRfZ2V0X2NvbnRleHQoQ1BVU1BBUkNTdGF0ZSAqZW52KTsK ICNlbmRpZgogCiAvKiBtbWFwLmMgKi8KLWludCB0YXJnZXRfbXByb3RlY3QodGFyZ2V0X3Vsb25n IHN0YXJ0LCB0YXJnZXRfdWxvbmcgbGVuLCBpbnQgcHJvdCk7Ci10YXJnZXRfbG9uZyB0YXJnZXRf bW1hcCh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91bG9uZyBsZW4sIGludCBwcm90LAotICAg ICAgICAgICAgICAgICBpbnQgZmxhZ3MsIGludCBmZCwgdGFyZ2V0X3Vsb25nIG9mZnNldCk7Ci1p bnQgdGFyZ2V0X211bm1hcCh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91bG9uZyBsZW4pOwot dGFyZ2V0X2xvbmcgdGFyZ2V0X21yZW1hcCh0YXJnZXRfdWxvbmcgb2xkX2FkZHIsIHRhcmdldF91 bG9uZyBvbGRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgbmV3X3NpemUs IHVuc2lnbmVkIGxvbmcgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG5l d19hZGRyKTsKLWludCB0YXJnZXRfbXN5bmModGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxv bmcgbGVuLCBpbnQgZmxhZ3MpOworaW50IHRhcmdldF9tcHJvdGVjdChhYmlfdWxvbmcgc3RhcnQs IGFiaV91bG9uZyBsZW4sIGludCBwcm90KTsKK2FiaV9sb25nIHRhcmdldF9tbWFwKGFiaV91bG9u ZyBzdGFydCwgYWJpX3Vsb25nIGxlbiwgaW50IHByb3QsCisgICAgICAgICAgICAgICAgIGludCBm bGFncywgaW50IGZkLCBhYmlfdWxvbmcgb2Zmc2V0KTsKK2ludCB0YXJnZXRfbXVubWFwKGFiaV91 bG9uZyBzdGFydCwgYWJpX3Vsb25nIGxlbik7CithYmlfbG9uZyB0YXJnZXRfbXJlbWFwKGFiaV91 bG9uZyBvbGRfYWRkciwgYWJpX3Vsb25nIG9sZF9zaXplLAorICAgICAgICAgICAgICAgICAgIGFi aV91bG9uZyBuZXdfc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncywKKyAgICAgICAgICAgICAgICAg ICBhYmlfdWxvbmcgbmV3X2FkZHIpOworaW50IHRhcmdldF9tc3luYyhhYmlfdWxvbmcgc3RhcnQs IGFiaV91bG9uZyBsZW4sIGludCBmbGFncyk7CiAKIC8qIHVzZXIgYWNjZXNzICovCiAKQEAgLTI2 MCw3ICsyNzEsNyBAQAogCiAvKiBMb2NrIGFuIGFyZWEgb2YgZ3Vlc3QgbWVtb3J5IGludG8gdGhl IGhvc3QuICBJZiBjb3B5IGlzIHRydWUgdGhlbiB0aGUKICAgIGhvc3QgYXJlYSB3aWxsIGhhdmUg dGhlIHNhbWUgY29udGVudHMgYXMgdGhlIGd1ZXN0LiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCAq bG9ja191c2VyKHRhcmdldF91bG9uZyBndWVzdF9hZGRyLCBsb25nIGxlbiwgaW50IGNvcHkpCitz dGF0aWMgaW5saW5lIHZvaWQgKmxvY2tfdXNlcihhYmlfdWxvbmcgZ3Vlc3RfYWRkciwgbG9uZyBs ZW4sIGludCBjb3B5KQogewogI2lmZGVmIERFQlVHX1JFTUFQCiAgICAgdm9pZCAqYWRkcjsKQEAg LTI3Nyw3ICsyODgsNyBAQAogCiAvKiBVbmxvY2sgYW4gYXJlYSBvZiBndWVzdCBtZW1vcnkuICBU aGUgZmlyc3QgTEVOIGJ5dGVzIG11c3QgYmUgZmx1c2hlZCBiYWNrCiAgICB0byBndWVzdCBtZW1v cnkuICAqLwotc3RhdGljIGlubGluZSB2b2lkIHVubG9ja191c2VyKHZvaWQgKmhvc3RfYWRkciwg dGFyZ2V0X3Vsb25nIGd1ZXN0X2FkZHIsCitzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrX3VzZXIo dm9pZCAqaG9zdF9hZGRyLCBhYmlfdWxvbmcgZ3Vlc3RfYWRkciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbG9uZyBsZW4pCiB7CiAjaWZkZWYgREVCVUdfUkVNQVAKQEAgLTI5MCwx MyArMzAxLDEzIEBACiB9CiAKIC8qIFJldHVybiB0aGUgbGVuZ3RoIG9mIGEgc3RyaW5nIGluIHRh cmdldCBtZW1vcnkuICAqLwotc3RhdGljIGlubGluZSBpbnQgdGFyZ2V0X3N0cmxlbih0YXJnZXRf dWxvbmcgcHRyKQorc3RhdGljIGlubGluZSBpbnQgdGFyZ2V0X3N0cmxlbihhYmlfdWxvbmcgcHRy KQogewogICByZXR1cm4gc3RybGVuKGcyaChwdHIpKTsKIH0KIAogLyogTGlrZSBsb2NrX3VzZXIg YnV0IGZvciBudWxsIHRlcm1pbmF0ZWQgc3RyaW5ncy4gICovCi1zdGF0aWMgaW5saW5lIHZvaWQg KmxvY2tfdXNlcl9zdHJpbmcodGFyZ2V0X3Vsb25nIGd1ZXN0X2FkZHIpCitzdGF0aWMgaW5saW5l IHZvaWQgKmxvY2tfdXNlcl9zdHJpbmcoYWJpX3Vsb25nIGd1ZXN0X2FkZHIpCiB7CiAgICAgbG9u ZyBsZW47CiAgICAgbGVuID0gdGFyZ2V0X3N0cmxlbihndWVzdF9hZGRyKSArIDE7CkBAIC0zMTcs NyArMzI4LDcgQEAKICNkZWZpbmUgdHB1dDMyKGFkZHIsIHZhbCkgc3RsKGFkZHIsIHZhbCkKICNk ZWZpbmUgdGdldDY0KGFkZHIpIGxkcShhZGRyKQogI2RlZmluZSB0cHV0NjQoYWRkciwgdmFsKSBz dHEoYWRkciwgdmFsKQotI2lmIFRBUkdFVF9MT05HX0JJVFMgPT0gNjQKKyNpZiBUQVJHRVRfQUJJ X0JJVFMgPT0gNjQKICNkZWZpbmUgdGdldGwoYWRkcikgbGRxKGFkZHIpCiAjZGVmaW5lIHRwdXRs KGFkZHIsIHZhbCkgc3RxKGFkZHIsIHZhbCkKICNlbHNlCkluZGV4OiBxZW11L2xpbnV4LXVzZXIv c2g0L3RhcmdldF9zaWduYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9z aDQvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisr KyBxZW11L2xpbnV4LXVzZXIvc2g0L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2 LjAwMDAwMDAwMCArMDAwMApAQCAtNiw5ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMg YSBzdGFjayB1c2VkIGR1cmluZyBzeXNjYWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0 IHRhcmdldF9zaWdhbHRzdGFjayB7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25n IHNzX2ZsYWdzOwotCXRhcmdldF91bG9uZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlh YmlfbG9uZyBzc19mbGFnczsKKwlhYmlfdWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7 CiAKIApJbmRleDogcWVtdS9saW51eC11c2VyL3NpZ25hbC5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy9saW51eC11c2VyL3NpZ25hbC5jCTIwMDctMTAtMTEgMTk6MTc6MTMuMDAwMDAwMDAwICsw MDAwCisrKyBxZW11L2xpbnV4LXVzZXIvc2lnbmFsLmMJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAw MDAwMDAgKzAwMDAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1 ZGUgPHN5cy91Y29udGV4dC5oPgogCi0jaW5jbHVkZSAidGFyZ2V0X3NpZ25hbC5oIgogI2luY2x1 ZGUgInFlbXUuaCIKKyNpbmNsdWRlICJ0YXJnZXRfc2lnbmFsLmgiCiAKIC8vI2RlZmluZSBERUJV R19TSUdOQUwKIApAQCAtMTM0LDEyICsxMzQsMTIgQEAKICAgICAgICAgaWYgKHNpZ21hc2sgJiAo MSA8PCBpKSkKICAgICAgICAgICAgIHRhcmdldF9zaWdtYXNrIHw9IDEgPDwgKGhvc3RfdG9fdGFy Z2V0X3NpZ25hbChpICsgMSkgLSAxKTsKICAgICB9Ci0jaWYgVEFSR0VUX0xPTkdfQklUUyA9PSAz MiAmJiBIT1NUX0xPTkdfQklUUyA9PSAzMgorI2lmIFRBUkdFVF9BQklfQklUUyA9PSAzMiAmJiBI T1NUX0xPTkdfQklUUyA9PSAzMgogICAgIGQtPnNpZ1swXSA9IHRhcmdldF9zaWdtYXNrOwogICAg IGZvcihpID0gMTtpIDwgVEFSR0VUX05TSUdfV09SRFM7IGkrKykgewogICAgICAgICBkLT5zaWdb aV0gPSAoKHVuc2lnbmVkIGxvbmcgKilzKVtpXTsKICAgICB9Ci0jZWxpZiBUQVJHRVRfTE9OR19C SVRTID09IDMyICYmIEhPU1RfTE9OR19CSVRTID09IDY0ICYmIFRBUkdFVF9OU0lHX1dPUkRTID09 IDIKKyNlbGlmIFRBUkdFVF9BQklfQklUUyA9PSAzMiAmJiBIT1NUX0xPTkdfQklUUyA9PSA2NCAm JiBUQVJHRVRfTlNJR19XT1JEUyA9PSAyCiAgICAgZC0+c2lnWzBdID0gdGFyZ2V0X3NpZ21hc2s7 CiAgICAgZC0+c2lnWzFdID0gc2lnbWFzayA+PiAzMjsKICNlbHNlCkBAIC0xNjEsNyArMTYxLDcg QEAKIHsKICAgICBpbnQgaTsKICAgICB1bnNpZ25lZCBsb25nIHNpZ21hc2s7Ci0gICAgdGFyZ2V0 X3Vsb25nIHRhcmdldF9zaWdtYXNrOworICAgIGFiaV91bG9uZyB0YXJnZXRfc2lnbWFzazsKIAog ICAgIHRhcmdldF9zaWdtYXNrID0gcy0+c2lnWzBdOwogICAgIHNpZ21hc2sgPSAwOwpAQCAtMTY5 LDE2ICsxNjksMTYgQEAKICAgICAgICAgaWYgKHRhcmdldF9zaWdtYXNrICYgKDEgPDwgaSkpCiAg ICAgICAgICAgICBzaWdtYXNrIHw9IDEgPDwgKHRhcmdldF90b19ob3N0X3NpZ25hbChpICsgMSkg LSAxKTsKICAgICB9Ci0jaWYgVEFSR0VUX0xPTkdfQklUUyA9PSAzMiAmJiBIT1NUX0xPTkdfQklU UyA9PSAzMgorI2lmIFRBUkdFVF9BQklfQklUUyA9PSAzMiAmJiBIT1NUX0xPTkdfQklUUyA9PSAz MgogICAgICgodW5zaWduZWQgbG9uZyAqKWQpWzBdID0gc2lnbWFzazsKICAgICBmb3IoaSA9IDE7 aSA8IFRBUkdFVF9OU0lHX1dPUkRTOyBpKyspIHsKICAgICAgICAgKCh1bnNpZ25lZCBsb25nICop ZClbaV0gPSBzLT5zaWdbaV07CiAgICAgfQotI2VsaWYgVEFSR0VUX0xPTkdfQklUUyA9PSAzMiAm JiBIT1NUX0xPTkdfQklUUyA9PSA2NCAmJiBUQVJHRVRfTlNJR19XT1JEUyA9PSAyCisjZWxpZiBU QVJHRVRfQUJJX0JJVFMgPT0gMzIgJiYgSE9TVF9MT05HX0JJVFMgPT0gNjQgJiYgVEFSR0VUX05T SUdfV09SRFMgPT0gMgogICAgICgodW5zaWduZWQgbG9uZyAqKWQpWzBdID0gc2lnbWFzayB8ICgo dW5zaWduZWQgbG9uZykocy0+c2lnWzFdKSA8PCAzMik7CiAjZWxzZQogI3dhcm5pbmcgdGFyZ2V0 X3RvX2hvc3Rfc2lnc2V0Ci0jZW5kaWYgLyogVEFSR0VUX0xPTkdfQklUUyAqLworI2VuZGlmIC8q IFRBUkdFVF9BQklfQklUUyAqLwogfQogCiB2b2lkIHRhcmdldF90b19ob3N0X3NpZ3NldChzaWdz ZXRfdCAqZCwgY29uc3QgdGFyZ2V0X3NpZ3NldF90ICpzKQpAQCAtMTkxLDcgKzE5MSw3IEBACiAg ICAgdGFyZ2V0X3RvX2hvc3Rfc2lnc2V0X2ludGVybmFsKGQsICZzMSk7CiB9CiAKLXZvaWQgaG9z dF90b190YXJnZXRfb2xkX3NpZ3NldCh0YXJnZXRfdWxvbmcgKm9sZF9zaWdzZXQsCit2b2lkIGhv c3RfdG9fdGFyZ2V0X29sZF9zaWdzZXQoYWJpX3Vsb25nICpvbGRfc2lnc2V0LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ3NldF90ICpzaWdzZXQpCiB7CiAgICAgdGFy Z2V0X3NpZ3NldF90IGQ7CkBAIC0yMDAsNyArMjAwLDcgQEAKIH0KIAogdm9pZCB0YXJnZXRfdG9f aG9zdF9vbGRfc2lnc2V0KHNpZ3NldF90ICpzaWdzZXQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdGFyZ2V0X3Vsb25nICpvbGRfc2lnc2V0KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGFiaV91bG9uZyAqb2xkX3NpZ3NldCkKIHsKICAgICB0YXJn ZXRfc2lnc2V0X3QgZDsKICAgICBpbnQgaTsKQEAgLTIzMyw3ICsyMzMsNyBAQAogICAgICAgICB0 aW5mby0+X3NpZmllbGRzLl9ydC5fdWlkID0gaW5mby0+c2lfdWlkOwogICAgICAgICAvKiBYWFg6 IHBvdGVudGlhbCBwcm9ibGVtIGlmIDY0IGJpdCAqLwogICAgICAgICB0aW5mby0+X3NpZmllbGRz Ll9ydC5fc2lndmFsLnNpdmFsX3B0ciA9Ci0gICAgICAgICAgICAodGFyZ2V0X3Vsb25nKWluZm8t PnNpX3ZhbHVlLnNpdmFsX3B0cjsKKyAgICAgICAgICAgIChhYmlfdWxvbmcpaW5mby0+c2lfdmFs dWUuc2l2YWxfcHRyOwogICAgIH0KIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBACiB7CiAgICAgc3Ry dWN0IGVtdWxhdGVkX3NpZ2FjdGlvbiAqazsKICAgICBzdHJ1Y3Qgc2lncXVldWUgKnEsICoqcHE7 Ci0gICAgdGFyZ2V0X3Vsb25nIGhhbmRsZXI7CisgICAgYWJpX3Vsb25nIGhhbmRsZXI7CiAKICNp ZiBkZWZpbmVkKERFQlVHX1NJR05BTCkKICAgICBmcHJpbnRmKHN0ZGVyciwgInF1ZXVlX3NpZ25h bDogc2lnPSVkXG4iLApAQCAtNDQwLDcgKzQ0MCw3IEBACiAKIGludCBkb19zaWdhbHRzdGFjayhj b25zdCBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrICp1c3MsCiAgICAgICAgICAgICAgICAgICAg c3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayAqdW9zcywKLSAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdWxvbmcgc3ApCisgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHNwKQogewogICAgIGlu dCByZXQ7CiAgICAgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayBvc3M7CkBAIC01NzksMjkgKzU3 OSwyOSBAQAogfTsKIAogc3RydWN0IHRhcmdldF94bW1yZWcgewotCXRhcmdldF91bG9uZyBlbGVt ZW50WzRdOworCWFiaV91bG9uZyBlbGVtZW50WzRdOwogfTsKIAogc3RydWN0IHRhcmdldF9mcHN0 YXRlIHsKIAkvKiBSZWd1bGFyIEZQVSBlbnZpcm9ubWVudCAqLwotCXRhcmdldF91bG9uZyAJY3c7 Ci0JdGFyZ2V0X3Vsb25nCXN3OwotCXRhcmdldF91bG9uZwl0YWc7Ci0JdGFyZ2V0X3Vsb25nCWlw b2ZmOwotCXRhcmdldF91bG9uZwljc3NlbDsKLQl0YXJnZXRfdWxvbmcJZGF0YW9mZjsKLQl0YXJn ZXRfdWxvbmcJZGF0YXNlbDsKKwlhYmlfdWxvbmcgCWN3OworCWFiaV91bG9uZwlzdzsKKwlhYmlf dWxvbmcJdGFnOworCWFiaV91bG9uZwlpcG9mZjsKKwlhYmlfdWxvbmcJY3NzZWw7CisJYWJpX3Vs b25nCWRhdGFvZmY7CisJYWJpX3Vsb25nCWRhdGFzZWw7CiAJc3RydWN0IHRhcmdldF9mcHJlZwlf c3RbOF07CiAJdWludDE2X3QJc3RhdHVzOwogCXVpbnQxNl90CW1hZ2ljOwkJLyogMHhmZmZmID0g cmVndWxhciBGUFUgZGF0YSBvbmx5ICovCiAKIAkvKiBGWFNSIEZQVSBlbnZpcm9ubWVudCAqLwot CXRhcmdldF91bG9uZwlfZnhzcl9lbnZbNl07CS8qIEZYU1IgRlBVIGVudiBpcyBpZ25vcmVkICov Ci0JdGFyZ2V0X3Vsb25nCW14Y3NyOwotCXRhcmdldF91bG9uZwlyZXNlcnZlZDsKKwlhYmlfdWxv bmcJX2Z4c3JfZW52WzZdOwkvKiBGWFNSIEZQVSBlbnYgaXMgaWdub3JlZCAqLworCWFiaV91bG9u ZwlteGNzcjsKKwlhYmlfdWxvbmcJcmVzZXJ2ZWQ7CiAJc3RydWN0IHRhcmdldF9mcHhyZWcJX2Z4 c3Jfc3RbOF07CS8qIEZYU1IgRlBVIHJlZyBkYXRhIGlzIGlnbm9yZWQgKi8KIAlzdHJ1Y3QgdGFy Z2V0X3htbXJlZwlfeG1tWzhdOwotCXRhcmdldF91bG9uZwlwYWRkaW5nWzU2XTsKKwlhYmlfdWxv bmcJcGFkZGluZ1s1Nl07CiB9OwogCiAjZGVmaW5lIFg4Nl9GWFNSX01BR0lDCQkweDAwMDAKQEAg LTYxMSwyOSArNjExLDI5IEBACiAJdWludDE2X3QgZnMsIF9fZnNoOwogCXVpbnQxNl90IGVzLCBf X2VzaDsKIAl1aW50MTZfdCBkcywgX19kc2g7Ci0JdGFyZ2V0X3Vsb25nIGVkaTsKLQl0YXJnZXRf dWxvbmcgZXNpOwotCXRhcmdldF91bG9uZyBlYnA7Ci0JdGFyZ2V0X3Vsb25nIGVzcDsKLQl0YXJn ZXRfdWxvbmcgZWJ4OwotCXRhcmdldF91bG9uZyBlZHg7Ci0JdGFyZ2V0X3Vsb25nIGVjeDsKLQl0 YXJnZXRfdWxvbmcgZWF4OwotCXRhcmdldF91bG9uZyB0cmFwbm87Ci0JdGFyZ2V0X3Vsb25nIGVy cjsKLQl0YXJnZXRfdWxvbmcgZWlwOworCWFiaV91bG9uZyBlZGk7CisJYWJpX3Vsb25nIGVzaTsK KwlhYmlfdWxvbmcgZWJwOworCWFiaV91bG9uZyBlc3A7CisJYWJpX3Vsb25nIGVieDsKKwlhYmlf dWxvbmcgZWR4OworCWFiaV91bG9uZyBlY3g7CisJYWJpX3Vsb25nIGVheDsKKwlhYmlfdWxvbmcg dHJhcG5vOworCWFiaV91bG9uZyBlcnI7CisJYWJpX3Vsb25nIGVpcDsKIAl1aW50MTZfdCBjcywg X19jc2g7Ci0JdGFyZ2V0X3Vsb25nIGVmbGFnczsKLQl0YXJnZXRfdWxvbmcgZXNwX2F0X3NpZ25h bDsKKwlhYmlfdWxvbmcgZWZsYWdzOworCWFiaV91bG9uZyBlc3BfYXRfc2lnbmFsOwogCXVpbnQx Nl90IHNzLCBfX3NzaDsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIGZwc3RhdGU7IC8qIHBvaW50ZXIg Ki8KLQl0YXJnZXRfdWxvbmcgb2xkbWFzazsKLQl0YXJnZXRfdWxvbmcgY3IyOworICAgICAgICBh YmlfdWxvbmcgZnBzdGF0ZTsgLyogcG9pbnRlciAqLworCWFiaV91bG9uZyBvbGRtYXNrOworCWFi aV91bG9uZyBjcjI7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0IHsKLSAgICAgICAgdGFy Z2V0X3Vsb25nCSAgdHVjX2ZsYWdzOwotCXRhcmdldF91bG9uZyAgICAgIHR1Y19saW5rOworICAg ICAgICBhYmlfdWxvbmcJICB0dWNfZmxhZ3M7CisJYWJpX3Vsb25nICAgICAgdHVjX2xpbms7CiAJ dGFyZ2V0X3N0YWNrX3QJICB0dWNfc3RhY2s7CiAJc3RydWN0IHRhcmdldF9zaWdjb250ZXh0IHR1 Y19tY29udGV4dDsKIAl0YXJnZXRfc2lnc2V0X3QJICB0dWNfc2lnbWFzazsJLyogbWFzayBsYXN0 IGZvciBleHRlbnNpYmlsaXR5ICovCkBAIC02NDEsMjAgKzY0MSwyMCBAQAogCiBzdHJ1Y3Qgc2ln ZnJhbWUKIHsKLSAgICB0YXJnZXRfdWxvbmcgcHJldGNvZGU7CisgICAgYWJpX3Vsb25nIHByZXRj b2RlOwogICAgIGludCBzaWc7CiAgICAgc3RydWN0IHRhcmdldF9zaWdjb250ZXh0IHNjOwogICAg IHN0cnVjdCB0YXJnZXRfZnBzdGF0ZSBmcHN0YXRlOwotICAgIHRhcmdldF91bG9uZyBleHRyYW1h c2tbVEFSR0VUX05TSUdfV09SRFMtMV07CisgICAgYWJpX3Vsb25nIGV4dHJhbWFza1tUQVJHRVRf TlNJR19XT1JEUy0xXTsKICAgICBjaGFyIHJldGNvZGVbOF07CiB9OwogCiBzdHJ1Y3QgcnRfc2ln ZnJhbWUKIHsKLSAgICB0YXJnZXRfdWxvbmcgcHJldGNvZGU7CisgICAgYWJpX3Vsb25nIHByZXRj b2RlOwogICAgIGludCBzaWc7Ci0gICAgdGFyZ2V0X3Vsb25nIHBpbmZvOwotICAgIHRhcmdldF91 bG9uZyBwdWM7CisgICAgYWJpX3Vsb25nIHBpbmZvOworICAgIGFiaV91bG9uZyBwdWM7CiAgICAg c3RydWN0IHRhcmdldF9zaWdpbmZvIGluZm87CiAgICAgc3RydWN0IHRhcmdldF91Y29udGV4dCB1 YzsKICAgICBzdHJ1Y3QgdGFyZ2V0X2Zwc3RhdGUgZnBzdGF0ZTsKQEAgLTgxMyw4ICs4MTMsOCBA QAogCQkgICAgCSAgID8gY3VycmVudC0+ZXhlY19kb21haW4tPnNpZ25hbF9pbnZtYXBbc2lnXQog CQkJICAgOiAqL3NpZyksCiAJCQkgICZmcmFtZS0+c2lnKTsKLQllcnIgfD0gX19wdXRfdXNlcigo dGFyZ2V0X3Vsb25nKSZmcmFtZS0+aW5mbywgJmZyYW1lLT5waW5mbyk7Ci0JZXJyIHw9IF9fcHV0 X3VzZXIoKHRhcmdldF91bG9uZykmZnJhbWUtPnVjLCAmZnJhbWUtPnB1Yyk7CisJZXJyIHw9IF9f cHV0X3VzZXIoKGFiaV91bG9uZykmZnJhbWUtPmluZm8sICZmcmFtZS0+cGluZm8pOworCWVyciB8 PSBfX3B1dF91c2VyKChhYmlfdWxvbmcpJmZyYW1lLT51YywgJmZyYW1lLT5wdWMpOwogCWVyciB8 PSBjb3B5X3NpZ2luZm9fdG9fdXNlcigmZnJhbWUtPmluZm8sIGluZm8pOwogCWlmIChlcnIpCiAJ CWdvdG8gZ2l2ZV9zaWdzZWd2OwpAQCAtOTc3LDMyICs5NzcsMzIgQEAKICNlbGlmIGRlZmluZWQo VEFSR0VUX0FSTSkKIAogc3RydWN0IHRhcmdldF9zaWdjb250ZXh0IHsKLQl0YXJnZXRfdWxvbmcg dHJhcF9ubzsKLQl0YXJnZXRfdWxvbmcgZXJyb3JfY29kZTsKLQl0YXJnZXRfdWxvbmcgb2xkbWFz azsKLQl0YXJnZXRfdWxvbmcgYXJtX3IwOwotCXRhcmdldF91bG9uZyBhcm1fcjE7Ci0JdGFyZ2V0 X3Vsb25nIGFybV9yMjsKLQl0YXJnZXRfdWxvbmcgYXJtX3IzOwotCXRhcmdldF91bG9uZyBhcm1f cjQ7Ci0JdGFyZ2V0X3Vsb25nIGFybV9yNTsKLQl0YXJnZXRfdWxvbmcgYXJtX3I2OwotCXRhcmdl dF91bG9uZyBhcm1fcjc7Ci0JdGFyZ2V0X3Vsb25nIGFybV9yODsKLQl0YXJnZXRfdWxvbmcgYXJt X3I5OwotCXRhcmdldF91bG9uZyBhcm1fcjEwOwotCXRhcmdldF91bG9uZyBhcm1fZnA7Ci0JdGFy Z2V0X3Vsb25nIGFybV9pcDsKLQl0YXJnZXRfdWxvbmcgYXJtX3NwOwotCXRhcmdldF91bG9uZyBh cm1fbHI7Ci0JdGFyZ2V0X3Vsb25nIGFybV9wYzsKLQl0YXJnZXRfdWxvbmcgYXJtX2Nwc3I7Ci0J dGFyZ2V0X3Vsb25nIGZhdWx0X2FkZHJlc3M7CisJYWJpX3Vsb25nIHRyYXBfbm87CisJYWJpX3Vs b25nIGVycm9yX2NvZGU7CisJYWJpX3Vsb25nIG9sZG1hc2s7CisJYWJpX3Vsb25nIGFybV9yMDsK KwlhYmlfdWxvbmcgYXJtX3IxOworCWFiaV91bG9uZyBhcm1fcjI7CisJYWJpX3Vsb25nIGFybV9y MzsKKwlhYmlfdWxvbmcgYXJtX3I0OworCWFiaV91bG9uZyBhcm1fcjU7CisJYWJpX3Vsb25nIGFy bV9yNjsKKwlhYmlfdWxvbmcgYXJtX3I3OworCWFiaV91bG9uZyBhcm1fcjg7CisJYWJpX3Vsb25n IGFybV9yOTsKKwlhYmlfdWxvbmcgYXJtX3IxMDsKKwlhYmlfdWxvbmcgYXJtX2ZwOworCWFiaV91 bG9uZyBhcm1faXA7CisJYWJpX3Vsb25nIGFybV9zcDsKKwlhYmlfdWxvbmcgYXJtX2xyOworCWFi aV91bG9uZyBhcm1fcGM7CisJYWJpX3Vsb25nIGFybV9jcHNyOworCWFiaV91bG9uZyBmYXVsdF9h ZGRyZXNzOwogfTsKIAogc3RydWN0IHRhcmdldF91Y29udGV4dCB7Ci0gICAgdGFyZ2V0X3Vsb25n IHR1Y19mbGFnczsKLSAgICB0YXJnZXRfdWxvbmcgdHVjX2xpbms7CisgICAgYWJpX3Vsb25nIHR1 Y19mbGFnczsKKyAgICBhYmlfdWxvbmcgdHVjX2xpbms7CiAgICAgdGFyZ2V0X3N0YWNrX3QgdHVj X3N0YWNrOwogICAgIHN0cnVjdCB0YXJnZXRfc2lnY29udGV4dCB0dWNfbWNvbnRleHQ7CiAgICAg dGFyZ2V0X3NpZ3NldF90ICB0dWNfc2lnbWFzazsJLyogbWFzayBsYXN0IGZvciBleHRlbnNpYmls aXR5ICovCkBAIC0xMDExLDggKzEwMTEsOCBAQAogc3RydWN0IHNpZ2ZyYW1lCiB7CiAgICAgc3Ry dWN0IHRhcmdldF9zaWdjb250ZXh0IHNjOwotICAgIHRhcmdldF91bG9uZyBleHRyYW1hc2tbVEFS R0VUX05TSUdfV09SRFMtMV07Ci0gICAgdGFyZ2V0X3Vsb25nIHJldGNvZGU7CisgICAgYWJpX3Vs b25nIGV4dHJhbWFza1tUQVJHRVRfTlNJR19XT1JEUy0xXTsKKyAgICBhYmlfdWxvbmcgcmV0Y29k ZTsKIH07CiAKIHN0cnVjdCBydF9zaWdmcmFtZQpAQCAtMTAyMSw3ICsxMDIxLDcgQEAKICAgICB2 b2lkICpwdWM7CiAgICAgc3RydWN0IHRhcmdldF9zaWdpbmZvIGluZm87CiAgICAgc3RydWN0IHRh cmdldF91Y29udGV4dCB1YzsKLSAgICB0YXJnZXRfdWxvbmcgcmV0Y29kZTsKKyAgICBhYmlfdWxv bmcgcmV0Y29kZTsKIH07CiAKICNkZWZpbmUgVEFSR0VUX0NPTkZJR19DUFVfMzIgMQpAQCAtMTAz OSw3ICsxMDM5LDcgQEAKICNkZWZpbmUgU1dJX1RIVU1CX1NJR1JFVFVSTgkoMHhkZjAwIDw8IDE2 IHwgMHgyNzAwIHwgKFRBUkdFVF9OUl9zaWdyZXR1cm4pKQogI2RlZmluZSBTV0lfVEhVTUJfUlRf U0lHUkVUVVJOCSgweGRmMDAgPDwgMTYgfCAweDI3MDAgfCAoVEFSR0VUX05SX3J0X3NpZ3JldHVy bikpCiAKLXN0YXRpYyBjb25zdCB0YXJnZXRfdWxvbmcgcmV0Y29kZXNbNF0gPSB7CitzdGF0aWMg Y29uc3QgYWJpX3Vsb25nIHJldGNvZGVzWzRdID0gewogCVNXSV9TWVNfU0lHUkVUVVJOLAlTV0lf VEhVTUJfU0lHUkVUVVJOLAogCVNXSV9TWVNfUlRfU0lHUkVUVVJOLAlTV0lfVEhVTUJfUlRfU0lH UkVUVVJOCiB9OwpAQCAtMTEwNSwxNCArMTEwNSwxNCBAQAogCiBzdGF0aWMgaW50CiBzZXR1cF9y ZXR1cm4oQ1BVU3RhdGUgKmVudiwgc3RydWN0IGVtdWxhdGVkX3NpZ2FjdGlvbiAqa2EsCi0JICAg ICB0YXJnZXRfdWxvbmcgKnJjLCB2b2lkICpmcmFtZSwgaW50IHVzaWcpCisJICAgICBhYmlfdWxv bmcgKnJjLCB2b2lkICpmcmFtZSwgaW50IHVzaWcpCiB7Ci0JdGFyZ2V0X3Vsb25nIGhhbmRsZXIg PSAodGFyZ2V0X3Vsb25nKWthLT5zYS5fc2FfaGFuZGxlcjsKLQl0YXJnZXRfdWxvbmcgcmV0Y29k ZTsKKwlhYmlfdWxvbmcgaGFuZGxlciA9IChhYmlfdWxvbmcpa2EtPnNhLl9zYV9oYW5kbGVyOwor CWFiaV91bG9uZyByZXRjb2RlOwogCWludCB0aHVtYiA9IDA7CiAjaWYgZGVmaW5lZChUQVJHRVRf Q09ORklHX0NQVV8zMikKICNpZiAwCi0JdGFyZ2V0X3Vsb25nIGNwc3IgPSBlbnYtPmNwc3I7CisJ YWJpX3Vsb25nIGNwc3IgPSBlbnYtPmNwc3I7CiAKIAkvKgogCSAqIE1heWJlIHdlIG5lZWQgdG8g ZGVsaXZlciBhIDMyLWJpdCBzaWduYWwgdG8gYSAyNi1iaXQgdGFzay4KQEAgLTExMzgsNyArMTEz OCw3IEBACiAjZW5kaWYgLyogVEFSR0VUX0NPTkZJR19DUFVfMzIgKi8KIAogCWlmIChrYS0+c2Eu c2FfZmxhZ3MgJiBUQVJHRVRfU0FfUkVTVE9SRVIpIHsKLQkJcmV0Y29kZSA9ICh0YXJnZXRfdWxv bmcpa2EtPnNhLnNhX3Jlc3RvcmVyOworCQlyZXRjb2RlID0gKGFiaV91bG9uZylrYS0+c2Euc2Ff cmVzdG9yZXI7CiAJfSBlbHNlIHsKIAkJdW5zaWduZWQgaW50IGlkeCA9IHRodW1iOwogCkBAIC0x MTQ4LDEwICsxMTQ4LDEwIEBACiAJCWlmIChfX3B1dF91c2VyKHJldGNvZGVzW2lkeF0sIHJjKSkK IAkJCXJldHVybiAxOwogI2lmIDAKLQkJZmx1c2hfaWNhY2hlX3JhbmdlKCh0YXJnZXRfdWxvbmcp cmMsCi0JCQkJICAgKHRhcmdldF91bG9uZykocmMgKyAxKSk7CisJCWZsdXNoX2ljYWNoZV9yYW5n ZSgoYWJpX3Vsb25nKXJjLAorCQkJCSAgIChhYmlfdWxvbmcpKHJjICsgMSkpOwogI2VuZGlmCi0J CXJldGNvZGUgPSAoKHRhcmdldF91bG9uZylyYykgKyB0aHVtYjsKKwkJcmV0Y29kZSA9ICgoYWJp X3Vsb25nKXJjKSArIHRodW1iOwogCX0KIAogCWVudi0+cmVnc1swXSA9IHVzaWc7CkBAIC0xMTk3 LDggKzExOTcsOCBAQAogCWlmICghYWNjZXNzX29rKFZFUklGWV9XUklURSwgZnJhbWUsIHNpemVv ZiAoKmZyYW1lKSkpCiAgICAgICAgICAgICByZXR1cm4gLyogMSAqLzsKIAotCV9fcHV0X3VzZXJf ZXJyb3IoJmZyYW1lLT5pbmZvLCAodGFyZ2V0X3Vsb25nICopJmZyYW1lLT5waW5mbywgZXJyKTsK LQlfX3B1dF91c2VyX2Vycm9yKCZmcmFtZS0+dWMsICh0YXJnZXRfdWxvbmcgKikmZnJhbWUtPnB1 YywgZXJyKTsKKwlfX3B1dF91c2VyX2Vycm9yKCZmcmFtZS0+aW5mbywgKGFiaV91bG9uZyAqKSZm cmFtZS0+cGluZm8sIGVycik7CisJX19wdXRfdXNlcl9lcnJvcigmZnJhbWUtPnVjLCAoYWJpX3Vs b25nICopJmZyYW1lLT5wdWMsIGVycik7CiAJZXJyIHw9IGNvcHlfc2lnaW5mb190b191c2VyKCZm cmFtZS0+aW5mbywgaW5mbyk7CiAKIAkvKiBDbGVhciBhbGwgdGhlIGJpdHMgb2YgdGhlIHVjb250 ZXh0IHdlIGRvbid0IHVzZS4gICovCkBAIC0xMjI5LDggKzEyMjksOCBAQAogCQkgKiBhcmd1bWVu dHMgZm9yIHRoZSBzaWduYWwgaGFuZGxlci4KIAkJICogICAtLSBQZXRlciBNYXlkZWxsIDxwbWF5 ZGVsbEBjaGlhcmsuZ3JlZW5lbmQub3JnLnVrPiAyMDAwLTEyLTA2CiAJCSAqLwotICAgICAgICAg ICAgZW52LT5yZWdzWzFdID0gKHRhcmdldF91bG9uZylmcmFtZS0+cGluZm87Ci0gICAgICAgICAg ICBlbnYtPnJlZ3NbMl0gPSAodGFyZ2V0X3Vsb25nKWZyYW1lLT5wdWM7CisgICAgICAgICAgICBl bnYtPnJlZ3NbMV0gPSAoYWJpX3Vsb25nKWZyYW1lLT5waW5mbzsKKyAgICAgICAgICAgIGVudi0+ cmVnc1syXSA9IChhYmlfdWxvbmcpZnJhbWUtPnB1YzsKIAl9CiAKICAgICAgICAgLy8JcmV0dXJu IGVycjsKQEAgLTEzNjAsNDggKzEzNjAsNDggQEAKIAogLyogVGhpcyBpcyB3aGF0IFN1bk9TIGRv ZXMsIHNvIHNoYWxsIEkuICovCiBzdHJ1Y3QgdGFyZ2V0X3NpZ2NvbnRleHQgewotICAgICAgICB0 YXJnZXRfdWxvbmcgc2lnY19vbnN0YWNrOyAgICAgIC8qIHN0YXRlIHRvIHJlc3RvcmUgKi8KKyAg ICAgICAgYWJpX3Vsb25nIHNpZ2Nfb25zdGFjazsgICAgICAvKiBzdGF0ZSB0byByZXN0b3JlICov CiAKLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNpZ2NfbWFzazsgICAgICAgICAvKiBzaWdtYXNrIHRv IHJlc3RvcmUgKi8KLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNpZ2Nfc3A7ICAgICAgICAgICAvKiBz dGFjayBwb2ludGVyICovCi0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX3BjOyAgICAgICAgICAg LyogcHJvZ3JhbSBjb3VudGVyICovCi0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX25wYzsgICAg ICAgICAgLyogbmV4dCBwcm9ncmFtIGNvdW50ZXIgKi8KLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNp Z2NfcHNyOyAgICAgICAgICAvKiBmb3IgY29uZGl0aW9uIGNvZGVzIGV0YyAqLwotICAgICAgICB0 YXJnZXRfdWxvbmcgc2lnY19nMTsgICAgICAgICAgIC8qIFVzZXIgdXNlcyB0aGVzZSB0d28gcmVn aXN0ZXJzICovCi0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX28wOyAgICAgICAgICAgLyogd2l0 aGluIHRoZSB0cmFtcG9saW5lIGNvZGUuICovCisgICAgICAgIGFiaV91bG9uZyBzaWdjX21hc2s7 ICAgICAgICAgLyogc2lnbWFzayB0byByZXN0b3JlICovCisgICAgICAgIGFiaV91bG9uZyBzaWdj X3NwOyAgICAgICAgICAgLyogc3RhY2sgcG9pbnRlciAqLworICAgICAgICBhYmlfdWxvbmcgc2ln Y19wYzsgICAgICAgICAgIC8qIHByb2dyYW0gY291bnRlciAqLworICAgICAgICBhYmlfdWxvbmcg c2lnY19ucGM7ICAgICAgICAgIC8qIG5leHQgcHJvZ3JhbSBjb3VudGVyICovCisgICAgICAgIGFi aV91bG9uZyBzaWdjX3BzcjsgICAgICAgICAgLyogZm9yIGNvbmRpdGlvbiBjb2RlcyBldGMgKi8K KyAgICAgICAgYWJpX3Vsb25nIHNpZ2NfZzE7ICAgICAgICAgICAvKiBVc2VyIHVzZXMgdGhlc2Ug dHdvIHJlZ2lzdGVycyAqLworICAgICAgICBhYmlfdWxvbmcgc2lnY19vMDsgICAgICAgICAgIC8q IHdpdGhpbiB0aGUgdHJhbXBvbGluZSBjb2RlLiAqLwogCiAgICAgICAgIC8qIE5vdyBjb21lcyBp bmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHVzZXJzIHdpbmRvdyBzZXQKICAgICAgICAgICogYXQg dGhlIHRpbWUgb2YgdGhlIHNpZ25hbC4KICAgICAgICAgICovCi0gICAgICAgIHRhcmdldF91bG9u ZyBzaWdjX29zd2luczsgICAgICAgLyogb3V0c3RhbmRpbmcgd2luZG93cyAqLworICAgICAgICBh YmlfdWxvbmcgc2lnY19vc3dpbnM7ICAgICAgIC8qIG91dHN0YW5kaW5nIHdpbmRvd3MgKi8KIAog ICAgICAgICAvKiBzdGFjayBwdHJzIGZvciBlYWNoIHJlZ3dpbiBidWYgKi8KICAgICAgICAgY2hh ciAqc2lnY19zcGJ1ZltfX1NVTk9TX01BWFdJTl07CiAKICAgICAgICAgLyogV2luZG93cyB0byBy ZXN0b3JlIGFmdGVyIHNpZ25hbCAqLwogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAg IHRhcmdldF91bG9uZyBsb2NhbHNbOF07Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGlu c1s4XTsKKyAgICAgICAgICAgICAgICBhYmlfdWxvbmcgbG9jYWxzWzhdOworICAgICAgICAgICAg ICAgIGFiaV91bG9uZyBpbnNbOF07CiAgICAgICAgIH0gc2lnY193YnVmW19fU1VOT1NfTUFYV0lO XTsKIH07CiAvKiBBIFNwYXJjIHN0YWNrIGZyYW1lICovCiBzdHJ1Y3Qgc3BhcmNfc3RhY2tmIHsK LSAgICAgICAgdGFyZ2V0X3Vsb25nIGxvY2Fsc1s4XTsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIGlu c1s2XTsKKyAgICAgICAgYWJpX3Vsb25nIGxvY2Fsc1s4XTsKKyAgICAgICAgYWJpX3Vsb25nIGlu c1s2XTsKICAgICAgICAgc3RydWN0IHNwYXJjX3N0YWNrZiAqZnA7Ci0gICAgICAgIHRhcmdldF91 bG9uZyBjYWxsZXJzX3BjOworICAgICAgICBhYmlfdWxvbmcgY2FsbGVyc19wYzsKICAgICAgICAg Y2hhciAqc3RydWN0cHRyOwotICAgICAgICB0YXJnZXRfdWxvbmcgeGFyZ3NbNl07Ci0gICAgICAg IHRhcmdldF91bG9uZyB4eGFyZ3NbMV07CisgICAgICAgIGFiaV91bG9uZyB4YXJnc1s2XTsKKyAg ICAgICAgYWJpX3Vsb25nIHh4YXJnc1sxXTsKIH07CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICAg ICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgcHNyOwotICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyBwYzsKLSAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgbnBj OwotICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB5OwotICAgICAgICAgICAgICAgIHRhcmdl dF91bG9uZyB1X3JlZ3NbMTZdOyAvKiBnbG9iYWxzIGFuZCBpbnMgKi8KKyAgICAgICAgICAgICAg ICBhYmlfdWxvbmcgcHNyOworICAgICAgICAgICAgICAgIGFiaV91bG9uZyBwYzsKKyAgICAgICAg ICAgICAgICBhYmlfdWxvbmcgbnBjOworICAgICAgICAgICAgICAgIGFiaV91bG9uZyB5OworICAg ICAgICAgICAgICAgIGFiaV91bG9uZyB1X3JlZ3NbMTZdOyAvKiBnbG9iYWxzIGFuZCBpbnMgKi8K ICAgICAgICAgfSAgICAgICAgICAgICAgIHNpX3JlZ3M7CiAgICAgICAgIGludCAgICAgICAgICAg ICBzaV9tYXNrOwogfSBfX3NpZ2luZm9fdDsKQEAgLTE0MjEsMTUgKzE0MjEsMTUgQEAKIAlzdHJ1 Y3Qgc3BhcmNfc3RhY2tmCXNzOwogCV9fc2lnaW5mb190CQlpbmZvOwogCXFlbXVfc2lnaW5mb19m cHVfdCAJKmZwdV9zYXZlOwotCXRhcmdldF91bG9uZwkJaW5zbnNbMl0gX19hdHRyaWJ1dGVfXyAo KGFsaWduZWQgKDgpKSk7Ci0JdGFyZ2V0X3Vsb25nCQlleHRyYW1hc2tbVEFSR0VUX05TSUdfV09S RFMgLSAxXTsKLQl0YXJnZXRfdWxvbmcJCWV4dHJhX3NpemU7IC8qIFNob3VsZCBiZSAwICovCisJ YWJpX3Vsb25nCQlpbnNuc1syXSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoOCkpKTsKKwlhYmlf dWxvbmcJCWV4dHJhbWFza1tUQVJHRVRfTlNJR19XT1JEUyAtIDFdOworCWFiaV91bG9uZwkJZXh0 cmFfc2l6ZTsgLyogU2hvdWxkIGJlIDAgKi8KIAlxZW11X3NpZ2luZm9fZnB1X3QJZnB1X3N0YXRl OwogfTsKIHN0cnVjdCB0YXJnZXRfcnRfc2lnbmFsX2ZyYW1lIHsKIAlzdHJ1Y3Qgc3BhcmNfc3Rh Y2tmCXNzOwogCXNpZ2luZm9fdAkJaW5mbzsKLQl0YXJnZXRfdWxvbmcJCXJlZ3NbMjBdOworCWFi aV91bG9uZwkJcmVnc1syMF07CiAJc2lnc2V0X3QJCW1hc2s7CiAJcWVtdV9zaWdpbmZvX2ZwdV90 IAkqZnB1X3NhdmU7CiAJdW5zaWduZWQgaW50CQlpbnNuc1syXTsKQEAgLTE0NjgsNyArMTQ2OCw3 IEBACiB9CiAKIHN0YXRpYyBpbnQKLXNldHVwX19fc2lnaW5mbyhfX3NpZ2luZm9fdCAqc2ksIENQ VVN0YXRlICplbnYsIHRhcmdldF91bG9uZyBtYXNrKQorc2V0dXBfX19zaWdpbmZvKF9fc2lnaW5m b190ICpzaSwgQ1BVU3RhdGUgKmVudiwgYWJpX3Vsb25nIG1hc2spCiB7CiAJaW50IGVyciA9IDAs IGk7CiAKQEAgLTE2MzQsNyArMTYzNCw3IEBACiAgICAgICAgIHVpbnQzMl90IHVwX3BzciwgcGMs IG5wYzsKICAgICAgICAgdGFyZ2V0X3NpZ3NldF90IHNldDsKICAgICAgICAgc2lnc2V0X3QgaG9z dF9zZXQ7Ci0gICAgICAgIHRhcmdldF91bG9uZyBmcHVfc2F2ZTsKKyAgICAgICAgYWJpX3Vsb25n IGZwdV9zYXZlOwogICAgICAgICBpbnQgZXJyLCBpOwogCiAgICAgICAgIHNmID0gKHN0cnVjdCB0 YXJnZXRfc2lnbmFsX2ZyYW1lICopZzJoKGVudi0+cmVnd3B0cltVUkVHX0ZQXSk7CkBAIC0xNjc2 LDcgKzE2NzYsNyBAQAogCQllcnIgfD0gX19nZXRfdXNlcihlbnYtPnJlZ3dwdHJbaSArIFVSRUdf STBdLCAmc2YtPmluZm8uc2lfcmVncy51X3JlZ3NbaSs4XSk7CiAJfQogCi0gICAgICAgIGVyciB8 PSBfX2dldF91c2VyKGZwdV9zYXZlLCAodGFyZ2V0X3Vsb25nICopJnNmLT5mcHVfc2F2ZSk7Cisg ICAgICAgIGVyciB8PSBfX2dldF91c2VyKGZwdV9zYXZlLCAoYWJpX3Vsb25nICopJnNmLT5mcHVf c2F2ZSk7CiAKICAgICAgICAgLy9pZiAoZnB1X3NhdmUpCiAgICAgICAgIC8vICAgICAgICBlcnIg fD0gcmVzdG9yZV9mcHVfc3RhdGUoZW52LCBmcHVfc2F2ZSk7CkBAIC0xNzI5LDExICsxNzI5LDEx IEBACiAjZGVmaW5lIE1DX083IDE4CiAjZGVmaW5lIE1DX05HUkVHIDE5CiAKLXR5cGVkZWYgdGFy Z2V0X3Vsb25nIHRhcmdldF9tY19ncmVnX3Q7Cit0eXBlZGVmIGFiaV91bG9uZyB0YXJnZXRfbWNf Z3JlZ190OwogdHlwZWRlZiB0YXJnZXRfbWNfZ3JlZ190IHRhcmdldF9tY19ncmVnc2V0X3RbTUNf TkdSRUddOwogCiBzdHJ1Y3QgdGFyZ2V0X21jX2ZxIHsKLSAgICB0YXJnZXRfdWxvbmcgKm1jZnFf YWRkcjsKKyAgICBhYmlfdWxvbmcgKm1jZnFfYWRkcjsKICAgICB1aW50MzJfdCBtY2ZxX2luc247 CiB9OwogCkBAIC0xNzQzLDkgKzE3NDMsOSBAQAogICAgICAgICB1aW50NjRfdCBkcmVnc1szMl07 CiAgICAgICAgIC8vdWludDEyOF90IHFyZWdzWzE2XTsKICAgICB9IG1jZnB1X2ZyZWdzOwotICAg IHRhcmdldF91bG9uZyBtY2ZwdV9mc3I7Ci0gICAgdGFyZ2V0X3Vsb25nIG1jZnB1X2ZwcnM7Ci0g ICAgdGFyZ2V0X3Vsb25nIG1jZnB1X2dzcjsKKyAgICBhYmlfdWxvbmcgbWNmcHVfZnNyOworICAg IGFiaV91bG9uZyBtY2ZwdV9mcHJzOworICAgIGFiaV91bG9uZyBtY2ZwdV9nc3I7CiAgICAgc3Ry dWN0IHRhcmdldF9tY19mcSAqbWNmcHVfZnE7CiAgICAgdW5zaWduZWQgY2hhciBtY2ZwdV9xY250 OwogICAgIHVuc2lnbmVkIGNoYXIgbWNmcHVfcWVudHN6OwpAQCAtMTc2MiwxNSArMTc2MiwxNSBA QAogCiBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0IHsKICAgICBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0 ICp1Y19saW5rOwotICAgIHRhcmdldF91bG9uZyB1Y19mbGFnczsKKyAgICBhYmlfdWxvbmcgdWNf ZmxhZ3M7CiAgICAgdGFyZ2V0X3NpZ3NldF90IHVjX3NpZ21hc2s7CiAgICAgdGFyZ2V0X21jb250 ZXh0X3QgdWNfbWNvbnRleHQ7CiB9OwogCiAvKiBBIFY5IHJlZ2lzdGVyIHdpbmRvdyAqLwogc3Ry dWN0IHRhcmdldF9yZWdfd2luZG93IHsKLSAgICB0YXJnZXRfdWxvbmcgbG9jYWxzWzhdOwotICAg IHRhcmdldF91bG9uZyBpbnNbOF07CisgICAgYWJpX3Vsb25nIGxvY2Fsc1s4XTsKKyAgICBhYmlf dWxvbmcgaW5zWzhdOwogfTsKIAogI2RlZmluZSBUQVJHRVRfU1RBQ0tfQklBUyAyMDQ3CkBAIC0x NzgxLDEyICsxNzgxLDEyIEBACiAgICAgc3RydWN0IHRhcmdldF91Y29udGV4dCAqdWNwID0gKHN0 cnVjdCB0YXJnZXRfdWNvbnRleHQgKikKICAgICAgICAgZW52LT5yZWd3cHRyW1VSRUdfSTBdOwog ICAgIHRhcmdldF9tY19ncmVnc2V0X3QgKmdycDsKLSAgICB0YXJnZXRfdWxvbmcgcGMsIG5wYywg dHN0YXRlOwotICAgIHRhcmdldF91bG9uZyBmcCwgaTc7CisgICAgYWJpX3Vsb25nIHBjLCBucGMs IHRzdGF0ZTsKKyAgICBhYmlfdWxvbmcgZnAsIGk3OwogICAgIHVuc2lnbmVkIGNoYXIgZmVuYWI7 CiAgICAgaW50IGVycjsKICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICB0YXJnZXRfdWxvbmcgKnNy YywgKmRzdDsKKyAgICBhYmlfdWxvbmcgKnNyYywgKmRzdDsKIAogICAgIGdycCAgPSAmdWNwLT51 Y19tY29udGV4dC5tY19ncmVnczsKICAgICBlcnIgID0gZ2V0X3VzZXIocGMsICYoKCpncnApW01D X1BDXSkpOwpAQCAtMTgwMyw3ICsxODAzLDcgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg ICAgIHNyYyA9ICZ1Y3AtPnVjX3NpZ21hc2s7CiAgICAgICAgICAgICBkc3QgPSAmdGFyZ2V0X3Nl dDsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSAv IHNpemVvZih0YXJnZXRfdWxvbmcpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVv Zih0YXJnZXRfc2lnc2V0X3QpIC8gc2l6ZW9mKGFiaV91bG9uZyk7CiAgICAgICAgICAgICAgICAg IGkrKywgZHN0KyssIHNyYysrKQogICAgICAgICAgICAgICAgIGVyciB8PSBnZXRfdXNlcihkc3Qs IHNyYyk7CiAgICAgICAgICAgICBpZiAoZXJyKQpAQCAtMTg2NiwxMCArMTg2NiwxMCBAQAogICAg ICAgICBlbnYtPnJlZ3dwdHJbVVJFR19JMF07CiAgICAgdGFyZ2V0X21jX2dyZWdzZXRfdCAqZ3Jw OwogICAgIHRhcmdldF9tY29udGV4dF90ICptY3A7Ci0gICAgdGFyZ2V0X3Vsb25nIGZwLCBpNzsK KyAgICBhYmlfdWxvbmcgZnAsIGk3OwogICAgIGludCBlcnI7CiAgICAgdW5zaWduZWQgaW50IGk7 Ci0gICAgdGFyZ2V0X3Vsb25nICpzcmMsICpkc3Q7CisgICAgYWJpX3Vsb25nICpzcmMsICpkc3Q7 CiAgICAgdGFyZ2V0X3NpZ3NldF90IHRhcmdldF9zZXQ7CiAgICAgc2lnc2V0X3Qgc2V0OwogCkBA IC0xODg2LDExICsxODg2LDExIEBACiAgICAgaG9zdF90b190YXJnZXRfc2lnc2V0X2ludGVybmFs KCZ0YXJnZXRfc2V0LCAmc2V0KTsKICAgICBpZiAoVEFSR0VUX05TSUdfV09SRFMgPT0gMSkKICAg ICAgICAgZXJyIHw9IHB1dF91c2VyKHRhcmdldF9zZXQuc2lnWzBdLAotICAgICAgICAgICAgICAg ICAgICAgICAgKHRhcmdldF91bG9uZyAqKSZ1Y3AtPnVjX3NpZ21hc2spOworICAgICAgICAgICAg ICAgICAgICAgICAgKGFiaV91bG9uZyAqKSZ1Y3AtPnVjX3NpZ21hc2spOwogICAgIGVsc2Ugewog ICAgICAgICBzcmMgPSAmdGFyZ2V0X3NldDsKICAgICAgICAgZHN0ID0gJnVjcC0+dWNfc2lnbWFz azsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0YXJnZXRfc2lnc2V0X3QpIC8gc2l6 ZW9mKHRhcmdldF91bG9uZyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodGFyZ2V0 X3NpZ3NldF90KSAvIHNpemVvZihhYmlfdWxvbmcpOwogICAgICAgICAgICAgIGkrKywgZHN0Kyss IHNyYysrKQogICAgICAgICAgICAgZXJyIHw9IHB1dF91c2VyKHNyYywgZHN0KTsKICAgICAgICAg aWYgKGVycikKQEAgLTIwMTMsMTIgKzIwMTMsMTIgQEAKICAgICB1aW50MzJfdCAgIHNjX2RzcDsg ICAgICAgICAvKiBkc3Agc3RhdHVzLCB3YXMgc2Nfc3NmbGFncyAqLwogICAgIHVpbnQ2NF90ICAg c2NfbWRoaTsKICAgICB1aW50NjRfdCAgIHNjX21kbG87Ci0gICAgdGFyZ2V0X3Vsb25nICAgc2Nf aGkxOyAgICAgICAgIC8qIFdhcyBzY19jYXVzZSAqLwotICAgIHRhcmdldF91bG9uZyAgIHNjX2xv MTsgICAgICAgICAvKiBXYXMgc2NfYmFkdmFkZHIgKi8KLSAgICB0YXJnZXRfdWxvbmcgICBzY19o aTI7ICAgICAgICAgLyogV2FzIHNjX3NpZ3NldFs0XSAqLwotICAgIHRhcmdldF91bG9uZyAgIHNj X2xvMjsKLSAgICB0YXJnZXRfdWxvbmcgICBzY19oaTM7Ci0gICAgdGFyZ2V0X3Vsb25nICAgc2Nf bG8zOworICAgIGFiaV91bG9uZyAgIHNjX2hpMTsgICAgICAgICAvKiBXYXMgc2NfY2F1c2UgKi8K KyAgICBhYmlfdWxvbmcgICBzY19sbzE7ICAgICAgICAgLyogV2FzIHNjX2JhZHZhZGRyICovCisg ICAgYWJpX3Vsb25nICAgc2NfaGkyOyAgICAgICAgIC8qIFdhcyBzY19zaWdzZXRbNF0gKi8KKyAg ICBhYmlfdWxvbmcgICBzY19sbzI7CisgICAgYWJpX3Vsb25nICAgc2NfaGkzOworICAgIGFiaV91 bG9uZyAgIHNjX2xvMzsKIH07CiAKIHN0cnVjdCBzaWdmcmFtZSB7CkBAIC0yMzU0LDcgKzIzNTQs NyBAQAogdm9pZCBwcm9jZXNzX3BlbmRpbmdfc2lnbmFscyh2b2lkICpjcHVfZW52KQogewogICAg IGludCBzaWc7Ci0gICAgdGFyZ2V0X3Vsb25nIGhhbmRsZXI7CisgICAgYWJpX3Vsb25nIGhhbmRs ZXI7CiAgICAgc2lnc2V0X3Qgc2V0LCBvbGRfc2V0OwogICAgIHRhcmdldF9zaWdzZXRfdCB0YXJn ZXRfb2xkX3NldDsKICAgICBzdHJ1Y3QgZW11bGF0ZWRfc2lnYWN0aW9uICprOwpJbmRleDogcWVt dS9saW51eC11c2VyL3NwYXJjL3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGlu dXgtdXNlci9zcGFyYy9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvbGludXgtdXNlci9zcGFyYy9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzo0 Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTEsOSArMSw5IEBACiBzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3Mg ewotCXRhcmdldF91bG9uZyBwc3I7Ci0JdGFyZ2V0X3Vsb25nIHBjOwotCXRhcmdldF91bG9uZyBu cGM7Ci0JdGFyZ2V0X3Vsb25nIHk7Ci0JdGFyZ2V0X3Vsb25nIHVfcmVnc1sxNl07CisJYWJpX3Vs b25nIHBzcjsKKwlhYmlfdWxvbmcgcGM7CisJYWJpX3Vsb25nIG5wYzsKKwlhYmlfdWxvbmcgeTsK KwlhYmlfdWxvbmcgdV9yZWdzWzE2XTsKIH07CiAKICNkZWZpbmUgVU5BTUVfTUFDSElORSAic3Vu NCIKSW5kZXg6IHFlbXUvbGludXgtdXNlci9zcGFyYy90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvc3BhcmMvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAt MTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvc3BhcmMvdGFy Z2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02LDkg KzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5c2Nh bGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKLQl0 YXJnZXRfdWxvbmcgc3Nfc3A7Ci0JdGFyZ2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25n IHNzX3NpemU7CisJYWJpX3Vsb25nIHNzX3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFiaV91 bG9uZyBzc19zaXplOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yOCw3ICsyOCw3IEBACiAj ZGVmaW5lIFVSRUdfRlAgICAgICAgIFVSRUdfSTYKICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIHRh cmdldF91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVTUEFSQ1N0YXRlICpzdGF0ZSkKK3N0 YXRpYyBpbmxpbmUgYWJpX3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0YXRlKENQVVNQQVJDU3RhdGUg KnN0YXRlKQogewogICAgIHJldHVybiBzdGF0ZS0+cmVnd3B0cltVUkVHX0ZQXTsKIH0KSW5kZXg6 IHFlbXUvbGludXgtdXNlci9zcGFyYzY0L3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9y aWcvbGludXgtdXNlci9zcGFyYzY0L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAw MDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3NwYXJjNjQvc3lzY2FsbC5oCTIwMDctMTAt MTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC0xLDEwICsxLDEwIEBACiBzdHJ1Y3QgdGFy Z2V0X3B0X3JlZ3MgewotCXRhcmdldF91bG9uZyB1X3JlZ3NbMTZdOwotCXRhcmdldF91bG9uZyB0 c3RhdGU7Ci0JdGFyZ2V0X3Vsb25nIHBjOwotCXRhcmdldF91bG9uZyBucGM7Ci0JdGFyZ2V0X3Vs b25nIHk7Ci0JdGFyZ2V0X3Vsb25nIGZwcnM7CisJYWJpX3Vsb25nIHVfcmVnc1sxNl07CisJYWJp X3Vsb25nIHRzdGF0ZTsKKwlhYmlfdWxvbmcgcGM7CisJYWJpX3Vsb25nIG5wYzsKKwlhYmlfdWxv bmcgeTsKKwlhYmlfdWxvbmcgZnByczsKIH07CiAKICNkZWZpbmUgVU5BTUVfTUFDSElORSAic3Vu NHUiCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvc3BhcmM2NC90YXJnZXRfc2lnbmFsLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvc3BhcmM2NC90YXJnZXRfc2lnbmFsLmgJMjAw Ny0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9zcGFy YzY0L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApA QCAtNiw5ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmlu ZyBzeXNjYWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFj ayB7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdl dF91bG9uZyBzc19zaXplOworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsK KwlhYmlfdWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjgsNyArMjgs NyBAQAogI2RlZmluZSBVUkVHX0ZQICAgICAgICBVUkVHX0k2CiAjZW5kaWYKIAotc3RhdGljIGlu bGluZSB0YXJnZXRfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVU1BBUkNTdGF0ZSAqc3Rh dGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVTUEFS Q1N0YXRlICpzdGF0ZSkKIHsKICAgICByZXR1cm4gc3RhdGUtPnJlZ3dwdHJbVVJFR19GUF07CiB9 CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvc3lzY2FsbC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3Jp Zy9saW51eC11c2VyL3N5c2NhbGwuYwkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAw MAorKysgcWVtdS9saW51eC11c2VyL3N5c2NhbGwuYwkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAw MDAwMCArMDAwMApAQCAtMzY4LDcgKzM2OCw3IEBACiAgICAgcmV0dXJuIGVycjsKIH0KIAotc3Rh dGljIGlubGluZSB0YXJnZXRfbG9uZyBnZXRfZXJybm8odGFyZ2V0X2xvbmcgcmV0KQorc3RhdGlj IGlubGluZSBhYmlfbG9uZyBnZXRfZXJybm8oYWJpX2xvbmcgcmV0KQogewogICAgIGlmIChyZXQg PT0gLTEpCiAgICAgICAgIHJldHVybiAtaG9zdF90b190YXJnZXRfZXJybm8oZXJybm8pOwpAQCAt Mzc2LDIzICszNzYsMjMgQEAKICAgICAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlubGlu ZSBpbnQgaXNfZXJyb3IodGFyZ2V0X2xvbmcgcmV0KQorc3RhdGljIGlubGluZSBpbnQgaXNfZXJy b3IoYWJpX2xvbmcgcmV0KQogewotICAgIHJldHVybiAodGFyZ2V0X3Vsb25nKXJldCA+PSAodGFy Z2V0X3Vsb25nKSgtNDA5Nik7CisgICAgcmV0dXJuIChhYmlfdWxvbmcpcmV0ID49IChhYmlfdWxv bmcpKC00MDk2KTsKIH0KIAotc3RhdGljIHRhcmdldF91bG9uZyB0YXJnZXRfYnJrOwotc3RhdGlj IHRhcmdldF91bG9uZyB0YXJnZXRfb3JpZ2luYWxfYnJrOworc3RhdGljIGFiaV91bG9uZyB0YXJn ZXRfYnJrOworc3RhdGljIGFiaV91bG9uZyB0YXJnZXRfb3JpZ2luYWxfYnJrOwogCi12b2lkIHRh cmdldF9zZXRfYnJrKHRhcmdldF91bG9uZyBuZXdfYnJrKQordm9pZCB0YXJnZXRfc2V0X2Jyayhh YmlfdWxvbmcgbmV3X2JyaykKIHsKICAgICB0YXJnZXRfb3JpZ2luYWxfYnJrID0gdGFyZ2V0X2Jy ayA9IEhPU1RfUEFHRV9BTElHTihuZXdfYnJrKTsKIH0KIAotdGFyZ2V0X2xvbmcgZG9fYnJrKHRh cmdldF91bG9uZyBuZXdfYnJrKQorYWJpX2xvbmcgZG9fYnJrKGFiaV91bG9uZyBuZXdfYnJrKQog ewotICAgIHRhcmdldF91bG9uZyBicmtfcGFnZTsKLSAgICB0YXJnZXRfbG9uZyBtYXBwZWRfYWRk cjsKKyAgICBhYmlfdWxvbmcgYnJrX3BhZ2U7CisgICAgYWJpX2xvbmcgbWFwcGVkX2FkZHI7CiAg ICAgaW50CW5ld19hbGxvY19zaXplOwogCiAgICAgaWYgKCFuZXdfYnJrKQpAQCAtNDIyLDcgKzQy Miw3IEBACiB9CiAKIHN0YXRpYyBpbmxpbmUgZmRfc2V0ICp0YXJnZXRfdG9faG9zdF9mZHMoZmRf c2V0ICpmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF9sb25nICp0YXJnZXRfZmRzLCBpbnQgbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWJpX2xvbmcgKnRhcmdldF9mZHMsIGludCBuKQogewogI2lmICFkZWZpbmVk KEJTV0FQX05FRURFRCkgJiYgIWRlZmluZWQoV09SRFNfQklHRU5ESUFOKQogICAgIHJldHVybiAo ZmRfc2V0ICopdGFyZ2V0X2ZkczsKQEAgLTQzMSw4ICs0MzEsOCBAQAogICAgIGlmICh0YXJnZXRf ZmRzKSB7CiAgICAgICAgIEZEX1pFUk8oZmRzKTsKICAgICAgICAgZm9yKGkgPSAwO2kgPCBuOyBp KyspIHsKLSAgICAgICAgICAgIGIgPSAodHN3YXBsKHRhcmdldF9mZHNbaSAvIFRBUkdFVF9MT05H X0JJVFNdKSA+PgotICAgICAgICAgICAgICAgICAoaSAmIChUQVJHRVRfTE9OR19CSVRTIC0gMSkp KSAmIDE7CisgICAgICAgICAgICBiID0gKHRzd2FwbCh0YXJnZXRfZmRzW2kgLyBUQVJHRVRfQUJJ X0JJVFNdKSA+PgorICAgICAgICAgICAgICAgICAoaSAmIChUQVJHRVRfQUJJX0JJVFMgLSAxKSkp ICYgMTsKICAgICAgICAgICAgIGlmIChiKQogICAgICAgICAgICAgICAgIEZEX1NFVChpLCBmZHMp OwogICAgICAgICB9CkBAIC00NDMsMjEgKzQ0MywyMSBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBp bmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9mZHModGFyZ2V0X2xvbmcgKnRhcmdldF9mZHMsCitz dGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfZmRzKGFiaV9sb25nICp0YXJnZXRfZmRz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKmZkcywgaW50 IG4pCiB7CiAjaWYgIWRlZmluZWQoQlNXQVBfTkVFREVEKSAmJiAhZGVmaW5lZChXT1JEU19CSUdF TkRJQU4pCiAgICAgLyogbm90aGluZyB0byBkbyAqLwogI2Vsc2UKICAgICBpbnQgaSwgbncsIGos IGs7Ci0gICAgdGFyZ2V0X2xvbmcgdjsKKyAgICBhYmlfbG9uZyB2OwogCiAgICAgaWYgKHRhcmdl dF9mZHMpIHsKLSAgICAgICAgbncgPSAobiArIFRBUkdFVF9MT05HX0JJVFMgLSAxKSAvIFRBUkdF VF9MT05HX0JJVFM7CisgICAgICAgIG53ID0gKG4gKyBUQVJHRVRfQUJJX0JJVFMgLSAxKSAvIFRB UkdFVF9BQklfQklUUzsKICAgICAgICAgayA9IDA7CiAgICAgICAgIGZvcihpID0gMDtpIDwgbnc7 IGkrKykgewogICAgICAgICAgICAgdiA9IDA7Ci0gICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBU QVJHRVRfTE9OR19CSVRTOyBqKyspIHsKKyAgICAgICAgICAgIGZvcihqID0gMDsgaiA8IFRBUkdF VF9BQklfQklUUzsgaisrKSB7CiAgICAgICAgICAgICAgICAgdiB8PSAoKEZEX0lTU0VUKGssIGZk cykgIT0gMCkgPDwgaik7CiAgICAgICAgICAgICAgICAgaysrOwogICAgICAgICAgICAgfQpAQCAt NDczLDcgKzQ3Myw3IEBACiAjZGVmaW5lIEhPU1RfSFogMTAwCiAjZW5kaWYKIAotc3RhdGljIGlu bGluZSB0YXJnZXRfbG9uZyBob3N0X3RvX3RhcmdldF9jbG9ja190KGxvbmcgdGlja3MpCitzdGF0 aWMgaW5saW5lIGFiaV9sb25nIGhvc3RfdG9fdGFyZ2V0X2Nsb2NrX3QobG9uZyB0aWNrcykKIHsK ICNpZiBIT1NUX0haID09IFRBUkdFVF9IWgogICAgIHJldHVybiB0aWNrczsKQEAgLTQ4Miw3ICs0 ODIsNyBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9y dXNhZ2UodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorc3RhdGljIGlubGluZSB2b2lkIGhvc3Rf dG9fdGFyZ2V0X3J1c2FnZShhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBydXNhZ2UgKnJ1c2FnZSkKIHsK ICAgICBzdHJ1Y3QgdGFyZ2V0X3J1c2FnZSAqdGFyZ2V0X3J1c2FnZTsKQEAgLTUxMCw3ICs1MTAs NyBAQAogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3RfdGltZXZhbChzdHJ1 Y3QgdGltZXZhbCAqdHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIpCiB7CiAgICAgc3RydWN0IHRhcmdl dF90aW1ldmFsICp0YXJnZXRfdHY7CiAKQEAgLTUyMCw3ICs1MjAsNyBAQAogICAgIHVubG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfdHYsIHRhcmdldF9hZGRyLCAwKTsKIH0KIAotc3RhdGljIGlubGlu ZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAor c3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYWJpX3Vsb25nIHRhcmdl dF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHRpbWV2YWwgKnR2KQogewogICAgIHN0cnVjdCB0YXJnZXRfdGltZXZhbCAqdGFyZ2V0 X3R2OwpAQCAtNTMyLDMzICs1MzIsMzMgQEAKIH0KIAogCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9f c2VsZWN0KGludCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcg cmZkX3AsIHRhcmdldF91bG9uZyB3ZmRfcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X3Vsb25nIGVmZF9wLCB0YXJnZXRfdWxvbmcgdGFyZ2V0X3R2KQorc3RhdGljIGFiaV9s b25nIGRvX3NlbGVjdChpbnQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vs b25nIHJmZF9wLCBhYmlfdWxvbmcgd2ZkX3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFiaV91bG9uZyBlZmRfcCwgYWJpX3Vsb25nIHRhcmdldF90dikKIHsKICAgICBmZF9zZXQgcmZk cywgd2ZkcywgZWZkczsKICAgICBmZF9zZXQgKnJmZHNfcHRyLCAqd2Zkc19wdHIsICplZmRzX3B0 cjsKLSAgICB0YXJnZXRfbG9uZyAqdGFyZ2V0X3JmZHMsICp0YXJnZXRfd2ZkcywgKnRhcmdldF9l ZmRzOworICAgIGFiaV9sb25nICp0YXJnZXRfcmZkcywgKnRhcmdldF93ZmRzLCAqdGFyZ2V0X2Vm ZHM7CiAgICAgc3RydWN0IHRpbWV2YWwgdHYsICp0dl9wdHI7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0 OworICAgIGFiaV9sb25nIHJldDsKICAgICBpbnQgb2s7CiAKICAgICBpZiAocmZkX3ApIHsKLSAg ICAgICAgdGFyZ2V0X3JmZHMgPSBsb2NrX3VzZXIocmZkX3AsIHNpemVvZih0YXJnZXRfbG9uZykg KiBuLCAxKTsKKyAgICAgICAgdGFyZ2V0X3JmZHMgPSBsb2NrX3VzZXIocmZkX3AsIHNpemVvZihh YmlfbG9uZykgKiBuLCAxKTsKICAgICAgICAgcmZkc19wdHIgPSB0YXJnZXRfdG9faG9zdF9mZHMo JnJmZHMsIHRhcmdldF9yZmRzLCBuKTsKICAgICB9IGVsc2UgewogICAgICAgICB0YXJnZXRfcmZk cyA9IE5VTEw7CiAgICAgICAgIHJmZHNfcHRyID0gTlVMTDsKICAgICB9CiAgICAgaWYgKHdmZF9w KSB7Ci0gICAgICAgIHRhcmdldF93ZmRzID0gbG9ja191c2VyKHdmZF9wLCBzaXplb2YodGFyZ2V0 X2xvbmcpICogbiwgMSk7CisgICAgICAgIHRhcmdldF93ZmRzID0gbG9ja191c2VyKHdmZF9wLCBz aXplb2YoYWJpX2xvbmcpICogbiwgMSk7CiAgICAgICAgIHdmZHNfcHRyID0gdGFyZ2V0X3RvX2hv c3RfZmRzKCZ3ZmRzLCB0YXJnZXRfd2Zkcywgbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGFy Z2V0X3dmZHMgPSBOVUxMOwogICAgICAgICB3ZmRzX3B0ciA9IE5VTEw7CiAgICAgfQogICAgIGlm IChlZmRfcCkgewotICAgICAgICB0YXJnZXRfZWZkcyA9IGxvY2tfdXNlcihlZmRfcCwgc2l6ZW9m KHRhcmdldF9sb25nKSAqIG4sIDEpOworICAgICAgICB0YXJnZXRfZWZkcyA9IGxvY2tfdXNlcihl ZmRfcCwgc2l6ZW9mKGFiaV9sb25nKSAqIG4sIDEpOwogICAgICAgICBlZmRzX3B0ciA9IHRhcmdl dF90b19ob3N0X2ZkcygmZWZkcywgdGFyZ2V0X2VmZHMsIG4pOwogICAgIH0gZWxzZSB7CiAgICAg ICAgIHRhcmdldF9lZmRzID0gTlVMTDsKQEAgLTU4NCwxNyArNTg0LDE3IEBACiAgICAgICAgIH0K ICAgICB9CiAgICAgaWYgKHRhcmdldF9yZmRzKQotICAgICAgICB1bmxvY2tfdXNlcih0YXJnZXRf cmZkcywgcmZkX3AsIG9rID8gc2l6ZW9mKHRhcmdldF9sb25nKSAqIG4gOiAwKTsKKyAgICAgICAg dW5sb2NrX3VzZXIodGFyZ2V0X3JmZHMsIHJmZF9wLCBvayA/IHNpemVvZihhYmlfbG9uZykgKiBu IDogMCk7CiAgICAgaWYgKHRhcmdldF93ZmRzKQotICAgICAgICB1bmxvY2tfdXNlcih0YXJnZXRf d2Zkcywgd2ZkX3AsIG9rID8gc2l6ZW9mKHRhcmdldF9sb25nKSAqIG4gOiAwKTsKKyAgICAgICAg dW5sb2NrX3VzZXIodGFyZ2V0X3dmZHMsIHdmZF9wLCBvayA/IHNpemVvZihhYmlfbG9uZykgKiBu IDogMCk7CiAgICAgaWYgKHRhcmdldF9lZmRzKQotICAgICAgICB1bmxvY2tfdXNlcih0YXJnZXRf ZWZkcywgZWZkX3AsIG9rID8gc2l6ZW9mKHRhcmdldF9sb25nKSAqIG4gOiAwKTsKKyAgICAgICAg dW5sb2NrX3VzZXIodGFyZ2V0X2VmZHMsIGVmZF9wLCBvayA/IHNpemVvZihhYmlfbG9uZykgKiBu IDogMCk7CiAKICAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0 X3RvX2hvc3Rfc29ja2FkZHIoc3RydWN0IHNvY2thZGRyICphZGRyLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0 X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xl bl90IGxlbikKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X3NvY2thZGRyICp0YXJnZXRfc2FkZHI7CkBA IC02MDUsNyArNjA1LDcgQEAKICAgICB1bmxvY2tfdXNlcih0YXJnZXRfc2FkZHIsIHRhcmdldF9h ZGRyLCAwKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRy KHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwKK3N0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3Rh cmdldF9zb2NrYWRkcihhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICphZGRyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBsZW4pCiB7CkBAIC03 MDYsMTAgKzcwNiwxMCBAQAogICAgIG1zZ2gtPm1zZ19jb250cm9sbGVuID0gdHN3YXBsKHNwYWNl KTsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX3NldHNvY2tvcHQoaW50IHNvY2tmZCwgaW50 IGxldmVsLCBpbnQgb3B0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldF91bG9uZyBvcHR2YWwsIHNvY2tsZW5fdCBvcHRsZW4pCitzdGF0aWMgYWJpX2xvbmcgZG9f c2V0c29ja29wdChpbnQgc29ja2ZkLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIG9wdHZhbCwgc29ja2xlbl90IG9wdGxl bikKIHsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0OwogICAgIGludCB2 YWw7CiAKICAgICBzd2l0Y2gobGV2ZWwpIHsKQEAgLTgyNywxMCArODI3LDEwIEBACiAgICAgcmV0 dXJuIHJldDsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX2dldHNvY2tvcHQoaW50IHNvY2tm ZCwgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF91bG9uZyBvcHR2YWwsIHRhcmdldF91bG9uZyBvcHRsZW4pCitzdGF0aWMgYWJp X2xvbmcgZG9fZ2V0c29ja29wdChpbnQgc29ja2ZkLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIG9wdHZhbCwgYWJpX3Vs b25nIG9wdGxlbikKIHsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0Owog ICAgIGludCBsZW4sIGx2LCB2YWw7CiAKICAgICBzd2l0Y2gobGV2ZWwpIHsKQEAgLTkxNiwxMSAr OTE2LDExIEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgbG9ja19pb3ZlYyhz dHJ1Y3QgaW92ZWMgKnZlYywgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorc3RhdGljIHZvaWQg bG9ja19pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnZlYywgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAg ICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGludCBjb3B5KQogewogICAgIHN0cnVjdCB0 YXJnZXRfaW92ZWMgKnRhcmdldF92ZWM7Ci0gICAgdGFyZ2V0X3Vsb25nIGJhc2U7CisgICAgYWJp X3Vsb25nIGJhc2U7CiAgICAgaW50IGk7CiAKICAgICB0YXJnZXRfdmVjID0gbG9ja191c2VyKHRh cmdldF9hZGRyLCBjb3VudCAqIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2lvdmVjKSwgMSk7CkBAIC05 MzIsMTEgKzkzMiwxMSBAQAogICAgIHVubG9ja191c2VyICh0YXJnZXRfdmVjLCB0YXJnZXRfYWRk ciwgMCk7CiB9CiAKLXN0YXRpYyB2b2lkIHVubG9ja19pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnZlYywg dGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorc3RhdGljIHZvaWQgdW5sb2NrX2lvdmVjKHN0cnVj dCBpb3ZlYyAqdmVjLCBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGNvdW50LCBpbnQgY29weSkKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X2lvdmVjICp0 YXJnZXRfdmVjOwotICAgIHRhcmdldF91bG9uZyBiYXNlOworICAgIGFiaV91bG9uZyBiYXNlOwog ICAgIGludCBpOwogCiAgICAgdGFyZ2V0X3ZlYyA9IGxvY2tfdXNlcih0YXJnZXRfYWRkciwgY291 bnQgKiBzaXplb2Yoc3RydWN0IHRhcmdldF9pb3ZlYyksIDEpOwpAQCAtOTQ3LDcgKzk0Nyw3IEBA CiAgICAgdW5sb2NrX3VzZXIgKHRhcmdldF92ZWMsIHRhcmdldF9hZGRyLCAwKTsKIH0KIAotc3Rh dGljIHRhcmdldF9sb25nIGRvX3NvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3Rv Y29sKQorc3RhdGljIGFiaV9sb25nIGRvX3NvY2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50 IHByb3RvY29sKQogewogI2lmIGRlZmluZWQoVEFSR0VUX01JUFMpCiAgICAgc3dpdGNoKHR5cGUp IHsKQEAgLTk3NCw3ICs5NzQsNyBAQAogICAgIHJldHVybiBnZXRfZXJybm8oc29ja2V0KGRvbWFp biwgdHlwZSwgcHJvdG9jb2wpKTsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX2JpbmQoaW50 IHNvY2tmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorc3RhdGljIGFiaV9sb25nIGRvX2Jp bmQoaW50IHNvY2tmZCwgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgc29ja2xlbl90IGFkZHJsZW4pCiB7CiAgICAgdm9pZCAqYWRkciA9IGFsbG9jYShh ZGRybGVuKTsKQEAgLTk4Myw3ICs5ODMsNyBAQAogICAgIHJldHVybiBnZXRfZXJybm8oYmluZChz b2NrZmQsIGFkZHIsIGFkZHJsZW4pKTsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX2Nvbm5l Y3QoaW50IHNvY2tmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorc3RhdGljIGFiaV9sb25n IGRvX2Nvbm5lY3QoaW50IHNvY2tmZCwgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90IGFkZHJsZW4pCiB7CiAgICAgdm9pZCAqYWRk ciA9IGFsbG9jYShhZGRybGVuKTsKQEAgLTk5MiwxNSArOTkyLDE1IEBACiAgICAgcmV0dXJuIGdl dF9lcnJubyhjb25uZWN0KHNvY2tmZCwgYWRkciwgYWRkcmxlbikpOwogfQogCi1zdGF0aWMgdGFy Z2V0X2xvbmcgZG9fc2VuZHJlY3Ztc2coaW50IGZkLCB0YXJnZXRfdWxvbmcgdGFyZ2V0X21zZywK K3N0YXRpYyBhYmlfbG9uZyBkb19zZW5kcmVjdm1zZyhpbnQgZmQsIGFiaV91bG9uZyB0YXJnZXRf bXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywgaW50IHNl bmQpCiB7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsKICAgICBzdHJ1 Y3QgdGFyZ2V0X21zZ2hkciAqbXNncDsKICAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKICAgICBpbnQg Y291bnQ7CiAgICAgc3RydWN0IGlvdmVjICp2ZWM7Ci0gICAgdGFyZ2V0X3Vsb25nIHRhcmdldF92 ZWM7CisgICAgYWJpX3Vsb25nIHRhcmdldF92ZWM7CiAKICAgICBsb2NrX3VzZXJfc3RydWN0KG1z Z3AsIHRhcmdldF9tc2csIDEpOwogICAgIGlmIChtc2dwLT5tc2dfbmFtZSkgewpAQCAtMTAzNSwx MiArMTAzNSwxMiBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB0YXJnZXRfbG9uZyBk b19hY2NlcHQoaW50IGZkLCB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbikKK3N0YXRpYyBhYmlf bG9uZyBkb19hY2NlcHQoaW50IGZkLCBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcmxlbikKIHsKICAgICBzb2Nr bGVuX3QgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRkcmxlbik7CiAgICAgdm9pZCAqYWRkciA9 IGFsbG9jYShhZGRybGVuKTsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0 OwogCiAgICAgcmV0ID0gZ2V0X2Vycm5vKGFjY2VwdChmZCwgYWRkciwgJmFkZHJsZW4pKTsKICAg ICBpZiAoIWlzX2Vycm9yKHJldCkpIHsKQEAgLTEwNTAsMTIgKzEwNTAsMTIgQEAKICAgICByZXR1 cm4gcmV0OwogfQogCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9fZ2V0cGVlcm5hbWUoaW50IGZkLCB0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuKQorc3RhdGljIGFiaV9sb25nIGRvX2dldHBl ZXJuYW1lKGludCBmZCwgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcmxlbikKIHsKICAgICBzb2NrbGVu X3QgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRkcmxlbik7CiAgICAgdm9pZCAqYWRkciA9IGFs bG9jYShhZGRybGVuKTsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0Owog CiAgICAgcmV0ID0gZ2V0X2Vycm5vKGdldHBlZXJuYW1lKGZkLCBhZGRyLCAmYWRkcmxlbikpOwog ICAgIGlmICghaXNfZXJyb3IocmV0KSkgewpAQCAtMTA2NSwxMiArMTA2NSwxMiBAQAogICAgIHJl dHVybiByZXQ7CiB9CiAKLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19nZXRzb2NrbmFtZShpbnQgZmQs IHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4pCitzdGF0aWMgYWJpX2xvbmcgZG9fZ2V0 c29ja25hbWUoaW50IGZkLCBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRybGVuKQogewogICAgIHNvY2ts ZW5fdCBhZGRybGVuID0gdGdldDMyKHRhcmdldF9hZGRybGVuKTsKICAgICB2b2lkICphZGRyID0g YWxsb2NhKGFkZHJsZW4pOwotICAgIHRhcmdldF9sb25nIHJldDsKKyAgICBhYmlfbG9uZyByZXQ7 CiAKICAgICByZXQgPSBnZXRfZXJybm8oZ2V0c29ja25hbWUoZmQsIGFkZHIsICZhZGRybGVuKSk7 CiAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7CkBAIC0xMDgwLDExICsxMDgwLDExIEBACiAgICAg cmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX3NvY2tldHBhaXIoaW50IGRv bWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfdGFiKQorc3RhdGljIGFiaV9sb25nIGRvX3NvY2tl dHBhaXIoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfdGFiKQogewogICAgIGludCB0YWJb Ml07Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsKIAogICAgIHJldCA9 IGdldF9lcnJubyhzb2NrZXRwYWlyKGRvbWFpbiwgdHlwZSwgcHJvdG9jb2wsIHRhYikpOwogICAg IGlmICghaXNfZXJyb3IocmV0KSkgewpAQCAtMTA5NCwxMiArMTA5NCwxMiBAQAogICAgIHJldHVy biByZXQ7CiB9CiAKLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19zZW5kdG8oaW50IGZkLCB0YXJnZXRf dWxvbmcgbXNnLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwgc29ja2xlbl90IGFkZHJsZW4pCitzdGF0 aWMgYWJpX2xvbmcgZG9fc2VuZHRvKGludCBmZCwgYWJpX3Vsb25nIG1zZywgc2l6ZV90IGxlbiwg aW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0 X2FkZHIsIHNvY2tsZW5fdCBhZGRybGVuKQogewogICAgIHZvaWQgKmFkZHI7CiAgICAgdm9pZCAq aG9zdF9tc2c7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsKIAogICAg IGhvc3RfbXNnID0gbG9ja191c2VyKG1zZywgbGVuLCAxKTsKICAgICBpZiAodGFyZ2V0X2FkZHIp IHsKQEAgLTExMTMsMTQgKzExMTMsMTQgQEAKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMg dGFyZ2V0X2xvbmcgZG9fcmVjdmZyb20oaW50IGZkLCB0YXJnZXRfdWxvbmcgbXNnLCBzaXplX3Qg bGVuLCBpbnQgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vs b25nIHRhcmdldF9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91 bG9uZyB0YXJnZXRfYWRkcmxlbikKK3N0YXRpYyBhYmlfbG9uZyBkb19yZWN2ZnJvbShpbnQgZmQs IGFiaV91bG9uZyBtc2csIHNpemVfdCBsZW4sIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRybGVuKQogewogICAgIHNvY2tsZW5fdCBh ZGRybGVuOwogICAgIHZvaWQgKmFkZHI7CiAgICAgdm9pZCAqaG9zdF9tc2c7Ci0gICAgdGFyZ2V0 X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsKIAogICAgIGhvc3RfbXNnID0gbG9ja191c2Vy KG1zZywgbGVuLCAwKTsKICAgICBpZiAodGFyZ2V0X2FkZHIpIHsKQEAgLTExNDQsMTAgKzExNDQs MTAgQEAKIH0KIAogI2lmZGVmIFRBUkdFVF9OUl9zb2NrZXRjYWxsCi1zdGF0aWMgdGFyZ2V0X2xv bmcgZG9fc29ja2V0Y2FsbChpbnQgbnVtLCB0YXJnZXRfdWxvbmcgdnB0cikKK3N0YXRpYyBhYmlf bG9uZyBkb19zb2NrZXRjYWxsKGludCBudW0sIGFiaV91bG9uZyB2cHRyKQogewotICAgIHRhcmdl dF9sb25nIHJldDsKLSAgICBjb25zdCBpbnQgbiA9IHNpemVvZih0YXJnZXRfdWxvbmcpOworICAg IGFiaV9sb25nIHJldDsKKyAgICBjb25zdCBpbnQgbiA9IHNpemVvZihhYmlfdWxvbmcpOwogCiAg ICAgc3dpdGNoKG51bSkgewogICAgIGNhc2UgU09DS09QX3NvY2tldDoKQEAgLTExNjEsNyArMTE2 MSw3IEBACiAgICAgY2FzZSBTT0NLT1BfYmluZDoKIAl7CiAgICAgICAgICAgICBpbnQgc29ja2Zk ID0gdGdldGwodnB0cik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0 Z2V0bCh2cHRyICsgbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0 bCh2cHRyICsgbik7CiAgICAgICAgICAgICBzb2NrbGVuX3QgYWRkcmxlbiA9IHRnZXRsKHZwdHIg KyAyICogbik7CiAgICAgICAgICAgICByZXQgPSBkb19iaW5kKHNvY2tmZCwgdGFyZ2V0X2FkZHIs IGFkZHJsZW4pOwogICAgICAgICB9CkBAIC0xMTY5LDcgKzExNjksNyBAQAogICAgIGNhc2UgU09D S09QX2Nvbm5lY3Q6CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBzb2NrZmQgPSB0Z2V0bCh2 cHRyKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciA9IHRnZXRsKHZwdHIg KyBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkciA9IHRnZXRsKHZwdHIgKyBu KTsKICAgICAgICAgICAgIHNvY2tsZW5fdCBhZGRybGVuID0gdGdldGwodnB0ciArIDIgKiBuKTsK ICAgICAgICAgICAgIHJldCA9IGRvX2Nvbm5lY3Qoc29ja2ZkLCB0YXJnZXRfYWRkciwgYWRkcmxl bik7CiAgICAgICAgIH0KQEAgLTExODQsMjQgKzExODQsMjQgQEAKICAgICBjYXNlIFNPQ0tPUF9h Y2NlcHQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBzb2NrZmQgPSB0Z2V0bCh2cHRyKTsK LSAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciA9IHRnZXRsKHZwdHIgKyBuKTsK LSAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbiA9IHRnZXRsKHZwdHIgKyAy ICogbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0bCh2cHRyICsg bik7CisgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0Z2V0bCh2cHRyICsg MiAqIG4pOwogICAgICAgICAgICAgcmV0ID0gZG9fYWNjZXB0KHNvY2tmZCwgdGFyZ2V0X2FkZHIs IHRhcmdldF9hZGRybGVuKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFNP Q0tPUF9nZXRzb2NrbmFtZToKICAgICAgICAgewogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRn ZXRsKHZwdHIpOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyID0gdGdldGwo dnB0ciArIG4pOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuID0gdGdl dGwodnB0ciArIDIgKiBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkciA9IHRn ZXRsKHZwdHIgKyBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcmxlbiA9IHRn ZXRsKHZwdHIgKyAyICogbik7CiAgICAgICAgICAgICByZXQgPSBkb19nZXRzb2NrbmFtZShzb2Nr ZmQsIHRhcmdldF9hZGRyLCB0YXJnZXRfYWRkcmxlbik7CiAgICAgICAgIH0KICAgICAgICAgYnJl YWs7CiAgICAgY2FzZSBTT0NLT1BfZ2V0cGVlcm5hbWU6CiAgICAgICAgIHsKICAgICAgICAgICAg IGludCBzb2NrZmQgPSB0Z2V0bCh2cHRyKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJn ZXRfYWRkciA9IHRnZXRsKHZwdHIgKyBuKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJn ZXRfYWRkcmxlbiA9IHRnZXRsKHZwdHIgKyAyICogbik7CisgICAgICAgICAgICBhYmlfdWxvbmcg dGFyZ2V0X2FkZHIgPSB0Z2V0bCh2cHRyICsgbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgdGFy Z2V0X2FkZHJsZW4gPSB0Z2V0bCh2cHRyICsgMiAqIG4pOwogICAgICAgICAgICAgcmV0ID0gZG9f Z2V0cGVlcm5hbWUoc29ja2ZkLCB0YXJnZXRfYWRkciwgdGFyZ2V0X2FkZHJsZW4pOwogICAgICAg ICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTIxMCwxNCArMTIxMCwxNCBAQAogICAgICAgICAgICAg aW50IGRvbWFpbiA9IHRnZXRsKHZwdHIpOwogICAgICAgICAgICAgaW50IHR5cGUgPSB0Z2V0bCh2 cHRyICsgbik7CiAgICAgICAgICAgICBpbnQgcHJvdG9jb2wgPSB0Z2V0bCh2cHRyICsgMiAqIG4p OwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhYiA9IHRnZXRsKHZwdHIgKyAzICogbik7Cisg ICAgICAgICAgICBhYmlfdWxvbmcgdGFiID0gdGdldGwodnB0ciArIDMgKiBuKTsKICAgICAgICAg ICAgIHJldCA9IGRvX3NvY2tldHBhaXIoZG9tYWluLCB0eXBlLCBwcm90b2NvbCwgdGFiKTsKICAg ICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFNPQ0tPUF9zZW5kOgogICAgICAgICB7 CiAgICAgICAgICAgICBpbnQgc29ja2ZkID0gdGdldGwodnB0cik7Ci0gICAgICAgICAgICB0YXJn ZXRfdWxvbmcgbXNnID0gdGdldGwodnB0ciArIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIG1z ZyA9IHRnZXRsKHZwdHIgKyBuKTsKICAgICAgICAgICAgIHNpemVfdCBsZW4gPSB0Z2V0bCh2cHRy ICsgMiAqIG4pOwogICAgICAgICAgICAgaW50IGZsYWdzID0gdGdldGwodnB0ciArIDMgKiBuKTsK ICAgICAgICAgICAgIHJldCA9IGRvX3NlbmR0byhzb2NrZmQsIG1zZywgbGVuLCBmbGFncywgMCwg MCk7CkBAIC0xMjI2LDcgKzEyMjYsNyBAQAogICAgIGNhc2UgU09DS09QX3JlY3Y6CiAgICAgICAg IHsKICAgICAgICAgICAgIGludCBzb2NrZmQgPSB0Z2V0bCh2cHRyKTsKLSAgICAgICAgICAgIHRh cmdldF91bG9uZyBtc2cgPSB0Z2V0bCh2cHRyICsgbik7CisgICAgICAgICAgICBhYmlfdWxvbmcg bXNnID0gdGdldGwodnB0ciArIG4pOwogICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHRnZXRsKHZw dHIgKyAyICogbik7CiAgICAgICAgICAgICBpbnQgZmxhZ3MgPSB0Z2V0bCh2cHRyICsgMyAqIG4p OwogICAgICAgICAgICAgcmV0ID0gZG9fcmVjdmZyb20oc29ja2ZkLCBtc2csIGxlbiwgZmxhZ3Ms IDAsIDApOwpAQCAtMTIzNSwxMCArMTIzNSwxMCBAQAogICAgIGNhc2UgU09DS09QX3NlbmR0bzoK ICAgICAgICAgewogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRnZXRsKHZwdHIpOwotICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIG1zZyA9IHRnZXRsKHZwdHIgKyBuKTsKKyAgICAgICAgICAgIGFi aV91bG9uZyBtc2cgPSB0Z2V0bCh2cHRyICsgbik7CiAgICAgICAgICAgICBzaXplX3QgbGVuID0g dGdldGwodnB0ciArIDIgKiBuKTsKICAgICAgICAgICAgIGludCBmbGFncyA9IHRnZXRsKHZwdHIg KyAzICogbik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgYWRkciA9IHRnZXRsKHZwdHIgKyA0 ICogbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgYWRkciA9IHRnZXRsKHZwdHIgKyA0ICogbik7 CiAgICAgICAgICAgICBzb2NrbGVuX3QgYWRkcmxlbiA9IHRnZXRsKHZwdHIgKyA1ICogbik7CiAg ICAgICAgICAgICByZXQgPSBkb19zZW5kdG8oc29ja2ZkLCBtc2csIGxlbiwgZmxhZ3MsIGFkZHIs IGFkZHJsZW4pOwogICAgICAgICB9CkBAIC0xMjQ2LDExICsxMjQ2LDExIEBACiAgICAgY2FzZSBT T0NLT1BfcmVjdmZyb206CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBzb2NrZmQgPSB0Z2V0 bCh2cHRyKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBtc2cgPSB0Z2V0bCh2cHRyICsgbik7 CisgICAgICAgICAgICBhYmlfdWxvbmcgbXNnID0gdGdldGwodnB0ciArIG4pOwogICAgICAgICAg ICAgc2l6ZV90IGxlbiA9IHRnZXRsKHZwdHIgKyAyICogbik7CiAgICAgICAgICAgICBpbnQgZmxh Z3MgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGFkZHIg PSB0Z2V0bCh2cHRyICsgNCAqIG4pOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGFkZHJsZW4g PSB0Z2V0bCh2cHRyICsgNSAqIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIGFkZHIgPSB0Z2V0 bCh2cHRyICsgNCAqIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIGFkZHJsZW4gPSB0Z2V0bCh2 cHRyICsgNSAqIG4pOwogICAgICAgICAgICAgcmV0ID0gZG9fcmVjdmZyb20oc29ja2ZkLCBtc2cs IGxlbiwgZmxhZ3MsIGFkZHIsIGFkZHJsZW4pOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpA QCAtMTI2Niw3ICsxMjY2LDcgQEAKICAgICBjYXNlIFNPQ0tPUF9yZWN2bXNnOgogICAgICAgICB7 CiAgICAgICAgICAgICBpbnQgZmQ7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X21z ZzsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfbXNnOwogICAgICAgICAgICAgaW50IGZs YWdzOwogCiAgICAgICAgICAgICBmZCA9IHRnZXRsKHZwdHIpOwpAQCAtMTI4Miw3ICsxMjgyLDcg QEAKICAgICAgICAgICAgIGludCBzb2NrZmQgPSB0Z2V0bCh2cHRyKTsKICAgICAgICAgICAgIGlu dCBsZXZlbCA9IHRnZXRsKHZwdHIgKyBuKTsKICAgICAgICAgICAgIGludCBvcHRuYW1lID0gdGdl dGwodnB0ciArIDIgKiBuKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBvcHR2YWwgPSB0Z2V0 bCh2cHRyICsgMyAqIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIG9wdHZhbCA9IHRnZXRsKHZw dHIgKyAzICogbik7CiAgICAgICAgICAgICBzb2NrbGVuX3Qgb3B0bGVuID0gdGdldGwodnB0ciAr IDQgKiBuKTsKIAogICAgICAgICAgICAgcmV0ID0gZG9fc2V0c29ja29wdChzb2NrZmQsIGxldmVs LCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7CkBAIC0xMjkzLDggKzEyOTMsOCBAQAogICAgICAg ICAgICAgaW50IHNvY2tmZCA9IHRnZXRsKHZwdHIpOwogICAgICAgICAgICAgaW50IGxldmVsID0g dGdldGwodnB0ciArIG4pOwogICAgICAgICAgICAgaW50IG9wdG5hbWUgPSB0Z2V0bCh2cHRyICsg MiAqIG4pOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG9wdHZhbCA9IHRnZXRsKHZwdHIgKyAz ICogbik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgcG9wdGxlbiA9IHRnZXRsKHZwdHIgKyA0 ICogbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgb3B0dmFsID0gdGdldGwodnB0ciArIDMgKiBu KTsKKyAgICAgICAgICAgIGFiaV91bG9uZyBwb3B0bGVuID0gdGdldGwodnB0ciArIDQgKiBuKTsK IAogICAgICAgICAgICAgcmV0ID0gZG9fZ2V0c29ja29wdChzb2NrZmQsIGxldmVsLCBvcHRuYW1l LCBvcHR2YWwsIHBvcHRsZW4pOwogICAgICAgICB9CkBAIC0xMzE4LDMzICsxMzE4LDMzIEBACiAK IHN0cnVjdCB0YXJnZXRfaXBjX3Blcm0KIHsKLSAgICB0YXJnZXRfbG9uZyBfX2tleTsKLSAgICB0 YXJnZXRfdWxvbmcgdWlkOwotICAgIHRhcmdldF91bG9uZyBnaWQ7Ci0gICAgdGFyZ2V0X3Vsb25n IGN1aWQ7Ci0gICAgdGFyZ2V0X3Vsb25nIGNnaWQ7CisgICAgYWJpX2xvbmcgX19rZXk7CisgICAg YWJpX3Vsb25nIHVpZDsKKyAgICBhYmlfdWxvbmcgZ2lkOworICAgIGFiaV91bG9uZyBjdWlkOwor ICAgIGFiaV91bG9uZyBjZ2lkOwogICAgIHVuc2lnbmVkIHNob3J0IGludCBtb2RlOwogICAgIHVu c2lnbmVkIHNob3J0IGludCBfX3BhZDE7CiAgICAgdW5zaWduZWQgc2hvcnQgaW50IF9fc2VxOwog ICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDI7Ci0gICAgdGFyZ2V0X3Vsb25nIF9fdW51c2Vk MTsKLSAgICB0YXJnZXRfdWxvbmcgX191bnVzZWQyOworICAgIGFiaV91bG9uZyBfX3VudXNlZDE7 CisgICAgYWJpX3Vsb25nIF9fdW51c2VkMjsKIH07CiAKIHN0cnVjdCB0YXJnZXRfc2VtaWRfZHMK IHsKICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSBzZW1fcGVybTsKLSAgdGFyZ2V0X3Vsb25nIHNl bV9vdGltZTsKLSAgdGFyZ2V0X3Vsb25nIF9fdW51c2VkMTsKLSAgdGFyZ2V0X3Vsb25nIHNlbV9j dGltZTsKLSAgdGFyZ2V0X3Vsb25nIF9fdW51c2VkMjsKLSAgdGFyZ2V0X3Vsb25nIHNlbV9uc2Vt czsKLSAgdGFyZ2V0X3Vsb25nIF9fdW51c2VkMzsKLSAgdGFyZ2V0X3Vsb25nIF9fdW51c2VkNDsK KyAgYWJpX3Vsb25nIHNlbV9vdGltZTsKKyAgYWJpX3Vsb25nIF9fdW51c2VkMTsKKyAgYWJpX3Vs b25nIHNlbV9jdGltZTsKKyAgYWJpX3Vsb25nIF9fdW51c2VkMjsKKyAgYWJpX3Vsb25nIHNlbV9u c2VtczsKKyAgYWJpX3Vsb25nIF9fdW51c2VkMzsKKyAgYWJpX3Vsb25nIF9fdW51c2VkNDsKIH07 CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF9pcGNfcGVybShzdHJ1Y3QgaXBj X3Blcm0gKmhvc3RfaXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcikKIHsKICAgICBzdHJ1Y3QgdGFy Z2V0X2lwY19wZXJtICp0YXJnZXRfaXA7CiAgICAgc3RydWN0IHRhcmdldF9zZW1pZF9kcyAqdGFy Z2V0X3NkOwpAQCAtMTM2MCw3ICsxMzYwLDcgQEAKICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFy Z2V0X3NkLCB0YXJnZXRfYWRkciwgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3Rv X3RhcmdldF9pcGNfcGVybSh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCitzdGF0aWMgaW5saW5l IHZvaWQgaG9zdF90b190YXJnZXRfaXBjX3Blcm0oYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcGNfcGVybSAq aG9zdF9pcCkKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X2lwY19wZXJtICp0YXJnZXRfaXA7CkBAIC0x Mzc4LDcgKzEzNzgsNyBAQAogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3Rf c2VtaWRfZHMoc3RydWN0IHNlbWlkX2RzICpob3N0X3NkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyKQog ewogICAgIHN0cnVjdCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9zZDsKIApAQCAtMTM5MCw3ICsx MzkwLDcgQEAKICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwg MCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9zZW1pZF9kcyh0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCitzdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRf c2VtaWRfZHMoYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqaG9zdF9zZCkKIHsKICAgICBzdHJ1 Y3QgdGFyZ2V0X3NlbWlkX2RzICp0YXJnZXRfc2Q7CkBAIC0xNDExLDEzICsxNDExLDEzIEBACiAK IHVuaW9uIHRhcmdldF9zZW11biB7CiAJaW50IHZhbDsKLQl0YXJnZXRfbG9uZyBidWY7CisJYWJp X2xvbmcgYnVmOwogCXVuc2lnbmVkIHNob3J0IGludCAqYXJyYXk7CiB9OwogCiBzdGF0aWMgaW5s aW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3Rfc2VtdW4oaW50IGNtZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBzZW11biAqaG9zdF9zdSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9h ZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1p ZF9kcyAqZHMpCiB7CiAgICAgdW5pb24gdGFyZ2V0X3NlbXVuICp0YXJnZXRfc3U7CkBAIC0xNDQ4 LDcgKzE0NDgsNyBAQAogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfc2Vt dW4oaW50IGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuaW9uIHNlbXVuICpob3N0X3N1LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqZHMpCiB7CkBAIC0xNDc4LDEzICsx NDc4LDEzIEBACiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHRhcmdldF9sb25nIGRvX3NlbWN0 bChpbnQgZmlyc3QsIGludCBzZWNvbmQsIGludCB0aGlyZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRhcmdldF9sb25nIHB0cikKK3N0YXRpYyBpbmxpbmUgYWJpX2xvbmcg ZG9fc2VtY3RsKGludCBmaXJzdCwgaW50IHNlY29uZCwgaW50IHRoaXJkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWJpX2xvbmcgcHRyKQogewogICAgIHVuaW9uIHNlbXVu IGFyZzsKICAgICBzdHJ1Y3Qgc2VtaWRfZHMgZHNhcmc7CiAgICAgaW50IGNtZCA9IHRoaXJkJjB4 ZmY7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0ID0gMDsKKyAgICBhYmlfbG9uZyByZXQgPSAwOwogCiAg ICAgc3dpdGNoKCBjbWQgKSB7CiAJY2FzZSBHRVRWQUw6CkBAIC0xNTI3LDIzICsxNTI3LDIzIEBA CiBzdHJ1Y3QgdGFyZ2V0X21zcWlkX2RzCiB7CiAgIHN0cnVjdCB0YXJnZXRfaXBjX3Blcm0gbXNn X3Blcm07Ci0gIHRhcmdldF91bG9uZyBtc2dfc3RpbWU7Ci0gIHRhcmdldF91bG9uZyBfX3VudXNl ZDE7Ci0gIHRhcmdldF91bG9uZyBtc2dfcnRpbWU7Ci0gIHRhcmdldF91bG9uZyBfX3VudXNlZDI7 Ci0gIHRhcmdldF91bG9uZyBtc2dfY3RpbWU7Ci0gIHRhcmdldF91bG9uZyBfX3VudXNlZDM7Ci0g IHRhcmdldF91bG9uZyBfX21zZ19jYnl0ZXM7Ci0gIHRhcmdldF91bG9uZyBtc2dfcW51bTsKLSAg dGFyZ2V0X3Vsb25nIG1zZ19xYnl0ZXM7Ci0gIHRhcmdldF91bG9uZyBtc2dfbHNwaWQ7Ci0gIHRh cmdldF91bG9uZyBtc2dfbHJwaWQ7Ci0gIHRhcmdldF91bG9uZyBfX3VudXNlZDQ7Ci0gIHRhcmdl dF91bG9uZyBfX3VudXNlZDU7CisgIGFiaV91bG9uZyBtc2dfc3RpbWU7CisgIGFiaV91bG9uZyBf X3VudXNlZDE7CisgIGFiaV91bG9uZyBtc2dfcnRpbWU7CisgIGFiaV91bG9uZyBfX3VudXNlZDI7 CisgIGFiaV91bG9uZyBtc2dfY3RpbWU7CisgIGFiaV91bG9uZyBfX3VudXNlZDM7CisgIGFiaV91 bG9uZyBfX21zZ19jYnl0ZXM7CisgIGFiaV91bG9uZyBtc2dfcW51bTsKKyAgYWJpX3Vsb25nIG1z Z19xYnl0ZXM7CisgIGFiaV91bG9uZyBtc2dfbHNwaWQ7CisgIGFiaV91bG9uZyBtc2dfbHJwaWQ7 CisgIGFiaV91bG9uZyBfX3VudXNlZDQ7CisgIGFiaV91bG9uZyBfX3VudXNlZDU7CiB9OwogCiBz dGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3RfbXNxaWRfZHMoc3RydWN0IG1zcWlkX2Rz ICpob3N0X21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldF91bG9uZyB0YXJnZXRfYWRkcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIpCiB7CiAgICAgc3RydWN0IHRhcmdldF9t c3FpZF9kcyAqdGFyZ2V0X21kOwogCkBAIC0xNTYwLDcgKzE1NjAsNyBAQAogICAgIHVubG9ja191 c2VyX3N0cnVjdCh0YXJnZXRfbWQsIHRhcmdldF9hZGRyLCAwKTsKIH0KIAotc3RhdGljIGlubGlu ZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X21zcWlkX2RzKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwK K3N0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9tc3FpZF9kcyhhYmlfdWxvbmcgdGFy Z2V0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IG1zcWlkX2RzICpob3N0X21kKQogewogICAgIHN0cnVjdCB0YXJnZXRfbXNxaWRfZHMgKnRh cmdldF9tZDsKQEAgLTE1NzgsMTEgKzE1NzgsMTEgQEAKICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3Qo dGFyZ2V0X21kLCB0YXJnZXRfYWRkciwgMSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X2xv bmcgZG9fbXNnY3RsKGludCBmaXJzdCwgaW50IHNlY29uZCwgdGFyZ2V0X2xvbmcgcHRyKQorc3Rh dGljIGlubGluZSBhYmlfbG9uZyBkb19tc2djdGwoaW50IGZpcnN0LCBpbnQgc2Vjb25kLCBhYmlf bG9uZyBwdHIpCiB7CiAgICAgc3RydWN0IG1zcWlkX2RzIGRzYXJnOwogICAgIGludCBjbWQgPSBz ZWNvbmQmMHhmZjsKLSAgICB0YXJnZXRfbG9uZyByZXQgPSAwOworICAgIGFiaV9sb25nIHJldCA9 IDA7CiAgICAgc3dpdGNoKCBjbWQgKSB7CiAgICAgY2FzZSBJUENfU1RBVDoKICAgICBjYXNlIElQ Q19TRVQ6CkBAIC0xNTk2LDE2ICsxNTk2LDE2IEBACiB9CiAKIHN0cnVjdCB0YXJnZXRfbXNnYnVm IHsKLQl0YXJnZXRfdWxvbmcgbXR5cGU7CisJYWJpX3Vsb25nIG10eXBlOwogCWNoYXIJbXRleHRb MV07CiB9OwogCi1zdGF0aWMgaW5saW5lIHRhcmdldF9sb25nIGRvX21zZ3NuZChpbnQgbXNxaWQs IHRhcmdldF9sb25nIG1zZ3AsCitzdGF0aWMgaW5saW5lIGFiaV9sb25nIGRvX21zZ3NuZChpbnQg bXNxaWQsIGFiaV9sb25nIG1zZ3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbXNnc3osIGludCBtc2dmbGcpCiB7CiAgICAgc3RydWN0IHRhcmdldF9t c2didWYgKnRhcmdldF9tYjsKICAgICBzdHJ1Y3QgbXNnYnVmICpob3N0X21iOwotICAgIHRhcmdl dF9sb25nIHJldCA9IDA7CisgICAgYWJpX2xvbmcgcmV0ID0gMDsKIAogICAgIGxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X21iLG1zZ3AsMCk7CiAgICAgaG9zdF9tYiA9IG1hbGxvYyhtc2dzeitzaXpl b2YobG9uZykpOwpAQCAtMTYxOCwxMyArMTYxOCwxMyBAQAogICAgIHJldHVybiByZXQ7CiB9CiAK LXN0YXRpYyBpbmxpbmUgdGFyZ2V0X2xvbmcgZG9fbXNncmN2KGludCBtc3FpZCwgdGFyZ2V0X2xv bmcgbXNncCwKK3N0YXRpYyBpbmxpbmUgYWJpX2xvbmcgZG9fbXNncmN2KGludCBtc3FpZCwgYWJp X2xvbmcgbXNncCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBtc2dzeiwgaW50IG1zZ3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbXNnZmxnKQogewogICAgIHN0cnVjdCB0YXJnZXRfbXNnYnVmICp0YXJnZXRfbWI7 CiAgICAgc3RydWN0IG1zZ2J1ZiAqaG9zdF9tYjsKLSAgICB0YXJnZXRfbG9uZyByZXQgPSAwOwor ICAgIGFiaV9sb25nIHJldCA9IDA7CiAKICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9tYiwg bXNncCwgMCk7CiAgICAgaG9zdF9tYiA9IG1hbGxvYyhtc2dzeitzaXplb2YobG9uZykpOwpAQCAt MTYzOSwxMiArMTYzOSwxMiBAQAogfQogCiAvKiA/Pz8gVGhpcyBvbmx5IHdvcmtzIHdpdGggbGlu ZWFyIG1hcHBpbmdzLiAgKi8KLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19pcGModW5zaWduZWQgaW50 IGNhbGwsIGludCBmaXJzdCwKK3N0YXRpYyBhYmlfbG9uZyBkb19pcGModW5zaWduZWQgaW50IGNh bGwsIGludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlY29uZCwgaW50 IHRoaXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbG9uZyBwdHIsIHRhcmdl dF9sb25nIGZpZnRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfbG9uZyBwdHIsIGFi aV9sb25nIGZpZnRoKQogewogICAgIGludCB2ZXJzaW9uOwotICAgIHRhcmdldF9sb25nIHJldCA9 IDA7CisgICAgYWJpX2xvbmcgcmV0ID0gMDsKICAgICB1bnNpZ25lZCBsb25nIHJhZGRyOwogICAg IHN0cnVjdCBzaG1pZF9kcyBzaG1faW5mbzsKICAgICBpbnQgaTsKQEAgLTE3MjIsNyArMTcyMiw3 IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAJICAgIH0KIAl9Ci0JaWYgKHB1dF91c2VyKHJh ZGRyLCAodGFyZ2V0X3Vsb25nICopdGhpcmQpKQorCWlmIChwdXRfdXNlcihyYWRkciwgKGFiaV91 bG9uZyAqKXRoaXJkKSkKICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgICAgICByZXQg PSAwOwogCWJyZWFrOwpAQCAtMTgwMywxMSArMTgwMywxMSBAQAogfTsKIAogLyogPz8/IEltcGxl bWVudCBwcm9wZXIgbG9ja2luZyBmb3IgaW9jdGxzLiAgKi8KLXN0YXRpYyB0YXJnZXRfbG9uZyBk b19pb2N0bChpbnQgZmQsIHRhcmdldF9sb25nIGNtZCwgdGFyZ2V0X2xvbmcgYXJnKQorc3RhdGlj IGFiaV9sb25nIGRvX2lvY3RsKGludCBmZCwgYWJpX2xvbmcgY21kLCBhYmlfbG9uZyBhcmcpCiB7 CiAgICAgY29uc3QgSU9DVExFbnRyeSAqaWU7CiAgICAgY29uc3QgYXJndHlwZSAqYXJnX3R5cGU7 Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsKICAgICB1aW50OF90IGJ1 Zl90ZW1wW01BWF9TVFJVQ1RfU0laRV07CiAgICAgaW50IHRhcmdldF9zaXplOwogICAgIHZvaWQg KmFyZ3B0cjsKQEAgLTIwODgsNyArMjA4OCw3IEBACiAvKiBOT1RFOiB0aGVyZSBpcyByZWFsbHkg b25lIExEVCBmb3IgYWxsIHRoZSB0aHJlYWRzICovCiB1aW50OF90ICpsZHRfdGFibGU7CiAKLXN0 YXRpYyBpbnQgcmVhZF9sZHQodGFyZ2V0X3Vsb25nIHB0ciwgdW5zaWduZWQgbG9uZyBieXRlY291 bnQpCitzdGF0aWMgaW50IHJlYWRfbGR0KGFiaV91bG9uZyBwdHIsIHVuc2lnbmVkIGxvbmcgYnl0 ZWNvdW50KQogewogICAgIGludCBzaXplOwogICAgIHZvaWQgKnA7CkBAIC0yMTA3LDcgKzIxMDcs NyBAQAogCiAvKiBYWFg6IGFkZCBsb2NraW5nIHN1cHBvcnQgKi8KIHN0YXRpYyBpbnQgd3JpdGVf bGR0KENQVVg4NlN0YXRlICplbnYsCi0gICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcg cHRyLCB1bnNpZ25lZCBsb25nIGJ5dGVjb3VudCwgaW50IG9sZG1vZGUpCisgICAgICAgICAgICAg ICAgICAgICBhYmlfdWxvbmcgcHRyLCB1bnNpZ25lZCBsb25nIGJ5dGVjb3VudCwgaW50IG9sZG1v ZGUpCiB7CiAgICAgc3RydWN0IHRhcmdldF9tb2RpZnlfbGR0X2xkdF9zIGxkdF9pbmZvOwogICAg IHN0cnVjdCB0YXJnZXRfbW9kaWZ5X2xkdF9sZHRfcyAqdGFyZ2V0X2xkdF9pbmZvOwpAQCAtMjE4 OCw3ICsyMTg4LDcgQEAKIH0KIAogLyogc3BlY2lmaWMgYW5kIHdlaXJkIGkzODYgc3lzY2FsbHMg Ki8KLWludCBkb19tb2RpZnlfbGR0KENQVVg4NlN0YXRlICplbnYsIGludCBmdW5jLCB0YXJnZXRf dWxvbmcgcHRyLCB1bnNpZ25lZCBsb25nIGJ5dGVjb3VudCkKK2ludCBkb19tb2RpZnlfbGR0KENQ VVg4NlN0YXRlICplbnYsIGludCBmdW5jLCBhYmlfdWxvbmcgcHRyLCB1bnNpZ25lZCBsb25nIGJ5 dGVjb3VudCkKIHsKICAgICBpbnQgcmV0ID0gLUVOT1NZUzsKIApAQCAtMjIyMCw3ICsyMjIwLDcg QEAKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGRvX2ZvcmsoQ1BVU3RhdGUgKmVudiwgdW5zaWdu ZWQgaW50IGZsYWdzLCB0YXJnZXRfdWxvbmcgbmV3c3ApCitpbnQgZG9fZm9yayhDUFVTdGF0ZSAq ZW52LCB1bnNpZ25lZCBpbnQgZmxhZ3MsIGFiaV91bG9uZyBuZXdzcCkKIHsKICAgICBpbnQgcmV0 OwogICAgIFRhc2tTdGF0ZSAqdHM7CkBAIC0yMzEwLDEzICsyMzEwLDEzIEBACiAgICAgcmV0dXJu IHJldDsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX2ZjbnRsKGludCBmZCwgaW50IGNtZCwg dGFyZ2V0X3Vsb25nIGFyZykKK3N0YXRpYyBhYmlfbG9uZyBkb19mY250bChpbnQgZmQsIGludCBj bWQsIGFiaV91bG9uZyBhcmcpCiB7CiAgICAgc3RydWN0IGZsb2NrIGZsOwogICAgIHN0cnVjdCB0 YXJnZXRfZmxvY2sgKnRhcmdldF9mbDsKICAgICBzdHJ1Y3QgZmxvY2s2NCBmbDY0OwogICAgIHN0 cnVjdCB0YXJnZXRfZmxvY2s2NCAqdGFyZ2V0X2ZsNjQ7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0Owor ICAgIGFiaV9sb25nIHJldDsKIAogICAgIHN3aXRjaChjbWQpIHsKICAgICBjYXNlIFRBUkdFVF9G X0dFVExLOgpAQCAtMjQ3NSw3ICsyNDc1LDcgQEAKICAgICB9CiB9CiAKLSNpZiBUQVJHRVRfTE9O R19CSVRTID09IDMyCisjaWYgVEFSR0VUX0FCSV9CSVRTID09IDMyCiBzdGF0aWMgaW5saW5lIHVp bnQ2NF90IHRhcmdldF9vZmZzZXQ2NCh1aW50MzJfdCB3b3JkMCwgdWludDMyX3Qgd29yZDEpCiB7 CiAjaWZkZWYgVEFSR0VUX1dPUkRTX0JJR19FTkRJQU4KQEAgLTI0ODQsMTggKzI0ODQsMTggQEAK ICAgICByZXR1cm4gKCh1aW50NjRfdCl3b3JkMSA8PCAzMikgfCB3b3JkMDsKICNlbmRpZgogfQot I2Vsc2UgLyogVEFSR0VUX0xPTkdfQklUUyA9PSAzMiAqLworI2Vsc2UgLyogVEFSR0VUX0FCSV9C SVRTID09IDMyICovCiBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRhcmdldF9vZmZzZXQ2NCh1aW50 NjRfdCB3b3JkMCwgdWludDY0X3Qgd29yZDEpCiB7CiAgICAgcmV0dXJuIHdvcmQwOwogfQotI2Vu ZGlmIC8qIFRBUkdFVF9MT05HX0JJVFMgIT0gMzIgKi8KKyNlbmRpZiAvKiBUQVJHRVRfQUJJX0JJ VFMgIT0gMzIgKi8KIAogI2lmZGVmIFRBUkdFVF9OUl90cnVuY2F0ZTY0Ci1zdGF0aWMgaW5saW5l IHRhcmdldF9sb25nIHRhcmdldF90cnVuY2F0ZTY0KHZvaWQgKmNwdV9lbnYsIGNvbnN0IGNoYXIg KmFyZzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF9sb25nIGFyZzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldF9sb25nIGFyZzMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF9sb25nIGFyZzQpCitzdGF0aWMgaW5saW5lIGFiaV9sb25nIHRhcmdldF90 cnVuY2F0ZTY0KHZvaWQgKmNwdV9lbnYsIGNvbnN0IGNoYXIgKmFyZzEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIGFyZzIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIGFyZzMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIGFyZzQpCiB7CiAj aWZkZWYgVEFSR0VUX0FSTQogICAgIGlmICgoKENQVUFSTVN0YXRlICopY3B1X2VudiktPmVhYmkp CkBAIC0yNTA5LDEwICsyNTA5LDEwIEBACiAjZW5kaWYKIAogI2lmZGVmIFRBUkdFVF9OUl9mdHJ1 bmNhdGU2NAotc3RhdGljIGlubGluZSB0YXJnZXRfbG9uZyB0YXJnZXRfZnRydW5jYXRlNjQodm9p ZCAqY3B1X2VudiwgdGFyZ2V0X2xvbmcgYXJnMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF9sb25nIGFyZzIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbG9uZyBhcmczLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcgYXJnNCkKK3N0YXRp YyBpbmxpbmUgYWJpX2xvbmcgdGFyZ2V0X2Z0cnVuY2F0ZTY0KHZvaWQgKmNwdV9lbnYsIGFiaV9s b25nIGFyZzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh YmlfbG9uZyBhcmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWJpX2xvbmcgYXJnMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFiaV9sb25nIGFyZzQpCiB7CiAjaWZkZWYgVEFSR0VUX0FSTQogICAgIGlmICgoKENQ VUFSTVN0YXRlICopY3B1X2VudiktPmVhYmkpCkBAIC0yNTI2LDcgKzI1MjYsNyBAQAogI2VuZGlm CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF90aW1lc3BlYyhzdHJ1Y3QgdGlt ZXNwZWMgKmhvc3RfdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcikKIHsKICAgICBzdHJ1Y3QgdGFy Z2V0X3RpbWVzcGVjICp0YXJnZXRfdHM7CiAKQEAgLTI1MzYsNyArMjUzNiw3IEBACiAgICAgdW5s b2NrX3VzZXJfc3RydWN0KHRhcmdldF90cywgdGFyZ2V0X2FkZHIsIDApOwogfQogCi1zdGF0aWMg aW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfdGltZXNwZWModGFyZ2V0X3Vsb25nIHRhcmdldF9h ZGRyLAorc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3RpbWVzcGVjKGFiaV91bG9u ZyB0YXJnZXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdGltZXNwZWMgKmhvc3RfdHMpCiB7CiAgICAgc3RydWN0IHRhcmdldF90aW1lc3Bl YyAqdGFyZ2V0X3RzOwpAQCAtMjU0NywxMSArMjU0NywxMSBAQAogICAgIHVubG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfdHMsIHRhcmdldF9hZGRyLCAxKTsKIH0KIAotdGFyZ2V0X2xvbmcgZG9fc3lz Y2FsbCh2b2lkICpjcHVfZW52LCBpbnQgbnVtLCB0YXJnZXRfbG9uZyBhcmcxLAotICAgICAgICAg ICAgICAgICAgICAgICB0YXJnZXRfbG9uZyBhcmcyLCB0YXJnZXRfbG9uZyBhcmczLCB0YXJnZXRf bG9uZyBhcmc0LAotICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbG9uZyBhcmc1LCB0YXJn ZXRfbG9uZyBhcmc2KQorYWJpX2xvbmcgZG9fc3lzY2FsbCh2b2lkICpjcHVfZW52LCBpbnQgbnVt LCBhYmlfbG9uZyBhcmcxLAorICAgICAgICAgICAgICAgICAgICAgICBhYmlfbG9uZyBhcmcyLCBh YmlfbG9uZyBhcmczLCBhYmlfbG9uZyBhcmc0LAorICAgICAgICAgICAgICAgICAgICAgICBhYmlf bG9uZyBhcmc1LCBhYmlfbG9uZyBhcmc2KQogewotICAgIHRhcmdldF9sb25nIHJldDsKKyAgICBh YmlfbG9uZyByZXQ7CiAgICAgc3RydWN0IHN0YXQgc3Q7CiAgICAgc3RydWN0IHN0YXRmcyBzdGZz OwogICAgIHZvaWQgKnA7CkBAIC0yNjg3LDEwICsyNjg3LDEwIEBACiAgICAgICAgIHsKICAgICAg ICAgICAgIGNoYXIgKiphcmdwLCAqKmVudnA7CiAgICAgICAgICAgICBpbnQgYXJnYywgZW52YzsK LSAgICAgICAgICAgIHRhcmdldF91bG9uZyBncDsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBn dWVzdF9hcmdwOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGd1ZXN0X2VudnA7Ci0gICAgICAg ICAgICB0YXJnZXRfdWxvbmcgYWRkcjsKKyAgICAgICAgICAgIGFiaV91bG9uZyBncDsKKyAgICAg ICAgICAgIGFiaV91bG9uZyBndWVzdF9hcmdwOworICAgICAgICAgICAgYWJpX3Vsb25nIGd1ZXN0 X2VudnA7CisgICAgICAgICAgICBhYmlfdWxvbmcgYWRkcjsKICAgICAgICAgICAgIGNoYXIgKipx OwogCiAgICAgICAgICAgICBhcmdjID0gMDsKQEAgLTI3MDYsNyArMjcwNiw3IEBACiAgICAgICAg ICAgICBlbnZwID0gYWxsb2NhKChlbnZjICsgMSkgKiBzaXplb2Yodm9pZCAqKSk7CiAKICAgICAg ICAgICAgIGZvciAoZ3AgPSBndWVzdF9hcmdwLCBxID0gYXJncDsgOwotICAgICAgICAgICAgICAg ICAgZ3AgKz0gc2l6ZW9mKHRhcmdldF91bG9uZyksIHErKykgeworICAgICAgICAgICAgICAgICAg Z3AgKz0gc2l6ZW9mKGFiaV91bG9uZyksIHErKykgewogICAgICAgICAgICAgICAgIGFkZHIgPSB0 Z2V0bChncCk7CiAgICAgICAgICAgICAgICAgaWYgKCFhZGRyKQogICAgICAgICAgICAgICAgICAg ICBicmVhazsKQEAgLTI3MTUsNyArMjcxNSw3IEBACiAgICAgICAgICAgICAqcSA9IE5VTEw7CiAK ICAgICAgICAgICAgIGZvciAoZ3AgPSBndWVzdF9lbnZwLCBxID0gZW52cDsgOwotICAgICAgICAg ICAgICAgICAgZ3AgKz0gc2l6ZW9mKHRhcmdldF91bG9uZyksIHErKykgeworICAgICAgICAgICAg ICAgICAgZ3AgKz0gc2l6ZW9mKGFiaV91bG9uZyksIHErKykgewogICAgICAgICAgICAgICAgIGFk ZHIgPSB0Z2V0bChncCk7CiAgICAgICAgICAgICAgICAgaWYgKCFhZGRyKQogICAgICAgICAgICAg ICAgICAgICBicmVhazsKQEAgLTI3MjgsMTIgKzI3MjgsMTIgQEAKICAgICAgICAgICAgIHVubG9j a191c2VyKHAsIGFyZzEsIDApOwogCiAgICAgICAgICAgICBmb3IgKGdwID0gZ3Vlc3RfYXJncCwg cSA9IGFyZ3A7ICpxOwotICAgICAgICAgICAgICAgICAgZ3AgKz0gc2l6ZW9mKHRhcmdldF91bG9u ZyksIHErKykgeworICAgICAgICAgICAgICAgICAgZ3AgKz0gc2l6ZW9mKGFiaV91bG9uZyksIHEr KykgewogICAgICAgICAgICAgICAgIGFkZHIgPSB0Z2V0bChncCk7CiAgICAgICAgICAgICAgICAg dW5sb2NrX3VzZXIoKnEsIGFkZHIsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9y IChncCA9IGd1ZXN0X2VudnAsIHEgPSBlbnZwOyAqcTsKLSAgICAgICAgICAgICAgICAgIGdwICs9 IHNpemVvZih0YXJnZXRfdWxvbmcpLCBxKyspIHsKKyAgICAgICAgICAgICAgICAgIGdwICs9IHNp emVvZihhYmlfdWxvbmcpLCBxKyspIHsKICAgICAgICAgICAgICAgICBhZGRyID0gdGdldGwoZ3Ap OwogICAgICAgICAgICAgICAgIHVubG9ja191c2VyKCpxLCBhZGRyLCAwKTsKICAgICAgICAgICAg IH0KQEAgLTMxNjMsNyArMzE2Myw3IEBACiAgICAgY2FzZSBUQVJHRVRfTlJfc2dldG1hc2s6CiAg ICAgICAgIHsKICAgICAgICAgICAgIHNpZ3NldF90IGN1cl9zZXQ7Ci0gICAgICAgICAgICB0YXJn ZXRfdWxvbmcgdGFyZ2V0X3NldDsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfc2V0Owog ICAgICAgICAgICAgc2lncHJvY21hc2soMCwgTlVMTCwgJmN1cl9zZXQpOwogICAgICAgICAgICAg aG9zdF90b190YXJnZXRfb2xkX3NpZ3NldCgmdGFyZ2V0X3NldCwgJmN1cl9zZXQpOwogICAgICAg ICAgICAgcmV0ID0gdGFyZ2V0X3NldDsKQEAgLTMxNzQsNyArMzE3NCw3IEBACiAgICAgY2FzZSBU QVJHRVRfTlJfc3NldG1hc2s6CiAgICAgICAgIHsKICAgICAgICAgICAgIHNpZ3NldF90IHNldCwg b3NldCwgY3VyX3NldDsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfc2V0ID0gYXJn MTsKKyAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfc2V0ID0gYXJnMTsKICAgICAgICAgICAg IHNpZ3Byb2NtYXNrKDAsIE5VTEwsICZjdXJfc2V0KTsKICAgICAgICAgICAgIHRhcmdldF90b19o b3N0X29sZF9zaWdzZXQoJnNldCwgJnRhcmdldF9zZXQpOwogICAgICAgICAgICAgc2lnb3JzZXQo JnNldCwgJnNldCwgJmN1cl9zZXQpOwpAQCAtMzQwNyw3ICszNDA3LDcgQEAKICAgICBjYXNlIFRB UkdFVF9OUl9zZWxlY3Q6CiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc2Vs X2FyZ19zdHJ1Y3QgKnNlbDsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBpbnAsIG91dHAsIGV4 cCwgdHZwOworICAgICAgICAgICAgYWJpX3Vsb25nIGlucCwgb3V0cCwgZXhwLCB0dnA7CiAgICAg ICAgICAgICBsb25nIG5zZWw7CiAKICAgICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3Qoc2VsLCBh cmcxLCAxKTsKQEAgLTM1MTAsOSArMzUxMCw5IEBACiAgICAgY2FzZSBUQVJHRVRfTlJfbW1hcDoK ICNpZiBkZWZpbmVkKFRBUkdFVF9JMzg2KSB8fCBkZWZpbmVkKFRBUkdFVF9BUk0pIHx8IGRlZmlu ZWQoVEFSR0VUX002OEspIHx8IGRlZmluZWQoVEFSR0VUX0NSSVMpCiAgICAgICAgIHsKLSAgICAg ICAgICAgIHRhcmdldF91bG9uZyAqdjsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyB2MSwgdjIs IHYzLCB2NCwgdjUsIHY2OwotICAgICAgICAgICAgdiA9IGxvY2tfdXNlcihhcmcxLCA2ICogc2l6 ZW9mKHRhcmdldF91bG9uZyksIDEpOworICAgICAgICAgICAgYWJpX3Vsb25nICp2OworICAgICAg ICAgICAgYWJpX3Vsb25nIHYxLCB2MiwgdjMsIHY0LCB2NSwgdjY7CisgICAgICAgICAgICB2ID0g bG9ja191c2VyKGFyZzEsIDYgKiBzaXplb2YoYWJpX3Vsb25nKSwgMSk7CiAgICAgICAgICAgICB2 MSA9IHRzd2FwbCh2WzBdKTsKICAgICAgICAgICAgIHYyID0gdHN3YXBsKHZbMV0pOwogICAgICAg ICAgICAgdjMgPSB0c3dhcGwodlsyXSk7CkBAIC0zODI5LDcgKzM4MjksNyBAQAogICAgICAgICAg ICAgICAgIHN0cnVjdCB0YXJnZXRfc3RhdCAqdGFyZ2V0X3N0OwogCiAgICAgICAgICAgICAgICAg bG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDApOwotI2lmIGRlZmluZWQoVEFSR0VU X01JUFMpIHx8IGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpCisjaWYgZGVmaW5lZChUQVJHRVRfTUlQ UykgfHwgKGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpICYmICFkZWZpbmVkKFRBUkdFVF9BQkkzMikp CiAgICAgICAgICAgICAgICAgdGFyZ2V0X3N0LT5zdF9kZXYgPSB0c3dhcDMyKHN0LnN0X2Rldik7 CiAjZWxzZQogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfZGV2ID0gdHN3YXAxNihzdC5z dF9kZXYpOwpAQCAtMzgzOSw3ICszODM5LDcgQEAKICAgICAgICAgICAgICAgICB0YXJnZXRfc3Qt PnN0X21vZGUgPSB0c3dhcGwoc3Quc3RfbW9kZSk7IC8qIFhYWDogY2hlY2sgdGhpcyAqLwogICAg ICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfdWlkID0gdHN3YXAzMihzdC5zdF91aWQpOwogICAg ICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfZ2lkID0gdHN3YXAzMihzdC5zdF9naWQpOwotI2Vs aWYgZGVmaW5lZChUQVJHRVRfU1BBUkM2NCkKKyNlbGlmIGRlZmluZWQoVEFSR0VUX1NQQVJDNjQp ICYmICFkZWZpbmVkKFRBUkdFVF9BQkkzMikKICAgICAgICAgICAgICAgICB0YXJnZXRfc3QtPnN0 X21vZGUgPSB0c3dhcDMyKHN0LnN0X21vZGUpOwogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+ c3RfdWlkID0gdHN3YXAzMihzdC5zdF91aWQpOwogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+ c3RfZ2lkID0gdHN3YXAzMihzdC5zdF9naWQpOwpAQCAtMzg1Miw3ICszODUyLDcgQEAKIAkJLyog SWYgdGhpcyBpcyB0aGUgc2FtZSBvbiBQUEMsIHRoZW4ganVzdCBtZXJnZSB3LyB0aGUgYWJvdmUg aWZkZWYgKi8KICAgICAgICAgICAgICAgICB0YXJnZXRfc3QtPnN0X25saW5rID0gdHN3YXBsKHN0 LnN0X25saW5rKTsKICAgICAgICAgICAgICAgICB0YXJnZXRfc3QtPnN0X3JkZXYgPSB0c3dhcGwo c3Quc3RfcmRldik7Ci0jZWxpZiBkZWZpbmVkKFRBUkdFVF9TUEFSQzY0KQorI2VsaWYgZGVmaW5l ZChUQVJHRVRfU1BBUkM2NCkgJiYgIWRlZmluZWQoVEFSR0VUX0FCSTMyKQogICAgICAgICAgICAg ICAgIHRhcmdldF9zdC0+c3RfbmxpbmsgPSB0c3dhcDMyKHN0LnN0X25saW5rKTsKICAgICAgICAg ICAgICAgICB0YXJnZXRfc3QtPnN0X3JkZXYgPSB0c3dhcDMyKHN0LnN0X3JkZXYpOwogI2Vsc2UK QEAgLTM4OTIsOSArMzg5Miw5IEBACiAgICAgY2FzZSBUQVJHRVRfTlJfd2FpdDQ6CiAgICAgICAg IHsKICAgICAgICAgICAgIGludCBzdGF0dXM7Ci0gICAgICAgICAgICB0YXJnZXRfbG9uZyBzdGF0 dXNfcHRyID0gYXJnMjsKKyAgICAgICAgICAgIGFiaV9sb25nIHN0YXR1c19wdHIgPSBhcmcyOwog ICAgICAgICAgICAgc3RydWN0IHJ1c2FnZSBydXNhZ2UsICpydXNhZ2VfcHRyOwotICAgICAgICAg ICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9ydXNhZ2UgPSBhcmc0OworICAgICAgICAgICAgYWJpX3Vs b25nIHRhcmdldF9ydXNhZ2UgPSBhcmc0OwogICAgICAgICAgICAgaWYgKHRhcmdldF9ydXNhZ2Up CiAgICAgICAgICAgICAgICAgcnVzYWdlX3B0ciA9ICZydXNhZ2U7CiAgICAgICAgICAgICBlbHNl CkBAIC00MDQ1LDE0ICs0MDQ1LDE0IEBACiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2Fz ZSBUQVJHRVRfTlJfZ2V0ZGVudHM6Ci0jaWYgVEFSR0VUX0xPTkdfU0laRSAhPSA0CisjaWYgVEFS R0VUX0FCSV9CSVRTICE9IDMyCiAgICAgICAgIGdvdG8gdW5pbXBsZW1lbnRlZDsKICN3YXJuaW5n IG5vdCBzdXBwb3J0ZWQKLSNlbGlmIFRBUkdFVF9MT05HX1NJWkUgPT0gNCAmJiBIT1NUX0xPTkdf U0laRSA9PSA4CisjZWxpZiBUQVJHRVRfQUJJX0JJVFMgPT0gMzIgJiYgSE9TVF9MT05HX0JJVFMg PT0gNjQKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IHRhcmdldF9kaXJlbnQgKnRhcmdl dF9kaXJwOwogICAgICAgICAgICAgc3RydWN0IGRpcmVudCAqZGlycDsKLSAgICAgICAgICAgIHRh cmdldF9sb25nIGNvdW50ID0gYXJnMzsKKyAgICAgICAgICAgIGFiaV9sb25nIGNvdW50ID0gYXJn MzsKIAogCSAgICBkaXJwID0gbWFsbG9jKGNvdW50KTsKIAkgICAgaWYgKCFkaXJwKQpAQCAtNDA3 MiwxMSArNDA3MiwxMSBAQAogCQl0ZGUgPSB0YXJnZXRfZGlycDsKICAgICAgICAgICAgICAgICB3 aGlsZSAobGVuID4gMCkgewogICAgICAgICAgICAgICAgICAgICByZWNsZW4gPSBkZS0+ZF9yZWNs ZW47Ci0JCSAgICB0cmVjbGVuID0gcmVjbGVuIC0gKDIgKiAoc2l6ZW9mKGxvbmcpIC0gc2l6ZW9m KHRhcmdldF9sb25nKSkpOworCQkgICAgdHJlY2xlbiA9IHJlY2xlbiAtICgyICogKHNpemVvZihs b25nKSAtIHNpemVvZihhYmlfbG9uZykpKTsKICAgICAgICAgICAgICAgICAgICAgdGRlLT5kX3Jl Y2xlbiA9IHRzd2FwMTYodHJlY2xlbik7CiAgICAgICAgICAgICAgICAgICAgIHRkZS0+ZF9pbm8g PSB0c3dhcGwoZGUtPmRfaW5vKTsKICAgICAgICAgICAgICAgICAgICAgdGRlLT5kX29mZiA9IHRz d2FwbChkZS0+ZF9vZmYpOwotCQkgICAgdG5hbWVsZW4gPSB0cmVjbGVuIC0gKDIgKiBzaXplb2Yo dGFyZ2V0X2xvbmcpICsgMik7CisJCSAgICB0bmFtZWxlbiA9IHRyZWNsZW4gLSAoMiAqIHNpemVv ZihhYmlfbG9uZykgKyAyKTsKIAkJICAgIGlmICh0bmFtZWxlbiA+IDI1NikKICAgICAgICAgICAg ICAgICAgICAgICAgIHRuYW1lbGVuID0gMjU2OwogICAgICAgICAgICAgICAgICAgICAvKiBYWFg6 IG1heSBub3QgYmUgY29ycmVjdCAqLwpAQCAtNDA5NCw3ICs0MDk0LDcgQEAKICNlbHNlCiAgICAg ICAgIHsKICAgICAgICAgICAgIHN0cnVjdCBkaXJlbnQgKmRpcnA7Ci0gICAgICAgICAgICB0YXJn ZXRfbG9uZyBjb3VudCA9IGFyZzM7CisgICAgICAgICAgICBhYmlfbG9uZyBjb3VudCA9IGFyZzM7 CiAKICAgICAgICAgICAgIGRpcnAgPSBsb2NrX3VzZXIoYXJnMiwgY291bnQsIDApOwogICAgICAg ICAgICAgcmV0ID0gZ2V0X2Vycm5vKHN5c19nZXRkZW50cyhhcmcxLCBkaXJwLCBjb3VudCkpOwpA QCAtNDEyMiw3ICs0MTIyLDcgQEAKICAgICBjYXNlIFRBUkdFVF9OUl9nZXRkZW50czY0OgogICAg ICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKmRpcnA7Ci0gICAgICAgICAgICB0 YXJnZXRfbG9uZyBjb3VudCA9IGFyZzM7CisgICAgICAgICAgICBhYmlfbG9uZyBjb3VudCA9IGFy ZzM7CiAgICAgICAgICAgICBkaXJwID0gbG9ja191c2VyKGFyZzIsIGNvdW50LCAwKTsKICAgICAg ICAgICAgIHJldCA9IGdldF9lcnJubyhzeXNfZ2V0ZGVudHM2NChhcmcxLCBkaXJwLCBjb3VudCkp OwogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7CkBAIC00NzQyLDcgKzQ3NDIsNyBA QAogICAgICAgICByZXQgPSBnZXRfZXJybm8oMCk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0j aWYgVEFSR0VUX0xPTkdfQklUUyA9PSAzMgorI2lmIFRBUkdFVF9BQklfQklUUyA9PSAzMgogICAg IGNhc2UgVEFSR0VUX05SX2ZjbnRsNjQ6CiAgICAgewogCWludCBjbWQ7CkluZGV4OiBxZW11L2xp bnV4LXVzZXIvc3lzY2FsbF9kZWZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVz ZXIvc3lzY2FsbF9kZWZzLmgJMjAwNy0xMC0xMSAxOToxNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysr IHFlbXUvbGludXgtdXNlci9zeXNjYWxsX2RlZnMuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAw MDAwMCArMDAwMApAQCAtMTA1LDEzICsxMDUsMTMgQEAKIH07CiAKIHN0cnVjdCB0YXJnZXRfdGlt ZXZhbCB7Ci0gICAgdGFyZ2V0X2xvbmcgdHZfc2VjOwotICAgIHRhcmdldF9sb25nIHR2X3VzZWM7 CisgICAgYWJpX2xvbmcgdHZfc2VjOworICAgIGFiaV9sb25nIHR2X3VzZWM7CiB9OwogCiBzdHJ1 Y3QgdGFyZ2V0X3RpbWVzcGVjIHsKLSAgICB0YXJnZXRfbG9uZyB0dl9zZWM7Ci0gICAgdGFyZ2V0 X2xvbmcgdHZfbnNlYzsKKyAgICBhYmlfbG9uZyB0dl9zZWM7CisgICAgYWJpX2xvbmcgdHZfbnNl YzsKIH07CiAKIHN0cnVjdCB0YXJnZXRfaXRpbWVydmFsIHsKQEAgLTExOSw3ICsxMTksNyBAQAog ICAgIHN0cnVjdCB0YXJnZXRfdGltZXZhbCBpdF92YWx1ZTsKIH07CiAKLXR5cGVkZWYgdGFyZ2V0 X2xvbmcgdGFyZ2V0X2Nsb2NrX3Q7Cit0eXBlZGVmIGFiaV9sb25nIHRhcmdldF9jbG9ja190Owog CiAjZGVmaW5lIFRBUkdFVF9IWiAxMDAKIApAQCAtMTMxLDMzICsxMzEsMzMgQEAKIH07CiAKIHN0 cnVjdCB0YXJnZXRfdXRpbWJ1ZiB7Ci0gICAgdGFyZ2V0X2xvbmcgYWN0aW1lOwotICAgIHRhcmdl dF9sb25nIG1vZHRpbWU7CisgICAgYWJpX2xvbmcgYWN0aW1lOworICAgIGFiaV9sb25nIG1vZHRp bWU7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3NlbF9hcmdfc3RydWN0IHsKLSAgICB0YXJnZXRfbG9u ZyBuOwotICAgIHRhcmdldF9sb25nIGlucCwgb3V0cCwgZXhwOwotICAgIHRhcmdldF9sb25nIHR2 cDsKKyAgICBhYmlfbG9uZyBuOworICAgIGFiaV9sb25nIGlucCwgb3V0cCwgZXhwOworICAgIGFi aV9sb25nIHR2cDsKIH07CiAKIHN0cnVjdCB0YXJnZXRfaW92ZWMgewotICAgIHRhcmdldF9sb25n IGlvdl9iYXNlOyAgIC8qIFN0YXJ0aW5nIGFkZHJlc3MgKi8KLSAgICB0YXJnZXRfbG9uZyBpb3Zf bGVuOyAgIC8qIE51bWJlciBvZiBieXRlcyAqLworICAgIGFiaV9sb25nIGlvdl9iYXNlOyAgIC8q IFN0YXJ0aW5nIGFkZHJlc3MgKi8KKyAgICBhYmlfbG9uZyBpb3ZfbGVuOyAgIC8qIE51bWJlciBv ZiBieXRlcyAqLwogfTsKIAogc3RydWN0IHRhcmdldF9tc2doZHIgewotICAgIHRhcmdldF9sb25n CSBtc2dfbmFtZTsJLyogU29ja2V0IG5hbWUJCQkqLworICAgIGFiaV9sb25nCSBtc2dfbmFtZTsJ LyogU29ja2V0IG5hbWUJCQkqLwogICAgIGludAkJIG1zZ19uYW1lbGVuOwkvKiBMZW5ndGggb2Yg bmFtZQkJKi8KLSAgICB0YXJnZXRfbG9uZwkgbXNnX2lvdjsJLyogRGF0YSBibG9ja3MJCQkqLwot ICAgIHRhcmdldF9sb25nCSBtc2dfaW92bGVuOwkvKiBOdW1iZXIgb2YgYmxvY2tzCQkqLwotICAg IHRhcmdldF9sb25nICBtc2dfY29udHJvbDsJLyogUGVyIHByb3RvY29sIG1hZ2ljIChlZyBCU0Qg ZmlsZSBkZXNjcmlwdG9yIHBhc3NpbmcpICovCi0gICAgdGFyZ2V0X2xvbmcJIG1zZ19jb250cm9s bGVuOwkvKiBMZW5ndGggb2YgY21zZyBsaXN0ICovCisgICAgYWJpX2xvbmcJIG1zZ19pb3Y7CS8q IERhdGEgYmxvY2tzCQkJKi8KKyAgICBhYmlfbG9uZwkgbXNnX2lvdmxlbjsJLyogTnVtYmVyIG9m IGJsb2NrcwkJKi8KKyAgICBhYmlfbG9uZyAgbXNnX2NvbnRyb2w7CS8qIFBlciBwcm90b2NvbCBt YWdpYyAoZWcgQlNEIGZpbGUgZGVzY3JpcHRvciBwYXNzaW5nKSAqLworICAgIGFiaV9sb25nCSBt c2dfY29udHJvbGxlbjsJLyogTGVuZ3RoIG9mIGNtc2cgbGlzdCAqLwogICAgIHVuc2lnbmVkIGlu dCBtc2dfZmxhZ3M7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X2Ntc2doZHIgewotICAgIHRhcmdldF9s b25nICBjbXNnX2xlbjsKKyAgICBhYmlfbG9uZyAgY21zZ19sZW47CiAgICAgaW50ICAgICAgICAg IGNtc2dfbGV2ZWw7CiAgICAgaW50ICAgICAgICAgIGNtc2dfdHlwZTsKIH07CkBAIC0xNjcsOCAr MTY3LDggQEAKICNkZWZpbmUgVEFSR0VUX0NNU0dfRklSU1RIRFIobWhkcikgXAogICAoKHNpemVf dCkgdHN3YXBsKChtaGRyKS0+bXNnX2NvbnRyb2xsZW4pID49IHNpemVvZiAoc3RydWN0IHRhcmdl dF9jbXNnaGRyKSBcCiAgICA/IChzdHJ1Y3QgdGFyZ2V0X2Ntc2doZHIgKikgdHN3YXBsKChtaGRy KS0+bXNnX2NvbnRyb2wpIDogKHN0cnVjdCB0YXJnZXRfY21zZ2hkciAqKSBOVUxMKQotI2RlZmlu ZSBUQVJHRVRfQ01TR19BTElHTihsZW4pICgoKGxlbikgKyBzaXplb2YgKHRhcmdldF9sb25nKSAt IDEpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIChzaXplX3QpIH4oc2l6ZW9m ICh0YXJnZXRfbG9uZykgLSAxKSkKKyNkZWZpbmUgVEFSR0VUX0NNU0dfQUxJR04obGVuKSAoKChs ZW4pICsgc2l6ZW9mIChhYmlfbG9uZykgLSAxKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJiAoc2l6ZV90KSB+KHNpemVvZiAoYWJpX2xvbmcpIC0gMSkpCiAjZGVmaW5lIFRBUkdF VF9DTVNHX1NQQUNFKGxlbikgKFRBUkdFVF9DTVNHX0FMSUdOIChsZW4pIFwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArIFRBUkdFVF9DTVNHX0FMSUdOIChzaXplb2YgKHN0cnVjdCB0 YXJnZXRfY21zZ2hkcikpKQogI2RlZmluZSBUQVJHRVRfQ01TR19MRU4obGVuKSAgIChUQVJHRVRf Q01TR19BTElHTiAoc2l6ZW9mIChzdHJ1Y3QgdGFyZ2V0X2Ntc2doZHIpKSArIChsZW4pKQpAQCAt MTkxLDIwICsxOTEsMjAgQEAKIHN0cnVjdCAgdGFyZ2V0X3J1c2FnZSB7CiAgICAgICAgIHN0cnVj dCB0YXJnZXRfdGltZXZhbCBydV91dGltZTsgICAgICAgIC8qIHVzZXIgdGltZSB1c2VkICovCiAg ICAgICAgIHN0cnVjdCB0YXJnZXRfdGltZXZhbCBydV9zdGltZTsgICAgICAgIC8qIHN5c3RlbSB0 aW1lIHVzZWQgKi8KLSAgICAgICAgdGFyZ2V0X2xvbmcgICAgcnVfbWF4cnNzOyAgICAgICAgICAg ICAgLyogbWF4aW11bSByZXNpZGVudCBzZXQgc2l6ZSAqLwotICAgICAgICB0YXJnZXRfbG9uZyAg ICBydV9peHJzczsgICAgICAgICAgICAgICAvKiBpbnRlZ3JhbCBzaGFyZWQgbWVtb3J5IHNpemUg Ki8KLSAgICAgICAgdGFyZ2V0X2xvbmcgICAgcnVfaWRyc3M7ICAgICAgICAgICAgICAgLyogaW50 ZWdyYWwgdW5zaGFyZWQgZGF0YSBzaXplICovCi0gICAgICAgIHRhcmdldF9sb25nICAgIHJ1X2lz cnNzOyAgICAgICAgICAgICAgIC8qIGludGVncmFsIHVuc2hhcmVkIHN0YWNrIHNpemUgKi8KLSAg ICAgICAgdGFyZ2V0X2xvbmcgICAgcnVfbWluZmx0OyAgICAgICAgICAgICAgLyogcGFnZSByZWNs YWltcyAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9tYWpmbHQ7ICAgICAgICAgICAgICAv KiBwYWdlIGZhdWx0cyAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9uc3dhcDsgICAgICAg ICAgICAgICAvKiBzd2FwcyAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9pbmJsb2NrOyAg ICAgICAgICAgICAvKiBibG9jayBpbnB1dCBvcGVyYXRpb25zICovCi0gICAgICAgIHRhcmdldF9s b25nICAgIHJ1X291YmxvY2s7ICAgICAgICAgICAgIC8qIGJsb2NrIG91dHB1dCBvcGVyYXRpb25z ICovCi0gICAgICAgIHRhcmdldF9sb25nICAgIHJ1X21zZ3NuZDsgICAgICAgICAgICAgIC8qIG1l c3NhZ2VzIHNlbnQgKi8KLSAgICAgICAgdGFyZ2V0X2xvbmcgICAgcnVfbXNncmN2OyAgICAgICAg ICAgICAgLyogbWVzc2FnZXMgcmVjZWl2ZWQgKi8KLSAgICAgICAgdGFyZ2V0X2xvbmcgICAgcnVf bnNpZ25hbHM7ICAgICAgICAgICAgLyogc2lnbmFscyByZWNlaXZlZCAqLwotICAgICAgICB0YXJn ZXRfbG9uZyAgICBydV9udmNzdzsgICAgICAgICAgICAgICAvKiB2b2x1bnRhcnkgY29udGV4dCBz d2l0Y2hlcyAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9uaXZjc3c7ICAgICAgICAgICAg ICAvKiBpbnZvbHVudGFyeSAiICovCisgICAgICAgIGFiaV9sb25nICAgIHJ1X21heHJzczsgICAg ICAgICAgICAgIC8qIG1heGltdW0gcmVzaWRlbnQgc2V0IHNpemUgKi8KKyAgICAgICAgYWJpX2xv bmcgICAgcnVfaXhyc3M7ICAgICAgICAgICAgICAgLyogaW50ZWdyYWwgc2hhcmVkIG1lbW9yeSBz aXplICovCisgICAgICAgIGFiaV9sb25nICAgIHJ1X2lkcnNzOyAgICAgICAgICAgICAgIC8qIGlu dGVncmFsIHVuc2hhcmVkIGRhdGEgc2l6ZSAqLworICAgICAgICBhYmlfbG9uZyAgICBydV9pc3Jz czsgICAgICAgICAgICAgICAvKiBpbnRlZ3JhbCB1bnNoYXJlZCBzdGFjayBzaXplICovCisgICAg ICAgIGFiaV9sb25nICAgIHJ1X21pbmZsdDsgICAgICAgICAgICAgIC8qIHBhZ2UgcmVjbGFpbXMg Ki8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVfbWFqZmx0OyAgICAgICAgICAgICAgLyogcGFnZSBm YXVsdHMgKi8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVfbnN3YXA7ICAgICAgICAgICAgICAgLyog c3dhcHMgKi8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVfaW5ibG9jazsgICAgICAgICAgICAgLyog YmxvY2sgaW5wdXQgb3BlcmF0aW9ucyAqLworICAgICAgICBhYmlfbG9uZyAgICBydV9vdWJsb2Nr OyAgICAgICAgICAgICAvKiBibG9jayBvdXRwdXQgb3BlcmF0aW9ucyAqLworICAgICAgICBhYmlf bG9uZyAgICBydV9tc2dzbmQ7ICAgICAgICAgICAgICAvKiBtZXNzYWdlcyBzZW50ICovCisgICAg ICAgIGFiaV9sb25nICAgIHJ1X21zZ3JjdjsgICAgICAgICAgICAgIC8qIG1lc3NhZ2VzIHJlY2Vp dmVkICovCisgICAgICAgIGFiaV9sb25nICAgIHJ1X25zaWduYWxzOyAgICAgICAgICAgIC8qIHNp Z25hbHMgcmVjZWl2ZWQgKi8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVfbnZjc3c7ICAgICAgICAg ICAgICAgLyogdm9sdW50YXJ5IGNvbnRleHQgc3dpdGNoZXMgKi8KKyAgICAgICAgYWJpX2xvbmcg ICAgcnVfbml2Y3N3OyAgICAgICAgICAgICAgLyogaW52b2x1bnRhcnkgIiAqLwogfTsKIAogdHlw ZWRlZiBzdHJ1Y3QgewpAQCAtMjI1LDggKzIyNSw4IEBACiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X2Rp cmVudCB7Ci0JdGFyZ2V0X2xvbmcJZF9pbm87Ci0JdGFyZ2V0X2xvbmcJZF9vZmY7CisJYWJpX2xv bmcJZF9pbm87CisJYWJpX2xvbmcJZF9vZmY7CiAJdW5zaWduZWQgc2hvcnQJZF9yZWNsZW47CiAJ Y2hhcgkJZF9uYW1lWzI1Nl07IC8qIFdlIG11c3Qgbm90IGluY2x1ZGUgbGltaXRzLmghICovCiB9 OwpAQCAtMjQxLDIwICsyNDEsMjAgQEAKIAogCiAvKiBtb3N0bHkgZ2VuZXJpYyBzaWduYWwgc3R1 ZmYgKi8KLSNkZWZpbmUgVEFSR0VUX1NJR19ERkwJKCh0YXJnZXRfbG9uZykwKQkvKiBkZWZhdWx0 IHNpZ25hbCBoYW5kbGluZyAqLwotI2RlZmluZSBUQVJHRVRfU0lHX0lHTgkoKHRhcmdldF9sb25n KTEpCS8qIGlnbm9yZSBzaWduYWwgKi8KLSNkZWZpbmUgVEFSR0VUX1NJR19FUlIJKCh0YXJnZXRf bG9uZyktMSkJLyogZXJyb3IgcmV0dXJuIGZyb20gc2lnbmFsICovCisjZGVmaW5lIFRBUkdFVF9T SUdfREZMCSgoYWJpX2xvbmcpMCkJLyogZGVmYXVsdCBzaWduYWwgaGFuZGxpbmcgKi8KKyNkZWZp bmUgVEFSR0VUX1NJR19JR04JKChhYmlfbG9uZykxKQkvKiBpZ25vcmUgc2lnbmFsICovCisjZGVm aW5lIFRBUkdFVF9TSUdfRVJSCSgoYWJpX2xvbmcpLTEpCS8qIGVycm9yIHJldHVybiBmcm9tIHNp Z25hbCAqLwogCiAjaWZkZWYgVEFSR0VUX01JUFMKICNkZWZpbmUgVEFSR0VUX05TSUcJICAgMTI4 CiAjZWxzZQogI2RlZmluZSBUQVJHRVRfTlNJRwkgICA2NAogI2VuZGlmCi0jZGVmaW5lIFRBUkdF VF9OU0lHX0JQVwkgICBUQVJHRVRfTE9OR19CSVRTCisjZGVmaW5lIFRBUkdFVF9OU0lHX0JQVwkg ICBUQVJHRVRfQUJJX0JJVFMKICNkZWZpbmUgVEFSR0VUX05TSUdfV09SRFMgIChUQVJHRVRfTlNJ RyAvIFRBUkdFVF9OU0lHX0JQVykKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIHRhcmdldF91bG9u ZyBzaWdbVEFSR0VUX05TSUdfV09SRFNdOworICAgIGFiaV91bG9uZyBzaWdbVEFSR0VUX05TSUdf V09SRFNdOwogfSB0YXJnZXRfc2lnc2V0X3Q7CiAKICNpZmRlZiBCU1dBUF9ORUVERUQKQEAgLTI3 MSw3ICsyNzEsNyBAQAogfQogI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfc2ln aW5pdHNldCh0YXJnZXRfc2lnc2V0X3QgKmQsIHRhcmdldF91bG9uZyBzZXQpCitzdGF0aWMgaW5s aW5lIHZvaWQgdGFyZ2V0X3NpZ2luaXRzZXQodGFyZ2V0X3NpZ3NldF90ICpkLCBhYmlfdWxvbmcg c2V0KQogewogICAgIGludCBpOwogICAgIGQtPnNpZ1swXSA9IHNldDsKQEAgLTI4MSwxMCArMjgx LDEwIEBACiAKIHZvaWQgaG9zdF90b190YXJnZXRfc2lnc2V0KHRhcmdldF9zaWdzZXRfdCAqZCwg Y29uc3Qgc2lnc2V0X3QgKnMpOwogdm9pZCB0YXJnZXRfdG9faG9zdF9zaWdzZXQoc2lnc2V0X3Qg KmQsIGNvbnN0IHRhcmdldF9zaWdzZXRfdCAqcyk7Ci12b2lkIGhvc3RfdG9fdGFyZ2V0X29sZF9z aWdzZXQodGFyZ2V0X3Vsb25nICpvbGRfc2lnc2V0LAordm9pZCBob3N0X3RvX3RhcmdldF9vbGRf c2lnc2V0KGFiaV91bG9uZyAqb2xkX3NpZ3NldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzaWdzZXRfdCAqc2lnc2V0KTsKIHZvaWQgdGFyZ2V0X3RvX2hvc3Rfb2xkX3Np Z3NldChzaWdzZXRfdCAqc2lnc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHRhcmdldF91bG9uZyAqb2xkX3NpZ3NldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgYWJpX3Vsb25nICpvbGRfc2lnc2V0KTsKIHN0cnVjdCB0YXJnZXRfc2lnYWN0 aW9uOwogaW50IGRvX3NpZ2FjdGlvbihpbnQgc2lnLCBjb25zdCBzdHJ1Y3QgdGFyZ2V0X3NpZ2Fj dGlvbiAqYWN0LAogICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiAqb2Fj dCk7CkBAIC00NTMsNDAgKzQ1Myw0MCBAQAogI2lmIGRlZmluZWQoVEFSR0VUX01JUFNOMzIpCiAJ dWludDMyX3QJX3NhX2hhbmRsZXI7CiAjZWxzZQotCXRhcmdldF91bG9uZwlfc2FfaGFuZGxlcjsK KwlhYmlfdWxvbmcJX3NhX2hhbmRsZXI7CiAjZW5kaWYKIAl0YXJnZXRfc2lnc2V0X3QJc2FfbWFz azsKIH07CiAKICNlbHNlCiBzdHJ1Y3QgdGFyZ2V0X29sZF9zaWdhY3Rpb24gewotICAgICAgICB0 YXJnZXRfdWxvbmcgX3NhX2hhbmRsZXI7Ci0gICAgICAgIHRhcmdldF91bG9uZyBzYV9tYXNrOwot ICAgICAgICB0YXJnZXRfdWxvbmcgc2FfZmxhZ3M7Ci0gICAgICAgIHRhcmdldF91bG9uZyBzYV9y ZXN0b3JlcjsKKyAgICAgICAgYWJpX3Vsb25nIF9zYV9oYW5kbGVyOworICAgICAgICBhYmlfdWxv bmcgc2FfbWFzazsKKyAgICAgICAgYWJpX3Vsb25nIHNhX2ZsYWdzOworICAgICAgICBhYmlfdWxv bmcgc2FfcmVzdG9yZXI7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiB7Ci0gICAgICAg IHRhcmdldF91bG9uZyBfc2FfaGFuZGxlcjsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNhX2ZsYWdz OwotICAgICAgICB0YXJnZXRfdWxvbmcgc2FfcmVzdG9yZXI7CisgICAgICAgIGFiaV91bG9uZyBf c2FfaGFuZGxlcjsKKyAgICAgICAgYWJpX3Vsb25nIHNhX2ZsYWdzOworICAgICAgICBhYmlfdWxv bmcgc2FfcmVzdG9yZXI7CiAgICAgICAgIHRhcmdldF9zaWdzZXRfdCBzYV9tYXNrOwogfTsKICNl bmRpZgogCiB0eXBlZGVmIHVuaW9uIHRhcmdldF9zaWd2YWwgewogCWludCBzaXZhbF9pbnQ7Ci0g ICAgICAgIHRhcmdldF91bG9uZyBzaXZhbF9wdHI7CisgICAgICAgIGFiaV91bG9uZyBzaXZhbF9w dHI7CiB9IHRhcmdldF9zaWd2YWxfdDsKICNpZiAwCiAjaWYgZGVmaW5lZCAoVEFSR0VUX1NQQVJD KQogdHlwZWRlZiBzdHJ1Y3QgewogCXN0cnVjdCB7Ci0JCXRhcmdldF91bG9uZyBwc3I7Ci0JCXRh cmdldF91bG9uZyBwYzsKLQkJdGFyZ2V0X3Vsb25nIG5wYzsKLQkJdGFyZ2V0X3Vsb25nIHk7Ci0J CXRhcmdldF91bG9uZyB1X3JlZ3NbMTZdOyAvKiBnbG9iYWxzIGFuZCBpbnMgKi8KKwkJYWJpX3Vs b25nIHBzcjsKKwkJYWJpX3Vsb25nIHBjOworCQlhYmlfdWxvbmcgbnBjOworCQlhYmlfdWxvbmcg eTsKKwkJYWJpX3Vsb25nIHVfcmVnc1sxNl07IC8qIGdsb2JhbHMgYW5kIGlucyAqLwogCX0JCXNp X3JlZ3M7CiAJaW50CQlzaV9tYXNrOwogfSBfX3NpZ2luZm9fdDsKQEAgLTU0NCw3ICs1NDQsNyBA QAogCiAJCS8qIFNJR0lMTCwgU0lHRlBFLCBTSUdTRUdWLCBTSUdCVVMgKi8KIAkJc3RydWN0IHsK LQkJCXRhcmdldF91bG9uZyBfYWRkcjsgLyogZmF1bHRpbmcgaW5zbi9tZW1vcnkgcmVmLiAqLwor CQkJYWJpX3Vsb25nIF9hZGRyOyAvKiBmYXVsdGluZyBpbnNuL21lbW9yeSByZWYuICovCiAJCX0g X3NpZ2ZhdWx0OwogCiAJCS8qIFNJR1BPTEwgKi8KQEAgLTYxNCw4ICs2MTQsOCBAQAogI2VuZGlm IC8qIGRlZmluZWQoVEFSR0VUX0kzODYpIHx8IGRlZmluZWQoVEFSR0VUX0FSTSkgKi8KIAogc3Ry dWN0IHRhcmdldF9ybGltaXQgewotICAgICAgICB0YXJnZXRfdWxvbmcgICBybGltX2N1cjsKLSAg ICAgICAgdGFyZ2V0X3Vsb25nICAgcmxpbV9tYXg7CisgICAgICAgIGFiaV91bG9uZyAgIHJsaW1f Y3VyOworICAgICAgICBhYmlfdWxvbmcgICBybGltX21heDsKIH07CiAKIHN0cnVjdCB0YXJnZXRf cG9sbGZkIHsKQEAgLTg4OCwyNCArODg4LDI0IEBACiBzdHJ1Y3QgdGFyZ2V0X3N0YXQgewogCXVu c2lnbmVkIHNob3J0IHN0X2RldjsKIAl1bnNpZ25lZCBzaG9ydCBfX3BhZDE7Ci0JdGFyZ2V0X3Vs b25nIHN0X2lubzsKKwlhYmlfdWxvbmcgc3RfaW5vOwogCXVuc2lnbmVkIHNob3J0IHN0X21vZGU7 CiAJdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAJdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogCXVu c2lnbmVkIHNob3J0IHN0X2dpZDsKIAl1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogCXVuc2lnbmVk IHNob3J0IF9fcGFkMjsKLQl0YXJnZXRfdWxvbmcgIHN0X3NpemU7Ci0JdGFyZ2V0X3Vsb25nICBz dF9ibGtzaXplOwotCXRhcmdldF91bG9uZyAgc3RfYmxvY2tzOwotCXRhcmdldF91bG9uZyAgdGFy Z2V0X3N0X2F0aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQxOwotCXRhcmdldF91bG9uZyAg dGFyZ2V0X3N0X210aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQyOwotCXRhcmdldF91bG9u ZyAgdGFyZ2V0X3N0X2N0aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQzOwotCXRhcmdldF91 bG9uZyAgX191bnVzZWQ0OwotCXRhcmdldF91bG9uZyAgX191bnVzZWQ1OworCWFiaV91bG9uZyAg c3Rfc2l6ZTsKKwlhYmlfdWxvbmcgIHN0X2Jsa3NpemU7CisJYWJpX3Vsb25nICBzdF9ibG9ja3M7 CisJYWJpX3Vsb25nICB0YXJnZXRfc3RfYXRpbWU7CisJYWJpX3Vsb25nICBfX3VudXNlZDE7CisJ YWJpX3Vsb25nICB0YXJnZXRfc3RfbXRpbWU7CisJYWJpX3Vsb25nICBfX3VudXNlZDI7CisJYWJp X3Vsb25nICB0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vsb25nICBfX3VudXNlZDM7CisJYWJpX3Vs b25nICBfX3VudXNlZDQ7CisJYWJpX3Vsb25nICBfX3VudXNlZDU7CiB9OwogCiAvKiBUaGlzIG1h dGNoZXMgc3RydWN0IHN0YXQ2NCBpbiBnbGliYzIuMSwgaGVuY2UgdGhlIGFic29sdXRlbHkKQEAg LTkxNiwzMSArOTE2LDMxIEBACiAJdW5zaWduZWQgY2hhcglfX3BhZDBbMTBdOwogCiAjZGVmaW5l IFRBUkdFVF9TVEFUNjRfSEFTX0JST0tFTl9TVF9JTk8JMQotCXRhcmdldF91bG9uZwlfX3N0X2lu bzsKKwlhYmlfdWxvbmcJX19zdF9pbm87CiAKIAl1bnNpZ25lZCBpbnQJc3RfbW9kZTsKIAl1bnNp Z25lZCBpbnQJc3Rfbmxpbms7CiAKLQl0YXJnZXRfdWxvbmcJc3RfdWlkOwotCXRhcmdldF91bG9u ZwlzdF9naWQ7CisJYWJpX3Vsb25nCXN0X3VpZDsKKwlhYmlfdWxvbmcJc3RfZ2lkOwogCiAJdW5z aWduZWQgc2hvcnQJc3RfcmRldjsKIAl1bnNpZ25lZCBjaGFyCV9fcGFkM1sxMF07CiAKIAlsb25n IGxvbmcJc3Rfc2l6ZTsKLQl0YXJnZXRfdWxvbmcJc3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcJc3Rf Ymxrc2l6ZTsKIAotCXRhcmdldF91bG9uZwlzdF9ibG9ja3M7CS8qIE51bWJlciA1MTItYnl0ZSBi bG9ja3MgYWxsb2NhdGVkLiAqLwotCXRhcmdldF91bG9uZwlfX3BhZDQ7CQkvKiBmdXR1cmUgcG9z c2libGUgc3RfYmxvY2tzIGhpZ2ggYml0cyAqLworCWFiaV91bG9uZwlzdF9ibG9ja3M7CS8qIE51 bWJlciA1MTItYnl0ZSBibG9ja3MgYWxsb2NhdGVkLiAqLworCWFiaV91bG9uZwlfX3BhZDQ7CQkv KiBmdXR1cmUgcG9zc2libGUgc3RfYmxvY2tzIGhpZ2ggYml0cyAqLwogCi0JdGFyZ2V0X3Vsb25n CXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcJX19wYWQ1OworCWFiaV91bG9uZwl0YXJn ZXRfc3RfYXRpbWU7CisJYWJpX3Vsb25nCV9fcGFkNTsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRf c3RfbXRpbWU7Ci0JdGFyZ2V0X3Vsb25nCV9fcGFkNjsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X210 aW1lOworCWFiaV91bG9uZwlfX3BhZDY7CiAKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2N0aW1l OwotCXRhcmdldF91bG9uZwlfX3BhZDc7CQkvKiB3aWxsIGJlIGhpZ2ggMzIgYml0cyBvZiBjdGlt ZSBzb21lZGF5ICovCisJYWJpX3Vsb25nCXRhcmdldF9zdF9jdGltZTsKKwlhYmlfdWxvbmcJX19w YWQ3OwkJLyogd2lsbCBiZSBoaWdoIDMyIGJpdHMgb2YgY3RpbWUgc29tZWRheSAqLwogCiAJdW5z aWduZWQgbG9uZyBsb25nCXN0X2lubzsKIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CkBAIC05 NDksNTAgKzk0OSw1MCBAQAogc3RydWN0IHRhcmdldF9lYWJpX3N0YXQ2NCB7CiAgICAgICAgIHVu c2lnbmVkIGxvbmcgbG9uZyBzdF9kZXY7CiAgICAgICAgIHVuc2lnbmVkIGludCAgICBfX3BhZDE7 Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICBfX3N0X2lubzsKKyAgICAgICAgYWJpX3Vsb25nICAg IF9fc3RfaW5vOwogICAgICAgICB1bnNpZ25lZCBpbnQgICAgc3RfbW9kZTsKICAgICAgICAgdW5z aWduZWQgaW50ICAgIHN0X25saW5rOwogCi0gICAgICAgIHRhcmdldF91bG9uZyAgICBzdF91aWQ7 Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICBzdF9naWQ7CisgICAgICAgIGFiaV91bG9uZyAgICBz dF91aWQ7CisgICAgICAgIGFiaV91bG9uZyAgICBzdF9naWQ7CiAKICAgICAgICAgdW5zaWduZWQg bG9uZyBsb25nIHN0X3JkZXY7CiAgICAgICAgIHVuc2lnbmVkIGludCAgICBfX3BhZDJbMl07CiAK ICAgICAgICAgbG9uZyBsb25nICAgICAgIHN0X3NpemU7Ci0gICAgICAgIHRhcmdldF91bG9uZyAg ICBzdF9ibGtzaXplOworICAgICAgICBhYmlfdWxvbmcgICAgc3RfYmxrc2l6ZTsKICAgICAgICAg dW5zaWduZWQgaW50ICAgIF9fcGFkMzsKICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X2Js b2NrczsKIAotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lOwotICAgICAg ICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lX25zZWM7CisgICAgICAgIGFiaV91bG9u ZyAgICB0YXJnZXRfc3RfYXRpbWU7CisgICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3RfYXRp bWVfbnNlYzsKIAotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X210aW1lOwotICAg ICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X210aW1lX25zZWM7CisgICAgICAgIGFiaV91 bG9uZyAgICB0YXJnZXRfc3RfbXRpbWU7CisgICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3Rf bXRpbWVfbnNlYzsKIAotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lOwot ICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lX25zZWM7CisgICAgICAgIGFi aV91bG9uZyAgICB0YXJnZXRfc3RfY3RpbWU7CisgICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRf c3RfY3RpbWVfbnNlYzsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RfaW5vOwogfSBf X2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAjZW5kaWYKIAotI2VsaWYgZGVmaW5lZChUQVJHRVRf U1BBUkM2NCkKKyNlbGlmIGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpICYmICFkZWZpbmVkKFRBUkdF VF9BQkkzMikKIHN0cnVjdCB0YXJnZXRfc3RhdCB7CiAJdW5zaWduZWQgaW50CXN0X2RldjsKLQl0 YXJnZXRfdWxvbmcJc3RfaW5vOworCWFiaV91bG9uZwlzdF9pbm87CiAJdW5zaWduZWQgaW50CXN0 X21vZGU7CiAJdW5zaWduZWQgaW50CXN0X25saW5rOwogCXVuc2lnbmVkIGludAlzdF91aWQ7CiAJ dW5zaWduZWQgaW50CXN0X2dpZDsKIAl1bnNpZ25lZCBpbnQJc3RfcmRldjsKLQl0YXJnZXRfbG9u ZwlzdF9zaXplOwotCXRhcmdldF9sb25nCXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfbG9uZwl0 YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X2xvbmcJdGFyZ2V0X3N0X2N0aW1lOwotCXRhcmdldF9s b25nCXN0X2Jsa3NpemU7Ci0JdGFyZ2V0X2xvbmcJc3RfYmxvY2tzOwotCXRhcmdldF91bG9uZwlf X3VudXNlZDRbMl07CisJYWJpX2xvbmcJc3Rfc2l6ZTsKKwlhYmlfbG9uZwl0YXJnZXRfc3RfYXRp bWU7CisJYWJpX2xvbmcJdGFyZ2V0X3N0X210aW1lOworCWFiaV9sb25nCXRhcmdldF9zdF9jdGlt ZTsKKwlhYmlfbG9uZwlzdF9ibGtzaXplOworCWFiaV9sb25nCXN0X2Jsb2NrczsKKwlhYmlfdWxv bmcJX191bnVzZWQ0WzJdOwogfTsKIAogc3RydWN0IHRhcmdldF9zdGF0NjQgewpAQCAtMTAxNiwz OCArMTAxNiwzOCBAQAogCXVuc2lnbmVkIGNoYXIJX19wYWQ0WzRdOwogCXVuc2lnbmVkIGludAlz dF9ibG9ja3M7CiAKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lOwotCXRhcmdldF91bG9u ZwlfX3VudXNlZDE7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9hdGltZTsKKwlhYmlfdWxvbmcJX191 bnVzZWQxOwogCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9tdGltZTsKLQl0YXJnZXRfdWxvbmcJ X191bnVzZWQyOworCWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWU7CisJYWJpX3Vsb25nCV9fdW51 c2VkMjsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25nCV9f dW51c2VkMzsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2N0aW1lOworCWFiaV91bG9uZwlfX3VudXNl ZDM7CiAKLQl0YXJnZXRfdWxvbmcJX191bnVzZWQ0WzNdOworCWFiaV91bG9uZwlfX3VudXNlZDRb M107CiB9OwogCiAjZWxpZiBkZWZpbmVkKFRBUkdFVF9TUEFSQykKIAogc3RydWN0IHRhcmdldF9z dGF0IHsKIAl1bnNpZ25lZCBzaG9ydAlzdF9kZXY7Ci0JdGFyZ2V0X3Vsb25nCXN0X2lubzsKKwlh YmlfdWxvbmcJc3RfaW5vOwogCXVuc2lnbmVkIHNob3J0CXN0X21vZGU7CiAJc2hvcnQJCXN0X25s aW5rOwogCXVuc2lnbmVkIHNob3J0CXN0X3VpZDsKIAl1bnNpZ25lZCBzaG9ydAlzdF9naWQ7CiAJ dW5zaWduZWQgc2hvcnQJc3RfcmRldjsKLQl0YXJnZXRfbG9uZwlzdF9zaXplOwotCXRhcmdldF9s b25nCXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcJX191bnVzZWQxOwotCXRhcmdldF9s b25nCXRhcmdldF9zdF9tdGltZTsKLQl0YXJnZXRfdWxvbmcJX191bnVzZWQyOwotCXRhcmdldF9s b25nCXRhcmdldF9zdF9jdGltZTsKLQl0YXJnZXRfdWxvbmcJX191bnVzZWQzOwotCXRhcmdldF9s b25nCXN0X2Jsa3NpemU7Ci0JdGFyZ2V0X2xvbmcJc3RfYmxvY2tzOwotCXRhcmdldF91bG9uZwlf X3VudXNlZDRbMl07CisJYWJpX2xvbmcJc3Rfc2l6ZTsKKwlhYmlfbG9uZwl0YXJnZXRfc3RfYXRp bWU7CisJYWJpX3Vsb25nCV9fdW51c2VkMTsKKwlhYmlfbG9uZwl0YXJnZXRfc3RfbXRpbWU7CisJ YWJpX3Vsb25nCV9fdW51c2VkMjsKKwlhYmlfbG9uZwl0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vs b25nCV9fdW51c2VkMzsKKwlhYmlfbG9uZwlzdF9ibGtzaXplOworCWFiaV9sb25nCXN0X2Jsb2Nr czsKKwlhYmlfdWxvbmcJX191bnVzZWQ0WzJdOwogfTsKIAogc3RydWN0IHRhcmdldF9zdGF0NjQg ewpAQCAtMTA5MCwyMyArMTA5MCwyMyBAQAogCiBzdHJ1Y3QgdGFyZ2V0X3N0YXQgewogCXVuc2ln bmVkIHNob3J0IHN0X2RldjsKLQl0YXJnZXRfdWxvbmcgc3RfaW5vOworCWFiaV91bG9uZyBzdF9p bm87CiAJdW5zaWduZWQgaW50IHN0X21vZGU7CiAJdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAJ dW5zaWduZWQgaW50IHN0X3VpZDsKIAl1bnNpZ25lZCBpbnQgc3RfZ2lkOwogCXVuc2lnbmVkIHNo b3J0IHN0X3JkZXY7Ci0JdGFyZ2V0X3Vsb25nICBzdF9zaXplOwotCXRhcmdldF91bG9uZyAgc3Rf Ymxrc2l6ZTsKLQl0YXJnZXRfdWxvbmcgIHN0X2Jsb2NrczsKLQl0YXJnZXRfdWxvbmcgIHRhcmdl dF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkMTsKLQl0YXJnZXRfdWxvbmcgIHRh cmdldF9zdF9tdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkMjsKLQl0YXJnZXRfdWxvbmcg IHRhcmdldF9zdF9jdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkMzsKLQl0YXJnZXRfdWxv bmcgIF9fdW51c2VkNDsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkNTsKKwlhYmlfdWxvbmcgIHN0 X3NpemU7CisJYWJpX3Vsb25nICBzdF9ibGtzaXplOworCWFiaV91bG9uZyAgc3RfYmxvY2tzOwor CWFiaV91bG9uZyAgdGFyZ2V0X3N0X2F0aW1lOworCWFiaV91bG9uZyAgX191bnVzZWQxOworCWFi aV91bG9uZyAgdGFyZ2V0X3N0X210aW1lOworCWFiaV91bG9uZyAgX191bnVzZWQyOworCWFiaV91 bG9uZyAgdGFyZ2V0X3N0X2N0aW1lOworCWFiaV91bG9uZyAgX191bnVzZWQzOworCWFiaV91bG9u ZyAgX191bnVzZWQ0OworCWFiaV91bG9uZyAgX191bnVzZWQ1OwogfTsKIAogc3RydWN0IHRhcmdl dF9zdGF0NjQgewpAQCAtMTExOSwxNyArMTExOSwxNyBAQAogCXVuc2lnbmVkIGxvbmcgbG9uZyBz dF9yZGV2OwogCWxvbmcgbG9uZyBwYWQwOwogCWxvbmcgbG9uZyBzdF9zaXplOwotCXRhcmdldF91 bG9uZwlzdF9ibGtzaXplOwotCXRhcmdldF91bG9uZwlwYWQxOworCWFiaV91bG9uZwlzdF9ibGtz aXplOworCWFiaV91bG9uZwlwYWQxOwogCWxvbmcgbG9uZwlzdF9ibG9ja3M7CS8qIE51bWJlciA1 MTItYnl0ZSBibG9ja3MgYWxsb2NhdGVkLiAqLwotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfYXRp bWU7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfYXRpbWVfbnNlYzsKLQl0YXJn ZXRfdWxvbmcJdGFyZ2V0X3N0X210aW1lOwotICAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0 X3N0X210aW1lX25zZWM7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9jdGltZTsKLSAgICAgICAg dGFyZ2V0X3Vsb25nICAgIHRhcmdldF9zdF9jdGltZV9uc2VjOwotICAgICAgICB0YXJnZXRfdWxv bmcgICAgX191bnVzZWQ0OwotICAgICAgICB0YXJnZXRfdWxvbmcgICAgX191bnVzZWQ1OworCWFi aV91bG9uZwl0YXJnZXRfc3RfYXRpbWU7CisgICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3Rf YXRpbWVfbnNlYzsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X210aW1lOworICAgICAgICBhYmlfdWxv bmcgICAgdGFyZ2V0X3N0X210aW1lX25zZWM7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9jdGltZTsK KyAgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9jdGltZV9uc2VjOworICAgICAgICBhYmlf dWxvbmcgICAgX191bnVzZWQ0OworICAgICAgICBhYmlfdWxvbmcgICAgX191bnVzZWQ1OwogfTsK IAogI2VsaWYgZGVmaW5lZChUQVJHRVRfTTY4SykKQEAgLTExMzcsMjQgKzExMzcsMjQgQEAKIHN0 cnVjdCB0YXJnZXRfc3RhdCB7CiAJdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogCXVuc2lnbmVkIHNo b3J0IF9fcGFkMTsKLQl0YXJnZXRfdWxvbmcgc3RfaW5vOworCWFiaV91bG9uZyBzdF9pbm87CiAJ dW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKIAl1bnNpZ25lZCBzaG9ydCBzdF9ubGluazsKIAl1bnNp Z25lZCBzaG9ydCBzdF91aWQ7CiAJdW5zaWduZWQgc2hvcnQgc3RfZ2lkOwogCXVuc2lnbmVkIHNo b3J0IHN0X3JkZXY7CiAJdW5zaWduZWQgc2hvcnQgX19wYWQyOwotCXRhcmdldF91bG9uZyAgc3Rf c2l6ZTsKLQl0YXJnZXRfdWxvbmcgIHN0X2Jsa3NpemU7Ci0JdGFyZ2V0X3Vsb25nICBzdF9ibG9j a3M7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfYXRpbWU7Ci0JdGFyZ2V0X3Vsb25nICBfX3Vu dXNlZDE7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X3Vsb25nICBf X3VudXNlZDI7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25n ICBfX3VudXNlZDM7Ci0JdGFyZ2V0X3Vsb25nICBfX3VudXNlZDQ7Ci0JdGFyZ2V0X3Vsb25nICBf X3VudXNlZDU7CisJYWJpX3Vsb25nICBzdF9zaXplOworCWFiaV91bG9uZyAgc3RfYmxrc2l6ZTsK KwlhYmlfdWxvbmcgIHN0X2Jsb2NrczsKKwlhYmlfdWxvbmcgIHRhcmdldF9zdF9hdGltZTsKKwlh YmlfdWxvbmcgIF9fdW51c2VkMTsKKwlhYmlfdWxvbmcgIHRhcmdldF9zdF9tdGltZTsKKwlhYmlf dWxvbmcgIF9fdW51c2VkMjsKKwlhYmlfdWxvbmcgIHRhcmdldF9zdF9jdGltZTsKKwlhYmlfdWxv bmcgIF9fdW51c2VkMzsKKwlhYmlfdWxvbmcgIF9fdW51c2VkNDsKKwlhYmlfdWxvbmcgIF9fdW51 c2VkNTsKIH07CiAKIC8qIFRoaXMgbWF0Y2hlcyBzdHJ1Y3Qgc3RhdDY0IGluIGdsaWJjMi4xLCBo ZW5jZSB0aGUgYWJzb2x1dGVseQpAQCAtMTE2NSwzMSArMTE2NSwzMSBAQAogCXVuc2lnbmVkIGNo YXIJX19wYWQxWzJdOwogCiAjZGVmaW5lIFRBUkdFVF9TVEFUNjRfSEFTX0JST0tFTl9TVF9JTk8J MQotCXRhcmdldF91bG9uZwlfX3N0X2lubzsKKwlhYmlfdWxvbmcJX19zdF9pbm87CiAKIAl1bnNp Z25lZCBpbnQJc3RfbW9kZTsKIAl1bnNpZ25lZCBpbnQJc3Rfbmxpbms7CiAKLQl0YXJnZXRfdWxv bmcJc3RfdWlkOwotCXRhcmdldF91bG9uZwlzdF9naWQ7CisJYWJpX3Vsb25nCXN0X3VpZDsKKwlh YmlfdWxvbmcJc3RfZ2lkOwogCiAJdW5zaWduZWQgbG9uZyBsb25nCXN0X3JkZXY7CiAJdW5zaWdu ZWQgY2hhcglfX3BhZDNbMl07CiAKIAlsb25nIGxvbmcJc3Rfc2l6ZTsKLQl0YXJnZXRfdWxvbmcJ c3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcJc3RfYmxrc2l6ZTsKIAotCXRhcmdldF91bG9uZwlfX3Bh ZDQ7CQkvKiBmdXR1cmUgcG9zc2libGUgc3RfYmxvY2tzIGhpZ2ggYml0cyAqLwotCXRhcmdldF91 bG9uZwlzdF9ibG9ja3M7CS8qIE51bWJlciA1MTItYnl0ZSBibG9ja3MgYWxsb2NhdGVkLiAqLwor CWFiaV91bG9uZwlfX3BhZDQ7CQkvKiBmdXR1cmUgcG9zc2libGUgc3RfYmxvY2tzIGhpZ2ggYml0 cyAqLworCWFiaV91bG9uZwlzdF9ibG9ja3M7CS8qIE51bWJlciA1MTItYnl0ZSBibG9ja3MgYWxs b2NhdGVkLiAqLwogCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxv bmcJdGFyZ2V0X3N0X2F0aW1lX25zZWM7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9hdGltZTsKKwlh YmlfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lX25zZWM7CiAKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0 X210aW1lOwotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfbXRpbWVfbnNlYzsKKwlhYmlfdWxvbmcJ dGFyZ2V0X3N0X210aW1lOworCWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWVfbnNlYzsKIAotCXRh cmdldF91bG9uZwl0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9jdGlt ZV9uc2VjOworCWFiaV91bG9uZwl0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vsb25nCXRhcmdldF9z dF9jdGltZV9uc2VjOwogCiAJdW5zaWduZWQgbG9uZyBsb25nCXN0X2lubzsKIH0gX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CkBAIC0xMjAxLDcgKzEyMDEsNyBAQAogCXVuc2lnbmVkIGludAkJc3Rf ZGV2OwogCXVuc2lnbmVkIGludAkJc3RfcGFkMFszXTsgLyogUmVzZXJ2ZWQgZm9yIHN0X2RldiBl eHBhbnNpb24gKi8KIAotCXRhcmdldF91bG9uZwkJc3RfaW5vOworCWFiaV91bG9uZwkJc3RfaW5v OwogCiAJdW5zaWduZWQgaW50CQlzdF9tb2RlOwogCXVuc2lnbmVkIGludAkJc3Rfbmxpbms7CkBA IC0xMjEyLDcgKzEyMTIsNyBAQAogCXVuc2lnbmVkIGludAkJc3RfcmRldjsKIAl1bnNpZ25lZCBp bnQJCXN0X3BhZDFbM107IC8qIFJlc2VydmVkIGZvciBzdF9yZGV2IGV4cGFuc2lvbiAqLwogCi0J dGFyZ2V0X3Vsb25nCQlzdF9zaXplOworCWFiaV91bG9uZwkJc3Rfc2l6ZTsKIAogCS8qCiAJICog QWN0dWFsbHkgdGhpcyBzaG91bGQgYmUgdGltZXN0cnVjX3Qgc3RfYXRpbWUsIHN0X210aW1lIGFu ZCBzdF9jdGltZQpAQCAtMTIzMCw3ICsxMjMwLDcgQEAKIAl1bnNpZ25lZCBpbnQJCXN0X2Jsa3Np emU7CiAJdW5zaWduZWQgaW50CQlzdF9wYWQyOwogCi0JdGFyZ2V0X3Vsb25nCQlzdF9ibG9ja3M7 CisJYWJpX3Vsb25nCQlzdF9ibG9ja3M7CiB9OwogCiAjZWxpZiBkZWZpbmVkKFRBUkdFVF9NSVBT TjMyKQpAQCAtMTI3Miw3ICsxMjcyLDcgQEAKIAl1bnNpZ25lZCBpbnQJc3RfZGV2OwogCXVuc2ln bmVkIGludAlzdF9wYWQwWzNdOwkvKiBSZXNlcnZlZCBmb3Igc3RfZGV2IGV4cGFuc2lvbiAgKi8K IAotCXRhcmdldF91bG9uZwlzdF9pbm87CisJYWJpX3Vsb25nCXN0X2lubzsKIAogICAgICAgICB1 bnNpZ25lZCBpbnQJc3RfbW9kZTsKICAgICAgICAgdW5zaWduZWQgaW50CXN0X25saW5rOwpAQCAt MTMwOCwyOSArMTMwOCwyOSBAQAogCiBzdHJ1Y3QgdGFyZ2V0X3N0YXQgewogCXVuc2lnbmVkCXN0 X2RldjsKLQl0YXJnZXRfbG9uZwlzdF9wYWQxWzNdOwkJLyogUmVzZXJ2ZWQgZm9yIG5ldHdvcmsg aWQgKi8KLQl0YXJnZXRfdWxvbmcJc3RfaW5vOworCWFiaV9sb25nCXN0X3BhZDFbM107CQkvKiBS ZXNlcnZlZCBmb3IgbmV0d29yayBpZCAqLworCWFiaV91bG9uZwlzdF9pbm87CiAJdW5zaWduZWQg aW50CXN0X21vZGU7CiAJdW5zaWduZWQgaW50CXN0X25saW5rOwogCWludAkJc3RfdWlkOwogCWlu dAkJc3RfZ2lkOwogCXVuc2lnbmVkIAlzdF9yZGV2OwotCXRhcmdldF9sb25nCXN0X3BhZDJbMl07 Ci0JdGFyZ2V0X2xvbmcJc3Rfc2l6ZTsKLQl0YXJnZXRfbG9uZwlzdF9wYWQzOworCWFiaV9sb25n CXN0X3BhZDJbMl07CisJYWJpX2xvbmcJc3Rfc2l6ZTsKKwlhYmlfbG9uZwlzdF9wYWQzOwogCS8q CiAJICogQWN0dWFsbHkgdGhpcyBzaG91bGQgYmUgdGltZXN0cnVjX3Qgc3RfYXRpbWUsIHN0X210 aW1lIGFuZCBzdF9jdGltZQogCSAqIGJ1dCB3ZSBkb24ndCBoYXZlIGl0IHVuZGVyIExpbnV4Lgog CSAqLwotCXRhcmdldF9sb25nCQl0YXJnZXRfc3RfYXRpbWU7Ci0JdGFyZ2V0X2xvbmcJCXRhcmdl dF9zdF9hdGltZV9uc2VjOwotCXRhcmdldF9sb25nCQl0YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0 X2xvbmcJCXRhcmdldF9zdF9tdGltZV9uc2VjOwotCXRhcmdldF9sb25nCQl0YXJnZXRfc3RfY3Rp bWU7Ci0JdGFyZ2V0X2xvbmcJCXRhcmdldF9zdF9jdGltZV9uc2VjOwotCXRhcmdldF9sb25nCQlz dF9ibGtzaXplOwotCXRhcmdldF9sb25nCQlzdF9ibG9ja3M7Ci0JdGFyZ2V0X2xvbmcJCXN0X3Bh ZDRbMTRdOworCWFiaV9sb25nCQl0YXJnZXRfc3RfYXRpbWU7CisJYWJpX2xvbmcJCXRhcmdldF9z dF9hdGltZV9uc2VjOworCWFiaV9sb25nCQl0YXJnZXRfc3RfbXRpbWU7CisJYWJpX2xvbmcJCXRh cmdldF9zdF9tdGltZV9uc2VjOworCWFiaV9sb25nCQl0YXJnZXRfc3RfY3RpbWU7CisJYWJpX2xv bmcJCXRhcmdldF9zdF9jdGltZV9uc2VjOworCWFiaV9sb25nCQlzdF9ibGtzaXplOworCWFiaV9s b25nCQlzdF9ibG9ja3M7CisJYWJpX2xvbmcJCXN0X3BhZDRbMTRdOwogfTsKIAogLyoKQEAgLTEz NDAsOCArMTM0MCw4IEBACiAgKi8KIAogc3RydWN0IHRhcmdldF9zdGF0NjQgewotCXRhcmdldF91 bG9uZwlzdF9kZXY7Ci0JdGFyZ2V0X3Vsb25nCXN0X3BhZDBbM107CS8qIFJlc2VydmVkIGZvciBz dF9kZXYgZXhwYW5zaW9uICAqLworCWFiaV91bG9uZwlzdF9kZXY7CisJYWJpX3Vsb25nCXN0X3Bh ZDBbM107CS8qIFJlc2VydmVkIGZvciBzdF9kZXYgZXhwYW5zaW9uICAqLwogCiAJdWludDY0X3QJ c3RfaW5vOwogCkBAIC0xMzUxLDggKzEzNTEsOCBAQAogCWludAkJc3RfdWlkOwogCWludAkJc3Rf Z2lkOwogCi0JdGFyZ2V0X3Vsb25nCXN0X3JkZXY7Ci0JdGFyZ2V0X3Vsb25nCXN0X3BhZDFbM107 CS8qIFJlc2VydmVkIGZvciBzdF9yZGV2IGV4cGFuc2lvbiAgKi8KKwlhYmlfdWxvbmcJc3RfcmRl djsKKwlhYmlfdWxvbmcJc3RfcGFkMVszXTsJLyogUmVzZXJ2ZWQgZm9yIHN0X3JkZXYgZXhwYW5z aW9uICAqLwogCiAJaW50NjRfdCAJc3Rfc2l6ZTsKIApAQCAtMTM2MCwxNyArMTM2MCwxNyBAQAog CSAqIEFjdHVhbGx5IHRoaXMgc2hvdWxkIGJlIHRpbWVzdHJ1Y190IHN0X2F0aW1lLCBzdF9tdGlt ZSBhbmQgc3RfY3RpbWUKIAkgKiBidXQgd2UgZG9uJ3QgaGF2ZSBpdCB1bmRlciBMaW51eC4KIAkg Ki8KLQl0YXJnZXRfbG9uZwl0YXJnZXRfc3RfYXRpbWU7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9z dF9hdGltZV9uc2VjOwkvKiBSZXNlcnZlZCBmb3Igc3RfYXRpbWUgZXhwYW5zaW9uICAqLworCWFi aV9sb25nCXRhcmdldF9zdF9hdGltZTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lX25zZWM7 CS8qIFJlc2VydmVkIGZvciBzdF9hdGltZSBleHBhbnNpb24gICovCiAKLQl0YXJnZXRfbG9uZwl0 YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9tdGltZV9uc2VjOwkvKiBS ZXNlcnZlZCBmb3Igc3RfbXRpbWUgZXhwYW5zaW9uICAqLworCWFiaV9sb25nCXRhcmdldF9zdF9t dGltZTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X210aW1lX25zZWM7CS8qIFJlc2VydmVkIGZvciBz dF9tdGltZSBleHBhbnNpb24gICovCiAKLQl0YXJnZXRfbG9uZwl0YXJnZXRfc3RfY3RpbWU7Ci0J dGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9jdGltZV9uc2VjOwkvKiBSZXNlcnZlZCBmb3Igc3RfY3Rp bWUgZXhwYW5zaW9uICAqLworCWFiaV9sb25nCXRhcmdldF9zdF9jdGltZTsKKwlhYmlfdWxvbmcJ dGFyZ2V0X3N0X2N0aW1lX25zZWM7CS8qIFJlc2VydmVkIGZvciBzdF9jdGltZSBleHBhbnNpb24g ICovCiAKLQl0YXJnZXRfdWxvbmcJc3RfYmxrc2l6ZTsKLQl0YXJnZXRfdWxvbmcJc3RfcGFkMjsK KwlhYmlfdWxvbmcJc3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcJc3RfcGFkMjsKIAogCWludDY0X3Qg IAlzdF9ibG9ja3M7CiB9OwpAQCAtMTM4NSwxMCArMTM4NSwxMCBAQAogICAgICAgIHVuc2lnbmVk IGludCAgICBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgaW50ICAgIHN0X2dpZDsKICAgICAgICB1 bnNpZ25lZCBpbnQgICAgc3RfcmRldjsKLSAgICAgICB0YXJnZXRfbG9uZyAgICAgc3Rfc2l6ZTsK LSAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lOwotICAgICAgIHRhcmdldF91 bG9uZyAgICB0YXJnZXRfc3RfbXRpbWU7Ci0gICAgICAgdGFyZ2V0X3Vsb25nICAgIHRhcmdldF9z dF9jdGltZTsKKyAgICAgICBhYmlfbG9uZyAgICAgc3Rfc2l6ZTsKKyAgICAgICBhYmlfdWxvbmcg ICAgdGFyZ2V0X3N0X2F0aW1lOworICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3RfbXRpbWU7 CisgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBp bnQgICAgc3RfYmxrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgICAgc3RfYmxvY2tzOwogICAg ICAgIHVuc2lnbmVkIGludCAgICBzdF9mbGFnczsKQEAgLTEzOTYsMTEgKzEzOTYsMTEgQEAKIH07 CiAKIHN0cnVjdCB0YXJnZXRfc3RhdDY0IHsKLSAgICAgICB0YXJnZXRfdWxvbmcgICAgc3RfZGV2 OwotICAgICAgIHRhcmdldF91bG9uZyAgICBzdF9pbm87Ci0gICAgICAgdGFyZ2V0X3Vsb25nICAg IHN0X3JkZXY7Ci0gICAgICAgdGFyZ2V0X2xvbmcgICAgIHN0X3NpemU7Ci0gICAgICAgdGFyZ2V0 X3Vsb25nICAgIHN0X2Jsb2NrczsKKyAgICAgICBhYmlfdWxvbmcgICAgc3RfZGV2OworICAgICAg IGFiaV91bG9uZyAgICBzdF9pbm87CisgICAgICAgYWJpX3Vsb25nICAgIHN0X3JkZXY7CisgICAg ICAgYWJpX2xvbmcgICAgIHN0X3NpemU7CisgICAgICAgYWJpX3Vsb25nICAgIHN0X2Jsb2NrczsK IAogICAgICAgIHVuc2lnbmVkIGludCAgICBzdF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGludCAg ICBzdF91aWQ7CkBAIC0xNDA5LDM2ICsxNDA5LDM2IEBACiAgICAgICAgdW5zaWduZWQgaW50ICAg IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIGludCAgICBfX3BhZDA7CiAKLSAgICAgICB0YXJn ZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lOwotICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJn ZXRfc3RfYXRpbWVfbnNlYzsKLSAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X210aW1l OwotICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfbXRpbWVfbnNlYzsKLSAgICAgICB0 YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lOwotICAgICAgIHRhcmdldF91bG9uZyAgICB0 YXJnZXRfc3RfY3RpbWVfbnNlYzsKLSAgICAgICB0YXJnZXRfbG9uZyAgICAgX191bnVzZWRbM107 CisgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9hdGltZTsKKyAgICAgICBhYmlfdWxvbmcg ICAgdGFyZ2V0X3N0X2F0aW1lX25zZWM7CisgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9t dGltZTsKKyAgICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X210aW1lX25zZWM7CisgICAgICAg YWJpX3Vsb25nICAgIHRhcmdldF9zdF9jdGltZTsKKyAgICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0 X3N0X2N0aW1lX25zZWM7CisgICAgICAgYWJpX2xvbmcgICAgIF9fdW51c2VkWzNdOwogfTsKIAog I2VsaWYgZGVmaW5lZChUQVJHRVRfU0g0KQogCiBzdHJ1Y3QgdGFyZ2V0X3N0YXQgewotCXRhcmdl dF91bG9uZyAgc3RfZGV2OwotCXRhcmdldF91bG9uZyAgc3RfaW5vOworCWFiaV91bG9uZyAgc3Rf ZGV2OworCWFiaV91bG9uZyAgc3RfaW5vOwogCXVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAJdW5z aWduZWQgc2hvcnQgc3Rfbmxpbms7CiAJdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogCXVuc2lnbmVk IHNob3J0IHN0X2dpZDsKLQl0YXJnZXRfdWxvbmcgIHN0X3JkZXY7Ci0JdGFyZ2V0X3Vsb25nICBz dF9zaXplOwotCXRhcmdldF91bG9uZyAgc3RfYmxrc2l6ZTsKLQl0YXJnZXRfdWxvbmcgIHN0X2Js b2NrczsKLQl0YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcgIHRh cmdldF9zdF9hdGltZV9uc2VjOwotCXRhcmdldF91bG9uZyAgdGFyZ2V0X3N0X210aW1lOwotCXRh cmdldF91bG9uZyAgdGFyZ2V0X3N0X210aW1lX25zZWM7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRf c3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfY3RpbWVfbnNlYzsKLQl0YXJnZXRf dWxvbmcgIF9fdW51c2VkNDsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkNTsKKwlhYmlfdWxvbmcg IHN0X3JkZXY7CisJYWJpX3Vsb25nICBzdF9zaXplOworCWFiaV91bG9uZyAgc3RfYmxrc2l6ZTsK KwlhYmlfdWxvbmcgIHN0X2Jsb2NrczsKKwlhYmlfdWxvbmcgIHRhcmdldF9zdF9hdGltZTsKKwlh YmlfdWxvbmcgIHRhcmdldF9zdF9hdGltZV9uc2VjOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X210 aW1lOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X210aW1lX25zZWM7CisJYWJpX3Vsb25nICB0YXJn ZXRfc3RfY3RpbWU7CisJYWJpX3Vsb25nICB0YXJnZXRfc3RfY3RpbWVfbnNlYzsKKwlhYmlfdWxv bmcgIF9fdW51c2VkNDsKKwlhYmlfdWxvbmcgIF9fdW51c2VkNTsKIH07CiAKIC8qIFRoaXMgbWF0 Y2hlcyBzdHJ1Y3Qgc3RhdDY0IGluIGdsaWJjMi4xLCBoZW5jZSB0aGUgYWJzb2x1dGVseQpAQCAt MTQ0OSwzMCArMTQ0OSwzMCBAQAogCXVuc2lnbmVkIGNoYXIJX19wYWQwWzRdOwogCiAjZGVmaW5l IFRBUkdFVF9TVEFUNjRfSEFTX0JST0tFTl9TVF9JTk8JMQotCXRhcmdldF91bG9uZwlfX3N0X2lu bzsKKwlhYmlfdWxvbmcJX19zdF9pbm87CiAKIAl1bnNpZ25lZCBpbnQJc3RfbW9kZTsKIAl1bnNp Z25lZCBpbnQJc3Rfbmxpbms7CiAKLQl0YXJnZXRfdWxvbmcJc3RfdWlkOwotCXRhcmdldF91bG9u ZwlzdF9naWQ7CisJYWJpX3Vsb25nCXN0X3VpZDsKKwlhYmlfdWxvbmcJc3RfZ2lkOwogCiAJdW5z aWduZWQgbG9uZyBsb25nCXN0X3JkZXY7CiAJdW5zaWduZWQgY2hhcglfX3BhZDNbNF07CiAKIAls b25nIGxvbmcJc3Rfc2l6ZTsKLQl0YXJnZXRfdWxvbmcJc3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcJ c3RfYmxrc2l6ZTsKIAogCXVuc2lnbmVkIGxvbmcgbG9uZwlzdF9ibG9ja3M7CS8qIE51bWJlciA1 MTItYnl0ZSBibG9ja3MgYWxsb2NhdGVkLiAqLwogCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9h dGltZTsKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lX25zZWM7CisJYWJpX3Vsb25nCXRh cmdldF9zdF9hdGltZTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lX25zZWM7CiAKLQl0YXJn ZXRfdWxvbmcJdGFyZ2V0X3N0X210aW1lOwotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfbXRpbWVf bnNlYzsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X210aW1lOworCWFiaV91bG9uZwl0YXJnZXRfc3Rf bXRpbWVfbnNlYzsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X3Vs b25nCXRhcmdldF9zdF9jdGltZV9uc2VjOworCWFiaV91bG9uZwl0YXJnZXRfc3RfY3RpbWU7CisJ YWJpX3Vsb25nCXRhcmdldF9zdF9jdGltZV9uc2VjOwogCiAJdW5zaWduZWQgbG9uZyBsb25nCXN0 X2lubzsKIH07CkBAIC0xNTA0LDE5ICsxNTA0LDE5IEBACiB9OwogI2Vsc2UKIHN0cnVjdCB0YXJn ZXRfc3RhdGZzIHsKLQl0YXJnZXRfbG9uZwkJZl90eXBlOwotCXRhcmdldF9sb25nCQlmX2JzaXpl OwotCXRhcmdldF9sb25nCQlmX2Zyc2l6ZTsJLyogRnJhZ21lbnQgc2l6ZSAtIHVuc3VwcG9ydGVk ICovCi0JdGFyZ2V0X2xvbmcJCWZfYmxvY2tzOwotCXRhcmdldF9sb25nCQlmX2JmcmVlOwotCXRh cmdldF9sb25nCQlmX2ZpbGVzOwotCXRhcmdldF9sb25nCQlmX2ZmcmVlOwotCXRhcmdldF9sb25n CQlmX2JhdmFpbDsKKwlhYmlfbG9uZwkJZl90eXBlOworCWFiaV9sb25nCQlmX2JzaXplOworCWFi aV9sb25nCQlmX2Zyc2l6ZTsJLyogRnJhZ21lbnQgc2l6ZSAtIHVuc3VwcG9ydGVkICovCisJYWJp X2xvbmcJCWZfYmxvY2tzOworCWFiaV9sb25nCQlmX2JmcmVlOworCWFiaV9sb25nCQlmX2ZpbGVz OworCWFiaV9sb25nCQlmX2ZmcmVlOworCWFiaV9sb25nCQlmX2JhdmFpbDsKIAogCS8qIExpbnV4 IHNwZWNpYWxzICovCiAJdGFyZ2V0X2ZzaWRfdAkJZl9mc2lkOwotCXRhcmdldF9sb25nCQlmX25h bWVsZW47Ci0JdGFyZ2V0X2xvbmcJCWZfc3BhcmVbNl07CisJYWJpX2xvbmcJCWZfbmFtZWxlbjsK KwlhYmlfbG9uZwkJZl9zcGFyZVs2XTsKIH07CiAjZW5kaWYKIApAQCAtMTY4OCw4ICsxNjg4LDgg QEAKIHN0cnVjdCB0YXJnZXRfZmxvY2sgewogCXNob3J0IGxfdHlwZTsKIAlzaG9ydCBsX3doZW5j ZTsKLQl0YXJnZXRfdWxvbmcgbF9zdGFydDsKLQl0YXJnZXRfdWxvbmcgbF9sZW47CisJYWJpX3Vs b25nIGxfc3RhcnQ7CisJYWJpX3Vsb25nIGxfbGVuOwogCWludCBsX3BpZDsKIH07CiAKQEAgLTE4 NTYsMjAgKzE4NTYsMjAgQEAKICNkZWZpbmUgVEFSR0VUX1ZGQVRfSU9DVExfUkVBRERJUl9TSE9S VCAgIFRBUkdFVF9JT1JVKCdyJywgMikKIAogc3RydWN0IHRhcmdldF9zeXNpbmZvIHsKLSAgICB0 YXJnZXRfbG9uZyB1cHRpbWU7ICAgICAgICAgICAgIC8qIFNlY29uZHMgc2luY2UgYm9vdCAqLwot ICAgIHRhcmdldF91bG9uZyBsb2Fkc1szXTsgICAgICAgICAgLyogMSwgNSwgYW5kIDE1IG1pbnV0 ZSBsb2FkIGF2ZXJhZ2VzICovCi0gICAgdGFyZ2V0X3Vsb25nIHRvdGFscmFtOyAgICAgICAgICAv KiBUb3RhbCB1c2FibGUgbWFpbiBtZW1vcnkgc2l6ZSAqLwotICAgIHRhcmdldF91bG9uZyBmcmVl cmFtOyAgICAgICAgICAgLyogQXZhaWxhYmxlIG1lbW9yeSBzaXplICovCi0gICAgdGFyZ2V0X3Vs b25nIHNoYXJlZHJhbTsgICAgICAgICAvKiBBbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSAqLwotICAg IHRhcmdldF91bG9uZyBidWZmZXJyYW07ICAgICAgICAgLyogTWVtb3J5IHVzZWQgYnkgYnVmZmVy cyAqLwotICAgIHRhcmdldF91bG9uZyB0b3RhbHN3YXA7ICAgICAgICAgLyogVG90YWwgc3dhcCBz cGFjZSBzaXplICovCi0gICAgdGFyZ2V0X3Vsb25nIGZyZWVzd2FwOyAgICAgICAgICAvKiBzd2Fw IHNwYWNlIHN0aWxsIGF2YWlsYWJsZSAqLworICAgIGFiaV9sb25nIHVwdGltZTsgICAgICAgICAg ICAgLyogU2Vjb25kcyBzaW5jZSBib290ICovCisgICAgYWJpX3Vsb25nIGxvYWRzWzNdOyAgICAg ICAgICAvKiAxLCA1LCBhbmQgMTUgbWludXRlIGxvYWQgYXZlcmFnZXMgKi8KKyAgICBhYmlfdWxv bmcgdG90YWxyYW07ICAgICAgICAgIC8qIFRvdGFsIHVzYWJsZSBtYWluIG1lbW9yeSBzaXplICov CisgICAgYWJpX3Vsb25nIGZyZWVyYW07ICAgICAgICAgICAvKiBBdmFpbGFibGUgbWVtb3J5IHNp emUgKi8KKyAgICBhYmlfdWxvbmcgc2hhcmVkcmFtOyAgICAgICAgIC8qIEFtb3VudCBvZiBzaGFy ZWQgbWVtb3J5ICovCisgICAgYWJpX3Vsb25nIGJ1ZmZlcnJhbTsgICAgICAgICAvKiBNZW1vcnkg dXNlZCBieSBidWZmZXJzICovCisgICAgYWJpX3Vsb25nIHRvdGFsc3dhcDsgICAgICAgICAvKiBU b3RhbCBzd2FwIHNwYWNlIHNpemUgKi8KKyAgICBhYmlfdWxvbmcgZnJlZXN3YXA7ICAgICAgICAg IC8qIHN3YXAgc3BhY2Ugc3RpbGwgYXZhaWxhYmxlICovCiAgICAgdW5zaWduZWQgc2hvcnQgcHJv Y3M7ICAgICAgICAgICAvKiBOdW1iZXIgb2YgY3VycmVudCBwcm9jZXNzZXMgKi8KICAgICB1bnNp Z25lZCBzaG9ydCBwYWQ7ICAgICAgICAgICAgIC8qIGV4cGxpY2l0IHBhZGRpbmcgZm9yIG02OGsg Ki8KLSAgICB0YXJnZXRfdWxvbmcgdG90YWxoaWdoOyAgICAgICAgIC8qIFRvdGFsIGhpZ2ggbWVt b3J5IHNpemUgKi8KLSAgICB0YXJnZXRfdWxvbmcgZnJlZWhpZ2g7ICAgICAgICAgIC8qIEF2YWls YWJsZSBoaWdoIG1lbW9yeSBzaXplICovCisgICAgYWJpX3Vsb25nIHRvdGFsaGlnaDsgICAgICAg ICAvKiBUb3RhbCBoaWdoIG1lbW9yeSBzaXplICovCisgICAgYWJpX3Vsb25nIGZyZWVoaWdoOyAg ICAgICAgICAvKiBBdmFpbGFibGUgaGlnaCBtZW1vcnkgc2l6ZSAqLwogICAgIHVuc2lnbmVkIGlu dCBtZW1fdW5pdDsgICAgICAgICAgLyogTWVtb3J5IHVuaXQgc2l6ZSBpbiBieXRlcyAqLwotICAg IGNoYXIgX2ZbMjAtMipzaXplb2YodGFyZ2V0X2xvbmcpLXNpemVvZihpbnQpXTsgLyogUGFkZGlu ZzogbGliYzUgdXNlcyB0aGlzLi4gKi8KKyAgICBjaGFyIF9mWzIwLTIqc2l6ZW9mKGFiaV9sb25n KS1zaXplb2YoaW50KV07IC8qIFBhZGRpbmc6IGxpYmM1IHVzZXMgdGhpcy4uICovCiB9OwogCiAj aW5jbHVkZSAic29ja2V0LmgiCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvdm04Ni5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL3ZtODYuYwkyMDA3LTEwLTExIDE5OjE3OjEzLjAw MDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3ZtODYuYwkyMDA3LTEwLTExIDE5OjE3 OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMzgxLDcgKzM4MSw3IEBACiAgICAgfQogfQogCi1pbnQg ZG9fdm04NihDUFVYODZTdGF0ZSAqZW52LCBsb25nIHN1YmZ1bmN0aW9uLCB0YXJnZXRfdWxvbmcg dm04Nl9hZGRyKQoraW50IGRvX3ZtODYoQ1BVWDg2U3RhdGUgKmVudiwgbG9uZyBzdWJmdW5jdGlv biwgYWJpX3Vsb25nIHZtODZfYWRkcikKIHsKICAgICBUYXNrU3RhdGUgKnRzID0gZW52LT5vcGFx dWU7CiAgICAgc3RydWN0IHRhcmdldF92bTg2cGx1c19zdHJ1Y3QgKiB0YXJnZXRfdjg2OwpJbmRl eDogcWVtdS9saW51eC11c2VyL3g4Nl82NC9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5v cmlnL2xpbnV4LXVzZXIveDg2XzY0L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAw MDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3g4Nl82NC9zeXNjYWxsLmgJMjAwNy0xMC0x MSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTIsMzAgKzIsMzAgQEAKICNkZWZpbmUgX19V U0VSX0RTCSgweDJCKQogCiBzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgewotCXRhcmdldF91bG9uZyBy MTU7Ci0JdGFyZ2V0X3Vsb25nIHIxNDsKLQl0YXJnZXRfdWxvbmcgcjEzOwotCXRhcmdldF91bG9u ZyByMTI7Ci0JdGFyZ2V0X3Vsb25nIHJicDsKLQl0YXJnZXRfdWxvbmcgcmJ4OworCWFiaV91bG9u ZyByMTU7CisJYWJpX3Vsb25nIHIxNDsKKwlhYmlfdWxvbmcgcjEzOworCWFiaV91bG9uZyByMTI7 CisJYWJpX3Vsb25nIHJicDsKKwlhYmlfdWxvbmcgcmJ4OwogLyogYXJndW1lbnRzOiBub24gaW50 ZXJydXB0cy9ub24gdHJhY2luZyBzeXNjYWxscyBvbmx5IHNhdmUgdXB0byBoZXJlKi8KLSAJdGFy Z2V0X3Vsb25nIHIxMTsKLQl0YXJnZXRfdWxvbmcgcjEwOwotCXRhcmdldF91bG9uZyByOTsKLQl0 YXJnZXRfdWxvbmcgcjg7Ci0JdGFyZ2V0X3Vsb25nIHJheDsKLQl0YXJnZXRfdWxvbmcgcmN4Owot CXRhcmdldF91bG9uZyByZHg7Ci0JdGFyZ2V0X3Vsb25nIHJzaTsKLQl0YXJnZXRfdWxvbmcgcmRp OwotCXRhcmdldF91bG9uZyBvcmlnX3JheDsKKyAJYWJpX3Vsb25nIHIxMTsKKwlhYmlfdWxvbmcg cjEwOworCWFiaV91bG9uZyByOTsKKwlhYmlfdWxvbmcgcjg7CisJYWJpX3Vsb25nIHJheDsKKwlh YmlfdWxvbmcgcmN4OworCWFiaV91bG9uZyByZHg7CisJYWJpX3Vsb25nIHJzaTsKKwlhYmlfdWxv bmcgcmRpOworCWFiaV91bG9uZyBvcmlnX3JheDsKIC8qIGVuZCBvZiBhcmd1bWVudHMgKi8KIC8q IGNwdSBleGNlcHRpb24gZnJhbWUgb3IgdW5kZWZpbmVkICovCi0JdGFyZ2V0X3Vsb25nIHJpcDsK LQl0YXJnZXRfdWxvbmcgY3M7Ci0JdGFyZ2V0X3Vsb25nIGVmbGFnczsKLQl0YXJnZXRfdWxvbmcg cnNwOwotCXRhcmdldF91bG9uZyBzczsKKwlhYmlfdWxvbmcgcmlwOworCWFiaV91bG9uZyBjczsK KwlhYmlfdWxvbmcgZWZsYWdzOworCWFiaV91bG9uZyByc3A7CisJYWJpX3Vsb25nIHNzOwogLyog dG9wIG9mIHN0YWNrIHBhZ2UgKi8KIH07CiAKQEAgLTQxLDcgKzQxLDcgQEAKICNpZiAwIC8vIFJl ZGVmaW5lIHRoaXMKIHN0cnVjdCB0YXJnZXRfbW9kaWZ5X2xkdF9sZHRfcyB7CiAJdW5zaWduZWQg aW50ICBlbnRyeV9udW1iZXI7Ci0JdGFyZ2V0X3Vsb25nICBiYXNlX2FkZHI7CisJYWJpX3Vsb25n ICBiYXNlX2FkZHI7CiAJdW5zaWduZWQgaW50ICBsaW1pdDsKIAl1bnNpZ25lZCBpbnQgIHNlZ18z MmJpdDoxOwogCXVuc2lnbmVkIGludCAgY29udGVudHM6MjsKQEAgLTU0LDcgKzU0LDcgQEAKICNl bHNlCiBzdHJ1Y3QgdGFyZ2V0X21vZGlmeV9sZHRfbGR0X3MgewogCXVuc2lnbmVkIGludCAgZW50 cnlfbnVtYmVyOwotCXRhcmdldF91bG9uZyAgYmFzZV9hZGRyOworCWFiaV91bG9uZyAgYmFzZV9h ZGRyOwogCXVuc2lnbmVkIGludCAgbGltaXQ7CiAgICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsK IH07CkBAIC03MSw4ICs3MSw4IEBACiAJdW5zaWduZWQgc2hvcnQJCV9fcGFkMTsKIAl1bnNpZ25l ZCBzaG9ydAkJc2VxOwogCXVuc2lnbmVkIHNob3J0CQlfX3BhZDI7Ci0JdGFyZ2V0X3Vsb25nCQlf X3VudXNlZDE7Ci0JdGFyZ2V0X3Vsb25nCQlfX3VudXNlZDI7CisJYWJpX3Vsb25nCQlfX3VudXNl ZDE7CisJYWJpX3Vsb25nCQlfX3VudXNlZDI7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X21zcWlkNjRf ZHMgewpAQCAtODAsMTMgKzgwLDEzIEBACiAJdW5zaWduZWQgaW50IG1zZ19zdGltZTsJLyogbGFz dCBtc2dzbmQgdGltZSAqLwogCXVuc2lnbmVkIGludCBtc2dfcnRpbWU7CS8qIGxhc3QgbXNncmN2 IHRpbWUgKi8KIAl1bnNpZ25lZCBpbnQgbXNnX2N0aW1lOwkvKiBsYXN0IGNoYW5nZSB0aW1lICov Ci0JdGFyZ2V0X3Vsb25nICBtc2dfY2J5dGVzOwkvKiBjdXJyZW50IG51bWJlciBvZiBieXRlcyBv biBxdWV1ZSAqLwotCXRhcmdldF91bG9uZyAgbXNnX3FudW07CS8qIG51bWJlciBvZiBtZXNzYWdl cyBpbiBxdWV1ZSAqLwotCXRhcmdldF91bG9uZyAgbXNnX3FieXRlczsJLyogbWF4IG51bWJlciBv ZiBieXRlcyBvbiBxdWV1ZSAqLworCWFiaV91bG9uZyAgbXNnX2NieXRlczsJLyogY3VycmVudCBu dW1iZXIgb2YgYnl0ZXMgb24gcXVldWUgKi8KKwlhYmlfdWxvbmcgIG1zZ19xbnVtOwkvKiBudW1i ZXIgb2YgbWVzc2FnZXMgaW4gcXVldWUgKi8KKwlhYmlfdWxvbmcgIG1zZ19xYnl0ZXM7CS8qIG1h eCBudW1iZXIgb2YgYnl0ZXMgb24gcXVldWUgKi8KIAl1bnNpZ25lZCBpbnQgbXNnX2xzcGlkOwkv KiBwaWQgb2YgbGFzdCBtc2dzbmQgKi8KIAl1bnNpZ25lZCBpbnQgbXNnX2xycGlkOwkvKiBsYXN0 IHJlY2VpdmUgcGlkICovCi0JdGFyZ2V0X3Vsb25nICBfX3VudXNlZDQ7Ci0JdGFyZ2V0X3Vsb25n ICBfX3VudXNlZDU7CisJYWJpX3Vsb25nICBfX3VudXNlZDQ7CisJYWJpX3Vsb25nICBfX3VudXNl ZDU7CiB9OwogCiAjZGVmaW5lIFVOQU1FX01BQ0hJTkUgIng4Nl82NCIKSW5kZXg6IHFlbXUvbGlu dXgtdXNlci94ODZfNjQvdGFyZ2V0X3NpZ25hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9s aW51eC11c2VyL3g4Nl82NC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAw MDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci94ODZfNjQvdGFyZ2V0X3NpZ25hbC5oCTIw MDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02LDkgKzYsOSBAQAogLyogdGhp cyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5c2NhbGwgaGFuZGxpbmcgKi8K IAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKLQl0YXJnZXRfdWxvbmcgc3Nf c3A7Ci0JdGFyZ2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NpemU7CisJYWJp X3Vsb25nIHNzX3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFiaV91bG9uZyBzc19zaXplOwog fSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3IEBACiAjZGVmaW5lIFRBUkdFVF9N SU5TSUdTVEtTWgkyMDQ4CiAjZGVmaW5lIFRBUkdFVF9TSUdTVEtTWgkJODE5MgogCi1zdGF0aWMg aW5saW5lIHRhcmdldF91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVYODZTdGF0ZSAqc3Rh dGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVYODZT dGF0ZSAqc3RhdGUpCiB7CiAgICAgcmV0dXJuIHN0YXRlLT5yZWdzW1JfRVNQXTsKIH0KSW5kZXg6 IHFlbXUvbGludXgtdXNlci9hcm0vc3lzY2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9s aW51eC11c2VyL2FybS9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzoxMy4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvbGludXgtdXNlci9hcm0vc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYu MDAwMDAwMDAwICswMDAwCkBAIC0zLDcgKzMsNyBAQAogICAgc3RhY2sgZHVyaW5nIGEgc3lzdGVt IGNhbGwuICovCiAKIHN0cnVjdCB0YXJnZXRfcHRfcmVncyB7Ci0gICAgdGFyZ2V0X2xvbmcgdXJl Z3NbMThdOworICAgIGFiaV9sb25nIHVyZWdzWzE4XTsKIH07CiAKICNkZWZpbmUgQVJNX2Nwc3IJ dXJlZ3NbMTZdCkluZGV4OiBxZW11L2NvbmZpZ3VyZQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcv Y29uZmlndXJlCTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2Nv bmZpZ3VyZQkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNTAwLDExICs1 MDAsMTEgQEAKIGlmIHRlc3QgLXogIiR0YXJnZXRfbGlzdCIgOyB0aGVuCiAjIHRoZXNlIHRhcmdl dHMgYXJlIHBvcnRhYmxlCiAgICAgaWYgWyAiJHNvZnRtbXUiID0gInllcyIgXSA7IHRoZW4KLSAg ICAgICAgdGFyZ2V0X2xpc3Q9ImkzODYtc29mdG1tdSBwcGMtc29mdG1tdSBzcGFyYy1zb2Z0bW11 IHg4Nl82NC1zb2Z0bW11IG1pcHMtc29mdG1tdSBtaXBzZWwtc29mdG1tdSBtaXBzNjQtc29mdG1t dSBtaXBzNjRlbC1zb2Z0bW11IGFybS1zb2Z0bW11IHBwYzY0LXNvZnRtbXUgcHBjZW1iLXNvZnRt bXUgbTY4ay1zb2Z0bW11IHNoNC1zb2Z0bW11IGNyaXMtc29mdG1tdSIKKyAgICAgICAgdGFyZ2V0 X2xpc3Q9ImkzODYtc29mdG1tdSBwcGMtc29mdG1tdSBzcGFyYy1zb2Z0bW11IHNwYXJjNjQtc29m dG1tdSB4ODZfNjQtc29mdG1tdSBtaXBzLXNvZnRtbXUgbWlwc2VsLXNvZnRtbXUgbWlwczY0LXNv ZnRtbXUgbWlwczY0ZWwtc29mdG1tdSBhcm0tc29mdG1tdSBwcGM2NC1zb2Z0bW11IHBwY2VtYi1z b2Z0bW11IG02OGstc29mdG1tdSBzaDQtc29mdG1tdSBjcmlzLXNvZnRtbXUiCiAgICAgZmkKICMg dGhlIGZvbGxvd2luZyBhcmUgTGludXggc3BlY2lmaWMKICAgICBpZiBbICIkbGludXhfdXNlciIg PSAieWVzIiBdIDsgdGhlbgotICAgICAgICB0YXJnZXRfbGlzdD0iaTM4Ni1saW51eC11c2VyIGFy bS1saW51eC11c2VyIGFybWViLWxpbnV4LXVzZXIgc3BhcmMtbGludXgtdXNlciBwcGMtbGludXgt dXNlciBtaXBzLWxpbnV4LXVzZXIgbWlwc2VsLWxpbnV4LXVzZXIgbTY4ay1saW51eC11c2VyIGFs cGhhLWxpbnV4LXVzZXIgcHBjNjQtbGludXgtdXNlciBzaDQtbGludXgtdXNlciBjcmlzLWxpbnV4 LXVzZXIgJHRhcmdldF9saXN0IgorICAgICAgICB0YXJnZXRfbGlzdD0iaTM4Ni1saW51eC11c2Vy IGFybS1saW51eC11c2VyIGFybWViLWxpbnV4LXVzZXIgc3BhcmMtbGludXgtdXNlciBzcGFyYzY0 LWxpbnV4LXVzZXIgc3BhcmMzMnBsdXMtbGludXgtdXNlciBwcGMtbGludXgtdXNlciBtaXBzLWxp bnV4LXVzZXIgbWlwc2VsLWxpbnV4LXVzZXIgbTY4ay1saW51eC11c2VyIGFscGhhLWxpbnV4LXVz ZXIgcHBjNjQtbGludXgtdXNlciBzaDQtbGludXgtdXNlciBjcmlzLWxpbnV4LXVzZXIgJHRhcmdl dF9saXN0IgogICAgIGZpCiAjIHRoZSBmb2xsb3dpbmcgYXJlIERhcndpbiBzcGVjaWZpYwogICAg IGlmIFsgIiRkYXJ3aW5fdXNlciIgPSAieWVzIiBdIDsgdGhlbgpAQCAtOTMzLDYgKzkzMyw3IEBA CiBbICIkdGFyZ2V0X2NwdSIgPSAiYXJtZWIiIF0gJiYgdGFyZ2V0X2JpZ2VuZGlhbj15ZXMKIFsg IiR0YXJnZXRfY3B1IiA9ICJzcGFyYyIgXSAmJiB0YXJnZXRfYmlnZW5kaWFuPXllcwogWyAiJHRh cmdldF9jcHUiID0gInNwYXJjNjQiIF0gJiYgdGFyZ2V0X2JpZ2VuZGlhbj15ZXMKK1sgIiR0YXJn ZXRfY3B1IiA9ICJzcGFyYzMycGx1cyIgXSAmJiB0YXJnZXRfYmlnZW5kaWFuPXllcwogWyAiJHRh cmdldF9jcHUiID0gInBwYyIgXSAmJiB0YXJnZXRfYmlnZW5kaWFuPXllcwogWyAiJHRhcmdldF9j cHUiID0gInBwYzY0IiBdICYmIHRhcmdldF9iaWdlbmRpYW49eWVzCiBbICIkdGFyZ2V0X2NwdSIg PSAicHBjZW1iIiBdICYmIHRhcmdldF9iaWdlbmRpYW49eWVzCkBAIC0xMDI1LDYgKzEwMjYsMTMg QEAKICAgZWNobyAiI2RlZmluZSBUQVJHRVRfU1BBUkMgMSIgPj4gJGNvbmZpZ19oCiAgIGVjaG8g IiNkZWZpbmUgVEFSR0VUX1NQQVJDNjQgMSIgPj4gJGNvbmZpZ19oCiAgIGVsZmxvYWQzMj0ieWVz IgorZWxpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAic3BhcmMzMnBsdXMiIDsgdGhlbgorICBlY2hv ICJUQVJHRVRfQVJDSD1zcGFyYzY0IiA+PiAkY29uZmlnX21haworICBlY2hvICJUQVJHRVRfQUJJ MzJfRElSPXNwYXJjIiA+PiAkY29uZmlnX21haworICBlY2hvICIjZGVmaW5lIFRBUkdFVF9BUkNI IFwic3BhcmM2NFwiIiA+PiAkY29uZmlnX2gKKyAgZWNobyAiI2RlZmluZSBUQVJHRVRfU1BBUkMg MSIgPj4gJGNvbmZpZ19oCisgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX1NQQVJDNjQgMSIgPj4gJGNv bmZpZ19oCisgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX0FCSTMyIDEiID4+ICRjb25maWdfaAogZWxp ZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAicHBjIiA7IHRoZW4KICAgZWNobyAiVEFSR0VUX0FSQ0g9 cHBjIiA+PiAkY29uZmlnX21hawogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9BUkNIIFwicHBjXCIi ID4+ICRjb25maWdfaApAQCAtMTEwNiw3ICsxMTE0LDcgQEAKICAgZWNobyAiI2RlZmluZSBDT05G SUdfREFSV0lOX1VTRVIgMSIgPj4gJGNvbmZpZ19oCiBmaQogCi1pZiB0ZXN0ICIkdGFyZ2V0X2Nw dSIgPSAiYXJtIiAtbyAiJHRhcmdldF9jcHUiID0gImFybWViIiAtbyAiJHRhcmdldF9jcHUiID0g InNwYXJjIiAtbyAiJHRhcmdldF9jcHUiID0gInNwYXJjNjQiIC1vICIkdGFyZ2V0X2NwdSIgPSAi bTY4ayIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzIiAtbyAiJHRhcmdldF9jcHUiID0gIm1pcHNl bCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzbjMyIiAtbyAiJHRhcmdldF9jcHUiID0gIm1pcHNu MzJlbCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzNjQiIC1vICIkdGFyZ2V0X2NwdSIgPSAibWlw czY0ZWwiOyB0aGVuCitpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAiYXJtIiAtbyAiJHRhcmdldF9j cHUiID0gImFybWViIiAtbyAiJHRhcmdldF9jcHUiID0gInNwYXJjIiAtbyAiJHRhcmdldF9jcHUi ID0gInNwYXJjNjQiICAtbyAiJHRhcmdldF9jcHUiID0gInNwYXJjMzJwbHVzIiAtbyAiJHRhcmdl dF9jcHUiID0gIm02OGsiIC1vICIkdGFyZ2V0X2NwdSIgPSAibWlwcyIgLW8gIiR0YXJnZXRfY3B1 IiA9ICJtaXBzZWwiIC1vICIkdGFyZ2V0X2NwdSIgPSAibWlwc24zMiIgLW8gIiR0YXJnZXRfY3B1 IiA9ICJtaXBzbjMyZWwiIC1vICIkdGFyZ2V0X2NwdSIgPSAibWlwczY0IiAtbyAiJHRhcmdldF9j cHUiID0gIm1pcHM2NGVsIjsgdGhlbgogICBlY2hvICJDT05GSUdfU09GVEZMT0FUPXllcyIgPj4g JGNvbmZpZ19tYWsKICAgZWNobyAiI2RlZmluZSBDT05GSUdfU09GVEZMT0FUIDEiID4+ICRjb25m aWdfaAogZmkKSW5kZXg6IHFlbXUvdGh1bmsuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdGh1 bmsuYwkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS90aHVuay5j CTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC0xMzYsMTMgKzEzNiwxMyBA QAogICAgIGNhc2UgVFlQRV9VTE9OR0xPTkc6CiAgICAgICAgICoodWludDY0X3QgKilkc3QgPSB0 c3dhcDY0KCoodWludDY0X3QgKilzcmMpOwogICAgICAgICBicmVhazsKLSNpZiBIT1NUX0xPTkdf QklUUyA9PSAzMiAmJiBUQVJHRVRfTE9OR19CSVRTID09IDMyCisjaWYgSE9TVF9MT05HX0JJVFMg PT0gMzIgJiYgVEFSR0VUX0FCSV9CSVRTID09IDMyCiAgICAgY2FzZSBUWVBFX0xPTkc6CiAgICAg Y2FzZSBUWVBFX1VMT05HOgogICAgIGNhc2UgVFlQRV9QVFJWT0lEOgogICAgICAgICAqKHVpbnQz Ml90ICopZHN0ID0gdHN3YXAzMigqKHVpbnQzMl90ICopc3JjKTsKICAgICAgICAgYnJlYWs7Ci0j ZWxpZiBIT1NUX0xPTkdfQklUUyA9PSA2NCAmJiBUQVJHRVRfTE9OR19CSVRTID09IDMyCisjZWxp ZiBIT1NUX0xPTkdfQklUUyA9PSA2NCAmJiBUQVJHRVRfQUJJX0JJVFMgPT0gMzIKICAgICBjYXNl IFRZUEVfTE9ORzoKICAgICBjYXNlIFRZUEVfVUxPTkc6CiAgICAgY2FzZSBUWVBFX1BUUlZPSUQ6 CkluZGV4OiBxZW11L3RodW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3RodW5rLmgJMjAw Ny0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdGh1bmsuaAkyMDA3LTEw LTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtOTgsNyArOTgsNyBAQAogICAgICAgICBp ZiAoaXNfaG9zdCkgewogICAgICAgICAgICAgcmV0dXJuIEhPU1RfTE9OR19TSVpFOwogICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIFRBUkdFVF9MT05HX1NJWkU7CisgICAgICAg ICAgICByZXR1cm4gVEFSR0VUX0FCSV9CSVRTIC8gODsKICAgICAgICAgfQogICAgICAgICBicmVh azsKICAgICBjYXNlIFRZUEVfQVJSQVk6CkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAgICAgaWYg KGlzX2hvc3QpIHsKICAgICAgICAgICAgIHJldHVybiBIT1NUX0xPTkdfU0laRTsKICAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBUQVJHRVRfTE9OR19TSVpFOworICAgICAgICAg ICAgcmV0dXJuIFRBUkdFVF9BQklfQklUUyAvIDg7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSBUWVBFX0FSUkFZOgpJbmRleDogcWVtdS9NYWtlZmlsZS50YXJnZXQKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcWVtdS5vcmlnL01ha2VmaWxlLnRhcmdldAkyMDA3LTEwLTExIDE5OjE3OjE0LjAw MDAwMDAwMCArMDAwMAorKysgcWVtdS9NYWtlZmlsZS50YXJnZXQJMjAwNy0xMC0xMSAxOToxNzo0 Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTI4LDggKzI4LDEyIEBACiBlbmRpZgogaWZkZWYgQ09ORklH X0xJTlVYX1VTRVIKIFZQQVRIKz06JChTUkNfUEFUSCkvbGludXgtdXNlcgoraWZkZWYgVEFSR0VU X0FCSTMyX0RJUgorQ1BQRkxBR1MrPS1JJChTUkNfUEFUSCkvbGludXgtdXNlciAtSSQoU1JDX1BB VEgpL2xpbnV4LXVzZXIvJChUQVJHRVRfQUJJMzJfRElSKQorZWxzZQogQ1BQRkxBR1MrPS1JJChT UkNfUEFUSCkvbGludXgtdXNlciAtSSQoU1JDX1BBVEgpL2xpbnV4LXVzZXIvJChUQVJHRVRfQVJD SCkKIGVuZGlmCitlbmRpZgogQkFTRV9DRkxBR1M9CiBCQVNFX0xERkxBR1M9CiAjQ0ZMQUdTKz0t V2Vycm9yCg== ------=_Part_21072_23414610.1192130799073--