From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IgNGo-0003HG-BQ for qemu-devel@nongnu.org; Fri, 12 Oct 2007 12:21:50 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IgNGk-0003Du-G6 for qemu-devel@nongnu.org; Fri, 12 Oct 2007 12:21:48 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IgNGk-0003DT-1P for qemu-devel@nongnu.org; Fri, 12 Oct 2007 12:21:46 -0400 Received: from ug-out-1314.google.com ([66.249.92.168]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IgNGi-0005pv-0I for qemu-devel@nongnu.org; Fri, 12 Oct 2007 12:21:46 -0400 Received: by ug-out-1314.google.com with SMTP id m2so588258uge for ; Fri, 12 Oct 2007 09:21:42 -0700 (PDT) Message-ID: Date: Fri, 12 Oct 2007 19:21:41 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] RFC: fix run of 32 bits Linux executables on 64 bits targets In-Reply-To: <1192140040.9976.235.camel@rapid> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_26251_7653532.1192206102075" References: <1192002128.9976.186.camel@rapid> <470C8AD9.6000002@bellard.org> <20071010174906.GC3379@networkno.de> <470D1C9A.2000505@bellard.org> <1192140040.9976.235.camel@rapid> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "J. Mayer" Cc: qemu-devel@nongnu.org ------=_Part_26251_7653532.1192206102075 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/12/07, J. Mayer wrote: > On Thu, 2007-10-11 at 22:26 +0300, Blue Swirl wrote: > > 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? > > Great ! > The patch seems safe, at first look, then I noticed a few things that > are not correct or may be improved: > * In linux-user/main.c: PowerPC DCR access should keep using > target_ulong. This is a hardware bus, not an ABI dependent stuff. If a > 32 bits cast is needed, it would be done in the micro-ops that handle > the DCR bus accesses. > * in linux-user/qemu.h: why is there still a OVERRIDE_ELF_CLASS > variable, when checking TARGET_ABI32 should be sufficient ? It seems to > me that having 2 defines which are, in fact, synonymous may be a source > of confusion. > * in configure: you also added a sparc64-softmmu target, which seems not > related with this particular patch. > * in configure: why add a specific TARGET_ABI32_DIR variable for that > case ? It seems to me that a TARGET_ABI_DIR variable could be useful for > all targets. Let me give an example: I want to add a ppcemb-linux-user > target, emulating a PowerPC 32 with 64 bits registers and SIMD > extensions but I don't want to duplicate the linux-user/ppc > subdirectory. Having a TARGET_ABI_DIR available for all targets would > solve my problem. In fact, even ppc and ppc64 could be merged... As you > need this feature in your case, I think it would be a good idea to add > it for all targets. And then, the kludge in Makefile.target could be > replaced by: > -CPPFLAGS+=-I$(SRC_PATH)/linux-user -I > $(SRC_PATH)/linux-user/$(TARGET_ARCH) > +CPPFLAGS+=-I$(SRC_PATH)/linux-user -I > $(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) > which is simpler and easier to understand, imho. Thanks, I updated the patch to reflect your comments. Is the ppcemb part correct or should just use existing values? ------=_Part_26251_7653532.1192206102075 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_f7owou11 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 LTEyIDE1OjQzOjA2LjAwMDAwMDAwMCArMDAwMApAQCAtMTcyLDcgKzE3Miw3IEBACiAKIHN0YXRp 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 OwogICAgIF9yZWdzLT5ncHJbNV0gPSBwb3M7CiB9CkBAIC00NzUsOSArNDg1LDkgQEAKICNkZWZp bmUgRUxGX0hXQ0FQIDAKICNlbmRpZgogCi0jaWZkZWYgT1ZFUlJJREVfRUxGX0NMQVNTCisjaWZk ZWYgVEFSR0VUX0FCSTMyCiAjdW5kZWYgRUxGX0NMQVNTCi0jZGVmaW5lIEVMRl9DTEFTUyBPVkVS UklERV9FTEZfQ0xBU1MKKyNkZWZpbmUgRUxGX0NMQVNTIEVMRkNMQVNTMzIKICN1bmRlZiBic3dh cHRscwogI2RlZmluZSBic3dhcHRscyhwdHIpIGJzd2FwMzJzKHB0cikKICNlbmRpZgpAQCAtNTg4 LDggKzU5OCw4IEBACiAgKiB0byBiZSBwdXQgZGlyZWN0bHkgaW50byB0aGUgdG9wIG9mIG5ldyB1 c2VyIG1lbW9yeS4KICAqCiAgKi8KLXN0YXRpYyB0YXJnZXRfdWxvbmcgY29weV9lbGZfc3RyaW5n cyhpbnQgYXJnYyxjaGFyICoqIGFyZ3YsIHZvaWQgKipwYWdlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBwKQorc3RhdGljIGFiaV91bG9uZyBjb3B5 X2VsZl9zdHJpbmdzKGludCBhcmdjLGNoYXIgKiogYXJndiwgdm9pZCAqKnBhZ2UsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHApCiB7CiAgICAgY2hhciAqdG1w LCAqdG1wMSwgKnBhZyA9IE5VTEw7CiAgICAgaW50IGxlbiwgb2Zmc2V0ID0gMDsKQEAgLTYzOCwx MCArNjQ4LDEwIEBACiAgICAgcmV0dXJuIHA7CiB9CiAKLXN0YXRpYyB0YXJnZXRfdWxvbmcgc2V0 dXBfYXJnX3BhZ2VzKHRhcmdldF91bG9uZyBwLCBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGltYWdlX2luZm8gKmlu Zm8pCitzdGF0aWMgYWJpX3Vsb25nIHNldHVwX2FyZ19wYWdlcyhhYmlfdWxvbmcgcCwgc3RydWN0 IGxpbnV4X2JpbnBybSAqYnBybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBpbWFnZV9pbmZvICppbmZvKQogewotICAgIHRhcmdldF91bG9uZyBzdGFja19iYXNlLCBz aXplLCBlcnJvcjsKKyAgICBhYmlfdWxvbmcgc3RhY2tfYmFzZSwgc2l6ZSwgZXJyb3I7CiAgICAg aW50IGk7CiAKICAgICAvKiBDcmVhdGUgZW5vdWdoIHN0YWNrIHRvIGhvbGQgZXZlcnl0aGluZy4g IElmIHdlIGRvbid0IHVzZQpAQCAtNjc3LDcgKzY4Nyw3IEBACiAgICAgcmV0dXJuIHA7CiB9CiAK LXN0YXRpYyB2b2lkIHNldF9icmsodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcgZW5k KQorc3RhdGljIHZvaWQgc2V0X2JyayhhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBlbmQpCiB7 CiAJLyogcGFnZS1hbGlnbiB0aGUgc3RhcnQgYW5kIGVuZCBhZGRyZXNzZXMuLi4gKi8KICAgICAg ICAgc3RhcnQgPSBIT1NUX1BBR0VfQUxJR04oc3RhcnQpOwpAQCAtNjk2LDkgKzcwNiw5IEBACiAv KiBXZSBuZWVkIHRvIGV4cGxpY2l0bHkgemVybyBhbnkgZnJhY3Rpb25hbCBwYWdlcyBhZnRlciB0 aGUgZGF0YQogICAgc2VjdGlvbiAoaS5lLiBic3MpLiAgVGhpcyB3b3VsZCBjb250YWluIHRoZSBq dW5rIGZyb20gdGhlIGZpbGUgdGhhdAogICAgc2hvdWxkIG5vdCBiZSBpbiBtZW1vcnkuICovCi1z dGF0aWMgdm9pZCBwYWR6ZXJvKHRhcmdldF91bG9uZyBlbGZfYnNzLCB0YXJnZXRfdWxvbmcgbGFz dF9ic3MpCitzdGF0aWMgdm9pZCBwYWR6ZXJvKGFiaV91bG9uZyBlbGZfYnNzLCBhYmlfdWxvbmcg bGFzdF9ic3MpCiB7Ci0gICAgICAgIHRhcmdldF91bG9uZyBuYnl0ZTsKKyAgICAgICAgYWJpX3Vs b25nIG5ieXRlOwogCiAJaWYgKGVsZl9ic3MgPj0gbGFzdF9ic3MpCiAJCXJldHVybjsKQEAgLTcw OSw3ICs3MTksNyBAQAogICAgICAgICAgICBwYXRjaCB0YXJnZXRfbW1hcCgpLCBidXQgaXQgaXMg bW9yZSBjb21wbGljYXRlZCBhcyB0aGUgZmlsZQogICAgICAgICAgICBzaXplIG11c3QgYmUga25v d24gKi8KICAgICAgICAgaWYgKHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSA8IHFlbXVfaG9zdF9w YWdlX3NpemUpIHsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBlbmRfYWRkciwgZW5kX2FkZHIx OworICAgICAgICAgICAgYWJpX3Vsb25nIGVuZF9hZGRyLCBlbmRfYWRkcjE7CiAgICAgICAgICAg ICBlbmRfYWRkcjEgPSAoZWxmX2JzcyArIHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSAtIDEpICYK ICAgICAgICAgICAgICAgICB+KHFlbXVfcmVhbF9ob3N0X3BhZ2Vfc2l6ZSAtIDEpOwogICAgICAg ICAgICAgZW5kX2FkZHIgPSBIT1NUX1BBR0VfQUxJR04oZWxmX2Jzcyk7CkBAIC03MzEsMTYgKzc0 MSwxNiBAQAogfQogCiAKLXN0YXRpYyB0YXJnZXRfdWxvbmcgY3JlYXRlX2VsZl90YWJsZXModGFy Z2V0X3Vsb25nIHAsIGludCBhcmdjLCBpbnQgZW52YywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGVsZmhkciAqIGV4ZWMsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBsb2FkX2FkZHIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBsb2FkX2JpYXMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBpbnRlcnBfbG9hZF9h ZGRyLCBpbnQgaWJjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGltYWdlX2luZm8gKmluZm8pCitzdGF0aWMgYWJpX3Vsb25nIGNyZWF0ZV9lbGZfdGFibGVz KGFiaV91bG9uZyBwLCBpbnQgYXJnYywgaW50IGVudmMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBlbGZoZHIgKiBleGVjLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgbG9hZF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgbG9hZF9iaWFzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgaW50ZXJwX2xvYWRfYWRkciwgaW50IGliY3MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbWFnZV9pbmZvICppbmZvKQog ewotICAgICAgICB0YXJnZXRfdWxvbmcgc3A7CisgICAgICAgIGFiaV91bG9uZyBzcDsKICAgICAg ICAgaW50IHNpemU7Ci0gICAgICAgIHRhcmdldF91bG9uZyB1X3BsYXRmb3JtOworICAgICAgICBh YmlfdWxvbmcgdV9wbGF0Zm9ybTsKICAgICAgICAgY29uc3QgY2hhciAqa19wbGF0Zm9ybTsKICAg ICAgICAgY29uc3QgaW50IG4gPSBzaXplb2YoZWxmX2FkZHJfdCk7CiAKQEAgLTc1Niw3ICs3NjYs NyBAQAogCS8qCiAJICogRm9yY2UgMTYgYnl0ZSBfZmluYWxfIGFsaWdubWVudCBoZXJlIGZvciBn ZW5lcmFsaXR5LgogCSAqLwotICAgICAgICBzcCA9IHNwICZ+ICh0YXJnZXRfdWxvbmcpMTU7Cisg ICAgICAgIHNwID0gc3AgJn4gKGFiaV91bG9uZykxNTsKICAgICAgICAgc2l6ZSA9IChETElORk9f SVRFTVMgKyAxKSAqIDI7CiAgICAgICAgIGlmIChrX3BsYXRmb3JtKQogICAgICAgICAgIHNpemUg Kz0gMjsKQEAgLTc4NiwxOCArNzk2LDE4IEBACiAgICAgICAgIE5FV19BVVhfRU5UIChBVF9OVUxM LCAwKTsKIAogICAgICAgICAvKiBUaGVyZSBtdXN0IGJlIGV4YWN0bHkgRExJTkZPX0lURU1TIGVu dHJpZXMgaGVyZS4gICovCi0gICAgICAgIE5FV19BVVhfRU5UKEFUX1BIRFIsICh0YXJnZXRfdWxv bmcpKGxvYWRfYWRkciArIGV4ZWMtPmVfcGhvZmYpKTsKLSAgICAgICAgTkVXX0FVWF9FTlQoQVRf UEhFTlQsICh0YXJnZXRfdWxvbmcpKHNpemVvZiAoc3RydWN0IGVsZl9waGRyKSkpOwotICAgICAg ICBORVdfQVVYX0VOVChBVF9QSE5VTSwgKHRhcmdldF91bG9uZykoZXhlYy0+ZV9waG51bSkpOwot ICAgICAgICBORVdfQVVYX0VOVChBVF9QQUdFU1osICh0YXJnZXRfdWxvbmcpKFRBUkdFVF9QQUdF X1NJWkUpKTsKLSAgICAgICAgTkVXX0FVWF9FTlQoQVRfQkFTRSwgKHRhcmdldF91bG9uZykoaW50 ZXJwX2xvYWRfYWRkcikpOwotICAgICAgICBORVdfQVVYX0VOVChBVF9GTEFHUywgKHRhcmdldF91 bG9uZykwKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfUEhEUiwgKGFiaV91bG9uZykobG9hZF9h ZGRyICsgZXhlYy0+ZV9waG9mZikpOworICAgICAgICBORVdfQVVYX0VOVChBVF9QSEVOVCwgKGFi aV91bG9uZykoc2l6ZW9mIChzdHJ1Y3QgZWxmX3BoZHIpKSk7CisgICAgICAgIE5FV19BVVhfRU5U KEFUX1BITlVNLCAoYWJpX3Vsb25nKShleGVjLT5lX3BobnVtKSk7CisgICAgICAgIE5FV19BVVhf RU5UKEFUX1BBR0VTWiwgKGFiaV91bG9uZykoVEFSR0VUX1BBR0VfU0laRSkpOworICAgICAgICBO RVdfQVVYX0VOVChBVF9CQVNFLCAoYWJpX3Vsb25nKShpbnRlcnBfbG9hZF9hZGRyKSk7CisgICAg ICAgIE5FV19BVVhfRU5UKEFUX0ZMQUdTLCAoYWJpX3Vsb25nKTApOwogICAgICAgICBORVdfQVVY X0VOVChBVF9FTlRSWSwgbG9hZF9iaWFzICsgZXhlYy0+ZV9lbnRyeSk7Ci0gICAgICAgIE5FV19B VVhfRU5UKEFUX1VJRCwgKHRhcmdldF91bG9uZykgZ2V0dWlkKCkpOwotICAgICAgICBORVdfQVVY X0VOVChBVF9FVUlELCAodGFyZ2V0X3Vsb25nKSBnZXRldWlkKCkpOwotICAgICAgICBORVdfQVVY X0VOVChBVF9HSUQsICh0YXJnZXRfdWxvbmcpIGdldGdpZCgpKTsKLSAgICAgICAgTkVXX0FVWF9F TlQoQVRfRUdJRCwgKHRhcmdldF91bG9uZykgZ2V0ZWdpZCgpKTsKLSAgICAgICAgTkVXX0FVWF9F TlQoQVRfSFdDQVAsICh0YXJnZXRfdWxvbmcpIEVMRl9IV0NBUCk7CisgICAgICAgIE5FV19BVVhf RU5UKEFUX1VJRCwgKGFiaV91bG9uZykgZ2V0dWlkKCkpOworICAgICAgICBORVdfQVVYX0VOVChB VF9FVUlELCAoYWJpX3Vsb25nKSBnZXRldWlkKCkpOworICAgICAgICBORVdfQVVYX0VOVChBVF9H SUQsIChhYmlfdWxvbmcpIGdldGdpZCgpKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfRUdJRCwg KGFiaV91bG9uZykgZ2V0ZWdpZCgpKTsKKyAgICAgICAgTkVXX0FVWF9FTlQoQVRfSFdDQVAsIChh YmlfdWxvbmcpIEVMRl9IV0NBUCk7CiAgICAgICAgIGlmIChrX3BsYXRmb3JtKQogICAgICAgICAg ICAgTkVXX0FVWF9FTlQoQVRfUExBVEZPUk0sIHVfcGxhdGZvcm0pOwogI2lmZGVmIEFSQ0hfRExJ TkZPCkBAIC04MTQsMTcgKzgyNCwxNyBAQAogfQogCiAKLXN0YXRpYyB0YXJnZXRfdWxvbmcgbG9h ZF9lbGZfaW50ZXJwKHN0cnVjdCBlbGZoZHIgKiBpbnRlcnBfZWxmX2V4LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGludGVycHJldGVyX2ZkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nICppbnRlcnBfbG9hZF9hZGRyKQor c3RhdGljIGFiaV91bG9uZyBsb2FkX2VsZl9pbnRlcnAoc3RydWN0IGVsZmhkciAqIGludGVycF9l bGZfZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW50ZXJwcmV0ZXJf ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgKmludGVycF9s b2FkX2FkZHIpCiB7CiAJc3RydWN0IGVsZl9waGRyICplbGZfcGhkYXRhICA9ICBOVUxMOwogCXN0 cnVjdCBlbGZfcGhkciAqZXBwbnQ7Ci0JdGFyZ2V0X3Vsb25nIGxvYWRfYWRkciA9IDA7CisJYWJp X3Vsb25nIGxvYWRfYWRkciA9IDA7CiAJaW50IGxvYWRfYWRkcl9zZXQgPSAwOwogCWludCByZXR2 YWw7Ci0JdGFyZ2V0X3Vsb25nIGxhc3RfYnNzLCBlbGZfYnNzOwotCXRhcmdldF91bG9uZyBlcnJv cjsKKwlhYmlfdWxvbmcgbGFzdF9ic3MsIGVsZl9ic3M7CisJYWJpX3Vsb25nIGVycm9yOwogCWlu dCBpOwogCiAJZWxmX2JzcyA9IDA7CkBAIC04MzgsMjAgKzg0OCwyMCBAQAogCWlmICgoaW50ZXJw X2VsZl9leC0+ZV90eXBlICE9IEVUX0VYRUMgJiYKICAgICAgICAgICAgICBpbnRlcnBfZWxmX2V4 LT5lX3R5cGUgIT0gRVRfRFlOKSB8fAogCSAgICFlbGZfY2hlY2tfYXJjaChpbnRlcnBfZWxmX2V4 LT5lX21hY2hpbmUpKSB7Ci0JCXJldHVybiB+KCh0YXJnZXRfdWxvbmcpMFVMKTsKKwkJcmV0dXJu IH4oKGFiaV91bG9uZykwVUwpOwogCX0KIAogCiAJLyogTm93IHJlYWQgaW4gYWxsIG9mIHRoZSBo ZWFkZXIgaW5mb3JtYXRpb24gKi8KIAogCWlmIChzaXplb2Yoc3RydWN0IGVsZl9waGRyKSAqIGlu dGVycF9lbGZfZXgtPmVfcGhudW0gPiBUQVJHRVRfUEFHRV9TSVpFKQotCSAgICByZXR1cm4gfih0 YXJnZXRfdWxvbmcpMFVMOworCSAgICByZXR1cm4gfihhYmlfdWxvbmcpMFVMOwogCiAJZWxmX3Bo ZGF0YSA9ICAoc3RydWN0IGVsZl9waGRyICopCiAJCW1hbGxvYyhzaXplb2Yoc3RydWN0IGVsZl9w aGRyKSAqIGludGVycF9lbGZfZXgtPmVfcGhudW0pOwogCiAJaWYgKCFlbGZfcGhkYXRhKQotCSAg cmV0dXJuIH4oKHRhcmdldF91bG9uZykwVUwpOworCSAgcmV0dXJuIH4oKGFiaV91bG9uZykwVUwp OwogCiAJLyoKIAkgKiBJZiB0aGUgc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSBoYXMgY2hhbmdlZCwg dGhlbiBwdW50LCBzaW5jZQpAQCAtODU5LDcgKzg2OSw3IEBACiAJICovCiAJaWYgKGludGVycF9l bGZfZXgtPmVfcGhlbnRzaXplICE9IHNpemVvZihzdHJ1Y3QgZWxmX3BoZHIpKSB7CiAJICAgIGZy ZWUoZWxmX3BoZGF0YSk7Ci0JICAgIHJldHVybiB+KCh0YXJnZXRfdWxvbmcpMFVMKTsKKwkgICAg cmV0dXJuIH4oKGFiaV91bG9uZykwVUwpOwogICAgICAgICB9CiAKIAlyZXR2YWwgPSBsc2Vlayhp bnRlcnByZXRlcl9mZCwgaW50ZXJwX2VsZl9leC0+ZV9waG9mZiwgU0VFS19TRVQpOwpAQCAtOTAw LDggKzkxMCw4IEBACiAJICBpZiAoZXBwbnQtPnBfdHlwZSA9PSBQVF9MT0FEKSB7CiAJICAgIGlu dCBlbGZfdHlwZSA9IE1BUF9QUklWQVRFIHwgTUFQX0RFTllXUklURTsKIAkgICAgaW50IGVsZl9w cm90ID0gMDsKLQkgICAgdGFyZ2V0X3Vsb25nIHZhZGRyID0gMDsKLQkgICAgdGFyZ2V0X3Vsb25n IGs7CisJICAgIGFiaV91bG9uZyB2YWRkciA9IDA7CisJICAgIGFiaV91bG9uZyBrOwogCiAJICAg IGlmIChlcHBudC0+cF9mbGFncyAmIFBGX1IpIGVsZl9wcm90ID0gIFBST1RfUkVBRDsKIAkgICAg aWYgKGVwcG50LT5wX2ZsYWdzICYgUEZfVykgZWxmX3Byb3QgfD0gUFJPVF9XUklURTsKQEAgLTky MSw3ICs5MzEsNyBAQAogCSAgICAgIC8qIFJlYWwgZXJyb3IgKi8KIAkgICAgICBjbG9zZShpbnRl cnByZXRlcl9mZCk7CiAJICAgICAgZnJlZShlbGZfcGhkYXRhKTsKLQkgICAgICByZXR1cm4gfigo dGFyZ2V0X3Vsb25nKTBVTCk7CisJICAgICAgcmV0dXJuIH4oKGFiaV91bG9uZykwVUwpOwogCSAg ICB9CiAKIAkgICAgaWYgKCFsb2FkX2FkZHJfc2V0ICYmIGludGVycF9lbGZfZXgtPmVfdHlwZSA9 PSBFVF9EWU4pIHsKQEAgLTk2Niw3ICs5NzYsNyBAQAogCWZyZWUoZWxmX3BoZGF0YSk7CiAKIAkq aW50ZXJwX2xvYWRfYWRkciA9IGxvYWRfYWRkcjsKLQlyZXR1cm4gKCh0YXJnZXRfdWxvbmcpIGlu dGVycF9lbGZfZXgtPmVfZW50cnkpICsgbG9hZF9hZGRyOworCXJldHVybiAoKGFiaV91bG9uZykg aW50ZXJwX2VsZl9leC0+ZV9lbnRyeSkgKyBsb2FkX2FkZHI7CiB9CiAKIC8qIEJlc3QgYXR0ZW1w dCB0byBsb2FkIHN5bWJvbHMgZnJvbSB0aGlzIEVMRiBvYmplY3QuICovCkBAIC0xMDU0LDIyICsx MDY0LDIyIEBACiAgICAgc3RydWN0IGVsZmhkciBpbnRlcnBfZWxmX2V4OwogICAgIHN0cnVjdCBl eGVjIGludGVycF9leDsKICAgICBpbnQgaW50ZXJwcmV0ZXJfZmQgPSAtMTsgLyogYXZvaWQgd2Fy bmluZyAqLwotICAgIHRhcmdldF91bG9uZyBsb2FkX2FkZHIsIGxvYWRfYmlhczsKKyAgICBhYmlf dWxvbmcgbG9hZF9hZGRyLCBsb2FkX2JpYXM7CiAgICAgaW50IGxvYWRfYWRkcl9zZXQgPSAwOwog ICAgIHVuc2lnbmVkIGludCBpbnRlcnByZXRlcl90eXBlID0gSU5URVJQUkVURVJfTk9ORTsKICAg ICB1bnNpZ25lZCBjaGFyIGliY3MyX2ludGVycHJldGVyOwogICAgIGludCBpOwotICAgIHRhcmdl dF91bG9uZyBtYXBwZWRfYWRkcjsKKyAgICBhYmlfdWxvbmcgbWFwcGVkX2FkZHI7CiAgICAgc3Ry dWN0IGVsZl9waGRyICogZWxmX3BwbnQ7CiAgICAgc3RydWN0IGVsZl9waGRyICplbGZfcGhkYXRh OwotICAgIHRhcmdldF91bG9uZyBlbGZfYnNzLCBrLCBlbGZfYnJrOworICAgIGFiaV91bG9uZyBl bGZfYnNzLCBrLCBlbGZfYnJrOwogICAgIGludCByZXR2YWw7CiAgICAgY2hhciAqIGVsZl9pbnRl cnByZXRlcjsKLSAgICB0YXJnZXRfdWxvbmcgZWxmX2VudHJ5LCBpbnRlcnBfbG9hZF9hZGRyID0g MDsKKyAgICBhYmlfdWxvbmcgZWxmX2VudHJ5LCBpbnRlcnBfbG9hZF9hZGRyID0gMDsKICAgICBp bnQgc3RhdHVzOwotICAgIHRhcmdldF91bG9uZyBzdGFydF9jb2RlLCBlbmRfY29kZSwgc3RhcnRf ZGF0YSwgZW5kX2RhdGE7Ci0gICAgdGFyZ2V0X3Vsb25nIHJlbG9jX2Z1bmNfZGVzYyA9IDA7Ci0g ICAgdGFyZ2V0X3Vsb25nIGVsZl9zdGFjazsKKyAgICBhYmlfdWxvbmcgc3RhcnRfY29kZSwgZW5k X2NvZGUsIHN0YXJ0X2RhdGEsIGVuZF9kYXRhOworICAgIGFiaV91bG9uZyByZWxvY19mdW5jX2Rl c2MgPSAwOworICAgIGFiaV91bG9uZyBlbGZfc3RhY2s7CiAgICAgY2hhciBwYXNzZWRfZmlsZW5v WzZdOwogCiAgICAgaWJjczJfaW50ZXJwcmV0ZXIgPSAwOwpAQCAtMTEyNSw5ICsxMTM1LDkgQEAK ICAgICBlbGZfYnJrID0gMDsKIAogCi0gICAgZWxmX3N0YWNrID0gfigodGFyZ2V0X3Vsb25nKTBV TCk7CisgICAgZWxmX3N0YWNrID0gfigoYWJpX3Vsb25nKTBVTCk7CiAgICAgZWxmX2ludGVycHJl dGVyID0gTlVMTDsKLSAgICBzdGFydF9jb2RlID0gfigodGFyZ2V0X3Vsb25nKTBVTCk7CisgICAg c3RhcnRfY29kZSA9IH4oKGFiaV91bG9uZykwVUwpOwogICAgIGVuZF9jb2RlID0gMDsKICAgICBz dGFydF9kYXRhID0gMDsKICAgICBlbmRfZGF0YSA9IDA7CkBAIC0xMjYzLDkgKzEyNzMsOSBAQAog ICAgIC8qIE9LLCBUaGlzIGlzIHRoZSBwb2ludCBvZiBubyByZXR1cm4gKi8KICAgICBpbmZvLT5l bmRfZGF0YSA9IDA7CiAgICAgaW5mby0+ZW5kX2NvZGUgPSAwOwotICAgIGluZm8tPnN0YXJ0X21t YXAgPSAodGFyZ2V0X3Vsb25nKUVMRl9TVEFSVF9NTUFQOworICAgIGluZm8tPnN0YXJ0X21tYXAg PSAoYWJpX3Vsb25nKUVMRl9TVEFSVF9NTUFQOwogICAgIGluZm8tPm1tYXAgPSAwOwotICAgIGVs Zl9lbnRyeSA9ICh0YXJnZXRfdWxvbmcpIGVsZl9leC5lX2VudHJ5OworICAgIGVsZl9lbnRyeSA9 IChhYmlfdWxvbmcpIGVsZl9leC5lX2VudHJ5OwogCiAgICAgLyogRG8gdGhpcyBzbyB0aGF0IHdl IGNhbiBsb2FkIHRoZSBpbnRlcnByZXRlciwgaWYgbmVlZCBiZS4gIFdlIHdpbGwKICAgICAgICBj aGFuZ2Ugc29tZSBvZiB0aGVzZSBsYXRlciAqLwpAQCAtMTI4Miw3ICsxMjkyLDcgQEAKICAgICBm b3IoaSA9IDAsIGVsZl9wcG50ID0gZWxmX3BoZGF0YTsgaSA8IGVsZl9leC5lX3BobnVtOyBpKyss IGVsZl9wcG50KyspIHsKICAgICAgICAgaW50IGVsZl9wcm90ID0gMDsKICAgICAgICAgaW50IGVs Zl9mbGFncyA9IDA7Ci0gICAgICAgIHRhcmdldF91bG9uZyBlcnJvcjsKKyAgICAgICAgYWJpX3Vs b25nIGVycm9yOwogCiAJaWYgKGVsZl9wcG50LT5wX3R5cGUgIT0gUFRfTE9BRCkKICAgICAgICAg ICAgIGNvbnRpbnVlOwpAQCAtMTM3NCw3ICsxMzg0LDcgQEAKIAljbG9zZShpbnRlcnByZXRlcl9m ZCk7CiAJZnJlZShlbGZfaW50ZXJwcmV0ZXIpOwogCi0JaWYgKGVsZl9lbnRyeSA9PSB+KCh0YXJn ZXRfdWxvbmcpMFVMKSkgeworCWlmIChlbGZfZW50cnkgPT0gfigoYWJpX3Vsb25nKTBVTCkpIHsK IAkgICAgcHJpbnRmKCJVbmFibGUgdG8gbG9hZCBpbnRlcnByZXRlclxuIik7CiAJICAgIGZyZWUo ZWxmX3BoZGF0YSk7CiAJICAgIGV4aXQoLTEpOwpJbmRleDogcWVtdS9saW51eC11c2VyL2ZsYXQu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9mbGF0LmgJMjAwNy0xMC0xMSAx OToxNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9mbGF0LmgJMjAwNy0x MC0xMiAxNTo0NDowNy4wMDAwMDAwMDAgKzAwMDAKQEAgLTIyLDI1ICsyMiwyNSBAQAogCiBzdHJ1 Y3QgZmxhdF9oZHIgewogCWNoYXIgbWFnaWNbNF07Ci0JdGFyZ2V0X3Vsb25nIHJldjsgICAgICAg ICAgLyogdmVyc2lvbiAoYXMgYWJvdmUpICovCi0JdGFyZ2V0X3Vsb25nIGVudHJ5OyAgICAgICAg LyogT2Zmc2V0IG9mIGZpcnN0IGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb24KLQkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgd2l0aCB0ZXh0IHNlZ21lbnQgZnJvbSBiZWdpbm5pbmcgb2YgZmls ZSAqLwotCXRhcmdldF91bG9uZyBkYXRhX3N0YXJ0OyAgIC8qIE9mZnNldCBvZiBkYXRhIHNlZ21l bnQgZnJvbSBiZWdpbm5pbmcgb2YKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls ZSAqLwotCXRhcmdldF91bG9uZyBkYXRhX2VuZDsgICAgIC8qIE9mZnNldCBvZiBlbmQgb2YgZGF0 YSBzZWdtZW50Ci0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYmVnaW5uaW5n IG9mIGZpbGUgKi8KLQl0YXJnZXRfdWxvbmcgYnNzX2VuZDsgICAgICAvKiBPZmZzZXQgb2YgZW5k IG9mIGJzcyBzZWdtZW50IGZyb20gYmVnaW5uaW5nCi0JICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mIGZpbGUgKi8KKwlhYmlfdWxvbmcgcmV2OyAgICAgICAgICAvKiB2ZXJzaW9uIChh cyBhYm92ZSkgKi8KKwlhYmlfdWxvbmcgZW50cnk7ICAgICAgICAvKiBPZmZzZXQgb2YgZmlyc3Qg ZXhlY3V0YWJsZSBpbnN0cnVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aXRoIHRleHQgc2VnbWVudCBmcm9tIGJlZ2lubmluZyBvZiBmaWxlICovCisJYWJpX3Vsb25n IGRhdGFfc3RhcnQ7ICAgLyogT2Zmc2V0IG9mIGRhdGEgc2VnbWVudCBmcm9tIGJlZ2lubmluZyBv ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlICovCisJYWJpX3Vsb25n IGRhdGFfZW5kOyAgICAgLyogT2Zmc2V0IG9mIGVuZCBvZiBkYXRhIHNlZ21lbnQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBiZWdpbm5pbmcgb2YgZmlsZSAqLworCWFi aV91bG9uZyBic3NfZW5kOyAgICAgIC8qIE9mZnNldCBvZiBlbmQgb2YgYnNzIHNlZ21lbnQgZnJv bSBiZWdpbm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgZmlsZSAq LwogCiAJLyogKEl0IGlzIGFzc3VtZWQgdGhhdCBkYXRhX2VuZCB0aHJvdWdoIGJzc19lbmQgZm9y bXMgdGhlIGJzcyBzZWdtZW50LikgKi8KIAotCXRhcmdldF91bG9uZyBzdGFja19zaXplOyAgIC8q IFNpemUgb2Ygc3RhY2ssIGluIGJ5dGVzICovCi0JdGFyZ2V0X3Vsb25nIHJlbG9jX3N0YXJ0OyAg LyogT2Zmc2V0IG9mIHJlbG9jYXRpb24gcmVjb3JkcyBmcm9tCi0JICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJlZ2lubmluZyBvZiBmaWxlICovCi0JdGFyZ2V0X3Vsb25nIHJlbG9jX2Nv dW50OyAgLyogTnVtYmVyIG9mIHJlbG9jYXRpb24gcmVjb3JkcyAqLwotCXRhcmdldF91bG9uZyBm bGFnczsKLQl0YXJnZXRfdWxvbmcgYnVpbGRfZGF0ZTsgICAvKiBXaGVuIHRoZSBwcm9ncmFtL2xp YnJhcnkgd2FzIGJ1aWx0ICovCi0JdGFyZ2V0X3Vsb25nIGZpbGxlcls1XTsgICAgLyogUmVzZXJ2 ZXJlZCwgc2V0IHRvIHplcm8gKi8KKwlhYmlfdWxvbmcgc3RhY2tfc2l6ZTsgICAvKiBTaXplIG9m IHN0YWNrLCBpbiBieXRlcyAqLworCWFiaV91bG9uZyByZWxvY19zdGFydDsgIC8qIE9mZnNldCBv ZiByZWxvY2F0aW9uIHJlY29yZHMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZWdpbm5pbmcgb2YgZmlsZSAqLworCWFiaV91bG9uZyByZWxvY19jb3VudDsgIC8qIE51 bWJlciBvZiByZWxvY2F0aW9uIHJlY29yZHMgKi8KKwlhYmlfdWxvbmcgZmxhZ3M7CisJYWJpX3Vs b25nIGJ1aWxkX2RhdGU7ICAgLyogV2hlbiB0aGUgcHJvZ3JhbS9saWJyYXJ5IHdhcyBidWlsdCAq LworCWFiaV91bG9uZyBmaWxsZXJbNV07ICAgIC8qIFJlc2VydmVyZWQsIHNldCB0byB6ZXJvICov CiB9OwogCiAjZGVmaW5lIEZMQVRfRkxBR19SQU0gICAgMHgwMDAxIC8qIGxvYWQgcHJvZ3JhbSBl bnRpcmVseSBpbnRvIFJBTSAqLwpJbmRleDogcWVtdS9saW51eC11c2VyL2ZsYXRsb2FkLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvZmxhdGxvYWQuYwkyMDA3LTEwLTExIDE5 OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2ZsYXRsb2FkLmMJMjAw Ny0xMC0xMiAxNTo0NTozMy4wMDAwMDAwMDAgKzAwMDAKQEAgLTYzLDEzICs2MywxMyBAQAogI2Rl ZmluZSBVTkxPQURFRF9MSUIgMHg3ZmYwMDBmZgkJLyogUGxhY2Vob2xkZXIgZm9yIHVudXNlZCBs aWJyYXJ5ICovCiAKIHN0cnVjdCBsaWJfaW5mbyB7Ci0gICAgdGFyZ2V0X3Vsb25nIHN0YXJ0X2Nv ZGU7CS8qIFN0YXJ0IG9mIHRleHQgc2VnbWVudCAqLwotICAgIHRhcmdldF91bG9uZyBzdGFydF9k YXRhOwkvKiBTdGFydCBvZiBkYXRhIHNlZ21lbnQgKi8KLSAgICB0YXJnZXRfdWxvbmcgZW5kX2Rh dGE7ICAgICAgLyogU3RhcnQgb2YgYnNzIHNlY3Rpb24gKi8KLSAgICB0YXJnZXRfdWxvbmcgc3Rh cnRfYnJrOwkvKiBFbmQgb2YgZGF0YSBzZWdtZW50ICovCi0gICAgdGFyZ2V0X3Vsb25nIHRleHRf bGVuOwkvKiBMZW5ndGggb2YgdGV4dCBzZWdtZW50ICovCi0gICAgdGFyZ2V0X3Vsb25nIGVudHJ5 OwkJLyogU3RhcnQgYWRkcmVzcyBmb3IgdGhpcyBtb2R1bGUgKi8KLSAgICB0YXJnZXRfdWxvbmcg YnVpbGRfZGF0ZTsJLyogV2hlbiB0aGlzIG9uZSB3YXMgY29tcGlsZWQgKi8KKyAgICBhYmlfdWxv bmcgc3RhcnRfY29kZTsgICAgICAgLyogU3RhcnQgb2YgdGV4dCBzZWdtZW50ICovCisgICAgYWJp X3Vsb25nIHN0YXJ0X2RhdGE7ICAgICAgIC8qIFN0YXJ0IG9mIGRhdGEgc2VnbWVudCAqLworICAg IGFiaV91bG9uZyBlbmRfZGF0YTsgICAgICAgICAvKiBTdGFydCBvZiBic3Mgc2VjdGlvbiAqLwor ICAgIGFiaV91bG9uZyBzdGFydF9icms7ICAgICAgICAvKiBFbmQgb2YgZGF0YSBzZWdtZW50ICov CisgICAgYWJpX3Vsb25nIHRleHRfbGVuOwkgICAgICAgIC8qIExlbmd0aCBvZiB0ZXh0IHNlZ21l bnQgKi8KKyAgICBhYmlfdWxvbmcgZW50cnk7CSAgICAgICAgLyogU3RhcnQgYWRkcmVzcyBmb3Ig dGhpcyBtb2R1bGUgKi8KKyAgICBhYmlfdWxvbmcgYnVpbGRfZGF0ZTsgICAgICAgLyogV2hlbiB0 aGlzIG9uZSB3YXMgY29tcGlsZWQgKi8KICAgICBzaG9ydCBsb2FkZWQ7CQkvKiBIYXMgdGhpcyBs aWJyYXJ5IGJlZW4gbG9hZGVkPyAqLwogfTsKIApAQCAtODksNyArODksNyBAQAogICovCiAKIC8q IFB1c2ggYSBibG9jayBvZiBzdHJpbmdzIG9udG8gdGhlIGd1ZXN0IHN0YWNrLiAgKi8KLXN0YXRp YyB0YXJnZXRfdWxvbmcgY29weV9zdHJpbmdzKHRhcmdldF91bG9uZyBwLCBpbnQgbiwgY2hhciAq KnMpCitzdGF0aWMgYWJpX3Vsb25nIGNvcHlfc3RyaW5ncyhhYmlfdWxvbmcgcCwgaW50IG4sIGNo YXIgKipzKQogewogICAgIGludCBsZW47CiAKQEAgLTEwMiw4ICsxMDIsOCBAQAogICAgIHJldHVy biBwOwogfQogCi1pbnQgdGFyZ2V0X3ByZWFkKGludCBmZCwgdGFyZ2V0X3Vsb25nIHB0ciwgdGFy Z2V0X3Vsb25nIGxlbiwKLSAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG9mZnNldCkKK2lu dCB0YXJnZXRfcHJlYWQoaW50IGZkLCBhYmlfdWxvbmcgcHRyLCBhYmlfdWxvbmcgbGVuLAorICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgb2Zmc2V0KQogewogICAgIHZvaWQgKmJ1ZjsKICAgICBp bnQgcmV0OwpAQCAtMjYyLDE1ICsyNjIsMTUgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAK LXN0YXRpYyB0YXJnZXRfdWxvbmcKLWNhbGNfcmVsb2ModGFyZ2V0X3Vsb25nIHIsIHN0cnVjdCBs aWJfaW5mbyAqcCwgaW50IGN1cmlkLCBpbnQgaW50ZXJuYWxwKQorc3RhdGljIGFiaV91bG9uZwor Y2FsY19yZWxvYyhhYmlfdWxvbmcgciwgc3RydWN0IGxpYl9pbmZvICpwLCBpbnQgY3VyaWQsIGlu dCBpbnRlcm5hbHApCiB7Ci0gICAgdGFyZ2V0X3Vsb25nIGFkZHI7CisgICAgYWJpX3Vsb25nIGFk ZHI7CiAgICAgaW50IGlkOwotICAgIHRhcmdldF91bG9uZyBzdGFydF9icms7Ci0gICAgdGFyZ2V0 X3Vsb25nIHN0YXJ0X2RhdGE7Ci0gICAgdGFyZ2V0X3Vsb25nIHRleHRfbGVuOwotICAgIHRhcmdl dF91bG9uZyBzdGFydF9jb2RlOworICAgIGFiaV91bG9uZyBzdGFydF9icms7CisgICAgYWJpX3Vs b25nIHN0YXJ0X2RhdGE7CisgICAgYWJpX3Vsb25nIHRleHRfbGVuOworICAgIGFiaV91bG9uZyBz dGFydF9jb2RlOwogCiAjaWZkZWYgQ09ORklHX0JJTkZNVF9TSEFSRURfRkxBVAogI2Vycm9yIG5l ZWRzIGNoZWNraW5nCkBAIC0zODEsMTkgKzM4MSwxOSBAQAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIHN0YXRpYyBpbnQgbG9hZF9mbGF0X2ZpbGUoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0s Ci0JCXN0cnVjdCBsaWJfaW5mbyAqbGliaW5mbywgaW50IGlkLCB0YXJnZXRfdWxvbmcgKmV4dHJh X3N0YWNrKQorCQlzdHJ1Y3QgbGliX2luZm8gKmxpYmluZm8sIGludCBpZCwgYWJpX3Vsb25nICpl eHRyYV9zdGFjaykKIHsKICAgICBzdHJ1Y3QgZmxhdF9oZHIgKiBoZHI7Ci0gICAgdGFyZ2V0X3Vs b25nIHRleHRwb3MgPSAwLCBkYXRhcG9zID0gMCwgcmVzdWx0OwotICAgIHRhcmdldF91bG9uZyBy ZWFsZGF0YXN0YXJ0ID0gMDsKLSAgICB0YXJnZXRfdWxvbmcgdGV4dF9sZW4sIGRhdGFfbGVuLCBi c3NfbGVuLCBzdGFja19sZW4sIGZsYWdzOwotICAgIHRhcmdldF91bG9uZyBtZW1wID0gMDsgLyog Zm9yIGZpbmRpbmcgdGhlIGJyayBhcmVhICovCi0gICAgdGFyZ2V0X3Vsb25nIGV4dHJhOwotICAg IHRhcmdldF91bG9uZyByZWxvYyA9IDAsIHJwOworICAgIGFiaV91bG9uZyB0ZXh0cG9zID0gMCwg ZGF0YXBvcyA9IDAsIHJlc3VsdDsKKyAgICBhYmlfdWxvbmcgcmVhbGRhdGFzdGFydCA9IDA7Cisg ICAgYWJpX3Vsb25nIHRleHRfbGVuLCBkYXRhX2xlbiwgYnNzX2xlbiwgc3RhY2tfbGVuLCBmbGFn czsKKyAgICBhYmlfdWxvbmcgbWVtcCA9IDA7IC8qIGZvciBmaW5kaW5nIHRoZSBicmsgYXJlYSAq LworICAgIGFiaV91bG9uZyBleHRyYTsKKyAgICBhYmlfdWxvbmcgcmVsb2MgPSAwLCBycDsKICAg ICBpbnQgaSwgcmV2LCByZWxvY3MgPSAwOwotICAgIHRhcmdldF91bG9uZyBmcG9zOwotICAgIHRh cmdldF91bG9uZyBzdGFydF9jb2RlLCBlbmRfY29kZTsKLSAgICB0YXJnZXRfdWxvbmcgaW5keF9s ZW47CisgICAgYWJpX3Vsb25nIGZwb3M7CisgICAgYWJpX3Vsb25nIHN0YXJ0X2NvZGUsIGVuZF9j b2RlOworICAgIGFiaV91bG9uZyBpbmR4X2xlbjsKIAogICAgIGhkciA9ICgoc3RydWN0IGZsYXRf aGRyICopIGJwcm0tPmJ1Zik7CQkvKiBleGVjLWhlYWRlciAqLwogCkBAIC00NDAsMTQgKzQ0MCwx NCBAQAogICAgIC8qCiAgICAgICogY2FsY3VsYXRlIHRoZSBleHRyYSBzcGFjZSB3ZSBuZWVkIHRv IG1hcCBpbgogICAgICAqLwotICAgIGV4dHJhID0gcmVsb2NzICogc2l6ZW9mKHRhcmdldF91bG9u Zyk7CisgICAgZXh0cmEgPSByZWxvY3MgKiBzaXplb2YoYWJpX3Vsb25nKTsKICAgICBpZiAoZXh0 cmEgPCBic3NfbGVuICsgc3RhY2tfbGVuKQogICAgICAgICBleHRyYSA9IGJzc19sZW4gKyBzdGFj a19sZW47CiAKICAgICAvKiBBZGQgc3BhY2UgZm9yIGxpYnJhcnkgYmFzZSBwb2ludGVycy4gIE1h a2Ugc3VyZSB0aGlzIGRvZXMgbm90CiAgICAgICAgbWlzYWxpZ24gdGhlICBkb2Vzbid0IG1pc2Fs aWduIHRoZSBkYXRhIHNlZ21lbnQuICAqLwotICAgIGluZHhfbGVuID0gTUFYX1NIQVJFRF9MSUJT ICogc2l6ZW9mKHRhcmdldF91bG9uZyk7Ci0gICAgaW5keF9sZW4gPSAoaW5keF9sZW4gKyAxNSkg JiB+KHRhcmdldF91bG9uZykxNTsKKyAgICBpbmR4X2xlbiA9IE1BWF9TSEFSRURfTElCUyAqIHNp emVvZihhYmlfdWxvbmcpOworICAgIGluZHhfbGVuID0gKGluZHhfbGVuICsgMTUpICYgfihhYmlf dWxvbmcpMTU7CiAKICAgICAvKgogICAgICAqIHRoZXJlIGFyZSBhIGNvdXBsZSBvZiBjYXNlcyBo ZXJlLCAgdGhlIHNlcGFyYXRlIGNvZGUvZGF0YQpAQCAtNDg1LDEyICs0ODUsMTIgQEAKICNpZmRl ZiBDT05GSUdfQklORk1UX1pGTEFUCiAgICAgICAgIGlmIChmbGFncyAmIEZMQVRfRkxBR19HWkRB VEEpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3NfZXhlYyhicHJtLCBmcG9zLCAo Y2hhciAqKSBkYXRhcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFfbGVuICsgKHJlbG9jcyAqIHNpemVvZih0YXJnZXRfdWxvbmcpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2xlbiArIChyZWxvY3MgKiBzaXplb2YoYWJpX3Vs b25nKSkpCiAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl c3VsdCA9IHRhcmdldF9wcmVhZChicHJtLT5mZCwgZGF0YXBvcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhX2xlbiArIChyZWxvY3MgKiBzaXplb2YodGFyZ2V0X3Vsb25n KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9sZW4gKyAocmVsb2Nz ICogc2l6ZW9mKGFiaV91bG9uZykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZwb3MpOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CkBAIC01NDQsNyAr NTQ0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0X2xlbiwgMCk7 CiAgICAgICAgICAgICBpZiAocmVzdWx0ID49IDApIHsKICAgICAgICAgICAgICAgICByZXN1bHQg PSB0YXJnZXRfcHJlYWQoYnBybS0+ZmQsIGRhdGFwb3MsCi0gICAgICAgICAgICAgICAgICAgIGRh dGFfbGVuICsgKHJlbG9jcyAqIHNpemVvZih0YXJnZXRfdWxvbmcpKSwKKyAgICAgICAgICAgICAg ICAgICAgZGF0YV9sZW4gKyAocmVsb2NzICogc2l6ZW9mKGFiaV91bG9uZykpLAogICAgICAgICAg ICAgICAgICAgICBudG9obChoZHItPmRhdGFfc3RhcnQpKTsKICAgICAgICAgICAgIH0KICAgICAg ICAgfQpAQCAtNTk3LDcgKzU5Nyw3IEBACiAgICAgaWYgKGZsYWdzICYgRkxBVF9GTEFHX0dPVFBJ QykgewogICAgICAgICBycCA9IGRhdGFwb3M7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAg ICAgICB0YXJnZXRfdWxvbmcgYWRkcjsKKyAgICAgICAgICAgIGFiaV91bG9uZyBhZGRyOwogICAg ICAgICAgICAgYWRkciA9IHRnZXRsKHJwKTsKICAgICAgICAgICAgIGlmIChhZGRyID09IC0xKQog ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjA3LDcgKzYwNyw3IEBACiAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtRU5PRVhFQzsKICAgICAgICAgICAgICAgICB0cHV0bChycCwgYWRkcik7 CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBycCArPSBzaXplb2YodGFyZ2V0X3Vsb25nKTsK KyAgICAgICAgICAgIHJwICs9IHNpemVvZihhYmlfdWxvbmcpOwogICAgICAgICB9CiAgICAgfQog CkBAIC02MjQsMTIgKzYyNCwxMiBAQAogICAgICAqLwogICAgIGlmIChyZXYgPiBPTERfRkxBVF9W RVJTSU9OKSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByZWxvY3M7IGkrKykgewotICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIGFkZHIsIHJlbHZhbDsKKyAgICAgICAgICAgIGFiaV91bG9uZyBh ZGRyLCByZWx2YWw7CiAKICAgICAgICAgICAgIC8qIEdldCB0aGUgYWRkcmVzcyBvZiB0aGUgcG9p bnRlciB0byBiZQogICAgICAgICAgICAgICAgcmVsb2NhdGVkIChvZiBjb3Vyc2UsIHRoZSBhZGRy ZXNzIGhhcyB0byBiZQogICAgICAgICAgICAgICAgcmVsb2NhdGVkIGZpcnN0KS4gICovCi0gICAg ICAgICAgICByZWx2YWwgPSB0Z2V0bChyZWxvYyArIGkgKiBzaXplb2YgKHRhcmdldF91bG9uZykp OworICAgICAgICAgICAgcmVsdmFsID0gdGdldGwocmVsb2MgKyBpICogc2l6ZW9mIChhYmlfdWxv bmcpKTsKICAgICAgICAgICAgIGFkZHIgPSBmbGF0X2dldF9yZWxvY2F0ZV9hZGRyKHJlbHZhbCk7 CiAgICAgICAgICAgICBycCA9IGNhbGNfcmVsb2MoYWRkciwgbGliaW5mbywgaWQsIDEpOwogICAg ICAgICAgICAgaWYgKHJwID09IFJFTE9DX0ZBSUxFRCkKQEAgLTY1Nyw4ICs2NTcsOCBAQAogICAg ICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlbG9jczsgaSsr KSB7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgcmVsdmFsOwotICAgICAgICAgICAgcmVsdmFs ID0gdGdldGwocmVsb2MgKyBpICogc2l6ZW9mICh0YXJnZXRfdWxvbmcpKTsKKyAgICAgICAgICAg IGFiaV91bG9uZyByZWx2YWw7CisgICAgICAgICAgICByZWx2YWwgPSB0Z2V0bChyZWxvYyArIGkg KiBzaXplb2YgKGFiaV91bG9uZykpOwogICAgICAgICAgICAgb2xkX3JlbG9jKCZsaWJpbmZvWzBd LCByZWx2YWwpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzEyLDEwICs3MTIsMTAgQEAKICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGltYWdlX2luZm8gKiBpbmZvKQogewogICAgIHN0cnVjdCBs aWJfaW5mbyBsaWJpbmZvW01BWF9TSEFSRURfTElCU107Ci0gICAgdGFyZ2V0X3Vsb25nIHAgPSBi cHJtLT5wOwotICAgIHRhcmdldF91bG9uZyBzdGFja19sZW47Ci0gICAgdGFyZ2V0X3Vsb25nIHN0 YXJ0X2FkZHI7Ci0gICAgdGFyZ2V0X3Vsb25nIHNwOworICAgIGFiaV91bG9uZyBwID0gYnBybS0+ cDsKKyAgICBhYmlfdWxvbmcgc3RhY2tfbGVuOworICAgIGFiaV91bG9uZyBzdGFydF9hZGRyOwor ICAgIGFiaV91bG9uZyBzcDsKICAgICBpbnQgcmVzOwogICAgIGludCBpLCBqOwogCkBAIC03NDAs NyArNzQwLDcgQEAKICAgICAvKiBVcGRhdGUgZGF0YSBzZWdtZW50IHBvaW50ZXJzIGZvciBhbGwg bGlicmFyaWVzICovCiAgICAgZm9yIChpPTA7IGk8TUFYX1NIQVJFRF9MSUJTOyBpKyspIHsKICAg ICAgICAgaWYgKGxpYmluZm9baV0ubG9hZGVkKSB7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcg cDsKKyAgICAgICAgICAgIGFiaV91bG9uZyBwOwogICAgICAgICAgICAgcCA9IGxpYmluZm9baV0u c3RhcnRfZGF0YTsKICAgICAgICAgICAgIGZvciAoaj0wOyBqPE1BWF9TSEFSRURfTElCUzsgaisr KSB7CiAgICAgICAgICAgICAgICAgcCAtPSA0OwpAQCAtNzU4LDEyICs3NTgsMTIgQEAKICAgICBw ID0gY29weV9zdHJpbmdzKHAsIGJwcm0tPmVudmMsIGJwcm0tPmVudnApOwogICAgIHAgPSBjb3B5 X3N0cmluZ3MocCwgYnBybS0+YXJnYywgYnBybS0+YXJndik7CiAgICAgLyogQWxpZ24gc3RhY2su ICAqLwotICAgIHNwID0gcCAmIH4odGFyZ2V0X3Vsb25nKShzaXplb2YodGFyZ2V0X3Vsb25nKSAt IDEpOworICAgIHNwID0gcCAmIH4oYWJpX3Vsb25nKShzaXplb2YoYWJpX3Vsb25nKSAtIDEpOwog ICAgIC8qIEVuZm9yY2UgZmluYWwgc3RhY2sgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAgVGhpcyBp cyBzdWZmaWNpZW50CiAgICAgICAgZm9yIGFsbCBjdXJyZW50IHRhcmdldHMsIGFuZCBleGNlc3Mg YWxpZ25tZW50IGlzIGhhcm1sZXNzLiAgKi8KICAgICBzdGFja19sZW4gPSBicHJtLT5lbnZjICsg YnBybS0+YXJnYyArIDI7CiAgICAgc3RhY2tfbGVuICs9IDM7CS8qIGFyZ2MsIGFydmcsIGFyZ3Ag Ki8KLSAgICBzdGFja19sZW4gKj0gc2l6ZW9mKHRhcmdldF91bG9uZyk7CisgICAgc3RhY2tfbGVu ICo9IHNpemVvZihhYmlfdWxvbmcpOwogICAgIGlmICgoc3AgKyBzdGFja19sZW4pICYgMTUpCiAg ICAgICAgIHNwIC09IDE2IC0gKChzcCArIHN0YWNrX2xlbikgJiAxNSk7CiAgICAgc3AgPSBsb2Fk ZXJfYnVpbGRfYXJncHRyKGJwcm0tPmVudmMsIGJwcm0tPmFyZ2MsIHNwLCBwLCAxKTsKSW5kZXg6 IHFlbXUvbGludXgtdXNlci9pMzg2L3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcv bGludXgtdXNlci9pMzg2L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9saW51eC11c2VyL2kzODYvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6 NDYuMDAwMDAwMDAwICswMDAwCkBAIC0zMSw3ICszMSw3IEBACiAKIHN0cnVjdCB0YXJnZXRfbW9k aWZ5X2xkdF9sZHRfcyB7CiAgICAgdW5zaWduZWQgaW50ICBlbnRyeV9udW1iZXI7Ci0gICAgdGFy Z2V0X3Vsb25nIGJhc2VfYWRkcjsKKyAgICBhYmlfdWxvbmcgYmFzZV9hZGRyOwogICAgIHVuc2ln bmVkIGludCBsaW1pdDsKICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiB9OwpAQCAtNzksMjIgKzc5 LDIyIEBACiAvKgogICogbm9ybWFsIHJlZ3MsIHdpdGggc3BlY2lhbCBtZWFuaW5nIGZvciB0aGUg c2VnbWVudCBkZXNjcmlwdG9ycy4uCiAgKi8KLQl0YXJnZXRfbG9uZyBlYng7Ci0JdGFyZ2V0X2xv bmcgZWN4OwotCXRhcmdldF9sb25nIGVkeDsKLQl0YXJnZXRfbG9uZyBlc2k7Ci0JdGFyZ2V0X2xv bmcgZWRpOwotCXRhcmdldF9sb25nIGVicDsKLQl0YXJnZXRfbG9uZyBlYXg7Ci0JdGFyZ2V0X2xv bmcgX19udWxsX2RzOwotCXRhcmdldF9sb25nIF9fbnVsbF9lczsKLQl0YXJnZXRfbG9uZyBfX251 bGxfZnM7Ci0JdGFyZ2V0X2xvbmcgX19udWxsX2dzOwotCXRhcmdldF9sb25nIG9yaWdfZWF4Owot CXRhcmdldF9sb25nIGVpcDsKKwlhYmlfbG9uZyBlYng7CisJYWJpX2xvbmcgZWN4OworCWFiaV9s b25nIGVkeDsKKwlhYmlfbG9uZyBlc2k7CisJYWJpX2xvbmcgZWRpOworCWFiaV9sb25nIGVicDsK KwlhYmlfbG9uZyBlYXg7CisJYWJpX2xvbmcgX19udWxsX2RzOworCWFiaV9sb25nIF9fbnVsbF9l czsKKwlhYmlfbG9uZyBfX251bGxfZnM7CisJYWJpX2xvbmcgX19udWxsX2dzOworCWFiaV9sb25n IG9yaWdfZWF4OworCWFiaV9sb25nIGVpcDsKIAl1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7Ci0J dGFyZ2V0X2xvbmcgZWZsYWdzOwotCXRhcmdldF9sb25nIGVzcDsKKwlhYmlfbG9uZyBlZmxhZ3M7 CisJYWJpX2xvbmcgZXNwOwogCXVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKIC8qCiAgKiB0aGVz ZSBhcmUgc3BlY2lmaWMgdG8gdjg2IG1vZGU6CkBAIC0xMDYsMTQgKzEwNiwxNCBAQAogfTsKIAog c3RydWN0IHRhcmdldF9yZXZlY3RvcmVkX3N0cnVjdCB7Ci0JdGFyZ2V0X3Vsb25nIF9fbWFwWzhd OwkJCS8qIDI1NiBiaXRzICovCisJYWJpX3Vsb25nIF9fbWFwWzhdOwkJCS8qIDI1NiBiaXRzICov CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3ZtODZfc3RydWN0IHsKIAlzdHJ1Y3QgdGFyZ2V0X3ZtODZf cmVncyByZWdzOwotCXRhcmdldF91bG9uZyBmbGFnczsKLQl0YXJnZXRfdWxvbmcgc2NyZWVuX2Jp dG1hcDsKLQl0YXJnZXRfdWxvbmcgY3B1X3R5cGU7CisJYWJpX3Vsb25nIGZsYWdzOworCWFiaV91 bG9uZyBzY3JlZW5fYml0bWFwOworCWFiaV91bG9uZyBjcHVfdHlwZTsKIAlzdHJ1Y3QgdGFyZ2V0 X3JldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogCXN0cnVjdCB0YXJnZXRfcmV2ZWN0 b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKIH07CkBAIC0xMjQsNyArMTI0LDcgQEAKICNk ZWZpbmUgVEFSR0VUX1ZNODZfU0NSRUVOX0JJVE1BUAkweDAwMDEKIAogc3RydWN0IHRhcmdldF92 bTg2cGx1c19pbmZvX3N0cnVjdCB7Ci0gICAgICAgIHRhcmdldF91bG9uZyBmbGFnczsKKyAgICAg ICAgYWJpX3Vsb25nIGZsYWdzOwogI2RlZmluZSBUQVJHRVRfZm9yY2VfcmV0dXJuX2Zvcl9waWMg KDEgPDwgMCkKICNkZWZpbmUgVEFSR0VUX3ZtODZkYmdfYWN0aXZlICAgICAgICgxIDw8IDEpICAv KiBmb3IgZGVidWdnZXIgKi8KICNkZWZpbmUgVEFSR0VUX3ZtODZkYmdfVEZwZW5kaWcgICAgICgx IDw8IDIpICAvKiBmb3IgZGVidWdnZXIgKi8KQEAgLTEzNCw5ICsxMzQsOSBAQAogCiBzdHJ1Y3Qg dGFyZ2V0X3ZtODZwbHVzX3N0cnVjdCB7CiAJc3RydWN0IHRhcmdldF92bTg2X3JlZ3MgcmVnczsK LQl0YXJnZXRfdWxvbmcgZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNjcmVlbl9iaXRtYXA7Ci0JdGFy Z2V0X3Vsb25nIGNwdV90eXBlOworCWFiaV91bG9uZyBmbGFnczsKKwlhYmlfdWxvbmcgc2NyZWVu X2JpdG1hcDsKKwlhYmlfdWxvbmcgY3B1X3R5cGU7CiAJc3RydWN0IHRhcmdldF9yZXZlY3RvcmVk X3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKIAlzdHJ1Y3QgdGFyZ2V0X3JldmVjdG9yZWRfc3RydWN0 IGludDIxX3JldmVjdG9yZWQ7CiAJc3RydWN0IHRhcmdldF92bTg2cGx1c19pbmZvX3N0cnVjdCB2 bTg2cGx1czsKSW5kZXg6IHFlbXUvbGludXgtdXNlci9pMzg2L3RhcmdldF9zaWduYWwuaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9pMzg2L3RhcmdldF9zaWduYWwuaAkyMDA3 LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2kzODYv dGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02 LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5 c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsK LQl0YXJnZXRfdWxvbmcgc3Nfc3A7Ci0JdGFyZ2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vs b25nIHNzX3NpemU7CisJYWJpX3Vsb25nIHNzX3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFi aV91bG9uZyBzc19zaXplOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3IEBA CiAjZGVmaW5lIFRBUkdFVF9NSU5TSUdTVEtTWgkyMDQ4CiAjZGVmaW5lIFRBUkdFVF9TSUdTVEtT WgkJODE5MgogCi1zdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0 ZShDUFVYODZTdGF0ZSAqc3RhdGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBnZXRfc3BfZnJv bV9jcHVzdGF0ZShDUFVYODZTdGF0ZSAqc3RhdGUpCiB7CiAgICAgcmV0dXJuIHN0YXRlLT5yZWdz W1JfRVNQXTsKIH0KSW5kZXg6IHFlbXUvbGludXgtdXNlci9saW51eGxvYWQuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9saW51eGxvYWQuYwkyMDA3LTEwLTExIDE5OjE3OjEz LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL2xpbnV4bG9hZC5jCTIwMDctMTAt MTIgMTU6NDY6MTkuMDAwMDAwMDAwICswMDAwCkBAIC0xMyw3ICsxMyw3IEBACiAjZGVmaW5lIE5H Uk9VUFMgMzIKIAogLyogPz8/IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBzb21ld2hlcmUgZWxzZS4g ICovCi12b2lkIG1lbWNweV90b190YXJnZXQodGFyZ2V0X3Vsb25nIGRlc3QsIGNvbnN0IHZvaWQg KnNyYywKK3ZvaWQgbWVtY3B5X3RvX3RhcmdldChhYmlfdWxvbmcgZGVzdCwgY29uc3Qgdm9pZCAq c3JjLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuKQogewogICAgIHZv aWQgKmhvc3RfcHRyOwpAQCAtMTA5LDEyICsxMDksMTIgQEAKIH0KIAogLyogQ29uc3RydWN0IHRo ZSBlbnZwIGFuZCBhcmd2IHRhYmxlcyBvbiB0aGUgdGFyZ2V0IHN0YWNrLiAgKi8KLXRhcmdldF91 bG9uZyBsb2FkZXJfYnVpbGRfYXJncHRyKGludCBlbnZjLCBpbnQgYXJnYywgdGFyZ2V0X3Vsb25n IHNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHN0cmlu Z3AsIGludCBwdXNoX3B0cikKK2FiaV91bG9uZyBsb2FkZXJfYnVpbGRfYXJncHRyKGludCBlbnZj LCBpbnQgYXJnYywgYWJpX3Vsb25nIHNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YWJpX3Vsb25nIHN0cmluZ3AsIGludCBwdXNoX3B0cikKIHsKLSAgICBpbnQgbiA9IHNpemVvZih0 YXJnZXRfdWxvbmcpOwotICAgIHRhcmdldF91bG9uZyBlbnZwOwotICAgIHRhcmdldF91bG9uZyBh cmd2OworICAgIGludCBuID0gc2l6ZW9mKGFiaV91bG9uZyk7CisgICAgYWJpX3Vsb25nIGVudnA7 CisgICAgYWJpX3Vsb25nIGFyZ3Y7CiAKICAgICBzcCAtPSAoZW52YyArIDEpICogbjsKICAgICBl bnZwID0gc3A7CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbTY4ay9zeXNjYWxsLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbTY4ay9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOTox NzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9tNjhrL3N5c2NhbGwuaAky MDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMywxNCArMywxNCBAQAogICAg c3RhY2sgZHVyaW5nIGEgc3lzdGVtIGNhbGwuICovCiAKIHN0cnVjdCB0YXJnZXRfcHRfcmVncyB7 Ci0gICAgdGFyZ2V0X2xvbmcgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDc7Ci0gICAgdGFyZ2V0 X2xvbmcgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTY7Ci0gICAgdGFyZ2V0X3Vsb25nIGQwOwot ICAgIHRhcmdldF91bG9uZyB1c3A7Ci0gICAgdGFyZ2V0X3Vsb25nIG9yaWdfZDA7CisgICAgYWJp X2xvbmcgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDc7CisgICAgYWJpX2xvbmcgYTAsIGExLCBh MiwgYTMsIGE0LCBhNSwgYTY7CisgICAgYWJpX3Vsb25nIGQwOworICAgIGFiaV91bG9uZyB1c3A7 CisgICAgYWJpX3Vsb25nIG9yaWdfZDA7CiAgICAgaW50MTZfdCBzdGthZGo7CiAgICAgdWludDE2 X3Qgc3I7Ci0gICAgdGFyZ2V0X3Vsb25nIHBjOworICAgIGFiaV91bG9uZyBwYzsKICAgICB1aW50 MTZfdCBmbnR2ZXg7CiAgICAgdWludDE2X3QgX19maWxsOwogfTsKSW5kZXg6IHFlbXUvbGludXgt dXNlci9tNjhrL3RhcmdldF9zaWduYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgt dXNlci9tNjhrL3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9saW51eC11c2VyL202OGsvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEg MTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3Qg ZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRl ZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKLQl0YXJnZXRfdWxvbmcgc3Nfc3A7Ci0JdGFy Z2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NpemU7CisJYWJpX3Vsb25nIHNz X3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFiaV91bG9uZyBzc19zaXplOwogfSB0YXJnZXRf c3RhY2tfdDsKIAogCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbWFpbi5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy9saW51eC11c2VyL21haW4uYwkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL21haW4uYwkyMDA3LTEwLTEyIDE1OjI2OjUwLjAw MDAwMDAwMCArMDAwMApAQCAtMTY4LDcgKzE2OCw3IEBACiB2b2lkIGNwdV9sb29wKENQVVg4NlN0 YXRlICplbnYpCiB7CiAgICAgaW50IHRyYXBucjsKLSAgICB0YXJnZXRfdWxvbmcgcGM7CisgICAg YWJpX3Vsb25nIHBjOwogICAgIHRhcmdldF9zaWdpbmZvX3QgaW5mbzsKIAogICAgIGZvcig7Oykg ewpAQCAtMzA1LDExICszMDUsMTEgQEAKICNpZmRlZiBUQVJHRVRfQVJNCiAKIC8qIFhYWDogZmlu ZCBhIGJldHRlciBzb2x1dGlvbiAqLwotZXh0ZXJuIHZvaWQgdGJfaW52YWxpZGF0ZV9wYWdlX3Jh bmdlKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGVuZCk7CitleHRlcm4gdm9pZCB0 Yl9pbnZhbGlkYXRlX3BhZ2VfcmFuZ2UoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgZW5kKTsK IAotc3RhdGljIHZvaWQgYXJtX2NhY2hlX2ZsdXNoKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0 X3Vsb25nIGxhc3QpCitzdGF0aWMgdm9pZCBhcm1fY2FjaGVfZmx1c2goYWJpX3Vsb25nIHN0YXJ0 LCBhYmlfdWxvbmcgbGFzdCkKIHsKLSAgICB0YXJnZXRfdWxvbmcgYWRkciwgbGFzdDE7CisgICAg YWJpX3Vsb25nIGFkZHIsIGxhc3QxOwogCiAgICAgaWYgKGxhc3QgPCBzdGFydCkKICAgICAgICAg cmV0dXJuOwpAQCAtNDc0LDcgKzQ3NCw3IEBACiBzdGF0aWMgaW5saW5lIHZvaWQgc2F2ZV93aW5k b3dfb2Zmc2V0KENQVVNQQVJDU3RhdGUgKmVudiwgaW50IGN3cDEpCiB7CiAgICAgdW5zaWduZWQg aW50IGk7Ci0gICAgdGFyZ2V0X3Vsb25nIHNwX3B0cjsKKyAgICBhYmlfdWxvbmcgc3BfcHRyOwog CiAgICAgc3BfcHRyID0gZW52LT5yZWdiYXNlW2dldF9yZWdfaW5kZXgoZW52LCBjd3AxLCA2KV07 CiAjaWYgZGVmaW5lZChERUJVR19XSU4pCkBAIC00ODMsNyArNDgzLDcgQEAKICNlbmRpZgogICAg IGZvcihpID0gMDsgaSA8IDE2OyBpKyspIHsKICAgICAgICAgdHB1dGwoc3BfcHRyLCBlbnYtPnJl Z2Jhc2VbZ2V0X3JlZ19pbmRleChlbnYsIGN3cDEsIDggKyBpKV0pOwotICAgICAgICBzcF9wdHIg Kz0gc2l6ZW9mKHRhcmdldF91bG9uZyk7CisgICAgICAgIHNwX3B0ciArPSBzaXplb2YoYWJpX3Vs b25nKTsKICAgICB9CiB9CiAKQEAgLTUwNSw3ICs1MDUsNyBAQAogc3RhdGljIHZvaWQgcmVzdG9y ZV93aW5kb3coQ1BVU1BBUkNTdGF0ZSAqZW52KQogewogICAgIHVuc2lnbmVkIGludCBuZXdfd2lt LCBpLCBjd3AxOwotICAgIHRhcmdldF91bG9uZyBzcF9wdHI7CisgICAgYWJpX3Vsb25nIHNwX3B0 cjsKIAogICAgIG5ld193aW0gPSAoKGVudi0+d2ltIDw8IDEpIHwgKGVudi0+d2ltID4+IChOV0lO RE9XUyAtIDEpKSkgJgogICAgICAgICAoKDFMTCA8PCBOV0lORE9XUykgLSAxKTsKQEAgLTUxOSw3 ICs1MTksNyBAQAogI2VuZGlmCiAgICAgZm9yKGkgPSAwOyBpIDwgMTY7IGkrKykgewogICAgICAg ICBlbnYtPnJlZ2Jhc2VbZ2V0X3JlZ19pbmRleChlbnYsIGN3cDEsIDggKyBpKV0gPSB0Z2V0bChz cF9wdHIpOwotICAgICAgICBzcF9wdHIgKz0gc2l6ZW9mKHRhcmdldF91bG9uZyk7CisgICAgICAg IHNwX3B0ciArPSBzaXplb2YoYWJpX3Vsb25nKTsKICAgICB9CiAgICAgZW52LT53aW0gPSBuZXdf d2ltOwogI2lmZGVmIFRBUkdFVF9TUEFSQzY0CkBAIC01NzIsMTQgKzU3MiwxNCBAQAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5yZWd3cHRyWzJdLCBlbnYtPnJlZ3dwdHJbM10s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnJlZ3dwdHJbNF0sIGVudi0+cmVn d3B0cls1XSk7CiAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGludClyZXQgPj0gKHVuc2lnbmVk IGludCkoLTUxNSkpIHsKLSNpZmRlZiBUQVJHRVRfU1BBUkM2NAorI2lmIGRlZmluZWQoVEFSR0VU X1NQQVJDNjQpICYmICFkZWZpbmVkKFRBUkdFVF9BQkkzMikKICAgICAgICAgICAgICAgICBlbnYt PnhjYyB8PSBQU1JfQ0FSUlk7CiAjZWxzZQogICAgICAgICAgICAgICAgIGVudi0+cHNyIHw9IFBT Ul9DQVJSWTsKICNlbmRpZgogICAgICAgICAgICAgICAgIHJldCA9IC1yZXQ7CiAgICAgICAgICAg ICB9IGVsc2UgewotI2lmZGVmIFRBUkdFVF9TUEFSQzY0CisjaWYgZGVmaW5lZChUQVJHRVRfU1BB UkM2NCkgJiYgIWRlZmluZWQoVEFSR0VUX0FCSTMyKQogICAgICAgICAgICAgICAgIGVudi0+eGNj ICY9IH5QU1JfQ0FSUlk7CiAjZWxzZQogICAgICAgICAgICAgICAgIGVudi0+cHNyICY9IH5QU1Jf Q0FSUlk7CkBAIC01OTEsNiArNTkxLDkgQEAKICAgICAgICAgICAgIGVudi0+bnBjID0gZW52LT5u cGMgKyA0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHg4MzogLyogZmx1c2gg d2luZG93cyAqLworI2lmZGVmIFRBUkdFVF9BQkkzMgorICAgICAgICBjYXNlIDB4MTAzOgorI2Vu ZGlmCiAgICAgICAgICAgICBmbHVzaF93aW5kb3dzKGVudik7CiAgICAgICAgICAgICAvKiBuZXh0 IGluc3RydWN0aW9uICovCiAgICAgICAgICAgICBlbnYtPnBjID0gZW52LT5ucGM7CkBAIC0xNDg5 LDggKzE0OTIsOCBAQAogICAgICAgICAgICAgICAgIHJldCA9IC1FTk9TWVM7CiAgICAgICAgICAg ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBuYl9hcmdzOwotICAgICAgICAgICAgICAg IHRhcmdldF91bG9uZyBzcF9yZWc7Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGFyZzUg PSAwLCBhcmc2ID0gMCwgYXJnNyA9IDAsIGFyZzggPSAwOworICAgICAgICAgICAgICAgIGFiaV91 bG9uZyBzcF9yZWc7CisgICAgICAgICAgICAgICAgYWJpX3Vsb25nIGFyZzUgPSAwLCBhcmc2ID0g MCwgYXJnNyA9IDAsIGFyZzggPSAwOwogCiAgICAgICAgICAgICAgICAgbmJfYXJncyA9IG1pcHNf c3lzY2FsbF9hcmdzW3N5c2NhbGxfbnVtXTsKICAgICAgICAgICAgICAgICBzcF9yZWcgPSBlbnYt PmdwclsyOV1bZW52LT5jdXJyZW50X3RjXTsKQEAgLTIyNDQsNyArMjI0Nyw3IEBACiAgICAgICAg IGludCBpOwogCiAgICAgICAgIGZvcihpID0gMDsgaSA8IDI4OyBpKyspIHsKLSAgICAgICAgICAg IGVudi0+aXJbaV0gPSAoKHRhcmdldF91bG9uZyAqKXJlZ3MpW2ldOworICAgICAgICAgICAgZW52 LT5pcltpXSA9ICgoYWJpX3Vsb25nICopcmVncylbaV07CiAgICAgICAgIH0KICAgICAgICAgZW52 LT5pcHJbSVBSX1VTUF0gPSByZWdzLT51c3A7CiAgICAgICAgIGVudi0+aXJbMzBdID0gcmVncy0+ dXNwOwpJbmRleDogcWVtdS9saW51eC11c2VyL21pcHMvc3lzY2FsbC5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy9saW51eC11c2VyL21pcHMvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQu MDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvbWlwcy9zeXNjYWxsLmgJMjAwNy0x MC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTQsMTggKzQsMTggQEAKIAogc3RydWN0 IHRhcmdldF9wdF9yZWdzIHsKIAkvKiBQYWQgYnl0ZXMgZm9yIGFyZ3VtZW50IHNhdmUgc3BhY2Ug b24gdGhlIHN0YWNrLiAqLwotCXRhcmdldF91bG9uZyBwYWQwWzZdOworCWFiaV91bG9uZyBwYWQw WzZdOwogCiAJLyogU2F2ZWQgbWFpbiBwcm9jZXNzb3IgcmVnaXN0ZXJzLiAqLwotCXRhcmdldF91 bG9uZyByZWdzWzMyXTsKKwlhYmlfdWxvbmcgcmVnc1szMl07CiAKIAkvKiBTYXZlZCBzcGVjaWFs IHJlZ2lzdGVycy4gKi8KLQl0YXJnZXRfdWxvbmcgY3AwX3N0YXR1czsKLQl0YXJnZXRfdWxvbmcg bG87Ci0JdGFyZ2V0X3Vsb25nIGhpOwotCXRhcmdldF91bG9uZyBjcDBfYmFkdmFkZHI7Ci0JdGFy Z2V0X3Vsb25nIGNwMF9jYXVzZTsKLQl0YXJnZXRfdWxvbmcgY3AwX2VwYzsKKwlhYmlfdWxvbmcg Y3AwX3N0YXR1czsKKwlhYmlfdWxvbmcgbG87CisJYWJpX3Vsb25nIGhpOworCWFiaV91bG9uZyBj cDBfYmFkdmFkZHI7CisJYWJpX3Vsb25nIGNwMF9jYXVzZTsKKwlhYmlfdWxvbmcgY3AwX2VwYzsK IH07CiAKIC8qIFRhcmdldCBlcnJubyBkZWZpbml0aW9ucyB0YWtlbiBmcm9tIGFzbS1taXBzL2Vy cm5vLmggKi8KSW5kZXg6IHFlbXUvbGludXgtdXNlci9taXBzL3RhcmdldF9zaWduYWwuaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9taXBzL3RhcmdldF9zaWduYWwuaAkyMDA3 LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL21pcHMv dGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02 LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5 c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsK LQl0YXJnZXRfbG9uZyBzc19zcDsKLQl0YXJnZXRfdWxvbmcgc3Nfc2l6ZTsKLQl0YXJnZXRfbG9u ZyBzc19mbGFnczsKKwlhYmlfbG9uZyBzc19zcDsKKwlhYmlfdWxvbmcgc3Nfc2l6ZTsKKwlhYmlf bG9uZyBzc19mbGFnczsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBAQAog I2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1ogICAgMjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RL U1ogICAgICAgODE5MgogCi1zdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBnZXRfc3BfZnJvbV9j cHVzdGF0ZShDUFVNSVBTU3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0 X3NwX2Zyb21fY3B1c3RhdGUoQ1BVTUlQU1N0YXRlICpzdGF0ZSkKIHsKICAgICByZXR1cm4gc3Rh dGUtPmdwclsyOV1bc3RhdGUtPmN1cnJlbnRfdGNdOwogfQpJbmRleDogcWVtdS9saW51eC11c2Vy L21pcHM2NC9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlw czY0L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVt dS9saW51eC11c2VyL21pcHM2NC9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAw MDAgKzAwMDAKQEAgLTQsMTUgKzQsMTUgQEAKIAogc3RydWN0IHRhcmdldF9wdF9yZWdzIHsKIAkv KiBTYXZlZCBtYWluIHByb2Nlc3NvciByZWdpc3RlcnMuICovCi0JdGFyZ2V0X3Vsb25nIHJlZ3Nb MzJdOworCWFiaV91bG9uZyByZWdzWzMyXTsKIAogCS8qIFNhdmVkIHNwZWNpYWwgcmVnaXN0ZXJz LiAqLwotCXRhcmdldF91bG9uZyBjcDBfc3RhdHVzOwotCXRhcmdldF91bG9uZyBsbzsKLQl0YXJn ZXRfdWxvbmcgaGk7Ci0JdGFyZ2V0X3Vsb25nIGNwMF9iYWR2YWRkcjsKLQl0YXJnZXRfdWxvbmcg Y3AwX2NhdXNlOwotCXRhcmdldF91bG9uZyBjcDBfZXBjOworCWFiaV91bG9uZyBjcDBfc3RhdHVz OworCWFiaV91bG9uZyBsbzsKKwlhYmlfdWxvbmcgaGk7CisJYWJpX3Vsb25nIGNwMF9iYWR2YWRk cjsKKwlhYmlfdWxvbmcgY3AwX2NhdXNlOworCWFiaV91bG9uZyBjcDBfZXBjOwogfTsKIAogLyog VGFyZ2V0IGVycm5vIGRlZmluaXRpb25zIHRha2VuIGZyb20gYXNtLW1pcHMvZXJybm8uaCAqLwpJ bmRleDogcWVtdS9saW51eC11c2VyL21pcHM2NC90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlwczY0L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTEx IDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL21pcHM2NC90YXJn ZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAwMDAKQEAgLTYsOSAr Niw5IEBACiAvKiB0aGlzIHN0cnVjdCBkZWZpbmVzIGEgc3RhY2sgdXNlZCBkdXJpbmcgc3lzY2Fs bCBoYW5kbGluZyAqLwogCiB0eXBlZGVmIHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgewotCXRh cmdldF9sb25nIHNzX3NwOwotCXRhcmdldF91bG9uZyBzc19zaXplOwotCXRhcmdldF9sb25nIHNz X2ZsYWdzOworCWFiaV9sb25nIHNzX3NwOworCWFiaV91bG9uZyBzc19zaXplOworCWFiaV9sb25n IHNzX2ZsYWdzOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3IEBACiAjZGVm aW5lIFRBUkdFVF9NSU5TSUdTVEtTWiAgICAyMDQ4CiAjZGVmaW5lIFRBUkdFVF9TSUdTVEtTWiAg ICAgICA4MTkyCiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0 YXRlKENQVU1JUFNTdGF0ZSAqc3RhdGUpCitzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBnZXRfc3Bf ZnJvbV9jcHVzdGF0ZShDUFVNSVBTU3RhdGUgKnN0YXRlKQogewogICAgIHJldHVybiBzdGF0ZS0+ Z3ByWzI5XVtzdGF0ZS0+Y3VycmVudF90Y107CiB9CkluZGV4OiBxZW11L2xpbnV4LXVzZXIvbWlw c24zMi9zeXNjYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlwc24z Mi9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUv bGludXgtdXNlci9taXBzbjMyL3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAw MCArMDAwMApAQCAtNCwxNSArNCwxNSBAQAogCiBzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgewogCS8q IFNhdmVkIG1haW4gcHJvY2Vzc29yIHJlZ2lzdGVycy4gKi8KLQl0YXJnZXRfdWxvbmcgcmVnc1sz Ml07CisJYWJpX3Vsb25nIHJlZ3NbMzJdOwogCiAJLyogU2F2ZWQgc3BlY2lhbCByZWdpc3RlcnMu ICovCi0JdGFyZ2V0X3Vsb25nIGNwMF9zdGF0dXM7Ci0JdGFyZ2V0X3Vsb25nIGxvOwotCXRhcmdl dF91bG9uZyBoaTsKLQl0YXJnZXRfdWxvbmcgY3AwX2JhZHZhZGRyOwotCXRhcmdldF91bG9uZyBj cDBfY2F1c2U7Ci0JdGFyZ2V0X3Vsb25nIGNwMF9lcGM7CisJYWJpX3Vsb25nIGNwMF9zdGF0dXM7 CisJYWJpX3Vsb25nIGxvOworCWFiaV91bG9uZyBoaTsKKwlhYmlfdWxvbmcgY3AwX2JhZHZhZGRy OworCWFiaV91bG9uZyBjcDBfY2F1c2U7CisJYWJpX3Vsb25nIGNwMF9lcGM7CiB9OwogCiAvKiBU YXJnZXQgZXJybm8gZGVmaW5pdGlvbnMgdGFrZW4gZnJvbSBhc20tbWlwcy9lcnJuby5oICovCklu ZGV4OiBxZW11L2xpbnV4LXVzZXIvbWlwc24zMi90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvbWlwc24zMi90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0x MSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9taXBzbjMyL3Rh cmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtMjEs NyArMjEsNyBAQAogI2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1ogICAgMjA0OAogI2RlZmluZSBU QVJHRVRfU0lHU1RLU1ogICAgICAgODE5MgogCi1zdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBn ZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVNSVBTU3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGluZSBh YmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVTUlQU1N0YXRlICpzdGF0ZSkKIHsKICAg ICByZXR1cm4gc3RhdGUtPmdwclsyOV1bc3RhdGUtPmN1cnJlbnRfdGNdOwogfQpJbmRleDogcWVt dS9saW51eC11c2VyL21tYXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9t bWFwLmMJMjAwNy0xMC0xMSAxOToxNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgt dXNlci9tbWFwLmMJMjAwNy0xMC0xMiAxNTo0ODozNS4wMDAwMDAwMDAgKzAwMDAKQEAgLTMwLDkg KzMwLDkgQEAKIC8vI2RlZmluZSBERUJVR19NTUFQCiAKIC8qIE5PVEU6IGFsbCB0aGUgY29uc3Rh bnRzIGFyZSB0aGUgSE9TVCBvbmVzLCBidXQgYWRkcmVzc2VzIGFyZSB0YXJnZXQuICovCi1pbnQg dGFyZ2V0X21wcm90ZWN0KHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50 IHByb3QpCitpbnQgdGFyZ2V0X21wcm90ZWN0KGFiaV91bG9uZyBzdGFydCwgYWJpX3Vsb25nIGxl biwgaW50IHByb3QpCiB7Ci0gICAgdGFyZ2V0X3Vsb25nIGVuZCwgaG9zdF9zdGFydCwgaG9zdF9l bmQsIGFkZHI7CisgICAgYWJpX3Vsb25nIGVuZCwgaG9zdF9zdGFydCwgaG9zdF9lbmQsIGFkZHI7 CiAgICAgaW50IHByb3QxLCByZXQ7CiAKICNpZmRlZiBERUJVR19NTUFQCkBAIC05NiwxMSArOTYs MTEgQEAKIH0KIAogLyogbWFwIGFuIGluY29tcGxldGUgaG9zdCBwYWdlICovCi1zdGF0aWMgaW50 IG1tYXBfZnJhZyh0YXJnZXRfdWxvbmcgcmVhbF9zdGFydCwKLSAgICAgICAgICAgICAgICAgICAg IHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGVuZCwKLSAgICAgICAgICAgICAgICAg ICAgIGludCBwcm90LCBpbnQgZmxhZ3MsIGludCBmZCwgdGFyZ2V0X3Vsb25nIG9mZnNldCkKK3N0 YXRpYyBpbnQgbW1hcF9mcmFnKGFiaV91bG9uZyByZWFsX3N0YXJ0LAorICAgICAgICAgICAgICAg ICAgICAgYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgZW5kLAorICAgICAgICAgICAgICAgICAg ICAgaW50IHByb3QsIGludCBmbGFncywgaW50IGZkLCBhYmlfdWxvbmcgb2Zmc2V0KQogewotICAg IHRhcmdldF91bG9uZyByZWFsX2VuZCwgcmV0LCBhZGRyOworICAgIGFiaV91bG9uZyByZWFsX2Vu ZCwgcmV0LCBhZGRyOwogICAgIHZvaWQgKmhvc3Rfc3RhcnQ7CiAgICAgaW50IHByb3QxLCBwcm90 X25ldzsKIApAQCAtMTUyLDE3ICsxNTIsMTcgQEAKIH0KIAogLyogTk9URTogYWxsIHRoZSBjb25z dGFudHMgYXJlIHRoZSBIT1NUIG9uZXMgKi8KLXRhcmdldF9sb25nIHRhcmdldF9tbWFwKHRhcmdl dF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50IHByb3QsCi0gICAgICAgICAgICAg ICAgIGludCBmbGFncywgaW50IGZkLCB0YXJnZXRfdWxvbmcgb2Zmc2V0KQorYWJpX2xvbmcgdGFy Z2V0X21tYXAoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBpbnQgcHJvdCwKKyAgICAg ICAgICAgICAgICAgICAgIGludCBmbGFncywgaW50IGZkLCBhYmlfdWxvbmcgb2Zmc2V0KQogewot ICAgIHRhcmdldF91bG9uZyByZXQsIGVuZCwgcmVhbF9zdGFydCwgcmVhbF9lbmQsIHJldGFkZHIs IGhvc3Rfb2Zmc2V0LCBob3N0X2xlbjsKKyAgICBhYmlfdWxvbmcgcmV0LCBlbmQsIHJlYWxfc3Rh cnQsIHJlYWxfZW5kLCByZXRhZGRyLCBob3N0X29mZnNldCwgaG9zdF9sZW47CiAgICAgdW5zaWdu ZWQgbG9uZyBob3N0X3N0YXJ0OwogI2lmIGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9f c3BhcmNfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBcCiAgICAgICAgIGRlZmluZWQoX19p YTY0KSB8fCBkZWZpbmVkKF9fbWlwc19fKQotICAgIHN0YXRpYyB0YXJnZXRfdWxvbmcgbGFzdF9z dGFydCA9IDB4NDAwMDAwMDA7CisgICAgc3RhdGljIGFiaV91bG9uZyBsYXN0X3N0YXJ0ID0gMHg0 MDAwMDAwMDsKICNlbGlmIGRlZmluZWQoX19DWUdXSU5fXykKICAgICAvKiBDeWd3aW4gZG9lc24n dCBoYXZlIGEgd2hvbGUgbG90IG9mIGFkZHJlc3Mgc3BhY2UuICAqLwotICAgIHN0YXRpYyB0YXJn ZXRfdWxvbmcgbGFzdF9zdGFydCA9IDB4MTgwMDAwMDA7CisgICAgc3RhdGljIGFiaV91bG9uZyBs YXN0X3N0YXJ0ID0gMHgxODAwMDAwMDsKICNlbmRpZgogCiAjaWZkZWYgREVCVUdfTU1BUApAQCAt MjI4LDcgKzIyOCw3IEBACiAgICAgICAgICAgICAgKiBUQVJHRVRfUEFHRV9TSVpFLCBzZWUgZXhl Yy5jLiBxZW11X3JlYWxfaG9zdF9wYWdlX3NpemUgaXMgdGhlCiAgICAgICAgICAgICAgKiBob3N0 cyByZWFsIHBhZ2Ugc2l6ZS4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdGFyZ2V0X3Vs b25nIGhvc3RfZW5kOworICAgICAgICAgICAgYWJpX3Vsb25nIGhvc3RfZW5kOwogICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBob3N0X2FsaWduZWRfc3RhcnQ7CiAKICAgICAgICAgICAgIGhvc3Rf bGVuID0gSE9TVF9QQUdFX0FMSUdOKGhvc3RfbGVuICsgcWVtdV9ob3N0X3BhZ2Vfc2l6ZQpAQCAt MzU0LDkgKzM1NCw5IEBACiAgICAgcmV0dXJuIHN0YXJ0OwogfQogCi1pbnQgdGFyZ2V0X211bm1h cCh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91bG9uZyBsZW4pCitpbnQgdGFyZ2V0X211bm1h cChhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBsZW4pCiB7Ci0gICAgdGFyZ2V0X3Vsb25nIGVu ZCwgcmVhbF9zdGFydCwgcmVhbF9lbmQsIGFkZHI7CisgICAgYWJpX3Vsb25nIGVuZCwgcmVhbF9z dGFydCwgcmVhbF9lbmQsIGFkZHI7CiAgICAgaW50IHByb3QsIHJldDsKIAogI2lmZGVmIERFQlVH X01NQVAKQEAgLTQwOCw5ICs0MDgsOSBAQAogCiAvKiBYWFg6IGN1cnJlbnRseSwgd2Ugb25seSBo YW5kbGUgTUFQX0FOT05ZTU9VUyBhbmQgbm90IE1BUF9GSVhFRAogICAgYmxvY2tzIHdoaWNoIGhh dmUgYmVlbiBhbGxvY2F0ZWQgc3RhcnRpbmcgb24gYSBob3N0IHBhZ2UgKi8KLXRhcmdldF9sb25n IHRhcmdldF9tcmVtYXAodGFyZ2V0X3Vsb25nIG9sZF9hZGRyLCB0YXJnZXRfdWxvbmcgb2xkX3Np emUsCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG5ld19zaXplLCB1bnNpZ25lZCBs b25nIGZsYWdzLAotICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBuZXdfYWRkcikKK2Fi aV9sb25nIHRhcmdldF9tcmVtYXAoYWJpX3Vsb25nIG9sZF9hZGRyLCBhYmlfdWxvbmcgb2xkX3Np emUsCisgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyBuZXdfc2l6ZSwgdW5zaWduZWQg bG9uZyBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIG5ld19hZGRyKQog ewogICAgIGludCBwcm90OwogICAgIHVuc2lnbmVkIGxvbmcgaG9zdF9hZGRyOwpAQCAtNDI2LDkg KzQyNiw5IEBACiAgICAgcmV0dXJuIG5ld19hZGRyOwogfQogCi1pbnQgdGFyZ2V0X21zeW5jKHRh cmdldF91bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbiwgaW50IGZsYWdzKQoraW50IHRhcmdl dF9tc3luYyhhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBsZW4sIGludCBmbGFncykKIHsKLSAg ICB0YXJnZXRfdWxvbmcgZW5kOworICAgIGFiaV91bG9uZyBlbmQ7CiAKICAgICBpZiAoc3RhcnQg JiB+VEFSR0VUX1BBR0VfTUFTSykKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CkluZGV4OiBxZW11 L2xpbnV4LXVzZXIvcHBjL3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgt dXNlci9wcGMvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisr KyBxZW11L2xpbnV4LXVzZXIvcHBjL3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAw MDAwMCArMDAwMApAQCAtNDQsNyArNDQsNyBAQAogCiAvKiBpb2N0bHMgKi8KIHN0cnVjdCB0YXJn ZXRfcmV2ZWN0b3JlZF9zdHJ1Y3QgewotCXRhcmdldF91bG9uZyBfX21hcFs4XTsJCQkvKiAyNTYg Yml0cyAqLworCWFiaV91bG9uZyBfX21hcFs4XTsJCQkvKiAyNTYgYml0cyAqLwogfTsKIAogLyoK SW5kZXg6IHFlbXUvbGludXgtdXNlci9wcGMvdGFyZ2V0X3NpZ25hbC5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy9saW51eC11c2VyL3BwYy90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOTox NzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9wcGMvdGFyZ2V0X3NpZ25h bC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02LDkgKzYsOSBAQAog LyogdGhpcyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5c2NhbGwgaGFuZGxp bmcgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKLQl0YXJnZXRfdWxv bmcgc3Nfc3A7Ci0JdGFyZ2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NpemU7 CisJYWJpX3Vsb25nIHNzX3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFiaV91bG9uZyBzc19z aXplOwogfSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yMSw3ICsyMSw3IEBACiAjZGVmaW5lIFRB UkdFVF9NSU5TSUdTVEtTWiAgICAyMDQ4CiAjZGVmaW5lIFRBUkdFVF9TSUdTVEtTWiAgICAgICA4 MTkyCiAKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0YXRlKENQ VVBQQ1N0YXRlICpzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgYWJpX3Vsb25nIGdldF9zcF9mcm9tX2Nw dXN0YXRlKENQVVBQQ1N0YXRlICpzdGF0ZSkKIHsKICAgICByZXR1cm4gc3RhdGUtPmdwclsxXTsK IH0KSW5kZXg6IHFlbXUvbGludXgtdXNlci9wcGM2NC9zeXNjYWxsLmgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cWVtdS5vcmlnL2xpbnV4LXVzZXIvcHBjNjQvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQu MDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvcHBjNjQvc3lzY2FsbC5oCTIwMDct MTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC00NCw3ICs0NCw3IEBACiAKIC8qIGlv Y3RscyAqLwogc3RydWN0IHRhcmdldF9yZXZlY3RvcmVkX3N0cnVjdCB7Ci0JdGFyZ2V0X3Vsb25n IF9fbWFwWzhdOwkJCS8qIDI1NiBiaXRzICovCisJYWJpX3Vsb25nIF9fbWFwWzhdOwkJCS8qIDI1 NiBiaXRzICovCiB9OwogCiAvKgpJbmRleDogcWVtdS9saW51eC11c2VyL3BwYzY0L3RhcmdldF9z aWduYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9wcGM2NC90YXJnZXRf c2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGlu dXgtdXNlci9wcGM2NC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAw MDAgKzAwMDAKQEAgLTYsOSArNiw5IEBACiAvKiB0aGlzIHN0cnVjdCBkZWZpbmVzIGEgc3RhY2sg dXNlZCBkdXJpbmcgc3lzY2FsbCBoYW5kbGluZyAqLwogCiB0eXBlZGVmIHN0cnVjdCB0YXJnZXRf c2lnYWx0c3RhY2sgewotCXRhcmdldF91bG9uZyBzc19zcDsKLQl0YXJnZXRfbG9uZyBzc19mbGFn czsKLQl0YXJnZXRfdWxvbmcgc3Nfc2l6ZTsKKwlhYmlfdWxvbmcgc3Nfc3A7CisJYWJpX2xvbmcg c3NfZmxhZ3M7CisJYWJpX3Vsb25nIHNzX3NpemU7CiB9IHRhcmdldF9zdGFja190OwogCiAKQEAg LTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgVEFSR0VUX01JTlNJR1NUS1NaICAgIDIwNDgKICNkZWZp bmUgVEFSR0VUX1NJR1NUS1NaICAgICAgIDgxOTIKIAotc3RhdGljIGlubGluZSB0YXJnZXRfdWxv bmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVUFBDU3RhdGUgKnN0YXRlKQorc3RhdGljIGlubGlu ZSBhYmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVUFBDU3RhdGUgKnN0YXRlKQogewog ICAgIHJldHVybiBzdGF0ZS0+Z3ByWzFdOwogfQpJbmRleDogcWVtdS9saW51eC11c2VyL3FlbXUu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9xZW11LmgJMjAwNy0xMC0xMSAx OToxNzoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9xZW11LmgJMjAwNy0x MC0xMiAxNTo1MjozMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTEsMTMgKzEsMjMgQEAKICNpZm5kZWYg UUVNVV9ICiAjZGVmaW5lIFFFTVVfSAogCi0jaW5jbHVkZSAidGh1bmsuaCIKLQogI2luY2x1ZGUg PHNpZ25hbC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgInN5c2NhbGxfZGVmcy5o IgogCiAjaW5jbHVkZSAiY3B1LmgiCisKKyNpZmRlZiBUQVJHRVRfQUJJMzIKK3R5cGVkZWYgdWlu dDMyX3QgYWJpX3Vsb25nOwordHlwZWRlZiBpbnQzMl90IGFiaV9sb25nOworI2RlZmluZSBUQVJH RVRfQUJJX0JJVFMgMzIKKyNlbHNlCit0eXBlZGVmIHRhcmdldF91bG9uZyBhYmlfdWxvbmc7Cit0 eXBlZGVmIHRhcmdldF9sb25nIGFiaV9sb25nOworI2RlZmluZSBUQVJHRVRfQUJJX0JJVFMgVEFS R0VUX0xPTkdfQklUUworI2VuZGlmCisKKyNpbmNsdWRlICJ0aHVuay5oIgorI2luY2x1ZGUgInN5 c2NhbGxfZGVmcy5oIgogI2luY2x1ZGUgInN5c2NhbGwuaCIKICNpbmNsdWRlICJ0YXJnZXRfc2ln bmFsLmgiCiAjaW5jbHVkZSAiZ2Ric3R1Yi5oIgpAQCAtMTcsMjAgKzI3LDIwIEBACiAgKiB0YXNr X3N0cnVjdCBmaWVsZHMgaW4gdGhlIGtlcm5lbAogICovCiBzdHJ1Y3QgaW1hZ2VfaW5mbyB7Ci0J dGFyZ2V0X3Vsb25nCWxvYWRfYWRkcjsKLQl0YXJnZXRfdWxvbmcJc3RhcnRfY29kZTsKLQl0YXJn ZXRfdWxvbmcJZW5kX2NvZGU7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICBzdGFydF9kYXRhOwot CXRhcmdldF91bG9uZwllbmRfZGF0YTsKLQl0YXJnZXRfdWxvbmcJc3RhcnRfYnJrOwotCXRhcmdl dF91bG9uZwlicms7Ci0JdGFyZ2V0X3Vsb25nCXN0YXJ0X21tYXA7Ci0JdGFyZ2V0X3Vsb25nCW1t YXA7Ci0JdGFyZ2V0X3Vsb25nCXJzczsKLQl0YXJnZXRfdWxvbmcJc3RhcnRfc3RhY2s7Ci0JdGFy Z2V0X3Vsb25nCWVudHJ5OwotICAgICAgICB0YXJnZXRfdWxvbmcgICAgY29kZV9vZmZzZXQ7Ci0g ICAgICAgIHRhcmdldF91bG9uZyAgICBkYXRhX29mZnNldDsKKyAgICAgICAgYWJpX3Vsb25nICAg ICAgIGxvYWRfYWRkcjsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIHN0YXJ0X2NvZGU7CisgICAg ICAgIGFiaV91bG9uZyAgICAgICBlbmRfY29kZTsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIHN0 YXJ0X2RhdGE7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBlbmRfZGF0YTsKKyAgICAgICAgYWJp X3Vsb25nICAgICAgIHN0YXJ0X2JyazsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIGJyazsKKyAg ICAgICAgYWJpX3Vsb25nICAgICAgIHN0YXJ0X21tYXA7CisgICAgICAgIGFiaV91bG9uZyAgICAg ICBtbWFwOworICAgICAgICBhYmlfdWxvbmcgICAgICAgcnNzOworICAgICAgICBhYmlfdWxvbmcg ICAgICAgc3RhcnRfc3RhY2s7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBlbnRyeTsKKyAgICAg ICAgYWJpX3Vsb25nICAgICAgIGNvZGVfb2Zmc2V0OworICAgICAgICBhYmlfdWxvbmcgICAgICAg ZGF0YV9vZmZzZXQ7CiAgICAgICAgIGNoYXIgICAgICAgICAgICAqKmhvc3RfYXJndjsKIAlpbnQJ CXBlcnNvbmFsaXR5OwogfTsKQEAgLTY3LDcgKzc3LDcgQEAKICAgICBpbnQgc3dpX2Vycm5vOwog I2VuZGlmCiAjaWYgZGVmaW5lZChUQVJHRVRfSTM4NikgJiYgIWRlZmluZWQoVEFSR0VUX1g4Nl82 NCkKLSAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X3Y4NjsKKyAgICBhYmlfdWxvbmcgdGFyZ2V0X3Y4 NjsKICAgICBzdHJ1Y3Qgdm04Nl9zYXZlZF9zdGF0ZSB2bTg2X3NhdmVkX3JlZ3M7CiAgICAgc3Ry dWN0IHRhcmdldF92bTg2cGx1c19zdHJ1Y3Qgdm04NnBsdXM7CiAgICAgdWludDMyX3Qgdjg2Zmxh Z3M7CkBAIC0xMDUsNyArMTE1LDcgQEAKIHN0cnVjdCBsaW51eF9iaW5wcm0gewogICAgICAgICBj aGFyIGJ1ZlsxMjhdOwogICAgICAgICB2b2lkICpwYWdlW01BWF9BUkdfUEFHRVNdOwotICAgICAg ICB0YXJnZXRfdWxvbmcgcDsKKyAgICAgICAgYWJpX3Vsb25nIHA7CiAJaW50IGZkOwogICAgICAg ICBpbnQgZV91aWQsIGVfZ2lkOwogICAgICAgICBpbnQgYXJnYywgZW52YzsKQEAgLTExNSw4ICsx MjUsOCBAQAogfTsKIAogdm9pZCBkb19pbml0X3RocmVhZChzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3Mg KnJlZ3MsIHN0cnVjdCBpbWFnZV9pbmZvICppbmZvcCk7Ci10YXJnZXRfdWxvbmcgbG9hZGVyX2J1 aWxkX2FyZ3B0cihpbnQgZW52YywgaW50IGFyZ2MsIHRhcmdldF91bG9uZyBzcCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBzdHJpbmdwLCBpbnQgcHVzaF9w dHIpOworYWJpX3Vsb25nIGxvYWRlcl9idWlsZF9hcmdwdHIoaW50IGVudmMsIGludCBhcmdjLCBh YmlfdWxvbmcgc3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgc3Ry aW5ncCwgaW50IHB1c2hfcHRyKTsKIGludCBsb2FkZXJfZXhlYyhjb25zdCBjaGFyICogZmlsZW5h bWUsIGNoYXIgKiogYXJndiwgY2hhciAqKiBlbnZwLAogICAgICAgICAgICAgIHN0cnVjdCB0YXJn ZXRfcHRfcmVncyAqIHJlZ3MsIHN0cnVjdCBpbWFnZV9pbmZvICppbmZvcCk7CiAKQEAgLTEzMCwx NCArMTQwLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbWFnZV9pbmZv ICppbmZvKTsKICNlbmRpZgogCi12b2lkIG1lbWNweV90b190YXJnZXQodGFyZ2V0X3Vsb25nIGRl c3QsIGNvbnN0IHZvaWQgKnNyYywKK3ZvaWQgbWVtY3B5X3RvX3RhcmdldChhYmlfdWxvbmcgZGVz dCwgY29uc3Qgdm9pZCAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg bGVuKTsKLXZvaWQgdGFyZ2V0X3NldF9icmsodGFyZ2V0X3Vsb25nIG5ld19icmspOwotdGFyZ2V0 X2xvbmcgZG9fYnJrKHRhcmdldF91bG9uZyBuZXdfYnJrKTsKK3ZvaWQgdGFyZ2V0X3NldF9icmso YWJpX3Vsb25nIG5ld19icmspOworYWJpX2xvbmcgZG9fYnJrKGFiaV91bG9uZyBuZXdfYnJrKTsK IHZvaWQgc3lzY2FsbF9pbml0KHZvaWQpOwotdGFyZ2V0X2xvbmcgZG9fc3lzY2FsbCh2b2lkICpj cHVfZW52LCBpbnQgbnVtLCB0YXJnZXRfbG9uZyBhcmcxLAotICAgICAgICAgICAgICAgICAgICAg ICB0YXJnZXRfbG9uZyBhcmcyLCB0YXJnZXRfbG9uZyBhcmczLCB0YXJnZXRfbG9uZyBhcmc0LAot ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbG9uZyBhcmc1LCB0YXJnZXRfbG9uZyBhcmc2 KTsKK2FiaV9sb25nIGRvX3N5c2NhbGwodm9pZCAqY3B1X2VudiwgaW50IG51bSwgYWJpX2xvbmcg YXJnMSwKKyAgICAgICAgICAgICAgICAgICAgYWJpX2xvbmcgYXJnMiwgYWJpX2xvbmcgYXJnMywg YWJpX2xvbmcgYXJnNCwKKyAgICAgICAgICAgICAgICAgICAgYWJpX2xvbmcgYXJnNSwgYWJpX2xv bmcgYXJnNik7CiB2b2lkIGdlbXVfbG9nKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0 ZV9fKChmb3JtYXQocHJpbnRmLDEsMikpKTsKIGV4dGVybiBDUFVTdGF0ZSAqZ2xvYmFsX2VudjsK IHZvaWQgY3B1X2xvb3AoQ1BVU3RhdGUgKmVudik7CkBAIC0xNTcsMjggKzE2NywyOCBAQAogbG9u ZyBkb19ydF9zaWdyZXR1cm4oQ1BVU3RhdGUgKmVudik7CiBpbnQgZG9fc2lnYWx0c3RhY2soY29u c3Qgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayAqdXNzLAogICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgKnVvc3MsCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0 X3Vsb25nIHNwKTsKKyAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgc3ApOwogCiAjaWZkZWYg VEFSR0VUX0kzODYKIC8qIHZtODYuYyAqLwogdm9pZCBzYXZlX3Y4Nl9zdGF0ZShDUFVYODZTdGF0 ZSAqZW52KTsKIHZvaWQgaGFuZGxlX3ZtODZfdHJhcChDUFVYODZTdGF0ZSAqZW52LCBpbnQgdHJh cG5vKTsKIHZvaWQgaGFuZGxlX3ZtODZfZmF1bHQoQ1BVWDg2U3RhdGUgKmVudik7Ci1pbnQgZG9f dm04NihDUFVYODZTdGF0ZSAqZW52LCBsb25nIHN1YmZ1bmN0aW9uLCB0YXJnZXRfdWxvbmcgdjg2 X2FkZHIpOworaW50IGRvX3ZtODYoQ1BVWDg2U3RhdGUgKmVudiwgbG9uZyBzdWJmdW5jdGlvbiwg YWJpX3Vsb25nIHY4Nl9hZGRyKTsKICNlbGlmIGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpCiB2b2lk IHNwYXJjNjRfc2V0X2NvbnRleHQoQ1BVU1BBUkNTdGF0ZSAqZW52KTsKIHZvaWQgc3BhcmM2NF9n ZXRfY29udGV4dChDUFVTUEFSQ1N0YXRlICplbnYpOwogI2VuZGlmCiAKIC8qIG1tYXAuYyAqLwot aW50IHRhcmdldF9tcHJvdGVjdCh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91bG9uZyBsZW4s IGludCBwcm90KTsKLXRhcmdldF9sb25nIHRhcmdldF9tbWFwKHRhcmdldF91bG9uZyBzdGFydCwg dGFyZ2V0X3Vsb25nIGxlbiwgaW50IHByb3QsCi0gICAgICAgICAgICAgICAgIGludCBmbGFncywg aW50IGZkLCB0YXJnZXRfdWxvbmcgb2Zmc2V0KTsKLWludCB0YXJnZXRfbXVubWFwKHRhcmdldF91 bG9uZyBzdGFydCwgdGFyZ2V0X3Vsb25nIGxlbik7Ci10YXJnZXRfbG9uZyB0YXJnZXRfbXJlbWFw KHRhcmdldF91bG9uZyBvbGRfYWRkciwgdGFyZ2V0X3Vsb25nIG9sZF9zaXplLAotICAgICAgICAg ICAgICAgICAgIHRhcmdldF91bG9uZyBuZXdfc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncywKLSAg ICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgbmV3X2FkZHIpOwotaW50IHRhcmdldF9tc3lu Yyh0YXJnZXRfdWxvbmcgc3RhcnQsIHRhcmdldF91bG9uZyBsZW4sIGludCBmbGFncyk7CitpbnQg dGFyZ2V0X21wcm90ZWN0KGFiaV91bG9uZyBzdGFydCwgYWJpX3Vsb25nIGxlbiwgaW50IHByb3Qp OworYWJpX2xvbmcgdGFyZ2V0X21tYXAoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBp bnQgcHJvdCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywgaW50IGZkLCBhYmlfdWxv bmcgb2Zmc2V0KTsKK2ludCB0YXJnZXRfbXVubWFwKGFiaV91bG9uZyBzdGFydCwgYWJpX3Vsb25n IGxlbik7CithYmlfbG9uZyB0YXJnZXRfbXJlbWFwKGFiaV91bG9uZyBvbGRfYWRkciwgYWJpX3Vs b25nIG9sZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgbmV3X3NpemUs IHVuc2lnbmVkIGxvbmcgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyBu ZXdfYWRkcik7CitpbnQgdGFyZ2V0X21zeW5jKGFiaV91bG9uZyBzdGFydCwgYWJpX3Vsb25nIGxl biwgaW50IGZsYWdzKTsKIAogLyogdXNlciBhY2Nlc3MgKi8KIApAQCAtMjYwLDcgKzI3MCw3IEBA CiAKIC8qIExvY2sgYW4gYXJlYSBvZiBndWVzdCBtZW1vcnkgaW50byB0aGUgaG9zdC4gIElmIGNv cHkgaXMgdHJ1ZSB0aGVuIHRoZQogICAgaG9zdCBhcmVhIHdpbGwgaGF2ZSB0aGUgc2FtZSBjb250 ZW50cyBhcyB0aGUgZ3Vlc3QuICAqLwotc3RhdGljIGlubGluZSB2b2lkICpsb2NrX3VzZXIodGFy Z2V0X3Vsb25nIGd1ZXN0X2FkZHIsIGxvbmcgbGVuLCBpbnQgY29weSkKK3N0YXRpYyBpbmxpbmUg dm9pZCAqbG9ja191c2VyKGFiaV91bG9uZyBndWVzdF9hZGRyLCBsb25nIGxlbiwgaW50IGNvcHkp CiB7CiAjaWZkZWYgREVCVUdfUkVNQVAKICAgICB2b2lkICphZGRyOwpAQCAtMjc3LDggKzI4Nyw4 IEBACiAKIC8qIFVubG9jayBhbiBhcmVhIG9mIGd1ZXN0IG1lbW9yeS4gIFRoZSBmaXJzdCBMRU4g Ynl0ZXMgbXVzdCBiZSBmbHVzaGVkIGJhY2sKICAgIHRvIGd1ZXN0IG1lbW9yeS4gICovCi1zdGF0 aWMgaW5saW5lIHZvaWQgdW5sb2NrX3VzZXIodm9pZCAqaG9zdF9hZGRyLCB0YXJnZXRfdWxvbmcg Z3Vlc3RfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsZW4pCitz dGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrX3VzZXIodm9pZCAqaG9zdF9hZGRyLCBhYmlfdWxvbmcg Z3Vlc3RfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxlbikKIHsK ICNpZmRlZiBERUJVR19SRU1BUAogICAgIGlmIChob3N0X2FkZHIgPT0gZzJoKGd1ZXN0X2FkZHIp KQpAQCAtMjkwLDEzICszMDAsMTMgQEAKIH0KIAogLyogUmV0dXJuIHRoZSBsZW5ndGggb2YgYSBz dHJpbmcgaW4gdGFyZ2V0IG1lbW9yeS4gICovCi1zdGF0aWMgaW5saW5lIGludCB0YXJnZXRfc3Ry bGVuKHRhcmdldF91bG9uZyBwdHIpCitzdGF0aWMgaW5saW5lIGludCB0YXJnZXRfc3RybGVuKGFi aV91bG9uZyBwdHIpCiB7CiAgIHJldHVybiBzdHJsZW4oZzJoKHB0cikpOwogfQogCiAvKiBMaWtl IGxvY2tfdXNlciBidXQgZm9yIG51bGwgdGVybWluYXRlZCBzdHJpbmdzLiAgKi8KLXN0YXRpYyBp bmxpbmUgdm9pZCAqbG9ja191c2VyX3N0cmluZyh0YXJnZXRfdWxvbmcgZ3Vlc3RfYWRkcikKK3N0 YXRpYyBpbmxpbmUgdm9pZCAqbG9ja191c2VyX3N0cmluZyhhYmlfdWxvbmcgZ3Vlc3RfYWRkcikK IHsKICAgICBsb25nIGxlbjsKICAgICBsZW4gPSB0YXJnZXRfc3RybGVuKGd1ZXN0X2FkZHIpICsg MTsKQEAgLTMxNyw3ICszMjcsNyBAQAogI2RlZmluZSB0cHV0MzIoYWRkciwgdmFsKSBzdGwoYWRk ciwgdmFsKQogI2RlZmluZSB0Z2V0NjQoYWRkcikgbGRxKGFkZHIpCiAjZGVmaW5lIHRwdXQ2NChh ZGRyLCB2YWwpIHN0cShhZGRyLCB2YWwpCi0jaWYgVEFSR0VUX0xPTkdfQklUUyA9PSA2NAorI2lm IFRBUkdFVF9BQklfQklUUyA9PSA2NAogI2RlZmluZSB0Z2V0bChhZGRyKSBsZHEoYWRkcikKICNk ZWZpbmUgdHB1dGwoYWRkciwgdmFsKSBzdHEoYWRkciwgdmFsKQogI2Vsc2UKSW5kZXg6IHFlbXUv bGludXgtdXNlci9zaDQvdGFyZ2V0X3NpZ25hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9s aW51eC11c2VyL3NoNC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9zaDQvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAt MTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02LDkgKzYsOSBAQAogLyogdGhpcyBzdHJ1 Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5c2NhbGwgaGFuZGxpbmcgKi8KIAogdHlw ZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKLQl0YXJnZXRfdWxvbmcgc3Nfc3A7Ci0J dGFyZ2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NpemU7CisJYWJpX3Vsb25n IHNzX3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFiaV91bG9uZyBzc19zaXplOwogfSB0YXJn ZXRfc3RhY2tfdDsKIAogCkluZGV4OiBxZW11L2xpbnV4LXVzZXIvc2lnbmFsLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvc2lnbmFsLmMJMjAwNy0xMC0xMSAxOToxNzoxMy4w MDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9zaWduYWwuYwkyMDA3LTEwLTEyIDE1 OjU4OjA4LjAwMDAwMDAwMCArMDAwMApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgPGVycm5v Lmg+CiAjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+CiAKLSNpbmNsdWRlICJ0YXJnZXRfc2lnbmFs LmgiCiAjaW5jbHVkZSAicWVtdS5oIgorI2luY2x1ZGUgInRhcmdldF9zaWduYWwuaCIKIAogLy8j ZGVmaW5lIERFQlVHX1NJR05BTAogCkBAIC0xMzQsMTIgKzEzNCwxMiBAQAogICAgICAgICBpZiAo c2lnbWFzayAmICgxIDw8IGkpKQogICAgICAgICAgICAgdGFyZ2V0X3NpZ21hc2sgfD0gMSA8PCAo aG9zdF90b190YXJnZXRfc2lnbmFsKGkgKyAxKSAtIDEpOwogICAgIH0KLSNpZiBUQVJHRVRfTE9O R19CSVRTID09IDMyICYmIEhPU1RfTE9OR19CSVRTID09IDMyCisjaWYgVEFSR0VUX0FCSV9CSVRT ID09IDMyICYmIEhPU1RfTE9OR19CSVRTID09IDMyCiAgICAgZC0+c2lnWzBdID0gdGFyZ2V0X3Np Z21hc2s7CiAgICAgZm9yKGkgPSAxO2kgPCBUQVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7CiAgICAg ICAgIGQtPnNpZ1tpXSA9ICgodW5zaWduZWQgbG9uZyAqKXMpW2ldOwogICAgIH0KLSNlbGlmIFRB UkdFVF9MT05HX0JJVFMgPT0gMzIgJiYgSE9TVF9MT05HX0JJVFMgPT0gNjQgJiYgVEFSR0VUX05T SUdfV09SRFMgPT0gMgorI2VsaWYgVEFSR0VUX0FCSV9CSVRTID09IDMyICYmIEhPU1RfTE9OR19C SVRTID09IDY0ICYmIFRBUkdFVF9OU0lHX1dPUkRTID09IDIKICAgICBkLT5zaWdbMF0gPSB0YXJn ZXRfc2lnbWFzazsKICAgICBkLT5zaWdbMV0gPSBzaWdtYXNrID4+IDMyOwogI2Vsc2UKQEAgLTE2 MSw3ICsxNjEsNyBAQAogewogICAgIGludCBpOwogICAgIHVuc2lnbmVkIGxvbmcgc2lnbWFzazsK LSAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X3NpZ21hc2s7CisgICAgYWJpX3Vsb25nIHRhcmdldF9z aWdtYXNrOwogCiAgICAgdGFyZ2V0X3NpZ21hc2sgPSBzLT5zaWdbMF07CiAgICAgc2lnbWFzayA9 IDA7CkBAIC0xNjksMTYgKzE2OSwxNiBAQAogICAgICAgICBpZiAodGFyZ2V0X3NpZ21hc2sgJiAo MSA8PCBpKSkKICAgICAgICAgICAgIHNpZ21hc2sgfD0gMSA8PCAodGFyZ2V0X3RvX2hvc3Rfc2ln bmFsKGkgKyAxKSAtIDEpOwogICAgIH0KLSNpZiBUQVJHRVRfTE9OR19CSVRTID09IDMyICYmIEhP U1RfTE9OR19CSVRTID09IDMyCisjaWYgVEFSR0VUX0FCSV9CSVRTID09IDMyICYmIEhPU1RfTE9O R19CSVRTID09IDMyCiAgICAgKCh1bnNpZ25lZCBsb25nICopZClbMF0gPSBzaWdtYXNrOwogICAg IGZvcihpID0gMTtpIDwgVEFSR0VUX05TSUdfV09SRFM7IGkrKykgewogICAgICAgICAoKHVuc2ln bmVkIGxvbmcgKilkKVtpXSA9IHMtPnNpZ1tpXTsKICAgICB9Ci0jZWxpZiBUQVJHRVRfTE9OR19C SVRTID09IDMyICYmIEhPU1RfTE9OR19CSVRTID09IDY0ICYmIFRBUkdFVF9OU0lHX1dPUkRTID09 IDIKKyNlbGlmIFRBUkdFVF9BQklfQklUUyA9PSAzMiAmJiBIT1NUX0xPTkdfQklUUyA9PSA2NCAm JiBUQVJHRVRfTlNJR19XT1JEUyA9PSAyCiAgICAgKCh1bnNpZ25lZCBsb25nICopZClbMF0gPSBz aWdtYXNrIHwgKCh1bnNpZ25lZCBsb25nKShzLT5zaWdbMV0pIDw8IDMyKTsKICNlbHNlCiAjd2Fy bmluZyB0YXJnZXRfdG9faG9zdF9zaWdzZXQKLSNlbmRpZiAvKiBUQVJHRVRfTE9OR19CSVRTICov CisjZW5kaWYgLyogVEFSR0VUX0FCSV9CSVRTICovCiB9CiAKIHZvaWQgdGFyZ2V0X3RvX2hvc3Rf c2lnc2V0KHNpZ3NldF90ICpkLCBjb25zdCB0YXJnZXRfc2lnc2V0X3QgKnMpCkBAIC0xOTEsNyAr MTkxLDcgQEAKICAgICB0YXJnZXRfdG9faG9zdF9zaWdzZXRfaW50ZXJuYWwoZCwgJnMxKTsKIH0K IAotdm9pZCBob3N0X3RvX3RhcmdldF9vbGRfc2lnc2V0KHRhcmdldF91bG9uZyAqb2xkX3NpZ3Nl dCwKK3ZvaWQgaG9zdF90b190YXJnZXRfb2xkX3NpZ3NldChhYmlfdWxvbmcgKm9sZF9zaWdzZXQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnc2V0X3QgKnNpZ3NldCkK IHsKICAgICB0YXJnZXRfc2lnc2V0X3QgZDsKQEAgLTIwMCw3ICsyMDAsNyBAQAogfQogCiB2b2lk IHRhcmdldF90b19ob3N0X29sZF9zaWdzZXQoc2lnc2V0X3QgKnNpZ3NldCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRfdWxvbmcgKm9sZF9zaWdzZXQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJpX3Vsb25nICpvbGRfc2lnc2V0KQog ewogICAgIHRhcmdldF9zaWdzZXRfdCBkOwogICAgIGludCBpOwpAQCAtMjMzLDcgKzIzMyw3IEBA CiAgICAgICAgIHRpbmZvLT5fc2lmaWVsZHMuX3J0Ll91aWQgPSBpbmZvLT5zaV91aWQ7CiAgICAg ICAgIC8qIFhYWDogcG90ZW50aWFsIHByb2JsZW0gaWYgNjQgYml0ICovCiAgICAgICAgIHRpbmZv LT5fc2lmaWVsZHMuX3J0Ll9zaWd2YWwuc2l2YWxfcHRyID0KLSAgICAgICAgICAgICh0YXJnZXRf dWxvbmcpaW5mby0+c2lfdmFsdWUuc2l2YWxfcHRyOworICAgICAgICAgICAgKGFiaV91bG9uZylp bmZvLT5zaV92YWx1ZS5zaXZhbF9wdHI7CiAgICAgfQogfQogCkBAIC0zNTUsNyArMzU1LDcgQEAK IHsKICAgICBzdHJ1Y3QgZW11bGF0ZWRfc2lnYWN0aW9uICprOwogICAgIHN0cnVjdCBzaWdxdWV1 ZSAqcSwgKipwcTsKLSAgICB0YXJnZXRfdWxvbmcgaGFuZGxlcjsKKyAgICBhYmlfdWxvbmcgaGFu ZGxlcjsKIAogI2lmIGRlZmluZWQoREVCVUdfU0lHTkFMKQogICAgIGZwcmludGYoc3RkZXJyLCAi cXVldWVfc2lnbmFsOiBzaWc9JWRcbiIsCkBAIC00NDAsNyArNDQwLDcgQEAKIAogaW50IGRvX3Np Z2FsdHN0YWNrKGNvbnN0IHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgKnVzcywKICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrICp1b3NzLAotICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyBzcCkKKyAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgc3Ap CiB7CiAgICAgaW50IHJldDsKICAgICBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIG9zczsKQEAg LTU3OSwyOSArNTc5LDI5IEBACiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3htbXJlZyB7Ci0JdGFyZ2V0 X3Vsb25nIGVsZW1lbnRbNF07CisJYWJpX3Vsb25nIGVsZW1lbnRbNF07CiB9OwogCiBzdHJ1Y3Qg dGFyZ2V0X2Zwc3RhdGUgewogCS8qIFJlZ3VsYXIgRlBVIGVudmlyb25tZW50ICovCi0JdGFyZ2V0 X3Vsb25nIAljdzsKLQl0YXJnZXRfdWxvbmcJc3c7Ci0JdGFyZ2V0X3Vsb25nCXRhZzsKLQl0YXJn ZXRfdWxvbmcJaXBvZmY7Ci0JdGFyZ2V0X3Vsb25nCWNzc2VsOwotCXRhcmdldF91bG9uZwlkYXRh b2ZmOwotCXRhcmdldF91bG9uZwlkYXRhc2VsOworICAgICAgICBhYmlfdWxvbmcgICAgICAgY3c7 CisgICAgICAgIGFiaV91bG9uZyAgICAgICBzdzsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIHRh ZzsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIGlwb2ZmOworICAgICAgICBhYmlfdWxvbmcgICAg ICAgY3NzZWw7CisgICAgICAgIGFiaV91bG9uZyAgICAgICBkYXRhb2ZmOworICAgICAgICBhYmlf dWxvbmcgICAgICAgZGF0YXNlbDsKIAlzdHJ1Y3QgdGFyZ2V0X2ZwcmVnCV9zdFs4XTsKIAl1aW50 MTZfdAlzdGF0dXM7CiAJdWludDE2X3QJbWFnaWM7CQkvKiAweGZmZmYgPSByZWd1bGFyIEZQVSBk YXRhIG9ubHkgKi8KIAogCS8qIEZYU1IgRlBVIGVudmlyb25tZW50ICovCi0JdGFyZ2V0X3Vsb25n CV9meHNyX2Vudls2XTsJLyogRlhTUiBGUFUgZW52IGlzIGlnbm9yZWQgKi8KLQl0YXJnZXRfdWxv bmcJbXhjc3I7Ci0JdGFyZ2V0X3Vsb25nCXJlc2VydmVkOworICAgICAgICBhYmlfdWxvbmcgICAg ICAgX2Z4c3JfZW52WzZdOyAgIC8qIEZYU1IgRlBVIGVudiBpcyBpZ25vcmVkICovCisgICAgICAg IGFiaV91bG9uZyAgICAgICBteGNzcjsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgIHJlc2VydmVk OwogCXN0cnVjdCB0YXJnZXRfZnB4cmVnCV9meHNyX3N0WzhdOwkvKiBGWFNSIEZQVSByZWcgZGF0 YSBpcyBpZ25vcmVkICovCiAJc3RydWN0IHRhcmdldF94bW1yZWcJX3htbVs4XTsKLQl0YXJnZXRf dWxvbmcJcGFkZGluZ1s1Nl07CisgICAgICAgIGFiaV91bG9uZyAgICAgICBwYWRkaW5nWzU2XTsK IH07CiAKICNkZWZpbmUgWDg2X0ZYU1JfTUFHSUMJCTB4MDAwMApAQCAtNjExLDI5ICs2MTEsMjkg QEAKIAl1aW50MTZfdCBmcywgX19mc2g7CiAJdWludDE2X3QgZXMsIF9fZXNoOwogCXVpbnQxNl90 IGRzLCBfX2RzaDsKLQl0YXJnZXRfdWxvbmcgZWRpOwotCXRhcmdldF91bG9uZyBlc2k7Ci0JdGFy Z2V0X3Vsb25nIGVicDsKLQl0YXJnZXRfdWxvbmcgZXNwOwotCXRhcmdldF91bG9uZyBlYng7Ci0J dGFyZ2V0X3Vsb25nIGVkeDsKLQl0YXJnZXRfdWxvbmcgZWN4OwotCXRhcmdldF91bG9uZyBlYXg7 Ci0JdGFyZ2V0X3Vsb25nIHRyYXBubzsKLQl0YXJnZXRfdWxvbmcgZXJyOwotCXRhcmdldF91bG9u ZyBlaXA7CisgICAgICAgIGFiaV91bG9uZyBlZGk7CisgICAgICAgIGFiaV91bG9uZyBlc2k7Cisg ICAgICAgIGFiaV91bG9uZyBlYnA7CisgICAgICAgIGFiaV91bG9uZyBlc3A7CisgICAgICAgIGFi aV91bG9uZyBlYng7CisgICAgICAgIGFiaV91bG9uZyBlZHg7CisgICAgICAgIGFiaV91bG9uZyBl Y3g7CisgICAgICAgIGFiaV91bG9uZyBlYXg7CisgICAgICAgIGFiaV91bG9uZyB0cmFwbm87Cisg ICAgICAgIGFiaV91bG9uZyBlcnI7CisgICAgICAgIGFiaV91bG9uZyBlaXA7CiAJdWludDE2X3Qg Y3MsIF9fY3NoOwotCXRhcmdldF91bG9uZyBlZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIGVzcF9hdF9z aWduYWw7CisgICAgICAgIGFiaV91bG9uZyBlZmxhZ3M7CisgICAgICAgIGFiaV91bG9uZyBlc3Bf YXRfc2lnbmFsOwogCXVpbnQxNl90IHNzLCBfX3NzaDsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIGZw c3RhdGU7IC8qIHBvaW50ZXIgKi8KLQl0YXJnZXRfdWxvbmcgb2xkbWFzazsKLQl0YXJnZXRfdWxv bmcgY3IyOworICAgICAgICBhYmlfdWxvbmcgZnBzdGF0ZTsgLyogcG9pbnRlciAqLworICAgICAg ICBhYmlfdWxvbmcgb2xkbWFzazsKKyAgICAgICAgYWJpX3Vsb25nIGNyMjsKIH07CiAKIHN0cnVj dCB0YXJnZXRfdWNvbnRleHQgewotICAgICAgICB0YXJnZXRfdWxvbmcJICB0dWNfZmxhZ3M7Ci0J dGFyZ2V0X3Vsb25nICAgICAgdHVjX2xpbms7CisgICAgICAgIGFiaV91bG9uZyAgICAgICAgIHR1 Y19mbGFnczsKKyAgICAgICAgYWJpX3Vsb25nICAgICAgICAgdHVjX2xpbms7CiAJdGFyZ2V0X3N0 YWNrX3QJICB0dWNfc3RhY2s7CiAJc3RydWN0IHRhcmdldF9zaWdjb250ZXh0IHR1Y19tY29udGV4 dDsKIAl0YXJnZXRfc2lnc2V0X3QJICB0dWNfc2lnbWFzazsJLyogbWFzayBsYXN0IGZvciBleHRl bnNpYmlsaXR5ICovCkBAIC02NDEsMjAgKzY0MSwyMCBAQAogCiBzdHJ1Y3Qgc2lnZnJhbWUKIHsK LSAgICB0YXJnZXRfdWxvbmcgcHJldGNvZGU7CisgICAgYWJpX3Vsb25nIHByZXRjb2RlOwogICAg IGludCBzaWc7CiAgICAgc3RydWN0IHRhcmdldF9zaWdjb250ZXh0IHNjOwogICAgIHN0cnVjdCB0 YXJnZXRfZnBzdGF0ZSBmcHN0YXRlOwotICAgIHRhcmdldF91bG9uZyBleHRyYW1hc2tbVEFSR0VU X05TSUdfV09SRFMtMV07CisgICAgYWJpX3Vsb25nIGV4dHJhbWFza1tUQVJHRVRfTlNJR19XT1JE Uy0xXTsKICAgICBjaGFyIHJldGNvZGVbOF07CiB9OwogCiBzdHJ1Y3QgcnRfc2lnZnJhbWUKIHsK LSAgICB0YXJnZXRfdWxvbmcgcHJldGNvZGU7CisgICAgYWJpX3Vsb25nIHByZXRjb2RlOwogICAg IGludCBzaWc7Ci0gICAgdGFyZ2V0X3Vsb25nIHBpbmZvOwotICAgIHRhcmdldF91bG9uZyBwdWM7 CisgICAgYWJpX3Vsb25nIHBpbmZvOworICAgIGFiaV91bG9uZyBwdWM7CiAgICAgc3RydWN0IHRh cmdldF9zaWdpbmZvIGluZm87CiAgICAgc3RydWN0IHRhcmdldF91Y29udGV4dCB1YzsKICAgICBz dHJ1Y3QgdGFyZ2V0X2Zwc3RhdGUgZnBzdGF0ZTsKQEAgLTgxMyw4ICs4MTMsOCBAQAogCQkgICAg CSAgID8gY3VycmVudC0+ZXhlY19kb21haW4tPnNpZ25hbF9pbnZtYXBbc2lnXQogCQkJICAgOiAq L3NpZyksCiAJCQkgICZmcmFtZS0+c2lnKTsKLQllcnIgfD0gX19wdXRfdXNlcigodGFyZ2V0X3Vs b25nKSZmcmFtZS0+aW5mbywgJmZyYW1lLT5waW5mbyk7Ci0JZXJyIHw9IF9fcHV0X3VzZXIoKHRh cmdldF91bG9uZykmZnJhbWUtPnVjLCAmZnJhbWUtPnB1Yyk7CisJZXJyIHw9IF9fcHV0X3VzZXIo KGFiaV91bG9uZykmZnJhbWUtPmluZm8sICZmcmFtZS0+cGluZm8pOworCWVyciB8PSBfX3B1dF91 c2VyKChhYmlfdWxvbmcpJmZyYW1lLT51YywgJmZyYW1lLT5wdWMpOwogCWVyciB8PSBjb3B5X3Np Z2luZm9fdG9fdXNlcigmZnJhbWUtPmluZm8sIGluZm8pOwogCWlmIChlcnIpCiAJCWdvdG8gZ2l2 ZV9zaWdzZWd2OwpAQCAtOTc3LDMyICs5NzcsMzIgQEAKICNlbGlmIGRlZmluZWQoVEFSR0VUX0FS TSkKIAogc3RydWN0IHRhcmdldF9zaWdjb250ZXh0IHsKLQl0YXJnZXRfdWxvbmcgdHJhcF9ubzsK LQl0YXJnZXRfdWxvbmcgZXJyb3JfY29kZTsKLQl0YXJnZXRfdWxvbmcgb2xkbWFzazsKLQl0YXJn ZXRfdWxvbmcgYXJtX3IwOwotCXRhcmdldF91bG9uZyBhcm1fcjE7Ci0JdGFyZ2V0X3Vsb25nIGFy bV9yMjsKLQl0YXJnZXRfdWxvbmcgYXJtX3IzOwotCXRhcmdldF91bG9uZyBhcm1fcjQ7Ci0JdGFy Z2V0X3Vsb25nIGFybV9yNTsKLQl0YXJnZXRfdWxvbmcgYXJtX3I2OwotCXRhcmdldF91bG9uZyBh cm1fcjc7Ci0JdGFyZ2V0X3Vsb25nIGFybV9yODsKLQl0YXJnZXRfdWxvbmcgYXJtX3I5OwotCXRh cmdldF91bG9uZyBhcm1fcjEwOwotCXRhcmdldF91bG9uZyBhcm1fZnA7Ci0JdGFyZ2V0X3Vsb25n IGFybV9pcDsKLQl0YXJnZXRfdWxvbmcgYXJtX3NwOwotCXRhcmdldF91bG9uZyBhcm1fbHI7Ci0J dGFyZ2V0X3Vsb25nIGFybV9wYzsKLQl0YXJnZXRfdWxvbmcgYXJtX2Nwc3I7Ci0JdGFyZ2V0X3Vs b25nIGZhdWx0X2FkZHJlc3M7CisJYWJpX3Vsb25nIHRyYXBfbm87CisJYWJpX3Vsb25nIGVycm9y X2NvZGU7CisJYWJpX3Vsb25nIG9sZG1hc2s7CisJYWJpX3Vsb25nIGFybV9yMDsKKwlhYmlfdWxv bmcgYXJtX3IxOworCWFiaV91bG9uZyBhcm1fcjI7CisJYWJpX3Vsb25nIGFybV9yMzsKKwlhYmlf dWxvbmcgYXJtX3I0OworCWFiaV91bG9uZyBhcm1fcjU7CisJYWJpX3Vsb25nIGFybV9yNjsKKwlh YmlfdWxvbmcgYXJtX3I3OworCWFiaV91bG9uZyBhcm1fcjg7CisJYWJpX3Vsb25nIGFybV9yOTsK KwlhYmlfdWxvbmcgYXJtX3IxMDsKKwlhYmlfdWxvbmcgYXJtX2ZwOworCWFiaV91bG9uZyBhcm1f aXA7CisJYWJpX3Vsb25nIGFybV9zcDsKKwlhYmlfdWxvbmcgYXJtX2xyOworCWFiaV91bG9uZyBh cm1fcGM7CisJYWJpX3Vsb25nIGFybV9jcHNyOworCWFiaV91bG9uZyBmYXVsdF9hZGRyZXNzOwog fTsKIAogc3RydWN0IHRhcmdldF91Y29udGV4dCB7Ci0gICAgdGFyZ2V0X3Vsb25nIHR1Y19mbGFn czsKLSAgICB0YXJnZXRfdWxvbmcgdHVjX2xpbms7CisgICAgYWJpX3Vsb25nIHR1Y19mbGFnczsK KyAgICBhYmlfdWxvbmcgdHVjX2xpbms7CiAgICAgdGFyZ2V0X3N0YWNrX3QgdHVjX3N0YWNrOwog ICAgIHN0cnVjdCB0YXJnZXRfc2lnY29udGV4dCB0dWNfbWNvbnRleHQ7CiAgICAgdGFyZ2V0X3Np Z3NldF90ICB0dWNfc2lnbWFzazsJLyogbWFzayBsYXN0IGZvciBleHRlbnNpYmlsaXR5ICovCkBA IC0xMDExLDggKzEwMTEsOCBAQAogc3RydWN0IHNpZ2ZyYW1lCiB7CiAgICAgc3RydWN0IHRhcmdl dF9zaWdjb250ZXh0IHNjOwotICAgIHRhcmdldF91bG9uZyBleHRyYW1hc2tbVEFSR0VUX05TSUdf V09SRFMtMV07Ci0gICAgdGFyZ2V0X3Vsb25nIHJldGNvZGU7CisgICAgYWJpX3Vsb25nIGV4dHJh bWFza1tUQVJHRVRfTlNJR19XT1JEUy0xXTsKKyAgICBhYmlfdWxvbmcgcmV0Y29kZTsKIH07CiAK IHN0cnVjdCBydF9zaWdmcmFtZQpAQCAtMTAyMSw3ICsxMDIxLDcgQEAKICAgICB2b2lkICpwdWM7 CiAgICAgc3RydWN0IHRhcmdldF9zaWdpbmZvIGluZm87CiAgICAgc3RydWN0IHRhcmdldF91Y29u dGV4dCB1YzsKLSAgICB0YXJnZXRfdWxvbmcgcmV0Y29kZTsKKyAgICBhYmlfdWxvbmcgcmV0Y29k ZTsKIH07CiAKICNkZWZpbmUgVEFSR0VUX0NPTkZJR19DUFVfMzIgMQpAQCAtMTAzOSw3ICsxMDM5 LDcgQEAKICNkZWZpbmUgU1dJX1RIVU1CX1NJR1JFVFVSTgkoMHhkZjAwIDw8IDE2IHwgMHgyNzAw IHwgKFRBUkdFVF9OUl9zaWdyZXR1cm4pKQogI2RlZmluZSBTV0lfVEhVTUJfUlRfU0lHUkVUVVJO CSgweGRmMDAgPDwgMTYgfCAweDI3MDAgfCAoVEFSR0VUX05SX3J0X3NpZ3JldHVybikpCiAKLXN0 YXRpYyBjb25zdCB0YXJnZXRfdWxvbmcgcmV0Y29kZXNbNF0gPSB7CitzdGF0aWMgY29uc3QgYWJp X3Vsb25nIHJldGNvZGVzWzRdID0gewogCVNXSV9TWVNfU0lHUkVUVVJOLAlTV0lfVEhVTUJfU0lH UkVUVVJOLAogCVNXSV9TWVNfUlRfU0lHUkVUVVJOLAlTV0lfVEhVTUJfUlRfU0lHUkVUVVJOCiB9 OwpAQCAtMTEwNSwxNCArMTEwNSwxNCBAQAogCiBzdGF0aWMgaW50CiBzZXR1cF9yZXR1cm4oQ1BV U3RhdGUgKmVudiwgc3RydWN0IGVtdWxhdGVkX3NpZ2FjdGlvbiAqa2EsCi0JICAgICB0YXJnZXRf dWxvbmcgKnJjLCB2b2lkICpmcmFtZSwgaW50IHVzaWcpCisJICAgICBhYmlfdWxvbmcgKnJjLCB2 b2lkICpmcmFtZSwgaW50IHVzaWcpCiB7Ci0JdGFyZ2V0X3Vsb25nIGhhbmRsZXIgPSAodGFyZ2V0 X3Vsb25nKWthLT5zYS5fc2FfaGFuZGxlcjsKLQl0YXJnZXRfdWxvbmcgcmV0Y29kZTsKKwlhYmlf dWxvbmcgaGFuZGxlciA9IChhYmlfdWxvbmcpa2EtPnNhLl9zYV9oYW5kbGVyOworCWFiaV91bG9u ZyByZXRjb2RlOwogCWludCB0aHVtYiA9IDA7CiAjaWYgZGVmaW5lZChUQVJHRVRfQ09ORklHX0NQ VV8zMikKICNpZiAwCi0JdGFyZ2V0X3Vsb25nIGNwc3IgPSBlbnYtPmNwc3I7CisJYWJpX3Vsb25n IGNwc3IgPSBlbnYtPmNwc3I7CiAKIAkvKgogCSAqIE1heWJlIHdlIG5lZWQgdG8gZGVsaXZlciBh IDMyLWJpdCBzaWduYWwgdG8gYSAyNi1iaXQgdGFzay4KQEAgLTExMzgsNyArMTEzOCw3IEBACiAj ZW5kaWYgLyogVEFSR0VUX0NPTkZJR19DUFVfMzIgKi8KIAogCWlmIChrYS0+c2Euc2FfZmxhZ3Mg JiBUQVJHRVRfU0FfUkVTVE9SRVIpIHsKLQkJcmV0Y29kZSA9ICh0YXJnZXRfdWxvbmcpa2EtPnNh LnNhX3Jlc3RvcmVyOworCQlyZXRjb2RlID0gKGFiaV91bG9uZylrYS0+c2Euc2FfcmVzdG9yZXI7 CiAJfSBlbHNlIHsKIAkJdW5zaWduZWQgaW50IGlkeCA9IHRodW1iOwogCkBAIC0xMTQ4LDEwICsx MTQ4LDEwIEBACiAJCWlmIChfX3B1dF91c2VyKHJldGNvZGVzW2lkeF0sIHJjKSkKIAkJCXJldHVy biAxOwogI2lmIDAKLQkJZmx1c2hfaWNhY2hlX3JhbmdlKCh0YXJnZXRfdWxvbmcpcmMsCi0JCQkJ ICAgKHRhcmdldF91bG9uZykocmMgKyAxKSk7CisJCWZsdXNoX2ljYWNoZV9yYW5nZSgoYWJpX3Vs b25nKXJjLAorCQkJCSAgIChhYmlfdWxvbmcpKHJjICsgMSkpOwogI2VuZGlmCi0JCXJldGNvZGUg PSAoKHRhcmdldF91bG9uZylyYykgKyB0aHVtYjsKKwkJcmV0Y29kZSA9ICgoYWJpX3Vsb25nKXJj KSArIHRodW1iOwogCX0KIAogCWVudi0+cmVnc1swXSA9IHVzaWc7CkBAIC0xMTk3LDggKzExOTcs OCBAQAogCWlmICghYWNjZXNzX29rKFZFUklGWV9XUklURSwgZnJhbWUsIHNpemVvZiAoKmZyYW1l KSkpCiAgICAgICAgICAgICByZXR1cm4gLyogMSAqLzsKIAotCV9fcHV0X3VzZXJfZXJyb3IoJmZy YW1lLT5pbmZvLCAodGFyZ2V0X3Vsb25nICopJmZyYW1lLT5waW5mbywgZXJyKTsKLQlfX3B1dF91 c2VyX2Vycm9yKCZmcmFtZS0+dWMsICh0YXJnZXRfdWxvbmcgKikmZnJhbWUtPnB1YywgZXJyKTsK KwlfX3B1dF91c2VyX2Vycm9yKCZmcmFtZS0+aW5mbywgKGFiaV91bG9uZyAqKSZmcmFtZS0+cGlu Zm8sIGVycik7CisJX19wdXRfdXNlcl9lcnJvcigmZnJhbWUtPnVjLCAoYWJpX3Vsb25nICopJmZy YW1lLT5wdWMsIGVycik7CiAJZXJyIHw9IGNvcHlfc2lnaW5mb190b191c2VyKCZmcmFtZS0+aW5m bywgaW5mbyk7CiAKIAkvKiBDbGVhciBhbGwgdGhlIGJpdHMgb2YgdGhlIHVjb250ZXh0IHdlIGRv bid0IHVzZS4gICovCkBAIC0xMjI5LDggKzEyMjksOCBAQAogCQkgKiBhcmd1bWVudHMgZm9yIHRo ZSBzaWduYWwgaGFuZGxlci4KIAkJICogICAtLSBQZXRlciBNYXlkZWxsIDxwbWF5ZGVsbEBjaGlh cmsuZ3JlZW5lbmQub3JnLnVrPiAyMDAwLTEyLTA2CiAJCSAqLwotICAgICAgICAgICAgZW52LT5y ZWdzWzFdID0gKHRhcmdldF91bG9uZylmcmFtZS0+cGluZm87Ci0gICAgICAgICAgICBlbnYtPnJl Z3NbMl0gPSAodGFyZ2V0X3Vsb25nKWZyYW1lLT5wdWM7CisgICAgICAgICAgICBlbnYtPnJlZ3Nb MV0gPSAoYWJpX3Vsb25nKWZyYW1lLT5waW5mbzsKKyAgICAgICAgICAgIGVudi0+cmVnc1syXSA9 IChhYmlfdWxvbmcpZnJhbWUtPnB1YzsKIAl9CiAKICAgICAgICAgLy8JcmV0dXJuIGVycjsKQEAg LTEzNjAsNDggKzEzNjAsNDggQEAKIAogLyogVGhpcyBpcyB3aGF0IFN1bk9TIGRvZXMsIHNvIHNo YWxsIEkuICovCiBzdHJ1Y3QgdGFyZ2V0X3NpZ2NvbnRleHQgewotICAgICAgICB0YXJnZXRfdWxv bmcgc2lnY19vbnN0YWNrOyAgICAgIC8qIHN0YXRlIHRvIHJlc3RvcmUgKi8KKyAgICAgICAgYWJp X3Vsb25nIHNpZ2Nfb25zdGFjazsgICAgICAvKiBzdGF0ZSB0byByZXN0b3JlICovCiAKLSAgICAg ICAgdGFyZ2V0X3Vsb25nIHNpZ2NfbWFzazsgICAgICAgICAvKiBzaWdtYXNrIHRvIHJlc3RvcmUg Ki8KLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNpZ2Nfc3A7ICAgICAgICAgICAvKiBzdGFjayBwb2lu dGVyICovCi0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX3BjOyAgICAgICAgICAgLyogcHJvZ3Jh bSBjb3VudGVyICovCi0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX25wYzsgICAgICAgICAgLyog bmV4dCBwcm9ncmFtIGNvdW50ZXIgKi8KLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNpZ2NfcHNyOyAg ICAgICAgICAvKiBmb3IgY29uZGl0aW9uIGNvZGVzIGV0YyAqLwotICAgICAgICB0YXJnZXRfdWxv bmcgc2lnY19nMTsgICAgICAgICAgIC8qIFVzZXIgdXNlcyB0aGVzZSB0d28gcmVnaXN0ZXJzICov Ci0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX28wOyAgICAgICAgICAgLyogd2l0aGluIHRoZSB0 cmFtcG9saW5lIGNvZGUuICovCisgICAgICAgIGFiaV91bG9uZyBzaWdjX21hc2s7ICAgICAgICAg Lyogc2lnbWFzayB0byByZXN0b3JlICovCisgICAgICAgIGFiaV91bG9uZyBzaWdjX3NwOyAgICAg ICAgICAgLyogc3RhY2sgcG9pbnRlciAqLworICAgICAgICBhYmlfdWxvbmcgc2lnY19wYzsgICAg ICAgICAgIC8qIHByb2dyYW0gY291bnRlciAqLworICAgICAgICBhYmlfdWxvbmcgc2lnY19ucGM7 ICAgICAgICAgIC8qIG5leHQgcHJvZ3JhbSBjb3VudGVyICovCisgICAgICAgIGFiaV91bG9uZyBz aWdjX3BzcjsgICAgICAgICAgLyogZm9yIGNvbmRpdGlvbiBjb2RlcyBldGMgKi8KKyAgICAgICAg YWJpX3Vsb25nIHNpZ2NfZzE7ICAgICAgICAgICAvKiBVc2VyIHVzZXMgdGhlc2UgdHdvIHJlZ2lz dGVycyAqLworICAgICAgICBhYmlfdWxvbmcgc2lnY19vMDsgICAgICAgICAgIC8qIHdpdGhpbiB0 aGUgdHJhbXBvbGluZSBjb2RlLiAqLwogCiAgICAgICAgIC8qIE5vdyBjb21lcyBpbmZvcm1hdGlv biByZWdhcmRpbmcgdGhlIHVzZXJzIHdpbmRvdyBzZXQKICAgICAgICAgICogYXQgdGhlIHRpbWUg b2YgdGhlIHNpZ25hbC4KICAgICAgICAgICovCi0gICAgICAgIHRhcmdldF91bG9uZyBzaWdjX29z d2luczsgICAgICAgLyogb3V0c3RhbmRpbmcgd2luZG93cyAqLworICAgICAgICBhYmlfdWxvbmcg c2lnY19vc3dpbnM7ICAgICAgIC8qIG91dHN0YW5kaW5nIHdpbmRvd3MgKi8KIAogICAgICAgICAv KiBzdGFjayBwdHJzIGZvciBlYWNoIHJlZ3dpbiBidWYgKi8KICAgICAgICAgY2hhciAqc2lnY19z cGJ1ZltfX1NVTk9TX01BWFdJTl07CiAKICAgICAgICAgLyogV2luZG93cyB0byByZXN0b3JlIGFm dGVyIHNpZ25hbCAqLwogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIHRhcmdldF91 bG9uZyBsb2NhbHNbOF07Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGluc1s4XTsKKyAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgbG9jYWxzWzhdOworICAgICAgICAgICAgICAgIGFiaV91 bG9uZyBpbnNbOF07CiAgICAgICAgIH0gc2lnY193YnVmW19fU1VOT1NfTUFYV0lOXTsKIH07CiAv KiBBIFNwYXJjIHN0YWNrIGZyYW1lICovCiBzdHJ1Y3Qgc3BhcmNfc3RhY2tmIHsKLSAgICAgICAg dGFyZ2V0X3Vsb25nIGxvY2Fsc1s4XTsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIGluc1s2XTsKKyAg ICAgICAgYWJpX3Vsb25nIGxvY2Fsc1s4XTsKKyAgICAgICAgYWJpX3Vsb25nIGluc1s2XTsKICAg ICAgICAgc3RydWN0IHNwYXJjX3N0YWNrZiAqZnA7Ci0gICAgICAgIHRhcmdldF91bG9uZyBjYWxs ZXJzX3BjOworICAgICAgICBhYmlfdWxvbmcgY2FsbGVyc19wYzsKICAgICAgICAgY2hhciAqc3Ry dWN0cHRyOwotICAgICAgICB0YXJnZXRfdWxvbmcgeGFyZ3NbNl07Ci0gICAgICAgIHRhcmdldF91 bG9uZyB4eGFyZ3NbMV07CisgICAgICAgIGFiaV91bG9uZyB4YXJnc1s2XTsKKyAgICAgICAgYWJp X3Vsb25nIHh4YXJnc1sxXTsKIH07CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICAgICAgc3RydWN0 IHsKLSAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgcHNyOwotICAgICAgICAgICAgICAgIHRh cmdldF91bG9uZyBwYzsKLSAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgbnBjOwotICAgICAg ICAgICAgICAgIHRhcmdldF91bG9uZyB5OwotICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB1 X3JlZ3NbMTZdOyAvKiBnbG9iYWxzIGFuZCBpbnMgKi8KKyAgICAgICAgICAgICAgICBhYmlfdWxv bmcgcHNyOworICAgICAgICAgICAgICAgIGFiaV91bG9uZyBwYzsKKyAgICAgICAgICAgICAgICBh YmlfdWxvbmcgbnBjOworICAgICAgICAgICAgICAgIGFiaV91bG9uZyB5OworICAgICAgICAgICAg ICAgIGFiaV91bG9uZyB1X3JlZ3NbMTZdOyAvKiBnbG9iYWxzIGFuZCBpbnMgKi8KICAgICAgICAg fSAgICAgICAgICAgICAgIHNpX3JlZ3M7CiAgICAgICAgIGludCAgICAgICAgICAgICBzaV9tYXNr OwogfSBfX3NpZ2luZm9fdDsKQEAgLTE0MjEsMTUgKzE0MjEsMTUgQEAKIAlzdHJ1Y3Qgc3BhcmNf c3RhY2tmCXNzOwogCV9fc2lnaW5mb190CQlpbmZvOwogCXFlbXVfc2lnaW5mb19mcHVfdCAJKmZw dV9zYXZlOwotCXRhcmdldF91bG9uZwkJaW5zbnNbMl0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQg KDgpKSk7Ci0JdGFyZ2V0X3Vsb25nCQlleHRyYW1hc2tbVEFSR0VUX05TSUdfV09SRFMgLSAxXTsK LQl0YXJnZXRfdWxvbmcJCWV4dHJhX3NpemU7IC8qIFNob3VsZCBiZSAwICovCisJYWJpX3Vsb25n CQlpbnNuc1syXSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoOCkpKTsKKwlhYmlfdWxvbmcJCWV4 dHJhbWFza1tUQVJHRVRfTlNJR19XT1JEUyAtIDFdOworCWFiaV91bG9uZwkJZXh0cmFfc2l6ZTsg LyogU2hvdWxkIGJlIDAgKi8KIAlxZW11X3NpZ2luZm9fZnB1X3QJZnB1X3N0YXRlOwogfTsKIHN0 cnVjdCB0YXJnZXRfcnRfc2lnbmFsX2ZyYW1lIHsKIAlzdHJ1Y3Qgc3BhcmNfc3RhY2tmCXNzOwog CXNpZ2luZm9fdAkJaW5mbzsKLQl0YXJnZXRfdWxvbmcJCXJlZ3NbMjBdOworCWFiaV91bG9uZwkJ cmVnc1syMF07CiAJc2lnc2V0X3QJCW1hc2s7CiAJcWVtdV9zaWdpbmZvX2ZwdV90IAkqZnB1X3Nh dmU7CiAJdW5zaWduZWQgaW50CQlpbnNuc1syXTsKQEAgLTE0NjgsNyArMTQ2OCw3IEBACiB9CiAK IHN0YXRpYyBpbnQKLXNldHVwX19fc2lnaW5mbyhfX3NpZ2luZm9fdCAqc2ksIENQVVN0YXRlICpl bnYsIHRhcmdldF91bG9uZyBtYXNrKQorc2V0dXBfX19zaWdpbmZvKF9fc2lnaW5mb190ICpzaSwg Q1BVU3RhdGUgKmVudiwgYWJpX3Vsb25nIG1hc2spCiB7CiAJaW50IGVyciA9IDAsIGk7CiAKQEAg LTE2MzQsNyArMTYzNCw3IEBACiAgICAgICAgIHVpbnQzMl90IHVwX3BzciwgcGMsIG5wYzsKICAg ICAgICAgdGFyZ2V0X3NpZ3NldF90IHNldDsKICAgICAgICAgc2lnc2V0X3QgaG9zdF9zZXQ7Ci0g ICAgICAgIHRhcmdldF91bG9uZyBmcHVfc2F2ZTsKKyAgICAgICAgYWJpX3Vsb25nIGZwdV9zYXZl OwogICAgICAgICBpbnQgZXJyLCBpOwogCiAgICAgICAgIHNmID0gKHN0cnVjdCB0YXJnZXRfc2ln bmFsX2ZyYW1lICopZzJoKGVudi0+cmVnd3B0cltVUkVHX0ZQXSk7CkBAIC0xNjc2LDcgKzE2NzYs NyBAQAogCQllcnIgfD0gX19nZXRfdXNlcihlbnYtPnJlZ3dwdHJbaSArIFVSRUdfSTBdLCAmc2Yt PmluZm8uc2lfcmVncy51X3JlZ3NbaSs4XSk7CiAJfQogCi0gICAgICAgIGVyciB8PSBfX2dldF91 c2VyKGZwdV9zYXZlLCAodGFyZ2V0X3Vsb25nICopJnNmLT5mcHVfc2F2ZSk7CisgICAgICAgIGVy ciB8PSBfX2dldF91c2VyKGZwdV9zYXZlLCAoYWJpX3Vsb25nICopJnNmLT5mcHVfc2F2ZSk7CiAK ICAgICAgICAgLy9pZiAoZnB1X3NhdmUpCiAgICAgICAgIC8vICAgICAgICBlcnIgfD0gcmVzdG9y ZV9mcHVfc3RhdGUoZW52LCBmcHVfc2F2ZSk7CkBAIC0xNzI5LDExICsxNzI5LDExIEBACiAjZGVm aW5lIE1DX083IDE4CiAjZGVmaW5lIE1DX05HUkVHIDE5CiAKLXR5cGVkZWYgdGFyZ2V0X3Vsb25n IHRhcmdldF9tY19ncmVnX3Q7Cit0eXBlZGVmIGFiaV91bG9uZyB0YXJnZXRfbWNfZ3JlZ190Owog dHlwZWRlZiB0YXJnZXRfbWNfZ3JlZ190IHRhcmdldF9tY19ncmVnc2V0X3RbTUNfTkdSRUddOwog CiBzdHJ1Y3QgdGFyZ2V0X21jX2ZxIHsKLSAgICB0YXJnZXRfdWxvbmcgKm1jZnFfYWRkcjsKKyAg ICBhYmlfdWxvbmcgKm1jZnFfYWRkcjsKICAgICB1aW50MzJfdCBtY2ZxX2luc247CiB9OwogCkBA IC0xNzQzLDkgKzE3NDMsOSBAQAogICAgICAgICB1aW50NjRfdCBkcmVnc1szMl07CiAgICAgICAg IC8vdWludDEyOF90IHFyZWdzWzE2XTsKICAgICB9IG1jZnB1X2ZyZWdzOwotICAgIHRhcmdldF91 bG9uZyBtY2ZwdV9mc3I7Ci0gICAgdGFyZ2V0X3Vsb25nIG1jZnB1X2ZwcnM7Ci0gICAgdGFyZ2V0 X3Vsb25nIG1jZnB1X2dzcjsKKyAgICBhYmlfdWxvbmcgbWNmcHVfZnNyOworICAgIGFiaV91bG9u ZyBtY2ZwdV9mcHJzOworICAgIGFiaV91bG9uZyBtY2ZwdV9nc3I7CiAgICAgc3RydWN0IHRhcmdl dF9tY19mcSAqbWNmcHVfZnE7CiAgICAgdW5zaWduZWQgY2hhciBtY2ZwdV9xY250OwogICAgIHVu c2lnbmVkIGNoYXIgbWNmcHVfcWVudHN6OwpAQCAtMTc2MiwxNSArMTc2MiwxNSBAQAogCiBzdHJ1 Y3QgdGFyZ2V0X3Vjb250ZXh0IHsKICAgICBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0ICp1Y19saW5r OwotICAgIHRhcmdldF91bG9uZyB1Y19mbGFnczsKKyAgICBhYmlfdWxvbmcgdWNfZmxhZ3M7CiAg ICAgdGFyZ2V0X3NpZ3NldF90IHVjX3NpZ21hc2s7CiAgICAgdGFyZ2V0X21jb250ZXh0X3QgdWNf bWNvbnRleHQ7CiB9OwogCiAvKiBBIFY5IHJlZ2lzdGVyIHdpbmRvdyAqLwogc3RydWN0IHRhcmdl dF9yZWdfd2luZG93IHsKLSAgICB0YXJnZXRfdWxvbmcgbG9jYWxzWzhdOwotICAgIHRhcmdldF91 bG9uZyBpbnNbOF07CisgICAgYWJpX3Vsb25nIGxvY2Fsc1s4XTsKKyAgICBhYmlfdWxvbmcgaW5z WzhdOwogfTsKIAogI2RlZmluZSBUQVJHRVRfU1RBQ0tfQklBUyAyMDQ3CkBAIC0xNzgxLDEyICsx NzgxLDEyIEBACiAgICAgc3RydWN0IHRhcmdldF91Y29udGV4dCAqdWNwID0gKHN0cnVjdCB0YXJn ZXRfdWNvbnRleHQgKikKICAgICAgICAgZW52LT5yZWd3cHRyW1VSRUdfSTBdOwogICAgIHRhcmdl dF9tY19ncmVnc2V0X3QgKmdycDsKLSAgICB0YXJnZXRfdWxvbmcgcGMsIG5wYywgdHN0YXRlOwot ICAgIHRhcmdldF91bG9uZyBmcCwgaTc7CisgICAgYWJpX3Vsb25nIHBjLCBucGMsIHRzdGF0ZTsK KyAgICBhYmlfdWxvbmcgZnAsIGk3OwogICAgIHVuc2lnbmVkIGNoYXIgZmVuYWI7CiAgICAgaW50 IGVycjsKICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICB0YXJnZXRfdWxvbmcgKnNyYywgKmRzdDsK KyAgICBhYmlfdWxvbmcgKnNyYywgKmRzdDsKIAogICAgIGdycCAgPSAmdWNwLT51Y19tY29udGV4 dC5tY19ncmVnczsKICAgICBlcnIgID0gZ2V0X3VzZXIocGMsICYoKCpncnApW01DX1BDXSkpOwpA QCAtMTgwMyw3ICsxODAzLDcgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNyYyA9 ICZ1Y3AtPnVjX3NpZ21hc2s7CiAgICAgICAgICAgICBkc3QgPSAmdGFyZ2V0X3NldDsKLSAgICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSAvIHNpemVvZih0 YXJnZXRfdWxvbmcpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0YXJnZXRf c2lnc2V0X3QpIC8gc2l6ZW9mKGFiaV91bG9uZyk7CiAgICAgICAgICAgICAgICAgIGkrKywgZHN0 KyssIHNyYysrKQogICAgICAgICAgICAgICAgIGVyciB8PSBnZXRfdXNlcihkc3QsIHNyYyk7CiAg ICAgICAgICAgICBpZiAoZXJyKQpAQCAtMTg2NiwxMCArMTg2NiwxMCBAQAogICAgICAgICBlbnYt PnJlZ3dwdHJbVVJFR19JMF07CiAgICAgdGFyZ2V0X21jX2dyZWdzZXRfdCAqZ3JwOwogICAgIHRh cmdldF9tY29udGV4dF90ICptY3A7Ci0gICAgdGFyZ2V0X3Vsb25nIGZwLCBpNzsKKyAgICBhYmlf dWxvbmcgZnAsIGk3OwogICAgIGludCBlcnI7CiAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgdGFy Z2V0X3Vsb25nICpzcmMsICpkc3Q7CisgICAgYWJpX3Vsb25nICpzcmMsICpkc3Q7CiAgICAgdGFy Z2V0X3NpZ3NldF90IHRhcmdldF9zZXQ7CiAgICAgc2lnc2V0X3Qgc2V0OwogCkBAIC0xODg2LDEx ICsxODg2LDExIEBACiAgICAgaG9zdF90b190YXJnZXRfc2lnc2V0X2ludGVybmFsKCZ0YXJnZXRf c2V0LCAmc2V0KTsKICAgICBpZiAoVEFSR0VUX05TSUdfV09SRFMgPT0gMSkKICAgICAgICAgZXJy IHw9IHB1dF91c2VyKHRhcmdldF9zZXQuc2lnWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAg KHRhcmdldF91bG9uZyAqKSZ1Y3AtPnVjX3NpZ21hc2spOworICAgICAgICAgICAgICAgICAgICAg ICAgKGFiaV91bG9uZyAqKSZ1Y3AtPnVjX3NpZ21hc2spOwogICAgIGVsc2UgewogICAgICAgICBz cmMgPSAmdGFyZ2V0X3NldDsKICAgICAgICAgZHN0ID0gJnVjcC0+dWNfc2lnbWFzazsKLSAgICAg ICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0YXJnZXRfc2lnc2V0X3QpIC8gc2l6ZW9mKHRhcmdl dF91bG9uZyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodGFyZ2V0X3NpZ3NldF90 KSAvIHNpemVvZihhYmlfdWxvbmcpOwogICAgICAgICAgICAgIGkrKywgZHN0KyssIHNyYysrKQog ICAgICAgICAgICAgZXJyIHw9IHB1dF91c2VyKHNyYywgZHN0KTsKICAgICAgICAgaWYgKGVycikK QEAgLTIwMTMsMTIgKzIwMTMsMTIgQEAKICAgICB1aW50MzJfdCAgIHNjX2RzcDsgICAgICAgICAv KiBkc3Agc3RhdHVzLCB3YXMgc2Nfc3NmbGFncyAqLwogICAgIHVpbnQ2NF90ICAgc2NfbWRoaTsK ICAgICB1aW50NjRfdCAgIHNjX21kbG87Ci0gICAgdGFyZ2V0X3Vsb25nICAgc2NfaGkxOyAgICAg ICAgIC8qIFdhcyBzY19jYXVzZSAqLwotICAgIHRhcmdldF91bG9uZyAgIHNjX2xvMTsgICAgICAg ICAvKiBXYXMgc2NfYmFkdmFkZHIgKi8KLSAgICB0YXJnZXRfdWxvbmcgICBzY19oaTI7ICAgICAg ICAgLyogV2FzIHNjX3NpZ3NldFs0XSAqLwotICAgIHRhcmdldF91bG9uZyAgIHNjX2xvMjsKLSAg ICB0YXJnZXRfdWxvbmcgICBzY19oaTM7Ci0gICAgdGFyZ2V0X3Vsb25nICAgc2NfbG8zOworICAg IGFiaV91bG9uZyAgc2NfaGkxOyAgICAgICAgIC8qIFdhcyBzY19jYXVzZSAqLworICAgIGFiaV91 bG9uZyAgc2NfbG8xOyAgICAgICAgIC8qIFdhcyBzY19iYWR2YWRkciAqLworICAgIGFiaV91bG9u ZyAgc2NfaGkyOyAgICAgICAgIC8qIFdhcyBzY19zaWdzZXRbNF0gKi8KKyAgICBhYmlfdWxvbmcg IHNjX2xvMjsKKyAgICBhYmlfdWxvbmcgIHNjX2hpMzsKKyAgICBhYmlfdWxvbmcgIHNjX2xvMzsK IH07CiAKIHN0cnVjdCBzaWdmcmFtZSB7CkBAIC0yMzU0LDcgKzIzNTQsNyBAQAogdm9pZCBwcm9j ZXNzX3BlbmRpbmdfc2lnbmFscyh2b2lkICpjcHVfZW52KQogewogICAgIGludCBzaWc7Ci0gICAg dGFyZ2V0X3Vsb25nIGhhbmRsZXI7CisgICAgYWJpX3Vsb25nIGhhbmRsZXI7CiAgICAgc2lnc2V0 X3Qgc2V0LCBvbGRfc2V0OwogICAgIHRhcmdldF9zaWdzZXRfdCB0YXJnZXRfb2xkX3NldDsKICAg ICBzdHJ1Y3QgZW11bGF0ZWRfc2lnYWN0aW9uICprOwpJbmRleDogcWVtdS9saW51eC11c2VyL3Nw YXJjL3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9zcGFyYy9z eXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGlu dXgtdXNlci9zcGFyYy9zeXNjYWxsLmgJMjAwNy0xMC0xMSAxOToxNzo0Ni4wMDAwMDAwMDAgKzAw MDAKQEAgLTEsOSArMSw5IEBACiBzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgewotCXRhcmdldF91bG9u ZyBwc3I7Ci0JdGFyZ2V0X3Vsb25nIHBjOwotCXRhcmdldF91bG9uZyBucGM7Ci0JdGFyZ2V0X3Vs b25nIHk7Ci0JdGFyZ2V0X3Vsb25nIHVfcmVnc1sxNl07CisJYWJpX3Vsb25nIHBzcjsKKwlhYmlf dWxvbmcgcGM7CisJYWJpX3Vsb25nIG5wYzsKKwlhYmlfdWxvbmcgeTsKKwlhYmlfdWxvbmcgdV9y ZWdzWzE2XTsKIH07CiAKICNkZWZpbmUgVU5BTUVfTUFDSElORSAic3VuNCIKSW5kZXg6IHFlbXUv bGludXgtdXNlci9zcGFyYy90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmln L2xpbnV4LXVzZXIvc3BhcmMvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIvc3BhcmMvdGFyZ2V0X3NpZ25hbC5oCTIw MDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC02LDkgKzYsOSBAQAogLyogdGhp cyBzdHJ1Y3QgZGVmaW5lcyBhIHN0YWNrIHVzZWQgZHVyaW5nIHN5c2NhbGwgaGFuZGxpbmcgKi8K IAogdHlwZWRlZiBzdHJ1Y3QgdGFyZ2V0X3NpZ2FsdHN0YWNrIHsKLQl0YXJnZXRfdWxvbmcgc3Nf c3A7Ci0JdGFyZ2V0X2xvbmcgc3NfZmxhZ3M7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NpemU7CisJYWJp X3Vsb25nIHNzX3NwOworCWFiaV9sb25nIHNzX2ZsYWdzOworCWFiaV91bG9uZyBzc19zaXplOwog fSB0YXJnZXRfc3RhY2tfdDsKIAogCkBAIC0yOCw3ICsyOCw3IEBACiAjZGVmaW5lIFVSRUdfRlAg ICAgICAgIFVSRUdfSTYKICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIHRhcmdldF91bG9uZyBnZXRf c3BfZnJvbV9jcHVzdGF0ZShDUFVTUEFSQ1N0YXRlICpzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgYWJp X3Vsb25nIGdldF9zcF9mcm9tX2NwdXN0YXRlKENQVVNQQVJDU3RhdGUgKnN0YXRlKQogewogICAg IHJldHVybiBzdGF0ZS0+cmVnd3B0cltVUkVHX0ZQXTsKIH0KSW5kZXg6IHFlbXUvbGludXgtdXNl ci9zcGFyYzY0L3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9z cGFyYzY0L3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysg cWVtdS9saW51eC11c2VyL3NwYXJjNjQvc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAw MDAwMDAwICswMDAwCkBAIC0xLDEwICsxLDEwIEBACiBzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3Mgewot CXRhcmdldF91bG9uZyB1X3JlZ3NbMTZdOwotCXRhcmdldF91bG9uZyB0c3RhdGU7Ci0JdGFyZ2V0 X3Vsb25nIHBjOwotCXRhcmdldF91bG9uZyBucGM7Ci0JdGFyZ2V0X3Vsb25nIHk7Ci0JdGFyZ2V0 X3Vsb25nIGZwcnM7CisJYWJpX3Vsb25nIHVfcmVnc1sxNl07CisJYWJpX3Vsb25nIHRzdGF0ZTsK KwlhYmlfdWxvbmcgcGM7CisJYWJpX3Vsb25nIG5wYzsKKwlhYmlfdWxvbmcgeTsKKwlhYmlfdWxv bmcgZnByczsKIH07CiAKICNkZWZpbmUgVU5BTUVfTUFDSElORSAic3VuNHUiCkluZGV4OiBxZW11 L2xpbnV4LXVzZXIvc3BhcmM2NC90YXJnZXRfc2lnbmFsLmgKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5v cmlnL2xpbnV4LXVzZXIvc3BhcmM2NC90YXJnZXRfc2lnbmFsLmgJMjAwNy0xMC0xMSAxOToxNzox NC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvbGludXgtdXNlci9zcGFyYzY0L3RhcmdldF9zaWdu YWwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNiw5ICs2LDkgQEAK IC8qIHRoaXMgc3RydWN0IGRlZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBzeXNjYWxsIGhhbmRs aW5nICovCiAKIHR5cGVkZWYgc3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7Ci0JdGFyZ2V0X3Vs b25nIHNzX3NwOwotCXRhcmdldF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91bG9uZyBzc19zaXpl OworCWFiaV91bG9uZyBzc19zcDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlhYmlfdWxvbmcgc3Nf c2l6ZTsKIH0gdGFyZ2V0X3N0YWNrX3Q7CiAKIApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBV UkVHX0ZQICAgICAgICBVUkVHX0k2CiAjZW5kaWYKIAotc3RhdGljIGlubGluZSB0YXJnZXRfdWxv bmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVU1BBUkNTdGF0ZSAqc3RhdGUpCitzdGF0aWMgaW5s aW5lIGFiaV91bG9uZyBnZXRfc3BfZnJvbV9jcHVzdGF0ZShDUFVTUEFSQ1N0YXRlICpzdGF0ZSkK IHsKICAgICByZXR1cm4gc3RhdGUtPnJlZ3dwdHJbVVJFR19GUF07CiB9CkluZGV4OiBxZW11L2xp bnV4LXVzZXIvc3lzY2FsbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9saW51eC11c2VyL3N5 c2NhbGwuYwkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9saW51 eC11c2VyL3N5c2NhbGwuYwkyMDA3LTEwLTEyIDE2OjAzOjM2LjAwMDAwMDAwMCArMDAwMApAQCAt MzY4LDcgKzM2OCw3IEBACiAgICAgcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGlubGluZSB0YXJn ZXRfbG9uZyBnZXRfZXJybm8odGFyZ2V0X2xvbmcgcmV0KQorc3RhdGljIGlubGluZSBhYmlfbG9u ZyBnZXRfZXJybm8oYWJpX2xvbmcgcmV0KQogewogICAgIGlmIChyZXQgPT0gLTEpCiAgICAgICAg IHJldHVybiAtaG9zdF90b190YXJnZXRfZXJybm8oZXJybm8pOwpAQCAtMzc2LDIzICszNzYsMjMg QEAKICAgICAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgaXNfZXJyb3Io dGFyZ2V0X2xvbmcgcmV0KQorc3RhdGljIGlubGluZSBpbnQgaXNfZXJyb3IoYWJpX2xvbmcgcmV0 KQogewotICAgIHJldHVybiAodGFyZ2V0X3Vsb25nKXJldCA+PSAodGFyZ2V0X3Vsb25nKSgtNDA5 Nik7CisgICAgcmV0dXJuIChhYmlfdWxvbmcpcmV0ID49IChhYmlfdWxvbmcpKC00MDk2KTsKIH0K IAotc3RhdGljIHRhcmdldF91bG9uZyB0YXJnZXRfYnJrOwotc3RhdGljIHRhcmdldF91bG9uZyB0 YXJnZXRfb3JpZ2luYWxfYnJrOworc3RhdGljIGFiaV91bG9uZyB0YXJnZXRfYnJrOworc3RhdGlj IGFiaV91bG9uZyB0YXJnZXRfb3JpZ2luYWxfYnJrOwogCi12b2lkIHRhcmdldF9zZXRfYnJrKHRh cmdldF91bG9uZyBuZXdfYnJrKQordm9pZCB0YXJnZXRfc2V0X2JyayhhYmlfdWxvbmcgbmV3X2Jy aykKIHsKICAgICB0YXJnZXRfb3JpZ2luYWxfYnJrID0gdGFyZ2V0X2JyayA9IEhPU1RfUEFHRV9B TElHTihuZXdfYnJrKTsKIH0KIAotdGFyZ2V0X2xvbmcgZG9fYnJrKHRhcmdldF91bG9uZyBuZXdf YnJrKQorYWJpX2xvbmcgZG9fYnJrKGFiaV91bG9uZyBuZXdfYnJrKQogewotICAgIHRhcmdldF91 bG9uZyBicmtfcGFnZTsKLSAgICB0YXJnZXRfbG9uZyBtYXBwZWRfYWRkcjsKKyAgICBhYmlfdWxv bmcgYnJrX3BhZ2U7CisgICAgYWJpX2xvbmcgbWFwcGVkX2FkZHI7CiAgICAgaW50CW5ld19hbGxv Y19zaXplOwogCiAgICAgaWYgKCFuZXdfYnJrKQpAQCAtNDIyLDcgKzQyMiw3IEBACiB9CiAKIHN0 YXRpYyBpbmxpbmUgZmRfc2V0ICp0YXJnZXRfdG9faG9zdF9mZHMoZmRfc2V0ICpmZHMsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9sb25nICp0YXJnZXRf ZmRzLCBpbnQgbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJp X2xvbmcgKnRhcmdldF9mZHMsIGludCBuKQogewogI2lmICFkZWZpbmVkKEJTV0FQX05FRURFRCkg JiYgIWRlZmluZWQoV09SRFNfQklHRU5ESUFOKQogICAgIHJldHVybiAoZmRfc2V0ICopdGFyZ2V0 X2ZkczsKQEAgLTQzMSw4ICs0MzEsOCBAQAogICAgIGlmICh0YXJnZXRfZmRzKSB7CiAgICAgICAg IEZEX1pFUk8oZmRzKTsKICAgICAgICAgZm9yKGkgPSAwO2kgPCBuOyBpKyspIHsKLSAgICAgICAg ICAgIGIgPSAodHN3YXBsKHRhcmdldF9mZHNbaSAvIFRBUkdFVF9MT05HX0JJVFNdKSA+PgotICAg ICAgICAgICAgICAgICAoaSAmIChUQVJHRVRfTE9OR19CSVRTIC0gMSkpKSAmIDE7CisgICAgICAg ICAgICBiID0gKHRzd2FwbCh0YXJnZXRfZmRzW2kgLyBUQVJHRVRfQUJJX0JJVFNdKSA+PgorICAg ICAgICAgICAgICAgICAoaSAmIChUQVJHRVRfQUJJX0JJVFMgLSAxKSkpICYgMTsKICAgICAgICAg ICAgIGlmIChiKQogICAgICAgICAgICAgICAgIEZEX1NFVChpLCBmZHMpOwogICAgICAgICB9CkBA IC00NDMsMjEgKzQ0MywyMSBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0 X3RvX3RhcmdldF9mZHModGFyZ2V0X2xvbmcgKnRhcmdldF9mZHMsCitzdGF0aWMgaW5saW5lIHZv aWQgaG9zdF90b190YXJnZXRfZmRzKGFiaV9sb25nICp0YXJnZXRfZmRzLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKmZkcywgaW50IG4pCiB7CiAjaWYgIWRl ZmluZWQoQlNXQVBfTkVFREVEKSAmJiAhZGVmaW5lZChXT1JEU19CSUdFTkRJQU4pCiAgICAgLyog bm90aGluZyB0byBkbyAqLwogI2Vsc2UKICAgICBpbnQgaSwgbncsIGosIGs7Ci0gICAgdGFyZ2V0 X2xvbmcgdjsKKyAgICBhYmlfbG9uZyB2OwogCiAgICAgaWYgKHRhcmdldF9mZHMpIHsKLSAgICAg ICAgbncgPSAobiArIFRBUkdFVF9MT05HX0JJVFMgLSAxKSAvIFRBUkdFVF9MT05HX0JJVFM7Cisg ICAgICAgIG53ID0gKG4gKyBUQVJHRVRfQUJJX0JJVFMgLSAxKSAvIFRBUkdFVF9BQklfQklUUzsK ICAgICAgICAgayA9IDA7CiAgICAgICAgIGZvcihpID0gMDtpIDwgbnc7IGkrKykgewogICAgICAg ICAgICAgdiA9IDA7Ci0gICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBUQVJHRVRfTE9OR19CSVRT OyBqKyspIHsKKyAgICAgICAgICAgIGZvcihqID0gMDsgaiA8IFRBUkdFVF9BQklfQklUUzsgaisr KSB7CiAgICAgICAgICAgICAgICAgdiB8PSAoKEZEX0lTU0VUKGssIGZkcykgIT0gMCkgPDwgaik7 CiAgICAgICAgICAgICAgICAgaysrOwogICAgICAgICAgICAgfQpAQCAtNDczLDcgKzQ3Myw3IEBA CiAjZGVmaW5lIEhPU1RfSFogMTAwCiAjZW5kaWYKIAotc3RhdGljIGlubGluZSB0YXJnZXRfbG9u ZyBob3N0X3RvX3RhcmdldF9jbG9ja190KGxvbmcgdGlja3MpCitzdGF0aWMgaW5saW5lIGFiaV9s b25nIGhvc3RfdG9fdGFyZ2V0X2Nsb2NrX3QobG9uZyB0aWNrcykKIHsKICNpZiBIT1NUX0haID09 IFRBUkdFVF9IWgogICAgIHJldHVybiB0aWNrczsKQEAgLTQ4Miw3ICs0ODIsNyBAQAogI2VuZGlm CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9ydXNhZ2UodGFyZ2V0X3Vs b25nIHRhcmdldF9hZGRyLAorc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3J1c2Fn ZShhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBydXNhZ2UgKnJ1c2FnZSkKIHsKICAgICBzdHJ1Y3QgdGFy Z2V0X3J1c2FnZSAqdGFyZ2V0X3J1c2FnZTsKQEAgLTUxMCw3ICs1MTAsNyBAQAogfQogCiBzdGF0 aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3RfdGltZXZhbChzdHJ1Y3QgdGltZXZhbCAqdHYs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcg dGFyZ2V0X2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh YmlfdWxvbmcgdGFyZ2V0X2FkZHIpCiB7CiAgICAgc3RydWN0IHRhcmdldF90aW1ldmFsICp0YXJn ZXRfdHY7CiAKQEAgLTUyMCw3ICs1MjAsNyBAQAogICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfdHYsIHRhcmdldF9hZGRyLCAwKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9f dGFyZ2V0X3RpbWV2YWwodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorc3RhdGljIGlubGluZSB2 b2lkIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWV2YWwg KnR2KQogewogICAgIHN0cnVjdCB0YXJnZXRfdGltZXZhbCAqdGFyZ2V0X3R2OwpAQCAtNTMyLDMz ICs1MzIsMzMgQEAKIH0KIAogCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9fc2VsZWN0KGludCBuLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgcmZkX3AsIHRhcmdldF91 bG9uZyB3ZmRfcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGVm ZF9wLCB0YXJnZXRfdWxvbmcgdGFyZ2V0X3R2KQorc3RhdGljIGFiaV9sb25nIGRvX3NlbGVjdChp bnQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHJmZF9wLCBhYmlfdWxv bmcgd2ZkX3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyBlZmRfcCwgYWJp X3Vsb25nIHRhcmdldF90dikKIHsKICAgICBmZF9zZXQgcmZkcywgd2ZkcywgZWZkczsKICAgICBm ZF9zZXQgKnJmZHNfcHRyLCAqd2Zkc19wdHIsICplZmRzX3B0cjsKLSAgICB0YXJnZXRfbG9uZyAq dGFyZ2V0X3JmZHMsICp0YXJnZXRfd2ZkcywgKnRhcmdldF9lZmRzOworICAgIGFiaV9sb25nICp0 YXJnZXRfcmZkcywgKnRhcmdldF93ZmRzLCAqdGFyZ2V0X2VmZHM7CiAgICAgc3RydWN0IHRpbWV2 YWwgdHYsICp0dl9wdHI7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsK ICAgICBpbnQgb2s7CiAKICAgICBpZiAocmZkX3ApIHsKLSAgICAgICAgdGFyZ2V0X3JmZHMgPSBs b2NrX3VzZXIocmZkX3AsIHNpemVvZih0YXJnZXRfbG9uZykgKiBuLCAxKTsKKyAgICAgICAgdGFy Z2V0X3JmZHMgPSBsb2NrX3VzZXIocmZkX3AsIHNpemVvZihhYmlfbG9uZykgKiBuLCAxKTsKICAg ICAgICAgcmZkc19wdHIgPSB0YXJnZXRfdG9faG9zdF9mZHMoJnJmZHMsIHRhcmdldF9yZmRzLCBu KTsKICAgICB9IGVsc2UgewogICAgICAgICB0YXJnZXRfcmZkcyA9IE5VTEw7CiAgICAgICAgIHJm ZHNfcHRyID0gTlVMTDsKICAgICB9CiAgICAgaWYgKHdmZF9wKSB7Ci0gICAgICAgIHRhcmdldF93 ZmRzID0gbG9ja191c2VyKHdmZF9wLCBzaXplb2YodGFyZ2V0X2xvbmcpICogbiwgMSk7CisgICAg ICAgIHRhcmdldF93ZmRzID0gbG9ja191c2VyKHdmZF9wLCBzaXplb2YoYWJpX2xvbmcpICogbiwg MSk7CiAgICAgICAgIHdmZHNfcHRyID0gdGFyZ2V0X3RvX2hvc3RfZmRzKCZ3ZmRzLCB0YXJnZXRf d2Zkcywgbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGFyZ2V0X3dmZHMgPSBOVUxMOwogICAg ICAgICB3ZmRzX3B0ciA9IE5VTEw7CiAgICAgfQogICAgIGlmIChlZmRfcCkgewotICAgICAgICB0 YXJnZXRfZWZkcyA9IGxvY2tfdXNlcihlZmRfcCwgc2l6ZW9mKHRhcmdldF9sb25nKSAqIG4sIDEp OworICAgICAgICB0YXJnZXRfZWZkcyA9IGxvY2tfdXNlcihlZmRfcCwgc2l6ZW9mKGFiaV9sb25n KSAqIG4sIDEpOwogICAgICAgICBlZmRzX3B0ciA9IHRhcmdldF90b19ob3N0X2ZkcygmZWZkcywg dGFyZ2V0X2VmZHMsIG4pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHRhcmdldF9lZmRzID0gTlVM TDsKQEAgLTU4NCwxNyArNTg0LDE3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHRhcmdl dF9yZmRzKQotICAgICAgICB1bmxvY2tfdXNlcih0YXJnZXRfcmZkcywgcmZkX3AsIG9rID8gc2l6 ZW9mKHRhcmdldF9sb25nKSAqIG4gOiAwKTsKKyAgICAgICAgdW5sb2NrX3VzZXIodGFyZ2V0X3Jm ZHMsIHJmZF9wLCBvayA/IHNpemVvZihhYmlfbG9uZykgKiBuIDogMCk7CiAgICAgaWYgKHRhcmdl dF93ZmRzKQotICAgICAgICB1bmxvY2tfdXNlcih0YXJnZXRfd2Zkcywgd2ZkX3AsIG9rID8gc2l6 ZW9mKHRhcmdldF9sb25nKSAqIG4gOiAwKTsKKyAgICAgICAgdW5sb2NrX3VzZXIodGFyZ2V0X3dm ZHMsIHdmZF9wLCBvayA/IHNpemVvZihhYmlfbG9uZykgKiBuIDogMCk7CiAgICAgaWYgKHRhcmdl dF9lZmRzKQotICAgICAgICB1bmxvY2tfdXNlcih0YXJnZXRfZWZkcywgZWZkX3AsIG9rID8gc2l6 ZW9mKHRhcmdldF9sb25nKSAqIG4gOiAwKTsKKyAgICAgICAgdW5sb2NrX3VzZXIodGFyZ2V0X2Vm ZHMsIGVmZF9wLCBvayA/IHNpemVvZihhYmlfbG9uZykgKiBuIDogMCk7CiAKICAgICByZXR1cm4g cmV0OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3Rfc29ja2FkZHIoc3Ry dWN0IHNvY2thZGRyICphZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90IGxlbikKIHsKICAgICBzdHJ1 Y3QgdGFyZ2V0X3NvY2thZGRyICp0YXJnZXRfc2FkZHI7CkBAIC02MDUsNyArNjA1LDcgQEAKICAg ICB1bmxvY2tfdXNlcih0YXJnZXRfc2FkZHIsIHRhcmdldF9hZGRyLCAwKTsKIH0KIAotc3RhdGlj IGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdldF91bG9uZyB0YXJnZXRf YWRkciwKK3N0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9zb2NrYWRkcihhYmlfdWxv bmcgdGFyZ2V0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHNvY2thZGRyICphZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNvY2tsZW5fdCBsZW4pCiB7CkBAIC03MDYsMTAgKzcwNiwxMCBAQAogICAg IG1zZ2gtPm1zZ19jb250cm9sbGVuID0gdHN3YXBsKHNwYWNlKTsKIH0KIAotc3RhdGljIHRhcmdl dF9sb25nIGRvX3NldHNvY2tvcHQoaW50IHNvY2tmZCwgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBvcHR2YWwsIHNv Y2tsZW5fdCBvcHRsZW4pCitzdGF0aWMgYWJpX2xvbmcgZG9fc2V0c29ja29wdChpbnQgc29ja2Zk LCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YWJpX3Vsb25nIG9wdHZhbCwgc29ja2xlbl90IG9wdGxlbikKIHsKLSAgICB0YXJnZXRfbG9uZyBy ZXQ7CisgICAgYWJpX2xvbmcgcmV0OwogICAgIGludCB2YWw7CiAKICAgICBzd2l0Y2gobGV2ZWwp IHsKQEAgLTgyNywxMCArODI3LDEwIEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHRh cmdldF9sb25nIGRvX2dldHNvY2tvcHQoaW50IHNvY2tmZCwgaW50IGxldmVsLCBpbnQgb3B0bmFt ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBvcHR2YWws IHRhcmdldF91bG9uZyBvcHRsZW4pCitzdGF0aWMgYWJpX2xvbmcgZG9fZ2V0c29ja29wdChpbnQg c29ja2ZkLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWJpX3Vsb25nIG9wdHZhbCwgYWJpX3Vsb25nIG9wdGxlbikKIHsKLSAgICB0YXJnZXRf bG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0OwogICAgIGludCBsZW4sIGx2LCB2YWw7CiAKICAg ICBzd2l0Y2gobGV2ZWwpIHsKQEAgLTkxNiwxMSArOTE2LDExIEBACiAgICAgcmV0dXJuIHJldDsK IH0KIAotc3RhdGljIHZvaWQgbG9ja19pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnZlYywgdGFyZ2V0X3Vs b25nIHRhcmdldF9hZGRyLAorc3RhdGljIHZvaWQgbG9ja19pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnZl YywgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291 bnQsIGludCBjb3B5KQogewogICAgIHN0cnVjdCB0YXJnZXRfaW92ZWMgKnRhcmdldF92ZWM7Ci0g ICAgdGFyZ2V0X3Vsb25nIGJhc2U7CisgICAgYWJpX3Vsb25nIGJhc2U7CiAgICAgaW50IGk7CiAK ICAgICB0YXJnZXRfdmVjID0gbG9ja191c2VyKHRhcmdldF9hZGRyLCBjb3VudCAqIHNpemVvZihz dHJ1Y3QgdGFyZ2V0X2lvdmVjKSwgMSk7CkBAIC05MzIsMTEgKzkzMiwxMSBAQAogICAgIHVubG9j a191c2VyICh0YXJnZXRfdmVjLCB0YXJnZXRfYWRkciwgMCk7CiB9CiAKLXN0YXRpYyB2b2lkIHVu bG9ja19pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnZlYywgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAor c3RhdGljIHZvaWQgdW5sb2NrX2lvdmVjKHN0cnVjdCBpb3ZlYyAqdmVjLCBhYmlfdWxvbmcgdGFy Z2V0X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgY29weSkK IHsKICAgICBzdHJ1Y3QgdGFyZ2V0X2lvdmVjICp0YXJnZXRfdmVjOwotICAgIHRhcmdldF91bG9u ZyBiYXNlOworICAgIGFiaV91bG9uZyBiYXNlOwogICAgIGludCBpOwogCiAgICAgdGFyZ2V0X3Zl YyA9IGxvY2tfdXNlcih0YXJnZXRfYWRkciwgY291bnQgKiBzaXplb2Yoc3RydWN0IHRhcmdldF9p b3ZlYyksIDEpOwpAQCAtOTQ3LDcgKzk0Nyw3IEBACiAgICAgdW5sb2NrX3VzZXIgKHRhcmdldF92 ZWMsIHRhcmdldF9hZGRyLCAwKTsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX3NvY2tldChp bnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQorc3RhdGljIGFiaV9sb25nIGRvX3Nv Y2tldChpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQogewogI2lmIGRlZmluZWQo VEFSR0VUX01JUFMpCiAgICAgc3dpdGNoKHR5cGUpIHsKQEAgLTk3NCw4ICs5NzQsOCBAQAogICAg IHJldHVybiBnZXRfZXJybm8oc29ja2V0KGRvbWFpbiwgdHlwZSwgcHJvdG9jb2wpKTsKIH0KIAot c3RhdGljIHRhcmdldF9sb25nIGRvX2JpbmQoaW50IHNvY2tmZCwgdGFyZ2V0X3Vsb25nIHRhcmdl dF9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90IGFkZHJsZW4pCitz dGF0aWMgYWJpX2xvbmcgZG9fYmluZChpbnQgc29ja2ZkLCBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIs CisgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgYWRkcmxlbikKIHsKICAgICB2b2lk ICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOwogCkBAIC05ODMsOCArOTgzLDggQEAKICAgICByZXR1 cm4gZ2V0X2Vycm5vKGJpbmQoc29ja2ZkLCBhZGRyLCBhZGRybGVuKSk7CiB9CiAKLXN0YXRpYyB0 YXJnZXRfbG9uZyBkb19jb25uZWN0KGludCBzb2NrZmQsIHRhcmdldF91bG9uZyB0YXJnZXRfYWRk ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBhZGRybGVuKQorc3Rh dGljIGFiaV9sb25nIGRvX2Nvbm5lY3QoaW50IHNvY2tmZCwgYWJpX3Vsb25nIHRhcmdldF9hZGRy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90IGFkZHJsZW4pCiB7CiAgICAg dm9pZCAqYWRkciA9IGFsbG9jYShhZGRybGVuKTsKIApAQCAtOTkyLDE1ICs5OTIsMTUgQEAKICAg ICByZXR1cm4gZ2V0X2Vycm5vKGNvbm5lY3Qoc29ja2ZkLCBhZGRyLCBhZGRybGVuKSk7CiB9CiAK LXN0YXRpYyB0YXJnZXRfbG9uZyBkb19zZW5kcmVjdm1zZyhpbnQgZmQsIHRhcmdldF91bG9uZyB0 YXJnZXRfbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywg aW50IHNlbmQpCitzdGF0aWMgYWJpX2xvbmcgZG9fc2VuZHJlY3Ztc2coaW50IGZkLCBhYmlfdWxv bmcgdGFyZ2V0X21zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3Ms IGludCBzZW5kKQogewotICAgIHRhcmdldF9sb25nIHJldDsKKyAgICBhYmlfbG9uZyByZXQ7CiAg ICAgc3RydWN0IHRhcmdldF9tc2doZHIgKm1zZ3A7CiAgICAgc3RydWN0IG1zZ2hkciBtc2c7CiAg ICAgaW50IGNvdW50OwogICAgIHN0cnVjdCBpb3ZlYyAqdmVjOwotICAgIHRhcmdldF91bG9uZyB0 YXJnZXRfdmVjOworICAgIGFiaV91bG9uZyB0YXJnZXRfdmVjOwogCiAgICAgbG9ja191c2VyX3N0 cnVjdChtc2dwLCB0YXJnZXRfbXNnLCAxKTsKICAgICBpZiAobXNncC0+bXNnX25hbWUpIHsKQEAg LTEwMzUsMTIgKzEwMzUsMTIgQEAKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdGFyZ2V0 X2xvbmcgZG9fYWNjZXB0KGludCBmZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4pCitzdGF0 aWMgYWJpX2xvbmcgZG9fYWNjZXB0KGludCBmZCwgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHJsZW4pCiB7CiAgICAg c29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOwogICAgIHZvaWQgKmFk ZHIgPSBhbGxvY2EoYWRkcmxlbik7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25n IHJldDsKIAogICAgIHJldCA9IGdldF9lcnJubyhhY2NlcHQoZmQsIGFkZHIsICZhZGRybGVuKSk7 CiAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7CkBAIC0xMDUwLDEyICsxMDUwLDEyIEBACiAgICAg cmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHRhcmdldF9sb25nIGRvX2dldHBlZXJuYW1lKGludCBm ZCwgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbikKK3N0YXRpYyBhYmlfbG9uZyBkb19n ZXRwZWVybmFtZShpbnQgZmQsIGFiaV91bG9uZyB0YXJnZXRfYWRkciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHJsZW4pCiB7CiAgICAgc29ja2xl bl90IGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOwogICAgIHZvaWQgKmFkZHIgPSBh bGxvY2EoYWRkcmxlbik7Ci0gICAgdGFyZ2V0X2xvbmcgcmV0OworICAgIGFiaV9sb25nIHJldDsK IAogICAgIHJldCA9IGdldF9lcnJubyhnZXRwZWVybmFtZShmZCwgYWRkciwgJmFkZHJsZW4pKTsK ICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsKQEAgLTEwNjUsMTIgKzEwNjUsMTIgQEAKICAgICBy ZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9fZ2V0c29ja25hbWUoaW50IGZk LCB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuKQorc3RhdGljIGFiaV9sb25nIGRvX2dl dHNvY2tuYW1lKGludCBmZCwgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcmxlbikKIHsKICAgICBzb2NrbGVu X3QgYWRkcmxlbiA9IHRnZXQzMih0YXJnZXRfYWRkcmxlbik7CiAgICAgdm9pZCAqYWRkciA9IGFs bG9jYShhZGRybGVuKTsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0Owog CiAgICAgcmV0ID0gZ2V0X2Vycm5vKGdldHNvY2tuYW1lKGZkLCBhZGRyLCAmYWRkcmxlbikpOwog ICAgIGlmICghaXNfZXJyb3IocmV0KSkgewpAQCAtMTA4MCwxMSArMTA4MCwxMSBAQAogICAgIHJl dHVybiByZXQ7CiB9CiAKLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19zb2NrZXRwYWlyKGludCBkb21h aW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X3RhYikKK3N0YXRpYyBhYmlfbG9uZyBkb19zb2NrZXRw YWlyKGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X3RhYikKIHsKICAgICBpbnQgdGFiWzJdOwot ICAgIHRhcmdldF9sb25nIHJldDsKKyAgICBhYmlfbG9uZyByZXQ7CiAKICAgICByZXQgPSBnZXRf ZXJybm8oc29ja2V0cGFpcihkb21haW4sIHR5cGUsIHByb3RvY29sLCB0YWIpKTsKICAgICBpZiAo IWlzX2Vycm9yKHJldCkpIHsKQEAgLTEwOTQsMTIgKzEwOTQsMTIgQEAKICAgICByZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgdGFyZ2V0X2xvbmcgZG9fc2VuZHRvKGludCBmZCwgdGFyZ2V0X3Vsb25n IG1zZywgc2l6ZV90IGxlbiwgaW50IGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsIHNvY2tsZW5fdCBhZGRybGVuKQorc3RhdGljIGFi aV9sb25nIGRvX3NlbmR0byhpbnQgZmQsIGFiaV91bG9uZyBtc2csIHNpemVfdCBsZW4sIGludCBm bGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyLCBz b2NrbGVuX3QgYWRkcmxlbikKIHsKICAgICB2b2lkICphZGRyOwogICAgIHZvaWQgKmhvc3RfbXNn OwotICAgIHRhcmdldF9sb25nIHJldDsKKyAgICBhYmlfbG9uZyByZXQ7CiAKICAgICBob3N0X21z ZyA9IGxvY2tfdXNlcihtc2csIGxlbiwgMSk7CiAgICAgaWYgKHRhcmdldF9hZGRyKSB7CkBAIC0x MTEzLDE0ICsxMTEzLDE0IEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHRhcmdldF9s b25nIGRvX3JlY3Zmcm9tKGludCBmZCwgdGFyZ2V0X3Vsb25nIG1zZywgc2l6ZV90IGxlbiwgaW50 IGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJn ZXRfYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFy Z2V0X2FkZHJsZW4pCitzdGF0aWMgYWJpX2xvbmcgZG9fcmVjdmZyb20oaW50IGZkLCBhYmlfdWxv bmcgbXNnLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFi aV91bG9uZyB0YXJnZXRfYWRkcmxlbikKIHsKICAgICBzb2NrbGVuX3QgYWRkcmxlbjsKICAgICB2 b2lkICphZGRyOwogICAgIHZvaWQgKmhvc3RfbXNnOwotICAgIHRhcmdldF9sb25nIHJldDsKKyAg ICBhYmlfbG9uZyByZXQ7CiAKICAgICBob3N0X21zZyA9IGxvY2tfdXNlcihtc2csIGxlbiwgMCk7 CiAgICAgaWYgKHRhcmdldF9hZGRyKSB7CkBAIC0xMTQ0LDEwICsxMTQ0LDEwIEBACiB9CiAKICNp ZmRlZiBUQVJHRVRfTlJfc29ja2V0Y2FsbAotc3RhdGljIHRhcmdldF9sb25nIGRvX3NvY2tldGNh bGwoaW50IG51bSwgdGFyZ2V0X3Vsb25nIHZwdHIpCitzdGF0aWMgYWJpX2xvbmcgZG9fc29ja2V0 Y2FsbChpbnQgbnVtLCBhYmlfdWxvbmcgdnB0cikKIHsKLSAgICB0YXJnZXRfbG9uZyByZXQ7Ci0g ICAgY29uc3QgaW50IG4gPSBzaXplb2YodGFyZ2V0X3Vsb25nKTsKKyAgICBhYmlfbG9uZyByZXQ7 CisgICAgY29uc3QgaW50IG4gPSBzaXplb2YoYWJpX3Vsb25nKTsKIAogICAgIHN3aXRjaChudW0p IHsKICAgICBjYXNlIFNPQ0tPUF9zb2NrZXQ6CkBAIC0xMTYxLDcgKzExNjEsNyBAQAogICAgIGNh c2UgU09DS09QX2JpbmQ6CiAJewogICAgICAgICAgICAgaW50IHNvY2tmZCA9IHRnZXRsKHZwdHIp OwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyID0gdGdldGwodnB0ciArIG4p OworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyID0gdGdldGwodnB0ciArIG4pOwog ICAgICAgICAgICAgc29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0bCh2cHRyICsgMiAqIG4pOwogICAg ICAgICAgICAgcmV0ID0gZG9fYmluZChzb2NrZmQsIHRhcmdldF9hZGRyLCBhZGRybGVuKTsKICAg ICAgICAgfQpAQCAtMTE2OSw3ICsxMTY5LDcgQEAKICAgICBjYXNlIFNPQ0tPUF9jb25uZWN0Ogog ICAgICAgICB7CiAgICAgICAgICAgICBpbnQgc29ja2ZkID0gdGdldGwodnB0cik7Ci0gICAgICAg ICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0bCh2cHRyICsgbik7CisgICAgICAg ICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0bCh2cHRyICsgbik7CiAgICAgICAgICAg ICBzb2NrbGVuX3QgYWRkcmxlbiA9IHRnZXRsKHZwdHIgKyAyICogbik7CiAgICAgICAgICAgICBy ZXQgPSBkb19jb25uZWN0KHNvY2tmZCwgdGFyZ2V0X2FkZHIsIGFkZHJsZW4pOwogICAgICAgICB9 CkBAIC0xMTg0LDI0ICsxMTg0LDI0IEBACiAgICAgY2FzZSBTT0NLT1BfYWNjZXB0OgogICAgICAg ICB7CiAgICAgICAgICAgICBpbnQgc29ja2ZkID0gdGdldGwodnB0cik7Ci0gICAgICAgICAgICB0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0bCh2cHRyICsgbik7Ci0gICAgICAgICAgICB0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0Z2V0bCh2cHRyICsgMiAqIG4pOworICAgICAg ICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyID0gdGdldGwodnB0ciArIG4pOworICAgICAgICAg ICAgYWJpX3Vsb25nIHRhcmdldF9hZGRybGVuID0gdGdldGwodnB0ciArIDIgKiBuKTsKICAgICAg ICAgICAgIHJldCA9IGRvX2FjY2VwdChzb2NrZmQsIHRhcmdldF9hZGRyLCB0YXJnZXRfYWRkcmxl bik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTT0NLT1BfZ2V0c29ja25h bWU6CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBzb2NrZmQgPSB0Z2V0bCh2cHRyKTsKLSAg ICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciA9IHRnZXRsKHZwdHIgKyBuKTsKLSAg ICAgICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbiA9IHRnZXRsKHZwdHIgKyAyICog bik7CisgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0bCh2cHRyICsgbik7 CisgICAgICAgICAgICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0Z2V0bCh2cHRyICsgMiAq IG4pOwogICAgICAgICAgICAgcmV0ID0gZG9fZ2V0c29ja25hbWUoc29ja2ZkLCB0YXJnZXRfYWRk ciwgdGFyZ2V0X2FkZHJsZW4pOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug U09DS09QX2dldHBlZXJuYW1lOgogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgc29ja2ZkID0g dGdldGwodnB0cik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIgPSB0Z2V0 bCh2cHRyICsgbik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHJsZW4gPSB0 Z2V0bCh2cHRyICsgMiAqIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyID0g dGdldGwodnB0ciArIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRybGVuID0g dGdldGwodnB0ciArIDIgKiBuKTsKICAgICAgICAgICAgIHJldCA9IGRvX2dldHBlZXJuYW1lKHNv Y2tmZCwgdGFyZ2V0X2FkZHIsIHRhcmdldF9hZGRybGVuKTsKICAgICAgICAgfQogICAgICAgICBi cmVhazsKQEAgLTEyMTAsMTQgKzEyMTAsMTQgQEAKICAgICAgICAgICAgIGludCBkb21haW4gPSB0 Z2V0bCh2cHRyKTsKICAgICAgICAgICAgIGludCB0eXBlID0gdGdldGwodnB0ciArIG4pOwogICAg ICAgICAgICAgaW50IHByb3RvY29sID0gdGdldGwodnB0ciArIDIgKiBuKTsKLSAgICAgICAgICAg IHRhcmdldF91bG9uZyB0YWIgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOworICAgICAgICAgICAgYWJp X3Vsb25nIHRhYiA9IHRnZXRsKHZwdHIgKyAzICogbik7CiAgICAgICAgICAgICByZXQgPSBkb19z b2NrZXRwYWlyKGRvbWFpbiwgdHlwZSwgcHJvdG9jb2wsIHRhYik7CiAgICAgICAgIH0KICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSBTT0NLT1Bfc2VuZDoKICAgICAgICAgewogICAgICAgICAgICAg aW50IHNvY2tmZCA9IHRnZXRsKHZwdHIpOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG1zZyA9 IHRnZXRsKHZwdHIgKyBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyBtc2cgPSB0Z2V0bCh2cHRy ICsgbik7CiAgICAgICAgICAgICBzaXplX3QgbGVuID0gdGdldGwodnB0ciArIDIgKiBuKTsKICAg ICAgICAgICAgIGludCBmbGFncyA9IHRnZXRsKHZwdHIgKyAzICogbik7CiAgICAgICAgICAgICBy ZXQgPSBkb19zZW5kdG8oc29ja2ZkLCBtc2csIGxlbiwgZmxhZ3MsIDAsIDApOwpAQCAtMTIyNiw3 ICsxMjI2LDcgQEAKICAgICBjYXNlIFNPQ0tPUF9yZWN2OgogICAgICAgICB7CiAgICAgICAgICAg ICBpbnQgc29ja2ZkID0gdGdldGwodnB0cik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgbXNn ID0gdGdldGwodnB0ciArIG4pOworICAgICAgICAgICAgYWJpX3Vsb25nIG1zZyA9IHRnZXRsKHZw dHIgKyBuKTsKICAgICAgICAgICAgIHNpemVfdCBsZW4gPSB0Z2V0bCh2cHRyICsgMiAqIG4pOwog ICAgICAgICAgICAgaW50IGZsYWdzID0gdGdldGwodnB0ciArIDMgKiBuKTsKICAgICAgICAgICAg IHJldCA9IGRvX3JlY3Zmcm9tKHNvY2tmZCwgbXNnLCBsZW4sIGZsYWdzLCAwLCAwKTsKQEAgLTEy MzUsMTAgKzEyMzUsMTAgQEAKICAgICBjYXNlIFNPQ0tPUF9zZW5kdG86CiAgICAgICAgIHsKICAg ICAgICAgICAgIGludCBzb2NrZmQgPSB0Z2V0bCh2cHRyKTsKLSAgICAgICAgICAgIHRhcmdldF91 bG9uZyBtc2cgPSB0Z2V0bCh2cHRyICsgbik7CisgICAgICAgICAgICBhYmlfdWxvbmcgbXNnID0g dGdldGwodnB0ciArIG4pOwogICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHRnZXRsKHZwdHIgKyAy ICogbik7CiAgICAgICAgICAgICBpbnQgZmxhZ3MgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOwotICAg ICAgICAgICAgdGFyZ2V0X3Vsb25nIGFkZHIgPSB0Z2V0bCh2cHRyICsgNCAqIG4pOworICAgICAg ICAgICAgYWJpX3Vsb25nIGFkZHIgPSB0Z2V0bCh2cHRyICsgNCAqIG4pOwogICAgICAgICAgICAg c29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0bCh2cHRyICsgNSAqIG4pOwogICAgICAgICAgICAgcmV0 ID0gZG9fc2VuZHRvKHNvY2tmZCwgbXNnLCBsZW4sIGZsYWdzLCBhZGRyLCBhZGRybGVuKTsKICAg ICAgICAgfQpAQCAtMTI0NiwxMSArMTI0NiwxMSBAQAogICAgIGNhc2UgU09DS09QX3JlY3Zmcm9t OgogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgc29ja2ZkID0gdGdldGwodnB0cik7Ci0gICAg ICAgICAgICB0YXJnZXRfdWxvbmcgbXNnID0gdGdldGwodnB0ciArIG4pOworICAgICAgICAgICAg YWJpX3Vsb25nIG1zZyA9IHRnZXRsKHZwdHIgKyBuKTsKICAgICAgICAgICAgIHNpemVfdCBsZW4g PSB0Z2V0bCh2cHRyICsgMiAqIG4pOwogICAgICAgICAgICAgaW50IGZsYWdzID0gdGdldGwodnB0 ciArIDMgKiBuKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBhZGRyID0gdGdldGwodnB0ciAr IDQgKiBuKTsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBhZGRybGVuID0gdGdldGwodnB0ciAr IDUgKiBuKTsKKyAgICAgICAgICAgIGFiaV91bG9uZyBhZGRyID0gdGdldGwodnB0ciArIDQgKiBu KTsKKyAgICAgICAgICAgIGFiaV91bG9uZyBhZGRybGVuID0gdGdldGwodnB0ciArIDUgKiBuKTsK ICAgICAgICAgICAgIHJldCA9IGRvX3JlY3Zmcm9tKHNvY2tmZCwgbXNnLCBsZW4sIGZsYWdzLCBh ZGRyLCBhZGRybGVuKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTEyNjYsNyArMTI2 Niw3IEBACiAgICAgY2FzZSBTT0NLT1BfcmVjdm1zZzoKICAgICAgICAgewogICAgICAgICAgICAg aW50IGZkOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9tc2c7CisgICAgICAgICAg ICBhYmlfdWxvbmcgdGFyZ2V0X21zZzsKICAgICAgICAgICAgIGludCBmbGFnczsKIAogICAgICAg ICAgICAgZmQgPSB0Z2V0bCh2cHRyKTsKQEAgLTEyODIsNyArMTI4Miw3IEBACiAgICAgICAgICAg ICBpbnQgc29ja2ZkID0gdGdldGwodnB0cik7CiAgICAgICAgICAgICBpbnQgbGV2ZWwgPSB0Z2V0 bCh2cHRyICsgbik7CiAgICAgICAgICAgICBpbnQgb3B0bmFtZSA9IHRnZXRsKHZwdHIgKyAyICog bik7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgb3B0dmFsID0gdGdldGwodnB0ciArIDMgKiBu KTsKKyAgICAgICAgICAgIGFiaV91bG9uZyBvcHR2YWwgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOwog ICAgICAgICAgICAgc29ja2xlbl90IG9wdGxlbiA9IHRnZXRsKHZwdHIgKyA0ICogbik7CiAKICAg ICAgICAgICAgIHJldCA9IGRvX3NldHNvY2tvcHQoc29ja2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0 dmFsLCBvcHRsZW4pOwpAQCAtMTI5Myw4ICsxMjkzLDggQEAKICAgICAgICAgICAgIGludCBzb2Nr ZmQgPSB0Z2V0bCh2cHRyKTsKICAgICAgICAgICAgIGludCBsZXZlbCA9IHRnZXRsKHZwdHIgKyBu KTsKICAgICAgICAgICAgIGludCBvcHRuYW1lID0gdGdldGwodnB0ciArIDIgKiBuKTsKLSAgICAg ICAgICAgIHRhcmdldF91bG9uZyBvcHR2YWwgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOwotICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIHBvcHRsZW4gPSB0Z2V0bCh2cHRyICsgNCAqIG4pOworICAgICAg ICAgICAgYWJpX3Vsb25nIG9wdHZhbCA9IHRnZXRsKHZwdHIgKyAzICogbik7CisgICAgICAgICAg ICBhYmlfdWxvbmcgcG9wdGxlbiA9IHRnZXRsKHZwdHIgKyA0ICogbik7CiAKICAgICAgICAgICAg IHJldCA9IGRvX2dldHNvY2tvcHQoc29ja2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBwb3B0 bGVuKTsKICAgICAgICAgfQpAQCAtMTMxOCwzMyArMTMxOCwzMyBAQAogCiBzdHJ1Y3QgdGFyZ2V0 X2lwY19wZXJtCiB7Ci0gICAgdGFyZ2V0X2xvbmcgX19rZXk7Ci0gICAgdGFyZ2V0X3Vsb25nIHVp ZDsKLSAgICB0YXJnZXRfdWxvbmcgZ2lkOwotICAgIHRhcmdldF91bG9uZyBjdWlkOwotICAgIHRh cmdldF91bG9uZyBjZ2lkOworICAgIGFiaV9sb25nIF9fa2V5OworICAgIGFiaV91bG9uZyB1aWQ7 CisgICAgYWJpX3Vsb25nIGdpZDsKKyAgICBhYmlfdWxvbmcgY3VpZDsKKyAgICBhYmlfdWxvbmcg Y2dpZDsKICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgbW9kZTsKICAgICB1bnNpZ25lZCBzaG9ydCBp bnQgX19wYWQxOwogICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3NlcTsKICAgICB1bnNpZ25lZCBz aG9ydCBpbnQgX19wYWQyOwotICAgIHRhcmdldF91bG9uZyBfX3VudXNlZDE7Ci0gICAgdGFyZ2V0 X3Vsb25nIF9fdW51c2VkMjsKKyAgICBhYmlfdWxvbmcgX191bnVzZWQxOworICAgIGFiaV91bG9u ZyBfX3VudXNlZDI7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3NlbWlkX2RzCiB7CiAgIHN0cnVjdCB0 YXJnZXRfaXBjX3Blcm0gc2VtX3Blcm07Ci0gIHRhcmdldF91bG9uZyBzZW1fb3RpbWU7Ci0gIHRh cmdldF91bG9uZyBfX3VudXNlZDE7Ci0gIHRhcmdldF91bG9uZyBzZW1fY3RpbWU7Ci0gIHRhcmdl dF91bG9uZyBfX3VudXNlZDI7Ci0gIHRhcmdldF91bG9uZyBzZW1fbnNlbXM7Ci0gIHRhcmdldF91 bG9uZyBfX3VudXNlZDM7Ci0gIHRhcmdldF91bG9uZyBfX3VudXNlZDQ7CisgIGFiaV91bG9uZyBz ZW1fb3RpbWU7CisgIGFiaV91bG9uZyBfX3VudXNlZDE7CisgIGFiaV91bG9uZyBzZW1fY3RpbWU7 CisgIGFiaV91bG9uZyBfX3VudXNlZDI7CisgIGFiaV91bG9uZyBzZW1fbnNlbXM7CisgIGFiaV91 bG9uZyBfX3VudXNlZDM7CisgIGFiaV91bG9uZyBfX3VudXNlZDQ7CiB9OwogCiBzdGF0aWMgaW5s aW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3RfaXBjX3Blcm0oc3RydWN0IGlwY19wZXJtICpob3N0X2lw LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9u ZyB0YXJnZXRfYWRkcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhYmlfdWxvbmcgdGFyZ2V0X2FkZHIpCiB7CiAgICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSAq dGFyZ2V0X2lwOwogICAgIHN0cnVjdCB0YXJnZXRfc2VtaWRfZHMgKnRhcmdldF9zZDsKQEAgLTEz NjAsNyArMTM2MCw3IEBACiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0 X2FkZHIsIDApOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfaXBjX3Bl cm0odGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9f dGFyZ2V0X2lwY19wZXJtKGFiaV91bG9uZyB0YXJnZXRfYWRkciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gKmhvc3RfaXApCiB7CiAg ICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFyZ2V0X2lwOwpAQCAtMTM3OCw3ICsxMzc4LDcg QEAKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3NlbWlkX2RzKHN0cnVj dCBzZW1pZF9kcyAqaG9zdF9zZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkcikKIHsKICAgICBzdHJ1Y3Qg dGFyZ2V0X3NlbWlkX2RzICp0YXJnZXRfc2Q7CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBACiAgICAg dW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0X2FkZHIsIDApOwogfQogCi1zdGF0 aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfc2VtaWRfZHModGFyZ2V0X3Vsb25nIHRhcmdl dF9hZGRyLAorc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NlbWlkX2RzKGFiaV91 bG9uZyB0YXJnZXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmhvc3Rfc2QpCiB7CiAgICAgc3RydWN0IHRhcmdldF9zZW1p ZF9kcyAqdGFyZ2V0X3NkOwpAQCAtMTQxMSwxMyArMTQxMSwxMyBAQAogCiB1bmlvbiB0YXJnZXRf c2VtdW4gewogCWludCB2YWw7Ci0JdGFyZ2V0X2xvbmcgYnVmOworCWFiaV9sb25nIGJ1ZjsKIAl1 bnNpZ25lZCBzaG9ydCBpbnQgKmFycmF5OwogfTsKIAogc3RhdGljIGlubGluZSB2b2lkIHRhcmdl dF90b19ob3N0X3NlbXVuKGludCBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5pb24gc2VtdW4gKmhvc3Rfc3UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyB0YXJnZXRfYWRkciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmRzKQogewog ICAgIHVuaW9uIHRhcmdldF9zZW11biAqdGFyZ2V0X3N1OwpAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAK IH0KIAogc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3NlbXVuKGludCBjbWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdl dF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9u ZyB0YXJnZXRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bmlvbiBzZW11biAqaG9zdF9zdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmRzKQogewpAQCAtMTQ3OCwxMyArMTQ3OCwxMyBAQAogICAg IH0KIH0KIAotc3RhdGljIGlubGluZSB0YXJnZXRfbG9uZyBkb19zZW1jdGwoaW50IGZpcnN0LCBp bnQgc2Vjb25kLCBpbnQgdGhpcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YXJnZXRfbG9uZyBwdHIpCitzdGF0aWMgaW5saW5lIGFiaV9sb25nIGRvX3NlbWN0bChpbnQg Zmlyc3QsIGludCBzZWNvbmQsIGludCB0aGlyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFiaV9sb25nIHB0cikKIHsKICAgICB1bmlvbiBzZW11biBhcmc7CiAgICAgc3RydWN0 IHNlbWlkX2RzIGRzYXJnOwogICAgIGludCBjbWQgPSB0aGlyZCYweGZmOwotICAgIHRhcmdldF9s b25nIHJldCA9IDA7CisgICAgYWJpX2xvbmcgcmV0ID0gMDsKIAogICAgIHN3aXRjaCggY21kICkg ewogCWNhc2UgR0VUVkFMOgpAQCAtMTUyNywyMyArMTUyNywyMyBAQAogc3RydWN0IHRhcmdldF9t c3FpZF9kcwogewogICBzdHJ1Y3QgdGFyZ2V0X2lwY19wZXJtIG1zZ19wZXJtOwotICB0YXJnZXRf dWxvbmcgbXNnX3N0aW1lOwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQxOwotICB0YXJnZXRfdWxv bmcgbXNnX3J0aW1lOwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQyOwotICB0YXJnZXRfdWxvbmcg bXNnX2N0aW1lOwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQzOwotICB0YXJnZXRfdWxvbmcgX19t c2dfY2J5dGVzOwotICB0YXJnZXRfdWxvbmcgbXNnX3FudW07Ci0gIHRhcmdldF91bG9uZyBtc2df cWJ5dGVzOwotICB0YXJnZXRfdWxvbmcgbXNnX2xzcGlkOwotICB0YXJnZXRfdWxvbmcgbXNnX2xy cGlkOwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQ0OwotICB0YXJnZXRfdWxvbmcgX191bnVzZWQ1 OworICBhYmlfdWxvbmcgbXNnX3N0aW1lOworICBhYmlfdWxvbmcgX191bnVzZWQxOworICBhYmlf dWxvbmcgbXNnX3J0aW1lOworICBhYmlfdWxvbmcgX191bnVzZWQyOworICBhYmlfdWxvbmcgbXNn X2N0aW1lOworICBhYmlfdWxvbmcgX191bnVzZWQzOworICBhYmlfdWxvbmcgX19tc2dfY2J5dGVz OworICBhYmlfdWxvbmcgbXNnX3FudW07CisgIGFiaV91bG9uZyBtc2dfcWJ5dGVzOworICBhYmlf dWxvbmcgbXNnX2xzcGlkOworICBhYmlfdWxvbmcgbXNnX2xycGlkOworICBhYmlfdWxvbmcgX191 bnVzZWQ0OworICBhYmlfdWxvbmcgX191bnVzZWQ1OwogfTsKIAogc3RhdGljIGlubGluZSB2b2lk IHRhcmdldF90b19ob3N0X21zcWlkX2RzKHN0cnVjdCBtc3FpZF9kcyAqaG9zdF9tZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0 X2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vs b25nIHRhcmdldF9hZGRyKQogewogICAgIHN0cnVjdCB0YXJnZXRfbXNxaWRfZHMgKnRhcmdldF9t ZDsKIApAQCAtMTU2MCw3ICsxNTYwLDcgQEAKICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0 X21kLCB0YXJnZXRfYWRkciwgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3Rh cmdldF9tc3FpZF9kcyh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCitzdGF0aWMgaW5saW5lIHZv aWQgaG9zdF90b190YXJnZXRfbXNxaWRfZHMoYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtc3FpZF9kcyAqaG9z dF9tZCkKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0X21zcWlkX2RzICp0YXJnZXRfbWQ7CkBAIC0xNTc4 LDExICsxNTc4LDExIEBACiAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9tZCwgdGFyZ2V0 X2FkZHIsIDEpOwogfQogCi1zdGF0aWMgaW5saW5lIHRhcmdldF9sb25nIGRvX21zZ2N0bChpbnQg Zmlyc3QsIGludCBzZWNvbmQsIHRhcmdldF9sb25nIHB0cikKK3N0YXRpYyBpbmxpbmUgYWJpX2xv bmcgZG9fbXNnY3RsKGludCBmaXJzdCwgaW50IHNlY29uZCwgYWJpX2xvbmcgcHRyKQogewogICAg IHN0cnVjdCBtc3FpZF9kcyBkc2FyZzsKICAgICBpbnQgY21kID0gc2Vjb25kJjB4ZmY7Ci0gICAg dGFyZ2V0X2xvbmcgcmV0ID0gMDsKKyAgICBhYmlfbG9uZyByZXQgPSAwOwogICAgIHN3aXRjaCgg Y21kICkgewogICAgIGNhc2UgSVBDX1NUQVQ6CiAgICAgY2FzZSBJUENfU0VUOgpAQCAtMTU5Niwx NiArMTU5NiwxNiBAQAogfQogCiBzdHJ1Y3QgdGFyZ2V0X21zZ2J1ZiB7Ci0JdGFyZ2V0X3Vsb25n IG10eXBlOworCWFiaV91bG9uZyBtdHlwZTsKIAljaGFyCW10ZXh0WzFdOwogfTsKIAotc3RhdGlj IGlubGluZSB0YXJnZXRfbG9uZyBkb19tc2dzbmQoaW50IG1zcWlkLCB0YXJnZXRfbG9uZyBtc2dw LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1zZ3N6 LCBpbnQgbXNnZmxnKQorc3RhdGljIGlubGluZSBhYmlfbG9uZyBkb19tc2dzbmQoaW50IG1zcWlk LCBhYmlfbG9uZyBtc2dwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IG1zZ3N6LCBpbnQgbXNnZmxnKQogewogICAgIHN0cnVjdCB0YXJnZXRfbXNnYnVmICp0 YXJnZXRfbWI7CiAgICAgc3RydWN0IG1zZ2J1ZiAqaG9zdF9tYjsKLSAgICB0YXJnZXRfbG9uZyBy ZXQgPSAwOworICAgIGFiaV9sb25nIHJldCA9IDA7CiAKICAgICBsb2NrX3VzZXJfc3RydWN0KHRh cmdldF9tYixtc2dwLDApOwogICAgIGhvc3RfbWIgPSBtYWxsb2MobXNnc3orc2l6ZW9mKGxvbmcp KTsKQEAgLTE2MTgsMTMgKzE2MTgsMTMgQEAKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMg aW5saW5lIHRhcmdldF9sb25nIGRvX21zZ3JjdihpbnQgbXNxaWQsIHRhcmdldF9sb25nIG1zZ3As Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbXNnc3os IGludCBtc2d0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1z Z2ZsZykKK3N0YXRpYyBpbmxpbmUgYWJpX2xvbmcgZG9fbXNncmN2KGludCBtc3FpZCwgYWJpX2xv bmcgbXNncCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBt c2dzeiwgaW50IG1zZ3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bXNnZmxnKQogewogICAgIHN0cnVjdCB0YXJnZXRfbXNnYnVmICp0YXJnZXRfbWI7CiAgICAgc3Ry dWN0IG1zZ2J1ZiAqaG9zdF9tYjsKLSAgICB0YXJnZXRfbG9uZyByZXQgPSAwOworICAgIGFiaV9s b25nIHJldCA9IDA7CiAKICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9tYiwgbXNncCwgMCk7 CiAgICAgaG9zdF9tYiA9IG1hbGxvYyhtc2dzeitzaXplb2YobG9uZykpOwpAQCAtMTYzOSwxMiAr MTYzOSwxMiBAQAogfQogCiAvKiA/Pz8gVGhpcyBvbmx5IHdvcmtzIHdpdGggbGluZWFyIG1hcHBp bmdzLiAgKi8KLXN0YXRpYyB0YXJnZXRfbG9uZyBkb19pcGModW5zaWduZWQgaW50IGNhbGwsIGlu dCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlY29uZCwgaW50IHRoaXJk LAotICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfbG9uZyBwdHIsIHRhcmdldF9sb25n IGZpZnRoKQorc3RhdGljIGFiaV9sb25nIGRvX2lwYyh1bnNpZ25lZCBpbnQgY2FsbCwgaW50IGZp cnN0LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdGhpcmQsCisgICAg ICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIHB0ciwgYWJpX2xvbmcgZmlmdGgpCiB7CiAgICAg aW50IHZlcnNpb247Ci0gICAgdGFyZ2V0X2xvbmcgcmV0ID0gMDsKKyAgICBhYmlfbG9uZyByZXQg PSAwOwogICAgIHVuc2lnbmVkIGxvbmcgcmFkZHI7CiAgICAgc3RydWN0IHNobWlkX2RzIHNobV9p bmZvOwogICAgIGludCBpOwpAQCAtMTcyMiw3ICsxNzIyLDcgQEAKICAgICAgICAgICAgICAgICBi cmVhazsKIAkgICAgfQogCX0KLQlpZiAocHV0X3VzZXIocmFkZHIsICh0YXJnZXRfdWxvbmcgKil0 aGlyZCkpCisJaWYgKHB1dF91c2VyKHJhZGRyLCAoYWJpX3Vsb25nICopdGhpcmQpKQogICAgICAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgICAgIHJldCA9IDA7CiAJYnJlYWs7CkBAIC0xODAz LDExICsxODAzLDExIEBACiB9OwogCiAvKiA/Pz8gSW1wbGVtZW50IHByb3BlciBsb2NraW5nIGZv ciBpb2N0bHMuICAqLwotc3RhdGljIHRhcmdldF9sb25nIGRvX2lvY3RsKGludCBmZCwgdGFyZ2V0 X2xvbmcgY21kLCB0YXJnZXRfbG9uZyBhcmcpCitzdGF0aWMgYWJpX2xvbmcgZG9faW9jdGwoaW50 IGZkLCBhYmlfbG9uZyBjbWQsIGFiaV9sb25nIGFyZykKIHsKICAgICBjb25zdCBJT0NUTEVudHJ5 ICppZTsKICAgICBjb25zdCBhcmd0eXBlICphcmdfdHlwZTsKLSAgICB0YXJnZXRfbG9uZyByZXQ7 CisgICAgYWJpX2xvbmcgcmV0OwogICAgIHVpbnQ4X3QgYnVmX3RlbXBbTUFYX1NUUlVDVF9TSVpF XTsKICAgICBpbnQgdGFyZ2V0X3NpemU7CiAgICAgdm9pZCAqYXJncHRyOwpAQCAtMjA4OCw3ICsy MDg4LDcgQEAKIC8qIE5PVEU6IHRoZXJlIGlzIHJlYWxseSBvbmUgTERUIGZvciBhbGwgdGhlIHRo cmVhZHMgKi8KIHVpbnQ4X3QgKmxkdF90YWJsZTsKIAotc3RhdGljIGludCByZWFkX2xkdCh0YXJn ZXRfdWxvbmcgcHRyLCB1bnNpZ25lZCBsb25nIGJ5dGVjb3VudCkKK3N0YXRpYyBpbnQgcmVhZF9s ZHQoYWJpX3Vsb25nIHB0ciwgdW5zaWduZWQgbG9uZyBieXRlY291bnQpCiB7CiAgICAgaW50IHNp emU7CiAgICAgdm9pZCAqcDsKQEAgLTIxMDcsNyArMjEwNyw3IEBACiAKIC8qIFhYWDogYWRkIGxv Y2tpbmcgc3VwcG9ydCAqLwogc3RhdGljIGludCB3cml0ZV9sZHQoQ1BVWDg2U3RhdGUgKmVudiwK LSAgICAgICAgICAgICAgICAgICAgIHRhcmdldF91bG9uZyBwdHIsIHVuc2lnbmVkIGxvbmcgYnl0 ZWNvdW50LCBpbnQgb2xkbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgIGFiaV91bG9uZyBwdHIs IHVuc2lnbmVkIGxvbmcgYnl0ZWNvdW50LCBpbnQgb2xkbW9kZSkKIHsKICAgICBzdHJ1Y3QgdGFy Z2V0X21vZGlmeV9sZHRfbGR0X3MgbGR0X2luZm87CiAgICAgc3RydWN0IHRhcmdldF9tb2RpZnlf bGR0X2xkdF9zICp0YXJnZXRfbGR0X2luZm87CkBAIC0yMTg4LDcgKzIxODgsNyBAQAogfQogCiAv KiBzcGVjaWZpYyBhbmQgd2VpcmQgaTM4NiBzeXNjYWxscyAqLwotaW50IGRvX21vZGlmeV9sZHQo Q1BVWDg2U3RhdGUgKmVudiwgaW50IGZ1bmMsIHRhcmdldF91bG9uZyBwdHIsIHVuc2lnbmVkIGxv bmcgYnl0ZWNvdW50KQoraW50IGRvX21vZGlmeV9sZHQoQ1BVWDg2U3RhdGUgKmVudiwgaW50IGZ1 bmMsIGFiaV91bG9uZyBwdHIsIHVuc2lnbmVkIGxvbmcgYnl0ZWNvdW50KQogewogICAgIGludCBy ZXQgPSAtRU5PU1lTOwogCkBAIC0yMjIwLDcgKzIyMjAsNyBAQAogICAgIHJldHVybiAwOwogfQog Ci1pbnQgZG9fZm9yayhDUFVTdGF0ZSAqZW52LCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHRhcmdldF91 bG9uZyBuZXdzcCkKK2ludCBkb19mb3JrKENQVVN0YXRlICplbnYsIHVuc2lnbmVkIGludCBmbGFn cywgYWJpX3Vsb25nIG5ld3NwKQogewogICAgIGludCByZXQ7CiAgICAgVGFza1N0YXRlICp0czsK QEAgLTIzMTAsMTMgKzIzMTAsMTMgQEAKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdGFy Z2V0X2xvbmcgZG9fZmNudGwoaW50IGZkLCBpbnQgY21kLCB0YXJnZXRfdWxvbmcgYXJnKQorc3Rh dGljIGFiaV9sb25nIGRvX2ZjbnRsKGludCBmZCwgaW50IGNtZCwgYWJpX3Vsb25nIGFyZykKIHsK ICAgICBzdHJ1Y3QgZmxvY2sgZmw7CiAgICAgc3RydWN0IHRhcmdldF9mbG9jayAqdGFyZ2V0X2Zs OwogICAgIHN0cnVjdCBmbG9jazY0IGZsNjQ7CiAgICAgc3RydWN0IHRhcmdldF9mbG9jazY0ICp0 YXJnZXRfZmw2NDsKLSAgICB0YXJnZXRfbG9uZyByZXQ7CisgICAgYWJpX2xvbmcgcmV0OwogCiAg ICAgc3dpdGNoKGNtZCkgewogICAgIGNhc2UgVEFSR0VUX0ZfR0VUTEs6CkBAIC0yNDc1LDcgKzI0 NzUsNyBAQAogICAgIH0KIH0KIAotI2lmIFRBUkdFVF9MT05HX0JJVFMgPT0gMzIKKyNpZiBUQVJH RVRfQUJJX0JJVFMgPT0gMzIKIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGFyZ2V0X29mZnNldDY0 KHVpbnQzMl90IHdvcmQwLCB1aW50MzJfdCB3b3JkMSkKIHsKICNpZmRlZiBUQVJHRVRfV09SRFNf QklHX0VORElBTgpAQCAtMjQ4NCwxOCArMjQ4NCwxOCBAQAogICAgIHJldHVybiAoKHVpbnQ2NF90 KXdvcmQxIDw8IDMyKSB8IHdvcmQwOwogI2VuZGlmCiB9Ci0jZWxzZSAvKiBUQVJHRVRfTE9OR19C SVRTID09IDMyICovCisjZWxzZSAvKiBUQVJHRVRfQUJJX0JJVFMgPT0gMzIgKi8KIHN0YXRpYyBp bmxpbmUgdWludDY0X3QgdGFyZ2V0X29mZnNldDY0KHVpbnQ2NF90IHdvcmQwLCB1aW50NjRfdCB3 b3JkMSkKIHsKICAgICByZXR1cm4gd29yZDA7CiB9Ci0jZW5kaWYgLyogVEFSR0VUX0xPTkdfQklU UyAhPSAzMiAqLworI2VuZGlmIC8qIFRBUkdFVF9BQklfQklUUyAhPSAzMiAqLwogCiAjaWZkZWYg VEFSR0VUX05SX3RydW5jYXRlNjQKLXN0YXRpYyBpbmxpbmUgdGFyZ2V0X2xvbmcgdGFyZ2V0X3Ry dW5jYXRlNjQodm9pZCAqY3B1X2VudiwgY29uc3QgY2hhciAqYXJnMSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcgYXJnMiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcgYXJnMywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcgYXJn NCkKK3N0YXRpYyBpbmxpbmUgYWJpX2xvbmcgdGFyZ2V0X3RydW5jYXRlNjQodm9pZCAqY3B1X2Vu diwgY29uc3QgY2hhciAqYXJnMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWJpX2xvbmcgYXJnMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWJpX2xvbmcgYXJnMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWJpX2xvbmcgYXJnNCkKIHsKICNpZmRlZiBUQVJHRVRfQVJNCiAgICAgaWYgKCgoQ1BV QVJNU3RhdGUgKiljcHVfZW52KS0+ZWFiaSkKQEAgLTI1MDksMTAgKzI1MDksMTAgQEAKICNlbmRp ZgogCiAjaWZkZWYgVEFSR0VUX05SX2Z0cnVuY2F0ZTY0Ci1zdGF0aWMgaW5saW5lIHRhcmdldF9s b25nIHRhcmdldF9mdHJ1bmNhdGU2NCh2b2lkICpjcHVfZW52LCB0YXJnZXRfbG9uZyBhcmcxLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xvbmcg YXJnMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF9sb25nIGFyZzMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YXJnZXRfbG9uZyBhcmc0KQorc3RhdGljIGlubGluZSBhYmlfbG9uZyB0YXJnZXRfZnRydW5j YXRlNjQodm9pZCAqY3B1X2VudiwgYWJpX2xvbmcgYXJnMSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFiaV9sb25nIGFyZzIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhYmlfbG9uZyBhcmczLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWJpX2xvbmcgYXJnNCkKIHsKICNpZmRlZiBUQVJHRVRf QVJNCiAgICAgaWYgKCgoQ1BVQVJNU3RhdGUgKiljcHVfZW52KS0+ZWFiaSkKQEAgLTI1MjYsNyAr MjUyNiw3IEBACiAjZW5kaWYKIAogc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3Rp bWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9hZGRyKQog ewogICAgIHN0cnVjdCB0YXJnZXRfdGltZXNwZWMgKnRhcmdldF90czsKIApAQCAtMjUzNiw3ICsy NTM2LDcgQEAKICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3RzLCB0YXJnZXRfYWRkciwg MCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF90aW1lc3BlYyh0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsCitzdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRf dGltZXNwZWMoYWJpX3Vsb25nIHRhcmdldF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cykKIHsKICAgICBzdHJ1 Y3QgdGFyZ2V0X3RpbWVzcGVjICp0YXJnZXRfdHM7CkBAIC0yNTQ3LDExICsyNTQ3LDExIEBACiAg ICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF90cywgdGFyZ2V0X2FkZHIsIDEpOwogfQogCi10 YXJnZXRfbG9uZyBkb19zeXNjYWxsKHZvaWQgKmNwdV9lbnYsIGludCBudW0sIHRhcmdldF9sb25n IGFyZzEsCi0gICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9sb25nIGFyZzIsIHRhcmdldF9s b25nIGFyZzMsIHRhcmdldF9sb25nIGFyZzQsCi0gICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF9sb25nIGFyZzUsIHRhcmdldF9sb25nIGFyZzYpCithYmlfbG9uZyBkb19zeXNjYWxsKHZvaWQg KmNwdV9lbnYsIGludCBudW0sIGFiaV9sb25nIGFyZzEsCisgICAgICAgICAgICAgICAgICAgIGFi aV9sb25nIGFyZzIsIGFiaV9sb25nIGFyZzMsIGFiaV9sb25nIGFyZzQsCisgICAgICAgICAgICAg ICAgICAgIGFiaV9sb25nIGFyZzUsIGFiaV9sb25nIGFyZzYpCiB7Ci0gICAgdGFyZ2V0X2xvbmcg cmV0OworICAgIGFiaV9sb25nIHJldDsKICAgICBzdHJ1Y3Qgc3RhdCBzdDsKICAgICBzdHJ1Y3Qg c3RhdGZzIHN0ZnM7CiAgICAgdm9pZCAqcDsKQEAgLTI2ODcsMTAgKzI2ODcsMTAgQEAKICAgICAg ICAgewogICAgICAgICAgICAgY2hhciAqKmFyZ3AsICoqZW52cDsKICAgICAgICAgICAgIGludCBh cmdjLCBlbnZjOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGdwOwotICAgICAgICAgICAgdGFy Z2V0X3Vsb25nIGd1ZXN0X2FyZ3A7Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgZ3Vlc3RfZW52 cDsKLSAgICAgICAgICAgIHRhcmdldF91bG9uZyBhZGRyOworICAgICAgICAgICAgYWJpX3Vsb25n IGdwOworICAgICAgICAgICAgYWJpX3Vsb25nIGd1ZXN0X2FyZ3A7CisgICAgICAgICAgICBhYmlf dWxvbmcgZ3Vlc3RfZW52cDsKKyAgICAgICAgICAgIGFiaV91bG9uZyBhZGRyOwogICAgICAgICAg ICAgY2hhciAqKnE7CiAKICAgICAgICAgICAgIGFyZ2MgPSAwOwpAQCAtMjcwNiw3ICsyNzA2LDcg QEAKICAgICAgICAgICAgIGVudnAgPSBhbGxvY2EoKGVudmMgKyAxKSAqIHNpemVvZih2b2lkICop KTsKIAogICAgICAgICAgICAgZm9yIChncCA9IGd1ZXN0X2FyZ3AsIHEgPSBhcmdwOyA7Ci0gICAg ICAgICAgICAgICAgICBncCArPSBzaXplb2YodGFyZ2V0X3Vsb25nKSwgcSsrKSB7CisgICAgICAg ICAgICAgICAgICBncCArPSBzaXplb2YoYWJpX3Vsb25nKSwgcSsrKSB7CiAgICAgICAgICAgICAg ICAgYWRkciA9IHRnZXRsKGdwKTsKICAgICAgICAgICAgICAgICBpZiAoIWFkZHIpCiAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjcxNSw3ICsyNzE1LDcgQEAKICAgICAgICAgICAgICpx ID0gTlVMTDsKIAogICAgICAgICAgICAgZm9yIChncCA9IGd1ZXN0X2VudnAsIHEgPSBlbnZwOyA7 Ci0gICAgICAgICAgICAgICAgICBncCArPSBzaXplb2YodGFyZ2V0X3Vsb25nKSwgcSsrKSB7Cisg ICAgICAgICAgICAgICAgICBncCArPSBzaXplb2YoYWJpX3Vsb25nKSwgcSsrKSB7CiAgICAgICAg ICAgICAgICAgYWRkciA9IHRnZXRsKGdwKTsKICAgICAgICAgICAgICAgICBpZiAoIWFkZHIpCiAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjcyOCwxMiArMjcyOCwxMiBAQAogICAgICAg ICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7CiAKICAgICAgICAgICAgIGZvciAoZ3AgPSBn dWVzdF9hcmdwLCBxID0gYXJncDsgKnE7Ci0gICAgICAgICAgICAgICAgICBncCArPSBzaXplb2Yo dGFyZ2V0X3Vsb25nKSwgcSsrKSB7CisgICAgICAgICAgICAgICAgICBncCArPSBzaXplb2YoYWJp X3Vsb25nKSwgcSsrKSB7CiAgICAgICAgICAgICAgICAgYWRkciA9IHRnZXRsKGdwKTsKICAgICAg ICAgICAgICAgICB1bmxvY2tfdXNlcigqcSwgYWRkciwgMCk7CiAgICAgICAgICAgICB9CiAgICAg ICAgICAgICBmb3IgKGdwID0gZ3Vlc3RfZW52cCwgcSA9IGVudnA7ICpxOwotICAgICAgICAgICAg ICAgICAgZ3AgKz0gc2l6ZW9mKHRhcmdldF91bG9uZyksIHErKykgeworICAgICAgICAgICAgICAg ICAgZ3AgKz0gc2l6ZW9mKGFiaV91bG9uZyksIHErKykgewogICAgICAgICAgICAgICAgIGFkZHIg PSB0Z2V0bChncCk7CiAgICAgICAgICAgICAgICAgdW5sb2NrX3VzZXIoKnEsIGFkZHIsIDApOwog ICAgICAgICAgICAgfQpAQCAtMzE2Myw3ICszMTYzLDcgQEAKICAgICBjYXNlIFRBUkdFVF9OUl9z Z2V0bWFzazoKICAgICAgICAgewogICAgICAgICAgICAgc2lnc2V0X3QgY3VyX3NldDsKLSAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfc2V0OworICAgICAgICAgICAgYWJpX3Vsb25nIHRh cmdldF9zZXQ7CiAgICAgICAgICAgICBzaWdwcm9jbWFzaygwLCBOVUxMLCAmY3VyX3NldCk7CiAg ICAgICAgICAgICBob3N0X3RvX3RhcmdldF9vbGRfc2lnc2V0KCZ0YXJnZXRfc2V0LCAmY3VyX3Nl dCk7CiAgICAgICAgICAgICByZXQgPSB0YXJnZXRfc2V0OwpAQCAtMzE3NCw3ICszMTc0LDcgQEAK ICAgICBjYXNlIFRBUkdFVF9OUl9zc2V0bWFzazoKICAgICAgICAgewogICAgICAgICAgICAgc2ln c2V0X3Qgc2V0LCBvc2V0LCBjdXJfc2V0OwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdl dF9zZXQgPSBhcmcxOworICAgICAgICAgICAgYWJpX3Vsb25nIHRhcmdldF9zZXQgPSBhcmcxOwog ICAgICAgICAgICAgc2lncHJvY21hc2soMCwgTlVMTCwgJmN1cl9zZXQpOwogICAgICAgICAgICAg dGFyZ2V0X3RvX2hvc3Rfb2xkX3NpZ3NldCgmc2V0LCAmdGFyZ2V0X3NldCk7CiAgICAgICAgICAg ICBzaWdvcnNldCgmc2V0LCAmc2V0LCAmY3VyX3NldCk7CkBAIC0zNDA3LDcgKzM0MDcsNyBAQAog ICAgIGNhc2UgVEFSR0VUX05SX3NlbGVjdDoKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0 IHRhcmdldF9zZWxfYXJnX3N0cnVjdCAqc2VsOwotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIGlu cCwgb3V0cCwgZXhwLCB0dnA7CisgICAgICAgICAgICBhYmlfdWxvbmcgaW5wLCBvdXRwLCBleHAs IHR2cDsKICAgICAgICAgICAgIGxvbmcgbnNlbDsKIAogICAgICAgICAgICAgbG9ja191c2VyX3N0 cnVjdChzZWwsIGFyZzEsIDEpOwpAQCAtMzUxMCw5ICszNTEwLDkgQEAKICAgICBjYXNlIFRBUkdF VF9OUl9tbWFwOgogI2lmIGRlZmluZWQoVEFSR0VUX0kzODYpIHx8IGRlZmluZWQoVEFSR0VUX0FS TSkgfHwgZGVmaW5lZChUQVJHRVRfTTY4SykgfHwgZGVmaW5lZChUQVJHRVRfQ1JJUykKICAgICAg ICAgewotICAgICAgICAgICAgdGFyZ2V0X3Vsb25nICp2OwotICAgICAgICAgICAgdGFyZ2V0X3Vs b25nIHYxLCB2MiwgdjMsIHY0LCB2NSwgdjY7Ci0gICAgICAgICAgICB2ID0gbG9ja191c2VyKGFy ZzEsIDYgKiBzaXplb2YodGFyZ2V0X3Vsb25nKSwgMSk7CisgICAgICAgICAgICBhYmlfdWxvbmcg KnY7CisgICAgICAgICAgICBhYmlfdWxvbmcgdjEsIHYyLCB2MywgdjQsIHY1LCB2NjsKKyAgICAg ICAgICAgIHYgPSBsb2NrX3VzZXIoYXJnMSwgNiAqIHNpemVvZihhYmlfdWxvbmcpLCAxKTsKICAg ICAgICAgICAgIHYxID0gdHN3YXBsKHZbMF0pOwogICAgICAgICAgICAgdjIgPSB0c3dhcGwodlsx XSk7CiAgICAgICAgICAgICB2MyA9IHRzd2FwbCh2WzJdKTsKQEAgLTM4MjksNyArMzgyOSw3IEBA CiAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zdGF0ICp0YXJnZXRfc3Q7CiAKICAgICAg ICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdCwgYXJnMiwgMCk7Ci0jaWYgZGVm aW5lZChUQVJHRVRfTUlQUykgfHwgZGVmaW5lZChUQVJHRVRfU1BBUkM2NCkKKyNpZiBkZWZpbmVk KFRBUkdFVF9NSVBTKSB8fCAoZGVmaW5lZChUQVJHRVRfU1BBUkM2NCkgJiYgIWRlZmluZWQoVEFS R0VUX0FCSTMyKSkKICAgICAgICAgICAgICAgICB0YXJnZXRfc3QtPnN0X2RldiA9IHRzd2FwMzIo c3Quc3RfZGV2KTsKICNlbHNlCiAgICAgICAgICAgICAgICAgdGFyZ2V0X3N0LT5zdF9kZXYgPSB0 c3dhcDE2KHN0LnN0X2Rldik7CkBAIC0zODM5LDcgKzM4MzksNyBAQAogICAgICAgICAgICAgICAg IHRhcmdldF9zdC0+c3RfbW9kZSA9IHRzd2FwbChzdC5zdF9tb2RlKTsgLyogWFhYOiBjaGVjayB0 aGlzICovCiAgICAgICAgICAgICAgICAgdGFyZ2V0X3N0LT5zdF91aWQgPSB0c3dhcDMyKHN0LnN0 X3VpZCk7CiAgICAgICAgICAgICAgICAgdGFyZ2V0X3N0LT5zdF9naWQgPSB0c3dhcDMyKHN0LnN0 X2dpZCk7Ci0jZWxpZiBkZWZpbmVkKFRBUkdFVF9TUEFSQzY0KQorI2VsaWYgZGVmaW5lZChUQVJH RVRfU1BBUkM2NCkgJiYgIWRlZmluZWQoVEFSR0VUX0FCSTMyKQogICAgICAgICAgICAgICAgIHRh cmdldF9zdC0+c3RfbW9kZSA9IHRzd2FwMzIoc3Quc3RfbW9kZSk7CiAgICAgICAgICAgICAgICAg dGFyZ2V0X3N0LT5zdF91aWQgPSB0c3dhcDMyKHN0LnN0X3VpZCk7CiAgICAgICAgICAgICAgICAg dGFyZ2V0X3N0LT5zdF9naWQgPSB0c3dhcDMyKHN0LnN0X2dpZCk7CkBAIC0zODUyLDcgKzM4NTIs NyBAQAogCQkvKiBJZiB0aGlzIGlzIHRoZSBzYW1lIG9uIFBQQywgdGhlbiBqdXN0IG1lcmdlIHcv IHRoZSBhYm92ZSBpZmRlZiAqLwogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3Rfbmxpbmsg PSB0c3dhcGwoc3Quc3RfbmxpbmspOwogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfcmRl diA9IHRzd2FwbChzdC5zdF9yZGV2KTsKLSNlbGlmIGRlZmluZWQoVEFSR0VUX1NQQVJDNjQpCisj ZWxpZiBkZWZpbmVkKFRBUkdFVF9TUEFSQzY0KSAmJiAhZGVmaW5lZChUQVJHRVRfQUJJMzIpCiAg ICAgICAgICAgICAgICAgdGFyZ2V0X3N0LT5zdF9ubGluayA9IHRzd2FwMzIoc3Quc3Rfbmxpbmsp OwogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+c3RfcmRldiA9IHRzd2FwMzIoc3Quc3RfcmRl dik7CiAjZWxzZQpAQCAtMzg5Miw5ICszODkyLDkgQEAKICAgICBjYXNlIFRBUkdFVF9OUl93YWl0 NDoKICAgICAgICAgewogICAgICAgICAgICAgaW50IHN0YXR1czsKLSAgICAgICAgICAgIHRhcmdl dF9sb25nIHN0YXR1c19wdHIgPSBhcmcyOworICAgICAgICAgICAgYWJpX2xvbmcgc3RhdHVzX3B0 ciA9IGFyZzI7CiAgICAgICAgICAgICBzdHJ1Y3QgcnVzYWdlIHJ1c2FnZSwgKnJ1c2FnZV9wdHI7 Ci0gICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X3J1c2FnZSA9IGFyZzQ7CisgICAgICAg ICAgICBhYmlfdWxvbmcgdGFyZ2V0X3J1c2FnZSA9IGFyZzQ7CiAgICAgICAgICAgICBpZiAodGFy Z2V0X3J1c2FnZSkKICAgICAgICAgICAgICAgICBydXNhZ2VfcHRyID0gJnJ1c2FnZTsKICAgICAg ICAgICAgIGVsc2UKQEAgLTQwNDUsMTQgKzQwNDUsMTQgQEAKICAgICAgICAgYnJlYWs7CiAjZW5k aWYKICAgICBjYXNlIFRBUkdFVF9OUl9nZXRkZW50czoKLSNpZiBUQVJHRVRfTE9OR19TSVpFICE9 IDQKKyNpZiBUQVJHRVRfQUJJX0JJVFMgIT0gMzIKICAgICAgICAgZ290byB1bmltcGxlbWVudGVk OwogI3dhcm5pbmcgbm90IHN1cHBvcnRlZAotI2VsaWYgVEFSR0VUX0xPTkdfU0laRSA9PSA0ICYm IEhPU1RfTE9OR19TSVpFID09IDgKKyNlbGlmIFRBUkdFVF9BQklfQklUUyA9PSAzMiAmJiBIT1NU X0xPTkdfQklUUyA9PSA2NAogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X2Rp cmVudCAqdGFyZ2V0X2RpcnA7CiAgICAgICAgICAgICBzdHJ1Y3QgZGlyZW50ICpkaXJwOwotICAg ICAgICAgICAgdGFyZ2V0X2xvbmcgY291bnQgPSBhcmczOworICAgICAgICAgICAgYWJpX2xvbmcg Y291bnQgPSBhcmczOwogCiAJICAgIGRpcnAgPSBtYWxsb2MoY291bnQpOwogCSAgICBpZiAoIWRp cnApCkBAIC00MDcyLDExICs0MDcyLDExIEBACiAJCXRkZSA9IHRhcmdldF9kaXJwOwogICAgICAg ICAgICAgICAgIHdoaWxlIChsZW4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlY2xlbiA9 IGRlLT5kX3JlY2xlbjsKLQkJICAgIHRyZWNsZW4gPSByZWNsZW4gLSAoMiAqIChzaXplb2YobG9u ZykgLSBzaXplb2YodGFyZ2V0X2xvbmcpKSk7CisJCSAgICB0cmVjbGVuID0gcmVjbGVuIC0gKDIg KiAoc2l6ZW9mKGxvbmcpIC0gc2l6ZW9mKGFiaV9sb25nKSkpOwogICAgICAgICAgICAgICAgICAg ICB0ZGUtPmRfcmVjbGVuID0gdHN3YXAxNih0cmVjbGVuKTsKICAgICAgICAgICAgICAgICAgICAg dGRlLT5kX2lubyA9IHRzd2FwbChkZS0+ZF9pbm8pOwogICAgICAgICAgICAgICAgICAgICB0ZGUt PmRfb2ZmID0gdHN3YXBsKGRlLT5kX29mZik7Ci0JCSAgICB0bmFtZWxlbiA9IHRyZWNsZW4gLSAo MiAqIHNpemVvZih0YXJnZXRfbG9uZykgKyAyKTsKKwkJICAgIHRuYW1lbGVuID0gdHJlY2xlbiAt ICgyICogc2l6ZW9mKGFiaV9sb25nKSArIDIpOwogCQkgICAgaWYgKHRuYW1lbGVuID4gMjU2KQog ICAgICAgICAgICAgICAgICAgICAgICAgdG5hbWVsZW4gPSAyNTY7CiAgICAgICAgICAgICAgICAg ICAgIC8qIFhYWDogbWF5IG5vdCBiZSBjb3JyZWN0ICovCkBAIC00MDk0LDcgKzQwOTQsNyBAQAog I2Vsc2UKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IGRpcmVudCAqZGlycDsKLSAgICAg ICAgICAgIHRhcmdldF9sb25nIGNvdW50ID0gYXJnMzsKKyAgICAgICAgICAgIGFiaV9sb25nIGNv dW50ID0gYXJnMzsKIAogICAgICAgICAgICAgZGlycCA9IGxvY2tfdXNlcihhcmcyLCBjb3VudCwg MCk7CiAgICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc3lzX2dldGRlbnRzKGFyZzEsIGRpcnAs IGNvdW50KSk7CkBAIC00MTIyLDcgKzQxMjIsNyBAQAogICAgIGNhc2UgVEFSR0VUX05SX2dldGRl bnRzNjQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cnVjdCBkaXJlbnQ2NCAqZGlycDsKLSAg ICAgICAgICAgIHRhcmdldF9sb25nIGNvdW50ID0gYXJnMzsKKyAgICAgICAgICAgIGFiaV9sb25n IGNvdW50ID0gYXJnMzsKICAgICAgICAgICAgIGRpcnAgPSBsb2NrX3VzZXIoYXJnMiwgY291bnQs IDApOwogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHN5c19nZXRkZW50czY0KGFyZzEsIGRp cnAsIGNvdW50KSk7CiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsKQEAgLTQ3NDIs NyArNDc0Miw3IEBACiAgICAgICAgIHJldCA9IGdldF9lcnJubygwKTsKICAgICAgICAgYnJlYWs7 CiAjZW5kaWYKLSNpZiBUQVJHRVRfTE9OR19CSVRTID09IDMyCisjaWYgVEFSR0VUX0FCSV9CSVRT ID09IDMyCiAgICAgY2FzZSBUQVJHRVRfTlJfZmNudGw2NDoKICAgICB7CiAJaW50IGNtZDsKSW5k ZXg6IHFlbXUvbGludXgtdXNlci9zeXNjYWxsX2RlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9y aWcvbGludXgtdXNlci9zeXNjYWxsX2RlZnMuaAkyMDA3LTEwLTExIDE5OjE3OjEzLjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9saW51eC11c2VyL3N5c2NhbGxfZGVmcy5oCTIwMDctMTAtMTIgMTY6 MDg6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0xMDUsMTMgKzEwNSwxMyBAQAogfTsKIAogc3RydWN0 IHRhcmdldF90aW1ldmFsIHsKLSAgICB0YXJnZXRfbG9uZyB0dl9zZWM7Ci0gICAgdGFyZ2V0X2xv bmcgdHZfdXNlYzsKKyAgICBhYmlfbG9uZyB0dl9zZWM7CisgICAgYWJpX2xvbmcgdHZfdXNlYzsK IH07CiAKIHN0cnVjdCB0YXJnZXRfdGltZXNwZWMgewotICAgIHRhcmdldF9sb25nIHR2X3NlYzsK LSAgICB0YXJnZXRfbG9uZyB0dl9uc2VjOworICAgIGFiaV9sb25nIHR2X3NlYzsKKyAgICBhYmlf bG9uZyB0dl9uc2VjOwogfTsKIAogc3RydWN0IHRhcmdldF9pdGltZXJ2YWwgewpAQCAtMTE5LDcg KzExOSw3IEBACiAgICAgc3RydWN0IHRhcmdldF90aW1ldmFsIGl0X3ZhbHVlOwogfTsKIAotdHlw ZWRlZiB0YXJnZXRfbG9uZyB0YXJnZXRfY2xvY2tfdDsKK3R5cGVkZWYgYWJpX2xvbmcgdGFyZ2V0 X2Nsb2NrX3Q7CiAKICNkZWZpbmUgVEFSR0VUX0haIDEwMAogCkBAIC0xMzEsMzMgKzEzMSwzMyBA QAogfTsKIAogc3RydWN0IHRhcmdldF91dGltYnVmIHsKLSAgICB0YXJnZXRfbG9uZyBhY3RpbWU7 Ci0gICAgdGFyZ2V0X2xvbmcgbW9kdGltZTsKKyAgICBhYmlfbG9uZyBhY3RpbWU7CisgICAgYWJp X2xvbmcgbW9kdGltZTsKIH07CiAKIHN0cnVjdCB0YXJnZXRfc2VsX2FyZ19zdHJ1Y3QgewotICAg IHRhcmdldF9sb25nIG47Ci0gICAgdGFyZ2V0X2xvbmcgaW5wLCBvdXRwLCBleHA7Ci0gICAgdGFy Z2V0X2xvbmcgdHZwOworICAgIGFiaV9sb25nIG47CisgICAgYWJpX2xvbmcgaW5wLCBvdXRwLCBl eHA7CisgICAgYWJpX2xvbmcgdHZwOwogfTsKIAogc3RydWN0IHRhcmdldF9pb3ZlYyB7Ci0gICAg dGFyZ2V0X2xvbmcgaW92X2Jhc2U7ICAgLyogU3RhcnRpbmcgYWRkcmVzcyAqLwotICAgIHRhcmdl dF9sb25nIGlvdl9sZW47ICAgLyogTnVtYmVyIG9mIGJ5dGVzICovCisgICAgYWJpX2xvbmcgaW92 X2Jhc2U7ICAgLyogU3RhcnRpbmcgYWRkcmVzcyAqLworICAgIGFiaV9sb25nIGlvdl9sZW47ICAg LyogTnVtYmVyIG9mIGJ5dGVzICovCiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X21zZ2hkciB7Ci0gICAg dGFyZ2V0X2xvbmcJIG1zZ19uYW1lOwkvKiBTb2NrZXQgbmFtZQkJCSovCi0gICAgaW50CQkgbXNn X25hbWVsZW47CS8qIExlbmd0aCBvZiBuYW1lCQkqLwotICAgIHRhcmdldF9sb25nCSBtc2dfaW92 OwkvKiBEYXRhIGJsb2NrcwkJCSovCi0gICAgdGFyZ2V0X2xvbmcJIG1zZ19pb3ZsZW47CS8qIE51 bWJlciBvZiBibG9ja3MJCSovCi0gICAgdGFyZ2V0X2xvbmcgIG1zZ19jb250cm9sOwkvKiBQZXIg cHJvdG9jb2wgbWFnaWMgKGVnIEJTRCBmaWxlIGRlc2NyaXB0b3IgcGFzc2luZykgKi8KLSAgICB0 YXJnZXRfbG9uZwkgbXNnX2NvbnRyb2xsZW47CS8qIExlbmd0aCBvZiBjbXNnIGxpc3QgKi8KKyAg ICBhYmlfbG9uZwkgbXNnX25hbWU7CSAvKiBTb2NrZXQgbmFtZQkJCSovCisgICAgaW50CQkgbXNn X25hbWVsZW47CSAvKiBMZW5ndGggb2YgbmFtZQkJKi8KKyAgICBhYmlfbG9uZwkgbXNnX2lvdjsJ IC8qIERhdGEgYmxvY2tzCQkJKi8KKyAgICBhYmlfbG9uZwkgbXNnX2lvdmxlbjsJIC8qIE51bWJl ciBvZiBibG9ja3MJCSovCisgICAgYWJpX2xvbmcgICAgIG1zZ19jb250cm9sOwkgLyogUGVyIHBy b3RvY29sIG1hZ2ljIChlZyBCU0QgZmlsZSBkZXNjcmlwdG9yIHBhc3NpbmcpICovCisgICAgYWJp X2xvbmcJIG1zZ19jb250cm9sbGVuOyAvKiBMZW5ndGggb2YgY21zZyBsaXN0ICovCiAgICAgdW5z aWduZWQgaW50IG1zZ19mbGFnczsKIH07CiAKIHN0cnVjdCB0YXJnZXRfY21zZ2hkciB7Ci0gICAg dGFyZ2V0X2xvbmcgIGNtc2dfbGVuOworICAgIGFiaV9sb25nICAgICBjbXNnX2xlbjsKICAgICBp bnQgICAgICAgICAgY21zZ19sZXZlbDsKICAgICBpbnQgICAgICAgICAgY21zZ190eXBlOwogfTsK QEAgLTE2Nyw4ICsxNjcsOCBAQAogI2RlZmluZSBUQVJHRVRfQ01TR19GSVJTVEhEUihtaGRyKSBc CiAgICgoc2l6ZV90KSB0c3dhcGwoKG1oZHIpLT5tc2dfY29udHJvbGxlbikgPj0gc2l6ZW9mIChz dHJ1Y3QgdGFyZ2V0X2Ntc2doZHIpIFwKICAgID8gKHN0cnVjdCB0YXJnZXRfY21zZ2hkciAqKSB0 c3dhcGwoKG1oZHIpLT5tc2dfY29udHJvbCkgOiAoc3RydWN0IHRhcmdldF9jbXNnaGRyICopIE5V TEwpCi0jZGVmaW5lIFRBUkdFVF9DTVNHX0FMSUdOKGxlbikgKCgobGVuKSArIHNpemVvZiAodGFy Z2V0X2xvbmcpIC0gMSkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgKHNpemVf dCkgfihzaXplb2YgKHRhcmdldF9sb25nKSAtIDEpKQorI2RlZmluZSBUQVJHRVRfQ01TR19BTElH TihsZW4pICgoKGxlbikgKyBzaXplb2YgKGFiaV9sb25nKSAtIDEpIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmIChzaXplX3QpIH4oc2l6ZW9mIChhYmlfbG9uZykgLSAxKSkKICNk ZWZpbmUgVEFSR0VUX0NNU0dfU1BBQ0UobGVuKSAoVEFSR0VUX0NNU0dfQUxJR04gKGxlbikgXAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVEFSR0VUX0NNU0dfQUxJR04gKHNpemVv ZiAoc3RydWN0IHRhcmdldF9jbXNnaGRyKSkpCiAjZGVmaW5lIFRBUkdFVF9DTVNHX0xFTihsZW4p ICAgKFRBUkdFVF9DTVNHX0FMSUdOIChzaXplb2YgKHN0cnVjdCB0YXJnZXRfY21zZ2hkcikpICsg KGxlbikpCkBAIC0xOTEsMjAgKzE5MSwyMCBAQAogc3RydWN0ICB0YXJnZXRfcnVzYWdlIHsKICAg ICAgICAgc3RydWN0IHRhcmdldF90aW1ldmFsIHJ1X3V0aW1lOyAgICAgICAgLyogdXNlciB0aW1l IHVzZWQgKi8KICAgICAgICAgc3RydWN0IHRhcmdldF90aW1ldmFsIHJ1X3N0aW1lOyAgICAgICAg Lyogc3lzdGVtIHRpbWUgdXNlZCAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9tYXhyc3M7 ICAgICAgICAgICAgICAvKiBtYXhpbXVtIHJlc2lkZW50IHNldCBzaXplICovCi0gICAgICAgIHRh cmdldF9sb25nICAgIHJ1X2l4cnNzOyAgICAgICAgICAgICAgIC8qIGludGVncmFsIHNoYXJlZCBt ZW1vcnkgc2l6ZSAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9pZHJzczsgICAgICAgICAg ICAgICAvKiBpbnRlZ3JhbCB1bnNoYXJlZCBkYXRhIHNpemUgKi8KLSAgICAgICAgdGFyZ2V0X2xv bmcgICAgcnVfaXNyc3M7ICAgICAgICAgICAgICAgLyogaW50ZWdyYWwgdW5zaGFyZWQgc3RhY2sg c2l6ZSAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9taW5mbHQ7ICAgICAgICAgICAgICAv KiBwYWdlIHJlY2xhaW1zICovCi0gICAgICAgIHRhcmdldF9sb25nICAgIHJ1X21hamZsdDsgICAg ICAgICAgICAgIC8qIHBhZ2UgZmF1bHRzICovCi0gICAgICAgIHRhcmdldF9sb25nICAgIHJ1X25z d2FwOyAgICAgICAgICAgICAgIC8qIHN3YXBzICovCi0gICAgICAgIHRhcmdldF9sb25nICAgIHJ1 X2luYmxvY2s7ICAgICAgICAgICAgIC8qIGJsb2NrIGlucHV0IG9wZXJhdGlvbnMgKi8KLSAgICAg ICAgdGFyZ2V0X2xvbmcgICAgcnVfb3VibG9jazsgICAgICAgICAgICAgLyogYmxvY2sgb3V0cHV0 IG9wZXJhdGlvbnMgKi8KLSAgICAgICAgdGFyZ2V0X2xvbmcgICAgcnVfbXNnc25kOyAgICAgICAg ICAgICAgLyogbWVzc2FnZXMgc2VudCAqLwotICAgICAgICB0YXJnZXRfbG9uZyAgICBydV9tc2dy Y3Y7ICAgICAgICAgICAgICAvKiBtZXNzYWdlcyByZWNlaXZlZCAqLwotICAgICAgICB0YXJnZXRf bG9uZyAgICBydV9uc2lnbmFsczsgICAgICAgICAgICAvKiBzaWduYWxzIHJlY2VpdmVkICovCi0g ICAgICAgIHRhcmdldF9sb25nICAgIHJ1X252Y3N3OyAgICAgICAgICAgICAgIC8qIHZvbHVudGFy eSBjb250ZXh0IHN3aXRjaGVzICovCi0gICAgICAgIHRhcmdldF9sb25nICAgIHJ1X25pdmNzdzsg ICAgICAgICAgICAgIC8qIGludm9sdW50YXJ5ICIgKi8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVf bWF4cnNzOyAgICAgICAgICAgICAgICAgLyogbWF4aW11bSByZXNpZGVudCBzZXQgc2l6ZSAqLwor ICAgICAgICBhYmlfbG9uZyAgICBydV9peHJzczsgICAgICAgICAgICAgICAgICAvKiBpbnRlZ3Jh bCBzaGFyZWQgbWVtb3J5IHNpemUgKi8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVfaWRyc3M7ICAg ICAgICAgICAgICAgICAgLyogaW50ZWdyYWwgdW5zaGFyZWQgZGF0YSBzaXplICovCisgICAgICAg IGFiaV9sb25nICAgIHJ1X2lzcnNzOyAgICAgICAgICAgICAgICAgIC8qIGludGVncmFsIHVuc2hh cmVkIHN0YWNrIHNpemUgKi8KKyAgICAgICAgYWJpX2xvbmcgICAgcnVfbWluZmx0OyAgICAgICAg ICAgICAgICAgLyogcGFnZSByZWNsYWltcyAqLworICAgICAgICBhYmlfbG9uZyAgICBydV9tYWpm bHQ7ICAgICAgICAgICAgICAgICAvKiBwYWdlIGZhdWx0cyAqLworICAgICAgICBhYmlfbG9uZyAg ICBydV9uc3dhcDsgICAgICAgICAgICAgICAgICAvKiBzd2FwcyAqLworICAgICAgICBhYmlfbG9u ZyAgICBydV9pbmJsb2NrOyAgICAgICAgICAgICAgICAvKiBibG9jayBpbnB1dCBvcGVyYXRpb25z ICovCisgICAgICAgIGFiaV9sb25nICAgIHJ1X291YmxvY2s7ICAgICAgICAgICAgICAgIC8qIGJs b2NrIG91dHB1dCBvcGVyYXRpb25zICovCisgICAgICAgIGFiaV9sb25nICAgIHJ1X21zZ3NuZDsg ICAgICAgICAgICAgICAgIC8qIG1lc3NhZ2VzIHNlbnQgKi8KKyAgICAgICAgYWJpX2xvbmcgICAg cnVfbXNncmN2OyAgICAgICAgICAgICAgICAgLyogbWVzc2FnZXMgcmVjZWl2ZWQgKi8KKyAgICAg ICAgYWJpX2xvbmcgICAgcnVfbnNpZ25hbHM7ICAgICAgICAgICAgICAgLyogc2lnbmFscyByZWNl aXZlZCAqLworICAgICAgICBhYmlfbG9uZyAgICBydV9udmNzdzsgICAgICAgICAgICAgICAgICAv KiB2b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcyAqLworICAgICAgICBhYmlfbG9uZyAgICBydV9u aXZjc3c7ICAgICAgICAgICAgICAgICAvKiBpbnZvbHVudGFyeSAiICovCiB9OwogCiB0eXBlZGVm IHN0cnVjdCB7CkBAIC0yMjUsOCArMjI1LDggQEAKIH07CiAKIHN0cnVjdCB0YXJnZXRfZGlyZW50 IHsKLQl0YXJnZXRfbG9uZwlkX2lubzsKLQl0YXJnZXRfbG9uZwlkX29mZjsKKwlhYmlfbG9uZwlk X2lubzsKKwlhYmlfbG9uZwlkX29mZjsKIAl1bnNpZ25lZCBzaG9ydAlkX3JlY2xlbjsKIAljaGFy CQlkX25hbWVbMjU2XTsgLyogV2UgbXVzdCBub3QgaW5jbHVkZSBsaW1pdHMuaCEgKi8KIH07CkBA IC0yNDEsMjAgKzI0MSwyMCBAQAogCiAKIC8qIG1vc3RseSBnZW5lcmljIHNpZ25hbCBzdHVmZiAq LwotI2RlZmluZSBUQVJHRVRfU0lHX0RGTAkoKHRhcmdldF9sb25nKTApCS8qIGRlZmF1bHQgc2ln bmFsIGhhbmRsaW5nICovCi0jZGVmaW5lIFRBUkdFVF9TSUdfSUdOCSgodGFyZ2V0X2xvbmcpMSkJ LyogaWdub3JlIHNpZ25hbCAqLwotI2RlZmluZSBUQVJHRVRfU0lHX0VSUgkoKHRhcmdldF9sb25n KS0xKQkvKiBlcnJvciByZXR1cm4gZnJvbSBzaWduYWwgKi8KKyNkZWZpbmUgVEFSR0VUX1NJR19E RkwJKChhYmlfbG9uZykwKQkvKiBkZWZhdWx0IHNpZ25hbCBoYW5kbGluZyAqLworI2RlZmluZSBU QVJHRVRfU0lHX0lHTgkoKGFiaV9sb25nKTEpCS8qIGlnbm9yZSBzaWduYWwgKi8KKyNkZWZpbmUg VEFSR0VUX1NJR19FUlIJKChhYmlfbG9uZyktMSkJLyogZXJyb3IgcmV0dXJuIGZyb20gc2lnbmFs ICovCiAKICNpZmRlZiBUQVJHRVRfTUlQUwogI2RlZmluZSBUQVJHRVRfTlNJRwkgICAxMjgKICNl bHNlCiAjZGVmaW5lIFRBUkdFVF9OU0lHCSAgIDY0CiAjZW5kaWYKLSNkZWZpbmUgVEFSR0VUX05T SUdfQlBXCSAgIFRBUkdFVF9MT05HX0JJVFMKKyNkZWZpbmUgVEFSR0VUX05TSUdfQlBXCSAgIFRB UkdFVF9BQklfQklUUwogI2RlZmluZSBUQVJHRVRfTlNJR19XT1JEUyAgKFRBUkdFVF9OU0lHIC8g VEFSR0VUX05TSUdfQlBXKQogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgdGFyZ2V0X3Vsb25nIHNp Z1tUQVJHRVRfTlNJR19XT1JEU107CisgICAgYWJpX3Vsb25nIHNpZ1tUQVJHRVRfTlNJR19XT1JE U107CiB9IHRhcmdldF9zaWdzZXRfdDsKIAogI2lmZGVmIEJTV0FQX05FRURFRApAQCAtMjcxLDcg KzI3MSw3IEBACiB9CiAjZW5kaWYKIAotc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF9zaWdpbml0 c2V0KHRhcmdldF9zaWdzZXRfdCAqZCwgdGFyZ2V0X3Vsb25nIHNldCkKK3N0YXRpYyBpbmxpbmUg dm9pZCB0YXJnZXRfc2lnaW5pdHNldCh0YXJnZXRfc2lnc2V0X3QgKmQsIGFiaV91bG9uZyBzZXQp CiB7CiAgICAgaW50IGk7CiAgICAgZC0+c2lnWzBdID0gc2V0OwpAQCAtMjgxLDEwICsyODEsMTAg QEAKIAogdm9pZCBob3N0X3RvX3RhcmdldF9zaWdzZXQodGFyZ2V0X3NpZ3NldF90ICpkLCBjb25z dCBzaWdzZXRfdCAqcyk7CiB2b2lkIHRhcmdldF90b19ob3N0X3NpZ3NldChzaWdzZXRfdCAqZCwg Y29uc3QgdGFyZ2V0X3NpZ3NldF90ICpzKTsKLXZvaWQgaG9zdF90b190YXJnZXRfb2xkX3NpZ3Nl dCh0YXJnZXRfdWxvbmcgKm9sZF9zaWdzZXQsCit2b2lkIGhvc3RfdG9fdGFyZ2V0X29sZF9zaWdz ZXQoYWJpX3Vsb25nICpvbGRfc2lnc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHNpZ3NldF90ICpzaWdzZXQpOwogdm9pZCB0YXJnZXRfdG9faG9zdF9vbGRfc2lnc2V0 KHNpZ3NldF90ICpzaWdzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dGFyZ2V0X3Vsb25nICpvbGRfc2lnc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBhYmlfdWxvbmcgKm9sZF9zaWdzZXQpOwogc3RydWN0IHRhcmdldF9zaWdhY3Rpb247 CiBpbnQgZG9fc2lnYWN0aW9uKGludCBzaWcsIGNvbnN0IHN0cnVjdCB0YXJnZXRfc2lnYWN0aW9u ICphY3QsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc2lnYWN0aW9uICpvYWN0KTsK QEAgLTQ1Myw0MCArNDUzLDQwIEBACiAjaWYgZGVmaW5lZChUQVJHRVRfTUlQU04zMikKIAl1aW50 MzJfdAlfc2FfaGFuZGxlcjsKICNlbHNlCi0JdGFyZ2V0X3Vsb25nCV9zYV9oYW5kbGVyOworCWFi aV91bG9uZwlfc2FfaGFuZGxlcjsKICNlbmRpZgogCXRhcmdldF9zaWdzZXRfdAlzYV9tYXNrOwog fTsKIAogI2Vsc2UKIHN0cnVjdCB0YXJnZXRfb2xkX3NpZ2FjdGlvbiB7Ci0gICAgICAgIHRhcmdl dF91bG9uZyBfc2FfaGFuZGxlcjsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNhX21hc2s7Ci0gICAg ICAgIHRhcmdldF91bG9uZyBzYV9mbGFnczsKLSAgICAgICAgdGFyZ2V0X3Vsb25nIHNhX3Jlc3Rv cmVyOworICAgICAgICBhYmlfdWxvbmcgX3NhX2hhbmRsZXI7CisgICAgICAgIGFiaV91bG9uZyBz YV9tYXNrOworICAgICAgICBhYmlfdWxvbmcgc2FfZmxhZ3M7CisgICAgICAgIGFiaV91bG9uZyBz YV9yZXN0b3JlcjsKIH07CiAKIHN0cnVjdCB0YXJnZXRfc2lnYWN0aW9uIHsKLSAgICAgICAgdGFy Z2V0X3Vsb25nIF9zYV9oYW5kbGVyOwotICAgICAgICB0YXJnZXRfdWxvbmcgc2FfZmxhZ3M7Ci0g ICAgICAgIHRhcmdldF91bG9uZyBzYV9yZXN0b3JlcjsKKyAgICAgICAgYWJpX3Vsb25nIF9zYV9o YW5kbGVyOworICAgICAgICBhYmlfdWxvbmcgc2FfZmxhZ3M7CisgICAgICAgIGFiaV91bG9uZyBz YV9yZXN0b3JlcjsKICAgICAgICAgdGFyZ2V0X3NpZ3NldF90IHNhX21hc2s7CiB9OwogI2VuZGlm CiAKIHR5cGVkZWYgdW5pb24gdGFyZ2V0X3NpZ3ZhbCB7CiAJaW50IHNpdmFsX2ludDsKLSAgICAg ICAgdGFyZ2V0X3Vsb25nIHNpdmFsX3B0cjsKKyAgICAgICAgYWJpX3Vsb25nIHNpdmFsX3B0cjsK IH0gdGFyZ2V0X3NpZ3ZhbF90OwogI2lmIDAKICNpZiBkZWZpbmVkIChUQVJHRVRfU1BBUkMpCiB0 eXBlZGVmIHN0cnVjdCB7CiAJc3RydWN0IHsKLQkJdGFyZ2V0X3Vsb25nIHBzcjsKLQkJdGFyZ2V0 X3Vsb25nIHBjOwotCQl0YXJnZXRfdWxvbmcgbnBjOwotCQl0YXJnZXRfdWxvbmcgeTsKLQkJdGFy Z2V0X3Vsb25nIHVfcmVnc1sxNl07IC8qIGdsb2JhbHMgYW5kIGlucyAqLworCQlhYmlfdWxvbmcg cHNyOworCQlhYmlfdWxvbmcgcGM7CisJCWFiaV91bG9uZyBucGM7CisJCWFiaV91bG9uZyB5Owor CQlhYmlfdWxvbmcgdV9yZWdzWzE2XTsgLyogZ2xvYmFscyBhbmQgaW5zICovCiAJfQkJc2lfcmVn czsKIAlpbnQJCXNpX21hc2s7CiB9IF9fc2lnaW5mb190OwpAQCAtNTQ0LDcgKzU0NCw3IEBACiAK IAkJLyogU0lHSUxMLCBTSUdGUEUsIFNJR1NFR1YsIFNJR0JVUyAqLwogCQlzdHJ1Y3QgewotCQkJ dGFyZ2V0X3Vsb25nIF9hZGRyOyAvKiBmYXVsdGluZyBpbnNuL21lbW9yeSByZWYuICovCisJCQlh YmlfdWxvbmcgX2FkZHI7IC8qIGZhdWx0aW5nIGluc24vbWVtb3J5IHJlZi4gKi8KIAkJfSBfc2ln ZmF1bHQ7CiAKIAkJLyogU0lHUE9MTCAqLwpAQCAtNjE0LDggKzYxNCw4IEBACiAjZW5kaWYgLyog ZGVmaW5lZChUQVJHRVRfSTM4NikgfHwgZGVmaW5lZChUQVJHRVRfQVJNKSAqLwogCiBzdHJ1Y3Qg dGFyZ2V0X3JsaW1pdCB7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgIHJsaW1fY3VyOwotICAgICAg ICB0YXJnZXRfdWxvbmcgICBybGltX21heDsKKyAgICAgICAgYWJpX3Vsb25nICAgcmxpbV9jdXI7 CisgICAgICAgIGFiaV91bG9uZyAgIHJsaW1fbWF4OwogfTsKIAogc3RydWN0IHRhcmdldF9wb2xs ZmQgewpAQCAtODg4LDI0ICs4ODgsMjQgQEAKIHN0cnVjdCB0YXJnZXRfc3RhdCB7CiAJdW5zaWdu ZWQgc2hvcnQgc3RfZGV2OwogCXVuc2lnbmVkIHNob3J0IF9fcGFkMTsKLQl0YXJnZXRfdWxvbmcg c3RfaW5vOworCWFiaV91bG9uZyBzdF9pbm87CiAJdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKIAl1 bnNpZ25lZCBzaG9ydCBzdF9ubGluazsKIAl1bnNpZ25lZCBzaG9ydCBzdF91aWQ7CiAJdW5zaWdu ZWQgc2hvcnQgc3RfZ2lkOwogCXVuc2lnbmVkIHNob3J0IHN0X3JkZXY7CiAJdW5zaWduZWQgc2hv cnQgX19wYWQyOwotCXRhcmdldF91bG9uZyAgc3Rfc2l6ZTsKLQl0YXJnZXRfdWxvbmcgIHN0X2Js a3NpemU7Ci0JdGFyZ2V0X3Vsb25nICBzdF9ibG9ja3M7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRf c3RfYXRpbWU7Ci0JdGFyZ2V0X3Vsb25nICBfX3VudXNlZDE7Ci0JdGFyZ2V0X3Vsb25nICB0YXJn ZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X3Vsb25nICBfX3VudXNlZDI7Ci0JdGFyZ2V0X3Vsb25nICB0 YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X3Vsb25nICBfX3VudXNlZDM7Ci0JdGFyZ2V0X3Vsb25n ICBfX3VudXNlZDQ7Ci0JdGFyZ2V0X3Vsb25nICBfX3VudXNlZDU7CisJYWJpX3Vsb25nICBzdF9z aXplOworCWFiaV91bG9uZyAgc3RfYmxrc2l6ZTsKKwlhYmlfdWxvbmcgIHN0X2Jsb2NrczsKKwlh YmlfdWxvbmcgIHRhcmdldF9zdF9hdGltZTsKKwlhYmlfdWxvbmcgIF9fdW51c2VkMTsKKwlhYmlf dWxvbmcgIHRhcmdldF9zdF9tdGltZTsKKwlhYmlfdWxvbmcgIF9fdW51c2VkMjsKKwlhYmlfdWxv bmcgIHRhcmdldF9zdF9jdGltZTsKKwlhYmlfdWxvbmcgIF9fdW51c2VkMzsKKwlhYmlfdWxvbmcg IF9fdW51c2VkNDsKKwlhYmlfdWxvbmcgIF9fdW51c2VkNTsKIH07CiAKIC8qIFRoaXMgbWF0Y2hl cyBzdHJ1Y3Qgc3RhdDY0IGluIGdsaWJjMi4xLCBoZW5jZSB0aGUgYWJzb2x1dGVseQpAQCAtOTE2 LDMxICs5MTYsMzEgQEAKIAl1bnNpZ25lZCBjaGFyCV9fcGFkMFsxMF07CiAKICNkZWZpbmUgVEFS R0VUX1NUQVQ2NF9IQVNfQlJPS0VOX1NUX0lOTwkxCi0JdGFyZ2V0X3Vsb25nCV9fc3RfaW5vOwor CWFiaV91bG9uZwlfX3N0X2lubzsKIAogCXVuc2lnbmVkIGludAlzdF9tb2RlOwogCXVuc2lnbmVk IGludAlzdF9ubGluazsKIAotCXRhcmdldF91bG9uZwlzdF91aWQ7Ci0JdGFyZ2V0X3Vsb25nCXN0 X2dpZDsKKwlhYmlfdWxvbmcJc3RfdWlkOworCWFiaV91bG9uZwlzdF9naWQ7CiAKIAl1bnNpZ25l ZCBzaG9ydAlzdF9yZGV2OwogCXVuc2lnbmVkIGNoYXIJX19wYWQzWzEwXTsKIAogCWxvbmcgbG9u ZwlzdF9zaXplOwotCXRhcmdldF91bG9uZwlzdF9ibGtzaXplOworCWFiaV91bG9uZwlzdF9ibGtz aXplOwogCi0JdGFyZ2V0X3Vsb25nCXN0X2Jsb2NrczsJLyogTnVtYmVyIDUxMi1ieXRlIGJsb2Nr cyBhbGxvY2F0ZWQuICovCi0JdGFyZ2V0X3Vsb25nCV9fcGFkNDsJCS8qIGZ1dHVyZSBwb3NzaWJs ZSBzdF9ibG9ja3MgaGlnaCBiaXRzICovCisJYWJpX3Vsb25nCXN0X2Jsb2NrczsJLyogTnVtYmVy IDUxMi1ieXRlIGJsb2NrcyBhbGxvY2F0ZWQuICovCisJYWJpX3Vsb25nCV9fcGFkNDsJCS8qIGZ1 dHVyZSBwb3NzaWJsZSBzdF9ibG9ja3MgaGlnaCBiaXRzICovCiAKLQl0YXJnZXRfdWxvbmcJdGFy Z2V0X3N0X2F0aW1lOwotCXRhcmdldF91bG9uZwlfX3BhZDU7CisJYWJpX3Vsb25nCXRhcmdldF9z dF9hdGltZTsKKwlhYmlfdWxvbmcJX19wYWQ1OwogCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9t dGltZTsKLQl0YXJnZXRfdWxvbmcJX19wYWQ2OworCWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWU7 CisJYWJpX3Vsb25nCV9fcGFkNjsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfY3RpbWU7Ci0J dGFyZ2V0X3Vsb25nCV9fcGFkNzsJCS8qIHdpbGwgYmUgaGlnaCAzMiBiaXRzIG9mIGN0aW1lIHNv bWVkYXkgKi8KKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2N0aW1lOworCWFiaV91bG9uZwlfX3BhZDc7 CQkvKiB3aWxsIGJlIGhpZ2ggMzIgYml0cyBvZiBjdGltZSBzb21lZGF5ICovCiAKIAl1bnNpZ25l ZCBsb25nIGxvbmcJc3RfaW5vOwogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKQEAgLTk0OSw1 MCArOTQ5LDUwIEBACiBzdHJ1Y3QgdGFyZ2V0X2VhYmlfc3RhdDY0IHsKICAgICAgICAgdW5zaWdu ZWQgbG9uZyBsb25nIHN0X2RldjsKICAgICAgICAgdW5zaWduZWQgaW50ICAgIF9fcGFkMTsKLSAg ICAgICAgdGFyZ2V0X3Vsb25nICAgIF9fc3RfaW5vOworICAgICAgICBhYmlfdWxvbmcgICAgX19z dF9pbm87CiAgICAgICAgIHVuc2lnbmVkIGludCAgICBzdF9tb2RlOwogICAgICAgICB1bnNpZ25l ZCBpbnQgICAgc3Rfbmxpbms7CiAKLSAgICAgICAgdGFyZ2V0X3Vsb25nICAgIHN0X3VpZDsKLSAg ICAgICAgdGFyZ2V0X3Vsb25nICAgIHN0X2dpZDsKKyAgICAgICAgYWJpX3Vsb25nICAgIHN0X3Vp ZDsKKyAgICAgICAgYWJpX3Vsb25nICAgIHN0X2dpZDsKIAogICAgICAgICB1bnNpZ25lZCBsb25n IGxvbmcgc3RfcmRldjsKICAgICAgICAgdW5zaWduZWQgaW50ICAgIF9fcGFkMlsyXTsKIAogICAg ICAgICBsb25nIGxvbmcgICAgICAgc3Rfc2l6ZTsKLSAgICAgICAgdGFyZ2V0X3Vsb25nICAgIHN0 X2Jsa3NpemU7CisgICAgICAgIGFiaV91bG9uZyAgICBzdF9ibGtzaXplOwogICAgICAgICB1bnNp Z25lZCBpbnQgICAgX19wYWQzOwogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RfYmxvY2tz OwogCi0gICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfYXRpbWU7Ci0gICAgICAgIHRh cmdldF91bG9uZyAgICB0YXJnZXRfc3RfYXRpbWVfbnNlYzsKKyAgICAgICAgYWJpX3Vsb25nICAg IHRhcmdldF9zdF9hdGltZTsKKyAgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9hdGltZV9u c2VjOwogCi0gICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfbXRpbWU7Ci0gICAgICAg IHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfbXRpbWVfbnNlYzsKKyAgICAgICAgYWJpX3Vsb25n ICAgIHRhcmdldF9zdF9tdGltZTsKKyAgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9tdGlt ZV9uc2VjOwogCi0gICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfY3RpbWU7Ci0gICAg ICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfY3RpbWVfbnNlYzsKKyAgICAgICAgYWJpX3Vs b25nICAgIHRhcmdldF9zdF9jdGltZTsKKyAgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9j dGltZV9uc2VjOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdF9pbm87CiB9IF9fYXR0 cmlidXRlX18gKChwYWNrZWQpKTsKICNlbmRpZgogCi0jZWxpZiBkZWZpbmVkKFRBUkdFVF9TUEFS QzY0KQorI2VsaWYgZGVmaW5lZChUQVJHRVRfU1BBUkM2NCkgJiYgIWRlZmluZWQoVEFSR0VUX0FC STMyKQogc3RydWN0IHRhcmdldF9zdGF0IHsKIAl1bnNpZ25lZCBpbnQJc3RfZGV2OwotCXRhcmdl dF91bG9uZwlzdF9pbm87CisJYWJpX3Vsb25nCXN0X2lubzsKIAl1bnNpZ25lZCBpbnQJc3RfbW9k ZTsKIAl1bnNpZ25lZCBpbnQJc3Rfbmxpbms7CiAJdW5zaWduZWQgaW50CXN0X3VpZDsKIAl1bnNp Z25lZCBpbnQJc3RfZ2lkOwogCXVuc2lnbmVkIGludAlzdF9yZGV2OwotCXRhcmdldF9sb25nCXN0 X3NpemU7Ci0JdGFyZ2V0X2xvbmcJdGFyZ2V0X3N0X2F0aW1lOwotCXRhcmdldF9sb25nCXRhcmdl dF9zdF9tdGltZTsKLQl0YXJnZXRfbG9uZwl0YXJnZXRfc3RfY3RpbWU7Ci0JdGFyZ2V0X2xvbmcJ c3RfYmxrc2l6ZTsKLQl0YXJnZXRfbG9uZwlzdF9ibG9ja3M7Ci0JdGFyZ2V0X3Vsb25nCV9fdW51 c2VkNFsyXTsKKwlhYmlfbG9uZwlzdF9zaXplOworCWFiaV9sb25nCXRhcmdldF9zdF9hdGltZTsK KwlhYmlfbG9uZwl0YXJnZXRfc3RfbXRpbWU7CisJYWJpX2xvbmcJdGFyZ2V0X3N0X2N0aW1lOwor CWFiaV9sb25nCXN0X2Jsa3NpemU7CisJYWJpX2xvbmcJc3RfYmxvY2tzOworCWFiaV91bG9uZwlf X3VudXNlZDRbMl07CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3N0YXQ2NCB7CkBAIC0xMDE2LDM4ICsx MDE2LDM4IEBACiAJdW5zaWduZWQgY2hhcglfX3BhZDRbNF07CiAJdW5zaWduZWQgaW50CXN0X2Js b2NrczsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfYXRpbWU7Ci0JdGFyZ2V0X3Vsb25nCV9f dW51c2VkMTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lOworCWFiaV91bG9uZwlfX3VudXNl ZDE7CiAKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X210aW1lOwotCXRhcmdldF91bG9uZwlfX3Vu dXNlZDI7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9tdGltZTsKKwlhYmlfdWxvbmcJX191bnVzZWQy OwogCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9jdGltZTsKLQl0YXJnZXRfdWxvbmcJX191bnVz ZWQzOworCWFiaV91bG9uZwl0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vsb25nCV9fdW51c2VkMzsK IAotCXRhcmdldF91bG9uZwlfX3VudXNlZDRbM107CisJYWJpX3Vsb25nCV9fdW51c2VkNFszXTsK IH07CiAKICNlbGlmIGRlZmluZWQoVEFSR0VUX1NQQVJDKQogCiBzdHJ1Y3QgdGFyZ2V0X3N0YXQg ewogCXVuc2lnbmVkIHNob3J0CXN0X2RldjsKLQl0YXJnZXRfdWxvbmcJc3RfaW5vOworCWFiaV91 bG9uZwlzdF9pbm87CiAJdW5zaWduZWQgc2hvcnQJc3RfbW9kZTsKIAlzaG9ydAkJc3Rfbmxpbms7 CiAJdW5zaWduZWQgc2hvcnQJc3RfdWlkOwogCXVuc2lnbmVkIHNob3J0CXN0X2dpZDsKIAl1bnNp Z25lZCBzaG9ydAlzdF9yZGV2OwotCXRhcmdldF9sb25nCXN0X3NpemU7Ci0JdGFyZ2V0X2xvbmcJ dGFyZ2V0X3N0X2F0aW1lOwotCXRhcmdldF91bG9uZwlfX3VudXNlZDE7Ci0JdGFyZ2V0X2xvbmcJ dGFyZ2V0X3N0X210aW1lOwotCXRhcmdldF91bG9uZwlfX3VudXNlZDI7Ci0JdGFyZ2V0X2xvbmcJ dGFyZ2V0X3N0X2N0aW1lOwotCXRhcmdldF91bG9uZwlfX3VudXNlZDM7Ci0JdGFyZ2V0X2xvbmcJ c3RfYmxrc2l6ZTsKLQl0YXJnZXRfbG9uZwlzdF9ibG9ja3M7Ci0JdGFyZ2V0X3Vsb25nCV9fdW51 c2VkNFsyXTsKKwlhYmlfbG9uZwlzdF9zaXplOworCWFiaV9sb25nCXRhcmdldF9zdF9hdGltZTsK KwlhYmlfdWxvbmcJX191bnVzZWQxOworCWFiaV9sb25nCXRhcmdldF9zdF9tdGltZTsKKwlhYmlf dWxvbmcJX191bnVzZWQyOworCWFiaV9sb25nCXRhcmdldF9zdF9jdGltZTsKKwlhYmlfdWxvbmcJ X191bnVzZWQzOworCWFiaV9sb25nCXN0X2Jsa3NpemU7CisJYWJpX2xvbmcJc3RfYmxvY2tzOwor CWFiaV91bG9uZwlfX3VudXNlZDRbMl07CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3N0YXQ2NCB7CkBA IC0xMDkwLDIzICsxMDkwLDIzIEBACiAKIHN0cnVjdCB0YXJnZXRfc3RhdCB7CiAJdW5zaWduZWQg c2hvcnQgc3RfZGV2OwotCXRhcmdldF91bG9uZyBzdF9pbm87CisJYWJpX3Vsb25nIHN0X2lubzsK IAl1bnNpZ25lZCBpbnQgc3RfbW9kZTsKIAl1bnNpZ25lZCBzaG9ydCBzdF9ubGluazsKIAl1bnNp Z25lZCBpbnQgc3RfdWlkOwogCXVuc2lnbmVkIGludCBzdF9naWQ7CiAJdW5zaWduZWQgc2hvcnQg c3RfcmRldjsKLQl0YXJnZXRfdWxvbmcgIHN0X3NpemU7Ci0JdGFyZ2V0X3Vsb25nICBzdF9ibGtz aXplOwotCXRhcmdldF91bG9uZyAgc3RfYmxvY2tzOwotCXRhcmdldF91bG9uZyAgdGFyZ2V0X3N0 X2F0aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQxOwotCXRhcmdldF91bG9uZyAgdGFyZ2V0 X3N0X210aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQyOwotCXRhcmdldF91bG9uZyAgdGFy Z2V0X3N0X2N0aW1lOwotCXRhcmdldF91bG9uZyAgX191bnVzZWQzOwotCXRhcmdldF91bG9uZyAg X191bnVzZWQ0OwotCXRhcmdldF91bG9uZyAgX191bnVzZWQ1OworCWFiaV91bG9uZyAgc3Rfc2l6 ZTsKKwlhYmlfdWxvbmcgIHN0X2Jsa3NpemU7CisJYWJpX3Vsb25nICBzdF9ibG9ja3M7CisJYWJp X3Vsb25nICB0YXJnZXRfc3RfYXRpbWU7CisJYWJpX3Vsb25nICBfX3VudXNlZDE7CisJYWJpX3Vs b25nICB0YXJnZXRfc3RfbXRpbWU7CisJYWJpX3Vsb25nICBfX3VudXNlZDI7CisJYWJpX3Vsb25n ICB0YXJnZXRfc3RfY3RpbWU7CisJYWJpX3Vsb25nICBfX3VudXNlZDM7CisJYWJpX3Vsb25nICBf X3VudXNlZDQ7CisJYWJpX3Vsb25nICBfX3VudXNlZDU7CiB9OwogCiBzdHJ1Y3QgdGFyZ2V0X3N0 YXQ2NCB7CkBAIC0xMTE5LDE3ICsxMTE5LDE3IEBACiAJdW5zaWduZWQgbG9uZyBsb25nIHN0X3Jk ZXY7CiAJbG9uZyBsb25nIHBhZDA7CiAJbG9uZyBsb25nIHN0X3NpemU7Ci0JdGFyZ2V0X3Vsb25n CXN0X2Jsa3NpemU7Ci0JdGFyZ2V0X3Vsb25nCXBhZDE7CisJYWJpX3Vsb25nCXN0X2Jsa3NpemU7 CisJYWJpX3Vsb25nCXBhZDE7CiAJbG9uZyBsb25nCXN0X2Jsb2NrczsJLyogTnVtYmVyIDUxMi1i eXRlIGJsb2NrcyBhbGxvY2F0ZWQuICovCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9hdGltZTsK LSAgICAgICAgdGFyZ2V0X3Vsb25nICAgIHRhcmdldF9zdF9hdGltZV9uc2VjOwotCXRhcmdldF91 bG9uZwl0YXJnZXRfc3RfbXRpbWU7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3Rf bXRpbWVfbnNlYzsKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2N0aW1lOwotICAgICAgICB0YXJn ZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lX25zZWM7Ci0gICAgICAgIHRhcmdldF91bG9uZyAg ICBfX3VudXNlZDQ7Ci0gICAgICAgIHRhcmdldF91bG9uZyAgICBfX3VudXNlZDU7CisJYWJpX3Vs b25nCXRhcmdldF9zdF9hdGltZTsKKyAgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9hdGlt ZV9uc2VjOworCWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWU7CisgICAgICAgIGFiaV91bG9uZyAg ICB0YXJnZXRfc3RfbXRpbWVfbnNlYzsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2N0aW1lOworICAg ICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lX25zZWM7CisgICAgICAgIGFiaV91bG9u ZyAgICBfX3VudXNlZDQ7CisgICAgICAgIGFiaV91bG9uZyAgICBfX3VudXNlZDU7CiB9OwogCiAj ZWxpZiBkZWZpbmVkKFRBUkdFVF9NNjhLKQpAQCAtMTEzNywyNCArMTEzNywyNCBAQAogc3RydWN0 IHRhcmdldF9zdGF0IHsKIAl1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAJdW5zaWduZWQgc2hvcnQg X19wYWQxOwotCXRhcmdldF91bG9uZyBzdF9pbm87CisJYWJpX3Vsb25nIHN0X2lubzsKIAl1bnNp Z25lZCBzaG9ydCBzdF9tb2RlOwogCXVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogCXVuc2lnbmVk IHNob3J0IHN0X3VpZDsKIAl1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAJdW5zaWduZWQgc2hvcnQg c3RfcmRldjsKIAl1bnNpZ25lZCBzaG9ydCBfX3BhZDI7Ci0JdGFyZ2V0X3Vsb25nICBzdF9zaXpl OwotCXRhcmdldF91bG9uZyAgc3RfYmxrc2l6ZTsKLQl0YXJnZXRfdWxvbmcgIHN0X2Jsb2NrczsK LQl0YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2Vk MTsKLQl0YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9tdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9fdW51 c2VkMjsKLQl0YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9jdGltZTsKLQl0YXJnZXRfdWxvbmcgIF9f dW51c2VkMzsKLQl0YXJnZXRfdWxvbmcgIF9fdW51c2VkNDsKLQl0YXJnZXRfdWxvbmcgIF9fdW51 c2VkNTsKKwlhYmlfdWxvbmcgIHN0X3NpemU7CisJYWJpX3Vsb25nICBzdF9ibGtzaXplOworCWFi aV91bG9uZyAgc3RfYmxvY2tzOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X2F0aW1lOworCWFiaV91 bG9uZyAgX191bnVzZWQxOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X210aW1lOworCWFiaV91bG9u ZyAgX191bnVzZWQyOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X2N0aW1lOworCWFiaV91bG9uZyAg X191bnVzZWQzOworCWFiaV91bG9uZyAgX191bnVzZWQ0OworCWFiaV91bG9uZyAgX191bnVzZWQ1 OwogfTsKIAogLyogVGhpcyBtYXRjaGVzIHN0cnVjdCBzdGF0NjQgaW4gZ2xpYmMyLjEsIGhlbmNl IHRoZSBhYnNvbHV0ZWx5CkBAIC0xMTY1LDMxICsxMTY1LDMxIEBACiAJdW5zaWduZWQgY2hhcglf X3BhZDFbMl07CiAKICNkZWZpbmUgVEFSR0VUX1NUQVQ2NF9IQVNfQlJPS0VOX1NUX0lOTwkxCi0J dGFyZ2V0X3Vsb25nCV9fc3RfaW5vOworCWFiaV91bG9uZwlfX3N0X2lubzsKIAogCXVuc2lnbmVk IGludAlzdF9tb2RlOwogCXVuc2lnbmVkIGludAlzdF9ubGluazsKIAotCXRhcmdldF91bG9uZwlz dF91aWQ7Ci0JdGFyZ2V0X3Vsb25nCXN0X2dpZDsKKwlhYmlfdWxvbmcJc3RfdWlkOworCWFiaV91 bG9uZwlzdF9naWQ7CiAKIAl1bnNpZ25lZCBsb25nIGxvbmcJc3RfcmRldjsKIAl1bnNpZ25lZCBj aGFyCV9fcGFkM1syXTsKIAogCWxvbmcgbG9uZwlzdF9zaXplOwotCXRhcmdldF91bG9uZwlzdF9i bGtzaXplOworCWFiaV91bG9uZwlzdF9ibGtzaXplOwogCi0JdGFyZ2V0X3Vsb25nCV9fcGFkNDsJ CS8qIGZ1dHVyZSBwb3NzaWJsZSBzdF9ibG9ja3MgaGlnaCBiaXRzICovCi0JdGFyZ2V0X3Vsb25n CXN0X2Jsb2NrczsJLyogTnVtYmVyIDUxMi1ieXRlIGJsb2NrcyBhbGxvY2F0ZWQuICovCisJYWJp X3Vsb25nCV9fcGFkNDsJCS8qIGZ1dHVyZSBwb3NzaWJsZSBzdF9ibG9ja3MgaGlnaCBiaXRzICov CisJYWJpX3Vsb25nCXN0X2Jsb2NrczsJLyogTnVtYmVyIDUxMi1ieXRlIGJsb2NrcyBhbGxvY2F0 ZWQuICovCiAKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lOwotCXRhcmdldF91bG9uZwl0 YXJnZXRfc3RfYXRpbWVfbnNlYzsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2F0aW1lOworCWFiaV91 bG9uZwl0YXJnZXRfc3RfYXRpbWVfbnNlYzsKIAotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfbXRp bWU7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9tdGltZV9uc2VjOworCWFiaV91bG9uZwl0YXJn ZXRfc3RfbXRpbWU7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9tdGltZV9uc2VjOwogCi0JdGFyZ2V0 X3Vsb25nCXRhcmdldF9zdF9jdGltZTsKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2N0aW1lX25z ZWM7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9jdGltZTsKKwlhYmlfdWxvbmcJdGFyZ2V0X3N0X2N0 aW1lX25zZWM7CiAKIAl1bnNpZ25lZCBsb25nIGxvbmcJc3RfaW5vOwogfSBfX2F0dHJpYnV0ZV9f KChwYWNrZWQpKTsKQEAgLTEyMDEsNyArMTIwMSw3IEBACiAJdW5zaWduZWQgaW50CQlzdF9kZXY7 CiAJdW5zaWduZWQgaW50CQlzdF9wYWQwWzNdOyAvKiBSZXNlcnZlZCBmb3Igc3RfZGV2IGV4cGFu c2lvbiAqLwogCi0JdGFyZ2V0X3Vsb25nCQlzdF9pbm87CisJYWJpX3Vsb25nCQlzdF9pbm87CiAK IAl1bnNpZ25lZCBpbnQJCXN0X21vZGU7CiAJdW5zaWduZWQgaW50CQlzdF9ubGluazsKQEAgLTEy MTIsNyArMTIxMiw3IEBACiAJdW5zaWduZWQgaW50CQlzdF9yZGV2OwogCXVuc2lnbmVkIGludAkJ c3RfcGFkMVszXTsgLyogUmVzZXJ2ZWQgZm9yIHN0X3JkZXYgZXhwYW5zaW9uICovCiAKLQl0YXJn ZXRfdWxvbmcJCXN0X3NpemU7CisJYWJpX3Vsb25nCQlzdF9zaXplOwogCiAJLyoKIAkgKiBBY3R1 YWxseSB0aGlzIHNob3VsZCBiZSB0aW1lc3RydWNfdCBzdF9hdGltZSwgc3RfbXRpbWUgYW5kIHN0 X2N0aW1lCkBAIC0xMjMwLDcgKzEyMzAsNyBAQAogCXVuc2lnbmVkIGludAkJc3RfYmxrc2l6ZTsK IAl1bnNpZ25lZCBpbnQJCXN0X3BhZDI7CiAKLQl0YXJnZXRfdWxvbmcJCXN0X2Jsb2NrczsKKwlh YmlfdWxvbmcJCXN0X2Jsb2NrczsKIH07CiAKICNlbGlmIGRlZmluZWQoVEFSR0VUX01JUFNOMzIp CkBAIC0xMjcyLDcgKzEyNzIsNyBAQAogCXVuc2lnbmVkIGludAlzdF9kZXY7CiAJdW5zaWduZWQg aW50CXN0X3BhZDBbM107CS8qIFJlc2VydmVkIGZvciBzdF9kZXYgZXhwYW5zaW9uICAqLwogCi0J dGFyZ2V0X3Vsb25nCXN0X2lubzsKKwlhYmlfdWxvbmcJc3RfaW5vOwogCiAgICAgICAgIHVuc2ln bmVkIGludAlzdF9tb2RlOwogICAgICAgICB1bnNpZ25lZCBpbnQJc3Rfbmxpbms7CkBAIC0xMzA4 LDI5ICsxMzA4LDI5IEBACiAKIHN0cnVjdCB0YXJnZXRfc3RhdCB7CiAJdW5zaWduZWQJc3RfZGV2 OwotCXRhcmdldF9sb25nCXN0X3BhZDFbM107CQkvKiBSZXNlcnZlZCBmb3IgbmV0d29yayBpZCAq LwotCXRhcmdldF91bG9uZwlzdF9pbm87CisJYWJpX2xvbmcJc3RfcGFkMVszXTsJCS8qIFJlc2Vy dmVkIGZvciBuZXR3b3JrIGlkICovCisJYWJpX3Vsb25nCXN0X2lubzsKIAl1bnNpZ25lZCBpbnQJ c3RfbW9kZTsKIAl1bnNpZ25lZCBpbnQJc3Rfbmxpbms7CiAJaW50CQlzdF91aWQ7CiAJaW50CQlz dF9naWQ7CiAJdW5zaWduZWQgCXN0X3JkZXY7Ci0JdGFyZ2V0X2xvbmcJc3RfcGFkMlsyXTsKLQl0 YXJnZXRfbG9uZwlzdF9zaXplOwotCXRhcmdldF9sb25nCXN0X3BhZDM7CisJYWJpX2xvbmcJc3Rf cGFkMlsyXTsKKwlhYmlfbG9uZwlzdF9zaXplOworCWFiaV9sb25nCXN0X3BhZDM7CiAJLyoKIAkg KiBBY3R1YWxseSB0aGlzIHNob3VsZCBiZSB0aW1lc3RydWNfdCBzdF9hdGltZSwgc3RfbXRpbWUg YW5kIHN0X2N0aW1lCiAJICogYnV0IHdlIGRvbid0IGhhdmUgaXQgdW5kZXIgTGludXguCiAJICov Ci0JdGFyZ2V0X2xvbmcJCXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfbG9uZwkJdGFyZ2V0X3N0 X2F0aW1lX25zZWM7Ci0JdGFyZ2V0X2xvbmcJCXRhcmdldF9zdF9tdGltZTsKLQl0YXJnZXRfbG9u ZwkJdGFyZ2V0X3N0X210aW1lX25zZWM7Ci0JdGFyZ2V0X2xvbmcJCXRhcmdldF9zdF9jdGltZTsK LQl0YXJnZXRfbG9uZwkJdGFyZ2V0X3N0X2N0aW1lX25zZWM7Ci0JdGFyZ2V0X2xvbmcJCXN0X2Js a3NpemU7Ci0JdGFyZ2V0X2xvbmcJCXN0X2Jsb2NrczsKLQl0YXJnZXRfbG9uZwkJc3RfcGFkNFsx NF07CisJYWJpX2xvbmcJCXRhcmdldF9zdF9hdGltZTsKKwlhYmlfbG9uZwkJdGFyZ2V0X3N0X2F0 aW1lX25zZWM7CisJYWJpX2xvbmcJCXRhcmdldF9zdF9tdGltZTsKKwlhYmlfbG9uZwkJdGFyZ2V0 X3N0X210aW1lX25zZWM7CisJYWJpX2xvbmcJCXRhcmdldF9zdF9jdGltZTsKKwlhYmlfbG9uZwkJ dGFyZ2V0X3N0X2N0aW1lX25zZWM7CisJYWJpX2xvbmcJCXN0X2Jsa3NpemU7CisJYWJpX2xvbmcJ CXN0X2Jsb2NrczsKKwlhYmlfbG9uZwkJc3RfcGFkNFsxNF07CiB9OwogCiAvKgpAQCAtMTM0MCw4 ICsxMzQwLDggQEAKICAqLwogCiBzdHJ1Y3QgdGFyZ2V0X3N0YXQ2NCB7Ci0JdGFyZ2V0X3Vsb25n CXN0X2RldjsKLQl0YXJnZXRfdWxvbmcJc3RfcGFkMFszXTsJLyogUmVzZXJ2ZWQgZm9yIHN0X2Rl diBleHBhbnNpb24gICovCisJYWJpX3Vsb25nCXN0X2RldjsKKwlhYmlfdWxvbmcJc3RfcGFkMFsz XTsJLyogUmVzZXJ2ZWQgZm9yIHN0X2RldiBleHBhbnNpb24gICovCiAKIAl1aW50NjRfdAlzdF9p bm87CiAKQEAgLTEzNTEsOCArMTM1MSw4IEBACiAJaW50CQlzdF91aWQ7CiAJaW50CQlzdF9naWQ7 CiAKLQl0YXJnZXRfdWxvbmcJc3RfcmRldjsKLQl0YXJnZXRfdWxvbmcJc3RfcGFkMVszXTsJLyog UmVzZXJ2ZWQgZm9yIHN0X3JkZXYgZXhwYW5zaW9uICAqLworCWFiaV91bG9uZwlzdF9yZGV2Owor CWFiaV91bG9uZwlzdF9wYWQxWzNdOwkvKiBSZXNlcnZlZCBmb3Igc3RfcmRldiBleHBhbnNpb24g ICovCiAKIAlpbnQ2NF90IAlzdF9zaXplOwogCkBAIC0xMzYwLDE3ICsxMzYwLDE3IEBACiAJICog QWN0dWFsbHkgdGhpcyBzaG91bGQgYmUgdGltZXN0cnVjX3Qgc3RfYXRpbWUsIHN0X210aW1lIGFu ZCBzdF9jdGltZQogCSAqIGJ1dCB3ZSBkb24ndCBoYXZlIGl0IHVuZGVyIExpbnV4LgogCSAqLwot CXRhcmdldF9sb25nCXRhcmdldF9zdF9hdGltZTsKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2F0 aW1lX25zZWM7CS8qIFJlc2VydmVkIGZvciBzdF9hdGltZSBleHBhbnNpb24gICovCisJYWJpX2xv bmcJdGFyZ2V0X3N0X2F0aW1lOworCWFiaV91bG9uZwl0YXJnZXRfc3RfYXRpbWVfbnNlYzsJLyog UmVzZXJ2ZWQgZm9yIHN0X2F0aW1lIGV4cGFuc2lvbiAgKi8KIAotCXRhcmdldF9sb25nCXRhcmdl dF9zdF9tdGltZTsKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X210aW1lX25zZWM7CS8qIFJlc2Vy dmVkIGZvciBzdF9tdGltZSBleHBhbnNpb24gICovCisJYWJpX2xvbmcJdGFyZ2V0X3N0X210aW1l OworCWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWVfbnNlYzsJLyogUmVzZXJ2ZWQgZm9yIHN0X210 aW1lIGV4cGFuc2lvbiAgKi8KIAotCXRhcmdldF9sb25nCXRhcmdldF9zdF9jdGltZTsKLQl0YXJn ZXRfdWxvbmcJdGFyZ2V0X3N0X2N0aW1lX25zZWM7CS8qIFJlc2VydmVkIGZvciBzdF9jdGltZSBl eHBhbnNpb24gICovCisJYWJpX2xvbmcJdGFyZ2V0X3N0X2N0aW1lOworCWFiaV91bG9uZwl0YXJn ZXRfc3RfY3RpbWVfbnNlYzsJLyogUmVzZXJ2ZWQgZm9yIHN0X2N0aW1lIGV4cGFuc2lvbiAgKi8K IAotCXRhcmdldF91bG9uZwlzdF9ibGtzaXplOwotCXRhcmdldF91bG9uZwlzdF9wYWQyOworCWFi aV91bG9uZwlzdF9ibGtzaXplOworCWFiaV91bG9uZwlzdF9wYWQyOwogCiAJaW50NjRfdCAgCXN0 X2Jsb2NrczsKIH07CkBAIC0xMzg1LDEwICsxMzg1LDEwIEBACiAgICAgICAgdW5zaWduZWQgaW50 ICAgIHN0X3VpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgICAgc3RfZ2lkOwogICAgICAgIHVuc2ln bmVkIGludCAgICBzdF9yZGV2OwotICAgICAgIHRhcmdldF9sb25nICAgICBzdF9zaXplOwotICAg ICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfYXRpbWU7Ci0gICAgICAgdGFyZ2V0X3Vsb25n ICAgIHRhcmdldF9zdF9tdGltZTsKLSAgICAgICB0YXJnZXRfdWxvbmcgICAgdGFyZ2V0X3N0X2N0 aW1lOworICAgICAgIGFiaV9sb25nICAgICBzdF9zaXplOworICAgICAgIGFiaV91bG9uZyAgICB0 YXJnZXRfc3RfYXRpbWU7CisgICAgICAgYWJpX3Vsb25nICAgIHRhcmdldF9zdF9tdGltZTsKKyAg ICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCAg ICBzdF9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGludCAgICBzdF9ibG9ja3M7CiAgICAgICAg dW5zaWduZWQgaW50ICAgIHN0X2ZsYWdzOwpAQCAtMTM5NiwxMSArMTM5NiwxMSBAQAogfTsKIAog c3RydWN0IHRhcmdldF9zdGF0NjQgewotICAgICAgIHRhcmdldF91bG9uZyAgICBzdF9kZXY7Ci0g ICAgICAgdGFyZ2V0X3Vsb25nICAgIHN0X2lubzsKLSAgICAgICB0YXJnZXRfdWxvbmcgICAgc3Rf cmRldjsKLSAgICAgICB0YXJnZXRfbG9uZyAgICAgc3Rfc2l6ZTsKLSAgICAgICB0YXJnZXRfdWxv bmcgICAgc3RfYmxvY2tzOworICAgICAgIGFiaV91bG9uZyAgICBzdF9kZXY7CisgICAgICAgYWJp X3Vsb25nICAgIHN0X2lubzsKKyAgICAgICBhYmlfdWxvbmcgICAgc3RfcmRldjsKKyAgICAgICBh YmlfbG9uZyAgICAgc3Rfc2l6ZTsKKyAgICAgICBhYmlfdWxvbmcgICAgc3RfYmxvY2tzOwogCiAg ICAgICAgdW5zaWduZWQgaW50ICAgIHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgaW50ICAgIHN0 X3VpZDsKQEAgLTE0MDksMzYgKzE0MDksMzYgQEAKICAgICAgICB1bnNpZ25lZCBpbnQgICAgc3Rf bmxpbms7CiAgICAgICAgdW5zaWduZWQgaW50ICAgIF9fcGFkMDsKIAotICAgICAgIHRhcmdldF91 bG9uZyAgICB0YXJnZXRfc3RfYXRpbWU7Ci0gICAgICAgdGFyZ2V0X3Vsb25nICAgIHRhcmdldF9z dF9hdGltZV9uc2VjOwotICAgICAgIHRhcmdldF91bG9uZyAgICB0YXJnZXRfc3RfbXRpbWU7Ci0g ICAgICAgdGFyZ2V0X3Vsb25nICAgIHRhcmdldF9zdF9tdGltZV9uc2VjOwotICAgICAgIHRhcmdl dF91bG9uZyAgICB0YXJnZXRfc3RfY3RpbWU7Ci0gICAgICAgdGFyZ2V0X3Vsb25nICAgIHRhcmdl dF9zdF9jdGltZV9uc2VjOwotICAgICAgIHRhcmdldF9sb25nICAgICBfX3VudXNlZFszXTsKKyAg ICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X2F0aW1lOworICAgICAgIGFiaV91bG9uZyAgICB0 YXJnZXRfc3RfYXRpbWVfbnNlYzsKKyAgICAgICBhYmlfdWxvbmcgICAgdGFyZ2V0X3N0X210aW1l OworICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3RfbXRpbWVfbnNlYzsKKyAgICAgICBhYmlf dWxvbmcgICAgdGFyZ2V0X3N0X2N0aW1lOworICAgICAgIGFiaV91bG9uZyAgICB0YXJnZXRfc3Rf Y3RpbWVfbnNlYzsKKyAgICAgICBhYmlfbG9uZyAgICAgX191bnVzZWRbM107CiB9OwogCiAjZWxp ZiBkZWZpbmVkKFRBUkdFVF9TSDQpCiAKIHN0cnVjdCB0YXJnZXRfc3RhdCB7Ci0JdGFyZ2V0X3Vs b25nICBzdF9kZXY7Ci0JdGFyZ2V0X3Vsb25nICBzdF9pbm87CisJYWJpX3Vsb25nICBzdF9kZXY7 CisJYWJpX3Vsb25nICBzdF9pbm87CiAJdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKIAl1bnNpZ25l ZCBzaG9ydCBzdF9ubGluazsKIAl1bnNpZ25lZCBzaG9ydCBzdF91aWQ7CiAJdW5zaWduZWQgc2hv cnQgc3RfZ2lkOwotCXRhcmdldF91bG9uZyAgc3RfcmRldjsKLQl0YXJnZXRfdWxvbmcgIHN0X3Np emU7Ci0JdGFyZ2V0X3Vsb25nICBzdF9ibGtzaXplOwotCXRhcmdldF91bG9uZyAgc3RfYmxvY2tz OwotCXRhcmdldF91bG9uZyAgdGFyZ2V0X3N0X2F0aW1lOwotCXRhcmdldF91bG9uZyAgdGFyZ2V0 X3N0X2F0aW1lX25zZWM7Ci0JdGFyZ2V0X3Vsb25nICB0YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0 X3Vsb25nICB0YXJnZXRfc3RfbXRpbWVfbnNlYzsKLQl0YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9j dGltZTsKLQl0YXJnZXRfdWxvbmcgIHRhcmdldF9zdF9jdGltZV9uc2VjOwotCXRhcmdldF91bG9u ZyAgX191bnVzZWQ0OwotCXRhcmdldF91bG9uZyAgX191bnVzZWQ1OworCWFiaV91bG9uZyAgc3Rf cmRldjsKKwlhYmlfdWxvbmcgIHN0X3NpemU7CisJYWJpX3Vsb25nICBzdF9ibGtzaXplOworCWFi aV91bG9uZyAgc3RfYmxvY2tzOworCWFiaV91bG9uZyAgdGFyZ2V0X3N0X2F0aW1lOworCWFiaV91 bG9uZyAgdGFyZ2V0X3N0X2F0aW1lX25zZWM7CisJYWJpX3Vsb25nICB0YXJnZXRfc3RfbXRpbWU7 CisJYWJpX3Vsb25nICB0YXJnZXRfc3RfbXRpbWVfbnNlYzsKKwlhYmlfdWxvbmcgIHRhcmdldF9z dF9jdGltZTsKKwlhYmlfdWxvbmcgIHRhcmdldF9zdF9jdGltZV9uc2VjOworCWFiaV91bG9uZyAg X191bnVzZWQ0OworCWFiaV91bG9uZyAgX191bnVzZWQ1OwogfTsKIAogLyogVGhpcyBtYXRjaGVz IHN0cnVjdCBzdGF0NjQgaW4gZ2xpYmMyLjEsIGhlbmNlIHRoZSBhYnNvbHV0ZWx5CkBAIC0xNDQ5 LDMwICsxNDQ5LDMwIEBACiAJdW5zaWduZWQgY2hhcglfX3BhZDBbNF07CiAKICNkZWZpbmUgVEFS R0VUX1NUQVQ2NF9IQVNfQlJPS0VOX1NUX0lOTwkxCi0JdGFyZ2V0X3Vsb25nCV9fc3RfaW5vOwor CWFiaV91bG9uZwlfX3N0X2lubzsKIAogCXVuc2lnbmVkIGludAlzdF9tb2RlOwogCXVuc2lnbmVk IGludAlzdF9ubGluazsKIAotCXRhcmdldF91bG9uZwlzdF91aWQ7Ci0JdGFyZ2V0X3Vsb25nCXN0 X2dpZDsKKwlhYmlfdWxvbmcJc3RfdWlkOworCWFiaV91bG9uZwlzdF9naWQ7CiAKIAl1bnNpZ25l ZCBsb25nIGxvbmcJc3RfcmRldjsKIAl1bnNpZ25lZCBjaGFyCV9fcGFkM1s0XTsKIAogCWxvbmcg bG9uZwlzdF9zaXplOwotCXRhcmdldF91bG9uZwlzdF9ibGtzaXplOworCWFiaV91bG9uZwlzdF9i bGtzaXplOwogCiAJdW5zaWduZWQgbG9uZyBsb25nCXN0X2Jsb2NrczsJLyogTnVtYmVyIDUxMi1i eXRlIGJsb2NrcyBhbGxvY2F0ZWQuICovCiAKLQl0YXJnZXRfdWxvbmcJdGFyZ2V0X3N0X2F0aW1l OwotCXRhcmdldF91bG9uZwl0YXJnZXRfc3RfYXRpbWVfbnNlYzsKKwlhYmlfdWxvbmcJdGFyZ2V0 X3N0X2F0aW1lOworCWFiaV91bG9uZwl0YXJnZXRfc3RfYXRpbWVfbnNlYzsKIAotCXRhcmdldF91 bG9uZwl0YXJnZXRfc3RfbXRpbWU7Ci0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9tdGltZV9uc2Vj OworCWFiaV91bG9uZwl0YXJnZXRfc3RfbXRpbWU7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9tdGlt ZV9uc2VjOwogCi0JdGFyZ2V0X3Vsb25nCXRhcmdldF9zdF9jdGltZTsKLQl0YXJnZXRfdWxvbmcJ dGFyZ2V0X3N0X2N0aW1lX25zZWM7CisJYWJpX3Vsb25nCXRhcmdldF9zdF9jdGltZTsKKwlhYmlf dWxvbmcJdGFyZ2V0X3N0X2N0aW1lX25zZWM7CiAKIAl1bnNpZ25lZCBsb25nIGxvbmcJc3RfaW5v OwogfTsKQEAgLTE1MDQsMTkgKzE1MDQsMTkgQEAKIH07CiAjZWxzZQogc3RydWN0IHRhcmdldF9z dGF0ZnMgewotCXRhcmdldF9sb25nCQlmX3R5cGU7Ci0JdGFyZ2V0X2xvbmcJCWZfYnNpemU7Ci0J dGFyZ2V0X2xvbmcJCWZfZnJzaXplOwkvKiBGcmFnbWVudCBzaXplIC0gdW5zdXBwb3J0ZWQgKi8K LQl0YXJnZXRfbG9uZwkJZl9ibG9ja3M7Ci0JdGFyZ2V0X2xvbmcJCWZfYmZyZWU7Ci0JdGFyZ2V0 X2xvbmcJCWZfZmlsZXM7Ci0JdGFyZ2V0X2xvbmcJCWZfZmZyZWU7Ci0JdGFyZ2V0X2xvbmcJCWZf YmF2YWlsOworCWFiaV9sb25nCQlmX3R5cGU7CisJYWJpX2xvbmcJCWZfYnNpemU7CisJYWJpX2xv bmcJCWZfZnJzaXplOwkvKiBGcmFnbWVudCBzaXplIC0gdW5zdXBwb3J0ZWQgKi8KKwlhYmlfbG9u ZwkJZl9ibG9ja3M7CisJYWJpX2xvbmcJCWZfYmZyZWU7CisJYWJpX2xvbmcJCWZfZmlsZXM7CisJ YWJpX2xvbmcJCWZfZmZyZWU7CisJYWJpX2xvbmcJCWZfYmF2YWlsOwogCiAJLyogTGludXggc3Bl Y2lhbHMgKi8KIAl0YXJnZXRfZnNpZF90CQlmX2ZzaWQ7Ci0JdGFyZ2V0X2xvbmcJCWZfbmFtZWxl bjsKLQl0YXJnZXRfbG9uZwkJZl9zcGFyZVs2XTsKKwlhYmlfbG9uZwkJZl9uYW1lbGVuOworCWFi aV9sb25nCQlmX3NwYXJlWzZdOwogfTsKICNlbmRpZgogCkBAIC0xNjg4LDggKzE2ODgsOCBAQAog c3RydWN0IHRhcmdldF9mbG9jayB7CiAJc2hvcnQgbF90eXBlOwogCXNob3J0IGxfd2hlbmNlOwot CXRhcmdldF91bG9uZyBsX3N0YXJ0OwotCXRhcmdldF91bG9uZyBsX2xlbjsKKwlhYmlfdWxvbmcg bF9zdGFydDsKKwlhYmlfdWxvbmcgbF9sZW47CiAJaW50IGxfcGlkOwogfTsKIApAQCAtMTg1Niwy MCArMTg1NiwyMCBAQAogI2RlZmluZSBUQVJHRVRfVkZBVF9JT0NUTF9SRUFERElSX1NIT1JUICAg VEFSR0VUX0lPUlUoJ3InLCAyKQogCiBzdHJ1Y3QgdGFyZ2V0X3N5c2luZm8gewotICAgIHRhcmdl dF9sb25nIHVwdGltZTsgICAgICAgICAgICAgLyogU2Vjb25kcyBzaW5jZSBib290ICovCi0gICAg dGFyZ2V0X3Vsb25nIGxvYWRzWzNdOyAgICAgICAgICAvKiAxLCA1LCBhbmQgMTUgbWludXRlIGxv YWQgYXZlcmFnZXMgKi8KLSAgICB0YXJnZXRfdWxvbmcgdG90YWxyYW07ICAgICAgICAgIC8qIFRv dGFsIHVzYWJsZSBtYWluIG1lbW9yeSBzaXplICovCi0gICAgdGFyZ2V0X3Vsb25nIGZyZWVyYW07 ICAgICAgICAgICAvKiBBdmFpbGFibGUgbWVtb3J5IHNpemUgKi8KLSAgICB0YXJnZXRfdWxvbmcg c2hhcmVkcmFtOyAgICAgICAgIC8qIEFtb3VudCBvZiBzaGFyZWQgbWVtb3J5ICovCi0gICAgdGFy Z2V0X3Vsb25nIGJ1ZmZlcnJhbTsgICAgICAgICAvKiBNZW1vcnkgdXNlZCBieSBidWZmZXJzICov Ci0gICAgdGFyZ2V0X3Vsb25nIHRvdGFsc3dhcDsgICAgICAgICAvKiBUb3RhbCBzd2FwIHNwYWNl IHNpemUgKi8KLSAgICB0YXJnZXRfdWxvbmcgZnJlZXN3YXA7ICAgICAgICAgIC8qIHN3YXAgc3Bh Y2Ugc3RpbGwgYXZhaWxhYmxlICovCisgICAgYWJpX2xvbmcgdXB0aW1lOyAgICAgICAgICAgICAg ICAvKiBTZWNvbmRzIHNpbmNlIGJvb3QgKi8KKyAgICBhYmlfdWxvbmcgbG9hZHNbM107ICAgICAg ICAgICAgIC8qIDEsIDUsIGFuZCAxNSBtaW51dGUgbG9hZCBhdmVyYWdlcyAqLworICAgIGFiaV91 bG9uZyB0b3RhbHJhbTsgICAgICAgICAgICAgLyogVG90YWwgdXNhYmxlIG1haW4gbWVtb3J5IHNp emUgKi8KKyAgICBhYmlfdWxvbmcgZnJlZXJhbTsgICAgICAgICAgICAgIC8qIEF2YWlsYWJsZSBt ZW1vcnkgc2l6ZSAqLworICAgIGFiaV91bG9uZyBzaGFyZWRyYW07ICAgICAgICAgICAgLyogQW1v dW50IG9mIHNoYXJlZCBtZW1vcnkgKi8KKyAgICBhYmlfdWxvbmcgYnVmZmVycmFtOyAgICAgICAg ICAgIC8qIE1lbW9yeSB1c2VkIGJ5IGJ1ZmZlcnMgKi8KKyAgICBhYmlfdWxvbmcgdG90YWxzd2Fw OyAgICAgICAgICAgIC8qIFRvdGFsIHN3YXAgc3BhY2Ugc2l6ZSAqLworICAgIGFiaV91bG9uZyBm cmVlc3dhcDsgICAgICAgICAgICAgLyogc3dhcCBzcGFjZSBzdGlsbCBhdmFpbGFibGUgKi8KICAg ICB1bnNpZ25lZCBzaG9ydCBwcm9jczsgICAgICAgICAgIC8qIE51bWJlciBvZiBjdXJyZW50IHBy b2Nlc3NlcyAqLwogICAgIHVuc2lnbmVkIHNob3J0IHBhZDsgICAgICAgICAgICAgLyogZXhwbGlj aXQgcGFkZGluZyBmb3IgbTY4ayAqLwotICAgIHRhcmdldF91bG9uZyB0b3RhbGhpZ2g7ICAgICAg ICAgLyogVG90YWwgaGlnaCBtZW1vcnkgc2l6ZSAqLwotICAgIHRhcmdldF91bG9uZyBmcmVlaGln aDsgICAgICAgICAgLyogQXZhaWxhYmxlIGhpZ2ggbWVtb3J5IHNpemUgKi8KKyAgICBhYmlfdWxv bmcgdG90YWxoaWdoOyAgICAgICAgICAgIC8qIFRvdGFsIGhpZ2ggbWVtb3J5IHNpemUgKi8KKyAg ICBhYmlfdWxvbmcgZnJlZWhpZ2g7ICAgICAgICAgICAgIC8qIEF2YWlsYWJsZSBoaWdoIG1lbW9y eSBzaXplICovCiAgICAgdW5zaWduZWQgaW50IG1lbV91bml0OyAgICAgICAgICAvKiBNZW1vcnkg dW5pdCBzaXplIGluIGJ5dGVzICovCi0gICAgY2hhciBfZlsyMC0yKnNpemVvZih0YXJnZXRfbG9u Zyktc2l6ZW9mKGludCldOyAvKiBQYWRkaW5nOiBsaWJjNSB1c2VzIHRoaXMuLiAqLworICAgIGNo YXIgX2ZbMjAtMipzaXplb2YoYWJpX2xvbmcpLXNpemVvZihpbnQpXTsgLyogUGFkZGluZzogbGli YzUgdXNlcyB0aGlzLi4gKi8KIH07CiAKICNpbmNsdWRlICJzb2NrZXQuaCIKSW5kZXg6IHFlbXUv bGludXgtdXNlci92bTg2LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2xpbnV4LXVzZXIvdm04 Ni5jCTIwMDctMTAtMTEgMTk6MTc6MTMuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVz ZXIvdm04Ni5jCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAwICswMDAwCkBAIC0zODEsNyAr MzgxLDcgQEAKICAgICB9CiB9CiAKLWludCBkb192bTg2KENQVVg4NlN0YXRlICplbnYsIGxvbmcg c3ViZnVuY3Rpb24sIHRhcmdldF91bG9uZyB2bTg2X2FkZHIpCitpbnQgZG9fdm04NihDUFVYODZT dGF0ZSAqZW52LCBsb25nIHN1YmZ1bmN0aW9uLCBhYmlfdWxvbmcgdm04Nl9hZGRyKQogewogICAg IFRhc2tTdGF0ZSAqdHMgPSBlbnYtPm9wYXF1ZTsKICAgICBzdHJ1Y3QgdGFyZ2V0X3ZtODZwbHVz X3N0cnVjdCAqIHRhcmdldF92ODY7CkluZGV4OiBxZW11L2xpbnV4LXVzZXIveDg2XzY0L3N5c2Nh bGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci94ODZfNjQvc3lzY2FsbC5o CTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2xpbnV4LXVzZXIv eDg2XzY0L3N5c2NhbGwuaAkyMDA3LTEwLTEyIDE2OjA5OjE3LjAwMDAwMDAwMCArMDAwMApAQCAt MiwzMCArMiwzMCBAQAogI2RlZmluZSBfX1VTRVJfRFMJKDB4MkIpCiAKIHN0cnVjdCB0YXJnZXRf cHRfcmVncyB7Ci0JdGFyZ2V0X3Vsb25nIHIxNTsKLQl0YXJnZXRfdWxvbmcgcjE0OwotCXRhcmdl dF91bG9uZyByMTM7Ci0JdGFyZ2V0X3Vsb25nIHIxMjsKLQl0YXJnZXRfdWxvbmcgcmJwOwotCXRh cmdldF91bG9uZyByYng7CisJYWJpX3Vsb25nIHIxNTsKKwlhYmlfdWxvbmcgcjE0OworCWFiaV91 bG9uZyByMTM7CisJYWJpX3Vsb25nIHIxMjsKKwlhYmlfdWxvbmcgcmJwOworCWFiaV91bG9uZyBy Yng7CiAvKiBhcmd1bWVudHM6IG5vbiBpbnRlcnJ1cHRzL25vbiB0cmFjaW5nIHN5c2NhbGxzIG9u bHkgc2F2ZSB1cHRvIGhlcmUqLwotIAl0YXJnZXRfdWxvbmcgcjExOwotCXRhcmdldF91bG9uZyBy MTA7Ci0JdGFyZ2V0X3Vsb25nIHI5OwotCXRhcmdldF91bG9uZyByODsKLQl0YXJnZXRfdWxvbmcg cmF4OwotCXRhcmdldF91bG9uZyByY3g7Ci0JdGFyZ2V0X3Vsb25nIHJkeDsKLQl0YXJnZXRfdWxv bmcgcnNpOwotCXRhcmdldF91bG9uZyByZGk7Ci0JdGFyZ2V0X3Vsb25nIG9yaWdfcmF4OworIAlh YmlfdWxvbmcgcjExOworCWFiaV91bG9uZyByMTA7CisJYWJpX3Vsb25nIHI5OworCWFiaV91bG9u ZyByODsKKwlhYmlfdWxvbmcgcmF4OworCWFiaV91bG9uZyByY3g7CisJYWJpX3Vsb25nIHJkeDsK KwlhYmlfdWxvbmcgcnNpOworCWFiaV91bG9uZyByZGk7CisJYWJpX3Vsb25nIG9yaWdfcmF4Owog LyogZW5kIG9mIGFyZ3VtZW50cyAqLwogLyogY3B1IGV4Y2VwdGlvbiBmcmFtZSBvciB1bmRlZmlu ZWQgKi8KLQl0YXJnZXRfdWxvbmcgcmlwOwotCXRhcmdldF91bG9uZyBjczsKLQl0YXJnZXRfdWxv bmcgZWZsYWdzOwotCXRhcmdldF91bG9uZyByc3A7Ci0JdGFyZ2V0X3Vsb25nIHNzOworCWFiaV91 bG9uZyByaXA7CisJYWJpX3Vsb25nIGNzOworCWFiaV91bG9uZyBlZmxhZ3M7CisJYWJpX3Vsb25n IHJzcDsKKwlhYmlfdWxvbmcgc3M7CiAvKiB0b3Agb2Ygc3RhY2sgcGFnZSAqLwogfTsKIApAQCAt NDEsNyArNDEsNyBAQAogI2lmIDAgLy8gUmVkZWZpbmUgdGhpcwogc3RydWN0IHRhcmdldF9tb2Rp ZnlfbGR0X2xkdF9zIHsKIAl1bnNpZ25lZCBpbnQgIGVudHJ5X251bWJlcjsKLQl0YXJnZXRfdWxv bmcgIGJhc2VfYWRkcjsKKyAgICAgICAgYWJpX3Vsb25nICAgICBiYXNlX2FkZHI7CiAJdW5zaWdu ZWQgaW50ICBsaW1pdDsKIAl1bnNpZ25lZCBpbnQgIHNlZ18zMmJpdDoxOwogCXVuc2lnbmVkIGlu dCAgY29udGVudHM6MjsKQEAgLTU0LDcgKzU0LDcgQEAKICNlbHNlCiBzdHJ1Y3QgdGFyZ2V0X21v ZGlmeV9sZHRfbGR0X3MgewogCXVuc2lnbmVkIGludCAgZW50cnlfbnVtYmVyOwotCXRhcmdldF91 bG9uZyAgYmFzZV9hZGRyOworICAgICAgICBhYmlfdWxvbmcgICAgIGJhc2VfYWRkcjsKIAl1bnNp Z25lZCBpbnQgIGxpbWl0OwogICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiB9OwpAQCAtNzEs OCArNzEsOCBAQAogCXVuc2lnbmVkIHNob3J0CQlfX3BhZDE7CiAJdW5zaWduZWQgc2hvcnQJCXNl cTsKIAl1bnNpZ25lZCBzaG9ydAkJX19wYWQyOwotCXRhcmdldF91bG9uZwkJX191bnVzZWQxOwot CXRhcmdldF91bG9uZwkJX191bnVzZWQyOworCWFiaV91bG9uZwkJX191bnVzZWQxOworCWFiaV91 bG9uZwkJX191bnVzZWQyOwogfTsKIAogc3RydWN0IHRhcmdldF9tc3FpZDY0X2RzIHsKQEAgLTgw LDEzICs4MCwxMyBAQAogCXVuc2lnbmVkIGludCBtc2dfc3RpbWU7CS8qIGxhc3QgbXNnc25kIHRp bWUgKi8KIAl1bnNpZ25lZCBpbnQgbXNnX3J0aW1lOwkvKiBsYXN0IG1zZ3JjdiB0aW1lICovCiAJ dW5zaWduZWQgaW50IG1zZ19jdGltZTsJLyogbGFzdCBjaGFuZ2UgdGltZSAqLwotCXRhcmdldF91 bG9uZyAgbXNnX2NieXRlczsJLyogY3VycmVudCBudW1iZXIgb2YgYnl0ZXMgb24gcXVldWUgKi8K LQl0YXJnZXRfdWxvbmcgIG1zZ19xbnVtOwkvKiBudW1iZXIgb2YgbWVzc2FnZXMgaW4gcXVldWUg Ki8KLQl0YXJnZXRfdWxvbmcgIG1zZ19xYnl0ZXM7CS8qIG1heCBudW1iZXIgb2YgYnl0ZXMgb24g cXVldWUgKi8KKwlhYmlfdWxvbmcgIG1zZ19jYnl0ZXM7CS8qIGN1cnJlbnQgbnVtYmVyIG9mIGJ5 dGVzIG9uIHF1ZXVlICovCisJYWJpX3Vsb25nICBtc2dfcW51bTsJLyogbnVtYmVyIG9mIG1lc3Nh Z2VzIGluIHF1ZXVlICovCisJYWJpX3Vsb25nICBtc2dfcWJ5dGVzOwkvKiBtYXggbnVtYmVyIG9m IGJ5dGVzIG9uIHF1ZXVlICovCiAJdW5zaWduZWQgaW50IG1zZ19sc3BpZDsJLyogcGlkIG9mIGxh c3QgbXNnc25kICovCiAJdW5zaWduZWQgaW50IG1zZ19scnBpZDsJLyogbGFzdCByZWNlaXZlIHBp ZCAqLwotCXRhcmdldF91bG9uZyAgX191bnVzZWQ0OwotCXRhcmdldF91bG9uZyAgX191bnVzZWQ1 OworCWFiaV91bG9uZyAgX191bnVzZWQ0OworCWFiaV91bG9uZyAgX191bnVzZWQ1OwogfTsKIAog I2RlZmluZSBVTkFNRV9NQUNISU5FICJ4ODZfNjQiCkluZGV4OiBxZW11L2xpbnV4LXVzZXIveDg2 XzY0L3RhcmdldF9zaWduYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci94 ODZfNjQvdGFyZ2V0X3NpZ25hbC5oCTIwMDctMTAtMTEgMTk6MTc6MTQuMDAwMDAwMDAwICswMDAw CisrKyBxZW11L2xpbnV4LXVzZXIveDg2XzY0L3RhcmdldF9zaWduYWwuaAkyMDA3LTEwLTExIDE5 OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApAQCAtNiw5ICs2LDkgQEAKIC8qIHRoaXMgc3RydWN0IGRl ZmluZXMgYSBzdGFjayB1c2VkIGR1cmluZyBzeXNjYWxsIGhhbmRsaW5nICovCiAKIHR5cGVkZWYg c3RydWN0IHRhcmdldF9zaWdhbHRzdGFjayB7Ci0JdGFyZ2V0X3Vsb25nIHNzX3NwOwotCXRhcmdl dF9sb25nIHNzX2ZsYWdzOwotCXRhcmdldF91bG9uZyBzc19zaXplOworCWFiaV91bG9uZyBzc19z cDsKKwlhYmlfbG9uZyBzc19mbGFnczsKKwlhYmlfdWxvbmcgc3Nfc2l6ZTsKIH0gdGFyZ2V0X3N0 YWNrX3Q7CiAKIApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBUQVJHRVRfTUlOU0lHU1RLU1oJ MjA0OAogI2RlZmluZSBUQVJHRVRfU0lHU1RLU1oJCTgxOTIKIAotc3RhdGljIGlubGluZSB0YXJn ZXRfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVWDg2U3RhdGUgKnN0YXRlKQorc3RhdGlj IGlubGluZSBhYmlfdWxvbmcgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoQ1BVWDg2U3RhdGUgKnN0YXRl KQogewogICAgIHJldHVybiBzdGF0ZS0+cmVnc1tSX0VTUF07CiB9CkluZGV4OiBxZW11L2xpbnV4 LXVzZXIvYXJtL3N5c2NhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9h cm0vc3lzY2FsbC5oCTIwMDctMTAtMTEgMTk6MTc6MTMuMDAwMDAwMDAwICswMDAwCisrKyBxZW11 L2xpbnV4LXVzZXIvYXJtL3N5c2NhbGwuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCAr MDAwMApAQCAtMyw3ICszLDcgQEAKICAgIHN0YWNrIGR1cmluZyBhIHN5c3RlbSBjYWxsLiAqLwog CiBzdHJ1Y3QgdGFyZ2V0X3B0X3JlZ3MgewotICAgIHRhcmdldF9sb25nIHVyZWdzWzE4XTsKKyAg ICBhYmlfbG9uZyB1cmVnc1sxOF07CiB9OwogCiAjZGVmaW5lIEFSTV9jcHNyCXVyZWdzWzE2XQpJ bmRleDogcWVtdS9jb25maWd1cmUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2NvbmZpZ3VyZQky MDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9jb25maWd1cmUJMjAw Ny0xMC0xMiAxNTozODoxNS4wMDAwMDAwMDAgKzAwMDAKQEAgLTUwNCw3ICs1MDQsNyBAQAogICAg IGZpCiAjIHRoZSBmb2xsb3dpbmcgYXJlIExpbnV4IHNwZWNpZmljCiAgICAgaWYgWyAiJGxpbnV4 X3VzZXIiID0gInllcyIgXSA7IHRoZW4KLSAgICAgICAgdGFyZ2V0X2xpc3Q9ImkzODYtbGludXgt dXNlciBhcm0tbGludXgtdXNlciBhcm1lYi1saW51eC11c2VyIHNwYXJjLWxpbnV4LXVzZXIgcHBj LWxpbnV4LXVzZXIgbWlwcy1saW51eC11c2VyIG1pcHNlbC1saW51eC11c2VyIG02OGstbGludXgt dXNlciBhbHBoYS1saW51eC11c2VyIHBwYzY0LWxpbnV4LXVzZXIgc2g0LWxpbnV4LXVzZXIgY3Jp cy1saW51eC11c2VyICR0YXJnZXRfbGlzdCIKKyAgICAgICAgdGFyZ2V0X2xpc3Q9ImkzODYtbGlu dXgtdXNlciBhcm0tbGludXgtdXNlciBhcm1lYi1saW51eC11c2VyIHNwYXJjLWxpbnV4LXVzZXIg c3BhcmM2NC1saW51eC11c2VyIHNwYXJjMzJwbHVzLWxpbnV4LXVzZXIgcHBjLWxpbnV4LXVzZXIg bWlwcy1saW51eC11c2VyIG1pcHNlbC1saW51eC11c2VyIG02OGstbGludXgtdXNlciBhbHBoYS1s aW51eC11c2VyIHBwYzY0LWxpbnV4LXVzZXIgc2g0LWxpbnV4LXVzZXIgY3Jpcy1saW51eC11c2Vy ICR0YXJnZXRfbGlzdCIKICAgICBmaQogIyB0aGUgZm9sbG93aW5nIGFyZSBEYXJ3aW4gc3BlY2lm aWMKICAgICBpZiBbICIkZGFyd2luX3VzZXIiID0gInllcyIgXSA7IHRoZW4KQEAgLTkzMyw2ICs5 MzMsNyBAQAogWyAiJHRhcmdldF9jcHUiID0gImFybWViIiBdICYmIHRhcmdldF9iaWdlbmRpYW49 eWVzCiBbICIkdGFyZ2V0X2NwdSIgPSAic3BhcmMiIF0gJiYgdGFyZ2V0X2JpZ2VuZGlhbj15ZXMK IFsgIiR0YXJnZXRfY3B1IiA9ICJzcGFyYzY0IiBdICYmIHRhcmdldF9iaWdlbmRpYW49eWVzCitb ICIkdGFyZ2V0X2NwdSIgPSAic3BhcmMzMnBsdXMiIF0gJiYgdGFyZ2V0X2JpZ2VuZGlhbj15ZXMK IFsgIiR0YXJnZXRfY3B1IiA9ICJwcGMiIF0gJiYgdGFyZ2V0X2JpZ2VuZGlhbj15ZXMKIFsgIiR0 YXJnZXRfY3B1IiA9ICJwcGM2NCIgXSAmJiB0YXJnZXRfYmlnZW5kaWFuPXllcwogWyAiJHRhcmdl dF9jcHUiID0gInBwY2VtYiIgXSAmJiB0YXJnZXRfYmlnZW5kaWFuPXllcwpAQCAtMTAwNSw2ICsx MDA2LDcgQEAKIAogaWYgdGVzdCAiJHRhcmdldF9jcHUiID0gImkzODYiIDsgdGhlbgogICBlY2hv ICJUQVJHRVRfQVJDSD1pMzg2IiA+PiAkY29uZmlnX21haworICBlY2hvICJUQVJHRVRfQUJJX0RJ Uj1pMzg2IiA+PiAkY29uZmlnX21hawogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9BUkNIIFwiaTM4 NlwiIiA+PiAkY29uZmlnX2gKICAgZWNobyAiI2RlZmluZSBUQVJHRVRfSTM4NiAxIiA+PiAkY29u ZmlnX2gKICAgaWYgdGVzdCAka3FlbXUgPSAieWVzIiAtYSAiJHRhcmdldF9zb2Z0bW11IiA9ICJ5 ZXMiIC1hICRjcHUgPSAiaTM4NiIgOyB0aGVuCkBAIC0xMDEyLDM1ICsxMDE0LDQ5IEBACiAgIGZp CiBlbGlmIHRlc3QgIiR0YXJnZXRfY3B1IiA9ICJhcm0iIC1vICIkdGFyZ2V0X2NwdSIgPSAiYXJt ZWIiIDsgdGhlbgogICBlY2hvICJUQVJHRVRfQVJDSD1hcm0iID4+ICRjb25maWdfbWFrCisgIGVj aG8gIlRBUkdFVF9BQklfRElSPWFybSIgPj4gJGNvbmZpZ19tYWsKICAgZWNobyAiI2RlZmluZSBU QVJHRVRfQVJDSCBcImFybVwiIiA+PiAkY29uZmlnX2gKICAgZWNobyAiI2RlZmluZSBUQVJHRVRf QVJNIDEiID4+ICRjb25maWdfaAogICBiZmx0PSJ5ZXMiCiBlbGlmIHRlc3QgIiR0YXJnZXRfY3B1 IiA9ICJzcGFyYyIgOyB0aGVuCiAgIGVjaG8gIlRBUkdFVF9BUkNIPXNwYXJjIiA+PiAkY29uZmln X21haworICBlY2hvICJUQVJHRVRfQUJJX0RJUj1zcGFyYyIgPj4gJGNvbmZpZ19tYWsKICAgZWNo byAiI2RlZmluZSBUQVJHRVRfQVJDSCBcInNwYXJjXCIiID4+ICRjb25maWdfaAogICBlY2hvICIj ZGVmaW5lIFRBUkdFVF9TUEFSQyAxIiA+PiAkY29uZmlnX2gKIGVsaWYgdGVzdCAiJHRhcmdldF9j cHUiID0gInNwYXJjNjQiIDsgdGhlbgogICBlY2hvICJUQVJHRVRfQVJDSD1zcGFyYzY0IiA+PiAk Y29uZmlnX21haworICBlY2hvICJUQVJHRVRfQUJJX0RJUj1zcGFyYzY0IiA+PiAkY29uZmlnX21h awogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9BUkNIIFwic3BhcmM2NFwiIiA+PiAkY29uZmlnX2gK ICAgZWNobyAiI2RlZmluZSBUQVJHRVRfU1BBUkMgMSIgPj4gJGNvbmZpZ19oCiAgIGVjaG8gIiNk ZWZpbmUgVEFSR0VUX1NQQVJDNjQgMSIgPj4gJGNvbmZpZ19oCiAgIGVsZmxvYWQzMj0ieWVzIgor ZWxpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAic3BhcmMzMnBsdXMiIDsgdGhlbgorICBlY2hvICJU QVJHRVRfQVJDSD1zcGFyYzY0IiA+PiAkY29uZmlnX21haworICBlY2hvICJUQVJHRVRfQUJJX0RJ Uj1zcGFyYyIgPj4gJGNvbmZpZ19tYWsKKyAgZWNobyAiI2RlZmluZSBUQVJHRVRfQVJDSCBcInNw YXJjNjRcIiIgPj4gJGNvbmZpZ19oCisgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX1NQQVJDIDEiID4+ ICRjb25maWdfaAorICBlY2hvICIjZGVmaW5lIFRBUkdFVF9TUEFSQzY0IDEiID4+ICRjb25maWdf aAorICBlY2hvICIjZGVmaW5lIFRBUkdFVF9BQkkzMiAxIiA+PiAkY29uZmlnX2gKIGVsaWYgdGVz dCAiJHRhcmdldF9jcHUiID0gInBwYyIgOyB0aGVuCiAgIGVjaG8gIlRBUkdFVF9BUkNIPXBwYyIg Pj4gJGNvbmZpZ19tYWsKKyAgZWNobyAiVEFSR0VUX0FCSV9ESVI9cHBjIiA+PiAkY29uZmlnX21h awogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9BUkNIIFwicHBjXCIiID4+ICRjb25maWdfaAogICBl Y2hvICIjZGVmaW5lIFRBUkdFVF9QUEMgMSIgPj4gJGNvbmZpZ19oCiBlbGlmIHRlc3QgIiR0YXJn ZXRfY3B1IiA9ICJwcGM2NCIgOyB0aGVuCiAgIGVjaG8gIlRBUkdFVF9BUkNIPXBwYzY0IiA+PiAk Y29uZmlnX21haworICBlY2hvICJUQVJHRVRfQUJJX0RJUj1wcGMiID4+ICRjb25maWdfbWFrCiAg IGVjaG8gIiNkZWZpbmUgVEFSR0VUX0FSQ0ggXCJwcGM2NFwiIiA+PiAkY29uZmlnX2gKICAgZWNo byAiI2RlZmluZSBUQVJHRVRfUFBDIDEiID4+ICRjb25maWdfaAogICBlY2hvICIjZGVmaW5lIFRB UkdFVF9QUEM2NCAxIiA+PiAkY29uZmlnX2gKIGVsaWYgdGVzdCAiJHRhcmdldF9jcHUiID0gInBw Y2VtYiIgOyB0aGVuCiAgIGVjaG8gIlRBUkdFVF9BUkNIPXBwY2VtYiIgPj4gJGNvbmZpZ19tYWsK KyAgZWNobyAiVEFSR0VUX0FCSV9ESVI9cHBjIiA+PiAkY29uZmlnX21hawogICBlY2hvICIjZGVm aW5lIFRBUkdFVF9BUkNIIFwicHBjZW1iXCIiID4+ICRjb25maWdfaAogICBlY2hvICIjZGVmaW5l IFRBUkdFVF9QUEMgMSIgPj4gJGNvbmZpZ19oCiAgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX1BQQ0VN QiAxIiA+PiAkY29uZmlnX2gKIGVsaWYgdGVzdCAiJHRhcmdldF9jcHUiID0gIng4Nl82NCIgOyB0 aGVuCiAgIGVjaG8gIlRBUkdFVF9BUkNIPXg4Nl82NCIgPj4gJGNvbmZpZ19tYWsKKyAgZWNobyAi VEFSR0VUX0FCSV9ESVI9eDg2XzY0IiA+PiAkY29uZmlnX21hawogICBlY2hvICIjZGVmaW5lIFRB UkdFVF9BUkNIIFwieDg2XzY0XCIiID4+ICRjb25maWdfaAogICBlY2hvICIjZGVmaW5lIFRBUkdF VF9JMzg2IDEiID4+ICRjb25maWdfaAogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9YODZfNjQgMSIg Pj4gJGNvbmZpZ19oCkBAIC0xMDQ5LDM2ICsxMDY1LDQzIEBACiAgIGZpCiBlbGlmIHRlc3QgIiR0 YXJnZXRfY3B1IiA9ICJtaXBzIiAtbyAiJHRhcmdldF9jcHUiID0gIm1pcHNlbCIgOyB0aGVuCiAg IGVjaG8gIlRBUkdFVF9BUkNIPW1pcHMiID4+ICRjb25maWdfbWFrCisgIGVjaG8gIlRBUkdFVF9B QklfRElSPW1pcHMiID4+ICRjb25maWdfbWFrCiAgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX0FSQ0gg XCJtaXBzXCIiID4+ICRjb25maWdfaAogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9NSVBTIDEiID4+ ICRjb25maWdfaAogZWxpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAibWlwc24zMiIgLW8gIiR0YXJn ZXRfY3B1IiA9ICJtaXBzbjMyZWwiIDsgdGhlbgogICBlY2hvICJUQVJHRVRfQVJDSD1taXBzbjMy IiA+PiAkY29uZmlnX21haworICBlY2hvICJUQVJHRVRfQUJJX0RJUj1taXBzbjMyIiA+PiAkY29u ZmlnX21hawogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9BUkNIIFwibWlwc24zMlwiIiA+PiAkY29u ZmlnX2gKICAgZWNobyAiI2RlZmluZSBUQVJHRVRfTUlQUyAxIiA+PiAkY29uZmlnX2gKICAgZWNo byAiI2RlZmluZSBUQVJHRVRfTUlQU04zMiAxIiA+PiAkY29uZmlnX2gKIGVsaWYgdGVzdCAiJHRh cmdldF9jcHUiID0gIm1pcHM2NCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzNjRlbCIgOyB0aGVu CiAgIGVjaG8gIlRBUkdFVF9BUkNIPW1pcHM2NCIgPj4gJGNvbmZpZ19tYWsKKyAgZWNobyAiVEFS R0VUX0FCSV9ESVI9bWlwczY0IiA+PiAkY29uZmlnX21hawogICBlY2hvICIjZGVmaW5lIFRBUkdF VF9BUkNIIFwibWlwczY0XCIiID4+ICRjb25maWdfaAogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9N SVBTIDEiID4+ICRjb25maWdfaAogICBlY2hvICIjZGVmaW5lIFRBUkdFVF9NSVBTNjQgMSIgPj4g JGNvbmZpZ19oCiBlbGlmIHRlc3QgIiR0YXJnZXRfY3B1IiA9ICJjcmlzIiA7IHRoZW4KICAgZWNo byAiVEFSR0VUX0FSQ0g9Y3JpcyIgPj4gJGNvbmZpZ19tYWsKKyAgZWNobyAiVEFSR0VUX0FCSV9E SVI9Y3JpcyIgPj4gJGNvbmZpZ19tYWsKICAgZWNobyAiI2RlZmluZSBUQVJHRVRfQVJDSCBcImNy aXNcIiIgPj4gJGNvbmZpZ19oCiAgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX0NSSVMgMSIgPj4gJGNv bmZpZ19oCiAgIGVjaG8gIkNPTkZJR19TT0ZURkxPQVQ9eWVzIiA+PiAkY29uZmlnX21hawogICBl Y2hvICIjZGVmaW5lIENPTkZJR19TT0ZURkxPQVQgMSIgPj4gJGNvbmZpZ19oCiBlbGlmIHRlc3Qg IiR0YXJnZXRfY3B1IiA9ICJzaDQiIC1vICIkdGFyZ2V0X2NwdSIgPSAic2g0ZWIiIDsgdGhlbgog ICBlY2hvICJUQVJHRVRfQVJDSD1zaDQiID4+ICRjb25maWdfbWFrCisgIGVjaG8gIlRBUkdFVF9B QklfRElSPXNoNCIgPj4gJGNvbmZpZ19tYWsKICAgZWNobyAiI2RlZmluZSBUQVJHRVRfQVJDSCBc InNoNFwiIiA+PiAkY29uZmlnX2gKICAgZWNobyAiI2RlZmluZSBUQVJHRVRfU0g0IDEiID4+ICRj b25maWdfaAogICBiZmx0PSJ5ZXMiCiBlbGlmIHRlc3QgIiR0YXJnZXRfY3B1IiA9ICJtNjhrIiA7 IHRoZW4KICAgZWNobyAiVEFSR0VUX0FSQ0g9bTY4ayIgPj4gJGNvbmZpZ19tYWsKKyAgZWNobyAi VEFSR0VUX0FCSV9ESVI9bTY4ayIgPj4gJGNvbmZpZ19tYWsKICAgZWNobyAiI2RlZmluZSBUQVJH RVRfQVJDSCBcIm02OGtcIiIgPj4gJGNvbmZpZ19oCiAgIGVjaG8gIiNkZWZpbmUgVEFSR0VUX002 OEsgMSIgPj4gJGNvbmZpZ19oCiAgIGJmbHQ9InllcyIKIGVsaWYgdGVzdCAiJHRhcmdldF9jcHUi ID0gImFscGhhIiA7IHRoZW4KICAgZWNobyAiVEFSR0VUX0FSQ0g9YWxwaGEiID4+ICRjb25maWdf bWFrCisgIGVjaG8gIlRBUkdFVF9BQklfRElSPWFscGhhIiA+PiAkY29uZmlnX21hawogICBlY2hv ICIjZGVmaW5lIFRBUkdFVF9BUkNIIFwiYWxwaGFcIiIgPj4gJGNvbmZpZ19oCiAgIGVjaG8gIiNk ZWZpbmUgVEFSR0VUX0FMUEhBIDEiID4+ICRjb25maWdfaAogZWxzZQpAQCAtMTEwNiw3ICsxMTI5 LDcgQEAKICAgZWNobyAiI2RlZmluZSBDT05GSUdfREFSV0lOX1VTRVIgMSIgPj4gJGNvbmZpZ19o CiBmaQogCi1pZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAiYXJtIiAtbyAiJHRhcmdldF9jcHUiID0g ImFybWViIiAtbyAiJHRhcmdldF9jcHUiID0gInNwYXJjIiAtbyAiJHRhcmdldF9jcHUiID0gInNw YXJjNjQiIC1vICIkdGFyZ2V0X2NwdSIgPSAibTY4ayIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBz IiAtbyAiJHRhcmdldF9jcHUiID0gIm1pcHNlbCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzbjMy IiAtbyAiJHRhcmdldF9jcHUiID0gIm1pcHNuMzJlbCIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBz NjQiIC1vICIkdGFyZ2V0X2NwdSIgPSAibWlwczY0ZWwiOyB0aGVuCitpZiB0ZXN0ICIkdGFyZ2V0 X2NwdSIgPSAiYXJtIiAtbyAiJHRhcmdldF9jcHUiID0gImFybWViIiAtbyAiJHRhcmdldF9jcHUi ID0gInNwYXJjIiAtbyAiJHRhcmdldF9jcHUiID0gInNwYXJjNjQiICAtbyAiJHRhcmdldF9jcHUi ID0gInNwYXJjMzJwbHVzIiAtbyAiJHRhcmdldF9jcHUiID0gIm02OGsiIC1vICIkdGFyZ2V0X2Nw dSIgPSAibWlwcyIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzZWwiIC1vICIkdGFyZ2V0X2NwdSIg PSAibWlwc24zMiIgLW8gIiR0YXJnZXRfY3B1IiA9ICJtaXBzbjMyZWwiIC1vICIkdGFyZ2V0X2Nw dSIgPSAibWlwczY0IiAtbyAiJHRhcmdldF9jcHUiID0gIm1pcHM2NGVsIjsgdGhlbgogICBlY2hv ICJDT05GSUdfU09GVEZMT0FUPXllcyIgPj4gJGNvbmZpZ19tYWsKICAgZWNobyAiI2RlZmluZSBD T05GSUdfU09GVEZMT0FUIDEiID4+ICRjb25maWdfaAogZmkKSW5kZXg6IHFlbXUvdGh1bmsuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdGh1bmsuYwkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAw MDAwMCArMDAwMAorKysgcWVtdS90aHVuay5jCTIwMDctMTAtMTEgMTk6MTc6NDYuMDAwMDAwMDAw ICswMDAwCkBAIC0xMzYsMTMgKzEzNiwxMyBAQAogICAgIGNhc2UgVFlQRV9VTE9OR0xPTkc6CiAg ICAgICAgICoodWludDY0X3QgKilkc3QgPSB0c3dhcDY0KCoodWludDY0X3QgKilzcmMpOwogICAg ICAgICBicmVhazsKLSNpZiBIT1NUX0xPTkdfQklUUyA9PSAzMiAmJiBUQVJHRVRfTE9OR19CSVRT ID09IDMyCisjaWYgSE9TVF9MT05HX0JJVFMgPT0gMzIgJiYgVEFSR0VUX0FCSV9CSVRTID09IDMy CiAgICAgY2FzZSBUWVBFX0xPTkc6CiAgICAgY2FzZSBUWVBFX1VMT05HOgogICAgIGNhc2UgVFlQ RV9QVFJWT0lEOgogICAgICAgICAqKHVpbnQzMl90ICopZHN0ID0gdHN3YXAzMigqKHVpbnQzMl90 ICopc3JjKTsKICAgICAgICAgYnJlYWs7Ci0jZWxpZiBIT1NUX0xPTkdfQklUUyA9PSA2NCAmJiBU QVJHRVRfTE9OR19CSVRTID09IDMyCisjZWxpZiBIT1NUX0xPTkdfQklUUyA9PSA2NCAmJiBUQVJH RVRfQUJJX0JJVFMgPT0gMzIKICAgICBjYXNlIFRZUEVfTE9ORzoKICAgICBjYXNlIFRZUEVfVUxP Tkc6CiAgICAgY2FzZSBUWVBFX1BUUlZPSUQ6CkluZGV4OiBxZW11L3RodW5rLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL3RodW5rLmgJMjAwNy0xMC0xMSAxOToxNzoxNC4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvdGh1bmsuaAkyMDA3LTEwLTExIDE5OjE3OjQ2LjAwMDAwMDAwMCArMDAwMApA QCAtOTgsNyArOTgsNyBAQAogICAgICAgICBpZiAoaXNfaG9zdCkgewogICAgICAgICAgICAgcmV0 dXJuIEhPU1RfTE9OR19TSVpFOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJu IFRBUkdFVF9MT05HX1NJWkU7CisgICAgICAgICAgICByZXR1cm4gVEFSR0VUX0FCSV9CSVRTIC8g ODsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFRZUEVfQVJSQVk6CkBAIC0x MzUsNyArMTM1LDcgQEAKICAgICAgICAgaWYgKGlzX2hvc3QpIHsKICAgICAgICAgICAgIHJldHVy biBIT1NUX0xPTkdfU0laRTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBU QVJHRVRfTE9OR19TSVpFOworICAgICAgICAgICAgcmV0dXJuIFRBUkdFVF9BQklfQklUUyAvIDg7 CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUWVBFX0FSUkFZOgpJbmRleDog cWVtdS9NYWtlZmlsZS50YXJnZXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL01ha2VmaWxlLnRh cmdldAkyMDA3LTEwLTExIDE5OjE3OjE0LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9NYWtlZmls ZS50YXJnZXQJMjAwNy0xMC0xMiAxNjoxNjoxMy4wMDAwMDAwMDAgKzAwMDAKQEAgLTI4LDcgKzI4 LDcgQEAKIGVuZGlmCiBpZmRlZiBDT05GSUdfTElOVVhfVVNFUgogVlBBVEgrPTokKFNSQ19QQVRI KS9saW51eC11c2VyCi1DUFBGTEFHUys9LUkkKFNSQ19QQVRIKS9saW51eC11c2VyIC1JJChTUkNf UEFUSCkvbGludXgtdXNlci8kKFRBUkdFVF9BUkNIKQorQ1BQRkxBR1MrPS1JJChTUkNfUEFUSCkv bGludXgtdXNlciAtSSQoU1JDX1BBVEgpL2xpbnV4LXVzZXIvJChUQVJHRVRfQUJJX0RJUikKIGVu ZGlmCiBCQVNFX0NGTEFHUz0KIEJBU0VfTERGTEFHUz0KQEAgLTYzLDYgKzYzLDExIEBACiAgICAg VEFSR0VUX0FSQ0gyPW1pcHM2NGVsCiAgIGVuZGlmCiBlbmRpZgoraWZlcSAoJChUQVJHRVRfQVJD SCksc3BhcmM2NCkKKyAgaWZlcSAoJChUQVJHRVRfQUJJX0RJUiksc3BhcmMpCisgICAgVEFSR0VU X0FSQ0gyPXNwYXJjMzJwbHVzCisgIGVuZGlmCitlbmRpZgogUUVNVV9VU0VSPXFlbXUtJChUQVJH RVRfQVJDSDIpCiAjIHN5c3RlbSBlbXVsYXRvciBuYW1lCiBpZmRlZiBDT05GSUdfU09GVE1NVQo= ------=_Part_26251_7653532.1192206102075--