From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JD0br-0002OZ-Co for qemu-devel@nongnu.org; Thu, 10 Jan 2008 11:50:27 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JD0bp-0002Mz-Sw for qemu-devel@nongnu.org; Thu, 10 Jan 2008 11:50:26 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JD0bo-0002Mt-O8 for qemu-devel@nongnu.org; Thu, 10 Jan 2008 11:50:24 -0500 Received: from ug-out-1314.google.com ([66.249.92.169]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JD0bn-0004uD-Ov for qemu-devel@nongnu.org; Thu, 10 Jan 2008 11:50:24 -0500 Received: by ug-out-1314.google.com with SMTP id m2so309617uge.4 for ; Thu, 10 Jan 2008 08:50:21 -0800 (PST) Message-ID: Date: Thu, 10 Jan 2008 17:50:20 +0100 From: "andrzej zaborowski" In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_23797_25544523.1199983820913" References: Subject: [Qemu-devel] Re: qemu curses driver 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_23797_25544523.1199983820913 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, here's an iteration of the curses UI patch, for 0.9.1. This time it takes into account "such modern concepts" ;) like endianness and 64-bits, so it should work on PPC and on amd64, as opposed to previous versions. (ncurses apparently chose to not make a seamless transition to 64-bits). I would like to merge this patch at some point if there's no objection. It was in Debian until now and recently broke and a number of users got annoyed. The runtime UI switching trick is not included. The monitor history saving is not included but it is in the svn.openmoko.org tree and should apply ok. Switching between VCs is still done with +. Regards ------=_Part_23797_25544523.1199983820913 Content-Type: text/x-patch; name=curses.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fb9ky33d Content-Disposition: attachment; filename=curses.patch ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggZTc2ZDYxNy4uYjgyM2JmYSAx MDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTkwLDYgKzkwLDkgQEAgT0JK Uys9JChhZGRwcmVmaXggYXVkaW8vLCAkKEFVRElPX09CSlMpKQogaWZkZWYgQ09ORklHX1NETAog T0JKUys9c2RsLm8geF9rZXltYXAubwogZW5kaWYKK2lmZGVmIENPTkZJR19DVVJTRVMKK09CSlMr PWN1cnNlcy5vCitlbmRpZgogT0JKUys9dm5jLm8gZDNkZXMubwogCiBpZmRlZiBDT05GSUdfQ09D T0EKQEAgLTExMyw2ICsxMTYsOSBAQCBzZGwubzogc2RsLmMga2V5bWFwcy5jIHNkbF9rZXlzeW0u aAogdm5jLm86IHZuYy5jIGtleW1hcHMuYyBzZGxfa2V5c3ltLmggdm5jaGV4dGlsZS5oIGQzZGVz LmMgZDNkZXMuaAogCSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKEJBU0VfQ0ZMQUdTKSAk KENPTkZJR19WTkNfVExTX0NGTEFHUykgLWMgLW8gJEAgJDwKIAorY3Vyc2VzLm86IGN1cnNlcy5j IGtleW1hcHMuYyBjdXJzZXNfa2V5cy5oCisJJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpICQo QkFTRV9DRkxBR1MpIC1jIC1vICRAICQ8CisKIGF1ZGlvL3NkbGF1ZGlvLm86IGF1ZGlvL3NkbGF1 ZGlvLmMKIAkkKENDKSAkKENGTEFHUykgJChDUFBGTEFHUykgJChTRExfQ0ZMQUdTKSAkKEJBU0Vf Q0ZMQUdTKSAtYyAtbyAkQCAkPAogCmRpZmYgLS1naXQgYS9NYWtlZmlsZS50YXJnZXQgYi9NYWtl ZmlsZS50YXJnZXQKaW5kZXggYWNkNmNkYS4uY2FhZDRmMCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUu dGFyZ2V0CisrKyBiL01ha2VmaWxlLnRhcmdldApAQCAtNTY5LDcgKzU2OSw3IEBAIFNETF9MSUJT IDo9ICQoZmlsdGVyLW91dCAtbXdpbmRvd3MsICQoU0RMX0xJQlMpKSAtbWNvbnNvbGUKIGVuZGlm CiAKICQoUUVNVV9TWVNURU0pOiAkKFZMX09CSlMpIC4uL2xpYnFlbXVfY29tbW9uLmEgbGlicWVt dS5hCi0JJChDQykgJChWTF9MREZMQUdTKSAkKExERkxBR1MpIC1vICRAICReICQoTElCUykgJChT RExfTElCUykgJChDT0NPQV9MSUJTKSAkKFZMX0xJQlMpCisJJChDQykgJChWTF9MREZMQUdTKSAk KExERkxBR1MpIC1vICRAICReICQoTElCUykgJChTRExfTElCUykgJChDT0NPQV9MSUJTKSAkKENV UlNFU19MSUJTKSAkKFZMX0xJQlMpCiAKIGRlcGVuZDogJChTUkNTKQogCSQoQ0MpIC1NTSAkKENG TEFHUykgJChDUFBGTEFHUykgJChCQVNFX0NGTEFHUykgJF4gMT4uZGVwZW5kCmRpZmYgLS1naXQg YS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggZDg2MDIwZS4uOTRiNWU3OCAxMDA3NTUKLS0t IGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMTA1LDYgKzEwNSw3IEBAIGxpbnV4X3Vz ZXI9Im5vIgogZGFyd2luX3VzZXI9Im5vIgogYnVpbGRfZG9jcz0ibm8iCiB1bmFtZV9yZWxlYXNl PSIiCitjdXJzZXM9InllcyIKIAogIyBPUyBzcGVjaWZpYwogdGFyZ2V0b3M9YHVuYW1lIC1zYApA QCAtMzE2LDYgKzMxNyw4IEBAIGZvciBvcHQgZG8KICAgOzsKICAgLS1kaXNhYmxlLXdlcnJvcikg d2Vycm9yPSJubyIKICAgOzsKKyAgLS1kaXNhYmxlLWN1cnNlcykgY3Vyc2VzPSJubyIKKyAgOzsK ICAgKikgZWNobyAiRVJST1I6IHVua25vd24gb3B0aW9uICRvcHQiOyBzaG93X2hlbHA9InllcyIK ICAgOzsKICAgZXNhYwpAQCAtNjYyLDYgKzY2NSwyMCBAQCBFT0YKICAgZmkKIGZpCiAKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBjdXJzZXMgcHJvYmUKKwor aWYgdGVzdCAiJGN1cnNlcyIgPSAieWVzIiA7IHRoZW4KKyAgY3Vyc2VzPW5vCisgIGNhdCA+ICRU TVBDIDw8IEVPRgorI2luY2x1ZGUgPGN1cnNlcy5oPgoraW50IG1haW4odm9pZCkgeyByZXR1cm4g Y3Vyc2VzX3ZlcnNpb24oKTsgfQorRU9GCisgIGlmICRjYyAtbyAkVE1QRSAkVE1QQyAtbGN1cnNl cyAyPiAvZGV2L251bGwgOyB0aGVuCisgICAgY3Vyc2VzPXllcworICBmaQorZmkgIyB0ZXN0ICIk Y3Vyc2VzIgorCiAjIENoZWNrIGlmIHRvb2xzIGFyZSBhdmFpbGFibGUgdG8gYnVpbGQgZG9jdW1l bnRhdGlvbi4KIGlmIFsgLXggImB3aGljaCB0ZXhpMmh0bWwgMj4vZGV2L251bGxgIiBdICYmIFwK ICAgIFsgLXggImB3aGljaCBwb2QybWFuIDI+L2Rldi9udWxsYCIgXTsgdGhlbgpAQCAtNzEyLDYg KzcyOSw3IEBAIGVjaG8gIlNETCBzdXBwb3J0ICAgICAgICRzZGwiCiBpZiB0ZXN0ICIkc2RsIiAh PSAibm8iIDsgdGhlbgogICAgIGVjaG8gIlNETCBzdGF0aWMgbGluayAgICRzZGxfc3RhdGljIgog ZmkKK2VjaG8gImN1cnNlcyBzdXBwb3J0ICAgICRjdXJzZXMiCiBlY2hvICJtaW5ndzMyIHN1cHBv cnQgICAkbWluZ3czMiIKIGVjaG8gIkFkbGliIHN1cHBvcnQgICAgICRhZGxpYiIKIGVjaG8gIkNv cmVBdWRpbyBzdXBwb3J0ICRjb3JlYXVkaW8iCkBAIC05NDksOCArOTY3LDEzIEBAIGlmIHRlc3Qg IiRzZGwxIiA9ICJ5ZXMiIDsgdGhlbgogICBmaQogZmkKIGlmIHRlc3QgIiRjb2NvYSIgPSAieWVz IiA7IHRoZW4KLSAgICBlY2hvICIjZGVmaW5lIENPTkZJR19DT0NPQSAxIiA+PiAkY29uZmlnX2gK LSAgICBlY2hvICJDT05GSUdfQ09DT0E9eWVzIiA+PiAkY29uZmlnX21haworICBlY2hvICIjZGVm aW5lIENPTkZJR19DT0NPQSAxIiA+PiAkY29uZmlnX2gKKyAgZWNobyAiQ09ORklHX0NPQ09BPXll cyIgPj4gJGNvbmZpZ19tYWsKK2ZpCitpZiB0ZXN0ICIkY3Vyc2VzIiA9ICJ5ZXMiIDsgdGhlbgor ICBlY2hvICIjZGVmaW5lIENPTkZJR19DVVJTRVMgMSIgPj4gJGNvbmZpZ19oCisgIGVjaG8gIkNP TkZJR19DVVJTRVM9eWVzIiA+PiAkY29uZmlnX21haworICBlY2hvICJDVVJTRVNfTElCUz0tbGN1 cnNlcyIgPj4gJGNvbmZpZ19tYWsKIGZpCiAKICMgWFhYOiBzdXBwcmVzcyB0aGF0CkBAIC0xMDE1 LDcgKzEwMzgsOCBAQCBpZiB0ZXN0ICIkdGFyZ2V0X3VzZXJfb25seSIgPSAibm8iIC1hICIkY2hl Y2tfZ2Z4IiA9ICJ5ZXMiIFwKICAgICAgICAgLWEgIiRzZGwiID0gIm5vIiAtYSAiJGNvY29hIiA9 ICJubyIgOyB0aGVuCiAgICAgZWNobyAiRVJST1I6IFFFTVUgcmVxdWlyZXMgU0RMIG9yIENvY29h IGZvciBncmFwaGljYWwgb3V0cHV0IgogICAgIGVjaG8gIlRvIGJ1aWxkIFFFTVUgd2l0aG91dCBn cmFwaGljYWwgb3V0cHV0IGNvbmZpZ3VyZSB3aXRoIC0tZGlzYWJsZS1nZngtY2hlY2siCi0gICAg ZWNobyAiTm90ZSB0aGF0IHRoaXMgd2lsbCBkaXNhYmxlIGFsbCBvdXRwdXQgZnJvbSB0aGUgdmly dHVhbCBncmFwaGljcyBjYXJkLiIKKyAgICBlY2hvICJOb3RlIHRoYXQgdGhpcyB3aWxsIGRpc2Fi bGUgYWxsIG91dHB1dCBmcm9tIHRoZSB2aXJ0dWFsIGdyYXBoaWNzIGNhcmQiCisgICAgZWNobyAi ZXhjZXB0IHRocm91Z2ggVk5DIG9yIGN1cnNlcy4iCiAgICAgZXhpdCAxOwogZmkKIApkaWZmIC0t Z2l0IGEvY29uc29sZS5jIGIvY29uc29sZS5jCmluZGV4IGU3YzAwZWMuLjg4MGFjODMgMTAwNjQ0 Ci0tLSBhL2NvbnNvbGUuYworKysgYi9jb25zb2xlLmMKQEAgLTEyMSw2ICsxMjEsNyBAQCBzdHJ1 Y3QgVGV4dENvbnNvbGUgewogICAgIHZnYV9od191cGRhdGVfcHRyIGh3X3VwZGF0ZTsKICAgICB2 Z2FfaHdfaW52YWxpZGF0ZV9wdHIgaHdfaW52YWxpZGF0ZTsKICAgICB2Z2FfaHdfc2NyZWVuX2R1 bXBfcHRyIGh3X3NjcmVlbl9kdW1wOworICAgIHZnYV9od190ZXh0X3VwZGF0ZV9wdHIgaHdfdGV4 dF91cGRhdGU7CiAgICAgdm9pZCAqaHc7CiAKICAgICBpbnQgZ193aWR0aCwgZ19oZWlnaHQ7CkBA IC0xMzUsNiArMTM2LDcgQEAgc3RydWN0IFRleHRDb25zb2xlIHsKICAgICBUZXh0QXR0cmlidXRl cyB0X2F0dHJpYl9kZWZhdWx0OyAvKiBkZWZhdWx0IHRleHQgYXR0cmlidXRlcyAqLwogICAgIFRl eHRBdHRyaWJ1dGVzIHRfYXR0cmliOyAvKiBjdXJyZW50bHkgYWN0aXZlIHRleHQgYXR0cmlidXRl cyAqLwogICAgIFRleHRDZWxsICpjZWxsczsKKyAgICBpbnQgdGV4dF94WzJdLCB0ZXh0X3lbMl0s IGN1cnNvcl9pbnZhbGlkYXRlOwogCiAgICAgZW51bSBUVFlTdGF0ZSBzdGF0ZTsKICAgICBpbnQg ZXNjX3BhcmFtc1tNQVhfRVNDX1BBUkFNU107CkBAIC0xNzEsNiArMTczLDEyIEBAIHZvaWQgdmdh X2h3X3NjcmVlbl9kdW1wKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogICAgICAgICBjb25zb2xlc1sw XS0+aHdfc2NyZWVuX2R1bXAoY29uc29sZXNbMF0tPmh3LCBmaWxlbmFtZSk7CiB9CiAKK3ZvaWQg dmdhX2h3X3RleHRfdXBkYXRlKGNvbnNvbGVfY2hfdCAqY2hhcmRhdGEpCit7CisgICAgaWYgKGFj dGl2ZV9jb25zb2xlICYmIGFjdGl2ZV9jb25zb2xlLT5od190ZXh0X3VwZGF0ZSkKKyAgICAgICAg YWN0aXZlX2NvbnNvbGUtPmh3X3RleHRfdXBkYXRlKGFjdGl2ZV9jb25zb2xlLT5odywgY2hhcmRh dGEpOworfQorCiAvKiBjb252ZXJ0IGEgUkdCQSBjb2xvciB0byBhIGNvbG9yIGluZGV4IHVzYWJs ZSBpbiBncmFwaGljIHByaW1pdGl2ZXMgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgdmdhX2dldF9j b2xvcihEaXNwbGF5U3RhdGUgKmRzLCB1bnNpZ25lZCBpbnQgcmdiYSkKIHsKQEAgLTUxNSwxMiAr NTIzLDI1IEBAIHN0YXRpYyB2b2lkIHRleHRfY29uc29sZV9yZXNpemUoVGV4dENvbnNvbGUgKnMp CiAgICAgcy0+Y2VsbHMgPSBjZWxsczsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIHRleHRfdXBk YXRlX3h5KFRleHRDb25zb2xlICpzLCBpbnQgeCwgaW50IHkpCit7CisgICAgcy0+dGV4dF94WzBd ID0gTUlOKHMtPnRleHRfeFswXSwgeCk7CisgICAgcy0+dGV4dF94WzFdID0gTUFYKHMtPnRleHRf eFsxXSwgeCk7CisgICAgcy0+dGV4dF95WzBdID0gTUlOKHMtPnRleHRfeVswXSwgeSk7CisgICAg cy0+dGV4dF95WzFdID0gTUFYKHMtPnRleHRfeVsxXSwgeSk7Cit9CisKIHN0YXRpYyB2b2lkIHVw ZGF0ZV94eShUZXh0Q29uc29sZSAqcywgaW50IHgsIGludCB5KQogewogICAgIFRleHRDZWxsICpj OwogICAgIGludCB5MSwgeTI7CiAKICAgICBpZiAocyA9PSBhY3RpdmVfY29uc29sZSkgeworICAg ICAgICBpZiAoIXMtPmRzLT5kZXB0aCkgeworICAgICAgICAgICAgdGV4dF91cGRhdGVfeHkocywg eCwgeSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICB5MSA9IChz LT55X2Jhc2UgKyB5KSAlIHMtPnRvdGFsX2hlaWdodDsKICAgICAgICAgeTIgPSB5MSAtIHMtPnlf ZGlzcGxheWVkOwogICAgICAgICBpZiAoeTIgPCAwKQpAQCAtNTQyLDYgKzU2MywxMiBAQCBzdGF0 aWMgdm9pZCBjb25zb2xlX3Nob3dfY3Vyc29yKFRleHRDb25zb2xlICpzLCBpbnQgc2hvdykKIAog ICAgIGlmIChzID09IGFjdGl2ZV9jb25zb2xlKSB7CiAgICAgICAgIGludCB4ID0gcy0+eDsKKwor ICAgICAgICBpZiAoIXMtPmRzLT5kZXB0aCkgeworICAgICAgICAgICAgcy0+Y3Vyc29yX2ludmFs aWRhdGUgPSAxOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYg KHggPj0gcy0+d2lkdGgpIHsKICAgICAgICAgICAgIHggPSBzLT53aWR0aCAtIDE7CiAgICAgICAg IH0KQEAgLTU3MSw2ICs1OTgsMTQgQEAgc3RhdGljIHZvaWQgY29uc29sZV9yZWZyZXNoKFRleHRD b25zb2xlICpzKQogCiAgICAgaWYgKHMgIT0gYWN0aXZlX2NvbnNvbGUpCiAgICAgICAgIHJldHVy bjsKKyAgICBpZiAoIXMtPmRzLT5kZXB0aCkgeworICAgICAgICBzLT50ZXh0X3hbMF0gPSAwOwor ICAgICAgICBzLT50ZXh0X3lbMF0gPSAwOworICAgICAgICBzLT50ZXh0X3hbMV0gPSBzLT53aWR0 aCAtIDE7CisgICAgICAgIHMtPnRleHRfeVsxXSA9IHMtPmhlaWdodCAtIDE7CisgICAgICAgIHMt PmN1cnNvcl9pbnZhbGlkYXRlID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHZn YV9maWxsX3JlY3Qocy0+ZHMsIDAsIDAsIHMtPmRzLT53aWR0aCwgcy0+ZHMtPmhlaWdodCwKICAg ICAgICAgICAgICAgICAgIGNvbG9yX3RhYmxlWzBdW0NPTE9SX0JMQUNLXSk7CkBAIC02NDgsNiAr NjgzLDE0IEBAIHN0YXRpYyB2b2lkIGNvbnNvbGVfcHV0X2xmKFRleHRDb25zb2xlICpzKQogICAg ICAgICAgICAgYysrOwogICAgICAgICB9CiAgICAgICAgIGlmIChzID09IGFjdGl2ZV9jb25zb2xl ICYmIHMtPnlfZGlzcGxheWVkID09IHMtPnlfYmFzZSkgeworICAgICAgICAgICAgaWYgKCFzLT5k cy0+ZGVwdGgpIHsKKyAgICAgICAgICAgICAgICBzLT50ZXh0X3hbMF0gPSAwOworICAgICAgICAg ICAgICAgIHMtPnRleHRfeVswXSA9IDA7CisgICAgICAgICAgICAgICAgcy0+dGV4dF94WzFdID0g cy0+d2lkdGggLSAxOworICAgICAgICAgICAgICAgIHMtPnRleHRfeVsxXSA9IHMtPmhlaWdodCAt IDE7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg ICB2Z2FfYml0Ymx0KHMtPmRzLCAwLCBGT05UX0hFSUdIVCwgMCwgMCwKICAgICAgICAgICAgICAg ICAgICAgICAgcy0+d2lkdGggKiBGT05UX1dJRFRILAogICAgICAgICAgICAgICAgICAgICAgICAo cy0+aGVpZ2h0IC0gMSkgKiBGT05UX0hFSUdIVCk7CkBAIC05OTgsMjEgKzEwNDEsNyBAQCB2b2lk IGNvbnNvbGVfc2VsZWN0KHVuc2lnbmVkIGludCBpbmRleCkKICAgICBzID0gY29uc29sZXNbaW5k ZXhdOwogICAgIGlmIChzKSB7CiAgICAgICAgIGFjdGl2ZV9jb25zb2xlID0gczsKLSAgICAgICAg aWYgKHMtPmNvbnNvbGVfdHlwZSAhPSBHUkFQSElDX0NPTlNPTEUpIHsKLSAgICAgICAgICAgIGlm IChzLT5nX3dpZHRoICE9IHMtPmRzLT53aWR0aCB8fAotICAgICAgICAgICAgICAgIHMtPmdfaGVp Z2h0ICE9IHMtPmRzLT5oZWlnaHQpIHsKLSAgICAgICAgICAgICAgICBpZiAocy0+Y29uc29sZV90 eXBlID09IFRFWFRfQ09OU09MRV9GSVhFRF9TSVpFKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRw eV9yZXNpemUocy0+ZHMsIHMtPmdfd2lkdGgsIHMtPmdfaGVpZ2h0KTsKLSAgICAgICAgICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHMtPmdfd2lkdGggPSBzLT5kcy0+d2lkdGg7Ci0g ICAgICAgICAgICAgICAgcy0+Z19oZWlnaHQgPSBzLT5kcy0+aGVpZ2h0OwotICAgICAgICAgICAg ICAgIHRleHRfY29uc29sZV9yZXNpemUocyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgICBjb25zb2xlX3JlZnJlc2gocyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICB2Z2FfaHdfaW52YWxpZGF0ZSgpOwotICAgICAgICB9CisgICAgICAgIHZnYV9od19p bnZhbGlkYXRlKCk7CiAgICAgfQogfQogCkBAIC0xMTE2LDYgKzExNDUsNTIgQEAgdm9pZCBrYmRf cHV0X2tleXN5bShpbnQga2V5c3ltKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgdGV4dF9jb25z b2xlX2ludmFsaWRhdGUodm9pZCAqb3BhcXVlKQoreworICAgIFRleHRDb25zb2xlICpzID0gKFRl eHRDb25zb2xlICopIG9wYXF1ZTsKKworICAgIGlmIChzLT5jb25zb2xlX3R5cGUgIT0gR1JBUEhJ Q19DT05TT0xFKSB7CisgICAgICAgIGlmIChzLT5nX3dpZHRoICE9IHMtPmRzLT53aWR0aCB8fAor ICAgICAgICAgICAgcy0+Z19oZWlnaHQgIT0gcy0+ZHMtPmhlaWdodCkgeworICAgICAgICAgICAg aWYgKHMtPmNvbnNvbGVfdHlwZSA9PSBURVhUX0NPTlNPTEVfRklYRURfU0laRSkKKyAgICAgICAg ICAgICAgICBkcHlfcmVzaXplKHMtPmRzLCBzLT5nX3dpZHRoLCBzLT5nX2hlaWdodCk7CisgICAg ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzLT5nX3dpZHRoID0gcy0+ZHMtPndpZHRo OworICAgICAgICAgICAgICAgIHMtPmdfaGVpZ2h0ID0gcy0+ZHMtPmhlaWdodDsKKyAgICAgICAg ICAgICAgICB0ZXh0X2NvbnNvbGVfcmVzaXplKHMpOworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgfQorICAgIGNvbnNvbGVfcmVmcmVzaChzKTsKK30KKworc3RhdGljIHZvaWQgdGV4dF9j b25zb2xlX3VwZGF0ZSh2b2lkICpvcGFxdWUsIGNvbnNvbGVfY2hfdCAqY2hhcmRhdGEpCit7Cisg ICAgVGV4dENvbnNvbGUgKnMgPSAoVGV4dENvbnNvbGUgKikgb3BhcXVlOworICAgIGludCBpLCBq LCBzcmM7CisKKyAgICBpZiAocy0+dGV4dF94WzBdIDw9IHMtPnRleHRfeFsxXSkgeworICAgICAg ICBzcmMgPSAocy0+eV9iYXNlICsgcy0+dGV4dF95WzBdKSAqIHMtPndpZHRoOworICAgICAgICBj aGFyZGF0YSArPSBzLT50ZXh0X3lbMF0gKiBzLT53aWR0aDsKKyAgICAgICAgZm9yIChpID0gcy0+ dGV4dF95WzBdOyBpIDw9IHMtPnRleHRfeVsxXTsgaSArKykKKyAgICAgICAgICAgIGZvciAoaiA9 IDA7IGogPCBzLT53aWR0aDsgaiArKywgc3JjICsrKQorICAgICAgICAgICAgICAgIGNvbnNvbGVf d3JpdGVfY2goY2hhcmRhdGEgKyssIHMtPmNlbGxzW3NyY10uY2ggfAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocy0+Y2VsbHNbc3JjXS50X2F0dHJpYi5mZ2NvbCA8PCAxMikgfAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocy0+Y2VsbHNbc3JjXS50X2F0dHJpYi5i Z2NvbCA8PCA4KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5jZWxsc1tz cmNdLnRfYXR0cmliLmJvbGQgPDwgMjEpKTsKKyAgICAgICAgZHB5X3VwZGF0ZShzLT5kcywgcy0+ dGV4dF94WzBdLCBzLT50ZXh0X3lbMF0sCisgICAgICAgICAgICAgICAgICAgcy0+dGV4dF94WzFd IC0gcy0+dGV4dF94WzBdLCBpIC0gcy0+dGV4dF95WzBdKTsKKyAgICAgICAgcy0+dGV4dF94WzBd ID0gcy0+d2lkdGg7CisgICAgICAgIHMtPnRleHRfeVswXSA9IHMtPmhlaWdodDsKKyAgICAgICAg cy0+dGV4dF94WzFdID0gMDsKKyAgICAgICAgcy0+dGV4dF95WzFdID0gMDsKKyAgICB9CisgICAg aWYgKHMtPmN1cnNvcl9pbnZhbGlkYXRlKSB7CisgICAgICAgIGRweV9jdXJzb3Iocy0+ZHMsIHMt PngsIHMtPnkpOworICAgICAgICBzLT5jdXJzb3JfaW52YWxpZGF0ZSA9IDA7CisgICAgfQorfQor CiBzdGF0aWMgVGV4dENvbnNvbGUgKm5ld19jb25zb2xlKERpc3BsYXlTdGF0ZSAqZHMsIGNvbnNv bGVfdHlwZV90IGNvbnNvbGVfdHlwZSkKIHsKICAgICBUZXh0Q29uc29sZSAqczsKQEAgLTExNTAs NiArMTIyNSw3IEBAIHN0YXRpYyBUZXh0Q29uc29sZSAqbmV3X2NvbnNvbGUoRGlzcGxheVN0YXRl ICpkcywgY29uc29sZV90eXBlX3QgY29uc29sZV90eXBlKQogVGV4dENvbnNvbGUgKmdyYXBoaWNf Y29uc29sZV9pbml0KERpc3BsYXlTdGF0ZSAqZHMsIHZnYV9od191cGRhdGVfcHRyIHVwZGF0ZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Z2FfaHdfaW52YWxpZGF0ZV9wdHIg aW52YWxpZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Z2FfaHdfc2Ny ZWVuX2R1bXBfcHRyIHNjcmVlbl9kdW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZnYV9od190ZXh0X3VwZGF0ZV9wdHIgdGV4dF91cGRhdGUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQogewogICAgIFRleHRDb25zb2xlICpzOwpA QCAtMTE2MCwxMyArMTIzNiwxNCBAQCBUZXh0Q29uc29sZSAqZ3JhcGhpY19jb25zb2xlX2luaXQo RGlzcGxheVN0YXRlICpkcywgdmdhX2h3X3VwZGF0ZV9wdHIgdXBkYXRlLAogICAgIHMtPmh3X3Vw ZGF0ZSA9IHVwZGF0ZTsKICAgICBzLT5od19pbnZhbGlkYXRlID0gaW52YWxpZGF0ZTsKICAgICBz LT5od19zY3JlZW5fZHVtcCA9IHNjcmVlbl9kdW1wOworICAgIHMtPmh3X3RleHRfdXBkYXRlID0g dGV4dF91cGRhdGU7CiAgICAgcy0+aHcgPSBvcGFxdWU7CiAgICAgcmV0dXJuIHM7CiB9CiAKIGlu dCBpc19ncmFwaGljX2NvbnNvbGUodm9pZCkKIHsKLSAgICByZXR1cm4gYWN0aXZlX2NvbnNvbGUt PmNvbnNvbGVfdHlwZSA9PSBHUkFQSElDX0NPTlNPTEU7CisgICAgcmV0dXJuIGFjdGl2ZV9jb25z b2xlICYmIGFjdGl2ZV9jb25zb2xlLT5jb25zb2xlX3R5cGUgPT0gR1JBUEhJQ19DT05TT0xFOwog fQogCiB2b2lkIGNvbnNvbGVfY29sb3JfaW5pdChEaXNwbGF5U3RhdGUgKmRzKQpAQCAtMTIzNCw2 ICsxMzExLDEwIEBAIENoYXJEcml2ZXJTdGF0ZSAqdGV4dF9jb25zb2xlX2luaXQoRGlzcGxheVN0 YXRlICpkcywgY29uc3QgY2hhciAqcCkKICAgICBzLT5nX3dpZHRoID0gd2lkdGg7CiAgICAgcy0+ Z19oZWlnaHQgPSBoZWlnaHQ7CiAKKyAgICBzLT5od19pbnZhbGlkYXRlID0gdGV4dF9jb25zb2xl X2ludmFsaWRhdGU7CisgICAgcy0+aHdfdGV4dF91cGRhdGUgPSB0ZXh0X2NvbnNvbGVfdXBkYXRl OworICAgIHMtPmh3ID0gczsKKwogICAgIC8qIFNldCB0ZXh0IGF0dHJpYnV0ZSBkZWZhdWx0cyAq LwogICAgIHMtPnRfYXR0cmliX2RlZmF1bHQuYm9sZCA9IDA7CiAgICAgcy0+dF9hdHRyaWJfZGVm YXVsdC51bGluZSA9IDA7CmRpZmYgLS1naXQgYS9jb25zb2xlLmggYi9jb25zb2xlLmgKaW5kZXgg MWFjNzRmYS4uYjhhNWM2ZCAxMDA2NDQKLS0tIGEvY29uc29sZS5oCisrKyBiL2NvbnNvbGUuaApA QCAtNzksNiArNzksNyBAQCBzdHJ1Y3QgRGlzcGxheVN0YXRlIHsKICAgICAgICAgICAgICAgICAg ICAgIGludCBkc3RfeCwgaW50IGRzdF95LCBpbnQgdywgaW50IGgpOwogICAgIHZvaWQgKCpkcHlf ZmlsbCkoc3RydWN0IERpc3BsYXlTdGF0ZSAqcywgaW50IHgsIGludCB5LAogICAgICAgICAgICAg ICAgICAgICAgaW50IHcsIGludCBoLCB1aW50MzJfdCBjKTsKKyAgICB2b2lkICgqZHB5X3RleHRf Y3Vyc29yKShzdHJ1Y3QgRGlzcGxheVN0YXRlICpzLCBpbnQgeCwgaW50IHkpOwogICAgIHZvaWQg KCptb3VzZV9zZXQpKGludCB4LCBpbnQgeSwgaW50IG9uKTsKICAgICB2b2lkICgqY3Vyc29yX2Rl ZmluZSkoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwLCBpbnQgaG90X3gsIGludCBob3Rf eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqaW1hZ2UsIHVpbnQ4X3QgKm1h c2spOwpAQCAtOTQsMTcgKzk1LDMyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcHlfcmVzaXplKERp c3BsYXlTdGF0ZSAqcywgaW50IHcsIGludCBoKQogICAgIHMtPmRweV9yZXNpemUocywgdywgaCk7 CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcHlfY3Vyc29yKERpc3BsYXlTdGF0ZSAqcywgaW50 IHgsIGludCB5KQoreworICAgIGlmIChzLT5kcHlfdGV4dF9jdXJzb3IpCisgICAgICAgIHMtPmRw eV90ZXh0X2N1cnNvcihzLCB4LCB5KTsKK30KKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGNvbnNv bGVfY2hfdDsKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3dyaXRlX2NoKGNvbnNvbGVfY2hf dCAqZGVzdCwgdWludDMyX3QgY2gpCit7CisgICAgY3B1X3RvX2xlMzJ3dSgodWludDMyX3QgKikg ZGVzdCwgY2gpOworfQorCiB0eXBlZGVmIHZvaWQgKCp2Z2FfaHdfdXBkYXRlX3B0cikodm9pZCAq KTsKIHR5cGVkZWYgdm9pZCAoKnZnYV9od19pbnZhbGlkYXRlX3B0cikodm9pZCAqKTsKIHR5cGVk ZWYgdm9pZCAoKnZnYV9od19zY3JlZW5fZHVtcF9wdHIpKHZvaWQgKiwgY29uc3QgY2hhciAqKTsK K3R5cGVkZWYgdm9pZCAoKnZnYV9od190ZXh0X3VwZGF0ZV9wdHIpKHZvaWQgKiwgY29uc29sZV9j aF90ICopOwogCiBUZXh0Q29uc29sZSAqZ3JhcGhpY19jb25zb2xlX2luaXQoRGlzcGxheVN0YXRl ICpkcywgdmdhX2h3X3VwZGF0ZV9wdHIgdXBkYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZnYV9od19pbnZhbGlkYXRlX3B0ciBpbnZhbGlkYXRlLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZnYV9od19zY3JlZW5fZHVtcF9wdHIgc2NyZWVuX2R1bXAs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmdhX2h3X3RleHRfdXBkYXRlX3B0 ciB0ZXh0X3VwZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpv cGFxdWUpOwogdm9pZCB2Z2FfaHdfdXBkYXRlKHZvaWQpOwogdm9pZCB2Z2FfaHdfaW52YWxpZGF0 ZSh2b2lkKTsKIHZvaWQgdmdhX2h3X3NjcmVlbl9kdW1wKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsK K3ZvaWQgdmdhX2h3X3RleHRfdXBkYXRlKGNvbnNvbGVfY2hfdCAqY2hhcmRhdGEpOwogCiBpbnQg aXNfZ3JhcGhpY19jb25zb2xlKHZvaWQpOwogQ2hhckRyaXZlclN0YXRlICp0ZXh0X2NvbnNvbGVf aW5pdChEaXNwbGF5U3RhdGUgKmRzLCBjb25zdCBjaGFyICpwKTsKQEAgLTEyNCw2ICsxNDAsOSBA QCBpbnQgdm5jX2Rpc3BsYXlfb3BlbihEaXNwbGF5U3RhdGUgKmRzLCBjb25zdCBjaGFyICpkaXNw bGF5KTsKIGludCB2bmNfZGlzcGxheV9wYXNzd29yZChEaXNwbGF5U3RhdGUgKmRzLCBjb25zdCBj aGFyICpwYXNzd29yZCk7CiB2b2lkIGRvX2luZm9fdm5jKHZvaWQpOwogCisvKiBjdXJzZXMuYyAq Lwordm9pZCBjdXJzZXNfZGlzcGxheV9pbml0KERpc3BsYXlTdGF0ZSAqZHMsIGludCBmdWxsX3Nj cmVlbik7CisKIC8qIHhfa2V5bWFwLmMgKi8KIGV4dGVybiB1aW50OF90IF90cmFuc2xhdGVfa2V5 Y29kZShjb25zdCBpbnQga2V5KTsKIApkaWZmIC0tZ2l0IGEvY3Vyc2VzLmMgYi9jdXJzZXMuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGYzYjczCi0tLSAvZGV2L251bGwK KysrIGIvY3Vyc2VzLmMKQEAgLTAsMCArMSwzNzAgQEAKKy8qCisgKiBRRU1VIGN1cnNlcy9uY3Vy c2VzIGRpc3BsYXkgZHJpdmVyCisgKiAKKyAqIENvcHlyaWdodCAoYykgMjAwNSBBbmRyemVqIFph Ym9yb3dza2kgIDxiYWxyb2dAemFib3Iub3JnPgorICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5 CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworICogdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LCBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk IGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF VkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s CisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSIERFQUxJTkdTIElOCisgKiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUg InFlbXUtY29tbW9uLmgiCisjaW5jbHVkZSAiY29uc29sZS5oIgorI2luY2x1ZGUgInN5c2VtdS5o IgorCisjaW5jbHVkZSA8Y3Vyc2VzLmg+CisKKyNpZm5kZWYgX1dJTjMyCisjaW5jbHVkZSA8c2ln bmFsLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8dGVybWlvcy5oPgorI2Vu ZGlmCisKKyNkZWZpbmUgRk9OVF9IRUlHSFQgMTYKKyNkZWZpbmUgRk9OVF9XSURUSCA4CisKK3N0 YXRpYyBjb25zb2xlX2NoX3Qgc2NyZWVuWzE2MCAqIDEwMF07CitzdGF0aWMgV0lORE9XICpzY3Jl ZW5wYWQgPSBOVUxMOworc3RhdGljIGludCB3aWR0aCwgaGVpZ2h0LCBnd2lkdGgsIGdoZWlnaHQs IGludmFsaWRhdGU7CitzdGF0aWMgaW50IHB4LCBweSwgc21pbngsIHNtaW55LCBzbWF4eCwgc21h eHk7CisKK3N0YXRpYyB2b2lkIGN1cnNlc191cGRhdGUoRGlzcGxheVN0YXRlICpkcywgaW50IHgs IGludCB5LCBpbnQgdywgaW50IGgpCit7CisgICAgY2h0eXBlICpsaW5lOworCisgICAgbGluZSA9 ICgoY2h0eXBlICopIHNjcmVlbikgKyB5ICogd2lkdGg7CisgICAgZm9yIChoICs9IHk7IHkgPCBo OyB5ICsrLCBsaW5lICs9IHdpZHRoKQorICAgICAgICBtdndhZGRjaG5zdHIoc2NyZWVucGFkLCB5 LCAwLCBsaW5lLCB3aWR0aCk7CisKKyAgICBwbm91dHJlZnJlc2goc2NyZWVucGFkLCBweSwgcHgs IHNtaW55LCBzbWlueCwgc21heHkgLSAxLCBzbWF4eCAtIDEpOworICAgIHJlZnJlc2goKTsKK30K Kworc3RhdGljIHZvaWQgY3Vyc2VzX2NhbGNfcGFkKHZvaWQpCit7CisgICAgaWYgKGlzX2dyYXBo aWNfY29uc29sZSgpKSB7CisgICAgICAgIHdpZHRoID0gZ3dpZHRoOworICAgICAgICBoZWlnaHQg PSBnaGVpZ2h0OworICAgIH0gZWxzZSB7CisgICAgICAgIHdpZHRoID0gQ09MUzsKKyAgICAgICAg aGVpZ2h0ID0gTElORVM7CisgICAgfQorCisgICAgaWYgKHNjcmVlbnBhZCkKKyAgICAgICAgZGVs d2luKHNjcmVlbnBhZCk7CisKKyAgICBjbGVhcigpOworICAgIHJlZnJlc2goKTsKKworICAgIHNj cmVlbnBhZCA9IG5ld3BhZChoZWlnaHQsIHdpZHRoKTsKKworICAgIGlmICh3aWR0aCA+IENPTFMp IHsKKyAgICAgICAgcHggPSAod2lkdGggLSBDT0xTKSAvIDI7CisgICAgICAgIHNtaW54ID0gMDsK KyAgICAgICAgc21heHggPSBDT0xTOworICAgIH0gZWxzZSB7CisgICAgICAgIHB4ID0gMDsKKyAg ICAgICAgc21pbnggPSAoQ09MUyAtIHdpZHRoKSAvIDI7CisgICAgICAgIHNtYXh4ID0gc21pbngg KyB3aWR0aDsKKyAgICB9CisKKyAgICBpZiAoaGVpZ2h0ID4gTElORVMpIHsKKyAgICAgICAgcHkg PSAoaGVpZ2h0IC0gTElORVMpIC8gMjsKKyAgICAgICAgc21pbnkgPSAwOworICAgICAgICBzbWF4 eSA9IExJTkVTOworICAgIH0gZWxzZSB7CisgICAgICAgIHB5ID0gMDsKKyAgICAgICAgc21pbnkg PSAoTElORVMgLSBoZWlnaHQpIC8gMjsKKyAgICAgICAgc21heHkgPSBzbWlueSArIGhlaWdodDsK KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGN1cnNlc19yZXNpemUoRGlzcGxheVN0YXRlICpkcywg aW50IHcsIGludCBoKQoreworICAgIGlmICh3ID09IGd3aWR0aCAmJiBoID09IGdoZWlnaHQpCisg ICAgICAgIHJldHVybjsKKworICAgIGd3aWR0aCA9IHc7CisgICAgZ2hlaWdodCA9IGg7CisKKyAg ICBjdXJzZXNfY2FsY19wYWQoKTsKK30KKworI2lmbmRlZiBfV0lOMzIKKyNpZmRlZiBTSUdXSU5D SAorc3RhdGljIHZvaWQgY3Vyc2VzX3dpbmNoX2hhbmRsZXIoaW50IHNpZ251bSkKK3sKKyAgICBz dHJ1Y3Qgd2luc2l6ZSB7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3JvdzsKKyAgICAgICAg dW5zaWduZWQgc2hvcnQgd3NfY29sOworICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c194cGl4ZWw7 ICAgLyogdW51c2VkICovCisgICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3lwaXhlbDsgICAvKiB1 bnVzZWQgKi8KKyAgICB9IHdzOworCisgICAgLyogdGVybWluYWwgc2l6ZSBjaGFuZ2VkICovCisg ICAgaWYgKGlvY3RsKDEsIFRJT0NHV0lOU1osICZ3cykgPT0gLTEpCisgICAgICAgIHJldHVybjsK KworICAgIHJlc2l6ZV90ZXJtKHdzLndzX3Jvdywgd3Mud3NfY29sKTsKKyAgICBjdXJzZXNfY2Fs Y19wYWQoKTsKKyAgICBpbnZhbGlkYXRlID0gMTsKKworICAgIC8qIHNvbWUgc3lzdGVtcyByZXF1 aXJlIHRoaXMgKi8KKyAgICBzaWduYWwoU0lHV0lOQ0gsIGN1cnNlc193aW5jaF9oYW5kbGVyKTsK K30KKyNlbmRpZgorI2VuZGlmCisKK3N0YXRpYyB2b2lkIGN1cnNlc19jdXJzb3JfcG9zaXRpb24o RGlzcGxheVN0YXRlICpkcywgaW50IHgsIGludCB5KQoreworICAgIGlmICh4ID49IDApIHsKKyAg ICAgICAgeCA9IHNtaW54ICsgeCAtIHB4OworICAgICAgICB5ID0gc21pbnkgKyB5IC0gcHk7CisK KyAgICAgICAgaWYgKHggPj0gMCAmJiB5ID49IDAgJiYgeCA8IENPTFMgJiYgeSA8IExJTkVTKSB7 CisgICAgICAgICAgICBtb3ZlKHksIHgpOworICAgICAgICAgICAgY3Vyc19zZXQoMSk7CisgICAg ICAgICAgICAvKiBpdCBzZWVtcyB0aGF0IGN1cnNfc2V0KDEpIG11c3QgYWx3YXlzIGJlIGNhbGxl ZCBiZWZvcmUKKyAgICAgICAgICAgICAqIGN1cnNfc2V0KDIpIGZvciB0aGUgbGF0dGVyIHRvIGhh dmUgZWZmZWN0ICovCisgICAgICAgICAgICBpZiAoIWlzX2dyYXBoaWNfY29uc29sZSgpKQorICAg ICAgICAgICAgICAgIGN1cnNfc2V0KDIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9 CisgICAgfQorCisgICAgY3Vyc19zZXQoMCk7Cit9CisKKy8qIGdlbmVyaWMga2V5Ym9hcmQgY29u dmVyc2lvbiAqLworCisjaW5jbHVkZSAiY3Vyc2VzX2tleXMuaCIKKyNpbmNsdWRlICJrZXltYXBz LmMiCisKK3N0YXRpYyBrYmRfbGF5b3V0X3QgKmtiZF9sYXlvdXQgPSAwOworc3RhdGljIGludCBr ZXljb2RlMmtleXN5bVtDVVJTRVNfS0VZU107CisKK3N0YXRpYyB2b2lkIGN1cnNlc19yZWZyZXNo KERpc3BsYXlTdGF0ZSAqZHMpCit7CisgICAgaW50IGNociwgbmV4dGNociwga2V5c3ltLCBrZXlj b2RlOworCisgICAgaWYgKGludmFsaWRhdGUpIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg cmVmcmVzaCgpOworICAgICAgICBjdXJzZXNfY2FsY19wYWQoKTsKKyAgICAgICAgZHMtPndpZHRo ID0gRk9OVF9XSURUSCAqIHdpZHRoOworICAgICAgICBkcy0+aGVpZ2h0ID0gRk9OVF9IRUlHSFQg KiBoZWlnaHQ7CisgICAgICAgIHZnYV9od19pbnZhbGlkYXRlKCk7CisgICAgICAgIGludmFsaWRh dGUgPSAwOworICAgIH0KKworICAgIHZnYV9od190ZXh0X3VwZGF0ZShzY3JlZW4pOworCisgICAg bmV4dGNociA9IEVSUjsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICAvKiB3aGlsZSB0aGVyZSBh cmUgYW55IHBlbmRpbmcga2V5IHN0cm9rZXMgdG8gcHJvY2VzcyAqLworICAgICAgICBpZiAobmV4 dGNociA9PSBFUlIpCisgICAgICAgICAgICBjaHIgPSBnZXRjaCgpOworICAgICAgICBlbHNlIHsK KyAgICAgICAgICAgIGNociA9IG5leHRjaHI7CisgICAgICAgICAgICBuZXh0Y2hyID0gRVJSOwor ICAgICAgICB9CisKKyAgICAgICAgaWYgKGNociA9PSBFUlIpCisgICAgICAgICAgICBicmVhazsK KworICAgICAgICAvKiB0aGlzIHNob3VsZG4ndCBvY2N1ciB3aGVuIHdlIHVzZSBhIGN1c3RvbSBT SUdXSU5DSCBoYW5kbGVyICovCisgICAgICAgIGlmIChjaHIgPT0gS0VZX1JFU0laRSkgeworICAg ICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgIHJlZnJlc2goKTsKKyAgICAgICAgICAgIGN1 cnNlc19jYWxjX3BhZCgpOworICAgICAgICAgICAgY3Vyc2VzX3VwZGF0ZShkcywgMCwgMCwgd2lk dGgsIGhlaWdodCk7CisgICAgICAgICAgICBkcy0+d2lkdGggPSBGT05UX1dJRFRIICogd2lkdGg7 CisgICAgICAgICAgICBkcy0+aGVpZ2h0ID0gRk9OVF9IRUlHSFQgKiBoZWlnaHQ7CisgICAgICAg ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGtleWNvZGUgPSBjdXJzZXMya2V5 Y29kZVtjaHJdOworICAgICAgICBpZiAoa2V5Y29kZSA9PSAtMSkKKyAgICAgICAgICAgIGNvbnRp bnVlOworCisgICAgICAgIC8qIGFsdCBrZXkgKi8KKyAgICAgICAgaWYgKGtleWNvZGUgPT0gMSkg eworICAgICAgICAgICAgbmV4dGNociA9IGdldGNoKCk7CisKKyAgICAgICAgICAgIGlmIChuZXh0 Y2hyICE9IEVSUikgeworICAgICAgICAgICAgICAgIGtleWNvZGUgPSBjdXJzZXMya2V5Y29kZVtu ZXh0Y2hyXTsKKyAgICAgICAgICAgICAgICBuZXh0Y2hyID0gRVJSOworICAgICAgICAgICAgICAg IGlmIChrZXljb2RlID09IC0xKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg ICAgICAgICAgICAgIGtleWNvZGUgfD0gQUxUOworCisgICAgICAgICAgICAgICAgLyogcHJvY2Vz cyBrZXlzIHJlc2VydmVkIGZvciBxZW11ICovCisgICAgICAgICAgICAgICAgaWYgKGtleWNvZGUg Pj0gUUVNVV9LRVlfQ09OU09MRTAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleWNvZGUg PCBRRU1VX0tFWV9DT05TT0xFMCArIDkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJhc2UoKTsK KyAgICAgICAgICAgICAgICAgICAgd25vdXRyZWZyZXNoKHN0ZHNjcik7CisgICAgICAgICAgICAg ICAgICAgIGNvbnNvbGVfc2VsZWN0KGtleWNvZGUgLSBRRU1VX0tFWV9DT05TT0xFMCk7CisKKyAg ICAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg ICAgICAgIGlmIChrYmRfbGF5b3V0ICYmICEoa2V5Y29kZSAmIEdSRVkpKSB7CisgICAgICAgICAg ICBrZXlzeW0gPSBrZXljb2RlMmtleXN5bVtrZXljb2RlICYgS0VZX01BU0tdOworICAgICAgICAg ICAgaWYgKGtleXN5bSA9PSAtMSkKKyAgICAgICAgICAgICAgICBrZXlzeW0gPSBjaHI7CisKKyAg ICAgICAgICAgIGtleWNvZGUgJj0gfktFWV9NQVNLOworICAgICAgICAgICAga2V5Y29kZSB8PSBr ZXlzeW0yc2NhbmNvZGUoa2JkX2xheW91dCwga2V5c3ltKTsKKyAgICAgICAgfQorCisgICAgICAg IGlmIChpc19ncmFwaGljX2NvbnNvbGUoKSkgeworICAgICAgICAgICAgLyogc2luY2UgdGVybWlu YWxzIGRvbid0IGtub3cgYWJvdXQga2V5IHByZXNzIGFuZCByZWxlYXNlCisgICAgICAgICAgICAg KiBldmVudHMsIHdlIG5lZWQgdG8gZW1pdCBib3RoIGZvciBlYWNoIGtleSByZWNlaXZlZCAqLwor ICAgICAgICAgICAgaWYgKGtleWNvZGUgJiBTSElGVCkKKyAgICAgICAgICAgICAgICBrYmRfcHV0 X2tleWNvZGUoU0hJRlRfQ09ERSk7CisgICAgICAgICAgICBpZiAoa2V5Y29kZSAmIENOVFJMKQor ICAgICAgICAgICAgICAgIGtiZF9wdXRfa2V5Y29kZShDTlRSTF9DT0RFKTsKKyAgICAgICAgICAg IGlmIChrZXljb2RlICYgQUxUKQorICAgICAgICAgICAgICAgIGtiZF9wdXRfa2V5Y29kZShBTFRf Q09ERSk7CisgICAgICAgICAgICBpZiAoa2V5Y29kZSAmIEdSRVkpCisgICAgICAgICAgICAgICAg a2JkX3B1dF9rZXljb2RlKEdSRVlfQ09ERSk7CisgICAgICAgICAgICBrYmRfcHV0X2tleWNvZGUo a2V5Y29kZSAmIEtFWV9NQVNLKTsKKyAgICAgICAgICAgIGlmIChrZXljb2RlICYgR1JFWSkKKyAg ICAgICAgICAgICAgICBrYmRfcHV0X2tleWNvZGUoR1JFWV9DT0RFKTsKKyAgICAgICAgICAgIGti ZF9wdXRfa2V5Y29kZSgoa2V5Y29kZSAmIEtFWV9NQVNLKSB8IEtFWV9SRUxFQVNFKTsKKyAgICAg ICAgICAgIGlmIChrZXljb2RlICYgQUxUKQorICAgICAgICAgICAgICAgIGtiZF9wdXRfa2V5Y29k ZShBTFRfQ09ERSB8IEtFWV9SRUxFQVNFKTsKKyAgICAgICAgICAgIGlmIChrZXljb2RlICYgQ05U UkwpCisgICAgICAgICAgICAgICAga2JkX3B1dF9rZXljb2RlKENOVFJMX0NPREUgfCBLRVlfUkVM RUFTRSk7CisgICAgICAgICAgICBpZiAoa2V5Y29kZSAmIFNISUZUKQorICAgICAgICAgICAgICAg IGtiZF9wdXRfa2V5Y29kZShTSElGVF9DT0RFIHwgS0VZX1JFTEVBU0UpOworICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAga2V5c3ltID0gY3Vyc2VzMmtleXN5bVtjaHJdOworICAgICAgICAg ICAgaWYgKGtleXN5bSA9PSAtMSkKKyAgICAgICAgICAgICAgICBrZXlzeW0gPSBjaHI7CisKKyAg ICAgICAgICAgIGtiZF9wdXRfa2V5c3ltKGtleXN5bSk7CisgICAgICAgIH0KKyAgICB9Cit9CisK K3N0YXRpYyB2b2lkIGN1cnNlc19jbGVhbnVwKHZvaWQgKm9wYXF1ZSkgCit7CisgICAgZW5kd2lu KCk7Cit9CisKK3N0YXRpYyB2b2lkIGN1cnNlc19hdGV4aXQodm9pZCkKK3sKKyAgICBjdXJzZXNf Y2xlYW51cChOVUxMKTsKK30KKworc3RhdGljIHZvaWQgY3Vyc2VzX3NldHVwKHZvaWQpCit7Cisg ICAgaW50IGksIGNvbG91cl9kZWZhdWx0WzhdID0geworICAgICAgICBDT0xPUl9CTEFDSywgQ09M T1JfQkxVRSwgQ09MT1JfR1JFRU4sIENPTE9SX0NZQU4sCisgICAgICAgIENPTE9SX1JFRCwgQ09M T1JfTUFHRU5UQSwgQ09MT1JfWUVMTE9XLCBDT0xPUl9XSElURSwKKyAgICB9OworCisgICAgLyog aW5wdXQgYXMgcmF3IGFzIHBvc3NpYmxlLCBsZXQgZXZlcnl0aGluZyBiZSBpbnRlcnByZXRlZAor ICAgICAqIGJ5IHRoZSBndWVzdCBzeXN0ZW0gKi8KKyAgICBpbml0c2NyKCk7IG5vZWNobygpOyBp bnRyZmx1c2goc3Rkc2NyLCBGQUxTRSk7CisgICAgbm9kZWxheShzdGRzY3IsIFRSVUUpOyBub25s KCk7IGtleXBhZChzdGRzY3IsIFRSVUUpOworICAgIHN0YXJ0X2NvbG9yKCk7IHJhdygpOyBzY3Jv bGxvayhzdGRzY3IsIEZBTFNFKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSArKykKKyAg ICAgICAgaW5pdF9wYWlyKGksIGNvbG91cl9kZWZhdWx0W2kgJiA3XSwgY29sb3VyX2RlZmF1bHRb aSA+PiAzXSk7Cit9CisKK3N0YXRpYyB2b2lkIGN1cnNlc19rZXlib2FyZF9zZXR1cCh2b2lkKQor eworICAgIGludCBpLCBrZXljb2RlLCBrZXlzeW07CisKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykK KyAgICAvKiBhbHdheXMgdXNlIGdlbmVyaWMga2V5bWFwcyAqLworICAgIGlmICgha2V5Ym9hcmRf bGF5b3V0KQorICAgICAgICBrZXlib2FyZF9sYXlvdXQgPSAiZW4tdXMiOworI2VuZGlmCisgICAg aWYoa2V5Ym9hcmRfbGF5b3V0KSB7CisgICAgICAgIGtiZF9sYXlvdXQgPSBpbml0X2tleWJvYXJk X2xheW91dChrZXlib2FyZF9sYXlvdXQpOworICAgICAgICBpZiAoIWtiZF9sYXlvdXQpCisgICAg ICAgICAgICBleGl0KDEpOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBDVVJTRVNfS0VZ UzsgaSArKykKKyAgICAgICAga2V5Y29kZTJrZXlzeW1baV0gPSAtMTsKKworICAgIGZvciAoaSA9 IDA7IGkgPCBDVVJTRVNfS0VZUzsgaSArKykgeworICAgICAgICBpZiAoY3Vyc2VzMmtleWNvZGVb aV0gPT0gLTEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBrZXljb2RlID0gY3Vy c2VzMmtleWNvZGVbaV0gJiBLRVlfTUFTSzsKKyAgICAgICAgaWYgKGtleWNvZGUya2V5c3ltW2tl eWNvZGVdID49IDApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKGtleXN5 bSA9IDA7IGtleXN5bSA8IENVUlNFU19LRVlTOyBrZXlzeW0gKyspCisgICAgICAgICAgICBpZiAo Y3Vyc2VzMmtleWNvZGVba2V5c3ltXSA9PSBrZXljb2RlKSB7CisgICAgICAgICAgICAgICAga2V5 Y29kZTJrZXlzeW1ba2V5Y29kZV0gPSBrZXlzeW07CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleXN5bSA+PSBDVVJTRVNfS0VZUykKKyAgICAg ICAgICAgIGtleWNvZGUya2V5c3ltW2tleWNvZGVdID0gaTsKKyAgICB9Cit9CisKK3ZvaWQgY3Vy c2VzX2Rpc3BsYXlfaW5pdChEaXNwbGF5U3RhdGUgKmRzLCBpbnQgZnVsbF9zY3JlZW4pCit7Cisj aWZuZGVmIF9XSU4zMgorICAgIGlmICghaXNhdHR5KDEpKSB7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiV2UgbmVlZCBhIHRlcm1pbmFsIG91dHB1dFxuIik7CisgICAgICAgIGV4aXQoMSk7Cisg ICAgfQorI2VuZGlmCisKKyAgICBjdXJzZXNfc2V0dXAoKTsKKyAgICBjdXJzZXNfa2V5Ym9hcmRf c2V0dXAoKTsKKyAgICBhdGV4aXQoY3Vyc2VzX2F0ZXhpdCk7CisKKyNpZm5kZWYgX1dJTjMyCisg ICAgc2lnbmFsKFNJR0lOVCwgU0lHX0RGTCk7CisgICAgc2lnbmFsKFNJR1FVSVQsIFNJR19ERkwp OworI2lmZGVmIFNJR1dJTkNICisgICAgLyogc29tZSBjdXJzZXMgaW1wbGVtZW50YXRpb25zIHBy b3ZpZGUgYSBoYW5kbGVyLCBidXQgd2UKKyAgICAgKiB3YW50IHRvIGJlIHN1cmUgdGhpcyBpcyBo YW5kbGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGxpYnJhcnkgKi8KKyAgICBzaWduYWwoU0lHV0lOQ0gs IGN1cnNlc193aW5jaF9oYW5kbGVyKTsKKyNlbmRpZgorI2VuZGlmCisKKyAgICBkcy0+ZGF0YSA9 IHNjcmVlbjsKKyAgICBkcy0+bGluZXNpemUgPSAwOworICAgIGRzLT5kZXB0aCA9IDA7CisgICAg ZHMtPndpZHRoID0gNjQwOworICAgIGRzLT5oZWlnaHQgPSA0MDA7CisgICAgZHMtPmRweV91cGRh dGUgPSBjdXJzZXNfdXBkYXRlOworICAgIGRzLT5kcHlfcmVzaXplID0gY3Vyc2VzX3Jlc2l6ZTsK KyAgICBkcy0+ZHB5X3JlZnJlc2ggPSBjdXJzZXNfcmVmcmVzaDsKKyAgICBkcy0+ZHB5X3RleHRf Y3Vyc29yID0gY3Vyc2VzX2N1cnNvcl9wb3NpdGlvbjsKKworICAgIGludmFsaWRhdGUgPSAxOwor CisgICAgLyogU3RhbmRhcmQgVkdBIGluaXRpYWwgdGV4dCBtb2RlIGRpbWVuc2lvbnMgKi8KKyAg ICBjdXJzZXNfcmVzaXplKGRzLCA4MCwgMjUpOworfQpkaWZmIC0tZ2l0IGEvY3Vyc2VzX2tleXMu aCBiL2N1cnNlc19rZXlzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEz ZTVmNgotLS0gL2Rldi9udWxsCisrKyBiL2N1cnNlc19rZXlzLmgKQEAgLTAsMCArMSw0ODQgQEAK Ky8qCisgKiBLZXljb2RlIGFuZCBrZXlzeW1zIGNvbnZlcnNpb24gdGFibGVzIGZvciBjdXJzZXMK KyAqIAorICogQ29weXJpZ2h0IChjKSAyMDA1IEFuZHJ6ZWogWmFib3Jvd3NraSAgPGJhbHJvZ0B6 YWJvci5vcmc+CisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0 byBkZWFsCisgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisgKiBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg U29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg SU4KKyAqIFRIRSBTT0ZUV0FSRS4KKyAqLworI2RlZmluZSBLRVlfUkVMRUFTRSAgICAgICAgIDB4 ODAKKyNkZWZpbmUgS0VZX01BU0sgICAgICAgICAgICAweDdmCisjZGVmaW5lIFNISUZUX0NPREUg ICAgICAgICAgMHgyYQorI2RlZmluZSBTSElGVCAgICAgICAgICAgICAgIDB4MDA4MAorI2RlZmlu ZSBHUkVZX0NPREUgICAgICAgICAgIDB4ZTAKKyNkZWZpbmUgR1JFWSAgICAgICAgICAgICAgICAw eDAxMDAKKyNkZWZpbmUgQ05UUkxfQ09ERSAgICAgICAgICAweDFkCisjZGVmaW5lIENOVFJMICAg ICAgICAgICAgICAgMHgwMjAwCisjZGVmaW5lIEFMVF9DT0RFICAgICAgICAgICAgMHgzOAorI2Rl ZmluZSBBTFQgICAgICAgICAgICAgICAgIDB4MDQwMAorCisvKiBjdXJzZXMgd29uJ3QgZGV0ZWN0 IGEgQ29udHJvbCArIEFsdCArIDEsIHNvIHVzZSBBbHQgKyAxICovCisjZGVmaW5lIFFFTVVfS0VZ X0NPTlNPTEUwICAgKDIgfCBBTFQpICAgLyogKGN1cnNlczJrZXljb2RlWycxJ10gfCBBTFQpICov CisKKyNkZWZpbmUgQ1VSU0VTX0tFWVMgICAgICAgICBLRVlfTUFYICAgICAvKiBLRVlfTUFYIGRl ZmluZWQgaW4gPGN1cnNlcy5oPiAqLworCitpbnQgY3Vyc2VzMmtleWNvZGVbQ1VSU0VTX0tFWVNd ID0geworICAgIFswIC4uLiAoQ1VSU0VTX0tFWVMgLSAxKV0gPSAtMSwKKworICAgIFsweDAxYl0g PSAxLCAvKiBFc2NhcGUgKi8KKyAgICBbJzEnXSA9IDIsCisgICAgWycyJ10gPSAzLAorICAgIFsn MyddID0gNCwKKyAgICBbJzQnXSA9IDUsCisgICAgWyc1J10gPSA2LAorICAgIFsnNiddID0gNywK KyAgICBbJzcnXSA9IDgsCisgICAgWyc4J10gPSA5LAorICAgIFsnOSddID0gMTAsCisgICAgWycw J10gPSAxMSwKKyAgICBbJy0nXSA9IDEyLAorICAgIFsnPSddID0gMTMsCisgICAgWzB4MDdmXSA9 IDE0LCAvKiBCYWNrc3BhY2UgKi8KKyAgICBbMHgxMDddID0gMTQsIC8qIEJhY2tzcGFjZSAqLwor CisgICAgWydcdCddID0gMTUsIC8qIFRhYiAqLworICAgIFsncSddID0gMTYsCisgICAgWyd3J10g PSAxNywKKyAgICBbJ2UnXSA9IDE4LAorICAgIFsnciddID0gMTksCisgICAgWyd0J10gPSAyMCwK KyAgICBbJ3knXSA9IDIxLAorICAgIFsndSddID0gMjIsCisgICAgWydpJ10gPSAyMywKKyAgICBb J28nXSA9IDI0LAorICAgIFsncCddID0gMjUsCisgICAgWydbJ10gPSAyNiwKKyAgICBbJ10nXSA9 IDI3LAorICAgIFsnXG4nXSA9IDI4LCAvKiBSZXR1cm4gKi8KKyAgICBbJ1xyJ10gPSAyOCwgLyog UmV0dXJuICovCisgICAgWzB4MTU3XSA9IDI4LCAvKiBSZXR1cm4gKi8KKworICAgIFsnYSddID0g MzAsCisgICAgWydzJ10gPSAzMSwKKyAgICBbJ2QnXSA9IDMyLAorICAgIFsnZiddID0gMzMsCisg ICAgWydnJ10gPSAzNCwKKyAgICBbJ2gnXSA9IDM1LAorICAgIFsnaiddID0gMzYsCisgICAgWydr J10gPSAzNywKKyAgICBbJ2wnXSA9IDM4LAorICAgIFsnOyddID0gMzksCisgICAgWydcJyddID0g NDAsIC8qIFNpbmdsZSBxdW90ZSAqLworICAgIFsnYCddID0gNDEsCisgICAgWydcXCddID0gNDMs IC8qIEJhY2tzbGFzaCAqLworCisgICAgWyd6J10gPSA0NCwKKyAgICBbJ3gnXSA9IDQ1LAorICAg IFsnYyddID0gNDYsCisgICAgWyd2J10gPSA0NywKKyAgICBbJ2InXSA9IDQ4LAorICAgIFsnbidd ID0gNDksCisgICAgWydtJ10gPSA1MCwKKyAgICBbJywnXSA9IDUxLAorICAgIFsnLiddID0gNTIs CisgICAgWycvJ10gPSA1MywKKworICAgIFsnICddID0gNTcsCisKKyAgICBbMHgxMDldID0gNTks IC8qIEZ1bmN0aW9uIEtleSAxICovCisgICAgWzB4MTBhXSA9IDYwLCAvKiBGdW5jdGlvbiBLZXkg MiAqLworICAgIFsweDEwYl0gPSA2MSwgLyogRnVuY3Rpb24gS2V5IDMgKi8KKyAgICBbMHgxMGNd ID0gNjIsIC8qIEZ1bmN0aW9uIEtleSA0ICovCisgICAgWzB4MTBkXSA9IDYzLCAvKiBGdW5jdGlv biBLZXkgNSAqLworICAgIFsweDEwZV0gPSA2NCwgLyogRnVuY3Rpb24gS2V5IDYgKi8KKyAgICBb MHgxMGZdID0gNjUsIC8qIEZ1bmN0aW9uIEtleSA3ICovCisgICAgWzB4MTEwXSA9IDY2LCAvKiBG dW5jdGlvbiBLZXkgOCAqLworICAgIFsweDExMV0gPSA2NywgLyogRnVuY3Rpb24gS2V5IDkgKi8K KyAgICBbMHgxMTJdID0gNjgsIC8qIEZ1bmN0aW9uIEtleSAxMCAqLworICAgIFsweDExM10gPSA4 NywgLyogRnVuY3Rpb24gS2V5IDExICovCisgICAgWzB4MTE0XSA9IDg4LCAvKiBGdW5jdGlvbiBL ZXkgMTIgKi8KKworICAgIFsweDEwNl0gPSA3MSB8IEdSRVksIC8qIEhvbWUgKi8KKyAgICBbMHgx MDNdID0gNzIgfCBHUkVZLCAvKiBVcCBBcnJvdyAqLworICAgIFsweDE1M10gPSA3MyB8IEdSRVks IC8qIFBhZ2UgVXAgKi8KKyAgICBbMHgxMDRdID0gNzUgfCBHUkVZLCAvKiBMZWZ0IEFycm93ICov CisgICAgWzB4MTA1XSA9IDc3IHwgR1JFWSwgLyogUmlnaHQgQXJyb3cgKi8KKyAgICBbMHgxNjhd ID0gNzkgfCBHUkVZLCAvKiBFbmQgKi8KKyAgICBbMHgxMDJdID0gODAgfCBHUkVZLCAvKiBEb3du IEFycm93ICovCisgICAgWzB4MTUyXSA9IDgxIHwgR1JFWSwgLyogUGFnZSBEb3duICovCisgICAg WzB4MTRiXSA9IDgyIHwgR1JFWSwgLyogSW5zZXJ0ICovCisgICAgWzB4MTRhXSA9IDgzIHwgR1JF WSwgLyogRGVsZXRlICovCisKKyAgICBbJyEnXSA9IDIgfCBTSElGVCwKKyAgICBbJ0AnXSA9IDMg fCBTSElGVCwKKyAgICBbJyMnXSA9IDQgfCBTSElGVCwKKyAgICBbJyQnXSA9IDUgfCBTSElGVCwK KyAgICBbJyUnXSA9IDYgfCBTSElGVCwKKyAgICBbJ14nXSA9IDcgfCBTSElGVCwKKyAgICBbJyYn XSA9IDggfCBTSElGVCwKKyAgICBbJyonXSA9IDkgfCBTSElGVCwKKyAgICBbJygnXSA9IDEwIHwg U0hJRlQsCisgICAgWycpJ10gPSAxMSB8IFNISUZULAorICAgIFsnXyddID0gMTIgfCBTSElGVCwK KyAgICBbJysnXSA9IDEzIHwgU0hJRlQsCisKKyAgICBbMHgxNjFdID0gMTUgfCBTSElGVCwgLyog U2hpZnQgKyBUYWIgKi8KKyAgICBbJ1EnXSA9IDE2IHwgU0hJRlQsCisgICAgWydXJ10gPSAxNyB8 IFNISUZULAorICAgIFsnRSddID0gMTggfCBTSElGVCwKKyAgICBbJ1InXSA9IDE5IHwgU0hJRlQs CisgICAgWydUJ10gPSAyMCB8IFNISUZULAorICAgIFsnWSddID0gMjEgfCBTSElGVCwKKyAgICBb J1UnXSA9IDIyIHwgU0hJRlQsCisgICAgWydJJ10gPSAyMyB8IFNISUZULAorICAgIFsnTyddID0g MjQgfCBTSElGVCwKKyAgICBbJ1AnXSA9IDI1IHwgU0hJRlQsCisgICAgWyd7J10gPSAyNiB8IFNI SUZULAorICAgIFsnfSddID0gMjcgfCBTSElGVCwKKworICAgIFsnQSddID0gMzAgfCBTSElGVCwK KyAgICBbJ1MnXSA9IDMxIHwgU0hJRlQsCisgICAgWydEJ10gPSAzMiB8IFNISUZULAorICAgIFsn RiddID0gMzMgfCBTSElGVCwKKyAgICBbJ0cnXSA9IDM0IHwgU0hJRlQsCisgICAgWydIJ10gPSAz NSB8IFNISUZULAorICAgIFsnSiddID0gMzYgfCBTSElGVCwKKyAgICBbJ0snXSA9IDM3IHwgU0hJ RlQsCisgICAgWydMJ10gPSAzOCB8IFNISUZULAorICAgIFsnOiddID0gMzkgfCBTSElGVCwKKyAg ICBbJyInXSA9IDQwIHwgU0hJRlQsCisgICAgWyd+J10gPSA0MSB8IFNISUZULAorICAgIFsnfCdd ID0gNDMgfCBTSElGVCwKKworICAgIFsnWiddID0gNDQgfCBTSElGVCwKKyAgICBbJ1gnXSA9IDQ1 IHwgU0hJRlQsCisgICAgWydDJ10gPSA0NiB8IFNISUZULAorICAgIFsnViddID0gNDcgfCBTSElG VCwKKyAgICBbJ0InXSA9IDQ4IHwgU0hJRlQsCisgICAgWydOJ10gPSA0OSB8IFNISUZULAorICAg IFsnTSddID0gNTAgfCBTSElGVCwKKyAgICBbJzwnXSA9IDUxIHwgU0hJRlQsCisgICAgWyc+J10g PSA1MiB8IFNISUZULAorICAgIFsnPyddID0gNTMgfCBTSElGVCwKKworICAgIFsweDExNV0gPSA1 OSB8IFNISUZULCAvKiBTaGlmdCArIEZ1bmN0aW9uIEtleSAxICovCisgICAgWzB4MTE2XSA9IDYw IHwgU0hJRlQsIC8qIFNoaWZ0ICsgRnVuY3Rpb24gS2V5IDIgKi8KKyAgICBbMHgxMTddID0gNjEg fCBTSElGVCwgLyogU2hpZnQgKyBGdW5jdGlvbiBLZXkgMyAqLworICAgIFsweDExOF0gPSA2MiB8 IFNISUZULCAvKiBTaGlmdCArIEZ1bmN0aW9uIEtleSA0ICovCisgICAgWzB4MTE5XSA9IDYzIHwg U0hJRlQsIC8qIFNoaWZ0ICsgRnVuY3Rpb24gS2V5IDUgKi8KKyAgICBbMHgxMWFdID0gNjQgfCBT SElGVCwgLyogU2hpZnQgKyBGdW5jdGlvbiBLZXkgNiAqLworICAgIFsweDExYl0gPSA2NSB8IFNI SUZULCAvKiBTaGlmdCArIEZ1bmN0aW9uIEtleSA3ICovCisgICAgWzB4MTFjXSA9IDY2IHwgU0hJ RlQsIC8qIFNoaWZ0ICsgRnVuY3Rpb24gS2V5IDggKi8KKworICAgIFsweDAxMV0gPSAxNiB8IENO VFJMLCAvKiBDb250cm9sICsgcSAqLworICAgIFsweDAxN10gPSAxNyB8IENOVFJMLCAvKiBDb250 cm9sICsgdyAqLworICAgIFsweDAwNV0gPSAxOCB8IENOVFJMLCAvKiBDb250cm9sICsgZSAqLwor ICAgIFsweDAxMl0gPSAxOSB8IENOVFJMLCAvKiBDb250cm9sICsgciAqLworICAgIFsweDAxNF0g PSAyMCB8IENOVFJMLCAvKiBDb250cm9sICsgdCAqLworICAgIFsweDAxOV0gPSAyMSB8IENOVFJM LCAvKiBDb250cm9sICsgeSAqLworICAgIFsweDAxNV0gPSAyMiB8IENOVFJMLCAvKiBDb250cm9s ICsgdSAqLworICAgIFsweDAwOV0gPSAyMyB8IENOVFJMLCAvKiBDb250cm9sICsgaSAqLworICAg IFsweDAwZl0gPSAyNCB8IENOVFJMLCAvKiBDb250cm9sICsgbyAqLworICAgIFsweDAxMF0gPSAy NSB8IENOVFJMLCAvKiBDb250cm9sICsgcCAqLworCisgICAgWzB4MDAxXSA9IDMwIHwgQ05UUkws IC8qIENvbnRyb2wgKyBhICovCisgICAgWzB4MDEzXSA9IDMxIHwgQ05UUkwsIC8qIENvbnRyb2wg KyBzICovCisgICAgWzB4MDE0XSA9IDMyIHwgQ05UUkwsIC8qIENvbnRyb2wgKyBkICovCisgICAg WzB4MDA2XSA9IDMzIHwgQ05UUkwsIC8qIENvbnRyb2wgKyBmICovCisgICAgWzB4MDA3XSA9IDM0 IHwgQ05UUkwsIC8qIENvbnRyb2wgKyBnICovCisgICAgWzB4MDA4XSA9IDM1IHwgQ05UUkwsIC8q IENvbnRyb2wgKyBoICovCisgICAgWzB4MDBhXSA9IDM2IHwgQ05UUkwsIC8qIENvbnRyb2wgKyBq ICovCisgICAgWzB4MDBiXSA9IDM3IHwgQ05UUkwsIC8qIENvbnRyb2wgKyBrICovCisgICAgWzB4 MDBjXSA9IDM4IHwgQ05UUkwsIC8qIENvbnRyb2wgKyBsICovCisKKyAgICBbMHgwMWFdID0gNDQg fCBDTlRSTCwgLyogQ29udHJvbCArIHogKi8KKyAgICBbMHgwMThdID0gNDUgfCBDTlRSTCwgLyog Q29udHJvbCArIHggKi8KKyAgICBbMHgwMDNdID0gNDYgfCBDTlRSTCwgLyogQ29udHJvbCArIGMg Ki8KKyAgICBbMHgwMTZdID0gNDcgfCBDTlRSTCwgLyogQ29udHJvbCArIHYgKi8KKyAgICBbMHgw MDJdID0gNDggfCBDTlRSTCwgLyogQ29udHJvbCArIGIgKi8KKyAgICBbMHgwMGVdID0gNDkgfCBD TlRSTCwgLyogQ29udHJvbCArIG4gKi8KKyAgICAvKiBDb250cm9sICsgbSBjb2xsaWRlcyB3aXRo IHRoZSBrZXljb2RlIGZvciBFbnRlciAqLworCit9OworCitpbnQgY3Vyc2VzMmtleXN5bVtDVVJT RVNfS0VZU10gPSB7CisgICAgWzAgLi4uIChDVVJTRVNfS0VZUyAtIDEpXSA9IC0xLAorCisgICAg WydcbiddID0gJ1xuJywKKyAgICBbJ1xyJ10gPSAnXG4nLAorCisgICAgWzB4MDdmXSA9IFFFTVVf S0VZX0JBQ0tTUEFDRSwKKworICAgIFsweDEwMl0gPSBRRU1VX0tFWV9ET1dOLAorICAgIFsweDEw M10gPSBRRU1VX0tFWV9VUCwKKyAgICBbMHgxMDRdID0gUUVNVV9LRVlfTEVGVCwKKyAgICBbMHgx MDVdID0gUUVNVV9LRVlfUklHSFQsCisgICAgWzB4MTA2XSA9IFFFTVVfS0VZX0hPTUUsCisgICAg WzB4MTA3XSA9IFFFTVVfS0VZX0JBQ0tTUEFDRSwKKworICAgIFsweDE0YV0gPSBRRU1VX0tFWV9E RUxFVEUsCisgICAgWzB4MTUyXSA9IFFFTVVfS0VZX1BBR0VET1dOLAorICAgIFsweDE1M10gPSBR RU1VX0tFWV9QQUdFVVAsCisgICAgWzB4MTU3XSA9ICdcbicsCisgICAgWzB4MTY4XSA9IFFFTVVf S0VZX0VORCwKKworfTsKKwordHlwZWRlZiBzdHJ1Y3QgeworCWNvbnN0IGNoYXIqIG5hbWU7CisJ aW50IGtleXN5bTsKK30gbmFtZTJrZXlzeW1fdDsKKworc3RhdGljIG5hbWUya2V5c3ltX3QgbmFt ZTJrZXlzeW1bXSA9IHsKKyAgICAvKiBQbGFpbiBBU0NJSSAqLworICAgIHsgInNwYWNlIiwgMHgw MjAgfSwKKyAgICB7ICJleGNsYW0iLCAweDAyMSB9LAorICAgIHsgInF1b3RlZGJsIiwgMHgwMjIg fSwKKyAgICB7ICJudW1iZXJzaWduIiwgMHgwMjMgfSwKKyAgICB7ICJkb2xsYXIiLCAweDAyNCB9 LAorICAgIHsgInBlcmNlbnQiLCAweDAyNSB9LAorICAgIHsgImFtcGVyc2FuZCIsIDB4MDI2IH0s CisgICAgeyAiYXBvc3Ryb3BoZSIsIDB4MDI3IH0sCisgICAgeyAicGFyZW5sZWZ0IiwgMHgwMjgg fSwKKyAgICB7ICJwYXJlbnJpZ2h0IiwgMHgwMjkgfSwKKyAgICB7ICJhc3RlcmlzayIsIDB4MDJh IH0sCisgICAgeyAicGx1cyIsIDB4MDJiIH0sCisgICAgeyAiY29tbWEiLCAweDAyYyB9LAorICAg IHsgIm1pbnVzIiwgMHgwMmQgfSwKKyAgICB7ICJwZXJpb2QiLCAweDAyZSB9LAorICAgIHsgInNs YXNoIiwgMHgwMmYgfSwKKyAgICB7ICIwIiwgMHgwMzAgfSwKKyAgICB7ICIxIiwgMHgwMzEgfSwK KyAgICB7ICIyIiwgMHgwMzIgfSwKKyAgICB7ICIzIiwgMHgwMzMgfSwKKyAgICB7ICI0IiwgMHgw MzQgfSwKKyAgICB7ICI1IiwgMHgwMzUgfSwKKyAgICB7ICI2IiwgMHgwMzYgfSwKKyAgICB7ICI3 IiwgMHgwMzcgfSwKKyAgICB7ICI4IiwgMHgwMzggfSwKKyAgICB7ICI5IiwgMHgwMzkgfSwKKyAg ICB7ICJjb2xvbiIsIDB4MDNhIH0sCisgICAgeyAic2VtaWNvbG9uIiwgMHgwM2IgfSwKKyAgICB7 ICJsZXNzIiwgMHgwM2MgfSwKKyAgICB7ICJlcXVhbCIsIDB4MDNkIH0sCisgICAgeyAiZ3JlYXRl ciIsIDB4MDNlIH0sCisgICAgeyAicXVlc3Rpb24iLCAweDAzZiB9LAorICAgIHsgImF0IiwgMHgw NDAgfSwKKyAgICB7ICJBIiwgMHgwNDEgfSwKKyAgICB7ICJCIiwgMHgwNDIgfSwKKyAgICB7ICJD IiwgMHgwNDMgfSwKKyAgICB7ICJEIiwgMHgwNDQgfSwKKyAgICB7ICJFIiwgMHgwNDUgfSwKKyAg ICB7ICJGIiwgMHgwNDYgfSwKKyAgICB7ICJHIiwgMHgwNDcgfSwKKyAgICB7ICJIIiwgMHgwNDgg fSwKKyAgICB7ICJJIiwgMHgwNDkgfSwKKyAgICB7ICJKIiwgMHgwNGEgfSwKKyAgICB7ICJLIiwg MHgwNGIgfSwKKyAgICB7ICJMIiwgMHgwNGMgfSwKKyAgICB7ICJNIiwgMHgwNGQgfSwKKyAgICB7 ICJOIiwgMHgwNGUgfSwKKyAgICB7ICJPIiwgMHgwNGYgfSwKKyAgICB7ICJQIiwgMHgwNTAgfSwK KyAgICB7ICJRIiwgMHgwNTEgfSwKKyAgICB7ICJSIiwgMHgwNTIgfSwKKyAgICB7ICJTIiwgMHgw NTMgfSwKKyAgICB7ICJUIiwgMHgwNTQgfSwKKyAgICB7ICJVIiwgMHgwNTUgfSwKKyAgICB7ICJW IiwgMHgwNTYgfSwKKyAgICB7ICJXIiwgMHgwNTcgfSwKKyAgICB7ICJYIiwgMHgwNTggfSwKKyAg ICB7ICJZIiwgMHgwNTkgfSwKKyAgICB7ICJaIiwgMHgwNWEgfSwKKyAgICB7ICJicmFja2V0bGVm dCIsIDB4MDViIH0sCisgICAgeyAiYmFja3NsYXNoIiwgMHgwNWMgfSwKKyAgICB7ICJicmFja2V0 cmlnaHQiLCAweDA1ZCB9LAorICAgIHsgImFzY2lpY2lyY3VtIiwgMHgwNWUgfSwKKyAgICB7ICJ1 bmRlcnNjb3JlIiwgMHgwNWYgfSwKKyAgICB7ICJncmF2ZSIsIDB4MDYwIH0sCisgICAgeyAiYSIs IDB4MDYxIH0sCisgICAgeyAiYiIsIDB4MDYyIH0sCisgICAgeyAiYyIsIDB4MDYzIH0sCisgICAg eyAiZCIsIDB4MDY0IH0sCisgICAgeyAiZSIsIDB4MDY1IH0sCisgICAgeyAiZiIsIDB4MDY2IH0s CisgICAgeyAiZyIsIDB4MDY3IH0sCisgICAgeyAiaCIsIDB4MDY4IH0sCisgICAgeyAiaSIsIDB4 MDY5IH0sCisgICAgeyAiaiIsIDB4MDZhIH0sCisgICAgeyAiayIsIDB4MDZiIH0sCisgICAgeyAi bCIsIDB4MDZjIH0sCisgICAgeyAibSIsIDB4MDZkIH0sCisgICAgeyAibiIsIDB4MDZlIH0sCisg ICAgeyAibyIsIDB4MDZmIH0sCisgICAgeyAicCIsIDB4MDcwIH0sCisgICAgeyAicSIsIDB4MDcx IH0sCisgICAgeyAiciIsIDB4MDcyIH0sCisgICAgeyAicyIsIDB4MDczIH0sCisgICAgeyAidCIs IDB4MDc0IH0sCisgICAgeyAidSIsIDB4MDc1IH0sCisgICAgeyAidiIsIDB4MDc2IH0sCisgICAg eyAidyIsIDB4MDc3IH0sCisgICAgeyAieCIsIDB4MDc4IH0sCisgICAgeyAieSIsIDB4MDc5IH0s CisgICAgeyAieiIsIDB4MDdhIH0sCisgICAgeyAiYnJhY2VsZWZ0IiwgMHgwN2IgfSwKKyAgICB7 ICJiYXIiLCAweDA3YyB9LAorICAgIHsgImJyYWNlcmlnaHQiLCAweDA3ZCB9LAorICAgIHsgImFz Y2lpdGlsZGUiLCAweDA3ZSB9LAorCisgICAgLyogTGF0aW4tMSBleHRlbnNpb25zICovCisgICAg eyAibm9icmVha3NwYWNlIiwgMHgwYTAgfSwKKyAgICB7ICJleGNsYW1kb3duIiwgMHgwYTEgfSwK KyAgICB7ICJjZW50IiwgMHgwYTIgfSwKKyAgICB7ICJzdGVybGluZyIsIDB4MGEzIH0sCisgICAg eyAiY3VycmVuY3kiLCAweDBhNCB9LAorICAgIHsgInllbiIsIDB4MGE1IH0sCisgICAgeyAiYnJv a2VuYmFyIiwgMHgwYTYgfSwKKyAgICB7ICJzZWN0aW9uIiwgMHgwYTcgfSwKKyAgICB7ICJkaWFl cmVzaXMiLCAweDBhOCB9LAorICAgIHsgImNvcHlyaWdodCIsIDB4MGE5IH0sCisgICAgeyAib3Jk ZmVtaW5pbmUiLCAweDBhYSB9LAorICAgIHsgImd1aWxsZW1vdGxlZnQiLCAweDBhYiB9LAorICAg IHsgIm5vdHNpZ24iLCAweDBhYyB9LAorICAgIHsgImh5cGhlbiIsIDB4MGFkIH0sCisgICAgeyAi cmVnaXN0ZXJlZCIsIDB4MGFlIH0sCisgICAgeyAibWFjcm9uIiwgMHgwYWYgfSwKKyAgICB7ICJk ZWdyZWUiLCAweDBiMCB9LAorICAgIHsgInBsdXNtaW51cyIsIDB4MGIxIH0sCisgICAgeyAidHdv c3VwZXJpb3IiLCAweDBiMiB9LAorICAgIHsgInRocmVlc3VwZXJpb3IiLCAweDBiMyB9LAorICAg IHsgImFjdXRlIiwgMHgwYjQgfSwKKyAgICB7ICJtdSIsIDB4MGI1IH0sCisgICAgeyAicGFyYWdy YXBoIiwgMHgwYjYgfSwKKyAgICB7ICJwZXJpb2RjZW50ZXJlZCIsIDB4MGI3IH0sCisgICAgeyAi Y2VkaWxsYSIsIDB4MGI4IH0sCisgICAgeyAib25lc3VwZXJpb3IiLCAweDBiOSB9LAorICAgIHsg Im1hc2N1bGluZSIsIDB4MGJhIH0sCisgICAgeyAiZ3VpbGxlbW90cmlnaHQiLCAweDBiYiB9LAor ICAgIHsgIm9uZXF1YXJ0ZXIiLCAweDBiYyB9LAorICAgIHsgIm9uZWhhbGYiLCAweDBiZCB9LAor ICAgIHsgInRocmVlcXVhcnRlcnMiLCAweDBiZSB9LAorICAgIHsgInF1ZXN0aW9uZG93biIsIDB4 MGJmIH0sCisgICAgeyAiQWdyYXZlIiwgMHgwYzAgfSwKKyAgICB7ICJBYWN1dGUiLCAweDBjMSB9 LAorICAgIHsgIkFjaXJjdW1mbGV4IiwgMHgwYzIgfSwKKyAgICB7ICJBdGlsZGUiLCAweDBjMyB9 LAorICAgIHsgIkFkaWFlcmVzaXMiLCAweDBjNCB9LAorICAgIHsgIkFyaW5nIiwgMHgwYzUgfSwK KyAgICB7ICJBRSIsIDB4MGM2IH0sCisgICAgeyAiQ2NlZGlsbGEiLCAweDBjNyB9LAorICAgIHsg IkVncmF2ZSIsIDB4MGM4IH0sCisgICAgeyAiRWFjdXRlIiwgMHgwYzkgfSwKKyAgICB7ICJFY2ly Y3VtZmxleCIsIDB4MGNhIH0sCisgICAgeyAiRWRpYWVyZXNpcyIsIDB4MGNiIH0sCisgICAgeyAi SWdyYXZlIiwgMHgwY2MgfSwKKyAgICB7ICJJYWN1dGUiLCAweDBjZCB9LAorICAgIHsgIkljaXJj dW1mbGV4IiwgMHgwY2UgfSwKKyAgICB7ICJJZGlhZXJlc2lzIiwgMHgwY2YgfSwKKyAgICB7ICJF VEgiLCAweDBkMCB9LAorICAgIHsgIkV0aCIsIDB4MGQwIH0sCisgICAgeyAiTnRpbGRlIiwgMHgw ZDEgfSwKKyAgICB7ICJPZ3JhdmUiLCAweDBkMiB9LAorICAgIHsgIk9hY3V0ZSIsIDB4MGQzIH0s CisgICAgeyAiT2NpcmN1bWZsZXgiLCAweDBkNCB9LAorICAgIHsgIk90aWxkZSIsIDB4MGQ1IH0s CisgICAgeyAiT2RpYWVyZXNpcyIsIDB4MGQ2IH0sCisgICAgeyAibXVsdGlwbHkiLCAweDBkNyB9 LAorICAgIHsgIk9vYmxpcXVlIiwgMHgwZDggfSwKKyAgICB7ICJPc2xhc2giLCAweDBkOCB9LAor ICAgIHsgIlVncmF2ZSIsIDB4MGQ5IH0sCisgICAgeyAiVWFjdXRlIiwgMHgwZGEgfSwKKyAgICB7 ICJVY2lyY3VtZmxleCIsIDB4MGRiIH0sCisgICAgeyAiVWRpYWVyZXNpcyIsIDB4MGRjIH0sCisg ICAgeyAiWWFjdXRlIiwgMHgwZGQgfSwKKyAgICB7ICJUSE9STiIsIDB4MGRlIH0sCisgICAgeyAi VGhvcm4iLCAweDBkZSB9LAorICAgIHsgInNzaGFycCIsIDB4MGRmIH0sCisgICAgeyAiYWdyYXZl IiwgMHgwZTAgfSwKKyAgICB7ICJhYWN1dGUiLCAweDBlMSB9LAorICAgIHsgImFjaXJjdW1mbGV4 IiwgMHgwZTIgfSwKKyAgICB7ICJhdGlsZGUiLCAweDBlMyB9LAorICAgIHsgImFkaWFlcmVzaXMi LCAweDBlNCB9LAorICAgIHsgImFyaW5nIiwgMHgwZTUgfSwKKyAgICB7ICJhZSIsIDB4MGU2IH0s CisgICAgeyAiY2NlZGlsbGEiLCAweDBlNyB9LAorICAgIHsgImVncmF2ZSIsIDB4MGU4IH0sCisg ICAgeyAiZWFjdXRlIiwgMHgwZTkgfSwKKyAgICB7ICJlY2lyY3VtZmxleCIsIDB4MGVhIH0sCisg ICAgeyAiZWRpYWVyZXNpcyIsIDB4MGViIH0sCisgICAgeyAiaWdyYXZlIiwgMHgwZWMgfSwKKyAg ICB7ICJpYWN1dGUiLCAweDBlZCB9LAorICAgIHsgImljaXJjdW1mbGV4IiwgMHgwZWUgfSwKKyAg ICB7ICJpZGlhZXJlc2lzIiwgMHgwZWYgfSwKKyAgICB7ICJldGgiLCAweDBmMCB9LAorICAgIHsg Im50aWxkZSIsIDB4MGYxIH0sCisgICAgeyAib2dyYXZlIiwgMHgwZjIgfSwKKyAgICB7ICJvYWN1 dGUiLCAweDBmMyB9LAorICAgIHsgIm9jaXJjdW1mbGV4IiwgMHgwZjQgfSwKKyAgICB7ICJvdGls ZGUiLCAweDBmNSB9LAorICAgIHsgIm9kaWFlcmVzaXMiLCAweDBmNiB9LAorICAgIHsgImRpdmlz aW9uIiwgMHgwZjcgfSwKKyAgICB7ICJvc2xhc2giLCAweDBmOCB9LAorICAgIHsgIm9vYmxpcXVl IiwgMHgwZjggfSwKKyAgICB7ICJ1Z3JhdmUiLCAweDBmOSB9LAorICAgIHsgInVhY3V0ZSIsIDB4 MGZhIH0sCisgICAgeyAidWNpcmN1bWZsZXgiLCAweDBmYiB9LAorICAgIHsgInVkaWFlcmVzaXMi LCAweDBmYyB9LAorICAgIHsgInlhY3V0ZSIsIDB4MGZkIH0sCisgICAgeyAidGhvcm4iLCAweDBm ZSB9LAorICAgIHsgInlkaWFlcmVzaXMiLCAweDBmZiB9LAorCisgICAgLyogU3BlY2lhbCBrZXlz ICovCisgICAgeyAiQmFja1NwYWNlIiwgMHgwN2YgfSwKKyAgICB7ICJUYWIiLCAnXHQnIH0sCisg ICAgeyAiUmV0dXJuIiwgJ1xyJyB9LAorICAgIHsgIlJpZ2h0IiwgMHgxMDUgfSwKKyAgICB7ICJM ZWZ0IiwgMHgxMDQgfSwKKyAgICB7ICJVcCIsIDB4MTAzIH0sCisgICAgeyAiRG93biIsIDB4MTAy IH0sCisgICAgeyAiUGFnZV9Eb3duIiwgMHgxNTIgfSwKKyAgICB7ICJQYWdlX1VwIiwgMHgxNTMg fSwKKyAgICB7ICJJbnNlcnQiLCAweDE0YiB9LAorICAgIHsgIkRlbGV0ZSIsIDB4MTRhIH0sCisg ICAgeyAiSG9tZSIsIDB4MTA2IH0sCisgICAgeyAiRW5kIiwgMHgxNjggfSwKKyAgICB7ICJGMSIs IDB4MTA5IH0sCisgICAgeyAiRjIiLCAweDEwYSB9LAorICAgIHsgIkYzIiwgMHgxMGIgfSwKKyAg ICB7ICJGNCIsIDB4MTBjIH0sCisgICAgeyAiRjUiLCAweDEwZCB9LAorICAgIHsgIkY2IiwgMHgx MGUgfSwKKyAgICB7ICJGNyIsIDB4MTBmIH0sCisgICAgeyAiRjgiLCAweDExMCB9LAorICAgIHsg IkY5IiwgMHgxMTEgfSwKKyAgICB7ICJGMTAiLCAweDExMiB9LAorICAgIHsgIkYxMSIsIDB4MTEz IH0sCisgICAgeyAiRjEyIiwgMHgxMTQgfSwKKyAgICB7ICJGMTMiLCAweDExNSB9LAorICAgIHsg IkYxNCIsIDB4MTE2IH0sCisgICAgeyAiRjE1IiwgMHgxMTcgfSwKKyAgICB7ICJGMTYiLCAweDEx OCB9LAorICAgIHsgIkYxNyIsIDB4MTE5IH0sCisgICAgeyAiRjE4IiwgMHgxMWEgfSwKKyAgICB7 ICJGMTkiLCAweDExYiB9LAorICAgIHsgIkYyMCIsIDB4MTFjIH0sCisgICAgeyAiRXNjYXBlIiwg MjcgfSwKKworICAgIHsgMCwgMCB9LAorfTsKZGlmZiAtLWdpdCBhL2h3L2NpcnJ1c192Z2EuYyBi L2h3L2NpcnJ1c192Z2EuYwppbmRleCA1OWJmZGZmLi4wN2U1MmIwIDEwMDY0NAotLS0gYS9ody9j aXJydXNfdmdhLmMKKysrIGIvaHcvY2lycnVzX3ZnYS5jCkBAIC0zMjU3LDcgKzMyNTcsOCBAQCB2 b2lkIHBjaV9jaXJydXNfdmdhX2luaXQoUENJQnVzICpidXMsIERpc3BsYXlTdGF0ZSAqZHMsIHVp bnQ4X3QgKnZnYV9yYW1fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgZHMsIHZnYV9yYW1fYmFz ZSwgdmdhX3JhbV9vZmZzZXQsIHZnYV9yYW1fc2l6ZSk7CiAgICAgY2lycnVzX2luaXRfY29tbW9u KHMsIGRldmljZV9pZCwgMSk7CiAKLSAgICBncmFwaGljX2NvbnNvbGVfaW5pdChzLT5kcywgcy0+ dXBkYXRlLCBzLT5pbnZhbGlkYXRlLCBzLT5zY3JlZW5fZHVtcCwgcyk7CisgICAgZ3JhcGhpY19j b25zb2xlX2luaXQocy0+ZHMsIHMtPnVwZGF0ZSwgcy0+aW52YWxpZGF0ZSwgcy0+c2NyZWVuX2R1 bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgcy0+dGV4dF91cGRhdGUsIHMpOwogCiAgICAg cy0+cGNpX2RldiA9IChQQ0lEZXZpY2UgKilkOwogCmRpZmYgLS1naXQgYS9ody9qYXp6X2xlZC5j IGIvaHcvamF6el9sZWQuYwppbmRleCBhMGVlYTI2Li5kNTQ3MTM4IDEwMDY0NAotLS0gYS9ody9q YXp6X2xlZC5jCisrKyBiL2h3L2phenpfbGVkLmMKQEAgLTI4NSw2ICsyODUsMjIgQEAgc3RhdGlj IHZvaWQgamF6el9sZWRfc2NyZWVuX2R1bXAodm9pZCAqb3BhcXVlLCBjb25zdCBjaGFyICpmaWxl bmFtZSkKICAgICBwcmludGYoImphenpfbGVkX3NjcmVlbl9kdW1wKCkgbm90IGltcGxlbWVudGVk XG4iKTsKIH0KIAorc3RhdGljIHZvaWQgamF6el9sZWRfdGV4dF91cGRhdGUodm9pZCAqb3BhcXVl LCBjb25zb2xlX2NoX3QgKmNoYXJkYXRhKQoreworICAgIExlZFN0YXRlICpzID0gb3BhcXVlOwor ICAgIGNoYXIgYnVmWzJdOworCisgICAgZHB5X2N1cnNvcihzLT5kcywgLTEsIC0xKTsKKyAgICBk cHlfcmVzaXplKHMtPmRzLCAyLCAxKTsKKworICAgIC8qIFRPRE86IGRyYXcgdGhlIHNlZ21lbnRz ICovCisgICAgc25wcmludGYoYnVmLCAyLCAiJTAyaGh4XG4iLCBzLT5zZWdtZW50cyk7CisgICAg Y29uc29sZV93cml0ZV9jaChjaGFyZGF0YSsrLCAweDAwMjAwMTAwIHwgYnVmWzBdKTsKKyAgICBj b25zb2xlX3dyaXRlX2NoKGNoYXJkYXRhKyssIDB4MDAyMDAxMDAgfCBidWZbMV0pOworCisgICAg ZHB5X3VwZGF0ZShzLT5kcywgMCwgMCwgMiwgMSk7Cit9CisKIHZvaWQgamF6el9sZWRfaW5pdChE aXNwbGF5U3RhdGUgKmRzLCB0YXJnZXRfcGh5c19hZGRyX3QgYmFzZSkKIHsKICAgICBMZWRTdGF0 ZSAqczsKQEAgLTMwMSw1ICszMTcsNyBAQCB2b2lkIGphenpfbGVkX2luaXQoRGlzcGxheVN0YXRl ICpkcywgdGFyZ2V0X3BoeXNfYWRkcl90IGJhc2UpCiAgICAgaW8gPSBjcHVfcmVnaXN0ZXJfaW9f bWVtb3J5KDAsIGxlZF9yZWFkLCBsZWRfd3JpdGUsIHMpOwogICAgIGNwdV9yZWdpc3Rlcl9waHlz aWNhbF9tZW1vcnkocy0+YmFzZSwgMSwgaW8pOwogCi0gICAgZ3JhcGhpY19jb25zb2xlX2luaXQo ZHMsIGphenpfbGVkX3VwZGF0ZV9kaXNwbGF5LCBqYXp6X2xlZF9pbnZhbGlkYXRlX2Rpc3BsYXks IGphenpfbGVkX3NjcmVlbl9kdW1wLCBzKTsKKyAgICBncmFwaGljX2NvbnNvbGVfaW5pdChkcywg amF6el9sZWRfdXBkYXRlX2Rpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgamF6el9s ZWRfaW52YWxpZGF0ZV9kaXNwbGF5LCBqYXp6X2xlZF9zY3JlZW5fZHVtcCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBqYXp6X2xlZF90ZXh0X3VwZGF0ZSwgcyk7CiB9CmRpZmYgLS1naXQgYS9o dy9vbWFwX2xjZGMuYyBiL2h3L29tYXBfbGNkYy5jCmluZGV4IGM3OWQyNDQuLjQyMTc0ZjcgMTAw NjQ0Ci0tLSBhL2h3L29tYXBfbGNkYy5jCisrKyBiL2h3L29tYXBfbGNkYy5jCkBAIC00OTUsNyAr NDk1LDcgQEAgc3RydWN0IG9tYXBfbGNkX3BhbmVsX3MgKm9tYXBfbGNkY19pbml0KHRhcmdldF9w aHlzX2FkZHJfdCBiYXNlLCBxZW11X2lycSBpcnEsCiAgICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2Fs X21lbW9yeShzLT5iYXNlLCAweDEwMCwgaW9tZW10eXBlKTsKIAogICAgIGdyYXBoaWNfY29uc29s ZV9pbml0KGRzLCBvbWFwX3VwZGF0ZV9kaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICBvbWFw X2ludmFsaWRhdGVfZGlzcGxheSwgb21hcF9zY3JlZW5fZHVtcCwgcyk7CisgICAgICAgICAgICAg ICAgICAgIG9tYXBfaW52YWxpZGF0ZV9kaXNwbGF5LCBvbWFwX3NjcmVlbl9kdW1wLCBOVUxMLCBz KTsKIAogICAgIHJldHVybiBzOwogfQpkaWZmIC0tZ2l0IGEvaHcvcGwxMTAuYyBiL2h3L3BsMTEw LmMKaW5kZXggZTViMmIyMy4uN2Y0NTA4NSAxMDA2NDQKLS0tIGEvaHcvcGwxMTAuYworKysgYi9o dy9wbDExMC5jCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCAqcGwxMTBfaW5pdChEaXNwbGF5U3Rh dGUgKmRzLCB1aW50MzJfdCBiYXNlLCBxZW11X2lycSBpcnEsCiAgICAgcy0+dmVyc2F0aWxlID0g dmVyc2F0aWxlOwogICAgIHMtPmlycSA9IGlycTsKICAgICBncmFwaGljX2NvbnNvbGVfaW5pdChk cywgcGwxMTBfdXBkYXRlX2Rpc3BsYXksIHBsMTEwX2ludmFsaWRhdGVfZGlzcGxheSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLCBOVUxMLCBzKTsKICAgICAvKiA/Pz8gU2F2ZS9yZXN0b3JlLiAgKi8KICAgICByZXR1cm4g czsKIH0KZGlmZiAtLWdpdCBhL2h3L3B4YTJ4eF9sY2QuYyBiL2h3L3B4YTJ4eF9sY2QuYwppbmRl eCA1ODU1NDM1Li43MjAzYTNmIDEwMDY0NAotLS0gYS9ody9weGEyeHhfbGNkLmMKKysrIGIvaHcv cHhhMnh4X2xjZC5jCkBAIC0xMDAyLDcgKzEwMDIsNyBAQCBzdHJ1Y3QgcHhhMnh4X2xjZGNfcyAq cHhhMnh4X2xjZGNfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYmFzZSwgcWVtdV9pcnEgaXJxLAog ICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoYmFzZSwgMHgwMDEwMDAwMCwgaW9tZW10 eXBlKTsKIAogICAgIGdyYXBoaWNfY29uc29sZV9pbml0KGRzLCBweGEyeHhfdXBkYXRlX2Rpc3Bs YXksCi0gICAgICAgICAgICAgICAgICAgIHB4YTJ4eF9pbnZhbGlkYXRlX2Rpc3BsYXksIHB4YTJ4 eF9zY3JlZW5fZHVtcCwgcyk7CisgICAgICAgICAgICAgICAgICAgIHB4YTJ4eF9pbnZhbGlkYXRl X2Rpc3BsYXksIHB4YTJ4eF9zY3JlZW5fZHVtcCwgTlVMTCwgcyk7CiAKICAgICBzd2l0Y2ggKHMt PmRzLT5kZXB0aCkgewogICAgIGNhc2UgMDoKZGlmZiAtLWdpdCBhL2h3L3NzZDAzMDMuYyBiL2h3 L3NzZDAzMDMuYwppbmRleCAzODNhNjIzLi5kYWE5MjkyIDEwMDY0NAotLS0gYS9ody9zc2QwMzAz LmMKKysrIGIvaHcvc3NkMDMwMy5jCkBAIC0yNzAsNiArMjcwLDYgQEAgdm9pZCBzc2QwMzAzX2lu aXQoRGlzcGxheVN0YXRlICpkcywgaTJjX2J1cyAqYnVzLCBpbnQgYWRkcmVzcykKICAgICBzLT5p MmMucmVjdiA9IHNzZDAzMDNfcmVjdjsKICAgICBzLT5pMmMuc2VuZCA9IHNzZDAzMDNfc2VuZDsK ICAgICBncmFwaGljX2NvbnNvbGVfaW5pdChkcywgc3NkMDMwM191cGRhdGVfZGlzcGxheSwgc3Nk MDMwM19pbnZhbGlkYXRlX2Rpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwg cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgcyk7CiAgICAgZHB5X3Jl c2l6ZShzLT5kcywgOTYgKiBNQUdOSUZZLCAxNiAqIE1BR05JRlkpOwogfQpkaWZmIC0tZ2l0IGEv aHcvc3NkMDMyMy5jIGIvaHcvc3NkMDMyMy5jCmluZGV4IDQ3MDZiMDUuLmUyZTYxOWYgMTAwNjQ0 Ci0tLSBhL2h3L3NzZDAzMjMuYworKysgYi9ody9zc2QwMzIzLmMKQEAgLTI4MCw3ICsyODAsNyBA QCB2b2lkICpzc2QwMzIzX2luaXQoRGlzcGxheVN0YXRlICpkcywgcWVtdV9pcnEgKmNtZF9wKQog ICAgIHMgPSAoc3NkMDMyM19zdGF0ZSAqKXFlbXVfbWFsbG9jeihzaXplb2Yoc3NkMDMyM19zdGF0 ZSkpOwogICAgIHMtPmRzID0gZHM7CiAgICAgZ3JhcGhpY19jb25zb2xlX2luaXQoZHMsIHNzZDAz MjNfdXBkYXRlX2Rpc3BsYXksIHNzZDAzMjNfaW52YWxpZGF0ZV9kaXNwbGF5LAotICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsIHMpOworICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws IE5VTEwsIHMpOwogICAgIGRweV9yZXNpemUocy0+ZHMsIDEyOCAqIE1BR05JRlksIDY0ICogTUFH TklGWSk7CiAgICAgcy0+Y29sX2VuZCA9IDYzOwogICAgIHMtPnJvd19lbmQgPSA3OTsKZGlmZiAt LWdpdCBhL2h3L3RjeC5jIGIvaHcvdGN4LmMKaW5kZXggYWZhZmEyYS4uZjZkM2Q0YyAxMDA2NDQK LS0tIGEvaHcvdGN4LmMKKysrIGIvaHcvdGN4LmMKQEAgLTUzNywxMiArNTM3LDEzIEBAIHZvaWQg dGN4X2luaXQoRGlzcGxheVN0YXRlICpkcywgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQ4 X3QgKnZyYW1fYmFzZSwKICAgICAgICAgcy0+Y3BsYW5lX29mZnNldCA9IHZyYW1fb2Zmc2V0Owog ICAgICAgICBjcHVfcmVnaXN0ZXJfcGh5c2ljYWxfbWVtb3J5KGFkZHIgKyAweDBhMDAwMDAwVUxM LCBzaXplLCB2cmFtX29mZnNldCk7CiAgICAgICAgIGdyYXBoaWNfY29uc29sZV9pbml0KHMtPmRz LCB0Y3gyNF91cGRhdGVfZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGN4 MjRfaW52YWxpZGF0ZV9kaXNwbGF5LCB0Y3gyNF9zY3JlZW5fZHVtcCwgcyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRjeDI0X2ludmFsaWRhdGVfZGlzcGxheSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGN4MjRfc2NyZWVuX2R1bXAsIE5VTEwsIHMpOwogICAgIH0gZWxz ZSB7CiAgICAgICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoYWRkciArIDB4MDAzMDAw MDBVTEwsIFRDWF9USENfTlJFR1NfOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkdW1teV9tZW1vcnkpOwogICAgICAgICBncmFwaGljX2NvbnNvbGVfaW5pdChzLT5kcywg dGN4X3VwZGF0ZV9kaXNwbGF5LCB0Y3hfaW52YWxpZGF0ZV9kaXNwbGF5LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0Y3hfc2NyZWVuX2R1bXAsIHMpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0Y3hfc2NyZWVuX2R1bXAsIE5VTEwsIHMpOwogICAgIH0KICAgICAvLyBOZXRC U0Qgd3JpdGVzIGhlcmUgZXZlbiB3aXRoIDgtYml0IGRpc3BsYXkKICAgICBjcHVfcmVnaXN0ZXJf cGh5c2ljYWxfbWVtb3J5KGFkZHIgKyAweDAwMzAxMDAwVUxMLCBUQ1hfVEhDX05SRUdTXzI0LApk aWZmIC0tZ2l0IGEvaHcvdmdhLmMgYi9ody92Z2EuYwppbmRleCA3MGI3YzZkLi45OWEzMTczIDEw MDY0NAotLS0gYS9ody92Z2EuYworKysgYi9ody92Z2EuYwpAQCAtMTY2MCw2ICsxNjYwLDE2NSBA QCBzdGF0aWMgdm9pZCB2Z2FfcmVzZXQoVkdBU3RhdGUgKnMpCiAgICAgcy0+Z3JhcGhpY19tb2Rl ID0gLTE7IC8qIGZvcmNlIGZ1bGwgdXBkYXRlICovCiB9CiAKKyNkZWZpbmUgVEVYVE1PREVfWCh4 KQkoKHgpICUgd2lkdGgpCisjZGVmaW5lIFRFWFRNT0RFX1koeCkJKCh4KSAvIHdpZHRoKQorI2Rl ZmluZSBWTUVNMkNIVFlQRSh2KQkoKHYgJiAweGZmMDAwN2ZmKSB8IFwKKyAgICAgICAgKCh2ICYg MHgwMDAwMDgwMCkgPDwgMTApIHwgKCh2ICYgMHgwMDAwNzAwMCkgPj4gMSkpCisvKiByZWxheSB0 ZXh0IHJlbmRlcmluZyB0byB0aGUgZGlzcGxheSBkcml2ZXIKKyAqIGluc3RlYWQgb2YgZG9pbmcg YSBmdWxsIHZnYV91cGRhdGVfZGlzcGxheSgpICovCitzdGF0aWMgdm9pZCB2Z2FfdXBkYXRlX3Rl eHQodm9pZCAqb3BhcXVlLCBjb25zb2xlX2NoX3QgKmNoYXJkYXRhKQoreworICAgIFZHQVN0YXRl ICpzID0gKFZHQVN0YXRlICopIG9wYXF1ZTsKKyAgICBpbnQgZ3JhcGhpY19tb2RlLCBpLCBjdXJz b3Jfb2Zmc2V0LCBjdXJzb3JfdmlzaWJsZTsKKyAgICBpbnQgY3csIGNoZWlnaHQsIHdpZHRoLCBo ZWlnaHQsIHNpemUsIGNfbWluLCBjX21heDsKKyAgICB1aW50MzJfdCAqc3JjOworICAgIGNvbnNv bGVfY2hfdCAqZHN0LCB2YWw7CisgICAgY2hhciBtc2dfYnVmZmVyWzgwXTsKKyAgICBpbnQgZnVs bF91cGRhdGU7CisgICAgZnVsbF91cGRhdGUgPSAwOworCisgICAgaWYgKCEocy0+YXJfaW5kZXgg JiAweDIwKSkgeworICAgICAgICBncmFwaGljX21vZGUgPSBHTU9ERV9CTEFOSzsKKyAgICB9IGVs c2UgeworICAgICAgICBncmFwaGljX21vZGUgPSBzLT5ncls2XSAmIDE7CisgICAgfQorICAgIGlm IChncmFwaGljX21vZGUgIT0gcy0+Z3JhcGhpY19tb2RlKSB7CisgICAgICAgIHMtPmdyYXBoaWNf bW9kZSA9IGdyYXBoaWNfbW9kZTsKKyAgICAgICAgZnVsbF91cGRhdGUgPSAxOworICAgIH0KKyAg ICBpZiAocy0+bGFzdF93aWR0aCA9PSAtMSkgeworICAgICAgICBzLT5sYXN0X3dpZHRoID0gMDsK KyAgICAgICAgZnVsbF91cGRhdGUgPSAxOworICAgIH0KKworICAgIHN3aXRjaCAoZ3JhcGhpY19t b2RlKSB7CisgICAgY2FzZSBHTU9ERV9URVhUOgorICAgICAgICAvKiBUT0RPOiB1cGRhdGUgcGFs ZXR0ZSAqLworICAgICAgICBmdWxsX3VwZGF0ZSB8PSB1cGRhdGVfYmFzaWNfcGFyYW1zKHMpOwor CisgICAgICAgIC8qIHRvdGFsIHdpZHRoICYgaGVpZ2h0ICovCisgICAgICAgIGNoZWlnaHQgPSAo cy0+Y3JbOV0gJiAweDFmKSArIDE7CisgICAgICAgIGN3ID0gODsKKyAgICAgICAgaWYgKCEocy0+ c3JbMV0gJiAweDAxKSkKKyAgICAgICAgICAgIGN3ID0gOTsKKyAgICAgICAgaWYgKHMtPnNyWzFd ICYgMHgwOCkKKyAgICAgICAgICAgIGN3ID0gMTY7IC8qIE5PVEU6IG5vIDE4IHBpeGVsIHdpZGUg Ki8KKyAgICAgICAgd2lkdGggPSAocy0+Y3JbMHgwMV0gKyAxKTsKKyAgICAgICAgaWYgKHMtPmNy WzB4MDZdID09IDEwMCkgeworICAgICAgICAgICAgLyogdWdseSBoYWNrIGZvciBDR0EgMTYweDEw MHgxNiAtIGV4cGxhaW4gbWUgdGhlIGxvZ2ljICovCisgICAgICAgICAgICBoZWlnaHQgPSAxMDA7 CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBoZWlnaHQgPSBzLT5jclsweDEyXSB8IAor ICAgICAgICAgICAgICAgICgocy0+Y3JbMHgwN10gJiAweDAyKSA8PCA3KSB8IAorICAgICAgICAg ICAgICAgICgocy0+Y3JbMHgwN10gJiAweDQwKSA8PCAzKTsKKyAgICAgICAgICAgIGhlaWdodCA9 IChoZWlnaHQgKyAxKSAvIGNoZWlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBzaXplID0gKGhl aWdodCAqIHdpZHRoKTsKKyAgICAgICAgaWYgKHNpemUgPiBDSF9BVFRSX1NJWkUpIHsKKyAgICAg ICAgICAgIGlmICghZnVsbF91cGRhdGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg ICAgICAgICBzcHJpbnRmKG1zZ19idWZmZXIsICIlaSB4ICVpIFRleHQgbW9kZSIsIHdpZHRoLCBo ZWlnaHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lk dGggIT0gcy0+bGFzdF93aWR0aCB8fCBoZWlnaHQgIT0gcy0+bGFzdF9oZWlnaHQgfHwKKyAgICAg ICAgICAgIGN3ICE9IHMtPmxhc3RfY3cgfHwgY2hlaWdodCAhPSBzLT5sYXN0X2NoKSB7CisgICAg ICAgICAgICBzLT5sYXN0X3Njcl93aWR0aCA9IHdpZHRoICogY3c7CisgICAgICAgICAgICBzLT5s YXN0X3Njcl9oZWlnaHQgPSBoZWlnaHQgKiBjaGVpZ2h0OworICAgICAgICAgICAgZHB5X3Jlc2l6 ZShzLT5kcywgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBzLT5sYXN0X3dpZHRoID0gd2lk dGg7CisgICAgICAgICAgICBzLT5sYXN0X2hlaWdodCA9IGhlaWdodDsKKyAgICAgICAgICAgIHMt Pmxhc3RfY2ggPSBjaGVpZ2h0OworICAgICAgICAgICAgcy0+bGFzdF9jdyA9IGN3OworICAgICAg ICAgICAgZnVsbF91cGRhdGUgPSAxOworICAgICAgICB9CisKKyAgICAgICAgLyogVXBkYXRlICJo YXJkd2FyZSIgY3Vyc29yICovCisgICAgICAgIGN1cnNvcl9vZmZzZXQgPSAoKHMtPmNyWzB4MGVd IDw8IDgpIHwgcy0+Y3JbMHgwZl0pIC0gcy0+c3RhcnRfYWRkcjsKKyAgICAgICAgaWYgKGN1cnNv cl9vZmZzZXQgIT0gcy0+Y3Vyc29yX29mZnNldCB8fAorICAgICAgICAgICAgcy0+Y3JbMHhhXSAh PSBzLT5jdXJzb3Jfc3RhcnQgfHwKKyAgICAgICAgICAgIHMtPmNyWzB4Yl0gIT0gcy0+Y3Vyc29y X2VuZCB8fCBmdWxsX3VwZGF0ZSkgeworICAgICAgICAgICAgY3Vyc29yX3Zpc2libGUgPSAhKHMt PmNyWzB4YV0gJiAweDIwKTsKKyAgICAgICAgICAgIGlmIChjdXJzb3JfdmlzaWJsZSAmJiBjdXJz b3Jfb2Zmc2V0IDwgc2l6ZSAmJiBjdXJzb3Jfb2Zmc2V0ID49IDApCisgICAgICAgICAgICAgICAg ZHB5X2N1cnNvcihzLT5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFRNT0RFX1go Y3Vyc29yX29mZnNldCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBURVhUTU9ERV9ZKGN1 cnNvcl9vZmZzZXQpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkcHlfY3Vy c29yKHMtPmRzLCAtMSwgLTEpOworICAgICAgICAgICAgcy0+Y3Vyc29yX29mZnNldCA9IGN1cnNv cl9vZmZzZXQ7CisgICAgICAgICAgICBzLT5jdXJzb3Jfc3RhcnQgPSBzLT5jclsweGFdOworICAg ICAgICAgICAgcy0+Y3Vyc29yX2VuZCA9IHMtPmNyWzB4Yl07CisgICAgICAgIH0KKworICAgICAg ICBzcmMgPSAodWludDMyX3QgKikgcy0+dnJhbV9wdHIgKyBzLT5zdGFydF9hZGRyOworICAgICAg ICBkc3QgPSBjaGFyZGF0YTsKKworICAgICAgICBpZiAoZnVsbF91cGRhdGUpIHsKKyAgICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBzcmMgKyssIGRzdCArKywgaSArKykKKyAgICAgICAg ICAgICAgICBjb25zb2xlX3dyaXRlX2NoKGRzdCwgVk1FTTJDSFRZUEUoKnNyYykpOworCisgICAg ICAgICAgICBkcHlfdXBkYXRlKHMtPmRzLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIGNfbWF4ID0gMDsKKworICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHNpemU7IHNyYyArKywgZHN0ICsrLCBpICsrKSB7CisgICAgICAgICAgICAgICAgY29u c29sZV93cml0ZV9jaCgmdmFsLCBWTUVNMkNIVFlQRSgqc3JjKSk7CisgICAgICAgICAgICAgICAg aWYgKCpkc3QgIT0gdmFsKSB7CisgICAgICAgICAgICAgICAgICAgICpkc3QgPSB2YWw7CisgICAg ICAgICAgICAgICAgICAgIGNfbWF4ID0gaTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY19taW4gPSBpOwor ICAgICAgICAgICAgZm9yICg7IGkgPCBzaXplOyBzcmMgKyssIGRzdCArKywgaSArKykgeworICAg ICAgICAgICAgICAgIGNvbnNvbGVfd3JpdGVfY2goJnZhbCwgVk1FTTJDSFRZUEUoKnNyYykpOwor ICAgICAgICAgICAgICAgIGlmICgqZHN0ICE9IHZhbCkgeworICAgICAgICAgICAgICAgICAgICAq ZHN0ID0gdmFsOworICAgICAgICAgICAgICAgICAgICBjX21heCA9IGk7CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY19taW4gPD0gY19tYXgpIHsK KyAgICAgICAgICAgICAgICBpID0gVEVYVE1PREVfWShjX21pbik7CisgICAgICAgICAgICAgICAg ZHB5X3VwZGF0ZShzLT5kcywgMCwgaSwgd2lkdGgsIFRFWFRNT0RFX1koY19tYXgpIC0gaSArIDEp OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug R01PREVfR1JBUEg6CisgICAgICAgIGlmICghZnVsbF91cGRhdGUpCisgICAgICAgICAgICByZXR1 cm47CisKKyAgICAgICAgcy0+Z2V0X3Jlc29sdXRpb24ocywgJndpZHRoLCAmaGVpZ2h0KTsKKyAg ICAgICAgc3ByaW50Zihtc2dfYnVmZmVyLCAiJWkgeCAlaSBHcmFwaGljIG1vZGUiLCB3aWR0aCwg aGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHTU9ERV9CTEFOSzoKKyAgICBkZWZh dWx0OgorICAgICAgICBpZiAoIWZ1bGxfdXBkYXRlKQorICAgICAgICAgICAgcmV0dXJuOworCisg ICAgICAgIHNwcmludGYobXNnX2J1ZmZlciwgIlZHQSBCbGFuayBtb2RlIik7CisgICAgICAgIGJy ZWFrOworICAgIH0KKworICAgIC8qIERpc3BsYXkgYSBtZXNzYWdlICovCisgICAgZHB5X2N1cnNv cihzLT5kcywgLTEsIC0xKTsKKyAgICBkcHlfcmVzaXplKHMtPmRzLCA2MCwgMyk7CisKKyAgICBm b3IgKGRzdCA9IGNoYXJkYXRhLCBpID0gMDsgaSA8IDYwICogMzsgaSArKykKKyAgICAgICAgY29u c29sZV93cml0ZV9jaChkc3QgKyssICcgJyk7CisKKyAgICBzaXplID0gc3RybGVuKG1zZ19idWZm ZXIpOworICAgIHdpZHRoID0gKDYwIC0gc2l6ZSkgLyAyOworICAgIGRzdCA9IGNoYXJkYXRhICsg NjAgKyB3aWR0aDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSArKykKKyAgICAgICAgY29u c29sZV93cml0ZV9jaChkc3QgKyssIDB4MDAyMDAxMDAgfCBtc2dfYnVmZmVyW2ldKTsKKworICAg IGRweV91cGRhdGUocy0+ZHMsIDAsIDAsIDYwLCAzKTsKK30KKwogc3RhdGljIENQVVJlYWRNZW1v cnlGdW5jICp2Z2FfbWVtX3JlYWRbM10gPSB7CiAgICAgdmdhX21lbV9yZWFkYiwKICAgICB2Z2Ff bWVtX3JlYWR3LApAQCAtMTgzMCw2ICsxOTg5LDcgQEAgdm9pZCB2Z2FfY29tbW9uX2luaXQoVkdB U3RhdGUgKnMsIERpc3BsYXlTdGF0ZSAqZHMsIHVpbnQ4X3QgKnZnYV9yYW1fYmFzZSwKICAgICBz LT51cGRhdGUgPSB2Z2FfdXBkYXRlX2Rpc3BsYXk7CiAgICAgcy0+aW52YWxpZGF0ZSA9IHZnYV9p bnZhbGlkYXRlX2Rpc3BsYXk7CiAgICAgcy0+c2NyZWVuX2R1bXAgPSB2Z2Ffc2NyZWVuX2R1bXA7 CisgICAgcy0+dGV4dF91cGRhdGUgPSB2Z2FfdXBkYXRlX3RleHQ7CiB9CiAKIC8qIHVzZWQgYnkg Ym90aCBJU0EgYW5kIFBDSSAqLwpAQCAtMTk3MSw3ICsyMTMxLDggQEAgaW50IGlzYV92Z2FfaW5p dChEaXNwbGF5U3RhdGUgKmRzLCB1aW50OF90ICp2Z2FfcmFtX2Jhc2UsCiAgICAgdmdhX2NvbW1v bl9pbml0KHMsIGRzLCB2Z2FfcmFtX2Jhc2UsIHZnYV9yYW1fb2Zmc2V0LCB2Z2FfcmFtX3NpemUp OwogICAgIHZnYV9pbml0KHMpOwogCi0gICAgZ3JhcGhpY19jb25zb2xlX2luaXQocy0+ZHMsIHMt PnVwZGF0ZSwgcy0+aW52YWxpZGF0ZSwgcy0+c2NyZWVuX2R1bXAsIHMpOworICAgIGdyYXBoaWNf Y29uc29sZV9pbml0KHMtPmRzLCBzLT51cGRhdGUsIHMtPmludmFsaWRhdGUsIHMtPnNjcmVlbl9k dW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnRleHRfdXBkYXRlLCBzKTsKIAogI2lm ZGVmIENPTkZJR19CT0NIU19WQkUKICAgICAvKiBYWFg6IHVzZSBvcHRpbWl6ZWQgc3RhbmRhcmQg dmdhIGFjY2Vzc2VzICovCkBAIC0xOTk1LDcgKzIxNTYsOCBAQCBpbnQgaXNhX3ZnYV9tbV9pbml0 KERpc3BsYXlTdGF0ZSAqZHMsIHVpbnQ4X3QgKnZnYV9yYW1fYmFzZSwKICAgICB2Z2FfY29tbW9u X2luaXQocywgZHMsIHZnYV9yYW1fYmFzZSwgdmdhX3JhbV9vZmZzZXQsIHZnYV9yYW1fc2l6ZSk7 CiAgICAgdmdhX21tX2luaXQocywgdnJhbV9iYXNlLCBjdHJsX2Jhc2UsIGl0X3NoaWZ0KTsKIAot ICAgIGdyYXBoaWNfY29uc29sZV9pbml0KHMtPmRzLCBzLT51cGRhdGUsIHMtPmludmFsaWRhdGUs IHMtPnNjcmVlbl9kdW1wLCBzKTsKKyAgICBncmFwaGljX2NvbnNvbGVfaW5pdChzLT5kcywgcy0+ dXBkYXRlLCBzLT5pbnZhbGlkYXRlLCBzLT5zY3JlZW5fZHVtcCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBzLT50ZXh0X3VwZGF0ZSwgcyk7CiAKICNpZmRlZiBDT05GSUdfQk9DSFNfVkJFCiAg ICAgLyogWFhYOiB1c2Ugb3B0aW1pemVkIHN0YW5kYXJkIHZnYSBhY2Nlc3NlcyAqLwpAQCAtMjAy Myw3ICsyMTg1LDggQEAgaW50IHBjaV92Z2FfaW5pdChQQ0lCdXMgKmJ1cywgRGlzcGxheVN0YXRl ICpkcywgdWludDhfdCAqdmdhX3JhbV9iYXNlLAogICAgIHZnYV9jb21tb25faW5pdChzLCBkcywg dmdhX3JhbV9iYXNlLCB2Z2FfcmFtX29mZnNldCwgdmdhX3JhbV9zaXplKTsKICAgICB2Z2FfaW5p dChzKTsKIAotICAgIGdyYXBoaWNfY29uc29sZV9pbml0KHMtPmRzLCBzLT51cGRhdGUsIHMtPmlu dmFsaWRhdGUsIHMtPnNjcmVlbl9kdW1wLCBzKTsKKyAgICBncmFwaGljX2NvbnNvbGVfaW5pdChz LT5kcywgcy0+dXBkYXRlLCBzLT5pbnZhbGlkYXRlLCBzLT5zY3JlZW5fZHVtcCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICBzLT50ZXh0X3VwZGF0ZSwgcyk7CiAKICAgICBzLT5wY2lfZGV2ID0g JmQtPmRldjsKIApkaWZmIC0tZ2l0IGEvaHcvdmdhX2ludC5oIGIvaHcvdmdhX2ludC5oCmluZGV4 IGE5NDE2MmQuLjVkMTFhN2EgMTAwNjQ0Ci0tLSBhL2h3L3ZnYV9pbnQuaAorKysgYi9ody92Z2Ff aW50LmgKQEAgLTEzOSw2ICsxMzksNyBAQAogICAgIHZnYV9od191cGRhdGVfcHRyIHVwZGF0ZTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZnYV9od19p bnZhbGlkYXRlX3B0ciBpbnZhbGlkYXRlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogICAgIHZnYV9od19zY3JlZW5fZHVtcF9wdHIgc2NyZWVuX2R1bXA7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZnYV9od190ZXh0X3VwZGF0ZV9wdHIgdGV4dF91 cGRhdGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIC8qIGhhcmR3YXJl IG1vdXNlIGN1cnNvciBzdXBwb3J0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogICAgIHVpbnQzMl90IGludmFsaWRhdGVkX3lfdGFibGVbVkdBX01BWF9IRUlHSFQgLyAzMl07 ICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgKCpjdXJzb3JfaW52YWxpZGF0ZSkoc3RydWN0 IFZHQVN0YXRlICpzKTsgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvaHcvdm13 YXJlX3ZnYS5jIGIvaHcvdm13YXJlX3ZnYS5jCmluZGV4IDZjYWUyNWMuLjI5ZTM2ZDYgMTAwNjQ0 Ci0tLSBhL2h3L3Ztd2FyZV92Z2EuYworKysgYi9ody92bXdhcmVfdmdhLmMKQEAgLTk0OSw2ICs5 NDksMTQgQEAgc3RhdGljIHZvaWQgdm1zdmdhX3NjcmVlbl9kdW1wKHZvaWQgKm9wYXF1ZSwgY29u c3QgY2hhciAqZmlsZW5hbWUpCiAgICAgfQogfQogCitzdGF0aWMgdm9pZCB2bXN2Z2FfdGV4dF91 cGRhdGUodm9pZCAqb3BhcXVlLCBjb25zb2xlX2NoX3QgKmNoYXJkYXRhKQoreworICAgIHN0cnVj dCB2bXN2Z2Ffc3RhdGVfcyAqcyA9IChzdHJ1Y3Qgdm1zdmdhX3N0YXRlX3MgKikgb3BhcXVlOwor CisgICAgaWYgKHMtPnRleHRfdXBkYXRlKQorICAgICAgICBzLT50ZXh0X3VwZGF0ZShvcGFxdWUs IGNoYXJkYXRhKTsKK30KKwogI2lmZGVmIERJUkVDVF9WUkFNCiBzdGF0aWMgdWludDMyX3Qgdm1z dmdhX3ZyYW1fcmVhZGIodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKIHsK QEAgLTExMTQsNyArMTEyMiw4IEBAIHN0YXRpYyB2b2lkIHZtc3ZnYV9pbml0KHN0cnVjdCB2bXN2 Z2Ffc3RhdGVfcyAqcywgRGlzcGxheVN0YXRlICpkcywKICAgICAgICAgICAgICAgICAgICAgMSwg NCwgdm1zdmdhX2Jpb3Nfd3JpdGUsIHMpOwogCiAgICAgZ3JhcGhpY19jb25zb2xlX2luaXQoZHMs IHZtc3ZnYV91cGRhdGVfZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgdm1zdmdhX2ludmFs aWRhdGVfZGlzcGxheSwgdm1zdmdhX3NjcmVlbl9kdW1wLCBzKTsKKyAgICAgICAgICAgICAgICAg ICAgdm1zdmdhX2ludmFsaWRhdGVfZGlzcGxheSwgdm1zdmdhX3NjcmVlbl9kdW1wLAorICAgICAg ICAgICAgICAgICAgICB2bXN2Z2FfdGV4dF91cGRhdGUsIHMpOwogCiAjaWZkZWYgRU1CRURfU1RE VkdBCiAgICAgdmdhX2NvbW1vbl9pbml0KChWR0FTdGF0ZSAqKSBzLCBkcywKZGlmZiAtLWdpdCBh L21vbml0b3IuYyBiL21vbml0b3IuYwppbmRleCAwNzgzZWFmLi4wMjUwMjViIDEwMDY0NAotLS0g YS9tb25pdG9yLmMKKysrIGIvbW9uaXRvci5jCkBAIC04MjQsNiArODI0LDggQEAgc3RhdGljIGNv bnN0IEtleURlZiBrZXlfZGVmc1tdID0gewogICAgIHsgMHgzMSwgIm4iIH0sCiAgICAgeyAweDMy LCAibSIgfSwKIAorICAgIHsgMHgzNywgImFzdGVyaXNrIiB9LAorCiAgICAgeyAweDM5LCAic3Bj IiB9LAogICAgIHsgMHgzYSwgImNhcHNfbG9jayIgfSwKICAgICB7IDB4M2IsICJmMSIgfSwKZGlm ZiAtLWdpdCBhL3ZsLmMgYi92bC5jCmluZGV4IGEwNGVkYmMuLjcwYjk2NTYgMTAwNjQ0Ci0tLSBh L3ZsLmMKKysrIGIvdmwuYwpAQCAtMTcyLDYgKzE3Miw3IEBAIEJsb2NrRHJpdmVyU3RhdGUgKmJz X3NuYXBzaG90czsKIGludCB2Z2FfcmFtX3NpemU7CiBzdGF0aWMgRGlzcGxheVN0YXRlIGRpc3Bs YXlfc3RhdGU7CiBpbnQgbm9ncmFwaGljOworaW50IGN1cnNlczsKIGNvbnN0IGNoYXIqIGtleWJv YXJkX2xheW91dCA9IE5VTEw7CiBpbnQ2NF90IHRpY2tzX3Blcl9zZWM7CiBpbnQgcmFtX3NpemU7 CkBAIC03NjA1LDYgKzc2MDYsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGludCBleGl0Y29kZSkKICAg ICAgICAgICAgIiAgICAgICAgICAgICAgICAoZGVmYXVsdCBpcyBDTC1HRDU0NDYgUENJIFZHQSlc biIKICAgICAgICAgICAgIi1uby1hY3BpICAgICAgICBkaXNhYmxlIEFDUElcbiIKICNlbmRpZgor I2lmZGVmIENPTkZJR19DVVJTRVMKKyAgICAgICAgICAgIi1jdXJzZXMgICAgICAgICB1c2UgYSBj dXJzZXMvbmN1cnNlcyBpbnRlcmZhY2UgaW5zdGVhZCBvZiBTRExcbiIKKyNlbmRpZgogICAgICAg ICAgICAiLW5vLXJlYm9vdCAgICAgIGV4aXQgaW5zdGVhZCBvZiByZWJvb3RpbmdcbiIKICAgICAg ICAgICAgIi1sb2Fkdm0gZmlsZSAgICBzdGFydCByaWdodCBhd2F5IHdpdGggYSBzYXZlZCBzdGF0 ZSAobG9hZHZtIGluIG1vbml0b3IpXG4iCiAJICAgIi12bmMgZGlzcGxheSAgICBzdGFydCBhIFZO QyBzZXJ2ZXIgb24gZGlzcGxheVxuIgpAQCAtNzcwOSw2ICs3NzEzLDcgQEAgZW51bSB7CiAgICAg UUVNVV9PUFRJT05fc21wLAogICAgIFFFTVVfT1BUSU9OX3ZuYywKICAgICBRRU1VX09QVElPTl9u b19hY3BpLAorICAgIFFFTVVfT1BUSU9OX2N1cnNlcywKICAgICBRRU1VX09QVElPTl9ub19yZWJv b3QsCiAgICAgUUVNVV9PUFRJT05fc2hvd19jdXJzb3IsCiAgICAgUUVNVV9PUFRJT05fZGFlbW9u aXplLApAQCAtNzgwNSw2ICs3ODEwLDkgQEAgY29uc3QgUUVNVU9wdGlvbiBxZW11X29wdGlvbnNb XSA9IHsKICAgICB7ICJ1c2JkZXZpY2UiLCBIQVNfQVJHLCBRRU1VX09QVElPTl91c2JkZXZpY2Ug fSwKICAgICB7ICJzbXAiLCBIQVNfQVJHLCBRRU1VX09QVElPTl9zbXAgfSwKICAgICB7ICJ2bmMi LCBIQVNfQVJHLCBRRU1VX09QVElPTl92bmMgfSwKKyNpZmRlZiBDT05GSUdfQ1VSU0VTCisgICAg eyAiY3Vyc2VzIiwgMCwgUUVNVV9PUFRJT05fY3Vyc2VzIH0sCisjZW5kaWYKIAogICAgIC8qIHRl bXBvcmFyeSBvcHRpb25zICovCiAgICAgeyAidXNiIiwgMCwgUUVNVV9PUFRJT05fdXNiIH0sCkBA IC04MTMxLDYgKzgxMzksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAjZW5k aWYKICAgICBzbmFwc2hvdCA9IDA7CiAgICAgbm9ncmFwaGljID0gMDsKKyAgICBjdXJzZXMgPSAw OwogICAgIGtlcm5lbF9maWxlbmFtZSA9IE5VTEw7CiAgICAga2VybmVsX2NtZGxpbmUgPSAiIjsK ICAgICBjeWxzID0gaGVhZHMgPSBzZWNzID0gMDsKQEAgLTgzMDcsNiArODMxNiwxMSBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgICAgICAgcHN0cmNweShtb25p dG9yX2RldmljZSwgc2l6ZW9mKG1vbml0b3JfZGV2aWNlKSwgInN0ZGlvIik7CiAgICAgICAgICAg ICAgICAgbm9ncmFwaGljID0gMTsKICAgICAgICAgICAgICAgICBicmVhazsKKyNpZmRlZiBDT05G SUdfQ1VSU0VTCisgICAgICAgICAgICBjYXNlIFFFTVVfT1BUSU9OX2N1cnNlczoKKyAgICAgICAg ICAgICAgICBjdXJzZXMgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg ICAgICAgICBjYXNlIFFFTVVfT1BUSU9OX3BvcnRyYWl0OgogICAgICAgICAgICAgICAgIGdyYXBo aWNfcm90YXRlID0gMTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg4NDcsMTMgKzg4NjEs MjMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIC8qIHRlcm1pbmFsIGlu aXQgKi8KICAgICBtZW1zZXQoJmRpc3BsYXlfc3RhdGUsIDAsIHNpemVvZihkaXNwbGF5X3N0YXRl KSk7CiAgICAgaWYgKG5vZ3JhcGhpYykgeworICAgICAgICBpZiAoY3Vyc2VzKSB7CisgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgImZhdGFsOiAtbm9ncmFwaGljIGNhbid0IGJlIHVzZWQgd2l0 aCAtY3Vyc2VzXG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KICAgICAgICAg LyogbmVhcmx5IG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgZHVtYl9kaXNwbGF5X2luaXQoZHMp OwogICAgIH0gZWxzZSBpZiAodm5jX2Rpc3BsYXkgIT0gTlVMTCkgewogICAgICAgICB2bmNfZGlz cGxheV9pbml0KGRzKTsKICAgICAgICAgaWYgKHZuY19kaXNwbGF5X29wZW4oZHMsIHZuY19kaXNw bGF5KSA8IDApCiAgICAgICAgICAgICBleGl0KDEpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNl CisjaWYgZGVmaW5lZChDT05GSUdfQ1VSU0VTKQorICAgIGlmIChjdXJzZXMpIHsKKyAgICAgICAg Y3Vyc2VzX2Rpc3BsYXlfaW5pdChkcywgZnVsbF9zY3JlZW4pOworICAgIH0gZWxzZQorI2VuZGlm CisgICAgewogI2lmIGRlZmluZWQoQ09ORklHX1NETCkKICAgICAgICAgc2RsX2Rpc3BsYXlfaW5p dChkcywgZnVsbF9zY3JlZW4sIG5vX2ZyYW1lKTsKICNlbGlmIGRlZmluZWQoQ09ORklHX0NPQ09B KQpkaWZmIC0tZ2l0IGEvdm5jLmMgYi92bmMuYwppbmRleCA5ZmI4Yzg1Li5kZWE5YTM5IDEwMDY0 NAotLS0gYS92bmMuYworKysgYi92bmMuYwpAQCAtOTU0LDYgKzk1NCw3IEBAIHN0YXRpYyB2b2lk IGRvX2tleV9ldmVudChWbmNTdGF0ZSAqdnMsIGludCBkb3duLCB1aW50MzJfdCBzeW0pCiAgICAg ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSAweDNh OgkJCS8qIENhcHNMb2NrICovCiAgICAgY2FzZSAweDQ1OgkJCS8qIE51bUxvY2sgKi8KICAgICAg ICAgaWYgKCFkb3duKQogICAgICAgICAgICAgdnMtPm1vZGlmaWVyc19zdGF0ZVtrZXljb2RlXSBe PSAxOwo= ------=_Part_23797_25544523.1199983820913--