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 B8928C54EBE for ; Tue, 10 Jan 2023 09:07:44 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:From: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=7tlERBbJdwrGckFZNEFyHNqBShwRjFHzUAQnxyq2XWM=; b=JPZ0bfRjPUO9J3 ORvYRRCFdw4rTHz9NaKAa7D4oGlrru5Ydg8mN5jR3bQ0lXvn1gh3S6NrHKDw+W/xgcxBbcN50Uurc nNzrwbV1lG2/+ohf14Qob4o6n0SzA3Rz8l3LspuDtoLH+R0ZVoWrWBR1y4U8zBr0eG7DoLehfnZ/w 7hJZDgWDbLtYsoENEAxpJ5776+ZrqPZftfY69ND9FOC4STNEv/++P0HQRWSrHMSI4ZIb/wr1OUTUC IRTznTDYr45euLNMuZPjNrKzOzgwwksodUoxueNDV97ji0dkBAmiPo/yVhZfBdFWHSBoeeWhaLhMt q88uun7iU/rbVKHhFCYg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pFAah-005zYf-3s; Tue, 10 Jan 2023 09:06:43 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pFAac-005zX9-KI; Tue, 10 Jan 2023 09:06:41 +0000 Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 11D186602B36; Tue, 10 Jan 2023 09:06:36 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1673341596; bh=kbKycHo/8y4LSI1eaSTdpLeMXKbrQ1WWfguHPOeUVvE=; h=Date:Subject:From:To:Cc:References:In-Reply-To:From; b=A0B66fpuC44+WE9Eay9wGQTlwyDn6kl42S6tRA3PS4HknE04ERKJoHMyDE+Kaay3p aRHNOh5U8OjwVcVywvTaefxsRsu3n7p+zV1fYrtYzH8yHf6qJelHYsVg721V6oBmiy iIx6lbwiIMjUyCkcEfbtv1yStEpY8vUD61xtbJe1yl6gA7UwYWVqgheoKZKMbWbKaK gVvDoMbpCP2/PfKR7fOaufWU0yglwoiCm9QFKQTo8n2NTGmRFV2sjNi3PEjQV9mUpr 02KbCnzK/+MKxCh/8i/+ljWII8TGJcn2nz6F6AKZVD0YdkUyp6p19iJzxQYnabUxQo dJmbKbNtgVVfQ== Message-ID: Date: Tue, 10 Jan 2023 10:06:33 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [RESEND PATCH v3] soc: mediatek: Introduce mediatek-regulator-coupler driver Content-Language: en-US From: AngeloGioacchino Del Regno To: Matthias Brugger Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, wenst@chromium.org, alyssa.rosenzweig@collabora.com, nfraprado@collabora.com, dmitry.osipenko@collabora.com References: <20221006115816.66853-1-angelogioacchino.delregno@collabora.com> <732e4a1d-8008-072d-cedb-c6859cbfdf98@collabora.com> <19d04ffd-a79d-06f6-cb0e-fe56bc18615f@gmail.com> <0d155803-0861-ee56-fea1-abcfa77acd0a@collabora.com> In-Reply-To: <0d155803-0861-ee56-fea1-abcfa77acd0a@collabora.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230110_010638_952312_0432BE91 X-CRM114-Status: GOOD ( 40.48 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SWwgMTkvMTIvMjIgMDk6NDksIEFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIGhhIHNjcml0dG86 Cj4gSWwgMTYvMTIvMjIgMTY6MjYsIE1hdHRoaWFzIEJydWdnZXIgaGEgc2NyaXR0bzoKPj4gSGkg QW5nZWxvLAo+Pgo+PiBPbiAxNi8xMi8yMDIyIDE0OjE1LCBBbmdlbG9HaW9hY2NoaW5vIERlbCBS ZWdubyB3cm90ZToKPj4+IElsIDIxLzExLzIyIDEzOjAxLCBBbmdlbG9HaW9hY2NoaW5vIERlbCBS ZWdubyBoYSBzY3JpdHRvOgo+Pj4+IElsIDIxLzExLzIyIDEyOjQ0LCBNYXR0aGlhcyBCcnVnZ2Vy IGhhIHNjcml0dG86Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+IE9uIDA2LzEwLzIwMjIgMTM6NTgsIEFuZ2Vs b0dpb2FjY2hpbm8gRGVsIFJlZ25vIHdyb3RlOgo+Pj4+Pj4gVGhpcyBkcml2ZXIgY3VycmVudGx5 IGRlYWxzIHdpdGggR1BVLVNSQU0gcmVndWxhdG9yIGNvdXBsaW5nLCBlbnN1cmluZwo+Pj4+Pj4g dGhhdCB0aGUgU1JBTSB2b2x0YWdlIGlzIGFsd2F5cyBiZXR3ZWVuIGEgc3BlY2lmaWMgcmFuZ2Ug b2YgZGlzdGFuY2UgdG8KPj4+Pj4+IHRoZSBHUFUgdm9sdGFnZSwgZGVwZW5kaW5nIG9uIHRoZSBT b0MsIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBhY2hpZXZlCj4+Pj4+PiBzeXN0ZW0gc3RhYmlsaXR5 IGFjcm9zcyB0aGUgZnVsbCByYW5nZSBvZiBzdXBwb3J0ZWQgR1BVIGZyZXF1ZW5jaWVzLgo+Pj4+ Pj4KPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIAo+Pj4+ Pj4gPGFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9AY29sbGFib3JhLmNvbT4KPj4+Pj4+IFJldmll d2VkLWJ5OiBEbWl0cnkgT3NpcGVua28gPGRtaXRyeS5vc2lwZW5rb0Bjb2xsYWJvcmEuY29tPgo+ Pj4+Pj4gLS0tCj4+Pj4+Pgo+Pj4+Pj4gVGhpcyBkcml2ZXIgd2FzIHN1Y2Nlc3NmdWxseSB0ZXN0 ZWQgZm9yIG1vcmUgdGhhbiAzIG1vbnRocy4KPj4+Pj4+IEdQVSBEVkZTIHdvcmtzIGNvcnJlY3Rs eSB3aXRoIG5vIHN0YWJpbGl0eSBpc3N1ZXMuCj4+Pj4+Pgo+Pj4+Pj4gQ2hhbmdlcyBpbiBSRVNF TkQsdjM6Cj4+Pj4+PiDCoCBSZWJhc2VkIG92ZXIgbmV4dC0yMDIyMTAwNQo+Pj4+Pj4KPj4+Pj4+ IENoYW5nZXMgaW4gdjM6Cj4+Pj4+PiDCoCAtIEFkZGVkIGJyYWNlcyB0byBlbHNlLWlmIGJyYW5j aAo+Pj4+Pj4KPj4+Pj4+IENoYW5nZXMgaW4gdjI6Cj4+Pj4+PiDCoCAtIEFkZGVkIGNoZWNrIGZv ciBuX2NvdXBsZWQKPj4+Pj4+IMKgIC0gQWRkZWQgY2hlY2sgZm9yIHZncHUgdG8gZW5mb3JjZSBh dHRhY2hpbmcgdG8gdmdwdTwtPnNyYW0gY291cGxpbmcgb25seQo+Pj4+Pj4KPj4+Pj4+IENvbnRl eHQ6Cj4+Pj4+PiBUaGlzIGRyaXZlciBpcyB0aGUgbGFzdCBvZiB0aGUgcGllY2VzIG9mIGEgYmln Z2VyIHB1enpsZSwgYWltaW5nIHRvIGZpbmFsbHkKPj4+Pj4+IGVuYWJsZSBEeW5hbWljIFZvbHRh Z2UvRnJlcXVlbmN5IFNjYWxpbmcgZm9yIE1hbGkgR1BVcyBmb3VuZCBvbiBNZWRpYVRlawo+Pj4+ Pj4gU29DcyBvbiB0aGUgZnVsbHkgb3BlbiBzb3VyY2UgZ3JhcGhpY3Mgc3RhY2sgKFBhbmZyb3N0 IGRyaXZlcikuCj4+Pj4+Pgo+Pj4+Pj4gTm8gZGV2aWNldHJlZSBiaW5kaW5ncyBhcmUgcHJvdmlk ZWQgYmVjYXVzZSB0aGlzIGRvZXMgbm90IHJlcXVpcmUgYW55Cj4+Pj4+PiBkcml2ZXItc3BlY2lm aWMgYmluZGluZyBhdCBhbGwuCj4+Pj4+Pgo+Pj4+Pj4gTGFzdCBidXQgbm90IGxlYXN0OiBpdCB3 YXMgY2hvc2VuIHRvIGhhdmUgdGhpcyBkcml2ZXIgZW5hYmxlZCBmb3IKPj4+Pj4+ICggQVJDSF9N RURJQVRFSyAmJiBSRUdVTEFUT1IgKSB3aXRob3V0IHJlYWxseSBnaXZpbmcgYSBmcmVlIGNvbmZp Z3VyYXRpb24KPj4+Pj4+IGNob2ljZSBiZWNhdXNlLCBvbmNlIHRoZSBEVkZTIG1lY2hhbmlzbSB3 aWxsIGJlIGZ1bGx5IHdvcmtpbmcsIHVzaW5nIG9uZQo+Pj4+Pj4gb2YgdGhlIGxpc3RlZCBNZWRp YVRlayBTb0NzICp3aXRob3V0KiB0aGlzIGNvdXBsaW5nIG1lY2hhbmlzbSAqd2lsbCogbGVhZAo+ Pj4+Pj4gdG8gdW5zdGFiaWxpdGllcyBhbmQgc3lzdGVtIGNyYXNoZXMuCj4+Pj4+PiBGb3IgQ09N UElMRV9URVNULCBjaG9pY2UgaXMgZ2l2ZW4gZm9yIG9idmlvdXMgcmVhc29ucy4KPj4+Pj4+Cj4+ Pj4+PiDCoCBkcml2ZXJzL3NvYy9tZWRpYXRlay9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqAgNSArCj4+Pj4+PiDCoCBkcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtl ZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxICsKPj4+Pj4+IMKgIGRy aXZlcnMvc29jL21lZGlhdGVrL210ay1yZWd1bGF0b3ItY291cGxlci5jIHwgMTU5ICsrKysrKysr KysrKysrKysrKysKPj4+Pj4+IMKgIDMgZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKykK Pj4+Pj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstcmVn dWxhdG9yLWNvdXBsZXIuYwo+Pj4+Pj4KPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9t ZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvS2NvbmZpZwo+Pj4+Pj4gaW5k ZXggNDBkMGNjNjAwY2FlLi4zMGI1YWZjMGU1MWQgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9kcml2ZXJz L3NvYy9tZWRpYXRlay9LY29uZmlnCj4+Pj4+PiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9L Y29uZmlnCj4+Pj4+PiBAQCAtNDQsNiArNDQsMTEgQEAgY29uZmlnIE1US19QTUlDX1dSQVAKPj4+ Pj4+IMKgwqDCoMKgwqDCoMKgIG9uIGRpZmZlcmVudCBNZWRpYVRlayBTb0NzLiBUaGUgUE1JQyB3 cmFwcGVyIGlzIGEgcHJvcHJpZXRhcnkKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGhhcmR3YXJlIHRv IGNvbm5lY3QgdGhlIFBNSUMuCj4+Pj4+PiArY29uZmlnIE1US19SRUdVTEFUT1JfQ09VUExFUgo+ Pj4+Pj4gK8KgwqDCoCBib29sICJNZWRpYVRlayBTb0MgUmVndWxhdG9yIENvdXBsZXIiIGlmIENP TVBJTEVfVEVTVAo+Pj4+Pj4gK8KgwqDCoCBkZWZhdWx0IEFSQ0hfTUVESUFURUsKPj4+Pj4+ICvC oMKgwqAgZGVwZW5kcyBvbiBSRUdVTEFUT1IKPj4+Pj4+ICsKPj4+Pj4+IMKgIGNvbmZpZyBNVEtf U0NQU1lTCj4+Pj4+PiDCoMKgwqDCoMKgIGJvb2wgIk1lZGlhVGVrIFNDUFNZUyBTdXBwb3J0Igo+ Pj4+Pj4gwqDCoMKgwqDCoCBkZWZhdWx0IEFSQ0hfTUVESUFURUsKPj4+Pj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZSBiL2RyaXZlcnMvc29jL21lZGlhdGVrL01h a2VmaWxlCj4+Pj4+PiBpbmRleCAwZTllNzAzYzkzMWEuLjhjMGRkYWNiY2RlOCAxMDA2NDQKPj4+ Pj4+IC0tLSBhL2RyaXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlCj4+Pj4+PiArKysgYi9kcml2 ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZQo+Pj4+Pj4gQEAgLTMsNiArMyw3IEBAIG9iai0kKENP TkZJR19NVEtfQ01EUSkgKz0gbXRrLWNtZHEtaGVscGVyLm8KPj4+Pj4+IMKgIG9iai0kKENPTkZJ R19NVEtfREVWQVBDKSArPSBtdGstZGV2YXBjLm8KPj4+Pj4+IMKgIG9iai0kKENPTkZJR19NVEtf SU5GUkFDRkcpICs9IG10ay1pbmZyYWNmZy5vCj4+Pj4+PiDCoCBvYmotJChDT05GSUdfTVRLX1BN SUNfV1JBUCkgKz0gbXRrLXBtaWMtd3JhcC5vCj4+Pj4+PiArb2JqLSQoQ09ORklHX01US19SRUdV TEFUT1JfQ09VUExFUikgKz0gbXRrLXJlZ3VsYXRvci1jb3VwbGVyLm8KPj4+Pj4+IMKgIG9iai0k KENPTkZJR19NVEtfU0NQU1lTKSArPSBtdGstc2Nwc3lzLm8KPj4+Pj4+IMKgIG9iai0kKENPTkZJ R19NVEtfU0NQU1lTX1BNX0RPTUFJTlMpICs9IG10ay1wbS1kb21haW5zLm8KPj4+Pj4+IMKgIG9i ai0kKENPTkZJR19NVEtfTU1TWVMpICs9IG10ay1tbXN5cy5vCj4+Pj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLXJlZ3VsYXRvci1jb3VwbGVyLmMgCj4+Pj4+PiBiL2Ry aXZlcnMvc29jL21lZGlhdGVrL210ay1yZWd1bGF0b3ItY291cGxlci5jCj4+Pj4+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+Pj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hZDJlZDQyYWE2OTcKPj4+ Pj4+IC0tLSAvZGV2L251bGwKPj4+Pj4+ICsrKyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1y ZWd1bGF0b3ItY291cGxlci5jCj4+Pj4+PiBAQCAtMCwwICsxLDE1OSBAQAo+Pj4+Pj4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAq IFZvbHRhZ2UgcmVndWxhdG9ycyBjb3VwbGVyIGZvciBNZWRpYVRlayBTb0NzCj4+Pj4+PiArICoK Pj4+Pj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQ29sbGFib3JhLCBMdGQuCj4+Pj4+PiArICog QXV0aG9yOiBBbmdlbG9HaW9hY2NoaW5vIERlbCBSZWdubyA8YW5nZWxvZ2lvYWNjaGluby5kZWxy ZWdub0Bjb2xsYWJvcmEuY29tPgo+Pj4+Pj4gKyAqLwo+Pj4+Pj4gKwo+Pj4+Pj4gKyNkZWZpbmUg cHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgIjogIiBmbXQKPj4+Pj4+ICsKPj4+Pj4+ICsjaW5j bHVkZSA8bGludXgvaW5pdC5oPgo+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4+ Pj4+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvcmVndWxh dG9yL2NvdXBsZXIuaD4KPj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2RyaXZlci5o Pgo+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvbWFjaGluZS5oPgo+Pj4+Pj4gKyNp bmNsdWRlIDxsaW51eC9zdXNwZW5kLmg+Cj4+Pj4+PiArCj4+Pj4+PiArI2RlZmluZSB0b19tZWRp YXRla19jb3VwbGVyKHgpwqDCoMKgIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgCj4+Pj4+PiBtZWRp YXRla19yZWd1bGF0b3JfY291cGxlciwgY291cGxlcikKPj4+Pj4+ICsKPj4+Pj4+ICtzdHJ1Y3Qg bWVkaWF0ZWtfcmVndWxhdG9yX2NvdXBsZXIgewo+Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgcmVndWxh dG9yX2NvdXBsZXIgY291cGxlcjsKPj4+Pj4+ICvCoMKgwqAgc3RydWN0IHJlZ3VsYXRvcl9kZXYg KnZzcmFtX3JkZXY7Cj4+Pj4+PiArfTsKPj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqIFdl IGN1cnJlbnRseSBzdXBwb3J0IG9ubHkgY291cGxlcyBvZiBub3QgbW9yZSB0aGFuIHR3byB2cmVn cyBhbmQKPj4+Pj4+ICsgKiBtb2RpZnkgdGhlIHZzcmFtIHZvbHRhZ2Ugb25seSB3aGVuIGNoYW5n aW5nIHZvbHRhZ2Ugb2YgdmdwdS4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFRoaXMgZnVuY3Rpb24g aXMgbGltaXRlZCB0byB0aGUgR1BVPC0+U1JBTSB2b2x0YWdlcyByZWxhdGlvbnNoaXBzLgo+Pj4+ Pj4gKyAqLwo+Pj4+Pj4gK3N0YXRpYyBpbnQgbWVkaWF0ZWtfcmVndWxhdG9yX2JhbGFuY2Vfdm9s dGFnZShzdHJ1Y3QgcmVndWxhdG9yX2NvdXBsZXIgCj4+Pj4+PiAqY291cGxlciwKPj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg cmVndWxhdG9yX2RldiAqcmRldiwKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdXNwZW5kX3N0YXRlX3Qgc3RhdGUpCj4+Pj4+PiArewo+ Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbWVkaWF0ZWtfcmVndWxhdG9yX2NvdXBsZXIgKm1yYyA9IHRv X21lZGlhdGVrX2NvdXBsZXIoY291cGxlcik7Cj4+Pj4+PiArwqDCoMKgIGludCBtYXhfc3ByZWFk ID0gcmRldi0+Y29uc3RyYWludHMtPm1heF9zcHJlYWRbMF07Cj4+Pj4+PiArwqDCoMKgIGludCB2 c3JhbV9taW5fdVYgPSBtcmMtPnZzcmFtX3JkZXYtPmNvbnN0cmFpbnRzLT5taW5fdVY7Cj4+Pj4+ PiArwqDCoMKgIGludCB2c3JhbV9tYXhfdVYgPSBtcmMtPnZzcmFtX3JkZXYtPmNvbnN0cmFpbnRz LT5tYXhfdVY7Cj4+Pj4+PiArwqDCoMKgIGludCB2c3JhbV90YXJnZXRfbWluX3VWLCB2c3JhbV90 YXJnZXRfbWF4X3VWOwo+Pj4+Pj4gK8KgwqDCoCBpbnQgbWluX3VWID0gMDsKPj4+Pj4+ICvCoMKg wqAgaW50IG1heF91ViA9IElOVF9NQVg7Cj4+Pj4+PiArwqDCoMKgIGludCByZXQ7Cj4+Pj4+PiAr Cj4+Pj4+PiArwqDCoMKgIC8qCj4+Pj4+PiArwqDCoMKgwqAgKiBJZiB0aGUgdGFyZ2V0IGRldmlj ZSBpcyBvbiwgc2V0dGluZyB0aGUgU1JBTSB2b2x0YWdlIGRpcmVjdGx5Cj4+Pj4+PiArwqDCoMKg wqAgKiBpcyBub3Qgc3VwcG9ydGVkIGFzIGl0IHNjYWxlcyB0aHJvdWdoIGl0cyBjb3VwbGVkIHN1 cHBseSB2b2x0YWdlLgo+Pj4+Pj4gK8KgwqDCoMKgICoKPj4+Pj4+ICvCoMKgwqDCoCAqIEFuIGV4 Y2VwdGlvbiBpcyBtYWRlIGluIGNhc2UgdGhlIHVzZV9jb3VudCBpcyB6ZXJvOiB0aGlzIG1lYW5z Cj4+Pj4+PiArwqDCoMKgwqAgKiB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UgcG93ZXIg dXAgdGhlIFNSQU0gcmVndWxhdG9yLCB3aGljaAo+Pj4+Pj4gK8KgwqDCoMKgICogaW1wbGllcyB0 aGF0IHRoZSB0YXJnZXQgZGV2aWNlIGhhcyB5ZXQgdG8gcGVyZm9ybSBpbml0aWFsaXphdGlvbgo+ Pj4+Pj4gK8KgwqDCoMKgICogYW5kIHNldHRpbmcgYSB2b2x0YWdlIGF0IHRoYXQgdGltZSBpcyBo YXJtbGVzcy4KPj4+Pj4+ICvCoMKgwqDCoCAqLwo+Pj4+Pj4gK8KgwqDCoCBpZiAocmRldiA9PSBt cmMtPnZzcmFtX3JkZXYpIHsKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmRldi0+dXNlX2Nv dW50ID09IDApCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmVndWxhdG9y X2RvX2JhbGFuY2Vfdm9sdGFnZShyZGV2LCBzdGF0ZSwgdHJ1ZSk7Cj4+Pj4+PiArCj4+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FUEVSTTsKPj4+Pj4+ICvCoMKgwqAgfQo+Pj4+Pj4gKwo+ Pj4+Pj4gK8KgwqDCoCByZXQgPSByZWd1bGF0b3JfY2hlY2tfY29uc3VtZXJzKHJkZXYsICZtaW5f dVYsICZtYXhfdVYsIHN0YXRlKTsKPj4+Pj4+ICvCoMKgwqAgaWYgKHJldCA8IDApCj4+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+Pj4+ICsKPj4+Pj4+ICvCoMKgwqAgaWYgKG1p bl91ViA9PSAwKSB7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gcmVndWxhdG9yX2dldF92 b2x0YWdlX3JkZXYocmRldik7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApCj4+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgIG1pbl91ViA9IHJldDsKPj4+Pj4+ICvCoMKgwqAgfQo+Pj4+Pj4gKwo+Pj4+Pj4gK8Kg wqDCoCByZXQgPSByZWd1bGF0b3JfY2hlY2tfdm9sdGFnZShyZGV2LCAmbWluX3VWLCAmbWF4X3VW KTsKPj4+Pj4+ICvCoMKgwqAgaWYgKHJldCA8IDApCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsKPj4+Pj4+ICsKPj4+Pj4+ICvCoMKgwqAgLyoKPj4+Pj4+ICvCoMKgwqDCoCAqIElm IHdlJ3JlIGFza2VkIHRvIHNldCBhIHZvbHRhZ2UgbGVzcyB0aGFuIFZTUkFNIG1pbl91Viwgc2V0 Cj4+Pj4+PiArwqDCoMKgwqAgKiB0aGUgbWluaW11bSBhbGxvd2VkIHZvbHRhZ2Ugb24gVlNSQU0s IGFzIGluIHRoaXMgY2FzZSBpdCBpcwo+Pj4+Pj4gK8KgwqDCoMKgICogc2FmZSB0byBpZ25vcmUg dGhlIG1heF9zcHJlYWQgcGFyYW1ldGVyLgo+Pj4+Pj4gK8KgwqDCoMKgICovCj4+Pj4+PiArwqDC oMKgIHZzcmFtX3RhcmdldF9taW5fdVYgPSBtYXgodnNyYW1fbWluX3VWLCBtaW5fdVYgKyBtYXhf c3ByZWFkKTsKPj4+Pj4+ICvCoMKgwqAgdnNyYW1fdGFyZ2V0X21heF91ViA9IG1pbih2c3JhbV9t YXhfdVYsIHZzcmFtX3RhcmdldF9taW5fdVYgKyBtYXhfc3ByZWFkKTsKPj4+Pj4+ICsKPj4+Pj4+ ICvCoMKgwqAgLyogTWFrZSBzdXJlIHdlJ3JlIG5vdCBvdXQgb2YgcmFuZ2UgKi8KPj4+Pj4+ICvC oMKgwqAgdnNyYW1fdGFyZ2V0X21pbl91ViA9IG1pbih2c3JhbV90YXJnZXRfbWluX3VWLCB2c3Jh bV9tYXhfdVYpOwo+Pj4+Pj4gKwo+Pj4+Pj4gK8KgwqDCoCBwcl9kZWJ1ZygiU2V0dGluZyB2b2x0 YWdlICVkLSVkdVYgb24gJXMgKG1pbnVWICVkKVxuIiwKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg IHZzcmFtX3RhcmdldF9taW5fdVYsIHZzcmFtX3RhcmdldF9tYXhfdVYsCj4+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoCByZGV2X2dldF9uYW1lKG1yYy0+dnNyYW1fcmRldiksIG1pbl91Vik7Cj4+Pj4+ PiArCj4+Pj4+PiArwqDCoMKgIHJldCA9IHJlZ3VsYXRvcl9zZXRfdm9sdGFnZV9yZGV2KG1yYy0+ dnNyYW1fcmRldiwgdnNyYW1fdGFyZ2V0X21pbl91ViwKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZzcmFtX3RhcmdldF9tYXhfdVYsIHN0YXRlKTsKPj4+ Pj4+ICvCoMKgwqAgaWYgKHJldCkKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+ Pj4+Pj4gKwo+Pj4+Pj4gK8KgwqDCoCAvKiBUaGUgc3JhbSB2b2x0YWdlIGlzIG5vdyBiYWxhbmNl ZDogdXBkYXRlIHRoZSB0YXJnZXQgdnJlZyB2b2x0YWdlICovCj4+Pj4+PiArwqDCoMKgIHJldHVy biByZWd1bGF0b3JfZG9fYmFsYW5jZV92b2x0YWdlKHJkZXYsIHN0YXRlLCB0cnVlKTsKPj4+Pj4+ ICt9Cj4+Pj4+PiArCj4+Pj4+PiArc3RhdGljIGludCBtZWRpYXRla19yZWd1bGF0b3JfYXR0YWNo KHN0cnVjdCByZWd1bGF0b3JfY291cGxlciAqY291cGxlciwKPj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCByZWd1bGF0b3JfZGV2ICpyZGV2KQo+ Pj4+Pj4gK3sKPj4+Pj4+ICvCoMKgwqAgc3RydWN0IG1lZGlhdGVrX3JlZ3VsYXRvcl9jb3VwbGVy ICptcmMgPSB0b19tZWRpYXRla19jb3VwbGVyKGNvdXBsZXIpOwo+Pj4+Pj4gK8KgwqDCoCBjb25z dCBjaGFyICpyZGV2X25hbWUgPSByZGV2X2dldF9uYW1lKHJkZXYpOwo+Pj4+Pj4gKwo+Pj4+Pj4g K8KgwqDCoCAvKgo+Pj4+Pj4gK8KgwqDCoMKgICogSWYgd2UncmUgZ2V0dGluZyBhIGNvdXBsaW5n IG9mIG1vcmUgdGhhbiB0d28gcmVndWxhdG9ycyBoZXJlIGFuZAo+Pj4+Pj4gK8KgwqDCoMKgICog dGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgc3VyZWx5IG5vdCBhIEdQVTwtPlNSQU0gY291cGxlOiBp biB0aGF0Cj4+Pj4+PiArwqDCoMKgwqAgKiBjYXNlLCB3ZSBtYXkgd2FudCB0byB1c2UgYW5vdGhl ciBjb3VwbGVyIGltcGxlbWVudGF0aW9uLCBpZiBhbnksCj4+Pj4+PiArwqDCoMKgwqAgKiBvciB0 aGUgZ2VuZXJpYyBvbmU6IHRoZSByZWd1bGF0b3IgY29yZSB3aWxsIGtlZXAgd2Fsa2luZyB0aHJv dWdoCj4+Pj4+PiArwqDCoMKgwqAgKiB0aGUgbGlzdCBvZiBjb3VwbGVycyB3aGVuIGFueSAuYXR0 YWNoX3JlZ3VsYXRvcigpIGNiIHJldHVybnMgMS4KPj4+Pj4+ICvCoMKgwqDCoCAqLwo+Pj4+Pj4g K8KgwqDCoCBpZiAocmRldi0+Y291cGxpbmdfZGVzYy5uX2NvdXBsZWQgPiAyKQo+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIHJldHVybiAxOwo+Pj4+Pj4gKwo+Pj4+Pj4gK8KgwqDCoCBpZiAoc3Ryc3Ry KHJkZXZfbmFtZSwgInNyYW0iKSkgewo+Pj4+Pgo+Pj4+PiBNeSB1bmRlcnN0YW5kaW5nIGlzLCB0 aGF0IHdlIGhhdmUgdG8gaGF2ZSBlaXRoZXIgYSBEVCBub2RlIHdpdGggcmVndWxhdG9yLW5hbWUg Cj4+Pj4+ID0gInNyYW0iIHByb3BlcnR5IHRvIHBvbGx1dGUgcmRldi0+Y29uc3RyYWludHMtPm5h bWUgb3Igc29tZSAKPj4+Pj4gcmVndWxhdG9yX2Rlc2MtPm5hbWUgcG9wdWxhdGVkIGluIHRoZSBk cml2ZXJzL3JlZ3VsYXRvci9tdCouYwo+Pj4+Pgo+Pj4+Cj4+Pj4gTm8sIGl0J3Mgbm90IHRyeWlu ZyB0byBmaW5kIGEgcmVndWxhdG9yIG5hbWVkICJzcmFtIiwgYnV0IGFueSByZWd1bGF0b3IgdGhh dAo+Pj4+ICpjb250YWlucyogdGhlICJzcmFtIiBzdHJpbmcgaW4gaXRzIG5hbWUsIGJ1dCBjaGVj a3Mgb25seSByZWd1bGF0b3JzIHRoYXQgYXJlCj4+Pj4gY291cGxlZCB0byBvdGhlcnMuIFRoaXMg aXMgdGhlIHNhbWUgZm9yIHRoZSAiVmdwdSIgLyAidmdwdSIuCj4+Pj4KPj4+PiBFeGFtcGxlOgo+ Pj4+Cj4+Pj4gUmVndWxhdG9yIEEsIGNvdXBsZWQgdG8gUmVndWxhdG9yIEIuCj4+Pj4KPj4+PiBS ZWd1bGF0b3IgQSBuYW1lID0gIlZncHUiIG9yICJ2Z3B1Iiwgb3IgKnZncHUqLCBvciAqVmdwdSoK Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAobmFtZSBtdXN0IGNv bnRhaW4gZWl0aGVyIFZncHUgb3IgdmdwdSkKPj4+Pgo+Pj4+IFJlZ3VsYXRvciBCIG5hbWUgPSAi dnNyYW0iIG9yICJzcmFtX2dwdSIgb3IgKnNyYW0qCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKG5hbWUgbXVzdCBjb250YWluICJzcmFtIikuCj4+Pj4KPj4+PiBt cmMtPnZzcmFtX3JkZXYgPSByZGV2Cj4+Pj4KPj4+PiByZGV2ID09IG91ciBSZWd1bGF0b3IgQi4K Pj4+Pgo+Pj4+IFdlIGhlbmNlIHJldHVybiAwIHRvIHRoZSBjb3VwbGluZyBBUEk6IHRoaXMgd2ls bCBwcm9kdWNlIHRoZSBlZmZlY3Qgb2YgbWFraW5nCj4+Pj4gaXQgdXNlIHRoaXMgZHJpdmVyJ3Mg LmJhbGFuY2Vfdm9sdGFnZSgpIGNhbGxiYWNrIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgb25lCj4+ Pj4gb24gdmdwdTwtPnZzcmFtLgo+Pj4+Cj4+Pj4KPj4+Pj4gSSB3YXNuJ3QgYWJsZSB0byBmaW5k IGVpdGhlciBvZiB0aGlzLCBzbyBJIHdvbmRlciBob3cgdGhpcyBpcyBzdXBwb3NlZCB0byAKPj4+ Pj4gd29yay4gUGxlYXNlIHByb3ZpZGUgcG9pbnRlcnMgdG8gYSB3b3JraW5nIGFuZCBjb21wbGV0 ZSBpbXBsZW1lbnRhdGlvbiBvZiAKPj4+Pj4gdGhpcywgc28gdGhhdCBJJ20gYWJsZSB0byBqdWRn ZSB3aGF0IGlzIGdvaW5nIG9uIGFuZCBpZiB0aGUgYXBwcm9hY2ggaXMgdGhlIAo+Pj4+PiBjb3Jy ZWN0IG9uZS4KPj4+Pj4KPj4+Pj4gSSB0cmllZCB0byBmaWd1cmUgb3V0IHVzaW5nIG10ODE5NS10 cmFja2luZy1tYXN0ZXItcm9sbGluZwo+Pj4+Cj4+Pj4gVGhhdCdzIHRoZSByaWdodCBicmFuY2gu Cj4+Pj4KPj4+PiBMZXQncyB0YWtlIE1UODE5MiBBc3VyYWRhIGFzIGFuIGV4YW1wbGUgb2YgaG93 IHRoaXMgd29ya3MuLi4uCj4+Pj4KPj4+PiBgbXQ2MzU5X3ZzcmFtX290aGVyc19sZG9fcmVnwrQg aXMgdGhlIFNSQU0gcmVndWxhdG9yIGZvciB0aGUgR1BVOgo+Pj4+IGh0dHBzOi8vZ2l0bGFiLmNv bGxhYm9yYS5jb20vZ29vZ2xlL2Nocm9tZW9zLWtlcm5lbC8tL2Jsb2IvbXQ4MTk1LXRyYWNraW5n LW1hc3Rlci1yb2xsaW5nL2FyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTkyLWFzdXJh ZGEuZHRzaSNMNTUxCj4+Pj4KPj4+PiBgbXQ2MzU5X3ZzcmFtX290aGVyc19sZG9fcmVnYCByZWd1 bGF0b3ItbmFtZSA9ICJ2c3JhbV9vdGhlcnMiOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIF5eXl4KPj4+PiBDb250YWlucyAic3JhbSIsIGFuZCB0aGlzIHJl Z3VsYXRvciBpcyBhbHNvCj4+Pj4KPj4+PiDCoMKgwqDCoMKgcmVndWxhdG9yLWNvdXBsZWQtd2l0 aCA9IDwmbXQ2MzE1XzdfdmJ1Y2sxPjsKPj4+Pgo+Pj4+IGBtdDYzMTVfN192YnVjazFgIHJlZ3Vs YXRvci1uYW1lID0gIlZncHUiOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeXl5eCj4+Pj4gQ29udGFp bnMgIlZncHUiLCBhbmQgdGhpcyByZWd1bGF0b3IgaXMgYWxzbwo+Pj4+Cj4+Pj4gwqDCoMKgwqDC oHJlZ3VsYXRvci1jb3VwbGVkLXdpdGggPSA8Jm10NjM1OV92c3JhbV9vdGhlcnNfbGRvX3JlZz47 Cj4+Pj4KPj4+PiBUaGF0J3MgaG93IHRoZSBjb3VwbGluZyB3b3JrcyBpbiB0aGlzIGNhc2UuCj4+ Pj4KPj4+Pgo+Pj4+IE5vdywgbG9va2luZyBhdCBjYXNlIGV4Y2x1c2lvbnM6Cj4+Pj4gSW4gTVQ4 MTkyIEFzdXJhZGEgKG9yLCBhY3R1YWxseSwgbXQ2MzU5LmR0c2kpIHdlIGhhdmUgb3RoZXIgcmVn dWxhdG9ycyB0aGF0IGRvCj4+Pj4gYWN0dWFsbHkgY29udGFpbiAic3JhbSIgaW4gdGhlaXIgbmFt ZSwgbGlrZSAidnNyYW1fcHJvYzEiIGFuZCAKPj4+PiAidnNyYW1fb3RoZXJzX3NzaHViIi4KPj4+ Pgo+Pj4+IFRoZXNlIHJlZ3VsYXRvcnMgd2lsbCBiZSBpZ25vcmVkLCBhcyB0aGV5IGFyZSAqbm90 KiBjb3VwbGVkIHdpdGggVmdwdS4KPj4+Pgo+Pj4+Cj4+Pj4gV2hhdCB0aGlzIGRyaXZlciBjdXJy ZW50bHkgZG9lcyBpbiB0aGlzIHJlZ2FyZCBpczoKPj4+PiAxLiBSZWd1bGF0b3IgYXR0YWNoIGlz IGNhbGxlZCBvbmx5IG9uICpjb3VwbGVkKiByZWd1bGF0b3JzLCBub3Qgb24gdGhlIG90aGVycwo+ Pj4+IDIuIElmIHRoZSByZWd1bGF0b3IgY29udGFpbnMgbmFtZSAidmdwdSIgb3IgIlZncHUiIG9y ICJzcmFtIiB3ZSdyZSBnb29kLAo+Pj4+IMKgwqDCoCBvdGhlcndpc2Ugd2UgZG9uJ3QgYXR0YWNo IHRoZSBiYWxhbmNlX3ZvbHRhZ2UgbG9naWMgb2YgdGhpcyBkcml2ZXIgdG8KPj4+PiDCoMKgwqAg dGhlIHVubWF0Y2hlZCByZWd1bGF0b3JzLgo+Pj4+Cj4+Pj4KPj4+PiBEb2VzIHRoaXMgZXhwbGFu YXRpb24gY2xhcmlmeSB5b3VyIGRvdWJ0cz8KPj4+Pgo+Pj4+IFJlZ2FyZHMsCj4+Pj4gQW5nZWxv Cj4+Pj4KPj4+Cj4+PiBNYXR0aGlhcywgcGxlYXNlIGRvbid0IGZvcmdldCBhYm91dCB0aGlzIG9u ZSA6LSkKPj4+Cj4+Cj4+IFVuZm9ydHVuYXRlbHkgSSBoYXZlIHRvIGxlYXZlIG5vdyBhbmQgZGlk bid0IGhhZCB0aW1lIHRvIGxvb2sgbW9yZSBpbnRvIGl0LiBTbyAKPj4gSSdsbCB3cml0ZSBqdXN0 IG15IHN1c3BpY2lvbi4gU28gcGxlYXNlIGZlZWwgZnJlZSB0byBjb3JyZWN0IG1lIGlmIEknbSB0 b3RhbGx5IAo+PiB3cm9uZyAoSSBrbm93IHlvdSB3aWxsIGRvIGFueXdheSA7KQo+Pgo+PiAxKSBX aGVuIHRoZSByZWd1bGF0b3ItY291cGxlciBkcml2ZXIgd2FzIGludHJvZHVjZWQgdGhlIGRyaXZl ciB3YXMgYm91bmQgYnkgYSAKPj4gY29tcGF0aWJsZSwgYnV0IHdlIHVzZSBhcmNoX2luaXRjYWxs KC4uLikgZm9yIGl0Lgo+PiAyKSBJIHJlYWxseSBkb24ndCBsaWtlIHRoZSBoYXJkY29kZWQgc2Vh cmNoIGZvciBhIHRoZSByZWd1bGF0b3IgbmFtZSBpbiB0aGUgCj4+IG1lZGlhdGVrX3JlZ3VsYXRv cl9hdHRhY2ggZnVuY3Rpb24uIEkgaGF2ZW4ndCBzZWVuIHRoYXQgaW4gdGhlIE52aWRpYSBkcml2 ZXIsIAo+PiBhbHNvIEkgaGFkIG5vIHRpbWUgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBkZWNpZGUg d2hpY2ggcmVndWxhdG9ycyBuZWVkIHRvIGJlIAo+PiBjb3VwbGVkLiBNeSBpbnN0aW5jdCB3b3Vs ZCB0ZWxsIG1lIHRoYXQgdGhpcyBzaG91bGQgYmUgZGVzY3JpYmVkIGluIGRldmljZS10cmVlLgo+ Pgo+IAo+IEkgZGlkbid0IHdhbnQgdG8gdXNlIGN1c3RvbSBkZXZpY2V0cmVlIHByb3BlcnRpZXMg dG8gY291cGxlIG91ciByZWd1bGF0b3JzLi4uCj4gCj4gVGVncmEgd2FudHMgdG8gY291cGxlIHRo cmVlIHJlZ3VsYXRvcnM6IENPUkUsIFJUQyBhbmQgQ1BVIGFuZCB0aGV5J3JlIGdldHRpbmcgdGhh dAo+IHdpdGggdGhyZWUgY3VzdG9tIHByb3BlcnRpZXM6Cj4gKiBudmlkaWEsdGVncmEtY29yZS1y ZWd1bGF0b3IKPiAqIG52aWRpYSx0ZWdyYS1ydGMtcmVndWxhdG9yCj4gKiBudmlkaWEsdGVncmEt Z3B1LXJlZ3VsYXRvcgo+IAo+IEhhcmRjb2RpbmcgdGhlIHJlZ3VsYXRvciBuYW1lICpzdWIqc3Ry aW5nIGluIHRoZSBtZWRpYXRlay1yZWd1bGF0b3ItY291cGxlciBhbGxvd3MKPiB1cyB0byB1c2Ug Km9ubHkqIGdlbmVyaWMgZGV2aWNldHJlZSBwcm9wZXJ0aWVzIGluc3RlYWQgb2YgaW52ZW50aW5n IG91ciBvd246IGFmdGVyCj4gYWxsLCBldmVuIGluIHRoZSBjYXNlIGluIHdoaWNoIGEgYm9hcmQg dXNlcyBhIHJlZ3VsYXRvciB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgVkdQVQo+IGFuZC9vciBWU1JB TV9HUFUgImtpbmQgb2YgbmFtZSIgaW4gaXQsIGl0J3Mgc3RpbGwgcG9zc2libGUgdG8gY2hhbmdl IHRoZSBuYW1lIHZpYQo+IGRldmljZXRyZWUgKHdoaWNoIHdvdWxkIGJlIGNvcnJlY3QsIGJlY2F1 c2UgdGhlIHJlZ3VsYXRvciBpcyB1c2VkIGZvciB0aGF0LCBhbmQKPiB3b3VsZCBiZSB0aGUgcmln aHQgbmFtZSkuCj4gCj4gQXMgb2Ygbm93LCB0aGVyZSdzIG5vIGJvYXJkIHVzaW5nIGEgcmVndWxh dG9yIHRoYXQgaGFzIGEgbm90IG1hdGNoaW5nIG5hbWUsIGFuZAo+IHRoaXMgaXMgYmVjYXVzZSBN ZWRpYVRlayBTb0NzIGFyZSBhbHdheXMgdXNpbmcgYSBNZWRpYVRlayBQTUlDIGluIGNvbWJpbmF0 aW9uLAo+IHdoaWNoIGFsd2F5cyBzcGVjaWZpZXMgdGhpcyBraW5kIG9mIG5hbWUuCj4gCj4gSSBy ZW1pbmQgeW91IHRoYXQgdGhpcyBkcml2ZXIgZG9lcyAqbm90aGluZyogdW5sZXNzIGNvdXBsaW5n IGlzIGFjdGl2YXRlZCB0aHJvdWdoCj4gZGV2aWNldHJlZSBwcm9wZXJ0KmllcyosIGFzIHRoaXMg ZHJpdmVyIGhhcyB0byBiZSBzZWVuIGFzIGEgaG9vayB0byB0aGUgcmVndWxhdG9yCj4gY291cGxp bmcgQVBJLCBhbmQgbm90IHN0YW5kYWxvbmUgY29kZSAtIGhlbmNlLCBpbiBteSBvcGluaW9uLCB0 aGUgY2xlYW5lc3QKPiBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGlzIHRvIHVzZSBvbmx5IHByb3Bl cnRpZXMgcHJvdmlkZWQgYnkgdGhlIHJlZ3VsYXRvciBjb3VwbGluZwo+IEFQSSwgd2l0aG91dCBh bnkgYXNzaXN0YW5jZSBmcm9tIGN1c3RvbSBwcm9wZXJ0aWVzLCB1bmxlc3MgKnJlYWxseSogbmVl ZGVkLgo+IAo+IFN1bW1hcml6aW5nOgo+ICogRGVjaWRpbmcgd2hpY2ggcmVndWxhdG9ycyBuZWVk IHRvIGJlIGNvdXBsZWQgKmFscmVhZHkgbmVlZHMgdG8qIGJlIGRlc2NyaWJlZAo+ICDCoCBpbiBk ZXZpY2V0cmVlLCBvdGhlcndpc2UgdGhpcyBkcml2ZXIgd2lsbCBkbyBub3RoaW5nOwo+ICogVGhl IGhhcmRjb2RlZCBzdHJpbmdzIGFyZSB0aGVyZSBvbmx5IHRvIHJlc3RyaWN0IHRoaXMgZHJpdmVy IHRvIEdQVSByZWxhdGVkCj4gIMKgIHJlZ3VsYXRvcnMgKHZncHUgYXMgZ3B1IGNvcmUgc3VwcGx5 IC0gdnNyYW0tZ3B1IGFzIGdwdSBzcmFtIHN1cHBseSkKPiAKPiBDaGVlcnMhCj4gQW5nZWxvCj4g CgpIZWxsbyBNYXR0aGlhcywKCmRvLW5vdC1mb3JnZXQgcGluZyA6LSkKCkNoZWVycywKQW5nZWxv CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=