From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6C2AC43603 for ; Thu, 12 Dec 2019 14:10:05 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CBB62214AF for ; Thu, 12 Dec 2019 14:10:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="vED5P8f4"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="qSclf1Xw" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CBB62214AF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 9679216CD; Thu, 12 Dec 2019 15:09:12 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 9679216CD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1576159802; bh=nOgrSXzwjiznS4fw+HZukIB53ITOQjy4dCL/1HaSMm8=; h=To:From:Date:In-Reply-To:References:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=vED5P8f4P9/gitvyFOR2Fcqlvfryy1SheuhxbxJvjyZm3635c3HGEOXuusSBzvg7J zy+dWpK1HGbz1JIUnZn8ruBO4A1AM7KaHt/YgW7oo0H+Tz+J8WF1Ldw6rLQ1cq/WkY WVwt+4WOcdLvElN9ftWMk2KPmxFo9NecBxxGFzjw= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id DC901F801D8; Thu, 12 Dec 2019 15:09:11 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 2DBA0F8020C; Thu, 12 Dec 2019 15:09:09 +0100 (CET) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id B43E7F80089 for ; Thu, 12 Dec 2019 15:09:03 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz B43E7F80089 Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="qSclf1Xw" Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20191212140901euoutp02223609d9ad40706d0dcd71dd21ab0d78~fpO8g9H8S0551805518euoutp02u for ; Thu, 12 Dec 2019 14:09:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20191212140901euoutp02223609d9ad40706d0dcd71dd21ab0d78~fpO8g9H8S0551805518euoutp02u DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1576159741; bh=PWhcovhRZtUS7mqljvutM7neMedXfO4zLwJfP7J8q3A=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=qSclf1XwpZNsiD2/ld8ot32usEe8SgFsnFHsko9/vskyoe7KdIpmEI7t+7qWegjad sc/q8za9W7USBPc1BV84gRugfk1I5eltSEyfFVZB3zf7a9BkVlVMU8MfNO4l0GLD9l I7+U9a551mJ9Qcd4+65hS9m8BPh9nqxVpVchkdJ4= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20191212140901eucas1p1b039db417d18539ef9f84da99110cfb2~fpO8QSRB30649606496eucas1p1P; Thu, 12 Dec 2019 14:09:01 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 4F.FF.60698.DF942FD5; Thu, 12 Dec 2019 14:09:01 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20191212140900eucas1p129b752b74b188bd25ed5dc50beed6c2b~fpO7_SfqR1916919169eucas1p1h; Thu, 12 Dec 2019 14:09:00 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20191212140900eusmtrp187d1b6180a689b901272c701021b70be~fpO79mrlM3236932369eusmtrp13; Thu, 12 Dec 2019 14:09:00 +0000 (GMT) X-AuditID: cbfec7f5-a0fff7000001ed1a-d8-5df249fd2e99 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id DB.14.07950.CF942FD5; Thu, 12 Dec 2019 14:09:00 +0000 (GMT) Received: from [106.120.51.15] (unknown [106.120.51.15]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20191212140900eusmtip14ee874e808bd85a649be4b1f5d8e255e~fpO7ZpyX70100501005eusmtip1c; Thu, 12 Dec 2019 14:09:00 +0000 (GMT) To: Tzung-Bi Shih , broonie@kernel.org From: Marek Szyprowski Message-ID: <8aceb9ec-aa6e-1fa4-cee9-e22084c141e8@samsung.com> Date: Thu, 12 Dec 2019 15:09:00 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: <20191128151908.180871-1-tzungbi@google.com> Content-Language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrHKsWRmVeSWpSXmKPExsWy7djP87p/PT/FGvw+wWdx5eIhJoupD5+w WZw43Mhs0T6zg9Hi/PkN7BYzzu9jsjj8pp3VYs/FV+wOHB4bPjexeSzYVOqxaVUnm0ffllWM Hp83yQWwRnHZpKTmZJalFunbJXBl9L2oLWjbyVTx4U1OA+OdNqYuRk4OCQETiUU921lAbCGB FYwSB2ZydDFyAdlfGCVOHjzCBuF8ZpR4tu4wG0zHiY1XoBLLGSX2PJjJCuG8ZZToffuPFaRK WCBP4uCS1WAdIgJWEq/777KAFDEL3GCUOPrnJyNIgk3AUKLrbRdYEa+AncSCE0fAbBYBVYkr M1uAbA4OUYFYiY7lGRAlghInZz4Bu5VTwFJi38+L7CA2s4C8RPPW2cwQtrjErSfzmUB2SQhs Y5d43vGdCWSOhICLRPvVSIgPhCVeHd/CDmHLSJye3MMCUd/MKPHw3Fp2CKeHUeJy0wxGiCpr icPHL7KCDGIW0JRYv0sfIuwoMfveZ2aI+XwSN94KQtzAJzFp23SoMK9ER5sQRLWaxKzj6+DW HrxwiXkCo9IsJJ/NQvLNLCTfzELYu4CRZRWjeGppcW56arFxXmq5XnFibnFpXrpecn7uJkZg Kjr97/jXHYz7/iQdYhTgYFTi4e2Q/BgrxJpYVlyZe4hRgoNZSYT3eNu7WCHelMTKqtSi/Pii 0pzU4kOM0hwsSuK8xotexgoJpCeWpGanphakFsFkmTg4pRoYhVti5UxdxWq/6Wsbt96w8l99 pa5Y7rFXj4Kd3ulfJf8ZnluWqFyRr9/lUS60rHPl99m/rrfc5sjYyJt6g6fAxvbZDFHho7MU V9R8tfXYUqd29UTnulerkzrbykQSpm22nrUnsWr9e0nnKfGffxu+KstewH75epYcxxnjAIbE DdxP7RXuzHBUYinOSDTUYi4qTgQA6hRaukEDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMIsWRmVeSWpSXmKPExsVy+t/xu7p/PD/FGhy9bGlx5eIhJoupD5+w WZw43Mhs0T6zg9Hi/PkN7BYzzu9jsjj8pp3VYs/FV+wOHB4bPjexeSzYVOqxaVUnm0ffllWM Hp83yQWwRunZFOWXlqQqZOQXl9gqRRtaGOkZWlroGZlY6hkam8daGZkq6dvZpKTmZJalFunb Jehl9L2oLWjbyVTx4U1OA+OdNqYuRk4OCQETiRMbr7B1MXJxCAksZZQ49mYWG0RCRuLktAZW CFtY4s+1Lqii14wSK2deBEsIC+RJHFyyGqxBRMBK4nX/XRaQImaBW4wSfydvZIXo6GGUeLl+ LztIFZuAoUTX2y6wDl4BO4kFJ46A2SwCqhJXZraA2aICsRLfV35ihKgRlDg58wkLiM0pYCmx 7+dFsDnMAmYS8zY/ZIaw5SWat86GssUlbj2ZzzSBUWgWkvZZSFpmIWmZhaRlASPLKkaR1NLi 3PTcYiO94sTc4tK8dL3k/NxNjMAI3Hbs55YdjF3vgg8xCnAwKvHwPpD+GCvEmlhWXJl7iFGC g1lJhPd427tYId6UxMqq1KL8+KLSnNTiQ4ymQM9NZJYSTc4HJoe8knhDU0NzC0tDc2NzYzML JXHeDoGDMUIC6YklqdmpqQWpRTB9TBycUg2Mwa1Llyl9X+LN/5xBfGpt+GX2lbunF7DfdD3W lMj83q7y7pcdTE9Ev7roqQS0ehgsLc8+cDFc6Un7jB0BLTHBE4q6qtP7yopq5izxU2bxta17 drK5aG3v4qunjFTtbn6YKXp0+rt7/DUL1q3adM96BdfDRWurDvVMsfqpsKT1vN25KX9XLmRO UGIpzkg01GIuKk4EAKsIkG/WAgAA X-CMS-MailID: 20191212140900eucas1p129b752b74b188bd25ed5dc50beed6c2b X-Msg-Generator: CA X-RootMTR: 20191128152110epcas3p2b205b4b55f6d8bfac42fcb8faaade93c X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20191128152110epcas3p2b205b4b55f6d8bfac42fcb8faaade93c References: <20191128151908.180871-1-tzungbi@google.com> Cc: alsa-devel@alsa-project.org, 'Linux Samsung SOC' , cychiang@google.com, Krzysztof Kozlowski , Sylwester Nawrocki , dgreid@google.com Subject: Re: [alsa-devel] [PATCH v2] ASoC: max98090: save and restore SHDN when changing sensitive registers X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" SGksCgpPbiAyOC4xMS4yMDE5IDE2OjE5LCBUenVuZy1CaSBTaGloIHdyb3RlOgo+IEFjY29yZGlu ZyB0byB0aGUgZGF0YXNoZWV0LCB0aGVyZSBhcmUgc29tZSByZWdpc3RlcnMgY2FuIG9ubHkgYmUg Y2hhbmdlZAo+IHdoZW4gU0hETiBpcyAwLiAgQ2hhbmdpbmcgdGhlc2Ugc2V0dGluZ3MgZHVyaW5n IFNIRE4gPSAxIGNhbiBjb21wcm9taXNlCj4gZGV2aWNlIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFu Y2Ugc3BlY2lmaWNhdGlvbnMuCj4KPiBTYXZlcyBTSEROIGJlZm9yZSB3cml0aW5nIHRvIHRoZXNl IHNlbnNpdGl2ZSByZWdpc3RlcnMgYW5kIHJlc3RvcmVzIFNIRE4KPiBhZnRlcndhcmQuCj4KPiBI ZXJlIGlzIHRoZSByZWdpc3RlciBsaXN0IGNvZGVjIGRyaXZlciBvZiBtYXg5ODA5MCB3YW50cyB0 byBjaGFuZ2U6Cj4gTTk4MDkwX1JFR19RVUlDS19TWVNURU1fQ0xPQ0sJCTB4MDQKPiBNOTgwOTBf UkVHX1FVSUNLX1NBTVBMRV9SQVRFCQkweDA1Cj4gTTk4MDkwX1JFR19EQUlfSU5URVJGQUNFCQkw eDA2Cj4gTTk4MDkwX1JFR19EQUNfUEFUSAkJCTB4MDcKPiBNOTgwOTBfUkVHX01JQ19ESVJFQ1Rf VE9fQURDCQkweDA4Cj4gTTk4MDkwX1JFR19MSU5FX1RPX0FEQwkJCTB4MDkKPiBNOTgwOTBfUkVH X0FOQUxPR19NSUNfTE9PUAkJMHgwQQo+IE05ODA5MF9SRUdfQU5BTE9HX0xJTkVfTE9PUAkJMHgw Qgo+IE05ODA5MF9SRUdfU1lTVEVNX0NMT0NLCQkJMHgxQgo+IE05ODA5MF9SRUdfQ0xPQ0tfTU9E RQkJCTB4MUMKPiBNOTgwOTBfUkVHX0NMT0NLX1JBVElPX05JX01TQgkJMHgxRAo+IE05ODA5MF9S RUdfQ0xPQ0tfUkFUSU9fTklfTFNCCQkweDFFCj4gTTk4MDkwX1JFR19DTE9DS19SQVRJT19NSV9N U0IJCTB4MUYKPiBNOTgwOTBfUkVHX0NMT0NLX1JBVElPX01JX0xTQgkJMHgyMAo+IE05ODA5MF9S RUdfTUFTVEVSX01PREUJCQkweDIxCj4gTTk4MDkwX1JFR19JTlRFUkZBQ0VfRk9STUFUCQkweDIy Cj4gTTk4MDkwX1JFR19URE1fQ09OVFJPTAkJCTB4MjMKPiBNOTgwOTBfUkVHX1RETV9GT1JNQVQJ CQkweDI0Cj4gTTk4MDkwX1JFR19JT19DT05GSUdVUkFUSU9OCQkweDI1Cj4gTTk4MDkwX1JFR19G SUxURVJfQ09ORklHCQkweDI2Cj4gTTk4MDkwX1JFR19JTlBVVF9FTkFCTEUJCQkweDNFCj4gTTk4 MDkwX1JFR19PVVRQVVRfRU5BQkxFCQkweDNGCj4gTTk4MDkwX1JFR19CSUFTX0NPTlRST0wJCQkw eDQyCj4gTTk4MDkwX1JFR19EQUNfQ09OVFJPTAkJCTB4NDMKPiBNOTgwOTBfUkVHX0FEQ19DT05U Uk9MCQkJMHg0NAo+IE05ODA5MF9SRUdfRFJDX1RJTUlORwkJCTB4MzMKPiBNOTgwOTBfUkVHX0RS Q19DT01QUkVTU09SCQkweDM0Cj4gTTk4MDkwX1JFR19EUkNfRVhQQU5ERVIJCQkweDM1Cj4gTTk4 MDkwX1JFR19EU1BfRklMVEVSX0VOQUJMRQkJMHg0MQo+IE05ODA5MF9SRUdfRVFVQUxJWkVSX0JB U0UJCTB4NDYKPiBNOTgwOTBfUkVHX1JFQ09SRF9CSVFVQURfQkFTRQkJMHhBRgo+IE05ODA5MF9S RUdfRElHSVRBTF9NSUNfRU5BQkxFCQkweDEzCj4gTTk4MDkwX1JFR19ESUdJVEFMX01JQ19DT05G SUcJCTB4MTQKPgo+IFNpZ25lZC1vZmYtYnk6IFR6dW5nLUJpIFNoaWggPHR6dW5nYmlAZ29vZ2xl LmNvbT4KClRvZGF5IEkndmUgbm90aWNlZCB0aGF0IHRoaXMgcGF0Y2ggZ290IG1lcmdlZCB0byBs aW51eC1uZXh0IGFzIGNvbW1pdCAKNjJkNWFlNGNhZmI3ZmZlZWVjNmJhMmRkMTgxNGNhZmVlZWE3 ZGQ4Zi4gU2FkbHkgaXQgYnJlYWtzIGNvZGVjIApvcGVyYXRpb24gb24gc29tZSBTYW1zdW5nIEV4 eW5vcyBTb0MgYmFzZWQgYm9hcmRzOiBPZHJvaWQgVTMsIFhVLCBYVTMgCmFuZCBDaHJvbWVib29r IFBlYWNoLVBpdC9QaS4gSSBnZXQgdGhlIGZvbGxvd2luZyBlcnJvcnMgZHVyaW5nIGJvb3Q6Cgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV0FS TklORzogcG9zc2libGUgY2lyY3VsYXIgbG9ja2luZyBkZXBlbmRlbmN5IGRldGVjdGVkCjUuNS4w LXJjMS1uZXh0LTIwMTkxMjEyICM4NiBOb3QgdGFpbnRlZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYWxzYWN0bC8yNjUgaXMgdHJ5aW5nIHRv IGFjcXVpcmUgbG9jazoKZWRhODIwZjQgKCZjYXJkLT5kYXBtX211dGV4KXsrLisufSwgYXQ6IG1h eDk4MDkwX3NoZG5fc2F2ZSsweDFjLzB4MjgKCmJ1dCB0YXNrIGlzIGFscmVhZHkgaG9sZGluZyBs b2NrOgplZGE1MjQ5YyAoJmNhcmQtPmNvbnRyb2xzX3J3c2VtKXsrKysrfSwgYXQ6IHNuZF9jdGxf aW9jdGwrMHhjYy8weGJiOAoKd2hpY2ggbG9jayBhbHJlYWR5IGRlcGVuZHMgb24gdGhlIG5ldyBs b2NrLgoKCnRoZSBleGlzdGluZyBkZXBlbmRlbmN5IGNoYWluIChpbiByZXZlcnNlIG9yZGVyKSBp czoKZHdtbWNfZXh5bm9zIDEyMjAwMDAwLm1tYzogVW5leHBlY3RlZCBpbnRlcnJ1cHQgbGF0ZW5j eQoKLT4gIzEgKCZjYXJkLT5jb250cm9sc19yd3NlbSl7KysrK306CiDCoMKgwqDCoMKgwqAgc25k X2N0bF9hZGRfcmVwbGFjZSsweDNjLzB4ODQKIMKgwqDCoMKgwqDCoCBkYXBtX2NyZWF0ZV9vcl9z aGFyZV9rY29udHJvbCsweDI0Yy8weDJlMAogwqDCoMKgwqDCoMKgIHNuZF9zb2NfZGFwbV9uZXdf d2lkZ2V0cysweDMwOC8weDU5NAogwqDCoMKgwqDCoMKgIHNuZF9zb2NfYmluZF9jYXJkKzB4ODBj LzB4YWM4CiDCoMKgwqDCoMKgwqAgZGV2bV9zbmRfc29jX3JlZ2lzdGVyX2NhcmQrMHgzNC8weDZj CiDCoMKgwqDCoMKgwqAgYXNvY19zaW1wbGVfcHJvYmUrMHgyNDQvMHg0YTAKIMKgwqDCoMKgwqDC oCBwbGF0Zm9ybV9kcnZfcHJvYmUrMHg2Yy8weGE0CiDCoMKgwqDCoMKgwqAgcmVhbGx5X3Byb2Jl KzB4MjAwLzB4NDkwCiDCoMKgwqDCoMKgwqAgZHJpdmVyX3Byb2JlX2RldmljZSsweDc4LzB4MWY4 CiDCoMKgwqDCoMKgwqAgYnVzX2Zvcl9lYWNoX2RydisweDc0LzB4YjgKIMKgwqDCoMKgwqDCoCBf X2RldmljZV9hdHRhY2grMHhkNC8weDE2YwogwqDCoMKgwqDCoMKgIGJ1c19wcm9iZV9kZXZpY2Ur MHg4OC8weDkwCiDCoMKgwqDCoMKgwqAgZGVmZXJyZWRfcHJvYmVfd29ya19mdW5jKzB4M2MvMHhk MAogwqDCoMKgwqDCoMKgIHByb2Nlc3Nfb25lX3dvcmsrMHgyMmMvMHg3YzQKIMKgwqDCoMKgwqDC oCB3b3JrZXJfdGhyZWFkKzB4NDQvMHg1MjQKIMKgwqDCoMKgwqDCoCBrdGhyZWFkKzB4MTMwLzB4 MTY0CiDCoMKgwqDCoMKgwqAgcmV0X2Zyb21fZm9yaysweDE0LzB4MjAKIMKgwqDCoMKgwqDCoCAw eDAKCi0+ICMwICgmY2FyZC0+ZGFwbV9tdXRleCl7Ky4rLn06CiDCoMKgwqDCoMKgwqAgbG9ja19h Y3F1aXJlKzB4ZTgvMHgyNzAKIMKgwqDCoMKgwqDCoCBfX211dGV4X2xvY2srMHg5Yy8weGIxOAog wqDCoMKgwqDCoMKgIG11dGV4X2xvY2tfbmVzdGVkKzB4MWMvMHgyNAogwqDCoMKgwqDCoMKgIG1h eDk4MDkwX3NoZG5fc2F2ZSsweDFjLzB4MjgKIMKgwqDCoMKgwqDCoCBtYXg5ODA5MF9wdXRfZW51 bV9kb3VibGUrMHgyMC8weDQwCiDCoMKgwqDCoMKgwqAgc25kX2N0bF9pb2N0bCsweDE5MC8weGJi OAogwqDCoMKgwqDCoMKgIGRvX3Zmc19pb2N0bCsweGIwLzB4YWIwCiDCoMKgwqDCoMKgwqAga3N5 c19pb2N0bCsweDM0LzB4NWMKIMKgwqDCoMKgwqDCoCByZXRfZmFzdF9zeXNjYWxsKzB4MC8weDI4 CiDCoMKgwqDCoMKgwqAgMHhiZTkwOTRkYwoKb3RoZXIgaW5mbyB0aGF0IG1pZ2h0IGhlbHAgdXMg ZGVidWcgdGhpczoKCiDCoFBvc3NpYmxlIHVuc2FmZSBsb2NraW5nIHNjZW5hcmlvOgoKIMKgwqDC oMKgwqDCoCBDUFUwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ1BVMQog wqDCoMKgwqDCoMKgIC0tLS3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAt LS0tCiDCoCBsb2NrKCZjYXJkLT5jb250cm9sc19yd3NlbSk7CiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbG9jaygmY2FyZC0+ZGFw bV9tdXRleCk7CiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgbG9jaygmY2FyZC0+Y29udHJvbHNfcndzZW0pOwogwqAgbG9jaygmY2Fy ZC0+ZGFwbV9tdXRleCk7CgogwqAqKiogREVBRExPQ0sgKioqCgoxIGxvY2sgaGVsZCBieSBhbHNh Y3RsLzI2NToKIMKgIzA6IGVkYTUyNDljICgmY2FyZC0+Y29udHJvbHNfcndzZW0peysrKyt9LCBh dDogc25kX2N0bF9pb2N0bCsweGNjLzB4YmI4CgpzdGFjayBiYWNrdHJhY2U6CkNQVTogMCBQSUQ6 IDI2NSBDb21tOiBhbHNhY3RsIE5vdCB0YWludGVkIDUuNS4wLXJjMS1uZXh0LTIwMTkxMjEyICM4 NgpIYXJkd2FyZSBuYW1lOiBTQU1TVU5HIEVYWU5PUyAoRmxhdHRlbmVkIERldmljZSBUcmVlKQpb PGMwMTEyNTcwPl0gKHVud2luZF9iYWNrdHJhY2UpIGZyb20gWzxjMDEwZTA1Yz5dIChzaG93X3N0 YWNrKzB4MTAvMHgxNCkKWzxjMDEwZTA1Yz5dIChzaG93X3N0YWNrKSBmcm9tIFs8YzBiMWYxNWM+ XSAoZHVtcF9zdGFjaysweGI0LzB4ZTApCls8YzBiMWYxNWM+XSAoZHVtcF9zdGFjaykgZnJvbSBb PGMwMTg5ZWFjPl0gKGNoZWNrX25vbmNpcmN1bGFyKzB4MWVjLzB4MjA4KQpbPGMwMTg5ZWFjPl0g KGNoZWNrX25vbmNpcmN1bGFyKSBmcm9tIFs8YzAxOGMyYzg+XSAKKF9fbG9ja19hY3F1aXJlKzB4 MTIxMC8weDI1ZWMpCls8YzAxOGMyYzg+XSAoX19sb2NrX2FjcXVpcmUpIGZyb20gWzxjMDE4ZGZj ND5dIChsb2NrX2FjcXVpcmUrMHhlOC8weDI3MCkKWzxjMDE4ZGZjND5dIChsb2NrX2FjcXVpcmUp IGZyb20gWzxjMGIzZmMzMD5dIChfX211dGV4X2xvY2srMHg5Yy8weGIxOCkKWzxjMGIzZmMzMD5d IChfX211dGV4X2xvY2spIGZyb20gWzxjMGI0MDZjOD5dIChtdXRleF9sb2NrX25lc3RlZCsweDFj LzB4MjQpCls8YzBiNDA2Yzg+XSAobXV0ZXhfbG9ja19uZXN0ZWQpIGZyb20gWzxjMDgzMzk4OD5d IAoobWF4OTgwOTBfc2hkbl9zYXZlKzB4MWMvMHgyOCkKWzxjMDgzMzk4OD5dIChtYXg5ODA5MF9z aGRuX3NhdmUpIGZyb20gWzxjMDgzNDQwND5dIAoobWF4OTgwOTBfcHV0X2VudW1fZG91YmxlKzB4 MjAvMHg0MCkKWzxjMDgzNDQwND5dIChtYXg5ODA5MF9wdXRfZW51bV9kb3VibGUpIGZyb20gWzxj MDgwNzk3MD5dIAooc25kX2N0bF9pb2N0bCsweDE5MC8weGJiOCkKWzxjMDgwNzk3MD5dIChzbmRf Y3RsX2lvY3RsKSBmcm9tIFs8YzAyY2EwYmM+XSAoZG9fdmZzX2lvY3RsKzB4YjAvMHhhYjApCls8 YzAyY2EwYmM+XSAoZG9fdmZzX2lvY3RsKSBmcm9tIFs8YzAyY2FhZjA+XSAoa3N5c19pb2N0bCsw eDM0LzB4NWMpCls8YzAyY2FhZjA+XSAoa3N5c19pb2N0bCkgZnJvbSBbPGMwMTAxMDAwPl0gKHJl dF9mYXN0X3N5c2NhbGwrMHgwLzB4MjgpCkV4Y2VwdGlvbiBzdGFjaygweGVjNDcxZmE4IHRvIDB4 ZWM0NzFmZjApCi4uLgoKODwtLS0gY3V0IGhlcmUgLS0tClVuYWJsZSB0byBoYW5kbGUga2VybmVs IE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhdCB2aXJ0dWFsIGFkZHJlc3MgMDAwMDAwYjAKcGdk ID0gKHB0cnZhbCkKWzAwMDAwMGIwXSAqcGdkPTAwMDAwMDAwCkludGVybmFsIGVycm9yOiBPb3Bz OiA1IFsjMV0gUFJFRU1QVCBTTVAgQVJNCk1vZHVsZXMgbGlua2VkIGluOgpDUFU6IDAgUElEOiAy NjUgQ29tbTogYWxzYWN0bCBOb3QgdGFpbnRlZCA1LjUuMC1yYzEtbmV4dC0yMDE5MTIxMiAjODYK SGFyZHdhcmUgbmFtZTogU0FNU1VORyBFWFlOT1MgKEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSkKUEMg aXMgYXQgX19tdXRleF9sb2NrKzB4NTQvMHhiMTgKTFIgaXMgYXQgX19fbWlnaHRfc2xlZXArMHgz Yy8weDJlMApwYyA6IFs8YzBiM2ZiZTg+XcKgwqDCoCBsciA6IFs8YzAxNTg1YTg+XcKgwqDCoCBw c3I6IDYwMDAwMDEzCnNwIDogZWM0NzFlMDDCoCBpcCA6IGU4NWIyZTA1wqAgZnAgOiBlZGE4YjI4 MApyMTA6IGVkYTUyNDY0wqAgcjkgOiBlZGE1MjAwMMKgIHI4IDogYmU5MDk2MTgKcjcgOiBjMTkx NjY0NMKgIHI2IDogMDAwMDAwMDDCoCByNSA6IDAwMDAwMDAwwqAgcjQgOiAwMDAwMDA4MApyMyA6 IDAwMDAwMDAwwqAgcjIgOiAwMDQwMDAwMMKgIHIxIDogMDAwMDAzYWHCoCByMCA6IDAwMDAwMDAw CkZsYWdzOiBuWkN2wqAgSVJRcyBvbsKgIEZJUXMgb27CoCBNb2RlIFNWQ18zMsKgIElTQSBBUk3C oCBTZWdtZW50IG5vbmUKQ29udHJvbDogMTBjNTM4N2TCoCBUYWJsZTogNmM2MmMwNmHCoCBEQUM6 IDAwMDAwMDUxClByb2Nlc3MgYWxzYWN0bCAocGlkOiAyNjUsIHN0YWNrIGxpbWl0ID0gMHgocHRy dmFsKSkKU3RhY2s6ICgweGVjNDcxZTAwIHRvIDB4ZWM0NzIwMDApCi4uLgpbPGMwYjNmYmU4Pl0g KF9fbXV0ZXhfbG9jaykgZnJvbSBbPGMwYjQwNmM4Pl0gKG11dGV4X2xvY2tfbmVzdGVkKzB4MWMv MHgyNCkKWzxjMGI0MDZjOD5dIChtdXRleF9sb2NrX25lc3RlZCkgZnJvbSBbPGMwODMzOTg4Pl0g CihtYXg5ODA5MF9zaGRuX3NhdmUrMHgxYy8weDI4KQpbPGMwODMzOTg4Pl0gKG1heDk4MDkwX3No ZG5fc2F2ZSkgZnJvbSBbPGMwODM0MzQ0Pl0gCihtYXg5ODA5MF9kYXBtX3B1dF9lbnVtX2RvdWJs ZSsweDIwLzB4NDApCls8YzA4MzQzNDQ+XSAobWF4OTgwOTBfZGFwbV9wdXRfZW51bV9kb3VibGUp IGZyb20gWzxjMDgwNzk3MD5dIAooc25kX2N0bF9pb2N0bCsweDE5MC8weGJiOCkKWzxjMDgwNzk3 MD5dIChzbmRfY3RsX2lvY3RsKSBmcm9tIFs8YzAyY2EwYmM+XSAoZG9fdmZzX2lvY3RsKzB4YjAv MHhhYjApCls8YzAyY2EwYmM+XSAoZG9fdmZzX2lvY3RsKSBmcm9tIFs8YzAyY2FhZjA+XSAoa3N5 c19pb2N0bCsweDM0LzB4NWMpCls8YzAyY2FhZjA+XSAoa3N5c19pb2N0bCkgZnJvbSBbPGMwMTAx MDAwPl0gKHJldF9mYXN0X3N5c2NhbGwrMHgwLzB4MjgpCkV4Y2VwdGlvbiBzdGFjaygweGVjNDcx ZmE4IHRvIDB4ZWM0NzFmZjApCjFmYTA6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAzIGMyYzg1NTEzIGJlOTA5NjE4IAowMDQ3MjYy MAoxZmMwOiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMiAwMDAwMDAzNiAwMDAwMDAwMiBiZTkw OTUxMCAwMDAwMDAwMyAKYmU5MDk5NmMKMWZlMDogYjZmNDg3YzQgYmU5MDk0ZGMgYjZlOGQzYTAg YjZjZGE3OWMKQ29kZTogZWJkODYzMWIgZTU5NzMwMDAgZTM1MzAwMDAgMWEwMDAwMDIgKGU1OTQz MDMwKQotLS1bIGVuZCB0cmFjZSAzNzZkMmRlMjc4NjY5MGQ3IF0tLS0KClRoZSBvbmx5IHN0cmFu Z2UgdGhpbmcgaXMgdGhhdCBDaHJvbWVib29rIFNub3csIHdoaWNoIGFsc28gdXNlIHRoaXMgCmNv ZGVjIGJvb3RzIGZpbmUuCgo+IC0tLQo+IFRoaXMgcGF0Y2ggaXMgYSBmb2xsb3cgdXAgZml4IGZv ciB0aGUgcXVlc3Rpb246Cj4gaHR0cHM6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvcGlwZXJt YWlsL2Fsc2EtZGV2ZWwvMjAxOS1PY3RvYmVyLzE1NzM2NC5odG1sCj4KPiBDaGFuZ2VzIGZyb20g djE6Cj4gaHR0cHM6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvcGlwZXJtYWlsL2Fsc2EtZGV2 ZWwvMjAxOS1Ob3ZlbWJlci8xNTg4NTUuaHRtbAo+IC0gZml4IGEgdHlwbyBpbiBjb21taXQgbWVz c2FnZQo+IC0gcmViYXNlIHRvIHRoZSBsYXRlc3QgZm9yLW5leHQgKGEgZmV3IGxpbmUgbnVtYmVy cyBjaGFuZ2VkKQo+Cj4gICBzb3VuZC9zb2MvY29kZWNzL21heDk4MDkwLmMgfCA0MzMgKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gICBzb3VuZC9zb2MvY29kZWNzL21heDk4 MDkwLmggfCAgIDMgKy0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMzEyIGluc2VydGlvbnMoKyksIDEy NCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL21heDk4MDkw LmMgYi9zb3VuZC9zb2MvY29kZWNzL21heDk4MDkwLmMKPiBpbmRleCBlNDZiNmFkYTEzYjEuLmRh MjM4MTBmOTU4ZSAxMDA2NDQKPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL21heDk4MDkwLmMKPiAr KysgYi9zb3VuZC9zb2MvY29kZWNzL21heDk4MDkwLmMKPiBAQCAtNSwyNCArNSwxNDkgQEAKPiAg ICAqIENvcHlyaWdodCAyMDExLTIwMTIgTWF4aW0gSW50ZWdyYXRlZCBQcm9kdWN0cwo+ICAgICov Cj4gICAKPiArI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5o Pgo+ICAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgvaTJjLmg+ Cj4gICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5o Pgo+ICAgI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcG0uaD4KPiAg ICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcmVnbWFw Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+IC0jaW5jbHVkZSA8bGludXgvYWNwaS5o Pgo+IC0jaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gICAjaW5jbHVkZSA8c291bmQvamFjay5oPgo+ ICsjaW5jbHVkZSA8c291bmQvbWF4OTgwOTAuaD4KPiAgICNpbmNsdWRlIDxzb3VuZC9wY20uaD4K PiAgICNpbmNsdWRlIDxzb3VuZC9wY21fcGFyYW1zLmg+Cj4gICAjaW5jbHVkZSA8c291bmQvc29j Lmg+Cj4gICAjaW5jbHVkZSA8c291bmQvdGx2Lmg+Cj4gLSNpbmNsdWRlIDxzb3VuZC9tYXg5ODA5 MC5oPgo+ICAgI2luY2x1ZGUgIm1heDk4MDkwLmgiCj4gICAKPiArc3RhdGljIHZvaWQgbWF4OTgw OTBfc2hkbl9zYXZlX2xvY2tlZChzdHJ1Y3QgbWF4OTgwOTBfcHJpdiAqbWF4OTgwOTApCj4gK3sK PiArCWludCBzaGRuID0gMDsKPiArCj4gKwkvKiBzYXZlZF9zaGRuLCBzYXZlZF9jb3VudCwgU0hE TiBhcmUgcHJvdGVjdGVkIGJ5IGNhcmQtPmRhcG1fbXV0ZXggKi8KPiArCXJlZ21hcF9yZWFkKG1h eDk4MDkwLT5yZWdtYXAsIE05ODA5MF9SRUdfREVWSUNFX1NIVVRET1dOLCAmc2hkbik7Cj4gKwlt YXg5ODA5MC0+c2F2ZWRfc2hkbiB8PSBzaGRuOwo+ICsJKyttYXg5ODA5MC0+c2F2ZWRfY291bnQ7 Cj4gKwo+ICsJaWYgKHNoZG4pCj4gKwkJcmVnbWFwX3dyaXRlKG1heDk4MDkwLT5yZWdtYXAsIE05 ODA5MF9SRUdfREVWSUNFX1NIVVRET1dOLCAweDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBt YXg5ODA5MF9zaGRuX3Jlc3RvcmVfbG9ja2VkKHN0cnVjdCBtYXg5ODA5MF9wcml2ICptYXg5ODA5 MCkKPiArewo+ICsJLyogc2F2ZWRfc2hkbiwgc2F2ZWRfY291bnQsIFNIRE4gYXJlIHByb3RlY3Rl ZCBieSBjYXJkLT5kYXBtX211dGV4ICovCj4gKwlpZiAoLS1tYXg5ODA5MC0+c2F2ZWRfY291bnQg PT0gMCkgewo+ICsJCWlmIChtYXg5ODA5MC0+c2F2ZWRfc2hkbikgewo+ICsJCQlyZWdtYXBfd3Jp dGUobWF4OTgwOTAtPnJlZ21hcCwKPiArCQkJCSAgICAgTTk4MDkwX1JFR19ERVZJQ0VfU0hVVERP V04sCj4gKwkJCQkgICAgIE05ODA5MF9TSEROTl9NQVNLKTsKPiArCQkJbWF4OTgwOTAtPnNhdmVk X3NoZG4gPSAwOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWF4OTgwOTBf c2hkbl9zYXZlKHN0cnVjdCBtYXg5ODA5MF9wcml2ICptYXg5ODA5MCkKPiArewo+ICsJbXV0ZXhf bG9jaygmbWF4OTgwOTAtPmNvbXBvbmVudC0+Y2FyZC0+ZGFwbV9tdXRleCk7Cj4gKwltYXg5ODA5 MF9zaGRuX3NhdmVfbG9ja2VkKG1heDk4MDkwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbWF4 OTgwOTBfc2hkbl9yZXN0b3JlKHN0cnVjdCBtYXg5ODA5MF9wcml2ICptYXg5ODA5MCkKPiArewo+ ICsJbWF4OTgwOTBfc2hkbl9yZXN0b3JlX2xvY2tlZChtYXg5ODA5MCk7Cj4gKwltdXRleF91bmxv Y2soJm1heDk4MDkwLT5jb21wb25lbnQtPmNhcmQtPmRhcG1fbXV0ZXgpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IG1heDk4MDkwX3B1dF92b2xzdyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJv bCwKPiArCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQo+ICt7Cj4gKwlzdHJ1 Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9Cj4gKwkJc25kX3NvY19rY29udHJvbF9j b21wb25lbnQoa2NvbnRyb2wpOwo+ICsJc3RydWN0IG1heDk4MDkwX3ByaXYgKm1heDk4MDkwID0K PiArCQlzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwo+ICsJaW50IHJl dDsKPiArCj4gKwltYXg5ODA5MF9zaGRuX3NhdmUobWF4OTgwOTApOwo+ICsJcmV0ID0gc25kX3Nv Y19wdXRfdm9sc3coa2NvbnRyb2wsIHVjb250cm9sKTsKPiArCW1heDk4MDkwX3NoZG5fcmVzdG9y ZShtYXg5ODA5MCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBt YXg5ODA5MF9kYXBtX3B1dF9lbnVtX2RvdWJsZShzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJv bCwKPiArCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQo+ICt7Cj4gKwlzdHJ1 Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9Cj4gKwkJc25kX3NvY19rY29udHJvbF9j b21wb25lbnQoa2NvbnRyb2wpOwo+ICsJc3RydWN0IG1heDk4MDkwX3ByaXYgKm1heDk4MDkwID0K PiArCQlzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwo+ICsJaW50IHJl dDsKPiArCj4gKwltYXg5ODA5MF9zaGRuX3NhdmUobWF4OTgwOTApOwo+ICsJcmV0ID0gc25kX3Nv Y19kYXBtX3B1dF9lbnVtX2RvdWJsZShrY29udHJvbCwgdWNvbnRyb2wpOwo+ICsJbWF4OTgwOTBf c2hkbl9yZXN0b3JlKG1heDk4MDkwKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IG1heDk4MDkwX3B1dF9lbnVtX2RvdWJsZShzdHJ1Y3Qgc25kX2tjb250cm9sICpr Y29udHJvbCwKPiArCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQo+ICt7Cj4g KwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9Cj4gKwkJc25kX3NvY19rY29u dHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOwo+ICsJc3RydWN0IG1heDk4MDkwX3ByaXYgKm1heDk4 MDkwID0KPiArCQlzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwo+ICsJ aW50IHJldDsKPiArCj4gKwltYXg5ODA5MF9zaGRuX3NhdmUobWF4OTgwOTApOwo+ICsJcmV0ID0g c25kX3NvY19wdXRfZW51bV9kb3VibGUoa2NvbnRyb2wsIHVjb250cm9sKTsKPiArCW1heDk4MDkw X3NoZG5fcmVzdG9yZShtYXg5ODA5MCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr c3RhdGljIGludCBtYXg5ODA5MF9ieXRlc19wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRy b2wsCj4gKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKPiArewo+ICsJc3Ry dWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPQo+ICsJCXNuZF9zb2Nfa2NvbnRyb2xf Y29tcG9uZW50KGtjb250cm9sKTsKPiArCXN0cnVjdCBtYXg5ODA5MF9wcml2ICptYXg5ODA5MCA9 Cj4gKwkJc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJbWF4OTgwOTBfc2hkbl9zYXZlKG1heDk4MDkwKTsKPiArCXJldCA9IHNuZF9z b2NfYnl0ZXNfcHV0KGtjb250cm9sLCB1Y29udHJvbCk7Cj4gKwltYXg5ODA5MF9zaGRuX3Jlc3Rv cmUobWF4OTgwOTApOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg bWF4OTgwOTBfZGFwbV9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywKPiArCXN0 cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLCBpbnQgZXZlbnQpCj4gK3sKPiArCXN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0KPiArCQlzbmRfc29jX2RhcG1fdG9fY29tcG9u ZW50KHctPmRhcG0pOwo+ICsJc3RydWN0IG1heDk4MDkwX3ByaXYgKm1heDk4MDkwID0KPiArCQlz bmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwo+ICsKPiArCXN3aXRjaCAo ZXZlbnQpIHsKPiArCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6Cj4gKwljYXNlIFNORF9TT0Nf REFQTV9QUkVfUE1EOgo+ICsJCW1heDk4MDkwX3NoZG5fc2F2ZV9sb2NrZWQobWF4OTgwOTApOwo+ ICsJCWJyZWFrOwo+ICsJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTVU6Cj4gKwljYXNlIFNORF9T T0NfREFQTV9QT1NUX1BNRDoKPiArCQltYXg5ODA5MF9zaGRuX3Jlc3RvcmVfbG9ja2VkKG1heDk4 MDkwKTsKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIC8q IEFsbG93cyBmb3Igc3BhcnNlbHkgcG9wdWxhdGVkIHJlZ2lzdGVyIG1hcHMgKi8KPiAgIHN0YXRp YyBjb25zdCBzdHJ1Y3QgcmVnX2RlZmF1bHQgbWF4OTgwOTBfcmVnW10gPSB7Cj4gICAJeyAweDAw LCAweDAwIH0sIC8qIDAwIFNvZnR3YXJlIFJlc2V0ICovCj4gQEAgLTUwNiwxMCArNjMxLDEzIEBA IHN0YXRpYyBTT0NfRU5VTV9TSU5HTEVfREVDTChtYXg5ODA5MF9hZGNocF9lbnVtLAo+ICAgCQkJ ICAgIG1heDk4MDkwX3B3cl9wZXJmX3RleHQpOwo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0 IHNuZF9rY29udHJvbF9uZXcgbWF4OTgwOTBfc25kX2NvbnRyb2xzW10gPSB7Cj4gLQlTT0NfRU5V TSgiTUlDIEJpYXMgVkNNIEJhbmRnYXAiLCBtYXg5ODA5MF92Y21iYW5kZ2FwX2VudW0pLAo+ICsJ U09DX0VOVU1fRVhUKCJNSUMgQmlhcyBWQ00gQmFuZGdhcCIsIG1heDk4MDkwX3ZjbWJhbmRnYXBf ZW51bSwKPiArCQlzbmRfc29jX2dldF9lbnVtX2RvdWJsZSwgbWF4OTgwOTBfcHV0X2VudW1fZG91 YmxlKSwKPiAgIAo+IC0JU09DX1NJTkdMRSgiRE1JQyBNSUMgQ29tcCBGaWx0ZXIgQ29uZmlnIiwg TTk4MDkwX1JFR19ESUdJVEFMX01JQ19DT05GSUcsCj4gLQkJTTk4MDkwX0RNSUNfQ09NUF9TSElG VCwgTTk4MDkwX0RNSUNfQ09NUF9OVU0gLSAxLCAwKSwKPiArCVNPQ19TSU5HTEVfRVhUKCJETUlD IE1JQyBDb21wIEZpbHRlciBDb25maWciLAo+ICsJCU05ODA5MF9SRUdfRElHSVRBTF9NSUNfQ09O RklHLAo+ICsJCU05ODA5MF9ETUlDX0NPTVBfU0hJRlQsIE05ODA5MF9ETUlDX0NPTVBfTlVNIC0g MSwgMCwKPiArCQlzbmRfc29jX2dldF92b2xzdywgbWF4OTgwOTBfcHV0X3ZvbHN3KSwKPiAgIAo+ ICAgCVNPQ19TSU5HTEVfRVhUX1RMVigiTUlDMSBCb29zdCBWb2x1bWUiLAo+ICAgCQlNOTgwOTBf UkVHX01JQzFfSU5QVVRfTEVWRUwsIE05ODA5MF9NSUNfUEExRU5fU0hJRlQsCj4gQEAgLTU2NCwy NCArNjkyLDM0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBtYXg5ODA5 MF9zbmRfY29udHJvbHNbXSA9IHsKPiAgIAkJTTk4MDkwX0FWUl9TSElGVCwgTTk4MDkwX0FWUl9O VU0gLSAxLCAxLAo+ICAgCQltYXg5ODA5MF9hdl90bHYpLAo+ICAgCj4gLQlTT0NfRU5VTSgiQURD IE92ZXJzYW1wbGluZyBSYXRlIiwgbWF4OTgwOTBfb3NyMTI4X2VudW0pLAo+IC0JU09DX1NJTkdM RSgiQURDIFF1YW50aXplciBEaXRoZXIiLCBNOTgwOTBfUkVHX0FEQ19DT05UUk9MLAo+IC0JCU05 ODA5MF9BRENESVRIRVJfU0hJRlQsIE05ODA5MF9BRENESVRIRVJfTlVNIC0gMSwgMCksCj4gLQlT T0NfRU5VTSgiQURDIEhpZ2ggUGVyZm9ybWFuY2UgTW9kZSIsIG1heDk4MDkwX2FkY2hwX2VudW0p LAo+IC0KPiAtCVNPQ19TSU5HTEUoIkRBQyBNb25vIE1vZGUiLCBNOTgwOTBfUkVHX0lPX0NPTkZJ R1VSQVRJT04sCj4gLQkJTTk4MDkwX0RNT05PX1NISUZULCBNOTgwOTBfRE1PTk9fTlVNIC0gMSwg MCksCj4gLQlTT0NfU0lOR0xFKCJTRElOIE1vZGUiLCBNOTgwOTBfUkVHX0lPX0NPTkZJR1VSQVRJ T04sCj4gLQkJTTk4MDkwX1NESUVOX1NISUZULCBNOTgwOTBfU0RJRU5fTlVNIC0gMSwgMCksCj4g LQlTT0NfU0lOR0xFKCJTRE9VVCBNb2RlIiwgTTk4MDkwX1JFR19JT19DT05GSUdVUkFUSU9OLAo+ IC0JCU05ODA5MF9TRE9FTl9TSElGVCwgTTk4MDkwX1NET0VOX05VTSAtIDEsIDApLAo+IC0JU09D X1NJTkdMRSgiU0RPVVQgSGktWiBNb2RlIiwgTTk4MDkwX1JFR19JT19DT05GSUdVUkFUSU9OLAo+ IC0JCU05ODA5MF9ISVpPRkZfU0hJRlQsIE05ODA5MF9ISVpPRkZfTlVNIC0gMSwgMSksCj4gLQlT T0NfRU5VTSgiRmlsdGVyIE1vZGUiLCBtYXg5ODA5MF9tb2RlX2VudW0pLAo+IC0JU09DX1NJTkdM RSgiUmVjb3JkIFBhdGggREMgQmxvY2tpbmciLCBNOTgwOTBfUkVHX0ZJTFRFUl9DT05GSUcsCj4g LQkJTTk4MDkwX0FIUEZfU0hJRlQsIE05ODA5MF9BSFBGX05VTSAtIDEsIDApLAo+IC0JU09DX1NJ TkdMRSgiUGxheWJhY2sgUGF0aCBEQyBCbG9ja2luZyIsIE05ODA5MF9SRUdfRklMVEVSX0NPTkZJ RywKPiAtCQlNOTgwOTBfREhQRl9TSElGVCwgTTk4MDkwX0RIUEZfTlVNIC0gMSwgMCksCj4gKwlT T0NfRU5VTV9FWFQoIkFEQyBPdmVyc2FtcGxpbmcgUmF0ZSIsIG1heDk4MDkwX29zcjEyOF9lbnVt LAo+ICsJCXNuZF9zb2NfZ2V0X2VudW1fZG91YmxlLCBtYXg5ODA5MF9wdXRfZW51bV9kb3VibGUp LAo+ICsJU09DX1NJTkdMRV9FWFQoIkFEQyBRdWFudGl6ZXIgRGl0aGVyIiwgTTk4MDkwX1JFR19B RENfQ09OVFJPTCwKPiArCQlNOTgwOTBfQURDRElUSEVSX1NISUZULCBNOTgwOTBfQURDRElUSEVS X05VTSAtIDEsIDAsCj4gKwkJc25kX3NvY19nZXRfdm9sc3csIG1heDk4MDkwX3B1dF92b2xzdyks Cj4gKwlTT0NfRU5VTV9FWFQoIkFEQyBIaWdoIFBlcmZvcm1hbmNlIE1vZGUiLCBtYXg5ODA5MF9h ZGNocF9lbnVtLAo+ICsJCXNuZF9zb2NfZ2V0X2VudW1fZG91YmxlLCBtYXg5ODA5MF9wdXRfZW51 bV9kb3VibGUpLAo+ICsKPiArCVNPQ19TSU5HTEVfRVhUKCJEQUMgTW9ubyBNb2RlIiwgTTk4MDkw X1JFR19JT19DT05GSUdVUkFUSU9OLAo+ICsJCU05ODA5MF9ETU9OT19TSElGVCwgTTk4MDkwX0RN T05PX05VTSAtIDEsIDAsCj4gKwkJc25kX3NvY19nZXRfdm9sc3csIG1heDk4MDkwX3B1dF92b2xz dyksCj4gKwlTT0NfU0lOR0xFX0VYVCgiU0RJTiBNb2RlIiwgTTk4MDkwX1JFR19JT19DT05GSUdV UkFUSU9OLAo+ICsJCU05ODA5MF9TRElFTl9TSElGVCwgTTk4MDkwX1NESUVOX05VTSAtIDEsIDAs Cj4gKwkJc25kX3NvY19nZXRfdm9sc3csIG1heDk4MDkwX3B1dF92b2xzdyksCj4gKwlTT0NfU0lO R0xFX0VYVCgiU0RPVVQgTW9kZSIsIE05ODA5MF9SRUdfSU9fQ09ORklHVVJBVElPTiwKPiArCQlN OTgwOTBfU0RPRU5fU0hJRlQsIE05ODA5MF9TRE9FTl9OVU0gLSAxLCAwLAo+ICsJCXNuZF9zb2Nf Z2V0X3ZvbHN3LCBtYXg5ODA5MF9wdXRfdm9sc3cpLAo+ICsJU09DX1NJTkdMRV9FWFQoIlNET1VU IEhpLVogTW9kZSIsIE05ODA5MF9SRUdfSU9fQ09ORklHVVJBVElPTiwKPiArCQlNOTgwOTBfSEla T0ZGX1NISUZULCBNOTgwOTBfSElaT0ZGX05VTSAtIDEsIDEsCj4gKwkJc25kX3NvY19nZXRfdm9s c3csIG1heDk4MDkwX3B1dF92b2xzdyksCj4gKwlTT0NfRU5VTV9FWFQoIkZpbHRlciBNb2RlIiwg bWF4OTgwOTBfbW9kZV9lbnVtLAo+ICsJCXNuZF9zb2NfZ2V0X2VudW1fZG91YmxlLCBtYXg5ODA5 MF9wdXRfZW51bV9kb3VibGUpLAo+ICsJU09DX1NJTkdMRV9FWFQoIlJlY29yZCBQYXRoIERDIEJs b2NraW5nIiwgTTk4MDkwX1JFR19GSUxURVJfQ09ORklHLAo+ICsJCU05ODA5MF9BSFBGX1NISUZU LCBNOTgwOTBfQUhQRl9OVU0gLSAxLCAwLAo+ICsJCXNuZF9zb2NfZ2V0X3ZvbHN3LCBtYXg5ODA5 MF9wdXRfdm9sc3cpLAo+ICsJU09DX1NJTkdMRV9FWFQoIlBsYXliYWNrIFBhdGggREMgQmxvY2tp bmciLCBNOTgwOTBfUkVHX0ZJTFRFUl9DT05GSUcsCj4gKwkJTTk4MDkwX0RIUEZfU0hJRlQsIE05 ODA5MF9ESFBGX05VTSAtIDEsIDAsCj4gKwkJc25kX3NvY19nZXRfdm9sc3csIG1heDk4MDkwX3B1 dF92b2xzdyksCj4gICAJU09DX1NJTkdMRV9UTFYoIkRpZ2l0YWwgQlEgVm9sdW1lIiwgTTk4MDkw X1JFR19BRENfQklRVUFEX0xFVkVMLAo+ICAgCQlNOTgwOTBfQVZCUV9TSElGVCwgTTk4MDkwX0FW QlFfTlVNIC0gMSwgMSwgbWF4OTgwOTBfZHZfdGx2KSwKPiAgIAlTT0NfU0lOR0xFX0VYVF9UTFYo IkRpZ2l0YWwgU2lkZXRvbmUgVm9sdW1lIiwKPiBAQCAtNTk0LDEzICs3MzIsMTcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG1heDk4MDkwX3NuZF9jb250cm9sc1tdID0g ewo+ICAgCVNPQ19TSU5HTEVfVExWKCJEaWdpdGFsIFZvbHVtZSIsIE05ODA5MF9SRUdfREFJX1BM QVlCQUNLX0xFVkVMLAo+ICAgCQlNOTgwOTBfRFZfU0hJRlQsIE05ODA5MF9EVl9OVU0gLSAxLCAx LAo+ICAgCQltYXg5ODA5MF9kdl90bHYpLAo+IC0JU05EX1NPQ19CWVRFUygiRVEgQ29lZmZpY2ll bnRzIiwgTTk4MDkwX1JFR19FUVVBTElaRVJfQkFTRSwgMTA1KSwKPiAtCVNPQ19TSU5HTEUoIkRp Z2l0YWwgRVEgMyBCYW5kIFN3aXRjaCIsIE05ODA5MF9SRUdfRFNQX0ZJTFRFUl9FTkFCTEUsCj4g LQkJTTk4MDkwX0VRM0JBTkRFTl9TSElGVCwgTTk4MDkwX0VRM0JBTkRFTl9OVU0gLSAxLCAwKSwK PiAtCVNPQ19TSU5HTEUoIkRpZ2l0YWwgRVEgNSBCYW5kIFN3aXRjaCIsIE05ODA5MF9SRUdfRFNQ X0ZJTFRFUl9FTkFCTEUsCj4gLQkJTTk4MDkwX0VRNUJBTkRFTl9TSElGVCwgTTk4MDkwX0VRNUJB TkRFTl9OVU0gLSAxLCAwKSwKPiAtCVNPQ19TSU5HTEUoIkRpZ2l0YWwgRVEgNyBCYW5kIFN3aXRj aCIsIE05ODA5MF9SRUdfRFNQX0ZJTFRFUl9FTkFCTEUsCj4gLQkJTTk4MDkwX0VRN0JBTkRFTl9T SElGVCwgTTk4MDkwX0VRN0JBTkRFTl9OVU0gLSAxLCAwKSwKPiArCVNORF9TT0NfQllURVNfRSgi RVEgQ29lZmZpY2llbnRzIiwgTTk4MDkwX1JFR19FUVVBTElaRVJfQkFTRSwgMTA1LAo+ICsJCXNu ZF9zb2NfYnl0ZXNfZ2V0LCBtYXg5ODA5MF9ieXRlc19wdXQpLAo+ICsJU09DX1NJTkdMRV9FWFQo IkRpZ2l0YWwgRVEgMyBCYW5kIFN3aXRjaCIsIE05ODA5MF9SRUdfRFNQX0ZJTFRFUl9FTkFCTEUs Cj4gKwkJTTk4MDkwX0VRM0JBTkRFTl9TSElGVCwgTTk4MDkwX0VRM0JBTkRFTl9OVU0gLSAxLCAw LAo+ICsJCXNuZF9zb2NfZ2V0X3ZvbHN3LCBtYXg5ODA5MF9wdXRfdm9sc3cpLAo+ICsJU09DX1NJ TkdMRV9FWFQoIkRpZ2l0YWwgRVEgNSBCYW5kIFN3aXRjaCIsIE05ODA5MF9SRUdfRFNQX0ZJTFRF Ul9FTkFCTEUsCj4gKwkJTTk4MDkwX0VRNUJBTkRFTl9TSElGVCwgTTk4MDkwX0VRNUJBTkRFTl9O VU0gLSAxLCAwLAo+ICsJCXNuZF9zb2NfZ2V0X3ZvbHN3LCBtYXg5ODA5MF9wdXRfdm9sc3cpLAo+ ICsJU09DX1NJTkdMRV9FWFQoIkRpZ2l0YWwgRVEgNyBCYW5kIFN3aXRjaCIsIE05ODA5MF9SRUdf RFNQX0ZJTFRFUl9FTkFCTEUsCj4gKwkJTTk4MDkwX0VRN0JBTkRFTl9TSElGVCwgTTk4MDkwX0VR N0JBTkRFTl9OVU0gLSAxLCAwLAo+ICsJCXNuZF9zb2NfZ2V0X3ZvbHN3LCBtYXg5ODA5MF9wdXRf dm9sc3cpLAo+ICAgCVNPQ19TSU5HTEUoIkRpZ2l0YWwgRVEgQ2xpcHBpbmcgRGV0ZWN0aW9uIiwg TTk4MDkwX1JFR19EQUlfUExBWUJBQ0tfTEVWRUxfRVEsCj4gICAJCU05ODA5MF9FUUNMUE5fU0hJ RlQsIE05ODA5MF9FUUNMUE5fTlVNIC0gMSwKPiAgIAkJMSksCj4gQEAgLTYwOCwyNSArNzUwLDM0 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBtYXg5ODA5MF9zbmRfY29u dHJvbHNbXSA9IHsKPiAgIAkJTTk4MDkwX0RWRVFfU0hJRlQsIE05ODA5MF9EVkVRX05VTSAtIDEs IDEsCj4gICAJCW1heDk4MDkwX2R2X3RsdiksCj4gICAKPiAtCVNPQ19TSU5HTEUoIkFMQyBFbmFi bGUiLCBNOTgwOTBfUkVHX0RSQ19USU1JTkcsCj4gLQkJTTk4MDkwX0RSQ0VOX1NISUZULCBNOTgw OTBfRFJDRU5fTlVNIC0gMSwgMCksCj4gLQlTT0NfRU5VTSgiQUxDIEF0dGFjayBUaW1lIiwgbWF4 OTgwOTBfZHJjYXRrX2VudW0pLAo+IC0JU09DX0VOVU0oIkFMQyBSZWxlYXNlIFRpbWUiLCBtYXg5 ODA5MF9kcmNybHNfZW51bSksCj4gKwlTT0NfU0lOR0xFX0VYVCgiQUxDIEVuYWJsZSIsIE05ODA5 MF9SRUdfRFJDX1RJTUlORywKPiArCQlNOTgwOTBfRFJDRU5fU0hJRlQsIE05ODA5MF9EUkNFTl9O VU0gLSAxLCAwLAo+ICsJCXNuZF9zb2NfZ2V0X3ZvbHN3LCBtYXg5ODA5MF9wdXRfdm9sc3cpLAo+ ICsJU09DX0VOVU1fRVhUKCJBTEMgQXR0YWNrIFRpbWUiLCBtYXg5ODA5MF9kcmNhdGtfZW51bSwK PiArCQlzbmRfc29jX2dldF9lbnVtX2RvdWJsZSwgbWF4OTgwOTBfcHV0X2VudW1fZG91YmxlKSwK PiArCVNPQ19FTlVNX0VYVCgiQUxDIFJlbGVhc2UgVGltZSIsIG1heDk4MDkwX2RyY3Jsc19lbnVt LAo+ICsJCXNuZF9zb2NfZ2V0X2VudW1fZG91YmxlLCBtYXg5ODA5MF9wdXRfZW51bV9kb3VibGUp LAo+ICAgCVNPQ19TSU5HTEVfVExWKCJBTEMgTWFrZSBVcCBWb2x1bWUiLCBNOTgwOTBfUkVHX0RS Q19HQUlOLAo+ICAgCQlNOTgwOTBfRFJDR19TSElGVCwgTTk4MDkwX0RSQ0dfTlVNIC0gMSwgMCwK PiAgIAkJbWF4OTgwOTBfYWxjbWFrZXVwX3RsdiksCj4gLQlTT0NfRU5VTSgiQUxDIENvbXByZXNz aW9uIFJhdGlvIiwgbWF4OTgwOTBfYWxjY21wX2VudW0pLAo+IC0JU09DX0VOVU0oIkFMQyBFeHBh bnNpb24gUmF0aW8iLCBtYXg5ODA5MF9kcmNleHBfZW51bSksCj4gLQlTT0NfU0lOR0xFX1RMVigi QUxDIENvbXByZXNzaW9uIFRocmVzaG9sZCBWb2x1bWUiLAo+ICsJU09DX0VOVU1fRVhUKCJBTEMg Q29tcHJlc3Npb24gUmF0aW8iLCBtYXg5ODA5MF9hbGNjbXBfZW51bSwKPiArCQlzbmRfc29jX2dl dF9lbnVtX2RvdWJsZSwgbWF4OTgwOTBfcHV0X2VudW1fZG91YmxlKSwKPiArCVNPQ19FTlVNX0VY VCgiQUxDIEV4cGFuc2lvbiBSYXRpbyIsIG1heDk4MDkwX2RyY2V4cF9lbnVtLAo+ICsJCXNuZF9z b2NfZ2V0X2VudW1fZG91YmxlLCBtYXg5ODA5MF9wdXRfZW51bV9kb3VibGUpLAo+ICsJU09DX1NJ TkdMRV9FWFRfVExWKCJBTEMgQ29tcHJlc3Npb24gVGhyZXNob2xkIFZvbHVtZSIsCj4gICAJCU05 ODA5MF9SRUdfRFJDX0NPTVBSRVNTT1IsIE05ODA5MF9EUkNUSENfU0hJRlQsCj4gLQkJTTk4MDkw X0RSQ1RIQ19OVU0gLSAxLCAxLCBtYXg5ODA5MF9hbGNjb21wX3RsdiksCj4gLQlTT0NfU0lOR0xF X1RMVigiQUxDIEV4cGFuc2lvbiBUaHJlc2hvbGQgVm9sdW1lIiwKPiArCQlNOTgwOTBfRFJDVEhD X05VTSAtIDEsIDEsCj4gKwkJc25kX3NvY19nZXRfdm9sc3csIG1heDk4MDkwX3B1dF92b2xzdywg bWF4OTgwOTBfYWxjY29tcF90bHYpLAo+ICsJU09DX1NJTkdMRV9FWFRfVExWKCJBTEMgRXhwYW5z aW9uIFRocmVzaG9sZCBWb2x1bWUiLAo+ICAgCQlNOTgwOTBfUkVHX0RSQ19FWFBBTkRFUiwgTTk4 MDkwX0RSQ1RIRV9TSElGVCwKPiAtCQlNOTgwOTBfRFJDVEhFX05VTSAtIDEsIDEsIG1heDk4MDkw X2RyY2V4cF90bHYpLAo+ICsJCU05ODA5MF9EUkNUSEVfTlVNIC0gMSwgMSwKPiArCQlzbmRfc29j X2dldF92b2xzdywgbWF4OTgwOTBfcHV0X3ZvbHN3LCBtYXg5ODA5MF9kcmNleHBfdGx2KSwKPiAg IAo+IC0JU09DX0VOVU0oIkRBQyBIUCBQbGF5YmFjayBQZXJmb3JtYW5jZSBNb2RlIiwKPiAtCQlt YXg5ODA5MF9kYWNfcGVyZm1vZGVfZW51bSksCj4gLQlTT0NfRU5VTSgiREFDIEhpZ2ggUGVyZm9y bWFuY2UgTW9kZSIsIG1heDk4MDkwX2RhY2hwX2VudW0pLAo+ICsJU09DX0VOVU1fRVhUKCJEQUMg SFAgUGxheWJhY2sgUGVyZm9ybWFuY2UgTW9kZSIsCj4gKwkJbWF4OTgwOTBfZGFjX3BlcmZtb2Rl X2VudW0sCj4gKwkJc25kX3NvY19nZXRfZW51bV9kb3VibGUsIG1heDk4MDkwX3B1dF9lbnVtX2Rv dWJsZSksCj4gKwlTT0NfRU5VTV9FWFQoIkRBQyBIaWdoIFBlcmZvcm1hbmNlIE1vZGUiLCBtYXg5 ODA5MF9kYWNocF9lbnVtLAo+ICsJCXNuZF9zb2NfZ2V0X2VudW1fZG91YmxlLCBtYXg5ODA5MF9w dXRfZW51bV9kb3VibGUpLAo+ICAgCj4gICAJU09DX1NJTkdMRV9UTFYoIkhlYWRwaG9uZSBMZWZ0 IE1peGVyIFZvbHVtZSIsCj4gICAJCU05ODA5MF9SRUdfSFBfQ09OVFJPTCwgTTk4MDkwX01JWEhQ TEdfU0hJRlQsCj4gQEAgLTY4NCw5ICs4MzUsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf a2NvbnRyb2xfbmV3IG1heDk4MDkwX3NuZF9jb250cm9sc1tdID0gewo+ICAgCVNPQ19TSU5HTEUo IlZvbHVtZSBBZGp1c3RtZW50IFNtb290aGluZyIsIE05ODA5MF9SRUdfTEVWRUxfQ09OVFJPTCwK PiAgIAkJTTk4MDkwX1ZTRU5OX1NISUZULCBNOTgwOTBfVlNFTk5fTlVNIC0gMSwgMSksCj4gICAK PiAtCVNORF9TT0NfQllURVMoIkJpcXVhZCBDb2VmZmljaWVudHMiLCBNOTgwOTBfUkVHX1JFQ09S RF9CSVFVQURfQkFTRSwgMTUpLAo+IC0JU09DX1NJTkdMRSgiQmlxdWFkIFN3aXRjaCIsIE05ODA5 MF9SRUdfRFNQX0ZJTFRFUl9FTkFCTEUsCj4gLQkJTTk4MDkwX0FEQ0JRRU5fU0hJRlQsIE05ODA5 MF9BRENCUUVOX05VTSAtIDEsIDApLAo+ICsJU05EX1NPQ19CWVRFU19FKCJCaXF1YWQgQ29lZmZp Y2llbnRzIiwKPiArCQlNOTgwOTBfUkVHX1JFQ09SRF9CSVFVQURfQkFTRSwgMTUsCj4gKwkJc25k X3NvY19ieXRlc19nZXQsIG1heDk4MDkwX2J5dGVzX3B1dCksCj4gKwlTT0NfU0lOR0xFX0VYVCgi QmlxdWFkIFN3aXRjaCIsIE05ODA5MF9SRUdfRFNQX0ZJTFRFUl9FTkFCTEUsCj4gKwkJTTk4MDkw X0FEQ0JRRU5fU0hJRlQsIE05ODA5MF9BRENCUUVOX05VTSAtIDEsIDAsCj4gKwkJc25kX3NvY19n ZXRfdm9sc3csIG1heDk4MDkwX3B1dF92b2xzdyksCj4gICB9Owo+ICAgCj4gICBzdGF0aWMgY29u c3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgbWF4OTgwOTFfc25kX2NvbnRyb2xzW10gPSB7Cj4g QEAgLTY5NSwxMCArODQ5LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25l dyBtYXg5ODA5MV9zbmRfY29udHJvbHNbXSA9IHsKPiAgIAkJTTk4MDkwX0RNSUMzNF9aRVJPUEFE X1NISUZULAo+ICAgCQlNOTgwOTBfRE1JQzM0X1pFUk9QQURfTlVNIC0gMSwgMCksCj4gICAKPiAt CVNPQ19FTlVNKCJGaWx0ZXIgRE1JQzM0IE1vZGUiLCBtYXg5ODA5MF9maWx0ZXJfZG1pYzM0bW9k ZV9lbnVtKSwKPiAtCVNPQ19TSU5HTEUoIkRNSUMzNCBEQyBCbG9ja2luZyIsIE05ODA5MF9SRUdf RklMVEVSX0NPTkZJRywKPiArCVNPQ19FTlVNX0VYVCgiRmlsdGVyIERNSUMzNCBNb2RlIiwgbWF4 OTgwOTBfZmlsdGVyX2RtaWMzNG1vZGVfZW51bSwKPiArCQlzbmRfc29jX2dldF9lbnVtX2RvdWJs ZSwgbWF4OTgwOTBfcHV0X2VudW1fZG91YmxlKSwKPiArCVNPQ19TSU5HTEVfRVhUKCJETUlDMzQg REMgQmxvY2tpbmciLCBNOTgwOTBfUkVHX0ZJTFRFUl9DT05GSUcsCj4gICAJCU05ODA5MF9GTFRf RE1JQzM0SFBGX1NISUZULAo+IC0JCU05ODA5MF9GTFRfRE1JQzM0SFBGX05VTSAtIDEsIDApLAo+ ICsJCU05ODA5MF9GTFRfRE1JQzM0SFBGX05VTSAtIDEsIDAsCj4gKwkJc25kX3NvY19nZXRfdm9s c3csIG1heDk4MDkwX3B1dF92b2xzdyksCj4gICAKPiAgIAlTT0NfU0lOR0xFX1RMVigiRE1JQzMg Qm9vc3QgVm9sdW1lIiwgTTk4MDkwX1JFR19ETUlDM19WT0xVTUUsCj4gICAJCU05ODA5MF9ETUlD X0FWM0dfU0hJRlQsIE05ODA5MF9ETUlDX0FWM0dfTlVNIC0gMSwgMCwKPiBAQCAtNzE2LDggKzg3 Miw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBtYXg5ODA5MV9zbmRf Y29udHJvbHNbXSA9IHsKPiAgIAo+ICAgCVNORF9TT0NfQllURVMoIkRNSUMzNCBCaXF1YWQgQ29l ZmZpY2llbnRzIiwKPiAgIAkJTTk4MDkwX1JFR19ETUlDMzRfQklRVUFEX0JBU0UsIDE1KSwKPiAt CVNPQ19TSU5HTEUoIkRNSUMzNCBCaXF1YWQgU3dpdGNoIiwgTTk4MDkwX1JFR19EU1BfRklMVEVS X0VOQUJMRSwKPiAtCQlNOTgwOTBfRE1JQzM0QlFFTl9TSElGVCwgTTk4MDkwX0RNSUMzNEJRRU5f TlVNIC0gMSwgMCksCj4gKwlTT0NfU0lOR0xFX0VYVCgiRE1JQzM0IEJpcXVhZCBTd2l0Y2giLCBN OTgwOTBfUkVHX0RTUF9GSUxURVJfRU5BQkxFLAo+ICsJCU05ODA5MF9ETUlDMzRCUUVOX1NISUZU LCBNOTgwOTBfRE1JQzM0QlFFTl9OVU0gLSAxLCAwLAo+ICsJCXNuZF9zb2NfZ2V0X3ZvbHN3LCBt YXg5ODA5MF9wdXRfdm9sc3cpLAo+ICAgCj4gICAJU09DX1NJTkdMRV9UTFYoIkRNSUMzNCBCUSBQ cmVBdHRlbnVhdGlvbiBWb2x1bWUiLAo+ICAgCQlNOTgwOTBfUkVHX0RNSUMzNF9CUV9QUkVBVFRF TiwgTTk4MDkwX0FWMzRCUV9TSElGVCwKPiBAQCAtNzcxLDE5ICs5MjgsNiBAQCBzdGF0aWMgaW50 IG1heDk4MDkwX21pY2lucHV0X2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LAo+ ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgbWF4OTgwOTBfc2hkbl9ldmVu dChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywKPiAtCQkJCSBzdHJ1Y3Qgc25kX2tjb250 cm9sICprY29udHJvbCwgaW50IGV2ZW50KQo+IC17Cj4gLQlzdHJ1Y3Qgc25kX3NvY19jb21wb25l bnQgKmNvbXBvbmVudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7Cj4gLQlz dHJ1Y3QgbWF4OTgwOTBfcHJpdiAqbWF4OTgwOTAgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2 ZGF0YShjb21wb25lbnQpOwo+IC0KPiAtCWlmIChldmVudCAmIFNORF9TT0NfREFQTV9QT1NUX1BN VSkKPiAtCQltYXg5ODA5MC0+c2hkbl9wZW5kaW5nID0gdHJ1ZTsKPiAtCj4gLQlyZXR1cm4gMDsK PiAtCj4gLX0KPiAtCj4gICBzdGF0aWMgY29uc3QgY2hhciAqbWljMV9tdXhfdGV4dFtdID0geyAi SU4xMiIsICJJTjU2IiB9Owo+ICAgCj4gICBzdGF0aWMgU09DX0VOVU1fU0lOR0xFX0RFQ0wobWlj MV9tdXhfZW51bSwKPiBAQCAtODg0LDEwICsxMDI4LDE0IEBAIHN0YXRpYyBTT0NfRU5VTV9TSU5H TEVfREVDTChsdGVucl9tdXhfZW51bSwKPiAgIAkJCSAgICBsdGVuX211eF90ZXh0KTsKPiAgIAo+ ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG1heDk4MDkwX2x0ZW5sX211 eCA9Cj4gLQlTT0NfREFQTV9FTlVNKCJMVEVOTCBNdXgiLCBsdGVubF9tdXhfZW51bSk7Cj4gKwlT T0NfREFQTV9FTlVNX0VYVCgiTFRFTkwgTXV4IiwgbHRlbmxfbXV4X2VudW0sCj4gKwkJCSAgc25k X3NvY19kYXBtX2dldF9lbnVtX2RvdWJsZSwKPiArCQkJICBtYXg5ODA5MF9kYXBtX3B1dF9lbnVt X2RvdWJsZSk7Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBt YXg5ODA5MF9sdGVucl9tdXggPQo+IC0JU09DX0RBUE1fRU5VTSgiTFRFTlIgTXV4IiwgbHRlbnJf bXV4X2VudW0pOwo+ICsJU09DX0RBUE1fRU5VTV9FWFQoIkxURU5SIE11eCIsIGx0ZW5yX211eF9l bnVtLAo+ICsJCQkgIHNuZF9zb2NfZGFwbV9nZXRfZW51bV9kb3VibGUsCj4gKwkJCSAgbWF4OTgw OTBfZGFwbV9wdXRfZW51bV9kb3VibGUpOwo+ICAgCj4gICBzdGF0aWMgY29uc3QgY2hhciAqbGJl bl9tdXhfdGV4dFtdID0geyAiTm9ybWFsIiwgIkxvb3BiYWNrIiB9Owo+ICAgCj4gQEAgLTkwMiwx MCArMTA1MCwxNCBAQCBzdGF0aWMgU09DX0VOVU1fU0lOR0xFX0RFQ0wobGJlbnJfbXV4X2VudW0s Cj4gICAJCQkgICAgbGJlbl9tdXhfdGV4dCk7Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c25kX2tjb250cm9sX25ldyBtYXg5ODA5MF9sYmVubF9tdXggPQo+IC0JU09DX0RBUE1fRU5VTSgi TEJFTkwgTXV4IiwgbGJlbmxfbXV4X2VudW0pOwo+ICsJU09DX0RBUE1fRU5VTV9FWFQoIkxCRU5M IE11eCIsIGxiZW5sX211eF9lbnVtLAo+ICsJCQkgIHNuZF9zb2NfZGFwbV9nZXRfZW51bV9kb3Vi bGUsCj4gKwkJCSAgbWF4OTgwOTBfZGFwbV9wdXRfZW51bV9kb3VibGUpOwo+ICAgCj4gICBzdGF0 aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgbWF4OTgwOTBfbGJlbnJfbXV4ID0KPiAt CVNPQ19EQVBNX0VOVU0oIkxCRU5SIE11eCIsIGxiZW5yX211eF9lbnVtKTsKPiArCVNPQ19EQVBN X0VOVU1fRVhUKCJMQkVOUiBNdXgiLCBsYmVucl9tdXhfZW51bSwKPiArCQkJICBzbmRfc29jX2Rh cG1fZ2V0X2VudW1fZG91YmxlLAo+ICsJCQkgIG1heDk4MDkwX2RhcG1fcHV0X2VudW1fZG91Ymxl KTsKPiAgIAo+ICAgc3RhdGljIGNvbnN0IGNoYXIgKnN0ZW5sX211eF90ZXh0W10gPSB7ICJOb3Jt YWwiLCAiU2lkZXRvbmUgTGVmdCIgfTsKPiAgIAo+IEBAIC0xMDcyLDIxICsxMjI0LDI1IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBtYXg5ODA5MF9kYXBtX3dpZGdl dHNbXSA9IHsKPiAgIAlTTkRfU09DX0RBUE1fSU5QVVQoIklONTYiKSwKPiAgIAo+ICAgCVNORF9T T0NfREFQTV9TVVBQTFkoIk1JQ0JJQVMiLCBNOTgwOTBfUkVHX0lOUFVUX0VOQUJMRSwKPiAtCQlN OTgwOTBfTUJFTl9TSElGVCwgMCwgTlVMTCwgMCksCj4gKwkJTTk4MDkwX01CRU5fU0hJRlQsIDAs IG1heDk4MDkwX2RhcG1fZXZlbnQsCj4gKwkJU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNVSB8IFNO RF9TT0NfREFQTV9QUkVfUE9TVF9QTUQpLAo+ICAgCVNORF9TT0NfREFQTV9TVVBQTFkoIlNIRE4i LCBNOTgwOTBfUkVHX0RFVklDRV9TSFVURE9XTiwKPiAgIAkJTTk4MDkwX1NIRE5OX1NISUZULCAw LCBOVUxMLCAwKSwKPiAgIAlTTkRfU09DX0RBUE1fU1VQUExZKCJTRElFTiIsIE05ODA5MF9SRUdf SU9fQ09ORklHVVJBVElPTiwKPiAtCQlNOTgwOTBfU0RJRU5fU0hJRlQsIDAsIE5VTEwsIDApLAo+ ICsJCU05ODA5MF9TRElFTl9TSElGVCwgMCwgbWF4OTgwOTBfZGFwbV9ldmVudCwKPiArCQlTTkRf U09DX0RBUE1fUFJFX1BPU1RfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNRCksCj4gICAJ U05EX1NPQ19EQVBNX1NVUFBMWSgiU0RPRU4iLCBNOTgwOTBfUkVHX0lPX0NPTkZJR1VSQVRJT04s Cj4gLQkJTTk4MDkwX1NET0VOX1NISUZULCAwLCBOVUxMLCAwKSwKPiArCQlNOTgwOTBfU0RPRU5f U0hJRlQsIDAsIG1heDk4MDkwX2RhcG1fZXZlbnQsCj4gKwkJU05EX1NPQ19EQVBNX1BSRV9QT1NU X1BNVSB8IFNORF9TT0NfREFQTV9QUkVfUE9TVF9QTUQpLAo+ICAgCVNORF9TT0NfREFQTV9TVVBQ TFkoIkRNSUNMX0VOQSIsIE05ODA5MF9SRUdfRElHSVRBTF9NSUNfRU5BQkxFLAo+IC0JCSBNOTgw OTBfRElHTUlDTF9TSElGVCwgMCwgbWF4OTgwOTBfc2hkbl9ldmVudCwKPiAtCQkJU05EX1NPQ19E QVBNX1BPU1RfUE1VKSwKPiArCQlNOTgwOTBfRElHTUlDTF9TSElGVCwgMCwgbWF4OTgwOTBfZGFw bV9ldmVudCwKPiArCQlTTkRfU09DX0RBUE1fUFJFX1BPU1RfUE1VIHwgU05EX1NPQ19EQVBNX1BS RV9QT1NUX1BNRCksCj4gICAJU05EX1NPQ19EQVBNX1NVUFBMWSgiRE1JQ1JfRU5BIiwgTTk4MDkw X1JFR19ESUdJVEFMX01JQ19FTkFCTEUsCj4gLQkJIE05ODA5MF9ESUdNSUNSX1NISUZULCAwLCBt YXg5ODA5MF9zaGRuX2V2ZW50LAo+IC0JCQkgU05EX1NPQ19EQVBNX1BPU1RfUE1VKSwKPiArCQlN OTgwOTBfRElHTUlDUl9TSElGVCwgMCwgbWF4OTgwOTBfZGFwbV9ldmVudCwKPiArCQlTTkRfU09D X0RBUE1fUFJFX1BPU1RfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNRCksCj4gICAJU05E X1NPQ19EQVBNX1NVUFBMWSgiQUhQRiIsIE05ODA5MF9SRUdfRklMVEVSX0NPTkZJRywKPiAtCQlN OTgwOTBfQUhQRl9TSElGVCwgMCwgTlVMTCwgMCksCj4gKwkJTTk4MDkwX0FIUEZfU0hJRlQsIDAs IG1heDk4MDkwX2RhcG1fZXZlbnQsCj4gKwkJU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNVSB8IFNO RF9TT0NfREFQTV9QUkVfUE9TVF9QTUQpLAo+ICAgCj4gICAvKgo+ICAgICogTm90ZTogU3lzY2xr IGFuZCBtaXNjIHBvd2VyIHN1cHBsaWVzIGFyZSB0YWtlbiBjYXJlIG9mIGJ5IFNIRE4KPiBAQCAt MTExNiwxMCArMTI3MiwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV93aWRn ZXQgbWF4OTgwOTBfZGFwbV93aWRnZXRzW10gPSB7Cj4gICAJCSZtYXg5ODA5MF9saW5lYl9taXhl cl9jb250cm9sc1swXSwKPiAgIAkJQVJSQVlfU0laRShtYXg5ODA5MF9saW5lYl9taXhlcl9jb250 cm9scykpLAo+ICAgCj4gLQlTTkRfU09DX0RBUE1fUEdBKCJMSU5FQSBJbnB1dCIsIE05ODA5MF9S RUdfSU5QVVRfRU5BQkxFLAo+IC0JCU05ODA5MF9MSU5FQUVOX1NISUZULCAwLCBOVUxMLCAwKSwK PiAtCVNORF9TT0NfREFQTV9QR0EoIkxJTkVCIElucHV0IiwgTTk4MDkwX1JFR19JTlBVVF9FTkFC TEUsCj4gLQkJTTk4MDkwX0xJTkVCRU5fU0hJRlQsIDAsIE5VTEwsIDApLAo+ICsJU05EX1NPQ19E QVBNX1BHQV9FKCJMSU5FQSBJbnB1dCIsIE05ODA5MF9SRUdfSU5QVVRfRU5BQkxFLAo+ICsJCU05 ODA5MF9MSU5FQUVOX1NISUZULCAwLCBOVUxMLCAwLCBtYXg5ODA5MF9kYXBtX2V2ZW50LAo+ICsJ CVNORF9TT0NfREFQTV9QUkVfUE9TVF9QTVUgfCBTTkRfU09DX0RBUE1fUFJFX1BPU1RfUE1EKSwK PiArCVNORF9TT0NfREFQTV9QR0FfRSgiTElORUIgSW5wdXQiLCBNOTgwOTBfUkVHX0lOUFVUX0VO QUJMRSwKPiArCQlNOTgwOTBfTElORUJFTl9TSElGVCwgMCwgTlVMTCwgMCwgbWF4OTgwOTBfZGFw bV9ldmVudCwKPiArCQlTTkRfU09DX0RBUE1fUFJFX1BPU1RfUE1VIHwgU05EX1NPQ19EQVBNX1BS RV9QT1NUX1BNRCksCj4gICAKPiAgIAlTTkRfU09DX0RBUE1fTUlYRVIoIkxlZnQgQURDIE1peGVy IiwgU05EX1NPQ19OT1BNLCAwLCAwLAo+ICAgCQkmbWF4OTgwOTBfbGVmdF9hZGNfbWl4ZXJfY29u dHJvbHNbMF0sCj4gQEAgLTExMzAsMTEgKzEyODgsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBz bmRfc29jX2RhcG1fd2lkZ2V0IG1heDk4MDkwX2RhcG1fd2lkZ2V0c1tdID0gewo+ICAgCQlBUlJB WV9TSVpFKG1heDk4MDkwX3JpZ2h0X2FkY19taXhlcl9jb250cm9scykpLAo+ICAgCj4gICAJU05E X1NPQ19EQVBNX0FEQ19FKCJBRENMIiwgTlVMTCwgTTk4MDkwX1JFR19JTlBVVF9FTkFCTEUsCj4g LQkJTTk4MDkwX0FETEVOX1NISUZULCAwLCBtYXg5ODA5MF9zaGRuX2V2ZW50LAo+IC0JCVNORF9T T0NfREFQTV9QT1NUX1BNVSksCj4gKwkJTTk4MDkwX0FETEVOX1NISUZULCAwLCBtYXg5ODA5MF9k YXBtX2V2ZW50LAo+ICsJCVNORF9TT0NfREFQTV9QUkVfUE9TVF9QTVUgfCBTTkRfU09DX0RBUE1f UFJFX1BPU1RfUE1EKSwKPiAgIAlTTkRfU09DX0RBUE1fQURDX0UoIkFEQ1IiLCBOVUxMLCBNOTgw OTBfUkVHX0lOUFVUX0VOQUJMRSwKPiAtCQlNOTgwOTBfQURSRU5fU0hJRlQsIDAsIG1heDk4MDkw X3NoZG5fZXZlbnQsCj4gLQkJU05EX1NPQ19EQVBNX1BPU1RfUE1VKSwKPiArCQlNOTgwOTBfQURS RU5fU0hJRlQsIDAsIG1heDk4MDkwX2RhcG1fZXZlbnQsCj4gKwkJU05EX1NPQ19EQVBNX1BSRV9Q T1NUX1BNVSB8IFNORF9TT0NfREFQTV9QUkVfUE9TVF9QTUQpLAo+ICAgCj4gICAJU05EX1NPQ19E QVBNX0FJRl9PVVQoIkFJRk9VVEwiLCAiSGlGaSBDYXB0dXJlIiwgMCwKPiAgIAkJU05EX1NPQ19O T1BNLCAwLCAwKSwKPiBAQCAtMTE2MiwxMCArMTMyMCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHNuZF9zb2NfZGFwbV93aWRnZXQgbWF4OTgwOTBfZGFwbV93aWRnZXRzW10gPSB7Cj4gICAJU05E X1NPQ19EQVBNX0FJRl9JTigiQUlGSU5MIiwgIkhpRmkgUGxheWJhY2siLCAwLCBTTkRfU09DX05P UE0sIDAsIDApLAo+ICAgCVNORF9TT0NfREFQTV9BSUZfSU4oIkFJRklOUiIsICJIaUZpIFBsYXli YWNrIiwgMSwgU05EX1NPQ19OT1BNLCAwLCAwKSwKPiAgIAo+IC0JU05EX1NPQ19EQVBNX0RBQygi REFDTCIsIE5VTEwsIE05ODA5MF9SRUdfT1VUUFVUX0VOQUJMRSwKPiAtCQlNOTgwOTBfREFMRU5f U0hJRlQsIDApLAo+IC0JU05EX1NPQ19EQVBNX0RBQygiREFDUiIsIE5VTEwsIE05ODA5MF9SRUdf T1VUUFVUX0VOQUJMRSwKPiAtCQlNOTgwOTBfREFSRU5fU0hJRlQsIDApLAo+ICsJU05EX1NPQ19E QVBNX0RBQ19FKCJEQUNMIiwgTlVMTCwgTTk4MDkwX1JFR19PVVRQVVRfRU5BQkxFLAo+ICsJCU05 ODA5MF9EQUxFTl9TSElGVCwgMCwgbWF4OTgwOTBfZGFwbV9ldmVudCwKPiArCQlTTkRfU09DX0RB UE1fUFJFX1BPU1RfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNRCksCj4gKwlTTkRfU09D X0RBUE1fREFDX0UoIkRBQ1IiLCBOVUxMLCBNOTgwOTBfUkVHX09VVFBVVF9FTkFCTEUsCj4gKwkJ TTk4MDkwX0RBUkVOX1NISUZULCAwLCBtYXg5ODA5MF9kYXBtX2V2ZW50LAo+ICsJCVNORF9TT0Nf REFQTV9QUkVfUE9TVF9QTVUgfCBTTkRfU09DX0RBUE1fUFJFX1BPU1RfUE1EKSwKPiAgIAo+ICAg CVNORF9TT0NfREFQTV9NSVhFUigiTGVmdCBIZWFkcGhvbmUgTWl4ZXIiLCBTTkRfU09DX05PUE0s IDAsIDAsCj4gICAJCSZtYXg5ODA5MF9sZWZ0X2hwX21peGVyX2NvbnRyb2xzWzBdLAo+IEBAIC0x MjAwLDIwICsxMzYwLDI2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdl dCBtYXg5ODA5MF9kYXBtX3dpZGdldHNbXSA9IHsKPiAgIAlTTkRfU09DX0RBUE1fTVVYKCJNSVhI UFJTRUwgTXV4IiwgU05EX1NPQ19OT1BNLCAwLCAwLAo+ICAgCQkmbWF4OTgwOTBfbWl4aHByc2Vs X211eCksCj4gICAKPiAtCVNORF9TT0NfREFQTV9QR0EoIkhQIExlZnQgT3V0IiwgTTk4MDkwX1JF R19PVVRQVVRfRU5BQkxFLAo+IC0JCU05ODA5MF9IUExFTl9TSElGVCwgMCwgTlVMTCwgMCksCj4g LQlTTkRfU09DX0RBUE1fUEdBKCJIUCBSaWdodCBPdXQiLCBNOTgwOTBfUkVHX09VVFBVVF9FTkFC TEUsCj4gLQkJTTk4MDkwX0hQUkVOX1NISUZULCAwLCBOVUxMLCAwKSwKPiAtCj4gLQlTTkRfU09D X0RBUE1fUEdBKCJTUEsgTGVmdCBPdXQiLCBNOTgwOTBfUkVHX09VVFBVVF9FTkFCTEUsCj4gLQkJ TTk4MDkwX1NQTEVOX1NISUZULCAwLCBOVUxMLCAwKSwKPiAtCVNORF9TT0NfREFQTV9QR0EoIlNQ SyBSaWdodCBPdXQiLCBNOTgwOTBfUkVHX09VVFBVVF9FTkFCTEUsCj4gLQkJTTk4MDkwX1NQUkVO X1NISUZULCAwLCBOVUxMLCAwKSwKPiAtCj4gLQlTTkRfU09DX0RBUE1fUEdBKCJSQ1YgTGVmdCBP dXQiLCBNOTgwOTBfUkVHX09VVFBVVF9FTkFCTEUsCj4gLQkJTTk4MDkwX1JDVkxFTl9TSElGVCwg MCwgTlVMTCwgMCksCj4gLQlTTkRfU09DX0RBUE1fUEdBKCJSQ1YgUmlnaHQgT3V0IiwgTTk4MDkw X1JFR19PVVRQVVRfRU5BQkxFLAo+IC0JCU05ODA5MF9SQ1ZSRU5fU0hJRlQsIDAsIE5VTEwsIDAp LAo+ICsJU05EX1NPQ19EQVBNX1BHQV9FKCJIUCBMZWZ0IE91dCIsIE05ODA5MF9SRUdfT1VUUFVU X0VOQUJMRSwKPiArCQlNOTgwOTBfSFBMRU5fU0hJRlQsIDAsIE5VTEwsIDAsIG1heDk4MDkwX2Rh cG1fZXZlbnQsCj4gKwkJU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNVSB8IFNORF9TT0NfREFQTV9Q UkVfUE9TVF9QTUQpLAo+ICsJU05EX1NPQ19EQVBNX1BHQV9FKCJIUCBSaWdodCBPdXQiLCBNOTgw OTBfUkVHX09VVFBVVF9FTkFCTEUsCj4gKwkJTTk4MDkwX0hQUkVOX1NISUZULCAwLCBOVUxMLCAw LCBtYXg5ODA5MF9kYXBtX2V2ZW50LAo+ICsJCVNORF9TT0NfREFQTV9QUkVfUE9TVF9QTVUgfCBT TkRfU09DX0RBUE1fUFJFX1BPU1RfUE1EKSwKPiArCj4gKwlTTkRfU09DX0RBUE1fUEdBX0UoIlNQ SyBMZWZ0IE91dCIsIE05ODA5MF9SRUdfT1VUUFVUX0VOQUJMRSwKPiArCQlNOTgwOTBfU1BMRU5f U0hJRlQsIDAsIE5VTEwsIDAsIG1heDk4MDkwX2RhcG1fZXZlbnQsCj4gKwkJU05EX1NPQ19EQVBN X1BSRV9QT1NUX1BNVSB8IFNORF9TT0NfREFQTV9QUkVfUE9TVF9QTUQpLAo+ICsJU05EX1NPQ19E QVBNX1BHQV9FKCJTUEsgUmlnaHQgT3V0IiwgTTk4MDkwX1JFR19PVVRQVVRfRU5BQkxFLAo+ICsJ CU05ODA5MF9TUFJFTl9TSElGVCwgMCwgTlVMTCwgMCwgbWF4OTgwOTBfZGFwbV9ldmVudCwKPiAr CQlTTkRfU09DX0RBUE1fUFJFX1BPU1RfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNRCks Cj4gKwo+ICsJU05EX1NPQ19EQVBNX1BHQV9FKCJSQ1YgTGVmdCBPdXQiLCBNOTgwOTBfUkVHX09V VFBVVF9FTkFCTEUsCj4gKwkJTTk4MDkwX1JDVkxFTl9TSElGVCwgMCwgTlVMTCwgMCwgbWF4OTgw OTBfZGFwbV9ldmVudCwKPiArCQlTTkRfU09DX0RBUE1fUFJFX1BPU1RfUE1VIHwgU05EX1NPQ19E QVBNX1BSRV9QT1NUX1BNRCksCj4gKwlTTkRfU09DX0RBUE1fUEdBX0UoIlJDViBSaWdodCBPdXQi LCBNOTgwOTBfUkVHX09VVFBVVF9FTkFCTEUsCj4gKwkJTTk4MDkwX1JDVlJFTl9TSElGVCwgMCwg TlVMTCwgMCwgbWF4OTgwOTBfZGFwbV9ldmVudCwKPiArCQlTTkRfU09DX0RBUE1fUFJFX1BPU1Rf UE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QT1NUX1BNRCksCj4gICAKPiAgIAlTTkRfU09DX0RBUE1f T1VUUFVUKCJIUEwiKSwKPiAgIAlTTkRfU09DX0RBUE1fT1VUUFVUKCJIUFIiKSwKPiBAQCAtMTIy OCw5ICsxMzk0LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBt YXg5ODA5MV9kYXBtX3dpZGdldHNbXSA9IHsKPiAgIAlTTkRfU09DX0RBUE1fSU5QVVQoIkRNSUM0 IiksCj4gICAKPiAgIAlTTkRfU09DX0RBUE1fU1VQUExZKCJETUlDM19FTkEiLCBNOTgwOTBfUkVH X0RJR0lUQUxfTUlDX0VOQUJMRSwKPiAtCQkgTTk4MDkwX0RJR01JQzNfU0hJRlQsIDAsIE5VTEws IDApLAo+ICsJCU05ODA5MF9ESUdNSUMzX1NISUZULCAwLCBtYXg5ODA5MF9kYXBtX2V2ZW50LAo+ ICsJCVNORF9TT0NfREFQTV9QUkVfUE9TVF9QTVUgfCBTTkRfU09DX0RBUE1fUFJFX1BPU1RfUE1E KSwKPiAgIAlTTkRfU09DX0RBUE1fU1VQUExZKCJETUlDNF9FTkEiLCBNOTgwOTBfUkVHX0RJR0lU QUxfTUlDX0VOQUJMRSwKPiAtCQkgTTk4MDkwX0RJR01JQzRfU0hJRlQsIDAsIE5VTEwsIDApLAo+ ICsJCU05ODA5MF9ESUdNSUM0X1NISUZULCAwLCBtYXg5ODA5MF9kYXBtX2V2ZW50LAo+ICsJCVNO RF9TT0NfREFQTV9QUkVfUE9TVF9QTVUgfCBTTkRfU09DX0RBUE1fUFJFX1BPU1RfUE1EKSwKPiAg IH07Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3JvdXRlIG1heDk4 MDkwX2RhcG1fcm91dGVzW10gPSB7Cj4gQEAgLTE1MDEsNiArMTY2OSwxMSBAQCBzdGF0aWMgdm9p ZCBtYXg5ODA5MF9jb25maWd1cmVfYmNsayhzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBv bmVudCkKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPiAgIAo+ICsJLyoKPiArCSAqIE1hc3RlciBtb2Rl OiBubyBuZWVkIHRvIHNhdmUgYW5kIHJlc3RvcmUgU0hETiBmb3IgdGhlIGZvbGxvd2luZwo+ICsJ ICogc2Vuc2l0aXZlIHJlZ2lzdGVycy4KPiArCSAqLwo+ICsKPiAgIAkvKiBDaGVjayBmb3Igc3Vw cG9ydGVkIFBDTEsgdG8gTFJDTEsgcmF0aW9zICovCj4gICAJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUocGNsa19yYXRlcyk7IGkrKykgewo+ICAgCQlpZiAoKHBjbGtfcmF0ZXNbaV0gPT0gbWF4 OTgwOTAtPnN5c2NsaykgJiYKPiBAQCAtMTU4NywxMiArMTc2MCwxNCBAQCBzdGF0aWMgaW50IG1h eDk4MDkwX2RhaV9zZXRfZm10KHN0cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFpLAo+ICAgCQlz d2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX01BU1RFUl9NQVNLKSB7Cj4gICAJCWNhc2UgU05E X1NPQ19EQUlGTVRfQ0JTX0NGUzoKPiAgIAkJCS8qIFNldCB0byBzbGF2ZSBtb2RlIFBMTCAtIE1B UyBtb2RlIG9mZiAqLwo+ICsJCQltYXg5ODA5MF9zaGRuX3NhdmUobWF4OTgwOTApOwo+ICAgCQkJ c25kX3NvY19jb21wb25lbnRfd3JpdGUoY29tcG9uZW50LAo+ICAgCQkJCU05ODA5MF9SRUdfQ0xP Q0tfUkFUSU9fTklfTVNCLCAweDAwKTsKPiAgIAkJCXNuZF9zb2NfY29tcG9uZW50X3dyaXRlKGNv bXBvbmVudCwKPiAgIAkJCQlNOTgwOTBfUkVHX0NMT0NLX1JBVElPX05JX0xTQiwgMHgwMCk7Cj4g ICAJCQlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIE05ODA5MF9SRUdf Q0xPQ0tfTU9ERSwKPiAgIAkJCQlNOTgwOTBfVVNFX00xX01BU0ssIDApOwo+ICsJCQltYXg5ODA5 MF9zaGRuX3Jlc3RvcmUobWF4OTgwOTApOwo+ICAgCQkJbWF4OTgwOTAtPm1hc3RlciA9IGZhbHNl Owo+ICAgCQkJYnJlYWs7Cj4gICAJCWNhc2UgU05EX1NPQ19EQUlGTVRfQ0JNX0NGTToKPiBAQCAt MTYxOCw3ICsxNzkzLDkgQEAgc3RhdGljIGludCBtYXg5ODA5MF9kYWlfc2V0X2ZtdChzdHJ1Y3Qg c25kX3NvY19kYWkgKmNvZGVjX2RhaSwKPiAgIAkJCWRldl9lcnIoY29tcG9uZW50LT5kZXYsICJE QUkgY2xvY2sgbW9kZSB1bnN1cHBvcnRlZCIpOwo+ICAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gICAJ CX0KPiArCQltYXg5ODA5MF9zaGRuX3NhdmUobWF4OTgwOTApOwo+ICAgCQlzbmRfc29jX2NvbXBv bmVudF93cml0ZShjb21wb25lbnQsIE05ODA5MF9SRUdfTUFTVEVSX01PREUsIHJlZ3ZhbCk7Cj4g KwkJbWF4OTgwOTBfc2hkbl9yZXN0b3JlKG1heDk4MDkwKTsKPiAgIAo+ICAgCQlyZWd2YWwgPSAw Owo+ICAgCQlzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX0ZPUk1BVF9NQVNLKSB7Cj4gQEAg LTE2NjMsOCArMTg0MCwxMCBAQCBzdGF0aWMgaW50IG1heDk4MDkwX2RhaV9zZXRfZm10KHN0cnVj dCBzbmRfc29jX2RhaSAqY29kZWNfZGFpLAo+ICAgCQlpZiAobWF4OTgwOTAtPnRkbV9zbG90cyA+ IDEpCj4gICAJCQlyZWd2YWwgXj0gTTk4MDkwX0JDSV9NQVNLOwo+ICAgCj4gKwkJbWF4OTgwOTBf c2hkbl9zYXZlKG1heDk4MDkwKTsKPiAgIAkJc25kX3NvY19jb21wb25lbnRfd3JpdGUoY29tcG9u ZW50LAo+ICAgCQkJTTk4MDkwX1JFR19JTlRFUkZBQ0VfRk9STUFULCByZWd2YWwpOwo+ICsJCW1h eDk4MDkwX3NoZG5fcmVzdG9yZShtYXg5ODA5MCk7Cj4gICAJfQo+ICAgCj4gICAJcmV0dXJuIDA7 Cj4gQEAgLTE2NzYsNiArMTg1NSw3IEBAIHN0YXRpYyBpbnQgbWF4OTgwOTBfc2V0X3RkbV9zbG90 KHN0cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFpLAo+ICAgCXN0cnVjdCBzbmRfc29jX2NvbXBv bmVudCAqY29tcG9uZW50ID0gY29kZWNfZGFpLT5jb21wb25lbnQ7Cj4gICAJc3RydWN0IG1heDk4 MDkwX3ByaXYgKm1heDk4MDkwID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9u ZW50KTsKPiAgIAlzdHJ1Y3QgbWF4OTgwOTBfY2RhdGEgKmNkYXRhOwo+ICsKPiAgIAljZGF0YSA9 ICZtYXg5ODA5MC0+ZGFpWzBdOwo+ICAgCj4gICAJaWYgKHNsb3RzIDwgMCB8fCBzbG90cyA+IDQp Cj4gQEAgLTE2ODUsNiArMTg2NSw3IEBAIHN0YXRpYyBpbnQgbWF4OTgwOTBfc2V0X3RkbV9zbG90 KHN0cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFpLAo+ICAgCW1heDk4MDkwLT50ZG1fd2lkdGgg PSBzbG90X3dpZHRoOwo+ICAgCj4gICAJaWYgKG1heDk4MDkwLT50ZG1fc2xvdHMgPiAxKSB7Cj4g KwkJbWF4OTgwOTBfc2hkbl9zYXZlKG1heDk4MDkwKTsKPiAgIAkJLyogU0xPVEwgU0xPVFIgU0xP VERMWSAqLwo+ICAgCQlzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIE05ODA5MF9S RUdfVERNX0ZPUk1BVCwKPiAgIAkJCTAgPDwgTTk4MDkwX1RETV9TTE9UTF9TSElGVCB8Cj4gQEAg LTE2OTUsNiArMTg3Niw3IEBAIHN0YXRpYyBpbnQgbWF4OTgwOTBfc2V0X3RkbV9zbG90KHN0cnVj dCBzbmRfc29jX2RhaSAqY29kZWNfZGFpLAo+ICAgCQlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVf Yml0cyhjb21wb25lbnQsIE05ODA5MF9SRUdfVERNX0NPTlRST0wsCj4gICAJCQlNOTgwOTBfVERN X01BU0ssCj4gICAJCQlNOTgwOTBfVERNX01BU0spOwo+ICsJCW1heDk4MDkwX3NoZG5fcmVzdG9y ZShtYXg5ODA5MCk7Cj4gICAJfQo+ICAgCj4gICAJLyoKPiBAQCAtMTg5NCw2ICsyMDc2LDcgQEAg c3RhdGljIGludCBtYXg5ODA5MF9jb25maWd1cmVfZG1pYyhzdHJ1Y3QgbWF4OTgwOTBfcHJpdiAq bWF4OTgwOTAsCj4gICAJZG1pY19mcmVxID0gZG1pY190YWJsZVtwY2xrX2luZGV4XS5zZXR0aW5n c1ttaWNjbGtfaW5kZXhdLmZyZXE7Cj4gICAJZG1pY19jb21wID0gZG1pY190YWJsZVtwY2xrX2lu ZGV4XS5zZXR0aW5nc1ttaWNjbGtfaW5kZXhdLmNvbXBbaV07Cj4gICAKPiArCW1heDk4MDkwX3No ZG5fc2F2ZShtYXg5ODA5MCk7Cj4gICAJcmVnbWFwX3VwZGF0ZV9iaXRzKG1heDk4MDkwLT5yZWdt YXAsIE05ODA5MF9SRUdfRElHSVRBTF9NSUNfRU5BQkxFLAo+ICAgCQkJICAgTTk4MDkwX01JQ0NM S19NQVNLLAo+ICAgCQkJICAgbWljY2xrX2luZGV4IDw8IE05ODA5MF9NSUNDTEtfU0hJRlQpOwo+ IEBAIC0xOTAyLDYgKzIwODUsNyBAQCBzdGF0aWMgaW50IG1heDk4MDkwX2NvbmZpZ3VyZV9kbWlj KHN0cnVjdCBtYXg5ODA5MF9wcml2ICptYXg5ODA5MCwKPiAgIAkJCSAgIE05ODA5MF9ETUlDX0NP TVBfTUFTSyB8IE05ODA5MF9ETUlDX0ZSRVFfTUFTSywKPiAgIAkJCSAgIGRtaWNfY29tcCA8PCBN OTgwOTBfRE1JQ19DT01QX1NISUZUIHwKPiAgIAkJCSAgIGRtaWNfZnJlcSA8PCBNOTgwOTBfRE1J Q19GUkVRX1NISUZUKTsKPiArCW1heDk4MDkwX3NoZG5fcmVzdG9yZShtYXg5ODA5MCk7Cj4gICAK PiAgIAlyZXR1cm4gMDsKPiAgIH0KPiBAQCAtMTkzOCw4ICsyMTIyLDEwIEBAIHN0YXRpYyBpbnQg bWF4OTgwOTBfZGFpX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVh bSwKPiAgIAo+ICAgCXN3aXRjaCAocGFyYW1zX3dpZHRoKHBhcmFtcykpIHsKPiAgIAljYXNlIDE2 Ogo+ICsJCW1heDk4MDkwX3NoZG5fc2F2ZShtYXg5ODA5MCk7Cj4gICAJCXNuZF9zb2NfY29tcG9u ZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgTTk4MDkwX1JFR19JTlRFUkZBQ0VfRk9STUFULAo+ ICAgCQkJTTk4MDkwX1dTX01BU0ssIDApOwo+ICsJCW1heDk4MDkwX3NoZG5fcmVzdG9yZShtYXg5 ODA5MCk7Cj4gICAJCWJyZWFrOwo+ICAgCWRlZmF1bHQ6Cj4gICAJCXJldHVybiAtRUlOVkFMOwo+ IEBAIC0xOTUwLDYgKzIxMzYsNyBAQCBzdGF0aWMgaW50IG1heDk4MDkwX2RhaV9od19wYXJhbXMo c3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCj4gICAKPiAgIAljZGF0YS0+cmF0 ZSA9IG1heDk4MDkwLT5scmNsazsKPiAgIAo+ICsJbWF4OTgwOTBfc2hkbl9zYXZlKG1heDk4MDkw KTsKPiAgIAkvKiBVcGRhdGUgZmlsdGVyIG1vZGUgKi8KPiAgIAlpZiAobWF4OTgwOTAtPmxyY2xr IDwgMjQwMDApCj4gICAJCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwg TTk4MDkwX1JFR19GSUxURVJfQ09ORklHLAo+IEBAIC0xOTY1LDYgKzIxNTIsNyBAQCBzdGF0aWMg aW50IG1heDk4MDkwX2RhaV9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0sCj4gICAJZWxzZQo+ICAgCQlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21w b25lbnQsIE05ODA5MF9SRUdfRklMVEVSX0NPTkZJRywKPiAgIAkJCU05ODA5MF9ESEZfTUFTSywg TTk4MDkwX0RIRl9NQVNLKTsKPiArCW1heDk4MDkwX3NoZG5fcmVzdG9yZShtYXg5ODA5MCk7Cj4g ICAKPiAgIAltYXg5ODA5MF9jb25maWd1cmVfZG1pYyhtYXg5ODA5MCwgbWF4OTgwOTAtPmRtaWNf ZnJlcSwgbWF4OTgwOTAtPnBjbGssCj4gICAJCQkJbWF4OTgwOTAtPmxyY2xrKTsKPiBAQCAtMTk5 NSw2ICsyMTgzLDcgQEAgc3RhdGljIGludCBtYXg5ODA5MF9kYWlfc2V0X3N5c2NsayhzdHJ1Y3Qg c25kX3NvY19kYWkgKmRhaSwKPiAgIAkgKgkJIDB4MDIgKHdoZW4gbWFzdGVyIGNsayBpcyAyME1I eiB0byA0ME1IeikuLgo+ICAgCSAqCQkgMHgwMyAod2hlbiBtYXN0ZXIgY2xrIGlzIDQwTUh6IHRv IDYwTUh6KS4uCj4gICAJICovCj4gKwltYXg5ODA5MF9zaGRuX3NhdmUobWF4OTgwOTApOwo+ICAg CWlmICgoZnJlcSA+PSAxMDAwMDAwMCkgJiYgKGZyZXEgPD0gMjAwMDAwMDApKSB7Cj4gICAJCXNu ZF9zb2NfY29tcG9uZW50X3dyaXRlKGNvbXBvbmVudCwgTTk4MDkwX1JFR19TWVNURU1fQ0xPQ0ss Cj4gICAJCQlNOTgwOTBfUFNDTEtfRElWMSk7Cj4gQEAgLTIwMDksOCArMjE5OCwxMCBAQCBzdGF0 aWMgaW50IG1heDk4MDkwX2RhaV9zZXRfc3lzY2xrKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpLAo+ ICAgCQltYXg5ODA5MC0+cGNsayA9IGZyZXEgPj4gMjsKPiAgIAl9IGVsc2Ugewo+ICAgCQlkZXZf ZXJyKGNvbXBvbmVudC0+ZGV2LCAiSW52YWxpZCBtYXN0ZXIgY2xvY2sgZnJlcXVlbmN5XG4iKTsK PiArCQltYXg5ODA5MF9zaGRuX3Jlc3RvcmUobWF4OTgwOTApOwo+ICAgCQlyZXR1cm4gLUVJTlZB TDsKPiAgIAl9Cj4gKwltYXg5ODA5MF9zaGRuX3Jlc3RvcmUobWF4OTgwOTApOwo+ICAgCj4gICAJ bWF4OTgwOTAtPnN5c2NsayA9IGZyZXE7Cj4gICAKPiBAQCAtMjEyMiwxMCArMjMxMywxMiBAQCBz dGF0aWMgdm9pZCBtYXg5ODA5MF9wbGxfd29yayhzdHJ1Y3QgbWF4OTgwOTBfcHJpdiAqbWF4OTgw OTApCj4gICAJICovCj4gICAKPiAgIAkvKiBUb2dnbGUgc2h1dGRvd24gT0ZGIHRoZW4gT04gKi8K PiArCW11dGV4X2xvY2soJmNvbXBvbmVudC0+Y2FyZC0+ZGFwbV9tdXRleCk7Cj4gICAJc25kX3Nv Y19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBNOTgwOTBfUkVHX0RFVklDRV9TSFVU RE9XTiwKPiAgIAkJCSAgICBNOTgwOTBfU0hETk5fTUFTSywgMCk7Cj4gICAJc25kX3NvY19jb21w b25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBNOTgwOTBfUkVHX0RFVklDRV9TSFVURE9XTiwK PiAgIAkJCSAgICBNOTgwOTBfU0hETk5fTUFTSywgTTk4MDkwX1NIRE5OX01BU0spOwo+ICsJbXV0 ZXhfdW5sb2NrKCZjb21wb25lbnQtPmNhcmQtPmRhcG1fbXV0ZXgpOwo+ICAgCj4gICAJZm9yIChp ID0gMDsgaSA8IDEwOyArK2kpIHsKPiAgIAkJLyogR2l2ZSBQTEwgdGltZSB0byBsb2NrICovCj4g QEAgLTI0NDgsNyArMjY0MSwxMiBAQCBzdGF0aWMgaW50IG1heDk4MDkwX3Byb2JlKHN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KQo+ICAgCSAqLwo+ICAgCXNuZF9zb2NfY29tcG9u ZW50X3JlYWQzMihjb21wb25lbnQsIE05ODA5MF9SRUdfREVWSUNFX1NUQVRVUyk7Cj4gICAKPiAt CS8qIEhpZ2ggUGVyZm9ybWFuY2UgaXMgZGVmYXVsdCAqLwo+ICsJLyoKPiArCSAqIFNIRE4gc2hv dWxkIGJlIDAgYXQgdGhlIHBvaW50LCBubyBuZWVkIHRvIHNhdmUvcmVzdG9yZSBmb3IgdGhlCj4g KwkgKiBmb2xsb3dpbmcgcmVnaXN0ZXJzLgo+ICsJICoKPiArCSAqIEhpZ2ggUGVyZm9ybWFuY2Ug aXMgZGVmYXVsdAo+ICsJICovCj4gICAJc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29t cG9uZW50LCBNOTgwOTBfUkVHX0RBQ19DT05UUk9MLAo+ICAgCQlNOTgwOTBfREFDSFBfTUFTSywK PiAgIAkJMSA8PCBNOTgwOTBfREFDSFBfU0hJRlQpOwo+IEBAIC0yNDU5LDcgKzI2NTcsMTIgQEAg c3RhdGljIGludCBtYXg5ODA5MF9wcm9iZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBv bmVudCkKPiAgIAkJTTk4MDkwX0FEQ0hQX01BU0ssCj4gICAJCTEgPDwgTTk4MDkwX0FEQ0hQX1NI SUZUKTsKPiAgIAo+IC0JLyogVHVybiBvbiBWQ00gYmFuZGdhcCByZWZlcmVuY2UgKi8KPiArCS8q Cj4gKwkgKiBTSEROIHNob3VsZCBiZSAwIGF0IHRoZSBwb2ludCwgbm8gbmVlZCB0byBzYXZlL3Jl c3RvcmUgZm9yIHRoZQo+ICsJICogZm9sbG93aW5nIHJlZ2lzdGVycy4KPiArCSAqCj4gKwkgKiBU dXJuIG9uIFZDTSBiYW5kZ2FwIHJlZmVyZW5jZQo+ICsJICovCj4gICAJc25kX3NvY19jb21wb25l bnRfd3JpdGUoY29tcG9uZW50LCBNOTgwOTBfUkVHX0JJQVNfQ09OVFJPTCwKPiAgIAkJTTk4MDkw X1ZDTV9NT0RFX01BU0spOwo+ICAgCj4gQEAgLTI0OTEsMjUgKzI2OTQsOSBAQCBzdGF0aWMgdm9p ZCBtYXg5ODA5MF9yZW1vdmUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCj4g ICAJbWF4OTgwOTAtPmNvbXBvbmVudCA9IE5VTEw7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQg bWF4OTgwOTBfc2VxX25vdGlmaWVyKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50 LAo+IC0JZW51bSBzbmRfc29jX2RhcG1fdHlwZSBldmVudCwgaW50IHN1YnNlcSkKPiAtewo+IC0J c3RydWN0IG1heDk4MDkwX3ByaXYgKm1heDk4MDkwID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2Ry dmRhdGEoY29tcG9uZW50KTsKPiAtCj4gLQlpZiAobWF4OTgwOTAtPnNoZG5fcGVuZGluZykgewo+ IC0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgTTk4MDkwX1JFR19E RVZJQ0VfU0hVVERPV04sCj4gLQkJCQlNOTgwOTBfU0hETk5fTUFTSywgMCk7Cj4gLQkJbXNsZWVw KDQwKTsKPiAtCQlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIE05ODA5 MF9SRUdfREVWSUNFX1NIVVRET1dOLAo+IC0JCQkJTTk4MDkwX1NIRE5OX01BU0ssIE05ODA5MF9T SEROTl9NQVNLKTsKPiAtCQltYXg5ODA5MC0+c2hkbl9wZW5kaW5nID0gZmFsc2U7Cj4gLQl9Cj4g LX0KPiAtCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZlciBz b2NfY29tcG9uZW50X2Rldl9tYXg5ODA5MCA9IHsKPiAgIAkucHJvYmUJCQk9IG1heDk4MDkwX3By b2JlLAo+ICAgCS5yZW1vdmUJCQk9IG1heDk4MDkwX3JlbW92ZSwKPiAtCS5zZXFfbm90aWZpZXIJ CT0gbWF4OTgwOTBfc2VxX25vdGlmaWVyLAo+ICAgCS5zZXRfYmlhc19sZXZlbAkJPSBtYXg5ODA5 MF9zZXRfYmlhc19sZXZlbCwKPiAgIAkuaWRsZV9iaWFzX29uCQk9IDEsCj4gICAJLnVzZV9wbWRv d25fdGltZQk9IDEsCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvbWF4OTgwOTAuaCBi L3NvdW5kL3NvYy9jb2RlY3MvbWF4OTgwOTAuaAo+IGluZGV4IGExOTcxMTRiMGRhZC4uMGEzMTcw OGI3ZGY3IDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvbWF4OTgwOTAuaAo+ICsrKyBi L3NvdW5kL3NvYy9jb2RlY3MvbWF4OTgwOTAuaAo+IEBAIC0xNTM5LDcgKzE1MzksOCBAQCBzdHJ1 Y3QgbWF4OTgwOTBfcHJpdiB7Cj4gICAJdW5zaWduZWQgaW50IHBhMmVuOwo+ICAgCXVuc2lnbmVk IGludCBzaWRldG9uZTsKPiAgIAlib29sIG1hc3RlcjsKPiAtCWJvb2wgc2hkbl9wZW5kaW5nOwo+ ICsJaW50IHNhdmVkX2NvdW50Owo+ICsJaW50IHNhdmVkX3NoZG47Cj4gICB9Owo+ICAgCj4gICBp bnQgbWF4OTgwOTBfbWljX2RldGVjdChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVu dCwKCkJlc3QgcmVnYXJkcwotLSAKTWFyZWsgU3p5cHJvd3NraSwgUGhEClNhbXN1bmcgUiZEIElu c3RpdHV0ZSBQb2xhbmQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0CkFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9y ZwpodHRwczovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Fsc2Et ZGV2ZWwK