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 05EBDC55174 for ; Sun, 2 Aug 2026 20:34:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=AURGkzy2noNDEm41ZuYRBL2BuNa0AJdKEKa+wiie5OQ=; b=Hnx9uU2gjPaLH8 Hugy1x8+S3ZTPa31bUjXmm9Z3N5O65/ii4fLymBPlyw0EsShJS/erurEPPf8XtsSuImdygtqFwfUG yRj9gMz3hX/+xb471psEhXdSZS4uzLVzdpZFmJAoHoToZnkT/8W/fZa/Jhg28VA/mcVdeCaUsZjWE mFa00dNMOShNqSkGhOqPsbXKlv2FSUjCsCF719//p0SR7qALRdY8G0aptZl+e6qPOzoITQ//J+YqF KLk8M9QoLKUb2Dv1L4hsjN2U5ACKkpUZhqoFir4ne0nWNpkUrZNSBcl6lMQhYIEsikA7GGo8Z7hL2 88YRlGI1Xhvd2Paw5v1A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wqctZ-0000000G1wd-2u0z; Sun, 02 Aug 2026 20:34:53 +0000 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wqctT-0000000G1ok-2FC1 for linux-phy@lists.infradead.org; Sun, 02 Aug 2026 20:34:52 +0000 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-49555a0e68bso6382835e9.2 for ; Sun, 02 Aug 2026 13:34:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785702886; x=1786307686; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=iWcHCdDOYlYL8wUrNuNMzXoIuUyU7phles16OFOoc8g=; b=U0P4gc464ClUbMowC/uKkmedM6gpIDkMyYZ8D3pcbvDwo8HZGtqWJdDEDW5dsxoSbW yGpSABSAd20TBwHBxjY2jvHw2g3wLrKzEsVamP1yKF91jr1V2EdiwGIHMgs/hpGNI7sn 8LxegMSQDUcOGSWdBG/F/wjW8JNwQNeJ4AIK75WwzXnIYPOQIseUTcsVAQNVchJBI0wW 9hh/AMIAi7Y5B0O04aXZ7UfKcIZRKZ0DHgxFd3z9jXXpmtZf0aWRJVCz3Yv0rquQCBK4 rQ31bRhHfMHzpUD7dnKxVKPo8+g1AQP1TaZ2nflhhXEY3h6IY3UL9TsrCuPX7hP3fj7+ THHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785702886; x=1786307686; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=iWcHCdDOYlYL8wUrNuNMzXoIuUyU7phles16OFOoc8g=; b=R/vvCfFx5GmYexNZdfhTTami1+jCYJ9PJTLAjiJBTvbVkQRfqfHkdbe3NKXq8a8A1h E2zsw8FLvWBJ8xThUqvB8XAKMhn4/7yktOdQs8E9aF/j7LP0K54DnPDop43MBqEVPCgO I/Trmj7T2UczVyUgqxHRK034JKY1rTUlly562oc54RDGvyjC2+CMWbtslUPwai5ewNc4 bOX03tYhqO0EQwgCtpzzm0eDfESQHek5dcIA1X7euX4fNlPrT7x6tRxcEyLWjeaoH3H9 t7wwqA/Er4a8MExVLR5NABAzj/eIbfE973h09rDFRAQHXPLveYNERIn8p0WNnRgZU/Dz WMqw== X-Forwarded-Encrypted: i=1; AHgh+RqeRofpEdLQFQ0XAcHQ2eiTMeuTwhIZDPx6sPXqg0hhHfBHGRqaNdbhYyV5zg9AQDMD5W6ELhuLuxY=@lists.infradead.org X-Gm-Message-State: AOJu0Ywwd8wQygFIfVODqcCDiHwiS03KJmKjbd65VaGFtPip+yeSjegB hfiUToXq1fBIuShykqJmTB2zgx0K/kc7xNF0jsFCfF9dfy8IYc1NgXaK X-Gm-Gg: AR+sD13rlzWg2SpdlgtMEPBYPCy/fH0eT7QOPCGjUoMqVkT2ZyBYR9cu7bZiwZQdi/w BPjz12a98iRQ8k1HuRaclW8EgC3vCrxLHY5KNgx1uUup2xFTdEmS30F57U4ZZTyecPzkQqV+QVF c88LLp8ToeVoDr4ljqr/SatyWt1eyfMhIkRq/3kqrWbVfKnT++o0CPEQ/436dLijA5RjYCktoKS cFv03Y4sBLlrNzQzOOWKpjZ1mikV107znUBsdcRU6xa077CxgJpEjrj6XE9H07OVin2xLMcNRM9 JuBss6Jtg6nIKzelpDbtkLSX0llm1w4xkd+PuoH8xK2/L2p2hlnNS23KD5vVBionEuLMqeYMWy3 To+6f2pxIaJ/tFNrZmhxFjJ3qQ2aDozpnMVDc5t+vN61Jk/P12H5SQg11QmkZAIJKshul2uJYp4 rmBraQRGT+y/mWICGlgVdtqdg9yskEvqR2nIxGRprFKKkkBQMJ8F63i+yNv9M83EuFHPLsTiUa X-Received: by 2002:a05:600c:5395:b0:493:faf3:3ea5 with SMTP id 5b1f17b1804b1-4980c66c751mr200587145e9.4.1785702885455; Sun, 02 Aug 2026 13:34:45 -0700 (PDT) Received: from [192.168.0.2] ([197.250.226.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49807bb45ebsm118499905e9.4.2026.08.02.13.34.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 13:34:44 -0700 (PDT) From: =?utf-8?q?Stefan_D=C3=B6singer?= Date: Sun, 02 Aug 2026 23:33:40 +0300 Subject: [PATCH v9 08/12] clk: zte: Introduce a driver for zx297520v3 top clocks MIME-Version: 1.0 Message-Id: <20260802-zx29clk-v9-8-d05530d85d28@gmail.com> References: <20260802-zx29clk-v9-0-d05530d85d28@gmail.com> In-Reply-To: <20260802-zx29clk-v9-0-d05530d85d28@gmail.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Brian Masney , Vinod Koul , Neil Armstrong , Russell King , Lee Jones Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-phy@lists.infradead.org, mfd@lists.linux.dev, =?utf-8?q?Stefan_D=C3=B6singer?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=39733; i=stefandoesinger@gmail.com; h=from:subject:message-id; bh=ijfHgrSTwRZuPaciS2EJCZBtiL3CDaVX71Y02LUC9/s=; b=owEBiQJ2/ZANAwAIAT0TvMhUTxoiAcsmYgBqb6myHZ1jyWNhY51jWDKQlKct7bt0mR4z8JrE6 0E6w5dm8+CJAk8EAAEIADkWIQRDFvS2qgVbJ5UyXWw9E7zIVE8aIgUCam+pshsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQPRO8yFRPGiKMlg/+JqngpMT51k2J3sr1BhTj1Chr/r51wHA F64lLY9hWjgHsy+zLU3reKKlFPrrAI4khmGfGKPUAx4aARanEcNoNC9FK1D26RDAMfn614O1Zrq W+iPNnKorwR0o1lHOC6ZSRo/mGgWkTiUpRde7UzRbHTW9gvhc+8cz5GdT5T5d1SjtjJ/8B3uFiY N+rEYYe/zfViIZHZZuQAviyQ0/7pILqhJvzsKddmOFG/oLziXZI47mNItTlsF/59wwnYIUU3pCg 71tvwspJi5DaR9n3Ber1J+uJTXgj51sonLSPUiW59qAbWupCUPzQVv7pdIM53WAMYzjp1/xB2q3 sKRA2r+Hv7UdKygrkJD9+S7HY9pSEPNxnRPL7SrAOk5IqiK95JdcYcQ4AVO+b88RvYlAcCIJsf+ jdMkDDpUAwbJEiR80xvpnHDnQSMdpnhqBEHx+6YzN1SKVMRMcBYJGCLJ/l+1i7qWod7REUI3S2Y 6taWTJnAXkj13IS71YMAe28zGUnMdN8BouILsGaf7Isp7tZLKeKT6VX+PGEy3RGClRuFWcLicGJ cpwuT0C3wsayxOL9yLDx8N5ncl+IPucQe5Q94nbIzO89+ytdyuSB7fqKXs63JRTS2VLMqpD4r2V eDXAHvoZ+gu/yWT/yFjltLojBJ+YXMCuGmwDDhsdi0y5r5n9PjlA= X-Developer-Key: i=stefandoesinger@gmail.com; a=openpgp; fpr=4F9C2C8728019633893EBBB98CB81F9A72BBA155 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260802_133447_820284_F6815ADB X-CRM114-Status: GOOD ( 38.03 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhpcyByZWdpc3RlciBzcGFjZSBjb250cm9scyBjb3JlIGRldmljZXM6IFBMTHMsIHRoZSBBSEIg YnVzLCBhIGxvdCBvZgp0aW1lcnMsIHRoZSBVU0IgY29udHJvbGxlciwgdGhlIENvcnRleCBNMCBw cm9jZXNzb3IgdGhhdCBib290cyB0aGUgYm9hcmQKYW5kIGEgZmV3IG90aGVyIGRldmljZXMuIEZv ciBzb21lIHJlYXNvbiB0aGUgTFRFIGNvcHJvY2Vzc29yIGlzIGFsc28KcGFydGlhbGx5IGNvbnRy b2xsZWQgYnkgaXQuIFRoZSBtYWluIGFwcGxpY2F0aW9uIHByb2Nlc3NvciBhbmQgRERSCm1lbW9y eSBhcmUgbm90IGZvdW5kIGhlcmUgdGhvdWdoLgoKVGhlIHJlZ2lzdGVyIHRvIHJlYm9vdCB0aGUg Ym9hcmQgaXMgZm91bmQgaGVyZSwgYXMgd2VsbCBhcyBhIHJlZ2lzdGVyIHRvCmNvbnRyb2wgd2hl dGhlciB3YXRjaGRvZyBleHBpcmllcyBjYXVzZSBhIGJvYXJkIHJlc2V0LgoKU2lnbmVkLW9mZi1i eTogU3RlZmFuIETDtnNpbmdlciA8c3RlZmFuZG9lc2luZ2VyQGdtYWlsLmNvbT4KCi0tLQoKVmVy c2lvbiA5OgpMaW5rIGludGVybmFsIHBhcmVudHMgYnkgYW4gKGludGVybmFsKSBjbG9jayBJRCBy YXRoZXIgdGhhbiBuYW1lcy4KClRoZXJlIHNob3VsZCBiZSBubyBkaWZmZXJlbmNlIGluIHRoZSBi dWlsdCBjbG9jayB0cmVlIGNvbXBhcmVkIHRvClZlcnNpb24gOC4KClZlcnNpb24gODoKUmVuYW1l IHRoZSBleHBlY3RlZCBjbG9jayBuYW1lIG9mIHRoZSBmaXhlZCBvc2NpbGxhdG9ycyB0byBjbG9j ay0yNm0gYW5kCmNsb2NrLTMyay4gU2FzaGlrbyBwb2ludGVkIG91dCB0aGF0ICJvc2NYWG0iIGlz IGRlcHJlY2F0ZWQsIGFsdGhvdWdoCndpZGVzcHJlYWQgaW4gZXhpc3RpbmcgZHJpdmVycy4KCkFk ZCBhIGRlZmluZSBpbmRpcmVjdGlvbiBmb3IgdGhlIEFYSSBjYW5kaWRhdGU9Y3JpdGljYWwgcHJv dGVjdGlvbi4KV2hpbGUgaXQgaG9sZHMgdHJ1ZSBpbiBhIHN5c3RlbSB3aXRoIHJ1bm5pbmcgcnBy b2NzLCBJIGZpbmQgaXQgdXNlZnVsCmZvciBzdHJlc3MgdGVzdGluZyB0aGUgY2xvY2sgdHJlZSB0 byBkaXNhYmxlIGl0LgoKRG91YmxlLWNoZWNrZWQgcGNsayBhbmQgd2NsayBiaXRzLCBmaXhlZCBp bmNvcnJlY3QgYXNzaWdubWVudHMgaW4KcmVnaXN0ZXIgMHg1NC4KClZlcnNpb24gNzoKClRoZSBy ZWdpc3RlciBhdCB0b3ArMHgxNDAgY29udGFpbnMgYSBzZXJpZXMgb2YgZ2F0ZXMgdGhhdCBjb250 cm9sIFBMTAppbnB1dCBpbnRvIHRoZSB0b3AgY29udHJvbGxlciBhbmQgUExMIGFuZCBvc2MyNm0g d29yayBjbG9jayBmb3J3YXJkIGludG8KbWF0cml4LiBUaGlzIGFsbG93ZWQgZnVydGhlciBpbnNp Z2h0IGludG8gdGhlIGNsb2NrIHRyZWUuCgpUaGUgUExMIHN1YmRpdmlzaW9uIGxpc3Qgd2FzIHJl cGxhY2VkIHdpdGggZml4ZWQgZmFjdG9yIGNsb2NrcyB0aGF0CmRpdmlkZSBQTExzIGJlZm9yZSBh bmQgYWZ0ZXIgdGhlIGlucHV0IGdhdGUgKGFuZCBzb21lIGZpeGVkIGZhY3RvciBkaXZzCmdvIGlu dG8gbWF0cml4IGluIHRoZSBuZXh0IHBhdGNoKS4gVGhlIG51bWJlciBvZiBjbG9ja3MgZXhwb3J0 ZWQgdG8KTWF0cml4IGlzIGFjdHVhbGx5IHJlbGF0aXZlbHkgc21hbGwuCgpBcyBmb3IgU2FzaGlr bydzIHN1Z2dlc3Rpb24gYWJvdXQgb3V0IG9mIGJvdW5kIHBhcmVudHMgZm9yIGRwbGwgYW5kCnVu a25vd25wbGw6IEkgaGF2ZSBuZXZlciBzZWVuIGEgcGFyZW50ICE9IDAuIElmIHRoYXQgaGFwcGVu cyBvbiBhIGRldmljZQpJIHdhbnQgdG8ga25vdyBhYm91dCBpdC4gQXQgdGhpcyBzdGFnZSBvZiBk ZXZlbG9wbWVudCBJJ2QgcmF0aGVyIGhhdmUKY2xlYXJseSB2aXNpYmxlIG9ycGhhbmVkIGNsb2Nr IHRoYW4gc2lsZW50bHkgY29udGludWluZyBhdCBhbiB1bmV4cGVjdGVkCmZyZXF1ZW5jeS4KCiJv c2MyNm0iIC0+ICJjbG9jay0yNm0iIGFzICJvc2NYWCIsIGFsdGhvdWdoIHdpZGVzcHJlYWQsIGlz IGRlcHJlY2F0ZWQuCkluIGRvaW5nIHNvLCBjaGFuZ2UgdW5kZXJzY29yZXMgaW4gY2xvY2sgbmFt ZXMgdG8gZGFzaGVzIChTYXNoaWtvKS4KClZlcnNpb24gNToKCiopIE1ha2UgaXQgYSBNRkQgY2hp bGQgZHJpdmVyIGluc3RlYWQgb2YgYmluZGluZyB0byB0aGUgbm9kZSBkaXJlY3RseQoqKSBDb3Jy ZWN0IHBhcmVudHMgZm9yIGRwbGwKKikgQ29ycmVjdCBIU0lDIHdvcmsgY2xvY2sgcGFyZW50Ci0t LQogZHJpdmVycy9jbGsvenRlL0tjb25maWcgICAgICAgICAgfCAgMTEgKwogZHJpdmVycy9jbGsv enRlL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9jbGsvenRlL2Nsay16eDI5NzUy MHYzLmMgfCA4MDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZp bGVzIGNoYW5nZWQsIDgxNSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsv enRlL0tjb25maWcgYi9kcml2ZXJzL2Nsay96dGUvS2NvbmZpZwppbmRleCAxNTJjMjQyM2I4ZjAu LjBjY2M2ZWRmM2M1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvenRlL0tjb25maWcKKysrIGIv ZHJpdmVycy9jbGsvenRlL0tjb25maWcKQEAgLTE1LDMgKzE1LDE0IEBAIGNvbmZpZyBDT01NT05f Q0xLX1pURQogCSAgb2YgdGhpcy4KIAogCSAgRW5hYmxlIHRoaXMgaWYgeW91IGFyZSBidWlsZGlu ZyBhIGtlcm5lbCBmb3IgYSBaVEUgZGVzaWduZWQgYm9hcmQuCisKK2NvbmZpZyBDTEtfWlRFX1pY Mjk3NTIwVjMKKwl0cmlzdGF0ZSAiQ2xvY2sgZHJpdmVyIGZvciBaVEUgengyOTc1MjB2MyBiYXNl ZCBTb0NzIgorCWRlcGVuZHMgb24gQ09NTU9OX0NMS19aVEUgJiYgKE1GRF9aVEVfWlgyOTc1MjBW M19DUk0gfHwgQ09NUElMRV9URVNUKQorCWRlZmF1bHQgU09DX1pYMjk3NTIwVjMKKwloZWxwCisJ ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBaVEUgengyOTc1MjB2MyBiYXNpYyBjbG9ja3MuCisKKwkg IEVuYWJsZSB0aGlzIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGEga2VybmVsIHRoYXQgaXMgYWJsZSB0 byBydW4gb24KKwkgIGJvYXJkcyBiYXNlZCBvbiB0aGlzIFNvQy4gWW91IGNhbiBzYWZlbHkgZW5h YmxlIG11bHRpcGxlIGNsb2NrCisJICBkcml2ZXJzLiBUaGUgb25lKHMpIG1hdGNoaW5nIHRoZSBk ZXZpY2UgdHJlZSB3aWxsIGJlIHVzZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay96dGUvTWFr ZWZpbGUgYi9kcml2ZXJzL2Nsay96dGUvTWFrZWZpbGUKaW5kZXggMjdkYjA3MjkzMTY1Li4yYzA3 MzUxMmU5MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2xrL3p0ZS9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2Nsay96dGUvTWFrZWZpbGUKQEAgLTEsNSArMSw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9ubHkKIAogb2JqLSQoQ09ORklHX0NPTU1PTl9DTEtfWlRFKSArPSBj bGstenRlLm8KK29iai0kKENPTkZJR19DTEtfWlRFX1pYMjk3NTIwVjMpICs9IGNsay16eDI5NzUy MHYzLm8KIAogY2xrLXp0ZS15ICs9IGNsay16eC5vIHBsbC16eC5vIGNsay1yZWdtYXAubwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9jbGsvenRlL2Nsay16eDI5NzUyMHYzLmMgYi9kcml2ZXJzL2Nsay96 dGUvY2xrLXp4Mjk3NTIwdjMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmY5OTE1NTgyZjI2MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvY2xrL3p0ZS9jbGst engyOTc1MjB2My5jCkBAIC0wLDAgKzEsODAzIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5CisvKgorICogQ29weXJpZ2h0IChDKSAyMDI2IFN0ZWZhbiBEw7ZzaW5n ZXIKKyAqCisgKiBUaGVyZSBhcmUgbm8gcHVibGljIGRhdGFzaGVldHMgZm9yIHp4Mjk3NTIwdjMu IFRoZSBjb250cm9scyBvbiB0aGlzIGNsb2NrIGNvbnRyb2xsZXIgaGF2ZSBiZWVuCisgKiBleHRy YWN0ZWQgZnJvbSBaVEUncyBrZXJuZWwgYW5kIFUtQm9vdCBzb3VyY2VzIGFuZCBhIExPVCBvZiBt YW51YWwgdGVzdGluZy4gU29tZSBjbG9ja3MgY2FuIGJlCisgKiBmb3VuZCBpbiB0aGUgcG93ZXIg bWFuYWdlbWVudCAoZXZiX2NwdXJwbS5pbWcpIGFuZCBMVEUgKGNwa28ua28pIGJsb2JzIHNoaXBw ZWQgd2l0aCB0aGUgcm91dGVycy4KKyAqCisgKiBCZWNhdXNlIFpURSdzIHNvdXJjZXMgYXJlIHdy b25nIG9yIG1pc2xlYWRpbmcgaW4gc29tZSBwYXJ0cyBhbmQgdGVzdGluZyBjYW4gYmUgbWlzaW50 ZXJwcmV0ZWQsCisgKiB0aGlzIGZpbGUgY29udGFpbnMgYSBMT1Qgb2YgY29tbWVudHMgb24gaG93 IHBhcnRpY3VsYXIgY2xvY2tzIHdlcmUgdGVzdGVkIGFuZCBob3cgdGhlIGltcGFjdCBvZgorICog Y2hhbmdlcyB0byB0aGVtIGNhbiBiZSBvYnNlcnZlZC4KKyAqLworCisjaW5jbHVkZSA8ZHQtYmlu ZGluZ3MvY2xvY2svenRlLHp4Mjk3NTIwdjMtY2xrLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8u aD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k ZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgorCisjaW5jbHVkZSAiY2xrLXp4LmgiCisKK01PRFVMRV9JTVBPUlRfTlMoIlpURV9DTEsi KTsKKworLyoKKyAqIEFYSSBzcGVlZCBpcyBlaXRoZXIgZGV0ZXJtaW5lZCBieSBhIGZpeGVkIHNl bGVjdGlvbiBpbiBtYXRyaXgrMHgwLCBiaXRzIDA6MiBvciBieSBhIHZvdGluZyBzeXN0ZW0KKyAq IHdpdGggYmFsbG90cyBpbiBtYXRyaXgrMHgxMjAsIDB4MTI0LCAweDEyOC4gVGhlIHZvdGluZyBz eXN0ZW0gaXMgZW5hYmxlZCBieSBzZXR0aW5nIG1hdHJpeCAweDEyYworICogdG8gMS4gT3RoZXJ3 aXNlIHRoZSBzZWxlY3Rpb24gaW4gMHgwIGFwcGxpZXMuCisgKgorICogVGhlIGZhc3Rlc3Qgc2Vs ZWN0ZWQgc3BlZWQgd2lucy4gVGhpcyBob2xkcyB0cnVlIGZvciB2YWx1ZXMgMCAoMjYgTUh6KSBh bmQgNyAoNi41IE1IeikgdG9vLCBzbyBpdAorICogaXNuJ3QgYSBjYXNlIG9mIGxvd2VzdCBzZWxl Y3RvciB3aW5zLiBJIGhhdmVuJ3QgdGVzdGVkIHdoYXQgaGFwcGVucyBpZiBtcGxsIGlzIGNoYW5n ZWQgdG8gb3V0cHV0CisgKiA1eCB0aGUgbm9ybWFsIGNsb2NrLCBzbyA3IGJlYXRzIDAuIFByZXN1 bWFibHkgdmFsdWUgMCB3b3VsZCBzdGlsbCB3aW4gdGhlIGVsZWN0aW9uLgorICoKKyAqIEFYSSBz cGVlZCA2LjUgaXMgYSBjaGlsZCBvZiBtYXRyaXgtb3NjMjZtLCBub3QgYSBQTEwuIFRoaXMgY2Fu IGJlIHNlZW4gYnkgZ2F0aW5nIGl0IG9mZiBpbgorICogdG9wY3JtKzB4MTQwLgorICoKKyAqIFRo ZSBzeXN0ZW0gaW5pdGlhbGl6ZXMgd2l0aCB2b3RpbmcgZGlzYWJsZWQgYW5kIGFsbCBwcmVmZXJl bmNlcyBzZXQgdG8gdGhlIGxvd2VzdCBzZXR0aW5nLCA3LgorICogVGhlIHp4Mjk3NTIwdjNfbWF0 cml4X2luaXQgZnVuY3Rpb24gdHJhbnNmZXJzIHRoZSBnbG9iYWwgbXV4IHRvIG91ciB2b3RlIGFu ZCBlbmFibGVzIHZvdGluZy4KKyAqCisgKiBCZWNhdXNlIHJwcm9jcyBtYXkgY2hhbmdlIHRoZWly IHNlbGVjdGlvbiB3aXRob3V0IG5vdGljZSwgYWxsIHBvc3NpYmxlIHBhcmVudHMgb2YgdGhlIEFY SSBtdXggYXJlCisgKiBtYXJrZWQgY3JpdGljYWwuIFRoaXMgY2FuIGhvd2V2ZXIgb2JzY3VyZSBi dWdzIGluIHRoZSBjbG9jayB0cmVlLiBEZWZpbmUgWlgyOTc1MjBWM19BWElfQ0FORElEQVRFCisg KiB0byAwIHRvIGRpc2FibGUgdGhpcyBwcm90ZWN0aW9uIGZvciB0ZXN0aW5nIGFuZCBlaXRoZXIg bm90IHJ1biBhbnl0aGluZyBvbiB0aGUgcnByb2NzIG9yIG1ha2UKKyAqIHN1cmUgTGludXggdm90 ZXMgZm9yIHRoZSBmYXN0ZXN0IHJhdGUuCisgKi8KKyNkZWZpbmUgWlgyOTc1MjBWM19BWElfQ0FO RElEQVRFIENMS19JU19DUklUSUNBTAorCisvKgorICogVG9wIGFuZCBtYXRyaXggY2xvY2tzIGFy ZSBjaGFvdGljIC0gSSBoYXZlbid0IGZvdW5kIGEgY29uc2lzdGVudCBwYXR0ZXJuIGJlaGluZCB0 aGVpciByZWdpc3RlcgorICogYW5kIGJpdCBsb2NhdGlvbnMuIEdlbmVyYWxseSB0aGVyZSBhcmUg dHdvIGdhdGVzIChwY2xrLCB3Y2xrKSwgb25lIG11eCwgdHdvIHJlc2V0cyBhbmQgc29tZXRpbWVz CisgKiBvbmUgZGl2aWRlciwgYnV0IGV4Y2VwdGlvbnMgYXBwbHkuIEZvciBzb21lIGRldmljZXMg dGhlcmUgaXMgb25seSBhIHJlc2V0IGFuZCBzb21lIGdlbmVyYWwKKyAqIChwYXJlbnQpIGNsb2Nr cyBuZWVkIHNldHVwLiBUaGlzIHN0cnVjdHVyZSBwbHVzIG1hY3JvIGhhbmRsZXMgdGhlIHNvbWV3 aGF0IHJlZ3VsYXIgcGFydHMuCisgKgorICogVGhlcmUgYXJlIHNvbWUgcGF0dGVybnMgdGhhdCBj YW4gYmUgb2JzZXJ2ZWQuCisgKiBtdXggMHgzYywgZGl2IDB4NDgsIGdhdGUgMHg1NAorICogbXV4 IDB4NDAsIGRpdiAweDRjLCBnYXRlIDB4NWMKKyAqIG11eCAweDQ0LCBkaXYgMHg1MCwgZ2F0ZSAw eDYwCisgKgorICogRm9yIGEgMCAtIDB4YyAtIDB4MTggcGF0dGVybi4gTXV4ZXMgZnJvbSAweDNj IHRvIDB4NDQsIGRpdmlkZXJzIGZyb20gMHg0OCB0byAweDUwLCBnYXRlcyAweDU0IHRvCisgKiAw eDYwLiBUaGUgcGF0dGVybiBpcyBicm9rZW4gZm9yIHRpbWVyIHQxNyB0aG91Z2guCisgKgorICog R2F0ZXMgaGF2ZSA0IGJpdHMgcGVyIGNsb2NrIC0gdXN1YWxseSwgYnV0IG5vdCBhbHdheXMsIGJp dCAwIGZvciB3Y2xrLCBiaXQgMSBmb3IgcGNsaywgYml0IDIgZm9yCisgKiBzb21ldGhpbmcgdGhl IFpURSBrZXJuZWwgY2FsbHMgImdhdGUiICh0aGUgYml0cyB3ZSB1c2UgaGVyZSBhcmUgY2FsbGVk ICJlbiIpLCB3aGljaCBwcmVzdW1hYmx5CisgKiBlbmFibGVzIGF1dG9tYXRpYyBjbG9jayBnYXRp bmcuIEJpdCAzLCBpZiBzZXR0YWJsZSwgc2VlbXMgdW51c2VkLiBFLmcuIG9mZnNldCAweDU0IGFj Y2VwdHMgYWxsCisgKiBiaXRzIGluIDB4Rjc3RjdGN0YgLSBzdWdnZXN0aW5nIFJUQywgSTJDMCBo YXZlIGFuIGV4dHJhIGdhdGUgYml0LgorICoKKyAqIFRoZSBkZWZhdWx0IG1wbGwgc2V0dGluZ3Mg bXVsdGlwbHkgdGhlIDI2IE1IeiByZWZlcmVuY2UgY2xvY2sgdGltZXMgMjQuIEEgbXV4IHNlbGVj dGlvbiBvZiAyNiBNSHoKKyAqIGNvdWxkIG1lYW4gdXNpbmcgdGhlIDI2IE1IeiBvc2NpbGxhdG9y IGRpcmVjdGx5LCBvciBwYXNzaW5nIGl0IHRocm91Z2ggdGhlIFBMTCBhbmQgZGl2aWRlIGJ5IDI0 LgorICoKKyAqIElmIGEgVUFSVCBpcyBzZXQgdG8gbXBsbC1kNiAoZGVmYXVsdCAxMDQgTUh6KSwg Y2hhbmdpbmcgdGhlIG1wbGwgbXVsdGlwbGllcnMgZG9lcyBhZmZlY3QgVUFSVAorICogdGltaW5n IGFzIGl0IHNob3VsZC4gVGhpcyBkb2VzIG5vdCBoYXBwZW4gd2hlbiB0aGUgVUFSVCBpcyBzZXQg dG8gMjYgTUh6IGlucHV0IG9yIHRpbWVycyB0aGF0CisgKiByZWFkIDI2IE1IeiBpbnB1dC4gVGhp cyBzdWdnZXN0cyAyNiBNSHogY2xvY2tzIHVzZSB0aGUgcmVmZXJlbmNlIGNsb2NrIGRpcmVjdGx5 LgorICoKKyAqIFRoZSBnZW5lcmFsIGNsb2NrIGZsb3cgb24gdGhpcyBib2FyZCBnb2VzIGZyb20g b3NjMjZtIGludG8gdGhlIFBMTHMuIFRoZSBQTEwgb3V0cHV0IGlzCisgKiBicmFuY2hlZCBpbnRv IGEgc21hbGwgbnVtYmVyIG9mIGRpdmlkZWQgZnJlcXVlbmNpZXMgKG1wbGwsIG1wbGwtZDQsIG1w bGwtZDUsIG1wbGwtZDYsIG1wbGwtZDgsCisgKiBncGxsLCBncGxsLWQyLCBncGxsLWQ0KSBhdCBh IGhpZ2ggbGV2ZWwuIFRoZXNlIGRpdmlkZWQgZnJlcXVlbmNpZXMgYXMgd2VsbCBhcyBvc2MyNm0g Z28KKyAqIHRocm91Z2ggYSBzZXJpZXMgb2YgZ2F0ZXMgYXQgb2Zmc2V0IDB4MTQwIGluIHRvcGNy bS4gVGhlIG91dHB1dCBvZiB0aGVzZSBnYXRlcyBwcm92aWRlIHdjbGtzIGZvcgorICogZXZlcnl0 aGluZy4KKyAqCisgKiBBdCBsZWFzdCAzIG9mIHRob3NlIGdhdGUgb3V0cHV0cyAobXBsbCwgZHBs bCwgZ3BsbC1kMikgYXJlIGZ1cnRoZXIgZGl2aWRlZCBiZWhpbmQgdGhvc2UgZ2F0ZXMsCisgKiBw cmVzdW1hYmx5IGluIHRoZSBtYXRyaXggY29udHJvbGxlci4gVGhlcmUgYXJlIG11bHRpcGxlIHBh dGhzIGhvdyAxMDQgYW5kIDc4IE1IeiBhcmUgZGVyaXZlZCwKKyAqIHNvbWUgc3BlY2lmaWMgdG8g dG9wY3JtICgweDE0MCBiaXRzIDEgYW5kIDQpLCBzb21lIHNwZWNpZmljIHRvIG1hdHJpeCAoMHgx NDAgYml0IDkpLiBUaGVyZSBhcmUKKyAqIGxpa2VseSAzICJjb3BpZXMiIG9mIHRoZSA3OCBNSHog Y2xvY2sgYW5kIHR3byA1MCBNSHogb25lcy4KKyAqCisgKiBQY2xrIGlzIG5vdCBnYXRlZCBieSB0 aGUgMHgxNDAgZ2F0ZXMgYXQgYWxsLiBMaWtld2lzZSBvc2MzMmsgaXMgZmVkIHRvIHRoZSB0aW1l cnMgd2l0aG91dAorICogcGFzc2luZyB0aHJvdWdoIHRoaXMgZ2F0ZSwgZXZlbiBmb3IgY29uc3Vt ZXJzIG9uIG1hdHJpeC9MU1AuIFRvcGNybSBvc2MyNm0gd2Nsa3MgYXJlIG5vdCBnYXRlZAorICog ZWl0aGVyLCBidXQgdG9wLWNvbnN1bWVkIFBMTCBjbG9ja3MgYXJlLgorICovCisKK2VudW0gdG9w X2Nsb2NrX2lkcyB7CisJWlhfQ0xLX01QTEwsCisJWlhfQ0xLX1VQTEwsCisJWlhfQ0xLX0RQTEwy LAorCVpYX0NMS19EUExMMl9EMiwKKwlaWF9DTEtfRFBMTCwKKwlaWF9DTEtfR1BMTCwKKworCVpY X0NMS19PU0MyNk1fRDIsCisJWlhfQ0xLX1RPUF9NUExMX0QyX1BSRUdBVEUsCisJWlhfQ0xLX1RP UF9NUExMX0Q1X1BSRUdBVEUsCisJWlhfQ0xLX1RPUF9NUExMX0Q2X1BSRUdBVEUsCisJWlhfQ0xL X1RPUF9NUExMX0Q4X1BSRUdBVEUsCisJWlhfQ0xLX1RPUF9VUExMX0QxMl9QUkVHQVRFLAorCVpY X0NMS19UT1BfR1BMTF9EMl9QUkVHQVRFLAorCVpYX0NMS19UT1BfR1BMTF9ENF9QUkVHQVRFLAor CisJWlhfQ0xLX1RPUF9NUExMX0QyLAorCVpYX0NMS19UT1BfTVBMTF9EOCwKKwlaWF9DTEtfVE9Q X01QTExfRDYsCisJWlhfQ0xLX1RPTUFUUklYX01QTExfRDUsCisJWlhfQ0xLX1RPTUFUUklYX01Q TEwsCisJWlhfQ0xLX1RPTUFUUklYX0RQTEwsCisJWlhfQ0xLX1RPUF9VUExMX0QxMiwKKwlaWF9D TEtfVE9QX1VQTEwsCisJWlhfQ0xLX1RPUF9HUExMX0Q0LAorCVpYX0NMS19UT01BVFJJWF9HUExM X0QyLAorCVpYX0NMS19UT01BVFJJWF9HUExMLAorCVpYX0NMS19UT01BVFJJWF9PU0MyNk0sCisK KwlaWF9DTEtfVE9QX01QTExfRDJfRDQsCisJWlhfQ0xLX1RPUF9NUExMX0QyX0QxMywKKwlaWF9D TEtfVE9QX1VQTExfRDEyX0QyLAorCVpYX0NMS19UT1BfR1BMTF9ENF9EMiwKKworCVpYX0NMS19N MF9NVVgsCisJWlhfQ0xLX0FIQl9NVVgsCisJWlhfQ0xLX1RJTUVSX1QwOF9NVVgsCisJWlhfQ0xL X1RJTUVSX1QwOV9NVVgsCisJWlhfQ0xLX1RJTUVSX1QxMl9NVVgsCisJWlhfQ0xLX1RJTUVSX1Qx M19NVVgsCisJWlhfQ0xLX1RJTUVSX1QxNF9NVVgsCisJWlhfQ0xLX1RJTUVSX1QxNV9NVVgsCisJ WlhfQ0xLX1RJTUVSX1QxNl9NVVgsCisJWlhfQ0xLX1RJTUVSX1QxN19NVVgsCisJWlhfQ0xLX1dE VF9UMThfTVVYLAorCVpYX0NMS19JMkMwX01VWCwKKwlaWF9DTEtfVUFSVDBfTVVYLAorCVpYX0NM S19PVVQwX01VWCwKKwlaWF9DTEtfT1VUMV9NVVgsCisJWlhfQ0xLX09VVDJfTVVYLAorCVpYX0NM S19STUlJUEhZX01VWCwKKworCVpYX0NMS19USU1FUl9UMDhfRElWLAorCVpYX0NMS19USU1FUl9U MDlfRElWLAorCVpYX0NMS19USU1FUl9UMTJfRElWLAorCVpYX0NMS19USU1FUl9UMTNfRElWLAor CVpYX0NMS19USU1FUl9UMTRfRElWLAorCVpYX0NMS19USU1FUl9UMTVfRElWLAorCVpYX0NMS19U SU1FUl9UMTZfRElWLAorCVpYX0NMS19USU1FUl9UMTdfRElWLAorCVpYX0NMS19XRFRfVDE4X0RJ ViwKKwlaWF9DTEtfVVNJTTFfRElWLAorCisJWlhfQ0xLX0FIQl9QQ0xLLAorCVpYX0NMS19BSEJf V0NMSywKKwlaWF9DTEtfU1JBTTFfUENMSywKKwlaWF9DTEtfU1JBTTJfUENMSywKKwlaWF9DTEtf UE1NX1dDTEssCisJWlhfQ0xLX1BNTV9QQ0xLLAorCVpYX0NMS19USU1FUl9UMDhfV0NMSywKKwla WF9DTEtfVElNRVJfVDA4X1BDTEssCisJWlhfQ0xLX1RJTUVSX1QwOV9XQ0xLLAorCVpYX0NMS19U SU1FUl9UMDlfUENMSywKKwlaWF9DTEtfVElNRVJfVDEyX1dDTEssCisJWlhfQ0xLX1RJTUVSX1Qx Ml9QQ0xLLAorCVpYX0NMS19USU1FUl9UMTNfV0NMSywKKwlaWF9DTEtfVElNRVJfVDEzX1BDTEss CisJWlhfQ0xLX1RJTUVSX1QxNF9XQ0xLLAorCVpYX0NMS19USU1FUl9UMTRfUENMSywKKwlaWF9D TEtfVElNRVJfVDE1X1dDTEssCisJWlhfQ0xLX1RJTUVSX1QxNV9QQ0xLLAorCVpYX0NMS19USU1F Ul9UMTZfV0NMSywKKwlaWF9DTEtfVElNRVJfVDE2X1BDTEssCisJWlhfQ0xLX1RJTUVSX1QxN19X Q0xLLAorCVpYX0NMS19USU1FUl9UMTdfUENMSywKKwlaWF9DTEtfV0RUX1QxOF9XQ0xLLAorCVpY X0NMS19XRFRfVDE4X1BDTEssCisJWlhfQ0xLX0kyQzBfV0NMSywKKwlaWF9DTEtfSTJDMF9QQ0xL LAorCVpYX0NMS19VQVJUMF9XQ0xLLAorCVpYX0NMS19VQVJUMF9QQ0xLLAorCVpYX0NMS19VU0Jf V0NMSywKKwlaWF9DTEtfVVNCX1BDTEssCisJWlhfQ0xLX0hTSUNfV0NMSywKKwlaWF9DTEtfSFNJ Q19QQ0xLLAorCVpYX0NMS19SVENfV0NMSywKKwlaWF9DTEtfUlRDX1BDTEssCisJWlhfQ0xLX1VT SU0xX1dDTEssCisJWlhfQ0xLX1VTSU0xX1BDTEssCisJWlhfQ0xLX0xQTV9HU01fV0NMSywKKwla WF9DTEtfTFBNX0dTTV9QQ0xLLAorCVpYX0NMS19MUE1fTFRFX1dDTEssCisJWlhfQ0xLX0xQTV9M VEVfUENMSywKKwlaWF9DTEtfTFBNX1REX1dDTEssCisJWlhfQ0xLX0xQTV9URF9QQ0xLLAorCVpY X0NMS19MUE1fV19XQ0xLLAorCVpYX0NMS19MUE1fV19QQ0xLLAorCVpYX0NMS19PVVQwX1dDTEss CisJWlhfQ0xLX09VVDFfV0NMSywKKwlaWF9DTEtfT1VUMl9XQ0xLLAorCVpYX0NMS19PVVQzMktf V0NMSywKKwlaWF9DTEtfUk1JSVBIWV9XQ0xLLAorfTsKKworLyogVXNlZCBmb3IgZ2F0ZXMgd2hl cmUgd2UgZG9uJ3Qga25vdyB0aGUgcGFyZW50IGlucHV0KHMpLiBBc3N1bWUgZ2VuZXJhbCBvc2Np bGxhdG9yICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjIGNsa191bmtub3du ID0gUEFSRU5UX0ZXKCJvc2MyNm0iKTsKKworLyogRm9yIGNsb2NrcyB0aGF0IGFyZSBrbm93biB0 byB1c2UgdGhlIHVuZ2F0ZWQgb3NjMjZtIGlucHV0ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4 X3BhcmVudF9kZXNjIGNsa19tYWluW10gPSB7CisJUEFSRU5UX0ZXKCJvc2MyNm0iKSwKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgenhfcGFyZW50X2Rlc2MgZHBsbF9wYXJlbnRzW10gPSB7CisJ UEFSRU5UX0lEKFpYX0NMS19EUExMMl9EMiksCisJUEFSRU5UX0ZXKCJvc2MyNm0iKSwKK307CisK Ky8qCisgKiBBSEI6IFRoZSBjbG9jayBtdXggd29ya3MgYW5kIGltcGFjdCBjYW4gYmUgdGVzdGVk IGUuZy4gd2l0aCBpcGVyZiBzcGVlZCB0ZXN0aW5nIG9mIHRoZSBVU0IKKyAqIG5ldHdvcmsgY29u bmVjdGlvbi4gVmFsdWVzIDIgYW5kIDMgZ2l2ZSB0aGUgc2FtZSBzcGVlZCBhbmQgZGVwZW5kIG9u IHRoZSBzYW1lIGJpdCAoMykgaW4gMHgxNDAuCisgKiBUaGUgbXBsbC1kNiByYXRlIGlzIGdhdGVk IG9mZiBieSB0aGUgc2FtZSBiaXQgaW4gMHgxNDAgYXMgbTAncyBtcGxsLWQ2LCBidXQgdGhlIGQ4 IGlzIGRpZmZlcmVudC4KKyAqIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgb25lIG9mIHRoZSB0d28g dXNlcyBhIGRpZmZlcmVudCBjbG9jayByYXRlIHRoYW4gZG9jdW1lbnRlZCBpbiBaVEUncworICog a2VybmVsLiBUaGUgTTAgc3BlZWQgaXMgZWFzeSB0byBtZWFzdXJlLCBzbyBJIGFtIGNvbmZpZGVu dCBpbiB0aGUgTTAncyA3OCBNSHogcmF0ZS4gQUhCIGxvb2tzCisgKiBsaWtlIDc4IHJhdGhlciB0 aGFuIDUyLCBidXQgY29uZmlkZW5jZSBpcyBsb3dlciBiZWNhdXNlIFJBTSByZWFkIHRlc3RzIGFy ZSBpbmZsdWVuY2VkIGJ5IENQVQorICogb3ZlcmhlYWQgdG9vLgorICovCisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgenhfcGFyZW50X2Rlc2MgYWhiX3NlbFtdID0geworCVBBUkVOVF9GVygib3NjMjZt IiksCisJUEFSRU5UX0lEKFpYX0NMS19UT1BfTVBMTF9ENiksCS8qIDEwNCBNSHogKi8KKwlQQVJF TlRfSUQoWlhfQ0xLX1RPUF9NUExMX0Q4KSwJLyogNzggTUh6ICovCisJUEFSRU5UX0lEKFpYX0NM S19UT1BfTVBMTF9EOCksCS8qIDc4IE1IeiAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB6 eF9wYXJlbnRfZGVzYyB0aW1lcl90b3Bfc2VsW10gPSB7CisJUEFSRU5UX0ZXKCJvc2MzMmsiKSwK KwlQQVJFTlRfRlcoIm9zYzI2bSIpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB6eF9wYXJl bnRfZGVzYyB1YXJ0X3RvcF9zZWxbXSA9IHsKKwlQQVJFTlRfRlcoIm9zYzI2bSIpLAorCVBBUkVO VF9JRChaWF9DTEtfVE9QX01QTExfRDYpLAkvKiAxMDQgTUh6LCBzaGFyaW5nIE0wJ3MgYW5kIGFo YidzIDB4MTQwIGdhdGUgKi8KK307CisKKy8qCisgKiBUaGUgQ29ydGV4IE0wIGNvcHJvY2Vzc29y LiBJdCBpcyByZXNwb25zaWJsZSBmb3IgYm9vdGluZyB0aGUgYm9hcmQgYW5kIHJ1bnMgc29tZSBw b3dlciBtYW5hZ2VtZW50CisgKiBoZWxwZXIgY29kZSBvbiB0aGUgc3RvY2sgZmlybXdhcmUuIFRo ZSBNMCBycHJvYyBpdHNlbGYgaXMgbm90IGNyaXRpY2FsLCBidXQgbW9zdCBvZiB0b3Bjcm0ncwor ICogcmVnaXN0ZXJzIGJlY29tZSB1bnJlYWRhYmxlIGlmIHRoaXMgaXMgZ2F0ZWQgb2ZmIG9yIGJl Y29tZSBzbG93IHdoZW4gY2xvY2tlZCBhdCAzMiBrSHosIGUuZy4gR1BJTworICogYmVjb21lcyBi b3JkZXJsaW5lIHVudXNhYmxlIGF0IDMyIGtIei4KKyAqCisgKiBUaGVyZSBpcyBubyBkZWRpY2F0 ZWQgTTAgZ2F0ZS4gRGlzYWJsaW5nIGFoYi13Y2xrIGxvb2tzIGxpa2UgdGhlIE0wIHN0b3BzIGZy b20gQTUzJ3MgcG9pbnQgb2YKKyAqIHZpZXcsIGJ1dCBpdCBtZXJlbHkgYnJlYWtzIHRoZSBBNTMn cyBhYmlsaXR5IHRvIGNvbW11bmljYXRlIHdpdGggaXQsIGFuZCBNMCdzIGFiaWxpdHkgdG8KKyAq IGNvbW11bmljYXRlIHdpdGggdGhlIHN0YW5kYXJkIFVBUlQgb24gTFNQLiBNMCBrZWVwcyBydW5u aW5nIHdpdGggYm90aCBhaGItd2NsayBhbmQgYWhiLXBjbGsKKyAqIGdhdGVkIG9mZiBhbmQgY2Fu IHJlLWVuYWJsZSB0aGUgZ2F0ZXMuCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgenhfcGFyZW50 X2Rlc2MgbTBfc2VsW10gPSB7CisJUEFSRU5UX0ZXKCJvc2MyNm0iKSwKKwlQQVJFTlRfSUQoWlhf Q0xLX1RPUF9NUExMX0Q2KSwJCS8qIDEwNCBNSHogKi8KKwlQQVJFTlRfSUQoWlhfQ0xLX1RPUF9N UExMX0QyX0Q0KSwJLyogNzggTUh6LCBidXQgZGlmZmVyZW50IGdhdGUgdGhhbiB0aGUgYWhiIDc4 IE1IeiAqLworCVBBUkVOVF9GVygib3NjMzJrIiksCQkJLyogWWVzLCB0ZXN0ZWQuIEl0IGlzIFNM TExMT09PT09XV1cuICovCit9OworCisvKgorICogQ2xrLW91dDAvMS8yLzMyazogVGhlc2UgY2xv Y2tzIGFyZSBleHBvc2VkIG9uIEdQSU9zIDE1LCAxNiwgMTcgYW5kIDE4IHJlc3BlY3RpdmVseS4g VGhleSBhcmUgdXNlZAorICogaW4gWlRFJ3MgY2FtZXJhIGFuZCBzb3VuZCBjb2RlLCBieSBkaXJl Y3RseSBwb2tpbmcgaW50byB0aGUgY2xvY2sgcmVnaXN0ZXJzIGZyb20gdGhlIGRldmljZQorICog ZHJpdmVycy4gVW50aWwgdGhlIHJlc3BlY3RpdmUgZGV2aWNlcyBhcmUgc3VwcG9ydGVkIHRoZXkg Y2FuIHNhZmVseSBiZSBzd2l0Y2hlZCBvZmYuCisgKgorICogRm9yIGNsay1vdXQxIFpURSdzIGNh bWVyYSBjb2RlIHNheXMgdGhlIGZvbGxvd2luZzoKKyAqCisgKiAwIC0+IDIwIE1IegorICogMSAt PiA0MCBNSHoKKyAqIDIgLT4gMTMgTUh6CisgKiAzIC0+IDI2IE1IegorICoKKyAqIDAgYW5kIDEg cmVhZCBmcm9tIHVwbGwuIEkgY29uZmlybWVkIHRoZWlyIHJhdGVzICh1cGxsLWQyNCBhbmQgdXBs bC1kMTIpIGJ5IHNldHRpbmcgdXBsbCB0byBhIHZlcnkKKyAqIGxvdyBmcmVxdWVuY3kgYW5kIHNh bXBsaW5nIHRoZSBjbG9jayBieSBHUElPIHJlYWRzLiBUaGUgb3V0cHV0cyBvZiAyIGFuZCAzIGFy ZSB3YXkgdG9vIGhpZ2ggdG8KKyAqIHRlc3QgdGhhdCB3YXkuIE5laXRoZXIgaXMgcmVhZGluZyBm cm9tIGFueSBQTEwsIHRoZXkga2VlcCBvc2NpbGxhdGluZyB3aGVuIGFsbCBQTExzIGFyZSBkaXNh YmxlZC4KKyAqIEkgYW0gZmFpcmx5IHN1cmUgdGhhdCAzIGlzIGp1c3QgZGlyZWN0IG9zYzI2bSBi ZWNhdXNlIGl0IHBlcmZlY3RseSBtYXRjaGVzIHdoYXQgb3V0MiBpcworICogc2hvd2luZyBpbiBp dHMgMjYgTUh6IHNldHRpbmcuCisgKgorICogQ2xrLW91dDIgaXMgc2ltaWxhciwgYnV0IGl0IGhh cyBvbmx5IG9uZSBjb250cm9sIGJpdCBpbiB0b3AgMHgzNCBiaXQgOC4gTmVpdGhlciBzZXR0aW5n IHNlbGVjdHMKKyAqIGEgUExMIG91dHB1dC4gV2hlbiBzZXR0aW5nICoweDM0ID0gMHgwODAsIGNs ay1vdXQxIGFuZCBjbGstb3V0MiBhcmUgaW4gbG9ja3N0ZXAsIHByZXN1bWFibHkKKyAqIHJ1bm5p bmcgYXQgMTMgTUh6LiAweDFjMCBhbHNvIHJ1bnMgaW4gbG9ja3N0ZXAsIHByZXN1bWFibHkgMjYg TUh6LgorICoKKyAqIGNsay1vdXQwIGhhcyBhIG11eCBpbiBiaXQgNS4gVmFsdWUgMCBtb3N0IGxp a2VseSBzZWxlY3RzIG9zYzI2bS4gSSBhbSBub3QgZW50aXJlbHkgc3VyZSBhYm91dAorICogdmFs dWUgMSAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLCBidXQgdGhlIG0wIG11eCBoYXMgYW4gaW1wYWN0 IG9uIGl0LiBJdCBsb29rcyBsaWtlIGEgZGVidWcgcGluCisgKiB0aGF0IGV4cG9zZXMgc29tZSBj b3JlIGNsb2NrLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjIG91dDBf c2VsW10gPSB7CisJUEFSRU5UX0ZXKCJvc2MyNm0iKSwKKwlQQVJFTlRfSUQoWlhfQ0xLX00wX01V WCksCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHp4X3BhcmVudF9kZXNjIG91dDFfc2VsW10g PSB7CisJUEFSRU5UX0lEKFpYX0NMS19UT1BfVVBMTF9EMTJfRDIpLAkvKiAyMCBNSHogKi8KKwlQ QVJFTlRfSUQoWlhfQ0xLX1RPUF9VUExMX0QxMiksCQkvKiA0MCBNSHogKi8KKwlQQVJFTlRfSUQo WlhfQ0xLX09TQzI2TV9EMiksCQkvKiAxMyBNSHogKi8KKwlQQVJFTlRfRlcoIm9zYzI2bSIpLAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB6eF9wYXJlbnRfZGVzYyBvdXQyX3NlbFtdID0gewor CVBBUkVOVF9JRChaWF9DTEtfT1NDMjZNX0QyKSwJCS8qIDEzIE1IeiAqLworCVBBUkVOVF9GVygi b3NjMjZtIiksCit9OworCisvKgorICogQ2xrLW8gaXMgc2ltaWxhciB0byBjbGstb3V0KiwgcHJv dmlkaW5nIGEgY2xvY2sgb24gR1BJTyAyMCwgcHJlc3VtYWJseSBmb3IgZHJpdmluZyBhIChSKU1J SSBwaHkuCisgKiBUaGUgNTAgTUh6IHZhbHVlIGlzIGRvY3VtZW50ZWQgaW4gYSBzdHJheSBjb21t ZW50IGluIFpURSdzIEdNQUMgZHJpdmVyLiBJIHRlc3RlZCBpdCBzaW1pbGFybHkgdG8KKyAqIHRo ZSBhYm92ZSBwaW5zLiBNdXggc2V0dGluZyAwIGdpdmVzIGhhbGYgdGhlIGNvdW50IGFzIHNldHRp bmcgMSBhbmQgc2V0dGluZyAxIGdpdmVzIGdwbGwgZGl2aWRlZAorICogYnkgNCAtIG1hdGNoaW5n IHRoZSA1MCBNSHogc3VnZ2VzdGVkIGJ5IHRoZSBaVEUgY29tbWVudCBhdCB0aGUgZGVmYXVsdCBn cGxsIHNldHRpbmdzLiBHYXRpbmcgZ3BsbAorICogc3RvcHMgdGhlIGNsb2NrIGZvciB2YWx1ZXMg MCBhbmQgMS4KKyAqCisgKiBTZXR0aW5ncyAyIGFuZCAzIGFyZSBwb3NzaWJsZSwgYnV0IHNlZW0g dG8gcmV0dXJuIGdhcmJhZ2UuIEl0IGlzIGdlbmVyYWxseSBwdWxzaW5nIHVwIGFuZCBkb3duLAor ICogZXhjZXB0IGlmIGJvdGggZ3BsbCBhbmQgdXBsbCBhcmUgc3RvcHBlZC4gSSBzdXNwZWN0IGl0 IGp1c3QgcmVhZHMgcmFuZG9tIGVsZWN0cmljYWwgZmx1Y3R1YXRpb24KKyAqIGZyb20gb3RoZXIg cGxhY2VzIGluIHRoZSBib2FyZC4gWWVzLCBJIGhhZCBhIHB1bGwtZG93biBlbmFibGVkIHdoZW4g dGVzdGluZyB0aGlzLgorICoKKyAqIEkgYW0gbm90IGF3YXJlIG9mIGFueSBib2FyZCB0aGF0IHVz ZXMgdGhpcyB0aG91Z2guIFRoZSBFdGhlcm5ldC1lcXVpcHBlZCBvbmVzIEkgaGF2ZSBhbGwgcnVu IHRoZQorICogUEhZIHdpdGggaXRzIG93biBvc2NpbGxhdG9yLgorICovCitzdGF0aWMgY29uc3Qg c3RydWN0IHp4X3BhcmVudF9kZXNjIHJtaWlfc2VsW10gPSB7CisJUEFSRU5UX0lEKFpYX0NMS19U T1BfR1BMTF9ENF9EMiksCS8qIDI1IE1IeiAqLworCVBBUkVOVF9JRChaWF9DTEtfVE9QX0dQTExf RDQpLAkJLyogNTAgTUh6ICovCit9OworCisjZGVmaW5lIFBMTChfbmFtZSwgX3BhcmVudHMsIF9y YXRlLCBfcmVnLCBfZmxhZ3MpCQlcCisJewkJCQkJCQlcCisJCS50eXBlID0gWlhfQ0xPQ0tfUExM LAkJCQlcCisJCS5wbGwgPSB7CQkJCQlcCisJCQkubmFtZSA9IF9uYW1lLAkJCQlcCisJCQkucGFy ZW50cyA9IF9wYXJlbnRzLAkJCVwKKwkJCS5udW1fcGFyZW50cyA9IEFSUkFZX1NJWkUoX3BhcmVu dHMpLAlcCisJCQkucmF0ZSA9IF9yYXRlLAkJCQlcCisJCQkucmVnID0gX3JlZywJCQkJXAorCQkJ LmZsYWdzID0gX2ZsYWdzLAkJCVwKKwkJfSwJCQkJCQlcCisJfQorCisjZGVmaW5lIEZJWEVEX0RJ VihfbmFtZSwgX3BhcmVudCwgX2RpdikJCQkJXAorCXsJCQkJCQkJXAorCQkudHlwZSA9IFpYX0NM T0NLX0ZJWEVEX0RJViwJCQlcCisJCS5maXhlZF9kaXYgPSB7CQkJCQlcCisJCQkubmFtZSA9IF9u YW1lLAkJCQlcCisJCQkucGFyZW50ID0gX3BhcmVudCwJCQlcCisJCQkuZGl2ID0gX2RpdiwJCQkJ XAorCQl9LAkJCQkJCVwKKwl9CisKKyNkZWZpbmUgTVVYKF9uYW1lLCBfcGFyZW50cywgX3JlZywg X3NoaWZ0LCBfc2l6ZSkJCVwKKwl7CQkJCQkJCVwKKwkJLnR5cGUgPSBaWF9DTE9DS19NVVgsCQkJ CVwKKwkJLm11eCA9IHsJCQkJCVwKKwkJCS5uYW1lID0gX25hbWUsCQkJCVwKKwkJCS5wYXJlbnRz ID0gX3BhcmVudHMsCQkJXAorCQkJLm51bV9wYXJlbnRzID0gQVJSQVlfU0laRShfcGFyZW50cyks CVwKKwkJCS5yZWcgPSBfcmVnLAkJCQlcCisJCQkuc2hpZnQgPSBfc2hpZnQsCQkJXAorCQkJLnNp emUgPSBfc2l6ZSwJCQkJXAorCQl9LAkJCQkJCVwKKwl9CisKKyNkZWZpbmUgRElWKF9uYW1lLCBf cGFyZW50LCBfcmVnLCBfc2hpZnQsIF9zaXplKQkJXAorCXsJCQkJCQkJXAorCQkudHlwZSA9IFpY X0NMT0NLX0RJViwJCQkJXAorCQkuZGl2ID0gewkJCQkJXAorCQkJLm5hbWUgPSBfbmFtZSwJCQkJ XAorCQkJLnBhcmVudCA9IF9wYXJlbnQsCQkJXAorCQkJLnJlZyA9IF9yZWcsCQkJCVwKKwkJCS5z aGlmdCA9IF9zaGlmdCwJCQlcCisJCQkuc2l6ZSA9IF9zaXplLAkJCQlcCisJCX0sCQkJCQkJXAor CX0KKworI2RlZmluZSBHQVRFKF9uYW1lLCBfcGFyZW50LCBfcmVnLCBfc2hpZnQsIF9mbGFncykJ CVwKKwl7CQkJCQkJCVwKKwkJLnR5cGUgPSBaWF9DTE9DS19HQVRFLAkJCQlcCisJCS5nYXRlID0g ewkJCQkJXAorCQkJLm5hbWUgPSBfbmFtZSwJCQkJXAorCQkJLnBhcmVudCA9IF9wYXJlbnQsCQkJ XAorCQkJLnJlZyA9IF9yZWcsCQkJCVwKKwkJCS5mbGFncyA9IF9mbGFncywJCQlcCisJCQkuc2hp ZnQgPSBfc2hpZnQsCQkJXAorCQl9LAkJCQkJCVwKKwl9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg enhfY2xvY2sgengyOTc1MjB2M190b3BfY2xvY2tzW10gPSB7CisJLyoKKwkgKiBEZWZhdWx0IHNl dHRpbmc6IDB4NDgwNDBjMTEuIDYyNC8zMTIvMTU2LiBPbmx5IGEgc2luZ2xlIHBvc3NpYmxlIHBh cmVudC4gVGhpcyBpcyB0aGUKKwkgKiBQTEwgZm9yIHByZXR0eSBtdWNoIGV2ZXJ5dGhpbmcsIGlu Y2x1ZGluZyBDUFUsIFJBTSBhbmQgVVNCLgorCSAqCisJICogQ2hhbmdpbmcgdGhpcyBQTEwgbWFr ZXMgaXQgcG9zc2libGUgdG8gb3ZlcmNsb2NrIHRoZSBDUFUgb3IgZG8gbW9yZSBmaW5lIGdyYWlu ZWQKKwkgKiB1bmRlcmNsb2NraW5nIHRoYW4gdGhlIENQVSdzIG11eCBhbGxvd3MuIEl0IGRvZXMg cnVuIGludG8gdHdvIHByb2JsZW1zIHRob3VnaDogVGhlIFVTQgorCSAqIGRldmljZSB1c2VzIHRo aXMgUExMJ3Mgb3V0cHV0IGRpcmVjdGx5IGFuZCBpcyAqdmVyeSogc2Vuc2l0aXZlIHRvIGRpZmZl cmVuY2VzLiBEUkFNCisJICogaXMgYWxzbyBmZWQgYnkgdGhpcyBjbG9jayBhbmQgbmVlZHMgdG8g YmUgcmUtdHJhaW5lZCBvbiBsYXJnZXIgY2hhbmdlcywgd2hpY2ggbmVlZHMgdG8KKwkgKiBiZSBk b25lIGJ5IHRoZSBzdGFnZSAxIGJvb3QgbG9hZGVyLgorCSAqLworCVtaWF9DTEtfTVBMTF0gICAg ICAgICAgICAgID0gUExMKCJtcGxsIiwgY2xrX21haW4sIDAsIDB4OCwgMCksCisKKwkvKgorCSAq IFpURSdzIGNvZGUgY2FsbHMgdGhpcyBQTEwgInVwbGwiLiBUaGUgb25seSBwb3NzaWJsZSBjb25z dW1lcnMgSSBmb3VuZCBhcmUgY2xrLW91dDEsCisJICogd2hpY2ggb3V0cHV0cyB0aGlzIGNsb2Nr IG9uIEdQSU8gMTYgYW5kIEhTSUMuIEhTSUMgZG9lc24ndCBoYXZlIGFueXRoaW5nIGNvbm5lY3Rl ZCB0bworCSAqIGl0IG9uIHRoZSBkZXZpY2VzIEkgdGVzdGVkLiBUaGUgZGV2aWNlIHRoYXQgY29u c3VtZXMgY2xrLW91dDEgc2VlbXMgdG8gYmUgYW4gU1BJCisJICogY2FtZXJhLCB3aGljaCBJIGhh dmVuJ3Qgc2VlbiBpbiBhbnkgZGV2aWNlIHNvIGZhci4gWlRFIG1hbmlwdWxhdGVzIHRoaXMgUExM IGRpcmVjdGx5IG91dAorCSAqIG9mIHRoZSBjYW1lcmEgY29kZSwgc28gaXQgaXMgdW5saWtlbHkg dG8gaGF2ZSBhbm90aGVyIGNvbnN1bWVyLgorCSAqCisJICogTG9uZyBzdG9yeSBzaG9ydCwgc2h1 dCBpdCBvZmYuCisJICovCisJW1pYX0NMS19VUExMXSAgICAgICAgICAgICAgPSBQTEwoInVwbGwi LCBjbGtfbWFpbiwgMCwgMHgxMCwgMCksCisKKwkvKgorCSAqIERlZmF1bHQgdmFsdWUgMHg0ODM0 OTAyZC4gRmVlZHMgZHBsbC4gNDYuMDggTUh6LiBCaXQgMjUgY2FuIGJlIHNldCwgc28gdHdvIHBh cmVudHMgYXJlCisJICogcG9zc2libGUuIEl0IGxvb2tzIGxpa2UgYm90aCB2YWx1ZXMgc2VsZWN0 IHRoZSAyNiBNSHogb3NjaWxsYXRvciB0aG91Z2guCisJICoKKwkgKiBTaW5jZSBkcGxsJ3MgcHJl cGFyZSBtYXkgZGVwZW5kIG9uIHRoaXMgY2xvY2sgZ2VuZXJhdGluZyBhIHVzYWJsZSBzaWduYWws IGl0IG5lZWRzIHRvIGJlCisJICogZW5hYmxlZCB3aGVuIHByZXBhcmVkLgorCSAqCisJICogSXQg aXNuJ3QgbmFtZWQgYW55d2hlcmUgaW4gWlRFJ3MgY29kZSwgYnV0IGNwa28ua28gaGFzIHRoZSBz dHJpbmcgImRwbGwyIiBzb21ld2hlcmUgaW4KKwkgKiBpdHMgY2xvY2sgdGFibGVzLgorCSAqLwor CVtaWF9DTEtfRFBMTDJdICAgICAgICAgICAgID0gUExMKCJkcGxsMiIsIGNsa19tYWluLCAwLCAw eDEwMCwgQ0xLX1pYX1BMTF9QUkVQQVJFX0lTX0VOQUJMRSksCisJW1pYX0NMS19EUExMMl9EMl0g ICAgICAgICAgPSBGSVhFRF9ESVYoImRwbGwyLWQyIiwgUEFSRU5UX0lEKFpYX0NMS19EUExMMiks IDIpLAorCisJLyoKKwkgKiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIDQ5MS41MiBNSHogYW5kIG1l YXN1cmVtZW50IHdpdGggdGhlIExTUCBURE0gZGV2aWNlIHN1cHBvcnRzIHRoaXMuCisJICogVGhl IGRlZmF1bHQgdmFsdWUgaXMgMHg0ODBjMjAxMSwgYnV0IG5vdCBhbGwgYm9vdCBsb2FkZXJzIHNl dCBpdCB1cC4gVG8gZ2V0IHRvIDQ5MS41MgorCSAqIHdpdGggdGhlc2Ugc2V0dGluZ3MgaXQgbmVl ZHMgYSAyMy4wNCBNSHogcmVmZXJlbmNlIGNsb2NrLCB3aGljaCBtYXRjaGVzIGRwbGwyLWQyLiBJ ZgorCSAqIGRwbGwyIGlzIGRpc2FibGVkLCBkcGxsIGxvc2VzIGl0cyBsb2NrLiBXZSBzZXQgdGhl IGZyZXF1ZW5jeSBvbiB0aGlzIFBMTCBpZiB3ZSBmaW5kIGl0IGlzCisJICogbm90IHByZXBhcmVk IGJ5IHRoZSBib290IGxvYWRlci4KKwkgKgorCSAqIFRoZSBwcm9wcmlldGFyeSBMVEUgZHJpdmVy IGFuZC9vciBycHJvYyBwcmVwYXJlIGFuZCB1bnByZXBhcmUgaXQuIFRETSBhbmQgSTJTIGNhbiB1 c2UgaXQuCisJICoKKwkgKiBJdCBhY2NlcHRzIHBhcmVudCB2YWx1ZXMgMCwgMSwgMiBhbmQgMy4g UGFyZW50IDAgaXMgZHBsbDItZDIuIFRoZSBvdGhlcnMgbG9vayBsaWtlCisJICogb3NjMjZtLiBX aXRoIGEgcGFyZW50ICE9IDAgZHBsbCBuZXZlciBsb3NlcyBpdHMgbG9jayBldmVuIHdoZW4gYWxs IG90aGVyIFBMTHMgYXJlIG9mZgorCSAqIGFuZCB0aGUgVERNIGNvdW50ZXIgcmVnaXN0ZXIgaW5j cmVhc2VzIGF0IGEgcmF0ZSBjb25zaXN0ZW50IHdpdGggYSAyNi4wLzIzLjA0IGNsb2NrCisJICog aW5jcmVhc2UuCisJICovCisJW1pYX0NMS19EUExMXSAgICAgICAgICAgICAgPSBQTEwoImRwbGwi LCBkcGxsX3BhcmVudHMsIDQ5MTUyMDAwMCwgMHgxOCwgMCksCisKKwkvKgorCSAqICJnIiBpcyBl aXRoZXIgZm9yICJnZW5lcmFsIiBvciAiZ2lnYWhlcnR6Ii4gVGhlIFZDTyBydW5zIGF0IDEgR0h6 LiBPdXRwdXQgY2xvY2tzIGFyZSAyMDAsCisJICogMTAwLCA1MCwgMjUsIC4uLiBNSHouIEl0IGlz IHVzZWQgb3B0aW9uYWxseSBieSBTRElPIGFuZCBRU1BJIGFuZCBjYW4gZHJpdmUgYSBHUElPIGNs b2NrCisJICogb3V0cHV0IGZvciBSTUlJLCBzbyBpdCBkb2Vzbid0IHNlZW0gdmVyeSBnZW5lcmFs LgorCSAqLworCVtaWF9DTEtfR1BMTF0gICAgICAgICAgICAgID0gUExMKCJncGxsIiwgY2xrX21h aW4sIDAsIDB4MTEwLCAwKSwKKworCS8qIG9zYzI2bSBkaXZpc2lvbiBmb3IgY2xrX291dFggKi8K KwlbWlhfQ0xLX09TQzI2TV9EMl0gICAgICAgICA9IEZJWEVEX0RJVigib3NjMjZtLWQyIiwgY2xr X21haW5bMF0sIDIpLAorCisJLyogUHJlLTB4MTQwIGRpc3RyaWJ1dGlvbiBmaXhlZCBkaXZzICov CisJW1pYX0NMS19UT1BfTVBMTF9EMl9QUkVHQVRFXSAgPSBGSVhFRF9ESVYoIm1wbGwtZDIiLCBQ QVJFTlRfSUQoWlhfQ0xLX01QTEwpLCAyKSwKKwlbWlhfQ0xLX1RPUF9NUExMX0Q1X1BSRUdBVEVd ICA9IEZJWEVEX0RJVigibXBsbC1kNSIsIFBBUkVOVF9JRChaWF9DTEtfTVBMTCksIDUpLAorCVta WF9DTEtfVE9QX01QTExfRDZfUFJFR0FURV0gID0gRklYRURfRElWKCJtcGxsLWQ2IiwgUEFSRU5U X0lEKFpYX0NMS19NUExMKSwgNiksCisJW1pYX0NMS19UT1BfTVBMTF9EOF9QUkVHQVRFXSAgPSBG SVhFRF9ESVYoIm1wbGwtZDgiLCBQQVJFTlRfSUQoWlhfQ0xLX01QTEwpLCA4KSwKKwlbWlhfQ0xL X1RPUF9VUExMX0QxMl9QUkVHQVRFXSA9IEZJWEVEX0RJVigidXBsbC1kMTIiLCBQQVJFTlRfSUQo WlhfQ0xLX1VQTEwpLCAxMiksCisJW1pYX0NMS19UT1BfR1BMTF9EMl9QUkVHQVRFXSAgPSBGSVhF RF9ESVYoImdwbGwtZDIiLCBQQVJFTlRfSUQoWlhfQ0xLX0dQTEwpLCAyKSwKKwlbWlhfQ0xLX1RP UF9HUExMX0Q0X1BSRUdBVEVdICA9IEZJWEVEX0RJVigiZ3BsbC1kNCIsIFBBUkVOVF9JRChaWF9D TEtfR1BMTCksIDQpLAorCisJLyoKKwkgKiB0b3Bjcm0gZGlzdHJpYnV0aW9uIGdhdGVzLiBUaGVz ZSBhcmUgY29tcGxpY2F0ZWQsIGJ1dCBzaGVkIGEgbG90IG9mIGxpZ2h0IG9uIHRoZSBib2FyZCdz CisJICogY2xvY2sgZGlzdHJpYnV0aW9uLgorCSAqCisJICogU2V0dGFibGUgbWFzazogMHgwMTcz MzNGRi4gR2VuZXJhbGx5IG9uZSBuaWJibGUgcGVyIFBMTCwgZXhjZXB0IGZvciBNUExMIHRoYXQg aGFzIG1vcmUuCisJICogT25lIGZvciBvc2MyNm0gd29yayBjbG9jay4gcGNsayBhbmQgb3NjMzJr IGFyZSBub3QgZ2F0ZWQgZ2xvYmFsbHkgaGVyZSBvciBhbnl3aGVyZSBlbHNlCisJICogYXMgZmFy IGFzIEkgY2FuIHNlZS4KKwkgKgorCSAqIElmIHlvdSB3YW50IHRvIHRlc3QgeW91ciB1bmRlcnN0 YW5kaW5nIG9mIHRoaXMgYm9hcmQsIHRyeSB0byBtYW51YWxseSBjb25maWd1cmUgaXQgaW50byBh CisJICogc2V0dXAgd2hlcmUgYml0IDI0IG9yIGJpdCA5IGFyZSBvZmYgd2l0aG91dCBjcmFzaGlu ZyBpdC4KKwkgKi8KKworCS8qIEJpdCAwOiBObyBrbm93biBjb25zdW1lciAqLworCS8qIEJpdCAx OiBNMCdzIDc4IE1IeiBzZWxlY3Rpb24sIGJ1dCBzb21laG93IGFsc28gaW52b2x2ZWQgaW4gVVNC IHRvbyAqLworCVtaWF9DTEtfVE9QX01QTExfRDJdICAgICAgID0gR0FURSgidG9wLW1wbGwtZDIi LCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9NUExMX0QyX1BSRUdBVEUpLAorCQkJCQkgIDB4MTQwLCAx LCAwKSwKKwkvKiBCaXQgMjogTm8ga25vd24gY29uc3VtZXIsIG5hbWVkICJtcGxsXzQ4bV9jbGsi IGluIFpURSdzIGNwa28ua28gYmxvYiAqLworCVtaWF9DTEtfVE9QX01QTExfRDhdICAgICAgID0g R0FURSgidG9wLW1wbGwtZDgiLCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9NUExMX0Q4X1BSRUdBVEUp LAorCQkJCQkgIDB4MTQwLCAzLCAwKSwKKwlbWlhfQ0xLX1RPUF9NUExMX0Q2XSAgICAgICA9IEdB VEUoInRvcC1tcGxsLWQ2IiwgUEFSRU5UX0lEKFpYX0NMS19UT1BfTVBMTF9ENl9QUkVHQVRFKSwK KwkJCQkJICAweDE0MCwgNCwgMCksCisJLyogQml0IDU6IE5vIGtub3duIGNvbnN1bWVyLiAibXBs bF8xNTZtX2NsayIgaW4gY3Brby5rbyAqLworCVtaWF9DTEtfVE9NQVRSSVhfTVBMTF9ENV0gID0g R0FURSgibWF0cml4LW1wbGwtZDUiLCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9NUExMX0Q1X1BSRUdB VEUpLAorCQkJCQkgIDB4MTQwLCA2LCBaWDI5NzUyMFYzX0FYSV9DQU5ESURBVEUpLAorCS8qIEJp dCA3OiBObyBrbm93biBjb25zdW1lciAqLworCS8qCisJICogQml0IDg6IEhhcyBhIGNvbnN1bWVy LCBMVEUgZGVwZW5kcyBvbiBpdC4gQnV0IHVua25vd24gd2hhdCBhbmQgaG93LiBNb3N0IGxpa2Vs eSBvbmUgb2YKKwkgKiB0aGUgZ3NtIGNsb2NrcyBpbiB0b3Bjcm0rMHg2NCBsaXN0ZWQgaW4gY3Br by5rby4KKwkgKi8KKwkvKgorCSAqIEJpdCA5OiBCaWcgTVBMTCBwcm92aWRlciBmb3IgTWF0cml4 LiBJdCBpcyBhbiBBWEkgdm90aW5nIGNhbmRpZGF0ZSwgYnV0IGl0IGlzIHByb3RlY3RlZAorCSAq IGluIE1hdHJpeCdzIDB4MTE4IGdhdGVzLgorCSAqLworCVtaWF9DTEtfVE9NQVRSSVhfTVBMTF0g ICAgID0gR0FURSgibWF0cml4LW1wbGwiLCBQQVJFTlRfSUQoWlhfQ0xLX01QTEwpLCAweDE0MCwg OSwgMCksCisJLyogQml0IDEwOiBBbHdheXMgMCAqLworCS8qIEJpdCAxMTogQWx3YXlzIDAgKi8K KworCS8qIEJpdCAxMjogTm8ga25vd24gY29uc3VtZXIuIEV4aXN0aW5nIHBhdHRlcm5zIGluZGlj YXRlIGEgZHBsbCBjb25zdW1lciBpbiB0b3AgaXRzZWxmICovCisJW1pYX0NMS19UT01BVFJJWF9E UExMXSAgICAgPSBHQVRFKCJtYXRyaXgtZHBsbCIsIFBBUkVOVF9JRChaWF9DTEtfRFBMTCksIDB4 MTQwLCAxMywgMCksCisJLyogQml0IDE0OiBBbHdheXMgMCAqLworCS8qIEJpdCAxNTogQWx3YXlz IDAgKi8KKworCVtaWF9DTEtfVE9QX1VQTExfRDEyXSAgICAgID0gR0FURSgidG9wLXVwbGwtZDEy IiwgUEFSRU5UX0lEKFpYX0NMS19UT1BfVVBMTF9EMTJfUFJFR0FURSksCisJCQkJCSAgMHgxNDAs IDE2LCAwKSwKKwlbWlhfQ0xLX1RPUF9VUExMXSAgICAgICAgICA9IEdBVEUoInRvcC11cGxsIiwg UEFSRU5UX0lEKFpYX0NMS19VUExMKSwgMHgxNDAsIDE3LCAwKSwKKwkvKiBCaXQgMTg6IEFsd2F5 cyAwICovCisJLyogQml0IDE5OiBBbHdheXMgMCAqLworCisJW1pYX0NMS19UT1BfR1BMTF9ENF0g ICAgICAgPSBHQVRFKCJ0b3AtZ3BsbC1kNCIsIFBBUkVOVF9JRChaWF9DTEtfVE9QX0dQTExfRDRf UFJFR0FURSksCisJCQkJCSAgMHgxNDAsIDIwLCAwKSwKKwlbWlhfQ0xLX1RPTUFUUklYX0dQTExf RDJdICA9IEdBVEUoIm1hdHJpeC1ncGxsLWQyIiwgUEFSRU5UX0lEKFpYX0NMS19UT1BfR1BMTF9E Ml9QUkVHQVRFKSwKKwkJCQkJICAweDE0MCwgMjEsIDApLAorCVtaWF9DTEtfVE9NQVRSSVhfR1BM TF0gICAgID0gR0FURSgibWF0cml4LWdwbGwiLCBQQVJFTlRfSUQoWlhfQ0xLX0dQTEwpLCAweDE0 MCwgMjIsIDApLAorCS8qIEJpdCAyMzogQWx3YXlzIDAgKi8KKworCS8qCisJICogQml0IDI0IGNv dmVycyBhbGwgMjYgTUh6IG9uIG1hdHJpeCwgYnV0IG5vdCBwY2xrcy4gT3NjMjZtIGNvbnN1bWVy cyBvbiB0b3Bjcm0gZG8gbm90CisJICogdXNlIHRoaXMsIHRoZXkgZ2V0IHRoZSB1bmdhdGVkIG9z YzI2bS4gSXQgaXMgYW4gQVhJIHZvdGluZyBjYW5kaWRhdGUsIGJ1dCBkb2VzIG5vdAorCSAqIG5l ZWQgcHJvdGVjdGlvbiBiZWNhdXNlIGl0IGlzIHRoZSBzbG93ZXN0IHNwZWVkLiBJdCB3aWxsIG9u bHkgYmUgdXNlZCBpZiBldmVyeSBwcm9jZXNzb3IsCisJICogaW5jbHVkaW5nIHVzLCB2b3RlcyBm b3IgaXQuCisJICovCisJW1pYX0NMS19UT01BVFJJWF9PU0MyNk1dICAgPSBHQVRFKCJtYXRyaXgt b3NjMjZtIiwgY2xrX21haW5bMF0sIDB4MTQwLCAyNCwgMCksCisKKwkvKgorCSAqIFBvc3QtMTQw IGRpdmlzaW9ucy4gVGhleSBlbnRlciB0aHJvdWdoIHRoZSBzYW1lIGJpdCBhbmQgY2FuIGJlIHNl bGVjdGVkIGJ5IGRpZmZlcmVudCBtdXgKKwkgKiB2YWx1ZXMgb2YgdGhlaXIgY29uc3VtZXJzIG9y IGdldCBwaXBlZCB0byBtdWx0aXBsZSBjb25zdW1lcnMgd2l0aCBkaWZmZXJlbnQgZG9jdW1lbnRl ZAorCSAqIHJhdGVzIC0gaW4gcGFydGljdWxhciwgVVNCIHdjbGsgKDI0IE1IeiBhY2NvcmRpbmcg dG8gWlRFKSBzaGFyZXMgYml0IDEgd2l0aCBNMCdzIDc4IE1Iei4KKwkgKi8KKwlbWlhfQ0xLX1RP UF9NUExMX0QyX0Q0XSAgICA9IEZJWEVEX0RJVigidG9wLW1wbGwtZDItZDQiLCBQQVJFTlRfSUQo WlhfQ0xLX1RPUF9NUExMX0QyKSwgNCksCisJW1pYX0NMS19UT1BfTVBMTF9EMl9EMTNdICAgPSBG SVhFRF9ESVYoInRvcC1tcGxsLWQyLWQxMyIsIFBBUkVOVF9JRChaWF9DTEtfVE9QX01QTExfRDIp LAorCQkJCQkgICAgICAgMTMpLAorCVtaWF9DTEtfVE9QX1VQTExfRDEyX0QyXSAgID0gRklYRURf RElWKCJ0b3AtdXBsbC1kMTItZDIiLCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9VUExMX0QxMiksCisJ CQkJCSAgICAgICAyKSwKKwlbWlhfQ0xLX1RPUF9HUExMX0Q0X0QyXSAgICA9IEZJWEVEX0RJVigi dG9wLWdwbGwtZDQtZDIiLCBQQVJFTlRfSUQoWlhfQ0xLX1RPUF9HUExMX0Q0KSwgMiksCisKKwkv KiBEZXZpY2Utc3BlY2lmaWMgTXV4ZXMgKi8KKwlbWlhfQ0xLX00wX01VWF0gICAgICAgICAgICA9 IE1VWCgibTAtbXV4IiwgICAgICAgIG0wX3NlbCwgICAgICAgICAgICAweDM4LCAgMCwgMiksCisJ W1pYX0NMS19BSEJfTVVYXSAgICAgICAgICAgPSBNVVgoImFoYi1tdXgiLCAgICAgICBhaGJfc2Vs LCAgICAgICAgICAgMHgzYywgIDQsIDIpLAorCVtaWF9DTEtfVElNRVJfVDA4X01VWF0gICAgID0g TVVYKCJ0aW1lci10MDgtbXV4IiwgdGltZXJfdG9wX3NlbCwgICAgIDB4NDAsICAxLCAxKSwKKwlb WlhfQ0xLX1RJTUVSX1QwOV9NVVhdICAgICA9IE1VWCgidGltZXItdDA5LW11eCIsIHRpbWVyX3Rv cF9zZWwsICAgICAweDQwLCAgMCwgMSksCisJW1pYX0NMS19USU1FUl9UMTJfTVVYXSAgICAgPSBN VVgoInRpbWVyLXQxMi1tdXgiLCB0aW1lcl90b3Bfc2VsLCAgICAgMHgzYywgIDAsIDEpLAorCVta WF9DTEtfVElNRVJfVDEzX01VWF0gICAgID0gTVVYKCJ0aW1lci10MTMtbXV4IiwgdGltZXJfdG9w X3NlbCwgICAgIDB4NDQsICAwLCAxKSwKKwlbWlhfQ0xLX1RJTUVSX1QxNF9NVVhdICAgICA9IE1V WCgidGltZXItdDE0LW11eCIsIHRpbWVyX3RvcF9zZWwsICAgICAweDQ0LCAgMSwgMSksCisJW1pY X0NMS19USU1FUl9UMTVfTVVYXSAgICAgPSBNVVgoInRpbWVyLXQxNS1tdXgiLCB0aW1lcl90b3Bf c2VsLCAgICAgMHgzYywgIDMsIDEpLAorCVtaWF9DTEtfVElNRVJfVDE2X01VWF0gICAgID0gTVVY KCJ0aW1lci10MTYtbXV4IiwgdGltZXJfdG9wX3NlbCwgICAgIDB4NDQsICAyLCAxKSwKKwlbWlhf Q0xLX1RJTUVSX1QxN19NVVhdICAgICA9IE1VWCgidGltZXItdDE3LW11eCIsIHRpbWVyX3RvcF9z ZWwsICAgIDB4MTIwLCAgMCwgMSksCisJW1pYX0NMS19XRFRfVDE4X01VWF0gICAgICAgPSBNVVgo IndkdC10MTgtbXV4IiwgICB0aW1lcl90b3Bfc2VsLCAgICAgMHgzYywgIDYsIDEpLAorCVtaWF9D TEtfSTJDMF9NVVhdICAgICAgICAgID0gTVVYKCJpMmMwLW11eCIsICAgICAgdWFydF90b3Bfc2Vs LCAgICAgIDB4M2MsICAxLCAxKSwKKwlbWlhfQ0xLX1VBUlQwX01VWF0gICAgICAgICA9IE1VWCgi dWFydDAtbXV4IiwgICAgIHVhcnRfdG9wX3NlbCwgICAgICAweDQwLCAgMiwgMSksCisJW1pYX0NM S19PVVQwX01VWF0gICAgICAgICAgPSBNVVgoIm91dDAtbXV4IiwgICAgICBvdXQwX3NlbCwgICAg ICAgICAgMHgzNCwgIDUsIDEpLAorCVtaWF9DTEtfT1VUMV9NVVhdICAgICAgICAgID0gTVVYKCJv dXQxLW11eCIsICAgICAgb3V0MV9zZWwsICAgICAgICAgIDB4MzQsICA2LCAyKSwKKwlbWlhfQ0xL X09VVDJfTVVYXSAgICAgICAgICA9IE1VWCgib3V0Mi1tdXgiLCAgICAgIG91dDJfc2VsLCAgICAg ICAgICAweDM0LCAgOCwgMSksCisJW1pYX0NMS19STUlJUEhZX01VWF0gICAgICAgPSBNVVgoInJt aWlwaHktbXV4IiwgICBybWlpX3NlbCwgICAgICAgICAweDExYywgIDAsIDIpLAorCisJLyogRGV2 aWNlLXNwZWNpZmljIGRpdmlkZXJzICovCisJW1pYX0NMS19USU1FUl9UMDhfRElWXSAgICAgPSBE SVYoInRpbWVyLXQwOC1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QwOF9NVVgpLAorCQkJ CQkgMHg0YywgOCwgNCksCisJW1pYX0NMS19USU1FUl9UMDlfRElWXSAgICAgPSBESVYoInRpbWVy LXQwOS1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QwOV9NVVgpLAorCQkJCQkgMHg0Yywg MCwgNCksCisJW1pYX0NMS19USU1FUl9UMTJfRElWXSAgICAgPSBESVYoInRpbWVyLXQxMi1kaXYi LCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxMl9NVVgpLAorCQkJCQkgMHg0OCwgMCwgNCksCisJ W1pYX0NMS19USU1FUl9UMTNfRElWXSAgICAgPSBESVYoInRpbWVyLXQxMy1kaXYiLCBQQVJFTlRf SUQoWlhfQ0xLX1RJTUVSX1QxM19NVVgpLAorCQkJCQkgMHg1MCwgMCwgNCksCisJW1pYX0NMS19U SU1FUl9UMTRfRElWXSAgICAgPSBESVYoInRpbWVyLXQxNC1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xL X1RJTUVSX1QxNF9NVVgpLAorCQkJCQkgMHg1MCwgNCwgNCksCisJW1pYX0NMS19USU1FUl9UMTVf RElWXSAgICAgPSBESVYoInRpbWVyLXQxNS1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1Qx NV9NVVgpLAorCQkJCQkgMHg0OCwgNCwgNCksCisJW1pYX0NMS19USU1FUl9UMTZfRElWXSAgICAg PSBESVYoInRpbWVyLXQxNi1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxNl9NVVgpLAor CQkJCQkgMHg1MCwgOCwgNCksCisJW1pYX0NMS19USU1FUl9UMTdfRElWXSAgICAgPSBESVYoInRp bWVyLXQxNy1kaXYiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxN19NVVgpLAorCQkJCQkgMHgx MjQsIDAsIDQpLAorCVtaWF9DTEtfV0RUX1QxOF9ESVZdICAgICAgID0gRElWKCJ3ZHQtdDE4LWRp diIsIFBBUkVOVF9JRChaWF9DTEtfV0RUX1QxOF9NVVgpLAorCQkJCQkgMHg0OCwgOCwgNCksCisJ W1pYX0NMS19VU0lNMV9ESVZdICAgICAgICAgPSBESVYoInVzaW0xLWRpdiIsIGNsa191bmtub3du LAorCQkJCQkgMHg0OCwgMTIsIDEpLAorCisJLyogRGV2aWNlIHNwZWNpZmljIGdhdGVzICovCisK KwkvKgorCSAqIEFIQiBjbG9jayBnYXRlczogRGlzYWJsaW5nIHRoZXNlIGN1dHMgb2ZmIHRoZSBB NTMgZnJvbSByZWdpc3RlciBhY2Nlc3MgaW50byAweDEzMDAwMC8KKwkgKiAweDE0MDAwMCwgaW5j bHVkaW5nIHRoZSB0b3Bjcm0gcmVnaW9uLCBzbyBpdCBjYW4ndCBiZSByZS1lbmFibGVkLiBNYXJr IHRoZW0gY3JpdGljYWwgZm9yCisJICogdGhhdCByZWFzb24uCisJICoKKwkgKiBHYXRpbmcgdGhp cyBvZmYgZG9lcyBub3Qgc3RvcCB0aGUgTTAgcnByb2MsIG5vciBkb2VzIGl0IHN0b3AgTTAgZnJv bSBhY2Nlc3NpbmcgdG9wY3JtLiBJdAorCSAqIGRvZXMgaG93ZXZlciBnYXRlIG9mZiBNMCBmcm9t IHRoZSBBWEkgaW50ZXJjb25uZWN0LCBzbyBpdCBjYW4ndCByZWFkIFJBTSwgTWF0cml4LCBldGMu IFNvCisJICogdGhlc2UgYml0cyBoZXJlIG1lcmVseSBnYXRlIHRoZSBidXMsIG5vdCB0aGUgYWN0 dWFsIGRldmljZXMuCisJICovCisJW1pYX0NMS19BSEJfUENMS10gICAgICAgICAgPSBHQVRFKCJh aGItcGNsayIsIFBBUkVOVF9JRChaWF9DTEtfQUhCX01VWCksIDB4NTQsIDEyLAorCQkJCQkgIENM S19JU19DUklUSUNBTCksCisJW1pYX0NMS19BSEJfV0NMS10gICAgICAgICAgPSBHQVRFKCJhaGIt d2NsayIsIFBBUkVOVF9JRChaWF9DTEtfTTBfTVVYKSwgMHg1NCwgMTMsCisJCQkJCSAgQ0xLX0lT X0NSSVRJQ0FMKSwKKworCS8qIFNSQU0xIGFuZCAyIGNsb2Nrcy4gTGVhdmUgdGhlbSBvbiBmb3Ig bm93LCBhcyB0dXJuaW5nIHRoZW0gb2ZmIGNhcmVsZXNzbHkgaGFuZ3MgdGhlIE0wICovCisJW1pY X0NMS19TUkFNMV9QQ0xLXSAgICAgICAgPSBHQVRFKCJzcmFtMS1wY2xrIiwgY2xrX21haW5bMF0s IDB4NTQsIDE4LCBDTEtfSVNfQ1JJVElDQUwpLAorCVtaWF9DTEtfU1JBTTJfUENMS10gICAgICAg ID0gR0FURSgic3JhbTItcGNsayIsIGNsa19tYWluWzBdLCAweDU0LCAxNiwgQ0xLX0lTX0NSSVRJ Q0FMKSwKKworCS8qCisJICogUGlubXV4IChBT04sIFRPUCwgSU9DRkcgYnV0IG5vdCBQRENGRyku IENyaXRpY2FsIGFzIHdlbGwgdW50aWwgd2UgaGF2ZSBhIGRyaXZlciB0aGF0CisJICogY29uc3Vt ZXMgaXQuIEkgZG9uJ3QgdGhpbmsgd2UnbGwgcmVhbGlzdGljYWxseSBzaHV0IHRoaXMgb2ZmIGV2 ZXIuCisJICoKKwkgKiBTZXR0aW5nIGVpdGhlciBiaXQgMCBvciAxIGluIHJlZ2lzdGVyIDB4NTgg bWFrZXMgdGhlIGRldmljZSB3b3JrLgorCSAqLworCVtaWF9DTEtfUE1NX1dDTEtdICAgICAgICAg ID0gR0FURSgicG1tLXdjbGsiLCBjbGtfbWFpblswXSwgMHg1OCwgMCwgQ0xLX0lTX0NSSVRJQ0FM KSwKKwlbWlhfQ0xLX1BNTV9QQ0xLXSAgICAgICAgICA9IEdBVEUoInBtbS1wY2xrIiwgY2xrX21h aW5bMF0sIDB4NTgsIDEsIENMS19JU19DUklUSUNBTCksCisKKwkvKgorCSAqIFRpbWVycy4gV2Ug ZG9uJ3QgdXNlIGFueSBvZiB0aGVtLCBqdXN0IHNodXQgdGhlbSBvZmYuIFRoZSB0aW1lcnMgYXJl IG5hbWVkIGFuZCBzb3J0ZWQKKwkgKiBieSB0aGUgSU8gYWRkcmVzcyBvZiB0aGUgbWFpbiB0aW1l ciBjb250cm9scy4gU29tZSBvZiB0aGUgY29udHJvbHMgYXJlIGRvY3VtZW50ZWQgaW4KKwkgKiBa VEUncyBrZXJuZWwsIHRoZSBvdGhlcnMgSSBmb3VuZCBieSB0cmlhbCBhbmQgZXJyb3IuIFRpbWVy cyBpbiByZWdpc3RlciAweDU0IGhhdmUgdGhlCisJICogcGNsayBmaXJzdCwgdGhlIG90aGVycyBo YXZlIHRoZSB3Y2xrIGZpcnN0LgorCSAqCisJICogVGltZXIgVDE3IGlzIHVzZWQgYnkgdGhlIFpT UCBmaXJtd2FyZS4gVGhlIHJwcm9jIGRyaXZlciB3aWxsIGVuYWJsZSBpdCBhcyBuZWVkZWQuCisJ ICovCisJW1pYX0NMS19USU1FUl9UMDhfV0NMS10gICAgPSBHQVRFKCJ0aW1lci10MDgtd2NsayIs IFBBUkVOVF9JRChaWF9DTEtfVElNRVJfVDA4X0RJViksCisJCQkJCSAgMHg1YywgOCwgMCksCisJ W1pYX0NMS19USU1FUl9UMDhfUENMS10gICAgPSBHQVRFKCJ0aW1lci10MDgtcGNsayIsIGNsa19t YWluWzBdLCAweDVjLCA5LCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QwOV9XQ0xLXSAgICA9IEdBVEUo InRpbWVyLXQwOS13Y2xrIiwgUEFSRU5UX0lEKFpYX0NMS19USU1FUl9UMDlfRElWKSwKKwkJCQkJ ICAweDVjLCA0LCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QwOV9QQ0xLXSAgICA9IEdBVEUoInRpbWVy LXQwOS1wY2xrIiwgY2xrX21haW5bMF0sIDB4NWMsIDUsIDApLAorCVtaWF9DTEtfVElNRVJfVDEy X1dDTEtdICAgID0gR0FURSgidGltZXItdDEyLXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVS X1QxMl9ESVYpLAorCQkJCQkgIDB4NTQsIDUsIDApLAorCVtaWF9DTEtfVElNRVJfVDEyX1BDTEtd ICAgID0gR0FURSgidGltZXItdDEyLXBjbGsiLCBjbGtfbWFpblswXSwgMHg1NCwgNCwgMCksCisJ W1pYX0NMS19USU1FUl9UMTNfV0NMS10gICAgPSBHQVRFKCJ0aW1lci10MTMtd2NsayIsIFBBUkVO VF9JRChaWF9DTEtfVElNRVJfVDEzX0RJViksCisJCQkJCSAgMHg2MCwgMCwgMCksCisJW1pYX0NM S19USU1FUl9UMTNfUENMS10gICAgPSBHQVRFKCJ0aW1lci10MTMtcGNsayIsIGNsa19tYWluWzBd LCAweDYwLCAxLCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QxNF9XQ0xLXSAgICA9IEdBVEUoInRpbWVy LXQxNC13Y2xrIiwgUEFSRU5UX0lEKFpYX0NMS19USU1FUl9UMTRfRElWKSwKKwkJCQkJICAweDYw LCA0LCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QxNF9QQ0xLXSAgICA9IEdBVEUoInRpbWVyLXQxNC1w Y2xrIiwgY2xrX21haW5bMF0sIDB4NjAsIDUsIDApLAorCVtaWF9DTEtfVElNRVJfVDE1X1dDTEtd ICAgID0gR0FURSgidGltZXItdDE1LXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxNV9E SVYpLAorCQkJCQkgIDB4NTQsIDIxLCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QxNV9QQ0xLXSAgICA9 IEdBVEUoInRpbWVyLXQxNS1wY2xrIiwgY2xrX21haW5bMF0sIDB4NTQsIDIwLCAwKSwKKwlbWlhf Q0xLX1RJTUVSX1QxNl9XQ0xLXSAgICA9IEdBVEUoInRpbWVyLXQxNi13Y2xrIiwgUEFSRU5UX0lE KFpYX0NMS19USU1FUl9UMTZfRElWKSwKKwkJCQkJICAweDYwLCA4LCAwKSwKKwlbWlhfQ0xLX1RJ TUVSX1QxNl9QQ0xLXSAgICA9IEdBVEUoInRpbWVyLXQxNi1wY2xrIiwgY2xrX21haW5bMF0sIDB4 NjAsIDksIDApLAorCVtaWF9DTEtfVElNRVJfVDE3X1dDTEtdICAgID0gR0FURSgidGltZXItdDE3 LXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX1RJTUVSX1QxN19ESVYpLAorCQkJCQkgIDB4MTI4LCAw LCAwKSwKKwlbWlhfQ0xLX1RJTUVSX1QxN19QQ0xLXSAgICA9IEdBVEUoInRpbWVyLXQxNy1wY2xr IiwgY2xrX21haW5bMF0sIDB4MTI4LCAxLCAwKSwKKworCS8qCisJICogVGhpcyB3YXRjaGRvZyBp cyBzZXQgdXAgYnkgWlRFJ3MgYm9vdGxvYWRlciBhbmQgaW4gWlRFJ3MgT1MgdGhlIG0wIGZpcm13 YXJlIHdpbGwgZmVlZCB0aGUKKwkgKiBkb2cuIFRoZSBtMCBmaXJtd2FyZSBpbiB0dXJuIHdhbnRz IHRvIGJlIGZlZCBpbiBpdHMgb3duIHdheS4gU2luY2Ugd2Ugbm9ybWFsbHkgZG9uJ3QgcnVuCisJ ICogYW55IG0wIGZpcm13YXJlIHdlIHNodXQgaXQgb2ZmIGJ5IGRlZmF1bHQgYW5kIGV4cG9zZSBp dCB0byB1c2Vyc3BhY2UgdmlhIHRoZSB3YXRjaGRvZworCSAqIGRyaXZlci4KKwkgKi8KKwlbWlhf Q0xLX1dEVF9UMThfV0NMS10gICAgID0gR0FURSgid2R0LXQxOC13Y2xrIiwgUEFSRU5UX0lEKFpY X0NMS19XRFRfVDE4X0RJViksCisJCQkJCSAweDU0LCAyNSwgMCksCisJW1pYX0NMS19XRFRfVDE4 X1BDTEtdICAgICA9IEdBVEUoIndkdC10MTgtcGNsayIsIGNsa19tYWluWzBdLCAweDU0LCAyNCwg MCksCisKKwlbWlhfQ0xLX0kyQzBfV0NMS10gICAgICAgID0gR0FURSgiaTJjMC13Y2xrIiwgUEFS RU5UX0lEKFpYX0NMS19JMkMwX01VWCksIDB4NTQsIDksIDApLAorCVtaWF9DTEtfSTJDMF9QQ0xL XSAgICAgICAgPSBHQVRFKCJpMmMwLXBjbGsiLCBjbGtfbWFpblswXSwgMHg1NCwgOCwgMCksCisJ W1pYX0NMS19VQVJUMF9XQ0xLXSAgICAgICA9IEdBVEUoInVhcnQwLXdjbGsiLCBQQVJFTlRfSUQo WlhfQ0xLX1VBUlQwX01VWCksIDB4NWMsIDEyLCAwKSwKKwlbWlhfQ0xLX1VBUlQwX1BDTEtdICAg ICAgID0gR0FURSgidWFydDAtcGNsayIsIGNsa19tYWluWzBdLCAweDVjLCAxMywgMCksCisKKwkv KgorCSAqIFpURSBzYXlzIHRoZSBVU0IgaW5wdXQgaXMgYSAyNCBNSHogY2xvY2sgYmFzZWQgb24g bXBsbC4gVGVzdGluZyBzaG93cyB0aGF0IHVwbGwgaXMgbm90CisJICogaW52b2x2ZWQuIFRoZSBV U0IgcmVnaXN0ZXIgc3BhY2UgY2FuIGJlIGFjY2Vzc2VkIHdpdGggYWhiLXBjbGsgZ2F0ZWQsIGJ1 dCBub3Qgd2l0aAorCSAqIGFoYi13Y2xrIGdhdGVkLiBaVEUgYWxzbyBsaXN0cyBhaGItd2NsayBh cyBwYXJlbnQgZm9yIHRoZSBzZWNvbmQgY2xvY2suCisJICoKKwkgKiBUaGVyZSBkb2Vzbid0IHNl ZW0gdG8gYmUgYSBzZXBhcmF0ZSBQSFkgY2xvY2suIHVzYi13Y2xrIHN0b3BzIGNvbnRyb2xsZXIg cmVnaXN0ZXJzIGZyb20KKwkgKiB1cGRhdGluZywgYnV0IGRvZXNuJ3QgY2F1c2UgdGhlIFVTQiBk ZXZpY2UgdG8gZGlzY29ubmVjdCBsaWtlIGFzc2VydGluZyB0aGUgUEhZIHJlc2V0CisJICogZG9l cy4gQml0IDAgaW4gdGhpcyByZWdpc3RlciBjYW4ndCBiZSBzZXQsIHNvIG5vIFBIWSBjbG9jayBp cyBoaWRpbmcgdGhlcmUgZWl0aGVyLgorCSAqLworCVtaWF9DTEtfVVNCX1dDTEtdICAgICAgICAg PSBHQVRFKCJ1c2Itd2NsayIsIFBBUkVOVF9JRChaWF9DTEtfVE9QX01QTExfRDJfRDEzKSwgMHg2 YywgMywgMCksCisJW1pYX0NMS19VU0JfUENMS10gICAgICAgICA9IEdBVEUoInVzYi1wY2xrIiwg UEFSRU5UX0lEKFpYX0NMS19BSEJfV0NMSyksIDB4NmMsIDQsIDApLAorCS8qCisJICogVGhlIEhT SUMgaGFyZHdhcmUgaXMgbGlzdGVkIGluIFpURSdzIGNvZGUgd2l0aCBhIHBoeXNpY2FsIGFkZHJl c3Mgb2YgMHgwMTYwMDAwMC4gVW5saWtlCisJICogdGhlIFVTQiBjb250cm9sbGVyLCBpdCBkb2Vz IGNvbnN1bWUgdXBsbC4gWlRFIHNheXMgMjQwIE1IeiwgYnV0IDQ4MCBpcyB0aGUgdXN1YWwgb25l IGZvcgorCSAqIEhTSUMuCisJICovCisJW1pYX0NMS19IU0lDX1dDTEtdICAgICAgICA9IEdBVEUo ImhzaWMtd2NsayIsIFBBUkVOVF9JRChaWF9DTEtfVE9QX1VQTEwpLCAweDZjLCAxLCAwKSwKKwlb WlhfQ0xLX0hTSUNfUENMS10gICAgICAgID0gR0FURSgiaHNpYy1wY2xrIiwgUEFSRU5UX0lEKFpY X0NMS19BSEJfV0NMSyksIDB4NmMsIDIsIDApLAorCisJLyoKKwkgKiBIb3cgZG9lcyB0aGlzIFJU QyB3b3JrPyBJIGRvbid0IGtub3csIHRoZSBaVEUga2VybmVsIGRvZXMgbm90IHRhbGsgdG8gaXQu IFRoZSBhY3R1YWwgUlRDCisJICogaXMgb24gdGhlIEkyQy1jb25uZWN0ZWQgUE1JQy4KKwkgKi8K KwlbWlhfQ0xLX1JUQ19XQ0xLXSAgICAgICAgID0gR0FURSgicnRjLXdjbGsiLCBjbGtfdW5rbm93 biwgMHg1NCwgMSwgMCksCisJW1pYX0NMS19SVENfUENMS10gICAgICAgICA9IEdBVEUoInJ0Yy1w Y2xrIiwgY2xrX21haW5bMF0sIDB4NTQsIDAsIDApLAorCisJW1pYX0NMS19VU0lNMV9XQ0xLXSAg ICAgICA9IEdBVEUoInVzaW0xLXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX1VTSU0xX0RJViksIDB4 NTQsIDI5LCAwKSwKKwlbWlhfQ0xLX1VTSU0xX1BDTEtdICAgICAgID0gR0FURSgidXNpbTEtcGNs ayIsIGNsa19tYWluWzBdLCAweDU0LCAyOCwgMCksCisKKwkvKgorCSAqIExURTogZ2F0ZSBvbmx5 IGFzIGZhciBhcyBJIGNhbiBzZWUuIEkgbG9va2VkIGZvciByZXNldHMgYW5kIGRpZCBub3QgZmlu ZCBhbnkuIFRoZXJlIG1heQorCSAqIGJlIG11eC9kaXYsIGJ1dCB3aXRob3V0IHVuZGVyc3RhbmRp bmcgdGhlIGJlaGF2aW9yIG9mIHRoaXMgaGFyZHdhcmUgaXQgaXMgaW1wb3NzaWJsZSB0bworCSAq IHRlbGwuIFRoZXkgYXJlIHNvcnRlZCBieSBwaHlzaWNhbCBNTUlPIGFkZHJlc3Mgb2YgdGhlIGRl dmljZXMsIHdoaWNoIGhhcHBlbnMgdG8gYmUgdGhlCisJICogaW52ZXJzZSBvcmRlciBvZiB0aGUg Yml0cy4KKwkgKgorCSAqIEkgZG9uJ3Qga25vdyB3aGF0ICJMUE0iLCAiVEQiIGFuZCAiVyIgbWVh bi4gSSBjb3BpZWQgdGhlbSBmcm9tIFpURSdzIG5hbWVzLgorCSAqCisJICogTGlrZSBQTU0gaW4g dGhpcyByZWdpc3RlciwgZWl0aGVyIGJpdCBlbmFibGVzIHJlZ2lzdGVyIGFjY2Vzcywgd2hldGhl ciB0aGV5IGNvbnRyb2wgcGNsaworCSAqIG9yIHdjbGsgY2Fubm90IGJlIGRpc3Rpbmd1aXNoZWQu CisJICovCisJW1pYX0NMS19MUE1fR1NNX1dDTEtdICAgICA9IEdBVEUoImxwbS1nc20td2NsayIs IGNsa191bmtub3duLCAweDU4LCAxMCwgMCksCisJW1pYX0NMS19MUE1fR1NNX1BDTEtdICAgICA9 IEdBVEUoImxwbS1nc20tcGNsayIsIGNsa19tYWluWzBdLCAweDU4LCAxMSwgMCksCisJW1pYX0NM S19MUE1fTFRFX1dDTEtdICAgICA9IEdBVEUoImxwbS1sdGUtd2NsayIsIGNsa191bmtub3duLCAw eDU4LCA4LCAwKSwKKwlbWlhfQ0xLX0xQTV9MVEVfUENMS10gICAgID0gR0FURSgibHBtLWx0ZS1w Y2xrIiwgY2xrX21haW5bMF0sIDB4NTgsIDksIDApLAorCVtaWF9DTEtfTFBNX1REX1dDTEtdICAg ICAgPSBHQVRFKCJscG0tdGQtd2NsayIsIGNsa191bmtub3duLCAweDU4LCA2LCAwKSwKKwlbWlhf Q0xLX0xQTV9URF9QQ0xLXSAgICAgID0gR0FURSgibHBtLXRkLXBjbGsiLCBjbGtfbWFpblswXSwg MHg1OCwgNywgMCksCisJW1pYX0NMS19MUE1fV19XQ0xLXSAgICAgICA9IEdBVEUoImxwbS13LXdj bGsiLCBjbGtfdW5rbm93biwgMHg1OCwgNCwgMCksCisJW1pYX0NMS19MUE1fV19QQ0xLXSAgICAg ICA9IEdBVEUoImxwbS13LXBjbGsiLCBjbGtfbWFpblswXSwgMHg1OCwgNSwgMCksCisKKwlbWlhf Q0xLX09VVDBfV0NMS10gICAgICAgID0gR0FURSgib3V0MC13Y2xrIiwgUEFSRU5UX0lEKFpYX0NM S19PVVQwX01VWCksIDB4MzQsIDAsIDApLAorCVtaWF9DTEtfT1VUMV9XQ0xLXSAgICAgICAgPSBH QVRFKCJvdXQxLXdjbGsiLCBQQVJFTlRfSUQoWlhfQ0xLX09VVDFfTVVYKSwgMHg5MCwgMiwgMCks CisJW1pYX0NMS19PVVQyX1dDTEtdICAgICAgICA9IEdBVEUoIm91dDItd2NsayIsIFBBUkVOVF9J RChaWF9DTEtfT1VUMl9NVVgpLCAweDk0LCAyLCAwKSwKKwlbWlhfQ0xLX09VVDMyS19XQ0xLXSAg ICAgID0gR0FURSgib3V0MzJrLXdjbGsiLCBQQVJFTlRfRlcoIm9zYzMyayIpLCAweDM0LCAxLCAw KSwKKwlbWlhfQ0xLX1JNSUlQSFlfV0NMS10gICAgID0gR0FURSgicm1paXBoeS13Y2xrIiwgUEFS RU5UX0lEKFpYX0NMS19STUlJUEhZX01VWCksCisJCQkJCSAweDExYywgMiwgMCksCit9OworCitz dGF0aWMgdW5zaWduZWQgaW50IHp4Mjk3NTIwdjNfdG9wX2V4cG9ydHNbXSA9IHsKKwlbWlgyOTc1 MjBWM19NMF9XQ0xLXSA9CQlaWF9DTEtfTTBfTVVYLAorCVtaWDI5NzUyMFYzX1NSQU0xX1BDTEtd ID0JWlhfQ0xLX1NSQU0xX1BDTEssCisJW1pYMjk3NTIwVjNfU1JBTTJfUENMS10gPQlaWF9DTEtf U1JBTTJfUENMSywKKwlbWlgyOTc1MjBWM19VQVJUMF9XQ0xLXSA9CVpYX0NMS19VQVJUMF9XQ0xL LAorCVtaWDI5NzUyMFYzX1VBUlQwX1BDTEtdID0JWlhfQ0xLX1VBUlQwX1BDTEssCisJW1pYMjk3 NTIwVjNfSTJDMF9XQ0xLXSA9CVpYX0NMS19JMkMwX1dDTEssCisJW1pYMjk3NTIwVjNfSTJDMF9Q Q0xLXSA9CVpYX0NMS19JMkMwX1BDTEssCisJW1pYMjk3NTIwVjNfUlRDX1dDTEtdID0JCVpYX0NM S19SVENfV0NMSywKKwlbWlgyOTc1MjBWM19SVENfUENMS10gPQkJWlhfQ0xLX1JUQ19QQ0xLLAor CVtaWDI5NzUyMFYzX0xQTV9HU01fV0NMS10gPQlaWF9DTEtfTFBNX0dTTV9XQ0xLLAorCVtaWDI5 NzUyMFYzX0xQTV9HU01fUENMS10gPQlaWF9DTEtfTFBNX0dTTV9QQ0xLLAorCVtaWDI5NzUyMFYz X0xQTV9MVEVfV0NMS10gPQlaWF9DTEtfTFBNX0xURV9XQ0xLLAorCVtaWDI5NzUyMFYzX0xQTV9M VEVfUENMS10gPQlaWF9DTEtfTFBNX0xURV9QQ0xLLAorCVtaWDI5NzUyMFYzX0xQTV9URF9XQ0xL XSA9CVpYX0NMS19MUE1fVERfV0NMSywKKwlbWlgyOTc1MjBWM19MUE1fVERfUENMS10gPQlaWF9D TEtfTFBNX1REX1BDTEssCisJW1pYMjk3NTIwVjNfTFBNX1dfV0NMS10gPQlaWF9DTEtfTFBNX1df V0NMSywKKwlbWlgyOTc1MjBWM19MUE1fV19QQ0xLXSA9CVpYX0NMS19MUE1fV19QQ0xLLAorCVta WDI5NzUyMFYzX1RJTUVSX1QwOF9XQ0xLXSA9CVpYX0NMS19USU1FUl9UMDhfV0NMSywKKwlbWlgy OTc1MjBWM19USU1FUl9UMDhfUENMS10gPQlaWF9DTEtfVElNRVJfVDA4X1BDTEssCisJW1pYMjk3 NTIwVjNfVElNRVJfVDA5X1dDTEtdID0JWlhfQ0xLX1RJTUVSX1QwOV9XQ0xLLAorCVtaWDI5NzUy MFYzX1RJTUVSX1QwOV9QQ0xLXSA9CVpYX0NMS19USU1FUl9UMDlfUENMSywKKwlbWlgyOTc1MjBW M19NUExMXSA9CQlaWF9DTEtfVE9NQVRSSVhfTVBMTCwKKwlbWlgyOTc1MjBWM19NUExMX0Q1XSA9 CQlaWF9DTEtfVE9NQVRSSVhfTVBMTF9ENSwKKwlbWlgyOTc1MjBWM19EUExMXSA9CQlaWF9DTEtf VE9NQVRSSVhfRFBMTCwKKwlbWlgyOTc1MjBWM19HUExMXSA9CQlaWF9DTEtfVE9NQVRSSVhfR1BM TCwKKwlbWlgyOTc1MjBWM19HUExMX0QyXSA9CQlaWF9DTEtfVE9NQVRSSVhfR1BMTF9EMiwKKwlb WlgyOTc1MjBWM19HQVRFRF9PU0MyNk1dID0JWlhfQ0xLX1RPTUFUUklYX09TQzI2TSwKKwlbWlgy OTc1MjBWM19QTU1fV0NMS10gPQkJWlhfQ0xLX1BNTV9XQ0xLLAorCVtaWDI5NzUyMFYzX1BNTV9Q Q0xLXSA9CQlaWF9DTEtfUE1NX1BDTEssCisJW1pYMjk3NTIwVjNfT1VUMF9XQ0xLXSA9CVpYX0NM S19PVVQwX1dDTEssCisJW1pYMjk3NTIwVjNfT1VUMV9XQ0xLXSA9CVpYX0NMS19PVVQxX1dDTEss CisJW1pYMjk3NTIwVjNfT1VUMl9XQ0xLXSA9CVpYX0NMS19PVVQyX1dDTEssCisJW1pYMjk3NTIw VjNfT1VUMzJLX1dDTEtdID0JWlhfQ0xLX09VVDMyS19XQ0xLLAorCVtaWDI5NzUyMFYzX1JNSUlQ SFlfV0NMS10gPQlaWF9DTEtfUk1JSVBIWV9XQ0xLLAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxMl9X Q0xLXSA9CVpYX0NMS19USU1FUl9UMTJfV0NMSywKKwlbWlgyOTc1MjBWM19USU1FUl9UMTJfUENM S10gPQlaWF9DTEtfVElNRVJfVDEyX1BDTEssCisJW1pYMjk3NTIwVjNfVElNRVJfVDEzX1dDTEtd ID0JWlhfQ0xLX1RJTUVSX1QxM19XQ0xLLAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxM19QQ0xLXSA9 CVpYX0NMS19USU1FUl9UMTNfUENMSywKKwlbWlgyOTc1MjBWM19USU1FUl9UMTRfV0NMS10gPQla WF9DTEtfVElNRVJfVDE0X1dDTEssCisJW1pYMjk3NTIwVjNfVElNRVJfVDE0X1BDTEtdID0JWlhf Q0xLX1RJTUVSX1QxNF9QQ0xLLAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxNV9XQ0xLXSA9CVpYX0NM S19USU1FUl9UMTVfV0NMSywKKwlbWlgyOTc1MjBWM19USU1FUl9UMTVfUENMS10gPQlaWF9DTEtf VElNRVJfVDE1X1BDTEssCisJW1pYMjk3NTIwVjNfVElNRVJfVDE2X1dDTEtdID0JWlhfQ0xLX1RJ TUVSX1QxNl9XQ0xLLAorCVtaWDI5NzUyMFYzX1RJTUVSX1QxNl9QQ0xLXSA9CVpYX0NMS19USU1F Ul9UMTZfUENMSywKKwlbWlgyOTc1MjBWM19USU1FUl9UMTdfV0NMS10gPQlaWF9DTEtfVElNRVJf VDE3X1dDTEssCisJW1pYMjk3NTIwVjNfVElNRVJfVDE3X1BDTEtdID0JWlhfQ0xLX1RJTUVSX1Qx N19QQ0xLLAorCVtaWDI5NzUyMFYzX1dEVF9UMThfV0NMS10gPQlaWF9DTEtfV0RUX1QxOF9XQ0xL LAorCVtaWDI5NzUyMFYzX1dEVF9UMThfUENMS10gPQlaWF9DTEtfV0RUX1QxOF9QQ0xLLAorCVta WDI5NzUyMFYzX1VTSU0xX1dDTEtdID0JWlhfQ0xLX1VTSU0xX1dDTEssCisJW1pYMjk3NTIwVjNf VVNJTTFfUENMS10gPQlaWF9DTEtfVVNJTTFfUENMSywKKwlbWlgyOTc1MjBWM19BSEJfV0NMS10g PQkJWlhfQ0xLX0FIQl9XQ0xLLAorCVtaWDI5NzUyMFYzX0FIQl9QQ0xLXSA9CQlaWF9DTEtfQUhC X1BDTEssCisJW1pYMjk3NTIwVjNfVVNCX1dDTEtdID0JCVpYX0NMS19VU0JfV0NMSywKKwlbWlgy OTc1MjBWM19VU0JfUENMS10gPQkJWlhfQ0xLX1VTQl9QQ0xLLAorCVtaWDI5NzUyMFYzX0hTSUNf V0NMS10gPQlaWF9DTEtfSFNJQ19XQ0xLLAorCVtaWDI5NzUyMFYzX0hTSUNfUENMS10gPQlaWF9D TEtfSFNJQ19QQ0xLLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB6eF9jbGtfZGF0YSB6eDI5 NzUyMHYzX3RvcGNsa19kYXRhID0geworCS5jbG9ja3MgPSB6eDI5NzUyMHYzX3RvcF9jbG9ja3Ms CisJLm51bV9jbG9ja3MgPSBBUlJBWV9TSVpFKHp4Mjk3NTIwdjNfdG9wX2Nsb2NrcyksCisJLmV4 cG9ydHMgPSB6eDI5NzUyMHYzX3RvcF9leHBvcnRzLAorCS5udW1fZXhwb3J0cyA9IEFSUkFZX1NJ WkUoengyOTc1MjB2M190b3BfZXhwb3J0cyksCit9OworCitzdGF0aWMgaW50IGNsa196eDI5NzUy MHYzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJY29uc3Qgc3RydWN0 IHBsYXRmb3JtX2RldmljZV9pZCAqaWQgPSBwbGF0Zm9ybV9nZXRfZGV2aWNlX2lkKHBkZXYpOwor CisJaWYgKCFpZCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXR1cm4genhfY2xrX2NvbW1vbl9w cm9iZSgmcGRldi0+ZGV2LCBwZGV2LT5kZXYucGFyZW50LT5vZl9ub2RlLAorCQkJCSAgIChjb25z dCBzdHJ1Y3QgenhfY2xrX2RhdGEgKilpZC0+ZHJpdmVyX2RhdGEpOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZV9pZCBjbGtfengyOTc1MjB2M19pZHNbXSA9IHsKKwl7 CisJCS5uYW1lID0gInp4Mjk3NTIwdjMtdG9wY2xrIiwKKwkJLmRyaXZlcl9kYXRhID0gKGtlcm5l bF91bG9uZ190KSZ6eDI5NzUyMHYzX3RvcGNsa19kYXRhLAorCX0sCisJeyB9Cit9OworTU9EVUxF X0RFVklDRV9UQUJMRShwbGF0Zm9ybSwgY2xrX3p4Mjk3NTIwdjNfaWRzKTsKKworc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2xrX3p4Mjk3NTIwdjMgPSB7CisJLnByb2JlID0gY2xrX3p4 Mjk3NTIwdjNfcHJvYmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAiY2xrLXp4Mjk3NTIwdjMi LAorCX0sCisJLmlkX3RhYmxlID0gY2xrX3p4Mjk3NTIwdjNfaWRzLAorfTsKK21vZHVsZV9wbGF0 Zm9ybV9kcml2ZXIoY2xrX3p4Mjk3NTIwdjMpOworCitNT0RVTEVfQVVUSE9SKCJTdGVmYW4gRMO2 c2luZ2VyIDxzdGVmYW5kb2VzaW5nZXJAZ21haWwuY29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9O KCJaVEUgengyOTc1MjB2MyBjbG9jayBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsK Ci0tIAoyLjU0LjAKCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1waHkK