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.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, 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 C60D8C33CAF for ; Wed, 22 Jan 2020 08:46:17 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 9C94B2465A for ; Wed, 22 Jan 2020 08:46:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="KPdK/Jce" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C94B2465A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 126456F3F2; Wed, 22 Jan 2020 08:46:17 +0000 (UTC) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2E0CD6F3F2 for ; Wed, 22 Jan 2020 08:46:15 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20200122084613euoutp0115b3deeba62d58f47dbc7d9ea8bbaf70~sKRzXQJqS0483004830euoutp01g for ; Wed, 22 Jan 2020 08:46:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20200122084613euoutp0115b3deeba62d58f47dbc7d9ea8bbaf70~sKRzXQJqS0483004830euoutp01g DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1579682773; bh=j9OhfnmwsNsDseRLE6HNXD9Fo2QmKiNb/mx4gnijVoM=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=KPdK/JceJ90YE5w76bRSlh5YzOudvECHxOxPOC7uQqPr7kl6WCU7ckRafROJic3K3 wBu0/0Ls/kykcvkAlnOub25j6YRxRxnQ7FbLW5JQjh/CSamX09MNtvyKyAae5p4zrs 7glfKGuhNLbLCX5vd1Cq/O/VbpIAyCIzhDiZb+BY= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20200122084612eucas1p213f4303164e7fba9c95bab308e9d65b1~sKRzHqZU_0204702047eucas1p28; Wed, 22 Jan 2020 08:46:12 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 8F.8B.61286.4DB082E5; Wed, 22 Jan 2020 08:46:12 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200122084612eucas1p22383370e24f6fa5f90ed70143bdd07fa~sKRytfySz1174911749eucas1p23; Wed, 22 Jan 2020 08:46:12 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200122084612eusmtrp22f7b4863d7520b69be98949895cf5599~sKRyseQG90741107411eusmtrp2T; Wed, 22 Jan 2020 08:46:12 +0000 (GMT) X-AuditID: cbfec7f2-ef1ff7000001ef66-05-5e280bd4b473 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id E1.C2.07950.4DB082E5; Wed, 22 Jan 2020 08:46:12 +0000 (GMT) Received: from [106.120.51.74] (unknown [106.120.51.74]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200122084611eusmtip20b276d63216e5ad8b19be6e80f6427bf~sKRx3d6Vo0540005400eusmtip2k; Wed, 22 Jan 2020 08:46:11 +0000 (GMT) Subject: Re: [PATCH 2/2] drm/bridge: Add tc358768 driver To: Peter Ujfalusi , airlied@linux.ie, daniel@ffwll.ch, robh+dt@kernel.org, mark.rutland@arm.com, narmstrong@baylibre.com From: Andrzej Hajda Message-ID: Date: Wed, 22 Jan 2020 09:46:09 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 MIME-Version: 1.0 In-Reply-To: <14306079-500d-09ca-df94-4cf72c43f858@ti.com> Content-Language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA02SfUhTURjGO/fe3V21G6dp7MXKaGBUUCZ9cPuSlIILQfhHRBitVl40clO2 tKxISy1LLJex3NI2RbPCWq2mKRll6RzaMlNTk4xahKmIuVkJVptXyf9+532e857ngcOQMrck lDmiOSZoNaokBR1IVTf9frOqI2i5ck19cQSX73IS3N9qPcmZX7kkXId3hOY6fw6QnHOok+Iu 6sul3Lu6YpqreP+W4Bou7+NMo78kXE79KylnNffS21i+6mYV4ke6c6R8/biF4m/kGiW87e5F mm8uaCf4mvFPEr4/z0Hwz/MLKd7RXUPwY7aw2KC4wC3xQtKRNEEbEXUwMLGnz0ukTJQRJwx9 WzPRg0F0CQUwgNfB8Kc22s8yfBtBTh0jsgdBl9HHgT4eQ3C+/Jt05kL52UlCFCoRfLNVSMXD MAJP0TPK7wrGHHz4bqb8Qgi+hsDoMUr8AokbERRUxPmZxitg8lGP722GYXEUNDt3+scUDofG TM+UfQHeC+6OL1PM4vngNLqn9gfgTdBjLUXiyiWQZb9BiiyHXreZEJPqGThnxyJvB8vHD7TI wfDd8Xi6zSL4Wzvjz4D+29mkPzPgXAT2B7WkKGyGPtfEVE7Sl9laFyGOo6Gpvwb5x4DnQffw fDHCPLhafZ0UxyzknpeJ7qXQ/9o+vVAOFW1eugApTLOKmWaVMc0qY/r/rgVRd5FcSNWpEwRd pEY4vlqnUutSNQmrDyerbcj391r+OH48Qd72Qw0IM0gxl038ukwpk6jSdOnqBgQMqQhhLefC lTI2XpV+UtAmH9CmJgm6BrSQoRRydm3ZwH4ZTlAdE44KQoqgnVEJJiA0E5URg3GdhUoh/sfp ha4ha5Kai/7cNecU3XqGeLIirCrHaI56WVr7i10csrjkuL01e0d70P3dnqzu0Z8tho23tk5q imLSmk3L7t1RVj/ccGBgDMcmXMnocrhKSq60ROyqnPsMPU2W5lnWZ+hji/vi5BcMkvReY6jh ZrBzkt8Tk/lCQekSVZErSa1O9Q/Pdf9fdwMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFIsWRmVeSWpSXmKPExsVy+t/xe7pXuDXiDD5tF7foPXeSyeL/tonM FvOPnGO1uPL1PZvF1e8vmS1OvrnKYtE5cQm7xeVdc9gsll6/yGRxqC/aYtbHH6wWrXuPsFus n3+LzYHXY828NYwe72+0snvs/baAxWN2x0xWj02rOtk8Tky4xOSx/dsDVo/73ceZPA70Tmbx OH5jO5PH501yAdxRejZF+aUlqQoZ+cUltkrRhhZGeoaWFnpGJpZ6hsbmsVZGpkr6djYpqTmZ ZalF+nYJehk373xlKvi1iKli2h3bBsYNrxm7GDk5JARMJJY0/mXqYuTiEBJYyijx7u4PqIS4 xO75b5khbGGJP9e62CCKXjNK7Hx3nwkkISxgIXH71XwWkISIwBRGiR2zP4JVMQscZZSY8noa WJWQwBImiWmrpEBsNgFNib+bbwIVcXDwCthJnDjpDRJmEVCVONrwhRXEFhWIkHj7+yaYzSsg KHFy5hMWEJtTwEri5vqFYNcxC6hL/Jl3iRnClpdo3jobyhaXuPVkPtMERqFZSNpnIWmZhaRl FpKWBYwsqxhFUkuLc9Nzi430ihNzi0vz0vWS83M3MQLjfduxn1t2MHa9Cz7EKMDBqMTDm/FU LU6INbGsuDL3EKMEB7OSCO+CJtU4Id6UxMqq1KL8+KLSnNTiQ4ymQM9NZJYSTc4HpqK8knhD U0NzC0tDc2NzYzMLJXHeDoGDMUIC6YklqdmpqQWpRTB9TBycUg2Mu7xOt36Pq7uyZC97E7/G mQPL7fd3dd+b9WzGp+ulWVWudxYGz2LN/dW1J3j605eiX0zaFzgtjdPcm1mnu35Zol36guKI cxdP34xRvmZ5rL3Vu5DpYuKbQI519pu42+c7Xi3i7UhtiXHaxHKD2ay0lOWD2M4TCdMPTX/F +vde65Wr/XlnuDO4lFiKMxINtZiLihMBfsq8NA0DAAA= X-CMS-MailID: 20200122084612eucas1p22383370e24f6fa5f90ed70143bdd07fa X-Msg-Generator: CA X-RootMTR: 20191217101520epcas1p4a2bdee0cab0c11670b74fbe9e9397835 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20191217101520epcas1p4a2bdee0cab0c11670b74fbe9e9397835 References: <20191217101506.18910-1-peter.ujfalusi@ti.com> <20191217101506.18910-3-peter.ujfalusi@ti.com> <35d664fe-8091-2744-abf2-69828ebf1148@samsung.com> <14306079-500d-09ca-df94-4cf72c43f858@ti.com> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, jernej.skrabec@siol.net, jonas@kwiboo.se, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, Laurent.pinchart@ideasonboard.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gMjEuMDEuMjAyMCAxNjoxMSwgUGV0ZXIgVWpmYWx1c2kgd3JvdGU6Cj4gSGkgQW5kcnplaiwK Pgo+IE9uIDE2LzAxLzIwMjAgMTYuMzUsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4+IE9uIDE3LjEy LjIwMTkgMTE6MTUsIFBldGVyIFVqZmFsdXNpIHdyb3RlOgo+Pj4gQWRkIGJhc2ljIHN1cHBvcnQg Zm9yIHRoZSBUb3NoaWJhIFRDMzU4NzY4IFJHQiB0byBEU0kgYnJpZGdlLgo+Pj4gTm90IGFsbCB0 aGUgZmVhdHVyZXMgb2YgdGhlIFRDMzU4NzY4IGlzIGltcGxlbWVudGVkIGJ5IHRoZSBpbml0aWFs IGRyaXZlcjoKPj4+IE1JUElfRFNJX01PREVfVklERU8gYW5kIE1JUElfRFNJX0ZNVF9SR0I4ODgg aXMgb25seSBzdXBwb3J0ZWQgYW5kIHRlc3RlZC4KPj4+Cj4+PiBPbmx5IHdyaXRlIGlzIGltcGxl bWVudGVkIGZvciBtaXBpX2RzaV9ob3N0X29wcy50cmFuc2Zlci4KPj4+Cj4+PiBTaWduZWQtb2Zm LWJ5OiBQZXRlciBVamZhbHVzaSA8cGV0ZXIudWpmYWx1c2lAdGkuY29tPgo+Pj4gLS0tCj4+PiAg ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnICAgIHwgIDEwICsKPj4+ICBkcml2ZXJzL2dw dS9kcm0vYnJpZGdlL01ha2VmaWxlICAgfCAgIDEgKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9icmlk Z2UvdGMzNTg3NjguYyB8IDk2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICAz IGZpbGVzIGNoYW5nZWQsIDk3NCBpbnNlcnRpb25zKCspCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGMzNTg3NjguYwo+Pj4KPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tj b25maWcKPj4+IGluZGV4IGNjYzY5OGM0NGY1OC4uZmQ2NTY2NjcwMmUxIDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL0tjb25maWcKPj4+IEBAIC0xMjIsNiArMTIyLDE2IEBAIGNvbmZpZyBEUk1fVE9T SElCQV9UQzM1ODc2Nwo+Pj4gIAktLS1oZWxwLS0tCj4+PiAgCSAgVG9zaGliYSBUQzM1ODc2NyBl RFAgYnJpZGdlIGNoaXAgZHJpdmVyLgo+Pj4gIAo+Pj4gK2NvbmZpZyBEUk1fVE9TSElCQV9UQzM1 ODc2OAo+Pj4gKwl0cmlzdGF0ZSAiVG9zaGliYSBUQzM1ODc2OCBNSVBJIERTSSBicmlkZ2UiCj4+ PiArCWRlcGVuZHMgb24gT0YKPj4+ICsJc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4+PiArCXNlbGVj dCBSRUdNQVBfSTJDCj4+PiArCXNlbGVjdCBEUk1fUEFORUwKPj4+ICsJc2VsZWN0IERSTV9NSVBJ X0RTSQo+Pj4gKwloZWxwCj4+PiArCSAgVG9zaGliYSBUQzM1ODc2OEFYQkcvVEMzNTg3NzhYQkcg RFNJIGJyaWRnZSBjaGlwIGRyaXZlci4KPj4+ICsKPj4+ICBjb25maWcgRFJNX1RJX1RGUDQxMAo+ Pj4gIAl0cmlzdGF0ZSAiVEkgVEZQNDEwIERWSS9IRE1JIGJyaWRnZSIKPj4+ICAJZGVwZW5kcyBv biBPRgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4+PiBpbmRleCBhNmM3ZGQ3NzI3ZWEuLjIw NDY5NmUzMDU3MiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZp bGUKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKPj4+IEBAIC0xMSw2 ICsxMSw3IEBAIG9iai0kKENPTkZJR19EUk1fU0lJOTIzNCkgKz0gc2lpOTIzNC5vCj4+PiAgb2Jq LSQoQ09ORklHX0RSTV9USElORV9USEM2M0xWRDEwMjQpICs9IHRoYzYzbHZkMTAyNC5vCj4+PiAg b2JqLSQoQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY0KSArPSB0YzM1ODc2NC5vCj4+PiAgb2Jq LSQoQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY3KSArPSB0YzM1ODc2Ny5vCj4+PiArb2JqLSQo Q09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY4KSArPSB0YzM1ODc2OC5vCj4+PiAgb2JqLSQoQ09O RklHX0RSTV9JMkNfQURWNzUxMSkgKz0gYWR2NzUxMS8KPj4+ICBvYmotJChDT05GSUdfRFJNX1RJ X1NONjVEU0k4NikgKz0gdGktc242NWRzaTg2Lm8KPj4+ICBvYmotJChDT05GSUdfRFJNX1RJX1RG UDQxMCkgKz0gdGktdGZwNDEwLm8KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL3RjMzU4NzY4LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RjMzU4NzY4LmMKPj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjYzNTcxMTkxYjFjNAo+ Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2 OC5jCj4+PiBAQCAtMCwwICsxLDk2MyBAQAo+Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCj4+PiArLyoKPj4+ICsgKiAgQ29weXJpZ2h0IChDKSAyMDE4IFRleGFzIEluc3Ry dW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tCj4+Cj4+IEp1c3QgRllJLCB3 ZSBoYXZlIDIwMjAgYWxyZWFkeSwgbWF5YmUgdXBkYXRlIG5lZWRlZC4KPiBPaCwgaG93IHRpbWUg ZmxpZXMgOykKPgo+Pgo+Pj4gKyAqICBBdXRob3I6IFBldGVyIFVqZmFsdXNpIDxwZXRlci51amZh bHVzaUB0aS5jb20+Cj4+PiArICovCj4+PiArCj4+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ Pj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9j b25zdW1lci5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPj4+ICsjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+Pj4gKyNpbmNsdWRl IDxsaW51eC9yZWdtYXAuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+Pj4gKyNpbmNs dWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPj4KPj4gYWxwaGFiZXRpYyBvcmRlcgo+ IE9rLgo+Cj4+PiArCj4+PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+Pj4g KyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1f ZHJ2Lmg+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1fb2YuaD4KPj4+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9wYW5lbC5oPgo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4+PiArI2luY2x1 ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+Pj4gKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUu aD4KPj4+ICsKPj4+ICsvKiBHbG9iYWwgKDE2LWJpdCBhZGRyZXNzYWJsZSkgKi8KPj4+ICsjZGVm aW5lIFRDMzU4NzY4X0NISVBJRAkJCTB4MDAwMAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfU1lTQ1RM CQkJMHgwMDAyCj4+PiArI2RlZmluZSBUQzM1ODc2OF9DT05GQ1RMCQkweDAwMDQKPj4+ICsjZGVm aW5lIFRDMzU4NzY4X1ZTRExZCQkJMHgwMDA2Cj4+PiArI2RlZmluZSBUQzM1ODc2OF9EQVRBRk1U CQkweDAwMDgKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X0dQSU9FTgkJCTB4MDAwRQo+Pj4gKyNkZWZp bmUgVEMzNTg3NjhfR1BJT0RJUgkJMHgwMDEwCj4+PiArI2RlZmluZSBUQzM1ODc2OF9HUElPSU4J CQkweDAwMTIKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X0dQSU9PVVQJCTB4MDAxNAo+Pj4gKyNkZWZp bmUgVEMzNTg3NjhfUExMQ1RMMAkJMHgwMDE2Cj4+PiArI2RlZmluZSBUQzM1ODc2OF9QTExDVEwx CQkweDAwMTgKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X0NNREJZVEUJCTB4MDAyMgo+Pj4gKyNkZWZp bmUgVEMzNTg3NjhfUFBfTUlTQwkJMHgwMDMyCj4+PiArI2RlZmluZSBUQzM1ODc2OF9EU0lUWF9E VAkJMHgwMDUwCj4+PiArI2RlZmluZSBUQzM1ODc2OF9GSUZPU1RBVFVTCQkweDAwRjgKPj4+ICsK Pj4+ICsvKiBEZWJ1ZyAoMTYtYml0IGFkZHJlc3NhYmxlKSAqLwo+Pj4gKyNkZWZpbmUgVEMzNTg3 NjhfVkJVRkNUUkwJCTB4MDBFMAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfREJHX1dJRFRICQkweDAw RTIKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X0RCR19WQkxBTksJCTB4MDBFNAo+Pj4gKyNkZWZpbmUg VEMzNTg3NjhfREJHX0RBVEEJCTB4MDBFOAo+Pj4gKwo+Pj4gKy8qIFRYIFBIWSAoMzItYml0IGFk ZHJlc3NhYmxlKSAqLwo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfQ0xXX0RQSFlDT05UVFgJCTB4MDEw MAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRDBXX0RQSFlDT05UVFgJCTB4MDEwNAo+Pj4gKyNkZWZp bmUgVEMzNTg3NjhfRDFXX0RQSFlDT05UVFgJCTB4MDEwOAo+Pj4gKyNkZWZpbmUgVEMzNTg3Njhf RDJXX0RQSFlDT05UVFgJCTB4MDEwQwo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRDNXX0RQSFlDT05U VFgJCTB4MDExMAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfQ0xXX0NOVFJMCQkweDAxNDAKPj4+ICsj ZGVmaW5lIFRDMzU4NzY4X0QwV19DTlRSTAkJMHgwMTQ0Cj4+PiArI2RlZmluZSBUQzM1ODc2OF9E MVdfQ05UUkwJCTB4MDE0OAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRDJXX0NOVFJMCQkweDAxNEMK Pj4+ICsjZGVmaW5lIFRDMzU4NzY4X0QzV19DTlRSTAkJMHgwMTUwCj4+PiArCj4+PiArLyogVFgg UFBJICgzMi1iaXQgYWRkcmVzc2FibGUpICovCj4+PiArI2RlZmluZSBUQzM1ODc2OF9TVEFSVENO VFJMCQkweDAyMDQKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X0RTSVRYU1RBVFVTCQkweDAyMDgKPj4+ ICsjZGVmaW5lIFRDMzU4NzY4X0xJTkVJTklUQ05UCQkweDAyMTAKPj4+ICsjZGVmaW5lIFRDMzU4 NzY4X0xQVFhUSU1FQ05UCQkweDAyMTQKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X1RDTEtfSEVBREVS Q05UCQkweDAyMTgKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X1RDTEtfVFJBSUxDTlQJCTB4MDIxQwo+ Pj4gKyNkZWZpbmUgVEMzNTg3NjhfVEhTX0hFQURFUkNOVAkJMHgwMjIwCj4+PiArI2RlZmluZSBU QzM1ODc2OF9UV0FLRVVQCQkweDAyMjQKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X1RDTEtfUE9TVENO VAkJMHgwMjI4Cj4+PiArI2RlZmluZSBUQzM1ODc2OF9USFNfVFJBSUxDTlQJCTB4MDIyQwo+Pj4g KyNkZWZpbmUgVEMzNTg3NjhfSFNUWFZSRUdDTlQJCTB4MDIzMAo+Pj4gKyNkZWZpbmUgVEMzNTg3 NjhfSFNUWFZSRUdFTgkJMHgwMjM0Cj4+PiArI2RlZmluZSBUQzM1ODc2OF9UWE9QVElPTkNOVFJM CQkweDAyMzgKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X0JUQUNOVFJMMQkJMHgwMjNDCj4+PiArCj4+ PiArLyogVFggQ1RSTCAoMzItYml0IGFkZHJlc3NhYmxlKSAqLwo+Pj4gKyNkZWZpbmUgVEMzNTg3 NjhfRFNJX0NPTlRST0wJCTB4MDQwQwo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJX1NUQVRVUwkJ MHgwNDEwCj4+PiArI2RlZmluZSBUQzM1ODc2OF9EU0lfSU5UCQkweDA0MTQKPj4+ICsjZGVmaW5l IFRDMzU4NzY4X0RTSV9JTlRfRU5BCQkweDA0MTgKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X0RTSUNN RF9SREZJRk8JCTB4MDQzMAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJX0FDS0VSUgkJMHgwNDM0 Cj4+PiArI2RlZmluZSBUQzM1ODc2OF9EU0lfQUNLRVJSX0lOVEVOQQkweDA0MzgKPj4+ICsjZGVm aW5lIFRDMzU4NzY4X0RTSV9BQ0tFUlJfSEFMVAkweDA0M2MKPj4+ICsjZGVmaW5lIFRDMzU4NzY4 X0RTSV9SWEVSUgkJMHgwNDQwCj4+PiArI2RlZmluZSBUQzM1ODc2OF9EU0lfUlhFUlJfSU5URU5B CTB4MDQ0NAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJX1JYRVJSX0hBTFQJCTB4MDQ0OAo+Pj4g KyNkZWZpbmUgVEMzNTg3NjhfRFNJX0VSUgkJMHgwNDRDCj4+PiArI2RlZmluZSBUQzM1ODc2OF9E U0lfRVJSX0lOVEVOQQkJMHgwNDUwCj4+PiArI2RlZmluZSBUQzM1ODc2OF9EU0lfRVJSX0hBTFQJ CTB4MDQ1NAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJX0NPTkZXCQkweDA1MDAKPj4+ICsjZGVm aW5lIFRDMzU4NzY4X0RTSV9MUENNRAkJMHgwNTAwCj4+PiArI2RlZmluZSBUQzM1ODc2OF9EU0lf UkVTRVQJCTB4MDUwNAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJX0lOVF9DTFIJCTB4MDUwQwo+ Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJX1NUQVJUCQkweDA1MTgKPj4+ICsKPj4+ICsvKiBEU0lU WCBDVFJMICgxNi1iaXQgYWRkcmVzc2FibGUpICovCj4+PiArI2RlZmluZSBUQzM1ODc2OF9EU0lD TURfVFgJCTB4MDYwMAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJQ01EX1RZUEUJCTB4MDYwMgo+ Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJQ01EX1dDCQkweDA2MDQKPj4+ICsjZGVmaW5lIFRDMzU4 NzY4X0RTSUNNRF9XRDAJCTB4MDYxMAo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJQ01EX1dEMQkJ MHgwNjEyCj4+PiArI2RlZmluZSBUQzM1ODc2OF9EU0lDTURfV0QyCQkweDA2MTQKPj4+ICsjZGVm aW5lIFRDMzU4NzY4X0RTSUNNRF9XRDMJCTB4MDYxNgo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJ X0VWRU5UCQkweDA2MjAKPj4+ICsjZGVmaW5lIFRDMzU4NzY4X0RTSV9WU1cJCTB4MDYyMgo+Pj4g KyNkZWZpbmUgVEMzNTg3NjhfRFNJX1ZCUFIJCTB4MDYyNAo+Pj4gKyNkZWZpbmUgVEMzNTg3Njhf RFNJX1ZBQ1QJCTB4MDYyNgo+Pj4gKyNkZWZpbmUgVEMzNTg3NjhfRFNJX0hTVwkJMHgwNjI4Cj4+ PiArI2RlZmluZSBUQzM1ODc2OF9EU0lfSEJQUgkJMHgwNjJBCj4+PiArI2RlZmluZSBUQzM1ODc2 OF9EU0lfSEFDVAkJMHgwNjJDCj4+PiArCj4+PiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0 YzM1ODc2OF9zdXBwbGllc1tdID0gewo+Pj4gKwkidmRkYyIsICJ2ZGRtaXBpIiwgInZkZGlvIgo+ Pj4gK307Cj4+PiArCj4+PiArc3RydWN0IHRjMzU4NzY4X2RzaV9vdXRwdXQgewo+Pj4gKwlzdHJ1 Y3QgbWlwaV9kc2lfZGV2aWNlICpkZXY7Cj4+PiArCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOwo+ Pj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwo+Pj4gK307Cj4+PiArCj4+PiArc3RydWN0 IHRjMzU4NzY4X3ByaXYgewo+Pj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+PiArCXN0cnVjdCBy ZWdtYXAgKnJlZ21hcDsKPj4+ICsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKPj4+ICsJ c3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbQVJSQVlfU0laRSh0YzM1ODc2OF9z dXBwbGllcyldOwo+Pj4gKwlzdHJ1Y3QgY2xrICpyZWZjbGs7Cj4+PiArCj4+PiArCXN0cnVjdCBt aXBpX2RzaV9ob3N0IGRzaV9ob3N0Owo+Pj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7Cj4+ PiArCXN0cnVjdCB0YzM1ODc2OF9kc2lfb3V0cHV0IG91dHB1dDsKPj4KPj4gU2luY2UgdGMzNTg3 NjhfZHNpX291dHB1dCBpcyB1c2VkIG9ubHkgaGVyZSwgeW91IGNhbiBkZWZpbmUgaXQgaGVyZSBh cwo+PiB3ZWxsLCB1cCB0byB5b3UuCj4gSSB0aGluayBJIGhhdmUgZG9uZSBpdCBsaWtlIHRoaXMg dG8gYXZvaWQgdGhpbmtpbmcgYWJvdXQgcHJlZml4ZXMgZm9yCj4gd2hhdCBpcyB1bmRlciB0aGUg dGMzNTg3NjhfZHNpX291dHB1dC4KPiBJJ2xsIHRha2UgYSBsb29rIGlmIGl0IHdpbGwgbG9vayBi ZXR0ZXIgdW5wYWNrZWQgaGVyZS4KCkkgdGhvdWdoIHJhdGhlciBhYm91dCBpbi1wbGFjZSBhbm9u eW1vdXMgc3RydWN0IGRlZmluaXRpb246CgorwqDCoMKgIHN0cnVjdCB0YzM1ODc2OF9kc2lfb3V0 cHV0IHsKK8KgwqDCoCDCoMKgwqAgc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZGV2OworwqDCoMKg IMKgwqDCoCBzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKK8KgwqDCoCDCoMKgwqAgc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZTsKK8KgwqDCoCB9IG91dHB1dDsKCkJ1dCwgYXMgSSBzYWlkIC0gdXAg dG8geW91LgoKPgo+Pj4gKwo+Pj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZTsKPj4+ICsJdTMyIHBkX2xpbmVzOyAvKiBudW1iZXIgb2YgUGFyYWxsZWwgUG9ydCBJbnB1dCBE YXRhIExpbmVzICovCj4+PiArCXUzMiBkc2lfbGFuZXM7IC8qIG51bWJlciBvZiBEU0kgTGFuZXMg Ki8KPj4+ICsKPj4+ICsJdTMyIGZiZDsKPj4+ICsJdTMyIHByZDsKPj4+ICsJdTMyIGZyczsKPj4K Pj4gTG9va3MgdWdseSwgcGxlYXNlIHJlbmFtZSB0aGVzZSAzIHZhcnMgdG8gc3RoIG1vcmUgcmVh ZGFibGUsIG9yIGF0IGxlYXN0Cj4+IGRvY3VtZW50IHRoZW0gKGlmIHRoZSBuYW1lcyBjb21lcyBm cm9tIHRoZSBzcGVjaWZpY2F0aW9uKS4KPiBTdXJlLCBJIGFncmVlLgo+Cj4+PiArCj4+PiArCXUz MiBkc2ljbGs7IC8qIHBsbF9jbGsgLyAyICovCj4+PiArfTsKPj4+ICsKPj4+ICtzdGF0aWMgaW5s aW5lIHN0cnVjdCB0YzM1ODc2OF9wcml2ICpkc2lfaG9zdF90b190YzM1ODc2OChzdHJ1Y3QgbWlw aV9kc2lfaG9zdAo+Pj4gKwkJCQkJCQkgKmhvc3QpCj4+PiArewo+Pj4gKwlyZXR1cm4gY29udGFp bmVyX29mKGhvc3QsIHN0cnVjdCB0YzM1ODc2OF9wcml2LCBkc2lfaG9zdCk7Cj4+PiArfQo+Pj4g Kwo+Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRjMzU4NzY4X3ByaXYgKmJyaWRnZV90b190YzM1 ODc2OChzdHJ1Y3QgZHJtX2JyaWRnZQo+Pj4gKwkJCQkJCSAgICAgICAqYnJpZGdlKQo+Pj4gK3sK Pj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihicmlkZ2UsIHN0cnVjdCB0YzM1ODc2OF9wcml2LCBi cmlkZ2UpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IHRjMzU4NzY4X3dyaXRlKHN0cnVj dCB0YzM1ODc2OF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKQo+Pj4gK3sKPj4+ICsJc2l6 ZV90IGNvdW50ID0gMjsKPj4+ICsKPj4+ICsJLyogMTYtYml0IHJlZ2lzdGVyPyAqLwo+Pj4gKwlp ZiAocmVnIDwgMHgxMDAgfHwgcmVnID49IDB4NjAwKQo+Pj4gKwkJY291bnQgPSAxOwo+Pj4gKwo+ Pj4gKwlyZXR1cm4gcmVnbWFwX2J1bGtfd3JpdGUocHJpdi0+cmVnbWFwLCByZWcsICZ2YWwsIGNv dW50KTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCB0YzM1ODc2OF9yZWFkKHN0cnVjdCB0 YzM1ODc2OF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbCkKPj4+ICt7Cj4+PiArCXNpemVf dCBjb3VudCA9IDI7Cj4+PiArCj4+PiArCS8qIDE2LWJpdCByZWdpc3Rlcj8gKi8KPj4+ICsJaWYg KHJlZyA8IDB4MTAwIHx8IHJlZyA+PSAweDYwMCkgewo+Pj4gKwkJKnZhbCA9IDA7Cj4+PiArCQlj b3VudCA9IDE7Cj4+PiArCX0KPj4+ICsKPj4+ICsJcmV0dXJuIHJlZ21hcF9idWxrX3JlYWQocHJp di0+cmVnbWFwLCByZWcsIHZhbCwgY291bnQpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50 IHRjMzU4NzY4X3VwZGF0ZV9iaXRzKHN0cnVjdCB0YzM1ODc2OF9wcml2ICpwcml2LCB1MzIgcmVn LCB1MzIgbWFzaywKPj4+ICsJCQkJdTMyIHZhbCkKPj4+ICt7Cj4+PiArCWludCByZXQ7Cj4+PiAr CXUzMiB0bXAsIG9yaWc7Cj4+PiArCj4+PiArCXJldCA9IHRjMzU4NzY4X3JlYWQocHJpdiwgcmVn LCAmb3JpZyk7Cj4+PiArCWlmIChyZXQgIT0gMCkKPj4+ICsJCXJldHVybiByZXQ7Cj4+PiArCj4+ PiArCXRtcCA9IG9yaWcgJiB+bWFzazsKPj4+ICsJdG1wIHw9IHZhbCAmIG1hc2s7Cj4+PiArCj4+ PiArCWlmICh0bXAgIT0gb3JpZykKPj4+ICsJCXJldCA9IHRjMzU4NzY4X3dyaXRlKHByaXYsIHJl ZywgdG1wKTsKPj4+ICsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICt9Cj4+Cj4+IFlvdSBoYXZlIGRl ZmluZWQgMyBodyBhY2Nlc3MgZnVuY3Rpb25zIHdoaWNoIGNhbiBmYWlsIGJ1dCB5b3UgZG8gbm90 Cj4+IGNoZWNrIHRoZWlyIHJldHVybiB2YWx1ZXMgaW4gbGF0ZXIgdXNhZ2UuIERvZXMgcmVnbWFw L2kyYyBsb2dzIHN0aCBpbgo+PiBjYXNlIG9mIGVycm9yPwo+Pgo+PiBJZiBub3QsIG1heWJlIGVy cm9yIGxvZ2dpbmcgc2hvdWxkIGJlIGFkZGVkIGF0IGxlYXN0IGluIHRoZXNlIGFjY2Vzc29ycy4K Pj4KPj4gVGhlIGJlc3Qgd291bGQgYmUgdG8gcHJvcGFnYXRlIGVycm9ycyB0byBjYWxsZXJzLCBl aXRoZXIgdHJhZGl0aW9uYWwgd2F5Cj4+IChhZGQgY2hlY2sgYWZ0ZXIgZWFjaCBjYWxsKSwgZWl0 aGVyIHlvdSBjYW4gdXNlICdlcnJvciBzdGF0ZScgcGF0dGVybiwKPj4gd2hpY2ggSSByZWNvbW1l bmQgKHNlZSBmb3IgZXhhbXBsZSB0byAnY3R4LT5lcnJvcicgdXNhZ2UgaW4gc2lsLXNpaTg2MjAu YykuCj4gT0ssIEknbGwgY2xlYW4gdGhpcyB1cAo+Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgdGMz NTg3Njhfc3dfcmVzZXQoc3RydWN0IHRjMzU4NzY4X3ByaXYgKnByaXYpCj4+PiArewo+Pj4gKwkv KiBBc3NlcnQgUmVzZXQgKi8KPj4+ICsJdGMzNTg3Njhfd3JpdGUocHJpdiwgVEMzNTg3NjhfU1lT Q1RMLCAxKTsKPj4+ICsJLyogUmVsZWFzZSBSZXNldCwgRXhpdCBTbGVlcCAqLwo+Pj4gKwl0YzM1 ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9TWVNDVEwsIDApOwo+Pj4gK30KPj4+ICsKPj4+ICtz dGF0aWMgdm9pZCB0YzM1ODc2OF9od19lbmFibGUoc3RydWN0IHRjMzU4NzY4X3ByaXYgKnByaXYs IGJvb2wgZW5hYmxlKQo+Pj4gK3sKPj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJaWYgKGVuYWJs ZSkgewo+Pj4gKwkJcmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUocHJpdi0+ c3VwcGxpZXMpLAo+Pj4gKwkJCQkJICAgIHByaXYtPnN1cHBsaWVzKTsKPj4+ICsJCWlmIChyZXQg PCAwKQo+Pj4gKwkJCWRldl9lcnIocHJpdi0+ZGV2LCAiZXJyb3IgZW5hYmxpbmcgcmVndWxhdG9y cyAoJWQpXG4iLAo+Pj4gKwkJCQlyZXQpOwo+Pj4gKwkJdXNsZWVwX3JhbmdlKDIwMCwgMzAwKTsK Pj4+ICsJfQo+Pj4gKwo+Pj4gKwkvKgo+Pj4gKwkgKiBUaGUgUkVTWCBpcyBhY3RpdmUgbG93IChH UElPX0FDVElWRV9MT1cpLgo+Pj4gKwkgKiBJbnZlcnQgdGhlICdlbmFibGUnIHZhbHVlIHRvIGdl dCBjb3JyZWN0IGFzc2VydGlvbiBmb3IgdGhlIGdwaW86Cj4+PiArCSAqIGVuYWJsZSA9PSB0cnVl OiByZXNldF9ncGlvIG5lZWRzIHRvIGJlIERFQVNTRVJURUQgKHZhbHVlID0gMCkKPj4+ICsJICog ZW5hYmxlID09IGZhbHNlOiByZXNldF9ncGlvIG5lZWRzIHRvIGJlIEFTU0VSVEVEICh2YWx1ZSA9 IDEpCj4+PiArCSAqLwo+Pj4gKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi0+cmVzZXRf Z3BpbywgIWVuYWJsZSk7Cj4+PiArCj4+PiArCXJlZ2NhY2hlX2NhY2hlX29ubHkocHJpdi0+cmVn bWFwLCAhZW5hYmxlKTsKPj4+ICsJaWYgKGVuYWJsZSkgewo+Pj4gKwkJLyogd2FpdCBmb3IgZW5j b2RlciBjbG9ja3MgdG8gc3RhYmlsaXplICovCj4+PiArCQl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAw MCk7Cj4+PiArCj4+PiArCQlyZWdjYWNoZV9zeW5jKHByaXYtPnJlZ21hcCk7Cj4+Cj4+IFdoYXQg ZG8geW91IG5lZWQgdG8gc3luYyBoZXJlPwo+IFJpZ2h0LCB3ZSBkbyBhIGZ1bGwgcmVjb25maWd1 cmF0aW9uIGFmdGVyIHRoaXMsIHlvdSBhcmUgY29ycmVjdCwgdGhlcmUKPiBpcyBubyBuZWVkIHRv IHN5bmMgYW5kIHRoZSByZWdtYXAncyBSRUdDQUNIRV9SQlRSRUUgY2FuIGJlIFJFR0NBQ0hFX05P TkUKPiBzYWZlbHkuCj4KPj4+ICsJfSBlbHNlIHsKPj4+ICsJCXJldCA9IHJlZ3VsYXRvcl9idWxr X2Rpc2FibGUoQVJSQVlfU0laRShwcml2LT5zdXBwbGllcyksCj4+PiArCQkJCQkgICAgIHByaXYt PnN1cHBsaWVzKTsKPj4+ICsJCWlmIChyZXQgPCAwKQo+Pj4gKwkJCWRldl9lcnIocHJpdi0+ZGV2 LCAiZXJyb3IgZGlzYWJsaW5nIHJlZ3VsYXRvcnMgKCVkKVxuIiwKPj4+ICsJCQkJcmV0KTsKPj4+ ICsJfQo+Pj4gK30KPj4KPj4gQWJvdmUgZnVuY3Rpb24gbG9va3MgdWdseSAtIHRoZXNlICdpZiAo ZW5hYmxlKScgYW5kIHNpbWlsYXIgYXJlIGhhcmQgdG8KPj4gcmVhZCwgbWF5YmUgdHdvIHNlcGFy YXRlIGh3X2VuYWJsZSwgaHdfZGlzYWJsZSBmdW5jdGlvbiB3b3VsZCBsb29rCj4+IGJldHRlciwg bW9yZSByZWFkYWJsZSwgdXAgdG8geW91Lgo+IE9LLCBJJ2xsIHNlcGFyYXRlIHRoZSBlbmFibGUg YW5kIGRpc2FibGUuCj4KPj4+ICsKPj4+ICtzdGF0aWMgdTMyIHRjMzU4NzY4X3BsbF90b19wY2xr KHN0cnVjdCB0YzM1ODc2OF9wcml2ICpwcml2LCB1MzIgcGxsX2NsaykKPj4+ICt7Cj4+PiArCXJl dHVybiAodTMyKWRpdl91NjQoKHU2NClwbGxfY2xrICogcHJpdi0+ZHNpX2xhbmVzLCBwcml2LT5w ZF9saW5lcyk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB1MzIgdGMzNTg3NjhfcGNsa190b19w bGwoc3RydWN0IHRjMzU4NzY4X3ByaXYgKnByaXYsIHUzMiBwY2xrKQo+Pj4gK3sKPj4+ICsJcmV0 dXJuICh1MzIpZGl2X3U2NCgodTY0KXBjbGsgKiBwcml2LT5wZF9saW5lcywgcHJpdi0+ZHNpX2xh bmVzKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCB0YzM1ODc2OF9jYWxjX3BsbChzdHJ1 Y3QgdGMzNTg3NjhfcHJpdiAqcHJpdikKPj4+ICt7Cj4+PiArCWNvbnN0IHUzMiBmcnNfbGltaXRz W10gPSB7Cj4+PiArCQkxMDAwMDAwMDAwLAo+Pj4gKwkJNTAwMDAwMDAwLAo+Pj4gKwkJMjUwMDAw MDAwLAo+Pj4gKwkJMTI1MDAwMDAwLAo+Pj4gKwkJNjI1MDAwMDAKPj4+ICsJfTsKPj4+ICsJdW5z aWduZWQgbG9uZyByZWZjbGs7Cj4+PiArCXUzMiBwcmQsIHRhcmdldF9wbGwsIGksIG1heF9wbGws IG1pbl9wbGw7Cj4+PiArCXUzMiBmcnMsIGJlc3RfZGlmZiwgYmVzdF9wbGwsIGJlc3RfcHJkLCBi ZXN0X2ZiZDsKPj4+ICsKPj4+ICsJdGFyZ2V0X3BsbCA9IHRjMzU4NzY4X3BjbGtfdG9fcGxsKHBy aXYsIHByaXYtPm1vZGUtPmNsb2NrICogMTAwMCk7Cj4+PiArCj4+PiArCS8qIHBsbF9jbGsgPSBS ZWZDbGsgKiBbKEZCRCArIDEpLyAoUFJEICsgMSldICogWzEgLyAoMl5GUlMpXSAqLwo+Pj4gKwo+ PiBJIGd1ZXNzIGJlbG93IGNvZGU6Cj4+PiArCWZycyA9IFVJTlRfTUFYOwo+Pj4gKwo+Pj4gKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmcnNfbGltaXRzKSAtIDE7IGkrKykgewo+Pj4gKwkJ aWYgKHRhcmdldF9wbGwgPCBmcnNfbGltaXRzW2ldICYmCj4+PiArCQkgICAgdGFyZ2V0X3BsbCA+ PSBmcnNfbGltaXRzW2kgKyAxXSkgewo+Pj4gKwkJCWZycyA9IGk7Cj4+PiArCQkJbWF4X3BsbCA9 IGZyc19saW1pdHNbaV07Cj4+PiArCQkJbWluX3BsbCA9IGZyc19saW1pdHNbaSArIDFdOwo+Pj4g KwkJCWJyZWFrOwo+Pj4gKwkJfQo+Pj4gKwl9Cj4+PiArCj4+PiArCWlmIChmcnMgPT0gVUlOVF9N QVgpCj4+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4KPj4gY2FuIGJlIHNpbXBsaWZpZWQ6Cj4+Cj4+ IGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZyc19saW1pdHMpOyBpKyspCj4+Cj4+IMKgwqDC oCBpZiAodGFyZ2V0X3BsbCA+PSBmcnNfbGltaXRzW2ldKQo+Pgo+PiDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4+Cj4+IGlmIChpID09IEFSUkFZX1NJWkUoZnJzX2xpbWl0cykgfHwgaSA9PSAwKQo+Pgo+ PiDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+Cj4+IGZycyA9IGkgLSAxOwo+Pgo+PiBtYXhfcGxs ID0gZnJzX2xpbWl0c1tpLTFdOwo+Pgo+PiBtaW5fcGxsID0gZnJzX2xpbWl0c1tpXTsKPiBZZXMs IGl0IGVuaGFuY2VzIHJlYWRhYmlsaXR5IGFzIHdlbGwuCj4KPj4+ICsKPj4+ICsJcmVmY2xrID0g Y2xrX2dldF9yYXRlKHByaXYtPnJlZmNsayk7Cj4+PiArCj4+PiArCWJlc3RfZGlmZiA9IFVJTlRf TUFYOwo+Pj4gKwliZXN0X3BsbCA9IDA7Cj4+PiArCWJlc3RfcHJkID0gMDsKPj4+ICsJYmVzdF9m YmQgPSAwOwo+Pj4gKwo+Pj4gKwlmb3IgKHByZCA9IDA7IHByZCA8IDE2OyArK3ByZCkgewo+Pj4g KwkJdTMyIGRpdmlzb3IgPSAocHJkICsgMSkgKiAoMSA8PCBmcnMpOwo+Pj4gKwkJdTMyIGZiZDsK Pj4+ICsKPj4+ICsJCWZvciAoZmJkID0gMDsgZmJkIDwgNTEyOyArK2ZiZCkgewo+Pj4gKwkJCXUz MiBwbGwsIGRpZmY7Cj4+PiArCj4+PiArCQkJcGxsID0gKHUzMilkaXZfdTY0KCh1NjQpcmVmY2xr ICogKGZiZCArIDEpLCBkaXZpc29yKTsKPj4+ICsKPj4+ICsJCQlpZiAocGxsID49IG1heF9wbGwg fHwgcGxsIDwgbWluX3BsbCkKPj4+ICsJCQkJY29udGludWU7Cj4+PiArCj4+PiArCQkJZGlmZiA9 IG1heChwbGwsIHRhcmdldF9wbGwpIC0gbWluKHBsbCwgdGFyZ2V0X3BsbCk7Cj4+PiArCj4+PiAr CQkJaWYgKGRpZmYgPCBiZXN0X2RpZmYpIHsKPj4+ICsJCQkJYmVzdF9kaWZmID0gZGlmZjsKPj4+ ICsJCQkJYmVzdF9wbGwgPSBwbGw7Cj4+PiArCQkJCWJlc3RfcHJkID0gcHJkOwo+Pj4gKwkJCQli ZXN0X2ZiZCA9IGZiZDsKPj4+ICsJCQl9Cj4+PiArCj4+PiArCQkJaWYgKGJlc3RfZGlmZiA9PSAw KQo+Pj4gKwkJCQlicmVhazsKPj4+ICsJCX0KPj4+ICsKPj4+ICsJCWlmIChiZXN0X2RpZmYgPT0g MCkKPj4+ICsJCQlicmVhazsKPj4gd2h5IGFub3RoZXIgY2hlY2sgaGVyZT8KPiBUbyBicmVhayBv dXQgZnJvbSB0aGUgdG9wIGZvcigpIGxvb3AgYWxzbyBpbiBjYXNlIGV4YWN0IG1hdGNoIGhhcyBi ZWVuCj4gZm91bmQuCgoKQWhoLCBPSy4gU28gbWF5YmUgeW91IHNob3VsZCBwdXQgImlmIChkaWZm ID09IDApIGdvdG8gZm91bmQiIGluc2lkZSAiaWYKKGRpZmYgPCBiZXN0X2RpZmYpIiBibG9jaywg aW4gc3VjaCBjYXNlIGdvdG8gaXMgbm90IGNvbnNpZGVyZWQgaGFybWZ1bAo6KSwgYW5kIGlzIG1v cmUgcmVhZGFibGUuCgoKUmVnYXJkcwoKQW5kcnplagoKCj4KPj4+ICsJfQo+Pj4gKwo+Pj4gKwlp ZiAoYmVzdF9kaWZmID09IFVJTlRfTUFYKSB7Cj4+PiArCQlkZXZfZXJyKHByaXYtPmRldiwgImNv dWxkIG5vdCBmaW5kIHN1aXRhYmxlIFBMTCBzZXR1cFxuIik7Cj4+PiArCQlyZXR1cm4gLUVJTlZB TDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlwcml2LT5mYmQgPSBiZXN0X2ZiZDsKPj4+ICsJcHJpdi0+ cHJkID0gYmVzdF9wcmQ7Cj4+PiArCXByaXYtPmZycyA9IGZyczsKPj4+ICsJcHJpdi0+ZHNpY2xr ID0gYmVzdF9wbGwgLyAyOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiAr c3RhdGljIGludCB0YzM1ODc2OF9kc2lfaG9zdF9hdHRhY2goc3RydWN0IG1pcGlfZHNpX2hvc3Qg Kmhvc3QsCj4+PiArCQkJCSAgICBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkZXYpCj4+PiArewo+ Pj4gKwlzdHJ1Y3QgdGMzNTg3NjhfcHJpdiAqcHJpdiA9IGRzaV9ob3N0X3RvX3RjMzU4NzY4KGhv c3QpOwo+Pj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwo+Pj4gKwlzdHJ1Y3QgZHJtX3Bh bmVsICpwYW5lbDsKPj4+ICsJc3RydWN0IGRldmljZV9ub2RlICplcDsKPj4+ICsJaW50IHJldDsK Pj4+ICsKPj4+ICsJaWYgKGRldi0+bGFuZXMgPiA0KSB7Cj4+PiArCQlkZXZfZXJyKHByaXYtPmRl diwgInVuc3VwcG9ydGVkIG51bWJlciBvZiBkYXRhIGxhbmVzKCV1KVxuIiwKPj4+ICsJCQlkZXYt PmxhbmVzKTsKPj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qCj4+ PiArCSAqIHRjMzU4NzY4IHN1cHBvcnRzIGJvdGggVmlkZW8gYW5kIFB1bHNlIG1vZGUsIGJ1dCB0 aGUgZHJpdmVyIG9ubHkKPj4+ICsJICogaW1wbGVtZW50cyBWaWRlbyAoZXZlbnQpIG1vZGUgY3Vy cmVudGx5Cj4+PiArCSAqLwo+Pj4gKwlpZiAoIShkZXYtPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9N T0RFX1ZJREVPKSkgewo+Pj4gKwkJZGV2X2Vycihwcml2LT5kZXYsICJPbmx5IE1JUElfRFNJX01P REVfVklERU8gaXMgc3VwcG9ydGVkXG4iKTsKPj4+ICsJCXJldHVybiAtRU5PVFNVUFA7Cj4+PiAr CX0KPj4+ICsKPj4+ICsJLyoKPj4+ICsJICogdGMzNTg3Njggc3VwcG9ydHMgUkdCODg4LCBSR0I2 NjYsIFJHQjY2Nl9QQUNLRUQgYW5kIFJHQjU2NSwgYnV0IG9ubHkKPj4+ICsJICogUkdCODg4IGlz IHZlcmlmaWVkLgo+Pj4gKwkgKi8KPj4+ICsJaWYgKGRldi0+Zm9ybWF0ICE9IE1JUElfRFNJX0ZN VF9SR0I4ODgpIHsKPj4+ICsJCWRldl93YXJuKHByaXYtPmRldiwgIk9ubHkgTUlQSV9EU0lfRk1U X1JHQjg4OCB0ZXN0ZWQhXG4iKTsKPj4+ICsJCXJldHVybiAtRU5PVFNVUFA7Cj4+PiArCX0KPj4+ ICsKPj4+ICsJcmV0ID0gZHJtX29mX2ZpbmRfcGFuZWxfb3JfYnJpZGdlKGhvc3QtPmRldi0+b2Zf bm9kZSwgMSwgMCwgJnBhbmVsLAo+Pj4gKwkJCQkJICAmYnJpZGdlKTsKPj4+ICsJaWYgKHJldCkK Pj4+ICsJCXJldHVybiByZXQ7Cj4+PiArCj4+PiArCWlmIChwYW5lbCkgewo+Pj4gKwkJYnJpZGdl ID0gZHJtX3BhbmVsX2JyaWRnZV9hZGRfdHlwZWQocGFuZWwsCj4+PiArCQkJCQkJICAgIERSTV9N T0RFX0NPTk5FQ1RPUl9EU0kpOwo+Pj4gKwkJaWYgKElTX0VSUihicmlkZ2UpKQo+Pj4gKwkJCXJl dHVybiBQVFJfRVJSKGJyaWRnZSk7Cj4+PiArCX0KPj4+ICsKPj4+ICsJcHJpdi0+b3V0cHV0LmRl diA9IGRldjsKPj4+ICsJcHJpdi0+b3V0cHV0LmJyaWRnZSA9IGJyaWRnZTsKPj4+ICsJcHJpdi0+ b3V0cHV0LnBhbmVsID0gcGFuZWw7Cj4+PiArCj4+PiArCXByaXYtPmRzaV9sYW5lcyA9IGRldi0+ bGFuZXM7Cj4+PiArCj4+PiArCS8qIGdldCBpbnB1dCBlcCAocG9ydDAvZW5kcG9pbnQwKSAqLwo+ Pj4gKwlyZXQgPSAtRUlOVkFMOwo+Pj4gKwllcCA9IG9mX2dyYXBoX2dldF9lbmRwb2ludF9ieV9y ZWdzKGhvc3QtPmRldi0+b2Zfbm9kZSwgMCwgMCk7Cj4+PiArCWlmIChlcCkgewo+Pj4gKwkJcmV0 ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZXAsICJkYXRhLWxpbmVzIiwgJnByaXYtPnBkX2xpbmVz KTsKPj4+ICsKPj4+ICsJCW9mX25vZGVfcHV0KGVwKTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlpZiAo cmV0KQo+Pj4gKwkJcHJpdi0+cGRfbGluZXMgPSBtaXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBw KGRldi0+Zm9ybWF0KTsKPj4+ICsKPj4+ICsJZHJtX2JyaWRnZV9hZGQoJnByaXYtPmJyaWRnZSk7 Cj4+PiArCj4+PiArCXJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IHRjMzU4 NzY4X2RzaV9ob3N0X2RldGFjaChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPj4+ICsJCQkJ ICAgIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRldikKPj4+ICt7Cj4+PiArCXN0cnVjdCB0YzM1 ODc2OF9wcml2ICpwcml2ID0gZHNpX2hvc3RfdG9fdGMzNTg3NjgoaG9zdCk7Cj4+PiArCj4+PiAr CWRybV9icmlkZ2VfcmVtb3ZlKCZwcml2LT5icmlkZ2UpOwo+Pj4gKwlpZiAocHJpdi0+b3V0cHV0 LnBhbmVsKQo+Pj4gKwkJZHJtX3BhbmVsX2JyaWRnZV9yZW1vdmUocHJpdi0+b3V0cHV0LmJyaWRn ZSk7Cj4+PiArCj4+PiArCXJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgc3NpemVf dCB0YzM1ODc2OF9kc2lfaG9zdF90cmFuc2ZlcihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwK Pj4+ICsJCQkJCSAgY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQo+Pj4gK3sKPj4+ICsJ c3RydWN0IHRjMzU4NzY4X3ByaXYgKnByaXYgPSBkc2lfaG9zdF90b190YzM1ODc2OChob3N0KTsK Pj4+ICsJc3RydWN0IG1pcGlfZHNpX3BhY2tldCBwYWNrZXQ7Cj4+PiArCWludCByZXQ7Cj4+PiAr Cj4+PiArCWlmIChtc2ctPnJ4X2xlbikgewo+Pj4gKwkJZGV2X3dhcm4ocHJpdi0+ZGV2LCAiTUlQ SSByeCBpcyBub3Qgc3VwcG9ydGVkXG4iKTsKPj4+ICsJCXJldHVybiAtRU5PVFNVUFA7Cj4+PiAr CX0KPj4+ICsKPj4+ICsJaWYgKG1zZy0+dHhfbGVuID4gOCkgewo+Pj4gKwkJZGV2X3dhcm4ocHJp di0+ZGV2LCAiTWF4aW11bSA4IGJ5dGUgTUlQSSB0eCBpcyBzdXBwb3J0ZWRcbiIpOwo+Pj4gKwkJ cmV0dXJuIC1FTk9UU1VQUDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXQgPSBtaXBpX2RzaV9jcmVh dGVfcGFja2V0KCZwYWNrZXQsIG1zZyk7Cj4+PiArCWlmIChyZXQpCj4+PiArCQlyZXR1cm4gcmV0 Owo+Pj4gKwo+Pj4gKwl0YzM1ODc2OF9od19lbmFibGUocHJpdiwgdHJ1ZSk7Cj4+PiArCj4+PiAr CWlmIChtaXBpX2RzaV9wYWNrZXRfZm9ybWF0X2lzX3Nob3J0KG1zZy0+dHlwZSkpIHsKPj4+ICsJ CXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X0RTSUNNRF9UWVBFLAo+Pj4gKwkJCSAgICAg ICAoMHgxMCA8PCA4KSB8IChwYWNrZXQuaGVhZGVyWzBdICYgMHgzZikpOwo+Pj4gKwkJdGMzNTg3 Njhfd3JpdGUocHJpdiwgVEMzNTg3NjhfRFNJQ01EX1dDLCAwKTsKPj4+ICsJCXRjMzU4NzY4X3dy aXRlKHByaXYsIFRDMzU4NzY4X0RTSUNNRF9XRDAsCj4+PiArCQkJICAgICAgIChwYWNrZXQuaGVh ZGVyWzJdIDw8IDgpIHwgcGFja2V0LmhlYWRlclsxXSk7Cj4+PiArCX0gZWxzZSB7Cj4+PiArCQlp bnQgaSwgajsKPj4+ICsKPj4+ICsJCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X0RTSUNN RF9UWVBFLAo+Pj4gKwkJCSAgICAgICAoMHg0MCA8PCA4KSB8IChwYWNrZXQuaGVhZGVyWzBdICYg MHgzZikpOwo+Pj4gKwkJdGMzNTg3Njhfd3JpdGUocHJpdiwgVEMzNTg3NjhfRFNJQ01EX1dDLCBw YWNrZXQucGF5bG9hZF9sZW5ndGgpOwo+Pj4gKwkJZm9yIChpID0gMDsgaSA8IHBhY2tldC5wYXls b2FkX2xlbmd0aDsgaSArPSAyKSB7Cj4+PiArCQkJdTE2IHZhbCA9IDA7Cj4+PiArCj4+PiArCQkJ Zm9yIChqID0gMDsgaiA8IDIgJiYgaSArIGogPCBwYWNrZXQucGF5bG9hZF9sZW5ndGg7IGorKykK Pj4+ICsJCQkJdmFsIHw9IHBhY2tldC5wYXlsb2FkW2kgKyBqXSA8PCAoOCAqIGopOwo+Pj4gKwo+ Pgo+PiBRdWl0ZSBjbGV2ZXIsIGJ1dCBiYXJlbHkgcmVhZGFibGUsIG1heWJlOgo+Pgo+PiB1MTYg dmFsID0gcGFja2V0LnBheWxvYWRbaV07Cj4+Cj4+IGlmIChpICsgMSA8IHBhY2tldC5wYXlsb2Fk X2xlbmd0aCkKPj4KPj4gwqAgdmFsIHw9IHBhY2tldC5wYXlsb2FkW2kgKyAxXSA8PCA4Owo+IHll cywgbG9va3Mgc2ltcGxlci4KPgo+Pgo+Pj4gKwkJCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4 NzY4X0RTSUNNRF9XRDAgKyBpLCB2YWwpOwo+Pj4gKwkJfQo+Pj4gKwl9Cj4+PiArCj4+PiArCS8q IHN0YXJ0IHRyYW5zZmVyICovCj4+PiArCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X0RT SUNNRF9UWCwgMSk7Cj4+PiArCj4+PiArCXRjMzU4NzY4X2h3X2VuYWJsZShwcml2LCBmYWxzZSk7 Cj4+PiArCj4+PiArCXJldHVybiAwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG1pcGlfZHNpX2hvc3Rfb3BzIHRjMzU4NzY4X2RzaV9ob3N0X29wcyA9IHsKPj4+ICsJLmF0 dGFjaCA9IHRjMzU4NzY4X2RzaV9ob3N0X2F0dGFjaCwKPj4+ICsJLmRldGFjaCA9IHRjMzU4NzY4 X2RzaV9ob3N0X2RldGFjaCwKPj4+ICsJLnRyYW5zZmVyID0gdGMzNTg3NjhfZHNpX2hvc3RfdHJh bnNmZXIsCj4+PiArfTsKPj4+ICsKPj4+ICtzdGF0aWMgaW50IHRjMzU4NzY4X2JyaWRnZV9hdHRh Y2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPj4+ICt7Cj4+PiArCXN0cnVjdCB0YzM1ODc2 OF9wcml2ICpwcml2ID0gYnJpZGdlX3RvX3RjMzU4NzY4KGJyaWRnZSk7Cj4+PiArCj4+PiArCWlm ICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShicmlkZ2UtPmRldiwgRFJJVkVSX0FUT01JQykpIHsK Pj4+ICsJCWRldl9lcnIocHJpdi0+ZGV2LCAibmVlZHMgYXRvbWljIHVwZGF0ZXMgc3VwcG9ydFxu Iik7Cj4+PiArCQlyZXR1cm4gLUVOT1RTVVBQOwo+Pj4gKwl9Cj4+PiArCj4+PiArCXJldHVybiBk cm1fYnJpZGdlX2F0dGFjaChicmlkZ2UtPmVuY29kZXIsIHByaXYtPm91dHB1dC5icmlkZ2UsIGJy aWRnZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cwo+Pj4g K3RjMzU4NzY4X2JyaWRnZV9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4+ PiArCQkJICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4+PiArewo+Pj4g KwlzdHJ1Y3QgdGMzNTg3NjhfcHJpdiAqcHJpdiA9IGJyaWRnZV90b190YzM1ODc2OChicmlkZ2Up Owo+Pj4gKwo+Pj4gKwlwcml2LT5tb2RlID0gbW9kZTsKPj4KPj4gVGhpcyBpcyBkYW5nZXJvdXMs IHlvdSBzaG91bGQgYXNzdW1lIG1vZGUgcG9pbnRlciBwcm92aWRlZCBpbiB0aGlzCj4+IGNhbGxi YWNrIGlzIHZhbGlkIG9ubHkgdGlsbCBlbmQgb2YgZnVuY3Rpb24uCj4+Cj4+IElmIHlvdSBuZWVk IG1vZGUgbGF0ZXIgeW91IGNhbiB1c2UgdGhpcyB1Z2x5IHBvaW50ZXI6Cj4+Cj4+IHByaXYtPmJy aWRnZS5lbmNvZGVyLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZQo+Pgo+PiBvciBhbHRlcm5h dGl2ZWx5IGNvcHkgbW9kZSB0byBwcml2IChhbHNvIHVnbHksIGJ1dCBhdCBsZWFzdCBubyBkYW5n bGluZwo+PiBwb2ludGVycykuCj4gT0ssIEknbGwgc2VlIGhvdyBpdCBjYW4gYmUgcmV3b3JrZWQu Cj4KPj4KPj4KPj4+ICsKPj4+ICsJaWYgKHRjMzU4NzY4X2NhbGNfcGxsKHByaXYpKQo+Pj4gKwkJ cmV0dXJuIE1PREVfQ0xPQ0tfUkFOR0U7Cj4+IHRjMzU4NzY4X2NhbGNfcGxsIG1vZGlmaWVzIHN0 YXRlLCBtb2RlX3ZhbGlkIGNhbGxiYWNrIHNob3VsZG4ndCBkbyBpdC4KPj4KPj4KPj4gUmVnYXJk cwo+Pgo+PiBBbmRyemVqCj4gVGhhbmsgeW91IGZvciB0aGUgcmV2aWV3LAo+IC0gUMOpdGVyCj4K Pj4+ICsKPj4+ICsJcmV0dXJuIE1PREVfT0s7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lk IHRjMzU4NzY4X2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+PiAr ewo+Pj4gKwlzdHJ1Y3QgdGMzNTg3NjhfcHJpdiAqcHJpdiA9IGJyaWRnZV90b190YzM1ODc2OChi cmlkZ2UpOwo+Pj4gKwo+Pj4gKwkvKiBzZXQgRnJtU3RvcCAqLwo+Pj4gKwl0YzM1ODc2OF91cGRh dGVfYml0cyhwcml2LCBUQzM1ODc2OF9QUF9NSVNDLCBCSVQoMTUpLCBCSVQoMTUpKTsKPj4+ICsK Pj4+ICsJLyogd2FpdCBhdCBsZWFzdCBmb3Igb25lIGZyYW1lICovCj4+PiArCW1zbGVlcCg1MCk7 Cj4+PiArCj4+PiArCS8qIGNsZWFyIFBQX2VuICovCj4+PiArCXRjMzU4NzY4X3VwZGF0ZV9iaXRz KHByaXYsIFRDMzU4NzY4X0NPTkZDVEwsIEJJVCg2KSwgMCk7Cj4+PiArCj4+PiArCS8qIHNldCBS c3RQdHIgKi8KPj4+ICsJdGMzNTg3NjhfdXBkYXRlX2JpdHMocHJpdiwgVEMzNTg3NjhfUFBfTUlT QywgQklUKDE0KSwgQklUKDE0KSk7Cj4+PiArCj4+PiArCXRjMzU4NzY4X2h3X2VuYWJsZShwcml2 LCBmYWxzZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHRjMzU4NzY4X3NldHVwX3Bs bChzdHJ1Y3QgdGMzNTg3NjhfcHJpdiAqcHJpdikKPj4+ICt7Cj4+PiArCXUzMiBmYmQsIHByZCwg ZnJzOwo+Pj4gKwo+Pj4gKwlmYmQgPSBwcml2LT5mYmQ7Cj4+PiArCXByZCA9IHByaXYtPnByZDsK Pj4+ICsJZnJzID0gcHJpdi0+ZnJzOwo+Pj4gKwo+Pj4gKwlkZXZfZGJnKHByaXYtPmRldiwgIlBM TDogcmVmY2xrICVsdSwgZmJkICV1LCBwcmQgJXUsIGZycyAldVxuIiwKPj4+ICsJCWNsa19nZXRf cmF0ZShwcml2LT5yZWZjbGspLCBmYmQsIHByZCwgZnJzKTsKPj4+ICsJZGV2X2RiZyhwcml2LT5k ZXYsICJQTEw6IHBsbF9jbGs6ICV1LCBEU0lDbGsgJXUsIERTSUJ5dGVDbGsgJXVcbiIsCj4+PiAr CQlwcml2LT5kc2ljbGsgKiAyLCBwcml2LT5kc2ljbGssIHByaXYtPmRzaWNsayAvIDQpOwo+Pj4g KwlkZXZfZGJnKHByaXYtPmRldiwgIlBMTDogcGNsayAldSAocGFuZWw6ICV1KVxuIiwKPj4+ICsJ CXRjMzU4NzY4X3BsbF90b19wY2xrKHByaXYsIHByaXYtPmRzaWNsayAqIDIpLAo+Pj4gKwkJcHJp di0+bW9kZS0+Y2xvY2sgKiAxMDAwKTsKPj4+ICsKPj4+ICsJLyogUFJEWzE1OjEyXSBGQkRbODow XSAqLwo+Pj4gKwl0YzM1ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9QTExDVEwwLCAocHJkIDw8 IDEyKSB8IGZiZCk7Cj4+PiArCj4+PiArCS8qIEZSU1sxMToxMF0gTEJXU1s5OjhdIENLRU5bNF0g UkVTRVRCWzFdIEVOWzBdICovCj4+PiArCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X1BM TENUTDEsCj4+PiArCQkgICAgICAgKGZycyA8PCAxMCkgfCAoMHgyIDw8IDgpIHwgQklUKDEpIHwg QklUKDApKTsKPj4+ICsKPj4+ICsJLyogd2FpdCBmb3IgbG9jayAqLwo+Pj4gKwl1c2xlZXBfcmFu Z2UoMTAwMCwgMjAwMCk7Cj4+PiArCj4+PiArCS8qIEZSU1sxMToxMF0gTEJXU1s5OjhdIENLRU5b NF0gUExMX0NLRU5bNF0gUkVTRVRCWzFdIEVOWzBdICovCj4+PiArCXRjMzU4NzY4X3dyaXRlKHBy aXYsIFRDMzU4NzY4X1BMTENUTDEsCj4+PiArCQkgICAgICAgKGZycyA8PCAxMCkgfCAoMHgyIDw8 IDgpIHwgQklUKDQpIHwgQklUKDEpIHwgQklUKDApKTsKPj4+ICt9Cj4+PiArCj4+PiArI2RlZmlu ZSBUQzM1ODc2OF9QUkVDSVNJT04JMTAwMAo+Pj4gK3N0YXRpYyB1MzIgdGMzNTg3NjhfbnNfdG9f Y250KHUzMiBucywgdTMyIHBlcmlvZF9uc2spCj4+PiArewo+Pj4gKwlyZXR1cm4gKG5zICogVEMz NTg3NjhfUFJFQ0lTSU9OICsgcGVyaW9kX25zaykgLyBwZXJpb2RfbnNrOwo+Pj4gK30KPj4+ICsK Pj4+ICtzdGF0aWMgdTMyIHRjMzU4NzY4X3RvX25zKHUzMiBuc2spCj4+PiArewo+Pj4gKwlyZXR1 cm4gKG5zayAvIFRDMzU4NzY4X1BSRUNJU0lPTik7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2 b2lkIHRjMzU4NzY4X2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPj4+ ICt7Cj4+PiArCXN0cnVjdCB0YzM1ODc2OF9wcml2ICpwcml2ID0gYnJpZGdlX3RvX3RjMzU4NzY4 KGJyaWRnZSk7Cj4+PiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gcHJp di0+bW9kZTsKPj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpX2RldiA9IHByaXYtPm91 dHB1dC5kZXY7Cj4+PiArCXUzMiB2YWwsIHZhbDIsIGxwdHhjbnQsIGhhY3QsIGRhdGFfdHlwZTsK Pj4+ICsJdTMyIGRzaWNsayA9IHByaXYtPmRzaWNsazsKPj4+ICsJdTMyIGRzaWJjbGsgPSBkc2lj bGsgLyA0Owo+Pj4gKwl1MzIgZHNpYmNsa19uc2ssIGRzaWNsa19uc2ssIHVpX25zaywgcGh5X2Rl bGF5X25zazsKPj4+ICsJaW50IGk7Cj4+PiArCj4+PiArCXRjMzU4NzY4X2h3X2VuYWJsZShwcml2 LCB0cnVlKTsKPj4+ICsKPj4+ICsJdGMzNTg3Njhfc3dfcmVzZXQocHJpdik7Cj4+PiArCj4+PiAr CXRjMzU4NzY4X3NldHVwX3BsbChwcml2KTsKPj4+ICsKPj4+ICsJLyogVlNEbHlbOTowXSAqLwo+ Pj4gKwl0YzM1ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9WU0RMWSwgMSk7Cj4+PiArCj4+PiAr CS8qIERhdGEgRm9ybWF0IENvbnRyb2wgUmVnaXN0ZXIgKi8KPj4+ICsJdmFsID0gQklUKDIpIHwg QklUKDEpIHwgQklUKDApOyAvKiByZHN3YXBfZW4gfCBkc2l0eF9lbiB8IHR4ZHRfZW4gKi8KPj4+ ICsJc3dpdGNoIChkc2lfZGV2LT5mb3JtYXQpIHsKPj4+ICsJY2FzZSBNSVBJX0RTSV9GTVRfUkdC ODg4Ogo+Pj4gKwkJdmFsIHw9ICgweDMgPDwgNCk7Cj4+PiArCQloYWN0ID0gbW9kZS0+aGRpc3Bs YXkgKiAzOwo+Pj4gKwkJZGF0YV90eXBlID0gTUlQSV9EU0lfUEFDS0VEX1BJWEVMX1NUUkVBTV8y NDsKPj4+ICsJCWJyZWFrOwo+Pj4gKwljYXNlIE1JUElfRFNJX0ZNVF9SR0I2NjY6Cj4+PiArCQl2 YWwgfD0gKDB4NCA8PCA0KTsKPj4+ICsJCWhhY3QgPSBtb2RlLT5oZGlzcGxheSAqIDM7Cj4+PiAr CQlkYXRhX3R5cGUgPSBNSVBJX0RTSV9QQUNLRURfUElYRUxfU1RSRUFNXzE4Owo+Pj4gKwkJYnJl YWs7Cj4+PiArCj4+PiArCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjY2Nl9QQUNLRUQ6Cj4+PiArCQl2 YWwgfD0gKDB4NCA8PCA0KSB8IEJJVCgzKTsKPj4+ICsJCWhhY3QgPSBtb2RlLT5oZGlzcGxheSAq IDE4IC8gODsKPj4+ICsJCWRhdGFfdHlwZSA9IE1JUElfRFNJX1BJWEVMX1NUUkVBTV8zQllURV8x ODsKPj4+ICsJCWJyZWFrOwo+Pj4gKwo+Pj4gKwljYXNlIE1JUElfRFNJX0ZNVF9SR0I1NjU6Cj4+ PiArCQl2YWwgfD0gKDB4NSA8PCA0KTsKPj4+ICsJCWhhY3QgPSBtb2RlLT5oZGlzcGxheSAqIDI7 Cj4+PiArCQlkYXRhX3R5cGUgPSBNSVBJX0RTSV9QQUNLRURfUElYRUxfU1RSRUFNXzE2Owo+Pj4g KwkJYnJlYWs7Cj4+PiArCWRlZmF1bHQ6Cj4+PiArCQlkZXZfZXJyKHByaXYtPmRldiwgIkludmFs aWQgZGF0YSBmb3JtYXQgKCV1KVxuIiwKPj4+ICsJCQlkc2lfZGV2LT5mb3JtYXQpOwo+Pj4gKwkJ cmV0dXJuOwo+Pj4gKwl9Cj4+PiArCj4+PiArCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4 X0RBVEFGTVQsIHZhbCk7Cj4+PiArCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X0RTSVRY X0RULCBkYXRhX3R5cGUpOwo+Pj4gKwo+Pj4gKwkvKiBFbmFibGUgRC1QSFkgKEhpWi0+TFAxMSkg Ki8KPj4+ICsJdGMzNTg3Njhfd3JpdGUocHJpdiwgVEMzNTg3NjhfQ0xXX0NOVFJMLCAweDAwMDAp Owo+Pj4gKwkvKiBFbmFibGUgbGFuZXMgKi8KPj4+ICsJZm9yIChpID0gMDsgaSA8IGRzaV9kZXYt PmxhbmVzOyBpKyspCj4+PiArCQl0YzM1ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9EMFdfQ05U UkwgKyBpICogNCwgMHgwMDAwKTsKPj4+ICsKPj4+ICsJLyogRFNJIFRpbWluZ3MgKi8KPj4+ICsJ ZHNpYmNsa19uc2sgPSAodTMyKWRpdl91NjQoKHU2NCkxMDAwMDAwMDAwICogVEMzNTg3NjhfUFJF Q0lTSU9OLAo+Pj4gKwkJCQkgIGRzaWJjbGspOwo+Pj4gKwlkc2ljbGtfbnNrID0gKHUzMilkaXZf dTY0KCh1NjQpMTAwMDAwMDAwMCAqIFRDMzU4NzY4X1BSRUNJU0lPTiwgZHNpY2xrKTsKPj4+ICsJ dWlfbnNrID0gZHNpY2xrX25zayAvIDI7Cj4+PiArCXBoeV9kZWxheV9uc2sgPSBkc2liY2xrX25z ayArIDIgKiBkc2ljbGtfbnNrOwo+Pj4gKwlkZXZfZGJnKHByaXYtPmRldiwgImRzaWNsa19uc2s6 ICV1XG4iLCBkc2ljbGtfbnNrKTsKPj4+ICsJZGV2X2RiZyhwcml2LT5kZXYsICJ1aV9uc2s6ICV1 XG4iLCB1aV9uc2spOwo+Pj4gKwlkZXZfZGJnKHByaXYtPmRldiwgImRzaWJjbGtfbnNrOiAldVxu IiwgZHNpYmNsa19uc2spOwo+Pj4gKwlkZXZfZGJnKHByaXYtPmRldiwgInBoeV9kZWxheV9uc2s6 ICV1XG4iLCBwaHlfZGVsYXlfbnNrKTsKPj4+ICsKPj4+ICsJLyogTFAxMSA+IDEwMHVzIGZvciBE LVBIWSBSeCBJbml0ICovCj4+PiArCXZhbCA9IHRjMzU4NzY4X25zX3RvX2NudCgxMDAgKiAxMDAw LCBkc2liY2xrX25zaykgLSAxOwo+Pj4gKwlkZXZfZGJnKHByaXYtPmRldiwgIkxJTkVJTklUQ05U OiAweCV4XG4iLCB2YWwpOwo+Pj4gKwl0YzM1ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9MSU5F SU5JVENOVCwgdmFsKTsKPj4+ICsKPj4+ICsJLyogTFBUaW1lQ250ID4gNTBucyAqLwo+Pj4gKwl2 YWwgPSB0YzM1ODc2OF9uc190b19jbnQoNTAsIGRzaWJjbGtfbnNrKSAtIDE7Cj4+PiArCWxwdHhj bnQgPSB2YWw7Cj4+PiArCWRldl9kYmcocHJpdi0+ZGV2LCAiTFBUWFRJTUVDTlQ6IDB4JXhcbiIs IHZhbCk7Cj4+PiArCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X0xQVFhUSU1FQ05ULCB2 YWwpOwo+Pj4gKwo+Pj4gKwkvKiAzOG5zIDwgVENMS19QUkVQQVJFIDwgOTVucyAqLwo+Pj4gKwl2 YWwgPSB0YzM1ODc2OF9uc190b19jbnQoNjUsIGRzaWJjbGtfbnNrKSAtIDE7Cj4+PiArCS8qIFRD TEtfUFJFUEFSRSA+IDMwMG5zICovCj4+PiArCXZhbDIgPSB0YzM1ODc2OF9uc190b19jbnQoMzAw ICsgdGMzNTg3NjhfdG9fbnMoMyAqIHVpX25zayksCj4+PiArCQkJCSAgZHNpYmNsa19uc2spOwo+ Pj4gKwl2YWwgfD0gKHZhbDIgLSB0YzM1ODc2OF90b19ucyhwaHlfZGVsYXlfbnNrIC0gZHNpYmNs a19uc2spKSA8PCA4Owo+Pj4gKwlkZXZfZGJnKHByaXYtPmRldiwgIlRDTEtfSEVBREVSQ05UOiAw eCV4XG4iLCB2YWwpOwo+Pj4gKwl0YzM1ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9UQ0xLX0hF QURFUkNOVCwgdmFsKTsKPj4+ICsKPj4+ICsJLyogVENMS19UUkFJTCA+IDYwbnMgKyAzKlVJICov Cj4+PiArCXZhbCA9IDYwICsgdGMzNTg3NjhfdG9fbnMoMyAqIHVpX25zayk7Cj4+PiArCXZhbCA9 IHRjMzU4NzY4X25zX3RvX2NudCh2YWwsIGRzaWJjbGtfbnNrKSAtIDU7Cj4+PiArCWRldl9kYmco cHJpdi0+ZGV2LCAiVENMS19UUkFJTENOVDogMHgleFxuIiwgdmFsKTsKPj4+ICsJdGMzNTg3Njhf d3JpdGUocHJpdiwgVEMzNTg3NjhfVENMS19UUkFJTENOVCwgdmFsKTsKPj4+ICsKPj4+ICsJLyog NDBucyArIDQqVUkgPCBUSFNfUFJFUEFSRSA8IDg1bnMgKyA2KlVJICovCj4+PiArCXZhbCA9IDUw ICsgdGMzNTg3NjhfdG9fbnMoNCAqIHVpX25zayk7Cj4+PiArCXZhbCA9IHRjMzU4NzY4X25zX3Rv X2NudCh2YWwsIGRzaWJjbGtfbnNrKSAtIDE7Cj4+PiArCS8qIFRIU19aRVJPID4gMTQ1bnMgKyAx MCpVSSAqLwo+Pj4gKwl2YWwyID0gdGMzNTg3NjhfbnNfdG9fY250KDE0NSAtIHRjMzU4NzY4X3Rv X25zKHVpX25zayksIGRzaWJjbGtfbnNrKTsKPj4+ICsJdmFsIHw9ICh2YWwyIC0gdGMzNTg3Njhf dG9fbnMocGh5X2RlbGF5X25zaykpIDw8IDg7Cj4+PiArCWRldl9kYmcocHJpdi0+ZGV2LCAiVEhT X0hFQURFUkNOVDogMHgleFxuIiwgdmFsKTsKPj4+ICsJdGMzNTg3Njhfd3JpdGUocHJpdiwgVEMz NTg3NjhfVEhTX0hFQURFUkNOVCwgdmFsKTsKPj4+ICsKPj4+ICsJLyogVFdBS0VVUCA+IDFtcyBp biBscHR4Y250IHN0ZXBzICovCj4+PiArCXZhbCA9IHRjMzU4NzY4X25zX3RvX2NudCgxMDIwMDAw LCBkc2liY2xrX25zayk7Cj4+PiArCXZhbCA9IHZhbCAvIChscHR4Y250ICsgMSkgLSAxOwo+Pj4g KwlkZXZfZGJnKHByaXYtPmRldiwgIlRXQUtFVVA6IDB4JXhcbiIsIHZhbCk7Cj4+PiArCXRjMzU4 NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X1RXQUtFVVAsIHZhbCk7Cj4+PiArCj4+PiArCS8qIFRD TEtfUE9TVENOVCA+IDYwbnMgKyA1MipVSSAqLwo+Pj4gKwl2YWwgPSB0YzM1ODc2OF9uc190b19j bnQoNjAgKyB0YzM1ODc2OF90b19ucyg1MiAqIHVpX25zayksCj4+PiArCQkJCSBkc2liY2xrX25z aykgLSAzOwo+Pj4gKwlkZXZfZGJnKHByaXYtPmRldiwgIlRDTEtfUE9TVENOVDogMHgleFxuIiwg dmFsKTsKPj4+ICsJdGMzNTg3Njhfd3JpdGUocHJpdiwgVEMzNTg3NjhfVENMS19QT1NUQ05ULCB2 YWwpOwo+Pj4gKwo+Pj4gKwkvKiA2MG5zICsgNCpVSSA8IFRIU19QUkVQQVJFIDwgMTA1bnMgKyAx MipVSSAqLwo+Pj4gKwl2YWwgPSB0YzM1ODc2OF9uc190b19jbnQoNjAgKyB0YzM1ODc2OF90b19u cygxNSAqIHVpX25zayksCj4+PiArCQkJCSBkc2liY2xrX25zaykgLSA1Owo+Pj4gKwlkZXZfZGJn KHByaXYtPmRldiwgIlRIU19UUkFJTENOVDogMHgleFxuIiwgdmFsKTsKPj4+ICsJdGMzNTg3Njhf d3JpdGUocHJpdiwgVEMzNTg3NjhfVEhTX1RSQUlMQ05ULCB2YWwpOwo+Pj4gKwo+Pj4gKwl2YWwg PSBCSVQoMCk7Cj4+PiArCWZvciAoaSA9IDA7IGkgPCBkc2lfZGV2LT5sYW5lczsgaSsrKQo+Pj4g KwkJdmFsIHw9IEJJVChpICsgMSk7Cj4+PiArCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4 X0hTVFhWUkVHRU4sIHZhbCk7Cj4+PiArCj4+PiArCWlmICghKGRzaV9kZXYtPm1vZGVfZmxhZ3Mg JiBNSVBJX0RTSV9DTE9DS19OT05fQ09OVElOVU9VUykpCj4+PiArCQl0YzM1ODc2OF93cml0ZShw cml2LCBUQzM1ODc2OF9UWE9QVElPTkNOVFJMLCAweDEpOwo+Pj4gKwo+Pj4gKwkvKiBUWFRBR09D TlRbMjY6MTZdIFJYVEFTVVJFQ05UWzEwOjBdICovCj4+PiArCXZhbCA9IHRjMzU4NzY4X3RvX25z KChscHR4Y250ICsgMSkgKiBkc2liY2xrX25zayAqIDQpOwo+Pj4gKwl2YWwgPSB0YzM1ODc2OF9u c190b19jbnQodmFsLCBkc2liY2xrX25zaykgLSAxOwo+Pj4gKwl2YWwyID0gdGMzNTg3NjhfbnNf dG9fY250KHRjMzU4NzY4X3RvX25zKChscHR4Y250ICsgMSkgKiBkc2liY2xrX25zayksCj4+PiAr CQkJCSAgZHNpYmNsa19uc2spIC0gMjsKPj4+ICsJdmFsIHw9IHZhbDIgPDwgMTY7Cj4+PiArCWRl dl9kYmcocHJpdi0+ZGV2LCAiQlRBQ05UUkwxOiAweCV4XG4iLCB2YWwpOwo+Pj4gKwl0YzM1ODc2 OF93cml0ZShwcml2LCBUQzM1ODc2OF9CVEFDTlRSTDEsIHZhbCk7Cj4+PiArCj4+PiArCS8qIFNU QVJUWzBdICovCj4+PiArCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X1NUQVJUQ05UUkws IDEpOwo+Pj4gKwo+Pj4gKwkvKiBTZXQgZXZlbnQgbW9kZSAqLwo+Pj4gKwl0YzM1ODc2OF93cml0 ZShwcml2LCBUQzM1ODc2OF9EU0lfRVZFTlQsIDEpOwo+Pj4gKwo+Pj4gKwkvKiB2c3cgKCsgdmJw KSAqLwo+Pj4gKwl0YzM1ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9EU0lfVlNXLAo+Pj4gKwkJ ICAgICAgIG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZzeW5jX3N0YXJ0KTsKPj4+ICsJLyogdmJwIChu b3QgdXNlZCBpbiBldmVudCBtb2RlKSAqLwo+Pj4gKwl0YzM1ODc2OF93cml0ZShwcml2LCBUQzM1 ODc2OF9EU0lfVkJQUiwgMCk7Cj4+PiArCS8qIHZhY3QgKi8KPj4+ICsJdGMzNTg3Njhfd3JpdGUo cHJpdiwgVEMzNTg3NjhfRFNJX1ZBQ1QsIG1vZGUtPnZkaXNwbGF5KTsKPj4+ICsKPj4+ICsJLyog KGhzdyArIGhicCkgKiBieXRlY2xrICogbmRsIC8gcGNsayAqLwo+Pj4gKwl2YWwgPSAodTMyKWRp dl91NjQoKG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX3N0YXJ0KSAqCj4+PiArCQkJICAgKCh1 NjQpcHJpdi0+ZHNpY2xrIC8gNCkgKiBwcml2LT5kc2lfbGFuZXMsCj4+PiArCQkJICAgbW9kZS0+ Y2xvY2sgKiAxMDAwKTsKPj4+ICsJdGMzNTg3Njhfd3JpdGUocHJpdiwgVEMzNTg3NjhfRFNJX0hT VywgdmFsKTsKPj4+ICsJLyogaGJwIChub3QgdXNlZCBpbiBldmVudCBtb2RlKSAqLwo+Pj4gKwl0 YzM1ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9EU0lfSEJQUiwgMCk7Cj4+PiArCS8qIGhhY3Qg KGJ5dGVzKSAqLwo+Pj4gKwl0YzM1ODc2OF93cml0ZShwcml2LCBUQzM1ODc2OF9EU0lfSEFDVCwg aGFjdCk7Cj4+PiArCj4+PiArCS8qIFZTWU5DIHBvbGFyaXR5ICovCj4+PiArCWlmICghKG1vZGUt PmZsYWdzICYgRFJNX01PREVfRkxBR19OVlNZTkMpKQo+Pj4gKwkJdGMzNTg3NjhfdXBkYXRlX2Jp dHMocHJpdiwgVEMzNTg3NjhfQ09ORkNUTCwgQklUKDUpLCBCSVQoNSkpOwo+Pj4gKwkvKiBIU1lO QyBwb2xhcml0eSAqLwo+Pj4gKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lO QykKPj4+ICsJCXRjMzU4NzY4X3VwZGF0ZV9iaXRzKHByaXYsIFRDMzU4NzY4X1BQX01JU0MsIEJJ VCgwKSwgQklUKDApKTsKPj4+ICsKPj4+ICsJLyogU3RhcnQgRFNJIFR4ICovCj4+PiArCXRjMzU4 NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4X0RTSV9TVEFSVCwgMHgxKTsKPj4+ICsKPj4+ICsJLyog Q29uZmlndXJlIERTSV9Db250cm9sIHJlZ2lzdGVyICovCj4+PiArCXZhbCA9ICg2IDw8IDI5KSB8 ICgweDMgPDwgMjQpOyAvKiBDTEVBUiwgRFNJX0NvbnRyb2wgKi8KPj4+ICsJdmFsIHw9IEJJVCg3 KSB8IEJJVCg1KSB8IDB4MyA8PCAxIHwgQklUKDApOwo+Pj4gKwl0YzM1ODc2OF93cml0ZShwcml2 LCBUQzM1ODc2OF9EU0lfQ09ORlcsIHZhbCk7Cj4+PiArCj4+PiArCXZhbCA9ICg1IDw8IDI5KSB8 ICgweDMgPDwgMjQpOyAvKiBTRVQsIERTSV9Db250cm9sICovCj4+PiArCWlmICghKGRzaV9kZXYt Pm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX0xQTSkpCj4+PiArCQl2YWwgfD0gQklUKDcpOwo+ Pj4gKwlpZiAoIShkc2lfZGV2LT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfQ0xPQ0tfTk9OX0NPTlRJ TlVPVVMpKQo+Pj4gKwkJdmFsIHw9IEJJVCg1KTsKPj4+ICsJdmFsIHw9IChkc2lfZGV2LT5sYW5l cyAtIDEpIDw8IDE7Cj4+PiArCWlmIChkc2lfZGV2LT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9E RV9FT1RfUEFDS0VUKQo+Pj4gKwkJdmFsIHw9IEJJVCgwKTsKPj4+ICsJdGMzNTg3Njhfd3JpdGUo cHJpdiwgVEMzNTg3NjhfRFNJX0NPTkZXLCB2YWwpOwo+Pj4gKwo+Pj4gKwl2YWwgPSAoNiA8PCAy OSkgfCAoMHgzIDw8IDI0KTsgLyogQ0xFQVIsIERTSV9Db250cm9sICovCj4+PiArCXZhbCB8PSAw eDgwMDA7IC8qIERTSSBtb2RlICovCj4+PiArCXRjMzU4NzY4X3dyaXRlKHByaXYsIFRDMzU4NzY4 X0RTSV9DT05GVywgdmFsKTsKPj4+ICsKPj4+ICsJLyogY2xlYXIgRnJtU3RvcCBhbmQgUnN0UHRy ICovCj4+PiArCXRjMzU4NzY4X3VwZGF0ZV9iaXRzKHByaXYsIFRDMzU4NzY4X1BQX01JU0MsIDB4 MyA8PCAxNCwgMCk7Cj4+PiArCj4+PiArCS8qIHNldCBQUF9lbiAqLwo+Pj4gKwl0YzM1ODc2OF91 cGRhdGVfYml0cyhwcml2LCBUQzM1ODc2OF9DT05GQ1RMLCBCSVQoNiksIEJJVCg2KSk7Cj4+PiAr fQo+Pj4gKwo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyB0YzM1ODc2 OF9icmlkZ2VfZnVuY3MgPSB7Cj4+PiArCS5hdHRhY2ggPSB0YzM1ODc2OF9icmlkZ2VfYXR0YWNo LAo+Pj4gKwkubW9kZV92YWxpZCA9IHRjMzU4NzY4X2JyaWRnZV9tb2RlX3ZhbGlkLAo+Pj4gKwku ZGlzYWJsZSA9IHRjMzU4NzY4X2JyaWRnZV9kaXNhYmxlLAo+Pj4gKwkuZW5hYmxlID0gdGMzNTg3 NjhfYnJpZGdlX2VuYWJsZSwKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2JyaWRnZV90aW1pbmdzIGRlZmF1bHRfdGMzNTg3NjhfdGltaW5ncyA9IHsKPj4+ICsJLmlu cHV0X2J1c19mbGFncyA9IERSTV9CVVNfRkxBR19QSVhEQVRBX1NBTVBMRV9QT1NFREdFCj4+PiAr CQkgfCBEUk1fQlVTX0ZMQUdfU1lOQ19TQU1QTEVfTkVHRURHRQo+Pj4gKwkJIHwgRFJNX0JVU19G TEFHX0RFX0hJR0gsCj4+PiArfTsKPj4+ICsKPj4+ICtzdGF0aWMgYm9vbCB0YzM1ODc2OF9pc19y ZXNlcnZlZF9yZWcodW5zaWduZWQgaW50IHJlZykKPj4+ICt7Cj4+PiArCXN3aXRjaCAocmVnKSB7 Cj4+PiArCWNhc2UgMHgxMTQgLi4uIDB4MTNmOgo+Pj4gKwljYXNlIDB4MjAwOgo+Pj4gKwljYXNl IDB4MjBjOgo+Pj4gKwljYXNlIDB4NDAwIC4uLiAweDQwODoKPj4+ICsJY2FzZSAweDQxYyAuLi4g MHg0MmY6Cj4+PiArCQlyZXR1cm4gdHJ1ZTsKPj4+ICsJZGVmYXVsdDoKPj4+ICsJCXJldHVybiBm YWxzZTsKPj4+ICsJfQo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgYm9vbCB0YzM1ODc2OF93cml0 ZWFibGVfcmVnKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJlZykKPj4+ICt7Cj4+ PiArCWlmICh0YzM1ODc2OF9pc19yZXNlcnZlZF9yZWcocmVnKSkKPj4+ICsJCXJldHVybiBmYWxz ZTsKPj4+ICsKPj4+ICsJc3dpdGNoIChyZWcpIHsKPj4+ICsJY2FzZSBUQzM1ODc2OF9DSElQSUQ6 Cj4+PiArCWNhc2UgVEMzNTg3NjhfRklGT1NUQVRVUzoKPj4+ICsJY2FzZSBUQzM1ODc2OF9EU0lU WFNUQVRVUyAuLi4gKFRDMzU4NzY4X0RTSVRYU1RBVFVTICsgMik6Cj4+PiArCWNhc2UgVEMzNTg3 NjhfRFNJX0NPTlRST0wgLi4uIChUQzM1ODc2OF9EU0lfSU5UX0VOQSArIDIpOgo+Pj4gKwljYXNl IFRDMzU4NzY4X0RTSUNNRF9SREZJRk8gLi4uIChUQzM1ODc2OF9EU0lfRVJSX0hBTFQgKyAyKToK Pj4+ICsJCXJldHVybiBmYWxzZTsKPj4+ICsJZGVmYXVsdDoKPj4+ICsJCXJldHVybiB0cnVlOwo+ Pj4gKwl9Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBib29sIHRjMzU4NzY4X3JlYWRhYmxlX3Jl ZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByZWcpCj4+PiArewo+Pj4gKwlpZiAo dGMzNTg3NjhfaXNfcmVzZXJ2ZWRfcmVnKHJlZykpCj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4+PiAr Cj4+PiArCXN3aXRjaCAocmVnKSB7Cj4+PiArCWNhc2UgVEMzNTg3NjhfU1RBUlRDTlRSTDoKPj4+ ICsJY2FzZSBUQzM1ODc2OF9EU0lfQ09ORlcgLi4uIChUQzM1ODc2OF9EU0lfQ09ORlcgKyAyKToK Pj4+ICsJY2FzZSBUQzM1ODc2OF9EU0lfSU5UX0NMUiAuLi4gKFRDMzU4NzY4X0RTSV9JTlRfQ0xS ICsgMik6Cj4+PiArCWNhc2UgVEMzNTg3NjhfRFNJX1NUQVJUIC4uLiAoVEMzNTg3NjhfRFNJX1NU QVJUICsgMik6Cj4+PiArCWNhc2UgVEMzNTg3NjhfREJHX0RBVEE6Cj4+PiArCQlyZXR1cm4gZmFs c2U7Cj4+PiArCWRlZmF1bHQ6Cj4+PiArCQlyZXR1cm4gdHJ1ZTsKPj4+ICsJfQo+Pj4gK30KPj4+ ICsKPj4+ICtzdGF0aWMgYm9vbCB0YzM1ODc2OF92b2xhdGlsZV9yZWcoc3RydWN0IGRldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgcmVnKQo+Pj4gK3sKPj4+ICsJc3dpdGNoIChyZWcpIHsKPj4+ICsJ Y2FzZSBUQzM1ODc2OF9GSUZPU1RBVFVTOgo+Pj4gKwljYXNlIFRDMzU4NzY4X1NUQVJUQ05UUkwg Li4uIChUQzM1ODc2OF9EU0lUWFNUQVRVUyArIDIpOgo+Pj4gKwljYXNlIFRDMzU4NzY4X0RTSV9D T05UUk9MIC4uLiAoVEMzNTg3NjhfRFNJX0lOVF9FTkEgKyAyKToKPj4+ICsJY2FzZSBUQzM1ODc2 OF9EU0lDTURfUkRGSUZPIC4uLiAoVEMzNTg3NjhfRFNJX0VSUl9IQUxUICsgMik6Cj4+PiArCWNh c2UgVEMzNTg3NjhfRFNJQ01EX1RYOgo+Pj4gKwkJcmV0dXJuIHRydWU7Cj4+PiArCWRlZmF1bHQ6 Cj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4+PiArCX0KPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGNv bnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHRjMzU4NzY4X3JlZ21hcF9jb25maWcgPSB7Cj4+PiAr CS5uYW1lID0gInRjMzU4NzY4IiwKPj4+ICsJLnJlZ19iaXRzID0gMTYsCj4+PiArCS52YWxfYml0 cyA9IDE2LAo+Pj4gKwkubWF4X3JlZ2lzdGVyID0gVEMzNTg3NjhfRFNJX0hBQ1QsCj4+PiArCS5j YWNoZV90eXBlID0gUkVHQ0FDSEVfUkJUUkVFLAo+Pj4gKwkud3JpdGVhYmxlX3JlZyA9IHRjMzU4 NzY4X3dyaXRlYWJsZV9yZWcsCj4+PiArCS5yZWFkYWJsZV9yZWcgPSB0YzM1ODc2OF9yZWFkYWJs ZV9yZWcsCj4+PiArCS52b2xhdGlsZV9yZWcgPSB0YzM1ODc2OF92b2xhdGlsZV9yZWcsCj4+PiAr CS5yZWdfZm9ybWF0X2VuZGlhbiA9IFJFR01BUF9FTkRJQU5fQklHLAo+Pj4gKwkudmFsX2Zvcm1h dF9lbmRpYW4gPSBSRUdNQVBfRU5ESUFOX0JJRywKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCB0YzM1ODc2OF9pMmNfaWRzW10gPSB7Cj4+PiArCXsg InRjMzU4NzY4IiwgMCB9LAo+Pj4gKwl7ICJ0YzM1ODc3OCIsIDAgfSwKPj4+ICsJeyB9Cj4+PiAr fTsKPj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgdGMzNTg3NjhfaTJjX2lkcyk7Cj4+PiAr Cj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdGMzNTg3Njhfb2ZfaWRzW10g PSB7Cj4+PiArCXsgLmNvbXBhdGlibGUgPSAidG9zaGliYSx0YzM1ODc2OCIsIH0sCj4+PiArCXsg LmNvbXBhdGlibGUgPSAidG9zaGliYSx0YzM1ODc3OCIsIH0sCj4+PiArCXsgfQo+Pj4gK307Cj4+ PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGMzNTg3Njhfb2ZfaWRzKTsKPj4+ICsKPj4+ICtz dGF0aWMgaW50IHRjMzU4NzY4X2dldF9yZWd1bGF0b3JzKHN0cnVjdCB0YzM1ODc2OF9wcml2ICpw cml2KQo+Pj4gK3sKPj4+ICsJaW50IGksIHJldDsKPj4+ICsKPj4+ICsJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUocHJpdi0+c3VwcGxpZXMpOyArK2kpCj4+PiArCQlwcml2LT5zdXBwbGllc1tp XS5zdXBwbHkgPSB0YzM1ODc2OF9zdXBwbGllc1tpXTsKPj4+ICsKPj4+ICsJcmV0ID0gZGV2bV9y ZWd1bGF0b3JfYnVsa19nZXQocHJpdi0+ZGV2LCBBUlJBWV9TSVpFKHByaXYtPnN1cHBsaWVzKSwK Pj4+ICsJCQkJICAgICAgcHJpdi0+c3VwcGxpZXMpOwo+Pj4gKwlpZiAocmV0IDwgMCkKPj4+ICsJ CWRldl9lcnIocHJpdi0+ZGV2LCAiZmFpbGVkIHRvIGdldCByZWd1bGF0b3JzOiAlZFxuIiwgcmV0 KTsKPj4+ICsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCB0 YzM1ODc2OF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPj4+ICsJCQkgICAg ICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgdGMz NTg3NjhfcHJpdiAqcHJpdjsKPj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJmNsaWVudC0+ZGV2 Owo+Pj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOwo+Pj4gKwlpbnQg cmV0Owo+Pj4gKwo+Pj4gKwlpZiAoIW5wKQo+Pj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4+PiArCj4+ PiArCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsK Pj4+ICsJaWYgKCFwcml2KQo+Pj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+PiArCj4+PiArCWRldl9z ZXRfZHJ2ZGF0YShkZXYsIHByaXYpOwo+Pj4gKwlwcml2LT5kZXYgPSBkZXY7Cj4+PiArCj4+PiAr CXJldCA9IHRjMzU4NzY4X2dldF9yZWd1bGF0b3JzKHByaXYpOwo+Pj4gKwlpZiAocmV0KQo+Pj4g KwkJcmV0dXJuIHJldDsKPj4+ICsKPj4+ICsJcHJpdi0+cmVmY2xrID0gZGV2bV9jbGtfZ2V0KGRl diwgInJlZmNsayIpOwo+Pj4gKwlpZiAoSVNfRVJSKHByaXYtPnJlZmNsaykpCj4+PiArCQlyZXR1 cm4gUFRSX0VSUihwcml2LT5yZWZjbGspOwo+Pj4gKwo+Pj4gKwkvKgo+Pj4gKwkgKiBSRVNYIGlz IGxvdyBhY3RpdmUsIHRvIGRpc2FibGUgdGMzNTg3NjggaW5pdGlhbGx5IChrZWVwIGluIHJlc2V0 KQo+Pj4gKwkgKiB0aGUgZ3BpbyBsaW5lIG11c3QgYmUgTE9XLiBUaGlzIGlzIHRoZSBBU1NFUlRF RCBzdGF0ZSBvZgo+Pj4gKwkgKiBHUElPX0FDVElWRV9MT1cgKEdQSU9EX09VVF9ISUdIID09IEFT U0VSVEVEKS4KPj4+ICsJICovCj4+PiArCXByaXYtPnJlc2V0X2dwaW8gID0gZGV2bV9ncGlvZF9n ZXRfb3B0aW9uYWwoZGV2LCAicmVzZXQiLAo+Pj4gKwkJCQkJCSAgICBHUElPRF9PVVRfSElHSCk7 Cj4+PiArCWlmIChJU19FUlIocHJpdi0+cmVzZXRfZ3BpbykpCj4+PiArCQlyZXR1cm4gUFRSX0VS Uihwcml2LT5yZXNldF9ncGlvKTsKPj4+ICsKPj4+ICsJcHJpdi0+cmVnbWFwID0gZGV2bV9yZWdt YXBfaW5pdF9pMmMoY2xpZW50LCAmdGMzNTg3NjhfcmVnbWFwX2NvbmZpZyk7Cj4+PiArCWlmIChJ U19FUlIocHJpdi0+cmVnbWFwKSkgewo+Pj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW5p dCByZWdtYXBcbiIpOwo+Pj4gKwkJcmV0dXJuIFBUUl9FUlIocHJpdi0+cmVnbWFwKTsKPj4+ICsJ fQo+Pj4gKwo+Pj4gKwlpZiAocHJpdi0+cmVzZXRfZ3BpbykKPj4+ICsJCXJlZ2NhY2hlX2NhY2hl X29ubHkocHJpdi0+cmVnbWFwLCB0cnVlKTsKPj4+ICsKPj4+ICsJcHJpdi0+ZHNpX2hvc3QuZGV2 ID0gZGV2Owo+Pj4gKwlwcml2LT5kc2lfaG9zdC5vcHMgPSAmdGMzNTg3NjhfZHNpX2hvc3Rfb3Bz Owo+Pj4gKwo+Pj4gKwlwcml2LT5icmlkZ2UuZnVuY3MgPSAmdGMzNTg3NjhfYnJpZGdlX2Z1bmNz Owo+Pj4gKwlwcml2LT5icmlkZ2UudGltaW5ncyA9ICZkZWZhdWx0X3RjMzU4NzY4X3RpbWluZ3M7 Cj4+PiArCXByaXYtPmJyaWRnZS5vZl9ub2RlID0gbnA7Cj4+PiArCj4+PiArCWkyY19zZXRfY2xp ZW50ZGF0YShjbGllbnQsIHByaXYpOwo+Pj4gKwo+Pj4gKwlyZXQgPSBtaXBpX2RzaV9ob3N0X3Jl Z2lzdGVyKCZwcml2LT5kc2lfaG9zdCk7Cj4+PiArCWlmIChyZXQpCj4+PiArCQlyZXR1cm4gcmV0 Owo+Pj4gKwo+Pj4gKwlyZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCB0YzM1 ODc2OF9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4+PiArewo+Pj4gKwlz dHJ1Y3QgdGMzNTg3NjhfcHJpdiAqcHJpdiA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ Pj4gKwo+Pj4gKwltaXBpX2RzaV9ob3N0X3VucmVnaXN0ZXIoJnByaXYtPmRzaV9ob3N0KTsKPj4+ ICsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBzdHJ1Y3QgaTJjX2Ry aXZlciB0YzM1ODc2OF9kcml2ZXIgPSB7Cj4+PiArCS5kcml2ZXIgPSB7Cj4+PiArCQkubmFtZSA9 ICJ0YzM1ODc2OCIsCj4+PiArCQkub2ZfbWF0Y2hfdGFibGUgPSB0YzM1ODc2OF9vZl9pZHMsCj4+ PiArCX0sCj4+PiArCS5pZF90YWJsZSA9IHRjMzU4NzY4X2kyY19pZHMsCj4+PiArCS5wcm9iZSA9 IHRjMzU4NzY4X2kyY19wcm9iZSwKPj4+ICsJLnJlbW92ZQk9IHRjMzU4NzY4X2kyY19yZW1vdmUs Cj4+PiArfTsKPj4+ICttb2R1bGVfaTJjX2RyaXZlcih0YzM1ODc2OF9kcml2ZXIpOwo+Pj4gKwo+ Pj4gK01PRFVMRV9BVVRIT1IoIlBldGVyIFVqZmFsdXNpIDxwZXRlci51amZhbHVzaUB0aS5jb20+ Iik7Cj4+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJUQzM1ODc2OEFYQkcvVEMzNTg3NzhYQkcgRFNJ IGJyaWRnZSIpOwo+Pj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPj4KPiBUZXhhcyBJbnN0 cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5raS4KPiBZ LXR1bm51cy9CdXNpbmVzcyBJRDogMDYxNTUyMS00LiBLb3RpcGFpa2thL0RvbWljaWxlOiBIZWxz aW5raQo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK