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 421A2C3DA64 for ; Thu, 1 Aug 2024 15:02:31 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=OaLt2MS52YCuzyhIwN1rZwEQneuDL4pANvzUg9du35M=; b=y+k85JZj3CfKRm ndduod5dfAEH1CINbz+EqG1VKLktfh4Va9HyJJDDYmQkULH9pxudtuil/njDBPqzhwKb+f2afB0yN YunLiRXh9jxmBdct3T668+pTsJF2mEuDqFO8eikuqnopDcn3/6QNsSzQAWAUf39ptkoRPp8dhY0xL ef/FKq/EFFMweYkGcNJ/MglHTL2WS11JSaOUtGPyUD/r/q/dKKeXJG7G10YYwSxfn3Glq5UKk2nHg j30Jz6UyqYJ09Ks5fyd/mAYoyOEWYFReRlQ7R2+qmqCJoH2d73nyIJw9+Wug1jn/Tw9zfqep6ntyo dHGP4GV86W/zdVScu5GA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sZXK2-00000005me4-2qjJ; Thu, 01 Aug 2024 15:02:30 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sZXJz-00000005md0-0cU2 for linux-i3c@lists.infradead.org; Thu, 01 Aug 2024 15:02:29 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 65094628DA; Thu, 1 Aug 2024 15:02:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 26245C4AF10; Thu, 1 Aug 2024 15:02:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1722524546; bh=4zDqS5OGfFFYJ7C9t087uJrRGvSWNk5ATXWz1L8sLBQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=scxUgm3hOPMdfJQnybL/+gCjB3cKg7NWckuxyIpWbw2srC0aJ6hPEnj8oAdigwn5s /9bk9+huMXFb8YopWt8tc2KxfzPbFeg5Y0touf6f6vyanvFi9d58mssV8C55aBg6xx wyxeUGBgfgUvXM3PhHUHwqDN4lM2gcdoqTyF5lJwJ+3NzDuZAahZICDWybBPsRawKq j8Fq7x8xexPGqVl0hbYU/ShAwgTAc4Vrf310wA9vT+LtRnWdiLKa9xXgkhZUDjMetP b2vYkiHV99bFYrxsiESwqkIDriwORbUD5pms7EEWcoPmCT/tyljoRpP+ek4YboEdz+ 2+zNnqX9KdnfA== Message-ID: Date: Thu, 1 Aug 2024 17:02:19 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 2/2] i3c: master: Add Nuvoton npcm845 i3c master driver To: Stanley Chu , alexandre.belloni@bootlin.com, robh@kernel.org, krzk+dt@kernel.org, linux-i3c@lists.infradead.org Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, openbmc@lists.ozlabs.org, tomer.maimon@nuvoton.com, kwliu@nuvoton.com, yschu@nuvoton.com, cpchiang1@nuvoton.com References: <20240801071946.43266-1-yschu@nuvoton.com> <20240801071946.43266-3-yschu@nuvoton.com> From: Krzysztof Kozlowski Content-Language: en-US Autocrypt: addr=krzk@kernel.org; keydata= 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 fv0= In-Reply-To: <20240801071946.43266-3-yschu@nuvoton.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240801_080227_359507_B297820E X-CRM114-Status: GOOD ( 22.15 ) X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org T24gMDEvMDgvMjAyNCAwOToxOSwgU3RhbmxleSBDaHUgd3JvdGU6Cj4gQWRkIHN1cHBvcnQgZm9y IHRoZSBOdXZvdG9uIG5wY204NDUgaTNjIGNvbnRyb2xsZXIgd2hpY2gKPiBpbXBsZW1lbnRzIEkz QyBtYXN0ZXIgZnVuY3Rpb25hbGl0eSBhcyBkZWZpbmVkIGluIHRoZSBNSVBJCj4gQWxsaWFuY2Ug U3BlY2lmaWNhdGlvbiBmb3IgSTNDLCBWZXJzaW9uIDEuMC4KPiAKPiBUaGUgbWFzdGVyIHJvbGUg aXMgc3VwcG9ydGVkIGluIFNEUiBtb2RlIG9ubHkuIElCSSBhbmQgSG90LWpvaW4KPiByZXF1c3Rz IGFyZSBzdXBwb3J0ZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogU3RhbmxleSBDaHUgPHlzY2h1QG51 dm90b24uY29tPgo+IFNpZ25lZC1vZmYtYnk6IEphbWVzIENoaWFuZyA8Y3BjaGlhbmcxQG51dm90 b24uY29tPgo+IC0tLQo+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA3ICsKPiAgZHJpdmVycy9pM2MvbWFzdGVyL0tjb25maWcgICAgICAgICAgICAgIHwgICAx NCArCj4gIGRyaXZlcnMvaTNjL21hc3Rlci9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgIDEgKwo+ ICBkcml2ZXJzL2kzYy9tYXN0ZXIvbnBjbTg0NS1pM2MtbWFzdGVyLmMgfCAyMzY0ICsrKysrKysr KysrKysrKysrKysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjM4NiBpbnNlcnRpb25zKCspCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2kzYy9tYXN0ZXIvbnBjbTg0NS1pM2MtbWFzdGVy LmMKPiAKPiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwo+IGluZGV4IDQy ZGVjZGUzODMyMC4uMmQzMGI2ZTQxOGQ4IDEwMDY0NAo+IC0tLSBhL01BSU5UQUlORVJTCj4gKysr IGIvTUFJTlRBSU5FUlMKPiBAQCAtMjY3MCw2ICsyNjcwLDEzIEBAIEY6CURvY3VtZW50YXRpb24v dXNlcnNwYWNlLWFwaS9tZWRpYS9kcml2ZXJzL25wY20tdmlkZW8ucnN0Cj4gIEY6CWRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbnV2b3Rvbi8KPiAgRjoJaW5jbHVkZS91YXBpL2xpbnV4L25wY20tdmlk ZW8uaAo+ICAKPiArQVJNL05VVk9UT04gTlBDTTg0NSBJM0MgTUFTVEVSIERSSVZFUgoKVXNlIHBy b3BlciB0ZXJtaW5vbG9neS4gTWFzdGVyIGlzIGdvbmUgc2luY2UgMjAyMSwgcmlnaHQ/CgpUaGlz IGFwcGxpZXMgZXZlcnl3aGVyZS4KCj4gK006CVN0YW5sZXkgQ2h1IDx5c2NodUBudXZvdG9uLmNv bT4KPiArTToJSmFtZXMgQ2hpYW5nIDxjcGNoaWFuZzFAbnV2b3Rvbi5jb20+Cj4gK1M6CU1haW50 YWluZWQKPiArRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kzYy9udXZvdG9u LGkzYy1tYXN0ZXIueWFtbAo+ICtGOglkcml2ZXJzL2kzYy9tYXN0ZXIvbnBjbTg0NS1pM2MtbWFz dGVyLmMKPiArCj4gIEFSTS9OVVZPVE9OIFdQQ000NTAgQVJDSElURUNUVVJFCj4gIE06CUpvbmF0 aGFuIE5ldXNjaMOkZmVyIDxqLm5ldXNjaGFlZmVyQGdteC5uZXQ+Cj4gIEw6CW9wZW5ibWNAbGlz dHMub3psYWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaTNjL21hc3Rlci9LY29uZmlnIGIvZHJpdmVycy9pM2MvbWFzdGVyL0tjb25m aWcKPiBpbmRleCA5MGRlZTNlYzU1MjAuLmE3MWQ1MDRkNDc0NCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2kzYy9tYXN0ZXIvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvaTNjL21hc3Rlci9LY29uZmln Cj4gQEAgLTQ0LDYgKzQ0LDIwIEBAIGNvbmZpZyBTVkNfSTNDX01BU1RFUgo+ICAJaGVscAo+ICAJ ICBTdXBwb3J0IGZvciBTaWx2YWNvIEkzQyBEdWFsLVJvbGUgTWFzdGVyIENvbnRyb2xsZXIuCj4g IAo+ICtjb25maWcgTlBDTTg0NV9JM0NfTUFTVEVSCj4gKwl0cmlzdGF0ZSAiTnV2b3RvbiBOUENN ODQ1IEkzQyBtYXN0ZXIgZHJpdmVyIgo+ICsJZGVwZW5kcyBvbiBJM0MKPiArCWRlcGVuZHMgb24g SEFTX0lPTUVNCj4gKwlkZXBlbmRzIG9uIEFSQ0hfTlBDTSB8fCBDT01QSUxFX1RFU1QKPiArCWhl bHAKPiArCSAgU3VwcG9ydCBmb3IgTnV2b3RvbiBOUENNODQ1IEkzQyBNYXN0ZXIgQ29udHJvbGxl ci4KPiArCj4gKwkgIFRoaXMgaGFyZHdhcmUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNWQyBJM0Mg Y29udHJvbGxlcjsgdGhpcwo+ICsJICBkcml2ZXIgYWRkcyBwbGF0Zm9ybSBzcGVjaWZpYyBzdXBw b3J0IGZvciBOUENNODQ1IGhhcmR3YXJlLgo+ICsKPiArCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28g YmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQo+ICsJICB3aWxsIGJlIGNh bGxlZCBucGNtODQ1LWkzYy1tYXN0ZXIuCj4gKwo+ICBjb25maWcgTUlQSV9JM0NfSENJCj4gIAl0 cmlzdGF0ZSAiTUlQSSBJM0MgSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSBkcml2ZXIgKEVYUEVS SU1FTlRBTCkiCj4gIAlkZXBlbmRzIG9uIEkzQwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2kzYy9t YXN0ZXIvTWFrZWZpbGUgYi9kcml2ZXJzL2kzYy9tYXN0ZXIvTWFrZWZpbGUKPiBpbmRleCAzZTk3 OTYwMTYwYmMuLjNlZDU1MTEzMTkwYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2kzYy9tYXN0ZXIv TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2kzYy9tYXN0ZXIvTWFrZWZpbGUKPiBAQCAtMyw0ICsz LDUgQEAgb2JqLSQoQ09ORklHX0NETlNfSTNDX01BU1RFUikJCSs9IGkzYy1tYXN0ZXItY2Rucy5v Cj4gIG9iai0kKENPTkZJR19EV19JM0NfTUFTVEVSKQkJKz0gZHctaTNjLW1hc3Rlci5vCj4gIG9i ai0kKENPTkZJR19BU1QyNjAwX0kzQ19NQVNURVIpCSs9IGFzdDI2MDAtaTNjLW1hc3Rlci5vCj4g IG9iai0kKENPTkZJR19TVkNfSTNDX01BU1RFUikJCSs9IHN2Yy1pM2MtbWFzdGVyLm8KPiArb2Jq LSQoQ09ORklHX05QQ004NDVfSTNDX01BU1RFUikJKz0gbnBjbTg0NS1pM2MtbWFzdGVyLm8KPiAg b2JqLSQoQ09ORklHX01JUElfSTNDX0hDSSkJCSs9IG1pcGktaTNjLWhjaS8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9pM2MvbWFzdGVyL25wY204NDUtaTNjLW1hc3Rlci5jIGIvZHJpdmVycy9pM2Mv bWFzdGVyL25wY204NDUtaTNjLW1hc3Rlci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjE5NjcyZmRiZTJiOAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2kzYy9tYXN0ZXIvbnBjbTg0NS1pM2MtbWFzdGVyLmMKPiBAQCAtMCwwICsxLDIzNjQgQEAK PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogTnV2b3Rv biBOUENNODQ1IEkzQyBtYXN0ZXIgZHJpdmVyCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAy NCBOdXZvdG9uIFRlY2hub2xvZ3kgQ29ycC4KPiArICogQmFzZWQgb24gdGhlIHdvcmsgZnJvbSBz dmMgaTNjIG1hc3RlciBkcml2ZXIgYW5kIGFkZCBwbGF0Zm9ybQo+ICsgKiBzcGVjaWZpYyBzdXBw b3J0IGZvciB0aGUgTlBDTTg0NSBoYXJkd2FyZS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGlu dXgvYml0ZmllbGQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvY29tcGxldGlvbi5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgo+ICsjaW5jbHVk ZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+ ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pM2MvbWFzdGVyLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KPiArCj4gKy8qIE1hc3RlciBNb2RlIFJlZ2lzdGVycyAqLwo+ICsj ZGVmaW5lIE5QQ01fSTNDX01DT05GSUcgICAgICAweDAwMAo+ICsjZGVmaW5lICAgTlBDTV9JM0Nf TUNPTkZJR19NQVNURVJfRU4gQklUKDApCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NQ09ORklHX0RJ U1RPKHgpIEZJRUxEX1BSRVAoQklUKDMpLCAoeCkpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NQ09O RklHX0hLRUVQKHgpIEZJRUxEX1BSRVAoR0VOTUFTSyg1LCA0KSwgKHgpKQo+ICsjZGVmaW5lICAg TlBDTV9JM0NfTUNPTkZJR19PRFNUT1AoeCkgRklFTERfUFJFUChCSVQoNiksICh4KSkKPiArI2Rl ZmluZSAgIE5QQ01fSTNDX01DT05GSUdfUFBCQVVEKHgpIEZJRUxEX1BSRVAoR0VOTUFTSygxMSwg OCksICh4KSkKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DT05GSUdfUFBMT1coeCkgRklFTERfUFJF UChHRU5NQVNLKDE1LCAxMiksICh4KSkKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DT05GSUdfT0RC QVVEKHgpIEZJRUxEX1BSRVAoR0VOTUFTSygyMywgMTYpLCAoeCkpCj4gKyNkZWZpbmUgICBOUENN X0kzQ19NQ09ORklHX09ESFBQKHgpIEZJRUxEX1BSRVAoQklUKDI0KSwgKHgpKQo+ICsjZGVmaW5l ICAgTlBDTV9JM0NfTUNPTkZJR19TS0VXKHgpIEZJRUxEX1BSRVAoR0VOTUFTSygyNywgMjUpLCAo eCkpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NQ09ORklHX1NLRVdfTUFTSyBHRU5NQVNLKDI3LCAy NSkKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DT05GSUdfSTJDQkFVRCh4KSBGSUVMRF9QUkVQKEdF Tk1BU0soMzEsIDI4KSwgKHgpKQo+ICsKPiArI2RlZmluZSBOUENNX0kzQ19NQ1RSTCAgICAgICAg MHgwODQKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DVFJMX1JFUVVFU1RfTUFTSyBHRU5NQVNLKDIs IDApCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NQ1RSTF9SRVFVRVNUKHgpIEZJRUxEX0dFVChHRU5N QVNLKDIsIDApLCAoeCkpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NQ1RSTF9SRVFVRVNUX05PTkUg MAo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTUNUUkxfUkVRVUVTVF9TVEFSVF9BRERSIDEKPiArI2Rl ZmluZSAgIE5QQ01fSTNDX01DVFJMX1JFUVVFU1RfU1RPUCAyCj4gKyNkZWZpbmUgICBOUENNX0kz Q19NQ1RSTF9SRVFVRVNUX0lCSV9BQ0tOQUNLIDMKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DVFJM X1JFUVVFU1RfUFJPQ19EQUEgNAo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTUNUUkxfUkVRVUVTVF9G T1JDRV9FWElUIDYKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DVFJMX1JFUVVFU1RfQVVUT19JQkkg Nwo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTUNUUkxfVFlQRV9JM0MgMAo+ICsjZGVmaW5lICAgTlBD TV9JM0NfTUNUUkxfVFlQRV9JMkMgQklUKDQpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NQ1RSTF9J QklSRVNQX0FVVE8gMAo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTUNUUkxfSUJJUkVTUF9BQ0tfV0lU SE9VVF9CWVRFIDAKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DVFJMX0lCSVJFU1BfQUNLX1dJVEhf QllURSBCSVQoNykKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DVFJMX0lCSVJFU1BfTkFDSyBCSVQo NikKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DVFJMX0lCSVJFU1BfTUFOVUFMIEdFTk1BU0soNywg NikKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DVFJMX0RJUih4KSBGSUVMRF9QUkVQKEJJVCg4KSwg KHgpKQo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTUNUUkxfRElSX1dSSVRFIDAKPiArI2RlZmluZSAg IE5QQ01fSTNDX01DVFJMX0RJUl9SRUFEIDEKPiArI2RlZmluZSAgIE5QQ01fSTNDX01DVFJMX0FE RFIoeCkgRklFTERfUFJFUChHRU5NQVNLKDE1LCA5KSwgKHgpKQo+ICsjZGVmaW5lICAgTlBDTV9J M0NfTUNUUkxfUkRURVJNKHgpIEZJRUxEX1BSRVAoR0VOTUFTSygyMywgMTYpLCAoeCkpCj4gKwo+ ICsjZGVmaW5lIE5QQ01fSTNDX01TVEFUVVMgICAgICAweDA4OAo+ICsjZGVmaW5lICAgTlBDTV9J M0NfTVNUQVRVU19TVEFURSh4KSBGSUVMRF9HRVQoR0VOTUFTSygyLCAwKSwgKHgpKQo+ICsjZGVm aW5lICAgTlBDTV9JM0NfTVNUQVRVU19TVEFURV9EQUEoeCkgKE5QQ01fSTNDX01TVEFUVVNfU1RB VEUoeCkgPT0gNSkKPiArI2RlZmluZSAgIE5QQ01fSTNDX01TVEFUVVNfU1RBVEVfSURMRSh4KSAo TlBDTV9JM0NfTVNUQVRVU19TVEFURSh4KSA9PSAwKQo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTVNU QVRVU19TVEFURV9TTFZSRVEoeCkgKE5QQ01fSTNDX01TVEFUVVNfU1RBVEUoeCkgPT0gMSkKPiAr I2RlZmluZSAgIE5QQ01fSTNDX01TVEFUVVNfU1RBVEVfSUJJQUNLKHgpIChOUENNX0kzQ19NU1RB VFVTX1NUQVRFKHgpID09IDYpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NU1RBVFVTX0JFVFdFRU4o eCkgRklFTERfR0VUKEJJVCg0KSwgKHgpKQo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTVNUQVRVU19O QUNLRUQoeCkgRklFTERfR0VUKEJJVCg1KSwgKHgpKQo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTVNU QVRVU19JQklUWVBFKHgpIEZJRUxEX0dFVChHRU5NQVNLKDcsIDYpLCAoeCkpCj4gKyNkZWZpbmUg ICBOUENNX0kzQ19NU1RBVFVTX0lCSVRZUEVfSUJJIDEKPiArI2RlZmluZSAgIE5QQ01fSTNDX01T VEFUVVNfSUJJVFlQRV9NQVNURVJfUkVRVUVTVCAyCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NU1RB VFVTX0lCSVRZUEVfSE9UX0pPSU4gMwo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTUlOVF9TTFZTVEFS VCBCSVQoOCkKPiArI2RlZmluZSAgIE5QQ01fSTNDX01JTlRfTUNUUkxET05FIEJJVCg5KQo+ICsj ZGVmaW5lICAgTlBDTV9JM0NfTUlOVF9DT01QTEVURSBCSVQoMTApCj4gKyNkZWZpbmUgICBOUENN X0kzQ19NSU5UX1JYUEVORCBCSVQoMTEpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NSU5UX1RYTk9U RlVMTCBCSVQoMTIpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NSU5UX0lCSVdPTiBCSVQoMTMpCj4g KyNkZWZpbmUgICBOUENNX0kzQ19NSU5UX0VSUldBUk4gQklUKDE1KQo+ICsjZGVmaW5lICAgTlBD TV9JM0NfTVNUQVRVU19TTFZTVEFSVCh4KSBGSUVMRF9HRVQoTlBDTV9JM0NfTUlOVF9TTFZTVEFS VCwgKHgpKQo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTVNUQVRVU19NQ1RSTERPTkUoeCkgRklFTERf R0VUKE5QQ01fSTNDX01JTlRfTUNUUkxET05FLCAoeCkpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19N U1RBVFVTX0NPTVBMRVRFKHgpIEZJRUxEX0dFVChOUENNX0kzQ19NSU5UX0NPTVBMRVRFLCAoeCkp Cj4gKyNkZWZpbmUgICBOUENNX0kzQ19NU1RBVFVTX1JYUEVORCh4KSBGSUVMRF9HRVQoTlBDTV9J M0NfTUlOVF9SWFBFTkQsICh4KSkKPiArI2RlZmluZSAgIE5QQ01fSTNDX01TVEFUVVNfVFhOT1RG VUxMKHgpIEZJRUxEX0dFVChOUENNX0kzQ19NSU5UX1RYTk9URlVMTCwgKHgpKQo+ICsjZGVmaW5l ICAgTlBDTV9JM0NfTVNUQVRVU19JQklXT04oeCkgRklFTERfR0VUKE5QQ01fSTNDX01JTlRfSUJJ V09OLCAoeCkpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NU1RBVFVTX0VSUldBUk4oeCkgRklFTERf R0VUKE5QQ01fSTNDX01JTlRfRVJSV0FSTiwgKHgpKQo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTVNU QVRVU19JQklBRERSKHgpIEZJRUxEX0dFVChHRU5NQVNLKDMwLCAyNCksICh4KSkKPiArCj4gKyNk ZWZpbmUgTlBDTV9JM0NfSUJJUlVMRVMgICAgIDB4MDhDCj4gKyNkZWZpbmUgICBOUENNX0kzQ19J QklSVUxFU19BRERSKHNsb3QsIGFkZHIpIEZJRUxEX1BSRVAoR0VOTUFTSygyOSwgMCksIFwKPiAr CQkJCQkJICAgICAgICgoYWRkcikgJiAweDNGKSA8PCAoKHNsb3QpICogNikpCj4gKyNkZWZpbmUg ICBOUENNX0kzQ19JQklSVUxFU19BRERSUyA1Cj4gKyNkZWZpbmUgICBOUENNX0kzQ19JQklSVUxF U19NU0IwIEJJVCgzMCkKPiArI2RlZmluZSAgIE5QQ01fSTNDX0lCSVJVTEVTX05PQllURSBCSVQo MzEpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19JQklSVUxFU19NQU5EQllURSAwCj4gKyNkZWZpbmUg TlBDTV9JM0NfTUlOVFNFVCAgICAgIDB4MDkwCj4gKyNkZWZpbmUgTlBDTV9JM0NfTUlOVENMUiAg ICAgIDB4MDk0Cj4gKyNkZWZpbmUgTlBDTV9JM0NfTUlOVE1BU0tFRCAgIDB4MDk4Cj4gKyNkZWZp bmUgTlBDTV9JM0NfTUVSUldBUk4gICAgIDB4MDlDCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NRVJS V0FSTl9OQUNLKHgpIEZJRUxEX0dFVChCSVQoMiksICh4KSkKPiArI2RlZmluZSAgIE5QQ01fSTND X01FUlJXQVJOX1RJTUVPVVQgQklUKDIwKQo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTUVSUldBUk5f SENSQyh4KSBGSUVMRF9HRVQoQklUKDEwKSwgKHgpKQo+ICsjZGVmaW5lIE5QQ01fSTNDX01ETUFD VFJMICAgICAweDBBMAo+ICsjZGVmaW5lICAgTlBDTV9JM0NfTURNQUNUUkxfRE1BRkIoeCkgRklF TERfUFJFUChHRU5NQVNLKDEsIDApLCAoeCkpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NRE1BQ1RS TF9ETUFUQih4KSBGSUVMRF9QUkVQKEdFTk1BU0soMywgMiksICh4KSkKPiArI2RlZmluZSAgIE5Q Q01fSTNDX01ETUFDVFJMX0RNQVdJRFRIKHgpIEZJRUxEX1BSRVAoR0VOTUFTSyg1LCA0KSwgKHgp KQo+ICsjZGVmaW5lIE5QQ01fSTNDX01EQVRBQ1RSTCAgICAweDBBQwo+ICsjZGVmaW5lICAgTlBD TV9JM0NfTURBVEFDVFJMX0ZMVVNIVEIgQklUKDApCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NREFU QUNUUkxfRkxVU0hSQiBCSVQoMSkKPiArI2RlZmluZSAgIE5QQ01fSTNDX01EQVRBQ1RSTF9VTkxP Q0tfVFJJRyBCSVQoMykKPiArI2RlZmluZSAgIE5QQ01fSTNDX01EQVRBQ1RSTF9UWFRSSUdfRklG T19OT1RfRlVMTCBHRU5NQVNLKDUsIDQpCj4gKyNkZWZpbmUgICBOUENNX0kzQ19NREFUQUNUUkxf UlhUUklHX0ZJRk9fTk9UX0VNUFRZIDAKPiArI2RlZmluZSAgIE5QQ01fSTNDX01EQVRBQ1RSTF9S WENPVU5UKHgpIEZJRUxEX0dFVChHRU5NQVNLKDI4LCAyNCksICh4KSkKPiArI2RlZmluZSAgIE5Q Q01fSTNDX01EQVRBQ1RSTF9UWENPVU5UKHgpIEZJRUxEX0dFVChHRU5NQVNLKDIwLCAxNiksICh4 KSkKPiArI2RlZmluZSAgIE5QQ01fSTNDX01EQVRBQ1RSTF9UWEZVTEwgQklUKDMwKQo+ICsjZGVm aW5lICAgTlBDTV9JM0NfTURBVEFDVFJMX1JYRU1QVFkgQklUKDMxKQo+ICsKPiArI2RlZmluZSBO UENNX0kzQ19NV0RBVEFCICAgICAgMHgwQjAKPiArI2RlZmluZSAgIE5QQ01fSTNDX01XREFUQUJf RU5EIEJJVCg4KQo+ICsKPiArI2RlZmluZSBOUENNX0kzQ19NV0RBVEFCRSAgICAgMHgwQjQKPiAr I2RlZmluZSBOUENNX0kzQ19NV0RBVEFIICAgICAgMHgwQjgKPiArI2RlZmluZSBOUENNX0kzQ19N V0RBVEFIRSAgICAgMHgwQkMKPiArI2RlZmluZSBOUENNX0kzQ19NUkRBVEFCICAgICAgMHgwQzAK PiArI2RlZmluZSBOUENNX0kzQ19NUkRBVEFIICAgICAgMHgwQzgKPiArCj4gKyNkZWZpbmUgTlBD TV9JM0NfTURZTkFERFIgICAgIDB4MEU0Cj4gKyNkZWZpbmUgICBOUENNX01EWU5BRERSX1ZBTElE IEJJVCgwKQo+ICsjZGVmaW5lICAgTlBDTV9NRFlOQUREUl9BRERSKHgpIEZJRUxEX1BSRVAoR0VO TUFTSyg3LCAxKSwgKHgpKQo+ICsKPiArI2RlZmluZSBOUENNX0kzQ19QQVJUTk8gICAgICAgMHgw NkMKPiArI2RlZmluZSBOUENNX0kzQ19WRU5ET1JJRCAgICAgMHgwNzQKPiArI2RlZmluZSAgIE5Q Q01fSTNDX1ZFTkRPUklEX1ZJRCh4KSBGSUVMRF9HRVQoR0VOTUFTSygxNCwgMCksICh4KSkKPiAr Cj4gKyNkZWZpbmUgTlBDTV9JM0NfTUFYX0RFVlMgMzIKPiArI2RlZmluZSBOUENNX0kzQ19QTV9U SU1FT1VUX01TIDEwMDAKPiArCj4gKy8qIFRoaXMgcGFyYW1ldGVyIGRlcGVuZHMgb24gdGhlIGlt cGxlbWVudGF0aW9uIGFuZCBtYXkgYmUgdHVuZWQgKi8KPiArI2RlZmluZSBOUENNX0kzQ19GSUZP X1NJWkUgMTYKPiArI2RlZmluZSBOUENNX0kzQ19NQVhfSUJJX1BBWUxPQURfU0laRSA4Cj4gKyNk ZWZpbmUgTlBDTV9JM0NfTUFYX1JEVEVSTSAyNTUKPiArI2RlZmluZSBOUENNX0kzQ19NQVhfUFBC QVVEIDE1Cj4gKyNkZWZpbmUgTlBDTV9JM0NfTUFYX1BQTE9XIDE1Cj4gKyNkZWZpbmUgTlBDTV9J M0NfTUFYX09EQkFVRCAyNTUKPiArI2RlZmluZSBOUENNX0kzQ19NQVhfSTJDQkFVRCAxNQo+ICsj ZGVmaW5lIEkzQ19TQ0xfUFBfUEVSSU9EX05TX01JTiA0MAo+ICsjZGVmaW5lIEkzQ19TQ0xfT0Rf TE9XX1BFUklPRF9OU19NSU4gMjAwCj4gKwo+ICsvKiBETUEgZGVmaW5pdGlvbnMgKi8KPiArI2Rl ZmluZSBNQVhfRE1BX0NPVU5UCQkxMDI0Cj4gKyNkZWZpbmUgRE1BX0NIX1RYCQkwCj4gKyNkZWZp bmUgRE1BX0NIX1JYCQkxCj4gKyNkZWZpbmUgTlBDTV9HRE1BX0NUTChuKQkobiAqIDB4MjAgKyAw eDAwKQo+ICsjZGVmaW5lICAgTlBDTV9HRE1BX0NUTF9HRE1BTVMoeCkgRklFTERfUFJFUChHRU5N QVNLKDMsIDIpLCAoeCkpCj4gKyNkZWZpbmUgICBOUENNX0dETUFfQ1RMX1RXUyh4KSBGSUVMRF9Q UkVQKEdFTk1BU0soMTMsIDEyKSwgKHgpKQo+ICsjZGVmaW5lICAgTlBDTV9HRE1BX0NUTF9HRE1B RU4JQklUKDApCj4gKyNkZWZpbmUgICBOUENNX0dETUFfQ1RMX0RBRklYCUJJVCg2KQo+ICsjZGVm aW5lICAgTlBDTV9HRE1BX0NUTF9TQUZJWAlCSVQoNykKPiArI2RlZmluZSAgIE5QQ01fR0RNQV9D VExfU0lFTglCSVQoOCkKPiArI2RlZmluZSAgIE5QQ01fR0RNQV9DVExfRE0JQklUKDE1KQo+ICsj ZGVmaW5lICAgTlBDTV9HRE1BX0NUTF9UQwlCSVQoMTgpCj4gKyNkZWZpbmUgTlBDTV9HRE1BX1NS Q0IobikJKG4gKiAweDIwICsgMHgwNCkKPiArI2RlZmluZSBOUENNX0dETUFfRFNUQihuKQkobiAq IDB4MjAgKyAweDA4KQo+ICsjZGVmaW5lIE5QQ01fR0RNQV9UQ05UKG4pCShuICogMHgyMCArIDB4 MEMpCj4gKyNkZWZpbmUgTlBDTV9HRE1BX0NTUkMobikJKG4gKiAweDIwICsgMHgxMCkKPiArI2Rl ZmluZSBOUENNX0dETUFfQ0RTVChuKQkobiAqIDB4MjAgKyAweDE0KQo+ICsjZGVmaW5lIE5QQ01f R0RNQV9DVENOVChuKQkobiAqIDB4MjAgKyAweDE4KQo+ICsjZGVmaW5lIE5QQ01fR0RNQV9NVVgo bikJKCgobiAmIDB4RkZGRikgPj4gMTIpICogMiArIDYpCj4gKyNkZWZpbmUgR0RNQV9DSDBfRU4J CUdFTk1BU0soNiwgNSkKPiArI2RlZmluZSBHRE1BX0NIMV9FTgkJR0VOTUFTSygyMiwgMjEpCj4g Kwo+ICtzdHJ1Y3QgbnBjbV9pM2NfY21kIHsKPiArCXU4IGFkZHI7Cj4gKwlib29sIHJudzsKPiAr CXU4ICppbjsKPiArCWNvbnN0IHZvaWQgKm91dDsKPiArCXVuc2lnbmVkIGludCBsZW47Cj4gKwl1 bnNpZ25lZCBpbnQgcmVhZF9sZW47Cj4gKwlib29sIGNvbnRpbnVlZDsKPiArCWJvb2wgdXNlX2Rt YTsKPiArfTsKPiArCj4gK3N0cnVjdCBucGNtX2kzY194ZmVyIHsKPiArCXN0cnVjdCBsaXN0X2hl YWQgbm9kZTsKPiArCXN0cnVjdCBjb21wbGV0aW9uIGNvbXA7Cj4gKwlpbnQgcmV0Owo+ICsJdW5z aWduZWQgaW50IHR5cGU7Cj4gKwl1bnNpZ25lZCBpbnQgbmNtZHM7Cj4gKwlzdHJ1Y3QgbnBjbV9p M2NfY21kIGNtZHNbXTsKPiArfTsKPiArCj4gK3N0cnVjdCBucGNtX2kzY19yZWdzX3NhdmUgewo+ ICsJdTMyIG1jb25maWc7Cj4gKwl1MzIgbWR5bmFkZHI7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgbnBj bV9kbWFfeGZlcl9kZXNjIHsKPiArCWNvbnN0IHU4ICpvdXQ7Cj4gKwl1OCAqaW47Cj4gKwl1MzIg bGVuOwo+ICsJYm9vbCBybnc7Cj4gKwlib29sIGVuZDsKPiArfTsKPiArLyoqCj4gKyAqIHN0cnVj dCBucGNtX2kzY19tYXN0ZXIgLSBucGNtODQ1IEkzQyBNYXN0ZXIgc3RydWN0dXJlCj4gKyAqIEBi YXNlOiBJM0MgbWFzdGVyIGNvbnRyb2xsZXIKPiArICogQGRldjogQ29ycmVzcG9uZGluZyBkZXZp Y2UKPiArICogQHJlZ3M6IE1lbW9yeSBtYXBwaW5nCj4gKyAqIEBzYXZlZF9yZWdzOiBWb2xhdGls ZSB2YWx1ZXMgZm9yIFBNIG9wZXJhdGlvbnMKPiArICogQGZyZWVfc2xvdHM6IEJpdCBhcnJheSBv ZiBhdmFpbGFibGUgc2xvdHMKPiArICogQGFkZHJzOiBBcnJheSBjb250YWluaW5nIHRoZSBkeW5h bWljIGFkZHJlc3NlcyBvZiBlYWNoIGF0dGFjaGVkIGRldmljZQo+ICsgKiBAZGVzY3M6IEFycmF5 IG9mIGRlc2NyaXB0b3JzLCBvbmUgcGVyIGF0dGFjaGVkIGRldmljZQo+ICsgKiBAaGpfd29yazog SG90LWpvaW4gd29yawo+ICsgKiBAaXJxOiBNYWluIGludGVycnVwdAo+ICsgKiBAcGNsazogU3lz dGVtIGNsb2NrCj4gKyAqIEBmY2xrOiBGYXN0IGNsb2NrIChidXMpCj4gKyAqIEBzY2xrOiBTbG93 IGNsb2NrIChvdGhlciBldmVudHMpCj4gKyAqIEB4ZmVycXVldWU6IFRyYW5zZmVyIHF1ZXVlIHN0 cnVjdHVyZQo+ICsgKiBAeGZlcnF1ZXVlLmxpc3Q6IExpc3QgbWVtYmVyCj4gKyAqIEB4ZmVycXVl dWUuY3VyOiBDdXJyZW50IG9uZ29pbmcgdHJhbnNmZXIKPiArICogQHhmZXJxdWV1ZS5sb2NrOiBR dWV1ZSBsb2NrCj4gKyAqIEBpYmk6IElCSSBzdHJ1Y3R1cmUKPiArICogQGliaS5udW1fc2xvdHM6 IE51bWJlciBvZiBzbG90cyBhdmFpbGFibGUgaW4gQGliaS5zbG90cwo+ICsgKiBAaWJpLnNsb3Rz OiBBdmFpbGFibGUgSUJJIHNsb3RzCj4gKyAqIEBpYmkudGJxX3Nsb3Q6IFRvIGJlIHF1ZXVlZCBJ Qkkgc2xvdAo+ICsgKiBAaWJpLmxvY2s6IElCSSBsb2NrCj4gKyAqIEBsb2NrOiBUcmFuc2ZlciBs b2NrLCBwcmV2ZW50IGNvbmN1cnJlbnQgZGFhL3ByaXZfeGZlci9jY2MKPiArICogQHJlcV9sb2Nr OiBwcm90ZWN0IGJldHdlZW4gSUJJIGlzciBhbmQgYnVzIG9wZXJhdGlvbiByZXF1ZXN0Cj4gKyAq Lwo+ICtzdHJ1Y3QgbnBjbV9pM2NfbWFzdGVyIHsKPiArCXN0cnVjdCBpM2NfbWFzdGVyX2NvbnRy b2xsZXIgYmFzZTsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCXZvaWQgX19pb21lbSAqcmVn czsKPiArCXN0cnVjdCBucGNtX2kzY19yZWdzX3NhdmUgc2F2ZWRfcmVnczsKPiArCXUzMiBmcmVl X3Nsb3RzOwo+ICsJdTggYWRkcnNbTlBDTV9JM0NfTUFYX0RFVlNdOwo+ICsJc3RydWN0IGkzY19k ZXZfZGVzYyAqZGVzY3NbTlBDTV9JM0NfTUFYX0RFVlNdOwo+ICsJc3RydWN0IHdvcmtfc3RydWN0 IGhqX3dvcms7Cj4gKwlpbnQgaXJxOwo+ICsJc3RydWN0IGNsayAqcGNsazsKPiArCXN0cnVjdCBj bGsgKmZjbGs7Cj4gKwlzdHJ1Y3Qgewo+ICsJCXUzMiBpM2NfcHBfaGk7Cj4gKwkJdTMyIGkzY19w cF9sbzsKPiArCQl1MzIgaTNjX3BwX3NkYV9yZF9za2V3Owo+ICsJCXUzMiBpM2NfcHBfc2RhX3dy X3NrZXc7Cj4gKwkJdTMyIGkzY19vZF9oaTsKPiArCQl1MzIgaTNjX29kX2xvOwo+ICsJfSBzY2xf dGltaW5nOwo+ICsJc3RydWN0IHsKPiArCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gKwkJc3Ry dWN0IG5wY21faTNjX3hmZXIgKmN1cjsKPiArCX0geGZlcnF1ZXVlOwo+ICsJc3RydWN0IHsKPiAr CQl1bnNpZ25lZCBpbnQgbnVtX3Nsb3RzOwo+ICsJCXN0cnVjdCBpM2NfZGV2X2Rlc2MgKipzbG90 czsKPiArCQlzdHJ1Y3QgaTNjX2liaV9zbG90ICp0YnFfc2xvdDsKPiArCQkvKiBQcmV2ZW50IHJh Y2VzIHdpdGhpbiBJQkkgaGFuZGxlcnMgKi8KPiArCQlzcGlubG9ja190IGxvY2s7Cj4gKwl9IGli aTsKPiArCXNwaW5sb2NrX3QgcmVxX2xvY2s7Cj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsKPiArCXN0 cnVjdCBkZW50cnkgKmRlYnVnZnM7Cj4gKwo+ICsJLyogRm9yIERNQSAqLwo+ICsJdm9pZCBfX2lv bWVtICpkbWFfcmVnczsKPiArCXZvaWQgX19pb21lbSAqZG1hX2N0bF9yZWdzOwo+ICsJYm9vbCB1 c2VfZG1hOwo+ICsJc3RydWN0IGNvbXBsZXRpb24geGZlcl9jb21wOwo+ICsJY2hhciAqZG1hX3R4 X2J1ZjsKPiArCWNoYXIgKmRtYV9yeF9idWY7Cj4gKwlkbWFfYWRkcl90IGRtYV90eF9hZGRyOwo+ ICsJZG1hX2FkZHJfdCBkbWFfcnhfYWRkcjsKPiArCXN0cnVjdCBucGNtX2RtYV94ZmVyX2Rlc2Mg ZG1hX3hmZXI7Cj4gKwo+ICsJYm9vbCBlbl9oajsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1 Y3QgbnBjbV9pM2NfaTJjX2Rldl9kYXRhIC0gRGV2aWNlIHNwZWNpZmljIGRhdGEKPiArICogQGlu ZGV4OiBJbmRleCBpbiB0aGUgbWFzdGVyIHRhYmxlcyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZGV2 aWNlCj4gKyAqIEBpYmk6IElCSSBzbG90IGluZGV4IGluIHRoZSBtYXN0ZXIgc3RydWN0dXJlCj4g KyAqIEBpYmlfcG9vbDogSUJJIHBvb2wgYXNzb2NpYXRlZCB0byB0aGlzIGRldmljZQo+ICsgKi8K PiArc3RydWN0IG5wY21faTNjX2kyY19kZXZfZGF0YSB7Cj4gKwl1OCBpbmRleDsKPiArCWludCBp Ymk7Cj4gKwlzdHJ1Y3QgaTNjX2dlbmVyaWNfaWJpX3Bvb2wgKmliaV9wb29sOwo+ICt9Owo+ICsK PiArc3RhdGljIERFRklORV9NVVRFWChucGNtX2kzY19kbWFfbG9jayk7CgpXaHkgdGhpcyBpcyBv dXRzaWRlIGRyaXZlciBwcml2YXRlIGRhdGEgLSBucGNtX2kzY19tYXN0ZXI/Cgo+ICsKPiArc3Rh dGljIGludCBucGNtX2kzY19tYXN0ZXJfd2FpdF9mb3JfY29tcGxldGUoc3RydWN0IG5wY21faTNj X21hc3RlciAqbWFzdGVyKTsKPiArc3RhdGljIHZvaWQgbnBjbV9pM2NfbWFzdGVyX3N0b3BfZG1h KHN0cnVjdCBucGNtX2kzY19tYXN0ZXIgKm1hc3Rlcik7Cj4gKwo+ICtzdGF0aWMgdm9pZCBucGNt X2kzY19tYXN0ZXJfZG1hX2xvY2sodm9pZCkKPiArewo+ICsJbXV0ZXhfbG9jaygmbnBjbV9pM2Nf ZG1hX2xvY2spOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBucGNtX2kzY19tYXN0ZXJfZG1hX3Vu bG9jayh2b2lkKQo+ICt7Cj4gKwltdXRleF91bmxvY2soJm5wY21faTNjX2RtYV9sb2NrKTsKPiAr fQoKCi4uLgoKCj4gKwo+ICtzdGF0aWMgdm9pZCBucGNtX2kzY19pbml0X2RlYnVnZnMoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiArCQkJCSBzdHJ1Y3QgbnBjbV9pM2NfbWFzdGVyICpt YXN0ZXIpCj4gK3sKPiArCWlmICghbnBjbV9pM2NfZGVidWdmc19kaXIpIHsKPiArCQlucGNtX2kz Y19kZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcigibnBjbV9pM2MiLCBOVUxMKTsKPiAr CQlpZiAoIW5wY21faTNjX2RlYnVnZnNfZGlyKQo+ICsJCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJ bWFzdGVyLT5kZWJ1Z2ZzID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKCZwZGV2LT5kZXYp LAo+ICsJCQkJCSAgICAgbnBjbV9pM2NfZGVidWdmc19kaXIpOwo+ICsJaWYgKCFtYXN0ZXItPmRl YnVnZnMpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImRlYnVnIiwg MDQ0NCwgbWFzdGVyLT5kZWJ1Z2ZzLCBtYXN0ZXIsICZkZWJ1Z19mb3BzKTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBucGNtX2kzY19zZXR1cF9kbWEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwgc3RydWN0IG5wY21faTNjX21hc3RlciAqbWFzdGVyKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGRldi0+ZGV2Owo+ICsJdTMyIGRtYV9jb25uLCBkbWFfY3RsLCByZWdfYmFzZTsK PiArCj4gKwlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtPm9mX25vZGUsICJ1c2UtZG1h IikpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJbWFzdGVyLT5kbWFfcmVncyA9IGRldm1fcGxhdGZv cm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgImRtYSIpOwo+ICsJaWYgKElTX0VSUiht YXN0ZXItPmRtYV9yZWdzKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwltYXN0ZXItPmRtYV9jdGxf cmVncyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZV9ieW5hbWUocGRldiwgImRtYV9j dGwiKTsKPiArCWlmIChJU19FUlIobWFzdGVyLT5kbWFfY3RsX3JlZ3MpKQoKCkhtPyBXaHkgdGhp cyBpcyBub3QgYSBzZXBhcmF0ZSBETUEgY29udHJvbGxlcj8KCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ ICsJLyogRE1BIFRYIHRyYW5zZmVyIHdpZHRoIGlzIDMyIGJpdHMoTVdEQVRBQiB3aWR0aCkgZm9y IGVhY2ggYnl0ZSBzZW50IHRvIEkzQyBidXMgKi8KPiArCW1hc3Rlci0+ZG1hX3R4X2J1ZiA9IGRt YV9hbGxvY19jb2hlcmVudChkZXYsIE1BWF9ETUFfQ09VTlQgKiA0LAo+ICsJCQkJCQkmbWFzdGVy LT5kbWFfdHhfYWRkciwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIW1hc3Rlci0+ZG1hX3R4X2J1ZikK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltYXN0ZXItPmRtYV9yeF9idWYgPSBkbWFfYWxs b2NfY29oZXJlbnQoZGV2LCBNQVhfRE1BX0NPVU5ULAo+ICsJCQkJCQkmbWFzdGVyLT5kbWFfcnhf YWRkciwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIW1hc3Rlci0+ZG1hX3J4X2J1Zikgewo+ICsJCWRt YV9mcmVlX2NvaGVyZW50KG1hc3Rlci0+ZGV2LCBNQVhfRE1BX0NPVU5UICogNCwgbWFzdGVyLT5k bWFfdHhfYnVmLAo+ICsJCQkJICBtYXN0ZXItPmRtYV90eF9hZGRyKTsKPiArCQlyZXR1cm4gLUVO T01FTTsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogU2V0IERNQSBjaGFubmVsIGNvbm5lY3Rpdml0 eQo+ICsJICogY2hhbm5lbCAwOiBJM0MgVFgsIGNoYW5uZWwgMTogSTNDIFJYCj4gKwkgKi8KPiAr CW9mX3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4KGRldi0+b2Zfbm9kZSwgInJlZyIsIDAsICZyZWdf YmFzZSk7Cj4gKwlkbWFfY29ubiA9IE5QQ01fR0RNQV9NVVgocmVnX2Jhc2UpOwo+ICsJZG1hX2N0 bCA9IEdETUFfQ0gwX0VOIHwgR0RNQV9DSDFfRU4gfCAoZG1hX2Nvbm4gKyAxKSA8PCAxNiB8IGRt YV9jb25uOwo+ICsJd3JpdGVsKGRtYV9jdGwsIG1hc3Rlci0+ZG1hX2N0bF9yZWdzKTsKPiArCW1h c3Rlci0+dXNlX2RtYSA9IHRydWU7Cj4gKwlkZXZfaW5mbyhkZXYsICJVc2luZyBETUEgKHJlcV9z ZWwgJWQpXG4iLCBkbWFfY29ubik7Cj4gKwo+ICsJLyoKPiArCSAqIFNldHVwIEdETUEgQ2hhbm5l bCBmb3IgVFggKE1lbW9yeSB0byBJM0MgRklGTykKPiArCSAqLwo+ICsJd3JpdGVsKG1hc3Rlci0+ ZG1hX3R4X2FkZHIsIG1hc3Rlci0+ZG1hX3JlZ3MgKyBOUENNX0dETUFfU1JDQihETUFfQ0hfVFgp KTsKPiArCXdyaXRlbChyZWdfYmFzZSArIE5QQ01fSTNDX01XREFUQUIsIG1hc3Rlci0+ZG1hX3Jl Z3MgKwo+ICsJICAgICAgIE5QQ01fR0RNQV9EU1RCKERNQV9DSF9UWCkpOwo+ICsJLyoKPiArCSAq IFNldHVwIEdETUEgQ2hhbm5lbCBmb3IgUlggKEkzQyBGSUZPIHRvIE1lbW9yeSkKPiArCSAqLwo+ ICsJd3JpdGVsKHJlZ19iYXNlICsgTlBDTV9JM0NfTVJEQVRBQiwgbWFzdGVyLT5kbWFfcmVncyAr Cj4gKwkgICAgICAgTlBDTV9HRE1BX1NSQ0IoRE1BX0NIX1JYKSk7Cj4gKwl3cml0ZWwobWFzdGVy LT5kbWFfcnhfYWRkciwgbWFzdGVyLT5kbWFfcmVncyArIE5QQ01fR0RNQV9EU1RCKERNQV9DSF9S WCkpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG5wY21faTNjX21h c3Rlcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ICsJc3RydWN0IG5wY21faTNjX21hc3RlciAqbWFz dGVyOwo+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnJlc2V0Owo+ICsJdTMyIHZhbDsKPiArCWlu dCByZXQ7Cj4gKwo+ICsJbWFzdGVyID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptYXN0ZXIp LCBHRlBfS0VSTkVMKTsKPiArCWlmICghbWFzdGVyKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsK PiArCW1hc3Rlci0+cmVncyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAw KTsKPiArCWlmIChJU19FUlIobWFzdGVyLT5yZWdzKSkKPiArCQlyZXR1cm4gUFRSX0VSUihtYXN0 ZXItPnJlZ3MpOwo+ICsKPiArCW1hc3Rlci0+cGNsayA9IGRldm1fY2xrX2dldChkZXYsICJwY2xr Iik7Cj4gKwlpZiAoSVNfRVJSKG1hc3Rlci0+cGNsaykpCj4gKwkJcmV0dXJuIFBUUl9FUlIobWFz dGVyLT5wY2xrKTsKPiArCj4gKwltYXN0ZXItPmZjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiZmFz dF9jbGsiKTsKPiArCWlmIChJU19FUlIobWFzdGVyLT5mY2xrKSkKPiArCQlyZXR1cm4gUFRSX0VS UihtYXN0ZXItPmZjbGspOwo+ICsKPiArCW1hc3Rlci0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShw ZGV2LCAwKTsKPiArCWlmIChtYXN0ZXItPmlycSA8IDApCj4gKwkJcmV0dXJuIG1hc3Rlci0+aXJx Owo+ICsKPiArCW1hc3Rlci0+ZGV2ID0gZGV2Owo+ICsKPiArCXJldCA9IG5wY21faTNjX21hc3Rl cl9wcmVwYXJlX2Nsa3MobWFzdGVyKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwlyZXNldCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXQoJnBkZXYtPmRldiwgTlVMTCk7CgpV c2UgZGV2IGNvbnNpc3RlbnRseS4KCj4gKwlpZiAoIUlTX0VSUihyZXNldCkpIHsKPiArCQlyZXNl dF9jb250cm9sX2Fzc2VydChyZXNldCk7Cj4gKwkJdWRlbGF5KDUpOwo+ICsJCXJlc2V0X2NvbnRy b2xfZGVhc3NlcnQocmVzZXQpOwo+ICsJfQo+ICsJSU5JVF9XT1JLKCZtYXN0ZXItPmhqX3dvcmss IG5wY21faTNjX21hc3Rlcl9oal93b3JrKTsKPiArCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoZGV2 LCBtYXN0ZXItPmlycSwgbnBjbV9pM2NfbWFzdGVyX2lycV9oYW5kbGVyLAo+ICsJCQkgICAgICAg SVJRRl9OT19TVVNQRU5ELCAibnBjbS1pM2MtaXJxIiwgbWFzdGVyKTsKPiArCWlmIChyZXQpCj4g KwkJZ290byBlcnJfZGlzYWJsZV9jbGtzOwo+ICsKPiArCW1hc3Rlci0+ZnJlZV9zbG90cyA9IEdF Tk1BU0soTlBDTV9JM0NfTUFYX0RFVlMgLSAxLCAwKTsKPiArCj4gKwltdXRleF9pbml0KCZtYXN0 ZXItPmxvY2spOwo+ICsJSU5JVF9MSVNUX0hFQUQoJm1hc3Rlci0+eGZlcnF1ZXVlLmxpc3QpOwo+ ICsKPiArCXNwaW5fbG9ja19pbml0KCZtYXN0ZXItPnJlcV9sb2NrKTsKPiArCXNwaW5fbG9ja19p bml0KCZtYXN0ZXItPmliaS5sb2NrKTsKPiArCW1hc3Rlci0+aWJpLm51bV9zbG90cyA9IE5QQ01f STNDX01BWF9ERVZTOwo+ICsJbWFzdGVyLT5pYmkuc2xvdHMgPSBkZXZtX2tjYWxsb2MoJnBkZXYt PmRldiwgbWFzdGVyLT5pYmkubnVtX3Nsb3RzLAoKT25jZSBhbGxvY2F0aW9uIHdpdGggZGV2LCBv dGhlciB3aXRoIHBkZXYtPmRldi4uLgoKPiArCQkJCQkgc2l6ZW9mKCptYXN0ZXItPmliaS5zbG90 cyksCj4gKwkJCQkJIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFtYXN0ZXItPmliaS5zbG90cykgewo+ ICsJCXJldCA9IC1FTk9NRU07Cj4gKwkJZ290byBlcnJfZGlzYWJsZV9jbGtzOwo+ICsJfQo+ICsK PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG1hc3Rlcik7Cj4gKwo+ICsJbnBjbV9pM2Nf bWFzdGVyX3Jlc2V0KG1hc3Rlcik7Cj4gKwo+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChk ZXYtPm9mX25vZGUsICJlbmFibGUtaGoiKSkKCgo+ICsJCW1hc3Rlci0+ZW5faGogPSB0cnVlOwo+ ICsJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJpM2MtcHAtc2NsLWhp LXBlcmlvZC1ucyIsICZ2YWwpKQo+ICsJCW1hc3Rlci0+c2NsX3RpbWluZy5pM2NfcHBfaGkgPSB2 YWw7Cj4gKwo+ICsJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJpM2Mt cHAtc2NsLWxvLXBlcmlvZC1ucyIsICZ2YWwpKQo+ICsJCW1hc3Rlci0+c2NsX3RpbWluZy5pM2Nf cHBfbG8gPSB2YWw7Cj4gKwo+ICsJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25v ZGUsICJpM2MtcHAtc2RhLXJkLXNrZXciLCAmdmFsKSkKPiArCQltYXN0ZXItPnNjbF90aW1pbmcu aTNjX3BwX3NkYV9yZF9za2V3ID0gdmFsOwo+ICsKPiArCWlmICghb2ZfcHJvcGVydHlfcmVhZF91 MzIoZGV2LT5vZl9ub2RlLCAiaTNjLXBwLXNkYS13ci1za2V3IiwgJnZhbCkpCj4gKwkJbWFzdGVy LT5zY2xfdGltaW5nLmkzY19wcF9zZGFfd3Jfc2tldyA9IHZhbDsKPiArCj4gKwlpZiAoIW9mX3By b3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgImkzYy1vZC1zY2wtaGktcGVyaW9kLW5zIiwg JnZhbCkpCj4gKwkJbWFzdGVyLT5zY2xfdGltaW5nLmkzY19vZF9oaSA9IHZhbDsKPiArCj4gKwlp ZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgImkzYy1vZC1zY2wtbG8tcGVy aW9kLW5zIiwgJnZhbCkpCj4gKwkJbWFzdGVyLT5zY2xfdGltaW5nLmkzY19vZF9sbyA9IHZhbDsK PiArCj4gKwlucGNtX2kzY19tYXN0ZXJfY2xlYXJfbWVycndhcm4obWFzdGVyKTsKPiArCW5wY21f aTNjX21hc3Rlcl9mbHVzaF9maWZvKG1hc3Rlcik7Cj4gKwo+ICsJcmV0ID0gbnBjbV9pM2Nfc2V0 dXBfZG1hKHBkZXYsIG1hc3Rlcik7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX2Rpc2FibGVf Y2xrczsKPiArCj4gKwlucGNtX2kzY19pbml0X2RlYnVnZnMocGRldiwgbWFzdGVyKTsKPiArCj4g KwkvKiBSZWdpc3RlciB0aGUgbWFzdGVyICovCj4gKwlyZXQgPSBpM2NfbWFzdGVyX3JlZ2lzdGVy KCZtYXN0ZXItPmJhc2UsICZwZGV2LT5kZXYsCj4gKwkJCQkgICZucGNtX2kzY19tYXN0ZXJfb3Bz LCBmYWxzZSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX2Rpc2FibGVfY2xrczsKPiArCj4g KwlpZiAobWFzdGVyLT5lbl9oaikgewo+ICsJCWRldl9pbmZvKG1hc3Rlci0+ZGV2LCAiZW5hYmxl IGhvdC1qb2luXG4iKTsKCkRyb3AsIG5vdCB1c2VmdWwuCgoKPiArCQlucGNtX2kzY19tYXN0ZXJf ZW5hYmxlX2ludGVycnVwdHMobWFzdGVyLCBOUENNX0kzQ19NSU5UX1NMVlNUQVJUKTsKPiArCX0K PiArCXJldHVybiAwOwo+ICsKPiArCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShtYXN0ZXItPmRl YnVnZnMpOwo+ICsKPiArZXJyX2Rpc2FibGVfY2xrczoKPiArCW5wY21faTNjX21hc3Rlcl91bnBy ZXBhcmVfY2xrcyhtYXN0ZXIpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgbnBjbV9pM2NfbWFzdGVyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ICt7Cj4gKwlzdHJ1Y3QgbnBjbV9pM2NfbWFzdGVyICptYXN0ZXIgPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsKPiArCj4gKwkvKiBBdm9pZCBpYmkgZXZlbnRzIGR1cmluZyBkcml2ZXIg dW5iaW5kaW5nICovCj4gKwl3cml0ZWwoTlBDTV9JM0NfTUlOVF9TTFZTVEFSVCwgbWFzdGVyLT5y ZWdzICsgTlBDTV9JM0NfTUlOVENMUik7Cj4gKwo+ICsJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZl KG1hc3Rlci0+ZGVidWdmcyk7Cj4gKwo+ICsJaTNjX21hc3Rlcl91bnJlZ2lzdGVyKCZtYXN0ZXIt PmJhc2UpOwo+ICsKPiArCWlmIChtYXN0ZXItPnVzZV9kbWEpIHsKPiArCQlkbWFfZnJlZV9jb2hl cmVudChtYXN0ZXItPmRldiwgTUFYX0RNQV9DT1VOVCAqIDQsIG1hc3Rlci0+ZG1hX3R4X2J1ZiwK PiArCQkJCSAgbWFzdGVyLT5kbWFfdHhfYWRkcik7Cj4gKwkJZG1hX2ZyZWVfY29oZXJlbnQobWFz dGVyLT5kZXYsIE1BWF9ETUFfQ09VTlQsIG1hc3Rlci0+ZG1hX3J4X2J1ZiwKPiArCQkJCSAgbWFz dGVyLT5kbWFfcnhfYWRkcik7Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbnBjbV9pM2NfbWFzdGVyX29mX21hdGNoX3RibFtd ID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJudXZvdG9uLG5wY204NDUtaTNjIiB9LAo+ICsJeyAv KiBzZW50aW5lbCAqLyB9LAo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBucGNtX2kz Y19tYXN0ZXJfb2ZfbWF0Y2hfdGJsKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyIG5wY21faTNjX21hc3RlciA9IHsKPiArCS5wcm9iZSA9IG5wY21faTNjX21hc3Rlcl9wcm9i ZSwKPiArCS5yZW1vdmUgPSBucGNtX2kzY19tYXN0ZXJfcmVtb3ZlLAo+ICsJLmRyaXZlciA9IHsK PiArCQkubmFtZSA9ICJucGNtODQ1LWkzYy1tYXN0ZXIiLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9 IG5wY21faTNjX21hc3Rlcl9vZl9tYXRjaF90YmwsCj4gKwl9LAo+ICt9Owo+ICttb2R1bGVfcGxh dGZvcm1fZHJpdmVyKG5wY21faTNjX21hc3Rlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJTdGFu bGV5IENodSA8eXNjaHVAbnV2b3Rvbi5jb20+Iik7Cj4gK01PRFVMRV9BVVRIT1IoIkphbWVzIENo aWFuZyA8Y3BjaGlhbmcxQG51dm90b24uY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk51 dm90b24gTlBDTTg0NSBJM0MgbWFzdGVyIGRyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BM Iik7CgpCZXN0IHJlZ2FyZHMsCktyenlzenRvZgoKCi0tIApsaW51eC1pM2MgbWFpbGluZyBsaXN0 CmxpbnV4LWkzY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtaTNjCg==