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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5A043ECAAD3 for ; Mon, 19 Sep 2022 10:58:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gZSBJ2dHEggqTAdSI5RUjfh/aBXjGH6F1yGiTIRXRkE=; b=d9TzGVrNRp7YT8 /hujqe4cGcTVoFle0SC3+3ZSxOk2fWcNTE/cptjBTbEIxRyStOTkDxrCBH+c5tffvHRyZYHqil5i1 BMZZpZJOusdNh6hp7qqTktK3qdAptmQBE3/TMLe4VGKWwSl7N0kwhVeeRkh4kAUP0OrNnQKUv7nN6 nWtnUB18yH0GAQgC0TDfbc1g0TEBThvij5OY3c2uNOnOjvQM1pOk3rDeEIyhSCEgIz6+aIL5shOXZ nGNZnyfqvcWchG050RznifVKGpgWsi5W8WG4cAt934TUH/Uk4pesaLCpXafZRGMNuxv7VhhKIPjg4 DDtV/4ecN7xf1rLVeJ0g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaETk-00BQp6-O1; Mon, 19 Sep 2022 10:58:20 +0000 Received: from perceval.ideasonboard.com ([213.167.242.64]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaETg-00BQnM-DJ for linux-phy@lists.infradead.org; Mon, 19 Sep 2022 10:58:19 +0000 Received: from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id EB6099BA; Mon, 19 Sep 2022 12:58:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1663585093; bh=gw5vwt/5P303AZo0B3arBflIQfP67i6RXDCi4+BKuIQ=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=lpOmwgEPUvOSNYy5BQ0n0ZWLpfZY9Q9JxN/2xLZrlYHsu+UZkvKr9JLX5qXbZv3lr Fgy4kvZwWqSTVYarAXXEy+jFR92q5Q3hyEJIc33KzmVOLa3b+a8bx6JQrGbW//ztLl UjjxJxtUG/31G/RPZSzGD2L9pwd4pSG9sA2DLFNE= Date: Mon, 19 Sep 2022 13:57:59 +0300 From: Laurent Pinchart To: Marco Felsch Cc: mchehab@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, vkoul@kernel.org, kishon@ti.com, sakari.ailus@linux.intel.com, hverkuil@xs4all.nl, jacopo@jmondi.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-media@vger.kernel.org, kernel@pengutronix.de Subject: Re: [PATCH 4/4] media: tc358746: add Toshiba TC358746 Parallel to CSI-2 bridge driver Message-ID: References: <20220818143307.967150-1-m.felsch@pengutronix.de> <20220818143307.967150-5-m.felsch@pengutronix.de> <20220915165404.ghcjntxom7kzqyuy@pengutronix.de> <20220919084038.v352xtuoxp7wghp5@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220919084038.v352xtuoxp7wghp5@pengutronix.de> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220919_035816_790946_48CABC38 X-CRM114-Status: GOOD ( 62.47 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org SGkgTWFyY28sCgpPbiBNb24sIFNlcCAxOSwgMjAyMiBhdCAxMDo0MDozOEFNICswMjAwLCBNYXJj byBGZWxzY2ggd3JvdGU6Cj4gT24gMjItMDktMTYsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4g PiBPbiBUaHUsIFNlcCAxNSwgMjAyMiBhdCAwNjo1NDowNFBNICswMjAwLCBNYXJjbyBGZWxzY2gg d3JvdGU6Cj4gPiA+IE9uIDIyLTA5LTA1LCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gPiA+ IE9uIFRodSwgQXVnIDE4LCAyMDIyIGF0IDA0OjMzOjA3UE0gKzAyMDAsIE1hcmNvIEZlbHNjaCB3 cm90ZToKPiA+ID4gPiA+IEFkZGluZyBzdXBwb3J0IGZvciB0aGUgVEMzNTg3NDYgcGFyYWxsZWwg PC0+IE1JUEkgQ1NJIGJyaWRnZS4gVGhpcyBjaGlwCj4gPiA+ID4gPiBzdXBwb3J0cyB0d28gb3Bl cmF0aW5nIG1vZGVzOgo+ID4gPiA+ID4gICAxc3QpIHBhcmFsbGVsLWluIC0+IG1pcGktY3NpIG91 dAo+ID4gPiA+ID4gICAybmQpIG1pcGktY3NpIGluIC0+IHBhcmFsbGVsIG91dAo+ID4gPiA+ID4g Cj4gPiA+ID4gPiBUaGlzIHBhdGNoIG9ubHkgYWRkcyB0aGUgc3VwcG9ydCBmb3IgdGhlIDFzdCBt b2RlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXJjbyBGZWxzY2ggPG0u ZmVsc2NoQHBlbmd1dHJvbml4LmRlPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAgZHJpdmVycy9t ZWRpYS9pMmMvS2NvbmZpZyAgICB8ICAgMTcgKwo+ID4gPiA+ID4gIGRyaXZlcnMvbWVkaWEvaTJj L01ha2VmaWxlICAgfCAgICAxICsKPiA+ID4gPiA+ICBkcml2ZXJzL21lZGlhL2kyYy90YzM1ODc0 Ni5jIHwgMTY0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiAg MyBmaWxlcyBjaGFuZ2VkLCAxNjYzIGluc2VydGlvbnMoKykKPiA+ID4gPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9pMmMvdGMzNTg3NDYuYwo+ID4gCj4gPiBbc25pcF0KPiA+ IAo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJjL3RjMzU4NzQ2LmMgYi9k cml2ZXJzL21lZGlhL2kyYy90YzM1ODc0Ni5jCj4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43YjcxZDBjZjcyYTkKPiA+ID4gPiA+IC0t LSAvZGV2L251bGwKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL3RjMzU4NzQ2LmMK PiA+IAo+ID4gW3NuaXBdCj4gPiAKPiA+ID4gPiA+ICtzdHJ1Y3QgdGMzNTg3NDYgewo+ID4gPiA+ ID4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXYJCXNkOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgbWVkaWFfcGFk CQlwYWRzW1RDMzU4NzQ2X05SX1BBRFNdOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgdjRsMl9hc3luY19u b3RpZmllcglub3RpZmllcjsKPiA+ID4gPiA+ICsJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdAlt YnVzZm10Owo+ID4gPiA+IAo+ID4gPiA+IENvdWxkIHlvdSB1c2UgdGhlIGFjdGl2ZSBzdGF0ZSBB UEkgaW5zdGVhZCBvZiBtYW51YWxseSBzdG9yaW5nIG1idXNmbXQKPiA+ID4gPiBoZXJlID8gSXQg aW52b2x2ZXMKPiA+ID4gCj4gPiA+IEkgd2lsbCBkbyB0aGF0LCB0aGFua3MgZm9yIHRoZSBoaW50 IGFuZCBpdCBhbHNvIGVsaW1hdGVzIGEgZmV3IGJhc2ljCj4gPiA+IGNoZWNrcyBsaWtlIHRoZSBw YWQtbnVtIGNoZWNrLgo+ID4gCj4gPiBFdmVuIG5pY2VyIDotKQo+ID4gCj4gPiA+ID4gLSBJbXBs ZW1lbnRpbmcgdGhlIC5pbml0X2NmZygpIG9wZXJhdGlvbgo+ID4gPiA+IC0gQ2FsbGluZyB2NGwy X3N1YmRldl9pbml0X2ZpbmFsaXplKCkgaW4gcHJvYmUKPiA+ID4gPiAtIFJlcGxhY2luZyBjYWxs cyB0byBfX3RjMzU4NzQ2X2dldF9wYWRfZm9ybWF0KCkgd2l0aAo+ID4gPiA+ICAgdjRsMl9zdWJk ZXZfZ2V0X3BhZF9mb3JtYXQoKQo+ID4gPiA+IC0gUHJvcGFnYXRpbmcgdGhlIGZvcm1hdCBmcm9t IHNpbmsgdG8gc291cmNlIGluIHRjMzU4NzQ2X3NldF9mbXQoKQo+ID4gPiA+IC0gRHJvcHBpbmcg dGMzNTg3NDZfc3JjX21idXNfY29kZSgpIGZyb20gdGMzNTg3NDZfZ2V0X2ZtdCgpIGFuZCBzaW1w bHkKPiA+ID4gPiAgIHJldHJpZXZpbmcgdGhlIGZvcm1hdCB1c2luZyB2NGwyX3N1YmRldl9nZXRf cGFkX2Zvcm1hdCgpIHRoZXJlCj4gPiA+ID4gLSBEcm9wcGluZyB0aGlzIGZpZWxkCj4gPiA+ID4g Cj4gPiA+ID4gVGhlIGZvcm1hdHMgZm9yIGJvdGggdGhlIEFDVElWRSBhbmQgVFJZIHN0YXRlcyB3 aWxsIHRoZW4gYmUgc3RvcmVkIGluCj4gPiA+ID4gdGhlIHN1YmRldiBzdGF0ZSwgdW5jb25kaXRp b25hbGx5LiBZb3UgY2FuIHJldHJpZXZlIHRoZSBhY3RpdmUgc3RhdGUKPiA+ID4gPiB3aXRoIHY0 bDJfc3ViZGV2X2dldF9sb2NrZWRfYWN0aXZlX3N0YXRlKCkgaW4gdGMzNTg3NDZfc19zdHJlYW0o KS4KPiA+ID4gPiAKPiA+ID4gPiA+ICsJc3RydWN0IHY0bDJfZndub2RlX2VuZHBvaW50CWNzaV92 ZXA7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlcgljdHJs X2hkbDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJc3RydWN0IHJlZ21hcAkJCSpyZWdtYXA7Cj4g PiA+ID4gPiArCXN0cnVjdCBjbGsJCQkqcmVmY2xrOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgZ3Bpb19k ZXNjCQkqcmVzZXRfZ3BpbzsKPiA+ID4gPiA+ICsJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEJ c3VwcGxpZXNbQVJSQVlfU0laRSh0YzM1ODc0Nl9zdXBwbGllcyldOwo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKwlzdHJ1Y3QgY2xrX2h3CQkJbWNsa19odzsKPiA+ID4gPiA+ICsJdW5zaWduZWQgbG9u ZwkJCW1jbGtfcmF0ZTsKPiA+ID4gPiA+ICsJdTgJCQkJbWNsa19wcmVkaXY7Cj4gPiA+ID4gPiAr CXUxNgkJCQltY2xrX3Bvc3RkaXY7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXVuc2lnbmVkIGxv bmcJCQlwbGxfcmF0ZTsKPiA+ID4gPiA+ICsJdTgJCQkJcGxsX3Bvc3RfZGl2Owo+ID4gPiA+ID4g Kwl1MTYJCQkJcGxsX3ByZV9kaXY7Cj4gPiA+ID4gPiArCXUxNgkJCQlwbGxfbXVsOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwlzdHJ1Y3QgdjRsMl9jdHJsCQkqc2Vuc29yX3BjbGtfY3RybDsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsjZGVmaW5lIFRDMzU4NzQ2X1ZCX01BWF9TSVpFCQkoNTExICog MzIpCj4gPiA+ID4gPiArI2RlZmluZSBUQzM1ODc0Nl9WQl9ERUZBVUxUX1NJWkUJICAoMSAqIDMy KQo+ID4gPiA+ID4gKwl1bnNpZ25lZCBpbnQJCQl2Yl9zaXplOyAvKiBWaWRlbyBidWZmZXIgc2l6 ZSBpbiBiaXRzICovCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXN0cnVjdCBwaHlfY29uZmlndXJl X29wdHNfbWlwaV9kcGh5IGRwaHlfY2ZnOwo+ID4gPiA+ID4gK307Cj4gPiAKPiA+IFtzbmlwXQo+ ID4gCj4gPiA+ID4gPiArI2lmbmRlZiBNSFoKPiA+ID4gPiAKPiA+ID4gPiBXaGVyZSB3b3VsZCBp dCBiZSBwcmV2aW91c2x5IGRlZmluZWQgPyBUaGlzIHNvdW5kcyBsaWtlIGFza2luZyBmb3IKPiA+ ID4gPiB0cm91YmxlIGxhdGVyLgo+ID4gPiAKPiA+ID4gU29ycnkgSSBkb24ndCBnZXQgdGhhdCwg ZG8geW91IG1lYW4gdGhhdCBJIHNob3VsZCBkZWZpbmUgaXQgYXQgdGhlIHZlcnkKPiA+ID4gYmVn aW5uaW5nPwo+ID4gCj4gPiBJIG1lYW4gdGhhdCBlaXRoZXIgTUhaIGlzIGRlZmluZWQgc29tZXdo ZXJlIGluIHRoZSBrZXJuZWwgYWxyZWFkeSwgaW4KPiA+IGNhc2Ugd2Ugc2hvdWxkIGluY2x1ZGUg dGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyLCBvciBpdCdzIG5vdCwgYW5kIEkKPiA+IHdvdWxkbid0 IGFkZCBhbiAjaWZuZGV2IGhlcmUuIE90aGVyd2lzZSwgaWYgc29tZW9uZSBhZGRzIGEgTUhaIG1h Y3JvCj4gPiBsYXRlciB0aGF0IGdldHMgcHVsbGVkIGluIHRocm91Z2ggb25lIG9mIHRoZSBrZXJu ZWwgaGVhZGVycyB1c2VkIGJ5IHRoZQo+ID4gZHJpdmVyLCBpdCBtYXkgY2F1c2Ugc3VidGxlIGJ1 Z3MgaWYgdGhlIGRlZmluaXRpb24gaXMgZGlmZmVyZW50LiBPZgo+ID4gY291cnNlIG5vYm9keSB3 aWxsCj4gPiAKPiA+ICNkZWZpbmUgTUhaCQk0Mgo+ID4gCj4gPiBidXQgd2UgY291bGQgZ2V0Cj4g PiAKPiA+ICNkZWZpbmUgTUhaCQkxMDAwICogMTAwMAo+ID4gCj4gPiBhbmQgc29tZXRoaW5nIGNv dWxkIGJyZWFrIGhlcmUuIEknZCBkcm9wIHRoZSAjaWZuZGVmIHRvIGdldCB0aGUgY29tcGlsZXIK PiA+IHRvIGNvbXBsYWluIGlmIHRoZXJlJ3MgYSByZWRlZmluaXRpb24uCj4gCj4gQXJnaC4uIHNv cnJ5LCBub3cgSSBzZWUgd2hhdCB5b3UgbWVhbnQuIEkgaGF2ZSByZWFkIGl0IGxpa2UgIkknbSBh c2tpbmcKPiBmb3IgdHJvdWJsZXMiIGJlY2F1c2UgSSdtIGRlZmluaW5nIGl0LiBEaWRuJ3Qgc2F3 IHRoYXQgeW91ciBjb21tZW50IHdhcwo+IG9ubHkgcmVsYXRlZCB0byB0aGUgaWZuZGVmIGd1YXJk LCBzdXJlIEkgY2FuIGRyb3AgaXQuCj4gCj4gPiA+ID4gPiArI2RlZmluZSBNSFoJCSgxMDAwICog MTAwMCkKPiA+ID4gPiA+ICsjZW5kaWYKPiA+IAo+ID4gW3NuaXBdCj4gPiAKPiA+ID4gPiA+ICtz dGF0aWMgaW50Cj4gPiA+ID4gPiArdGMzNTg3NDZfbGlua192YWxpZGF0ZShzdHJ1Y3QgdjRsMl9z dWJkZXYgKnNkLCBzdHJ1Y3QgbWVkaWFfbGluayAqbGluaywKPiA+ID4gPiA+ICsJCSAgICAgICBz dHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpzb3VyY2VfZm10LAo+ID4gPiA+ID4gKwkJICAgICAg IHN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgKnNpbmtfZm10KQo+ID4gPiA+ID4gK3sKPiA+ID4g PiA+ICsJc3RydWN0IHRjMzU4NzQ2ICp0YzM1ODc0NiA9IHRvX3RjMzU4NzQ2KHNkKTsKPiA+ID4g PiA+ICsJdW5zaWduZWQgbG9uZyBjc2lfYml0cmF0ZSwgc2Vuc29yX2JpdHJhdGU7Cj4gPiA+ID4g PiArCWNvbnN0IHN0cnVjdCB0YzM1ODc0Nl9mb3JtYXQgKmZtdDsKPiA+ID4gPiA+ICsJdW5zaWdu ZWQgaW50IGZpZm9fc3osIHRtcCwgbjsKPiA+ID4gPiA+ICsJczY0IHNlbnNvcl9wY2xrX3JhdGU7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIENoZWNrIHRoZSBGSUZPIHNldHRpbmdzICovCj4g PiA+ID4gPiArCWZtdCA9IHRjMzU4NzQ2X2dldF9mb3JtYXRfYnlfY29kZShUQzM1ODc0Nl9TSU5L LCB0YzM1ODc0Ni0+bWJ1c2ZtdC5jb2RlKTsKPiA+ID4gPiA+ICsJaWYgKElTX0VSUihmbXQpKQo+ ID4gPiA+ID4gKwkJcmV0dXJuIFBUUl9FUlIoZm10KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJ c2Vuc29yX3BjbGtfcmF0ZSA9IHY0bDJfY3RybF9nX2N0cmxfaW50NjQodGMzNTg3NDYtPnNlbnNv cl9wY2xrX2N0cmwpOwo+ID4gPiA+ID4gKwlzZW5zb3JfYml0cmF0ZSA9IHNlbnNvcl9wY2xrX3Jh dGUgKiBmbXQtPmJ1c193aWR0aDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJY3NpX2JpdHJhdGUg PSB0YzM1ODc0Ni0+ZHBoeV9jZmcubGFuZXMgKiB0YzM1ODc0Ni0+cGxsX3JhdGU7Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiArCWRldl9kYmcodGMzNTg3NDYtPnNkLmRldiwKPiA+ID4gPiA+ICsJCSJG aWZvIHNldHRpbmdzIHBhcmFtczogc2Vuc29yLWJpdHJhdGU6JWx1IGNzaS1iaXRyYXRlOiVsdSIs Cj4gPiA+ID4gPiArCQlzZW5zb3JfYml0cmF0ZSwgY3NpX2JpdHJhdGUpOwo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gKwkvKiBBdm9pZCBwb3NzaWJsZSBGSUZPIG92ZXJmbG93cyAqLwo+ID4gPiA+ID4g KwlpZiAoY3NpX2JpdHJhdGUgPCBzZW5zb3JfYml0cmF0ZSkgewo+ID4gPiA+ID4gKwkJZGV2X2Vy cihzZC0+ZGV2LAo+ID4gPiA+ID4gKwkJCSJMaW5rIHZhbGlkYXRpb24gZmFpbGVkIGNzaS1iaXRy YXRlOiVsdSA8IHNlbnNvci1iaXRyYXRlOiVsdVxuIiwKPiA+ID4gPiA+ICsJCQljc2lfYml0cmF0 ZSwgc2Vuc29yX2JpdHJhdGUpOwo+ID4gPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4g PiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogQmVzdCBjYXNlICovCj4gPiA+ID4gPiAr CWlmIChjc2lfYml0cmF0ZSA9PSBzZW5zb3JfYml0cmF0ZSkgewo+ID4gPiA+ID4gKwkJdGMzNTg3 NDYtPnZiX3NpemUgPSBUQzM1ODc0Nl9WQl9ERUZBVUxUX1NJWkU7Cj4gPiA+ID4gPiArCQlnb3Rv IG91dDsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkvKgo+ID4gPiA+ID4g KwkgKiBBdm9pZCBwb3NzaWJsZSBGSUZPIHVuZGVyZmxvdyBpbiBjYXNlIG9mCj4gPiA+ID4gPiAr CSAqIGNzaV9iaXRyYXRlID4gc2Vuc29yX2JpdHJhdGUuIEZvciBzdWNoIGNhc2UgdGhlIGNoaXAg aGFzIGEgaW50ZXJuYWwKPiA+ID4gPiA+ICsJICogZmlmbyB3aGljaCBjYW4gYmUgdXNlZCB0byBk ZWxheSB0aGUgbGluZSBvdXRwdXQuCj4gPiA+ID4gPiArCSAqCj4gPiA+ID4gPiArCSAqIEZpZm8g c2l6ZSBjYWxjdWxhdGlvbjoKPiA+ID4gPiA+ICsJICoKPiA+ID4gPiA+ICsJICogZmlmby1zeiwg aW1hZ2Utd2lkdGggLSBpbiBiaXRzCj4gPiA+ID4gPiArCSAqIHNiciAgICAgICAgICAgICAgICAg IC0gc2Vuc29yX2JpdHJhdGUgaW4gYml0cy9zCj4gPiA+ID4gPiArCSAqIGNzaXIgICAgICAgICAg ICAgICAgIC0gY3NpX2JpdHJhdGUgaW4gYml0cy9zCj4gPiA+ID4gPiArCSAqCj4gPiA+ID4gPiAr CSAqICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgMSAgICAgIDEKPiA+ID4gPiA+ICsJICog aW1hZ2Utd2lkdGggKiAtLS0gKyBmaWZvLXN6IC0tLSA+PSAtLS0tICogaW1hZ2Utd2lkdGgKPiA+ ID4gPiA+ICsJICogICAgICAgICAgICAgICBzYnIgICAgICAgICAgIHNiciAgICBjc2lyCj4gPiA+ ID4gPiArCSAqCj4gPiA+ID4gPiArCSAqIGZpZm8tc3ogPj0gYWJzKHNici9jc2lyICogaW1hZ2Ut d2lkdGggLSBpbWFnZS13aWR0aCkKPiA+ID4gPiA+ICsJICogICAgICAgICAgICAgICAgYC0tLS0t wrQKPiA+ID4gPiA+ICsJICogICAgICAgICAgICAgICAgICAgbgo+ID4gPiA+ID4gKwkgKgo+ID4g PiA+ID4gKwkgKi8KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJc2Vuc29yX2JpdHJhdGUgLz0gVEMz NTg3NDZfUFJFQ0lTSU9OOwo+ID4gPiA+ID4gKwluID0gY3NpX2JpdHJhdGUgLyBzZW5zb3JfYml0 cmF0ZTsKPiA+ID4gPiA+ICsJdG1wID0gKHRjMzU4NzQ2LT5tYnVzZm10LndpZHRoICogVEMzNTg3 NDZfUFJFQ0lTSU9OKSAvIG47Cj4gPiA+ID4gPiArCWZpZm9fc3ogPSB0YzM1ODc0Ni0+bWJ1c2Zt dC53aWR0aCAtIHRtcDsKPiA+ID4gPiA+ICsJZmlmb19zeiAqPSBmbXQtPmJwcDsKPiA+ID4gPiA+ ICsJdGMzNTg3NDYtPnZiX3NpemUgPSByb3VuZF91cChmaWZvX3N6LCAzMik7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gCj4gPiA+ID4gUGxlYXNlIGFsc28gY2FsbCB2NGwyX3N1YmRldl9saW5rX3ZhbGlk YXRlX2RlZmF1bHQoKSBoZXJlLgo+ID4gPiAKPiA+ID4gRGlkIGl0IGluIG15IGludGVybmFsIHBy ZXBhcmVkIHYyIF5eIEkgY2FsbCBpdCBub3cgYXQgdGhlIHZlcnkKPiA+ID4gYmVnaW5uaW5nIG9m IHRoaXMgZnVuY3Rpb24uCj4gPiA+IAo+ID4gPiA+IEkgd29uZGVyIGlmIHRoZSBhYm92ZSBjYWxj dWxhdGlvbiB3b3VsZG4ndCBiZSBiZXR0ZXIgcGVyZm9ybWVkIGluCj4gPiA+ID4gLnNfc3RyZWFt KCkgKG9yIHJhdGhlciBpbiBhIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBieSAuc19zdHJlYW0oKSkg d2hlbgo+ID4gPiA+IGVuYWJsaW5nIHN0cmVhbWluZy4KPiA+ID4gCj4gPiA+IE5vIEkgd291bGRu J3Qgc2hpZnQgdGhhdCwgc2luY2UgdGhlIGxpbmsgdmFsaWRhdGlvbiBpcyBpbiBJTUhPIHRoZQo+ ID4gPiBjb3JyZWN0IHBsYWNlIHRvIGluZm9ybSB0aGUgdXNlciB0aGF0IHRoZSBwaXBlbGluZSBj YW4ndCBuZWdvdGlhdGUgaWYKPiA+ID4gdGhlIGZpZm8gY2FuJ3QgYmUgY29uZmlndXJlZCBjb3Jy ZWN0bHkuIFRoZXJlZm9yZSBJIHBsYWNlZCBpdCBoZXJlLgo+ID4gCj4gPiBUaGUgaXNzdWUgaXMg dGhhdCB0aGUgdXNlciBjb3VsZCBlbmFibGUgdGhlIGxpbmsgZmlyc3QsIGFuZCB0aGVuIGNoYW5n ZQo+ID4gdGhlIFY0TDJfQ0lEX0xJTktfRlJFUSBvZiB0aGUgc2Vuc29yIGFuZCBwdXNoIHRoZSBw aXhlbCByYXRlIGFib3ZlIHdoYXQKPiA+IHRoZSBUQzM1ODc0NiBjYW4gc3VwcG9ydC4gR2l2ZW4g dGhlIG1vZGVsIHRoYXQgY29uZmlndXJlcyBzdWJkZXZzCj4gPiBpbmRlcGVuZGVudGx5LCB5b3Ug Y2FuIG9ubHkgdmFsaWRhdGUgdGhlIHBpcGVsaW5lIGF0IHN0cmVhbSBvbiB0aW1lLgo+IAo+IFRo ZSAubGlua192YWxpZGF0ZSgpIGdldHMgY2FsbGVkIGR1cmluZyB0aGUgbWVkaWEtcGlwZWxpbmUK PiAubGlua192YWxpZGF0ZSgpIGNhbGwgd2hpY2ggaXMgY2FsbGVkIGJ5IF9fbWVkaWFfcGlwZWxp bmVfc3RhcnQoKS4gVGhlCj4gZnVuY3Rpb24gZGVzY3JpcHRpb24gZm9yIHRoaXMgZnVuY3Rpb24g aXM6ICJNYXJrIGEgcGlwZWxpbmUgYXMKPiBzdHJlYW1pbmciLiBTbyBJIGFzc3VtZSB0aGF0IGl0 IGlzIGNhbGxlZCByaWdodCBpbiBmcm9udCBvZiB0aGUKPiAuc19zdHJlYW0oKSBjYWxsIGFuZCB0 aGVyZSBhcmUgbm8gZnVydGhlciBhZGFwdGlvbnMgb24gdGhlCj4gVjRMMl9DSURfTElOS19GUkVR IGFsbG93ZWQuCgpZb3UncmUgcmlnaHQsIEkgbWlzdG9vayBsaW5rIHZhbGlkYXRpb24gZm9yIGxp bmsgc2V0dXAuIEl0IHNob3VsZCBiZQpmaW5lIHRoZW4sIGFsdGhvdWdoIHRoZSBzdWJkZXYgY29y ZSBjdXJyZW50bHkgZG9lc24ndCBjb3JyZWN0bHkgZW5mb3JjZQp0aGF0IHRoZSBsaW5rIGZyZXF1 ZW5jeSB3b24ndCBjaGFuZ2UuIFRoaXMgbmVlZHMgdG8gYmUgYWRkcmVzc2VkIGluIHRoZQpjb3Jl IChhbmQgd2lsbCBsaWtlbHkgdGhlbiByZXF1aXJlIGNoYW5nZXMgaW4gZHJpdmVycyksIGJ1dCB0 aGF0J3Mgbm90CmFuIGlzc3VlIGZvciB0aGlzIHBhdGNoLgoKPiA+ID4gPiA+ICtvdXQ6Cj4gPiA+ ID4gPiArCWRldl9kYmcodGMzNTg3NDYtPnNkLmRldiwKPiA+ID4gPiA+ICsJCSJGb3VuZCBGSUZP IHNpemVbYml0c106JXUgLT4gYWxpZ25lZCB0byBzaXplW2JpdHNdOiV1XG4iLAo+ID4gPiA+ID4g KwkJZmlmb19zeiwgdGMzNTg3NDYtPnZiX3NpemUpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwly ZXR1cm4gdGMzNTg3NDYtPnZiX3NpemUgPiBUQzM1ODc0Nl9WQl9NQVhfU0laRSA/IC1FSU5WQUwg OiAwOwo+ID4gPiA+ID4gK30KPiA+IAo+ID4gW3NuaXBdCj4gPiAKPiA+ID4gPiA+ICtzdGF0aWMg aW50IHRjMzU4NzQ2X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gPiA+ID4gPiAr ewo+ID4gPiA+ID4gKwlzdHJ1Y3QgY2xrX2luaXRfZGF0YSBtY2xrX2luaXRkYXRhID0geyB9Owo+ ID4gPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7Cj4gPiA+ID4gPiAr CXN0cnVjdCB2NGwyX2Z3bm9kZV9lbmRwb2ludCAqdmVwOwo+ID4gPiA+ID4gKwl1bnNpZ25lZCBs b25nIGNzaV9saW5rX3JhdGU7Cj4gPiA+ID4gPiArCXN0cnVjdCB0YzM1ODc0NiAqdGMzNTg3NDY7 Cj4gPiA+ID4gPiArCXN0cnVjdCBmd25vZGVfaGFuZGxlICplcDsKPiA+ID4gPiA+ICsJdW5zaWdu ZWQgY2hhciBjc2lfbGFuZXM7Cj4gPiA+ID4gPiArCXN0cnVjdCB2NGwyX3N1YmRldiAqc2Q7Cj4g PiA+ID4gPiArCXN0cnVjdCB2NGwyX2N0cmwgKmN0cmw7Cj4gPiA+ID4gPiArCXVuc2lnbmVkIGxv bmcgcmVmY2xrOwo+ID4gPiA+ID4gKwl1bnNpZ25lZCBpbnQgaTsKPiA+ID4gPiA+ICsJaW50IGVy cjsKPiA+ID4gPiA+ICsJdTMyIHZhbDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJdGMzNTg3NDYg PSBkZXZtX2t6YWxsb2MoJmNsaWVudC0+ZGV2LCBzaXplb2YoKnRjMzU4NzQ2KSwgR0ZQX0tFUk5F TCk7Cj4gPiA+ID4gPiArCWlmICghdGMzNTg3NDYpCj4gPiA+ID4gPiArCQlyZXR1cm4gLUVOT01F TTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJdGMzNTg3NDYtPnJlZ21hcCA9IGRldm1fcmVnbWFw X2luaXRfaTJjKGNsaWVudCwgJnRjMzU4NzQ2X3JlZ21hcF9jb25maWcpOwo+ID4gPiA+ID4gKwlp ZiAoSVNfRVJSKHRjMzU4NzQ2LT5yZWdtYXApKQo+ID4gPiA+ID4gKwkJcmV0dXJuIGRldl9lcnJf cHJvYmUoZGV2LCBQVFJfRVJSKHRjMzU4NzQ2LT5yZWdtYXApLAo+ID4gPiA+ID4gKwkJCQkgICAg ICJGYWlsZWQgdG8gaW5pdCByZWdtYXBcbiIpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwl0YzM1 ODc0Ni0+cmVmY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInJlZmNsayIpOwo+ID4gPiA+ID4gKwlp ZiAoSVNfRVJSKHRjMzU4NzQ2LT5yZWZjbGspKQo+ID4gPiA+ID4gKwkJcmV0dXJuIGRldl9lcnJf cHJvYmUoZGV2LCBQVFJfRVJSKHRjMzU4NzQ2LT5yZWZjbGspLAo+ID4gPiA+ID4gKwkJCQkgICAg ICJGYWlsZWQgdG8gZ2V0IHJlZmNsa1xuIik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWVyciA9 IGNsa19wcmVwYXJlX2VuYWJsZSh0YzM1ODc0Ni0+cmVmY2xrKTsKPiA+ID4gPiA+ICsJaWYgKGVy cikKPiA+ID4gPiA+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLAo+ID4gPiA+ID4g KwkJCQkgICAgICJGYWlsZWQgdG8gZW5hYmxlIHJlZmNsa1xuIik7Cj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArCXJlZmNsayA9IGNsa19nZXRfcmF0ZSh0YzM1ODc0Ni0+cmVmY2xrKTsKPiA+ID4gPiA+ ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHRjMzU4NzQ2LT5yZWZjbGspOwo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gKwlpZiAocmVmY2xrIDwgNiAqIE1IWiB8fCByZWZjbGsgPiA0MCAqIE1IWikKPiA+ ID4gPiA+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVJTlZBTCwgIkludmFsaWQgcmVm Y2xrIHJhbmdlXG4iKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUodGMzNTg3NDZfc3VwcGxpZXMpOyBpKyspCj4gPiA+ID4gPiArCQl0YzM1ODc0Ni0+ c3VwcGxpZXNbaV0uc3VwcGx5ID0gdGMzNTg3NDZfc3VwcGxpZXNbaV07Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArCWVyciA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGRldiwgQVJSQVlfU0laRSh0 YzM1ODc0Nl9zdXBwbGllcyksCj4gPiA+ID4gPiArCQkJCSAgICAgIHRjMzU4NzQ2LT5zdXBwbGll cyk7Cj4gPiA+ID4gPiArCWlmIChlcnIpCj4gPiA+ID4gPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9i ZShkZXYsIGVyciwgIkZhaWxlZCB0byBnZXQgc3VwcGxpZXNcbiIpOwo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKwl0YzM1ODc0Ni0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRl diwgInJlc2V0IiwKPiA+ID4gPiA+ICsJCQkJCQkgICAgICAgR1BJT0RfT1VUX0hJR0gpOwo+ID4g PiA+ID4gKwlpZiAoSVNfRVJSKHRjMzU4NzQ2LT5yZXNldF9ncGlvKSkKPiA+ID4gPiA+ICsJCXJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUih0YzM1ODc0Ni0+cmVzZXRfZ3BpbyksCj4g PiA+ID4gPiArCQkJCSAgICAgIkZhaWxlZCB0byBnZXQgcmVzZXQtZ3Bpb3NcbiIpOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwlzZCA9ICZ0YzM1ODc0Ni0+c2Q7Cj4gPiA+ID4gPiArCXY0bDJfaTJj X3N1YmRldl9pbml0KHNkLCBjbGllbnQsICZ0YzM1ODc0Nl9vcHMpOwo+ID4gPiA+ID4gKwlzZC0+ ZmxhZ3MgfD0gVjRMMl9TVUJERVZfRkxfSEFTX0RFVk5PREU7Cj4gPiA+ID4gPiArCXNkLT5lbnRp dHkuZnVuY3Rpb24gPSBNRURJQV9FTlRfRl9WSURfSUZfQlJJREdFOwo+ID4gPiA+ID4gKwlzZC0+ ZW50aXR5Lm9wcyA9ICZ0YzM1ODc0Nl9lbnRpdHlfb3BzOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g Kwl0YzM1ODc0Ni0+cGFkc1tUQzM1ODc0Nl9TSU5LXS5mbGFncyA9IE1FRElBX1BBRF9GTF9TSU5L Owo+ID4gPiA+ID4gKwl0YzM1ODc0Ni0+cGFkc1tUQzM1ODc0Nl9TT1VSQ0VdLmZsYWdzID0gTUVE SUFfUEFEX0ZMX1NPVVJDRTsKPiA+ID4gPiA+ICsJZXJyID0gbWVkaWFfZW50aXR5X3BhZHNfaW5p dCgmc2QtPmVudGl0eSwgVEMzNTg3NDZfTlJfUEFEUywKPiA+ID4gPiA+ICsJCQkJICAgICB0YzM1 ODc0Ni0+cGFkcyk7Cj4gPiA+ID4gPiArCWlmIChlcnIpCj4gPiA+ID4gPiArCQlyZXR1cm4gZGV2 X2Vycl9wcm9iZShkZXYsIGVyciwKPiA+ID4gPiA+ICsJCQkJICAgICAiRmFpbGVkIHRvIHNldHVw IG1lZGlhLWVudGl0eSBwYWRzXG4iKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJZXAgPSBmd25v ZGVfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X2lkKGRldl9md25vZGUoZGV2KSwgVEMzNTg3NDZfU09V UkNFLAo+ID4gPiA+ID4gKwkJCQkJICAgICAwLCAwKTsKPiA+ID4gPiA+ICsJaWYgKCFlcCkgewo+ ID4gPiA+ID4gKwkJZGV2X2VycihkZXYsICJNaXNzaW5nIGVuZHBvaW50IG5vZGVcbiIpOwo+ID4g PiA+ID4gKwkJZXJyID0gLUVJTlZBTDsKPiA+ID4gPiA+ICsJCWdvdG8gZXJyX21jOwo+ID4gPiA+ ID4gKwl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBv cnQgJ3BhcmFsbGVsIGluJyAtPiAnY3NpIG91dCcgKi8KPiA+ID4gPiA+ICsJdmVwID0gJnRjMzU4 NzQ2LT5jc2lfdmVwOwo+ID4gPiA+ID4gKwl2ZXAtPmJ1c190eXBlID0gVjRMMl9NQlVTX0NTSTJf RFBIWTsKPiA+ID4gPiA+ICsJZXJyID0gdjRsMl9md25vZGVfZW5kcG9pbnRfYWxsb2NfcGFyc2Uo ZXAsIHZlcCk7Cj4gPiA+ID4gPiArCWZ3bm9kZV9oYW5kbGVfcHV0KGVwKTsKPiA+ID4gPiA+ICsJ aWYgKGVycikgewo+ID4gPiA+ID4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcGFyc2Ugc291 cmNlIGVuZHBvaW50XG4iKTsKPiA+ID4gPiA+ICsJCWdvdG8gZXJyX21jOwo+ID4gPiA+ID4gKwl9 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWNzaV9sYW5lcyA9IHZlcC0+YnVzLm1pcGlfY3NpMi5u dW1fZGF0YV9sYW5lczsKPiA+ID4gPiA+ICsJaWYgKGNzaV9sYW5lcyA9PSAwIHx8IGNzaV9sYW5l cyA+IDQgfHwKPiA+ID4gPiA+ICsJICAgIHZlcC0+bnJfb2ZfbGlua19mcmVxdWVuY2llcyA9PSAw KSB7Cj4gPiA+ID4gPiArCQlkZXZfZXJyKGRldiwgImVycm9yOiBJbnZhbGlkIENTSS0yIHNldHRp bmdzXG4iKTsKPiA+ID4gPiA+ICsJCWVyciA9IC1FSU5WQUw7Cj4gPiA+ID4gPiArCQlnb3RvIGVy cl92ZXA7Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogVE9ETzogQWRk IHN1cHBvcnQgdG8gaGFuZGxlIG11bHRpcGxlIGxpbmsgZnJlcXVlbmNpZXMgKi8KPiA+ID4gPiA+ ICsJY3NpX2xpbmtfcmF0ZSA9ICh1bnNpZ25lZCBsb25nKXZlcC0+bGlua19mcmVxdWVuY2llc1sw XTsKPiA+ID4gPiA+ICsJdGMzNTg3NDYtPnBsbF9yYXRlID0gdGMzNTg3NDZfZmluZF9wbGxfc2V0 dGluZ3ModGMzNTg3NDYsIHJlZmNsaywKPiA+ID4gPiA+ICsJCQkJCQkJY3NpX2xpbmtfcmF0ZSAq IDIpOwo+ID4gPiA+ID4gKwlpZiAoIXRjMzU4NzQ2LT5wbGxfcmF0ZSkgewo+ID4gPiA+ID4gKwkJ ZXJyID0gLUVJTlZBTDsKPiA+ID4gPiA+ICsJCWdvdG8gZXJyX3ZlcDsKPiA+ID4gPiA+ICsJfQo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwllcnIgPSBwaHlfbWlwaV9kcGh5X2dldF9kZWZhdWx0X2Nv bmZpZ19mb3JfaHNjbGsodGMzNTg3NDYtPnBsbF9yYXRlLAo+ID4gPiA+ID4gKwkJCQkJCQkgY3Np X2xhbmVzLAo+ID4gPiA+ID4gKwkJCQkJCQkgJnRjMzU4NzQ2LT5kcGh5X2NmZyk7Cj4gPiA+ID4g PiArCWlmIChlcnIpCj4gPiA+ID4gPiArCQlnb3RvIGVycl92ZXA7Cj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArCXRjMzU4NzQ2LT5tYnVzZm10ID0gdGMzNTg3NDZfZGVmX2ZtdDsKPiA+ID4gPiA+ICsJ dGMzNTg3NDYtPnZiX3NpemUgPSBUQzM1ODc0Nl9WQl9ERUZBVUxUX1NJWkU7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIHRjMzU4NzQ2KTsKPiA+ID4gPiA+ICsJ cG1fcnVudGltZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LCAyMDApOwo+ID4gPiA+ID4gKwlw bV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZChkZXYpOwo+ID4gPiA+ID4gKwlwbV9ydW50aW1lX2Vu YWJsZShkZXYpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwllcnIgPSBwbV9ydW50aW1lX3Jlc3Vt ZV9hbmRfZ2V0KGRldik7Cj4gPiA+ID4gPiArCWlmIChlcnIgPCAwKSB7Cj4gPiA+ID4gPiArCQlk ZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZXN1bWUgdGhlIGRldmljZVxuIik7Cj4gPiA+ID4gPiAr CQlnb3RvIGVycl92ZXA7Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJIC8q IEVuc3VyZSB0aGF0IENTSSBpbnRlcmZhY2UgaXMgcHV0IGludG8gTFAtMTEgc3RhdGUgKi8KPiA+ ID4gPiA+ICsJZXJyID0gdGMzNTg3NDZfc3dfcmVzZXQodGMzNTg3NDYpOwo+ID4gPiA+ID4gKwlp ZiAoZXJyKSB7Cj4gPiA+ID4gPiArCQlwbV9ydW50aW1lX3B1dF9ub2lkbGUoZGV2KTsKPiA+ID4g PiA+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlc2V0IHRoZSBkZXZpY2VcbiIpOwo+ID4g PiA+ID4gKwkJZ290byBlcnJfcG07Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsJZXJyID0gdGMzNTg3NDZfcmVhZCh0YzM1ODc0NiwgQ0hJUElEX1JFRywgJnZhbCk7Cj4gPiA+ ID4gPiArCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koZGV2KTsKPiA+ID4gPiA+ICsJcG1fcnVu dGltZV9wdXRfc3luY19hdXRvc3VzcGVuZChkZXYpOwo+ID4gPiA+ID4gKwlpZiAoZXJyKSB7Cj4g PiA+ID4gPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIGNoaXBpZFxuIik7Cj4gPiA+ ID4gPiArCQllcnIgPSAtRU5PREVWOwo+ID4gPiA+ID4gKwkJZ290byBlcnJfcG07Cj4gPiA+ID4g PiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKEZJRUxEX0dFVChDSElQSUQsIHZhbCkg IT0gMHg0NCkgewo+ID4gPiA+ID4gKwkJZGV2X2VycihkZXYsICJJbnZhbGlkIGNoaXBpZCAweCUw MnhcbiIsCj4gPiA+ID4gPiArCQkJKHUzMilGSUVMRF9HRVQoQ0hJUElELCB2YWwpKTsKPiA+ID4g PiA+ICsJCWVyciA9IC1FTk9ERVY7Cj4gPiA+ID4gPiArCQlnb3RvIGVycl9wbTsKPiA+ID4gPiA+ ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkvKiBPcHRpb25hbCBNQ0xLIHByb3ZpZGVyIHN1 cHBvcnQgKi8KPiA+ID4gPiA+ICsJaWYgKGRldmljZV9wcm9wZXJ0eV9wcmVzZW50KGRldiwgIiNj bG9jay1jZWxscyIpKSB7Cj4gPiA+ID4gPiArCQljb25zdCBjaGFyICptY2xrX25hbWU7Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArCQkvKiBJbml0IHRvIGhpZ2hlc3QgcG9zc2liZWwgTUNMSyAqLwo+ ID4gPiA+ID4gKwkJdGMzNTg3NDYtPm1jbGtfcG9zdGRpdiA9IDUxMjsKPiA+ID4gPiA+ICsJCXRj MzU4NzQ2LT5tY2xrX3ByZWRpdiA9IDg7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQltY2xrX25h bWUgPSAidGMzNTg3NDYtbWNsayI7Cj4gPiA+ID4gPiArCQlkZXZpY2VfcHJvcGVydHlfcmVhZF9z dHJpbmcoZGV2LCAiY2xvY2stb3V0cHV0LW5hbWVzIiwKPiA+ID4gPiA+ICsJCQkJCSAgICAmbWNs a19uYW1lKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCW1jbGtfaW5pdGRhdGEubmFtZSA9IG1j bGtfbmFtZTsKPiA+ID4gPiA+ICsJCW1jbGtfaW5pdGRhdGEub3BzID0gJnRjMzU4NzQ2X21jbGtf b3BzOwo+ID4gPiA+ID4gKwkJdGMzNTg3NDYtPm1jbGtfaHcuaW5pdCA9ICZtY2xrX2luaXRkYXRh Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJZXJyID0gZGV2bV9jbGtfaHdfcmVnaXN0ZXIoZGV2 LCAmdGMzNTg3NDYtPm1jbGtfaHcpOwo+ID4gPiA+ID4gKwkJaWYgKGVycikgewo+ID4gPiA+ID4g KwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIG1jbGsgcHJvdmlkZXJcbiIpOwo+ ID4gPiA+ID4gKwkJCWdvdG8gZXJyX3BtOwo+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKwkJZXJyID0gZGV2bV9vZl9jbGtfYWRkX2h3X3Byb3ZpZGVyKGRldiwgb2ZfY2xrX2h3 X3NpbXBsZV9nZXQsCj4gPiA+ID4gPiArCQkJCQkJICAmdGMzNTg3NDYtPm1jbGtfaHcpOwo+ID4g PiA+ID4gKwkJaWYgKGVycikgewo+ID4gPiA+ID4gKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRv IGFkZCBtY2xrIHByb3ZpZGVyXG4iKTsKPiA+ID4gPiA+ICsJCQlnb3RvIGVycl9wbTsKPiA+ID4g PiA+ICsJCX0KPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwl2NGwyX2N0cmxf aGFuZGxlcl9pbml0KCZ0YzM1ODc0Ni0+Y3RybF9oZGwsIDEpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKwljdHJsID0gdjRsMl9jdHJsX25ld19pbnRfbWVudSgmdGMzNTg3NDYtPmN0cmxfaGRsLCBO VUxMLAo+ID4gPiA+ID4gKwkJCQkgICAgICBWNEwyX0NJRF9MSU5LX0ZSRVEsIDAsIDAsCj4gPiA+ ID4gPiArCQkJCSAgICAgIHZlcC0+bGlua19mcmVxdWVuY2llcyk7Cj4gPiA+ID4gPiArCWlmIChj dHJsKQo+ID4gPiA+ID4gKwkJY3RybC0+ZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZ Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwl0YzM1ODc0Ni0+c2QuY3RybF9oYW5kbGVyID0gJnRj MzU4NzQ2LT5jdHJsX2hkbDsKPiA+ID4gPiA+ICsJaWYgKHRjMzU4NzQ2LT5jdHJsX2hkbC5lcnJv cikgewo+ID4gPiA+ID4gKwkJZXJyID0gdGMzNTg3NDYtPmN0cmxfaGRsLmVycm9yOwo+ID4gPiA+ ID4gKwkJZ290byBlcnJfcG07Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJ djRsMl9jdHJsX2hhbmRsZXJfc2V0dXAoJnRjMzU4NzQ2LT5jdHJsX2hkbCk7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCWVyciA9IHRjMzU4NzQ2X2FzeW5jX3JlZ2lzdGVyKHRjMzU4NzQ2KTsKPiA+ ID4gPiA+ICsJaWYgKGVyciA8IDApCj4gPiA+ID4gPiArCQlnb3RvIGVycl9jdHJsOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwlkZXZfaW5mbyhkZXYsICIlcyBmb3VuZCBAIDB4JXggKCVzKVxuIiwg Y2xpZW50LT5uYW1lLAo+ID4gPiA+ID4gKwkJICBjbGllbnQtPmFkZHIsIGNsaWVudC0+YWRhcHRl ci0+bmFtZSk7Cj4gPiA+ID4gCj4gPiA+ID4gSSdkIHNraXAgdGhpcyB0byBhdm9pZCBhZGRpbmcg bm9pc2UgdG8gdGhlIGtlcm5lbCBsb2cgYXQgYm9vdCB0aW1lLiBJCj4gPiA+ID4gd291bGQgYWxz byBwcm9iYWJseSBzcGxpdCBzb21lIG9mIHRoZSBjb2RlIG91dCBvZiB0aGUgcHJvYmUgZnVuY3Rp b24gYXMKPiA+ID4gPiBpdCdzIGZhaXJseSBsYXJnZS4gVXAgdG8geW91Lgo+ID4gPiAKPiA+ID4g WWVzIGl0IGlzIGxhcmdlIGJ1dCBtb3N0IG9mIGl0IGlzIGp1c3QgcmVxdWVzdGluZyBzdHVmZiBh bmQgc28uLgo+ID4gPiBUaGVyZWZvcmUgSSBrZXB0IGl0IGhlcmUgc2luY2UgSSBkb24ndCBuZWVk IGl0IGVsc2V3aGVyZS4gV2hhdCBhYm91dAo+ID4gPiBzZXR0aW5nIGl0IHRvIGRldl9kYmcoKT8g U29tZXRpbWVzIGl0IGNhbiBiZSB1c2VmdWwgZS5nLiB0byBmaW5kIHRoZQo+ID4gPiBwcm9ibGVt IHdoeSAvZGV2L21lZGlhIGlzIG5vdCBjb21taW5nIHVwLi4KPiA+IAo+ID4gSSBmaW5kIHRoYXQg ZW5hYmxpbmcgZGV2X2RiZygpIG1lc3NhZ2VzIGZyb20gZHJpdmVycy9iYXNlL2RkLmMgYXJlCj4g PiBoZWxwZnVsIGZvciB0aGF0LCBidXQgYSBkZXZfZGJnKCkgbWVzc2FnZSBoZXJlIGlzIGZpbmUg dG9vLgo+IAo+IEFoIG9rYXksIGRpZG4ndCBjaGVja2VkIHRoYXQgZGVlcC4gSSBjYW4gcmVtb3Zl IGl0IGlmIHlvdSB3YW50LCBpbiBteSB2Mgo+IEkgY2hhbmdlZCBpdCB0byBkZXZfZGJnKCkuCj4g Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g K2Vycl9jdHJsOgo+ID4gPiA+ID4gKwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZ0YzM1ODc0Ni0+ Y3RybF9oZGwpOwo+ID4gPiA+ID4gK2Vycl9wbToKPiA+ID4gPiA+ICsJcG1fcnVudGltZV9kaXNh YmxlKGRldik7Cj4gPiA+ID4gPiArCXBtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZChkZXYpOwo+ID4g PiA+ID4gKwlwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKGRldik7Cj4gPiA+ID4gPiAr ZXJyX3ZlcDoKPiA+ID4gPiA+ICsJdjRsMl9md25vZGVfZW5kcG9pbnRfZnJlZSh2ZXApOwo+ID4g PiA+ID4gK2Vycl9tYzoKPiA+ID4gPiA+ICsJbWVkaWFfZW50aXR5X2NsZWFudXAoJnNkLT5lbnRp dHkpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXR1cm4gZXJyOwo+ID4gPiA+ID4gK30KPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgaW50IHRjMzU4NzQ2X3JlbW92ZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsJc3RydWN0IHY0bDJfc3Vi ZGV2ICpzZCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+ID4gPiA+ID4gKwlzdHJ1Y3Qg dGMzNTg3NDYgKnRjMzU4NzQ2ID0gdG9fdGMzNTg3NDYoc2QpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZ0YzM1ODc0Ni0+Y3RybF9oZGwpOwo+ID4gPiA+ ID4gKwl2NGwyX2Z3bm9kZV9lbmRwb2ludF9mcmVlKCZ0YzM1ODc0Ni0+Y3NpX3ZlcCk7Cj4gPiA+ ID4gPiArCXY0bDJfYXN5bmNfbmZfdW5yZWdpc3RlcigmdGMzNTg3NDYtPm5vdGlmaWVyKTsKPiA+ ID4gPiA+ICsJdjRsMl9hc3luY19uZl9jbGVhbnVwKCZ0YzM1ODc0Ni0+bm90aWZpZXIpOwo+ID4g PiA+ID4gKwl2NGwyX2FzeW5jX3VucmVnaXN0ZXJfc3ViZGV2KHNkKTsKPiA+ID4gPiA+ICsJdjRs Ml9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOwo+ID4gPiA+IAo+ID4gPiA+IFRoaXMgc2hv dWxkbid0IGJlIG5lZWRlZCB2NGwyX2FzeW5jX3VucmVnaXN0ZXJfc3ViZGV2KCkgc2hvdWxkIGJl Cj4gPiA+ID4gZW5vdWdoLgo+ID4gPiAKPiA+ID4gT2theSwgdGhhbmtzLiBUaGVyZSBhcmUgYSBs b3Qgb2YgdW5yZWdpc3RlciBoZWxwZXJzIGluIHRoZSB2NGwyIHNwYWNlLi4KPiA+IAo+ID4gVG9v IG1hbnkgb2YgdGhlbSBpbmRlZWQuIEknZCBsaWtlIHRvIHNpbXBsaWZ5IGFsbCB0aGF0Lgo+IAo+ ICpUaHVtYnMgdXAqCj4gCj4gSSBhbHJlYWR5IHB1c2hlZCBteSB2MiB3aGljaCBuZWVkcyBsaXR0 bGUgcmV3b3JrIGR1ZSB0bwo+IGtlcm5lbC10ZXN0LXJvYm90IGZpbmRpbmdzIHNvIEkgd2lsbCBz ZW5kIGEgdjMuIFNvIGlmIHRoZXJlIGFyZSBhbnkKPiBmdXJ0aGVyIGZpbmRpbmdzIGxldCdzIG1v dmUgb24gdG8gdGhlIHYyLgo+IAo+ID4gPiA+ID4gKwltZWRpYV9lbnRpdHlfY2xlYW51cCgmc2Qt PmVudGl0eSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXBtX3J1bnRpbWVfZGlzYWJsZShzZC0+ ZGV2KTsKPiA+ID4gPiA+ICsJcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKHNkLT5kZXYpOwo+ID4g PiA+ID4gKwlwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKHNkLT5kZXYpOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArc3RhdGljIGludCB0YzM1ODc0Nl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ ID4gPiA+ICt7Cj4gPiA+ID4gPiArCXN0cnVjdCB0YzM1ODc0NiAqdGMzNTg3NDYgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKHRjMzU4NzQ2LT5yZWZjbGspOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXR1cm4gcmVn dWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9TSVpFKHRjMzU4NzQ2X3N1cHBsaWVzKSwKPiA+ID4g PiA+ICsJCQkJICAgICAgdGMzNTg3NDYtPnN1cHBsaWVzKTsKPiA+ID4gPiAKPiA+ID4gPiBTaG91 bGRuJ3QgeW91IHJlZW5hYmxlIHRoZSBjbG9jayBpZiB0aGlzIGZhaWxzID8KPiA+ID4gCj4gPiA+ IEhtLi4gaWYgdGhpcyBmYWlscyBJIGNvdWxkIGVuZCBpbiBhIHVuZGVmaW5lZCBjaGlwIHN0YXRl LiBCdXQgSSBnb3QgdGhlCj4gPiA+IHBvaW50IHRoYXQgdGhlIGZyYW1ld29yayB3b3VsZCBiZSBp biBhIGJhZCBzdGF0ZSBpZiBpdCB0cmllcyBhZ2FpbiB0bwo+ID4gPiBzdXNwZW5kIHRoZSBkZXZp Y2UuCj4gPiAKPiA+IEl0IHdvdWxkIGJlLCBhbmQgd2l0aG91dCBhIHdheSB0byByZWNvdmVyLCBz byB0aGF0IGNvdWxkIGJlIGFuIGlzc3VlLgo+ID4gCj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gK3N0YXRpYyBpbnQgdGMzNTg3NDZfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikK PiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCXN0cnVjdCB0YzM1ODc0NiAqdGMzNTg3NDYgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKPiA+ID4gPiA+ICsJaW50IGVycjsKPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKHRjMzU4NzQ2LT5yZXNldF9ncGlvLCAxKTsKPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsJZXJyID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUodGMz NTg3NDZfc3VwcGxpZXMpLAo+ID4gPiA+ID4gKwkJCQkgICAgdGMzNTg3NDYtPnN1cHBsaWVzKTsK PiA+ID4gPiA+ICsJaWYgKGVycikKPiA+ID4gPiA+ICsJCXJldHVybiBlcnI7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCS8qIG1pbi4gMjAwbnMgKi8KPiA+ID4gPiA+ICsJdXNsZWVwX3JhbmdlKDEw LCAyMCk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWdwaW9kX3NldF92YWx1ZSh0YzM1ODc0Ni0+ cmVzZXRfZ3BpbywgMCk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWVyciA9IGNsa19wcmVwYXJl X2VuYWJsZSh0YzM1ODc0Ni0+cmVmY2xrKTsKPiA+ID4gPiA+ICsJaWYgKGVycikKPiA+ID4gPiA+ ICsJCXJldHVybiBlcnI7Cj4gPiA+ID4gCj4gPiA+ID4gVGhlIHJlZ3VsYXRvcnMgbmVlZCB0byBi ZSBkaXNhYmxlZCBpbiBjYXNlIG9mIGZhaWx1cmUgaGVyZSBhbmQgYmVsb3cKPiA+ID4gPiAoYW5k IHNvIGRvZXMgdGhlIGNsb2NrIGJlbG93KS4KPiA+ID4gCj4gPiA+IFllcywgeW91J3JlIHJpZ2h0 Lgo+ID4gPiAKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogbWluLiA3MDB1cyAuLi4gMW1zICov Cj4gPiA+ID4gPiArCXVzbGVlcF9yYW5nZSgxMDAwLCAxNTAwKTsKPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICsJLyogU3luYyBzdGF0ZSAqLwo+ID4gPiA+ID4gKwllcnIgPSB0YzM1ODc0Nl9hcHBseV9w bGxfY29uZmlnKHRjMzU4NzQ2KTsKPiA+ID4gPiA+ICsJaWYgKGVycikKPiA+ID4gPiA+ICsJCXJl dHVybiBlcnI7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWVyciA9IHRjMzU4NzQ2X2FwcGx5X2Rw aHlfY29uZmlnKHRjMzU4NzQ2KTsKPiA+ID4gPiA+ICsJaWYgKGVycikKPiA+ID4gPiA+ICsJCXJl dHVybiBlcnI7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXJldHVybiB0YzM1ODc0Nl9hcHBseV9t aXNjX2NvbmZpZyh0YzM1ODc0Nik7Cj4gPiA+ID4gCj4gPiA+ID4gRG9lcyBhbGwgdGhpcyBiZWxv bmcgdG8gdGhlIFBNIHJlc3VtZSBoYW5kbGVyID8gSXQgc2VlbXMgY29uZmlndXJhdGlvbgo+ID4g PiA+IGNvdWxkIGJlIGhhbmRsZWQgaW4gLnNfc3RyZWFtKCkgaW5zdGVhZC4KPiA+ID4gCj4gPiA+ IFRoaXMgZ2V0cyBjYWxsZWQgYnkgdGhlIHNfc3RyZWFtKCkgZHVyaW5nIGdldHRpbmcgdGhlIHBv d2VyIHN0YXRlIGJ1dCBJCj4gPiA+IGNhbiBtb3ZlIHRoZSBkcGh5L21pc2NfY29uZmlnIHRvIHRo ZSAuc19zdHJlYW0oKSBvZiBjb3Vyc2UuCj4gPiAKPiA+IFRoYXQgd291bGQgYmUgbmljZSwgdGhh bmtzLgo+ID4gCj4gPiA+IFRoZSBwbGwKPiA+ID4gbmVlZHMgdG8gYmUgdGhlcmUgc2luY2UgdGhl IGRldmljZSBjYW4gYmUgYSBjbG9jayBwcm92aWRlciBlLmcuIGZvciB0aGUKPiA+ID4gc2Vuc29y Lgo+ID4gCj4gPiBPSy4KPiA+IAo+ID4gPiBUaGFua3MgZm9yIHRoZSByZXZpZXcgOikKPiA+ID4g Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK0RFRklORV9SVU5USU1FX0RFVl9Q TV9PUFModGMzNTg3NDZfcG1fb3BzLCB0YzM1ODc0Nl9zdXNwZW5kLAo+ID4gPiA+ID4gKwkJCSAg dGMzNTg3NDZfcmVzdW1lLCBOVUxMKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBfX21heWJlX3VudXNlZCB0YzM1ODc0Nl9vZl9tYXRjaFtd ID0gewo+ID4gPiA+ID4gKwl7IC5jb21wYXRpYmxlID0gInRvc2hpYmEsdGMzNTg3NDYiIH0sCj4g PiA+ID4gPiArCXsgfSwKPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gK01PRFVMRV9ERVZJQ0VfVEFC TEUob2YsIHRjMzU4NzQ2X29mX21hdGNoKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMg c3RydWN0IGkyY19kcml2ZXIgdGMzNTg3NDZfZHJpdmVyID0gewo+ID4gPiA+ID4gKwkuZHJpdmVy ID0gewo+ID4gPiA+ID4gKwkJLm5hbWUgPSAidGMzNTg3NDYiLAo+ID4gPiA+ID4gKwkJLnBtID0g cG1fcHRyKCZ0YzM1ODc0Nl9wbV9vcHMpLAo+ID4gPiA+ID4gKwkJLm9mX21hdGNoX3RhYmxlID0g dGMzNTg3NDZfb2ZfbWF0Y2gsCj4gPiA+ID4gPiArCX0sCj4gPiA+ID4gPiArCS5wcm9iZV9uZXcg PSB0YzM1ODc0Nl9wcm9iZSwKPiA+ID4gPiA+ICsJLnJlbW92ZSA9IHRjMzU4NzQ2X3JlbW92ZSwK PiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK21vZHVsZV9pMmNfZHJpdmVyKHRj MzU4NzQ2X2RyaXZlcik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArTU9EVUxFX0RFU0NSSVBUSU9O KCJUb3NoaWJhIFRDMzU4NzQ2IFBhcmFsbGVsIHRvIENTSS0yIGJyaWRnZSBkcml2ZXIiKTsKPiA+ ID4gPiA+ICtNT0RVTEVfQVVUSE9SKCJNYXJjbyBGZWxzY2ggPGtlcm5lbEBwZW5ndXRyb25peC5k ZT4iKTsKPiA+ID4gPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7CgotLSAKUmVnYXJkcywKCkxh dXJlbnQgUGluY2hhcnQKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LXBoeQo=