From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HSK2k-0001vX-Mo for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:32:58 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HSK2h-0001v9-5L for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:32:57 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HSK2h-0001v4-1N for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:32:55 -0500 Received: from nf-out-0910.google.com ([64.233.182.190]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HSK1V-0002W6-1q for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:31:42 -0400 Received: by nf-out-0910.google.com with SMTP id c31so779915nfb for ; Fri, 16 Mar 2007 14:31:33 -0700 (PDT) Message-ID: Date: Fri, 16 Mar 2007 22:31:31 +0100 From: "andrzej zaborowski" Sender: balrogg@gmail.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_99738_13297816.1174080691781" Subject: [Qemu-devel] [PATCH] NAND Flash memory emulation. ECC calculation helpers. Reply-To: balrogg@gmail.com, 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_99738_13297816.1174080691781 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline NAND chip that understands the basic NAND command set (most chips have some own custom commands but operating systems don't use them). It can emulate mostly all of the chips supported by Linux given the manufacturer id and chip id, including large page devices. The table of IDs is taken from Linux. I added a "-mtdblock filename" switch for pointing qemu to the image to use. If no image is given nand.c will store data only in memory and discard it on quit. The patch also has a routine that calculates the ECC checksums that most NAND controllers use (but not the chip itself). Cheers, Andrew ------=_Part_99738_13297816.1174080691781 Content-Type: text/plain; name=0009-NAND-Flash-memory-emulation.-ECC-calculation-helpers.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ezd78wbg Content-Disposition: attachment; filename="0009-NAND-Flash-memory-emulation.-ECC-calculation-helpers.txt" RnJvbSA5OTEyMjYwNGY2Y2QxZmZkYjcxYjlkODlmYWYxYzBkZjk5ZGIyOTM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5vcmc+ CkRhdGU6IEZyaSwgMTYgTWFyIDIwMDcgMTY6NDE6MTggKzAxMDAKU3ViamVjdDogW1BBVENIXSBO QU5EIEZsYXNoIG1lbW9yeSBlbXVsYXRpb24uIEVDQyBjYWxjdWxhdGlvbiBoZWxwZXJzLgoKLS0t CiBlY2MuaCAgICAgfCAgIDc3ICsrKysrKysrCiBody9uYW5kLmMgfCAgNjEzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHZsLmMg ICAgICB8ICAgIDcgKwogdmwuaCAgICAgIHwgICAyMiArKysKIDQgZmlsZXMgY2hhbmdlZCwgNzE5 IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZWNjLmggYi9lY2Mu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWU2ZDAxCi0tLSAvZGV2L251 bGwKKysrIGIvZWNjLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENhbGN1bGF0ZSBFcnJvci1j b3JyZWN0aW5nIENvZGVzLiBVc2VkIGJ5IE5BTkQgRmxhc2ggY29udHJvbGxlcnMKKyAqIChub3Qg YnkgTkFORCBjaGlwcykuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA2IE9wZW5lZGhhbmQgTHRk LgorICogV3JpdHRlbiBieSBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5vcmc+Cisg KgorICogVGhpcyBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR1BMIHYyLgorICovCisK K3N0cnVjdCBlY2Nfc3RhdGVfcyB7CisgICAgdWludDhfdCBjcDsJCS8qIENvbHVtbiBwYXJpdHkg Ki8KKyAgICB1aW50MTZfdCBscFsyXTsJLyogTGluZSBwYXJpdHkgKi8KKyAgICB1aW50MTZfdCBj b3VudDsKK307CisKKy8qCisgKiBQcmUtY2FsY3VsYXRlZCAyNTYtd2F5IDEgYnl0ZSBjb2x1bW4g cGFyaXR5LiAgVGFibGUgYm9ycm93ZWQgZnJvbSBMaW51eC4KKyAqLworc3RhdGljIGNvbnN0IHVp bnQ4X3QgbmFuZF9lY2NfcHJlY2FsY190YWJsZVtdID0geworICAgIDB4MDAsIDB4NTUsIDB4NTYs IDB4MDMsIDB4NTksIDB4MGMsIDB4MGYsIDB4NWEsCisgICAgMHg1YSwgMHgwZiwgMHgwYywgMHg1 OSwgMHgwMywgMHg1NiwgMHg1NSwgMHgwMCwKKyAgICAweDY1LCAweDMwLCAweDMzLCAweDY2LCAw eDNjLCAweDY5LCAweDZhLCAweDNmLAorICAgIDB4M2YsIDB4NmEsIDB4NjksIDB4M2MsIDB4NjYs IDB4MzMsIDB4MzAsIDB4NjUsCisgICAgMHg2NiwgMHgzMywgMHgzMCwgMHg2NSwgMHgzZiwgMHg2 YSwgMHg2OSwgMHgzYywKKyAgICAweDNjLCAweDY5LCAweDZhLCAweDNmLCAweDY1LCAweDMwLCAw eDMzLCAweDY2LAorICAgIDB4MDMsIDB4NTYsIDB4NTUsIDB4MDAsIDB4NWEsIDB4MGYsIDB4MGMs IDB4NTksCisgICAgMHg1OSwgMHgwYywgMHgwZiwgMHg1YSwgMHgwMCwgMHg1NSwgMHg1NiwgMHgw MywKKyAgICAweDY5LCAweDNjLCAweDNmLCAweDZhLCAweDMwLCAweDY1LCAweDY2LCAweDMzLAor ICAgIDB4MzMsIDB4NjYsIDB4NjUsIDB4MzAsIDB4NmEsIDB4M2YsIDB4M2MsIDB4NjksCisgICAg MHgwYywgMHg1OSwgMHg1YSwgMHgwZiwgMHg1NSwgMHgwMCwgMHgwMywgMHg1NiwKKyAgICAweDU2 LCAweDAzLCAweDAwLCAweDU1LCAweDBmLCAweDVhLCAweDU5LCAweDBjLAorICAgIDB4MGYsIDB4 NWEsIDB4NTksIDB4MGMsIDB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsCisgICAgMHg1NSwgMHgwMCwg MHgwMywgMHg1NiwgMHgwYywgMHg1OSwgMHg1YSwgMHgwZiwKKyAgICAweDZhLCAweDNmLCAweDNj LCAweDY5LCAweDMzLCAweDY2LCAweDY1LCAweDMwLAorICAgIDB4MzAsIDB4NjUsIDB4NjYsIDB4 MzMsIDB4NjksIDB4M2MsIDB4M2YsIDB4NmEsCisgICAgMHg2YSwgMHgzZiwgMHgzYywgMHg2OSwg MHgzMywgMHg2NiwgMHg2NSwgMHgzMCwKKyAgICAweDMwLCAweDY1LCAweDY2LCAweDMzLCAweDY5 LCAweDNjLCAweDNmLCAweDZhLAorICAgIDB4MGYsIDB4NWEsIDB4NTksIDB4MGMsIDB4NTYsIDB4 MDMsIDB4MDAsIDB4NTUsCisgICAgMHg1NSwgMHgwMCwgMHgwMywgMHg1NiwgMHgwYywgMHg1OSwg MHg1YSwgMHgwZiwKKyAgICAweDBjLCAweDU5LCAweDVhLCAweDBmLCAweDU1LCAweDAwLCAweDAz LCAweDU2LAorICAgIDB4NTYsIDB4MDMsIDB4MDAsIDB4NTUsIDB4MGYsIDB4NWEsIDB4NTksIDB4 MGMsCisgICAgMHg2OSwgMHgzYywgMHgzZiwgMHg2YSwgMHgzMCwgMHg2NSwgMHg2NiwgMHgzMywK KyAgICAweDMzLCAweDY2LCAweDY1LCAweDMwLCAweDZhLCAweDNmLCAweDNjLCAweDY5LAorICAg IDB4MDMsIDB4NTYsIDB4NTUsIDB4MDAsIDB4NWEsIDB4MGYsIDB4MGMsIDB4NTksCisgICAgMHg1 OSwgMHgwYywgMHgwZiwgMHg1YSwgMHgwMCwgMHg1NSwgMHg1NiwgMHgwMywKKyAgICAweDY2LCAw eDMzLCAweDMwLCAweDY1LCAweDNmLCAweDZhLCAweDY5LCAweDNjLAorICAgIDB4M2MsIDB4Njks IDB4NmEsIDB4M2YsIDB4NjUsIDB4MzAsIDB4MzMsIDB4NjYsCisgICAgMHg2NSwgMHgzMCwgMHgz MywgMHg2NiwgMHgzYywgMHg2OSwgMHg2YSwgMHgzZiwKKyAgICAweDNmLCAweDZhLCAweDY5LCAw eDNjLCAweDY2LCAweDMzLCAweDMwLCAweDY1LAorICAgIDB4MDAsIDB4NTUsIDB4NTYsIDB4MDMs IDB4NTksIDB4MGMsIDB4MGYsIDB4NWEsCisgICAgMHg1YSwgMHgwZiwgMHgwYywgMHg1OSwgMHgw MywgMHg1NiwgMHg1NSwgMHgwMCwKK307CisKKy8qIFVwZGF0ZSBFQ0MgcGFyaXR5IGNvdW50LiAg Ki8KK3N0YXRpYyBpbmxpbmUgdWludDhfdCBlY2NfZGlnZXN0KHN0cnVjdCBlY2Nfc3RhdGVfcyAq cywgdWludDhfdCBzYW1wbGUpCit7CisgICAgdWludDhfdCBpZHggPSBuYW5kX2VjY19wcmVjYWxj X3RhYmxlW3NhbXBsZV07CisKKyAgICBzLT5jcCBePSBpZHggJiAweDNmOworICAgIGlmIChpZHgg JiAweDQwKSB7CisgICAgICAgIHMtPmxwWzBdIF49IH5zLT5jb3VudDsKKyAgICAgICAgcy0+bHBb MV0gXj0gcy0+Y291bnQ7CisgICAgfQorICAgIHMtPmNvdW50ICsrOworCisgICAgcmV0dXJuIHNh bXBsZTsKK30KKworLyogUmVpbml0aWFsaXNlIHRoZSBjb3VudGVycy4gICovCitzdGF0aWMgaW5s aW5lIHZvaWQgZWNjX3Jlc2V0KHN0cnVjdCBlY2Nfc3RhdGVfcyAqcykKK3sKKyAgICBzLT5scFsw XSA9IDB4MDAwMDsKKyAgICBzLT5scFsxXSA9IDB4MDAwMDsKKyAgICBzLT5jcCA9IDB4MDA7Cisg ICAgcy0+Y291bnQgPSAwOworfQpkaWZmIC0tZ2l0IGEvaHcvbmFuZC5jIGIvaHcvbmFuZC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyOWEyOWYKLS0tIC9kZXYvbnVsbAor KysgYi9ody9uYW5kLmMKQEAgLTAsMCArMSw2MTMgQEAKKy8qCisgKiBGbGFzaCBOQU5EIG1lbW9y eSBlbXVsYXRpb24uICBCYXNlZCBvbiAiMTZNIHggOCBCaXQgTkFORCBGbGFzaAorICogTWVtb3J5 IiBkYXRhc2hlZXQgZm9yIHRoZSBLTTI5VTEyOEFUIC8gSzlGMjgwOFUwQSBjaGlwcyBmcm9tCisg KiBTYW1zdW5nIEVsZWN0cm9uaWMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA2IE9wZW5lZGhh bmQgTHRkLgorICogV3JpdHRlbiBieSBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5v cmc+CisgKgorICogVGhpcyBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR1BMIHYyLgor ICovCisKKyNpZm5kZWYgTkFORF9JTworCisjIGluY2x1ZGUgInZsLmgiCisKKyMgZGVmaW5lIE5B TkRfQ01EX1JFQUQwCQkweDAwCisjIGRlZmluZSBOQU5EX0NNRF9SRUFEMQkJMHgwMQorIyBkZWZp bmUgTkFORF9DTURfUkVBRDIJCTB4NTAKKyMgZGVmaW5lIE5BTkRfQ01EX0xQUkVBRDIJMHgzMAor IyBkZWZpbmUgTkFORF9DTURfTk9TRVJJQUxSRUFEMgkweDM1CisjIGRlZmluZSBOQU5EX0NNRF9S QU5ET01SRUFEMQkweDA1CisjIGRlZmluZSBOQU5EX0NNRF9SQU5ET01SRUFEMgkweGUwCisjIGRl ZmluZSBOQU5EX0NNRF9SRUFESUQJMHg5MAorIyBkZWZpbmUgTkFORF9DTURfUkVTRVQJCTB4ZmYK KyMgZGVmaW5lIE5BTkRfQ01EX1BBR0VQUk9HUkFNMQkweDgwCisjIGRlZmluZSBOQU5EX0NNRF9Q QUdFUFJPR1JBTTIJMHgxMAorIyBkZWZpbmUgTkFORF9DTURfQ0FDSEVQUk9HUkFNMgkweDE1Cisj IGRlZmluZSBOQU5EX0NNRF9CTE9DS0VSQVNFMQkweDYwCisjIGRlZmluZSBOQU5EX0NNRF9CTE9D S0VSQVNFMgkweGQwCisjIGRlZmluZSBOQU5EX0NNRF9SRUFEU1RBVFVTCTB4NzAKKyMgZGVmaW5l IE5BTkRfQ01EX0NPUFlCQUNLUFJHMQkweDg1CisKKyMgZGVmaW5lIE5BTkRfSU9TVEFUVVNfRVJS T1IJKDEgPDwgMCkKKyMgZGVmaW5lIE5BTkRfSU9TVEFUVVNfUExBTkUwCSgxIDw8IDEpCisjIGRl ZmluZSBOQU5EX0lPU1RBVFVTX1BMQU5FMQkoMSA8PCAyKQorIyBkZWZpbmUgTkFORF9JT1NUQVRV U19QTEFORTIJKDEgPDwgMykKKyMgZGVmaW5lIE5BTkRfSU9TVEFUVVNfUExBTkUzCSgxIDw8IDQp CisjIGRlZmluZSBOQU5EX0lPU1RBVFVTX0JVU1kJKDEgPDwgNikKKyMgZGVmaW5lIE5BTkRfSU9T VEFUVVNfVU5QUk9UQ1QJKDEgPDwgNykKKworIyBkZWZpbmUgTUFYX1BBR0UJCTB4ODAwCisjIGRl ZmluZSBNQVhfT09CCQkweDQwCisKK3N0cnVjdCBuYW5kX2ZsYXNoX3MgeworICAgIHVpbnQ4X3Qg bWFuZl9pZCwgY2hpcF9pZDsKKyAgICBpbnQgc2l6ZSwgcGFnZXM7CisgICAgaW50IHBhZ2Vfc2hp ZnQsIG9vYl9zaGlmdCwgZXJhc2Vfc2hpZnQsIGFkZHJfc2hpZnQ7CisgICAgdWludDhfdCAqc3Rv cmFnZTsKKyAgICBCbG9ja0RyaXZlclN0YXRlICpiZHJ2OworICAgIGludCBtZW1fb29iOworCisg ICAgaW50IGNsZSwgYWxlLCBjZSwgd3AsIGduZDsKKworICAgIHVpbnQ4X3QgaW9bTUFYX1BBR0Ug KyBNQVhfT09CICsgMHg0MDBdOworICAgIHVpbnQ4X3QgKmlvYWRkcjsKKyAgICBpbnQgaW9sZW47 CisKKyAgICB1aW50MzJfdCBjbWQsIGFkZHI7CisgICAgaW50IGFkZHJsZW47CisgICAgaW50IHN0 YXR1czsKKyAgICBpbnQgb2Zmc2V0OworCisgICAgdm9pZCAoKmJsa193cml0ZSkoc3RydWN0IG5h bmRfZmxhc2hfcyAqcyk7CisgICAgdm9pZCAoKmJsa19lcmFzZSkoc3RydWN0IG5hbmRfZmxhc2hf cyAqcyk7CisgICAgdm9pZCAoKmJsa19sb2FkKShzdHJ1Y3QgbmFuZF9mbGFzaF9zICpzLCB1aW50 MzJfdCBhZGRyLCBpbnQgb2Zmc2V0KTsKK307CisKKyMgZGVmaW5lIE5BTkRfTk9fQVVUT0lOQ1IJ MHgwMDAwMDAwMQorIyBkZWZpbmUgTkFORF9CVVNXSURUSF8xNgkweDAwMDAwMDAyCisjIGRlZmlu ZSBOQU5EX05PX1BBRERJTkcJMHgwMDAwMDAwNAorIyBkZWZpbmUgTkFORF9DQUNIRVBSRwkJMHgw MDAwMDAwOAorIyBkZWZpbmUgTkFORF9DT1BZQkFDSwkJMHgwMDAwMDAxMAorIyBkZWZpbmUgTkFO RF9JU19BTkQJCTB4MDAwMDAwMjAKKyMgZGVmaW5lIE5BTkRfNFBBR0VfQVJSQVkJMHgwMDAwMDA0 MAorIyBkZWZpbmUgTkFORF9OT19SRUFEUkRZCTB4MDAwMDAxMDAKKyMgZGVmaW5lIE5BTkRfU0FN U1VOR19MUAkoTkFORF9OT19QQURESU5HIHwgTkFORF9DT1BZQkFDSykKKworIyBkZWZpbmUgTkFO RF9JTworCisjIGRlZmluZSBQQUdFKGFkZHIpCQkoKGFkZHIpID4+IEFERFJfU0hJRlQpCisjIGRl ZmluZSBQQUdFX1NUQVJUKHBhZ2UpCShQQUdFKHBhZ2UpICogKFBBR0VfU0laRSArIE9PQl9TSVpF KSkKKyMgZGVmaW5lIFBBR0VfTUFTSwkJKCgxIDw8IEFERFJfU0hJRlQpIC0gMSkKKyMgZGVmaW5l IE9PQl9TSElGVAkJKFBBR0VfU0hJRlQgLSA1KQorIyBkZWZpbmUgT09CX1NJWkUJCSgxIDw8IE9P Ql9TSElGVCkKKyMgZGVmaW5lIFNFQ1RPUihhZGRyKQkJKChhZGRyKSA+PiAoOSArIEFERFJfU0hJ RlQgLSBQQUdFX1NISUZUKSkKKyMgZGVmaW5lIFNFQ1RPUl9PRkZTRVQoYWRkcikJKChhZGRyKSAm ICgoNTExID4+IFBBR0VfU0hJRlQpIDw8IDgpKQorCisjIGRlZmluZSBQQUdFX1NJWkUJCTI1Ngor IyBkZWZpbmUgUEFHRV9TSElGVAkJOAorIyBkZWZpbmUgUEFHRV9TRUNUT1JTCQkxCisjIGRlZmlu ZSBBRERSX1NISUZUCQk4CisjIGluY2x1ZGUgIm5hbmQuYyIKKyMgZGVmaW5lIFBBR0VfU0laRQkJ NTEyCisjIGRlZmluZSBQQUdFX1NISUZUCQk5CisjIGRlZmluZSBQQUdFX1NFQ1RPUlMJCTEKKyMg ZGVmaW5lIEFERFJfU0hJRlQJCTgKKyMgaW5jbHVkZSAibmFuZC5jIgorIyBkZWZpbmUgUEFHRV9T SVpFCQkyMDQ4CisjIGRlZmluZSBQQUdFX1NISUZUCQkxMQorIyBkZWZpbmUgUEFHRV9TRUNUT1JT CQk0CisjIGRlZmluZSBBRERSX1NISUZUCQkxNgorIyBpbmNsdWRlICJuYW5kLmMiCisKKy8qIElu Zm9ybWF0aW9uIGJhc2VkIG9uIExpbnV4IGRyaXZlcnMvbXRkL25hbmQvbmFuZF9pZHMuYyAqLwor c3RydWN0IG5hbmRfaW5mb19zIHsKKyAgICBpbnQgc2l6ZTsKKyAgICBpbnQgd2lkdGg7CisgICAg aW50IHBhZ2Vfc2hpZnQ7CisgICAgaW50IGVyYXNlX3NoaWZ0OworICAgIHVpbnQzMl90IG9wdGlv bnM7Cit9IG5hbmRfZmxhc2hfaWRzWzB4MTAwXSA9IHsKKyAgICBbMCAuLi4gMHhmZl0gPSB7IDAg fSwKKworICAgIFsweDZlXSA9IHsgMSwJOCwJOCwgNCwgMCB9LAorICAgIFsweDY0XSA9IHsgMiwJ OCwJOCwgNCwgMCB9LAorICAgIFsweDZiXSA9IHsgNCwJOCwJOSwgNCwgMCB9LAorICAgIFsweGU4 XSA9IHsgMSwJOCwJOCwgNCwgMCB9LAorICAgIFsweGVjXSA9IHsgMSwJOCwJOCwgNCwgMCB9LAor ICAgIFsweGVhXSA9IHsgMiwJOCwJOCwgNCwgMCB9LAorICAgIFsweGQ1XSA9IHsgNCwJOCwJOSwg NCwgMCB9LAorICAgIFsweGUzXSA9IHsgNCwJOCwJOSwgNCwgMCB9LAorICAgIFsweGU1XSA9IHsg NCwJOCwJOSwgNCwgMCB9LAorICAgIFsweGQ2XSA9IHsgOCwJOCwJOSwgNCwgMCB9LAorCisgICAg WzB4MzldID0geyA4LAk4LAk5LCA0LCAwIH0sCisgICAgWzB4ZTZdID0geyA4LAk4LAk5LCA0LCAw IH0sCisgICAgWzB4NDldID0geyA4LAkxNiwJOSwgNCwgTkFORF9CVVNXSURUSF8xNiB9LAorICAg IFsweDU5XSA9IHsgOCwJMTYsCTksIDQsIE5BTkRfQlVTV0lEVEhfMTYgfSwKKworICAgIFsweDMz XSA9IHsgMTYsCTgsCTksIDUsIDAgfSwKKyAgICBbMHg3M10gPSB7IDE2LAk4LAk5LCA1LCAwIH0s CisgICAgWzB4NDNdID0geyAxNiwJMTYsCTksIDUsIE5BTkRfQlVTV0lEVEhfMTYgfSwKKyAgICBb MHg1M10gPSB7IDE2LAkxNiwJOSwgNSwgTkFORF9CVVNXSURUSF8xNiB9LAorCisgICAgWzB4MzVd ID0geyAzMiwJOCwJOSwgNSwgMCB9LAorICAgIFsweDc1XSA9IHsgMzIsCTgsCTksIDUsIDAgfSwK KyAgICBbMHg0NV0gPSB7IDMyLAkxNiwJOSwgNSwgTkFORF9CVVNXSURUSF8xNiB9LAorICAgIFsw eDU1XSA9IHsgMzIsCTE2LAk5LCA1LCBOQU5EX0JVU1dJRFRIXzE2IH0sCisKKyAgICBbMHgzNl0g PSB7IDY0LAk4LAk5LCA1LCAwIH0sCisgICAgWzB4NzZdID0geyA2NCwJOCwJOSwgNSwgMCB9LAor ICAgIFsweDQ2XSA9IHsgNjQsCTE2LAk5LCA1LCBOQU5EX0JVU1dJRFRIXzE2IH0sCisgICAgWzB4 NTZdID0geyA2NCwJMTYsCTksIDUsIE5BTkRfQlVTV0lEVEhfMTYgfSwKKworICAgIFsweDc4XSA9 IHsgMTI4LAk4LAk5LCA1LCAwIH0sCisgICAgWzB4MzldID0geyAxMjgsCTgsCTksIDUsIDAgfSwK KyAgICBbMHg3OV0gPSB7IDEyOCwJOCwJOSwgNSwgMCB9LAorICAgIFsweDcyXSA9IHsgMTI4LAkx NiwJOSwgNSwgTkFORF9CVVNXSURUSF8xNiB9LAorICAgIFsweDQ5XSA9IHsgMTI4LAkxNiwJOSwg NSwgTkFORF9CVVNXSURUSF8xNiB9LAorICAgIFsweDc0XSA9IHsgMTI4LAkxNiwJOSwgNSwgTkFO RF9CVVNXSURUSF8xNiB9LAorICAgIFsweDU5XSA9IHsgMTI4LAkxNiwJOSwgNSwgTkFORF9CVVNX SURUSF8xNiB9LAorCisgICAgWzB4NzFdID0geyAyNTYsCTgsCTksIDUsIDAgfSwKKworICAgIC8q CisgICAgICogVGhlc2UgYXJlIHRoZSBuZXcgY2hpcHMgd2l0aCBsYXJnZSBwYWdlIHNpemUuIFRo ZSBwYWdlc2l6ZSBhbmQgdGhlCisgICAgICogZXJhc2VzaXplIGlzIGRldGVybWluZWQgZnJvbSB0 aGUgZXh0ZW5kZWQgaWQgYnl0ZXMKKyAgICAgKi8KKyMgZGVmaW5lIExQX09QVElPTlMJKE5BTkRf U0FNU1VOR19MUCB8IE5BTkRfTk9fUkVBRFJEWSB8IE5BTkRfTk9fQVVUT0lOQ1IpCisjIGRlZmlu ZSBMUF9PUFRJT05TMTYJKExQX09QVElPTlMgfCBOQU5EX0JVU1dJRFRIXzE2KQorCisgICAgLyog NTEyIE1lZ2FiaXQgKi8KKyAgICBbMHhhMl0gPSB7IDY0LAk4LAkwLCAwLCBMUF9PUFRJT05TIH0s CisgICAgWzB4ZjJdID0geyA2NCwJOCwJMCwgMCwgTFBfT1BUSU9OUyB9LAorICAgIFsweGIyXSA9 IHsgNjQsCTE2LAkwLCAwLCBMUF9PUFRJT05TMTYgfSwKKyAgICBbMHhjMl0gPSB7IDY0LAkxNiwJ MCwgMCwgTFBfT1BUSU9OUzE2IH0sCisKKyAgICAvKiAxIEdpZ2FiaXQgKi8KKyAgICBbMHhhMV0g PSB7IDEyOCwJOCwJMCwgMCwgTFBfT1BUSU9OUyB9LAorICAgIFsweGYxXSA9IHsgMTI4LAk4LAkw LCAwLCBMUF9PUFRJT05TIH0sCisgICAgWzB4YjFdID0geyAxMjgsCTE2LAkwLCAwLCBMUF9PUFRJ T05TMTYgfSwKKyAgICBbMHhjMV0gPSB7IDEyOCwJMTYsCTAsIDAsIExQX09QVElPTlMxNiB9LAor CisgICAgLyogMiBHaWdhYml0ICovCisgICAgWzB4YWFdID0geyAyNTYsCTgsCTAsIDAsIExQX09Q VElPTlMgfSwKKyAgICBbMHhkYV0gPSB7IDI1NiwJOCwJMCwgMCwgTFBfT1BUSU9OUyB9LAorICAg IFsweGJhXSA9IHsgMjU2LAkxNiwJMCwgMCwgTFBfT1BUSU9OUzE2IH0sCisgICAgWzB4Y2FdID0g eyAyNTYsCTE2LAkwLCAwLCBMUF9PUFRJT05TMTYgfSwKKworICAgIC8qIDQgR2lnYWJpdCAqLwor ICAgIFsweGFjXSA9IHsgNTEyLAk4LAkwLCAwLCBMUF9PUFRJT05TIH0sCisgICAgWzB4ZGNdID0g eyA1MTIsCTgsCTAsIDAsIExQX09QVElPTlMgfSwKKyAgICBbMHhiY10gPSB7IDUxMiwJMTYsCTAs IDAsIExQX09QVElPTlMxNiB9LAorICAgIFsweGNjXSA9IHsgNTEyLAkxNiwJMCwgMCwgTFBfT1BU SU9OUzE2IH0sCisKKyAgICAvKiA4IEdpZ2FiaXQgKi8KKyAgICBbMHhhM10gPSB7IDEwMjQsCTgs CTAsIDAsIExQX09QVElPTlMgfSwKKyAgICBbMHhkM10gPSB7IDEwMjQsCTgsCTAsIDAsIExQX09Q VElPTlMgfSwKKyAgICBbMHhiM10gPSB7IDEwMjQsCTE2LAkwLCAwLCBMUF9PUFRJT05TMTYgfSwK KyAgICBbMHhjM10gPSB7IDEwMjQsCTE2LAkwLCAwLCBMUF9PUFRJT05TMTYgfSwKKworICAgIC8q IDE2IEdpZ2FiaXQgKi8KKyAgICBbMHhhNV0gPSB7IDIwNDgsCTgsCTAsIDAsIExQX09QVElPTlMg fSwKKyAgICBbMHhkNV0gPSB7IDIwNDgsCTgsCTAsIDAsIExQX09QVElPTlMgfSwKKyAgICBbMHhi NV0gPSB7IDIwNDgsCTE2LAkwLCAwLCBMUF9PUFRJT05TMTYgfSwKKyAgICBbMHhjNV0gPSB7IDIw NDgsCTE2LAkwLCAwLCBMUF9PUFRJT05TMTYgfSwKK307CisKK3N0YXRpYyB2b2lkIG5hbmRfcmVz ZXQoc3RydWN0IG5hbmRfZmxhc2hfcyAqcykKK3sKKyAgICBzLT5jbWQgPSBOQU5EX0NNRF9SRUFE MDsKKyAgICBzLT5hZGRyID0gMDsKKyAgICBzLT5hZGRybGVuID0gMDsKKyAgICBzLT5pb2xlbiA9 IDA7CisgICAgcy0+b2Zmc2V0ID0gMDsKKyAgICBzLT5zdGF0dXMgJj0gTkFORF9JT1NUQVRVU19V TlBST1RDVDsKK30KKworc3RhdGljIHZvaWQgbmFuZF9jb21tYW5kKHN0cnVjdCBuYW5kX2ZsYXNo X3MgKnMpCit7CisgICAgc3dpdGNoIChzLT5jbWQpIHsKKyAgICBjYXNlIE5BTkRfQ01EX1JFQUQw OgorICAgICAgICBzLT5pb2xlbiA9IDA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOQU5E X0NNRF9SRUFESUQ6CisgICAgICAgIHMtPmlvWzBdID0gcy0+bWFuZl9pZDsKKyAgICAgICAgcy0+ aW9bMV0gPSBzLT5jaGlwX2lkOworICAgICAgICBzLT5pb1syXSA9ICdRJzsJCS8qIERvbid0LWNh cmUgYnl0ZSAob2Z0ZW4gMHhhNSkgKi8KKyAgICAgICAgaWYgKG5hbmRfZmxhc2hfaWRzW3MtPmNo aXBfaWRdLm9wdGlvbnMgJiBOQU5EX1NBTVNVTkdfTFApCisgICAgICAgICAgICBzLT5pb1szXSA9 IDB4MTU7CS8qIFBhZ2UgU2l6ZSwgQmxvY2sgU2l6ZSwgU3BhcmUgU2l6ZS4uICovCisgICAgICAg IGVsc2UKKyAgICAgICAgICAgIHMtPmlvWzNdID0gMHhjMDsJLyogTXVsdGktcGxhbmUgKi8KKyAg ICAgICAgcy0+aW9hZGRyID0gcy0+aW87CisgICAgICAgIHMtPmlvbGVuID0gNDsKKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIE5BTkRfQ01EX1JBTkRPTVJFQUQyOgorICAgIGNhc2UgTkFORF9D TURfTk9TRVJJQUxSRUFEMjoKKyAgICAgICAgaWYgKCEobmFuZF9mbGFzaF9pZHNbcy0+Y2hpcF9p ZF0ub3B0aW9ucyAmIE5BTkRfU0FNU1VOR19MUCkpCisgICAgICAgICAgICBicmVhazsKKworICAg ICAgICBzLT5ibGtfbG9hZChzLCBzLT5hZGRyLCBzLT5hZGRyICYgKCgxIDw8IHMtPmFkZHJfc2hp ZnQpIC0gMSkpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTkFORF9DTURfUkVTRVQ6Cisg ICAgICAgIG5hbmRfcmVzZXQocyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOQU5EX0NN RF9QQUdFUFJPR1JBTTE6CisgICAgICAgIHMtPmlvYWRkciA9IHMtPmlvOworICAgICAgICBzLT5p b2xlbiA9IDA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOQU5EX0NNRF9QQUdFUFJPR1JB TTI6CisgICAgICAgIGlmIChzLT53cCkgeworICAgICAgICAgICAgcy0+YmxrX3dyaXRlKHMpOwor ICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOQU5EX0NNRF9CTE9DS0VSQVNF MToKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE5BTkRfQ01EX0JMT0NLRVJBU0UyOgorICAg ICAgICBpZiAobmFuZF9mbGFzaF9pZHNbcy0+Y2hpcF9pZF0ub3B0aW9ucyAmIE5BTkRfU0FNU1VO R19MUCkKKyAgICAgICAgICAgIHMtPmFkZHIgPDw9IDE2OworICAgICAgICBlbHNlCisgICAgICAg ICAgICBzLT5hZGRyIDw8PSA4OworCisgICAgICAgIGlmIChzLT53cCkgeworICAgICAgICAgICAg cy0+YmxrX2VyYXNlKHMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBO QU5EX0NNRF9SRUFEU1RBVFVTOgorICAgICAgICBzLT5pb1swXSA9IHMtPnN0YXR1czsKKyAgICAg ICAgcy0+aW9hZGRyID0gcy0+aW87CisgICAgICAgIHMtPmlvbGVuID0gMTsKKyAgICAgICAgYnJl YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBwcmludGYoIiVzOiBVbmtub3duIE5BTkQgY29t bWFuZCAweCUwMnhcbiIsIF9fRlVOQ1RJT05fXywgcy0+Y21kKTsKKyAgICB9Cit9CisKKy8qCisg KiBDaGlwIGlucHV0cyBhcmUgQ0xFLCBBTEUsIENFLCBXUCwgR05EIGFuZCBlaWdodCBJL08gcGlu cy4gIENoaXAKKyAqIG91dHB1dHMgYXJlIFIvQiBhbmQgZWlnaHQgSS9PIHBpbnMuCisgKgorICog Q0UsIFdQIGFuZCBSL0IgYXJlIGFjdGl2ZSBsb3cuCisgKi8KK3ZvaWQgbmFuZF9zZXRwaW5zKHN0 cnVjdCBuYW5kX2ZsYXNoX3MgKnMsIAorICAgICAgICAgICAgICAgIGludCBjbGUsIGludCBhbGUs IGludCBjZSwgaW50IHdwLCBpbnQgZ25kKQoreworICAgIHMtPmNsZSA9IGNsZTsKKyAgICBzLT5h bGUgPSBhbGU7CisgICAgcy0+Y2UgPSBjZTsKKyAgICBzLT53cCA9IHdwOworICAgIHMtPmduZCA9 IGduZDsKKyAgICBpZiAod3ApCisgICAgICAgIHMtPnN0YXR1cyB8PSBOQU5EX0lPU1RBVFVTX1VO UFJPVENUOworICAgIGVsc2UKKyAgICAgICAgcy0+c3RhdHVzICY9IH5OQU5EX0lPU1RBVFVTX1VO UFJPVENUOworfQorCit2b2lkIG5hbmRfZ2V0cGlucyhzdHJ1Y3QgbmFuZF9mbGFzaF9zICpzLCBp bnQgKnJiKQoreworICAgICpyYiA9IDE7Cit9CisKK3ZvaWQgbmFuZF9zZXRpbyhzdHJ1Y3QgbmFu ZF9mbGFzaF9zICpzLCB1aW50OF90IHZhbHVlKQoreworICAgIGlmICghcy0+Y2UgJiYgcy0+Y2xl KSB7CisgICAgICAgIGlmIChuYW5kX2ZsYXNoX2lkc1tzLT5jaGlwX2lkXS5vcHRpb25zICYgTkFO RF9TQU1TVU5HX0xQKSB7CisgICAgICAgICAgICBpZiAocy0+Y21kID09IE5BTkRfQ01EX1JFQUQw ICYmIHZhbHVlID09IE5BTkRfQ01EX0xQUkVBRDIpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICAgICAgaWYgKHZhbHVlID09IE5BTkRfQ01EX1JBTkRPTVJFQUQxKSB7CisgICAgICAg ICAgICAgICAgcy0+YWRkciAmPSB+KCgxIDw8IHMtPmFkZHJfc2hpZnQpIC0gMSk7CisgICAgICAg ICAgICAgICAgcy0+YWRkcmxlbiA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSA9PSBOQU5EX0NNRF9SRUFEMCkK KyAgICAgICAgICAgIHMtPm9mZnNldCA9IDA7CisJZWxzZSBpZiAodmFsdWUgPT0gTkFORF9DTURf UkVBRDEpIHsKKyAgICAgICAgICAgIHMtPm9mZnNldCA9IDB4MTAwOworICAgICAgICAgICAgdmFs dWUgPSBOQU5EX0NNRF9SRUFEMDsKKyAgICAgICAgfQorCWVsc2UgaWYgKHZhbHVlID09IE5BTkRf Q01EX1JFQUQyKSB7CisgICAgICAgICAgICBzLT5vZmZzZXQgPSAxIDw8IHMtPnBhZ2Vfc2hpZnQ7 CisgICAgICAgICAgICB2YWx1ZSA9IE5BTkRfQ01EX1JFQUQwOworICAgICAgICB9CisKKyAgICAg ICAgcy0+Y21kID0gdmFsdWU7CisKKyAgICAgICAgaWYgKHMtPmNtZCA9PSBOQU5EX0NNRF9SRUFE U1RBVFVTIHx8CisgICAgICAgICAgICAgICAgcy0+Y21kID09IE5BTkRfQ01EX1BBR0VQUk9HUkFN MiB8fAorICAgICAgICAgICAgICAgIHMtPmNtZCA9PSBOQU5EX0NNRF9CTE9DS0VSQVNFMSB8fAor ICAgICAgICAgICAgICAgIHMtPmNtZCA9PSBOQU5EX0NNRF9CTE9DS0VSQVNFMiB8fAorICAgICAg ICAgICAgICAgIHMtPmNtZCA9PSBOQU5EX0NNRF9OT1NFUklBTFJFQUQyIHx8CisgICAgICAgICAg ICAgICAgcy0+Y21kID09IE5BTkRfQ01EX1JBTkRPTVJFQUQyIHx8CisgICAgICAgICAgICAgICAg cy0+Y21kID09IE5BTkRfQ01EX1JFU0VUKQorICAgICAgICAgICAgbmFuZF9jb21tYW5kKHMpOwor CisgICAgICAgIGlmIChzLT5jbWQgIT0gTkFORF9DTURfUkFORE9NUkVBRDIpIHsKKyAgICAgICAg ICAgIHMtPmFkZHJsZW4gPSAwOworICAgICAgICAgICAgcy0+YWRkciA9IDA7CisgICAgICAgIH0K KyAgICB9CisKKyAgICBpZiAocy0+YWxlKSB7CisgICAgICAgIHMtPmFkZHIgfD0gdmFsdWUgPDwg KHMtPmFkZHJsZW4gKiA4KTsKKyAgICAgICAgcy0+YWRkcmxlbiArKzsKKworICAgICAgICBpZiAo cy0+YWRkcmxlbiA9PSAxICYmIHMtPmNtZCA9PSBOQU5EX0NNRF9SRUFESUQpCisgICAgICAgICAg ICBuYW5kX2NvbW1hbmQocyk7CisKKyAgICAgICAgaWYgKCEobmFuZF9mbGFzaF9pZHNbcy0+Y2hp cF9pZF0ub3B0aW9ucyAmIE5BTkRfU0FNU1VOR19MUCkgJiYKKyAgICAgICAgICAgICAgICBzLT5h ZGRybGVuID09IDMgJiYgKAorICAgICAgICAgICAgICAgICAgICBzLT5jbWQgPT0gTkFORF9DTURf UkVBRDAgfHwKKyAgICAgICAgICAgICAgICAgICAgcy0+Y21kID09IE5BTkRfQ01EX1BBR0VQUk9H UkFNMSkpCisgICAgICAgICAgICBuYW5kX2NvbW1hbmQocyk7CisgICAgICAgIGlmICgobmFuZF9m bGFzaF9pZHNbcy0+Y2hpcF9pZF0ub3B0aW9ucyAmIE5BTkRfU0FNU1VOR19MUCkgJiYKKyAgICAg ICAgICAgICAgIHMtPmFkZHJsZW4gPT0gNCAmJiAoCisgICAgICAgICAgICAgICAgICAgIHMtPmNt ZCA9PSBOQU5EX0NNRF9SRUFEMCB8fAorICAgICAgICAgICAgICAgICAgICBzLT5jbWQgPT0gTkFO RF9DTURfUEFHRVBST0dSQU0xKSkKKyAgICAgICAgICAgIG5hbmRfY29tbWFuZChzKTsKKyAgICB9 CisKKyAgICBpZiAoIXMtPmNsZSAmJiAhcy0+YWxlICYmIHMtPmNtZCA9PSBOQU5EX0NNRF9QQUdF UFJPR1JBTTEpIHsKKyAgICAgICAgaWYgKHMtPmlvbGVuIDwgKDEgPDwgcy0+cGFnZV9zaGlmdCkg KyAoMSA8PCBzLT5vb2Jfc2hpZnQpKQorICAgICAgICAgICAgcy0+aW9bcy0+aW9sZW4gKytdID0g dmFsdWU7CisgICAgfSBlbHNlIGlmICghcy0+Y2xlICYmICFzLT5hbGUgJiYgcy0+Y21kID09IE5B TkRfQ01EX0NPUFlCQUNLUFJHMSkgeworICAgICAgICBpZiAoKHMtPmFkZHIgJiAoKDEgPDwgcy0+ YWRkcl9zaGlmdCkgLSAxKSkgPAorICAgICAgICAgICAgICAgICgxIDw8IHMtPnBhZ2Vfc2hpZnQp ICsgKDEgPDwgcy0+b29iX3NoaWZ0KSkgeworICAgICAgICAgICAgcy0+aW9bcy0+aW9sZW4gKyAo cy0+YWRkciAmICgoMSA8PCBzLT5hZGRyX3NoaWZ0KSAtIDEpKV0gPSB2YWx1ZTsKKyAgICAgICAg ICAgIHMtPmFkZHIgKys7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3VpbnQ4X3QgbmFuZF9nZXRp byhzdHJ1Y3QgbmFuZF9mbGFzaF9zICpzKQoreworICAgIGludCBvZmZzZXQ7CisgCisgICAgLyog QWxsb3cgc2VxdWVudGlhbCByZWFkaW5nICovCisgICAgaWYgKCFzLT5pb2xlbiAmJiBzLT5jbWQg PT0gTkFORF9DTURfUkVBRDApIHsKKyAgICAgICAgb2Zmc2V0ID0gKHMtPmFkZHIgJiAoKDEgPDwg cy0+YWRkcl9zaGlmdCkgLSAxKSkgKyBzLT5vZmZzZXQ7CisgICAgICAgIHMtPm9mZnNldCA9IDA7 CisKKyAgICAgICAgcy0+YmxrX2xvYWQocywgcy0+YWRkciwgb2Zmc2V0KTsKKyAgICAgICAgaWYg KHMtPmduZCkKKyAgICAgICAgICAgIHMtPmlvbGVuID0gKDEgPDwgcy0+cGFnZV9zaGlmdCkgLSBv ZmZzZXQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHMtPmlvbGVuID0gKDEgPDwgcy0+cGFn ZV9zaGlmdCkgKyAoMSA8PCBzLT5vb2Jfc2hpZnQpIC0gb2Zmc2V0OworICAgIH0KKworICAgIGlm IChzLT5jZSB8fCBzLT5pb2xlbiA8PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHMtPmlv bGVuIC0tOworICAgIHJldHVybiAqKHMtPmlvYWRkciArKyk7Cit9CisKK3N0cnVjdCBuYW5kX2Zs YXNoX3MgKm5hbmRfaW5pdChpbnQgbWFuZl9pZCwgaW50IGNoaXBfaWQpCit7CisgICAgaW50IHBh Z2VzaXplOworICAgIHN0cnVjdCBuYW5kX2ZsYXNoX3MgKnM7CisgICAgQmxvY2tEcml2ZXJTdGF0 ZSAqYnMgPSAwOworCisgICAgaWYgKG5hbmRfZmxhc2hfaWRzW2NoaXBfaWRdLnNpemUgPT0gMCkg eworICAgICAgICBjcHVfYWJvcnQoY3B1X3NpbmdsZV9lbnYsICIlczogVW5zdXBwb3J0ZWQgTkFO RCBjaGlwIElELlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7Cisg ICAgfQorCisgICAgaWYgKG10ZF9maWxlbmFtZSkgeworICAgICAgICBicyA9IGJkcnZfbmV3KCJt dGQiKTsKKyAgICAgICAgaWYgKGJkcnZfb3BlbihicywgbXRkX2ZpbGVuYW1lLCBzbmFwc2hvdCA/ IEJEUlZfT19TTkFQU0hPVCA6IDApIDwgMCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgcWVt dV9rZXlfY2hlY2soYnMsIG10ZF9maWxlbmFtZSkpIHsKKyAgICAgICAgICAgIGJkcnZfZGVsZXRl KGJzKTsKKyAgICAgICAgICAgIGJzID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAKKyAgICBzID0g KHN0cnVjdCBuYW5kX2ZsYXNoX3MgKikgcWVtdV9tYWxsb2N6KHNpemVvZihzdHJ1Y3QgbmFuZF9m bGFzaF9zKSk7CisgICAgcy0+YmRydiA9IGJzOworICAgIHMtPm1hbmZfaWQgPSBtYW5mX2lkOwor ICAgIHMtPmNoaXBfaWQgPSBjaGlwX2lkOworICAgIHMtPnNpemUgPSBuYW5kX2ZsYXNoX2lkc1tz LT5jaGlwX2lkXS5zaXplIDw8IDIwOworICAgIGlmIChuYW5kX2ZsYXNoX2lkc1tzLT5jaGlwX2lk XS5vcHRpb25zICYgTkFORF9TQU1TVU5HX0xQKSB7CisgICAgICAgIHMtPnBhZ2Vfc2hpZnQgPSAx MTsKKyAgICAgICAgcy0+ZXJhc2Vfc2hpZnQgPSA2OworICAgIH0gZWxzZSB7CisgICAgICAgIHMt PnBhZ2Vfc2hpZnQgPSBuYW5kX2ZsYXNoX2lkc1tzLT5jaGlwX2lkXS5wYWdlX3NoaWZ0OworICAg ICAgICBzLT5lcmFzZV9zaGlmdCA9IG5hbmRfZmxhc2hfaWRzW3MtPmNoaXBfaWRdLmVyYXNlX3No aWZ0OworICAgIH0KKworICAgIHN3aXRjaCAoMSA8PCBzLT5wYWdlX3NoaWZ0KSB7CisgICAgY2Fz ZSAyNTY6CisgICAgICAgIG5hbmRfaW5pdF8yNTYocyk7CisgICAgICAgIGJyZWFrOworICAgIGNh c2UgNTEyOgorICAgICAgICBuYW5kX2luaXRfNTEyKHMpOworICAgICAgICBicmVhazsKKyAgICBj YXNlIDIwNDg6CisgICAgICAgIG5hbmRfaW5pdF8yMDQ4KHMpOworICAgICAgICBicmVhazsKKyAg ICBkZWZhdWx0OgorICAgICAgICBjcHVfYWJvcnQoY3B1X3NpbmdsZV9lbnYsICIlczogVW5zdXBw b3J0ZWQgTkFORCBibG9jayBzaXplLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVO Q1RJT05fXyk7CisgICAgfQorCisgICAgcGFnZXNpemUgPSAxIDw8IHMtPm9vYl9zaGlmdDsKKyAg ICBzLT5tZW1fb29iID0gMTsKKyAgICBpZiAoYnMgJiYgYmRydl9nZXRsZW5ndGgoYnMpID49Cisg ICAgICAgICAgICAgICAgICAgIChzLT5wYWdlcyA8PCBzLT5wYWdlX3NoaWZ0KSArIChzLT5wYWdl cyA8PCBzLT5vb2Jfc2hpZnQpKSB7CisgICAgICAgIHBhZ2VzaXplID0gMDsKKyAgICAgICAgcy0+ bWVtX29vYiA9IDA7CisgICAgfQorCisgICAgaWYgKCFicykKKyAgICAgICAgcGFnZXNpemUgKz0g MSA8PCBzLT5wYWdlX3NoaWZ0OworICAgIGlmIChwYWdlc2l6ZSkKKyAgICAgICAgcy0+c3RvcmFn ZSA9ICh1aW50OF90ICopIG1lbXNldChxZW11X21hbGxvYyhzLT5wYWdlcyAqIHBhZ2VzaXplKSwK KyAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYsIHMtPnBhZ2VzICogcGFnZXNpemUpOworICAg IHJldHVybiBzOworfQorCit2b2lkIG5hbmRfZG9uZShzdHJ1Y3QgbmFuZF9mbGFzaF9zICpzKQor eworICAgIGlmIChzLT5iZHJ2KSB7CisgICAgICAgIGJkcnZfY2xvc2Uocy0+YmRydik7CisgICAg ICAgIGJkcnZfZGVsZXRlKHMtPmJkcnYpOworICAgIH0KKworICAgIGlmICghcy0+YmRydiB8fCBz LT5tZW1fb29iKQorICAgICAgICBmcmVlKHMtPnN0b3JhZ2UpOworCisgICAgZnJlZShzKTsKK30K KworI2Vsc2UKKworLyogUHJvZ3JhbSBhIHNpbmdsZSBwYWdlICovCitzdGF0aWMgdm9pZCBnbHVl KG5hbmRfYmxrX3dyaXRlXywgUEFHRV9TSVpFKShzdHJ1Y3QgbmFuZF9mbGFzaF9zICpzKQorewor ICAgIHVpbnQzMl90IG9mZiwgcGFnZSwgc2VjdG9yLCBzb2ZmOworICAgIHVpbnQ4X3QgaW9idWZb KFBBR0VfU0VDVE9SUyArIDIpICogMHgyMDBdOworICAgIGlmIChQQUdFKHMtPmFkZHIpID49IHMt PnBhZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXMtPmJkcnYpIHsKKyAgICAgICAg bWVtY3B5KHMtPnN0b3JhZ2UgKyBQQUdFX1NUQVJUKHMtPmFkZHIpICsgKHMtPmFkZHIgJiBQQUdF X01BU0spICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPm9mZnNldCwgcy0+aW8sIHMtPmlv bGVuKTsKKyAgICB9IGVsc2UgaWYgKHMtPm1lbV9vb2IpIHsKKyAgICAgICAgc2VjdG9yID0gU0VD VE9SKHMtPmFkZHIpOworICAgICAgICBvZmYgPSAocy0+YWRkciAmIFBBR0VfTUFTSykgKyBzLT5v ZmZzZXQ7CisgICAgICAgIHNvZmYgPSBTRUNUT1JfT0ZGU0VUKHMtPmFkZHIpOworICAgICAgICBp ZiAoYmRydl9yZWFkKHMtPmJkcnYsIHNlY3RvciwgaW9idWYsIFBBR0VfU0VDVE9SUykgPT0gLTEp IHsKKyAgICAgICAgICAgIHByaW50ZigiJXM6IHJlYWQgZXJyb3IgaW4gc2VjdG9yICVpXG4iLCBf X0ZVTkNUSU9OX18sIHNlY3Rvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor ICAgICAgICBtZW1jcHkoaW9idWYgKyAoc29mZiB8IG9mZiksIHMtPmlvLCBNSU4ocy0+aW9sZW4s IFBBR0VfU0laRSAtIG9mZikpOworICAgICAgICBpZiAob2ZmICsgcy0+aW9sZW4gPiBQQUdFX1NJ WkUpIHsKKyAgICAgICAgICAgIHBhZ2UgPSBQQUdFKHMtPmFkZHIpOworICAgICAgICAgICAgbWVt Y3B5KHMtPnN0b3JhZ2UgKyAocGFnZSA8PCBPT0JfU0hJRlQpLCBzLT5pbyArIFBBR0VfU0laRSAt IG9mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU4oT09CX1NJWkUsIG9mZiArIHMt PmlvbGVuIC0gUEFHRV9TSVpFKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmRydl93cml0 ZShzLT5iZHJ2LCBzZWN0b3IsIGlvYnVmLCBQQUdFX1NFQ1RPUlMpID09IC0xKQorICAgICAgICAg ICAgcHJpbnRmKCIlczogd3JpdGUgZXJyb3IgaW4gc2VjdG9yICVpXG4iLCBfX0ZVTkNUSU9OX18s IHNlY3Rvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb2ZmID0gUEFHRV9TVEFSVChzLT5hZGRy KSArIChzLT5hZGRyICYgUEFHRV9NQVNLKSArIHMtPm9mZnNldDsKKyAgICAgICAgc2VjdG9yID0g b2ZmID4+IDk7CisgICAgICAgIHNvZmYgPSBvZmYgJiAweDFmZjsKKyAgICAgICAgaWYgKGJkcnZf cmVhZChzLT5iZHJ2LCBzZWN0b3IsIGlvYnVmLCBQQUdFX1NFQ1RPUlMgKyAyKSA9PSAtMSkgewor ICAgICAgICAgICAgcHJpbnRmKCIlczogcmVhZCBlcnJvciBpbiBzZWN0b3IgJWlcbiIsIF9fRlVO Q1RJT05fXywgc2VjdG9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg ICAgIG1lbWNweShpb2J1ZiArIHNvZmYsIHMtPmlvLCBzLT5pb2xlbik7CisKKyAgICAgICAgaWYg KGJkcnZfd3JpdGUocy0+YmRydiwgc2VjdG9yLCBpb2J1ZiwgUEFHRV9TRUNUT1JTICsgMikgPT0g LTEpCisgICAgICAgICAgICBwcmludGYoIiVzOiB3cml0ZSBlcnJvciBpbiBzZWN0b3IgJWlcbiIs IF9fRlVOQ1RJT05fXywgc2VjdG9yKTsKKyAgICB9CisgICAgcy0+b2Zmc2V0ID0gMDsKK30KKwor LyogRXJhc2UgYSBzaW5nbGUgYmxvY2sgKi8KK3N0YXRpYyB2b2lkIGdsdWUobmFuZF9ibGtfZXJh c2VfLCBQQUdFX1NJWkUpKHN0cnVjdCBuYW5kX2ZsYXNoX3MgKnMpCit7CisgICAgdWludDMyX3Qg aSwgcGFnZSwgYWRkcjsKKyAgICB1aW50OF90IGlvYnVmWzB4MjAwXSA9IHsgWzAgLi4uIDB4MWZm XSA9IDB4ZmYsIH07CisgICAgYWRkciA9IHMtPmFkZHIgJiB+KCgxIDw8IChBRERSX1NISUZUICsg cy0+ZXJhc2Vfc2hpZnQpKSAtIDEpOworCisgICAgaWYgKFBBR0UoYWRkcikgPj0gcy0+cGFnZXMp CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcy0+YmRydikgeworICAgICAgICBtZW1zZXQo cy0+c3RvcmFnZSArIFBBR0VfU1RBUlQoYWRkciksCisgICAgICAgICAgICAgICAgICAgICAgICAw eGZmLCAoUEFHRV9TSVpFICsgT09CX1NJWkUpIDw8IHMtPmVyYXNlX3NoaWZ0KTsKKyAgICB9IGVs c2UgaWYgKHMtPm1lbV9vb2IpIHsKKyAgICAgICAgbWVtc2V0KHMtPnN0b3JhZ2UgKyAoUEFHRShh ZGRyKSA8PCBPT0JfU0hJRlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgMHhmZiwgT09CX1NJ WkUgPDwgcy0+ZXJhc2Vfc2hpZnQpOworICAgICAgICBpID0gU0VDVE9SKGFkZHIpOworICAgICAg ICBwYWdlID0gU0VDVE9SKGFkZHIgKyAoQUREUl9TSElGVCArIHMtPmVyYXNlX3NoaWZ0KSk7Cisg ICAgICAgIGZvciAoOyBpIDwgcGFnZTsgaSArKykKKyAgICAgICAgICAgIGlmIChiZHJ2X3dyaXRl KHMtPmJkcnYsIGksIGlvYnVmLCAxKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBwcmludGYoIiVz OiB3cml0ZSBlcnJvciBpbiBzZWN0b3IgJWlcbiIsIF9fRlVOQ1RJT05fXywgaSk7CisgICAgfSBl bHNlIHsKKyAgICAgICAgYWRkciA9IFBBR0VfU1RBUlQoYWRkcik7CisgICAgICAgIHBhZ2UgPSBh ZGRyID4+IDk7CisgICAgICAgIGlmIChiZHJ2X3JlYWQocy0+YmRydiwgcGFnZSwgaW9idWYsIDEp ID09IC0xKQorICAgICAgICAgICAgcHJpbnRmKCIlczogcmVhZCBlcnJvciBpbiBzZWN0b3IgJWlc biIsIF9fRlVOQ1RJT05fXywgcGFnZSk7CisgICAgICAgIG1lbXNldChpb2J1ZiArIChhZGRyICYg MHgxZmYpLCAweGZmLCAofmFkZHIgJiAweDFmZikgKyAxKTsKKyAgICAgICAgaWYgKGJkcnZfd3Jp dGUocy0+YmRydiwgcGFnZSwgaW9idWYsIDEpID09IC0xKQorICAgICAgICAgICAgcHJpbnRmKCIl czogd3JpdGUgZXJyb3IgaW4gc2VjdG9yICVpXG4iLCBfX0ZVTkNUSU9OX18sIHBhZ2UpOworCisg ICAgICAgIG1lbXNldChpb2J1ZiwgMHhmZiwgMHgyMDApOworICAgICAgICBpID0gKGFkZHIgJiB+ MHgxZmYpICsgMHgyMDA7CisgICAgICAgIGZvciAoYWRkciArPSAoKFBBR0VfU0laRSArIE9PQl9T SVpFKSA8PCBzLT5lcmFzZV9zaGlmdCkgLSAweDIwMDsKKyAgICAgICAgICAgICAgICAgICAgICAg IGkgPCBhZGRyOyBpICs9IDB4MjAwKQorICAgICAgICAgICAgaWYgKGJkcnZfd3JpdGUocy0+YmRy diwgaSA+PiA5LCBpb2J1ZiwgMSkgPT0gLTEpCisgICAgICAgICAgICAgICAgcHJpbnRmKCIlczog d3JpdGUgZXJyb3IgaW4gc2VjdG9yICVpXG4iLCBfX0ZVTkNUSU9OX18sIGkgPj4gOSk7CisKKyAg ICAgICAgcGFnZSA9IGkgPj4gOTsKKyAgICAgICAgaWYgKGJkcnZfcmVhZChzLT5iZHJ2LCBwYWdl LCBpb2J1ZiwgMSkgPT0gLTEpCisgICAgICAgICAgICBwcmludGYoIiVzOiByZWFkIGVycm9yIGlu IHNlY3RvciAlaVxuIiwgX19GVU5DVElPTl9fLCBwYWdlKTsKKyAgICAgICAgbWVtc2V0KGlvYnVm LCAweGZmLCBhZGRyICYgMHgxZmYpOworICAgICAgICBpZiAoYmRydl93cml0ZShzLT5iZHJ2LCBw YWdlLCBpb2J1ZiwgMSkgPT0gLTEpCisgICAgICAgICAgICBwcmludGYoIiVzOiB3cml0ZSBlcnJv ciBpbiBzZWN0b3IgJWlcbiIsIF9fRlVOQ1RJT05fXywgcGFnZSk7CisgICAgfQorfQorCitzdGF0 aWMgdm9pZCBnbHVlKG5hbmRfYmxrX2xvYWRfLCBQQUdFX1NJWkUpKHN0cnVjdCBuYW5kX2ZsYXNo X3MgKnMsCisgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IG9mZnNldCkKK3sKKyAg ICBpZiAoUEFHRShhZGRyKSA+PSBzLT5wYWdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg KHMtPmJkcnYpIHsKKyAgICAgICAgaWYgKHMtPm1lbV9vb2IpIHsKKyAgICAgICAgICAgIGlmIChi ZHJ2X3JlYWQocy0+YmRydiwgU0VDVE9SKGFkZHIpLCBzLT5pbywgUEFHRV9TRUNUT1JTKSA9PSAt MSkKKyAgICAgICAgICAgICAgICBwcmludGYoIiVzOiByZWFkIGVycm9yIGluIHNlY3RvciAlaVxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBTRUNUT1Io YWRkcikpOworICAgICAgICAgICAgbWVtY3B5KHMtPmlvICsgU0VDVE9SX09GRlNFVChzLT5hZGRy KSArIFBBR0VfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5zdG9yYWdlICsg KFBBR0Uocy0+YWRkcikgPDwgT09CX1NISUZUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPT0JfU0laRSk7CisgICAgICAgICAgICBzLT5pb2FkZHIgPSBzLT5pbyArIFNFQ1RPUl9PRkZT RVQocy0+YWRkcikgKyBvZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAo YmRydl9yZWFkKHMtPmJkcnYsIFBBR0VfU1RBUlQoYWRkcikgPj4gOSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHMtPmlvLCAoUEFHRV9TRUNUT1JTICsgMikpID09IC0xKQor ICAgICAgICAgICAgICAgIHByaW50ZigiJXM6IHJlYWQgZXJyb3IgaW4gc2VjdG9yICVpXG4iLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIFBBR0VfU1RBUlQo YWRkcikgPj4gOSk7CisgICAgICAgICAgICBzLT5pb2FkZHIgPSBzLT5pbyArIChQQUdFX1NUQVJU KGFkZHIpICYgMHgxZmYpICsgb2Zmc2V0OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg ICAgbWVtY3B5KHMtPmlvLCBzLT5zdG9yYWdlICsgUEFHRV9TVEFSVChzLT5hZGRyKSArCisgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIFBBR0VfU0laRSArIE9PQl9TSVpFIC0gb2Zmc2V0 KTsKKyAgICAgICAgcy0+aW9hZGRyID0gcy0+aW87CisgICAgfQorCisgICAgcy0+YWRkciAmPSBQ QUdFX1NJWkUgLSAxOworICAgIHMtPmFkZHIgKz0gUEFHRV9TSVpFOworfQorCitzdGF0aWMgdm9p ZCBnbHVlKG5hbmRfaW5pdF8sIFBBR0VfU0laRSkoc3RydWN0IG5hbmRfZmxhc2hfcyAqcykKK3sK KyAgICBzLT5vb2Jfc2hpZnQgPSBQQUdFX1NISUZUIC0gNTsKKyAgICBzLT5wYWdlcyA9IHMtPnNp emUgPj4gUEFHRV9TSElGVDsKKyAgICBzLT5hZGRyX3NoaWZ0ID0gQUREUl9TSElGVDsKKworICAg IHMtPmJsa19lcmFzZSA9IGdsdWUobmFuZF9ibGtfZXJhc2VfLCBQQUdFX1NJWkUpOworICAgIHMt PmJsa193cml0ZSA9IGdsdWUobmFuZF9ibGtfd3JpdGVfLCBQQUdFX1NJWkUpOworICAgIHMtPmJs a19sb2FkID0gZ2x1ZShuYW5kX2Jsa19sb2FkXywgUEFHRV9TSVpFKTsKK30KKworIyB1bmRlZiBQ QUdFX1NJWkUKKyMgdW5kZWYgUEFHRV9TSElGVAorIyB1bmRlZiBQQUdFX1NFQ1RPUlMKKyMgdW5k ZWYgQUREUl9TSElGVAorI2VuZGlmCS8qIE5BTkRfSU8gKi8KZGlmZiAtLWdpdCBhL3ZsLmMgYi92 bC5jCmluZGV4IDI4MWU1NDEuLmE1MjNkMWEgMTAwNjQ0Ci0tLSBhL3ZsLmMKKysrIGIvdmwuYwpA QCAtMTg2LDYgKzE4Niw3IEBAIGludCBmZF9ib290Y2hrID0gMTsKIGludCBub19yZWJvb3QgPSAw OwogaW50IHNuYXBzaG90ID0gMDsKIGNvbnN0IGNoYXIgKnNkX2ZpbGVuYW1lID0gMDsKK2NvbnN0 IGNoYXIgKm10ZF9maWxlbmFtZSA9IDA7CiBpbnQgZ3JhcGhpY19yb3RhdGUgPSAwOwogaW50IGRh ZW1vbml6ZSA9IDA7CiBjb25zdCBjaGFyICpvcHRpb25fcm9tW01BWF9PUFRJT05fUk9NU107CkBA IC02NDE4LDYgKzY0MTksNyBAQCB2b2lkIGhlbHAodm9pZCkKICAgICAgICAgICAgIi1oZGEvLWhk YiBmaWxlICB1c2UgJ2ZpbGUnIGFzIElERSBoYXJkIGRpc2sgMC8xIGltYWdlXG4iCiAgICAgICAg ICAgICItaGRjLy1oZGQgZmlsZSAgdXNlICdmaWxlJyBhcyBJREUgaGFyZCBkaXNrIDIvMyBpbWFn ZVxuIgogICAgICAgICAgICAiLWNkcm9tIGZpbGUgICAgIHVzZSAnZmlsZScgYXMgSURFIGNkcm9t IGltYWdlIChjZHJvbSBpcyBpZGUxIG1hc3RlcilcbiIKKyAgICAgICAgICAgIi1tdGRibG9jayBm aWxlICB1c2UgJ2ZpbGUnIGFzIG9uLWJvYXJkIEZsYXNoIG1lbW9yeSBpbWFnZVxuIgogICAgICAg ICAgICAiLXNkIGZpbGUgICAgICAgIHVzZSAnZmlsZScgYXMgU2VjdXJlRGlnaXRhbCBjYXJkIGlt YWdlXG4iCiAgICAgICAgICAgICItYm9vdCBbYXxjfGR8bl0gYm9vdCBvbiBmbG9wcHkgKGEpLCBo YXJkIGRpc2sgKGMpLCBDRC1ST00gKGQpLCBvciBuZXR3b3JrIChuKVxuIgogICAgICAgICAgICAi LXNuYXBzaG90ICAgICAgIHdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBpbnN0ZWFkIG9mIGRpc2sg aW1hZ2UgZmlsZXNcbiIKQEAgLTY1NTYsNiArNjU1OCw3IEBAIGVudW0gewogICAgIFFFTVVfT1BU SU9OX2hkYywKICAgICBRRU1VX09QVElPTl9oZGQsCiAgICAgUUVNVV9PUFRJT05fY2Ryb20sCisg ICAgUUVNVV9PUFRJT05fbXRkYmxvY2ssCiAgICAgUUVNVV9PUFRJT05fc2QsCiAgICAgUUVNVV9P UFRJT05fYm9vdCwKICAgICBRRU1VX09QVElPTl9zbmFwc2hvdCwKQEAgLTY2MzQsNiArNjYzNyw3 IEBAIGNvbnN0IFFFTVVPcHRpb24gcWVtdV9vcHRpb25zW10gPSB7CiAgICAgeyAiaGRjIiwgSEFT X0FSRywgUUVNVV9PUFRJT05faGRjIH0sCiAgICAgeyAiaGRkIiwgSEFTX0FSRywgUUVNVV9PUFRJ T05faGRkIH0sCiAgICAgeyAiY2Ryb20iLCBIQVNfQVJHLCBRRU1VX09QVElPTl9jZHJvbSB9LAor ICAgIHsgIm10ZGJsb2NrIiwgSEFTX0FSRywgUUVNVV9PUFRJT05fbXRkYmxvY2sgfSwKICAgICB7 ICJzZCIsIEhBU19BUkcsIFFFTVVfT1BUSU9OX3NkIH0sCiAgICAgeyAiYm9vdCIsIEhBU19BUkcs IFFFTVVfT1BUSU9OX2Jvb3QgfSwKICAgICB7ICJzbmFwc2hvdCIsIDAsIFFFTVVfT1BUSU9OX3Nu YXBzaG90IH0sCkBAIC03MTAwLDYgKzcxMDQsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAgICAgICAgICAgICAgICAgICAgICAgICBjZHJvbV9pbmRleCA9IC0xOwogICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUUVN VV9PUFRJT05fbXRkYmxvY2s6CisgICAgICAgICAgICAgICAgbXRkX2ZpbGVuYW1lID0gb3B0YXJn OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBRRU1VX09QVElPTl9z ZDoKICAgICAgICAgICAgICAgICBzZF9maWxlbmFtZSA9IG9wdGFyZzsKICAgICAgICAgICAgICAg ICBicmVhazsKZGlmZiAtLWdpdCBhL3ZsLmggYi92bC5oCmluZGV4IGM0ZDY2ZDguLjdjODhjNzIg MTAwNjQ0Ci0tLSBhL3ZsLmgKKysrIGIvdmwuaApAQCAtMTU4LDYgKzE1OCw3IEBAIGV4dGVybiBp bnQgdXNiX2VuYWJsZWQ7CiBleHRlcm4gaW50IHNtcF9jcHVzOwogZXh0ZXJuIGludCBzbmFwc2hv dDsKIGV4dGVybiBjb25zdCBjaGFyICpzZF9maWxlbmFtZTsKK2V4dGVybiBjb25zdCBjaGFyICpt dGRfZmlsZW5hbWU7CiBleHRlcm4gaW50IGdyYXBoaWNfcm90YXRlOwogZXh0ZXJuIGludCBub19x dWl0OwogZXh0ZXJuIGludCBzZW1paG9zdGluZ19lbmFibGVkOwpAQCAtMTM5Miw2ICsxMzkzLDI3 IEBAIHBmbGFzaF90ICpwZmxhc2hfcmVnaXN0ZXIgKHRhcmdldF91bG9uZyBiYXNlLCByYW1fYWRk cl90IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGlkMCwgdWludDE2 X3QgaWQxLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGlkMiwgdWludDE2 X3QgaWQzKTsKIAorLyogbmFuZC5jICovCitzdHJ1Y3QgbmFuZF9mbGFzaF9zOworc3RydWN0IG5h bmRfZmxhc2hfcyAqbmFuZF9pbml0KGludCBtYW5mX2lkLCBpbnQgY2hpcF9pZCk7Cit2b2lkIG5h bmRfZG9uZShzdHJ1Y3QgbmFuZF9mbGFzaF9zICpzKTsKK3ZvaWQgbmFuZF9zZXRwaW5zKHN0cnVj dCBuYW5kX2ZsYXNoX3MgKnMsIAorICAgICAgICAgICAgICAgIGludCBjbGUsIGludCBhbGUsIGlu dCBjZSwgaW50IHdwLCBpbnQgZ25kKTsKK3ZvaWQgbmFuZF9nZXRwaW5zKHN0cnVjdCBuYW5kX2Zs YXNoX3MgKnMsIGludCAqcmIpOwordm9pZCBuYW5kX3NldGlvKHN0cnVjdCBuYW5kX2ZsYXNoX3Mg KnMsIHVpbnQ4X3QgdmFsdWUpOwordWludDhfdCBuYW5kX2dldGlvKHN0cnVjdCBuYW5kX2ZsYXNo X3MgKnMpOworCisjZGVmaW5lIE5BTkRfTUZSX1RPU0hJQkEJMHg5OAorI2RlZmluZSBOQU5EX01G Ul9TQU1TVU5HCTB4ZWMKKyNkZWZpbmUgTkFORF9NRlJfRlVKSVRTVQkweDA0CisjZGVmaW5lIE5B TkRfTUZSX05BVElPTkFMCTB4OGYKKyNkZWZpbmUgTkFORF9NRlJfUkVORVNBUwkweDA3CisjZGVm aW5lIE5BTkRfTUZSX1NUTUlDUk8JMHgyMAorI2RlZmluZSBOQU5EX01GUl9IWU5JWAkJMHhhZAor I2RlZmluZSBOQU5EX01GUl9NSUNST04JCTB4MmMKKworI2luY2x1ZGUgImVjYy5oIgorCiAvKiBQ Q01DSUEvQ2FyZGJ1cyAqLwogCiBzdHJ1Y3QgcGNtY2lhX3NvY2tldF9zIHsKLS0gCjEuNC40LjMK Cg== ------=_Part_99738_13297816.1174080691781--