From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B6567C4646B for ; Wed, 26 Jun 2019 08:10:41 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 89F98208E3 for ; Wed, 26 Jun 2019 08:10:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="CQ0mK3fh"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="XUT++bpN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 89F98208E3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:References:In-Reply-To:MIME-Version: Date:Message-ID:From:To:Subject:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sKP16zIM68J9609hkSxfbcA1EDw9XdmAYwrnmBuDyOQ=; b=CQ0mK3fh1whMyf pERyIjbQJDi0OLqbnhToKYynQz94ZOQyaXIQevcFTo7xy9HfUmUXv9UO73D7bcuQTymcavYkGlLbv rvE1Uv7M5BPbrFj4vQ96nIofZ+LKhqkSsTrsoO1UgsiUWprDOnlXl6wxpaoeFqVqXUOsUvOf6NGax eya+TSV4nVr3p1uKhC6jMK35GQwDEcal1EkLYIkCxxBIRATVfip+XI5mvN9myPzkg1QldIF5wroCf 9dzxAnKKqI21z0NJAUWErpW6401dLcNKNUxSBEViJXkbGr59f5D+tSwcPOVVC9rhTPpGfeUyVw8f2 7x6CSNBbTSHGALiqVaJQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hg30V-0003hH-AV; Wed, 26 Jun 2019 08:10:19 +0000 Received: from mailout2.samsung.com ([203.254.224.25]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hg30D-0001xg-RG for linux-arm-kernel@lists.infradead.org; Wed, 26 Jun 2019 08:10:13 +0000 Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout2.samsung.com (KnoxPortal) with ESMTP id 20190626080952epoutp02a263df3e3d8c92788c091eeefd617dcf~rsUHmoKOc2726027260epoutp02L for ; Wed, 26 Jun 2019 08:09:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.samsung.com 20190626080952epoutp02a263df3e3d8c92788c091eeefd617dcf~rsUHmoKOc2726027260epoutp02L DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1561536592; bh=hwvzKux7nSoIBOUroXhjMa8F4uRoM+fnis1PGiReeQU=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=XUT++bpNoHEwVQTy88F5qwr4PUAPOpEXTDRIJU+NwOHMWWNJYpp4SjMZg5cM7atGU 4fGgMgmhyXBoxDs1OcS0AkVsTVCJOuejL0NEtA1BQOU41vl8Jz6h8U/a8FgG7gzUUS zb17f72YM7l5Ix93IXmUI4HjXZ/VgUAEeEs3uuXI= Received: from epsmges1p2.samsung.com (unknown [182.195.40.158]) by epcas1p3.samsung.com (KnoxPortal) with ESMTP id 20190626080949epcas1p3a52b3db1ae388308edaa9f075048f00a~rsUE7js501930719307epcas1p3T; Wed, 26 Jun 2019 08:09:49 +0000 (GMT) Received: from epcas1p2.samsung.com ( [182.195.41.46]) by epsmges1p2.samsung.com (Symantec Messaging Gateway) with SMTP id A0.D7.04142.D48231D5; Wed, 26 Jun 2019 17:09:49 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas1p3.samsung.com (KnoxPortal) with ESMTPA id 20190626080948epcas1p329a2e1e68fbe15cbeb31c2f49dee95f0~rsUEIC6s41202312023epcas1p3B; Wed, 26 Jun 2019 08:09:48 +0000 (GMT) Received: from epsmgms1p2new.samsung.com (unknown [182.195.42.42]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20190626080948epsmtrp13d16caf5a513307c186304fcebe3e279~rsUEG9PXB0308803088epsmtrp1n; Wed, 26 Jun 2019 08:09:48 +0000 (GMT) X-AuditID: b6c32a36-cf9ff7000000102e-00-5d13284dfc1f Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgms1p2new.samsung.com (Symantec Messaging Gateway) with SMTP id 48.36.03662.C48231D5; Wed, 26 Jun 2019 17:09:48 +0900 (KST) Received: from [10.113.221.102] (unknown [10.113.221.102]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190626080948epsmtip2a2b03c84482e91e4aaeba14293821820~rsUDw1iYn1405114051epsmtip26; Wed, 26 Jun 2019 08:09:48 +0000 (GMT) Subject: Re: [PATCH RFC 1/2] PM / devfreq: Generic CPU frequency to device frequency mapping governor To: Sibi Sankar , Hsin-Yi Wang From: Chanwoo Choi Organization: Samsung Electronics Message-ID: <17b27bc6-5dc7-8ffa-2022-93c526bdf1d1@samsung.com> Date: Wed, 26 Jun 2019 17:12:25 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.1 MIME-Version: 1.0 In-Reply-To: <04bbd518efef8296e450e984e6afdba2@codeaurora.org> Content-Language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOJsWRmVeSWpSXmKPExsWy7bCmnq6vhnCswcsVchbb179gtZjQup3Z 4mzTG3aLTY+vsVosaxCzuLxrDpvF5eaLjBafe48wWjS1GFvcblzBZnFt4XtWiwMXJ7I58HjM brjI4nG5r5fJY+esu+wem5fUe7Sc3M/i0bdlFaPH501yAexR2TYZqYkpqUUKqXnJ+SmZeem2 St7B8c7xpmYGhrqGlhbmSgp5ibmptkouPgG6bpk5QGcqKZQl5pQChQISi4uV9O1sivJLS1IV MvKLS2yVUgtScgosC/SKE3OLS/PS9ZLzc60MDQyMTIEKE7IznnzlKbg9iamiufkUawPj/xeM XYycHBICJhIPlvxi72Lk4hAS2MEosfDpL2YI5xOjxN8T96Ccb4wSE1c3MsG0XDx3nA0isZdR YseX2UwQzntGibtfJ7KBVAkLpEscO/4XyObgEBHwkti6Ow6khlngCrPExm+XWEBq2AS0JPa/ uAFWzy+gKHH1x2Owo3gF7CTaW6eB2SwCqhLrbl9kBbFFBSIkLm/ZBVUjKHFy5hOwOZxA9Wfm /2MHsZkFxCVuPZnPBGHLSzRvnQ32goTAInaJ7r8XoF5wkVixeyMbhC0s8er4FnYIW0riZX8b lF0tsfLkETaI5g5GiS37L7BCJIwl9i+dzATyGbOApsT6XfoQYUWJnb/nMkIs5pN497WHFaRE QoBXoqNNCKJEWeLyg7tQJ0hKLG7vZJvAqDQLyTuzkLwwC8kLsxCWLWBkWcUollpQnJueWmxY YIQc35sYwYlYy2wH46JzPocYBTgYlXh4G+SFYoVYE8uKK3MPMUpwMCuJ8C5NFIgV4k1JrKxK LcqPLyrNSS0+xGgKDO2JzFKiyfnALJFXEm9oamRsbGxhYmhmamioJM4bz30zRkggPbEkNTs1 tSC1CKaPiYNTqoGRTyknPqfZ4uGT+/t8+3cqd17Yq/HsvKfTZWfOxwb3ZH9Or4upWKlpL1JQ X/r3tHnb1mNB11Yuc9gRJnORPWbxpZcKvxVOVVY1G1zOnstknZAR837OOwvV+5NuzhG505do xvHcKexExgNfhrjO/28mzI+J5PoqyFr14ZoGW3Fg2Cw9+eincs1KLMUZiYZazEXFiQC5hnX7 2gMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrIIsWRmVeSWpSXmKPExsWy7bCSvK6PhnCswb3ZChbb179gtZjQup3Z 4mzTG3aLTY+vsVosaxCzuLxrDpvF5eaLjBafe48wWjS1GFvcblzBZnFt4XtWiwMXJ7I58HjM brjI4nG5r5fJY+esu+wem5fUe7Sc3M/i0bdlFaPH501yAexRXDYpqTmZZalF+nYJXBlPvvIU 3J7EVNHcfIq1gfH/C8YuRk4OCQETiYvnjrN1MXJxCAnsZpR40fWMFSIhKTHt4lHmLkYOIFtY 4vDhYoiat4wSu09+ZgKpERZIlzh2/C8bSI2IgJfE1t1xIDXMAjeYJf4df8IE1cAksf/YJ7Ch bAJaEvtf3GADsfkFFCWu/ngMdgWvgJ1Ee+s0MJtFQFVi3e2LYPWiAhESfW2z2SBqBCVOznzC AmJzAtWfmf+PHcRmFlCX+DPvEjOELS5x68l8JghbXqJ562zmCYzCs5C0z0LSMgtJyywkLQsY WVYxSqYWFOem5xYbFhjlpZbrFSfmFpfmpesl5+duYgRHpJbWDsYTJ+IPMQpwMCrx8DbIC8UK sSaWFVfmHmKU4GBWEuFdmigQK8SbklhZlVqUH19UmpNafIhRmoNFSZxXPv9YpJBAemJJanZq akFqEUyWiYNTqoExZt7t0FO3HaK+r1XxbdBOiHNfrhwQKbGwhet2ZKr/sxP7DeNUU69+2Dk7 dW79lnWV+sJeF/euW7Gt9GLTUinWQ1Ulz/YYTNwY8pjheRnj7Wpmoz/xbGez0qf9ba8OLakt OB2164Omua2RbuP1C1OfHd549Y5umUb5c4WK5+6pDwRu5Cbob25UYinOSDTUYi4qTgQAWfuR YsQCAAA= X-CMS-MailID: 20190626080948epcas1p329a2e1e68fbe15cbeb31c2f49dee95f0 X-Msg-Generator: CA X-Sendblock-Type: SVC_REQ_APPROVE CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20190618041513epcas5p1bc626114804cb68bbf857f0a826c7599 References: <20190618041433.245629-1-hsinyi@chromium.org> <20190618041433.245629-2-hsinyi@chromium.org> <958b27ff-6e64-b4e2-44e6-bc342e3606bc@samsung.com> <04bbd518efef8296e450e984e6afdba2@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190626_011004_028391_1E66115F X-CRM114-Status: GOOD ( 35.34 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-kernel-owner@vger.kernel.org, "Andrew-sh . Cheng" , linux-pm@vger.kernel.org, lkml , Kyungmin Park , Saravana Kannan , linux-mediatek@lists.infradead.org, MyungJoo Ham , Matthias Brugger , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGVsbG8gU2liaSBhbmQgSHNpbi1ZaSwKCk9uIDE5LiA2LiAyMC4g7Jik7ZuEIDY6NDEsIFNpYmkg U2Fua2FyIHdyb3RlOgo+IEhleSBIc2luLVlpLCBDaGFud29vCj4gCj4gT24gMjAxOS0wNi0yMCAx NTowMiwgSHNpbi1ZaSBXYW5nIHdyb3RlOgo+PiBIaSBDaGFud29vIENob2ksIFNhcmF2YW5hIEth bm5hbiBhbmQgU2liaSBTYW5rYXIsCj4+Cj4+IEkndmUgYWxzbyB0ZXN0ZWQgU2liaSBTYW5rYXIn cyBwYXRjaFsxXSBsb2NhbGx5IHdpdGggbXQ4MTgzLWNjaSwgYW5kCj4+IGl0IHdvcmtzIGZpbmUg dG9vIQo+PiBJdCdkIGJlIGdyZWF0IGlmIFNpYmkgU2Fua2FyIG9yIGFueW9uZSB3aG8gaXMgZmFt aWxpYXIgd2l0aCB0aGUKPj4gb3JpZ2luYWwgZGVzaWduIGNhbiBmaW5pc2ggdGhpcyBpbXBsZW1l bnRhdGlvbi4gQnV0IGlmIG5vIG9uZSBoYXMgdGltZQo+PiB0byBkbyB0aGF0LCBJIHRoaW5rIEkg Y2FuIGFsc28gaGVscCBvbiBhZGRyZXNzIHRoZSBjb21tZW50cy4gVGhhbmtzIQo+IAo+IE5vdyB0 aGF0IHdlIGhhdmUgYSB1c2VyIDopIEkgYW0gaGFwcHkKPiB0byByZXBvc3QgdGhlIHBhdGNoIHdp dGggdGhlIGNvbW1lbnRzCj4gYWRkcmVzc2VkLgo+IAo+IGh0dHBzOi8vbGttbC5vcmcvbGttbC8y MDE5LzYvMTQvNAo+IEFsc28gd2l0aCBeXiBwYXRjaCBhbmQgZmV3IG1vcmUgaW4gdGhlCj4gc2Vy aWVzIHRoZSBkdCBwYXJzaW5nIG9mIHJlcXVpcmVkLW9wcHMKPiBzaG91bGQgZ2V0IGZ1cnRoZXIg c2ltcGxpZmllZC4KCkV2ZW4gaWYgcGF0Y2hbMV0gc3VnZ2VzdGVkIGJ5IFNhcmF2YW5hIGlzIG1l cmdlZCwKdGhlIHBhdGNoWzJdIGlzIG5lY2Vzc2FyeS4gQmVjYXVzZSwgdW50aWwgbm93LAp0aGUg Y2hpbGQgZGV2ZnJlcSBkZXZpY2UgY2Fubm90IGNhdGNoIHRoZSB0aW1pbmcKb2YgQ1BVIGZyZXF1 ZW5jeSB3aXRob3V0IENQVUZSRVEgbm90aWZpY2F0aW9uLgoKVGhlIGV4aXN0aW5nIHBhc3NpdmUg Z292ZXJub3Igb25seSBzdXBwb3J0cyBiZXR3ZWVuCmRldmZyZXEgZGV2aWNlIGFuZCBvdGhlciBk ZXZmcmVxIGRldmljZS4KClsxXSBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxOS82LzE0LzQKClsy XQpbUEFUQ0ggUkZDIDAvOV0gQWRkIENQVSBiYXNlZCBzY2FsaW5nIHN1cHBvcnQgdG8gUGFzc2l2 ZSBnb3Zlcm5vcgotIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMDhjM2NmZjhjMzllM2Q4 MmUwNDRkYjkzZTk5MmRhNzJAY29kZWF1cm9yYS5vcmcvVC8KW1BBVENIIFJGQyAzLzldIFBNIC8g ZGV2ZnJlcTogQWRkIGNwdSBiYXNlZCBzY2FsaW5nIHN1cHBvcnQgdG8gcGFzc2l2ZV9nb3Zlcm5v cgotIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMDhjM2NmZjhjMzllM2Q4MmUwNDRkYjkz ZTk5MmRhNzJAY29kZWF1cm9yYS5vcmcvVC8jbTFjYWZiN2JhZjY4N2QyYTY4MGQzOWM4NWQzZWM3 ZDFiNTkwYjY4ZmMKCgoKPiAKPj4KPj4KPj4gWzFdCj4+IFtSRkMsMi85XSBPUFA6IEV4cG9ydCBh IG51bWJlciBvZiBoZWxwZXJzIHRvIHByZXZlbnQgY29kZSBkdXBsaWNhdGlvbgo+PiAtIGh0dHBz Oi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTA4NzUxOTkvCj4+IFtSRkMsMy85XSBQTSAv IGRldmZyZXE6IEFkZCBjcHUgYmFzZWQgc2NhbGluZyBzdXBwb3J0IHRvIHBhc3NpdmVfZ292ZXJu b3IKPj4gLSBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwODc1MTk1Lwo+Pgo+ PiBIc2luLVlpCj4+Cj4+IE9uIFRodSwgSnVuIDIwLCAyMDE5IGF0IDI6NTYgUE0gQ2hhbndvbyBD aG9pIDxjdzAwLmNob2lAc2Ftc3VuZy5jb20+IHdyb3RlOgo+Pj4KPj4+ICsgU2liaSBTYW5rYXIK Pj4+Cj4+PiBIaSwgSHNpbi1ZaSBXYW5nLCBTYXJhdmFuYSBLYW5uYW4gYW5kIFNpYmkgU2Fua2Fy Cj4+Pgo+Pj4gSSBzdW1tYXJpemVkIHRoZSBoaXN0b3J5IG9mIHRoZSByZWxhdGVkIHBhdGNoIGFi b3V0IHRoaXMgdGl0bGUuCj4+Pgo+Pj4gRmlyc3RseSwKPj4+IEFzIEkga25ldywgU2FyYXZhbmEg c2VudCB0aGUgcGF0Y2hbMV0gd2hpY2ggY29udGFpbnMKPj4+ICdnb3Zlcm5vcl9jcHVmcmVxX21h cC5jJyBsYXN0IHllYXIuIEFjY29yZGluZyB0byB0aGUgTXl1bmdvbydzIGNvbW1lbnQsCj4+Pgo+ Pj4gU2Vjb25kbHksCj4+PiBTaWJpIFNhbmthciBtb2RpZmllZCB0aGUgJ2dvdmVybm9yX3Bhc3Np dmUuYydbMl0gaW4gb3JkZXIgdG8gc3VwcG9ydAo+Pj4gdGhlIG1hcHBpbmcgYmV0d2VlbiBjcHUg ZnJlcXVlbmN5IGFuZCBkZXZpY2UgZnJlcXVlbmN5Lgo+Pj4gVW5mb3J0dW5hdGVseSwgU2liaSBT YW5rYXIgc3RvcHBlZCB0aGUgZGV2ZWxvcG1lbnQgYWJvdXQgdGhpcwo+Pj4gYmVjYXVzZSBoZSBo YWQgZm91bmQgdGhlIG90aGVyIG1ldGhvZCB0byBnZXQgaGlzIHB1cnBvc2UgYXMgSSBrbmV3Lgo+ Pj4KPj4+IFRoaXJkbHksCj4+PiBIc2luLVlpIFdhbmcgc2VuZCB0aGUgb3JpZ2luYWwgcGF0Y2gg b2YgU2FyYXZhbmEgd2l0aG91dCBtb2RpZmljYXRpb24uCj4+Pgo+Pj4KPj4+IFNpbmNlcmVseSwg SSB0aGluayB0aGF0IHRoZSBtYXBwaW5nIGJldHdlZW4gY3B1IGZyZXF1ZW5jeSBhbmQgZGV2aWNl Cj4+PiBmcmVxdWVuY3kgaXMgbmVjZXNzYXJ5LiBBbmQgSSBwcmVmZXIgdGhlIFNpYmkncyBhcHBy b2FjaCB3aGljaCBpbXBsZW1lbnRzCj4+PiBzdHVmZiB0byB0aGUgZXhpc3RpbmcgJ3Bhc3NpdmUn IGdvdmVybm9yLgo+Pj4KPj4+IFdlIG5lZWQgdG8gZGlzY3VzcyBhYm91dCBob3cgdG8gaW1wbGVt ZW50IHRoZW0gYnkgd2hvbS4KPj4+Cj4+Pgo+Pj4gWzFdIFt2MywxLzJdIFBNIC8gZGV2ZnJlcTog R2VuZXJpYyBDUFUgZnJlcXVlbmN5IHRvIGRldmljZSBmcmVxdWVuY3kgbWFwcGluZyBnb3Zlcm5v cgo+Pj4gLSBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwNTUzMTcxLwo+Pj4K Pj4+IFsyXQo+Pj4gW1BBVENIIFJGQyAwLzldIEFkZCBDUFUgYmFzZWQgc2NhbGluZyBzdXBwb3J0 IHRvIFBhc3NpdmUgZ292ZXJub3IKPj4+IC0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8w OGMzY2ZmOGMzOWUzZDgyZTA0NGRiOTNlOTkyZGE3MkBjb2RlYXVyb3JhLm9yZy9ULwo+Pj4gW1BB VENIIFJGQyAzLzldIFBNIC8gZGV2ZnJlcTogQWRkIGNwdSBiYXNlZCBzY2FsaW5nIHN1cHBvcnQg dG8gcGFzc2l2ZV9nb3Zlcm5vcgo+Pj4gLSBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzA4 YzNjZmY4YzM5ZTNkODJlMDQ0ZGI5M2U5OTJkYTcyQGNvZGVhdXJvcmEub3JnL1QvI20xY2FmYjdi YWY2ODdkMmE2ODBkMzljODVkM2VjN2QxYjU5MGI2OGZjCj4+Pgo+Pj4KPj4+IEJlc3QgUmVnYXJk cywKPj4+IENoYW53b28gQ2hvaQo+Pj4KPj4+IE9uIDE5LiA2LiAxOC4g7Jik7ZuEIDE6MTQsIEhz aW4tWWkgV2FuZyB3cm90ZToKPj4+ID4gRnJvbTogU2FyYXZhbmEgS2FubmFuIDxza2FubmFuQGNv ZGVhdXJvcmEub3JnPgo+Pj4gPgo+Pj4gPiBGcm9tOiBTYXJhdmFuYSBLYW5uYW4gPHNrYW5uYW5A Y29kZWF1cm9yYS5vcmc+Cj4+PiA+Cj4+PiA+IE1hbnkgQ1BVIGFyY2hpdGVjdHVyZXMgaGF2ZSBj YWNoZXMgdGhhdCBjYW4gc2NhbGUgaW5kZXBlbmRlbnQgb2YgdGhlIENQVXMuCj4+PiA+IEZyZXF1 ZW5jeSBzY2FsaW5nIG9mIHRoZSBjYWNoZXMgaXMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSB0aGUg Y2FjaGUgaXMgbm90Cj4+PiA+IGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjayB0aGF0IGxlYWRzIHRv IHBvb3IgcGVyZm9ybWFuY2UgYW5kIHBvd2VyLiBUaGUgc2FtZQo+Pj4gPiBpZGVhIGFwcGxpZXMg Zm9yIFJBTS9ERFIuCj4+PiA+Cj4+PiA+IFRvIGFjaGlldmUgdGhpcywgdGhpcyBwYXRjaCBhZGRz IGEgZ2VuZXJpYyBkZXZmcmVxIGdvdmVybm9yIHRoYXQgdGFrZXMgdGhlCj4+PiA+IGN1cnJlbnQg ZnJlcXVlbmN5IG9mIGVhY2ggQ1BVIGZyZXF1ZW5jeSBkb21haW4gYW5kIHRoZW4gYWRqdXN0cyB0 aGUKPj4+ID4gZnJlcXVlbmN5IG9mIHRoZSBjYWNoZSAob3IgYW55IGRldmZyZXEgZGV2aWNlKSBi YXNlZCBvbiB0aGUgZnJlcXVlbmN5IG9mCj4+PiA+IHRoZSBDUFVzLiBJdCBsaXN0ZW5zIHRvIENQ VSBmcmVxdWVuY3kgdHJhbnNpdGlvbiBub3RpZmllcnMgdG8ga2VlcCBpdHNlbGYKPj4+ID4gdXAg dG8gZGF0ZSBvbiB0aGUgY3VycmVudCBDUFUgZnJlcXVlbmN5Lgo+Pj4gPgo+Pj4gPiBUbyBkZWNp ZGUgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgZGV2aWNlLCB0aGUgZ292ZXJub3IgZG9lcyBvbmUgb2Yg dGhlCj4+PiA+IGZvbGxvd2luZzoKPj4+ID4KPj4+ID4gKiBVc2VzIGEgQ1BVIGZyZXF1ZW5jeSB0 byBkZXZpY2UgZnJlcXVlbmN5IG1hcHBpbmcgdGFibGUKPj4+ID7CoMKgIC0gRWl0aGVyIG9uZSBt YXBwaW5nIHRhYmxlIHVzZWQgZm9yIGFsbCBDUFUgZnJlcSBwb2xpY2llcyAodHlwaWNhbGx5IHVz ZWQKPj4+ID7CoMKgwqDCoCBmb3Igc3lzdGVtIHdpdGggaG9tb2dlbmVvdXMgY29yZXMvY2x1c3Rl cnMgdGhhdCBoYXZlIHRoZSBzYW1lIE9QUHMpLgo+Pj4gPsKgwqAgLSBPbmUgbWFwcGluZyB0YWJs ZSBwZXIgQ1BVIGZyZXEgcG9saWN5ICh0eXBpY2FsbHkgdXNlZCBmb3IgQVNNUCBzeXN0ZW1zCj4+ PiA+wqDCoMKgwqAgd2l0aCBoZXRlcm9nZW5lb3VzIENQVXMgd2l0aCBkaWZmZXJlbnQgT1BQcykK Pj4+ID4KPj4+ID4gT1IKPj4+ID4KPj4+ID4gKiBTY2FsZXMgdGhlIGRldmljZSBmcmVxdWVuY3kg aW4gcHJvcG9ydGlvbiB0byB0aGUgQ1BVIGZyZXF1ZW5jeS4gU28sIGlmCj4+PiA+wqDCoCB0aGUg Q1BVcyBhcmUgcnVubmluZyBhdCB0aGVpciBtYXggZnJlcXVlbmN5LCB0aGUgZGV2aWNlIHJ1bnMg YXQgaXRzIG1heAo+Pj4gPsKgwqAgZnJlcXVlbmN5LsKgIElmIHRoZSBDUFVzIGFyZSBydW5uaW5n IGF0IHRoZWlyIG1pbiBmcmVxdWVuY3ksIHRoZSBkZXZpY2UKPj4+ID7CoMKgIHJ1bnMgYXQgaXRz IG1pbiBmcmVxdWVuY3kuIEFuZCBpbnRlcnBvbGF0ZWQgZm9yIGZyZXF1ZW5jaWVzIGluIGJldHdl ZW4uCj4+PiA+Cj4+PiA+IFNpZ25lZC1vZmYtYnk6IFNhcmF2YW5hIEthbm5hbiA8c2thbm5hbkBj b2RlYXVyb3JhLm9yZz4KPj4+ID4gU2lnbmVkLW9mZi1ieTogSHNpbi1ZaSBXYW5nIDxoc2lueWlA Y2hyb21pdW0ub3JnPgo+Pj4gPiAtLS0KPj4+ID7CoCAuLi4vYmluZGluZ3MvZGV2ZnJlcS9kZXZm cmVxLWNwdWZyZXEtbWFwLnR4dMKgIHzCoCA1MyArKwo+Pj4gPsKgIGRyaXZlcnMvZGV2ZnJlcS9L Y29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAg OCArCj4+PiA+wqAgZHJpdmVycy9kZXZmcmVxL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+Pj4gPsKgIGRyaXZlcnMvZGV2ZnJlcS9n b3Zlcm5vcl9jcHVmcmVxX21hcC5jwqDCoMKgwqDCoMKgwqAgfCA1ODMgKysrKysrKysrKysrKysr KysrCj4+PiA+wqAgNCBmaWxlcyBjaGFuZ2VkLCA2NDUgaW5zZXJ0aW9ucygrKQo+Pj4gPsKgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGV2ZnJl cS9kZXZmcmVxLWNwdWZyZXEtbWFwLnR4dAo+Pj4gPsKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2RldmZyZXEvZ292ZXJub3JfY3B1ZnJlcV9tYXAuYwo+Pj4gPgo+Pj4gPiBkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RldmZyZXEvZGV2ZnJlcS1jcHVm cmVxLW1hcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGV2ZnJlcS9k ZXZmcmVxLWNwdWZyZXEtbWFwLnR4dAo+Pj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLjk4MmEzMGJjZmM4Ngo+Pj4gPiAtLS0gL2Rldi9udWxsCj4+PiA+ ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kZXZmcmVxL2RldmZyZXEt Y3B1ZnJlcS1tYXAudHh0Cj4+PiA+IEBAIC0wLDAgKzEsNTMgQEAKPj4+ID4gK0RldmZyZXEgQ1BV ZnJlcSBnb3Zlcm5vcgo+Pj4gPiArCj4+PiA+ICtkZXZmcmVxLWNwdWZyZXEtbWFwIGlzIGEgcGFy ZW50IGRldmljZSB0aGF0IGNvbnRhaW5zIG9uZSBvciBtb3JlIGNoaWxkIGRldmljZXMuCj4+PiA+ ICtFYWNoIGNoaWxkIGRldmljZSBwcm92aWRlcyBDUFUgZnJlcXVlbmN5IHRvIGRldmljZSBmcmVx dWVuY3kgbWFwcGluZyBmb3IgYQo+Pj4gPiArc3BlY2lmaWMgZGV2aWNlLiBFeGFtcGxlcyBvZiBk ZXZpY2VzIHRoYXQgY291bGQgdXNlIHRoaXMgYXJlOiBERFIsIGNhY2hlIGFuZAo+Pj4gPiArQ0NJ Lgo+Pj4gPiArCj4+PiA+ICtQYXJlbnQgZGV2aWNlIG5hbWUgc2hhbGwgYmUgImRldmZyZXEtY3B1 ZnJlcS1tYXAiLgo+Pj4gPiArCj4+PiA+ICtSZXF1aXJlZCBjaGlsZCBkZXZpY2UgcHJvcGVydGll czoKPj4+ID4gKy0gY3B1LXRvLWRldi1tYXAsIG9yIGNwdS10by1kZXYtbWFwLTxYPjoKPj4+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQSBsaXN0IG9mIHR1cGxl cyB3aGVyZSBlYWNoIHR1cGxlIGNvbnNpc3RzIG9mIGEKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ1BVIGZyZXF1ZW5jeSAoS0h6KSBhbmQgdGhlIGNvcnJl c3BvbmRpbmcgZGV2aWNlCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGZyZXF1ZW5jeS4gQ1BVIGZyZXF1ZW5jaWVzIG5vdCBsaXN0ZWQgaW4gdGhlIHRhYmxl Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdpbGwgdXNl IHRoZSBkZXZpY2UgZnJlcXVlbmN5IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlCj4+PiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5leHQgcm91bmRlZCB1cCBDUFUg ZnJlcXVlbmN5Lgo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBVc2UgImNwdS10by1kZXYtbWFwIiBpZiBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtIHNob3VsZAo+ Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaGFyZSBzYW1l IG1hcHBpbmcuCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFVzZSBjcHUtdG8tZGV2LW1hcC08Y3B1aWQ+IHRvIGRlc2NyaWJlIGRpZmZlcmVudAo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXBwaW5ncyBmb3IgZGlm ZmVyZW50IENQVXMuIFRoZSBwcm9wZXJ0eSBzaG91bGQgYmUKPj4+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdGVkIG9ubHkgZm9yIHRoZSBmaXJzdCBDUFUg aWYgbXVsdGlwbGUgQ1BVcyBhcmUKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3luY2hyb25vdXMuCj4+PiA+ICstIHRhcmdldC1kZXY6wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFBoYW5kbGUgdG8gZGV2aWNlIHRoYXQgdGhpcyBtYXBwaW5nIGFw cGxpZXMgdG8uCj4+PiA+ICsKPj4+ID4gK0V4YW1wbGU6Cj4+PiA+ICvCoMKgwqDCoCBkZXZmcmVx LWNwdWZyZXEtbWFwIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHVidy1jcHVm cmVxIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGFy Z2V0LWRldiA9IDwmY3B1Ync+Owo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjcHUtdG8tZGV2LW1hcCA9Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8wqAgMzAwMDAwwqAgMTE0NDAwMCA+ LAo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgPMKgIDQyMjQwMMKgIDIyODgwMDAgPiwKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDzCoCA2NTI4MDDCoCAzMDUx MDAwID4sCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCA8wqAgODgzMjAwwqAgNTk5NjAwMCA+LAo+Pj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPCAxMTkwNDAwwqAg ODA1NjAwMCA+LAo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgPCAxNDk3NjAwIDEwMTAxMDAwID4sCj4+PiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8IDE3MjgwMDAg MTIxNDUwMDAgPiwKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDwgMjY0OTYwMCAxNjI1MDAwMCA+Owo+Pj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH07Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjYWNoZS1jcHVmcmVxIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdGFyZ2V0LWRldiA9IDwmY2FjaGU+Owo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHUtdG8tZGV2LW1hcCA9Cj4+PiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8wqAgMzAwMDAw wqAgMzAwMDAwID4sCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCA8wqAgNDIyNDAwwqAgNDIyNDAwID4sCj4+PiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8wqAgNjUy ODAwwqAgNDk5MjAwID4sCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8wqAgODgzMjAwwqAgNTc2MDAwID4sCj4+PiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8wqAg OTYwMDAwwqAgOTYwMDAwID4sCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8IDE0OTc2MDAgMTAzNjgwMCA+LAo+Pj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPCAx NTc0NDAwIDE1NzQ0MDAgPiwKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDwgMTcyODAwMCAxNjUxMjAwID4sCj4+PiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8IDI2 NDk2MDAgMTcyODAwMCA+Owo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH07Cj4+PiA+ ICvCoMKgwqDCoCB9Owo+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL0tjb25maWcg Yi9kcml2ZXJzL2RldmZyZXEvS2NvbmZpZwo+Pj4gPiBpbmRleCAwYzgyMDRkNmI3OGEuLjAzMDNm NWE0MDBiNiAxMDA2NDQKPj4+ID4gLS0tIGEvZHJpdmVycy9kZXZmcmVxL0tjb25maWcKPj4+ID4g KysrIGIvZHJpdmVycy9kZXZmcmVxL0tjb25maWcKPj4+ID4gQEAgLTc0LDYgKzc0LDE0IEBAIGNv bmZpZyBERVZGUkVRX0dPVl9QQVNTSVZFCj4+PiA+wqDCoMKgwqDCoMKgwqDCoCB0aHJvdWdoIHN5 c2ZzIGVudHJpZXMuIFRoZSBwYXNzaXZlIGdvdmVybm9yIHJlY29tbWVuZHMgdGhhdAo+Pj4gPsKg wqDCoMKgwqDCoMKgwqAgZGV2ZnJlcSBkZXZpY2UgdXNlcyB0aGUgT1BQIHRhYmxlIHRvIGdldCB0 aGUgZnJlcXVlbmN5L3ZvbHRhZ2UuCj4+PiA+Cj4+PiA+ICtjb25maWcgREVWRlJFUV9HT1ZfQ1BV RlJFUV9NQVAKPj4+ID4gK8KgwqDCoMKgIHRyaXN0YXRlICJDUFVmcmVxIE1hcCIKPj4+ID4gK8Kg wqDCoMKgIGRlcGVuZHMgb24gQ1BVX0ZSRVEKPj4+ID4gK8KgwqDCoMKgIGhlbHAKPj4+ID4gK8Kg wqDCoMKgwqDCoCBDaG9vc2VzIGZyZXF1ZW5jeSBiYXNlZCBvbiB0aGUgb25saW5lIENQVXMnIGN1 cnJlbnQgZnJlcXVlbmN5IGFuZCBhCj4+PiA+ICvCoMKgwqDCoMKgwqAgQ1BVIGZyZXF1ZW5jeSB0 byBkZXZpY2UgZnJlcXVlbmN5IG1hcHBpbmcgdGFibGUocykuIFRoaXMgZ292ZXJub3IKPj4+ID4g K8KgwqDCoMKgwqDCoCBjYW4gYmUgdXNlZnVsIGZvciBjb250cm9sbGluZyBkZXZpY2VzIHN1Y2gg YXMgRERSLCBjYWNoZSwgQ0NJLCBldGMuCj4+PiA+ICsKPj4+ID7CoCBjb21tZW50ICJERVZGUkVR IERyaXZlcnMiCj4+PiA+Cj4+PiA+wqAgY29uZmlnIEFSTV9FWFlOT1NfQlVTX0RFVkZSRVEKPj4+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGV2ZnJlcS9NYWtlZmlsZSBiL2RyaXZlcnMvZGV2ZnJl cS9NYWtlZmlsZQo+Pj4gPiBpbmRleCA4MTdkZGU3NzlmMTYuLjgxMTQxZTJjNzg0ZiAxMDA2NDQK Pj4+ID4gLS0tIGEvZHJpdmVycy9kZXZmcmVxL01ha2VmaWxlCj4+PiA+ICsrKyBiL2RyaXZlcnMv ZGV2ZnJlcS9NYWtlZmlsZQo+Pj4gPiBAQCAtNiw2ICs2LDcgQEAgb2JqLSQoQ09ORklHX0RFVkZS RVFfR09WX1BFUkZPUk1BTkNFKSArPSBnb3Zlcm5vcl9wZXJmb3JtYW5jZS5vCj4+PiA+wqAgb2Jq LSQoQ09ORklHX0RFVkZSRVFfR09WX1BPV0VSU0FWRSnCoCArPSBnb3Zlcm5vcl9wb3dlcnNhdmUu bwo+Pj4gPsKgIG9iai0kKENPTkZJR19ERVZGUkVRX0dPVl9VU0VSU1BBQ0UpwqAgKz0gZ292ZXJu b3JfdXNlcnNwYWNlLm8KPj4+ID7CoCBvYmotJChDT05GSUdfREVWRlJFUV9HT1ZfUEFTU0lWRSnC oMKgwqAgKz0gZ292ZXJub3JfcGFzc2l2ZS5vCj4+PiA+ICtvYmotJChDT05GSUdfREVWRlJFUV9H T1ZfQ1BVRlJFUV9NQVApwqDCoMKgwqDCoMKgwqAgKz0gZ292ZXJub3JfY3B1ZnJlcV9tYXAubwo+ Pj4gPgo+Pj4gPsKgICMgREVWRlJFUSBEcml2ZXJzCj4+PiA+wqAgb2JqLSQoQ09ORklHX0FSTV9F WFlOT1NfQlVTX0RFVkZSRVEpICs9IGV4eW5vcy1idXMubwo+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9kZXZmcmVxL2dvdmVybm9yX2NwdWZyZXFfbWFwLmMgYi9kcml2ZXJzL2RldmZyZXEvZ292 ZXJub3JfY3B1ZnJlcV9tYXAuYwo+Pj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjA4NGEzZmZiOGY1NAo+Pj4gPiAtLS0gL2Rldi9udWxsCj4+PiA+ICsr KyBiL2RyaXZlcnMvZGV2ZnJlcS9nb3Zlcm5vcl9jcHVmcmVxX21hcC5jCj4+PiA+IEBAIC0wLDAg KzEsNTgzIEBACj4+PiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Pj4g PiArLyoKPj4+ID4gKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE1LCAyMDE4LCBUaGUgTGludXgg Rm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4+ID4gKyAqLwo+Pj4gPiArCj4+PiA+ ICsjZGVmaW5lIHByX2ZtdChmbXQpICJkZXYtY3B1ZnJlcS1tYXA6ICIgZm10Cj4+PiA+ICsKPj4+ ID4gKyNpbmNsdWRlIDxsaW51eC9kZXZmcmVxLmg+Cj4+PiA+ICsjaW5jbHVkZSA8bGludXgvY3B1 Lmg+Cj4+PiA+ICsjaW5jbHVkZSA8bGludXgvY3B1ZnJlcS5oPgo+Pj4gPiArI2luY2x1ZGUgPGxp bnV4L2NwdW1hc2suaD4KPj4+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+PiA+ICsjaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+PiA+ICsjaW5jbHVkZSA8bGludXgvb2Yu aD4KPj4+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4+ID4gKyNpbmNsdWRlICJnb3Zl cm5vci5oIgo+Pj4gPiArCj4+PiA+ICtzdHJ1Y3QgY3B1X3N0YXRlIHsKPj4+ID4gK8KgwqDCoMKg IHVuc2lnbmVkIGludCBmcmVxOwo+Pj4gPiArwqDCoMKgwqAgdW5zaWduZWQgaW50IG1pbl9mcmVx Owo+Pj4gPiArwqDCoMKgwqAgdW5zaWduZWQgaW50IG1heF9mcmVxOwo+Pj4gPiArwqDCoMKgwqAg dW5zaWduZWQgaW50IGZpcnN0X2NwdTsKPj4+ID4gK307Cj4+PiA+ICtzdGF0aWMgc3RydWN0IGNw dV9zdGF0ZSAqc3RhdGVbTlJfQ1BVU107Cj4+PiA+ICtzdGF0aWMgaW50IGNwdWZyZXFfY250Owo+ Pj4gPiArCj4+PiA+ICtzdHJ1Y3QgZnJlcV9tYXAgewo+Pj4gPiArwqDCoMKgwqAgdW5zaWduZWQg aW50IGNwdV9raHo7Cj4+PiA+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgdGFyZ2V0X2ZyZXE7Cj4+ PiA+ICt9Owo+Pj4gPiArCj4+PiA+ICtzdHJ1Y3QgZGV2ZnJlcV9ub2RlIHsKPj4+ID4gK8KgwqDC oMKgIHN0cnVjdCBkZXZmcmVxICpkZjsKPj4+ID4gK8KgwqDCoMKgIHZvaWQgKm9yaWdfZGF0YTsK Pj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldjsKPj4+ID4gK8KgwqDCoMKgIHN0cnVj dCBkZXZpY2Vfbm9kZSAqb2Zfbm9kZTsKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBsaXN0X2hlYWQg bGlzdDsKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBmcmVxX21hcCAqKm1hcDsKPj4+ID4gK8KgwqDC oMKgIHN0cnVjdCBmcmVxX21hcCAqY29tbW9uX21hcDsKPj4+ID4gK307Cj4+PiA+ICtzdGF0aWMg TElTVF9IRUFEKGRldmZyZXFfbGlzdCk7Cj4+PiA+ICtzdGF0aWMgREVGSU5FX01VVEVYKHN0YXRl X2xvY2spOwo+Pj4gPiArc3RhdGljIERFRklORV9NVVRFWChjcHVmcmVxX3JlZ19sb2NrKTsKPj4+ ID4gKwo+Pj4gPiArc3RhdGljIHZvaWQgdXBkYXRlX2FsbF9kZXZmcmVxcyh2b2lkKQo+Pj4gPiAr ewo+Pj4gPiArwqDCoMKgwqAgc3RydWN0IGRldmZyZXFfbm9kZSAqbm9kZTsKPj4+ID4gKwo+Pj4g PiArwqDCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmZGV2ZnJlcV9saXN0LCBsaXN0 KSB7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRldmZyZXEgKmRmID0g bm9kZS0+ZGY7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIW5v ZGUtPmRmKQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b250aW51ZTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF9sb2NrKCZkZi0+ bG9jayk7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdXBkYXRlX2RldmZyZXEoZGYp Owo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG11dGV4X3VubG9jaygmZGYtPmxvY2sp Owo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCB9Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ID4gK3N0YXRp YyBzdHJ1Y3QgZGV2ZnJlcV9ub2RlICpmaW5kX2RldmZyZXFfbm9kZShzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4+PiA+ICt7Cj4+PiA+ICvCoMKgwqDCoCBzdHJ1Y3QgZGV2ZnJlcV9ub2RlICpub2RlOwo+ Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZkZXZmcmVx X2xpc3QsIGxpc3QpCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKG5vZGUtPmRl diA9PSBkZXYgfHwgbm9kZS0+b2Zfbm9kZSA9PSBkZXYtPm9mX25vZGUpCj4+PiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBub2RlOwo+Pj4gPiArCj4+ PiA+ICvCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4+ID4gK30KPj4+ID4gKwo+Pj4gPiArLyogPT09 PT09PT09PT09PT09PT09PT0gY3B1ZnJlcSBwYXJ0ID09PT09PT09PT09PT09PT09PT09ICovCj4+ PiA+ICtzdGF0aWMgc3RydWN0IGNwdV9zdGF0ZSAqYWRkX3BvbGljeShzdHJ1Y3QgY3B1ZnJlcV9w b2xpY3kgKnBvbGljeSkKPj4+ID4gK3sKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBjcHVfc3RhdGUg Km5ld19zdGF0ZTsKPj4+ID4gK8KgwqDCoMKgIHVuc2lnbmVkIGludCBjcHUsIGZpcnN0X2NwdTsK Pj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgbmV3X3N0YXRlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0 IGNwdV9zdGF0ZSksIEdGUF9LRVJORUwpOwo+Pj4gPiArwqDCoMKgwqAgaWYgKCFuZXdfc3RhdGUp Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+PiA+ICsKPj4+ ID4gK8KgwqDCoMKgIGZpcnN0X2NwdSA9IGNwdW1hc2tfZmlyc3QocG9saWN5LT5yZWxhdGVkX2Nw dXMpOwo+Pj4gPiArwqDCoMKgwqAgbmV3X3N0YXRlLT5maXJzdF9jcHUgPSBmaXJzdF9jcHU7Cj4+ PiA+ICvCoMKgwqDCoCBuZXdfc3RhdGUtPmZyZXEgPSBwb2xpY3ktPmN1cjsKPj4+ID4gK8KgwqDC oMKgIG5ld19zdGF0ZS0+bWluX2ZyZXEgPSBwb2xpY3ktPmNwdWluZm8ubWluX2ZyZXE7Cj4+PiA+ ICvCoMKgwqDCoCBuZXdfc3RhdGUtPm1heF9mcmVxID0gcG9saWN5LT5jcHVpbmZvLm1heF9mcmVx Owo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCBmb3JfZWFjaF9jcHUoY3B1LCBwb2xpY3ktPnJlbGF0 ZWRfY3B1cykKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0ZVtjcHVdID0gbmV3 X3N0YXRlOwo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCByZXR1cm4gbmV3X3N0YXRlOwo+Pj4gPiAr fQo+Pj4gPiArCj4+PiA+ICtzdGF0aWMgaW50IGNwdWZyZXFfdHJhbnNfbm90aWZpZXIoc3RydWN0 IG5vdGlmaWVyX2Jsb2NrICpuYiwKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNp Z25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKQo+Pj4gPiArewo+Pj4gPiArwqDCoMKgwqAgc3Ry dWN0IGNwdWZyZXFfZnJlcXMgKmZyZXEgPSBkYXRhOwo+Pj4gPiArwqDCoMKgwqAgc3RydWN0IGNw dV9zdGF0ZSAqczsKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5 ID0gTlVMTDsKPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgaWYgKGV2ZW50ICE9IENQVUZSRVFfUE9T VENIQU5HRSkKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+ID4g Kwo+Pj4gPiArwqDCoMKgwqAgbXV0ZXhfbG9jaygmc3RhdGVfbG9jayk7Cj4+PiA+ICsKPj4+ID4g K8KgwqDCoMKgIHMgPSBzdGF0ZVtmcmVxLT5jcHVdOwo+Pj4gPiArwqDCoMKgwqAgaWYgKCFzKSB7 Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9saWN5ID0gY3B1ZnJlcV9jcHVfZ2V0 KGZyZXEtPmNwdSk7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBvbGljeSkg ewo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzID0gYWRk X3BvbGljeShwb2xpY3kpOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjcHVmcmVxX2NwdV9wdXQocG9saWN5KTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9Cj4+PiA+ICvCoMKgwqDCoCB9Cj4+PiA+ICvCoMKgwqDCoCBpZiAoIXMpCj4+PiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+PiA+ICsKPj4+ID4gK8KgwqDC oMKgIGlmIChzLT5mcmVxICE9IGZyZXEtPm5ldyB8fCBwb2xpY3kpIHsKPj4+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzLT5mcmVxID0gZnJlcS0+bmV3Owo+Pj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVwZGF0ZV9hbGxfZGV2ZnJlcXMoKTsKPj4+ID4gK8KgwqDCoMKgIH0KPj4+ ID4gKwo+Pj4gPiArb3V0Ogo+Pj4gPiArwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZzdGF0ZV9sb2Nr KTsKPj4+ID4gK8KgwqDCoMKgIHJldHVybiAwOwo+Pj4gPiArfQo+Pj4gPiArCj4+PiA+ICtzdGF0 aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGNwdWZyZXFfdHJhbnNfbmIgPSB7Cj4+PiA+ICvCoMKg wqDCoCAubm90aWZpZXJfY2FsbCA9IGNwdWZyZXFfdHJhbnNfbm90aWZpZXIKPj4+ID4gK307Cj4+ PiA+ICsKPj4+ID4gK3N0YXRpYyBpbnQgcmVnaXN0ZXJfY3B1ZnJlcSh2b2lkKQo+Pj4gPiArewo+ Pj4gPiArwqDCoMKgwqAgaW50IHJldCA9IDA7Cj4+PiA+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQg Y3B1Owo+Pj4gPiArwqDCoMKgwqAgc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3k7Cj4+PiA+ ICsKPj4+ID4gK8KgwqDCoMKgIG11dGV4X2xvY2soJmNwdWZyZXFfcmVnX2xvY2spOwo+Pj4gPiAr Cj4+PiA+ICvCoMKgwqDCoCBpZiAoY3B1ZnJlcV9jbnQpCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ290byBjbnRfbm90X3plcm87Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIGdldF9v bmxpbmVfY3B1cygpOwo+Pj4gPiArwqDCoMKgwqAgcmV0ID0gY3B1ZnJlcV9yZWdpc3Rlcl9ub3Rp ZmllcigmY3B1ZnJlcV90cmFuc19uYiwKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENQVUZSRVFfVFJBTlNJVElPTl9OT1RJRklF Uik7Cj4+PiA+ICvCoMKgwqDCoCBpZiAocmV0KQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdvdG8gb3V0Owo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCBmb3JfZWFjaF9vbmxpbmVfY3B1 KGNwdSkgewo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvbGljeSA9IGNwdWZyZXFf Y3B1X2dldChjcHUpOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChwb2xpY3kp IHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkX3Bv bGljeShwb2xpY3kpOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjcHVmcmVxX2NwdV9wdXQocG9saWN5KTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9Cj4+PiA+ICvCoMKgwqDCoCB9Cj4+PiA+ICtvdXQ6Cj4+PiA+ICvCoMKgwqDCoCBwdXRf b25saW5lX2NwdXMoKTsKPj4+ID4gK2NudF9ub3RfemVybzoKPj4+ID4gK8KgwqDCoMKgIGlmICgh cmV0KQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNwdWZyZXFfY250Kys7Cj4+PiA+ ICvCoMKgwqDCoCBtdXRleF91bmxvY2soJmNwdWZyZXFfcmVnX2xvY2spOwo+Pj4gPiArwqDCoMKg wqAgcmV0dXJuIHJldDsKPj4+ID4gK30KPj4+ID4gKwo+Pj4gPiArc3RhdGljIGludCB1bnJlZ2lz dGVyX2NwdWZyZXEodm9pZCkKPj4+ID4gK3sKPj4+ID4gK8KgwqDCoMKgIGludCByZXQgPSAwOwo+ Pj4gPiArwqDCoMKgwqAgaW50IGNwdTsKPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgbXV0ZXhfbG9j aygmY3B1ZnJlcV9yZWdfbG9jayk7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIGlmIChjcHVmcmVx X2NudCA+IDEpCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+PiA+ ICsKPj4+ID4gK8KgwqDCoMKgIGNwdWZyZXFfdW5yZWdpc3Rlcl9ub3RpZmllcigmY3B1ZnJlcV90 cmFuc19uYiwKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIENQVUZSRVFfVFJBTlNJVElPTl9OT1RJRklFUik7Cj4+PiA+ICsKPj4+ ID4gK8KgwqDCoMKgIGZvciAoY3B1ID0gQVJSQVlfU0laRShzdGF0ZSkgLSAxOyBjcHUgPj0gMDsg Y3B1LS0pIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXN0YXRlW2NwdV0p Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVl Owo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzdGF0ZVtjcHVdLT5maXJzdF9j cHUgPT0gY3B1KQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBrZnJlZShzdGF0ZVtjcHVdKTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0 ZVtjcHVdID0gTlVMTDsKPj4+ID4gK8KgwqDCoMKgIH0KPj4+ID4gKwo+Pj4gPiArb3V0Ogo+Pj4g PiArwqDCoMKgwqAgY3B1ZnJlcV9jbnQtLTsKPj4+ID4gK8KgwqDCoMKgIG11dGV4X3VubG9jaygm Y3B1ZnJlcV9yZWdfbG9jayk7Cj4+PiA+ICvCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4gPiArfQo+ Pj4gPiArCj4+PiA+ICsvKiA9PT09PT09PT09PT09PT09PT09PSBkZXZmcmVxIHBhcnQgPT09PT09 PT09PT09PT09PT09PT0gKi8KPj4+ID4gKwo+Pj4gPiArc3RhdGljIHVuc2lnbmVkIGludCBpbnRl cnBvbGF0ZV9mcmVxKHN0cnVjdCBkZXZmcmVxICpkZiwgdW5zaWduZWQgaW50IGNwdSkKPj4+ID4g K3sKPj4+ID4gK8KgwqDCoMKgIHVuc2lnbmVkIGxvbmcgKmZyZXFfdGFibGUgPSBkZi0+cHJvZmls ZS0+ZnJlcV90YWJsZTsKPj4+ID4gK8KgwqDCoMKgIHVuc2lnbmVkIGludCBjcHVfbWluID0gc3Rh dGVbY3B1XS0+bWluX2ZyZXE7Cj4+PiA+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgY3B1X21heCA9 IHN0YXRlW2NwdV0tPm1heF9mcmVxOwo+Pj4gPiArwqDCoMKgwqAgdW5zaWduZWQgaW50IGNwdV9m cmVxID0gc3RhdGVbY3B1XS0+ZnJlcTsKPj4+ID4gK8KgwqDCoMKgIHVuc2lnbmVkIGludCBkZXZf bWluLCBkZXZfbWF4LCBjcHVfcGVyY2VudDsKPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgaWYgKGZy ZXFfdGFibGUpIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfbWluID0gZnJl cV90YWJsZVswXTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfbWF4ID0gZnJl cV90YWJsZVtkZi0+cHJvZmlsZS0+bWF4X3N0YXRlIC0gMV07Cj4+PiA+ICvCoMKgwqDCoCB9IGVs c2Ugewo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChkZi0+bWF4X2ZyZXEgPD0g ZGYtPm1pbl9mcmVxKQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gMDsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfbWluID0g ZGYtPm1pbl9mcmVxOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9tYXggPSBk Zi0+bWF4X2ZyZXE7Cj4+PiA+ICvCoMKgwqDCoCB9Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIGNw dV9wZXJjZW50ID0gKChjcHVfZnJlcSAtIGNwdV9taW4pICogMTAwKSAvIChjcHVfbWF4IC0gY3B1 X21pbik7Cj4+PiA+ICvCoMKgwqDCoCByZXR1cm4gZGV2X21pbiArIG11bHRfZnJhYyhkZXZfbWF4 IC0gZGV2X21pbiwgY3B1X3BlcmNlbnQsIDEwMCk7Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ID4gK3N0 YXRpYyB1bnNpZ25lZCBpbnQgY3B1X3RvX2Rldl9mcmVxKHN0cnVjdCBkZXZmcmVxICpkZiwgdW5z aWduZWQgaW50IGNwdSkKPj4+ID4gK3sKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBmcmVxX21hcCAq bWFwID0gTlVMTDsKPj4+ID4gK8KgwqDCoMKgIHVuc2lnbmVkIGludCBjcHVfa2h6ID0gMCwgZnJl cTsKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBkZXZmcmVxX25vZGUgKm4gPSBkZi0+ZGF0YTsKPj4+ ID4gKwo+Pj4gPiArwqDCoMKgwqAgaWYgKCFzdGF0ZVtjcHVdIHx8IHN0YXRlW2NwdV0tPmZpcnN0 X2NwdSAhPSBjcHUpIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmcmVxID0gMDsK Pj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4+ID4gK8KgwqDCoMKg IH0KPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgaWYgKG4tPmNvbW1vbl9tYXApCj4+PiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbWFwID0gbi0+Y29tbW9uX21hcDsKPj4+ID4gK8KgwqDCoMKg IGVsc2UgaWYgKG4tPm1hcCkKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXAgPSBu LT5tYXBbY3B1XTsKPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgY3B1X2toeiA9IHN0YXRlW2NwdV0t PmZyZXE7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIGlmICghbWFwKSB7Cj4+PiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZnJlcSA9IGludGVycG9sYXRlX2ZyZXEoZGYsIGNwdSk7Cj4+PiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+PiA+ICvCoMKgwqDCoCB9Cj4+ PiA+ICsKPj4+ID4gK8KgwqDCoMKgIHdoaWxlIChtYXAtPmNwdV9raHogJiYgbWFwLT5jcHVfa2h6 IDwgY3B1X2toeikKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXArKzsKPj4+ID4g K8KgwqDCoMKgIGlmICghbWFwLT5jcHVfa2h6KQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG1hcC0tOwo+Pj4gPiArwqDCoMKgwqAgZnJlcSA9IG1hcC0+dGFyZ2V0X2ZyZXE7Cj4+PiA+ ICsKPj4+ID4gK291dDoKPj4+ID4gK8KgwqDCoMKgIGRldl9kYmcoZGYtPmRldi5wYXJlbnQsICJD UFUldTogJWQgLT4gZGV2OiAldVxuIiwgY3B1LCBjcHVfa2h6LCBmcmVxKTsKPj4+ID4gK8KgwqDC oMKgIHJldHVybiBmcmVxOwo+Pj4gPiArfQo+Pj4gPiArCj4+PiA+ICtzdGF0aWMgaW50IGRldmZy ZXFfY3B1ZnJlcV9nZXRfZnJlcShzdHJ1Y3QgZGV2ZnJlcSAqZGYsCj4+PiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdW5zaWduZWQgbG9uZyAqZnJlcSkKPj4+ID4gK3sKPj4+ID4gK8KgwqDCoMKgIHVuc2ln bmVkIGludCBjcHUsIHRndF9mcmVxID0gMDsKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBkZXZmcmVx X25vZGUgKm5vZGU7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIG5vZGUgPSBkZi0+ZGF0YTsKPj4+ ID4gK8KgwqDCoMKgIGlmICghbm9kZSkgewo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHByX2VycigiVW5hYmxlIHRvIGZpbmQgZGV2ZnJlcSBub2RlIVxuIik7Cj4+PiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+PiA+ICvCoMKgwqDCoCB9Cj4+PiA+ ICsKPj4+ID4gK8KgwqDCoMKgIGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpCj4+PiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdGd0X2ZyZXEgPSBtYXgodGd0X2ZyZXEsIGNwdV90b19kZXZf ZnJlcShkZiwgY3B1KSk7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgICpmcmVxID0gdGd0X2ZyZXE7 Cj4+PiA+ICvCoMKgwqDCoCByZXR1cm4gMDsKPj4+ID4gK30KPj4+ID4gKwo+Pj4gPiArc3RhdGlj IHVuc2lnbmVkIGludCBzaG93X3RhYmxlKGNoYXIgKmJ1ZiwgdW5zaWduZWQgaW50IGxlbiwKPj4+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBmcmVxX21hcCAqbWFwKQo+Pj4gPiArewo+Pj4gPiArwqDCoMKgwqAgdW5zaWdu ZWQgaW50IGNudCA9IDA7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIGNudCArPSBzbnByaW50Zihi dWYgKyBjbnQsIGxlbiAtIGNudCwgIkNQVSBmcmVxXHREZXZpY2UgZnJlcVxuIik7Cj4+PiA+ICsK Pj4+ID4gK8KgwqDCoMKgIHdoaWxlIChtYXAtPmNwdV9raHogJiYgY250IDwgbGVuKSB7Cj4+PiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY250ICs9IHNucHJpbnRmKGJ1ZiArIGNudCwgbGVu IC0gY250LCAiJTh1XHQlMTF1XG4iLAo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWFwLT5jcHVfa2h6LCBtYXAtPnRhcmdldF9m cmVxKTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXArKzsKPj4+ID4gK8KgwqDC oMKgIH0KPj4+ID4gK8KgwqDCoMKgIGlmIChjbnQgPCBsZW4pCj4+PiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY250ICs9IHNucHJpbnRmKGJ1ZiArIGNudCwgbGVuIC0gY250LCAiXG4iKTsK Pj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgcmV0dXJuIGNudDsKPj4+ID4gK30KPj4+ID4gKwo+Pj4g PiArc3RhdGljIHNzaXplX3QgZnJlcV9tYXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjaGFyICpidWYpCj4+PiA+ICt7Cj4+PiA+ICvCoMKgwqDCoCBzdHJ1 Y3QgZGV2ZnJlcSAqZGYgPSB0b19kZXZmcmVxKGRldik7Cj4+PiA+ICvCoMKgwqDCoCBzdHJ1Y3Qg ZGV2ZnJlcV9ub2RlICpuID0gZGYtPmRhdGE7Cj4+PiA+ICvCoMKgwqDCoCBzdHJ1Y3QgZnJlcV9t YXAgKm1hcDsKPj4+ID4gK8KgwqDCoMKgIHVuc2lnbmVkIGludCBjbnQgPSAwLCBjcHU7Cj4+PiA+ ICsKPj4+ID4gK8KgwqDCoMKgIG11dGV4X2xvY2soJnN0YXRlX2xvY2spOwo+Pj4gPiArwqDCoMKg wqAgaWYgKG4tPmNvbW1vbl9tYXApIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBt YXAgPSBuLT5jb21tb25fbWFwOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNudCAr PSBzbnByaW50ZihidWYgKyBjbnQsIFBBR0VfU0laRSAtIGNudCwKPj4+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJDb21tb24gdGFi bGUgZm9yIGFsbCBDUFVzOlxuIik7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY250 ICs9IHNob3dfdGFibGUoYnVmICsgY250LCBQQUdFX1NJWkUgLSBjbnQsIG1hcCk7Cj4+PiA+ICvC oMKgwqDCoCB9IGVsc2UgaWYgKG4tPm1hcCkgewo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWFwID0gbi0+bWFwW2NwdV07Cj4+PiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghbWFwKQo+Pj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGlu dWU7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNudCAr PSBzbnByaW50ZihidWYgKyBjbnQsIFBBR0VfU0laRSAtIGNudCwKPj4+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAiQ1BVICV1OlxuIiwgY3B1KTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKGNudCA+PSBQQUdFX1NJWkUpCj4+PiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY250ICs9IHNob3dfdGFi bGUoYnVmICsgY250LCBQQUdFX1NJWkUgLSBjbnQsIG1hcCk7Cj4+PiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChjbnQgPj0gUEFHRV9TSVpFKQo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4gPiArwqDCoMKgwqAg fSBlbHNlIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjbnQgKz0gc25wcmludGYo YnVmICsgY250LCBQQUdFX1NJWkUgLSBjbnQsCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiRGV2aWNlIGZyZXEgaW50ZXJwb2xh dGVkIGJhc2VkIG9uIENQVSBmcmVxXG4iKTsKPj4+ID4gK8KgwqDCoMKgIH0KPj4+ID4gK8KgwqDC oMKgIG11dGV4X3VubG9jaygmc3RhdGVfbG9jayk7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIHJl dHVybiBjbnQ7Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ID4gK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhm cmVxX21hcCk7Cj4+PiA+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGV2X2F0dHJbXSA9IHsK Pj4+ID4gK8KgwqDCoMKgICZkZXZfYXR0cl9mcmVxX21hcC5hdHRyLAo+Pj4gPiArwqDCoMKgwqAg TlVMTCwKPj4+ID4gK307Cj4+PiA+ICsKPj4+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIGRldl9hdHRyX2dyb3VwID0gewo+Pj4gPiArwqDCoMKgwqAgLm5hbWUgPSAiY3B1ZnJlcS1t YXAiLAo+Pj4gPiArwqDCoMKgwqAgLmF0dHJzID0gZGV2X2F0dHIsCj4+PiA+ICt9Owo+Pj4gPiAr Cj4+PiA+ICtzdGF0aWMgaW50IGRldmZyZXFfY3B1ZnJlcV9nb3Zfc3RhcnQoc3RydWN0IGRldmZy ZXEgKmRldmZyZXEpCj4+PiA+ICt7Cj4+PiA+ICvCoMKgwqDCoCBpbnQgcmV0ID0gMDsKPj4+ID4g K8KgwqDCoMKgIHN0cnVjdCBkZXZmcmVxX25vZGUgKm5vZGU7Cj4+PiA+ICvCoMKgwqDCoCBib29s IGFsbG9jID0gZmFsc2U7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIHJldCA9IHJlZ2lzdGVyX2Nw dWZyZXEoKTsKPj4+ID4gK8KgwqDCoMKgIGlmIChyZXQpCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKCZkZXZmcmVxLT5kZXYua29iaiwgJmRldl9hdHRyX2dyb3VwKTsKPj4+ID4g K8KgwqDCoMKgIGlmIChyZXQpIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnJl Z2lzdGVyX2NwdWZyZXEoKTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g cmV0Owo+Pj4gPiArwqDCoMKgwqAgfQo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCBtdXRleF9sb2Nr KCZzdGF0ZV9sb2NrKTsKPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgbm9kZSA9IGZpbmRfZGV2ZnJl cV9ub2RlKGRldmZyZXEtPmRldi5wYXJlbnQpOwo+Pj4gPiArwqDCoMKgwqAgaWYgKG5vZGUgPT0g TlVMTCkgewo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5vZGUgPSBremFsbG9jKHNp emVvZihzdHJ1Y3QgZGV2ZnJlcV9ub2RlKSwgR0ZQX0tFUk5FTCk7Cj4+PiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKCFub2RlKSB7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gYWxsb2NfZmFpbDsKPj4+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB9Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWxsb2Mg PSB0cnVlOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5vZGUtPmRldiA9IGRldmZy ZXEtPmRldi5wYXJlbnQ7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdF9hZGRf dGFpbCgmbm9kZS0+bGlzdCwgJmRldmZyZXFfbGlzdCk7Cj4+PiA+ICvCoMKgwqDCoCB9Cj4+PiA+ ICvCoMKgwqDCoCBub2RlLT5kZiA9IGRldmZyZXE7Cj4+PiA+ICvCoMKgwqDCoCBub2RlLT5vcmln X2RhdGEgPSBkZXZmcmVxLT5kYXRhOwo+Pj4gPiArwqDCoMKgwqAgZGV2ZnJlcS0+ZGF0YSA9IG5v ZGU7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIG11dGV4X2xvY2soJmRldmZyZXEtPmxvY2spOwo+ Pj4gPiArwqDCoMKgwqAgcmV0ID0gdXBkYXRlX2RldmZyZXEoZGV2ZnJlcSk7Cj4+PiA+ICvCoMKg wqDCoCBtdXRleF91bmxvY2soJmRldmZyZXEtPmxvY2spOwo+Pj4gPiArwqDCoMKgwqAgaWYgKHJl dCkgewo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiRnJlcSB1cGRhdGUg ZmFpbGVkIVxuIik7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byB1cGRhdGVf ZmFpbDsKPj4+ID4gK8KgwqDCoMKgIH0KPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgbXV0ZXhfdW5s b2NrKCZzdGF0ZV9sb2NrKTsKPj4+ID4gK8KgwqDCoMKgIHJldHVybiAwOwo+Pj4gPiArCj4+PiA+ ICt1cGRhdGVfZmFpbDoKPj4+ID4gK8KgwqDCoMKgIGRldmZyZXEtPmRhdGEgPSBub2RlLT5vcmln X2RhdGE7Cj4+PiA+ICvCoMKgwqDCoCBpZiAoYWxsb2MpIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBsaXN0X2RlbCgmbm9kZS0+bGlzdCk7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAga2ZyZWUobm9kZSk7Cj4+PiA+ICvCoMKgwqDCoCB9Cj4+PiA+ICthbGxvY19mYWls Ogo+Pj4gPiArwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZzdGF0ZV9sb2NrKTsKPj4+ID4gK8KgwqDC oMKgIHN5c2ZzX3JlbW92ZV9ncm91cCgmZGV2ZnJlcS0+ZGV2LmtvYmosICZkZXZfYXR0cl9ncm91 cCk7Cj4+PiA+ICvCoMKgwqDCoCB1bnJlZ2lzdGVyX2NwdWZyZXEoKTsKPj4+ID4gK8KgwqDCoMKg IHJldHVybiByZXQ7Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ID4gK3N0YXRpYyB2b2lkIGRldmZyZXFf Y3B1ZnJlcV9nb3Zfc3RvcChzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJlcSkKPj4+ID4gK3sKPj4+ID4g K8KgwqDCoMKgIHN0cnVjdCBkZXZmcmVxX25vZGUgKm5vZGUgPSBkZXZmcmVxLT5kYXRhOwo+Pj4g PiArCj4+PiA+ICvCoMKgwqDCoCBtdXRleF9sb2NrKCZzdGF0ZV9sb2NrKTsKPj4+ID4gK8KgwqDC oMKgIGRldmZyZXEtPmRhdGEgPSBub2RlLT5vcmlnX2RhdGE7Cj4+PiA+ICvCoMKgwqDCoCBpZiAo bm9kZS0+bWFwIHx8IG5vZGUtPmNvbW1vbl9tYXApIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBub2RlLT5kZiA9IE5VTEw7Cj4+PiA+ICvCoMKgwqDCoCB9IGVsc2Ugewo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxpc3RfZGVsKCZub2RlLT5saXN0KTsKPj4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrZnJlZShub2RlKTsKPj4+ID4gK8KgwqDCoMKgIH0KPj4+ ID4gK8KgwqDCoMKgIG11dGV4X3VubG9jaygmc3RhdGVfbG9jayk7Cj4+PiA+ICsKPj4+ID4gK8Kg wqDCoMKgIHN5c2ZzX3JlbW92ZV9ncm91cCgmZGV2ZnJlcS0+ZGV2LmtvYmosICZkZXZfYXR0cl9n cm91cCk7Cj4+PiA+ICvCoMKgwqDCoCB1bnJlZ2lzdGVyX2NwdWZyZXEoKTsKPj4+ID4gK30KPj4+ ID4gKwo+Pj4gPiArc3RhdGljIGludCBkZXZmcmVxX2NwdWZyZXFfZXZfaGFuZGxlcihzdHJ1Y3Qg ZGV2ZnJlcSAqZGV2ZnJlcSwKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgZXZl bnQsIHZvaWQgKmRhdGEpCj4+PiA+ICt7Cj4+PiA+ICvCoMKgwqDCoCBpbnQgcmV0Owo+Pj4gPiAr Cj4+PiA+ICvCoMKgwqDCoCBzd2l0Y2ggKGV2ZW50KSB7Cj4+PiA+ICvCoMKgwqDCoCBjYXNlIERF VkZSRVFfR09WX1NUQVJUOgo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0ID0gZGV2ZnJlcV9jcHVmcmVxX2dvdl9zdGFydChkZXZmcmVxKTsKPj4+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KSB7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiR292ZXJub3Igc3RhcnQgZmFpbGVkIVxuIik7Cj4+ PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7 Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHByX2RlYnVnKCJFbmFibGVkIENQVWZyZXEtbWFwIGdvdmVybm9yXG4iKTsKPj4+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4+ID4gKwo+Pj4gPiArwqDCoMKg wqAgY2FzZSBERVZGUkVRX0dPVl9TVE9QOgo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGV2ZnJlcV9jcHVmcmVxX2dvdl9zdG9wKGRldmZyZXEpOwo+Pj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCJEaXNhYmxlZCBkZXYgQ1BVZnJlcS1tYXAgZ292 ZXJub3JcbiIpOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4gPiAr wqDCoMKgwqAgfQo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCByZXR1cm4gMDsKPj4+ID4gK30KPj4+ ID4gKwo+Pj4gPiArc3RhdGljIHN0cnVjdCBkZXZmcmVxX2dvdmVybm9yIGRldmZyZXFfY3B1ZnJl cSA9IHsKPj4+ID4gK8KgwqDCoMKgIC5uYW1lID0gImNwdWZyZXEtbWFwIiwKPj4+ID4gK8KgwqDC oMKgIC5nZXRfdGFyZ2V0X2ZyZXEgPSBkZXZmcmVxX2NwdWZyZXFfZ2V0X2ZyZXEsCj4+PiA+ICvC oMKgwqDCoCAuZXZlbnRfaGFuZGxlciA9IGRldmZyZXFfY3B1ZnJlcV9ldl9oYW5kbGVyLAo+Pj4g PiArfTsKPj4+ID4gKwo+Pj4gPiArI2RlZmluZSBOVU1fQ09MU8KgwqDCoMKgIDIKPj4+ID4gK3N0 YXRpYyBzdHJ1Y3QgZnJlcV9tYXAgKnJlYWRfdGJsKHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2Zfbm9k ZSwgY2hhciAqcHJvcF9uYW1lKQo+Pj4gPiArewo+Pj4gPiArwqDCoMKgwqAgaW50IGxlbiwgbmYs IGksIGo7Cj4+PiA+ICvCoMKgwqDCoCB1MzIgZGF0YTsKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBm cmVxX21hcCAqdGJsOwo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCBpZiAoIW9mX2ZpbmRfcHJvcGVy dHkob2Zfbm9kZSwgcHJvcF9uYW1lLCAmbGVuKSkKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gTlVMTDsKPj4+ID4gK8KgwqDCoMKgIGxlbiAvPSBzaXplb2YoZGF0YSk7Cj4+ PiA+ICsKPj4+ID4gK8KgwqDCoMKgIGlmIChsZW4gJSBOVU1fQ09MUyB8fCBsZW4gPT0gMCkKPj4+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4+ID4gK8KgwqDCoMKg IG5mID0gbGVuIC8gTlVNX0NPTFM7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIHRibCA9IGt6YWxs b2MoKG5mICsgMSkgKiBzaXplb2YoKnRibCksIEdGUF9LRVJORUwpOwo+Pj4gPiArwqDCoMKgwqAg aWYgKCF0YmwpCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+ PiA+ICsKPj4+ID4gK8KgwqDCoMKgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbmY7IGkrKywgaiAr PSAyKSB7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2ZfcHJvcGVydHlfcmVhZF91 MzJfaW5kZXgob2Zfbm9kZSwgcHJvcF9uYW1lLCBqLCAmZGF0YSk7Cj4+PiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdGJsW2ldLmNwdV9raHogPSBkYXRhOwo+Pj4gPiArCj4+PiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgob2Zfbm9kZSwg cHJvcF9uYW1lLCBqICsgMSwgJmRhdGEpOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHRibFtpXS50YXJnZXRfZnJlcSA9IGRhdGE7Cj4+PiA+ICvCoMKgwqDCoCB9Cj4+PiA+ICvCoMKg wqDCoCB0YmxbaV0uY3B1X2toeiA9IDA7Cj4+PiA+ICsKPj4+ID4gK8KgwqDCoMKgIHJldHVybiB0 Ymw7Cj4+PiA+ICt9Cj4+PiA+ICsKPj4+ID4gKyNkZWZpbmUgUFJPUF9UQVJHRVQgInRhcmdldC1k ZXYiCj4+PiA+ICsjZGVmaW5lIFBST1BfVEFCTEUgImNwdS10by1kZXYtbWFwIgo+Pj4gPiArc3Rh dGljIGludCBhZGRfdGFibGVfZnJvbV9vZihzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX25vZGUpCj4+ PiA+ICt7Cj4+PiA+ICvCoMKgwqDCoCBzdHJ1Y3QgZGV2aWNlX25vZGUgKnRhcmdldF9vZl9ub2Rl Owo+Pj4gPiArwqDCoMKgwqAgc3RydWN0IGRldmZyZXFfbm9kZSAqbm9kZTsKPj4+ID4gK8KgwqDC oMKgIHN0cnVjdCBmcmVxX21hcCAqY29tbW9uX3RibDsKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBm cmVxX21hcCAqKnRibF9saXN0ID0gTlVMTDsKPj4+ID4gK8KgwqDCoMKgIHN0YXRpYyBjaGFyIHBy b3BfbmFtZVtdID0gUFJPUF9UQUJMRSAiLTk5OTk5OSI7Cj4+PiA+ICvCoMKgwqDCoCBpbnQgY3B1 LCByZXQsIGNudCA9IDAsIHByb3Bfc3ogPSBBUlJBWV9TSVpFKHByb3BfbmFtZSk7Cj4+PiA+ICsK Pj4+ID4gK8KgwqDCoMKgIHRhcmdldF9vZl9ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShvZl9ub2Rl LCBQUk9QX1RBUkdFVCwgMCk7Cj4+PiA+ICvCoMKgwqDCoCBpZiAoIXRhcmdldF9vZl9ub2RlKQo+ Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4gPiArCj4+ PiA+ICvCoMKgwqDCoCBub2RlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGRldmZyZXFfbm9kZSks IEdGUF9LRVJORUwpOwo+Pj4gPiArwqDCoMKgwqAgaWYgKCFub2RlKQo+Pj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCBj b21tb25fdGJsID0gcmVhZF90Ymwob2Zfbm9kZSwgUFJPUF9UQUJMRSk7Cj4+PiA+ICvCoMKgwqDC oCBpZiAoIWNvbW1vbl90YmwpIHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0Ymxf bGlzdCA9IGt6YWxsb2Moc2l6ZW9mKCp0YmxfbGlzdCkgKiBOUl9DUFVTLCBHRlBfS0VSTkVMKTsK Pj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXRibF9saXN0KSB7Cj4+PiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07Cj4+ PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2xp c3Q7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4gPiArCj4+PiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBzbnByaW50Zihw cm9wX25hbWUsIHByb3Bfc3osICIlcy0lZCIsCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUFJPUF9U QUJMRSwgY3B1KTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKHJldCA+PSBwcm9wX3N6KSB7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl93YXJuKCJNb3JlIENQVXMgdGhhbiBJ IGNhbiBoYW5kbGUhXG4iKTsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX3dhcm4oIlNraXBwaW5nIHJlc3Qgb2YgdGhlIHRh YmxlcyFcbiIpOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdGJsX2xpc3RbY3B1XSA9IHJlYWRfdGJsKG9mX25vZGUsIHByb3BfbmFtZSk7Cj4+ PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICh0YmxfbGlz dFtjcHVdKQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY250Kys7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ Pj4gPiArwqDCoMKgwqAgfQo+Pj4gPiArwqDCoMKgwqAgaWYgKCFjb21tb25fdGJsICYmICFjbnQp IHsKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX3RibDsKPj4+ID4gK8KgwqDCoMKgIH0K Pj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgbXV0ZXhfbG9jaygmc3RhdGVfbG9jayk7Cj4+PiA+ICvC oMKgwqDCoCBub2RlLT5vZl9ub2RlID0gdGFyZ2V0X29mX25vZGU7Cj4+PiA+ICvCoMKgwqDCoCBu b2RlLT5tYXAgPSB0YmxfbGlzdDsKPj4+ID4gK8KgwqDCoMKgIG5vZGUtPmNvbW1vbl9tYXAgPSBj b21tb25fdGJsOwo+Pj4gPiArwqDCoMKgwqAgbGlzdF9hZGRfdGFpbCgmbm9kZS0+bGlzdCwgJmRl dmZyZXFfbGlzdCk7Cj4+PiA+ICvCoMKgwqDCoCBtdXRleF91bmxvY2soJnN0YXRlX2xvY2spOwo+ Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCByZXR1cm4gMDsKPj4+ID4gK2Vycl90Ymw6Cj4+PiA+ICvC oMKgwqDCoCBrZnJlZSh0YmxfbGlzdCk7Cj4+PiA+ICtlcnJfbGlzdDoKPj4+ID4gK8KgwqDCoMKg IGtmcmVlKG5vZGUpOwo+Pj4gPiArwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+ID4gK30KPj4+ID4g Kwo+Pj4gPiArc3RhdGljIGludCBfX2luaXQgZGV2ZnJlcV9jcHVmcmVxX2luaXQodm9pZCkKPj4+ ID4gK3sKPj4+ID4gK8KgwqDCoMKgIGludCByZXQ7Cj4+PiA+ICvCoMKgwqDCoCBzdHJ1Y3QgZGV2 aWNlX25vZGUgKm9mX3BhciwgKm9mX2NoaWxkOwo+Pj4gPiArCj4+PiA+ICvCoMKgwqDCoCBvZl9w YXIgPSBvZl9maW5kX25vZGVfYnlfbmFtZShOVUxMLCAiZGV2ZnJlcS1jcHVmcmVxLW1hcCIpOwo+ Pj4gPiArwqDCoMKgwqAgaWYgKG9mX3Bhcikgewo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGZvcl9lYWNoX2NoaWxkX29mX25vZGUob2ZfcGFyLCBvZl9jaGlsZCkgewo+Pj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBhZGRfdGFibGVfZnJv bV9vZihvZl9jaGlsZCk7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChyZXQpCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIlBhcnNpbmcgJXMgZmFpbGVkIVxuIiwgb2Zf Y2hpbGQtPm5hbWUpOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBlbHNlCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwcl9kZWJ1ZygiUGFyc2VkICVzLlxuIiwgb2ZfY2hpbGQtPm5hbWUp Owo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBvZl9ub2RlX3B1dChvZl9wYXIpOwo+Pj4gPiArwqDCoMKgwqAgfSBlbHNlIHsK Pj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9pbmZvKCJObyB0YWJsZXMgcGFyc2Vk IGZyb20gRFQuXG4iKTsKPj4+ID4gK8KgwqDCoMKgIH0KPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAg cmV0ID0gZGV2ZnJlcV9hZGRfZ292ZXJub3IoJmRldmZyZXFfY3B1ZnJlcSk7Cj4+PiA+ICvCoMKg wqDCoCBpZiAocmV0KSB7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJj cHVmcmVxLW1hcCBnb3Zlcm5vciBhZGQgZmFpbGVkIVxuIik7Cj4+PiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+ID4gK8KgwqDCoMKgIH0KPj4+ID4gKwo+Pj4gPiAr wqDCoMKgwqAgcmV0dXJuIDA7Cj4+PiA+ICt9Cj4+PiA+ICtzdWJzeXNfaW5pdGNhbGwoZGV2ZnJl cV9jcHVmcmVxX2luaXQpOwo+Pj4gPiArCj4+PiA+ICtzdGF0aWMgdm9pZCBfX2V4aXQgZGV2ZnJl cV9jcHVmcmVxX2V4aXQodm9pZCkKPj4+ID4gK3sKPj4+ID4gK8KgwqDCoMKgIGludCByZXQsIGNw dTsKPj4+ID4gK8KgwqDCoMKgIHN0cnVjdCBkZXZmcmVxX25vZGUgKm5vZGUsICp0bXA7Cj4+PiA+ ICsKPj4+ID4gK8KgwqDCoMKgIHJldCA9IGRldmZyZXFfcmVtb3ZlX2dvdmVybm9yKCZkZXZmcmVx X2NwdWZyZXEpOwo+Pj4gPiArwqDCoMKgwqAgaWYgKHJldCkKPj4+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBwcl9lcnIoImNwdWZyZXEtbWFwIGdvdmVybm9yIHJlbW92ZSBmYWlsZWQhXG4i KTsKPj4+ID4gKwo+Pj4gPiArwqDCoMKgwqAgbXV0ZXhfbG9jaygmc3RhdGVfbG9jayk7Cj4+PiA+ ICvCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9kZSwgdG1wLCAmZGV2ZnJlcV9s aXN0LCBsaXN0KSB7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2ZyZWUobm9kZS0+ Y29tbW9uX21hcCk7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yX2VhY2hfcG9z c2libGVfY3B1KGNwdSkKPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAga2ZyZWUobm9kZS0+bWFwW2NwdV0pOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGtmcmVlKG5vZGUtPm1hcCk7Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlz dF9kZWwoJm5vZGUtPmxpc3QpOwo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtmcmVl KG5vZGUpOwo+Pj4gPiArwqDCoMKgwqAgfQo+Pj4gPiArwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZz dGF0ZV9sb2NrKTsKPj4+ID4gK30KPj4+ID4gK21vZHVsZV9leGl0KGRldmZyZXFfY3B1ZnJlcV9l eGl0KTsKPj4+ID4gKwo+Pj4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJkZXZmcmVxIGdvdiB0aGF0 IHNldHMgZGV2IGZyZXEgYmFzZWQgb24gY3VycmVudCBDUFUgZnJlcSIpOwo+Pj4gPiArTU9EVUxF X0xJQ0VOU0UoIkdQTCB2MiIpOwo+Pj4gPgo+IAoKCi0tIApCZXN0IFJlZ2FyZHMsCkNoYW53b28g Q2hvaQpTYW1zdW5nIEVsZWN0cm9uaWNzCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==