From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E2951C2BD09 for ; Mon, 9 Dec 2019 09:47:34 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C2B8D206D5 for ; Mon, 9 Dec 2019 09:47:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C2B8D206D5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0695F6E3AC; Mon, 9 Dec 2019 09:47:05 +0000 (UTC) Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id CBD6C6E08A for ; Mon, 9 Dec 2019 01:47:28 +0000 (UTC) Received: by mail-pg1-x542.google.com with SMTP id k25so6279572pgt.7 for ; Sun, 08 Dec 2019 17:47:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=W4PUUSdg2sDy2RIF2/JWtYeXESZMvTd4tTG8KBB5CtM=; b=maop8HABew2P6NoYHhdrXAJ3W7QG/AN27LWQDC2RFO0qul8Z+ZF/SjkXA/1+lEvSxe oWUyZWYZhBhPCdUIrg2YnflRfYXkZulyWl2cbrzNqcbU7fA7mTUXwqkdfhib/agk9DXX iRi/58h4UwDZiTXGiucUo0E9NdrGpQuH3IrpOpnbVkYrWlM4ubp8FYkfPO3EAKv4cFsV rrvzUdi+DrvQfdbJ97qIkugnYKfWEQaODr9uFyjFdALC6sizj3tSy+1naEea3azmcuGv y3Z7r6JO3MJVHHKTxb4FPkOR7sr27TQy3OY5vQ5moZe2kqMl3RGTXbpj9vjun0rc9tKW 0Ubw== X-Gm-Message-State: APjAAAXQnEpzg68Dk9TRRifSGZBDdybnwNT1B6thvBzYJuO6GXsQOGLl F8LDxb7AoZHov/saPdqo4JdyDAmv X-Google-Smtp-Source: APXvYqw2hgfsWIOFBy+eUDcR2FQr0suakpnHb1WhxEOUM2vPZyj4BgoqB7LGU6OhAzjNKMKhfHqrmQ== X-Received: by 2002:a62:3892:: with SMTP id f140mr23602333pfa.190.1575856047790; Sun, 08 Dec 2019 17:47:27 -0800 (PST) Received: from super-sugar.huaqin.com ([101.78.151.194]) by smtp.gmail.com with ESMTPSA id y22sm24174274pfn.122.2019.12.08.17.47.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Dec 2019 17:47:27 -0800 (PST) From: Jerry Han To: dri-devel@lists.freedesktop.org Subject: [PATCH] drm/panel: Add Boe Himax8279d MIPI-DSI LCD panel Date: Mon, 9 Dec 2019 09:46:41 +0800 Message-Id: <20191209014641.24685-1-jerry.han.hq@gmail.com> X-Mailer: git-send-email 2.17.1 X-Mailman-Approved-At: Mon, 09 Dec 2019 09:46:36 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=W4PUUSdg2sDy2RIF2/JWtYeXESZMvTd4tTG8KBB5CtM=; b=aMx1qKob7euxIiiFeBqN5Ew3U3WiqSLbvfq6gX0TDuKPDLI5ORAinLbdo+M3RyQE8a 7BWiGNSHV0W4QRUhf6eQy58fYc5+u7kCZpfrgptnt6liJl8wG/yeARxlSSQ3Hyd8bjfb qL57ExZpY0WNlKqQHi9JvbLooFE52V3PMy6M4Rtg+9KAZzo8QCgmeY4XahEvVQAGLGg/ WRdBsbkGdSDQ2SrtwxMJq8o4CHXX8nB8KJNHL62qskrdbr3CHQAnluwDGjFPG4cdjwjY ezjcE8z/yVQbL213DPZU+cL9xmAiPeKbqaNJtkQ7GkWgjL+CxgDwqixEs9C/15jSOdkZ sinQ== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jerry Han , Jitao Shi , Rock wang MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" U3VwcG9ydCBCb2UgSGltYXg4Mjc5ZCA4LjAiIDEyMDB4MTkyMCBURlQgTENEIHBhbmVsLCBpdCBp cyBhIE1JUEkgRFNJCnBhbmVsLgoKVjk6Ci0gQWRqdXN0IGluaXQgY29kZSwgbWFrZSB0aGUgZm9y bWF0IG1vcmUgY29uY2lzZQotIGtpbGwgb2ZmIGRlZmF1bHRfb2ZmX2NtZHMgKEVtaWwpCi0gdXNl IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV97b24sb2ZmfSBpbiB0aGVpciBlbmFibGUvZGlzYWJs ZQogICAgY2FsbGJhY2tzLiAoRW1pbCkKLSBBZGp1c3RpbmcgdGhlIGRlbGF5IGZ1bmN0aW9uIChF bWlsKQoKVjg6Ci0gbW9kaWZ5IFBBUkVOVEhFU0lTX0FMSUdOTUVOVCBmb3JtYXQgKFNhbSkKLSB1 c2UgZ3Bpb3MgYXJlIHJlcXVpcmVkIEFQSSByZXBsYWNlIG9wdGlvbmFsIGdwaW8gQVBJIChFbWls KQoKVjc6Ci0gTW9kaWZ5IGNvbW11bmljYXRpb24gYWRkcmVzcwoKVjY6Ci0gQWRkIHRoZSBpbmZv cm1hdGlvbiBvZiB0aGUgcmV2aWV3ZXIKLSBSZW1vdmUgdW5uZWNlc3NhcnkgZGVsYXlzLCBUaGUg dWRlbGF5X3JhbmdlIGNvZGUgZ3JhY2VmdWxseSByZXR1cm5zCiAgICB3aXRob3V0IGhpdHRpbmcg dGhlIHNjaGVkdWxlciBvbiBhIGRlbGF5IG9mIDAuIChEZXJlaykKLSBNZXJnZSB0aGUgc2FtZSBk YXRhIHN0cnVjdHVyZXMsIGxpa2UgZGlzcGxheV9tb2RlIGFuZCBvZmZfY21kcyAoRGVyZWspCi0g T3B0aW1pemUgdGhlIHByb2Nlc3Npbmcgb2YgcmVzdWx0cyByZXR1cm5lZCBieQogICAgZGV2bV9n cGlvZF9nZXRfb3B0aW9uYWwgKERlcmVrKQoKVjU6Ci0gQWRkIHRoZSBpbmZvcm1hdGlvbiBvZiB0 aGUgcmV2aWV3ZXIgKFNhbSkKLSBEZWxldGUgdW5uZWNlc3NhcnkgaGVhZGVyIGZpbGVzICNpbmNs dWRlIDxsaW51eC9mYi5oPiAoU2FtKQotIFRoZSBjb25maWcgRFJNX1BBTkVMX0JPRV9ISU1BWDgy NzlEIGFwcGVhcnMgdHdpY2UuIERyb3Agb25lIG9mIHRoZW0gKFNhbSkKLSBBREQgc3RhdGljLCBz ZXRfZ3Bpb3MgZnVuY3Rpb24gaXMgbm90IHVzZWQgb3V0c2lkZSB0aGlzIG1vZHVsZSAoU2FtKQoK VjQ6Ci0gRnJlZml4IGFsbCBmdW5jdGlvbiBtYWVzIHdpdGggYm9lXyAoU2FtKQotIEZzZWQgImVu YWJsZV9ncGlvIiByZXBsYWNlICJyZXNldF9ncGlvIiwgTWFrZSBpdCBsb29rIGNsZWFyZXIgKFNh bSkKLSBTb3J0IGluY2x1ZGUgbGluZXMgYWxwaGFiZXRpY2FsbHkgKFNhbSkKLSBGaXhlZCBlbnRy aWVzIGluIHRoZSBtYWtlZmlsZSBtdXN0IGJlIHNvcnRlZCBhbHBoYWJldGljYWxseSAoU2FtKQot IEFkZCBzZW5kX21pcGlfY21kcyBmdW5jdGlvbiB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgY29k ZSAoU2FtKQotIEFkZCB0aGUgbmVjZXNzYXJ5IGRlbGF5KHJlc2V0X2RlbGF5X3Q1KSBiZXR3ZWVu IHJlc2V0IGFuZCBzZW5kaW5nCiAgICB0aGUgaW5pdGlhbGl6YXRpb24gY29tbWFuZCAoUm9jayB3 YW5nKQoKVjM6Ci0gUmVtb3ZlIHVubmVjZXNzYXJ5IGRlbGF5cyBpbiBzZW5kaW5nIGluaXRpYWxp emF0aW9uIGNvbW1hbmRzIChKaXRhbyBTaGkpCgpWMjoKLSBVc2UgU1BEWCBpZGVudGlmaWVyIChT YW0pCi0gVXNlIG5lY2Vzc2FyeSBoZWFkZXIgZmlsZXMgcmVwbGFjZSBkcm1QLmggKFNhbSkKLSBE ZWxldGUgdW5uZWNlc3NhcnkgaGVhZGVyIGZpbGVzICNpbmNsdWRlIDxsaW51eC9lcnIuaD4gKFNh bSkKLSBTcGVjaWZpZXMgYSBHUElPcyBhcnJheSB0byBjb250cm9sIHRoZSByZXNldCB0aW1pbmcs CiAgICBpbnN0ZWFkIG9mIHJlYWRpbmcgImRzaS1yZXNldC1zZXF1ZW5jZSIgZGF0YSBmcm9tIERU UyAoU2FtKQotIERlbGV0ZSBiYWNrbGlnaHRfZGlzYWJsZSgpIGZ1bmN0aW9uIHdoZW4gYWxyZWFk eSBkaXNhYmxlZCAoU2FtKQotIFVzZSBkZXZtX29mX2ZpbmRfYmFja2xpZ2h0KCkgcmVwbGFjZSBv Zl9maW5kX2JhY2tsaWdodF9ieV9ub2RlKCkgKFNhbSkKLSBNb3ZlIHRoZSBuZWNlc3NhcnkgZGF0 YSBpbiB0aGUgRFRTIHRvIHRoZSBjdXJyZW50IGZpbGUsCiAgICBsaWtlIHBvcmNoLCBkaXNwbGF5 X21vZGUgYW5kIEluaXQgY29kZSBldGMuIChTYW0pCi0gQWRkIGNvbXBhdGlibGUgZGV2aWNlICJi b2UsaGltYXg4Mjc5ZDEwcCIgKFNhbSkKClYxOgotIFN1cHBvcnQgQm9lIEhpbWF4ODI3OWQgOC4w IiAxMjAweDE5MjAgVEZUIExDRCBwYW5lbCwgaXQgaXMgYSBNSVBJIERTSQogICAgcGFuZWwuCgpT aWduZWQtb2ZmLWJ5OiBKZXJyeSBIYW4gPGplcnJ5Lmhhbi5ocUBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBTYW0gUmF2bmJvcmcgPHNhbUByYXZuYm9yZy5vcmc+ClJldmlld2VkLWJ5OiBEZXJlayBC YXNlaG9yZSA8ZGJhc2Vob3JlQGNocm9taXVtLm9yZz4KUmV2aWV3ZWQtYnk6IEVtaWwgVmVsaWtv diA8ZW1pbC5sLnZlbGlrb3ZAZ21haWwuY29tPgpSZXBvcnRlZC1ieToga2J1aWxkIHRlc3Qgcm9i b3QgPGxrcEBpbnRlbC5jb20+CkNjOiBKaXRhbyBTaGkgPGppdGFvLnNoaUBtZWRpYXRlay5jb20+ CkNjOiBSb2NrIHdhbmcgPHJvY2tfd2FuZ0BoaW1heC5jb20uY24+Ci0tLQogTUFJTlRBSU5FUlMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUvZHJt L3BhbmVsL0tjb25maWcgICAgICAgICAgICAgICAgfCAgMTEgKwogZHJpdmVycy9ncHUvZHJtL3Bh bmVsL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3BhbmVs L3BhbmVsLWJvZS1oaW1heDgyNzlkLmMgfCA5ODggKysrKysrKysrKysrKysrKysrKwogNCBmaWxl cyBjaGFuZ2VkLCAxMDA2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vcGFuZWwvcGFuZWwtYm9lLWhpbWF4ODI3OWQuYwoKZGlmZiAtLWdpdCBhL01BSU5U QUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggYzJiODk0NTM4MDVmLi4yOTVjYjIxNDgzNGMgMTAw NjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC01MTM1LDYgKzUxMzUs MTIgQEAgVDoJZ2l0IGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYwog UzoJTWFpbnRhaW5lZAogRjoJZHJpdmVycy9ncHUvZHJtL2JvY2hzLwogCitEUk0gRFJJVkVSIEZP UiBCT0UgSElNQVg4Mjc5RCBQQU5FTFMKK006CUplcnJ5IEhhbiA8aGFueHU1QGh1YXFpbi5jb3Jw LXBhcnRuZXIuZ29vZ2xlLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9w YW5lbC9wYW5lbC1ib2UtaGltYXg4Mjc5ZC5jCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvZGlzcGxheS9wYW5lbC9ib2UsaGltYXg4Mjc5ZC50eHQKKwogRFJNIERSSVZFUiBG T1IgRkFSQURBWSBUVkUyMDAgVFYgRU5DT0RFUgogTToJTGludXMgV2FsbGVpaiA8bGludXMud2Fs bGVpakBsaW5hcm8ub3JnPgogVDoJZ2l0IGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2Ry bS9kcm0tbWlzYwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwppbmRleCBmMTUyYmM0ZWViNTMuLjY4M2ZmNzdh MzczMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKKysrIGIvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKQEAgLTE4LDYgKzE4LDE3IEBAIGNvbmZpZyBEUk1f UEFORUxfQVJNX1ZFUlNBVElMRQogCSAgcmVmZXJlbmNlIGRlc2lnbnMuIFRoZSBwYW5lbCBpcyBk ZXRlY3RlZCB1c2luZyBzcGVjaWFsIHJlZ2lzdGVycwogCSAgaW4gdGhlIFZlcnNhdGlsZSBmYW1p bHkgc3lzY29uIHJlZ2lzdGVycy4KIAorY29uZmlnIERSTV9QQU5FTF9CT0VfSElNQVg4Mjc5RAor CXRyaXN0YXRlICJCb2UgSGltYXg4Mjc5ZCBwYW5lbCIKKwlkZXBlbmRzIG9uIE9GCisJZGVwZW5k cyBvbiBEUk1fTUlQSV9EU0kKKwlkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKKwlo ZWxwCisJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBCb2Ug SGltYXg4Mjc5ZAorCSAgVEZULUxDRCBtb2R1bGVzLiBUaGUgcGFuZWwgaGFzIGEgMTIwMHgxOTIw IHJlc29sdXRpb24gYW5kIHVzZXMKKwkgIDI0IGJpdCBSR0IgcGVyIHBpeGVsLiBJdCBwcm92aWRl cyBhIE1JUEkgRFNJIGludGVyZmFjZSB0bworCSAgdGhlIGhvc3QgYW5kIGhhcyBhIGJ1aWx0LWlu IExFRCBiYWNrbGlnaHQuCisKIGNvbmZpZyBEUk1fUEFORUxfTFZEUwogCXRyaXN0YXRlICJHZW5l cmljIExWRFMgcGFuZWwgZHJpdmVyIgogCWRlcGVuZHMgb24gT0YKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmls ZQppbmRleCBiNmNkMzlmZTBmMjAuLjg3ODM0NzYxMTBhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmls ZQpAQCAtMSw1ICsxLDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKIG9i ai0kKENPTkZJR19EUk1fUEFORUxfQVJNX1ZFUlNBVElMRSkgKz0gcGFuZWwtYXJtLXZlcnNhdGls ZS5vCitvYmotJChDT05GSUdfRFJNX1BBTkVMX0JPRV9ISU1BWDgyNzlEKSArPSBwYW5lbC1ib2Ut aGltYXg4Mjc5ZC5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0xWRFMpICs9IHBhbmVsLWx2ZHMu bwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSU1QTEUpICs9IHBhbmVsLXNpbXBsZS5vCiBvYmot JChDT05GSUdfRFJNX1BBTkVMX0ZFSVlBTkdfRlkwNzAyNERJMjZBMzBEKSArPSBwYW5lbC1mZWl5 YW5nLWZ5MDcwMjRkaTI2YTMwZC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtYm9lLWhpbWF4ODI3OWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1ib2Ut aGltYXg4Mjc5ZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjVl YTZmNjczY2RiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVs LWJvZS1oaW1heDgyNzlkLmMKQEAgLTAsMCArMSw5ODggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5LCBIdWFxaW4gVGVsZWNv bSBUZWNobm9sb2d5IENvLiwgTHRkCisgKgorICogQXV0aG9yOiBKZXJyeSBIYW4gPGplcnJ5Lmhh bi5ocUBnbWFpbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4K KyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8 bGludXgvb2ZfZGV2aWNlLmg+CisKKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cisj aW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJt X2RldmljZS5oPgorI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KKyNpbmNsdWRlIDxkcm0v ZHJtX21vZGVzLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorI2luY2x1ZGUgPGRybS9k cm1fcHJpbnQuaD4KKworI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgorCitzdHJ1Y3Qg cGFuZWxfY21kIHsKKwljaGFyIGNtZDsKKwljaGFyIGRhdGE7Cit9OworCitzdHJ1Y3QgcGFuZWxf ZGVzYyB7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRpc3BsYXlfbW9kZTsKKwl1 bnNpZ25lZCBpbnQgYnBjOworCXVuc2lnbmVkIGludCB3aWR0aF9tbTsKKwl1bnNpZ25lZCBpbnQg aGVpZ2h0X21tOworCisJdW5zaWduZWQgbG9uZyBtb2RlX2ZsYWdzOworCWVudW0gbWlwaV9kc2lf cGl4ZWxfZm9ybWF0IGZvcm1hdDsKKwl1bnNpZ25lZCBpbnQgbGFuZXM7CisJY29uc3Qgc3RydWN0 IHBhbmVsX2NtZCAqb25fY21kczsKKwl1bnNpZ25lZCBpbnQgb25fY21kc19udW07Cit9OworCitz dHJ1Y3QgcGFuZWxfaW5mbyB7CisJc3RydWN0IGRybV9wYW5lbCBiYXNlOworCXN0cnVjdCBtaXBp X2RzaV9kZXZpY2UgKmxpbms7CisJY29uc3Qgc3RydWN0IHBhbmVsX2Rlc2MgKmRlc2M7CisKKwlz dHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0OworCXN0cnVjdCBncGlvX2Rlc2MgKmVu YWJsZV9ncGlvOworCXN0cnVjdCBncGlvX2Rlc2MgKnBwMzNfZ3BpbzsKKwlzdHJ1Y3QgZ3Bpb19k ZXNjICpwcDE4X2dwaW87CisKKwlib29sIHByZXBhcmVkOworCWJvb2wgZW5hYmxlZDsKK307CisK K3N0YXRpYyBpbmxpbmUgc3RydWN0IHBhbmVsX2luZm8gKnRvX3BhbmVsX2luZm8oc3RydWN0IGRy bV9wYW5lbCAqcGFuZWwpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHBh bmVsX2luZm8sIGJhc2UpOworfQorCitzdGF0aWMgdm9pZCBkaXNhYmxlX2dwaW9zKHN0cnVjdCBw YW5lbF9pbmZvICpwaW5mbykKK3sKKwlncGlvZF9zZXRfdmFsdWUocGluZm8tPmVuYWJsZV9ncGlv LCAwKTsKKwlncGlvZF9zZXRfdmFsdWUocGluZm8tPnBwMzNfZ3BpbywgMCk7CisJZ3Bpb2Rfc2V0 X3ZhbHVlKHBpbmZvLT5wcDE4X2dwaW8sIDApOworfQorCitzdGF0aWMgaW50IHNlbmRfbWlwaV9j bWRzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLCBjb25zdCBzdHJ1Y3QgcGFuZWxfY21kICpjbWRz KQoreworCXN0cnVjdCBwYW5lbF9pbmZvICpwaW5mbyA9IHRvX3BhbmVsX2luZm8ocGFuZWwpOwor CXVuc2lnbmVkIGludCBpID0gMDsKKwlpbnQgZXJyOworCisJZm9yIChpID0gMDsgaSA8IHBpbmZv LT5kZXNjLT5vbl9jbWRzX251bTsgaSsrKSB7CisJCWVyciA9IG1pcGlfZHNpX2Rjc193cml0ZV9i dWZmZXIocGluZm8tPmxpbmssICZjbWRzW2ldLAorCQkJCQkJc2l6ZW9mKHN0cnVjdCBwYW5lbF9j bWQpKTsKKworCQlpZiAoZXJyIDwgMCkKKwkJCXJldHVybiBlcnI7CisJfQorCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgYm9lX3BhbmVsX2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFu ZWwpCit7CisJc3RydWN0IHBhbmVsX2luZm8gKnBpbmZvID0gdG9fcGFuZWxfaW5mbyhwYW5lbCk7 CisJaW50IGVycjsKKworCWlmICghcGluZm8tPmVuYWJsZWQpCisJCXJldHVybiAwOworCisJYmFj a2xpZ2h0X2Rpc2FibGUocGluZm8tPmJhY2tsaWdodCk7CisKKwllcnIgPSBtaXBpX2RzaV9kY3Nf c2V0X2Rpc3BsYXlfb2ZmKHBpbmZvLT5saW5rKTsKKwlpZiAoZXJyIDwgMCkgeworCQlEUk1fREVW X0VSUk9SKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2V0IGRpc3BsYXkgb2ZmOiAlZFxuIiwKKwkJ CSAgICAgIGVycik7CisJCXJldHVybiBlcnI7CisJfQorCisJcGluZm8tPmVuYWJsZWQgPSBmYWxz ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJvZV9wYW5lbF91bnByZXBhcmUoc3Ry dWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHBhbmVsX2luZm8gKnBpbmZvID0gdG9f cGFuZWxfaW5mbyhwYW5lbCk7CisJaW50IGVycjsKKworCWlmICghcGluZm8tPnByZXBhcmVkKQor CQlyZXR1cm4gMDsKKworCWVyciA9IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vZmYocGluZm8t PmxpbmspOworCWlmIChlcnIgPCAwKQorCQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kZXYsICJmYWls ZWQgdG8gc2V0IGRpc3BsYXkgb2ZmOiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisKKwllcnIgPSBt aXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShwaW5mby0+bGluayk7CisJaWYgKGVyciA8IDAp CisJCURSTV9ERVZfRVJST1IocGFuZWwtPmRldiwgImZhaWxlZCB0byBlbnRlciBzbGVlcCBtb2Rl OiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisKKwkvKiBzbGVlcF9tb2RlX2RlbGF5OiAxbXMgLSAy bXMgKi8KKwl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7CisKKwlkaXNhYmxlX2dwaW9zKHBpbmZv KTsKKworCXBpbmZvLT5wcmVwYXJlZCA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgYm9lX3BhbmVsX3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3Ry dWN0IHBhbmVsX2luZm8gKnBpbmZvID0gdG9fcGFuZWxfaW5mbyhwYW5lbCk7CisJaW50IGVycjsK KworCWlmIChwaW5mby0+cHJlcGFyZWQpCisJCXJldHVybiAwOworCisJZ3Bpb2Rfc2V0X3ZhbHVl KHBpbmZvLT5wcDE4X2dwaW8sIDEpOworCS8qIFQxOiA1bXMgLSA2bXMgKi8KKwl1c2xlZXBfcmFu Z2UoNTAwMCwgNjAwMCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKHBpbmZvLT5wcDMzX2dwaW8sIDEpOwor CisJLyogcmVzZXQgc2VxdWVuY2UgKi8KKwkvKiBUMjogMTRtcyAtIDE1bXMgKi8KKwl1c2xlZXBf cmFuZ2UoMTQwMDAsIDE1MDAwKTsKKwlncGlvZF9zZXRfdmFsdWUocGluZm8tPmVuYWJsZV9ncGlv LCAxKTsKKworCS8qIFQzOiAxbXMgLSAybXMgKi8KKwl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7 CisJZ3Bpb2Rfc2V0X3ZhbHVlKHBpbmZvLT5lbmFibGVfZ3BpbywgMCk7CisKKwkvKiBUNDogMW1z IC0gMm1zICovCisJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOworCWdwaW9kX3NldF92YWx1ZShw aW5mby0+ZW5hYmxlX2dwaW8sIDEpOworCisJLyogVDU6IDVtcyAtIDZtcyAqLworCXVzbGVlcF9y YW5nZSg1MDAwLCA2MDAwKTsKKworCS8qIHNlbmQgaW5pdCBjb2RlICovCisJZXJyID0gc2VuZF9t aXBpX2NtZHMocGFuZWwsIHBpbmZvLT5kZXNjLT5vbl9jbWRzKTsKKwlpZiAoZXJyIDwgMCkgewor CQlEUk1fREVWX0VSUk9SKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2VuZCBEQ1MgSW5pdCBDb2Rl OiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisJCWdvdG8gcG93ZXJvZmY7CisJfQorCisJZXJyID0g bWlwaV9kc2lfZGNzX2V4aXRfc2xlZXBfbW9kZShwaW5mby0+bGluayk7CisJaWYgKGVyciA8IDAp IHsKKwkJRFJNX0RFVl9FUlJPUihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIGV4aXQgc2xlZXAgbW9k ZTogJWRcbiIsCisJCQkgICAgICBlcnIpOworCQlnb3RvIHBvd2Vyb2ZmOworCX0KKworCS8qIFQ2 OiAxMjBtcyAtIDEyMW1zICovCisJdXNsZWVwX3JhbmdlKDEyMDAwMCwgMTIxMDAwKTsKKworCWVy ciA9IG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vbihwaW5mby0+bGluayk7CisJaWYgKGVyciA8 IDApIHsKKwkJRFJNX0RFVl9FUlJPUihwYW5lbC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBkaXNwbGF5 IG9uOiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisJCWdvdG8gcG93ZXJvZmY7CisJfQorCisJLyog VDc6IDIwbXMgLSAyMW1zICovCisJdXNsZWVwX3JhbmdlKDIwMDAwLCAyMTAwMCk7CisKKwlwaW5m by0+cHJlcGFyZWQgPSB0cnVlOworCisJcmV0dXJuIDA7CisKK3Bvd2Vyb2ZmOgorCWRpc2FibGVf Z3Bpb3MocGluZm8pOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgYm9lX3BhbmVsX2Vu YWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgcGFuZWxfaW5mbyAqcGlu Zm8gPSB0b19wYW5lbF9pbmZvKHBhbmVsKTsKKwlpbnQgcmV0OworCisJaWYgKHBpbmZvLT5lbmFi bGVkKQorCQlyZXR1cm4gMDsKKworCXVzbGVlcF9yYW5nZSgxMjAwMDAsIDEyMTAwMCk7CisKKwly ZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb24ocGluZm8tPmxpbmspOworCWlmIChyZXQg PCAwKSB7CisJCURSTV9ERVZfRVJST1IocGFuZWwtPmRldiwgImZhaWxlZCB0byBzZXQgZGlzcGxh eSBvbjogJWRcbiIsCisJCQkgICAgICByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9 IGJhY2tsaWdodF9lbmFibGUocGluZm8tPmJhY2tsaWdodCk7CisJaWYgKHJldCkgeworCQlEUk1f REVWX0VSUk9SKHBhbmVsLT5kcm0tPmRldiwKKwkJCSAgICAgICJGYWlsZWQgdG8gZW5hYmxlIGJh Y2tsaWdodCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlwaW5mby0+ZW5hYmxl ZCA9IHRydWU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBib2VfcGFuZWxfZ2V0X21v ZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBwYW5lbF9pbmZvICpwaW5m byA9IHRvX3BhbmVsX2luZm8ocGFuZWwpOworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptID0gcGluZm8tPmRlc2MtPmRpc3BsYXlfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZTsKKworCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUocGFuZWwtPmRybSwgbSk7CisJ aWYgKCFtb2RlKSB7CisJCURSTV9ERVZfRVJST1IocGFuZWwtPmRybS0+ZGV2LCAiZmFpbGVkIHRv IGFkZCBtb2RlICV1eCV1QCV1XG4iLAorCQkJICAgICAgbS0+aGRpc3BsYXksIG0tPnZkaXNwbGF5 LCBtLT52cmVmcmVzaCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWRybV9tb2RlX3NldF9u YW1lKG1vZGUpOworCisJZHJtX21vZGVfcHJvYmVkX2FkZChwYW5lbC0+Y29ubmVjdG9yLCBtb2Rl KTsKKworCXBhbmVsLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IHBpbmZvLT5k ZXNjLT53aWR0aF9tbTsKKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21t ID0gcGluZm8tPmRlc2MtPmhlaWdodF9tbTsKKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2lu Zm8uYnBjID0gcGluZm8tPmRlc2MtPmJwYzsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBwYW5lbF9mdW5jcyA9IHsKKwkuZGlzYWJsZSA9IGJv ZV9wYW5lbF9kaXNhYmxlLAorCS51bnByZXBhcmUgPSBib2VfcGFuZWxfdW5wcmVwYXJlLAorCS5w cmVwYXJlID0gYm9lX3BhbmVsX3ByZXBhcmUsCisJLmVuYWJsZSA9IGJvZV9wYW5lbF9lbmFibGUs CisJLmdldF9tb2RlcyA9IGJvZV9wYW5lbF9nZXRfbW9kZXMsCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgZGVmYXVsdF9kaXNwbGF5X21vZGUgPSB7CisJLmNsb2Nr ID0gMTU5NDIwLAorCS5oZGlzcGxheSA9IDEyMDAsCisJLmhzeW5jX3N0YXJ0ID0gMTIwMCArIDgw LAorCS5oc3luY19lbmQgPSAxMjAwICsgODAgKyA2MCwKKwkuaHRvdGFsID0gMTIwMCArIDgwICsg NjAgKyAyNCwKKwkudmRpc3BsYXkgPSAxOTIwLAorCS52c3luY19zdGFydCA9IDE5MjAgKyAxMCwK KwkudnN5bmNfZW5kID0gMTkyMCArIDEwICsgMTQsCisJLnZ0b3RhbCA9IDE5MjAgKyAxMCArIDE0 ICsgNCwKKwkudnJlZnJlc2ggPSA2MCwKK307CisKKy8qIDggaW5jaCAqLworc3RhdGljIGNvbnN0 IHN0cnVjdCBwYW5lbF9jbWQgYm9lX2hpbWF4ODI3OWQ4cF9vbl9jbWRzW10gPSB7CisJeyAweEIw LCAweDA1IH0sCisJeyAweEIxLCAweEU1IH0sCisJeyAweEIzLCAweDUyIH0sCisJeyAweEMwLCAw eDAwIH0sCisJeyAweEMyLCAweDU3IH0sCisJeyAweEQ5LCAweDg1IH0sCisJeyAweEIwLCAweDAx IH0sCisJeyAweEM4LCAweDAwIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENDLCAweDI2IH0s CisJeyAweENELCAweDI2IH0sCisJeyAweERDLCAweDAwIH0sCisJeyAweERELCAweDAwIH0sCisJ eyAweEUwLCAweDI2IH0sCisJeyAweEUxLCAweDI2IH0sCisJeyAweEIwLCAweDAzIH0sCisJeyAw eEMzLCAweDJBIH0sCisJeyAweEU3LCAweDJBIH0sCisJeyAweEM1LCAweDJBIH0sCisJeyAweERF LCAweDJBIH0sCisJeyAweEJDLCAweDAyIH0sCisJeyAweENCLCAweDAyIH0sCisJeyAweEIwLCAw eDAwIH0sCisJeyAweEI2LCAweDAzIH0sCisJeyAweEJBLCAweDhCIH0sCisJeyAweEJGLCAweDE1 IH0sCisJeyAweEMwLCAweDE4IH0sCisJeyAweEMyLCAweDE0IH0sCisJeyAweEMzLCAweDAyIH0s CisJeyAweEM0LCAweDE0IH0sCisJeyAweEM1LCAweDAyIH0sCisJeyAweENDLCAweDBBIH0sCisJ eyAweEIwLCAweDA2IH0sCisJeyAweEMwLCAweEE1IH0sCisJeyAweEQ1LCAweDIwIH0sCisJeyAw eEMwLCAweDAwIH0sCisJeyAweEIwLCAweDAyIH0sCisJeyAweEMwLCAweDAwIH0sCisJeyAweEMx LCAweDAyIH0sCisJeyAweEMyLCAweDA2IH0sCisJeyAweEMzLCAweDE2IH0sCisJeyAweEM0LCAw eDBFIH0sCisJeyAweEM1LCAweDE4IH0sCisJeyAweEM2LCAweDI2IH0sCisJeyAweEM3LCAweDMy IH0sCisJeyAweEM4LCAweDNGIH0sCisJeyAweEM5LCAweDNGIH0sCisJeyAweENBLCAweDNGIH0s CisJeyAweENCLCAweDNGIH0sCisJeyAweENDLCAweDNEIH0sCisJeyAweENELCAweDJGIH0sCisJ eyAweENFLCAweDJGIH0sCisJeyAweENGLCAweDJGIH0sCisJeyAweEQwLCAweDA3IH0sCisJeyAw eEQyLCAweDAwIH0sCisJeyAweEQzLCAweDAyIH0sCisJeyAweEQ0LCAweDA2IH0sCisJeyAweEQ1 LCAweDEyIH0sCisJeyAweEQ2LCAweDBBIH0sCisJeyAweEQ3LCAweDE0IH0sCisJeyAweEQ4LCAw eDIyIH0sCisJeyAweEQ5LCAweDJFIH0sCisJeyAweERBLCAweDNEIH0sCisJeyAweERCLCAweDNG IH0sCisJeyAweERDLCAweDNGIH0sCisJeyAweERELCAweDNGIH0sCisJeyAweERFLCAweDNEIH0s CisJeyAweERGLCAweDJGIH0sCisJeyAweEUwLCAweDJGIH0sCisJeyAweEUxLCAweDJGIH0sCisJ eyAweEUyLCAweDA3IH0sCisJeyAweEIwLCAweDA3IH0sCisJeyAweEIxLCAweDE4IH0sCisJeyAw eEIyLCAweDE5IH0sCisJeyAweEIzLCAweDJFIH0sCisJeyAweEI0LCAweDUyIH0sCisJeyAweEI1 LCAweDcyIH0sCisJeyAweEI2LCAweDhDIH0sCisJeyAweEI3LCAweEJEIH0sCisJeyAweEI4LCAw eEVCIH0sCisJeyAweEI5LCAweDQ3IH0sCisJeyAweEJBLCAweDk2IH0sCisJeyAweEJCLCAweDFF IH0sCisJeyAweEJDLCAweDkwIH0sCisJeyAweEJELCAweDkzIH0sCisJeyAweEJFLCAweEZBIH0s CisJeyAweEJGLCAweDU2IH0sCisJeyAweEMwLCAweDhDIH0sCisJeyAweEMxLCAweEI3IH0sCisJ eyAweEMyLCAweENDIH0sCisJeyAweEMzLCAweERGIH0sCisJeyAweEM0LCAweEU4IH0sCisJeyAw eEM1LCAweEYwIH0sCisJeyAweEM2LCAweEY4IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4 LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAw eDVBIH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZG IH0sCisJeyAweEIwLCAweDA4IH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAweDE1IH0s CisJeyAweEIzLCAweDJEIH0sCisJeyAweEI0LCAweDUxIH0sCisJeyAweEI1LCAweDcyIH0sCisJ eyAweEI2LCAweDhEIH0sCisJeyAweEI3LCAweEJFIH0sCisJeyAweEI4LCAweEVEIH0sCisJeyAw eEI5LCAweDRBIH0sCisJeyAweEJBLCAweDlBIH0sCisJeyAweEJCLCAweDIzIH0sCisJeyAweEJD LCAweDk1IH0sCisJeyAweEJELCAweDk4IH0sCisJeyAweEJFLCAweEZGIH0sCisJeyAweEJGLCAw eDU5IH0sCisJeyAweEMwLCAweDhFIH0sCisJeyAweEMxLCAweEI5IH0sCisJeyAweEMyLCAweENE IH0sCisJeyAweEMzLCAweERGIH0sCisJeyAweEM0LCAweEU4IH0sCisJeyAweEM1LCAweEYwIH0s CisJeyAweEM2LCAweEY4IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAweEZDIH0sCisJ eyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDVBIH0sCisJeyAw eENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIw LCAweDA5IH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAweDJDIH0sCisJeyAweEIzLCAw eDM2IH0sCisJeyAweEI0LCAweDUzIH0sCisJeyAweEI1LCAweDczIH0sCisJeyAweEI2LCAweDhF IH0sCisJeyAweEI3LCAweEMwIH0sCisJeyAweEI4LCAweEVGIH0sCisJeyAweEI5LCAweDRDIH0s CisJeyAweEJBLCAweDlEIH0sCisJeyAweEJCLCAweDI1IH0sCisJeyAweEJDLCAweDk2IH0sCisJ eyAweEJELCAweDlBIH0sCisJeyAweEJFLCAweDAxIH0sCisJeyAweEJGLCAweDU5IH0sCisJeyAw eEMwLCAweDhFIH0sCisJeyAweEMxLCAweEI5IH0sCisJeyAweEMyLCAweENEIH0sCisJeyAweEMz LCAweERGIH0sCisJeyAweEM0LCAweEU4IH0sCisJeyAweEM1LCAweEYwIH0sCisJeyAweEM2LCAw eEY4IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAw IH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDVBIH0sCisJeyAweENDLCAweEJGIH0s CisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDBBIH0sCisJ eyAweEIxLCAweDE4IH0sCisJeyAweEIyLCAweDE5IH0sCisJeyAweEIzLCAweDJFIH0sCisJeyAw eEI0LCAweDUyIH0sCisJeyAweEI1LCAweDcyIH0sCisJeyAweEI2LCAweDhDIH0sCisJeyAweEI3 LCAweEJEIH0sCisJeyAweEI4LCAweEVCIH0sCisJeyAweEI5LCAweDQ3IH0sCisJeyAweEJBLCAw eDk2IH0sCisJeyAweEJCLCAweDFFIH0sCisJeyAweEJDLCAweDkwIH0sCisJeyAweEJELCAweDkz IH0sCisJeyAweEJFLCAweEZBIH0sCisJeyAweEJGLCAweDU2IH0sCisJeyAweEMwLCAweDhDIH0s CisJeyAweEMxLCAweEI3IH0sCisJeyAweEMyLCAweENDIH0sCisJeyAweEMzLCAweERGIH0sCisJ eyAweEM0LCAweEU4IH0sCisJeyAweEM1LCAweEYwIH0sCisJeyAweEM2LCAweEY4IH0sCisJeyAw eEM3LCAweEZBIH0sCisJeyAweEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENB LCAweDAwIH0sCisJeyAweENCLCAweDVBIH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAw eEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDBCIH0sCisJeyAweEIxLCAweDA0 IH0sCisJeyAweEIyLCAweDE1IH0sCisJeyAweEIzLCAweDJEIH0sCisJeyAweEI0LCAweDUxIH0s CisJeyAweEI1LCAweDcyIH0sCisJeyAweEI2LCAweDhEIH0sCisJeyAweEI3LCAweEJFIH0sCisJ eyAweEI4LCAweEVEIH0sCisJeyAweEI5LCAweDRBIH0sCisJeyAweEJBLCAweDlBIH0sCisJeyAw eEJCLCAweDIzIH0sCisJeyAweEJDLCAweDk1IH0sCisJeyAweEJELCAweDk4IH0sCisJeyAweEJF LCAweEZGIH0sCisJeyAweEJGLCAweDU5IH0sCisJeyAweEMwLCAweDhFIH0sCisJeyAweEMxLCAw eEI5IH0sCisJeyAweEMyLCAweENEIH0sCisJeyAweEMzLCAweERGIH0sCisJeyAweEM0LCAweEU4 IH0sCisJeyAweEM1LCAweEYwIH0sCisJeyAweEM2LCAweEY4IH0sCisJeyAweEM3LCAweEZBIH0s CisJeyAweEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJ eyAweENCLCAweDVBIH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAw eENFLCAweEZGIH0sCisJeyAweEIwLCAweDBDIH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIy LCAweDJDIH0sCisJeyAweEIzLCAweDM2IH0sCisJeyAweEI0LCAweDUzIH0sCisJeyAweEI1LCAw eDczIH0sCisJeyAweEI2LCAweDhFIH0sCisJeyAweEI3LCAweEMwIH0sCisJeyAweEI4LCAweEVG IH0sCisJeyAweEI5LCAweDRDIH0sCisJeyAweEJBLCAweDlEIH0sCisJeyAweEJCLCAweDI1IH0s CisJeyAweEJDLCAweDk2IH0sCisJeyAweEJELCAweDlBIH0sCisJeyAweEJFLCAweDAxIH0sCisJ eyAweEJGLCAweDU5IH0sCisJeyAweEMwLCAweDhFIH0sCisJeyAweEMxLCAweEI5IH0sCisJeyAw eEMyLCAweENEIH0sCisJeyAweEMzLCAweERGIH0sCisJeyAweEM0LCAweEU4IH0sCisJeyAweEM1 LCAweEYwIH0sCisJeyAweEM2LCAweEY4IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAw eEZDIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDVB IH0sCisJeyAweENDLCAweEJGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0s CisJeyAweEIwLCAweDA0IH0sCisJeyAweEI1LCAweDAyIH0sCisJeyAweEI2LCAweDAxIH0sCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHBhbmVsX2Rlc2MgYm9lX2hpbWF4ODI3OWQ4cF9wYW5l bF9kZXNjID0geworCS5kaXNwbGF5X21vZGUgPSAmZGVmYXVsdF9kaXNwbGF5X21vZGUsCisJLmJw YyA9IDgsCisJLndpZHRoX21tID0gMTA3LAorCS5oZWlnaHRfbW0gPSAxNzIsCisJLm1vZGVfZmxh Z3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9ERV9WSURFT19TWU5DX1BVTFNF IHwKKwkJCU1JUElfRFNJX0NMT0NLX05PTl9DT05USU5VT1VTIHwgTUlQSV9EU0lfTU9ERV9MUE0s CisJLmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODgsCisJLmxhbmVzID0gNCwKKwkub25fY21k cyA9IGJvZV9oaW1heDgyNzlkOHBfb25fY21kcywKKwkub25fY21kc19udW0gPSAyNjAsCit9Owor CisvKiAxMCBpbmNoICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHBhbmVsX2NtZCBib2VfaGltYXg4 Mjc5ZDEwcF9vbl9jbWRzW10gPSB7CisJeyAweEIwLCAweDA1IH0sCisJeyAweEIxLCAweEU1IH0s CisJeyAweEIzLCAweDUyIH0sCisJeyAweEIwLCAweDAwIH0sCisJeyAweEI2LCAweDAzIH0sCisJ eyAweEJBLCAweDhCIH0sCisJeyAweEJGLCAweDFBIH0sCisJeyAweEMwLCAweDBGIH0sCisJeyAw eEMyLCAweDBDIH0sCisJeyAweEMzLCAweDAyIH0sCisJeyAweEM0LCAweDBDIH0sCisJeyAweEM1 LCAweDAyIH0sCisJeyAweEIwLCAweDAxIH0sCisJeyAweEUwLCAweDI2IH0sCisJeyAweEUxLCAw eDI2IH0sCisJeyAweERDLCAweDAwIH0sCisJeyAweERELCAweDAwIH0sCisJeyAweENDLCAweDI2 IH0sCisJeyAweENELCAweDI2IH0sCisJeyAweEM4LCAweDAwIH0sCisJeyAweEM5LCAweDAwIH0s CisJeyAweEQyLCAweDAzIH0sCisJeyAweEQzLCAweDAzIH0sCisJeyAweEU2LCAweDA0IH0sCisJ eyAweEU3LCAweDA0IH0sCisJeyAweEM0LCAweDA5IH0sCisJeyAweEM1LCAweDA5IH0sCisJeyAw eEQ4LCAweDBBIH0sCisJeyAweEQ5LCAweDBBIH0sCisJeyAweEMyLCAweDBCIH0sCisJeyAweEMz LCAweDBCIH0sCisJeyAweEQ2LCAweDBDIH0sCisJeyAweEQ3LCAweDBDIH0sCisJeyAweEMwLCAw eDA1IH0sCisJeyAweEMxLCAweDA1IH0sCisJeyAweEQ0LCAweDA2IH0sCisJeyAweEQ1LCAweDA2 IH0sCisJeyAweENBLCAweDA3IH0sCisJeyAweENCLCAweDA3IH0sCisJeyAweERFLCAweDA4IH0s CisJeyAweERGLCAweDA4IH0sCisJeyAweEIwLCAweDAyIH0sCisJeyAweEMwLCAweDAwIH0sCisJ eyAweEMxLCAweDBEIH0sCisJeyAweEMyLCAweDE3IH0sCisJeyAweEMzLCAweDI2IH0sCisJeyAw eEM0LCAweDMxIH0sCisJeyAweEM1LCAweDFDIH0sCisJeyAweEM2LCAweDJDIH0sCisJeyAweEM3 LCAweDMzIH0sCisJeyAweEM4LCAweDMxIH0sCisJeyAweEM5LCAweDM3IH0sCisJeyAweENBLCAw eDM3IH0sCisJeyAweENCLCAweDM3IH0sCisJeyAweENDLCAweDM5IH0sCisJeyAweENELCAweDJF IH0sCisJeyAweENFLCAweDJGIH0sCisJeyAweENGLCAweDJGIH0sCisJeyAweEQwLCAweDA3IH0s CisJeyAweEQyLCAweDAwIH0sCisJeyAweEQzLCAweDBEIH0sCisJeyAweEQ0LCAweDE3IH0sCisJ eyAweEQ1LCAweDI2IH0sCisJeyAweEQ2LCAweDMxIH0sCisJeyAweEQ3LCAweDNGIH0sCisJeyAw eEQ4LCAweDNGIH0sCisJeyAweEQ5LCAweDNGIH0sCisJeyAweERBLCAweDNGIH0sCisJeyAweERC LCAweDM3IH0sCisJeyAweERDLCAweDM3IH0sCisJeyAweERELCAweDM3IH0sCisJeyAweERFLCAw eDM5IH0sCisJeyAweERGLCAweDJFIH0sCisJeyAweEUwLCAweDJGIH0sCisJeyAweEUxLCAweDJG IH0sCisJeyAweEUyLCAweDA3IH0sCisJeyAweEIwLCAweDAzIH0sCisJeyAweEM4LCAweDBCIH0s CisJeyAweEM5LCAweDA3IH0sCisJeyAweEMzLCAweDAwIH0sCisJeyAweEU3LCAweDAwIH0sCisJ eyAweEM1LCAweDJBIH0sCisJeyAweERFLCAweDJBIH0sCisJeyAweENBLCAweDQzIH0sCisJeyAw eEM5LCAweDA3IH0sCisJeyAweEU0LCAweEMwIH0sCisJeyAweEU1LCAweDBEIH0sCisJeyAweENC LCAweDAxIH0sCisJeyAweEJDLCAweDAxIH0sCisJeyAweEIwLCAweDA2IH0sCisJeyAweEI4LCAw eEE1IH0sCisJeyAweEMwLCAweEE1IH0sCisJeyAweEM3LCAweDBGIH0sCisJeyAweEQ1LCAweDMy IH0sCisJeyAweEI4LCAweDAwIH0sCisJeyAweEMwLCAweDAwIH0sCisJeyAweEJDLCAweDAwIH0s CisJeyAweEIwLCAweDA3IH0sCisJeyAweEIxLCAweDAwIH0sCisJeyAweEIyLCAweDA1IH0sCisJ eyAweEIzLCAweDEwIH0sCisJeyAweEI0LCAweDIyIH0sCisJeyAweEI1LCAweDM2IH0sCisJeyAw eEI2LCAweDRBIH0sCisJeyAweEI3LCAweDZDIH0sCisJeyAweEI4LCAweDlBIH0sCisJeyAweEI5 LCAweEQ3IH0sCisJeyAweEJBLCAweDE3IH0sCisJeyAweEJCLCAweDkyIH0sCisJeyAweEJDLCAw eDE1IH0sCisJeyAweEJELCAweDE4IH0sCisJeyAweEJFLCAweDhDIH0sCisJeyAweEJGLCAweDAw IH0sCisJeyAweEMwLCAweDNBIH0sCisJeyAweEMxLCAweDcyIH0sCisJeyAweEMyLCAweDhDIH0s CisJeyAweEMzLCAweEE1IH0sCisJeyAweEM0LCAweEIxIH0sCisJeyAweEM1LCAweEJFIH0sCisJ eyAweEM2LCAweENBIH0sCisJeyAweEM3LCAweEQxIH0sCisJeyAweEM4LCAweEQ0IH0sCisJeyAw eEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDE2IH0sCisJeyAweEND LCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAw eDA4IH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAweDA1IH0sCisJeyAweEIzLCAweDEx IH0sCisJeyAweEI0LCAweDI0IH0sCisJeyAweEI1LCAweDM5IH0sCisJeyAweEI2LCAweDRFIH0s CisJeyAweEI3LCAweDcyIH0sCisJeyAweEI4LCAweEEzIH0sCisJeyAweEI5LCAweEUxIH0sCisJ eyAweEJBLCAweDI1IH0sCisJeyAweEJCLCAweEE4IH0sCisJeyAweEJDLCAweDJFIH0sCisJeyAw eEJELCAweDMyIH0sCisJeyAweEJFLCAweEFEIH0sCisJeyAweEJGLCAweDI4IH0sCisJeyAweEMw LCAweDYzIH0sCisJeyAweEMxLCAweDlCIH0sCisJeyAweEMyLCAweEI1IH0sCisJeyAweEMzLCAw eENGIH0sCisJeyAweEM0LCAweERCIH0sCisJeyAweEM1LCAweEU4IH0sCisJeyAweEM2LCAweEY1 IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAweEZDIH0sCisJeyAweEM5LCAweDAwIH0s CisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDE2IH0sCisJeyAweENDLCAweEFGIH0sCisJ eyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDA5IH0sCisJeyAw eEIxLCAweDA0IH0sCisJeyAweEIyLCAweDA0IH0sCisJeyAweEIzLCAweDBGIH0sCisJeyAweEI0 LCAweDIyIH0sCisJeyAweEI1LCAweDM3IH0sCisJeyAweEI2LCAweDREIH0sCisJeyAweEI3LCAw eDcxIH0sCisJeyAweEI4LCAweEEyIH0sCisJeyAweEI5LCAweEUxIH0sCisJeyAweEJBLCAweDI2 IH0sCisJeyAweEJCLCAweEE5IH0sCisJeyAweEJDLCAweDJGIH0sCisJeyAweEJELCAweDMzIH0s CisJeyAweEJFLCAweEFDIH0sCisJeyAweEJGLCAweDI0IH0sCisJeyAweEMwLCAweDVEIH0sCisJ eyAweEMxLCAweDk0IH0sCisJeyAweEMyLCAweEFDIH0sCisJeyAweEMzLCAweEM1IH0sCisJeyAw eEM0LCAweEQxIH0sCisJeyAweEM1LCAweERDIH0sCisJeyAweEM2LCAweEU4IH0sCisJeyAweEM3 LCAweEVEIH0sCisJeyAweEM4LCAweEYwIH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAw eDAwIH0sCisJeyAweENCLCAweDE2IH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZG IH0sCisJeyAweENFLCAweEZGIH0sCisJeyAweEIwLCAweDBBIH0sCisJeyAweEIxLCAweDAwIH0s CisJeyAweEIyLCAweDA1IH0sCisJeyAweEIzLCAweDEwIH0sCisJeyAweEI0LCAweDIyIH0sCisJ eyAweEI1LCAweDM2IH0sCisJeyAweEI2LCAweDRBIH0sCisJeyAweEI3LCAweDZDIH0sCisJeyAw eEI4LCAweDlBIH0sCisJeyAweEI5LCAweEQ3IH0sCisJeyAweEJBLCAweDE3IH0sCisJeyAweEJC LCAweDkyIH0sCisJeyAweEJDLCAweDE1IH0sCisJeyAweEJELCAweDE4IH0sCisJeyAweEJFLCAw eDhDIH0sCisJeyAweEJGLCAweDAwIH0sCisJeyAweEMwLCAweDNBIH0sCisJeyAweEMxLCAweDcy IH0sCisJeyAweEMyLCAweDhDIH0sCisJeyAweEMzLCAweEE1IH0sCisJeyAweEM0LCAweEIxIH0s CisJeyAweEM1LCAweEJFIH0sCisJeyAweEM2LCAweENBIH0sCisJeyAweEM3LCAweEQxIH0sCisJ eyAweEM4LCAweEQ0IH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAw eENCLCAweDE2IH0sCisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENF LCAweEZGIH0sCisJeyAweEIwLCAweDBCIH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAw eDA1IH0sCisJeyAweEIzLCAweDExIH0sCisJeyAweEI0LCAweDI0IH0sCisJeyAweEI1LCAweDM5 IH0sCisJeyAweEI2LCAweDRFIH0sCisJeyAweEI3LCAweDcyIH0sCisJeyAweEI4LCAweEEzIH0s CisJeyAweEI5LCAweEUxIH0sCisJeyAweEJBLCAweDI1IH0sCisJeyAweEJCLCAweEE4IH0sCisJ eyAweEJDLCAweDJFIH0sCisJeyAweEJELCAweDMyIH0sCisJeyAweEJFLCAweEFEIH0sCisJeyAw eEJGLCAweDI4IH0sCisJeyAweEMwLCAweDYzIH0sCisJeyAweEMxLCAweDlCIH0sCisJeyAweEMy LCAweEI1IH0sCisJeyAweEMzLCAweENGIH0sCisJeyAweEM0LCAweERCIH0sCisJeyAweEM1LCAw eEU4IH0sCisJeyAweEM2LCAweEY1IH0sCisJeyAweEM3LCAweEZBIH0sCisJeyAweEM4LCAweEZD IH0sCisJeyAweEM5LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDE2IH0s CisJeyAweENDLCAweEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCisJ eyAweEIwLCAweDBDIH0sCisJeyAweEIxLCAweDA0IH0sCisJeyAweEIyLCAweDA0IH0sCisJeyAw eEIzLCAweDBGIH0sCisJeyAweEI0LCAweDIyIH0sCisJeyAweEI1LCAweDM3IH0sCisJeyAweEI2 LCAweDREIH0sCisJeyAweEI3LCAweDcxIH0sCisJeyAweEI4LCAweEEyIH0sCisJeyAweEI5LCAw eEUxIH0sCisJeyAweEJBLCAweDI2IH0sCisJeyAweEJCLCAweEE5IH0sCisJeyAweEJDLCAweDJG IH0sCisJeyAweEJELCAweDMzIH0sCisJeyAweEJFLCAweEFDIH0sCisJeyAweEJGLCAweDI0IH0s CisJeyAweEMwLCAweDVEIH0sCisJeyAweEMxLCAweDk0IH0sCisJeyAweEMyLCAweEFDIH0sCisJ eyAweEMzLCAweEM1IH0sCisJeyAweEM0LCAweEQxIH0sCisJeyAweEM1LCAweERDIH0sCisJeyAw eEM2LCAweEU4IH0sCisJeyAweEM3LCAweEVEIH0sCisJeyAweEM4LCAweEYwIH0sCisJeyAweEM5 LCAweDAwIH0sCisJeyAweENBLCAweDAwIH0sCisJeyAweENCLCAweDE2IH0sCisJeyAweENDLCAw eEFGIH0sCisJeyAweENELCAweEZGIH0sCisJeyAweENFLCAweEZGIH0sCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IHBhbmVsX2Rlc2MgYm9lX2hpbWF4ODI3OWQxMHBfcGFuZWxfZGVzYyA9IHsK KwkuZGlzcGxheV9tb2RlID0gJmRlZmF1bHRfZGlzcGxheV9tb2RlLAorCS5icGMgPSA4LAorCS53 aWR0aF9tbSA9IDEzNSwKKwkuaGVpZ2h0X21tID0gMjE2LAorCS5tb2RlX2ZsYWdzID0gTUlQSV9E U0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRSB8CisJCQlNSVBJ X0RTSV9DTE9DS19OT05fQ09OVElOVU9VUyB8IE1JUElfRFNJX01PREVfTFBNLAorCS5mb3JtYXQg PSBNSVBJX0RTSV9GTVRfUkdCODg4LAorCS5sYW5lcyA9IDQsCisJLm9uX2NtZHMgPSBib2VfaGlt YXg4Mjc5ZDEwcF9vbl9jbWRzLAorCS5vbl9jbWRzX251bSA9IDI4MywKK307CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBhbmVsX29mX21hdGNoW10gPSB7CisJeworCQkuY29t cGF0aWJsZSA9ICJib2UsaGltYXg4Mjc5ZDhwIiwKKwkJLmRhdGEgPSAmYm9lX2hpbWF4ODI3OWQ4 cF9wYW5lbF9kZXNjLAorCX0sCisJeworCQkuY29tcGF0aWJsZSA9ICJib2UsaGltYXg4Mjc5ZDEw cCIsCisJCS5kYXRhID0gJmJvZV9oaW1heDgyNzlkMTBwX3BhbmVsX2Rlc2MsCisJfSwKKwl7CisJ CS8qIHNlbnRpbmVsICovCisJfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHBhbmVsX29m X21hdGNoKTsKKworc3RhdGljIGludCBwYW5lbF9hZGQoc3RydWN0IHBhbmVsX2luZm8gKnBpbmZv KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwaW5mby0+bGluay0+ZGV2OworCWludCByZXQ7 CisKKwlwaW5mby0+cHAxOF9ncGlvID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAicHAxOCIsIEdQSU9E X09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKHBpbmZvLT5wcDE4X2dwaW8pKSB7CisJCXJldCA9IFBU Ul9FUlIocGluZm8tPnBwMThfZ3Bpbyk7CisJCWlmIChyZXQgIT0gLUVQUk9CRV9ERUZFUikKKwkJ CURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRvIGdldCBwcDE4IGdwaW86ICVkXG4iLAorCQkJ CSAgICAgIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcGluZm8tPnBwMzNfZ3BpbyA9IGRl dm1fZ3Bpb2RfZ2V0KGRldiwgInBwMzMiLCBHUElPRF9PVVRfSElHSCk7CisJaWYgKElTX0VSUihw aW5mby0+cHAzM19ncGlvKSkgeworCQlyZXQgPSBQVFJfRVJSKHBpbmZvLT5wcDMzX2dwaW8pOwor CQlpZiAocmV0ICE9IC1FUFJPQkVfREVGRVIpCisJCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxl ZCB0byBnZXQgcHAzMyBncGlvOiAlZFxuIiwKKwkJCQkgICAgICByZXQpOworCQlyZXR1cm4gcmV0 OworCX0KKworCXBpbmZvLT5lbmFibGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgImVuYWJs ZSIsIEdQSU9EX09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKHBpbmZvLT5lbmFibGVfZ3BpbykpIHsK KwkJcmV0ID0gUFRSX0VSUihwaW5mby0+ZW5hYmxlX2dwaW8pOworCQlpZiAocmV0ICE9IC1FUFJP QkVfREVGRVIpCisJCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBnZXQgZW5hYmxlIGdw aW86ICVkXG4iLAorCQkJCSAgICAgIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcGluZm8t PmJhY2tsaWdodCA9IGRldm1fb2ZfZmluZF9iYWNrbGlnaHQoZGV2KTsKKwlpZiAoSVNfRVJSKHBp bmZvLT5iYWNrbGlnaHQpKQorCQlyZXR1cm4gUFRSX0VSUihwaW5mby0+YmFja2xpZ2h0KTsKKwor CWRybV9wYW5lbF9pbml0KCZwaW5mby0+YmFzZSwgZGV2LCAmcGFuZWxfZnVuY3MsCisJCSAgICAg ICBEUk1fTU9ERV9DT05ORUNUT1JfRFNJKTsKKworCXJldHVybiBkcm1fcGFuZWxfYWRkKCZwaW5m by0+YmFzZSk7Cit9CisKK3N0YXRpYyBpbnQgcGFuZWxfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2Rl dmljZSAqZHNpKQoreworCXN0cnVjdCBwYW5lbF9pbmZvICpwaW5mbzsKKwljb25zdCBzdHJ1Y3Qg cGFuZWxfZGVzYyAqZGVzYzsKKwlpbnQgZXJyOworCisJcGluZm8gPSBkZXZtX2t6YWxsb2MoJmRz aS0+ZGV2LCBzaXplb2YoKnBpbmZvKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFwaW5mbykKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlkZXNjID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZkc2ktPmRl dik7CisJZHNpLT5tb2RlX2ZsYWdzID0gZGVzYy0+bW9kZV9mbGFnczsKKwlkc2ktPmZvcm1hdCA9 IGRlc2MtPmZvcm1hdDsKKwlkc2ktPmxhbmVzID0gZGVzYy0+bGFuZXM7CisJcGluZm8tPmRlc2Mg PSBkZXNjOworCisJcGluZm8tPmxpbmsgPSBkc2k7CisJbWlwaV9kc2lfc2V0X2RydmRhdGEoZHNp LCBwaW5mbyk7CisKKwllcnIgPSBwYW5lbF9hZGQocGluZm8pOworCWlmIChlcnIgPCAwKQorCQly ZXR1cm4gZXJyOworCisJZXJyID0gbWlwaV9kc2lfYXR0YWNoKGRzaSk7CisJaWYgKGVyciA8IDAp CisJCWRybV9wYW5lbF9yZW1vdmUoJnBpbmZvLT5iYXNlKTsKKworCXJldHVybiBlcnI7Cit9CisK K3N0YXRpYyBpbnQgcGFuZWxfcmVtb3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sK KwlzdHJ1Y3QgcGFuZWxfaW5mbyAqcGluZm8gPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwor CWludCBlcnI7CisKKwllcnIgPSBib2VfcGFuZWxfZGlzYWJsZSgmcGluZm8tPmJhc2UpOworCWlm IChlcnIgPCAwKQorCQlEUk1fREVWX0VSUk9SKCZkc2ktPmRldiwgImZhaWxlZCB0byBkaXNhYmxl IHBhbmVsOiAlZFxuIiwKKwkJCSAgICAgIGVycik7CisKKwllcnIgPSBib2VfcGFuZWxfdW5wcmVw YXJlKCZwaW5mby0+YmFzZSk7CisJaWYgKGVyciA8IDApCisJCURSTV9ERVZfRVJST1IoJmRzaS0+ ZGV2LCAiZmFpbGVkIHRvIHVucHJlcGFyZSBwYW5lbDogJWRcbiIsCisJCQkgICAgICBlcnIpOwor CisJZXJyID0gbWlwaV9kc2lfZGV0YWNoKGRzaSk7CisJaWYgKGVyciA8IDApCisJCURSTV9ERVZf RVJST1IoJmRzaS0+ZGV2LCAiZmFpbGVkIHRvIGRldGFjaCBmcm9tIERTSSBob3N0OiAlZFxuIiwK KwkJCSAgICAgIGVycik7CisKKwlkcm1fcGFuZWxfcmVtb3ZlKCZwaW5mby0+YmFzZSk7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcGFuZWxfc2h1dGRvd24oc3RydWN0IG1pcGlfZHNp X2RldmljZSAqZHNpKQoreworCXN0cnVjdCBwYW5lbF9pbmZvICpwaW5mbyA9IG1pcGlfZHNpX2dl dF9kcnZkYXRhKGRzaSk7CisKKwlib2VfcGFuZWxfZGlzYWJsZSgmcGluZm8tPmJhc2UpOworCWJv ZV9wYW5lbF91bnByZXBhcmUoJnBpbmZvLT5iYXNlKTsKK30KKworc3RhdGljIHN0cnVjdCBtaXBp X2RzaV9kcml2ZXIgcGFuZWxfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gInBh bmVsLWJvZS1oaW1heDgyNzlkIiwKKwkJLm9mX21hdGNoX3RhYmxlID0gcGFuZWxfb2ZfbWF0Y2gs CisJfSwKKwkucHJvYmUgPSBwYW5lbF9wcm9iZSwKKwkucmVtb3ZlID0gcGFuZWxfcmVtb3ZlLAor CS5zaHV0ZG93biA9IHBhbmVsX3NodXRkb3duLAorfTsKK21vZHVsZV9taXBpX2RzaV9kcml2ZXIo cGFuZWxfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiSmVycnkgSGFuIDxqZXJyeS5oYW4uaHFA Z21haWwuY29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJCb2UgSGltYXg4Mjc5ZCBkcml2ZXIi KTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs