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 52BEBD116E2 for ; Mon, 1 Dec 2025 07:35:25 +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:From:References:To:Subject:MIME-Version: Date:Message-ID:Reply-To:Cc:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=b7i1RIiOKnwny8EwF8WM7QQSsgoiMBxKMoIZM+Bk01c=; b=tFHs1ewqeCYCMl3LtUtRM+1GtO AMCt7UD1f3GXI1twsmfjX72mokizMUAgE5gZi3e2FN/GNP1IJl77ODnHz51z16kLDskSgAdO5Iekf /+bXu3COaPhzFD4sI+Q3I0xsz/KlWk/E7bk7KXE4a28LmMWpRFICh0iXYzj7GOGGf0diAlqe+qykY ZgLLo3ufEnU7tHKsMBFI+ZHLm7UhpIIKCc5uJF1y+ECCw9P8ph6Cffyuzj8drON9lSvI3uYTKCk1Q GbtVjFPvftxy/JUM9Z2QCJaR4nvAJRgdXu7LkNwuEr9imuau8vMYNZHpZsOlSvILd4v4cM6EJMkcA vt8MXFsA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vPyRD-000000033sc-3AjP; Mon, 01 Dec 2025 07:35:11 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vPyRB-000000033rf-0E5e for opensbi@lists.infradead.org; Mon, 01 Dec 2025 07:35:10 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-7b8e49d8b35so4251277b3a.3 for ; Sun, 30 Nov 2025 23:35:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1764574508; x=1765179308; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=E3qe+357mOihvHZazcP0BDYKYuUq4rYwwUwfBz2Bxp4=; b=WykTZtCSRmnN0gMmjsSKMmIV9gdRpxIxQyvCRgCahWx17sLMveZ8gJVkp251iljV5t Pl4DgQMz8wcoUOhZX2beEZeffpfVpb955hmikiGq+Y946xAG9h4iUmQY2rEw/W2dnLVw jvnZ8nXCv+4GnaNObx//FKYR8aaSEkbLRhuwVcVgrL1rxRZ27H4SOYgyEDryZNcFvd3A qgSViCBLYnq2RRgLE2BmImQCWWzyjN8hzZlwzT7Wt9nTaIzXZXH5RilJCkHzM7ZJnLwP CwmYeRHo5FZNJfC52XnHX6+tggRK794Kq+zgiqqAdRIRo2m87jZ0zT80rmhzPGOUR2Cu /R3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764574508; x=1765179308; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=E3qe+357mOihvHZazcP0BDYKYuUq4rYwwUwfBz2Bxp4=; b=MYgm1n06UiW8CuBCQm+EOXJPxdsaOBJKCi4Kxtd2fwt4XHUQjKwkM+DyrwwQMAyMGD tO6++jfpzEjL/mRaLyzn7NjWKuF01QqDMCFldmuvsySLou9TM8mwXWivDmWAio6xSugK RR/DhnwD9Irr2s/SsHApYlE/SVpzbo0hnIta2IeJDxjnb3br0JWFTIU1W9/L9ZFT7c0c BfYOWQ/km4XQwtGv9i/7edSj5n/diRJJWJDQ3njhn3h+NKJnLurfx645kTPLh9KKVOiL l40IScPhE9yQHQ5Qc38ONW/J6VNX402ZRa2mLYYzFg5uASt+7KyNfxAaDkC6etEHBobY Eveg== X-Gm-Message-State: AOJu0YyzkmcwFEOACjo5cjz89vh0TBaDO/uoDJWXFs8MQH+gs2KVRipZ nWCiKwJscLqepfbFIoP0pGYXBb+5RVmb/GTtXh9f6aolUW/HPjARVZQBhHhsN+3ofbcK4hstHPl p4nMMIDZOUyMEzy6hpdZ65lMXoKAx6+vGXD2sxxwcgsIs5PSdDRrHBXff9KwoD405fdP1HrWn9D J9k/5/2IVwIKoVFlDS3qsLQ4w7xbhNMkQJtrC052uz/gVqo8SX/oQl0Q== X-Gm-Gg: ASbGncslfNxvdzzOG78K4zKJn2msD+5GKGj1sY941ugO6HhfnZyT8pzLJgvxSEyATWP JlHO0xhWVQeCSCNC+P0zbftlrPu8lQBubERgzG0cKmaFcVWYG2BlhF6yqqIwLBO4jMJTXD3k7lQ EnkIwOnacwRKBBs6RsTKai3IlaqpGEM+fkklMjC44JL5kaf8AP4N+Y+nFweU4dbkCi9wDWgMCgZ T0EfT9B8yETWPq/9oBKhFOLYSxJV9mfRAKdktx3YEr0HUOQ48uGZ3t5zIQQHMWRqTcuCkImQOUp LMHyn5W7L3vMLXc388pzPrR9KqAO7KJ14ZV9AB81xxpKVm5MLRjnMe0qkSxCLNo7DzdqBcyFV4G M3CTQS3u0u9bHCiwiIyJMKjsDrIl8UvNp818ecldRg1mP7PpFJYVX8JQS9qcagYlMPCcnxjp6E+ 5py7qSb2g5MKNvC+Qrd9j+70h8PcnQF+F3Ivxz4NqGYxUgrBY= X-Google-Smtp-Source: AGHT+IGnUrucamYuN9pO4sLg1zJAwZSHhWjjKBNO0a3FxgPzCVDJNzCuH2ukMUVKWg96SMMuigTlpA== X-Received: by 2002:a05:6a20:9389:b0:35e:521b:f488 with SMTP id adf61e73a8af0-36150ea9d2bmr39498579637.25.1764574507521; Sun, 30 Nov 2025 23:35:07 -0800 (PST) Received: from [172.16.0.158] (1-171-54-99.dynamic-ip.hinet.net. [1.171.54.99]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-be4fb24944fsm11114578a12.5.2025.11.30.23.35.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 30 Nov 2025 23:35:06 -0800 (PST) Message-ID: Date: Mon, 1 Dec 2025 15:35:03 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 4/4] platform: generic: eswin: add EIC7700 To: opensbi@lists.infradead.org, ganboing@gmail.com, anup@brainfault.org References: <20251120093440.4533-1-ganboing@gmail.com> <20251120093440.4533-5-ganboing@gmail.com> Content-Language: en-US From: Yu-Chien Peter Lin In-Reply-To: <20251120093440.4533-5-ganboing@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251130_233509_140788_7E612C0A X-CRM114-Status: GOOD ( 43.25 ) X-BeenThere: opensbi@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: "opensbi" Errors-To: opensbi-bounces+opensbi=archiver.kernel.org@lists.infradead.org SGkgQm8sCgpPbiAxMS8yMC8yNSA1OjM0IFBNLCBCbyBHYW4gd3JvdGU6Cj4gSW5pdGlhbCBwbGF0 Zm9ybSBzdXBwb3J0IGZvciBFU1dJTiBDb21wdXRpbmcgRUlDNzcwMCBiYXNlZCBvbiBwdWJsaWMg U29DCj4gZGF0YXNoZWV0WzFdIGFuZCB0ZXN0ZWQgb24gSGlGaXZlIFByZW1pZXIgUDU1MC4gVmVu ZG9yIFUtYm9vdC9MaW51eCBib290cwo+IGZpbmUsIGFuZCBJJ3ZlIHRlc3RlZCBHZWVrYmVuY2gg Ni41LjAgUHJldmlldyBhbmQgZ290IHNjb3JlcyBvbiBwYXIgd2l0aAo+IHRoZSB2ZW5kb3IgT3Bl blNCSS4gU3lzdGVtIHNodXRkb3duIGlzIG5vdCBpbXBsZW1lbnRlZCBkdWUgdG8gdGhlIGxhY2sg b2YKPiBwdWJsaWMgZG9jIHJlZ2FyZGluZyB0aGUgVUFSVCBjb21tdW5pY2F0aW9uIHByb3RvY29s IGJldHdlZW4gdGhlIFNvQyBhbmQKPiB0aGUgb25ib2FyZCBCTUMsIHdoaWNoIGNvbnRyb2xzIEFU WCBwb3dlciBvbiBIaUZpdmUgUDU1MCBbMl0uCj4KPiBUaGUgZmlsZXMgYW5kIGZ1bmN0aW9ucyBh cmUgaW50ZW50aW9uYWxseSBuYW1lZCBhcyBlaWM3NzB4IGluIG1hbnkgcGxhY2VzCj4gZm9yIGZ1 dHVyZSBlbmhhbmNlbWVudHMgdG8gc3VwcG9ydCB0aGUgMiBkaWUgdmVyc2lvbiBvZiB0aGUgc2Ft ZSBTb0MsCj4gbmFtZWx5IEVJQzc3MDIsIHNlZW4gb24gREMtUk9NQSBBSSBQQyBGTUwxM1YwMyBb M10uIFRoaXMgcGF0Y2ggc2V0IG9ubHkKPiBkZWFscyB3aXRoIHRoZSBzaW5nbGUgZGllIHZlcnNp b24sIGFuZCB0aGUgYXNzdW1wdGlvbiBpcyB3ZSBjYW4gYmUgZWl0aGVyCj4gZGllIHdpdGggaWQ9 MCBvciBpZD0xLCBidXQgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGRpZSBpbiB0aGUgc3lzdGVtLCBv ciB3ZQo+IGFyZSBvbmx5IHVzaW5nIGEgc2luZ2xlIGRpZSBvdXQgb2YgMi4gSG93ZXZlciwgdGhl IHdheSB0aGUgU29DIGhhbmRsZXMgMi0KPiBkaWUgZ3JlYXRseSBhZmZlY3RzIGhvdyB3ZSBjb25m aWd1cmUgaXQgaW4gYSAxLWRpZSBzZXR1cC4gRUlDNzcwWCBhZGRyZXNzCj4gbWFwIGhhcyBkaWUg MC8xIG1lbW9yeSByZWdpb25zIGludGVybGVhdmVkIChzZWUgY29tbWVudHMgaW4gZWljNzcweC5j KS4KPiBJZiBvbmx5IDEgZGllIGlzIGNvbm5lY3RlZCBvciBhY3RpdmUsIGl0IGNyZWF0ZXMgaG9s ZXMgaW4gdGhlIGFkZHJlc3MgbWFwCj4gZm9yIHRob3NlIHJlZ2lvbnMgY29ycmVzcG9uZGluZyB0 byB0aGUgcmVtb3RlIGRpZS4gV2hlbiBzcGVjdWxhdGl2ZS0KPiBleGVjdXRpb24gb3IgSFcgcHJl ZmV0Y2hlciB0b3VjaGVzIGRhdGEtY2FjaGVhYmxlIHJlZ2lvbnMgdGhhdCBoYXBwZW4gdG8KPiBm YWxsIGludG8gdGhvc2UgaG9sZXMsIGl0IGNhbiB0cmlnZ2VyIGJ1cyBlcnJvci4gU3BlY2lmaWNh bGx5Ogo+Cj4gICAtIFJlbW90ZSAobm9uLWV4aXN0ZW50KSBkaWUgTDMgemVybyBkZXZpY2UKPiAg IC0gUmVtb3RlIChub24tZXhpc3RlbnQpIGRpZSBjYWNoZWQgbWVtb3J5IHJlZ2lvbgo+ICAgLSBP dGhlciBob2xlcyBpbiBNZW1vcnkgUG9ydAo+Cj4gVG8gbWFrZSBtYXR0ZXJzIHdvcnNlLCBFSUM3 NzBYIGRvZXNuJ3QgaGF2ZSBjYWNoZSBjb2hlcmVudCBETUEsIGFuZCBkdWUKPiB0byB0aGUgZmFj dCB0aGF0IHRoZSBQNTUwIGNvcmUgbGFja3MgU3ZwYm10LCB0aGUgU29DIG1hcHMgbWFpbiBtZW1v cnkKPiB0d2ljZSBhcyBkaWZmZXJlbnQgcmVnaW9ucywgc28gaXQgY2FuIGJ5cGFzcyBjYWNoZSBh bmQgZmV0Y2ggdGhlIGRhdGEKPiBkaXJlY3RseSBmcm9tIG1lbW9yeS4gSW4gYWRkcmVzcyBzcGFj ZSwgd2UgaGF2ZSB0d28gbWVtb3J5IHJlZ2lvbnMsIG9uZQo+IGFzIGNhY2hlZCwgdGhlIG90aGVy IGFzIHVuY2FjaGVkLiBUaHVzLCB3ZSBhbHNvIG5lZWQgYW4gZXh0cmEgUE1QIGVudHJ5Cj4gdG8g cHJvdGVjdCBPcGVuU0JJIGJsb2IgZnJvbSB0aGUgdW5jYWNoZWQgd2luZG93LiBUbyBkbyB0aGlz LCBwbGF0Zm9ybQo+IGNvZGUgcmVxdWlyZXMgc2luZ2xlX2Z3X3JlZ2lvbiwgb3RoZXJ3aXNlLCB3 ZSdsbCBydW4gb3V0IG9mIFBNUCBlbnRyaWVzLgo+Cj4gRUlDNzcwWCBhbHNvIGhhdmUgc2V2ZXJh bCBmZWF0dXJlIGRpc2FibGUvZW5hYmxlIENTUnMgYWNjZXNzaWJsZSBpbiBNCj4gbW9kZS4gQnkg ZGVmYXVsdCBtYW55IGNvcmUgZmVhdHVyZXMgc3VjaCBhcyBzcGVjdWxhdGlvbiBhbmQgSFcgcHJl ZmV0Y2gKPiBhcmUgZGlzYWJsZWQsIGFuZCBNIG1vZGUgc29mdHdhcmUgaXMgcmVzcG9uc2libGUg b2YgZW5hYmxpbmcuIEhlbmNlLAo+IGludHJvZHVjZSA0IG5ldyBidWlsZCB0aW1lIHR1bmFibGUg cGFyYW1ldGVycyB0byBLY29uZmlnLCB3aGljaCByZWZsZWN0cwo+IHRoZSB2YWx1ZXMgZ2V0IHVw ZGF0ZWQgdG8gdGhvc2UgQ1NSczoKPiAgIC0gRVNXSU5fRUlDNzcwWF9GRUFUMF9DRkcKPiAgIC0g RVNXSU5fRUlDNzcwWF9GRUFUMV9DRkcKPiAgIC0gRVNXSU5fRUlDNzcwWF9MMV9IV1BGX0NGRwo+ ICAgLSBFU1dJTl9FSUM3NzBYX0wyX0hXUEZfQ0ZHCj4KPiBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJl IHNvbWV3aGF0IG9wdGltYWwgZm9yIGdlbmVyaWMgd29ya2xvYWRzLiBUaGV5IGFyZQo+IGR1bXBl ZCB3aGVuIHJ1bm5pbmcgU2lGaXZlJ3MgdmVuZG9yIE9wZW5TQkksIGFuZCBpbiBhZGRpdGlvbiwg d2l0aCBteQo+IG93biB0dW5pbmcgdG8gYWRkcmVzcyB0aGUgcGVyZiByZWdyZXNzaW9uIHJlcG9y dGVkIGJ5IGRybXBlZyBbNF0KPgo+IFRvIGJ1aWxkIHRoZSBmaXJtd2FyZSt1LWJvb3QgYmxvYiwg VXNlIHRoZSBmb2xsb3dpbmcsIGFuZCBkb2NzIFs1XSBmb3IKPiB0ZXN0aW5nIGl0IHdpdGggVUFS VCBib290IHdpdGhvdXQgZmxhc2hpbmc6Cj4KPiBtYWtlIEZXX1RFWFRfU1RBUlQ9MHg4MDAwMDAw MCBcCj4gICAgICAgRldfUEFZTE9BRF9PRkZTRVQ9MHgyMDAwMDAgXAo+ICAgICAgIEZXX1BBWUxP QURfUEFUSD11LWJvb3Qtbm9kdGIuYmluIFwKPiAgICAgICBGV19QQVlMT0FEX0ZEVF9BRERSPTB4 ZjgwMDAwMDAgXAo+ICAgICAgIEZXX0ZEVF9QQVRIPXUtYm9vdC5kdGIKPgo+IFsxXSBodHRwczov L2dpdGh1Yi5jb20vZXN3aW5jb21wdXRpbmcvRUlDNzcwMFgtU29DLVRlY2huaWNhbC1SZWZlcmVu Y2UtTWFudWFsCj4gWzJdIGh0dHBzOi8vd3d3LnNpZml2ZS5jb20vYm9hcmRzL2hpZml2ZS1wcmVt aWVyLXA1NTAjZG9jdW1lbnRhdGlvbgo+IFszXSBodHRwczovL2dpdGh1Yi5jb20vZ2Vlcmxpbmdn dXkvc2JjLXJldmlld3MvaXNzdWVzLzgyCj4gWzRdIGh0dHBzOi8vZm9ydW1zLnNpZml2ZS5jb20v dC9sb3ctMS1jb3JlLXN0cmVhbS1iYW5kd2lkdGgvNzI3NC8xNQo+IFs1XSBodHRwczovL2dpdGh1 Yi5jb20vZ2FuYm9pbmcvRUlDNzcweC1Eb2NzL2Jsb2IvbWFpbi9wNTUwL2Jvb3RjaGFpbi9VQVJU LUJvb3QubWQKPgo+IFNpZ25lZC1vZmYtYnk6IEJvIEdhbiA8Z2FuYm9pbmdAZ21haWwuY29tPgo+ IC0tLQo+ICAgcGxhdGZvcm0vZ2VuZXJpYy9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAgNSAr Cj4gICBwbGF0Zm9ybS9nZW5lcmljL2NvbmZpZ3MvZGVmY29uZmlnICAgICAgIHwgICAxICsKPiAg IHBsYXRmb3JtL2dlbmVyaWMvZXN3aW4vS2NvbmZpZyAgICAgICAgICAgfCAgMjkgKysKPiAgIHBs YXRmb3JtL2dlbmVyaWMvZXN3aW4vZWljNzcweC5jICAgICAgICAgfCAzODUgKysrKysrKysrKysr KysrKysrKysrKysKPiAgIHBsYXRmb3JtL2dlbmVyaWMvZXN3aW4vb2JqZWN0cy5tayAgICAgICAg fCAgMTEgKwo+ICAgcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL2Vzd2luL2VpYzc3MHguaCB8ICA3 MyArKysrKwo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA1MDQgaW5zZXJ0aW9ucygrKQo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IHBsYXRmb3JtL2dlbmVyaWMvZXN3aW4vS2NvbmZpZwo+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHBsYXRmb3JtL2dlbmVyaWMvZXN3aW4vZWljNzcweC5jCj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgcGxhdGZvcm0vZ2VuZXJpYy9lc3dpbi9vYmplY3RzLm1rCj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL2Vzd2luL2VpYzc3MHguaAo+Cj4gZGlm ZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVyaWMvS2NvbmZpZyBiL3BsYXRmb3JtL2dlbmVyaWMvS2Nv bmZpZwo+IGluZGV4IGFlZGM1OWE1Li4wNDdlMTNjYSAxMDA2NDQKPiAtLS0gYS9wbGF0Zm9ybS9n ZW5lcmljL0tjb25maWcKPiArKysgYi9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcKPiBAQCAtODgs NyArODgsMTIgQEAgY29uZmlnIFBMQVRGT1JNX1NQQUNFTUlUX0sxCj4gICAJc2VsZWN0IEZEVF9I U01fU1BBQ0VNSVQKPiAgIAlkZWZhdWx0IG4KPiAgIAo+ICtjb25maWcgUExBVEZPUk1fRVNXSU5f RUlDNzcwWAo+ICsJYm9vbCAiRVNXSU4gRUlDNzcwWCBzdXBwb3J0Igo+ICsJZGVmYXVsdCBuCj4g Kwo+ICAgc291cmNlICIkKE9QRU5TQklfU1JDX0RJUikvcGxhdGZvcm0vZ2VuZXJpYy9hbmRlcy9L Y29uZmlnIgo+ICtzb3VyY2UgIiQoT1BFTlNCSV9TUkNfRElSKS9wbGF0Zm9ybS9nZW5lcmljL2Vz d2luL0tjb25maWciCj4gICBzb3VyY2UgIiQoT1BFTlNCSV9TUkNfRElSKS9wbGF0Zm9ybS9nZW5l cmljL3RoZWFkL0tjb25maWciCj4gICAKPiAgIGVuZGlmCj4gZGlmZiAtLWdpdCBhL3BsYXRmb3Jt L2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcgYi9wbGF0Zm9ybS9nZW5lcmljL2NvbmZpZ3MvZGVm Y29uZmlnCj4gaW5kZXggOWUwNDBhYzMuLjYwYzU0NDllIDEwMDY0NAo+IC0tLSBhL3BsYXRmb3Jt L2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcKPiArKysgYi9wbGF0Zm9ybS9nZW5lcmljL2NvbmZp Z3MvZGVmY29uZmlnCj4gQEAgLTEwLDYgKzEwLDcgQEAgQ09ORklHX1BMQVRGT1JNX1NUQVJGSVZF X0pINzExMD15Cj4gICBDT05GSUdfUExBVEZPUk1fVEhFQUQ9eQo+ICAgQ09ORklHX1BMQVRGT1JN X01JUFNfUDg3MDA9eQo+ICAgQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUX0sxPXkKPiArQ09ORklH X1BMQVRGT1JNX0VTV0lOX0VJQzc3MFg9eQo+ICAgQ09ORklHX0ZEVF9DQUNIRT15Cj4gICBDT05G SUdfRkRUX0NBQ0hFX1NJRklWRV9DQ0FDSEU9eQo+ICAgQ09ORklHX0ZEVF9DUFBDPXkKPiBkaWZm IC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9lc3dpbi9LY29uZmlnIGIvcGxhdGZvcm0vZ2VuZXJp Yy9lc3dpbi9LY29uZmlnCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4u ODRkMGY0M2EKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9lc3dpbi9L Y29uZmlnCj4gQEAgLTAsMCArMSwyOSBAQAo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UKPiArCj4gK2NvbmZpZyBFU1dJTl9FSUM3NzBYX0ZFQVQwX0NGRwo+ICsJaW50 ICJFU1dJTiBFSUM3NzAwWCBGZWF0dXJlIERpc2FibGUgMCBDU1IgQ29uZmlndXJhdGlvbiIKPiAr CWRlZmF1bHQgMHg0MDAwCj4gKwloZWxwCj4gKwkgQ1NSIFZhbHVlIHRvIGluaXRpYWxpemUgRUlD NzcwWF9GRUFUMCAoMHg3YzEpIHdpdGguCj4gKwkgUmVmZXIgdG8gRUlDNzcwWCBTb0MgVFJNIGZv ciByZWNvbW1lbmRhdGlvbnMuCj4gKwo+ICtjb25maWcgRVNXSU5fRUlDNzcwWF9GRUFUMV9DRkcK PiArCWludCAiRVNXSU4gRUlDNzcwMFggRmVhdHVyZSBEaXNhYmxlIDEgQ1NSIENvbmZpZ3VyYXRp b24iCj4gKwlkZWZhdWx0IDB4ODAKPiArCWhlbHAKPiArCSBDU1IgVmFsdWUgdG8gaW5pdGlhbGl6 ZSBFSUM3NzBYX0ZFQVQxICgweDdjMikgd2l0aC4KPiArCSBSZWZlciB0byBFSUM3NzBYIFNvQyBU Uk0gZm9yIHJlY29tbWVuZGF0aW9ucy4KPiArCj4gK2NvbmZpZyBFU1dJTl9FSUM3NzBYX0wxX0hX UEZfQ0ZHCj4gKwlpbnQgIkVTV0lOIEVJQzc3MDBYIEwxIEhXIFByZWZldGNoZXIgQ1NSIENvbmZp Z3VyYXRpb24iCj4gKwlkZWZhdWx0IDB4MTAwNWMxYmU2NDkKPiArCWhlbHAKPiArCSBDU1IgVmFs dWUgdG8gaW5pdGlhbGl6ZSBFSUM3NzBYX0wxX0hXUEYgKDB4N2MzKSB3aXRoLgo+ICsJIFJlZmVy IHRvIEVJQzc3MFggU29DIFRSTSBmb3IgcmVjb21tZW5kYXRpb25zLgo+ICsKPiArY29uZmlnIEVT V0lOX0VJQzc3MFhfTDJfSFdQRl9DRkcKPiArCWludCAiRVNXSU4gRUlDNzcwMFggTDIgSFcgUHJl ZmV0Y2hlciBDU1IgQ29uZmlndXJhdGlvbiIKPiArCWRlZmF1bHQgMHg5MjlmCj4gKwloZWxwCj4g KwkgQ1NSIFZhbHVlIHRvIGluaXRpYWxpemUgRUlDNzcwWF9MMl9IV1BGICgweDdjNCkgd2l0aC4K PiArCSBSZWZlciB0byBFSUM3NzBYIFNvQyBUUk0gZm9yIHJlY29tbWVuZGF0aW9ucy4KPiBkaWZm IC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9lc3dpbi9laWM3NzB4LmMgYi9wbGF0Zm9ybS9nZW5l cmljL2Vzd2luL2VpYzc3MHguYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAuLjVjZjE0YTA1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BsYXRmb3JtL2dlbmVyaWMvZXN3 aW4vZWljNzcweC5jCj4gQEAgLTAsMCArMSwzODUgQEAKPiArLyoKPiArICogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZQo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjUg Qm8gR2FuIDxnYW5ib2luZ0BnbWFpbC5jb20+Cj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg PHBsYXRmb3JtX292ZXJyaWRlLmg+Cj4gKyNpbmNsdWRlIDxzYmkvcmlzY3ZfaW8uaD4KPiArI2lu Y2x1ZGUgPHNiaS9zYmlfY29uc29sZS5oPgo+ICsjaW5jbHVkZSA8c2JpL3NiaV9zeXN0ZW0uaD4K PiArI2luY2x1ZGUgPHNiaS9zYmlfbWF0aC5oPgo+ICsjaW5jbHVkZSA8ZXN3aW4vZWljNzcweC5o Pgo+ICsKPiArc3RhdGljIGludCBlaWM3NzB4X3N5c3RlbV9yZXNldF9jaGVjayh1MzIgdHlwZSwg dTMyIHJlYXNvbikKPiArewo+ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIFNCSV9TUlNUX1JF U0VUX1RZUEVfQ09MRF9SRUJPT1Q6Cj4gKwljYXNlIFNCSV9TUlNUX1JFU0VUX1RZUEVfV0FSTV9S RUJPT1Q6Cj4gKwkJcmV0dXJuIDE7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiAwOwo+ICsJfQo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBlaWM3NzB4X3N5c3RlbV9yZXNldCh1MzIgdHlwZSwgdTMy IHJlYXNvbikKPiArewo+ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIFNCSV9TUlNUX1JFU0VU X1RZUEVfQ09MRF9SRUJPT1Q6Cj4gKwljYXNlIFNCSV9TUlNUX1JFU0VUX1RZUEVfV0FSTV9SRUJP T1Q6Cj4gKwkJd3JpdGVsKEVJQzc3MFhfU1lTQ1JHX1JTVF9WQUwsICh2b2lkICopRUlDNzcwWF9T WVNDUkdfUlNUKTsKPiArCX0KPiArCj4gKwlzYmlfcHJpbnRmKCIlczogVW5hYmxlIHRvIHJlc2V0 IHN5c3RlbVxuIiwgX19mdW5jX18pOwo+ICsJc2JpX2hhcnRfaGFuZygpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgc3RydWN0IHNiaV9zeXN0ZW1fcmVzZXRfZGV2aWNlIGVpYzc3MHhfcmVzZXQgPSB7Cj4g KwkubmFtZSA9ICJlaWM3NzB4X3Jlc2V0IiwKPiArCS5zeXN0ZW1fcmVzZXRfY2hlY2sgPSBlaWM3 NzB4X3N5c3RlbV9yZXNldF9jaGVjaywKPiArCS5zeXN0ZW1fcmVzZXQgPSBlaWM3NzB4X3N5c3Rl bV9yZXNldAo+ICt9Owo+ICsKPiArI2RlZmluZSBhZGRfcm9vdF9tZW1fY2hrKC4uLikgZG8geyBc Cj4gKwlyYyA9IHNiaV9kb21haW5fcm9vdF9hZGRfbWVtcmFuZ2UoX19WQV9BUkdTX18pOyBcCj4g KwlpZiAocmMpIFwKPiArCQlyZXR1cm4gcmM7IFwKPiArfSB3aGlsZSAoMCkKPiArCj4gKy8qKgo+ ICsgKiBFSUM3NzAwIHNwZWNpYWwgYXJyYW5nZW1lbnQgb2YgUE1QIGVudHJpZXM6Cj4gKyAqCj4g KyAqIFdlIGhhdmUgdG8gdXNlIGV4dHJhIFBNUHMgdG8gYmxvY2sgZGF0YSBjYWNoZWFibGUgcmVn aW9ucyB0aGF0Cj4gKyAqIHRoYXQgZG9lc24ndCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgaGFydCdz IGRpZSBpbiBvcmRlciB0byBwcmV2ZW50Cj4gKyAqIHNwZWN1bGF0aXZlIGFjY2Vzc2VzIG9yIEhX IHByZWZldGNoZXIgZnJvbSBnZW5lcmF0aW5nIGJ1cyBlcnJvcjoKPiArICoKPiArICogCWJ1cyBl cnJvciBvZiBjYXVzZSBldmVudDogOSwgYWNjcnVlZDogMHgyMjAsCj4gKyAqCXBoeXNpY2FsIGFk ZHJlc3M6IDB4MjRmZmZmZmZhMAo+ICsgKgo+ICsgKiBUaGUgZGF0YSBjYWNoZWFibGUgcmVnaW9u cyAocGVyIGRhdGFzaGVldCkgaW5jbHVkZToKPiArICoKPiArICogICAtIFsweDFhMDAwMDAwLCAg ICAweDFhNDAwMDAwKSAtLSBEaWUgMCBMMyB6ZXJvIGRldmljZQo+ICsgKiAgIC0gWzB4M2EwMDAw MDAsICAgIDB4M2E0MDAwMDApIC0tIERpZSAxIEwzIHplcm8gZGV2aWNlCj4gKyAqICAgLSBbMHg4 MDAwMDAwMCwgMHg4MF8wMDAwMDAwMCkgLS0gbWVtb3J5IHBvcnQKPiArICoKPiArICogVG8gbWFr ZSB0aGUgYmxvY2tlciBlZmZlY3RpdmUgZm9yIE0gbW9kZSB0b28sIHRoZSBleHRyYSBQTVBzIG5l ZWQKPiArICogTE9DSyBiaXQgdG8gYmUgc2V0LCBhbmQgb25jZSBzZXQsIHdlIGNhbid0IGNoYW5n ZSB0aGVtIGxhdGVyLgo+ICsgKiBXZSBhbHNvIGhhdmUgdG8gdG8gdXNlIDEgZXh0cmEgUE1QIHRv IHByb3RlY3QgT3BlblNCSSBpbiB1bmNhY2hlZAo+ICsgKiBtZW1vcnkuIEVJQzc3MFggbWFwcyBt YWluIG1lbW9yeSAoRFJBTSkgdHdpY2UgLS0gb25lIGluIG1lbW9yeQo+ICsgKiBwb3J0IChjYWNo ZWQpLCB0aGUgb3RoZXIgaW4gc3lzdGVtIHBvcnQgKHVuY2FjaGVkKS4gUDU1MCBkb2Vzbid0Cj4g KyAqIHN1cHBvcnQgU3ZwYm10LCBzbyBFSUM3NzBYIHVzZSB0aGUgdW5jYWNoZWQgd2luZG93IHRv IGhhbmRsZSBETUEKPiArICogdGhhdCBhcmUgY2FjaGUgaW5jb2hlcmVudCAtLSBwcmV0dHkgbXVj aCBhbGwgcGVyaXBoZXJhbHMKPiArICoKPiArICogRmluYWwgUE1QIGNvbmZpZ3VyYXRpb246Cj4g KyAqCj4gKyAqIEZyb20gZGllIDAgcG9pbnQgb2YgdmlldywgYmxvY2sKPiArICogICAtICAgICAg ICAgWzB4M2EwMDAwMDAsICAgIDB4M2E0MDAwMDApIC0tIERpZSAxIEwzIHplcm8gZGV2aWNlCj4g KyAqICAgLSAgICAgIFsweDEwXzAwMDAwMDAwLCAweDgwXzAwMDAwMDAwKSAtLSBEaWUgMSBjYWNo ZWQgbWVtICsgaG9sZXMKPiArICoKPiArICogUm9vdCBkb21haW4gSGFydHM6Cj4gKyAqICBQTVBb MF06IFsgICAweDgwMDAwMDAwLCAgICAweDgwMDgwMDAwKSBfX19fIEZpcm13YXJlIGluIGNhY2hl ZCBtZW0KPiArICogIFBNUFsxXTogWzB4YzBfMDAwMDAwMDAsIDB4YzBfMDAwODAwMDApIF9fX18g RmlybXdhcmUgaW4gdW5jYWNoZWQKPiArICogIFBNUFsyXTogWyAgIDB4M2EwMDAwMDAsICAgIDB4 M2E0MDAwMDApIExfX18gRGllIDEgTDMgemVybyBkZXZpY2UKPiArICogIFBNUFszXTogWyAgICAw eDIwMDAwMDAgICAgICAweDIwMTAwMDApIF9fX18gQ0xJTlQKPiArICogIFBNUFs0XTogWyAgICAg ICAgICAweDAsIDB4MTBfMDAwMDAwMDApIF9SV1ggUDU1MC9TeXN0ZW0vRGllIDAgY2FjaGVkIG1l bQo+ICsgKiAgUE1QWzVdOiA8RnJlZT4KPiArICogIFBNUFs2XTogWyAgICAgICAgICAweDAsIDB4 ODBfMDAwMDAwMDApIExfX18gUDU1MC9TeXN0ZW0vTWVtb3J5IFBvcnQKPiArICogIFBNUFs3XTog WyAgICAgMHgwLCAweGZmZmZmZmZmZmZmZmZmZmZdIF9SV1ggRXZlcnl0aGluZwo+Cj4gSSBub3Rp Y2VkIHRoYXQgc29tZSBQTVAgZW50cmllcyBzdWNoIGFzIFBNUFsyXSBhbmQgUE1QWzZdIGFyZSBj b25maWd1cmVkCj4gd2l0aCBwbXBjZmcuTCBzZXQuIER1cmluZyBkb21haW4gY29udGV4dCBzd2l0 Y2gsIGFsbCBQTVAgZW50cmllcyBtYW5hZ2VkIGJ5Cj4gT3BlblNCSSBkb21haW4gd2lsbCBiZSBk aXNhYmxlZCBbMV0sIHNvIGxvY2tlZCBlbnRyaWVzIHdpbGwgcmVtYWluIGFjdGl2ZSwKPiBhbmQg aWYgYSBob2xlIGVudHJ5IG5vdCB1c2luZyBpZGVudGljYWwgUE1QIGlkIGFjcm9zcyBkb21haW5z LCBvdGhlciByZWdpb25zCj4gdGhhdCBwcm9ncmFtIHRoZSBsb2NrZWQgUE1QIGlkIGNhbm5vdCBi ZSBhcHBsaWVkLiBUaGlzIHdpbGwgYmxvY2sgdGhlIHVzZQo+IG9mIGUuZy4gT1AtVEVFIHdoaWNo IHJlbGllcyBvbiBkb21haW4gY29udGV4dCBzd2l0Y2ggbWVjaGFuaXNtLgo+Cj4gSSBhbSBwcm9w b3NpbmcgcmVzZXJ2ZWQgUE1QIGFsbG9jYXRvciBbMl0uIEhvcGVmdWxseSwgaXQgY2FuIGFkZHJl c3MgdGhpcyByZXF1aXJlbWVudC4KPiBCeSBzcGVjaWZ5aW5nIHJlc2VydmVkIDMgZW50cmllcyBv biBQNTUwIHBsYXRmb3JtLCB0aGUgUE1QIHVzYWdlIHNob3VsZCBiZWNvbWU6Cj4KPiBQTVBbMF06 IFJlc2VydmVkIE5BUE9UIFsgICAweDNhMDAwMDAwLCAgICAweDNhNDAwMDAwKSBMX19fIERpZSAx IEwzIHplcm8gZGV2aWNlCj4gUE1QWzFdOiBSZXNlcnZlZCBUT1IxICBbMHgxMF8wMDAwMDAwMCwg ICAgICAgICAgICAgICAgTF9fXyBEaWUgMSBjYWNoZWQgbWVtICsgaG9sZXMKPiBQTVBbMl06IFJl c2VydmVkIFRPUjIgICAgICAgICAgICAgICAgICAweDgwXzAwMDAwMDAwKSBMX19fIERpZSAxIGNh Y2hlZCBtZW0gKyBob2xlcwo+IFBNUFszXTogRG9tYWluMFJlZ2lvbjAgWyAgIDB4ODAwMDAwMDAs ICAgIDB4ODAwODAwMDApIF9fX18gRmlybXdhcmUgaW4gY2FjaGVkIG1lbQo+IFBNUFs0XTogRG9t YWluMFJlZ2lvbjEgWzB4YzBfMDAwMDAwMDAsIDB4YzBfMDAwODAwMDApIF9fX18gRmlybXdhcmUg aW4gdW5jYWNoZWQKPiBQTVBbNV06IERvbWFpbjBSZWdpb24yIFsgICAgMHgyMDAwMDAwICAgICAg MHgyMDEwMDAwKSBfX19fIENMSU5UCj4gUE1QWzZdOiBEb21haW4wUmVnaW9uMyBbICAgICAweDAs IDB4ZmZmZmZmZmZmZmZmZmZmZl0gX1JXWCBFdmVyeXRoaW5nCj4gUE1QWzddOiB1bnVzZWQKPgo+ IE9uZSBhc3BlY3QgdGhhdCByZXF1aXJlcyBjYXJlZnVsIGF0dGVudGlvbiBpcyBDUFUgc3VzcGVu ZCB3aXRoIHBvd2VyIGdhdGluZyBzY2VuYXJpb3MuCj4gV2hlbiByZXNlcnZlZCBQTVAgc3RhdGVz IGNhbiBiZSByZW1vdmVkLCBhZGRpdGlvbmFsIHJlc2VydmVkIFBNUCBtYW5hZ2VtZW50Cj4gKHNh dmUvcmVzdG9yZSBvcGVyYXRpb25zIGZvciBQTVBzIHRoYXQgcHJvdGVjdCBob2xlcykgbXVzdCBi ZSBpbmNsdWRlZCBpbiB0aGUKPiBzdXNwZW5kL3Jlc3VtZSBmbG93Lgo+Cj4gWzFdIGh0dHBzOi8v Z2l0aHViLmNvbS9yaXNjdi1zb2Z0d2FyZS1zcmMvb3BlbnNiaS9ibG9iLzgyNWQwZTkxOGE5ZTQx Y2M1NzA5N2E4Y2I5MTNmMjY1NTA2OTk5MTEvbGliL3NiaS9zYmlfZG9tYWluX2NvbnRleHQuYyNM MTIzLUwxMzEKPiBbMl0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjUxMTMwMTExNjQz LjEyOTE0NjItNy1wZXRlci5saW5Ac2lmaXZlLmNvbS8KPgo+ICsgKgo+ICsgKiBGcm9tIGRpZSAx IHBvaW50IG9mIHZpZXcsIGJsb2NrCj4gKyAqICAgLSAgICAgICAgIFsweDFhMDAwMDAwLCAgICAw eDFhNDAwMDAwKSAtLSBEaWUgMCBMMyB6ZXJvIGRldmljZQo+ICsgKiAgIC0gICAgICAgICBbMHg4 MDAwMDAwMCwgMHgyMF8wMDAwMDAwMCkgLS0gRGllIDAgY2FjaGVkIG1lbSArIGhvbGVzCj4gKyAq ICAgLSAgICAgIFsweDMwXzAwMDAwMDAwLCAweDgwXzAwMDAwMDAwKSAtLSBvdGhlciBob2xlcyBp biBNZW1vcnkgcG9ydAo+ICsgKgo+ICsgKiBSb290IGRvbWFpbiBIYXJ0czoKPiArICogIFBNUFsw XTogWzB4MjBfMDAwMDAwMDAsIDB4MjBfMDAwODAwMDApIF9fX18gRmlybXdhcmUgaW4gY2FjaGVk IG1lbQo+ICsgKiAgUE1QWzFdOiBbMHhlMF8wMDAwMDAwMCwgMHhlMF8wMDA4MDAwMCkgX19fXyBG aXJtd2FyZSBpbiB1bmNhY2hlZAo+ICsgKiAgUE1QWzJdOiBbICAgMHgxYTAwMDAwMCwgICAgMHgx YTQwMDAwMCkgTF9fXyBEaWUgMCBMMyB6ZXJvIGRldgo+ICsgKiAgUE1QWzNdOiBbICAgMHgyMjAw MDAwMCAgICAgMHgyMjAxMDAwMCkgX19fXyBDTElOVAo+ICsgKiAgUE1QWzRdOiBbICAgICAgICAg IDB4MCwgICAgMHg4MDAwMDAwMCkgX1JXWCBEaWUgMC8xIFA1NTAgaW50ZXJuYWwKPiArICogIFBN UFs1XTogWzB4MjBfMDAwMDAwMDAsIDB4MzBfMDAwMDAwMDApIF9SV1ggRGllIDEgY2FjaGVkIG1l bW9yeQo+ICsgKiAgUE1QWzZdOiBbICAgICAgICAgIDB4MCwgMHg4MF8wMDAwMDAwMCkgTF9fXyBQ NTUwL1N5c3RlbS9NZW1vcnkgUG9ydAo+ICsgKiAgUE1QWzddOiBbICAgICAweDAsIDB4ZmZmZmZm ZmZmZmZmZmZmZl0gX1JXWCBFdmVyeXRoaW5nCj4gKyAqCj4gKyAqIEVJQzc3MFggbWVtb3J5IHBv cnQgbWFwOgo+ICsgKiBQNTUwIEludGVybmFsCj4gKyAqICAg4pSc4pSAIDB4MDAwMF8wMDAwIC0g MHgyMDAwXzAwMDAgZGllIDAgaW50ZXJuYWwKPiArICogICDilJTilIAgMHgyMDAwXzAwMDAgLSAw eDQwMDBfMDAwMCBkaWUgMSBpbnRlcm5hbAo+ICsgKiBTeXN0ZW0gUG9ydCAwCj4gKyAqICAg4pSc 4pSAIDB4NDAwMF8wMDAwIC0gMHg2MDAwXzAwMDAgZGllIDAgbG93IE1NSU8KPiArICogICDilJTi lIAgMHg2MDAwXzAwMDAgLSAweDgwMDBfMDAwMCBkaWUgMSBsb3cgTU1JTwo+ICsgKiBNZW1vcnkg UG9ydAo+ICsgKiAgIOKUnOKUgCAgICAweDgwMDBfMDAwMCAtIDB4MTBfODAwMF8wMDAwIGRpZSAw IG1lbW9yeSAoY2FjaGVkKQo+ICsgKiAgIOKUnOKUgCAweDIwXzAwMDBfMDAwMCAtIDB4MzBfMDAw MF8wMDAwIGRpZSAxIG1lbW9yeSAoY2FjaGVkKQo+ICsgKiAgIOKUlOKUgCAweDQwXzAwMDBfMDAw MCAtIDB4NjBfMDAwMF8wMDAwIGludGVybGVhdmVkIG1lbW9yeSAoY2FjaGVkKQo+ICsgKiBTeXN0 ZW0gUG9ydCAxCj4gKyAqICAg4pSc4pSAIDB4ODBfMDAwMF8wMDAwIC0gMHhhMF8wMDAwXzAwMDAg ZGllIDAgaGlnaCBNTUlPCj4gKyAqICAg4pSc4pSAIDB4YTBfMDAwMF8wMDAwIC0gMHhjMF8wMDAw XzAwMDAgZGllIDEgaGlnaCBNTUlPCj4gKyAqICAg4pSc4pSAIDB4YzBfMDAwMF8wMDAwIC0gMHhk MF8wMDAwXzAwMDAgZGllIDAgbWVtb3J5ICh1bmNhY2hlZCkKPiArICogICDilJzilIAgMHhlMF8w MDAwXzAwMDAgLSAweGYwXzAwMDBfMDAwMCBkaWUgMSBtZW1vcnkgKHVuY2FjaGVkKQo+ICsgKiAg IOKUnOKUgCAweDEwMF8wMDAwXzAwMDAgLSAweDEyMF8wMDAwXzAwMDAgaW50ZXJsZWF2ZWQgbWVt b3J5ICh1bmNhY2hlZCkKPiArICogICDilJTilIAgLi4uCj4gKyAqCj4gKyAqIEluIGVhcmx5X2lu aXQsIGFkZCBtZW1vcnkgcmVnaW9ucyBzdWNoIHRoYXQgbGliLyBjb2RlIGhhcyB0aGUga25vd2xl ZGdlCj4gKyAqIG9mIGJsb2NrZWQgcmFuZ2VzLiBXaGVuIHRoZSBkcml2ZXIgY29kZSBpbnNlcnRz IG5ldyByZWdpb25zLCBsaWIvIGNvZGUKPiArICogY2FuIG9wdGltaXplIGF3YXkgdW5uZWNlc3Nh cnkgb25lcy4gTmV4dCwgaW4gZmluYWxfaW5pdCwgd2UgcHJvZ3JhbSB0aGUKPiArICogUE1QcyB0 byBhIGRlZmF1bHQgc3RhdGUgdGhhdCdsbCBrZWVwIG91cnNlbHZlcyBmdW5jdGlvbmFsIChDTElO VC8uLi4KPiArICogYWNjZXNzaWJsZSkuIExhdGVyLCBpbiBwbXBfY29uZmlndXJlLCBkbyB0aGUg YWN0dWFsIGNvbmZpZ3VyYXRpb24gb2YKPiArICogUE1QLCB1c2luZyBkb21haW4gbWVtb3J5IHJl Z2lvbnMgYW5kIHBlcm1pc3Npb25zLgo+ICsgKi8KPiArCj4gK3N0YXRpYyBpbnQgZXN3aW5fZWlj NzcwMF9lYXJseV9pbml0KGJvb2wgY29sZF9ib290KQo+ICt7Cj4gKwlzdHJ1Y3Qgc2JpX3NjcmF0 Y2ggKnNjcmF0Y2ggPSBzYmlfc2NyYXRjaF90aGlzaGFydF9wdHIoKTsKPiArCWludCByYzsKPiAr Cj4gKwlpZiAoIWNvbGRfYm9vdCkKPiArCQlyZXR1cm4gZ2VuZXJpY19lYXJseV9pbml0KGNvbGRf Ym9vdCk7Cj4gKwo+ICsJLyogRW5hYmxlIGJ1cyBibG9ja2VyICovCj4gKwl3cml0ZWwoMSwgKHZv aWQqKUVJQzc3MFhfVEw2NEQyRF9PVVQpOwo+ICsJd3JpdGVsKDEsICh2b2lkKilFSUM3NzBYX1RM MjU2RDJEX09VVCk7Cj4gKwl3cml0ZWwoMSwgKHZvaWQqKUVJQzc3MFhfVEwyNTZEMkRfSU4pOwo+ ICsJYXNtIHZvbGF0aWxlICgiZmVuY2UgbywgcnciKTsKPiArCj4gKwkvKiBCbG9jayBmaXJtd2Fy ZSBpbiB1bmNhY2hlZCBtZW1vcnkgKi8KPiArCWFkZF9yb290X21lbV9jaGsoRUlDNzcwWF9UT19V TkNBQ0hFRCgKPiArCQkJIHNjcmF0Y2gtPmZ3X3N0YXJ0KSwKPiArCQkJIDFVTCA8PCBsb2cycm91 bmR1cChzY3JhdGNoLT5md19zaXplKSwKPiArCQkJIDFVTCA8PCBsb2cycm91bmR1cChzY3JhdGNo LT5md19zaXplKSwKPiArCQkJKFNCSV9ET01BSU5fTUVNUkVHSU9OX01fUkVBREFCTEUgfAo+ICsJ CQkgU0JJX0RPTUFJTl9NRU1SRUdJT05fTV9XUklUQUJMRSB8Cj4gKwkJCSBTQklfRE9NQUlOX01F TVJFR0lPTl9NX0VYRUNVVEFCTEUgfAo+ICsJCQkgU0JJX0RPTUFJTl9NRU1SRUdJT05fRlcpKTsK PiArCj4gKwkvKiBBbGxvdyBTVVJXIG9mIFA1NTAgKyBTeXN0ZW0gUG9ydCAqLwo+ICsJYWRkX3Jv b3RfbWVtX2NoaygwLAo+ICsJCQkgRUlDNzcwWF9NRU1QT1JUX0JBU0UsCj4gKwkJCSBFSUM3NzBY X01FTVBPUlRfQkFTRSwKPiArCQkJKFNCSV9ET01BSU5fTUVNUkVHSU9OX01NSU8gfAo+ICsJCQkg U0JJX0RPTUFJTl9NRU1SRUdJT05fU0hBUkVEX1NVUldfTVJXKSk7Cj4gKwo+ICsJaWYgKGN1cnJl bnRfaGFydF9kaWUoKSkgewo+ICsJCS8qIEFsbG93IFNVUldYIG9mIGRpZSAxIGNhY2hlZCBtZW1v cnkgKi8KPiArCQlhZGRfcm9vdF9tZW1fY2hrKEVJQzc3MFhfRDFfTUVNX0JBU0UsCj4gKwkJCQkg RUlDNzcwWF9EMV9NRU1fU0laRSwKPiArCQkJCSBFSUM3NzBYX0QxX01FTV9TSVpFLAo+ICsJCQkJ KFNCSV9ET01BSU5fTUVNUkVHSU9OX01fUkVBREFCTEUgfAo+ICsJCQkJIFNCSV9ET01BSU5fTUVN UkVHSU9OX01fV1JJVEFCTEUgfAo+ICsJCQkJIFNCSV9ET01BSU5fTUVNUkVHSU9OX1NVX1JXWCkp Owo+ICsJfSBlbHNlIHsKPiArCQkvKiBBbGxvdyBTVVJXWCBvZiBQNTUwICsgU3lzdGVtIFBvcnQg KyBkaWUgMCBjYWNoZWQgbWVtb3J5ICovCj4gKwkJYWRkX3Jvb3RfbWVtX2NoaygwLAo+ICsJCQkJ IEVJQzc3MFhfRDBfTUVNX0xJTUlULAo+ICsJCQkJIEVJQzc3MFhfRDBfTUVNX0xJTUlULAo+ICsJ CQkJKFNCSV9ET01BSU5fTUVNUkVHSU9OX01fUkVBREFCTEUgfAo+ICsJCQkJIFNCSV9ET01BSU5f TUVNUkVHSU9OX01fV1JJVEFCTEUgfAo+ICsJCQkJIFNCSV9ET01BSU5fTUVNUkVHSU9OX1NVX1JX WCkpOwo+ICsJfQo+ICsKPiArCS8qIEJsb2NrIFA1NTAgKyBTeXN0ZW0gUG9ydCAwICsgTWVtb3J5 IFBvcnQgKGVuZm9yY2VkKSAqLwo+ICsJYWRkX3Jvb3RfbWVtX2NoaygwLAo+ICsJCQkgRUlDNzcw WF9NRU1QT1JUX0xJTUlULAo+ICsJCQkgRUlDNzcwWF9NRU1QT1JUX0xJTUlULAo+ICsJCQkoU0JJ X0RPTUFJTl9NRU1SRUdJT05fTU1JTyB8Cj4gKwkJCSBTQklfRE9NQUlOX01FTVJFR0lPTl9FTkZf UEVSTUlTU0lPTlMpKTsKPiArCj4gKwlyZXR1cm4gZ2VuZXJpY19lYXJseV9pbml0KGNvbGRfYm9v dCk7Cj4gK30KPiArCj4gKyNkZWZpbmUgUE1QX0ZXX1NUQVJUIDAKPiArI2RlZmluZSBQTVBfRldf Q09VTlQgMgo+ICsjZGVmaW5lIFBNUF9SRVNFUlZFRF9BIDIKPiArI2RlZmluZSBQTVBfRlJFRV9B X1NUQVJUIDMKPiArI2RlZmluZSBQTVBfRlJFRV9BX0NPVU5UIDMKPiArI2RlZmluZSBQTVBfUkVT RVJWRURfQiA2Cj4gKyNkZWZpbmUgUE1QX0ZSRUVfQl9TVEFSVCA3Cj4gKyNkZWZpbmUgUE1QX0ZS RUVfQl9DT1VOVCAxCj4gKwo+ICtzdGF0aWMgaW50IGVzd2luX2VpYzc3MDBfZmluYWxfaW5pdChi b29sIGNvbGRfYm9vdCkKPiArewo+ICsJLyoqCj4gKwkgKiBGb3IgYm90aCBkaWVzIGFmdGVyIGZp bmFsX2luaXQ6Cj4gKwkgKgo+ICsJICogIFBNUFswXTogICBQcm90ZWN0IE9wZW5TQkkgaW4gY2Fj aGVkIG1lbW9yeQo+ICsJICogIFBNUFsxXTogICBQcm90ZWN0IE9wZW5TQkkgaW4gdW5jYWNoZWQg bWVtb3J5Cj4gKwkgKiAgUE1QWzJdOiAgIEJsb2NrIHJlbW90ZSBkaWUgUDU1MCBMMyBaZXJvIERl dmljZQo+ICsJICogIFBNUFszLTVdOiA8RnJlZSByYW5nZXMgQT4KPiArCSAqICBQTVBbNV06ICAg VGVtcG9yYXJ5IGVuYWJsZSBQNTUwICsgU3lzdGVtIFBvcnQKPiArCSAqICBQTVBbNl06ICAgQmxv Y2sgYWxsIFA1NTAgKyBTeXN0ZW0gKyBNZW1vcnkgUG9ydAo+ICsJICogIFBNUFs3LTddOiA8RnJl ZSByYW5nZXMgQj4KPiArCSAqLwo+ICsJc3RydWN0IHNiaV9kb21haW5fbWVtcmVnaW9uICpyZWc7 Cj4gKwl1bnNpZ25lZCBpbnQgcG1wX2lkeCA9IFBNUF9GV19TVEFSVCwKPiArCQkgICAgIHBtcF9t YXggPSBQTVBfRldfU1RBUlQgKyBQTVBfRldfQ09VTlQ7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJaWYg KGNvbGRfYm9vdCkKPiArCQlzYmlfc3lzdGVtX3Jlc2V0X2FkZF9kZXZpY2UoJmVpYzc3MHhfcmVz ZXQpOwo+ICsKPiArCS8qKgo+ICsJICogRG8gZ2VuZXJpY19maW5hbF9pbml0IHN0dWZmIGZpcnN0 LCBiZWNhdXNlIGl0IHRvdWNocyBGRFQuCj4gKwkgKiBBZnRlciBmaW5hbF9pbml0LCB3ZSdsbCBi bG9jayBlbnRpcmUgbWVtb3J5IHBvcnQgd2l0aCB0aGUKPiArCSAqIExPQ0sgYml0IHNldCwgd2hp Y2ggbWVhbnMgd2UgY2FuJ3QgYWNjZXNzIG1lbW9yeSBvdXRzaWRlCj4gKwkgKiBvZiBbZndfc3Rh cnQsIGZ3X3N0YXJ0ICsgZndfc2l6ZSkuIFRoZSBGRFQgY291bGQgdmVyeSB3ZWxsCj4gKwkgKiBy ZXNpZGUgb3V0c2lkZSBvZiBmaXJtd2FyZSByZWdpb24uIExhdGVyLCBwbXBfY29uZmlndXJlKCkK PiArCSAqIG1heSB1bmJsb2NrIGl0IHdpdGggc29tZSBwcmVjZWRpbmcgZW50cmllcyBmb3Igcm9v dCBkb21haW4KPiArCSAqIGhhcnRzLiBJdCBtYXkgbm90IHVuYmxvY2sgaXQsIGhvd2V2ZXIsIGZv ciBub24tcm9vdCBoYXJ0cy4KPiArCSAqLwo+ICsJcmMgPSBnZW5lcmljX2ZpbmFsX2luaXQoY29s ZF9ib290KTsKPiArCWlmIChyYykKPiArCQlyZXR1cm4gcmM7Cj4gKwo+ICsKPiArCS8qIFByb2Nl c3MgZmlybXdhcmUgcmVnaW9ucyAqLwo+ICsJc2JpX2RvbWFpbl9mb3JfZWFjaF9tZW1yZWdpb24o JnJvb3QsIHJlZykgewo+ICsJCWlmICghU0JJX0RPTUFJTl9NRU1SRUdJT05fSVNfRklSTVdBUkUo cmVnLT5mbGFncykpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZiAocG1wX2lkeCA+PSBwbXBf bWF4KSB7Cj4gKwkJCXNiaV9wcmludGYoIiVzOiBpbnN1ZmZpY2llbnQgRlcgUE1QIGVudHJpZXNc biIsCj4gKwkJCQkgICBfX2Z1bmNfXyk7Cj4gKwkJCXJldHVybiBTQklfRUZBSUw7Cj4gKwkJfQo+ ICsJCXBtcF9zZXQocG1wX2lkeCsrLCBzYmlfZG9tYWluX2dldF9vbGRwbXBfZmxhZ3MocmVnKSwK PiArCQkJcmVnLT5iYXNlLCByZWctPm9yZGVyKTsKPiArCX0KPiArCj4gKwlwbXBfc2V0KFBNUF9S RVNFUlZFRF9BLCBQTVBfTCwgRUlDNzcwWF9MM19aRVJPX1JFTU9URSwKPiArCQkJICAgbG9nMnJv dW5kdXAoRUlDNzcwWF9MM19aRVJPX1NJWkUpKTsKPiArCS8qKgo+ICsJICogRW5hYmxlIFA1NTAg aW50ZXJuYWwgKyBTeXN0ZW0gUG9ydCwgc28gT3BlblNCSSBjYW4gYWNjZXNzCj4gKwkgKiBDTElO VC9QTElDL1VBUlQuIE1pZ2h0IGJlIG92ZXJ3cml0dGVuIGluIHBtcF9jb25maWd1cmUuCj4gKwkg Ki8KPiArCXBtcF9zZXQoUE1QX0ZSRUVfQV9TVEFSVCArIFBNUF9GUkVFX0FfQ09VTlQgLSAxLCAw LCAwLAo+ICsJCWxvZzJyb3VuZHVwKEVJQzc3MFhfTUVNUE9SVF9CQVNFKSk7Cj4gKwo+ICsJcG1w X3NldChQTVBfUkVTRVJWRURfQiwgUE1QX0wsIDAsCj4gKwkJbG9nMnJvdW5kdXAoRUlDNzcwWF9N RU1QT1JUX0xJTUlUKSk7Cj4gKwo+ICsJLyoqCj4gKwkgKiBUaGVzZSBtdXN0IGNvbWUgYWZ0ZXIg dGhlIHNldHVwIG9mIFBNUCwgYXMgd2UgYXJlIGFib3V0IHRvCj4gKwkgKiBlbmFibGUgc3BlY3Vs YXRpb24gYW5kIEhXIHByZWZldGNoZXIgYml0cwo+ICsJICovCj4gKwljc3Jfd3JpdGUoRUlDNzcw WF9DU1JfRkVBVDAsIENPTkZJR19FU1dJTl9FSUM3NzBYX0ZFQVQwX0NGRyk7Cj4gKwljc3Jfd3Jp dGUoRUlDNzcwWF9DU1JfRkVBVDEsIENPTkZJR19FU1dJTl9FSUM3NzBYX0ZFQVQxX0NGRyk7Cj4g Kwljc3Jfd3JpdGUoRUlDNzcwWF9DU1JfTDFfSFdQRiwgQ09ORklHX0VTV0lOX0VJQzc3MFhfTDFf SFdQRl9DRkcpOwo+ICsJY3NyX3dyaXRlKEVJQzc3MFhfQ1NSX0wyX0hXUEYsIENPTkZJR19FU1dJ Tl9FSUM3NzBYX0wyX0hXUEZfQ0ZHKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIGludCBlc3dpbl9laWM3NzAwX3BtcF9jb25maWd1cmUodW5zaWduZWQgaW50IHBtcF9jb3Vu dCwKPiArCQkJCQl1bnNpZ25lZCBpbnQgcG1wX2xvZzJncmFuLAo+ICsJCQkJCXVuc2lnbmVkIGxv bmcgcG1wX2FkZHJfbWF4KQo+ICt7Cj4gKwlzdHJ1Y3Qgc2JpX2RvbWFpbiAqZG9tID0gc2JpX2Rv bWFpbl90aGlzaGFydF9wdHIoKTsKPiArCXN0cnVjdCBzYmlfZG9tYWluX21lbXJlZ2lvbiAqcmVn LCAqcHJldiA9IE5VTEw7Cj4gKwl1bnNpZ25lZCBpbnQgcG1wX2lkeCwgcG1wX21heDsKPiArCXVu c2lnbmVkIGludCBpLCBqOwo+ICsKPiArCS8qIFByb2Nlc3MgdGhlIGZpcnN0IGZyZWUgcmFuZ2Ug QSBbMy01XSAqLwo+ICsJcG1wX2lkeCA9IFBNUF9GUkVFX0FfU1RBUlQsCj4gKwlwbXBfbWF4ID0g UE1QX0ZSRUVfQV9TVEFSVCArIFBNUF9GUkVFX0FfQ09VTlQ7Cj4gKwo+ICsJc2JpX2RvbWFpbl9m b3JfZWFjaF9tZW1yZWdpb25faWR4KGRvbSwgcmVnLCBpKSB7Cj4gKwkJaWYgKFNCSV9ET01BSU5f TUVNUkVHSU9OX0lTX0ZJUk1XQVJFKHJlZy0+ZmxhZ3MpKQo+ICsJCQljb250aW51ZTsKPiArCj4g KwkJLyoqCj4gKwkJICogVGhpcyBtdXN0IGJlIHRoZSBvbmUgYmxvY2tpbmcgUDU1MCArIFN5c3Rl bSBQb3J0ICsKPiArCQkgKiBNZW1vcnkgUG9ydCB3ZSBzZXR1cCBpbiBlYXJseV9pbml0LCBvciBh IHN1cGVyc2V0Cj4gKwkJICogb2YgaXQuIElmIHNlZW4sIGJyZWFrLCBhbmQgcHJvZ3JhbSB0aGUg cmVzdCBpbgo+ICsJCSAqIGZyZWUgcmFuZ2UgQi4KPiArCQkgKi8KPiArCQlpZiAocmVnLT5iYXNl ID09IDAgJiYKPiArCQkgICAgcmVnLT5vcmRlciA+PSBsb2cycm91bmR1cChFSUM3NzBYX01FTVBP UlRfTElNSVQpKQo+ICsJCQlicmVhazsKPiArCj4gKwkJLyoqCj4gKwkJICogUmVsYXhhdGlvbjoK PiArCQkgKiBUcmVhdCBhIHByZXZpb3VzIHJlZ2lvbiB3aXRoIFNVUlcgYXMgU1VSV1ggaWYgdGhl Cj4gKwkJICogY3VycmVudCBoYXMgU1VSV1gsIGFuZCBjdXJyZW50IHJlZ2lvbiB3aXRoIE1NSU8K PiArCQkgKiBpZiBwcmV2aW91cyBoYXMgTU1JTywgYW5kIHNlZSBpZiBpdCBjYW4gYmUgbWVyZ2Vk Lgo+ICsJCSAqIFRoaXMgc2F2ZXMgMSBQTVAgZW50cnkgb24gZGllIDAvCj4gKwkJICovCj4gKwkJ aWYgKHByZXYgJiYgc2JpX2RvbWFpbl9tZW1yZWdpb25faXNfc3Vic2V0KHByZXYsIHJlZykgJiYK PiArCQkgICAgKHJlZy0+ZmxhZ3MgfCBTQklfRE9NQUlOX01FTVJFR0lPTl9NTUlPKSA9PQo+ICsJ CSAgICAocHJldi0+ZmxhZ3MgfCBTQklfRE9NQUlOX01FTVJFR0lPTl9TVV9FWEVDVVRBQkxFKSkK PiArCQkJcG1wX2lkeC0tOwo+ICsKPiArCQlpZiAocG1wX2lkeCA+PSBwbXBfbWF4KQo+ICsJCQln b3RvIG5vX21vcmVfcG1wOwo+ICsKPiArCQlwbXBfc2V0KHBtcF9pZHgrKywgc2JpX2RvbWFpbl9n ZXRfb2xkcG1wX2ZsYWdzKHJlZyksCj4gKwkJCXJlZy0+YmFzZSwgcmVnLT5vcmRlcik7Cj4gKwkJ cHJldiA9IHJlZzsKPiArCX0KPiArCS8qIERpc2FibGUgdGhlIHJlc3QgKi8KPiArCXdoaWxlIChw bXBfaWR4IDwgcG1wX21heCkKPiArCQlwbXBfZGlzYWJsZShwbXBfaWR4KyspOwo+ICsKPiArCS8q IFByb2Nlc3MgdGhlIHNlY29uZCBmcmVlIHJhbmdlIEIgWzctN10gKi8KPiArCXBtcF9pZHggPSBQ TVBfRlJFRV9CX1NUQVJULAo+ICsJcG1wX21heCA9IFBNUF9GUkVFX0JfU1RBUlQgKyBQTVBfRlJF RV9CX0NPVU5UOwo+ICsKPiArCXNiaV9kb21haW5fZm9yX2VhY2hfbWVtcmVnaW9uX2lkeChkb20s IHJlZywgaikgewo+ICsJCWlmIChpID49IGopCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZiAo cG1wX2lkeCA+PSBwbXBfbWF4KQo+ICsJCQlnb3RvIG5vX21vcmVfcG1wOwo+ICsKPiArCQlwbXBf c2V0KHBtcF9pZHgrKywgc2JpX2RvbWFpbl9nZXRfb2xkcG1wX2ZsYWdzKHJlZyksCj4gKwkJCXJl Zy0+YmFzZSwgcmVnLT5vcmRlcik7Cj4gKwl9Cj4gKwkvKiBEaXNhYmxlIHRoZSByZXN0ICovCj4g Kwl3aGlsZSAocG1wX2lkeCA8IHBtcF9tYXgpCj4gKwkJcG1wX2Rpc2FibGUocG1wX2lkeCsrKTsK PiArCj4gKwlyZXR1cm4gMDsKPiArbm9fbW9yZV9wbXA6Cj4gKwlzYmlfcHJpbnRmKCIlczogaW5z dWZmaWNpZW50IFBNUCBlbnRyaWVzXG4iLCBfX2Z1bmNfXyk7Cj4gKwlyZXR1cm4gU0JJX0VGQUlM Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBlc3dpbl9laWM3NzAwX3BtcF91bmNvbmZpZ3VyZSh2 b2lkKQo+ICt7Cj4gKwkvKiBFbmFibGUgUDU1MCBpbnRlcm5hbCArIFN5c3RlbSBQb3J0ICovCj4g KwlwbXBfc2V0KFBNUF9GUkVFX0FfU1RBUlQgKyBQTVBfRlJFRV9BX0NPVU5UIC0gMSwgMCwgMCwK PiArCQlsb2cycm91bmR1cChFSUM3NzBYX01FTVBPUlRfQkFTRSkpOwo+ICsKPiArCWZvciAodW5z aWduZWQgaW50IGkgPSAwOyBpIDwgUE1QX0ZSRUVfQV9DT1VOVCAtIDE7IGkrKykKPiArCQlwbXBf ZGlzYWJsZShpICsgUE1QX0ZSRUVfQV9TVEFSVCk7Cj4gKwo+ICsJZm9yICh1bnNpZ25lZCBpbnQg aSA9IDA7IGkgPCBQTVBfRlJFRV9CX0NPVU5UOyBpKyspCj4gKwkJcG1wX2Rpc2FibGUoaSArIFBN UF9GUkVFX0JfU1RBUlQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBlc3dpbl9laWM3NzAwX3Np bmdsZV9md19yZWdpb24odm9pZCkKPiArewo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgZXN3aW5fZWljNzcwMF9wbGF0Zm9ybV9pbml0KGNvbnN0IHZvaWQgKmZkdCwgaW50 IG5vZGVvZmYsCj4gKwkJCQkJY29uc3Qgc3RydWN0IGZkdF9tYXRjaCAqbWF0Y2gpCj4gK3sKPiAr CWdlbmVyaWNfcGxhdGZvcm1fb3BzLmVhcmx5X2luaXQgPSBlc3dpbl9laWM3NzAwX2Vhcmx5X2lu aXQ7Cj4gKwlnZW5lcmljX3BsYXRmb3JtX29wcy5maW5hbF9pbml0ID0gZXN3aW5fZWljNzcwMF9m aW5hbF9pbml0Owo+ICsJZ2VuZXJpY19wbGF0Zm9ybV9vcHMucG1wX2NvbmZpZ3VyZSA9IGVzd2lu X2VpYzc3MDBfcG1wX2NvbmZpZ3VyZTsKPiArCWdlbmVyaWNfcGxhdGZvcm1fb3BzLnBtcF91bmNv bmZpZ3VyZSA9IGVzd2luX2VpYzc3MDBfcG1wX3VuY29uZmlndXJlOwo+ICsJZ2VuZXJpY19wbGF0 Zm9ybV9vcHMuc2luZ2xlX2Z3X3JlZ2lvbiA9IGVzd2luX2VpYzc3MDBfc2luZ2xlX2Z3X3JlZ2lv bjsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmZHRf bWF0Y2ggZXN3aW5fZWljNzcwMF9tYXRjaFtdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJlc3dp bixlaWM3NzAwIiB9LAo+ICsJeyB9LAo+ICt9Owo+ICsKPiArY29uc3Qgc3RydWN0IGZkdF9kcml2 ZXIgZXN3aW5fZWljNzcwMCA9IHsKPiArCS5tYXRjaF90YWJsZSA9IGVzd2luX2VpYzc3MDBfbWF0 Y2gsCj4gKwkuaW5pdCA9IGVzd2luX2VpYzc3MDBfcGxhdGZvcm1faW5pdCwKPiArfTsKPiBkaWZm IC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9lc3dpbi9vYmplY3RzLm1rIGIvcGxhdGZvcm0vZ2Vu ZXJpYy9lc3dpbi9vYmplY3RzLm1rCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMC4uNjk0MmExMDcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9l c3dpbi9vYmplY3RzLm1rCj4gQEAgLTAsMCArMSwxMSBAQAo+ICsjCj4gKyMgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZQo+ICsjCj4gKyMgQ29weXJpZ2h0IChDKSAyMDI1IEJv IEdhbiA8Z2FuYm9pbmdAZ21haWwuY29tPgo+ICsjCj4gKwo+ICtjYXJyYXktcGxhdGZvcm1fb3Zl cnJpZGVfbW9kdWxlcy0kKENPTkZJR19QTEFURk9STV9FU1dJTl9FSUM3NzBYKSArPSBlc3dpbl9l aWM3NzAwCj4gK3BsYXRmb3JtLW9ianMtJChDT05GSUdfUExBVEZPUk1fRVNXSU5fRUlDNzcwWCkg Kz0gZXN3aW4vZWljNzcweC5vCj4gKwo+ICtGV19QQVlMT0FEPXkKPiArRldfUEFZTE9BRF9PRkZT RVQ9MHgyMDAwMDAKPiBkaWZmIC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL2Vzd2lu L2VpYzc3MHguaCBiL3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9lc3dpbi9laWM3NzB4LmgKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi44Y2UyMzI4Mwo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvZXN3aW4vZWljNzcweC5oCj4g QEAgLTAsMCArMSw3MyBAQAo+ICsvKgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAyNSBCbyBHYW4gPGdhbmJvaW5n QGdtYWlsLmNvbT4KPiArICoKPiArICovCj4gKwo+ICsjaWZuZGVmIF9fRUlDNzcwWF9IX18KPiAr I2RlZmluZSBfX0VJQzc3MFhfSF9fCj4gKwo+ICsvKiBDU1JzICovCj4gKyNkZWZpbmUgRUlDNzcw WF9DU1JfQlJQUkVESUNUCTB4N2MwCj4gKyNkZWZpbmUgRUlDNzcwWF9DU1JfRkVBVDAJMHg3YzEK PiArI2RlZmluZSBFSUM3NzBYX0NTUl9GRUFUMQkweDdjMgo+ICsjZGVmaW5lIEVJQzc3MFhfQ1NS X0wxX0hXUEYJMHg3YzMKPiArI2RlZmluZSBFSUM3NzBYX0NTUl9MMl9IV1BGCTB4N2M0Cj4gKwo+ ICsvKiBIYXJ0IElEIHRvIGNvcmUvZGllIGNvbnZlcnNpb24gKi8KPiArI2RlZmluZSBDUFVfQ09S RV9CSVRTCQkyCj4gKyNkZWZpbmUgQ1BVX0NPUkVfTUFTSwkJKCgxIDw8IENQVV9DT1JFX0JJVFMp IC0gMSkKPiArI2RlZmluZSBDUFVfRElFX1NISUZUCQlDUFVfQ09SRV9CSVRTCj4gKyNkZWZpbmUg Q1BVX0RJRV9CSVRTCQkxCj4gKyNkZWZpbmUgQ1BVX0RJRV9NQVNLCQkoKDEgPDwgQ1BVX0RJRV9T SElGVCkgLSAxKQo+ICsKPiArI2RlZmluZSBoYXJ0X2NvcmUoaSkJCSgoaSkgJiBDUFVfQ09SRV9N QVNLKQo+ICsjZGVmaW5lIGhhcnRfZGllKGkpCQkoKChpKSA+PiBDUFVfRElFX1NISUZUKSAmIENQ VV9ESUVfTUFTSykKPiArI2RlZmluZSBjdXJyZW50X2hhcnRfY29yZSgpCWhhcnRfY29yZShjdXJy ZW50X2hhcnRpZCgpKQo+ICsjZGVmaW5lIGN1cnJlbnRfaGFydF9kaWUoKQloYXJ0X2RpZShjdXJy ZW50X2hhcnRpZCgpKQo+ICsKPiArLyogUDU1MCBJbnRlcm5hbCBhbmQgU3lzdGVtIFBvcnQgMCAq Lwo+ICsjZGVmaW5lIEVJQzc3MFhfUDU1MElOVF9TSVpFCTB4MjAwMDAwMDBVTAo+ICsjZGVmaW5l IEVJQzc3MFhfUDU1MElOVF9CQVNFKGQpCSgwVUwgKyBFSUM3NzBYX1A1NTBJTlRfU0laRSAqIChk KSkKPiArI2RlZmluZSBFSUM3NzBYX1A1NTBJTlRfTE9DQUwJRUlDNzcwWF9QNTUwSU5UX0JBU0Uo Y3VycmVudF9oYXJ0X2RpZSgpKQo+ICsjZGVmaW5lIEVJQzc3MFhfVEw2NEQyRF9PVVQJKEVJQzc3 MFhfUDU1MElOVF9MT0NBTCArIDB4MjAwMDAwKQo+ICsjZGVmaW5lIEVJQzc3MFhfVEwyNTZEMkRf T1VUCShFSUM3NzBYX1A1NTBJTlRfTE9DQUwgKyAweDIwMjAwMCkKPiArI2RlZmluZSBFSUM3NzBY X1RMMjU2RDJEX0lOCShFSUM3NzBYX1A1NTBJTlRfTE9DQUwgKyAweDIwNDAwMCkKPiArI2RlZmlu ZSBFSUM3NzBYX0wzX1pFUk9fU0laRQkweDQwMDAwMFVMCj4gKyNkZWZpbmUgRUlDNzcwWF9MM19a RVJPX0JBU0UoZCkJKEVJQzc3MFhfUDU1MElOVF9CQVNFKGQpICsgMHgxYTAwMDAwMCkKPiArI2Rl ZmluZSBFSUM3NzBYX0wzX1pFUk9fTE9DQUwJRUlDNzcwWF9MM19aRVJPX0JBU0UoY3VycmVudF9o YXJ0X2RpZSgpKQo+ICsjZGVmaW5lIEVJQzc3MFhfTDNfWkVST19SRU1PVEUJRUlDNzcwWF9MM19a RVJPX0JBU0UoMSAtIGN1cnJlbnRfaGFydF9kaWUoKSkKPiArCj4gKyNkZWZpbmUgRUlDNzcwWF9T WVNQT1JUX1NJWkUJMHgyMDAwMDAwMFVMCj4gKyNkZWZpbmUgRUlDNzcwWF9TWVNQT1JUX0JBU0Uo ZCkJKDB4NDAwMDAwMDBVTCArIEVJQzc3MFhfU1lTUE9SVF9TSVpFICogKGQpKQo+ICsjZGVmaW5l IEVJQzc3MFhfU1lTUE9SVF9MT0NBTAlFSUM3NzBYX1NZU1BPUlRfQkFTRShjdXJyZW50X2hhcnRf ZGllKCkpCj4gKyNkZWZpbmUgRUlDNzcwWF9TWVNDUkcJCShFSUM3NzBYX1NZU1BPUlRfTE9DQUwg KyAweDExODI4MDAwVUwpCj4gKyNkZWZpbmUgRUlDNzcwWF9TWVNDUkdfUlNUCShFSUM3NzBYX1NZ U0NSRyArIDB4MzAwVUwpCj4gKyNkZWZpbmUgRUlDNzcwWF9TWVNDUkdfUlNUX1ZBTAkweDFBQzBG RkU2VUwKPiArCj4gKy8qIE1lbW9yeSBQb3J0cyAqLwo+ICsjZGVmaW5lIEVJQzc3MFhfTUVNUE9S VF9CQVNFCTB4MDA4MDAwMDAwMFVMIC8vIDJHCj4gKyNkZWZpbmUgRUlDNzcwWF9NRU1QT1JUX1NJ WkUJMHg3ZjgwMDAwMDAwVUwgLy8gKzUxMEcKPiArI2RlZmluZSBFSUM3NzBYX01FTVBPUlRfTElN SVQJKEVJQzc3MFhfTUVNUE9SVF9CQVNFICsgRUlDNzcwWF9NRU1QT1JUX1NJWkUpCj4gKyNkZWZp bmUgRUlDNzcwWF9EMF9NRU1fQkFTRQkweDAwODAwMDAwMDBVTCAvLyAyRwo+ICsjZGVmaW5lIEVJ Qzc3MFhfRDBfTUVNX1NJWkUJMHgwZjgwMDAwMDAwVUwgLy8gKzYyRwo+ICsjZGVmaW5lIEVJQzc3 MFhfRDBfTUVNX0xJTUlUCShFSUM3NzBYX0QwX01FTV9CQVNFICsgRUlDNzcwWF9EMF9NRU1fU0la RSkKPiArI2RlZmluZSBFSUM3NzBYX0QxX01FTV9CQVNFCTB4MjAwMDAwMDAwMFVMIC8vIDEyOEcK Pgo+IFRoZXNlIGRlZmluaXRpb25zIGJyZWFrIFJWMzIgYnVpbGRzOyBwbGVhc2UgZW5zdXJlIHRo ZSBnZW5lcmljIHBsYXRmb3JtIGNvbXBpbGVzCj4gY2xlYW5seSBvbiBib3RoIFJWMzIgYW5kIFJW NjQgdG9vbGNoYWlucy4KPgo+IEJlc3QgcmVnYXJkcywKPiBQZXRlciBMaW4KPgo+ICsjZGVmaW5l IEVJQzc3MFhfRDFfTUVNX1NJWkUJMHgxMDAwMDAwMDAwVUwgLy8gKzY0Rwo+ICsjZGVmaW5lIEVJ Qzc3MFhfRDFfTUVNX0xJTUlUCShFSUM3NzBYX0QxX01FTV9CQVNFICsgRUlDNzcwWF9EMV9NRU1f U0laRSkKPiArI2RlZmluZSBFSUM3NzBYX0NBQ0hFRF9CQVNFCShjdXJyZW50X2hhcnRfZGllKCkg PyBcCj4gKwkJCQlFSUM3NzBYX0QxX01FTV9CQVNFIDogXAo+ICsJCQkJRUlDNzcwWF9EMF9NRU1f QkFTRSkKPiArCj4gKy8qIFVuY2FjaGVkIG1lbW9yeSBtYXBwZWQgaW4gU3lzdGVtIFBvcnQgMSAq Lwo+ICsjZGVmaW5lIEVJQzc3MFhfRDBfVUNfQkFTRQkweGMwMDAwMDAwMDBVTAo+ICsjZGVmaW5l IEVJQzc3MFhfRDFfVUNfQkFTRQkweGUwMDAwMDAwMDBVTAo+ICsjZGVmaW5lIEVJQzc3MFhfVU5D QUNIRURfQkFTRQkoY3VycmVudF9oYXJ0X2RpZSgpID8gXAo+ICsJCQkJRUlDNzcwWF9EMV9VQ19C QVNFIDogXAo+ICsJCQkJRUlDNzcwWF9EMF9VQ19CQVNFKQo+ICsKPiArI2RlZmluZSBFSUM3NzBY X1RPX1VOQ0FDSEVEKHgpCSgoeCkgLSBFSUM3NzBYX0NBQ0hFRF9CQVNFICsgXAo+ICsJCQkJRUlD NzcwWF9VTkNBQ0hFRF9CQVNFKQo+ICsKPiArI2VuZGlmCgotLSAKb3BlbnNiaSBtYWlsaW5nIGxp c3QKb3BlbnNiaUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vb3BlbnNiaQo=