From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HuNFU-0005r9-Ip for qemu-devel@nongnu.org; Sat, 02 Jun 2007 02:38:04 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HuNFQ-0005qd-U5 for qemu-devel@nongnu.org; Sat, 02 Jun 2007 02:38:03 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HuNFQ-0005qZ-LY for qemu-devel@nongnu.org; Sat, 02 Jun 2007 02:38:00 -0400 Received: from nz-out-0506.google.com ([64.233.162.229]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HuNFN-0002zo-Ss for qemu-devel@nongnu.org; Sat, 02 Jun 2007 02:37:59 -0400 Received: by nz-out-0506.google.com with SMTP id 18so1781692nzp for ; Fri, 01 Jun 2007 23:37:49 -0700 (PDT) Message-ID: Date: Sat, 2 Jun 2007 14:37:48 +0800 From: "Jun Peng" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_9638_15909768.1180766268524" Subject: [Qemu-devel] qemu on mips patch Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_9638_15909768.1180766268524 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello! Are you are just testing host_mips qemu? I have been doing the same work two or three month ago on a mips + linux system. But, it have some bugs however. It is for qemu 0.6.1 refer to qemu-irix.patch at first. And yesterday, I made a qemu 0.9.0 patch. It seems working(only target-i386). In order to handle relocation symbol, I writed a little tool named op_mips.c. This tool is the key of my patch. host detail: cpu: loognson 2E(mips compatible, little endian) os: debian linux 4.0 kernel: linux 2.6.18 gcc: 3.4.6 glibc: 2.3.6 test: in full system mode: can run windows 98 or linux(x86) in user mode: can run some i386 elf programs except wine! bugs: In user mode, it catchs a SIGSEGV when launching a windows PE program. I have been trying to solve this problem a long time. But unfortunately, I failed. I wondered if you could give me some help about qemu + wine. And hope new qemu release supply host_mips soon. There is the patch: qemu-0.9.0-loongson.patch Thanks. Peng Jun ------=_Part_9638_15909768.1180766268524 Content-Type: text/plain; name=qemu-0.9.0-loongson.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f2fppza9 Content-Disposition: attachment; filename="qemu-0.9.0-loongson.patch" ZGlmZiAtTnVyYiBxZW11LTAuOS4wL2NwdS1hbGwuaCBxZW11LWxvb25nc29uL2NwdS1hbGwuaAot LS0gcWVtdS0wLjkuMC9jcHUtYWxsLmgJMjAwNy0wMi0wNiAwNzowMTo1NC4wMDAwMDAwMDAgKzA4 MDAKKysrIHFlbXUtbG9vbmdzb24vY3B1LWFsbC5oCTIwMDctMDYtMDEgMjM6MjM6MzQuMDAwMDAw MDAwICswODAwCkBAIC0yMCw3ICsyMCw3IEBACiAjaWZuZGVmIENQVV9BTExfSAogI2RlZmluZSBD UFVfQUxMX0gKIAotI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX3NwYXJjX18pCisj aWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fc3BhcmNfXykgfHwgZGVmaW5lZChfX21p cHNfXykKICNkZWZpbmUgV09SRFNfQUxJR05FRAogI2VuZGlmCiAKQEAgLTEwMDEsNiArMTAwMSwy MSBAQAogICAgICAgICByZXR1cm4gcnZhbC5pNjQ7CiAjZW5kaWYKIH0KKworI2VsaWYgZGVmaW5l ZChfX21pcHNfXykKKworI2luY2x1ZGUgPHRpbWUuaD4KK3N0YXRpYyBpbmxpbmUgaW50NjRfdCBj cHVfZ2V0X3JlYWxfdGlja3MgKHZvaWQpCit7CisgICAgc3RydWN0IHRpbWVzcGVjIHQ7CisgICAg Ly8gbGludXgvdGltZS5oCisjaWZuZGVmCUNMT0NLX01PTk9UT05JQworI2RlZmluZQlDTE9DS19N T05PVE9OSUMJMQorI2VuZGlmCisgICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0 KTsKKyAgICByZXR1cm4gdC50dl9zZWMqMTAwMDAwMDAwMExMK3QudHZfbnNlYzsKK30KKwogI2Vs c2UKIC8qIFRoZSBob3N0IENQVSBkb2Vzbid0IGhhdmUgYW4gZWFzaWx5IGFjY2Vzc2libGUgY3lj bGUgY291bnRlci4KICAgIEp1c3QgcmV0dXJuIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIHZs dWUuICBUaGlzIHdpbGwgYmUgdG90YWxseSB3cm9uZywKZGlmZiAtTnVyYiBxZW11LTAuOS4wL2Nw dS1leGVjLmMgcWVtdS1sb29uZ3Nvbi9jcHUtZXhlYy5jCi0tLSBxZW11LTAuOS4wL2NwdS1leGVj LmMJMjAwNy0wMi0wNiAwNzowMTo1NC4wMDAwMDAwMDAgKzA4MDAKKysrIHFlbXUtbG9vbmdzb24v Y3B1LWV4ZWMuYwkyMDA3LTA2LTAxIDIzOjIzOjM0LjAwMDAwMDAwMCArMDgwMApAQCAtMTQ3OCw2 ICsxNDc4LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1Yy0+dWNfc2lnbWFz aywgcHVjKTsKIH0KIAorI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKworI2luY2x1ZGUgPHN5cy91 c2VyLmg+CitpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGlu Zm8sIAorICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdWMpCit7CisgICAgc2lnaW5mb190 ICppbmZvID0gcGluZm87CisgICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKKyAgICB1bnNp Z25lZCBsb25nIHBjOworICAgIGludCBpc193cml0ZTsKKyAgICAKKyAgICBwYyA9IHVjLT51Y19t Y29udGV4dC5ncmVnc1tFRl9SRUczMV07CS8vID8/PworICAgIC8qIFhYWDogY29tcHV0ZSBpc193 cml0ZSAqLworICAgIGlzX3dyaXRlID0gMDsKKyAgICByZXR1cm4gaGFuZGxlX2NwdV9zaWduYWwo cGMsICh1bnNpZ25lZCBsb25nKWluZm8tPnNpX2FkZHIsIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpc193cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVjLT51Y19z aWdtYXNrLCBwdWMpOworfQorCiAjZWxzZQogCiAjZXJyb3IgaG9zdCBDUFUgc3BlY2lmaWMgc2ln bmFsIGhhbmRsZXIgbmVlZGVkCmRpZmYgLU51cmIgcWVtdS0wLjkuMC9keW5nZW4uYyBxZW11LWxv b25nc29uL2R5bmdlbi5jCi0tLSBxZW11LTAuOS4wL2R5bmdlbi5jCTIwMDctMDItMDYgMDc6MDE6 NTQuMDAwMDAwMDAwICswODAwCisrKyBxZW11LWxvb25nc29uL2R5bmdlbi5jCTIwMDctMDYtMDEg MjM6MjM6MzQuMDAwMDAwMDAwICswODAwCkBAIC0xMTcsNiArMTE3LDEzIEBACiAjZGVmaW5lIGVs Zl9jaGVja19hcmNoKHgpICgoeCkgPT0gRU1fNjhLKQogI2RlZmluZSBFTEZfVVNFU19SRUxPQ0EK IAorI2VsaWYgZGVmaW5lZChIT1NUX01JUFMpCisKKyNkZWZpbmUgRUxGX0NMQVNTCUVMRkNMQVNT MzIKKyNkZWZpbmUgRUxGX0FSQ0gJRU1fTUlQUworI2RlZmluZSBlbGZfY2hlY2tfYXJjaCh4KSAo KHgpID09IEVNX01JUFMpCisjZGVmaW5lIEVMRl9VU0VTX1JFTE9DCisKICNlbHNlCiAjZXJyb3Ig dW5zdXBwb3J0ZWQgQ1BVIC0gcGxlYXNlIHVwZGF0ZSB0aGUgY29kZQogI2VuZGlmCkBAIC0xNjQx LDYgKzE2NDgsMjAgQEAKICAgICAgICAgICAgIGVycm9yKCJydHMgZXhwZWN0ZWQgYXQgdGhlIGVu ZCBvZiAlcyIsIG5hbWUpOwogICAgICAgICBjb3B5X3NpemUgPSBwIC0gcF9zdGFydDsKICAgICB9 CisjZWxpZiBkZWZpbmVkKEhPU1RfTUlQUykKKyAgICB7CisgICAgICAgIHVpbnQ4X3QgKnA7Cisg ICAgICAgIHAgPSAodm9pZCAqKShwX2VuZCAtIDQpOworICAgICAgICBpZiAocCA9PSBwX3N0YXJ0 KQorICAgICAgICAgICAgZXJyb3IoImVtcHR5IGNvZGUgZm9yICVzIiwgbmFtZSk7CisgICAgICAg IC8vIHJlbW92ZSBOT1AncywgYWRkZWQgZm9yIGFsaWdubWVudAorICAgICAgIAl3aGlsZSAoKGdl dDMyKCh1aW50MzJfdCAqKXApICE9IDB4MDNlMDAwMDgpICYmCisgICAgICAgCSAgICAgICAgKHA+ cF9zdGFydCkpIAorIAkgICAgcCAtPSA0OworCWlmIChnZXQzMigodWludDMyX3QgKilwKSAhPSAw eDAzZTAwMDA4KQorICAgICAgICAgICAgIGVycm9yKCJqciByYSBleHBlY3RlZCBhdCB0aGUgZW5k IG9mICVzIiwgbmFtZSk7CisgICAgICAgIGNvcHlfc2l6ZSA9IHAgLSBwX3N0YXJ0OworICAgIH0K ICNlbHNlCiAjZXJyb3IgdW5zdXBwb3J0ZWQgQ1BVCiAjZW5kaWYKQEAgLTE3MjcsMTIgKzE3NDgs MTYgQEAKIAkJCQlmcHJpbnRmKG91dGZpbGUsICIgICAgZXh0ZXJuIGNoYXIgJXM7XG4iLAogCQkJ CQlzeW1fbmFtZSk7CiAjZWxzZQorI2lmbmRlZglIT1NUX01JUFMKICAgICAgICAgICAgICAgICAg ICAgZnByaW50ZihvdXRmaWxlLCAiZXh0ZXJuIGNoYXIgJXM7XG4iLCBzeW1fbmFtZSk7CiAjZW5k aWYKKyNlbmRpZgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQot CisJLy8gZGVidWcKKy8qCWZwcmludGYob3V0ZmlsZSwgIglmcHJpbnRmKHN0ZGVyciwgXCIlczog WyUlMDh4XVslJTA4eF0gJWQvJWRcXG5cIiwgKGludClnZW5fY29kZV9wdHIsIChpbnQpJXMpO1xu IiwKKwkJCW5hbWUsIGNvcHlfc2l6ZS80LCBjb3B5X3NpemUsIG5hbWUpOyovCiAgICAgICAgIGZw cmludGYob3V0ZmlsZSwgIiAgICBtZW1jcHkoZ2VuX2NvZGVfcHRyLCAodm9pZCAqKSgoY2hhciAq KSYlcyslZCksICVkKTtcbiIsCiAJCQkJCW5hbWUsIChpbnQpKHN0YXJ0X29mZnNldCAtIG9mZnNl dCksIGNvcHlfc2l6ZSk7CiAKQEAgLTI0NTYsNiArMjQ4MSw2MyBAQAogICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisjZWxpZiBkZWZpbmVkKEhPU1Rf TUlQUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGFyIG5hbWVbMjU2XTsKKyAg ICAgICAgICAgICAgICBpbnQgdHlwZTsKKwkJRWxmMzJfU3ltICpzeW07CisKKyAgICAgICAgICAg ICAgICBmb3IoaSA9IDAsIHJlbCA9IHJlbG9jcztpIDwgbmJfcmVsb2NzOyBpKyssIHJlbCsrKSB7 CisgICAgICAgICAgICAgICAgaWYgKHJlbC0+cl9vZmZzZXQgPj0gc3RhcnRfb2Zmc2V0ICYmCisJ CSAgICByZWwtPnJfb2Zmc2V0IDwgc3RhcnRfb2Zmc2V0ICsgY29weV9zaXplKSB7CisJCSAgICBz eW0gPSAmKHN5bXRhYltFTEZXKFJfU1lNKShyZWwtPnJfaW5mbyldKTsKKyAgICAgICAgICAgICAg ICAgICAgc3ltX25hbWUgPSBzdHJ0YWIgKyBzeW10YWJbRUxGVyhSX1NZTSkocmVsLT5yX2luZm8p XS5zdF9uYW1lOworICAgICAgICAgICAgICAgICAgICBpZiAoc3Ryc3RhcnQoc3ltX25hbWUsICJf X29wX2ptcCIsICZwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IG47CisJCQlpZihF TEYzMl9SX1RZUEUocmVsLT5yX2luZm8pPT1SX01JUFNfTE8xNikKKwkJCSAgICBjb250aW51ZTsK KyAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBzdHJ0b2wocCwgTlVMTCwgMTApOworICAgICAg ICAgICAgICAgICAgICAgICAgLyogX19vcF9qbXAgcmVsb2NhdGlvbnMgYXJlIGRvbmUgYXQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUgdG8gZG8gdHJhbnNsYXRlZCBibG9jawor ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW5pbmc6IHRoZSBvZmZzZXQgb2YgdGhlIGlu c3RydWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkcyB0byBiZSBzdG9yZWQg Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0ZmlsZSwgIiAgICBqbXBfb2Zm c2V0c1slZF0gPSAlZCArIChnZW5fY29kZV9wdHIgLSBnZW5fY29kZV9idWYpO1xuIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4sIHJlbC0+cl9vZmZzZXQgLSBzdGFydF9v ZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnN0YXJ0KHN5bV9uYW1lLCAiX19v cF9wYXJhbSIsICZwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc25wcmludGYobmFtZSwg c2l6ZW9mKG5hbWUpLCAicGFyYW0lcyIsIHApOworCQkgICAgfSBlbHNlIGlmIChzdHJzdGFydChz eW1fbmFtZSwKKwkJCQkJICAgICJfX29wX2dlbl9sYWJlbCIsICZwKSkgeworICAgICAgICAJCXNu cHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwKKwkJCQkJImdlbl9sYWJlbHNbcGFyYW0lc10iLCBw KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkJY29udGludWU7CisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEVMRjMyX1JfVFlQRShyZWwt PnJfaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCh0eXBlKSB7CisJCSAgICBjYXNl IFJfTUlQU19ISTE2OgorICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihvdXRmaWxlLCAi ICAgICoodWludDE2X3QgKikoZ2VuX2NvZGVfcHRyICsgJWQpID0gKHVpbnQxNl90KSgodWludDMy X3QpKCVzKT4+MTYpO1xuIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbC0+ cl9vZmZzZXQgLSBzdGFydF9vZmZzZXQgKyAwLCBuYW1lKTsKKwkJCWJyZWFrOworCQkgICAgY2Fz ZSBSX01JUFNfTE8xNjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0ZmlsZSwg IiAgICAqKHVpbnQxNl90ICopKGdlbl9jb2RlX3B0ciArICVkKSA9ICh1aW50MTZfdCkoKHVpbnQz Ml90KSglcykmMHhmZmZmKTtcbiIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWwtPnJfb2Zmc2V0IC0gc3RhcnRfb2Zmc2V0ICsgMCwgbmFtZSk7CisJCQlicmVhazsKKwkJICAg IGNhc2UgUl9NSVBTX0dQUkVMMTY6CisJCSAgICBjYXNlIFJfTUlQU19HT1RfRElTUDoKKwkJICAg IGNhc2UgUl9NSVBTX0dPVF9QQUdFOgorCQkgICAgY2FzZSBSX01JUFNfR09UX09GU1Q6CisJCSAg ICBjYXNlIFJfTUlQU19DQUxMMTY6CisJCQkvKiBpZ25vcmU6IHRoZXNlIHJlbG9jYXRpb25zIGFy ZSBubyBwYXJhbWV0ZXJzOworCQkJICAgdGhleSB3aWxsIGJlIGZpbGxlZCBpbiBieSB0aGUgbGlu a2VyICovCisJCQlicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg ICAgICAgICAgICAgICAgIGVycm9yKCJ1bnN1cHBvcnRlZCBNSVBTIHJlbG9jYXRpb24gKCVkKSIs IHR5cGUpOworCQkgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CiAjZWxzZQogI2Vycm9yIHVuc3VwcG9ydGVkIENQVQogI2VuZGlmCmRpZmYg LU51cmIgcWVtdS0wLjkuMC9keW5nZW4tZXhlYy5oIHFlbXUtbG9vbmdzb24vZHluZ2VuLWV4ZWMu aAotLS0gcWVtdS0wLjkuMC9keW5nZW4tZXhlYy5oCTIwMDctMDItMDYgMDc6MDE6NTQuMDAwMDAw MDAwICswODAwCisrKyBxZW11LWxvb25nc29uL2R5bmdlbi1leGVjLmgJMjAwNy0wNi0wMiAwODox MTowOS4wMDAwMDAwMDAgKzA4MDAKQEAgLTIyNyw5ICsyMjcsMjEgQEAKICNlbHNlCiBleHRlcm4g aW50IF9fb3BfcGFyYW0xLCBfX29wX3BhcmFtMiwgX19vcF9wYXJhbTM7CiAjZW5kaWYKKyNpZiBk ZWZpbmVkKF9fbWlwc19fKQorLyogT24gTUlQUywgcGFyYW1ldGVycyB0byBhIGMgZXhwcmVzc2lv biBhcmUgcGFzc2VkIHZpYSB0aGUgZ2xvYmFsIHBvaW50ZXIuCisgKiBXZSBkb24ndCB3YW50IHRo YXQuICovCisjZGVmaW5lIFBBUkFNTihpbmRleCkgKHsgcmVnaXN0ZXIgaW50IF9yOyBcCisJCWFz bSgibHVpICUwLCUlaGkoX19vcF9wYXJhbSIgI2luZGV4ICIpXG5cdCIgXAorCQkJIm9yaSAlMCwl MCwlJWxvKF9fb3BfcGFyYW0iICNpbmRleCAiKSIgXAorCQkJOiAiPXIiKF9yKSk7IF9yOyB9KQor I2RlZmluZSBQQVJBTTEgUEFSQU1OKDEpCisjZGVmaW5lIFBBUkFNMiBQQVJBTU4oMikKKyNkZWZp bmUgUEFSQU0zIFBBUkFNTigzKQorI2Vsc2UKICNkZWZpbmUgUEFSQU0xICgobG9uZykoJl9fb3Bf cGFyYW0xKSkKICNkZWZpbmUgUEFSQU0yICgobG9uZykoJl9fb3BfcGFyYW0yKSkKICNkZWZpbmUg UEFSQU0zICgobG9uZykoJl9fb3BfcGFyYW0zKSkKKyNlbmRpZgogI2VuZGlmIC8qICFkZWZpbmVk KF9fYWxwaGFfXykgKi8KIAogZXh0ZXJuIGludCBfX29wX2ptcDAsIF9fb3Bfam1wMSwgX19vcF9q bXAyLCBfX29wX2ptcDM7CkBAIC0yNzUsNSArMjg3LDE0IEBACiAjaWZkZWYgX19tYzY4MDAwCiAj ZGVmaW5lIEVYSVRfVEIoKSBhc20gdm9sYXRpbGUgKCJydHMiKQogI2VuZGlmCisjaWZkZWYgX19t aXBzX18KKyNkZWZpbmUgRVhJVF9UQigpIGFzbSB2b2xhdGlsZSAoImoJJDMxXG5cdG5vcCIpCisv LyNkZWZpbmUgR09UT19MQUJFTF9QQVJBTShuKSBhc20gdm9sYXRpbGUgKCJqCSIgQVNNX05BTUUo X19vcF9nZW5fbGFiZWwpICNuKQorI2RlZmluZQlHT1RPX0xBQkVMX1BBUkFNKG4pCVwKKwlhc20g dm9sYXRpbGUgKCJsdWkJJDI1LCVoaShfX29wX2dlbl9sYWJlbCIgI24iKVxuXAorCW9yaQkkMjUs JDI1LCVsbyhfX29wX2dlbl9sYWJlbCIgI24iKVxuXAorCWoJJDI1XG5cCisJbm9wIikKKyNlbmRp ZgogCiAjZW5kaWYgLyogIWRlZmluZWQoX19EWU5HRU5fRVhFQ19IX18pICovCmRpZmYgLU51cmIg cWVtdS0wLjkuMC9keW5nZW4uaCBxZW11LWxvb25nc29uL2R5bmdlbi5oCi0tLSBxZW11LTAuOS4w L2R5bmdlbi5oCTIwMDctMDItMDYgMDc6MDE6NTQuMDAwMDAwMDAwICswODAwCisrKyBxZW11LWxv b25nc29uL2R5bmdlbi5oCTIwMDctMDYtMDEgMjM6MjM6MzQuMDAwMDAwMDAwICswODAwCkBAIC0x MjAsNiArMTIwLDE0IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIF9fbWlwc19fCisjaW5jbHVkZSA8 c3lzL2NhY2hlY3RsLmg+CitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfaWNhY2hlX3JhbmdlKHVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc3RvcCkKK3sKKyAgICBjYWNoZWZsdXNo KCh2b2lkKilzdGFydCxzdG9wLXN0YXJ0LEJDQUNIRSk7Cit9CisjZW5kaWYKKwogI2lmZGVmIF9f YWxwaGFfXwogCiByZWdpc3RlciBpbnQgZ3AgYXNtKCIkMjkiKTsKZGlmZiAtTnVyYiBxZW11LTAu OS4wL2V4ZWMtYWxsLmggcWVtdS1sb29uZ3Nvbi9leGVjLWFsbC5oCi0tLSBxZW11LTAuOS4wL2V4 ZWMtYWxsLmgJMjAwNy0wMi0wNiAwNzowMTo1NC4wMDAwMDAwMDAgKzA4MDAKKysrIHFlbXUtbG9v bmdzb24vZXhlYy1hbGwuaAkyMDA3LTA2LTAxIDIzOjIzOjM0LjAwMDAwMDAwMCArMDgwMApAQCAt NDgxLDYgKzQ4MSwyNSBAQAogfQogI2VuZGlmCiAKKyNpZmRlZiBfX21pcHNfXworc3RhdGljIGlu bGluZSBpbnQgdGVzdGFuZHNldCAoaW50ICpzcGlubG9jaykKK3sKKyAgICAgICAgaW50IHJldDsK KyAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5zZXQgbWlwczJcbiIKKyAgICAgICAgICAg ICAgICAibGwgJTAsJTFcbiIKKyAgICAgICAgICAgICAgICAiLnNldCBub3Jlb3JkZXJcbiIKKyAg ICAgICAgICAgICAgICAiYm5leiAlMCwxZlxuIgorICAgICAgICAgICAgICAgICJsaSAlMCwwXG4i IC8qIGJyYW5jaCBkZWxheSBzbG90ICovCisgICAgICAgICAgICAgICAgImxpICUwLDFcbiIKKyAg ICAgICAgICAgICAgICAic2MgJTAsJTFcbiIKKyAgICAgICAgICAgICAgICAiMTpcbiIKKyAgICAg ICAgICAgICAgICAiLnNldCByZW9yZGVyXG4iCisgICAgICAgICAgICAgICAgOiAiPXIiIChyZXQp LCAiPW0iICgqc3BpbmxvY2spKTsKKworICAgICAgICByZXR1cm4gIXJldDsKK30KKyNlbmRpZgor CiB0eXBlZGVmIGludCBzcGlubG9ja190OwogCiAjZGVmaW5lIFNQSU5fTE9DS19VTkxPQ0tFRCAw CmRpZmYgLU51cmIgcWVtdS0wLjkuMC9saW51eC11c2VyL21tYXAuYyBxZW11LWxvb25nc29uL2xp bnV4LXVzZXIvbW1hcC5jCi0tLSBxZW11LTAuOS4wL2xpbnV4LXVzZXIvbW1hcC5jCTIwMDctMDIt MDYgMDc6MDE6NTQuMDAwMDAwMDAwICswODAwCisrKyBxZW11LWxvb25nc29uL2xpbnV4LXVzZXIv bW1hcC5jCTIwMDctMDYtMDIgMDg6MjI6NDEuMDAwMDAwMDAwICswODAwCkBAIC0xNTcsNyArMTU3 LDcgQEAKICAgICB0YXJnZXRfdWxvbmcgcmV0LCBlbmQsIHJlYWxfc3RhcnQsIHJlYWxfZW5kLCBy ZXRhZGRyLCBob3N0X29mZnNldCwgaG9zdF9sZW47CiAgICAgbG9uZyBob3N0X3N0YXJ0OwogI2lm IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fc3BhcmNfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBcCi0gICAgZGVmaW5lZChfX2lhNjQpCisgICAgZGVmaW5lZChfX2lhNjQpIHx8 IGRlZmluZWQoX19taXBzX18pCiAgICAgc3RhdGljIHRhcmdldF91bG9uZyBsYXN0X3N0YXJ0ID0g MHg0MDAwMDAwMDsKICNlbGlmIGRlZmluZWQoX19DWUdXSU5fXykKICAgICAvKiBDeWd3aW4gZG9l c24ndCBoYXZlIGEgd2hvbGUgbG90IG9mIGFkZHJlc3Mgc3BhY2UuICAqLwpAQCAtMjAyLDcgKzIw Miw3IEBACiAKICAgICBpZiAoIShmbGFncyAmIE1BUF9GSVhFRCkpIHsKICNpZiBkZWZpbmVkKF9f YWxwaGFfXykgfHwgZGVmaW5lZChfX3NwYXJjX18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg XAotICAgIGRlZmluZWQoX19pYTY0KSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCisgICAgZGVmaW5l ZChfX2lhNjQpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX21pcHNfXykKICAg ICAgICAgLyogdGVsbCB0aGUga2VuZWwgdG8gc2VhcmNoIGF0IHRoZSBzYW1lIHBsYWNlIGFzIGkz ODYgKi8KICAgICAgICAgaWYgKHJlYWxfc3RhcnQgPT0gMCkgewogICAgICAgICAgICAgcmVhbF9z dGFydCA9IGxhc3Rfc3RhcnQ7CmRpZmYgLU51cmIgcWVtdS0wLjkuMC9saW51eC11c2VyL3N5c2Nh bGwuYyBxZW11LWxvb25nc29uL2xpbnV4LXVzZXIvc3lzY2FsbC5jCi0tLSBxZW11LTAuOS4wL2xp bnV4LXVzZXIvc3lzY2FsbC5jCTIwMDctMDItMDYgMDc6MDE6NTQuMDAwMDAwMDAwICswODAwCisr KyBxZW11LWxvb25nc29uL2xpbnV4LXVzZXIvc3lzY2FsbC5jCTIwMDctMDYtMDIgMDg6NDc6Mjku MDAwMDAwMDAwICswODAwCkBAIC01OCw3ICs1OCwxMyBAQAogI2RlZmluZSBsdGNoYXJzIGhvc3Rf bHRjaGFycyAvKiBzYW1lIGFzIHRhcmdldCAqLwogCiAjaW5jbHVkZSA8bGludXgvdGVybWlvcy5o PgorI2lmZGVmCV9fbWlwc19fCisjZGVmaW5lCV9fS0VSTkVMX18KICNpbmNsdWRlIDxsaW51eC91 bmlzdGQuaD4KKyN1bmRlZglfX0tFUk5FTF9fCisjZWxzZQorI2luY2x1ZGUgPGxpbnV4L3VuaXN0 ZC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8bGludXgvdXRzbmFtZS5oPgogI2luY2x1ZGUgPGxpbnV4 L2Nkcm9tLmg+CiAjaW5jbHVkZSA8bGludXgvaGRyZWcuaD4KQEAgLTY4LDYgKzc0LDEwIEBACiAK ICNpbmNsdWRlICJxZW11LmgiCiAKKy8vIHRlc3RpbmchISEgb25seSBmb3IgaG9zdC1taXBzIHRh cmdldC1pMzg2CisjaW5jbHVkZSAieDg2X3N5c19lcnJuby5jIgorI2luY2x1ZGUgIng4Nl9zeXNf c29ja2V0LmMiCisKIC8vI2RlZmluZSBERUJVRwogCiAjaWYgZGVmaW5lZChUQVJHRVRfSTM4Nikg fHwgZGVmaW5lZChUQVJHRVRfQVJNKSB8fCBkZWZpbmVkKFRBUkdFVF9TUEFSQykgXApAQCAtMTc2 LDcgKzE4Niw4IEBACiBzdGF0aWMgaW5saW5lIGxvbmcgZ2V0X2Vycm5vKGxvbmcgcmV0KQogewog ICAgIGlmIChyZXQgPT0gLTEpCi0gICAgICAgIHJldHVybiAtZXJybm87CisvLyAgICAgICAgcmV0 dXJuIC1lcnJubzsKKwkgICAgcmV0dXJuIC1nc194ODZfZXJybm8oZXJybm8pOwogICAgIGVsc2UK ICAgICAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTQ0NSw2ICs0NTYsOCBAQAogICAgICAgICB9CiAK ICAgICAgICAgY21zZy0+Y21zZ19sZXZlbCA9IHRzd2FwMzIodGFyZ2V0X2Ntc2ctPmNtc2dfbGV2 ZWwpOworCWlmKGNtc2ctPmNtc2dfbGV2ZWwgPT0gWDg2X1NPTF9TT0NLRVQpCisJCWNtc2ctPmNt c2dfbGV2ZWwgPSBTT0xfU09DS0VUOwogICAgICAgICBjbXNnLT5jbXNnX3R5cGUgPSB0c3dhcDMy KHRhcmdldF9jbXNnLT5jbXNnX3R5cGUpOwogICAgICAgICBjbXNnLT5jbXNnX2xlbiA9IENNU0df TEVOKGxlbik7CiAKQEAgLTQ4OSwxMCArNTAyLDEzIEBACiAgICAgICAgIH0KIAogICAgICAgICB0 YXJnZXRfY21zZy0+Y21zZ19sZXZlbCA9IHRzd2FwMzIoY21zZy0+Y21zZ19sZXZlbCk7CisJaWYo Y21zZy0+Y21zZ19sZXZlbCA9PSBTT0xfU09DS0VUKQorCQljbXNnLT5jbXNnX2xldmVsID0gWDg2 X1NPTF9TT0NLRVQ7CiAgICAgICAgIHRhcmdldF9jbXNnLT5jbXNnX3R5cGUgPSB0c3dhcDMyKGNt c2ctPmNtc2dfdHlwZSk7CiAgICAgICAgIHRhcmdldF9jbXNnLT5jbXNnX2xlbiA9IHRzd2FwbChU QVJHRVRfQ01TR19MRU4obGVuKSk7CiAKLSAgICAgICAgaWYgKGNtc2ctPmNtc2dfbGV2ZWwgIT0g VEFSR0VUX1NPTF9TT0NLRVQgfHwgY21zZy0+Y21zZ190eXBlICE9IFNDTV9SSUdIVFMpIHsKKwlp ZiAoY21zZy0+Y21zZ19sZXZlbCAhPSBYODZfU09MX1NPQ0tFVCB8fCBjbXNnLT5jbXNnX3R5cGUg IT0gU0NNX1JJR0hUUykgeworCiAgICAgICAgICAgICBnZW11X2xvZygiVW5zdXBwb3J0ZWQgYW5j aWxsYXJ5IGRhdGE6ICVkLyVkXG4iLCBjbXNnLT5jbXNnX2xldmVsLCBjbXNnLT5jbXNnX3R5cGUp OwogICAgICAgICAgICAgbWVtY3B5KHRhcmdldF9kYXRhLCBkYXRhLCBsZW4pOwogICAgICAgICB9 IGVsc2UgewpAQCAtNzUyLDYgKzc2OCw3IEBACiAKIHN0YXRpYyBsb25nIGRvX3NvY2tldChpbnQg ZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sKQogeworCXJldHVybiBnZXRfZXJybm8oeDg2 X3N5c19zb2NrZXQoZG9tYWluLCB0eXBlLCBwcm90b2NvbCkpOwogI2lmIGRlZmluZWQoVEFSR0VU X01JUFMpCiAgICAgc3dpdGNoKHR5cGUpIHsKICAgICBjYXNlIFRBUkdFVF9TT0NLX0RHUkFNOgpA QCAtMTA4Niw3ICsxMTAzLDggQEAKICAgICAgICAgICAgIHRhcmdldF91bG9uZyBvcHR2YWwgPSB0 Z2V0bCh2cHRyICsgMyAqIG4pOwogICAgICAgICAgICAgc29ja2xlbl90IG9wdGxlbiA9IHRnZXRs KHZwdHIgKyA0ICogbik7CiAKLSAgICAgICAgICAgIHJldCA9IGRvX3NldHNvY2tvcHQoc29ja2Zk LCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pOworLy8gICAgICAgICAgICByZXQgPSBk b19zZXRzb2Nrb3B0KHNvY2tmZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTsKKwkg ICAgcmV0ID0gZ2V0X2Vycm5vKHg4Nl9zeXNfc2V0c29ja29wdChzb2NrZmQsIGxldmVsLCBvcHRu YW1lLCAodm9pZCopb3B0dmFsLCBvcHRsZW4pKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK ICAgICBjYXNlIFNPQ0tPUF9nZXRzb2Nrb3B0OgpAQCAtMTA5Nyw3ICsxMTE1LDggQEAKICAgICAg ICAgICAgIHRhcmdldF91bG9uZyBvcHR2YWwgPSB0Z2V0bCh2cHRyICsgMyAqIG4pOwogICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIHBvcHRsZW4gPSB0Z2V0bCh2cHRyICsgNCAqIG4pOwogCi0gICAg ICAgICAgICByZXQgPSBkb19nZXRzb2Nrb3B0KHNvY2tmZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZh bCwgcG9wdGxlbik7CisvLyAgICAgICAgICAgIHJldCA9IGRvX2dldHNvY2tvcHQoc29ja2ZkLCBs ZXZlbCwgb3B0bmFtZSwgb3B0dmFsLCBwb3B0bGVuKTsKKwkgICAgcmV0ID0gZ2V0X2Vycm5vKHg4 Nl9zeXNfZ2V0c29ja29wdChzb2NrZmQsIGxldmVsLCBvcHRuYW1lLCAodm9pZCopb3B0dmFsLCAo dm9pZCopcG9wdGxlbikpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6 CkBAIC0zOTUxLDcgKzM5NzAsNyBAQAogI2lmIGRlZmluZWQoVEFSR0VUX05SX3NldHhhdHRyKSB8 fCBkZWZpbmVkKFRBUkdFVF9OUl9zZXRfdGhyZWFkX2FyZWEpIHx8IGRlZmluZWQoVEFSR0VUX05S X2dldGRvbWFpbm5hbWUpCiAgICAgdW5pbXBsZW1lbnRlZF9ub3dhcm46CiAjZW5kaWYKLSAgICAg ICAgcmV0ID0gLUVOT1NZUzsKKwlyZXQgPSAtZ3NfeDg2X2Vycm5vKEVOT1NZUyk7CiAgICAgICAg IGJyZWFrOwogICAgIH0KICBmYWlsOgpkaWZmIC1OdXJiIHFlbXUtMC45LjAvbGludXgtdXNlci94 ODZfc3lzX2Vycm5vLmMgcWVtdS1sb29uZ3Nvbi9saW51eC11c2VyL3g4Nl9zeXNfZXJybm8uYwot LS0gcWVtdS0wLjkuMC9saW51eC11c2VyL3g4Nl9zeXNfZXJybm8uYwkxOTcwLTAxLTAxIDA4OjAw OjAwLjAwMDAwMDAwMCArMDgwMAorKysgcWVtdS1sb29uZ3Nvbi9saW51eC11c2VyL3g4Nl9zeXNf ZXJybm8uYwkyMDA3LTA2LTAxIDIzOjI1OjE4LjAwMDAwMDAwMCArMDgwMApAQCAtMCwwICsxLDQx MSBAQAorLyoKKyAqIAl4ODZfc3lzX2Vycm5vLmMKKyAqCisgKiAJX2Vycm5vCisgKgorICogCWdz X3g4Nl9lcnJubworICoKKyAqIAkJeDg2cnVuL3N5c2NhbGwKKyAqIAkJUGVuZyBKdW4KKyAqLwor CisjaW5jbHVkZSA8ZXJybm8uaD4KKworCisjZGVmaW5lCVg4Nl9FUEVSTQkJIDEJLyogT3BlcmF0 aW9uIG5vdCBwZXJtaXR0ZWQgKi8KKyNkZWZpbmUJWDg2X0VOT0VOVAkJIDIJLyogTm8gc3VjaCBm aWxlIG9yIGRpcmVjdG9yeSAqLworI2RlZmluZQlYODZfRVNSQ0gJCSAzCS8qIE5vIHN1Y2ggcHJv Y2VzcyAqLworI2RlZmluZQlYODZfRUlOVFIJCSA0CS8qIEludGVycnVwdGVkIHN5c3RlbSBjYWxs ICovCisjZGVmaW5lCVg4Nl9FSU8JCSA1CS8qIEkvTyBlcnJvciAqLworI2RlZmluZQlYODZfRU5Y SU8JCSA2CS8qIE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MgKi8KKyNkZWZpbmUJWDg2X0UyQklH CQkgNwkvKiBBcmcgbGlzdCB0b28gbG9uZyAqLworI2RlZmluZQlYODZfRU5PRVhFQwkJIDgJLyog RXhlYyBmb3JtYXQgZXJyb3IgKi8KKyNkZWZpbmUJWDg2X0VCQURGCQkgOQkvKiBCYWQgZmlsZSBu dW1iZXIgKi8KKyNkZWZpbmUJWDg2X0VDSElMRAkJMTAJLyogTm8gY2hpbGQgcHJvY2Vzc2VzICov CisjZGVmaW5lCVg4Nl9FQUdBSU4JCTExCS8qIFRyeSBhZ2FpbiAqLworI2RlZmluZQlYODZfRU5P TUVNCQkxMgkvKiBPdXQgb2YgbWVtb3J5ICovCisjZGVmaW5lCVg4Nl9FQUNDRVMJCTEzCS8qIFBl cm1pc3Npb24gZGVuaWVkICovCisjZGVmaW5lCVg4Nl9FRkFVTFQJCTE0CS8qIEJhZCBhZGRyZXNz ICovCisjZGVmaW5lCVg4Nl9FTk9UQkxLCQkxNQkvKiBCbG9jayBkZXZpY2UgcmVxdWlyZWQgKi8K KyNkZWZpbmUJWDg2X0VCVVNZCQkxNgkvKiBEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeSAqLworI2Rl ZmluZQlYODZfRUVYSVNUCQkxNwkvKiBGaWxlIGV4aXN0cyAqLworI2RlZmluZQlYODZfRVhERVYJ CTE4CS8qIENyb3NzLWRldmljZSBsaW5rICovCisjZGVmaW5lCVg4Nl9FTk9ERVYJCTE5CS8qIE5v IHN1Y2ggZGV2aWNlICovCisjZGVmaW5lCVg4Nl9FTk9URElSCQkyMAkvKiBOb3QgYSBkaXJlY3Rv cnkgKi8KKyNkZWZpbmUJWDg2X0VJU0RJUgkJMjEJLyogSXMgYSBkaXJlY3RvcnkgKi8KKyNkZWZp bmUJWDg2X0VJTlZBTAkJMjIJLyogSW52YWxpZCBhcmd1bWVudCAqLworI2RlZmluZQlYODZfRU5G SUxFCQkyMwkvKiBGaWxlIHRhYmxlIG92ZXJmbG93ICovCisjZGVmaW5lCVg4Nl9FTUZJTEUJCTI0 CS8qIFRvbyBtYW55IG9wZW4gZmlsZXMgKi8KKyNkZWZpbmUJWDg2X0VOT1RUWQkJMjUJLyogTm90 IGEgdHlwZXdyaXRlciAqLworI2RlZmluZQlYODZfRVRYVEJTWQkJMjYJLyogVGV4dCBmaWxlIGJ1 c3kgKi8KKyNkZWZpbmUJWDg2X0VGQklHCQkyNwkvKiBGaWxlIHRvbyBsYXJnZSAqLworI2RlZmlu ZQlYODZfRU5PU1BDCQkyOAkvKiBObyBzcGFjZSBsZWZ0IG9uIGRldmljZSAqLworI2RlZmluZQlY ODZfRVNQSVBFCQkyOQkvKiBJbGxlZ2FsIHNlZWsgKi8KKyNkZWZpbmUJWDg2X0VST0ZTCQkzMAkv KiBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0gKi8KKyNkZWZpbmUJWDg2X0VNTElOSwkJMzEJLyogVG9v IG1hbnkgbGlua3MgKi8KKyNkZWZpbmUJWDg2X0VQSVBFCQkzMgkvKiBCcm9rZW4gcGlwZSAqLwor I2RlZmluZQlYODZfRURPTQkJMzMJLyogTWF0aCBhcmd1bWVudCBvdXQgb2YgZG9tYWluIG9mIGZ1 bmMgKi8KKyNkZWZpbmUJWDg2X0VSQU5HRQkJMzQJLyogTWF0aCByZXN1bHQgbm90IHJlcHJlc2Vu dGFibGUgKi8KKyNkZWZpbmUJWDg2X0VERUFETEsJCTM1CS8qIFJlc291cmNlIGRlYWRsb2NrIHdv dWxkIG9jY3VyICovCisjZGVmaW5lCVg4Nl9FTkFNRVRPT0xPTkcJMzYJLyogRmlsZSBuYW1lIHRv byBsb25nICovCisjZGVmaW5lCVg4Nl9FTk9MQ0sJCTM3CS8qIE5vIHJlY29yZCBsb2NrcyBhdmFp bGFibGUgKi8KKyNkZWZpbmUJWDg2X0VOT1NZUwkJMzgJLyogRnVuY3Rpb24gbm90IGltcGxlbWVu dGVkICovCisjZGVmaW5lCVg4Nl9FTk9URU1QVFkJMzkJLyogRGlyZWN0b3J5IG5vdCBlbXB0eSAq LworI2RlZmluZQlYODZfRUxPT1AJCTQwCS8qIFRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291 bnRlcmVkICovCisjZGVmaW5lCVg4Nl9FV09VTERCTE9DSwlYODZfRUFHQUlOCS8qIE9wZXJhdGlv biB3b3VsZCBibG9jayAqLworI2RlZmluZQlYODZfRU5PTVNHCQk0MgkvKiBObyBtZXNzYWdlIG9m IGRlc2lyZWQgdHlwZSAqLworI2RlZmluZQlYODZfRUlEUk0JCTQzCS8qIElkZW50aWZpZXIgcmVt b3ZlZCAqLworI2RlZmluZQlYODZfRUNIUk5HCQk0NAkvKiBDaGFubmVsIG51bWJlciBvdXQgb2Yg cmFuZ2UgKi8KKyNkZWZpbmUJWDg2X0VMMk5TWU5DCTQ1CS8qIExldmVsIDIgbm90IHN5bmNocm9u aXplZCAqLworI2RlZmluZQlYODZfRUwzSExUCQk0NgkvKiBMZXZlbCAzIGhhbHRlZCAqLworI2Rl ZmluZQlYODZfRUwzUlNUCQk0NwkvKiBMZXZlbCAzIHJlc2V0ICovCisjZGVmaW5lCVg4Nl9FTE5S TkcJCTQ4CS8qIExpbmsgbnVtYmVyIG91dCBvZiByYW5nZSAqLworI2RlZmluZQlYODZfRVVOQVRD SAkJNDkJLyogUHJvdG9jb2wgZHJpdmVyIG5vdCBhdHRhY2hlZCAqLworI2RlZmluZQlYODZfRU5P Q1NJCQk1MAkvKiBObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSAqLworI2RlZmluZQlYODZfRUwy SExUCQk1MQkvKiBMZXZlbCAyIGhhbHRlZCAqLworI2RlZmluZQlYODZfRUJBREUJCTUyCS8qIElu dmFsaWQgZXhjaGFuZ2UgKi8KKyNkZWZpbmUJWDg2X0VCQURSCQk1MwkvKiBJbnZhbGlkIHJlcXVl c3QgZGVzY3JpcHRvciAqLworI2RlZmluZQlYODZfRVhGVUxMCQk1NAkvKiBFeGNoYW5nZSBmdWxs ICovCisjZGVmaW5lCVg4Nl9FTk9BTk8JCTU1CS8qIE5vIGFub2RlICovCisjZGVmaW5lCVg4Nl9F QkFEUlFDCQk1NgkvKiBJbnZhbGlkIHJlcXVlc3QgY29kZSAqLworI2RlZmluZQlYODZfRUJBRFNM VAkJNTcJLyogSW52YWxpZCBzbG90ICovCisjZGVmaW5lCVg4Nl9FREVBRExPQ0sJWDg2X0VERUFE TEsKKyNkZWZpbmUJWDg2X0VCRk9OVAkJNTkJLyogQmFkIGZvbnQgZmlsZSBmb3JtYXQgKi8KKyNk ZWZpbmUJWDg2X0VOT1NUUgkJNjAJLyogRGV2aWNlIG5vdCBhIHN0cmVhbSAqLworI2RlZmluZQlY ODZfRU5PREFUQQkJNjEJLyogTm8gZGF0YSBhdmFpbGFibGUgKi8KKyNkZWZpbmUJWDg2X0VUSU1F CQk2MgkvKiBUaW1lciBleHBpcmVkICovCisjZGVmaW5lCVg4Nl9FTk9TUgkJNjMJLyogT3V0IG9m IHN0cmVhbXMgcmVzb3VyY2VzICovCisjZGVmaW5lCVg4Nl9FTk9ORVQJCTY0CS8qIE1hY2hpbmUg aXMgbm90IG9uIHRoZSBuZXR3b3JrICovCisjZGVmaW5lCVg4Nl9FTk9QS0cJCTY1CS8qIFBhY2th Z2Ugbm90IGluc3RhbGxlZCAqLworI2RlZmluZQlYODZfRVJFTU9URQkJNjYJLyogT2JqZWN0IGlz IHJlbW90ZSAqLworI2RlZmluZQlYODZfRU5PTElOSwkJNjcJLyogTGluayBoYXMgYmVlbiBzZXZl cmVkICovCisjZGVmaW5lCVg4Nl9FQURWCQk2OAkvKiBBZHZlcnRpc2UgZXJyb3IgKi8KKyNkZWZp bmUJWDg2X0VTUk1OVAkJNjkJLyogU3Jtb3VudCBlcnJvciAqLworI2RlZmluZQlYODZfRUNPTU0J CTcwCS8qIENvbW11bmljYXRpb24gZXJyb3Igb24gc2VuZCAqLworI2RlZmluZQlYODZfRVBST1RP CQk3MQkvKiBQcm90b2NvbCBlcnJvciAqLworI2RlZmluZQlYODZfRU1VTFRJSE9QCTcyCS8qIE11 bHRpaG9wIGF0dGVtcHRlZCAqLworI2RlZmluZQlYODZfRURPVERPVAkJNzMJLyogUkZTIHNwZWNp ZmljIGVycm9yICovCisjZGVmaW5lCVg4Nl9FQkFETVNHCQk3NAkvKiBOb3QgYSBkYXRhIG1lc3Nh Z2UgKi8KKyNkZWZpbmUJWDg2X0VPVkVSRkxPVwk3NQkvKiBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRl ZmluZWQgZGF0YSB0eXBlICovCisjZGVmaW5lCVg4Nl9FTk9UVU5JUQk3NgkvKiBOYW1lIG5vdCB1 bmlxdWUgb24gbmV0d29yayAqLworI2RlZmluZQlYODZfRUJBREZECQk3NwkvKiBGaWxlIGRlc2Ny aXB0b3IgaW4gYmFkIHN0YXRlICovCisjZGVmaW5lCVg4Nl9FUkVNQ0hHCQk3OAkvKiBSZW1vdGUg YWRkcmVzcyBjaGFuZ2VkICovCisjZGVmaW5lCVg4Nl9FTElCQUNDCQk3OQkvKiBDYW4gbm90IGFj Y2VzcyBhIG5lZWRlZCBzaGFyZWQgbGlicmFyeSAqLworI2RlZmluZQlYODZfRUxJQkJBRAkJODAJ LyogQWNjZXNzaW5nIGEgY29ycnVwdGVkIHNoYXJlZCBsaWJyYXJ5ICovCisjZGVmaW5lCVg4Nl9F TElCU0NOCQk4MQkvKiAubGliIHNlY3Rpb24gaW4gYS5vdXQgY29ycnVwdGVkICovCisjZGVmaW5l CVg4Nl9FTElCTUFYCQk4MgkvKiBBdHRlbXB0aW5nIHRvIGxpbmsgaW4gdG9vIG1hbnkgc2hhcmVk IGxpYnJhcmllcyAqLworI2RlZmluZQlYODZfRUxJQkVYRUMJODMJLyogQ2Fubm90IGV4ZWMgYSBz aGFyZWQgbGlicmFyeSBkaXJlY3RseSAqLworI2RlZmluZQlYODZfRUlMU0VRCQk4NAkvKiBJbGxl Z2FsIGJ5dGUgc2VxdWVuY2UgKi8KKyNkZWZpbmUJWDg2X0VSRVNUQVJUCTg1CS8qIEludGVycnVw dGVkIHN5c3RlbSBjYWxsIHNob3VsZCBiZSByZXN0YXJ0ZWQgKi8KKyNkZWZpbmUJWDg2X0VTVFJQ SVBFCTg2CS8qIFN0cmVhbXMgcGlwZSBlcnJvciAqLworI2RlZmluZQlYODZfRVVTRVJTCQk4Nwkv KiBUb28gbWFueSB1c2VycyAqLworI2RlZmluZQlYODZfRU5PVFNPQ0sJODgJLyogU29ja2V0IG9w ZXJhdGlvbiBvbiBub24tc29ja2V0ICovCisjZGVmaW5lCVg4Nl9FREVTVEFERFJSRVEJODkJLyog RGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZCAqLworI2RlZmluZQlYODZfRU1TR1NJWkUJOTAJ LyogTWVzc2FnZSB0b28gbG9uZyAqLworI2RlZmluZQlYODZfRVBST1RPVFlQRQk5MQkvKiBQcm90 b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQgKi8KKyNkZWZpbmUJWDg2X0VOT1BST1RPT1BUCTky CS8qIFByb3RvY29sIG5vdCBhdmFpbGFibGUgKi8KKyNkZWZpbmUJWDg2X0VQUk9UT05PU1VQUE9S VAk5MwkvKiBQcm90b2NvbCBub3Qgc3VwcG9ydGVkICovCisjZGVmaW5lCVg4Nl9FU09DS1ROT1NV UFBPUlQJOTQJLyogU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZCAqLworI2RlZmluZQlYODZfRU9Q Tk9UU1VQUAk5NQkvKiBPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiB0cmFuc3BvcnQgZW5kcG9p bnQgKi8KKyNkZWZpbmUJWDg2X0VQRk5PU1VQUE9SVAk5NgkvKiBQcm90b2NvbCBmYW1pbHkgbm90 IHN1cHBvcnRlZCAqLworI2RlZmluZQlYODZfRUFGTk9TVVBQT1JUCTk3CS8qIEFkZHJlc3MgZmFt aWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wgKi8KKyNkZWZpbmUJWDg2X0VBRERSSU5VU0UJ OTgJLyogQWRkcmVzcyBhbHJlYWR5IGluIHVzZSAqLworI2RlZmluZQlYODZfRUFERFJOT1RBVkFJ TAk5OQkvKiBDYW5ub3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzICovCisjZGVmaW5lCVg4Nl9F TkVURE9XTgkxMDAJLyogTmV0d29yayBpcyBkb3duICovCisjZGVmaW5lCVg4Nl9FTkVUVU5SRUFD SAkxMDEJLyogTmV0d29yayBpcyB1bnJlYWNoYWJsZSAqLworI2RlZmluZQlYODZfRU5FVFJFU0VU CTEwMgkvKiBOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlvbiBiZWNhdXNlIG9mIHJlc2V0ICovCisj ZGVmaW5lCVg4Nl9FQ09OTkFCT1JURUQJMTAzCS8qIFNvZnR3YXJlIGNhdXNlZCBjb25uZWN0aW9u IGFib3J0ICovCisjZGVmaW5lCVg4Nl9FQ09OTlJFU0VUCTEwNAkvKiBDb25uZWN0aW9uIHJlc2V0 IGJ5IHBlZXIgKi8KKyNkZWZpbmUJWDg2X0VOT0JVRlMJCTEwNQkvKiBObyBidWZmZXIgc3BhY2Ug YXZhaWxhYmxlICovCisjZGVmaW5lCVg4Nl9FSVNDT05OCQkxMDYJLyogVHJhbnNwb3J0IGVuZHBv aW50IGlzIGFscmVhZHkgY29ubmVjdGVkICovCisjZGVmaW5lCVg4Nl9FTk9UQ09OTgkxMDcJLyog VHJhbnNwb3J0IGVuZHBvaW50IGlzIG5vdCBjb25uZWN0ZWQgKi8KKyNkZWZpbmUJWDg2X0VTSFVU RE9XTgkxMDgJLyogQ2Fubm90IHNlbmQgYWZ0ZXIgdHJhbnNwb3J0IGVuZHBvaW50IHNodXRkb3du ICovCisjZGVmaW5lCVg4Nl9FVE9PTUFOWVJFRlMJMTA5CS8qIFRvbyBtYW55IHJlZmVyZW5jZXM6 IGNhbm5vdCBzcGxpY2UgKi8KKyNkZWZpbmUJWDg2X0VUSU1FRE9VVAkxMTAJLyogQ29ubmVjdGlv biB0aW1lZCBvdXQgKi8KKyNkZWZpbmUJWDg2X0VDT05OUkVGVVNFRAkxMTEJLyogQ29ubmVjdGlv biByZWZ1c2VkICovCisjZGVmaW5lCVg4Nl9FSE9TVERPV04JMTEyCS8qIEhvc3QgaXMgZG93biAq LworI2RlZmluZQlYODZfRUhPU1RVTlJFQUNICTExMwkvKiBObyByb3V0ZSB0byBob3N0ICovCisj ZGVmaW5lCVg4Nl9FQUxSRUFEWQkxMTQJLyogT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3Mg Ki8KKyNkZWZpbmUJWDg2X0VJTlBST0dSRVNTCTExNQkvKiBPcGVyYXRpb24gbm93IGluIHByb2dy ZXNzICovCisjZGVmaW5lCVg4Nl9FU1RBTEUJCTExNgkvKiBTdGFsZSBORlMgZmlsZSBoYW5kbGUg Ki8KKyNkZWZpbmUJWDg2X0VVQ0xFQU4JCTExNwkvKiBTdHJ1Y3R1cmUgbmVlZHMgY2xlYW5pbmcg Ki8KKyNkZWZpbmUJWDg2X0VOT1ROQU0JCTExOAkvKiBOb3QgYSBYRU5JWCBuYW1lZCB0eXBlIGZp bGUgKi8KKyNkZWZpbmUJWDg2X0VOQVZBSUwJCTExOQkvKiBObyBYRU5JWCBzZW1hcGhvcmVzIGF2 YWlsYWJsZSAqLworI2RlZmluZQlYODZfRUlTTkFNCQkxMjAJLyogSXMgYSBuYW1lZCB0eXBlIGZp bGUgKi8KKyNkZWZpbmUJWDg2X0VSRU1PVEVJTwkxMjEJLyogUmVtb3RlIEkvTyBlcnJvciAqLwor I2RlZmluZQlYODZfRURRVU9UCQkxMjIJLyogUXVvdGEgZXhjZWVkZWQgKi8KKyNkZWZpbmUJWDg2 X0VOT01FRElVTQkxMjMJLyogTm8gbWVkaXVtIGZvdW5kICovCisjZGVmaW5lCVg4Nl9FTUVESVVN VFlQRQkxMjQJLyogV3JvbmcgbWVkaXVtIHR5cGUgKi8KKyNkZWZpbmUJWDg2X0VDQU5DRUxFRAkx MjUKKworCitpbnQgZ3NfeDg2X2Vycm5vKGludCBnc19lcnJubyk7CisKKworLyoKKyAqIHB1Ymxp YworICovCisKKworLyoKKyAqIHByaXZhdGUKKyAqLworaW50IGdzX3g4Nl9lcnJubyhpbnQgZ3Nf ZXJybm8pCit7CisJaWYoZ3NfZXJybm8gPCAzNSkKKwkJcmV0dXJuIGdzX2Vycm5vOworCisJc3dp dGNoKGdzX2Vycm5vKSB7CisJLyoJY2FzZSBFUEVSTToKKwkJCXJldHVybiBYODZfRVBFUk07CisJ CWNhc2UgRU5PRU5UOgorCQkJcmV0dXJuIFg4Nl9FTk9FTlQ7CisJCWNhc2UgRVNSQ0g6CisJCQly ZXR1cm4gWDg2X0VTUkNIOworCQljYXNlIEVJTlRSOgorCQkJcmV0dXJuIFg4Nl9FSU5UUjsKKwkJ Y2FzZSBFSU86CisJCQlyZXR1cm4gWDg2X0VJTzsKKwkJY2FzZSBFTlhJTzoKKwkJCXJldHVybiBY ODZfRU5YSU87CisJCWNhc2UgRTJCSUc6CisJCQlyZXR1cm4gWDg2X0UyQklHOworCQljYXNlIEVO T0VYRUM6CisJCQlyZXR1cm4gWDg2X0VOT0VYRUM7CisJCWNhc2UgRUJBREY6CisJCQlyZXR1cm4g WDg2X0VCQURGOworCQljYXNlIEVDSElMRDoKKwkJCXJldHVybiBYODZfRUNISUxEOworCQljYXNl IEVBR0FJTjoKKwkJCXJldHVybiBYODZfRUFHQUlOOworCQljYXNlIEVOT01FTToKKwkJCXJldHVy biBYODZfRU5PTUVNOworCQljYXNlIEVBQ0NFUzoKKwkJCXJldHVybiBYODZfRUFDQ0VTOworCQlj YXNlIEVGQVVMVDoKKwkJCXJldHVybiBYODZfRUZBVUxUOworCQljYXNlIEVOT1RCTEs6CisJCQly ZXR1cm4gWDg2X0VOT1RCTEs7CisJCWNhc2UgRUJVU1k6CisJCQlyZXR1cm4gWDg2X0VCVVNZOwor CQljYXNlIEVFWElTVDoKKwkJCXJldHVybiBYODZfRUVYSVNUOworCQljYXNlIEVYREVWOgorCQkJ cmV0dXJuIFg4Nl9FWERFVjsKKwkJY2FzZSBFTk9ERVY6CisJCQlyZXR1cm4gWDg2X0VOT0RFVjsK KwkJY2FzZSBFTk9URElSOgorCQkJcmV0dXJuIFg4Nl9FTk9URElSOworCQljYXNlIEVJU0RJUjoK KwkJCXJldHVybiBYODZfRUlTRElSOworCQljYXNlIEVJTlZBTDoKKwkJCXJldHVybiBYODZfRUlO VkFMOworCQljYXNlIEVORklMRToKKwkJCXJldHVybiBYODZfRU5GSUxFOworCQljYXNlIEVNRklM RToKKwkJCXJldHVybiBYODZfRU1GSUxFOworCQljYXNlIEVOT1RUWToKKwkJCXJldHVybiBYODZf RU5PVFRZOworCQljYXNlIEVUWFRCU1k6CisJCQlyZXR1cm4gWDg2X0VUWFRCU1k7CisJCWNhc2Ug RUZCSUc6CisJCQlyZXR1cm4gWDg2X0VGQklHOworCQljYXNlIEVOT1NQQzoKKwkJCXJldHVybiBY ODZfRU5PU1BDOworCQljYXNlIEVTUElQRToKKwkJCXJldHVybiBYODZfRVNQSVBFOworCQljYXNl IEVST0ZTOgorCQkJcmV0dXJuIFg4Nl9FUk9GUzsKKwkJY2FzZSBFTUxJTks6CisJCQlyZXR1cm4g WDg2X0VNTElOSzsKKwkJY2FzZSBFUElQRToKKwkJCXJldHVybiBYODZfRVBJUEU7CisJCWNhc2Ug RURPTToKKwkJCXJldHVybiBYODZfRURPTTsKKwkJY2FzZSBFUkFOR0U6CisJCQlyZXR1cm4gWDg2 X0VSQU5HRTsgKi8KKwkJY2FzZSBFREVBRExLOgorCQkJcmV0dXJuIFg4Nl9FREVBRExLOworCQlj YXNlIEVOQU1FVE9PTE9ORzoKKwkJCXJldHVybiBYODZfRU5BTUVUT09MT05HOworCQljYXNlIEVO T0xDSzoKKwkJCXJldHVybiBYODZfRU5PTENLOworCQljYXNlIEVOT1NZUzoKKwkJCXJldHVybiBY ODZfRU5PU1lTOworCQljYXNlIEVOT1RFTVBUWToKKwkJCXJldHVybiBYODZfRU5PVEVNUFRZOwor CQljYXNlIEVMT09QOgorCQkJcmV0dXJuIFg4Nl9FTE9PUDsKKwkJY2FzZSBFV09VTERCTE9DSzoK KwkJCXJldHVybiBYODZfRVdPVUxEQkxPQ0s7CisJCWNhc2UgRU5PTVNHOgorCQkJcmV0dXJuIFg4 Nl9FTk9NU0c7CisJCWNhc2UgRUlEUk06CisJCQlyZXR1cm4gWDg2X0VJRFJNOworCQljYXNlIEVD SFJORzoKKwkJCXJldHVybiBYODZfRUNIUk5HOworCQljYXNlIEVMMk5TWU5DOgorCQkJcmV0dXJu IFg4Nl9FTDJOU1lOQzsKKwkJY2FzZSBFTDNITFQ6CisJCQlyZXR1cm4gWDg2X0VMM0hMVDsKKwkJ Y2FzZSBFTDNSU1Q6CisJCQlyZXR1cm4gWDg2X0VMM1JTVDsKKwkJY2FzZSBFTE5STkc6CisJCQly ZXR1cm4gWDg2X0VMTlJORzsKKwkJY2FzZSBFVU5BVENIOgorCQkJcmV0dXJuIFg4Nl9FVU5BVENI OworCQljYXNlIEVOT0NTSToKKwkJCXJldHVybiBYODZfRU5PQ1NJOworCQljYXNlIEVMMkhMVDoK KwkJCXJldHVybiBYODZfRUwySExUOworCQljYXNlIEVCQURFOgorCQkJcmV0dXJuIFg4Nl9FQkFE RTsKKwkJY2FzZSBFQkFEUjoKKwkJCXJldHVybiBYODZfRUJBRFI7CisJCWNhc2UgRVhGVUxMOgor CQkJcmV0dXJuIFg4Nl9FWEZVTEw7CisJCWNhc2UgRU5PQU5POgorCQkJcmV0dXJuIFg4Nl9FTk9B Tk87CisJCWNhc2UgRUJBRFJRQzoKKwkJCXJldHVybiBYODZfRUJBRFJRQzsKKwkJY2FzZSBFQkFE U0xUOgorCQkJcmV0dXJuIFg4Nl9FQkFEU0xUOworCQljYXNlIEVERUFETE9DSzoKKwkJCXJldHVy biBYODZfRURFQURMT0NLOworCQljYXNlIEVCRk9OVDoKKwkJCXJldHVybiBYODZfRUJGT05UOwor CQljYXNlIEVOT1NUUjoKKwkJCXJldHVybiBYODZfRU5PU1RSOworCQljYXNlIEVOT0RBVEE6CisJ CQlyZXR1cm4gWDg2X0VOT0RBVEE7CisJCWNhc2UgRVRJTUU6CisJCQlyZXR1cm4gWDg2X0VUSU1F OworCQljYXNlIEVOT1NSOgorCQkJcmV0dXJuIFg4Nl9FTk9TUjsKKwkJY2FzZSBFTk9ORVQ6CisJ CQlyZXR1cm4gWDg2X0VOT05FVDsKKwkJY2FzZSBFTk9QS0c6CisJCQlyZXR1cm4gWDg2X0VOT1BL RzsKKwkJY2FzZSBFUkVNT1RFOgorCQkJcmV0dXJuIFg4Nl9FUkVNT1RFOworCQljYXNlIEVOT0xJ Tks6CisJCQlyZXR1cm4gWDg2X0VOT0xJTks7CisJCWNhc2UgRUFEVjoKKwkJCXJldHVybiBYODZf RUFEVjsKKwkJY2FzZSBFU1JNTlQ6CisJCQlyZXR1cm4gWDg2X0VTUk1OVDsKKwkJY2FzZSBFQ09N TToKKwkJCXJldHVybiBYODZfRUNPTU07CisJCWNhc2UgRVBST1RPOgorCQkJcmV0dXJuIFg4Nl9F UFJPVE87CisJCWNhc2UgRU1VTFRJSE9QOgorCQkJcmV0dXJuIFg4Nl9FTVVMVElIT1A7CisJCWNh c2UgRURPVERPVDoKKwkJCXJldHVybiBYODZfRURPVERPVDsKKwkJY2FzZSBFQkFETVNHOgorCQkJ cmV0dXJuIFg4Nl9FQkFETVNHOworCQljYXNlIEVPVkVSRkxPVzoKKwkJCXJldHVybiBYODZfRU9W RVJGTE9XOworCQljYXNlIEVOT1RVTklROgorCQkJcmV0dXJuIFg4Nl9FTk9UVU5JUTsKKwkJY2Fz ZSBFQkFERkQ6CisJCQlyZXR1cm4gWDg2X0VCQURGRDsKKwkJY2FzZSBFUkVNQ0hHOgorCQkJcmV0 dXJuIFg4Nl9FUkVNQ0hHOworCQljYXNlIEVMSUJBQ0M6CisJCQlyZXR1cm4gWDg2X0VMSUJBQ0M7 CisJCWNhc2UgRUxJQkJBRDoKKwkJCXJldHVybiBYODZfRUxJQkJBRDsKKwkJY2FzZSBFTElCU0NO OgorCQkJcmV0dXJuIFg4Nl9FTElCU0NOOworCQljYXNlIEVMSUJNQVg6CisJCQlyZXR1cm4gWDg2 X0VMSUJNQVg7CisJCWNhc2UgRUxJQkVYRUM6CisJCQlyZXR1cm4gWDg2X0VMSUJFWEVDOworCQlj YXNlIEVJTFNFUToKKwkJCXJldHVybiBYODZfRUlMU0VROworCQljYXNlIEVSRVNUQVJUOgorCQkJ cmV0dXJuIFg4Nl9FUkVTVEFSVDsKKwkJY2FzZSBFU1RSUElQRToKKwkJCXJldHVybiBYODZfRVNU UlBJUEU7CisJCWNhc2UgRVVTRVJTOgorCQkJcmV0dXJuIFg4Nl9FVVNFUlM7CisJCWNhc2UgRU5P VFNPQ0s6CisJCQlyZXR1cm4gWDg2X0VOT1RTT0NLOworCQljYXNlIEVERVNUQUREUlJFUToKKwkJ CXJldHVybiBYODZfRURFU1RBRERSUkVROworCQljYXNlIEVNU0dTSVpFOgorCQkJcmV0dXJuIFg4 Nl9FTVNHU0laRTsKKwkJY2FzZSBFUFJPVE9UWVBFOgorCQkJcmV0dXJuIFg4Nl9FUFJPVE9UWVBF OworCQljYXNlIEVOT1BST1RPT1BUOgorCQkJcmV0dXJuIFg4Nl9FTk9QUk9UT09QVDsKKwkJY2Fz ZSBFUFJPVE9OT1NVUFBPUlQ6CisJCQlyZXR1cm4gWDg2X0VQUk9UT05PU1VQUE9SVDsKKwkJY2Fz ZSBFU09DS1ROT1NVUFBPUlQ6CisJCQlyZXR1cm4gWDg2X0VTT0NLVE5PU1VQUE9SVDsKKwkJY2Fz ZSBFT1BOT1RTVVBQOgorCQkJcmV0dXJuIFg4Nl9FT1BOT1RTVVBQOworCQljYXNlIEVQRk5PU1VQ UE9SVDoKKwkJCXJldHVybiBYODZfRVBGTk9TVVBQT1JUOworCQljYXNlIEVBRk5PU1VQUE9SVDoK KwkJCXJldHVybiBYODZfRUFGTk9TVVBQT1JUOworCQljYXNlIEVBRERSSU5VU0U6CisJCQlyZXR1 cm4gWDg2X0VBRERSSU5VU0U7CisJCWNhc2UgRUFERFJOT1RBVkFJTDoKKwkJCXJldHVybiBYODZf RUFERFJOT1RBVkFJTDsKKwkJY2FzZSBFTkVURE9XTjoKKwkJCXJldHVybiBYODZfRU5FVERPV047 CisJCWNhc2UgRU5FVFVOUkVBQ0g6CisJCQlyZXR1cm4gWDg2X0VORVRVTlJFQUNIOworCQljYXNl IEVORVRSRVNFVDoKKwkJCXJldHVybiBYODZfRU5FVFJFU0VUOworCQljYXNlIEVDT05OQUJPUlRF RDoKKwkJCXJldHVybiBYODZfRUNPTk5BQk9SVEVEOworCQljYXNlIEVDT05OUkVTRVQ6CisJCQly ZXR1cm4gWDg2X0VDT05OUkVTRVQ7CisJCWNhc2UgRU5PQlVGUzoKKwkJCXJldHVybiBYODZfRU5P QlVGUzsKKwkJY2FzZSBFSVNDT05OOgorCQkJcmV0dXJuIFg4Nl9FSVNDT05OOworCQljYXNlIEVO T1RDT05OOgorCQkJcmV0dXJuIFg4Nl9FTk9UQ09OTjsKKwkJY2FzZSBFU0hVVERPV046CisJCQly ZXR1cm4gWDg2X0VTSFVURE9XTjsKKwkJY2FzZSBFVE9PTUFOWVJFRlM6CisJCQlyZXR1cm4gWDg2 X0VUT09NQU5ZUkVGUzsKKwkJY2FzZSBFVElNRURPVVQ6CisJCQlyZXR1cm4gWDg2X0VUSU1FRE9V VDsKKwkJY2FzZSBFQ09OTlJFRlVTRUQ6CisJCQlyZXR1cm4gWDg2X0VDT05OUkVGVVNFRDsKKwkJ Y2FzZSBFSE9TVERPV046CisJCQlyZXR1cm4gWDg2X0VIT1NURE9XTjsKKwkJY2FzZSBFSE9TVFVO UkVBQ0g6CisJCQlyZXR1cm4gWDg2X0VIT1NUVU5SRUFDSDsKKwkJY2FzZSBFQUxSRUFEWToKKwkJ CXJldHVybiBYODZfRUFMUkVBRFk7CisJCWNhc2UgRUlOUFJPR1JFU1M6CisJCQlyZXR1cm4gWDg2 X0VJTlBST0dSRVNTOworCQljYXNlIEVTVEFMRToKKwkJCXJldHVybiBYODZfRVNUQUxFOworCQlj YXNlIEVVQ0xFQU46CisJCQlyZXR1cm4gWDg2X0VVQ0xFQU47CisJCWNhc2UgRU5PVE5BTToKKwkJ CXJldHVybiBYODZfRU5PVE5BTTsKKwkJY2FzZSBFTkFWQUlMOgorCQkJcmV0dXJuIFg4Nl9FTkFW QUlMOworCQljYXNlIEVJU05BTToKKwkJCXJldHVybiBYODZfRUlTTkFNOworCQljYXNlIEVSRU1P VEVJTzoKKwkJCXJldHVybiBYODZfRVJFTU9URUlPOworCQljYXNlIEVEUVVPVDoKKwkJCXJldHVy biBYODZfRURRVU9UOworCQljYXNlIEVOT01FRElVTToKKwkJCXJldHVybiBYODZfRU5PTUVESVVN OworCQljYXNlIEVNRURJVU1UWVBFOgorCQkJcmV0dXJuIFg4Nl9FTUVESVVNVFlQRTsKKwkJY2Fz ZSBFQ0FOQ0VMRUQ6CisJCQlyZXR1cm4gWDg2X0VDQU5DRUxFRDsKKwl9CisJcmV0dXJuIEVOT1NZ UzsKK30KZGlmZiAtTnVyYiBxZW11LTAuOS4wL2xpbnV4LXVzZXIveDg2X3N5c19zb2NrZXQuYyBx ZW11LWxvb25nc29uL2xpbnV4LXVzZXIveDg2X3N5c19zb2NrZXQuYwotLS0gcWVtdS0wLjkuMC9s aW51eC11c2VyL3g4Nl9zeXNfc29ja2V0LmMJMTk3MC0wMS0wMSAwODowMDowMC4wMDAwMDAwMDAg KzA4MDAKKysrIHFlbXUtbG9vbmdzb24vbGludXgtdXNlci94ODZfc3lzX3NvY2tldC5jCTIwMDct MDYtMDEgMjM6MjU6MTguMDAwMDAwMDAwICswODAwCkBAIC0wLDAgKzEsMTg5IEBACisvKgorICog CXg4Nl9zeXNfc29ja2V0LmMKKyAqCisgKiAJX3NvY2tldCBfY29ubmVjdCBfYmluZCBfbGlzdGVu IF9hY2NlcHQKKyAqIAlfc2VuZCBfc2VuZHRvIF9yZWN2IF9yZWN2ZnJvbQorICogCV9nZXRzb2Nr b3B0IF9zZXRzb2Nrb3B0CisgKgorICogCXg4Nl9nc19zb2Nrb3B0CisgKgorICogCQl4ODZydW4v c3lzY2FsbAorICogCQlQZW5nIEp1bgorICovCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNp bmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisjZGVmaW5lCVg4 Nl9TT0NLX1NUUkVBTQkxCisjZGVmaW5lCVg4Nl9TT0NLX0RHUkFNCTIKKworI2RlZmluZQlYODZf U09MX1NPQ0tFVAkxCisKKyNkZWZpbmUgWDg2X1NPX0RFQlVHCTEKKyNkZWZpbmUgWDg2X1NPX1JF VVNFQUREUgkyCisjZGVmaW5lIFg4Nl9TT19UWVBFCQkzCisjZGVmaW5lIFg4Nl9TT19FUlJPUgk0 CisjZGVmaW5lIFg4Nl9TT19ET05UUk9VVEUJNQorI2RlZmluZSBYODZfU09fQlJPQURDQVNUCTYK KyNkZWZpbmUgWDg2X1NPX1NOREJVRgk3CisjZGVmaW5lIFg4Nl9TT19SQ1ZCVUYJOAorI2RlZmlu ZSBYODZfU09fS0VFUEFMSVZFCTkKKyNkZWZpbmUgWDg2X1NPX09PQklOTElORQkxMAorI2RlZmlu ZSBYODZfU09fTk9fQ0hFQ0sJMTEKKyNkZWZpbmUgWDg2X1NPX1BSSU9SSVRZCTEyCisjZGVmaW5l IFg4Nl9TT19MSU5HRVIJMTMKKyNkZWZpbmUgWDg2X1NPX0JTRENPTVBBVAkxNAorI2RlZmluZSBY ODZfU09fUEFTU0NSRUQJMTYKKyNkZWZpbmUgWDg2X1NPX1BFRVJDUkVECTE3CisjZGVmaW5lIFg4 Nl9TT19SQ1ZMT1dBVAkxOAorI2RlZmluZSBYODZfU09fU05ETE9XQVQJMTkKKyNkZWZpbmUgWDg2 X1NPX1JDVlRJTUVPCTIwCisjZGVmaW5lIFg4Nl9TT19TTkRUSU1FTwkyMQorI2RlZmluZSBYODZf U09fU0VDVVJJVFlfQVVUSEVOVElDQVRJT04JCTIyCisjZGVmaW5lIFg4Nl9TT19TRUNVUklUWV9F TkNSWVBUSU9OX1RSQU5TUE9SVAkyMworI2RlZmluZSBYODZfU09fU0VDVVJJVFlfRU5DUllQVElP Tl9ORVRXT1JLCQkyNAorI2RlZmluZSBYODZfU09fQklORFRPREVWSUNFCTI1CisjZGVmaW5lIFg4 Nl9TT19BVFRBQ0hfRklMVEVSICAgICAgICAyNgorI2RlZmluZSBYODZfU09fREVUQUNIX0ZJTFRF UiAgICAgICAgMjcKKyNkZWZpbmUgWDg2X1NPX1BFRVJOQU1FCQkyOAorI2RlZmluZSBYODZfU09f VElNRVNUQU1QCQkyOQorI2RlZmluZSBYODZfU09fQUNDRVBUQ09OTgkJMzAKKworCitpbnQgeDg2 X2dzX3NvY2tvcHQoaW50IHg4Nl9zbyk7CisKKworLyoKKyAqIHB1YmxpYworICovCitpbnQgeDg2 X3N5c19zb2NrZXQoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NhbCkKK3sKKwlpbnQg cmU7CisJc3dpdGNoKHR5cGUpIHsKKwkJY2FzZSBYODZfU09DS19TVFJFQU06CisJCQl0eXBlID0g U09DS19TVFJFQU07CisJCQlicmVhazsKKwkJY2FzZSBYODZfU09DS19ER1JBTToKKwkJCXR5cGUg PSBTT0NLX0RHUkFNOworCQkJYnJlYWs7CisJfQorCXJlID0gc29ja2V0KGRvbWFpbiwgdHlwZSwg cHJvdG9jYWwpOworCisJcmV0dXJuIHJlOworfQorCitpbnQgeDg2X3N5c19nZXRzb2Nrb3B0KGlu dCBzLCBpbnQgbGV2ZWwsIGludCBvcG5hbWUsIHZvaWQgKm9wdHZhbCwgaW50ICpvcHRsZW4pCit7 CisJaW50IHJlOworCXN3aXRjaChsZXZlbCkgeworCQljYXNlIFg4Nl9TT0xfU09DS0VUOgorCQkJ b3BuYW1lID0geDg2X2dzX3NvY2tvcHQob3BuYW1lKTsKKwkJCWlmKG9wbmFtZSA9PSAtMSkgewor CQkJCWZwcmludGYoc3RkZXJyLAorCQkJCQkiVW5pbXBsZW1lbnRlZCBzb2NrZXQgb3B0aW9uICVk XG4iLAorCQkJCQkJb3BuYW1lKTsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCQlyZSA9IGdldHNv Y2tvcHQocywgU09MX1NPQ0tFVCwgb3BuYW1lLCBvcHR2YWwsIG9wdGxlbik7CisJCQlicmVhazsK KwkJZGVmYXVsdDoKKwkJCWZwcmludGYoc3RkZXJyLCAiVW5pbXBsZW1lbnRlZCBzb2NrZXQgbGV2 ZWwgJWRcbiIsCisJCQkJCWxldmVsKTsKKwkJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gcmU7 Cit9CisKK2ludCB4ODZfc3lzX3NldHNvY2tvcHQoaW50IHMsIGludCBsZXZlbCwgaW50IG9wbmFt ZSwgdm9pZCAqb3B0dmFsLCBpbnQgb3B0bGVuKQoreworCWludCByZTsKKwlzd2l0Y2gobGV2ZWwp IHsKKwkJY2FzZSBYODZfU09MX1NPQ0tFVDoKKwkJCW9wbmFtZSA9IHg4Nl9nc19zb2Nrb3B0KG9w bmFtZSk7CisJCQlpZihvcG5hbWUgPT0gLTEpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJ IlVuaW1wbGVtZW50ZWQgc29ja2V0IG9wdGlvbiAlZFxuIiwKKwkJCQkJCW9wbmFtZSk7CisJCQkJ cmV0dXJuIC0xOworCQkJfQorCQkJcmUgPSBzZXRzb2Nrb3B0KHMsIFNPTF9TT0NLRVQsIG9wbmFt ZSwgb3B0dmFsLCBvcHRsZW4pOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmcHJpbnRmKHN0 ZGVyciwgIlVuaW1wbGVtZW50ZWQgc29ja2V0IGxldmVsICVkXG4iLAorCQkJCQlsZXZlbCk7CisJ CQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIHJlOworfQorCisvKgorICogcHJpdmF0ZQorICov CitpbnQgeDg2X2dzX3NvY2tvcHQoaW50IHg4Nl9zbykKK3sKKwlzd2l0Y2goeDg2X3NvKSB7CisJ CWNhc2UgWDg2X1NPX0RFQlVHOgorCQkJcmV0dXJuIFNPX0RFQlVHOworCQljYXNlIFg4Nl9TT19S RVVTRUFERFI6CisJCQlyZXR1cm4gU09fUkVVU0VBRERSOworCQljYXNlIFg4Nl9TT19UWVBFOgor CQkJcmV0dXJuIFNPX1RZUEU7CisJCWNhc2UgWDg2X1NPX0VSUk9SOgorCQkJcmV0dXJuIFNPX0VS Uk9SOworCQljYXNlIFg4Nl9TT19ET05UUk9VVEU6CisJCQlyZXR1cm4gU09fRE9OVFJPVVRFOwor CQljYXNlIFg4Nl9TT19CUk9BRENBU1Q6CisJCQlyZXR1cm4gU09fQlJPQURDQVNUOworCQljYXNl IFg4Nl9TT19TTkRCVUY6CisJCQlyZXR1cm4gU09fU05EQlVGOworCQljYXNlIFg4Nl9TT19SQ1ZC VUY6CisJCQlyZXR1cm4gU09fUkNWQlVGOworCQljYXNlIFg4Nl9TT19LRUVQQUxJVkU6CisJCQly ZXR1cm4gU09fS0VFUEFMSVZFOworCQljYXNlIFg4Nl9TT19PT0JJTkxJTkU6CisJCQlyZXR1cm4g U09fT09CSU5MSU5FOworCQljYXNlIFg4Nl9TT19OT19DSEVDSzoKKwkJCXJldHVybiBTT19OT19D SEVDSzsKKwkJY2FzZSBYODZfU09fUFJJT1JJVFk6CisJCQlyZXR1cm4gU09fUFJJT1JJVFk7CisJ CWNhc2UgWDg2X1NPX0xJTkdFUjoKKwkJCXJldHVybiBTT19MSU5HRVI7CisJCWNhc2UgWDg2X1NP X0JTRENPTVBBVDoKKwkJCXJldHVybiBTT19CU0RDT01QQVQ7CisJCWNhc2UgWDg2X1NPX1BBU1ND UkVEOgorCQkJcmV0dXJuIFNPX1BBU1NDUkVEOworCQljYXNlIFg4Nl9TT19QRUVSQ1JFRDoKKwkJ CXJldHVybiBTT19QRUVSQ1JFRDsKKwkJY2FzZSBYODZfU09fUkNWTE9XQVQ6CisJCQlyZXR1cm4g U09fUkNWTE9XQVQ7CisJCWNhc2UgWDg2X1NPX1NORExPV0FUOgorCQkJcmV0dXJuIFNPX1NORExP V0FUOworCQljYXNlIFg4Nl9TT19SQ1ZUSU1FTzoKKwkJCXJldHVybiBTT19SQ1ZUSU1FTzsKKwkJ Y2FzZSBYODZfU09fU05EVElNRU86CisJCQlyZXR1cm4gU09fU05EVElNRU87CisJCWNhc2UgWDg2 X1NPX1NFQ1VSSVRZX0FVVEhFTlRJQ0FUSU9OOgorCQkJcmV0dXJuIFNPX1NFQ1VSSVRZX0FVVEhF TlRJQ0FUSU9OOworCQljYXNlIFg4Nl9TT19TRUNVUklUWV9FTkNSWVBUSU9OX1RSQU5TUE9SVDoK KwkJCXJldHVybiBTT19TRUNVUklUWV9FTkNSWVBUSU9OX1RSQU5TUE9SVDsKKwkJY2FzZSBYODZf U09fU0VDVVJJVFlfRU5DUllQVElPTl9ORVRXT1JLOgorCQkJcmV0dXJuIFNPX1NFQ1VSSVRZX0VO Q1JZUFRJT05fTkVUV09SSzsKKwkJY2FzZSBYODZfU09fQklORFRPREVWSUNFOgorCQkJcmV0dXJu IFNPX0JJTkRUT0RFVklDRTsKKwkJY2FzZSBYODZfU09fQVRUQUNIX0ZJTFRFUjoKKwkJCXJldHVy biBTT19BVFRBQ0hfRklMVEVSOworCQljYXNlIFg4Nl9TT19ERVRBQ0hfRklMVEVSOgorCQkJcmV0 dXJuIFNPX0RFVEFDSF9GSUxURVI7CisJCWNhc2UgWDg2X1NPX1BFRVJOQU1FOgorCQkJcmV0dXJu IFNPX1BFRVJOQU1FOworCQljYXNlIFg4Nl9TT19USU1FU1RBTVA6CisJCQlyZXR1cm4gU09fVElN RVNUQU1QOworCQljYXNlIFg4Nl9TT19BQ0NFUFRDT05OOgorCQkJcmV0dXJuIFNPX0FDQ0VQVENP Tk47CQkKKwl9CisJcmV0dXJuIC0xOworfQpkaWZmIC1OdXJiIHFlbXUtMC45LjAvTWFrZWZpbGUg cWVtdS1sb29uZ3Nvbi9NYWtlZmlsZQotLS0gcWVtdS0wLjkuMC9NYWtlZmlsZQkyMDA3LTAyLTA2 IDA3OjAxOjU0LjAwMDAwMDAwMCArMDgwMAorKysgcWVtdS1sb29uZ3Nvbi9NYWtlZmlsZQkyMDA3 LTA2LTAxIDIzOjIzOjM0LjAwMDAwMDAwMCArMDgwMApAQCAtMzQsOSArMzQsMTYgQEAKIAogYWxs OiAkKFRPT0xTKSAkKERPQ1MpIHJlY3Vyc2UtYWxsCiAKK2lmZXEgKCQoQVJDSCksbWlwcykKK3N1 YmRpci0lOiBkeW5nZW4kKEVYRVNVRikgb3BfbWlwcyQoRVhFU1VGKQorCSQoTUFLRSkgLUMgJChz dWJzdCBzdWJkaXItLCwkQCkgYWxsCisKK2Vsc2UKIHN1YmRpci0lOiBkeW5nZW4kKEVYRVNVRikK IAkkKE1BS0UpIC1DICQoc3Vic3Qgc3ViZGlyLSwsJEApIGFsbAogCitlbmRpZgorCiByZWN1cnNl LWFsbDogJChwYXRzdWJzdCAlLHN1YmRpci0lLCAkKFRBUkdFVF9ESVJTKSkKIAogcWVtdS1pbWck KEVYRVNVRik6IHFlbXUtaW1nLmMgY3V0aWxzLmMgYmxvY2suYyBibG9jay1yYXcuYyBibG9jay1j b3cuYyBibG9jay1xY293LmMgYWVzLmMgYmxvY2stdm1kay5jIGJsb2NrLWNsb29wLmMgYmxvY2st ZG1nLmMgYmxvY2stYm9jaHMuYyBibG9jay12cGMuYyBibG9jay12dmZhdC5jIGJsb2NrLXFjb3cy LmMKQEAgLTQ1LDEwICs1MiwxNiBAQAogZHluZ2VuJChFWEVTVUYpOiBkeW5nZW4uYwogCSQoSE9T VF9DQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpICQoQkFTRV9DRkxBR1MpIC1vICRAICReCiAKK2lm ZXEgKCQoQVJDSCksbWlwcykKK29wX21pcHMkKEVYRVNVRik6IG9wX21pcHMuYworCSQoSE9TVF9D QykgJChDRkxBR1MpICQoREVGSU5FUykgLW8gJEAgJF4KKworZW5kaWYKKwogY2xlYW46CiAjIGF2 b2lkIG9sZCBidWlsZCBwcm9ibGVtcyBieSByZW1vdmluZyBwb3RlbnRpYWxseSBpbmNvcnJlY3Qg b2xkIGZpbGVzCiAJcm0gLWYgY29uZmlnLm1hayBjb25maWcuaCBvcC1pMzg2Lmggb3BjLWkzODYu aCBnZW4tb3AtaTM4Ni5oIG9wLWFybS5oIG9wYy1hcm0uaCBnZW4tb3AtYXJtLmggCi0Jcm0gLWYg Ki5vICouYSAkKFRPT0xTKSBkeW5nZW4kKEVYRVNVRikgVEFHUyAqLnBvZCAqfiAqLyp+CisJcm0g LWYgKi5vICouYSAkKFRPT0xTKSBkeW5nZW4kKEVYRVNVRikgb3BfbWlwcyQoRVhFU1VCKSBUQUdT ICoucG9kICp+ICovKn4KIAkkKE1BS0UpIC1DIHRlc3RzIGNsZWFuCiAJZm9yIGQgaW4gJChUQVJH RVRfRElSUyk7IGRvIFwKIAkkKE1BS0UpIC1DICQkZCAkQCB8fCBleGl0IDEgOyBcCmRpZmYgLU51 cmIgcWVtdS0wLjkuMC9NYWtlZmlsZS50YXJnZXQgcWVtdS1sb29uZ3Nvbi9NYWtlZmlsZS50YXJn ZXQKLS0tIHFlbXUtMC45LjAvTWFrZWZpbGUudGFyZ2V0CTIwMDctMDItMDYgMDc6MDE6NTQuMDAw MDAwMDAwICswODAwCisrKyBxZW11LWxvb25nc29uL01ha2VmaWxlLnRhcmdldAkyMDA3LTA2LTAy IDA4OjE5OjE0LjAwMDAwMDAwMCArMDgwMApAQCAtMjcsNiArMjcsNyBAQAogTElCUz0KIEhFTFBF Ul9DRkxBR1M9JChDRkxBR1MpCiBEWU5HRU49Li4vZHluZ2VuJChFWEVTVUYpCitPUF9NSVBTPS4u L29wX21pcHMkKEVYRVNVRikKICMgdXNlciBlbXVsYXRvciBuYW1lCiBUQVJHRVRfQVJDSDI9JChU QVJHRVRfQVJDSCkKIGlmZXEgKCQoVEFSR0VUX0FSQ0gpLGFybSkKQEAgLTE2MCw3ICsxNjEsOCBA QAogZW5kaWYKIAogaWZlcSAoJChBUkNIKSxtaXBzKQotQkFTRV9MREZMQUdTKz0tV2wsLVQsJChT UkNfUEFUSCkvJChBUkNIKS5sZAorT1BfQ0ZMQUdTKz0tZm5vLWRlbGF5ZWQtYnJhbmNoCitCQVNF X0xERkxBR1MrPS1XbCwtVCwkKFNSQ19QQVRIKS8kKEFSQ0gpLmxkIC1scnQKIGVuZGlmCiAKIGlm ZXEgKCQoSEFWRV9HQ0MzX09QVElPTlMpLHllcykKQEAgLTUwNCw5ICs1MDYsMjIgQEAKIGdlbi1v cC5oOiBvcC5vICQoRFlOR0VOKQogCSQoRFlOR0VOKSAtZyAtbyAkQCAkPAogCitpZmVxICgkKEFS Q0gpLG1pcHMpCitvcC5vOiBvcDIucworCSQoQ0MpICQoT1BfQ0ZMQUdTKSAkKENQUEZMQUdTKSAt YyAtbyAkQCBvcDIucworCitvcDIuczoJb3AucworCSQoT1BfTUlQUykgPCBvcC5zID4gb3AyLnMK Kworb3AuczoJb3AuYworCSQoQ0MpICQoT1BfQ0ZMQUdTKSAkKENQUEZMQUdTKSAtUyAtbyBvcC5z ICQ8CisKK2Vsc2UKIG9wLm86IG9wLmMKIAkkKENDKSAkKE9QX0NGTEFHUykgJChDUFBGTEFHUykg LWMgLW8gJEAgJDwKIAorZW5kaWYKKwogIyBIRUxQRVJfQ0ZMQUdTIGlzIHVzZWQgZm9yIGFsbCB0 aGUgY29kZSBjb21waWxlZCB3aXRoIHN0YXRpYyByZWdpc3RlcgogIyB2YXJpYWJsZXMKIGlmZXEg KCQoVEFSR0VUX0JBU0VfQVJDSCksIGkzODYpCmRpZmYgLU51cmIgcWVtdS0wLjkuMC9taXBzLmxk IHFlbXUtbG9vbmdzb24vbWlwcy5sZAotLS0gcWVtdS0wLjkuMC9taXBzLmxkCTE5NzAtMDEtMDEg MDg6MDA6MDAuMDAwMDAwMDAwICswODAwCisrKyBxZW11LWxvb25nc29uL21pcHMubGQJMjAwNy0w Ni0wMSAyMzoyMzozNC4wMDAwMDAwMDAgKzA4MDAKQEAgLTAsMCArMSwyMzggQEAKKy8qIFNjcmlw dCBmb3IgLXogY29tYnJlbG9jOiBjb21iaW5lIGFuZCBzb3J0IHJlbG9jIHNlY3Rpb25zICovCitP VVRQVVRfRk9STUFUKCJlbGYzMi10cmFkbGl0dGxlbWlwcyIsICJlbGYzMi10cmFkYmlnbWlwcyIs CisJICAgICAgImVsZjMyLXRyYWRsaXR0bGVtaXBzIikKK09VVFBVVF9BUkNIKG1pcHMpCitFTlRS WShfX3N0YXJ0KQorU0VBUkNIX0RJUigiL3Vzci9taXBzZWwtbGludXgtZ251L2xpYiIpOyBTRUFS Q0hfRElSKCIvdXNyL2xvY2FsL2xpYiIpOyBTRUFSQ0hfRElSKCIvbGliIik7IFNFQVJDSF9ESVIo Ii91c3IvbGliIik7CitTRUNUSU9OUworeworICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdl ZCBpbnRvIHRleHQgc2VnbWVudDogKi8KKyAgUFJPVklERSAoX19leGVjdXRhYmxlX3N0YXJ0ID0g MHg2MDAwMDAwMCk7IC4gPSAweDYwMDAwMDAwICsgU0laRU9GX0hFQURFUlM7CisgIC5pbnRlcnAg ICAgICAgICA6IHsgKiguaW50ZXJwKSB9CisgIC5yZWdpbmZvICAgICAgICA6IHsgKigucmVnaW5m bykgfQorICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5bmFtaWMpIH0KKyAgLmhhc2ggICAgICAg ICAgIDogeyAqKC5oYXNoKSB9CisgIC5keW5zeW0gICAgICAgICA6IHsgKiguZHluc3ltKSB9Cisg IC5keW5zdHIgICAgICAgICA6IHsgKiguZHluc3RyKSB9CisgIC5nbnUudmVyc2lvbiAgICA6IHsg KiguZ251LnZlcnNpb24pIH0KKyAgLmdudS52ZXJzaW9uX2QgIDogeyAqKC5nbnUudmVyc2lvbl9k KSB9CisgIC5nbnUudmVyc2lvbl9yICA6IHsgKiguZ251LnZlcnNpb25fcikgfQorICAucmVsLmR5 biAgICAgICAgOgorICAgIHsKKyAgICAgICooLnJlbC5pbml0KQorICAgICAgKigucmVsLnRleHQg LnJlbC50ZXh0LiogLnJlbC5nbnUubGlua29uY2UudC4qKQorICAgICAgKigucmVsLmZpbmkpCisg ICAgICAqKC5yZWwucm9kYXRhIC5yZWwucm9kYXRhLiogLnJlbC5nbnUubGlua29uY2Uuci4qKQor ICAgICAgKigucmVsLmRhdGEucmVsLnJvKiAucmVsLmdudS5saW5rb25jZS5kLnJlbC5yby4qKQor ICAgICAgKigucmVsLmRhdGEgLnJlbC5kYXRhLiogLnJlbC5nbnUubGlua29uY2UuZC4qKQorICAg ICAgKigucmVsLnRkYXRhIC5yZWwudGRhdGEuKiAucmVsLmdudS5saW5rb25jZS50ZC4qKQorICAg ICAgKigucmVsLnRic3MgLnJlbC50YnNzLiogLnJlbC5nbnUubGlua29uY2UudGIuKikKKyAgICAg ICooLnJlbC5jdG9ycykKKyAgICAgICooLnJlbC5kdG9ycykKKyAgICAgICooLnJlbC5nb3QpCisg ICAgICAqKC5yZWwuc2RhdGEgLnJlbC5zZGF0YS4qIC5yZWwuZ251LmxpbmtvbmNlLnMuKikKKyAg ICAgICooLnJlbC5zYnNzIC5yZWwuc2Jzcy4qIC5yZWwuZ251LmxpbmtvbmNlLnNiLiopCisgICAg ICAqKC5yZWwuc2RhdGEyIC5yZWwuc2RhdGEyLiogLnJlbC5nbnUubGlua29uY2UuczIuKikKKyAg ICAgICooLnJlbC5zYnNzMiAucmVsLnNic3MyLiogLnJlbC5nbnUubGlua29uY2Uuc2IyLiopCisg ICAgICAqKC5yZWwuYnNzIC5yZWwuYnNzLiogLnJlbC5nbnUubGlua29uY2UuYi4qKQorICAgIH0K KyAgLnJlbGEuZHluICAgICAgIDoKKyAgICB7CisgICAgICAqKC5yZWxhLmluaXQpCisgICAgICAq KC5yZWxhLnRleHQgLnJlbGEudGV4dC4qIC5yZWxhLmdudS5saW5rb25jZS50LiopCisgICAgICAq KC5yZWxhLmZpbmkpCisgICAgICAqKC5yZWxhLnJvZGF0YSAucmVsYS5yb2RhdGEuKiAucmVsYS5n bnUubGlua29uY2Uuci4qKQorICAgICAgKigucmVsYS5kYXRhIC5yZWxhLmRhdGEuKiAucmVsYS5n bnUubGlua29uY2UuZC4qKQorICAgICAgKigucmVsYS50ZGF0YSAucmVsYS50ZGF0YS4qIC5yZWxh LmdudS5saW5rb25jZS50ZC4qKQorICAgICAgKigucmVsYS50YnNzIC5yZWxhLnRic3MuKiAucmVs YS5nbnUubGlua29uY2UudGIuKikKKyAgICAgICooLnJlbGEuY3RvcnMpCisgICAgICAqKC5yZWxh LmR0b3JzKQorICAgICAgKigucmVsYS5nb3QpCisgICAgICAqKC5yZWxhLnNkYXRhIC5yZWxhLnNk YXRhLiogLnJlbGEuZ251LmxpbmtvbmNlLnMuKikKKyAgICAgICooLnJlbGEuc2JzcyAucmVsYS5z YnNzLiogLnJlbGEuZ251LmxpbmtvbmNlLnNiLiopCisgICAgICAqKC5yZWxhLnNkYXRhMiAucmVs YS5zZGF0YTIuKiAucmVsYS5nbnUubGlua29uY2UuczIuKikKKyAgICAgICooLnJlbGEuc2JzczIg LnJlbGEuc2JzczIuKiAucmVsYS5nbnUubGlua29uY2Uuc2IyLiopCisgICAgICAqKC5yZWxhLmJz cyAucmVsYS5ic3MuKiAucmVsYS5nbnUubGlua29uY2UuYi4qKQorICAgIH0KKyAgLnJlbC5wbHQg ICAgICAgIDogeyAqKC5yZWwucGx0KSB9CisgIC5yZWxhLnBsdCAgICAgICA6IHsgKigucmVsYS5w bHQpIH0KKyAgLmluaXQgICAgICAgICAgIDoKKyAgeworICAgIEtFRVAgKCooLmluaXQpKQorICB9 ID0wCisgIC5wbHQgICAgICAgICAgICA6IHsgKigucGx0KSB9CisgIC50ZXh0ICAgICAgICAgICA6 CisgIHsKKyAgICBfZnRleHQgPSAuIDsKKyAgICAqKC50ZXh0IC5zdHViIC50ZXh0LiogLmdudS5s aW5rb25jZS50LiopCisgICAgS0VFUCAoKigudGV4dC4qcGVyc29uYWxpdHkqKSkKKyAgICAvKiAu Z251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAg Ki8KKyAgICAqKC5nbnUud2FybmluZykKKyAgICAqKC5taXBzMTYuZm4uKikgKigubWlwczE2LmNh bGwuKikKKyAgfSA9MAorICAuZmluaSAgICAgICAgICAgOgorICB7CisgICAgS0VFUCAoKiguZmlu aSkpCisgIH0gPTAKKyAgUFJPVklERSAoX19ldGV4dCA9IC4pOworICBQUk9WSURFIChfZXRleHQg PSAuKTsKKyAgUFJPVklERSAoZXRleHQgPSAuKTsKKyAgLnJvZGF0YSAgICAgICAgIDogeyAqKC5y b2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKSB9CisgIC5yb2RhdGExICAgICAgICA6 IHsgKigucm9kYXRhMSkgfQorICAuc2RhdGEyICAgICAgICAgOgorICB7CisgICAgKiguc2RhdGEy IC5zZGF0YTIuKiAuZ251LmxpbmtvbmNlLnMyLiopCisgIH0KKyAgLnNic3MyICAgICAgICAgIDog eyAqKC5zYnNzMiAuc2JzczIuKiAuZ251LmxpbmtvbmNlLnNiMi4qKSB9CisgIC5laF9mcmFtZV9o ZHIgOiB7ICooLmVoX2ZyYW1lX2hkcikgfQorICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lGX1JP IHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CisgIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZX0lG X1JPIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CisgIC8qIEFk anVzdCB0aGUgYWRkcmVzcyBmb3IgdGhlIGRhdGEgc2VnbWVudC4gIFdlIHdhbnQgdG8gYWRqdXN0 IHVwIHRvCisgICAgIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoZSBwYWdlIG9uIHRoZSBuZXh0 IHBhZ2UgdXAuICAqLworICAuID0gQUxJR04gKDB4NDAwMDApIC0gKCgweDQwMDAwIC0gLikgJiAo MHg0MDAwMCAtIDEpKTsgLiA9IERBVEFfU0VHTUVOVF9BTElHTiAoMHg0MDAwMCwgMHgxMDAwKTsK KyAgLyogRXhjZXB0aW9uIGhhbmRsaW5nICAqLworICAuZWhfZnJhbWUgICAgICAgOiBPTkxZX0lG X1JXIHsgS0VFUCAoKiguZWhfZnJhbWUpKSB9CisgIC5nY2NfZXhjZXB0X3RhYmxlICAgOiBPTkxZ X0lGX1JXIHsgKiguZ2NjX2V4Y2VwdF90YWJsZSAuZ2NjX2V4Y2VwdF90YWJsZS4qKSB9CisgIC8q IFRocmVhZCBMb2NhbCBTdG9yYWdlIHNlY3Rpb25zICAqLworICAudGRhdGEJICA6IHsgKigudGRh dGEgLnRkYXRhLiogLmdudS5saW5rb25jZS50ZC4qKSB9CisgIC50YnNzCQkgIDogeyAqKC50YnNz IC50YnNzLiogLmdudS5saW5rb25jZS50Yi4qKSAqKC50Y29tbW9uKSB9CisgIC5wcmVpbml0X2Fy cmF5ICAgICA6CisgIHsKKyAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0 ID0gLik7CisgICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCisgICAgUFJPVklERV9ISURERU4g KF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKKyAgfQorICAuaW5pdF9hcnJheSAgICAgOgorICB7 CisgICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKKyAgICAgS0VF UCAoKihTT1JUKC5pbml0X2FycmF5LiopKSkKKyAgICAgS0VFUCAoKiguaW5pdF9hcnJheSkpCisg ICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7CisgIH0KKyAgLmZpbmlf YXJyYXkgICAgIDoKKyAgeworICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQg PSAuKTsKKyAgICBLRUVQICgqKC5maW5pX2FycmF5KSkKKyAgICBLRUVQICgqKFNPUlQoLmZpbmlf YXJyYXkuKikpKQorICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7Cisg IH0KKyAgLmN0b3JzICAgICAgICAgIDoKKyAgeworICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8g dG8gZmluZCB0aGUgc3RhcnQgb2YKKyAgICAgICB0aGUgY29uc3RydWN0b3JzLCBzbyB3ZSBtYWtl IHN1cmUgaXQgaXMKKyAgICAgICBmaXJzdC4gIEJlY2F1c2UgdGhpcyBpcyBhIHdpbGRjYXJkLCBp dAorICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90CisgICAgICAgYWN0 dWFsbHkgbGluayBhZ2FpbnN0IGNydGJlZ2luLm87IHRoZQorICAgICAgIGxpbmtlciB3b24ndCBs b29rIGZvciBhIGZpbGUgdG8gbWF0Y2ggYQorICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJk IGFsc28gbWVhbnMgdGhhdCBpdAorICAgICAgIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIGRpcmVjdG9y eSBjcnRiZWdpbi5vCisgICAgICAgaXMgaW4uICAqLworICAgIEtFRVAgKCpjcnRiZWdpbioubygu Y3RvcnMpKQorICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gaW5jbHVkZSB0aGUgLmN0b3Igc2VjdGlv biBmcm9tCisgICAgICAgdGhlIGNydGVuZC5vIGZpbGUgdW50aWwgYWZ0ZXIgdGhlIHNvcnRlZCBj dG9ycy4KKyAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250 YWlucyB0aGUKKyAgICAgICBlbmQgb2YgY3RvcnMgbWFya2VyIGFuZCBpdCBtdXN0IGJlIGxhc3Qg Ki8KKyAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZCoubyApIC5jdG9ycykpCisgICAg S0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCisgICAgS0VFUCAoKiguY3RvcnMpKQorICB9CisgIC5k dG9ycyAgICAgICAgICA6CisgIHsKKyAgICBLRUVQICgqY3J0YmVnaW4qLm8oLmR0b3JzKSkKKyAg ICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZCoubyApIC5kdG9ycykpCisgICAgS0VFUCAo KihTT1JUKC5kdG9ycy4qKSkpCisgICAgS0VFUCAoKiguZHRvcnMpKQorICB9CisgIC5qY3IgICAg ICAgICAgICA6IHsgS0VFUCAoKiguamNyKSkgfQorICAuZGF0YS5yZWwucm8gOiB7ICooLmRhdGEu cmVsLnJvLmxvY2FsKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLmxvY2FsLiopICooLmRhdGEucmVs LnJvKiAuZ251LmxpbmtvbmNlLmQucmVsLnJvLiopIH0KKyAgLiA9IERBVEFfU0VHTUVOVF9SRUxS T19FTkQgKDAsIC4pOworICAuZGF0YSAgICAgICAgICAgOgorICB7CisgICAgX2ZkYXRhID0gLiA7 CisgICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQorICAgIEtFRVAgKCooLmdu dS5saW5rb25jZS5kLipwZXJzb25hbGl0eSopKQorICAgIFNPUlQoQ09OU1RSVUNUT1JTKQorICB9 CisgIC5kYXRhMSAgICAgICAgICA6IHsgKiguZGF0YTEpIH0KKyAgLiA9IC47CisgIF9ncCA9IEFM SUdOKDE2KSArIDB4N2ZmMDsKKyAgLmdvdCAgICAgICAgICAgIDogeyAqKC5nb3QucGx0KSAqKC5n b3QpIH0KKyAgLyogV2Ugd2FudCB0aGUgc21hbGwgZGF0YSBzZWN0aW9ucyB0b2dldGhlciwgc28g c2luZ2xlLWluc3RydWN0aW9uIG9mZnNldHMKKyAgICAgY2FuIGFjY2VzcyB0aGVtIGFsbCwgYW5k IGluaXRpYWxpemVkIGRhdGEgYWxsIGJlZm9yZSB1bmluaXRpYWxpemVkLCBzbworICAgICB3ZSBj YW4gc2hvcnRlbiB0aGUgb24tZGlzayBzZWdtZW50IHNpemUuICAqLworICAuc2RhdGEgICAgICAg ICAgOgorICB7CisgICAgKiguc2RhdGEgLnNkYXRhLiogLmdudS5saW5rb25jZS5zLiopCisgIH0K KyAgLmxpdDggICAgICAgICAgIDogeyAqKC5saXQ4KSB9CisgIC5saXQ0ICAgICAgICAgICA6IHsg KigubGl0NCkgfQorICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOworICBfX2Jzc19z dGFydCA9IC47CisgIF9mYnNzID0gLjsKKyAgLnNic3MgICAgICAgICAgIDoKKyAgeworICAgICoo LmR5bnNic3MpCisgICAgKiguc2JzcyAuc2Jzcy4qIC5nbnUubGlua29uY2Uuc2IuKikKKyAgICAq KC5zY29tbW9uKQorICB9CisgIC5ic3MgICAgICAgICAgICA6CisgIHsKKyAgICooLmR5bmJzcykK KyAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCisgICAqKENPTU1PTikKKyAgIC8q IEFsaWduIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIC5ic3Mgc2VjdGlvbiBvY2N1cGllcyBzcGFj ZSB1cCB0bworICAgICAgX2VuZC4gIEFsaWduIGFmdGVyIC5ic3MgdG8gZW5zdXJlIGNvcnJlY3Qg YWxpZ25tZW50IGV2ZW4gaWYgdGhlCisgICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNh dXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4KKyAgICAgIEZJWE1FOiBXaHkgZG8gd2Ug bmVlZCBpdD8gV2hlbiB0aGVyZSBpcyBubyAuYnNzIHNlY3Rpb24sIHdlIGRvbid0CisgICAgICBw YWQgdGhlIC5kYXRhIHNlY3Rpb24uICAqLworICAgLiA9IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6 IDEpOworICB9CisgIC4gPSBBTElHTigzMiAvIDgpOworICAuID0gQUxJR04oMzIgLyA4KTsKKyAg X2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOworICAuID0gREFUQV9TRUdNRU5UX0VORCAoLik7 CisgIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCisgIC5zdGFiICAgICAgICAgIDAg OiB7ICooLnN0YWIpIH0KKyAgLnN0YWJzdHIgICAgICAgMCA6IHsgKiguc3RhYnN0cikgfQorICAu c3RhYi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0KKyAgLnN0YWIuZXhjbHN0ciAgMCA6 IHsgKiguc3RhYi5leGNsc3RyKSB9CisgIC5zdGFiLmluZGV4ICAgIDAgOiB7ICooLnN0YWIuaW5k ZXgpIH0KKyAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQorICAuY29t bWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9CisgIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25z LgorICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0 aXZlIHRvIHRoZSBiZWdpbm5pbmcKKyAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhl bSBhdCAwLiAgKi8KKyAgLyogRFdBUkYgMSAqLworICAuZGVidWcgICAgICAgICAgMCA6IHsgKigu ZGVidWcpIH0KKyAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KKyAgLyogR05VIERX QVJGIDEgZXh0ZW5zaW9ucyAqLworICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3Jj aW5mbykgfQorICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQorICAv KiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KKyAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRl YnVnX2FyYW5nZXMpIH0KKyAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVz KSB9CisgIC8qIERXQVJGIDIgKi8KKyAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2lu Zm8gLmdudS5saW5rb25jZS53aS4qKSB9CisgIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1 Z19hYmJyZXYpIH0KKyAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUpIH0KKyAg LmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9CisgIC5kZWJ1Z19zdHIgICAg ICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KKyAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVn X2xvYykgfQorICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQorICAv KiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KKyAgLmRlYnVnX3dlYWtuYW1lcyAwIDog eyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KKyAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1 Z19mdW5jbmFtZXMpIH0KKyAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFt ZXMpIH0KKyAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQorICAu Z3B0YWIuc2RhdGEgOiB7ICooLmdwdGFiLmRhdGEpICooLmdwdGFiLnNkYXRhKSB9CisgIC5ncHRh Yi5zYnNzIDogeyAqKC5ncHRhYi5ic3MpICooLmdwdGFiLnNic3MpIH0KKyAgLm1kZWJ1Zy5hYmkz MiA6IHsgS0VFUCgqKC5tZGVidWcuYWJpMzIpKSB9CisgIC5tZGVidWcuYWJpTjMyIDogeyBLRUVQ KCooLm1kZWJ1Zy5hYmlOMzIpKSB9CisgIC5tZGVidWcuYWJpNjQgOiB7IEtFRVAoKigubWRlYnVn LmFiaTY0KSkgfQorICAubWRlYnVnLmFiaU82NCA6IHsgS0VFUCgqKC5tZGVidWcuYWJpTzY0KSkg fQorICAubWRlYnVnLmVhYmkzMiA6IHsgS0VFUCgqKC5tZGVidWcuZWFiaTMyKSkgfQorICAubWRl YnVnLmVhYmk2NCA6IHsgS0VFUCgqKC5tZGVidWcuZWFiaTY0KSkgfQorICAuZ2NjX2NvbXBpbGVk X2xvbmczMiA6IHsgS0VFUCgqKC5nY2NfY29tcGlsZWRfbG9uZzMyKSkgfQorICAuZ2NjX2NvbXBp bGVkX2xvbmc2NCA6IHsgS0VFUCgqKC5nY2NfY29tcGlsZWRfbG9uZzY0KSkgfQorICAvRElTQ0FS RC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSB9Cit9CmRpZmYgLU51cmIgcWVtdS0wLjkuMC9vcF9t aXBzLmMgcWVtdS1sb29uZ3Nvbi9vcF9taXBzLmMKLS0tIHFlbXUtMC45LjAvb3BfbWlwcy5jCTE5 NzAtMDEtMDEgMDg6MDA6MDAuMDAwMDAwMDAwICswODAwCisrKyBxZW11LWxvb25nc29uL29wX21p cHMuYwkyMDA3LTA2LTAyIDA4OjEzOjIyLjAwMDAwMDAwMCArMDgwMApAQCAtMCwwICsxLDE2MCBA QAorLyoJcWVtdS9vcF9taXBzLmMKKyAqCisgKgkJCVBlbmcgSnVuIDxqdW43OTAzQDE2My5jb20+ CisgKi8KKworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs dWRlIDxzdHJpbmcuaD4KKworLy8jZGVmaW5lCUdDQ19NTk9fQUJJQ0FMTFMKKy8vI2RlZmluZQlR RU1VX1ZFUlNJT05fNgorCisjaWZkZWYJUUVNVV9WRVJTSU9OXzYKK2ludCBleGl0X3RiX2tleSA9 IDA7CitjaGFyIGV4aXRfdGJfYnVmWzEwMjRdOworY2hhciBleGl0X3RiX3NwWzEwMjRdOworCitp bnQgbGluZTIoY2hhciAqYnVmLCBpbnQgbnVtKQoreworCWlmKHN0cmNtcChidWYsICJcdGpcdCQz MVxuIikgIT0gMCkgeworCQlzdHJjYXQoZXhpdF90Yl9idWYsIGJ1Zik7CisJCWlmKHN0cnN0cihi dWYsICIkc3AiKSkKKwkJCXN0cmNhdChleGl0X3RiX3NwLCBidWYpOworCQlzdHJjcHkoYnVmLCAi Iik7CisJCXJldHVybiAwOworCX0KKworCXNwcmludGYoYnVmLCAiXAorI0VYSVRfVEJcblwKKyVz XAorCWoJJDMxXG5cCisJbm9wXG5cCislc1wKKyRlbmRfJTA4WDpcblwKKwlqCSQzMVxuXAorIiwK KwkJZXhpdF90Yl9zcCwgZXhpdF90Yl9idWYsIG51bSk7CisKKwlleGl0X3RiX2tleSA9IDA7CisK KwlyZXR1cm4gMDsKK30KKyNlbmRpZgkvKiBRRU1VX1ZFUlNJT05fNiAqLworCitpbnQgbGluZShj aGFyICpidWYsIGludCBudW0pCit7CisJY2hhciBmdW5jWzI1Nl07CisKKyNpZmRlZglRRU1VX1ZF UlNJT05fNgorCS8vIGV4aXRfdGIKKwlpZihzdHJjbXAoYnVmLCAiI0VYSVRfVEJcbiIpID09IDAp IHsKKwkJZXhpdF90Yl9rZXkgPSAxOworCQlzdHJjcHkoYnVmLCAiIik7CisJCXN0cmNweShleGl0 X3RiX2J1ZiwgIiIpOworCQlzdHJjcHkoZXhpdF90Yl9zcCwgIiIpOworCQlyZXR1cm4gMDsKKwl9 CisjZW5kaWYKKworCS8vIGogJDMxICAtLT4gZW5kX1hYWDogaiAkMzEKKwlpZihzdHJjbXAoYnVm LCAiXHRqXHQkMzFcbiIpID09IDApIHsKKwkJc3ByaW50ZihidWYsICJcCiskZW5kXyUwOFg6XG5c CisJagkkMzFcblwKKyIsIG51bSk7CisJCQlyZXR1cm4gMDsKKwl9CisKKyNpZmRlZglHQ0NfTU5P X0FCSUNBTExTCisKKyNpZmRlZglRRU1VX1ZFUlNJT05fNgorCWlmKHN0cmNtcChidWYsICJcdGph bFx0JDJcbiIpID09IDApIHsKKwkJcmV0dXJuIDA7CisJfQorI2Vsc2UKKwkvLyBqYWwgJDIgIC0t PiAgamFsICR0OSAgKDAuOS4wKQorCWlmKHN0cmNtcChidWYsICJcdGphbFx0JDJcbiIpID09IDAp IHsKKwkJc3ByaW50ZihidWYsICJcCisJbW92ZQkkMjUsJDJcblwKKwlqYWwJJDI1XG5cCisiCisJ CSk7CisJCXJldHVybiAwOworCX0KKyNlbmRpZgkvKiBRRU1VX1ZFUlNJT05fNiAqLworCisJLy8g amFsIGZ1bmMgIC0tPiBsdWkgKyBhZGRpdQorCWlmKHN0cm5jbXAoYnVmLCAiXHRqYWxcdCIsIDUp ID09IDApIHsKKwkJKihzdHJjaHIoYnVmLCAnXG4nKSkgPSAwOworCQlzdHJjcHkoZnVuYywgYnVm ICsgNSk7CisJCXNwcmludGYoYnVmLCAiXAorCWx1aQkkMjUsJSVoaSglcylcblwKKwlhZGRpdQkk MjUsJDI1LCUlbG8oJXMpXG5cCisJamFsCSQyNVxuXAorIiwKKwkJCQlmdW5jLCBmdW5jKTsKKwkJ cmV0dXJuIDA7CisJfQorCisjZWxzZQkvKiBHQ0NfTU5PX0FCSUNBTExTICovCisKKwl7IGNoYXIg KnAsIHJlZ1s0XTsKKwkvLyBsdyAkPywlZ290KHZhcikoJDI4KSAgLS0+ICBsdWkgKyBhZGRpdQor CWlmKHN0cnN0cihidWYsICIlZ290IikpIHsKKwkJaWYoc3RybmNtcChidWYsICJcdGx3XHQkIiwg NSkpCisJCQlleGl0KDEpOworCQlwID0gYnVmICsgNDsKKwkJKnN0cmNocihwLCAnLCcpID0gMDsK KwkJc3RyY3B5KHJlZywgcCk7CisJCXAgPSBwICsgc3RybGVuKHJlZykgKyAxOworCQlwID0gc3Ry Y2hyKHAsICcoJykgKyAxOworCQkqc3RyY2hyKHAsICcpJykgPSAwOworCQlzdHJjcHkoZnVuYywg cCk7CisJCXNwcmludGYoYnVmLCAiXAorCWx1aQklcywlJWhpKCVzKVxuXAorCWFkZGl1CSVzLCVz LCUlbG8oJXMpXG5cCisiLAorCQkJCXJlZywgZnVuYywgcmVnLCByZWcsIGZ1bmMpOworCQlyZXR1 cm4gMDsKKwl9CisKKwkvLyBsdyAkMjUsJWNhbGwxNihmdW5jKSgkMjgpICAtLT4gIGx1aSArIGFk ZGl1CisJaWYoc3Ryc3RyKGJ1ZiwgIiVjYWxsMTYiKSkgeworCQlpZihzdHJuY21wKGJ1ZiwgIlx0 bHdcdCQyNSwlY2FsbDE2IiwgMTUpKQorCQkJZXhpdCgxKTsKKwkJcCA9IHN0cmNocihidWYsICco JykgKyAxOworCQkqc3RyY2hyKHAsICcpJykgPSAwOworCQlzdHJjcHkoZnVuYywgcCk7CisJCXNw cmludGYoYnVmLCAiXAorCWx1aQkkMjUsJSVoaSglcylcblwKKwlhZGRpdQkkMjUsJDI1LCUlbG8o JXMpXG5cCisiLAorCQkJCWZ1bmMsIGZ1bmMpOworCQlyZXR1cm4gMDsKKwl9CisJfQorCisjZW5k aWYJLyogR0NDX01OT19BQklDQUxMUyAqLworCisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJY2hhciBidWZbMTAyNF07CisJaW50IG4gPSAwOwor CisJd2hpbGUoZmdldHMoYnVmLCAxMDIzLCBzdGRpbikpIHsKKyNpZmRlZglRRU1VX1ZFUlNJT05f NgorCQlpZihleGl0X3RiX2tleSkKKwkJCWxpbmUyKGJ1Ziwgbik7CisJCWVsc2UKKyNlbmRpZgor CQkJbGluZShidWYsIG4pOworCQlwcmludGYoIiVzIiwgYnVmKTsKKwkJbisrOworCX0KKwlyZXR1 cm4gMDsKK30KZGlmZiAtTnVyYiBxZW11LTAuOS4wL3NsaXJwL21idWYuaCBxZW11LWxvb25nc29u L3NsaXJwL21idWYuaAotLS0gcWVtdS0wLjkuMC9zbGlycC9tYnVmLmgJMjAwNy0wMi0wNiAwNzow MTo1NC4wMDAwMDAwMDAgKzA4MDAKKysrIHFlbXUtbG9vbmdzb24vc2xpcnAvbWJ1Zi5oCTIwMDct MDYtMDEgMjM6MjM6MzQuMDAwMDAwMDAwICswODAwCkBAIC0zOSw2ICszOSwxMiBAQAogCiAjZGVm aW5lIG1fZnJlZW0gbV9mcmVlCiAKKyNpZiBkZWZpbmVkKF9fbWlwc19fKQorI2RlZmluZSBXT1JE U19BTElHTkVECisjZGVmaW5lIEFUVFJJQlVURV9BTElHTkVEIF9fYXR0cmlidXRlX18oKGFsaWdu ZWQgKDQpKSkKKyNlbHNlCisjZGVmaW5lIEFUVFJJQlVURV9BTElHTkVECisjZW5kaWYKIAogI2Rl ZmluZSBNSU5DU0laRSA0MDk2CS8qIEFtb3VudCB0byBpbmNyZWFzZSBtYnVmIGlmIHRvbyBzbWFs bCAqLwogCkBAIC03MCw3ICs3Niw3IEBACiAJaW50CW1oX3NpemU7CQkvKiBTaXplIG9mIGRhdGEg Ki8KIAlzdHJ1Y3QJc29ja2V0ICptaF9zbzsKIAkKLQljYWRkcl90CW1oX2RhdGE7CQkvKiBMb2Nh dGlvbiBvZiBkYXRhICovCisJY2FkZHJfdAltaF9kYXRhIEFUVFJJQlVURV9BTElHTkVEOwkJLyog TG9jYXRpb24gb2YgZGF0YSAqLwogCWludAltaF9sZW47CQkJLyogQW1vdW50IG9mIGRhdGEgaW4g dGhpcyBtYnVmICovCiB9OwogCg== ------=_Part_9638_15909768.1180766268524--