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 BBACDC4332F for ; Wed, 19 Oct 2022 15:36:31 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=F3oKaQ1T42Up0lsFcyNkfXLk2HM0KfDNSQoCe3qBdGQ=; b=H07d4hi/RD6mSv AlckL7n8Z7kvVf8XR+mvxpiXaa1g2oRPCaNcNv+MzVnunDYlvmwtbqsHg13AzRXNS+uwAHdBhtrJy 7F5jAanSJ+rmCIR3HX0d6uPr5ldiANCkZdOI+9PoWk5cKm4+n91mg1yvBP7TlP/0GBaqTIS5zad8f 9Qn67nz3eIO1ihSVldPBPltIErqwBvbDQTSeNb0ddyPe7Fi2r0kPXbOByE04M3m59+d2TkMhHn5Gl Zv6AysNy23y8lddUUID+niObvYhpRcdkxsuWIyiEyV8UUqEF8LcN2mQ6U8Fy3Z+ILAVByBjS1sowk jtTbnhCQOrgIePGu4E/w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1olB5c-003Jj0-0R; Wed, 19 Oct 2022 15:34:41 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1olAkw-0037LX-Iy for linux-arm-kernel@lists.infradead.org; Wed, 19 Oct 2022 15:13:25 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 96137618D7; Wed, 19 Oct 2022 15:13:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7435C433D7; Wed, 19 Oct 2022 15:13:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666192396; bh=cjxPuXIUh06Ba3GXCFfVn99lEclLPcRfw+NxBEe4Kg0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hcqsxINcYzTT3DkcHDdYLB3QHhzbGuZGKInydfT12xgHvQHRd+WIXuP/R+G72JcGv 8UsKYmj1ahxyJmVtwy5znbGtIhatHTgimQ0bKYqVvLf5nT+uoyLG5DlBiSi6wqg8aK HQ7odPwMV3m+iM8lqW+mtYrxkBcwzKfb/bfSHmu4Qr5I1og+Bapxwt6ZVQkX/G2KoZ cGkayXvERL+uxCqkHHjG+BVfiodRgnUnAFLCeVdM3ykW5bKp/Z3iYkiKGbHS5rD5Fm UwAx1OMTozZCpDzK8nNraeh4avjKSnvrpt1R9KBMir1uZtRg/J1vsfUk/yGd0yCJYi JEBd8KCEwHd2w== From: Arnd Bergmann To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Arnd Bergmann , Dan Williams , Lennert Buytenhek , Martin Michlmayr , linux-i2c@vger.kernel.org Subject: [PATCH 09/17] ARM: iop32x: remove the platform Date: Wed, 19 Oct 2022 17:03:31 +0200 Message-Id: <20221019150410.3851944-9-arnd@kernel.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20221019150410.3851944-1-arnd@kernel.org> References: <20221019144119.3848027-1-arnd@kernel.org> <20221019150410.3851944-1-arnd@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221019_081318_941187_ACBF589F X-CRM114-Status: GOOD ( 23.17 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogQXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KClRoaXMgd2FzIG1hcmtlZCBhcyB1 bnVzZWQgaW4gNS4xOSBhbmQgY2FuIG5vdyBiZSByZW1vdmVkCgpDYzogRGFuIFdpbGxpYW1zIDxk YW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNjOiBMZW5uZXJ0IEJ1eXRlbmhlayA8a2VybmVsQHdh bnRzdG9mbHkub3JnPgpDYzogTWFydGluIE1pY2hsbWF5ciA8dGJtQGN5cml1cy5jb20+ClNpZ25l ZC1vZmYtYnk6IEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+Ci0tLQogTUFJTlRBSU5FUlMg ICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCAtLS0KIGFyY2gvYXJtL0tjb25maWcgICAgICAg ICAgICAgICAgICAgfCAgIDQgKy0KIGFyY2gvYXJtL0tjb25maWcuZGVidWcgICAgICAgICAgICAg fCAgIDYgKy0KIGFyY2gvYXJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgIDEgLQogYXJj aC9hcm0vY29uZmlncy9pb3AzMnhfZGVmY29uZmlnICB8IDEyNiAtLS0tLS0tLS0KIGFyY2gvYXJt L2tlcm5lbC9lbnRyeS1jb21tb24uUyAgICAgfCAgMTUgLS0KIGFyY2gvYXJtL21hY2gtaW9wMzJ4 L0tjb25maWcgICAgICAgfCAgNTQgLS0tLQogYXJjaC9hcm0vbWFjaC1pb3AzMngvTWFrZWZpbGUg ICAgICB8ICAyMCAtLQogYXJjaC9hcm0vbWFjaC1pb3AzMngvYWRtYS5jICAgICAgICB8IDE2MyAt LS0tLS0tLS0tLS0KIGFyY2gvYXJtL21hY2gtaW9wMzJ4L2NwNi5jICAgICAgICAgfCAgNDggLS0t LQogYXJjaC9hcm0vbWFjaC1pb3AzMngvZW03MjEwLmMgICAgICB8IDIzMiAtLS0tLS0tLS0tLS0t LS0tLQogYXJjaC9hcm0vbWFjaC1pb3AzMngvZ2xhbnRhbmsuYyAgICB8IDIxNCAtLS0tLS0tLS0t LS0tLS0KIGFyY2gvYXJtL21hY2gtaW9wMzJ4L2dsYW50YW5rLmggICAgfCAgMTIgLQogYXJjaC9h cm0vbWFjaC1pb3AzMngvZ3Bpby1pb3AzMnguaCB8ICAxMSAtCiBhcmNoL2FybS9tYWNoLWlvcDMy eC9oYXJkd2FyZS5oICAgIHwgIDM4IC0tLQogYXJjaC9hcm0vbWFjaC1pb3AzMngvaTJjLmMgICAg ICAgICB8ICA5MiAtLS0tLS0tCiBhcmNoL2FybS9tYWNoLWlvcDMyeC9pb3AzeHguaCAgICAgIHwg MzI2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBhcmNoL2FybS9tYWNoLWlvcDMyeC9pcTMxMjQ0 LmMgICAgIHwgMzMzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC9hcm0vbWFjaC1pb3Az MngvaXEzMTI0NC5oICAgICB8ICAxNiAtLQogYXJjaC9hcm0vbWFjaC1pb3AzMngvaXE4MDMyMS5j ICAgICB8IDE5MiAtLS0tLS0tLS0tLS0tLQogYXJjaC9hcm0vbWFjaC1pb3AzMngvaXE4MDMyMS5o ICAgICB8ICAxNiAtLQogYXJjaC9hcm0vbWFjaC1pb3AzMngvaXJxLmMgICAgICAgICB8ICA5NSAt LS0tLS0tCiBhcmNoL2FybS9tYWNoLWlvcDMyeC9pcnFzLmggICAgICAgIHwgIDQ4IC0tLS0KIGFy Y2gvYXJtL21hY2gtaW9wMzJ4L24yMTAwLmMgICAgICAgfCAzNjcgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIGFyY2gvYXJtL21hY2gtaW9wMzJ4L24yMTAwLmggICAgICAgfCAgMTggLS0KIGFy Y2gvYXJtL21hY2gtaW9wMzJ4L3BjaS5jICAgICAgICAgfCA0MDQgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIGFyY2gvYXJtL21hY2gtaW9wMzJ4L3BtdS5jICAgICAgICAgfCAgMjkgLS0t CiBhcmNoL2FybS9tYWNoLWlvcDMyeC9yZXN0YXJ0LmMgICAgIHwgIDE3IC0tCiBhcmNoL2FybS9t YWNoLWlvcDMyeC9zZXR1cC5jICAgICAgIHwgIDMxIC0tLQogYXJjaC9hcm0vbWFjaC1pb3AzMngv dGltZS5jICAgICAgICB8IDE3OSAtLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2kyYy9idXNzZXMvS2Nv bmZpZyAgICAgICAgIHwgICA2ICstCiAzMSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyks IDMxMzcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vY29uZmlncy9p b3AzMnhfZGVmY29uZmlnCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1pb3AzMngv S2NvbmZpZwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtaW9wMzJ4L01ha2VmaWxl CiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1pb3AzMngvYWRtYS5jCiBkZWxldGUg bW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1pb3AzMngvY3A2LmMKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBhcmNoL2FybS9tYWNoLWlvcDMyeC9lbTcyMTAuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gv YXJtL21hY2gtaW9wMzJ4L2dsYW50YW5rLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9t YWNoLWlvcDMyeC9nbGFudGFuay5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1p b3AzMngvZ3Bpby1pb3AzMnguaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtaW9w MzJ4L2hhcmR3YXJlLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLWlvcDMyeC9p MmMuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtaW9wMzJ4L2lvcDN4eC5oCiBk ZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1pb3AzMngvaXEzMTI0NC5jCiBkZWxldGUg bW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1pb3AzMngvaXEzMTI0NC5oCiBkZWxldGUgbW9kZSAx MDA2NDQgYXJjaC9hcm0vbWFjaC1pb3AzMngvaXE4MDMyMS5jCiBkZWxldGUgbW9kZSAxMDA2NDQg YXJjaC9hcm0vbWFjaC1pb3AzMngvaXE4MDMyMS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9h cm0vbWFjaC1pb3AzMngvaXJxLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLWlv cDMyeC9pcnFzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLWlvcDMyeC9uMjEw MC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1pb3AzMngvbjIxMDAuaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtL21hY2gtaW9wMzJ4L3BjaS5jCiBkZWxldGUgbW9kZSAx MDA2NDQgYXJjaC9hcm0vbWFjaC1pb3AzMngvcG11LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybS9tYWNoLWlvcDMyeC9yZXN0YXJ0LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9t YWNoLWlvcDMyeC9zZXR1cC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vbWFjaC1pb3Az MngvdGltZS5jCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCA4 OWY3MmRiYThlNjQuLmRhMWZmNDY4ZTI3ZCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIv TUFJTlRBSU5FUlMKQEAgLTIyMTUsMjEgKzIyMTUsNiBAQCBMOglsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQogUzoJTWFp bnRhaW5lZAogRjoJYXJjaC9hcm0vbWFjaC1weGEvY29saWJyaS1weGEyNzAtaW5jb21lLmMKIAot QVJNL0lOVEVMIElPUDMyWCBBUk0gQVJDSElURUNUVVJFCi1NOglMZW5uZXJ0IEJ1eXRlbmhlayA8 a2VybmVsQHdhbnRzdG9mbHkub3JnPgotTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKLVM6CU1haW50YWluZWQKLQot QVJNL0lOVEVMIElRODEzNDJFWCBNQUNISU5FIFNVUFBPUlQKLU06CUxlbm5lcnQgQnV5dGVuaGVr IDxrZXJuZWxAd2FudHN0b2ZseS5vcmc+Ci1MOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQotUzoJTWFpbnRhaW5lZAot Ci1BUk0vSU5URUwgSVhEUDI4NTAgTUFDSElORSBTVVBQT1JUCi1NOglMZW5uZXJ0IEJ1eXRlbmhl ayA8a2VybmVsQHdhbnRzdG9mbHkub3JnPgotTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKLVM6CU1haW50YWluZWQK LQogQVJNL0lOVEVMIElYUDRYWCBBUk0gQVJDSElURUNUVVJFCiBNOglMaW51cyBXYWxsZWlqIDxs aW51c3dAa2VybmVsLm9yZz4KIE06CUltcmUgS2Fsb3ogPGthbG96QG9wZW53cnQub3JnPgpAQCAt MjYzNSwxMSArMjYyMCw2IEBAIEY6CWluY2x1ZGUvZHQtYmluZGluZ3MvKi9xY29tKgogRjoJaW5j bHVkZS9saW51eC8qL3Fjb20qCiBGOglpbmNsdWRlL2xpbnV4L3NvYy9xY29tLwogCi1BUk0vUkFE SVNZUyBFTlAyNjExIE1BQ0hJTkUgU1VQUE9SVAotTToJTGVubmVydCBCdXl0ZW5oZWsgPGtlcm5l bEB3YW50c3RvZmx5Lm9yZz4KLUw6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCi1TOglNYWludGFpbmVkCi0KIEFSTS9S REEgTUlDUk8gQVJDSElURUNUVVJFCiBNOglNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1hbml2YW5u YW4uc2FkaGFzaXZhbUBsaW5hcm8ub3JnPgogTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKQEAgLTI5NzEsMTEgKzI5 NTEsNiBAQCBGOglhcmNoL2FybTY0L2Jvb3QvZHRzL3RpL01ha2VmaWxlCiBGOglhcmNoL2FybTY0 L2Jvb3QvZHRzL3RpL2szLSoKIEY6CWluY2x1ZGUvZHQtYmluZGluZ3MvcGluY3RybC9rMy5oCiAK LUFSTS9USEVDVVMgTjIxMDAgTUFDSElORSBTVVBQT1JUCi1NOglMZW5uZXJ0IEJ1eXRlbmhlayA8 a2VybmVsQHdhbnRzdG9mbHkub3JnPgotTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKLVM6CU1haW50YWluZWQKLQog QVJNL1RPU0EgTUFDSElORSBTVVBQT1JUCiBNOglEbWl0cnkgRXJlbWluLVNvbGVuaWtvdiA8ZGJh cnlzaGtvdkBnbWFpbC5jb20+CiBNOglEaXJrIE9wZmVyIDxkaXJrQG9wZmVyLW9ubGluZS5kZT4K QEAgLTEwMzA3LDExICsxMDI4Miw2IEBAIFQ6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv c2NtL2xpbnV4L2tlcm5lbC9naXQvam9yby9pb21tdS5naXQKIEY6CWRyaXZlcnMvaW9tbXUvaW50 ZWwvCiBGOglpbmNsdWRlL2xpbnV4L2ludGVsLXN2bS5oCiAKLUlOVEVMIElPUC1BRE1BIERNQSBE UklWRVIKLVI6CURhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgotUzoJT2Rk IGZpeGVzCi1GOglkcml2ZXJzL2RtYS9pb3AtYWRtYS5jCi0KIElOVEVMIElQVTMgQ1NJLTIgQ0lP MiBEUklWRVIKIE06CVlvbmcgWmhpIDx5b25nLnpoaUBpbnRlbC5jb20+CiBNOglTYWthcmkgQWls dXMgPHNha2FyaS5haWx1c0BsaW51eC5pbnRlbC5jb20+CmRpZmYgLS1naXQgYS9hcmNoL2FybS9L Y29uZmlnIGIvYXJjaC9hcm0vS2NvbmZpZwppbmRleCBlNThkYWIwMzAzZTYuLjY5OGQ4ODM0M2U4 ZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vS2NvbmZpZworKysgYi9hcmNoL2FybS9LY29uZmlnCkBA IC0yODAsNyArMjgwLDcgQEAgY29uZmlnIFBIWVNfT0ZGU0VUCiAJZGVmYXVsdCAweDAwMDAwMDAw IGlmIEFSQ0hfRk9PVEJSSURHRQogCWRlZmF1bHQgMHgxMDAwMDAwMCBpZiBBUkNIX09NQVAxIHx8 IEFSQ0hfUlBDCiAJZGVmYXVsdCAweDMwMDAwMDAwIGlmIEFSQ0hfUzNDMjRYWAotCWRlZmF1bHQg MHhhMDAwMDAwMCBpZiBBUkNIX0lPUDMyWCB8fCBBUkNIX1BYQQorCWRlZmF1bHQgMHhhMDAwMDAw MCBpZiBBUkNIX1BYQQogCWRlZmF1bHQgMHhjMDAwMDAwMCBpZiBBUkNIX0VQOTNYWCB8fCBBUkNI X1NBMTEwMAogCWRlZmF1bHQgMAogCWhlbHAKQEAgLTQ1NSw4ICs0NTUsNiBAQCBzb3VyY2UgImFy Y2gvYXJtL21hY2gtaHBlL0tjb25maWciCiAKIHNvdXJjZSAiYXJjaC9hcm0vbWFjaC1pbXgvS2Nv bmZpZyIKIAotc291cmNlICJhcmNoL2FybS9tYWNoLWlvcDMyeC9LY29uZmlnIgotCiBzb3VyY2Ug ImFyY2gvYXJtL21hY2gtaXhwNHh4L0tjb25maWciCiAKIHNvdXJjZSAiYXJjaC9hcm0vbWFjaC1r ZXlzdG9uZS9LY29uZmlnIgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vS2NvbmZpZy5kZWJ1ZyBiL2Fy Y2gvYXJtL0tjb25maWcuZGVidWcKaW5kZXggM2IxMWUxZDA0NjI1Li4zMjBjOTNmYWJiMjEgMTAw NjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcuZGVidWcKKysrIGIvYXJjaC9hcm0vS2NvbmZpZy5k ZWJ1ZwpAQCAtMTYxMCw3ICsxNjEwLDcgQEAgY29uZmlnIERFQlVHX1VBUlRfUEwwMVgKIAogIyBD b21wYXRpYmlsaXR5IG9wdGlvbnMgZm9yIDgyNTAKIGNvbmZpZyBERUJVR19VQVJUXzgyNTAKLQlk ZWZfYm9vbCBBUkNIX0lPUDMyWCB8fCBBUkNIX0lYUDRYWCB8fCBBUkNIX1JQQworCWRlZl9ib29s IEFSQ0hfSVhQNFhYIHx8IEFSQ0hfUlBDCiAKIGNvbmZpZyBERUJVR19VQVJUX1BIWVMKIAloZXgg IlBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiBkZWJ1ZyBVQVJUIgpAQCAtMTcyMCw3ICsxNzIwLDYg QEAgY29uZmlnIERFQlVHX1VBUlRfUEhZUwogCWRlZmF1bHQgMHhmY2IwMDAwMCBpZiBERUJVR19I STM2MjBfVUFSVAogCWRlZmF1bHQgMHhmZDg4MzAwMCBpZiBERUJVR19BTFBJTkVfVUFSVDAKIAlk ZWZhdWx0IDB4ZmU1MzEwMDAgaWYgREVCVUdfU1RJSDQxWF9TQkNfQVNDMQotCWRlZmF1bHQgMHhm ZTgwMDAwMCBpZiBBUkNIX0lPUDMyWAogCWRlZmF1bHQgMHhmZWQzMjAwMCBpZiBERUJVR19TVElI NDFYX0FTQzIKIAlkZWZhdWx0IDB4ZmY2OTAwMDAgaWYgREVCVUdfUkszMl9VQVJUMgogCWRlZmF1 bHQgMHhmZmMwMjAwMCBpZiBERUJVR19TT0NGUEdBX1VBUlQwCkBAIC0xODI1LDcgKzE4MjQsNiBA QCBjb25maWcgREVCVUdfVUFSVF9WSVJUCiAJZGVmYXVsdCAweGZlMDE4MDAwIGlmIERFQlVHX01N UF9VQVJUMwogCWRlZmF1bHQgMHhmZTEwMDAwMCBpZiBERUJVR19JTVgyM19VQVJUIHx8IERFQlVH X0lNWDI4X1VBUlQKIAlkZWZhdWx0IDB4ZmUzMDAwMDAgaWYgREVCVUdfQkNNX0tPTkFfVUFSVAot CWRlZmF1bHQgMHhmZTgwMDAwMCBpZiBBUkNIX0lPUDMyWAogCWRlZmF1bHQgMHhmZWIwMDAwMCBp ZiBERUJVR19ISTM2MjBfVUFSVCB8fCBERUJVR19ISVg1SEQyX1VBUlQKIAlkZWZhdWx0IDB4ZmVi MjQwMDAgaWYgREVCVUdfUkszWF9VQVJUMAogCWRlZmF1bHQgMHhmZWIyNjAwMCBpZiBERUJVR19S SzNYX1VBUlQxCkBAIC0xODY3LDcgKzE4NjUsNyBAQCBjb25maWcgREVCVUdfVUFSVF9WSVJUCiBj b25maWcgREVCVUdfVUFSVF84MjUwX1NISUZUCiAJaW50ICJSZWdpc3RlciBvZmZzZXQgc2hpZnQg Zm9yIHRoZSA4MjUwIGRlYnVnIFVBUlQiCiAJZGVwZW5kcyBvbiBERUJVR19MTF9VQVJUXzgyNTAg fHwgREVCVUdfVUFSVF84MjUwCi0JZGVmYXVsdCAwIGlmIERFQlVHX0ZPT1RCUklER0VfQ09NMSB8 fCBBUkNIX0lPUDMyWCB8fCBERUJVR19CQ01fNTMwMVggfHwgXAorCWRlZmF1bHQgMCBpZiBERUJV R19GT09UQlJJREdFX0NPTTEgfHwgREVCVUdfQkNNXzUzMDFYIHx8IFwKIAkJREVCVUdfQkNNX0hS MiB8fCBERUJVR19PTUFQN1hYVUFSVDEgfHwgREVCVUdfT01BUDdYWFVBUlQyIHx8IFwKIAkJREVC VUdfT01BUDdYWFVBUlQzCiAJZGVmYXVsdCAzIGlmIERFQlVHX01TVEFSVjdfUE1VQVJUCmRpZmYg LS1naXQgYS9hcmNoL2FybS9NYWtlZmlsZSBiL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IGJlZGEy MjkxMWZlYi4uMWE2MjAzNWQxMjA3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9NYWtlZmlsZQorKysg Yi9hcmNoL2FybS9NYWtlZmlsZQpAQCAtMTc5LDcgKzE3OSw2IEBAIG1hY2hpbmUtJChDT05GSUdf QVJDSF9HRU1JTkkpCQkrPSBnZW1pbmkKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9ISUdIQkFOSykJ CSs9IGhpZ2hiYW5rCiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfSElTSSkJCSs9IGhpc2kKIG1hY2hp bmUtJChDT05GSUdfQVJDSF9IUEUpCQkrPSBocGUKLW1hY2hpbmUtJChDT05GSUdfQVJDSF9JT1Az MlgpCQkrPSBpb3AzMngKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9JWFA0WFgpCQkrPSBpeHA0eHgK IG1hY2hpbmUtJChDT05GSUdfQVJDSF9LRVlTVE9ORSkJCSs9IGtleXN0b25lCiBtYWNoaW5lLSQo Q09ORklHX0FSQ0hfTFBDMThYWCkJCSs9IGxwYzE4eHgKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Nv bmZpZ3MvaW9wMzJ4X2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3MvaW9wMzJ4X2RlZmNvbmZp ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTllMzBlNzkwZDM1Li4wMDAwMDAwMDAw MDAKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9pb3AzMnhfZGVmY29uZmlnCisrKyAvZGV2L251bGwK QEAgLTEsMTI2ICswLDAgQEAKLUNPTkZJR19TWVNWSVBDPXkKLUNPTkZJR19CU0RfUFJPQ0VTU19B Q0NUPXkKLUNPTkZJR19MT0dfQlVGX1NISUZUPTE0Ci1DT05GSUdfQkxLX0RFVl9JTklUUkQ9eQot Q09ORklHX0tBTExTWU1TX0FMTD15Ci0jIENPTkZJR19BUkNIX01VTFRJX1Y3IGlzIG5vdCBzZXQK LUNPTkZJR19BUkNIX0lPUDMyWD15Ci1DT05GSUdfTUFDSF9HTEFOVEFOSz15Ci1DT05GSUdfQVJD SF9JUTgwMzIxPXkKLUNPTkZJR19BUkNIX0lRMzEyNDQ9eQotQ09ORklHX01BQ0hfTjIxMDA9eQot Q09ORklHX1VOVVNFRF9CT0FSRF9GSUxFUz15Ci1DT05GSUdfQ01ETElORT0iY29uc29sZT10dHlT MCwxMTUyMDAgcm9vdD0vZGV2L25mcyBpcD1ib290cCBjYWNoZXBvbGljeT13cml0ZWFsbG9jIgot Q09ORklHX0ZQRV9OV0ZQRT15Ci1DT05GSUdfTU9EVUxFUz15Ci1DT05GSUdfTU9EVUxFX1VOTE9B RD15Ci1DT05GSUdfUEFSVElUSU9OX0FEVkFOQ0VEPXkKLUNPTkZJR19TTEFCPXkKLUNPTkZJR19O RVQ9eQotQ09ORklHX1BBQ0tFVD15Ci1DT05GSUdfVU5JWD15Ci1DT05GSUdfSU5FVD15Ci1DT05G SUdfSVBfTVVMVElDQVNUPXkKLUNPTkZJR19JUF9QTlA9eQotQ09ORklHX0lQX1BOUF9CT09UUD15 Ci1DT05GSUdfSVBWNj15Ci0jIENPTkZJR19JTkVUNl9YRlJNX01PREVfVFJBTlNQT1JUIGlzIG5v dCBzZXQKLSMgQ09ORklHX0lORVQ2X1hGUk1fTU9ERV9UVU5ORUwgaXMgbm90IHNldAotIyBDT05G SUdfSU5FVDZfWEZSTV9NT0RFX0JFRVQgaXMgbm90IHNldAotIyBDT05GSUdfSVBWNl9TSVQgaXMg bm90IHNldAotQ09ORklHX01URD15Ci1DT05GSUdfTVREX1JFREJPT1RfUEFSVFM9eQotQ09ORklH X01URF9SRURCT09UX1BBUlRTX1VOQUxMT0NBVEVEPXkKLUNPTkZJR19NVERfUkVEQk9PVF9QQVJU U19SRUFET05MWT15Ci1DT05GSUdfTVREX0JMT0NLPXkKLUNPTkZJR19NVERfQ0ZJPXkKLUNPTkZJ R19NVERfQ0ZJX0lOVEVMRVhUPXkKLUNPTkZJR19NVERfUEhZU01BUD15Ci1DT05GSUdfQkxLX0RF Vl9MT09QPXkKLUNPTkZJR19CTEtfREVWX05CRD15Ci1DT05GSUdfQkxLX0RFVl9SQU09eQotQ09O RklHX0JMS19ERVZfUkFNX1NJWkU9ODE5MgotQ09ORklHX0JMS19ERVZfU0Q9eQotQ09ORklHX0NI Ul9ERVZfU0c9eQotIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldAotQ09ORklHX0FUQT15 Ci1DT05GSUdfU0FUQV9TSUw9eQotQ09ORklHX1NBVEFfVklURVNTRT15Ci1DT05GSUdfTUQ9eQot Q09ORklHX0JMS19ERVZfTUQ9eQotQ09ORklHX01EX1JBSUQwPXkKLUNPTkZJR19NRF9SQUlEMT15 Ci1DT05GSUdfTURfUkFJRDEwPXkKLUNPTkZJR19NRF9SQUlENDU2PXkKLUNPTkZJR19CTEtfREVW X0RNPXkKLUNPTkZJR19ORVRERVZJQ0VTPXkKLUNPTkZJR19ORVRfRVRIRVJORVQ9eQotQ09ORklH X05FVF9QQ0k9eQotQ09ORklHX0UxMDA9eQotQ09ORklHX0UxMDAwPXkKLUNPTkZJR19SODE2OT15 Ci0jIENPTkZJR19JTlBVVF9NT1VTRURFVl9QU0FVWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBV VF9LRVlCT0FSRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19JTlBVVF9NT1VTRSBpcyBub3Qgc2V0Ci0j IENPTkZJR19TRVJJTyBpcyBub3Qgc2V0Ci1DT05GSUdfU0VSSUFMXzgyNTA9eQotQ09ORklHX1NF UklBTF84MjUwX0NPTlNPTEU9eQotQ09ORklHX0hXX1JBTkRPTT15Ci1DT05GSUdfSTJDPXkKLUNP TkZJR19JMkNfQ0hBUkRFVj15Ci1DT05GSUdfSTJDX0lPUDNYWD15Ci0jIENPTkZJR19WR0FfQ09O U09MRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfSElEIGlzIG5vdCBzZXQKLUNPTkZJR19VU0I9 eQotQ09ORklHX1VTQl9NT049eQotQ09ORklHX1VTQl9FSENJX0hDRD15Ci1DT05GSUdfVVNCX0VI Q0lfUk9PVF9IVUJfVFQ9eQotQ09ORklHX1VTQl9FSENJX1RUX05FV1NDSEVEPXkKLUNPTkZJR19V U0JfVUhDSV9IQ0Q9eQotQ09ORklHX1VTQl9TVE9SQUdFPXkKLUNPTkZJR19SVENfQ0xBU1M9eQot Q09ORklHX1JUQ19EUlZfUlM1QzM3Mj15Ci1DT05GSUdfRE1BREVWSUNFUz15Ci1DT05GSUdfSU5U RUxfSU9QX0FETUE9eQotQ09ORklHX05FVF9ETUE9eQotQ09ORklHX0VYVDJfRlM9eQotQ09ORklH X0VYVDNfRlM9eQotQ09ORklHX1RNUEZTPXkKLUNPTkZJR19FQ1JZUFRfRlM9eQotQ09ORklHX0pG RlMyX0ZTPXkKLUNPTkZJR19DUkFNRlM9eQotQ09ORklHX05GU19GUz15Ci1DT05GSUdfTkZTX1Yz PXkKLUNPTkZJR19ST09UX05GUz15Ci1DT05GSUdfTkZTRD15Ci1DT05GSUdfS0VZUz15Ci1DT05G SUdfQ1JZUFRPX05VTEw9eQotQ09ORklHX0NSWVBUT19MUlc9eQotQ09ORklHX0NSWVBUT19QQ0JD PW0KLUNPTkZJR19DUllQVE9fSE1BQz15Ci1DT05GSUdfQ1JZUFRPX1hDQkM9eQotQ09ORklHX0NS WVBUT19NRDQ9eQotQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz15Ci1DT05GSUdfQ1JZUFRPX1NI QTE9eQotQ09ORklHX0NSWVBUT19TSEEyNTY9eQotQ09ORklHX0NSWVBUT19TSEE1MTI9eQotQ09O RklHX0NSWVBUT19UR1IxOTI9eQotQ09ORklHX0NSWVBUT19XUDUxMj15Ci1DT05GSUdfQ1JZUFRP X0FFUz15Ci1DT05GSUdfQ1JZUFRPX0FOVUJJUz15Ci1DT05GSUdfQ1JZUFRPX0FSQzQ9eQotQ09O RklHX0NSWVBUT19CTE9XRklTSD15Ci1DT05GSUdfQ1JZUFRPX0NBU1Q1PXkKLUNPTkZJR19DUllQ VE9fQ0FTVDY9eQotQ09ORklHX0NSWVBUT19ERVM9eQotQ09ORklHX0NSWVBUT19LSEFaQUQ9eQot Q09ORklHX0NSWVBUT19TRVJQRU5UPXkKLUNPTkZJR19DUllQVE9fVEVBPXkKLUNPTkZJR19DUllQ VE9fVFdPRklTSD15Ci1DT05GSUdfQ1JZUFRPX0RFRkxBVEU9eQotQ09ORklHX0xJQkNSQzMyQz15 Ci1DT05GSUdfREVCVUdfS0VSTkVMPXkKLUNPTkZJR19NQUdJQ19TWVNSUT15Ci1DT05GSUdfREVC VUdfVVNFUj15Ci1DT05GSUdfREVCVUdfTEw9eQotQ09ORklHX0RFQlVHX0xMX1VBUlRfODI1MD15 CmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvZW50cnktY29tbW9uLlMgYi9hcmNoL2FybS9r ZXJuZWwvZW50cnktY29tbW9uLlMKaW5kZXggNDA1YTYwN2I3NTRmLi4wM2Q0YzU1NzhjNWMgMTAw NjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9lbnRyeS1jb21tb24uUworKysgYi9hcmNoL2FybS9r ZXJuZWwvZW50cnktY29tbW9uLlMKQEAgLTE2LDE1ICsxNiw2IEBACiAKIAkuZXF1CU5SX3N5c2Nh bGxzLCBfX05SX3N5c2NhbGxzCiAKLQkubWFjcm8gIGFyY2hfcmV0X3RvX3VzZXIsIHRtcAotI2lm ZGVmIENPTkZJR19BUkNIX0lPUDMyWAotCW1yYwlwMTUsIDAsIFx0bXAsIGMxNSwgYzEsIDAKLQl0 c3QJXHRtcCwgIygxIDw8IDYpCi0JYmljbmUJXHRtcCwgXHRtcCwgIygxIDw8IDYpCi0JbWNybmUJ cDE1LCAwLCBcdG1wLCBjMTUsIGMxLCAwCUAgRGlzYWJsZSBjcDYgYWNjZXNzCi0jZW5kaWYKLQku ZW5kbQotCiAjaW5jbHVkZSAiZW50cnktaGVhZGVyLlMiCiAKIHNhdmVkX3BzcgkucmVxCXI4CkBA IC01NSwxMCArNDYsNiBAQCBfX3JldF9mYXN0X3N5c2NhbGw6CiAJbW92cwlyMSwgcjEsIGxzbCAj MTYKIAlibmUJZmFzdF93b3JrX3BlbmRpbmcKIAotCi0JLyogcGVyZm9ybSBhcmNoaXRlY3R1cmUg c3BlY2lmaWMgYWN0aW9ucyBiZWZvcmUgdXNlciByZXR1cm4gKi8KLQlhcmNoX3JldF90b191c2Vy IHIxCi0KIAlyZXN0b3JlX3VzZXJfcmVncyBmYXN0ID0gMSwgb2Zmc2V0ID0gU19PRkYKICBVTldJ TkQoLmZuZW5kCQkpCiBFTkRQUk9DKHJldF9mYXN0X3N5c2NhbGwpCkBAIC0xMjksOCArMTE2LDYg QEAgRU5UUlkocmV0X3RvX3VzZXJfZnJvbV9pcnEpCiBub193b3JrX3BlbmRpbmc6CiAJYXNtX3Ry YWNlX2hhcmRpcnFzX29uIHNhdmUgPSAwCiAKLQkvKiBwZXJmb3JtIGFyY2hpdGVjdHVyZSBzcGVj aWZpYyBhY3Rpb25zIGJlZm9yZSB1c2VyIHJldHVybiAqLwotCWFyY2hfcmV0X3RvX3VzZXIgcjEK IAljdF91c2VyX2VudGVyIHNhdmUgPSAwCiAKIAlyZXN0b3JlX3VzZXJfcmVncyBmYXN0ID0gMCwg b2Zmc2V0ID0gMApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvS2NvbmZpZyBiL2Fy Y2gvYXJtL21hY2gtaW9wMzJ4L0tjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDc2MWZiYjA0ZmFhMS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4L0tj b25maWcKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0jIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wCi1tZW51Y29uZmlnIEFSQ0hfSU9QMzJYCi0JYm9vbCAiSU9QMzJ4LWJh c2VkIHBsYXRmb3JtcyIKLQlkZXBlbmRzIG9uIEFSQ0hfTVVMVElfVjUKLQlkZXBlbmRzIG9uIENQ VV9MSVRUTEVfRU5ESUFOCi0JZGVwZW5kcyBvbiBBVEFHUyAmJiBVTlVTRURfQk9BUkRfRklMRVMK LQlzZWxlY3QgQ1BVX1hTQ0FMRQotCXNlbGVjdCBHUElPX0lPUAotCXNlbGVjdCBHUElPTElCCi0J c2VsZWN0IEZPUkNFX1BDSQotCWhlbHAKLQkgIFN1cHBvcnQgZm9yIEludGVsJ3MgODAyMTkgYW5k IElPUDMyWCAoWFNjYWxlKSBmYW1pbHkgb2YKLQkgIHByb2Nlc3NvcnMuCi0KLWlmIEFSQ0hfSU9Q MzJYCi0KLWNvbmZpZyBNQUNIX0VQODAyMTkKLQlib29sCi0KLWNvbmZpZyBNQUNIX0dMQU5UQU5L Ci0JYm9vbCAiRW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBJTy1EYXRhIEdMQU4gVGFuayIKLQloZWxw Ci0JICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHJ1biB5b3VyIGtlcm5lbCBvbiB0aGUgR0xB TiBUYW5rCi0JICBOQVMgYXBwbGlhbmNlIG9yIG1hY2hpbmVzIGZyb20gSU8tRGF0YSdzIEhETC1H eHh4LCBIREwtR1d4eHgKLQkgIGFuZCBIREwtR1p4eHggc2VyaWVzLgotCi1jb25maWcgQVJDSF9J UTgwMzIxCi0JYm9vbCAiRW5hYmxlIHN1cHBvcnQgZm9yIElRODAzMjEiCi0JaGVscAotCSAgU2F5 IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBydW4geW91ciBrZXJuZWwgb24gdGhlIEludGVsIElRODAz MjEKLQkgIGV2YWx1YXRpb24ga2l0IGZvciB0aGUgSU9QMzIxIHByb2Nlc3Nvci4KLQotY29uZmln IEFSQ0hfSVEzMTI0NAotCWJvb2wgIkVuYWJsZSBzdXBwb3J0IGZvciBFUDgwMjE5L0lRMzEyNDQi Ci0Jc2VsZWN0IE1BQ0hfRVA4MDIxOQotCWhlbHAKLQkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQg dG8gcnVuIHlvdXIga2VybmVsIG9uIHRoZSBJbnRlbCBFUDgwMjE5Ci0JICBldmFsdWF0aW9uIGtp dCBmb3IgdGhlIEludGVsIDgwMjE5IHByb2Nlc3NvciAoYSBJT1AzMjEgdmFyaWFudCkKLQkgIG9y IHRoZSBJUTMxMjQ0IGV2YWx1YXRpb24ga2l0IGZvciB0aGUgSU9QMzIxIHByb2Nlc3Nvci4KLQot Y29uZmlnIE1BQ0hfTjIxMDAKLQlib29sICJFbmFibGUgc3VwcG9ydCBmb3IgdGhlIFRoZWN1cyBu MjEwMCIKLQloZWxwCi0JICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHJ1biB5b3VyIGtlcm5l bCBvbiB0aGUgVGhlY3VzIG4yMTAwCi0JICBOQVMgYXBwbGlhbmNlLgotCi1jb25maWcgTUFDSF9F TTcyMTAKLQlib29sICJFbmFibGUgc3VwcG9ydCBmb3IgdGhlIExhbm5lciBFTTcyMTAiCi0JaGVs cAotCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBydW4geW91ciBrZXJuZWwgb24gdGhlIExh bm5lciBFTTcyMTAKLQkgIGJvYXJkLiBTYXkgYWxzbyBZIGhlcmUgaWYgeW91IGhhdmUgYSBTUzQw MDBlIEJheHRlciBDcmVlayBOQVMKLQkgIGFwcGxpYW5jZS4iCi0KLWVuZGlmCmRpZmYgLS1naXQg YS9hcmNoL2FybS9tYWNoLWlvcDMyeC9NYWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtaW9wMzJ4L01h a2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODAxOGVmNWM2YTkuLjAwMDAw MDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9NYWtlZmlsZQorKysgL2Rldi9udWxs CkBAIC0xLDIwICswLDAgQEAKLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKLSMK LSMgTWFrZWZpbGUgZm9yIHRoZSBsaW51eCBrZXJuZWwuCi0jCi0KLW9iai0kKENPTkZJR19BUkNI X0lPUDMyWCkgKz0gaXJxLm8KLW9iai0kKENPTkZJR19BUkNIX0lPUDMyWCkgKz0gaTJjLm8KLW9i ai0kKENPTkZJR19BUkNIX0lPUDMyWCkgKz0gcGNpLm8KLW9iai0kKENPTkZJR19BUkNIX0lPUDMy WCkgKz0gc2V0dXAubwotb2JqLSQoQ09ORklHX0FSQ0hfSU9QMzJYKSArPSB0aW1lLm8KLW9iai0k KENPTkZJR19BUkNIX0lPUDMyWCkgKz0gY3A2Lm8KLW9iai0kKENPTkZJR19BUkNIX0lPUDMyWCkg Kz0gYWRtYS5vCi1vYmotJChDT05GSUdfQVJDSF9JT1AzMlgpICs9IHBtdS5vCi1vYmotJChDT05G SUdfQVJDSF9JT1AzMlgpICs9IHJlc3RhcnQubwotCi1vYmotJChDT05GSUdfTUFDSF9HTEFOVEFO SykgKz0gZ2xhbnRhbmsubwotb2JqLSQoQ09ORklHX0FSQ0hfSVE4MDMyMSkgKz0gaXE4MDMyMS5v Ci1vYmotJChDT05GSUdfQVJDSF9JUTMxMjQ0KSArPSBpcTMxMjQ0Lm8KLW9iai0kKENPTkZJR19N QUNIX04yMTAwKSArPSBuMjEwMC5vCi1vYmotJChDT05GSUdfTUFDSF9FTTcyMTApICs9IGVtNzIx MC5vCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9hZG1hLmMgYi9hcmNoL2FybS9t YWNoLWlvcDMyeC9hZG1hLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NGJjYmZm OThkZi4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2FkbWEuYworKysg L2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vbmx5Ci0vKgotICogcGxhdGZvcm0gZGV2aWNlIGRlZmluaXRpb25zIGZvciB0aGUg aW9wM3h4IGRtYS94b3IgZW5naW5lcwotICogQ29weXJpZ2h0IMKpIDIwMDYsIEludGVsIENvcnBv cmF0aW9uLgotICovCi0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVk ZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL2Rt YS1pb3AzMnguaD4KLQotI2luY2x1ZGUgImlvcDN4eC5oIgotI2luY2x1ZGUgImlycXMuaCIKLQot I2RlZmluZSBJUlFfRE1BMF9FT1QgSVJRX0lPUDMyWF9ETUEwX0VPVAotI2RlZmluZSBJUlFfRE1B MF9FT0MgSVJRX0lPUDMyWF9ETUEwX0VPQwotI2RlZmluZSBJUlFfRE1BMF9FUlIgSVJRX0lPUDMy WF9ETUEwX0VSUgotCi0jZGVmaW5lIElSUV9ETUExX0VPVCBJUlFfSU9QMzJYX0RNQTFfRU9UCi0j ZGVmaW5lIElSUV9ETUExX0VPQyBJUlFfSU9QMzJYX0RNQTFfRU9DCi0jZGVmaW5lIElSUV9ETUEx X0VSUiBJUlFfSU9QMzJYX0RNQTFfRVJSCi0KLSNkZWZpbmUgSVJRX0FBX0VPVCBJUlFfSU9QMzJY X0FBX0VPVAotI2RlZmluZSBJUlFfQUFfRU9DIElSUV9JT1AzMlhfQUFfRU9DCi0jZGVmaW5lIElS UV9BQV9FUlIgSVJRX0lPUDMyWF9BQV9FUlIKLQotLyogQUFVIGFuZCBETUEgQ2hhbm5lbHMgKi8K LXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgaW9wM3h4X2RtYV8wX3Jlc291cmNlc1tdID0gewotCVsw XSA9IHsKLQkJLnN0YXJ0ID0gSU9QM1hYX0RNQV9QSFlTX0JBU0UoMCksCi0JCS5lbmQgPSBJT1Az WFhfRE1BX1VQUEVSX1BBKDApLAotCQkuZmxhZ3MgPSBJT1JFU09VUkNFX01FTSwKLQl9LAotCVsx XSA9IHsKLQkJLnN0YXJ0ID0gSVJRX0RNQTBfRU9ULAotCQkuZW5kID0gSVJRX0RNQTBfRU9ULAot CQkuZmxhZ3MgPSBJT1JFU09VUkNFX0lSUQotCX0sCi0JWzJdID0gewotCQkuc3RhcnQgPSBJUlFf RE1BMF9FT0MsCi0JCS5lbmQgPSBJUlFfRE1BMF9FT0MsCi0JCS5mbGFncyA9IElPUkVTT1VSQ0Vf SVJRCi0JfSwKLQlbM10gPSB7Ci0JCS5zdGFydCA9IElSUV9ETUEwX0VSUiwKLQkJLmVuZCA9IElS UV9ETUEwX0VSUiwKLQkJLmZsYWdzID0gSU9SRVNPVVJDRV9JUlEKLQl9Ci19OwotCi1zdGF0aWMg c3RydWN0IHJlc291cmNlIGlvcDN4eF9kbWFfMV9yZXNvdXJjZXNbXSA9IHsKLQlbMF0gPSB7Ci0J CS5zdGFydCA9IElPUDNYWF9ETUFfUEhZU19CQVNFKDEpLAotCQkuZW5kID0gSU9QM1hYX0RNQV9V UFBFUl9QQSgxKSwKLQkJLmZsYWdzID0gSU9SRVNPVVJDRV9NRU0sCi0JfSwKLQlbMV0gPSB7Ci0J CS5zdGFydCA9IElSUV9ETUExX0VPVCwKLQkJLmVuZCA9IElSUV9ETUExX0VPVCwKLQkJLmZsYWdz ID0gSU9SRVNPVVJDRV9JUlEKLQl9LAotCVsyXSA9IHsKLQkJLnN0YXJ0ID0gSVJRX0RNQTFfRU9D LAotCQkuZW5kID0gSVJRX0RNQTFfRU9DLAotCQkuZmxhZ3MgPSBJT1JFU09VUkNFX0lSUQotCX0s Ci0JWzNdID0gewotCQkuc3RhcnQgPSBJUlFfRE1BMV9FUlIsCi0JCS5lbmQgPSBJUlFfRE1BMV9F UlIsCi0JCS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRCi0JfQotfTsKLQotCi1zdGF0aWMgc3RydWN0 IHJlc291cmNlIGlvcDN4eF9hYXVfcmVzb3VyY2VzW10gPSB7Ci0JWzBdID0gewotCQkuc3RhcnQg PSBJT1AzWFhfQUFVX1BIWVNfQkFTRSwKLQkJLmVuZCA9IElPUDNYWF9BQVVfVVBQRVJfUEEsCi0J CS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNLAotCX0sCi0JWzFdID0gewotCQkuc3RhcnQgPSBJUlFf QUFfRU9ULAotCQkuZW5kID0gSVJRX0FBX0VPVCwKLQkJLmZsYWdzID0gSU9SRVNPVVJDRV9JUlEK LQl9LAotCVsyXSA9IHsKLQkJLnN0YXJ0ID0gSVJRX0FBX0VPQywKLQkJLmVuZCA9IElSUV9BQV9F T0MsCi0JCS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRCi0JfSwKLQlbM10gPSB7Ci0JCS5zdGFydCA9 IElSUV9BQV9FUlIsCi0JCS5lbmQgPSBJUlFfQUFfRVJSLAotCQkuZmxhZ3MgPSBJT1JFU09VUkNF X0lSUQotCX0KLX07Ci0KLXN0YXRpYyB1NjQgaW9wM3h4X2FkbWFfZG1hbWFzayA9IERNQV9CSVRf TUFTSygzMik7Ci0KLXN0YXRpYyBzdHJ1Y3QgaW9wX2FkbWFfcGxhdGZvcm1fZGF0YSBpb3AzeHhf ZG1hXzBfZGF0YSA9IHsKLQkuaHdfaWQgPSBETUEwX0lELAotCS5wb29sX3NpemUgPSBQQUdFX1NJ WkUsCi19OwotCi1zdGF0aWMgc3RydWN0IGlvcF9hZG1hX3BsYXRmb3JtX2RhdGEgaW9wM3h4X2Rt YV8xX2RhdGEgPSB7Ci0JLmh3X2lkID0gRE1BMV9JRCwKLQkucG9vbF9zaXplID0gUEFHRV9TSVpF LAotfTsKLQotc3RhdGljIHN0cnVjdCBpb3BfYWRtYV9wbGF0Zm9ybV9kYXRhIGlvcDN4eF9hYXVf ZGF0YSA9IHsKLQkuaHdfaWQgPSBBQVVfSUQsCi0JLnBvb2xfc2l6ZSA9IDMgKiBQQUdFX1NJWkUs Ci19OwotCi1zdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGlvcDN4eF9kbWFfMF9jaGFubmVsID0gewot CS5uYW1lID0gImlvcC1hZG1hIiwKLQkuaWQgPSAwLAotCS5udW1fcmVzb3VyY2VzID0gNCwKLQku cmVzb3VyY2UgPSBpb3AzeHhfZG1hXzBfcmVzb3VyY2VzLAotCS5kZXYgPSB7Ci0JCS5kbWFfbWFz ayA9ICZpb3AzeHhfYWRtYV9kbWFtYXNrLAotCQkuY29oZXJlbnRfZG1hX21hc2sgPSBETUFfQklU X01BU0soMzIpLAotCQkucGxhdGZvcm1fZGF0YSA9ICh2b2lkICopICZpb3AzeHhfZG1hXzBfZGF0 YSwKLQl9LAotfTsKLQotc3RydWN0IHBsYXRmb3JtX2RldmljZSBpb3AzeHhfZG1hXzFfY2hhbm5l bCA9IHsKLQkubmFtZSA9ICJpb3AtYWRtYSIsCi0JLmlkID0gMSwKLQkubnVtX3Jlc291cmNlcyA9 IDQsCi0JLnJlc291cmNlID0gaW9wM3h4X2RtYV8xX3Jlc291cmNlcywKLQkuZGV2ID0gewotCQku ZG1hX21hc2sgPSAmaW9wM3h4X2FkbWFfZG1hbWFzaywKLQkJLmNvaGVyZW50X2RtYV9tYXNrID0g RE1BX0JJVF9NQVNLKDMyKSwKLQkJLnBsYXRmb3JtX2RhdGEgPSAodm9pZCAqKSAmaW9wM3h4X2Rt YV8xX2RhdGEsCi0JfSwKLX07Ci0KLXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgaW9wM3h4X2FhdV9j aGFubmVsID0gewotCS5uYW1lID0gImlvcC1hZG1hIiwKLQkuaWQgPSAyLAotCS5udW1fcmVzb3Vy Y2VzID0gNCwKLQkucmVzb3VyY2UgPSBpb3AzeHhfYWF1X3Jlc291cmNlcywKLQkuZGV2ID0gewot CQkuZG1hX21hc2sgPSAmaW9wM3h4X2FkbWFfZG1hbWFzaywKLQkJLmNvaGVyZW50X2RtYV9tYXNr ID0gRE1BX0JJVF9NQVNLKDMyKSwKLQkJLnBsYXRmb3JtX2RhdGEgPSAodm9pZCAqKSAmaW9wM3h4 X2FhdV9kYXRhLAotCX0sCi19OwotCi1zdGF0aWMgaW50IF9faW5pdCBpb3AzeHhfYWRtYV9jYXBf aW5pdCh2b2lkKQotewotCWRtYV9jYXBfc2V0KERNQV9NRU1DUFksIGlvcDN4eF9kbWFfMF9kYXRh LmNhcF9tYXNrKTsKLQlkbWFfY2FwX3NldChETUFfSU5URVJSVVBULCBpb3AzeHhfZG1hXzBfZGF0 YS5jYXBfbWFzayk7Ci0KLQlkbWFfY2FwX3NldChETUFfTUVNQ1BZLCBpb3AzeHhfZG1hXzFfZGF0 YS5jYXBfbWFzayk7Ci0JZG1hX2NhcF9zZXQoRE1BX0lOVEVSUlVQVCwgaW9wM3h4X2RtYV8xX2Rh dGEuY2FwX21hc2spOwotCi0JZG1hX2NhcF9zZXQoRE1BX1hPUiwgaW9wM3h4X2FhdV9kYXRhLmNh cF9tYXNrKTsKLQlkbWFfY2FwX3NldChETUFfSU5URVJSVVBULCBpb3AzeHhfYWF1X2RhdGEuY2Fw X21hc2spOwotCi0JcmV0dXJuIDA7Ci19Ci0KLWFyY2hfaW5pdGNhbGwoaW9wM3h4X2FkbWFfY2Fw X2luaXQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvY3A2LmMgYi9hcmNoL2Fy bS9tYWNoLWlvcDMyeC9jcDYuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEzNWEw YWM5OTQ5Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvY3A2LmMKKysr IC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vbmx5Ci0vKgotICogSU9QIENvcHJvY2Vzc29yLTYgYWNjZXNzIGhhbmRsZXIKLSAq IENvcHlyaWdodCAoYykgMjAwNiwgSW50ZWwgQ29ycG9yYXRpb24uCi0gKi8KLSNpbmNsdWRlIDxs aW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8YXNtL3RyYXBzLmg+Ci0jaW5jbHVkZSA8YXNtL3B0cmFj ZS5oPgotCi0jaW5jbHVkZSAiaW9wM3h4LmgiCi0KLXZvaWQgaW9wX2VuYWJsZV9jcDYodm9pZCkK LXsKLQl1MzIgdGVtcDsKLQotICAgICAgICAvKiBlbmFibGUgY3A2IGFjY2VzcyAqLwotICAgICAg ICBhc20gdm9sYXRpbGUgKAotCQkibXJjCXAxNSwgMCwgJTAsIGMxNSwgYzEsIDBcblx0IgotCQki b3JyCSUwLCAlMCwgIygxIDw8IDYpXG5cdCIKLQkJIm1jcglwMTUsIDAsICUwLCBjMTUsIGMxLCAw XG5cdCIKLQkJIm1yYwlwMTUsIDAsICUwLCBjMTUsIGMxLCAwXG5cdCIKLQkJIm1vdgklMCwgJTBc blx0IgotCQkic3ViCXBjLCBwYywgIzQgIEAgY3Bfd2FpdFxuXHQiCi0JCTogIj1yIih0ZW1wKSk7 Ci19Ci0KLXN0YXRpYyBpbnQgY3A2X3RyYXAoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVk IGludCBpbnN0cikKLXsKLQlpb3BfZW5hYmxlX2NwNigpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLS8q IHBlcm1pdCBrZXJuZWwgc3BhY2UgY3A2IGFjY2VzcwotICogZGVueSB1c2VyIHNwYWNlIGNwNiBh Y2Nlc3MKLSAqLwotc3RhdGljIHN0cnVjdCB1bmRlZl9ob29rIGNwNl9ob29rID0gewotCS5pbnN0 cl9tYXNrICAgICA9IDB4MGYwMDBmZjAsCi0JLmluc3RyX3ZhbCAgICAgID0gMHgwZTAwMDYxMCwK LQkuY3Bzcl9tYXNrICAgICAgPSBNT0RFX01BU0ssCi0JLmNwc3JfdmFsICAgICAgID0gU1ZDX01P REUsCi0JLmZuICAgICAgICAgICAgID0gY3A2X3RyYXAsCi19OwotCi12b2lkIF9faW5pdCBpb3Bf aW5pdF9jcDZfaGFuZGxlcih2b2lkKQotewotCXJlZ2lzdGVyX3VuZGVmX2hvb2soJmNwNl9ob29r KTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2VtNzIxMC5jIGIvYXJjaC9h cm0vbWFjaC1pb3AzMngvZW03MjEwLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFj MTMwYWJhNWE2ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2VtNzIx MC5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9tYWNoLWlvcDMyeC9lbTcyMTAu YwotICoKLSAqIEJvYXJkIHN1cHBvcnQgY29kZSBmb3IgdGhlIExhbm5lciBFTTcyMTAgcGxhdGZv cm1zLgotICoKLSAqIEJhc2VkIG9uIGFyY2gvYXJtL21hY2gtaW9wMzJ4L2lxMzEyNDQuYyBmaWxl LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcm5hdWQgUGF0YXJkIDxhcm5hdWQucGF0YXJk QHJ0cC1uZXQub3JnPgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9tbS5oPgotI2luY2x1ZGUgPGxp bnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9w Y2kuaD4KLSNpbmNsdWRlIDxsaW51eC9wbS5oPgotI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9jb3Jl Lmg+Ci0jaW5jbHVkZSA8bGludXgvc2VyaWFsXzgyNTAuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQv cGh5c21hcC5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUg PGxpbnV4L2kyYy5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9n cGlvL21hY2hpbmUuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPGxpbnV4L2ly cS5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9tYXAu aD4KLSNpbmNsdWRlIDxhc20vbWFjaC9wY2kuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC90aW1lLmg+ Ci0jaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KLQotI2luY2x1ZGUgImhhcmR3YXJlLmgiCi0j aW5jbHVkZSAiZ3Bpby1pb3AzMnguaCIKLSNpbmNsdWRlICJpcnFzLmgiCi0KLXN0YXRpYyB2b2lk IF9faW5pdCBlbTcyMTBfdGltZXJfaW5pdCh2b2lkKQotewotCS8qIGh0dHA6Ly93d3cua3dhYWsu bmV0L2ZvdG9zL2ZvdG9zLW5hcy9zbGlkZV8yNC5odG1sICovCi0JLyogMzMuMzMzIE1IeiBjcnlz dGFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlpb3BfaW5pdF90aW1lKDIw MDAwMDAwMCk7Ci19Ci0KLS8qCi0gKiBFTTcyMTAgUlRDCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgaTJj X2JvYXJkX2luZm8gX19pbml0ZGF0YSBlbTcyMTBfaTJjX2RldmljZXNbXSA9IHsKLQl7Ci0JCUky Q19CT0FSRF9JTkZPKCJyczVjMzcyYSIsIDB4MzIpLAotCX0sCi19OwotCi0vKgotICogRU03MjEw IEkvTwotICovCi1zdGF0aWMgc3RydWN0IG1hcF9kZXNjIGVtNzIxMF9pb19kZXNjW10gX19pbml0 ZGF0YSA9IHsKLQl7CS8qIG9uLWJvYXJkIGRldmljZXMgKi8KLQkJLnZpcnR1YWwJPSBJUTMxMjQ0 X1VBUlQsCi0JCS5wZm4JCT0gX19waHlzX3RvX3BmbihJUTMxMjQ0X1VBUlQpLAotCQkubGVuZ3Ro CQk9IDB4MDAxMDAwMDAsCi0JCS50eXBlCQk9IE1UX0RFVklDRSwKLQl9LAotfTsKLQotdm9pZCBf X2luaXQgZW03MjEwX21hcF9pbyh2b2lkKQotewotCWlvcDN4eF9tYXBfaW8oKTsKLQlpb3RhYmxl X2luaXQoZW03MjEwX2lvX2Rlc2MsIEFSUkFZX1NJWkUoZW03MjEwX2lvX2Rlc2MpKTsKLX0KLQot Ci0vKgotICogRU03MjEwIFBDSQotICovCi0jZGVmaW5lIElOVEEJSVJRX0lPUDMyWF9YSU5UMAot I2RlZmluZSBJTlRCCUlSUV9JT1AzMlhfWElOVDEKLSNkZWZpbmUgSU5UQwlJUlFfSU9QMzJYX1hJ TlQyCi0jZGVmaW5lIElOVEQJSVJRX0lPUDMyWF9YSU5UMwotCi1zdGF0aWMgaW50IF9faW5pdAot ZW03MjEwX3BjaV9tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4 IHBpbikKLXsKLQlzdGF0aWMgaW50IHBjaV9pcnFfdGFibGVbXVs0XSA9IHsKLQkJLyoKLQkJICog UENJIElEU0VML0lOVFBJTi0+SU5UTElORQotCQkgKiBBICAgICAgIEIgICAgICAgQyAgICAgICBE Ci0JCSAqLwotCQl7SU5UQiwgSU5UQiwgSU5UQiwgSU5UQn0sIC8qIGNvbnNvbGUgLyB1YXJ0ICov Ci0JCXtJTlRBLCBJTlRBLCBJTlRBLCBJTlRBfSwgLyogMXN0IDgyNTQxICAgICAgKi8KLQkJe0lO VEQsIElOVEQsIElOVEQsIElOVER9LCAvKiAybmQgODI1NDEgICAgICAqLwotCQl7SU5UQywgSU5U QywgSU5UQywgSU5UQ30sIC8qIEdEMzEyNDQgICAgICAgICovCi0JCXtJTlRELCBJTlRBLCBJTlRB LCBJTlRBfSwgLyogbWluaS1QQ0kgICAgICAgKi8KLQkJe0lOVEQsIElOVEMsIElOVEEsIElOVEF9 LCAvKiBORUMgVVNCICAgICAgICAqLwotCX07Ci0KLQlpZiAocGluIDwgMSB8fCBwaW4gPiA0KQot CQlyZXR1cm4gLTE7Ci0KLQlyZXR1cm4gcGNpX2lycV90YWJsZVtzbG90ICUgNl1bcGluIC0gMV07 Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgaHdfcGNpIGVtNzIxMF9wY2kgX19pbml0ZGF0YSA9IHsKLQku bnJfY29udHJvbGxlcnMgPSAxLAotCS5vcHMJCT0gJmlvcDN4eF9vcHMsCi0JLnNldHVwCQk9IGlv cDN4eF9wY2lfc2V0dXAsCi0JLnByZWluaXQJPSBpb3AzeHhfcGNpX3ByZWluaXQsCi0JLm1hcF9p cnEJPSBlbTcyMTBfcGNpX21hcF9pcnEsCi19OwotCi1zdGF0aWMgaW50IF9faW5pdCBlbTcyMTBf cGNpX2luaXQodm9pZCkKLXsKLQlpZiAobWFjaGluZV9pc19lbTcyMTAoKSkKLQkJcGNpX2NvbW1v bl9pbml0KCZlbTcyMTBfcGNpKTsKLQotCXJldHVybiAwOwotfQotCi1zdWJzeXNfaW5pdGNhbGwo ZW03MjEwX3BjaV9pbml0KTsKLQotCi0vKgotICogRU03MjEwIEZsYXNoCi0gKi8KLXN0YXRpYyBz dHJ1Y3QgcGh5c21hcF9mbGFzaF9kYXRhIGVtNzIxMF9mbGFzaF9kYXRhID0gewotCS53aWR0aAkJ PSAyLAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBlbTcyMTBfZmxhc2hfcmVzb3VyY2Ug PSB7Ci0JLnN0YXJ0CQk9IDB4ZjAwMDAwMDAsCi0JLmVuZAkJPSAweGYxZmZmZmZmLAotCS5mbGFn cwkJPSBJT1JFU09VUkNFX01FTSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl IGVtNzIxMF9mbGFzaF9kZXZpY2UgPSB7Ci0JLm5hbWUJCT0gInBoeXNtYXAtZmxhc2giLAotCS5p ZAkJPSAwLAotCS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0YQk9ICZlbTcyMTBfZmxhc2hfZGF0 YSwKLQl9LAotCS5udW1fcmVzb3VyY2VzCT0gMSwKLQkucmVzb3VyY2UJPSAmZW03MjEwX2ZsYXNo X3Jlc291cmNlLAotfTsKLQotCi0vKgotICogRU03MjEwIFVBUlQKLSAqIFRoZSBwaHlzaWNhbCBh ZGRyZXNzIG9mIHRoZSBzZXJpYWwgcG9ydCBpcyAweGZlODAwMDAwLAotICogc28gaXQgY2FuIGJl IHVzZWQgZm9yIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGFkZHJlc3MuCi0gKi8KLXN0YXRpYyBzdHJ1 Y3QgcGxhdF9zZXJpYWw4MjUwX3BvcnQgZW03MjEwX3NlcmlhbF9wb3J0W10gPSB7Ci0JewotCQku bWFwYmFzZQk9IElRMzEyNDRfVUFSVCwKLQkJLm1lbWJhc2UJPSAoY2hhciAqKUlRMzEyNDRfVUFS VCwKLQkJLmlycQkJPSBJUlFfSU9QMzJYX1hJTlQxLAotCQkuZmxhZ3MJCT0gVVBGX1NLSVBfVEVT VCwKLQkJLmlvdHlwZQkJPSBVUElPX01FTSwKLQkJLnJlZ3NoaWZ0CT0gMCwKLQkJLnVhcnRjbGsJ PSAxODQzMjAwLAotCX0sCi0JeyB9LAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBlbTcy MTBfdWFydF9yZXNvdXJjZSA9IHsKLQkuc3RhcnQJCT0gSVEzMTI0NF9VQVJULAotCS5lbmQJCT0g SVEzMTI0NF9VQVJUICsgNywKLQkuZmxhZ3MJCT0gSU9SRVNPVVJDRV9NRU0sCi19OwotCi1zdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBlbTcyMTBfc2VyaWFsX2RldmljZSA9IHsKLQkubmFt ZQkJPSAic2VyaWFsODI1MCIsCi0JLmlkCQk9IFBMQVQ4MjUwX0RFVl9QTEFURk9STSwKLQkuZGV2 CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJCT0gZW03MjEwX3NlcmlhbF9wb3J0LAotCX0sCi0JLm51 bV9yZXNvdXJjZXMJPSAxLAotCS5yZXNvdXJjZQk9ICZlbTcyMTBfdWFydF9yZXNvdXJjZSwKLX07 Ci0KLSNkZWZpbmUgRU03MjEwX0hBUkRXQVJFX1BPV0VSIDAKLQotdm9pZCBlbTcyMTBfcG93ZXJf b2ZmKHZvaWQpCi17Ci0JaW50IHJldDsKLQotCXJldCA9IGdwaW9fZGlyZWN0aW9uX291dHB1dChF TTcyMTBfSEFSRFdBUkVfUE9XRVIsIDEpOwotCWlmIChyZXQpCi0JCXByX2NyaXQoImNvdWxkIG5v dCBkcml2ZSBwb3dlciBvZmYgR1BJTyBoaWdoXG4iKTsKLX0KLQotc3RhdGljIGludCBfX2luaXQg ZW03MjEwX3JlcXVlc3RfZ3Bpb3Modm9pZCkKLXsKLQlpbnQgcmV0OwotCi0JaWYgKCFtYWNoaW5l X2lzX2VtNzIxMCgpKQotCQlyZXR1cm4gMDsKLQotCXJldCA9IGdwaW9fcmVxdWVzdChFTTcyMTBf SEFSRFdBUkVfUE9XRVIsICJwb3dlciIpOwotCWlmIChyZXQpIHsKLQkJcHJfZXJyKCJjb3VsZCBu b3QgcmVxdWVzdCBwb3dlciBvZmYgR1BJT1xuIik7Ci0JCXJldHVybiAwOwotCX0KLQotCXBtX3Bv d2VyX29mZiA9IGVtNzIxMF9wb3dlcl9vZmY7Ci0KLQlyZXR1cm4gMDsKLX0KLWRldmljZV9pbml0 Y2FsbChlbTcyMTBfcmVxdWVzdF9ncGlvcyk7Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBlbTcyMTBf aW5pdF9tYWNoaW5lKHZvaWQpCi17Ci0JcmVnaXN0ZXJfaW9wMzJ4X2dwaW8oKTsKLQlwbGF0Zm9y bV9kZXZpY2VfcmVnaXN0ZXIoJmVtNzIxMF9zZXJpYWxfZGV2aWNlKTsKLQlncGlvZF9hZGRfbG9v a3VwX3RhYmxlKCZpb3AzeHhfaTJjMF9ncGlvX2xvb2t1cCk7Ci0JZ3Bpb2RfYWRkX2xvb2t1cF90 YWJsZSgmaW9wM3h4X2kyYzFfZ3Bpb19sb29rdXApOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rl cigmaW9wM3h4X2kyYzBfZGV2aWNlKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlvcDN4 eF9pMmMxX2RldmljZSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZlbTcyMTBfZmxhc2hf ZGV2aWNlKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlvcDN4eF9kbWFfMF9jaGFubmVs KTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlvcDN4eF9kbWFfMV9jaGFubmVsKTsKLQot CWkyY19yZWdpc3Rlcl9ib2FyZF9pbmZvKDAsIGVtNzIxMF9pMmNfZGV2aWNlcywKLQkJQVJSQVlf U0laRShlbTcyMTBfaTJjX2RldmljZXMpKTsKLX0KLQotTUFDSElORV9TVEFSVChFTTcyMTAsICJM YW5uZXIgRU03MjEwIikKLQkuYXRhZ19vZmZzZXQJPSAweDEwMCwKLQkubnJfaXJxcwk9IElPUDMy WF9OUl9JUlFTLAotCS5tYXBfaW8JCT0gZW03MjEwX21hcF9pbywKLQkuaW5pdF9pcnEJPSBpb3Az MnhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IGVtNzIxMF90aW1lcl9pbml0LAotCS5pbml0X21h Y2hpbmUJPSBlbTcyMTBfaW5pdF9tYWNoaW5lLAotCS5yZXN0YXJ0CT0gaW9wM3h4X3Jlc3RhcnQs Ci1NQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvZ2xhbnRhbmsu YyBiL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2dsYW50YW5rLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGNkNmU3ZGEyZWExMC4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gt aW9wMzJ4L2dsYW50YW5rLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMTQgKzAsMCBAQAotLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLS8qCi0gKiBhcmNoL2FybS9t YWNoLWlvcDMyeC9nbGFudGFuay5jCi0gKgotICogQm9hcmQgc3VwcG9ydCBjb2RlIGZvciB0aGUg R0xBTiBUYW5rLgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBNYXJ0aW4gTWljaGxt YXlyIDx0Ym1AY3lyaXVzLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBMZW5uZXJ0IEJ1eXRl bmhlayA8YnV5dGVuaEB3YW50c3RvZmx5Lm9yZz4KLSAqLwotCi0jaW5jbHVkZSA8bGludXgvbW0u aD4KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvZjc1Mzc1cy5oPgot I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotI2luY2x1 ZGUgPGxpbnV4L3BtLmg+Ci0jaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Ci0jaW5jbHVkZSA8bGlu dXgvc2VyaWFsX2NvcmUuaD4KLSNpbmNsdWRlIDxsaW51eC9zZXJpYWxfODI1MC5oPgotI2luY2x1 ZGUgPGxpbnV4L210ZC9waHlzbWFwLmg+Ci0jaW5jbHVkZSA8bGludXgvaTJjLmg+Ci0jaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW8uaD4KLSNpbmNs dWRlIDxsaW51eC9ncGlvL21hY2hpbmUuaD4KLSNpbmNsdWRlIDxhc20vaXJxLmg+Ci0jaW5jbHVk ZSA8YXNtL21hY2gvYXJjaC5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgotI2luY2x1ZGUg PGFzbS9tYWNoL3BjaS5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL3RpbWUuaD4KLSNpbmNsdWRlIDxh c20vbWFjaC10eXBlcy5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+Ci0KLSNpbmNsdWRlICJoYXJk d2FyZS5oIgotI2luY2x1ZGUgImdwaW8taW9wMzJ4LmgiCi0jaW5jbHVkZSAiaXJxcy5oIgotCi0v KgotICogR0xBTiBUYW5rIHRpbWVyIHRpY2sgY29uZmlndXJhdGlvbi4KLSAqLwotc3RhdGljIHZv aWQgX19pbml0IGdsYW50YW5rX3RpbWVyX2luaXQodm9pZCkKLXsKLQkvKiAzMy4zMzMgTUh6IGNy eXN0YWwuICAqLwotCWlvcF9pbml0X3RpbWUoMjAwMDAwMDAwKTsKLX0KLQotCi0vKgotICogR0xB TiBUYW5rIEkvTy4KLSAqLwotc3RhdGljIHN0cnVjdCBtYXBfZGVzYyBnbGFudGFua19pb19kZXNj W10gX19pbml0ZGF0YSA9IHsKLQl7CS8qIG9uLWJvYXJkIGRldmljZXMgKi8KLQkJLnZpcnR1YWwJ PSBHTEFOVEFOS19VQVJULAotCQkucGZuCQk9IF9fcGh5c190b19wZm4oR0xBTlRBTktfVUFSVCks Ci0JCS5sZW5ndGgJCT0gMHgwMDEwMDAwMCwKLQkJLnR5cGUJCT0gTVRfREVWSUNFCi0JfSwKLX07 Ci0KLXZvaWQgX19pbml0IGdsYW50YW5rX21hcF9pbyh2b2lkKQotewotCWlvcDN4eF9tYXBfaW8o KTsKLQlpb3RhYmxlX2luaXQoZ2xhbnRhbmtfaW9fZGVzYywgQVJSQVlfU0laRShnbGFudGFua19p b19kZXNjKSk7Ci19Ci0KLQotLyoKLSAqIEdMQU4gVGFuayBQQ0kuCi0gKi8KLSNkZWZpbmUgSU5U QQlJUlFfSU9QMzJYX1hJTlQwCi0jZGVmaW5lIElOVEIJSVJRX0lPUDMyWF9YSU5UMQotI2RlZmlu ZSBJTlRDCUlSUV9JT1AzMlhfWElOVDIKLSNkZWZpbmUgSU5URAlJUlFfSU9QMzJYX1hJTlQzCi0K LXN0YXRpYyBpbnQgX19pbml0Ci1nbGFudGFua19wY2lfbWFwX2lycShjb25zdCBzdHJ1Y3QgcGNp X2RldiAqZGV2LCB1OCBzbG90LCB1OCBwaW4pCi17Ci0Jc3RhdGljIGludCBwY2lfaXJxX3RhYmxl W11bNF0gPSB7Ci0JCS8qCi0JCSAqIFBDSSBJRFNFTC9JTlRQSU4tPklOVExJTkUKLQkJICogQSAg ICAgICBCICAgICAgIEMgICAgICAgRAotCQkgKi8KLQkJe0lOVEQsIElOVEQsIElOVEQsIElOVER9 LCAvKiBVQVJUICg4MjUwKSAqLwotCQl7SU5UQSwgSU5UQSwgSU5UQSwgSU5UQX0sIC8qIEV0aGVy bmV0IChFMTAwMCkgKi8KLQkJe0lOVEIsIElOVEIsIElOVEIsIElOVEJ9LCAvKiBJREUgKEFFQzYy ODBSKSAqLwotCQl7SU5UQywgSU5UQywgSU5UQywgSU5UQ30sIC8qIFVTQiAoTkVDKSAqLwotCX07 Ci0KLQlCVUdfT04ocGluIDwgMSB8fCBwaW4gPiA0KTsKLQotCXJldHVybiBwY2lfaXJxX3RhYmxl W3Nsb3QgJSA0XVtwaW4gLSAxXTsKLX0KLQotc3RhdGljIHN0cnVjdCBod19wY2kgZ2xhbnRhbmtf cGNpIF9faW5pdGRhdGEgPSB7Ci0JLm5yX2NvbnRyb2xsZXJzID0gMSwKLQkub3BzCQk9ICZpb3Az eHhfb3BzLAotCS5zZXR1cAkJPSBpb3AzeHhfcGNpX3NldHVwLAotCS5wcmVpbml0CT0gaW9wM3h4 X3BjaV9wcmVpbml0LAotCS5tYXBfaXJxCT0gZ2xhbnRhbmtfcGNpX21hcF9pcnEsCi19OwotCi1z dGF0aWMgaW50IF9faW5pdCBnbGFudGFua19wY2lfaW5pdCh2b2lkKQotewotCWlmIChtYWNoaW5l X2lzX2dsYW50YW5rKCkpCi0JCXBjaV9jb21tb25faW5pdCgmZ2xhbnRhbmtfcGNpKTsKLQotCXJl dHVybiAwOwotfQotCi1zdWJzeXNfaW5pdGNhbGwoZ2xhbnRhbmtfcGNpX2luaXQpOwotCi0KLS8q Ci0gKiBHTEFOIFRhbmsgbWFjaGluZSBpbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHN0cnVj dCBwaHlzbWFwX2ZsYXNoX2RhdGEgZ2xhbnRhbmtfZmxhc2hfZGF0YSA9IHsKLQkud2lkdGgJCT0g MiwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgZ2xhbnRhbmtfZmxhc2hfcmVzb3VyY2Ug PSB7Ci0JLnN0YXJ0CQk9IDB4ZjAwMDAwMDAsCi0JLmVuZAkJPSAweGYwMDdmZmZmLAotCS5mbGFn cwkJPSBJT1JFU09VUkNFX01FTSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl IGdsYW50YW5rX2ZsYXNoX2RldmljZSA9IHsKLQkubmFtZQkJPSAicGh5c21hcC1mbGFzaCIsCi0J LmlkCQk9IDAsCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCT0gJmdsYW50YW5rX2ZsYXNo X2RhdGEsCi0JfSwKLQkubnVtX3Jlc291cmNlcwk9IDEsCi0JLnJlc291cmNlCT0gJmdsYW50YW5r X2ZsYXNoX3Jlc291cmNlLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0X3NlcmlhbDgyNTBfcG9y dCBnbGFudGFua19zZXJpYWxfcG9ydFtdID0gewotCXsKLQkJLm1hcGJhc2UJPSBHTEFOVEFOS19V QVJULAotCQkubWVtYmFzZQk9IChjaGFyICopR0xBTlRBTktfVUFSVCwKLQkJLmlycQkJPSBJUlFf SU9QMzJYX1hJTlQzLAotCQkuZmxhZ3MJCT0gVVBGX1NLSVBfVEVTVCwKLQkJLmlvdHlwZQkJPSBV UElPX01FTSwKLQkJLnJlZ3NoaWZ0CT0gMCwKLQkJLnVhcnRjbGsJPSAxODQzMjAwLAotCX0sCi0J eyB9LAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBnbGFudGFua191YXJ0X3Jlc291cmNl ID0gewotCS5zdGFydAkJPSBHTEFOVEFOS19VQVJULAotCS5lbmQJCT0gR0xBTlRBTktfVUFSVCAr IDcsCi0JLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgZ2xhbnRhbmtfc2VyaWFsX2RldmljZSA9IHsKLQkubmFtZQkJPSAic2VyaWFs ODI1MCIsCi0JLmlkCQk9IFBMQVQ4MjUwX0RFVl9QTEFURk9STSwKLQkuZGV2CQk9IHsKLQkJLnBs YXRmb3JtX2RhdGEJCT0gZ2xhbnRhbmtfc2VyaWFsX3BvcnQsCi0JfSwKLQkubnVtX3Jlc291cmNl cwk9IDEsCi0JLnJlc291cmNlCT0gJmdsYW50YW5rX3VhcnRfcmVzb3VyY2UsCi19OwotCi1zdGF0 aWMgc3RydWN0IGY3NTM3NXNfcGxhdGZvcm1fZGF0YSBnbGFudGFua19mNzUzNzVzID0gewotCS5w d20JCT0geyAyNTUsIDI1NSB9LAotCS5wd21fZW5hYmxlCT0geyAwLCAwIH0sCi19OwotCi1zdGF0 aWMgc3RydWN0IGkyY19ib2FyZF9pbmZvIF9faW5pdGRhdGEgZ2xhbnRhbmtfaTJjX2RldmljZXNb XSA9IHsKLQl7Ci0JCUkyQ19CT0FSRF9JTkZPKCJyczVjMzcyYSIsIDB4MzIpLAotCX0sCi0Jewot CQlJMkNfQk9BUkRfSU5GTygiZjc1Mzc1IiwgMHgyZSksCi0JCS5wbGF0Zm9ybV9kYXRhID0gJmds YW50YW5rX2Y3NTM3NXMsCi0JfSwKLX07Ci0KLXN0YXRpYyB2b2lkIGdsYW50YW5rX3Bvd2VyX29m Zih2b2lkKQotewotCV9fcmF3X3dyaXRlYigweDAxLCBJT01FTSgweGZlOGQwMDA0KSk7Ci0KLQl3 aGlsZSAoMSkKLQkJOwotfQotCi1zdGF0aWMgdm9pZCBfX2luaXQgZ2xhbnRhbmtfaW5pdF9tYWNo aW5lKHZvaWQpCi17Ci0JcmVnaXN0ZXJfaW9wMzJ4X2dwaW8oKTsKLQlncGlvZF9hZGRfbG9va3Vw X3RhYmxlKCZpb3AzeHhfaTJjMF9ncGlvX2xvb2t1cCk7Ci0JZ3Bpb2RfYWRkX2xvb2t1cF90YWJs ZSgmaW9wM3h4X2kyYzFfZ3Bpb19sb29rdXApOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigm aW9wM3h4X2kyYzBfZGV2aWNlKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlvcDN4eF9p MmMxX2RldmljZSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZnbGFudGFua19mbGFzaF9k ZXZpY2UpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmZ2xhbnRhbmtfc2VyaWFsX2Rldmlj ZSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZpb3AzeHhfZG1hXzBfY2hhbm5lbCk7Ci0J cGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZpb3AzeHhfZG1hXzFfY2hhbm5lbCk7Ci0KLQlpMmNf cmVnaXN0ZXJfYm9hcmRfaW5mbygwLCBnbGFudGFua19pMmNfZGV2aWNlcywKLQkJQVJSQVlfU0la RShnbGFudGFua19pMmNfZGV2aWNlcykpOwotCi0JcG1fcG93ZXJfb2ZmID0gZ2xhbnRhbmtfcG93 ZXJfb2ZmOwotfQotCi1NQUNISU5FX1NUQVJUKEdMQU5UQU5LLCAiR0xBTiBUYW5rIikKLQkvKiBN YWludGFpbmVyOiBMZW5uZXJ0IEJ1eXRlbmhlayA8YnV5dGVuaEB3YW50c3RvZmx5Lm9yZz4gKi8K LQkuYXRhZ19vZmZzZXQJPSAweDEwMCwKLQkubnJfaXJxcwk9IElPUDMyWF9OUl9JUlFTLAotCS5t YXBfaW8JCT0gZ2xhbnRhbmtfbWFwX2lvLAotCS5pbml0X2lycQk9IGlvcDMyeF9pbml0X2lycSwK LQkuaW5pdF90aW1lCT0gZ2xhbnRhbmtfdGltZXJfaW5pdCwKLQkuaW5pdF9tYWNoaW5lCT0gZ2xh bnRhbmtfaW5pdF9tYWNoaW5lLAotCS5yZXN0YXJ0CT0gaW9wM3h4X3Jlc3RhcnQsCi1NQUNISU5F X0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvZ2xhbnRhbmsuaCBiL2FyY2gv YXJtL21hY2gtaW9wMzJ4L2dsYW50YW5rLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGYzOGU4NmI4MmMzZC4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2ds YW50YW5rLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMCAqLwotLyoKLSAqIElPLURhdGEgR0xBTiBUYW5rIGJvYXJkIHJl Z2lzdGVycwotICovCi0KLSNpZm5kZWYgX19HTEFOVEFOS19ICi0jZGVmaW5lIF9fR0xBTlRBTktf SAotCi0jZGVmaW5lIEdMQU5UQU5LX1VBUlQJCTB4ZmU4MDAwMDAJLyogVUFSVCAqLwotCi0KLSNl bmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvZ3Bpby1pb3AzMnguaCBiL2Fy Y2gvYXJtL21hY2gtaW9wMzJ4L2dwaW8taW9wMzJ4LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDIwYWY4N2U0YzVlOC4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtaW9w MzJ4L2dwaW8taW9wMzJ4LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0vKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBp b3AzMnhfZ3Bpb19yZXNbXSA9IHsKLQlERUZJTkVfUkVTX01FTSgoSU9QM1hYX1BFUklQSEVSQUxf UEhZU19CQVNFICsgMHgwN2M0KSwgMHgxMCksCi19OwotCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVn aXN0ZXJfaW9wMzJ4X2dwaW8odm9pZCkKLXsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2lt cGxlKCJncGlvLWlvcCIsIDAsCi0JCQkJCWlvcDMyeF9ncGlvX3JlcywKLQkJCQkJQVJSQVlfU0la RShpb3AzMnhfZ3Bpb19yZXMpKTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4 L2hhcmR3YXJlLmggYi9hcmNoL2FybS9tYWNoLWlvcDMyeC9oYXJkd2FyZS5oCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA0M2FiNGZiOGY5YjAuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNo L2FybS9tYWNoLWlvcDMyeC9oYXJkd2FyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBA QAotLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNpZm5kZWYgX19IQVJE V0FSRV9ICi0jZGVmaW5lIF9fSEFSRFdBUkVfSAotCi0jaW5jbHVkZSA8YXNtL3R5cGVzLmg+Ci0K LS8qCi0gKiBOb3RlIGFib3V0IFBDSSBJTyBzcGFjZSBtYXBwaW5ncwotICoKLSAqIFRvIG1ha2Ug SU8gc3BhY2UgYWNjZXNzZXMgZWZmaWNpZW50LCB3ZSBzdG9yZSB2aXJ0dWFsIGFkZHJlc3NlcyBp bgotICogdGhlIElPIHJlc291cmNlcy4KLSAqCi0gKiBUaGUgUENJIElPIHNwYWNlIGlzIGxvY2F0 ZWQgYXQgdmlydHVhbCAweGZlMDAwMDAwIGZyb20gcGh5c2ljYWwKLSAqIDB4OTAwMDAwMDAuIFRo ZSBQQ0kgQkFScyBtdXN0IGJlIHByb2dyYW1tZWQgd2l0aCBwaHlzaWNhbCBhZGRyZXNzZXMsCi0g KiBidXQgd2hlbiB3ZSByZWFkIHRoZW0sIHdlIGNvbnZlcnQgdGhlbSB0byB2aXJ0dWFsIGFkZHJl c3Nlcy4gU2VlCi0gKiBhcmNoL2FybS9wbGF0LWlvcC9wY2kuYy4KLSAqLwotCi0jaWZuZGVmIF9f QVNTRU1CTFlfXwotdm9pZCBpb3AzMnhfaW5pdF9pcnEodm9pZCk7Ci0jZW5kaWYKLQotCi0vKgot ICogR2VuZXJpYyBjaGlwc2V0IGJpdHMKLSAqLwotI2luY2x1ZGUgImlvcDN4eC5oIgotCi0vKgot ICogQm9hcmQgc3BlY2lmaWMgYml0cwotICovCi0jaW5jbHVkZSAiZ2xhbnRhbmsuaCIKLSNpbmNs dWRlICJpcTgwMzIxLmgiCi0jaW5jbHVkZSAiaXEzMTI0NC5oIgotI2luY2x1ZGUgIm4yMTAwLmgi Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9pMmMuYyBiL2Fy Y2gvYXJtL21hY2gtaW9wMzJ4L2kyYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl NDIyMjg2YWY0NjkuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9pMmMu YworKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9wbGF0LWlvcC9pMmMuYwotICoKLSAq IEF1dGhvcjogTmljb2xhcyBQaXRyZSA8bmljb0BjYW0ub3JnPgotICogQ29weXJpZ2h0IChDKSAy MDAxIE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwNCBJbnRl bCBDb3Jwb3JhdGlvbi4KLSAqLwotCi0jaW5jbHVkZSA8bGludXgvbW0uaD4KLSNpbmNsdWRlIDxs aW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvbWFqb3IuaD4KLSNpbmNsdWRlIDxsaW51eC9m cy5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4 L3NlcmlhbC5oPgotI2luY2x1ZGUgPGxpbnV4L3R0eS5oPgotI2luY2x1ZGUgPGxpbnV4L3Nlcmlh bF9jb3JlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9ncGlvL21h Y2hpbmUuaD4KLSNpbmNsdWRlIDxhc20vcGFnZS5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5o PgotI2luY2x1ZGUgPGFzbS9zZXR1cC5oPgotI2luY2x1ZGUgPGFzbS9tZW1vcnkuaD4KLSNpbmNs dWRlIDxhc20vbWFjaC9hcmNoLmg+Ci0KLSNpbmNsdWRlICJoYXJkd2FyZS5oIgotI2luY2x1ZGUg ImlvcDN4eC5oIgotI2luY2x1ZGUgImlycXMuaCIKLQotLyoKLSAqIEVhY2ggb2YgdGhlIEkyQyBi dXNzZXMgaGF2ZSBjb3JyZXNwb25kaW5nIEdQSU8gbGluZXMsIGFuZCB0aGUgZHJpdmVyCi0gKiBu ZWVkIHRvIGFjY2VzcyB0aGVzZSBkaXJlY3RseSB0byBkcml2ZSB0aGUgYnVzIGxvdyBhdCB0aW1l cy4KLSAqLwotCi1zdHJ1Y3QgZ3Bpb2RfbG9va3VwX3RhYmxlIGlvcDN4eF9pMmMwX2dwaW9fbG9v a3VwID0gewotCS5kZXZfaWQgPSAiSU9QM3h4LUkyQy4wIiwKLQkudGFibGUgPSB7Ci0JCUdQSU9f TE9PS1VQKCJncGlvLWlvcCIsIDcsICJzY2wiLCBHUElPX0FDVElWRV9ISUdIKSwKLQkJR1BJT19M T09LVVAoImdwaW8taW9wIiwgNiwgInNkYSIsIEdQSU9fQUNUSVZFX0hJR0gpLAotCQl7IH0KLQl9 LAotfTsKLQotc3RydWN0IGdwaW9kX2xvb2t1cF90YWJsZSBpb3AzeHhfaTJjMV9ncGlvX2xvb2t1 cCA9IHsKLQkuZGV2X2lkID0gIklPUDN4eC1JMkMuMSIsCi0JLnRhYmxlID0gewotCQlHUElPX0xP T0tVUCgiZ3Bpby1pb3AiLCA1LCAic2NsIiwgR1BJT19BQ1RJVkVfSElHSCksCi0JCUdQSU9fTE9P S1VQKCJncGlvLWlvcCIsIDQsICJzZGEiLCBHUElPX0FDVElWRV9ISUdIKSwKLQkJeyB9Ci0JfSwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgaW9wM3h4X2kyYzBfcmVzb3VyY2VzW10gPSB7 Ci0JWzBdID0gewotCQkuc3RhcnQJPSAweGZmZmZmNjgwLAotCQkuZW5kCT0gMHhmZmZmZjY5NywK LQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCi0JfSwKLQlbMV0gPSB7Ci0JCS5zdGFydAk9IElS UV9JT1AzMlhfSTJDXzAsCi0JCS5lbmQJPSBJUlFfSU9QMzJYX0kyQ18wLAotCQkuZmxhZ3MJPSBJ T1JFU09VUkNFX0lSUSwKLQl9LAotfTsKLQotc3RydWN0IHBsYXRmb3JtX2RldmljZSBpb3AzeHhf aTJjMF9kZXZpY2UgPSB7Ci0JLm5hbWUJCT0gIklPUDN4eC1JMkMiLAotCS5pZAkJPSAwLAotCS5u dW1fcmVzb3VyY2VzCT0gMiwKLQkucmVzb3VyY2UJPSBpb3AzeHhfaTJjMF9yZXNvdXJjZXMsCi19 OwotCi0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgaW9wM3h4X2kyYzFfcmVzb3VyY2VzW10gPSB7 Ci0JWzBdID0gewotCQkuc3RhcnQJPSAweGZmZmZmNmEwLAotCQkuZW5kCT0gMHhmZmZmZjZiNywK LQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCi0JfSwKLQlbMV0gPSB7Ci0JCS5zdGFydAk9IElS UV9JT1AzMlhfSTJDXzEsCi0JCS5lbmQJPSBJUlFfSU9QMzJYX0kyQ18xLAotCQkuZmxhZ3MJPSBJ T1JFU09VUkNFX0lSUSwKLQl9Ci19OwotCi1zdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGlvcDN4eF9p MmMxX2RldmljZSA9IHsKLQkubmFtZQkJPSAiSU9QM3h4LUkyQyIsCi0JLmlkCQk9IDEsCi0JLm51 bV9yZXNvdXJjZXMJPSAyLAotCS5yZXNvdXJjZQk9IGlvcDN4eF9pMmMxX3Jlc291cmNlcywKLX07 CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9pb3AzeHguaCBiL2FyY2gvYXJtL21h Y2gtaW9wMzJ4L2lvcDN4eC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmVjN2Vi YWRiMzUuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9pb3AzeHguaAor KysgL2Rldi9udWxsCkBAIC0xLDMyNiArMCwwIEBACi0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5ICovCi0vKgotICogSW50ZWwgSU9QMzJYIGFuZCBJT1AzM1ggcmVnaXN0 ZXIgZGVmaW5pdGlvbnMKLSAqCi0gKiBBdXRob3I6IFJvcnkgQm9sdCA8cm9yeWJvbHRAcGFjYmVs bC5uZXQ+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDIgUm9yeSBCb2x0Ci0gKiBDb3B5cmlnaHQgKEMp IDIwMDQgSW50ZWwgQ29ycC4KLSAqLwotCi0jaWZuZGVmIF9fSU9QM1hYX0gKLSNkZWZpbmUgX19J T1AzWFhfSAotCi0vKgotICogUGVyaXBoZXJhbHMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gdGhl IGlvcDMyeCBhbmQgaW9wMzN4IGJ1dAotICogbG9jYXRlZCBhdCBkaWZmZXJlbnQgYWRkcmVzc2Vz LgotICovCi0jZGVmaW5lIElPUDNYWF9USU1FUl9SRUcocmVnKQkoSU9QM1hYX1BFUklQSEVSQUxf VklSVF9CQVNFICsgMHgwN2UwICsgKHJlZykpCi0KLSNpbmNsdWRlICJpb3AzeHguaCIKLQotLyog QVRVIFBhcmFtZXRlcnMKLSAqIHNldCB1cCBhIDE6MSBidXMgdG8gcGh5c2ljYWwgcmFtIHJlbGF0 aW9uc2hpcAotICogdy8gcGh5c2ljYWwgcmFtIG9uIHRvcCBvZiBwY2kgaW4gdGhlIG1lbW9yeSBt YXAKLSAqLwotI2RlZmluZSBJT1AzMlhfTUFYX1JBTV9TSVpFICAgICAgICAgICAgMHg0MDAwMDAw MFVMCi0jZGVmaW5lIElPUDNYWF9NQVhfUkFNX1NJWkUgICAgICAgICAgICBJT1AzMlhfTUFYX1JB TV9TSVpFCi0jZGVmaW5lIElPUDNYWF9QQ0lfTE9XRVJfTUVNX0JBICAgICAgICAweDgwMDAwMDAw Ci0KLS8qCi0gKiBJT1AzWFggR1BJTyBoYW5kbGluZwotICovCi0jZGVmaW5lIElPUDNYWF9HUElP X0xJTkUoeCkJKHgpCi0KLSNpZm5kZWYgX19BU1NFTUJMWV9fCi1leHRlcm4gaW50IGluaXRfYXR1 OwotZXh0ZXJuIGludCBpb3AzeHhfZ2V0X2luaXRfYXR1KHZvaWQpOwotI2VuZGlmCi0KLQotLyoK LSAqIElPUDNYWCBwcm9jZXNzb3IgcmVnaXN0ZXJzCi0gKi8KLSNkZWZpbmUgSU9QM1hYX1BFUklQ SEVSQUxfUEhZU19CQVNFCTB4ZmZmZmUwMDAKLSNkZWZpbmUgSU9QM1hYX1BFUklQSEVSQUxfVklS VF9CQVNFCTB4ZmVkZmUwMDAKLSNkZWZpbmUgSU9QM1hYX1BFUklQSEVSQUxfU0laRQkJMHgwMDAw MjAwMAotI2RlZmluZSBJT1AzWFhfUEVSSVBIRVJBTF9VUFBFUl9QQSAoSU9QM1hYX1BFUklQSEVS QUxfUEhZU19CQVNFICtcCi0JCQkJCUlPUDNYWF9QRVJJUEhFUkFMX1NJWkUgLSAxKQotI2RlZmlu ZSBJT1AzWFhfUEVSSVBIRVJBTF9VUFBFUl9WQSAoSU9QM1hYX1BFUklQSEVSQUxfVklSVF9CQVNF ICtcCi0JCQkJCUlPUDNYWF9QRVJJUEhFUkFMX1NJWkUgLSAxKQotI2RlZmluZSBJT1AzWFhfUE1N Ul9QSFlTX1RPX1ZJUlQoYWRkcikgKHUzMikgKCh1MzIpIChhZGRyKSAtXAotCQkJCQkoSU9QM1hY X1BFUklQSEVSQUxfUEhZU19CQVNFXAotCQkJCQktIElPUDNYWF9QRVJJUEhFUkFMX1ZJUlRfQkFT RSkpCi0jZGVmaW5lIElPUDNYWF9SRUdfQUREUihyZWcpCQkoSU9QM1hYX1BFUklQSEVSQUxfVklS VF9CQVNFICsgKHJlZykpCi0KLS8qIEFkZHJlc3MgVHJhbnNsYXRpb24gVW5pdCAgKi8KLSNkZWZp bmUgSU9QM1hYX0FUVVZJRAkJKHZvbGF0aWxlIHUxNiAqKUlPUDNYWF9SRUdfQUREUigweDAxMDAp Ci0jZGVmaW5lIElPUDNYWF9BVFVESUQJCSh2b2xhdGlsZSB1MTYgKilJT1AzWFhfUkVHX0FERFIo MHgwMTAyKQotI2RlZmluZSBJT1AzWFhfQVRVQ01ECQkodm9sYXRpbGUgdTE2ICopSU9QM1hYX1JF R19BRERSKDB4MDEwNCkKLSNkZWZpbmUgSU9QM1hYX0FUVVNSCQkodm9sYXRpbGUgdTE2ICopSU9Q M1hYX1JFR19BRERSKDB4MDEwNikKLSNkZWZpbmUgSU9QM1hYX0FUVVJJRAkJKHZvbGF0aWxlIHU4 ICAqKUlPUDNYWF9SRUdfQUREUigweDAxMDgpCi0jZGVmaW5lIElPUDNYWF9BVFVDQ1IJCSh2b2xh dGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMTA5KQotI2RlZmluZSBJT1AzWFhfQVRVQ0xT UgkJKHZvbGF0aWxlIHU4ICAqKUlPUDNYWF9SRUdfQUREUigweDAxMGMpCi0jZGVmaW5lIElPUDNY WF9BVFVMVAkJKHZvbGF0aWxlIHU4ICAqKUlPUDNYWF9SRUdfQUREUigweDAxMGQpCi0jZGVmaW5l IElPUDNYWF9BVFVIVFIJCSh2b2xhdGlsZSB1OCAgKilJT1AzWFhfUkVHX0FERFIoMHgwMTBlKQot I2RlZmluZSBJT1AzWFhfQVRVQklTVAkJKHZvbGF0aWxlIHU4ICAqKUlPUDNYWF9SRUdfQUREUigw eDAxMGYpCi0jZGVmaW5lIElPUDNYWF9JQUJBUjAJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVH X0FERFIoMHgwMTEwKQotI2RlZmluZSBJT1AzWFhfSUFVQkFSMAkJKHZvbGF0aWxlIHUzMiAqKUlP UDNYWF9SRUdfQUREUigweDAxMTQpCi0jZGVmaW5lIElPUDNYWF9JQUJBUjEJCSh2b2xhdGlsZSB1 MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMTE4KQotI2RlZmluZSBJT1AzWFhfSUFVQkFSMQkJKHZv bGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDAxMWMpCi0jZGVmaW5lIElPUDNYWF9JQUJB UjIJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMTIwKQotI2RlZmluZSBJT1Az WFhfSUFVQkFSMgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDAxMjQpCi0jZGVm aW5lIElPUDNYWF9BU1ZJUgkJKHZvbGF0aWxlIHUxNiAqKUlPUDNYWF9SRUdfQUREUigweDAxMmMp Ci0jZGVmaW5lIElPUDNYWF9BU0lSCQkodm9sYXRpbGUgdTE2ICopSU9QM1hYX1JFR19BRERSKDB4 MDEyZSkKLSNkZWZpbmUgSU9QM1hYX0VSQkFSCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19B RERSKDB4MDEzMCkKLSNkZWZpbmUgSU9QM1hYX0FUVUlMUgkJKHZvbGF0aWxlIHU4ICAqKUlPUDNY WF9SRUdfQUREUigweDAxM2MpCi0jZGVmaW5lIElPUDNYWF9BVFVJUFIJCSh2b2xhdGlsZSB1OCAg KilJT1AzWFhfUkVHX0FERFIoMHgwMTNkKQotI2RlZmluZSBJT1AzWFhfQVRVTUdOVAkJKHZvbGF0 aWxlIHU4ICAqKUlPUDNYWF9SRUdfQUREUigweDAxM2UpCi0jZGVmaW5lIElPUDNYWF9BVFVNTEFU CQkodm9sYXRpbGUgdTggICopSU9QM1hYX1JFR19BRERSKDB4MDEzZikKLSNkZWZpbmUgSU9QM1hY X0lBTFIwCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDE0MCkKLSNkZWZpbmUg SU9QM1hYX0lBVFZSMAkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDAxNDQpCi0j ZGVmaW5lIElPUDNYWF9FUkxSCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDE0 OCkKLSNkZWZpbmUgSU9QM1hYX0VSVFZSCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERS KDB4MDE0YykKLSNkZWZpbmUgSU9QM1hYX0lBTFIxCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JF R19BRERSKDB4MDE1MCkKLSNkZWZpbmUgSU9QM1hYX0lBTFIyCQkodm9sYXRpbGUgdTMyICopSU9Q M1hYX1JFR19BRERSKDB4MDE1NCkKLSNkZWZpbmUgSU9QM1hYX0lBVFZSMgkJKHZvbGF0aWxlIHUz MiAqKUlPUDNYWF9SRUdfQUREUigweDAxNTgpCi0jZGVmaW5lIElPUDNYWF9PSU9XVFZSCQkodm9s YXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDE1YykKLSNkZWZpbmUgSU9QM1hYX09NV1RW UjAJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMTYwKQotI2RlZmluZSBJT1Az WFhfT1VNV1RWUjAJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMTY0KQotI2Rl ZmluZSBJT1AzWFhfT01XVFZSMQkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDAx NjgpCi0jZGVmaW5lIElPUDNYWF9PVU1XVFZSMQkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdf QUREUigweDAxNmMpCi0jZGVmaW5lIElPUDNYWF9PVURXVFZSCQkodm9sYXRpbGUgdTMyICopSU9Q M1hYX1JFR19BRERSKDB4MDE3OCkKLSNkZWZpbmUgSU9QM1hYX0FUVUNSCQkodm9sYXRpbGUgdTMy ICopSU9QM1hYX1JFR19BRERSKDB4MDE4MCkKLSNkZWZpbmUgSU9QM1hYX1BDU1IJCSh2b2xhdGls ZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMTg0KQotI2RlZmluZSBJT1AzWFhfQVRVSVNSCQko dm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDE4OCkKLSNkZWZpbmUgSU9QM1hYX0FU VUlNUgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDAxOGMpCi0jZGVmaW5lIElP UDNYWF9JQUJBUjMJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMTkwKQotI2Rl ZmluZSBJT1AzWFhfSUFVQkFSMwkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDAx OTQpCi0jZGVmaW5lIElPUDNYWF9JQUxSMwkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQURE UigweDAxOTgpCi0jZGVmaW5lIElPUDNYWF9JQVRWUjMJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhf UkVHX0FERFIoMHgwMTljKQotI2RlZmluZSBJT1AzWFhfT0NDQVIJCSh2b2xhdGlsZSB1MzIgKilJ T1AzWFhfUkVHX0FERFIoMHgwMWE0KQotI2RlZmluZSBJT1AzWFhfT0NDRFIJCSh2b2xhdGlsZSB1 MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMWFjKQotI2RlZmluZSBJT1AzWFhfUERTQ1IJCSh2b2xh dGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMWJjKQotI2RlZmluZSBJT1AzWFhfUE1DQVBJ RAkJKHZvbGF0aWxlIHU4ICAqKUlPUDNYWF9SRUdfQUREUigweDAxYzApCi0jZGVmaW5lIElPUDNY WF9QTU5FWFQJCSh2b2xhdGlsZSB1OCAgKilJT1AzWFhfUkVHX0FERFIoMHgwMWMxKQotI2RlZmlu ZSBJT1AzWFhfQVBNQ1IJCSh2b2xhdGlsZSB1MTYgKilJT1AzWFhfUkVHX0FERFIoMHgwMWMyKQot I2RlZmluZSBJT1AzWFhfQVBNQ1NSCQkodm9sYXRpbGUgdTE2ICopSU9QM1hYX1JFR19BRERSKDB4 MDFjNCkKLSNkZWZpbmUgSU9QM1hYX1BDSVhDQVBJRAkodm9sYXRpbGUgdTggICopSU9QM1hYX1JF R19BRERSKDB4MDFlMCkKLSNkZWZpbmUgSU9QM1hYX1BDSVhORVhUCQkodm9sYXRpbGUgdTggICop SU9QM1hYX1JFR19BRERSKDB4MDFlMSkKLSNkZWZpbmUgSU9QM1hYX1BDSVhDTUQJCSh2b2xhdGls ZSB1MTYgKilJT1AzWFhfUkVHX0FERFIoMHgwMWUyKQotI2RlZmluZSBJT1AzWFhfUENJWFNSCQko dm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDFlNCkKLSNkZWZpbmUgSU9QM1hYX1BD SUlSU1IJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMWVjKQotI2RlZmluZSBJ T1AzWFhfUENTUl9PVVRfUV9CVVNZICgxIDw8IDE1KQotI2RlZmluZSBJT1AzWFhfUENTUl9JTl9R X0JVU1kJKDEgPDwgMTQpCi0jZGVmaW5lIElPUDNYWF9BVFVDUl9PVVRfRU4JKDEgPDwgMSkKLQot I2RlZmluZSBJT1AzWFhfSU5JVF9BVFVfREVGQVVMVCAwCi0jZGVmaW5lIElPUDNYWF9JTklUX0FU VV9ESVNBQkxFIC0xCi0jZGVmaW5lIElPUDNYWF9JTklUX0FUVV9FTkFCTEUJIDEKLQotLyogTWVz c2FnaW5nIFVuaXQgICovCi0jZGVmaW5lIElPUDNYWF9JTVIwCQkodm9sYXRpbGUgdTMyICopSU9Q M1hYX1JFR19BRERSKDB4MDMxMCkKLSNkZWZpbmUgSU9QM1hYX0lNUjEJCSh2b2xhdGlsZSB1MzIg KilJT1AzWFhfUkVHX0FERFIoMHgwMzE0KQotI2RlZmluZSBJT1AzWFhfT01SMAkJKHZvbGF0aWxl IHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDAzMTgpCi0jZGVmaW5lIElPUDNYWF9PTVIxCQkodm9s YXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDMxYykKLSNkZWZpbmUgSU9QM1hYX0lEUgkJ KHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDAzMjApCi0jZGVmaW5lIElPUDNYWF9J SVNSCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDMyNCkKLSNkZWZpbmUgSU9Q M1hYX0lJTVIJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMzI4KQotI2RlZmlu ZSBJT1AzWFhfT0RSCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDMyYykKLSNk ZWZpbmUgSU9QM1hYX09JU1IJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMzMw KQotI2RlZmluZSBJT1AzWFhfT0lNUgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigw eDAzMzQpCi0jZGVmaW5lIElPUDNYWF9NVUNSCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19B RERSKDB4MDM1MCkKLSNkZWZpbmUgSU9QM1hYX1FCQVIJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhf UkVHX0FERFIoMHgwMzU0KQotI2RlZmluZSBJT1AzWFhfSUZIUFIJCSh2b2xhdGlsZSB1MzIgKilJ T1AzWFhfUkVHX0FERFIoMHgwMzYwKQotI2RlZmluZSBJT1AzWFhfSUZUUFIJCSh2b2xhdGlsZSB1 MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMzY0KQotI2RlZmluZSBJT1AzWFhfSVBIUFIJCSh2b2xh dGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMzY4KQotI2RlZmluZSBJT1AzWFhfSVBUUFIJ CSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMzZjKQotI2RlZmluZSBJT1AzWFhf T0ZIUFIJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMzcwKQotI2RlZmluZSBJ T1AzWFhfT0ZUUFIJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMzc0KQotI2Rl ZmluZSBJT1AzWFhfT1BIUFIJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwMzc4 KQotI2RlZmluZSBJT1AzWFhfT1BUUFIJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIo MHgwMzdjKQotI2RlZmluZSBJT1AzWFhfSUFSCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19B RERSKDB4MDM4MCkKLQotLyogRE1BIENvbnRyb2xsZXIgICovCi0jZGVmaW5lIElPUDNYWF9ETUFf UEhZU19CQVNFKGNoYW4pIChJT1AzWFhfUEVSSVBIRVJBTF9QSFlTX0JBU0UgKyBcCi0JCQkJCSgw eDQwMCArIChjaGFuIDw8IDYpKSkKLSNkZWZpbmUgSU9QM1hYX0RNQV9VUFBFUl9QQShjaGFuKSAg KElPUDNYWF9ETUFfUEhZU19CQVNFKGNoYW4pICsgMHgyNykKLQotLyogUGVyaXBoZXJhbCBidXMg aW50ZXJmYWNlICAqLwotI2RlZmluZSBJT1AzWFhfUEJDUgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNY WF9SRUdfQUREUigweDA2ODApCi0jZGVmaW5lIElPUDNYWF9QQklTUgkJKHZvbGF0aWxlIHUzMiAq KUlPUDNYWF9SRUdfQUREUigweDA2ODQpCi0jZGVmaW5lIElPUDNYWF9QQkJBUjAJCSh2b2xhdGls ZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwNjg4KQotI2RlZmluZSBJT1AzWFhfUEJMUjAJCSh2 b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgwNjhjKQotI2RlZmluZSBJT1AzWFhfUEJC QVIxCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDY5MCkKLSNkZWZpbmUgSU9Q M1hYX1BCTFIxCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDY5NCkKLSNkZWZp bmUgSU9QM1hYX1BCQkFSMgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDA2OTgp Ci0jZGVmaW5lIElPUDNYWF9QQkxSMgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigw eDA2OWMpCi0jZGVmaW5lIElPUDNYWF9QQkJBUjMJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVH X0FERFIoMHgwNmEwKQotI2RlZmluZSBJT1AzWFhfUEJMUjMJCSh2b2xhdGlsZSB1MzIgKilJT1Az WFhfUkVHX0FERFIoMHgwNmE0KQotI2RlZmluZSBJT1AzWFhfUEJCQVI0CQkodm9sYXRpbGUgdTMy ICopSU9QM1hYX1JFR19BRERSKDB4MDZhOCkKLSNkZWZpbmUgSU9QM1hYX1BCTFI0CQkodm9sYXRp bGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MDZhYykKLSNkZWZpbmUgSU9QM1hYX1BCQkFSNQkJ KHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDA2YjApCi0jZGVmaW5lIElPUDNYWF9Q QkxSNQkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDA2YjQpCi0jZGVmaW5lIElP UDNYWF9QTUJSMAkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDA2YzApCi0jZGVm aW5lIElPUDNYWF9QTUJSMQkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDA2ZTAp Ci0jZGVmaW5lIElPUDNYWF9QTUJSMgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigw eDA2ZTQpCi0KLS8qIFBlcmlwaGVyYWwgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB1bml0ICAqLwot I2RlZmluZSBJT1AzWFhfR1RNUgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDA3 MDApCi0jZGVmaW5lIElPUDNYWF9FU1IJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIo MHgwNzA0KQotI2RlZmluZSBJT1AzWFhfRU1JU1IJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVH X0FERFIoMHgwNzA4KQotI2RlZmluZSBJT1AzWFhfR1RTUgkJKHZvbGF0aWxlIHUzMiAqKUlPUDNY WF9SRUdfQUREUigweDA3MTApCi0vKiBQRVJDUjAgRE9FU04nVCBFWElTVCAtIGluZGV4IGZyb20g MSEgKi8KLSNkZWZpbmUgSU9QM1hYX1BFUkNSMAkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdf QUREUigweDA3MTApCi0KLS8qIFRpbWVycyAgKi8KLSNkZWZpbmUgSU9QM1hYX1RVX1RNUjAJCSh2 b2xhdGlsZSB1MzIgKilJT1AzWFhfVElNRVJfUkVHKDB4MDAwMCkKLSNkZWZpbmUgSU9QM1hYX1RV X1RNUjEJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfVElNRVJfUkVHKDB4MDAwNCkKLSNkZWZpbmUg SU9QM1hYX1RVX1RDUjAJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfVElNRVJfUkVHKDB4MDAwOCkK LSNkZWZpbmUgSU9QM1hYX1RVX1RDUjEJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfVElNRVJfUkVH KDB4MDAwYykKLSNkZWZpbmUgSU9QM1hYX1RVX1RSUjAJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhf VElNRVJfUkVHKDB4MDAxMCkKLSNkZWZpbmUgSU9QM1hYX1RVX1RSUjEJCSh2b2xhdGlsZSB1MzIg KilJT1AzWFhfVElNRVJfUkVHKDB4MDAxNCkKLSNkZWZpbmUgSU9QM1hYX1RVX1RJU1IJCSh2b2xh dGlsZSB1MzIgKilJT1AzWFhfVElNRVJfUkVHKDB4MDAxOCkKLSNkZWZpbmUgSU9QM1hYX1RVX1dE VENSCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1RJTUVSX1JFRygweDAwMWMpCi0jZGVmaW5lIElP UF9UTVJfRU4JICAgIDB4MDIKLSNkZWZpbmUgSU9QX1RNUl9SRUxPQUQJICAgIDB4MDQKLSNkZWZp bmUgSU9QX1RNUl9QUklWSUxFR0VEIDB4MDgKLSNkZWZpbmUgSU9QX1RNUl9SQVRJT18xXzEgIDB4 MDAKLQotLyogV2F0Y2hkb2cgdGltZXIgZGVmaW5pdGlvbnMgKi8KLSNkZWZpbmUgSU9QX1dEVENS X0VOX0FSTSAgICAgICAgMHgxZTFlMWUxZQotI2RlZmluZSBJT1BfV0RUQ1JfRU4gICAgICAgICAg ICAweGUxZTFlMWUxCi0vKiBpb3AzeHggZG9lcyBub3Qgc3VwcG9ydCBzdG9wcGluZyB0aGUgd2F0 Y2hkb2csIHNvIHdlIGp1c3QgcmUtYXJtICovCi0jZGVmaW5lIElPUF9XRFRDUl9ESVNfQVJNCShJ T1BfV0RUQ1JfRU5fQVJNKQotI2RlZmluZSBJT1BfV0RUQ1JfRElTCQkoSU9QX1dEVENSX0VOKQot Ci0vKiBBcHBsaWNhdGlvbiBhY2NlbGVyYXRvciB1bml0ICAqLwotI2RlZmluZSBJT1AzWFhfQUFV X1BIWVNfQkFTRSAoSU9QM1hYX1BFUklQSEVSQUxfUEhZU19CQVNFICsgMHg4MDApCi0jZGVmaW5l IElPUDNYWF9BQVVfVVBQRVJfUEEgKElPUDNYWF9BQVVfUEhZU19CQVNFICsgMHhhNykKLQotLyog STJDIGJ1cyBpbnRlcmZhY2UgdW5pdCAgKi8KLSNkZWZpbmUgSU9QM1hYX0lDUjAJCSh2b2xhdGls ZSB1MzIgKilJT1AzWFhfUkVHX0FERFIoMHgxNjgwKQotI2RlZmluZSBJT1AzWFhfSVNSMAkJKHZv bGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDE2ODQpCi0jZGVmaW5lIElPUDNYWF9JU0FS MAkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDE2ODgpCi0jZGVmaW5lIElPUDNY WF9JREJSMAkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDE2OGMpCi0jZGVmaW5l IElPUDNYWF9JQk1SMAkJKHZvbGF0aWxlIHUzMiAqKUlPUDNYWF9SRUdfQUREUigweDE2OTQpCi0j ZGVmaW5lIElPUDNYWF9JQ1IxCQkodm9sYXRpbGUgdTMyICopSU9QM1hYX1JFR19BRERSKDB4MTZh MCkKLSNkZWZpbmUgSU9QM1hYX0lTUjEJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVHX0FERFIo MHgxNmE0KQotI2RlZmluZSBJT1AzWFhfSVNBUjEJCSh2b2xhdGlsZSB1MzIgKilJT1AzWFhfUkVH X0FERFIoMHgxNmE4KQotI2RlZmluZSBJT1AzWFhfSURCUjEJCSh2b2xhdGlsZSB1MzIgKilJT1Az WFhfUkVHX0FERFIoMHgxNmFjKQotI2RlZmluZSBJT1AzWFhfSUJNUjEJCSh2b2xhdGlsZSB1MzIg KilJT1AzWFhfUkVHX0FERFIoMHgxNmI0KQotCi0KLS8qCi0gKiBJT1AzWFggSS9PIGFuZCBNZW0g c3BhY2UgcmVnaW9ucyBmb3IgUENJIGF1dG9jb25maWd1cmF0aW9uCi0gKi8KLSNkZWZpbmUgSU9Q M1hYX1BDSV9MT1dFUl9NRU1fUEEJMHg4MDAwMDAwMAotI2RlZmluZSBJT1AzWFhfUENJX01FTV9X SU5ET1dfU0laRQkweDA4MDAwMDAwCi0KLSNkZWZpbmUgSU9QM1hYX1BDSV9MT1dFUl9JT19QQQkJ MHg5MDAwMDAwMAotI2RlZmluZSBJT1AzWFhfUENJX0xPV0VSX0lPX0JBCQkweDAwMDAwMDAwCi0K LSNpZm5kZWYgX19BU1NFTUJMWV9fCi0KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1 ZGUgPGxpbnV4L3JlYm9vdC5oPgotCi12b2lkIGlvcDN4eF9tYXBfaW8odm9pZCk7Ci12b2lkIGlv cF9lbmFibGVfY3A2KHZvaWQpOwotdm9pZCBpb3BfaW5pdF9jcDZfaGFuZGxlcih2b2lkKTsKLXZv aWQgaW9wX2luaXRfdGltZSh1bnNpZ25lZCBsb25nIHRpY2tyYXRlKTsKLXZvaWQgaW9wM3h4X3Jl c3RhcnQoZW51bSByZWJvb3RfbW9kZSwgY29uc3QgY2hhciAqKTsKLQotc3RhdGljIGlubGluZSB1 MzIgcmVhZF90bXIwKHZvaWQpCi17Ci0JdTMyIHZhbDsKLQlhc20gdm9sYXRpbGUoIm1yYyBwNiwg MCwgJTAsIGMwLCBjMSwgMCIgOiAiPXIiICh2YWwpKTsKLQlyZXR1cm4gdmFsOwotfQotCi1zdGF0 aWMgaW5saW5lIHZvaWQgd3JpdGVfdG1yMCh1MzIgdmFsKQotewotCWFzbSB2b2xhdGlsZSgibWNy IHA2LCAwLCAlMCwgYzAsIGMxLCAwIiA6IDogInIiICh2YWwpKTsKLX0KLQotc3RhdGljIGlubGlu ZSB2b2lkIHdyaXRlX3RtcjEodTMyIHZhbCkKLXsKLQlhc20gdm9sYXRpbGUoIm1jciBwNiwgMCwg JTAsIGMxLCBjMSwgMCIgOiA6ICJyIiAodmFsKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdTMyIHJl YWRfdGNyMCh2b2lkKQotewotCXUzMiB2YWw7Ci0JYXNtIHZvbGF0aWxlKCJtcmMgcDYsIDAsICUw LCBjMiwgYzEsIDAiIDogIj1yIiAodmFsKSk7Ci0JcmV0dXJuIHZhbDsKLX0KLQotc3RhdGljIGlu bGluZSB2b2lkIHdyaXRlX3RjcjAodTMyIHZhbCkKLXsKLQlhc20gdm9sYXRpbGUoIm1jciBwNiwg MCwgJTAsIGMyLCBjMSwgMCIgOiA6ICJyIiAodmFsKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdTMy IHJlYWRfdGNyMSh2b2lkKQotewotCXUzMiB2YWw7Ci0JYXNtIHZvbGF0aWxlKCJtcmMgcDYsIDAs ICUwLCBjMywgYzEsIDAiIDogIj1yIiAodmFsKSk7Ci0JcmV0dXJuIHZhbDsKLX0KLQotc3RhdGlj IGlubGluZSB2b2lkIHdyaXRlX3RjcjEodTMyIHZhbCkKLXsKLQlhc20gdm9sYXRpbGUoIm1jciBw NiwgMCwgJTAsIGMzLCBjMSwgMCIgOiA6ICJyIiAodmFsKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg dm9pZCB3cml0ZV90cnIwKHUzMiB2YWwpCi17Ci0JYXNtIHZvbGF0aWxlKCJtY3IgcDYsIDAsICUw LCBjNCwgYzEsIDAiIDogOiAiciIgKHZhbCkpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgd3Jp dGVfdHJyMSh1MzIgdmFsKQotewotCWFzbSB2b2xhdGlsZSgibWNyIHA2LCAwLCAlMCwgYzUsIGMx LCAwIiA6IDogInIiICh2YWwpKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHdyaXRlX3Rpc3Io dTMyIHZhbCkKLXsKLQlhc20gdm9sYXRpbGUoIm1jciBwNiwgMCwgJTAsIGM2LCBjMSwgMCIgOiA6 ICJyIiAodmFsKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdTMyIHJlYWRfd2R0Y3Iodm9pZCkKLXsK LQl1MzIgdmFsOwotCWFzbSB2b2xhdGlsZSgibXJjIHA2LCAwLCAlMCwgYzcsIGMxLCAwIjoiPXIi ICh2YWwpKTsKLQlyZXR1cm4gdmFsOwotfQotc3RhdGljIGlubGluZSB2b2lkIHdyaXRlX3dkdGNy KHUzMiB2YWwpCi17Ci0JYXNtIHZvbGF0aWxlKCJtY3IgcDYsIDAsICUwLCBjNywgYzEsIDAiOjoi ciIgKHZhbCkpOwotfQotCi1leHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfaW9wX3RpY2tfcmF0ZSh2 b2lkKTsKLQotLyogb25seSBpb3AxM3h4IGhhcyB0aGVzZSByZWdpc3RlcnMsIHdlIGRlZmluZSB0 aGVzZSB0byBwcmVzZW50IGEKLSAqIGNvbW1vbiByZWdpc3RlciBpbnRlcmZhY2UgZm9yIHRoZSBp b3Bfd2R0IGRyaXZlci4KLSAqLwotI2RlZmluZSBJT1BfUkNTUl9XRFQJKDApCi1zdGF0aWMgaW5s aW5lIHUzMiByZWFkX3Jjc3Iodm9pZCkKLXsKLQlyZXR1cm4gMDsKLX0KLXN0YXRpYyBpbmxpbmUg dm9pZCB3cml0ZV93ZHRzcih1MzIgdmFsKQotewotCWRvIHsgfSB3aGlsZSAoMCk7Ci19Ci0KLWV4 dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGlvcDN4eF9kbWFfMF9jaGFubmVsOwotZXh0ZXJu IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgaW9wM3h4X2RtYV8xX2NoYW5uZWw7Ci1leHRlcm4gc3Ry dWN0IHBsYXRmb3JtX2RldmljZSBpb3AzeHhfYWF1X2NoYW5uZWw7Ci1leHRlcm4gc3RydWN0IHBs YXRmb3JtX2RldmljZSBpb3AzeHhfaTJjMF9kZXZpY2U7Ci1leHRlcm4gc3RydWN0IHBsYXRmb3Jt X2RldmljZSBpb3AzeHhfaTJjMV9kZXZpY2U7Ci1leHRlcm4gc3RydWN0IGdwaW9kX2xvb2t1cF90 YWJsZSBpb3AzeHhfaTJjMF9ncGlvX2xvb2t1cDsKLWV4dGVybiBzdHJ1Y3QgZ3Bpb2RfbG9va3Vw X3RhYmxlIGlvcDN4eF9pMmMxX2dwaW9fbG9va3VwOwotCi0jZW5kaWYKLQotCi0jZW5kaWYKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2lxMzEyNDQuYyBiL2FyY2gvYXJtL21hY2gt aW9wMzJ4L2lxMzEyNDQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI0YzI5ZDE3 MjY1Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvaXEzMTI0NC5jCisr KyAvZGV2L251bGwKQEAgLTEsMzMzICswLDAgQEAKLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9yLWxhdGVyCi0vKgotICogYXJjaC9hcm0vbWFjaC1pb3AzMngvaXEzMTI0NC5j Ci0gKgotICogQm9hcmQgc3VwcG9ydCBjb2RlIGZvciB0aGUgSW50ZWwgRVA4MDIxOSBhbmQgSVEz MTI0NCBwbGF0Zm9ybXMuCi0gKgotICogQXV0aG9yOiBSb3J5IEJvbHQgPHJvcnlib2x0QHBhY2Jl bGwubmV0PgotICogQ29weXJpZ2h0IChDKSAyMDAyIFJvcnkgQm9sdAotICogQ29weXJpZ2h0IDIw MDMgKGMpIE1vbnRhVmlzdGEsIFNvZnR3YXJlLCBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQg SW50ZWwgQ29ycC4KLSAqLwotCi0jaW5jbHVkZSA8bGludXgvbW0uaD4KLSNpbmNsdWRlIDxsaW51 eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLSNpbmNsdWRlIDxsaW51eC9wbS5oPgotI2lu Y2x1ZGUgPGxpbnV4L3N0cmluZy5oPgotI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9jb3JlLmg+Ci0j aW5jbHVkZSA8bGludXgvc2VyaWFsXzgyNTAuaD4KLSNpbmNsdWRlIDxsaW51eC9tdGQvcGh5c21h cC5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4 L2lvLmg+Ci0jaW5jbHVkZSA8bGludXgvZ3Bpby9tYWNoaW5lLmg+Ci0jaW5jbHVkZSA8YXNtL2Nw dXR5cGUuaD4KLSNpbmNsdWRlIDxhc20vaXJxLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5o PgotI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL3BjaS5oPgot I2luY2x1ZGUgPGFzbS9tYWNoL3RpbWUuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgot I2luY2x1ZGUgPGFzbS9wYWdlLmg+Ci0KLSNpbmNsdWRlICJoYXJkd2FyZS5oIgotI2luY2x1ZGUg ImlycXMuaCIKLSNpbmNsdWRlICJncGlvLWlvcDMyeC5oIgotCi0vKgotICogVW50aWwgTWFyY2gg b2YgMjAwNyBpcTMxMjQ0IHBsYXRmb3JtcyBhbmQgZXA4MDIxOSBwbGF0Zm9ybXMgc2hhcmVkIHRo ZQotICogc2FtZSBtYWNoaW5lIGlkLCBhbmQgdGhlIHByb2Nlc3NvciB0eXBlIHdhcyB1c2VkIHRv IHNlbGVjdCBib2FyZCB0eXBlLgotICogSG93ZXZlciB0aGlzIGFzc3VtcHRpb24gYnJlYWtzIGZv ciBhbiBpcTgwMjE5IGJvYXJkIHdoaWNoIGlzIGFuIGlvcDIxOQotICogcHJvY2Vzc29yIG9uIGFu IGlxMzEyNDQgYm9hcmQuICBUaGUgZm9yY2VfZXA4MDIxOSBmbGFnIGhhcyBiZWVuIGFkZGVkCi0g KiBmb3Igb2xkIGJvb3QgbG9hZGVycyB1c2luZyB0aGUgaXEzMTI0NCBtYWNoaW5lIGlkIGZvciBh biBlcDgwMjE5IHBsYXRmb3JtLgotICovCi1zdGF0aWMgaW50IGZvcmNlX2VwODAyMTk7Ci0KLXN0 YXRpYyBpbnQgaXNfODAyMTkodm9pZCkKLXsKLQlyZXR1cm4gISEoKHJlYWRfY3B1aWRfaWQoKSAm IDB4ZmZmZmZmZTApID09IDB4NjkwNTJlMjApOwotfQotCi1zdGF0aWMgaW50IGlzX2VwODAyMTko dm9pZCkKLXsKLQlpZiAobWFjaGluZV9pc19lcDgwMjE5KCkgfHwgZm9yY2VfZXA4MDIxOSkKLQkJ cmV0dXJuIDE7Ci0JZWxzZQotCQlyZXR1cm4gMDsKLX0KLQotCi0vKgotICogRVA4MDIxOS9JUTMx MjQ0IHRpbWVyIHRpY2sgY29uZmlndXJhdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgX19pbml0IGlx MzEyNDRfdGltZXJfaW5pdCh2b2lkKQotewotCWlmIChpc19lcDgwMjE5KCkpIHsKLQkJLyogMzMu MzMzIE1IeiBjcnlzdGFsLiAgKi8KLQkJaW9wX2luaXRfdGltZSgyMDAwMDAwMDApOwotCX0gZWxz ZSB7Ci0JCS8qIDMzLjAwMCBNSHogY3J5c3RhbC4gICovCi0JCWlvcF9pbml0X3RpbWUoMTk4MDAw MDAwKTsKLQl9Ci19Ci0KLQotLyoKLSAqIElRMzEyNDQgSS9PLgotICovCi1zdGF0aWMgc3RydWN0 IG1hcF9kZXNjIGlxMzEyNDRfaW9fZGVzY1tdIF9faW5pdGRhdGEgPSB7Ci0JewkvKiBvbi1ib2Fy ZCBkZXZpY2VzICovCi0JCS52aXJ0dWFsCT0gSVEzMTI0NF9VQVJULAotCQkucGZuCQk9IF9fcGh5 c190b19wZm4oSVEzMTI0NF9VQVJUKSwKLQkJLmxlbmd0aAkJPSAweDAwMTAwMDAwLAotCQkudHlw ZQkJPSBNVF9ERVZJQ0UsCi0JfSwKLX07Ci0KLXZvaWQgX19pbml0IGlxMzEyNDRfbWFwX2lvKHZv aWQpCi17Ci0JaW9wM3h4X21hcF9pbygpOwotCWlvdGFibGVfaW5pdChpcTMxMjQ0X2lvX2Rlc2Ms IEFSUkFZX1NJWkUoaXEzMTI0NF9pb19kZXNjKSk7Ci19Ci0KLQotLyoKLSAqIEVQODAyMTkvSVEz MTI0NCBQQ0kuCi0gKi8KLXN0YXRpYyBpbnQgX19pbml0Ci1lcDgwMjE5X3BjaV9tYXBfaXJxKGNv bnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4IHBpbikKLXsKLQlpbnQgaXJxOwot Ci0JaWYgKHNsb3QgPT0gMCkgewotCQkvKiBDRmxhc2ggKi8KLQkJaXJxID0gSVJRX0lPUDMyWF9Y SU5UMTsKLQl9IGVsc2UgaWYgKHNsb3QgPT0gMSkgewotCQkvKiA4MjU1MSBQcm8gMTAwICovCi0J CWlycSA9IElSUV9JT1AzMlhfWElOVDA7Ci0JfSBlbHNlIGlmIChzbG90ID09IDIpIHsKLQkJLyog UENJLVggU2xvdCAqLwotCQlpcnEgPSBJUlFfSU9QMzJYX1hJTlQzOwotCX0gZWxzZSBpZiAoc2xv dCA9PSAzKSB7Ci0JCS8qIFNBVEEgKi8KLQkJaXJxID0gSVJRX0lPUDMyWF9YSU5UMjsKLQl9IGVs c2UgewotCQlwcmludGsoS0VSTl9FUlIgImVwODAyMTlfcGNpX21hcF9pcnEoKSBjYWxsZWQgZm9y IHVua25vd24gIgotCQkJImRldmljZSBQQ0k6JWQ6JWQ6JWRcbiIsIGRldi0+YnVzLT5udW1iZXIs Ci0JCQlQQ0lfU0xPVChkZXYtPmRldmZuKSwgUENJX0ZVTkMoZGV2LT5kZXZmbikpOwotCQlpcnEg PSAtMTsKLQl9Ci0KLQlyZXR1cm4gaXJxOwotfQotCi1zdGF0aWMgc3RydWN0IGh3X3BjaSBlcDgw MjE5X3BjaSBfX2luaXRkYXRhID0gewotCS5ucl9jb250cm9sbGVycyA9IDEsCi0JLm9wcwkJPSAm aW9wM3h4X29wcywKLQkuc2V0dXAJCT0gaW9wM3h4X3BjaV9zZXR1cCwKLQkucHJlaW5pdAk9IGlv cDN4eF9wY2lfcHJlaW5pdCwKLQkubWFwX2lycQk9IGVwODAyMTlfcGNpX21hcF9pcnEsCi19Owot Ci1zdGF0aWMgaW50IF9faW5pdAotaXEzMTI0NF9wY2lfbWFwX2lycShjb25zdCBzdHJ1Y3QgcGNp X2RldiAqZGV2LCB1OCBzbG90LCB1OCBwaW4pCi17Ci0JaW50IGlycTsKLQotCWlmIChzbG90ID09 IDApIHsKLQkJLyogQ0ZsYXNoICovCi0JCWlycSA9IElSUV9JT1AzMlhfWElOVDE7Ci0JfSBlbHNl IGlmIChzbG90ID09IDEpIHsKLQkJLyogU0FUQSAqLwotCQlpcnEgPSBJUlFfSU9QMzJYX1hJTlQy OwotCX0gZWxzZSBpZiAoc2xvdCA9PSAyKSB7Ci0JCS8qIFBDSS1YIFNsb3QgKi8KLQkJaXJxID0g SVJRX0lPUDMyWF9YSU5UMzsKLQl9IGVsc2UgaWYgKHNsb3QgPT0gMykgewotCQkvKiA4MjU0NiBH aWdFICovCi0JCWlycSA9IElSUV9JT1AzMlhfWElOVDA7Ci0JfSBlbHNlIHsKLQkJcHJpbnRrKEtF Uk5fRVJSICJpcTMxMjQ0X3BjaV9tYXBfaXJxIGNhbGxlZCBmb3IgdW5rbm93biAiCi0JCQkiZGV2 aWNlIFBDSTolZDolZDolZFxuIiwgZGV2LT5idXMtPm51bWJlciwKLQkJCVBDSV9TTE9UKGRldi0+ ZGV2Zm4pLCBQQ0lfRlVOQyhkZXYtPmRldmZuKSk7Ci0JCWlycSA9IC0xOwotCX0KLQotCXJldHVy biBpcnE7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgaHdfcGNpIGlxMzEyNDRfcGNpIF9faW5pdGRhdGEg PSB7Ci0JLm5yX2NvbnRyb2xsZXJzID0gMSwKLQkub3BzCQk9ICZpb3AzeHhfb3BzLAotCS5zZXR1 cAkJPSBpb3AzeHhfcGNpX3NldHVwLAotCS5wcmVpbml0CT0gaW9wM3h4X3BjaV9wcmVpbml0LAot CS5tYXBfaXJxCT0gaXEzMTI0NF9wY2lfbWFwX2lycSwKLX07Ci0KLXN0YXRpYyBpbnQgX19pbml0 IGlxMzEyNDRfcGNpX2luaXQodm9pZCkKLXsKLQlpZiAoaXNfZXA4MDIxOSgpKQotCQlwY2lfY29t bW9uX2luaXQoJmVwODAyMTlfcGNpKTsKLQllbHNlIGlmIChtYWNoaW5lX2lzX2lxMzEyNDQoKSkg ewotCQlpZiAoaXNfODAyMTkoKSkgewotCQkJcHJpbnRrKCJub3RlOiBpcTMxMjQ0IGJvYXJkIHR5 cGUgaGFzIGJlZW4gc2VsZWN0ZWRcbiIpOwotCQkJcHJpbnRrKCJub3RlOiB0byBzZWxlY3QgZXA4 MDIxOSBvcGVyYXRpb246XG4iKTsKLQkJCXByaW50aygiXHQxLyBzcGVjaWZ5IFwiZm9yY2VfZXA4 MDIxOVwiIG9uIHRoZSBrZXJuZWwiCi0JCQkJIiBjb21tYW5kIGxpbmVcbiIpOwotCQkJcHJpbnRr KCJcdDIvIHVwZGF0ZSBib290IGxvYWRlciB0byBwYXNzIgotCQkJCSIgdGhlIGVwODAyMTkgaWQ6 ICVkXG4iLCBNQUNIX1RZUEVfRVA4MDIxOSk7Ci0JCX0KLQkJcGNpX2NvbW1vbl9pbml0KCZpcTMx MjQ0X3BjaSk7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN1YnN5c19pbml0Y2FsbChpcTMxMjQ0 X3BjaV9pbml0KTsKLQotCi0vKgotICogSVEzMTI0NCBtYWNoaW5lIGluaXRpYWxpc2F0aW9uLgot ICovCi1zdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0YSBpcTMxMjQ0X2ZsYXNoX2RhdGEg PSB7Ci0JLndpZHRoCQk9IDIsCi19OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIGlxMzEyNDRf Zmxhc2hfcmVzb3VyY2UgPSB7Ci0JLnN0YXJ0CQk9IDB4ZjAwMDAwMDAsCi0JLmVuZAkJPSAweGYw N2ZmZmZmLAotCS5mbGFncwkJPSBJT1JFU09VUkNFX01FTSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlIGlxMzEyNDRfZmxhc2hfZGV2aWNlID0gewotCS5uYW1lCQk9ICJwaHlz bWFwLWZsYXNoIiwKLQkuaWQJCT0gMCwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAm aXEzMTI0NF9mbGFzaF9kYXRhLAotCX0sCi0JLm51bV9yZXNvdXJjZXMJPSAxLAotCS5yZXNvdXJj ZQk9ICZpcTMxMjQ0X2ZsYXNoX3Jlc291cmNlLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0X3Nl cmlhbDgyNTBfcG9ydCBpcTMxMjQ0X3NlcmlhbF9wb3J0W10gPSB7Ci0JewotCQkubWFwYmFzZQk9 IElRMzEyNDRfVUFSVCwKLQkJLm1lbWJhc2UJPSAoY2hhciAqKUlRMzEyNDRfVUFSVCwKLQkJLmly cQkJPSBJUlFfSU9QMzJYX1hJTlQxLAotCQkuZmxhZ3MJCT0gVVBGX1NLSVBfVEVTVCwKLQkJLmlv dHlwZQkJPSBVUElPX01FTSwKLQkJLnJlZ3NoaWZ0CT0gMCwKLQkJLnVhcnRjbGsJPSAxODQzMjAw LAotCX0sCi0JeyB9LAotfTsKLQotc3RhdGljIHN0cnVjdCByZXNvdXJjZSBpcTMxMjQ0X3VhcnRf cmVzb3VyY2UgPSB7Ci0JLnN0YXJ0CQk9IElRMzEyNDRfVUFSVCwKLQkuZW5kCQk9IElRMzEyNDRf VUFSVCArIDcsCi0JLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAotfTsKLQotc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgaXEzMTI0NF9zZXJpYWxfZGV2aWNlID0gewotCS5uYW1lCQk9ICJz ZXJpYWw4MjUwIiwKLQkuaWQJCT0gUExBVDgyNTBfREVWX1BMQVRGT1JNLAotCS5kZXYJCT0gewot CQkucGxhdGZvcm1fZGF0YQkJPSBpcTMxMjQ0X3NlcmlhbF9wb3J0LAotCX0sCi0JLm51bV9yZXNv dXJjZXMJPSAxLAotCS5yZXNvdXJjZQk9ICZpcTMxMjQ0X3VhcnRfcmVzb3VyY2UsCi19OwotCi0v KgotICogVGhpcyBmdW5jdGlvbiB3aWxsIHNlbmQgYSBTSFVURE9XTl9DT01QTEVURSBtZXNzYWdl IHRvIHRoZSBQSUMKLSAqIGNvbnRyb2xsZXIgb3ZlciBJMkMuICBXZSBhcmUgbm90IHVzaW5nIHRo ZSBpMmMgc3Vic3lzdGVtIHNpbmNlCi0gKiB3ZSBhcmUgZ29pbmcgdG8gcG93ZXIgb2ZmIGFuZCBp dCBtYXkgYmUgcmVtb3ZlZAotICovCi12b2lkIGVwODAyMTlfcG93ZXJfb2ZmKHZvaWQpCi17Ci0J LyoKLQkgKiBTZW5kIHRoZSBBZGRyZXNzIGJ5dGUgdy8gdGhlIHN0YXJ0IGNvbmRpdGlvbgotCSAq LwotCSpJT1AzWFhfSURCUjEgPSAweDYwOwotCSpJT1AzWFhfSUNSMSA9IDB4RTk7Ci0JbWRlbGF5 KDEpOwotCi0JLyoKLQkgKiBTZW5kIHRoZSBTVEFSVF9NU0cgYnl0ZSB3LyBubyBzdGFydCBvciBz dG9wIGNvbmRpdGlvbgotCSAqLwotCSpJT1AzWFhfSURCUjEgPSAweDBGOwotCSpJT1AzWFhfSUNS MSA9IDB4RTg7Ci0JbWRlbGF5KDEpOwotCi0JLyoKLQkgKiBTZW5kIHRoZSBTSFVURE9XTl9DT01Q TEVURSBNZXNzYWdlIElEIGJ5dGUgdy8gbm8gc3RhcnQgb3IKLQkgKiBzdG9wIGNvbmRpdGlvbgot CSAqLwotCSpJT1AzWFhfSURCUjEgPSAweDAzOwotCSpJT1AzWFhfSUNSMSA9IDB4RTg7Ci0JbWRl bGF5KDEpOwotCi0JLyoKLQkgKiBTZW5kIGFuIGlnbm9yZWQgYnl0ZSB3LyBzdG9wIGNvbmRpdGlv bgotCSAqLwotCSpJT1AzWFhfSURCUjEgPSAweDAwOwotCSpJT1AzWFhfSUNSMSA9IDB4RUE7Ci0K LQl3aGlsZSAoMSkKLQkJOwotfQotCi1zdGF0aWMgdm9pZCBfX2luaXQgaXEzMTI0NF9pbml0X21h Y2hpbmUodm9pZCkKLXsKLQlyZWdpc3Rlcl9pb3AzMnhfZ3BpbygpOwotCWdwaW9kX2FkZF9sb29r dXBfdGFibGUoJmlvcDN4eF9pMmMwX2dwaW9fbG9va3VwKTsKLQlncGlvZF9hZGRfbG9va3VwX3Rh YmxlKCZpb3AzeHhfaTJjMV9ncGlvX2xvb2t1cCk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVy KCZpb3AzeHhfaTJjMF9kZXZpY2UpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmaW9wM3h4 X2kyYzFfZGV2aWNlKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlxMzEyNDRfZmxhc2hf ZGV2aWNlKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlxMzEyNDRfc2VyaWFsX2Rldmlj ZSk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZpb3AzeHhfZG1hXzBfY2hhbm5lbCk7Ci0J cGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZpb3AzeHhfZG1hXzFfY2hhbm5lbCk7Ci0KLQlpZiAo aXNfZXA4MDIxOSgpKQotCQlwbV9wb3dlcl9vZmYgPSBlcDgwMjE5X3Bvd2VyX29mZjsKLQotCWlm ICghaXNfODAyMTkoKSkKLQkJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZpb3AzeHhfYWF1X2No YW5uZWwpOwotfQotCi1zdGF0aWMgaW50IF9faW5pdCBmb3JjZV9lcDgwMjE5X3NldHVwKGNoYXIg KnN0cikKLXsKLQlmb3JjZV9lcDgwMjE5ID0gMTsKLQlyZXR1cm4gMTsKLX0KLQotX19zZXR1cCgi Zm9yY2VfZXA4MDIxOSIsIGZvcmNlX2VwODAyMTlfc2V0dXApOwotCi1NQUNISU5FX1NUQVJUKElR MzEyNDQsICJJbnRlbCBJUTMxMjQ0IikKLQkvKiBNYWludGFpbmVyOiBJbnRlbCBDb3JwLiAqLwot CS5hdGFnX29mZnNldAk9IDB4MTAwLAotCS5tYXBfaW8JCT0gaXEzMTI0NF9tYXBfaW8sCi0JLmlu aXRfaXJxCT0gaW9wMzJ4X2luaXRfaXJxLAotCS5pbml0X3RpbWUJPSBpcTMxMjQ0X3RpbWVyX2lu aXQsCi0JLmluaXRfbWFjaGluZQk9IGlxMzEyNDRfaW5pdF9tYWNoaW5lLAotCS5yZXN0YXJ0CT0g aW9wM3h4X3Jlc3RhcnQsCi1NQUNISU5FX0VORAotCi0vKiBUaGVyZSBzaG91bGQgaGF2ZSBiZWVu IGFuIGVwODAyMTkgbWFjaGluZSBpZGVudGlmaWVyIGZyb20gdGhlIGJlZ2lubmluZy4KLSAqIEJv b3Qgcm9tcyBvbGRlciB0aGFuIE1hcmNoIDIwMDcgZG8gbm90IGtub3cgdGhlIGVwODAyMTkgbWFj aGluZSBpZC4gIFBhc3MKLSAqICJmb3JjZV9lcDgwMjE5IiBvbiB0aGUga2VybmVsIGNvbW1hbmQg bGluZSwgb3RoZXJ3aXNlIGlxMzEyNDQgb3BlcmF0aW9uCi0gKiB3aWxsIGJlIHNlbGVjdGVkLgot ICovCi1NQUNISU5FX1NUQVJUKEVQODAyMTksICJJbnRlbCBFUDgwMjE5IikKLQkvKiBNYWludGFp bmVyOiBJbnRlbCBDb3JwLiAqLwotCS5hdGFnX29mZnNldAk9IDB4MTAwLAotCS5ucl9pcnFzCT0g SU9QMzJYX05SX0lSUVMsCi0JLm1hcF9pbwkJPSBpcTMxMjQ0X21hcF9pbywKLQkuaW5pdF9pcnEJ PSBpb3AzMnhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IGlxMzEyNDRfdGltZXJfaW5pdCwKLQku aW5pdF9tYWNoaW5lCT0gaXEzMTI0NF9pbml0X21hY2hpbmUsCi0JLnJlc3RhcnQJPSBpb3AzeHhf cmVzdGFydCwKLU1BQ0hJTkVfRU5ECmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9p cTMxMjQ0LmggYi9hcmNoL2FybS9tYWNoLWlvcDMyeC9pcTMxMjQ0LmgKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGE3YWM2OTFlNDhkMy4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJt L21hY2gtaW9wMzJ4L2lxMzEyNDQuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCi0vKgotICogSW50ZWwgSVEzMTI0 NCBldmFsdWF0aW9uIGJvYXJkIHJlZ2lzdGVycwotICovCi0KLSNpZm5kZWYgX19JUTMxMjQ0X0gK LSNkZWZpbmUgX19JUTMxMjQ0X0gKLQotI2RlZmluZSBJUTMxMjQ0X1VBUlQJCTB4ZmU4MDAwMDAJ LyogVUFSVCAjMSAqLwotI2RlZmluZSBJUTMxMjQ0XzdTRUdfMQkJMHhmZTg0MDAwMAkvKiA3LVNl Z21lbnQgTVNCICovCi0jZGVmaW5lIElRMzEyNDRfN1NFR18wCQkweGZlODUwMDAwCS8qIDctU2Vn bWVudCBMU0IgKFdPKSAqLwotI2RlZmluZSBJUTMxMjQ0X1JPVEFSWV9TVwkweGZlOGQwMDAwCS8q IFJvdGFyeSBTd2l0Y2ggKi8KLSNkZWZpbmUgSVEzMTI0NF9CQVRUX1NUQVQJMHhmZThmMDAwMAkv KiBCYXR0ZXJ5IFN0YXR1cyAqLwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFj aC1pb3AzMngvaXE4MDMyMS5jIGIvYXJjaC9hcm0vbWFjaC1pb3AzMngvaXE4MDMyMS5jCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTc4MGM0NjYwY2IuLjAwMDAwMDAwMDAwMAotLS0g YS9hcmNoL2FybS9tYWNoLWlvcDMyeC9pcTgwMzIxLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIg KzAsMCBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLS8q Ci0gKiBhcmNoL2FybS9tYWNoLWlvcDMyeC9pcTgwMzIxLmMKLSAqCi0gKiBCb2FyZCBzdXBwb3J0 IGNvZGUgZm9yIHRoZSBJbnRlbCBJUTgwMzIxIHBsYXRmb3JtLgotICoKLSAqIEF1dGhvcjogUm9y eSBCb2x0IDxyb3J5Ym9sdEBwYWNiZWxsLm5ldD4KLSAqIENvcHlyaWdodCAoQykgMjAwMiBSb3J5 IEJvbHQKLSAqIENvcHlyaWdodCAoQykgMjAwNCBJbnRlbCBDb3JwLgotICovCi0KLSNpbmNsdWRl IDxsaW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4KLSNpbmNsdWRlIDxsaW51eC9zdHJpbmcu aD4KLSNpbmNsdWRlIDxsaW51eC9zZXJpYWxfY29yZS5oPgotI2luY2x1ZGUgPGxpbnV4L3Nlcmlh bF84MjUwLmg+Ci0jaW5jbHVkZSA8bGludXgvbXRkL3BoeXNtYXAuaD4KLSNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPGxp bnV4L2dwaW8vbWFjaGluZS5oPgotI2luY2x1ZGUgPGFzbS9pcnEuaD4KLSNpbmNsdWRlIDxhc20v bWFjaC9hcmNoLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvbWFwLmg+Ci0jaW5jbHVkZSA8YXNtL21h Y2gvcGNpLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvdGltZS5oPgotI2luY2x1ZGUgPGFzbS9tYWNo LXR5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL3BhZ2UuaD4KLQotI2luY2x1ZGUgImhhcmR3YXJlLmgi Ci0jaW5jbHVkZSAiaXJxcy5oIgotI2luY2x1ZGUgImdwaW8taW9wMzJ4LmgiCi0KLS8qCi0gKiBJ UTgwMzIxIHRpbWVyIHRpY2sgY29uZmlndXJhdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgX19pbml0 IGlxODAzMjFfdGltZXJfaW5pdCh2b2lkKQotewotCS8qIDMzLjMzMyBNSHogY3J5c3RhbC4gICov Ci0JaW9wX2luaXRfdGltZSgyMDAwMDAwMDApOwotfQotCi0KLS8qCi0gKiBJUTgwMzIxIEkvTy4K LSAqLwotc3RhdGljIHN0cnVjdCBtYXBfZGVzYyBpcTgwMzIxX2lvX2Rlc2NbXSBfX2luaXRkYXRh ID0gewotIAl7CS8qIG9uLWJvYXJkIGRldmljZXMgKi8KLQkJLnZpcnR1YWwJPSBJUTgwMzIxX1VB UlQsCi0JCS5wZm4JCT0gX19waHlzX3RvX3BmbihJUTgwMzIxX1VBUlQpLAotCQkubGVuZ3RoCQk9 IDB4MDAxMDAwMDAsCi0JCS50eXBlCQk9IE1UX0RFVklDRSwKLQl9LAotfTsKLQotdm9pZCBfX2lu aXQgaXE4MDMyMV9tYXBfaW8odm9pZCkKLXsKLQlpb3AzeHhfbWFwX2lvKCk7Ci0JaW90YWJsZV9p bml0KGlxODAzMjFfaW9fZGVzYywgQVJSQVlfU0laRShpcTgwMzIxX2lvX2Rlc2MpKTsKLX0KLQot Ci0vKgotICogSVE4MDMyMSBQQ0kuCi0gKi8KLXN0YXRpYyBpbnQgX19pbml0Ci1pcTgwMzIxX3Bj aV9tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4IHBpbikKLXsK LQlpbnQgaXJxOwotCi0JaWYgKChzbG90ID09IDIgfHwgc2xvdCA9PSA2KSAmJiBwaW4gPT0gMSkg ewotCQkvKiBQQ0ktWCBTbG90IElOVEEgKi8KLQkJaXJxID0gSVJRX0lPUDMyWF9YSU5UMjsKLQl9 IGVsc2UgaWYgKChzbG90ID09IDIgfHwgc2xvdCA9PSA2KSAmJiBwaW4gPT0gMikgewotCQkvKiBQ Q0ktWCBTbG90IElOVEEgKi8KLQkJaXJxID0gSVJRX0lPUDMyWF9YSU5UMzsKLQl9IGVsc2UgaWYg KChzbG90ID09IDIgfHwgc2xvdCA9PSA2KSAmJiBwaW4gPT0gMykgewotCQkvKiBQQ0ktWCBTbG90 IElOVEEgKi8KLQkJaXJxID0gSVJRX0lPUDMyWF9YSU5UMDsKLQl9IGVsc2UgaWYgKChzbG90ID09 IDIgfHwgc2xvdCA9PSA2KSAmJiBwaW4gPT0gNCkgewotCQkvKiBQQ0ktWCBTbG90IElOVEEgKi8K LQkJaXJxID0gSVJRX0lPUDMyWF9YSU5UMTsKLQl9IGVsc2UgaWYgKHNsb3QgPT0gNCB8fCBzbG90 ID09IDgpIHsKLQkJLyogR2lnLUUgKi8KLQkJaXJxID0gSVJRX0lPUDMyWF9YSU5UMDsKLQl9IGVs c2UgewotCQlwcmludGsoS0VSTl9FUlIgImlxODAzMjFfcGNpX21hcF9pcnEoKSBjYWxsZWQgZm9y IHVua25vd24gIgotCQkJImRldmljZSBQQ0k6JWQ6JWQ6JWRcbiIsIGRldi0+YnVzLT5udW1iZXIs Ci0JCQlQQ0lfU0xPVChkZXYtPmRldmZuKSwgUENJX0ZVTkMoZGV2LT5kZXZmbikpOwotCQlpcnEg PSAtMTsKLQl9Ci0KLQlyZXR1cm4gaXJxOwotfQotCi1zdGF0aWMgc3RydWN0IGh3X3BjaSBpcTgw MzIxX3BjaSBfX2luaXRkYXRhID0gewotCS5ucl9jb250cm9sbGVycyA9IDEsCi0JLm9wcwkJPSAm aW9wM3h4X29wcywKLQkuc2V0dXAJCT0gaW9wM3h4X3BjaV9zZXR1cCwKLQkucHJlaW5pdAk9IGlv cDN4eF9wY2lfcHJlaW5pdF9jb25kLAotCS5tYXBfaXJxCT0gaXE4MDMyMV9wY2lfbWFwX2lycSwK LX07Ci0KLXN0YXRpYyBpbnQgX19pbml0IGlxODAzMjFfcGNpX2luaXQodm9pZCkKLXsKLQlpZiAo KGlvcDN4eF9nZXRfaW5pdF9hdHUoKSA9PSBJT1AzWFhfSU5JVF9BVFVfRU5BQkxFKSAmJgotCQlt YWNoaW5lX2lzX2lxODAzMjEoKSkKLQkJcGNpX2NvbW1vbl9pbml0KCZpcTgwMzIxX3BjaSk7Ci0K LQlyZXR1cm4gMDsKLX0KLQotc3Vic3lzX2luaXRjYWxsKGlxODAzMjFfcGNpX2luaXQpOwotCi0K LS8qCi0gKiBJUTgwMzIxIG1hY2hpbmUgaW5pdGlhbGlzYXRpb24uCi0gKi8KLXN0YXRpYyBzdHJ1 Y3QgcGh5c21hcF9mbGFzaF9kYXRhIGlxODAzMjFfZmxhc2hfZGF0YSA9IHsKLQkud2lkdGgJCT0g MSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgaXE4MDMyMV9mbGFzaF9yZXNvdXJjZSA9 IHsKLQkuc3RhcnQJCT0gMHhmMDAwMDAwMCwKLQkuZW5kCQk9IDB4ZjA3ZmZmZmYsCi0JLmZsYWdz CQk9IElPUkVTT1VSQ0VfTUVNLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug aXE4MDMyMV9mbGFzaF9kZXZpY2UgPSB7Ci0JLm5hbWUJCT0gInBoeXNtYXAtZmxhc2giLAotCS5p ZAkJPSAwLAotCS5kZXYJCT0gewotCQkucGxhdGZvcm1fZGF0YQk9ICZpcTgwMzIxX2ZsYXNoX2Rh dGEsCi0JfSwKLQkubnVtX3Jlc291cmNlcwk9IDEsCi0JLnJlc291cmNlCT0gJmlxODAzMjFfZmxh c2hfcmVzb3VyY2UsCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRfc2VyaWFsODI1MF9wb3J0IGlx ODAzMjFfc2VyaWFsX3BvcnRbXSA9IHsKLQl7Ci0JCS5tYXBiYXNlCT0gSVE4MDMyMV9VQVJULAot CQkubWVtYmFzZQk9IChjaGFyICopSVE4MDMyMV9VQVJULAotCQkuaXJxCQk9IElSUV9JT1AzMlhf WElOVDEsCi0JCS5mbGFncwkJPSBVUEZfU0tJUF9URVNULAotCQkuaW90eXBlCQk9IFVQSU9fTUVN LAotCQkucmVnc2hpZnQJPSAwLAotCQkudWFydGNsawk9IDE4NDMyMDAsCi0JfSwKLQl7IH0sCi19 OwotCi1zdGF0aWMgc3RydWN0IHJlc291cmNlIGlxODAzMjFfdWFydF9yZXNvdXJjZSA9IHsKLQku c3RhcnQJCT0gSVE4MDMyMV9VQVJULAotCS5lbmQJCT0gSVE4MDMyMV9VQVJUICsgNywKLQkuZmxh Z3MJCT0gSU9SRVNPVVJDRV9NRU0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSBpcTgwMzIxX3NlcmlhbF9kZXZpY2UgPSB7Ci0JLm5hbWUJCT0gInNlcmlhbDgyNTAiLAotCS5p ZAkJPSBQTEFUODI1MF9ERVZfUExBVEZPUk0sCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRh CQk9IGlxODAzMjFfc2VyaWFsX3BvcnQsCi0JfSwKLQkubnVtX3Jlc291cmNlcwk9IDEsCi0JLnJl c291cmNlCT0gJmlxODAzMjFfdWFydF9yZXNvdXJjZSwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5p dCBpcTgwMzIxX2luaXRfbWFjaGluZSh2b2lkKQotewotCXJlZ2lzdGVyX2lvcDMyeF9ncGlvKCk7 Ci0JZ3Bpb2RfYWRkX2xvb2t1cF90YWJsZSgmaW9wM3h4X2kyYzBfZ3Bpb19sb29rdXApOwotCWdw aW9kX2FkZF9sb29rdXBfdGFibGUoJmlvcDN4eF9pMmMxX2dwaW9fbG9va3VwKTsKLQlwbGF0Zm9y bV9kZXZpY2VfcmVnaXN0ZXIoJmlvcDN4eF9pMmMwX2RldmljZSk7Ci0JcGxhdGZvcm1fZGV2aWNl X3JlZ2lzdGVyKCZpb3AzeHhfaTJjMV9kZXZpY2UpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rl cigmaXE4MDMyMV9mbGFzaF9kZXZpY2UpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmaXE4 MDMyMV9zZXJpYWxfZGV2aWNlKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlvcDN4eF9k bWFfMF9jaGFubmVsKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlvcDN4eF9kbWFfMV9j aGFubmVsKTsKLQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJmlvcDN4eF9hYXVfY2hhbm5lbCk7 Ci19Ci0KLU1BQ0hJTkVfU1RBUlQoSVE4MDMyMSwgIkludGVsIElRODAzMjEiKQotCS8qIE1haW50 YWluZXI6IEludGVsIENvcnAuICovCi0JLmF0YWdfb2Zmc2V0CT0gMHgxMDAsCi0JLm5yX2lycXMJ PSBJT1AzMlhfTlJfSVJRUywKLQkubWFwX2lvCQk9IGlxODAzMjFfbWFwX2lvLAotCS5pbml0X2ly cQk9IGlvcDMyeF9pbml0X2lycSwKLQkuaW5pdF90aW1lCT0gaXE4MDMyMV90aW1lcl9pbml0LAot CS5pbml0X21hY2hpbmUJPSBpcTgwMzIxX2luaXRfbWFjaGluZSwKLQkucmVzdGFydAk9IGlvcDN4 eF9yZXN0YXJ0LAotTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4 L2lxODAzMjEuaCBiL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2lxODAzMjEuaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggM2E1ZDEwNjI2ZWE2Li4wMDAwMDAwMDAwMDAKLS0tIGEvYXJjaC9h cm0vbWFjaC1pb3AzMngvaXE4MDMyMS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAot LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLS8qCi0gKiBJbnRlbCBJUTgw MzIxIGV2YWx1YXRpb24gYm9hcmQgcmVnaXN0ZXJzCi0gKi8KLQotI2lmbmRlZiBfX0lRODAzMjFf SAotI2RlZmluZSBfX0lRODAzMjFfSAotCi0jZGVmaW5lIElRODAzMjFfVUFSVAkJMHhmZTgwMDAw MAkvKiBVQVJUICMxICovCi0jZGVmaW5lIElRODAzMjFfN1NFR18xCQkweGZlODQwMDAwCS8qIDct U2VnbWVudCBNU0IgKi8KLSNkZWZpbmUgSVE4MDMyMV83U0VHXzAJCTB4ZmU4NTAwMDAJLyogNy1T ZWdtZW50IExTQiAoV08pICovCi0jZGVmaW5lIElRODAzMjFfUk9UQVJZX1NXCTB4ZmU4ZDAwMDAJ LyogUm90YXJ5IFN3aXRjaCAqLwotI2RlZmluZSBJUTgwMzIxX0JBVFRfU1RBVAkweGZlOGYwMDAw CS8qIEJhdHRlcnkgU3RhdHVzICovCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9t YWNoLWlvcDMyeC9pcnEuYyBiL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2lycS5jCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA2ZGNhN2U5N2Q4MWYuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNo L2FybS9tYWNoLWlvcDMyeC9pcnEuYworKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKLS8qCi0gKiBhcmNoL2FybS9t YWNoLWlvcDMyeC9pcnEuYwotICoKLSAqIEdlbmVyaWMgSU9QMzJYIElSUSBoYW5kbGluZyBmdW5j dGlvbmFsaXR5Ci0gKgotICogQXV0aG9yOiBSb3J5IEJvbHQgPHJvcnlib2x0QHBhY2JlbGwubmV0 PgotICogQ29weXJpZ2h0IChDKSAyMDAyIFJvcnkgQm9sdAotICovCi0KLSNpbmNsdWRlIDxsaW51 eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Ci0jaW5jbHVkZSA8bGludXgv bGlzdC5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL2lycS5oPgotI2luY2x1ZGUgPGFzbS9pcnEuaD4K LSNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgotCi0jaW5jbHVkZSAiaGFyZHdhcmUuaCIKLQot c3RhdGljIHUzMiBpb3AzMnhfbWFzazsKLQotc3RhdGljIHZvaWQgaW50Y3RsX3dyaXRlKHUzMiB2 YWwpCi17Ci0JYXNtIHZvbGF0aWxlKCJtY3IgcDYsIDAsICUwLCBjMCwgYzAsIDAiIDogOiAiciIg KHZhbCkpOwotfQotCi1zdGF0aWMgdm9pZCBpbnRzdHJfd3JpdGUodTMyIHZhbCkKLXsKLQlhc20g dm9sYXRpbGUoIm1jciBwNiwgMCwgJTAsIGM0LCBjMCwgMCIgOiA6ICJyIiAodmFsKSk7Ci19Ci0K LXN0YXRpYyB1MzIgaWludHNyY19yZWFkKHZvaWQpCi17Ci0JaW50IGlycTsKLQotCWFzbSB2b2xh dGlsZSgibXJjIHA2LCAwLCAlMCwgYzgsIGMwLCAwIiA6ICI9ciIgKGlycSkpOwotCi0JcmV0dXJu IGlycTsKLX0KLQotc3RhdGljIHZvaWQKLWlvcDMyeF9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEg KmQpCi17Ci0JaW9wMzJ4X21hc2sgJj0gfigxIDw8IChkLT5pcnEgLSAxKSk7Ci0JaW50Y3RsX3dy aXRlKGlvcDMyeF9tYXNrKTsKLX0KLQotc3RhdGljIHZvaWQKLWlvcDMyeF9pcnFfdW5tYXNrKHN0 cnVjdCBpcnFfZGF0YSAqZCkKLXsKLQlpb3AzMnhfbWFzayB8PSAxIDw8IChkLT5pcnEgLSAxKTsK LQlpbnRjdGxfd3JpdGUoaW9wMzJ4X21hc2spOwotfQotCi1zdHJ1Y3QgaXJxX2NoaXAgZXh0X2No aXAgPSB7Ci0JLm5hbWUJCT0gIklPUDMyeCIsCi0JLmlycV9hY2sJPSBpb3AzMnhfaXJxX21hc2ss Ci0JLmlycV9tYXNrCT0gaW9wMzJ4X2lycV9tYXNrLAotCS5pcnFfdW5tYXNrCT0gaW9wMzJ4X2ly cV91bm1hc2ssCi19OwotCi1zdGF0aWMgdm9pZCBpb3BfaGFuZGxlX2lycShzdHJ1Y3QgcHRfcmVn cyAqcmVncykKLXsKLQl1MzIgbWFzazsKLQotCWlvcF9lbmFibGVfY3A2KCk7Ci0KLQlkbyB7Ci0J CW1hc2sgPSBpaW50c3JjX3JlYWQoKTsKLQkJaWYgKG1hc2spCi0JCQlnZW5lcmljX2hhbmRsZV9p cnEoZmxzKG1hc2spKTsKLQl9IHdoaWxlIChtYXNrKTsKLX0KLQotdm9pZCBfX2luaXQgaW9wMzJ4 X2luaXRfaXJxKHZvaWQpCi17Ci0JaW50IGk7Ci0KLQlpb3BfaW5pdF9jcDZfaGFuZGxlcigpOwot CXNldF9oYW5kbGVfaXJxKGlvcF9oYW5kbGVfaXJxKTsKLQotCWludGN0bF93cml0ZSgwKTsKLQlp bnRzdHJfd3JpdGUoMCk7Ci0JaWYgKG1hY2hpbmVfaXNfZ2xhbnRhbmsoKSB8fAotCSAgICBtYWNo aW5lX2lzX2lxODAzMjEoKSB8fAotCSAgICBtYWNoaW5lX2lzX2lxMzEyNDQoKSB8fAotCSAgICBt YWNoaW5lX2lzX24yMTAwKCkgfHwKLQkgICAgbWFjaGluZV9pc19lbTcyMTAoKSkKLQkJKklPUDNY WF9QQ0lJUlNSID0gMHgwZjsKLQotCWZvciAoaSA9IDE7IGkgPCBOUl9JUlFTOyBpKyspIHsKLQkJ aXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyKGksICZleHRfY2hpcCwgaGFuZGxlX2xldmVsX2lycSk7 Ci0JCWlycV9jbGVhcl9zdGF0dXNfZmxhZ3MoaSwgSVJRX05PUkVRVUVTVCB8IElSUV9OT1BST0JF KTsKLQl9Ci19CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9pcnFzLmggYi9hcmNo L2FybS9tYWNoLWlvcDMyeC9pcnFzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5 ZmM4OGUwOTE4OS4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtaW9wMzJ4L2lycXMu aAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9ubHkgKi8KLS8qCi0gKiBBdXRob3I6CVJvcnkgQm9sdCA8cm9yeWJvbHRA cGFjYmVsbC5uZXQ+Ci0gKiBDb3B5cmlnaHQ6CShDKSAyMDAyIFJvcnkgQm9sdAotICovCi0KLSNp Zm5kZWYgX19JT1AzMlhfSVJRU19ICi0jZGVmaW5lIF9fSU9QMzJYX0lSUVNfSAotCi0vKiBJbnRl cnJ1cHRzIGluIExpbnV4IHN0YXJ0IGF0IDEsIGhhcmR3YXJlIHN0YXJ0cyBhdCAwICovCi0KLSNk ZWZpbmUgSU9QX0lSUSh4KSAoKHgpICsgMSkKLQotLyoKLSAqIElPUDgwMzIxIGNoaXBzZXQgaW50 ZXJydXB0cwotICovCi0jZGVmaW5lIElSUV9JT1AzMlhfRE1BMF9FT1QJSU9QX0lSUSgwKQotI2Rl ZmluZSBJUlFfSU9QMzJYX0RNQTBfRU9DCUlPUF9JUlEoMSkKLSNkZWZpbmUgSVJRX0lPUDMyWF9E TUExX0VPVAlJT1BfSVJRKDIpCi0jZGVmaW5lIElSUV9JT1AzMlhfRE1BMV9FT0MJSU9QX0lSUSgz KQotI2RlZmluZSBJUlFfSU9QMzJYX0FBX0VPVAlJT1BfSVJRKDYpCi0jZGVmaW5lIElSUV9JT1Az MlhfQUFfRU9DCUlPUF9JUlEoNykKLSNkZWZpbmUgSVJRX0lPUDMyWF9DT1JFX1BNT04JSU9QX0lS USg4KQotI2RlZmluZSBJUlFfSU9QMzJYX1RJTUVSMAlJT1BfSVJRKDkpCi0jZGVmaW5lIElSUV9J T1AzMlhfVElNRVIxCUlPUF9JUlEoMTApCi0jZGVmaW5lIElSUV9JT1AzMlhfSTJDXzAJSU9QX0lS USgxMSkKLSNkZWZpbmUgSVJRX0lPUDMyWF9JMkNfMQlJT1BfSVJRKDEyKQotI2RlZmluZSBJUlFf SU9QMzJYX01FU1NBR0lORwlJT1BfSVJRKDEzKQotI2RlZmluZSBJUlFfSU9QMzJYX0FUVV9CSVNU CUlPUF9JUlEoMTQpCi0jZGVmaW5lIElSUV9JT1AzMlhfUEVSRk1PTglJT1BfSVJRKDE1KQotI2Rl ZmluZSBJUlFfSU9QMzJYX0NPUkVfUE1VCUlPUF9JUlEoMTYpCi0jZGVmaW5lIElSUV9JT1AzMlhf QklVX0VSUglJT1BfSVJRKDE3KQotI2RlZmluZSBJUlFfSU9QMzJYX0FUVV9FUlIJSU9QX0lSUSgx OCkKLSNkZWZpbmUgSVJRX0lPUDMyWF9NQ1VfRVJSCUlPUF9JUlEoMTkpCi0jZGVmaW5lIElSUV9J T1AzMlhfRE1BMF9FUlIJSU9QX0lSUSgyMCkKLSNkZWZpbmUgSVJRX0lPUDMyWF9ETUExX0VSUglJ T1BfSVJRKDIxKQotI2RlZmluZSBJUlFfSU9QMzJYX0FBX0VSUglJT1BfSVJRKDIzKQotI2RlZmlu ZSBJUlFfSU9QMzJYX01TR19FUlIJSU9QX0lSUSgyNCkKLSNkZWZpbmUgSVJRX0lPUDMyWF9TU1AJ CUlPUF9JUlEoMjUpCi0jZGVmaW5lIElSUV9JT1AzMlhfWElOVDAJSU9QX0lSUSgyNykKLSNkZWZp bmUgSVJRX0lPUDMyWF9YSU5UMQlJT1BfSVJRKDI4KQotI2RlZmluZSBJUlFfSU9QMzJYX1hJTlQy CUlPUF9JUlEoMjkpCi0jZGVmaW5lIElSUV9JT1AzMlhfWElOVDMJSU9QX0lSUSgzMCkKLSNkZWZp bmUgSVJRX0lPUDMyWF9IUEkJCUlPUF9JUlEoMzEpCi0KLSNkZWZpbmUgSU9QMzJYX05SX0lSUVMJ CShJUlFfSU9QMzJYX0hQSSArIDEpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFj aC1pb3AzMngvbjIxMDAuYyBiL2FyY2gvYXJtL21hY2gtaW9wMzJ4L24yMTAwLmMKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMWUyZTExYmYzNS4uMDAwMDAwMDAwMDAwCi0tLSBhL2Fy Y2gvYXJtL21hY2gtaW9wMzJ4L24yMTAwLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAsMCBA QAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLS8qCi0gKiBh cmNoL2FybS9tYWNoLWlvcDMyeC9uMjEwMC5jCi0gKgotICogQm9hcmQgc3VwcG9ydCBjb2RlIGZv ciB0aGUgVGhlY3VzIE4yMTAwIHBsYXRmb3JtLgotICoKLSAqIEF1dGhvcjogUm9yeSBCb2x0IDxy b3J5Ym9sdEBwYWNiZWxsLm5ldD4KLSAqIENvcHlyaWdodCAoQykgMjAwMiBSb3J5IEJvbHQKLSAq IENvcHlyaWdodCAyMDAzIChjKSBNb250YVZpc3RhLCBTb2Z0d2FyZSwgSW5jLgotICogQ29weXJp Z2h0IChDKSAyMDA0IEludGVsIENvcnAuCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0j aW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGxpbnV4L2Y3NTM3NXMuaD4KLSNpbmNs dWRlIDxsaW51eC9sZWRzLXBjYTk1MzIuaD4KLSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotI2luY2x1ZGUg PGxpbnV4L3BtLmg+Ci0jaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Ci0jaW5jbHVkZSA8bGludXgv c2VyaWFsX2NvcmUuaD4KLSNpbmNsdWRlIDxsaW51eC9zZXJpYWxfODI1MC5oPgotI2luY2x1ZGUg PGxpbnV4L210ZC9waHlzbWFwLmg+Ci0jaW5jbHVkZSA8bGludXgvaTJjLmg+Ci0jaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvcmVib290Lmg+Ci0jaW5j bHVkZSA8bGludXgvaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Ci0jaW5jbHVkZSA8bGlu dXgvZ3Bpby9tYWNoaW5lLmg+Ci0jaW5jbHVkZSA8YXNtL2lycS5oPgotI2luY2x1ZGUgPGFzbS9t YWNoL2FyY2guaD4KLSNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KLSNpbmNsdWRlIDxhc20vbWFj aC9wY2kuaD4KLSNpbmNsdWRlIDxhc20vbWFjaC90aW1lLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gt dHlwZXMuaD4KLSNpbmNsdWRlIDxhc20vcGFnZS5oPgotCi0jaW5jbHVkZSAiaGFyZHdhcmUuaCIK LSNpbmNsdWRlICJpcnFzLmgiCi0jaW5jbHVkZSAiZ3Bpby1pb3AzMnguaCIKLQotLyoKLSAqIE4y MTAwIHRpbWVyIHRpY2sgY29uZmlndXJhdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgX19pbml0IG4y MTAwX3RpbWVyX2luaXQodm9pZCkKLXsKLQkvKiAzMy4wMDAgTUh6IGNyeXN0YWwuICAqLwotCWlv cF9pbml0X3RpbWUoMTk4MDAwMDAwKTsKLX0KLQotCi0vKgotICogTjIxMDAgSS9PLgotICovCi1z dGF0aWMgc3RydWN0IG1hcF9kZXNjIG4yMTAwX2lvX2Rlc2NbXSBfX2luaXRkYXRhID0gewotCXsJ Lyogb24tYm9hcmQgZGV2aWNlcyAqLwotCQkudmlydHVhbAk9IE4yMTAwX1VBUlQsCi0JCS5wZm4J CT0gX19waHlzX3RvX3BmbihOMjEwMF9VQVJUKSwKLQkJLmxlbmd0aAkJPSAweDAwMTAwMDAwLAot CQkudHlwZQkJPSBNVF9ERVZJQ0UKLQl9LAotfTsKLQotdm9pZCBfX2luaXQgbjIxMDBfbWFwX2lv KHZvaWQpCi17Ci0JaW9wM3h4X21hcF9pbygpOwotCWlvdGFibGVfaW5pdChuMjEwMF9pb19kZXNj LCBBUlJBWV9TSVpFKG4yMTAwX2lvX2Rlc2MpKTsKLX0KLQotCi0vKgotICogTjIxMDAgUENJLgot ICovCi1zdGF0aWMgaW50IG4yMTAwX3BjaV9tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpk ZXYsIHU4IHNsb3QsIHU4IHBpbikKLXsKLQlpbnQgaXJxOwotCi0JaWYgKFBDSV9TTE9UKGRldi0+ ZGV2Zm4pID09IDEpIHsKLQkJLyogUlRMODExMFNCICMxICovCi0JCWlycSA9IElSUV9JT1AzMlhf WElOVDA7Ci0JfSBlbHNlIGlmIChQQ0lfU0xPVChkZXYtPmRldmZuKSA9PSAyKSB7Ci0JCS8qIFJU TDgxMTBTQiAjMiAqLwotCQlpcnEgPSBJUlFfSU9QMzJYX1hJTlQzOwotCX0gZWxzZSBpZiAoUENJ X1NMT1QoZGV2LT5kZXZmbikgPT0gMykgewotCQkvKiBTaWwzNTEyICovCi0JCWlycSA9IElSUV9J T1AzMlhfWElOVDI7Ci0JfSBlbHNlIGlmIChQQ0lfU0xPVChkZXYtPmRldmZuKSA9PSA0ICYmIHBp biA9PSAxKSB7Ci0JCS8qIFZUNjIxMiBJTlRBICovCi0JCWlycSA9IElSUV9JT1AzMlhfWElOVDE7 Ci0JfSBlbHNlIGlmIChQQ0lfU0xPVChkZXYtPmRldmZuKSA9PSA0ICYmIHBpbiA9PSAyKSB7Ci0J CS8qIFZUNjIxMiBJTlRCICovCi0JCWlycSA9IElSUV9JT1AzMlhfWElOVDA7Ci0JfSBlbHNlIGlm IChQQ0lfU0xPVChkZXYtPmRldmZuKSA9PSA0ICYmIHBpbiA9PSAzKSB7Ci0JCS8qIFZUNjIxMiBJ TlRDICovCi0JCWlycSA9IElSUV9JT1AzMlhfWElOVDI7Ci0JfSBlbHNlIGlmIChQQ0lfU0xPVChk ZXYtPmRldmZuKSA9PSA1KSB7Ci0JCS8qIE1pbmktUENJIHNsb3QgKi8KLQkJaXJxID0gSVJRX0lP UDMyWF9YSU5UMzsKLQl9IGVsc2UgewotCQlwcmludGsoS0VSTl9FUlIgIm4yMTAwX3BjaV9tYXBf aXJxKCkgY2FsbGVkIGZvciB1bmtub3duICIKLQkJCSJkZXZpY2UgUENJOiVkOiVkOiVkXG4iLCBk ZXYtPmJ1cy0+bnVtYmVyLAotCQkJUENJX1NMT1QoZGV2LT5kZXZmbiksIFBDSV9GVU5DKGRldi0+ ZGV2Zm4pKTsKLQkJaXJxID0gLTE7Ci0JfQotCi0JcmV0dXJuIGlycTsKLX0KLQotc3RhdGljIHN0 cnVjdCBod19wY2kgbjIxMDBfcGNpIF9faW5pdGRhdGEgPSB7Ci0JLm5yX2NvbnRyb2xsZXJzID0g MSwKLQkub3BzCQk9ICZpb3AzeHhfb3BzLAotCS5zZXR1cAkJPSBpb3AzeHhfcGNpX3NldHVwLAot CS5wcmVpbml0CT0gaW9wM3h4X3BjaV9wcmVpbml0LAotCS5tYXBfaXJxCT0gbjIxMDBfcGNpX21h cF9pcnEsCi19OwotCi0vKgotICogQm90aCByODE2OSBjaGlwcyBvbiB0aGUgbjIxMDAgZXhoaWJp dCBQQ0kgcGFyaXR5IHByb2JsZW1zLiAgVHVybgotICogb2ZmIHBhcml0eSByZXBvcnRpbmcgZm9y IGJvdGggcG9ydHMgc28gd2UgZG9uJ3QgZ2V0IGVycm9yIGludGVycnVwdHMKLSAqIGZvciB0aGVt LgotICovCi1zdGF0aWMgdm9pZCBuMjEwMF9maXh1cF9yODE2OShzdHJ1Y3QgcGNpX2RldiAqZGV2 KQotewotCWlmIChkZXYtPmJ1cy0+bnVtYmVyID09IDAgJiYKLQkgICAgKGRldi0+ZGV2Zm4gPT0g UENJX0RFVkZOKDEsIDApIHx8Ci0JICAgICBkZXYtPmRldmZuID09IFBDSV9ERVZGTigyLCAwKSkp Ci0JCXBjaV9kaXNhYmxlX3Bhcml0eShkZXYpOwotfQotREVDTEFSRV9QQ0lfRklYVVBfRklOQUwo UENJX1ZFTkRPUl9JRF9SRUFMVEVLLCBQQ0lfQU5ZX0lELCBuMjEwMF9maXh1cF9yODE2OSk7Ci0K LXN0YXRpYyBpbnQgX19pbml0IG4yMTAwX3BjaV9pbml0KHZvaWQpCi17Ci0JaWYgKG1hY2hpbmVf aXNfbjIxMDAoKSkKLQkJcGNpX2NvbW1vbl9pbml0KCZuMjEwMF9wY2kpOwotCi0JcmV0dXJuIDA7 Ci19Ci0KLXN1YnN5c19pbml0Y2FsbChuMjEwMF9wY2lfaW5pdCk7Ci0KLQotLyoKLSAqIE4yMTAw IG1hY2hpbmUgaW5pdGlhbGlzYXRpb24uCi0gKi8KLXN0YXRpYyBzdHJ1Y3QgcGh5c21hcF9mbGFz aF9kYXRhIG4yMTAwX2ZsYXNoX2RhdGEgPSB7Ci0JLndpZHRoCQk9IDIsCi19OwotCi1zdGF0aWMg c3RydWN0IHJlc291cmNlIG4yMTAwX2ZsYXNoX3Jlc291cmNlID0gewotCS5zdGFydAkJPSAweGYw MDAwMDAwLAotCS5lbmQJCT0gMHhmMGZmZmZmZiwKLQkuZmxhZ3MJCT0gSU9SRVNPVVJDRV9NRU0s Ci19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBuMjEwMF9mbGFzaF9kZXZpY2Ug PSB7Ci0JLm5hbWUJCT0gInBoeXNtYXAtZmxhc2giLAotCS5pZAkJPSAwLAotCS5kZXYJCT0gewot CQkucGxhdGZvcm1fZGF0YQk9ICZuMjEwMF9mbGFzaF9kYXRhLAotCX0sCi0JLm51bV9yZXNvdXJj ZXMJPSAxLAotCS5yZXNvdXJjZQk9ICZuMjEwMF9mbGFzaF9yZXNvdXJjZSwKLX07Ci0KLQotc3Rh dGljIHN0cnVjdCBwbGF0X3NlcmlhbDgyNTBfcG9ydCBuMjEwMF9zZXJpYWxfcG9ydFtdID0gewot CXsKLQkJLm1hcGJhc2UJPSBOMjEwMF9VQVJULAotCQkubWVtYmFzZQk9IChjaGFyICopTjIxMDBf VUFSVCwKLQkJLmlycQkJPSAwLAotCQkuZmxhZ3MJCT0gVVBGX1NLSVBfVEVTVCB8IFVQRl9BVVRP X0lSUSB8IFVQRl9TSEFSRV9JUlEsCi0JCS5pb3R5cGUJCT0gVVBJT19NRU0sCi0JCS5yZWdzaGlm dAk9IDAsCi0JCS51YXJ0Y2xrCT0gMTg0MzIwMCwKLQl9LAotCXsgfSwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgcmVzb3VyY2UgbjIxMDBfdWFydF9yZXNvdXJjZSA9IHsKLQkuc3RhcnQJCT0gTjIxMDBf VUFSVCwKLQkuZW5kCQk9IE4yMTAwX1VBUlQgKyA3LAotCS5mbGFncwkJPSBJT1JFU09VUkNFX01F TSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG4yMTAwX3NlcmlhbF9kZXZp Y2UgPSB7Ci0JLm5hbWUJCT0gInNlcmlhbDgyNTAiLAotCS5pZAkJPSBQTEFUODI1MF9ERVZfUExB VEZPUk0sCi0JLmRldgkJPSB7Ci0JCS5wbGF0Zm9ybV9kYXRhCQk9IG4yMTAwX3NlcmlhbF9wb3J0 LAotCX0sCi0JLm51bV9yZXNvdXJjZXMJPSAxLAotCS5yZXNvdXJjZQk9ICZuMjEwMF91YXJ0X3Jl c291cmNlLAotfTsKLQotc3RhdGljIHN0cnVjdCBmNzUzNzVzX3BsYXRmb3JtX2RhdGEgbjIxMDBf Zjc1Mzc1cyA9IHsKLQkucHdtCQk9IHsgMjU1LCAyNTUgfSwKLQkucHdtX2VuYWJsZSA9IHsgMCwg MCB9LAotfTsKLQotc3RhdGljIHN0cnVjdCBwY2E5NTMyX3BsYXRmb3JtX2RhdGEgbjIxMDBfbGVk cyA9IHsKLQkubGVkcyA9IHsKLQl7CS5uYW1lID0gIm4yMTAwOnJlZDpzYXRhZmFpbDAiLAotCQku c3RhdGUgPSBQQ0E5NTMyX09GRiwKLQkJLnR5cGUgPSBQQ0E5NTMyX1RZUEVfTEVELAotCX0sCi0J ewkubmFtZSA9ICJuMjEwMDpyZWQ6c2F0YWZhaWwxIiwKLQkJLnN0YXRlID0gUENBOTUzMl9PRkYs Ci0JCS50eXBlID0gUENBOTUzMl9UWVBFX0xFRCwKLQl9LAotCXsJLm5hbWUgPSAibjIxMDA6Ymx1 ZTp1c2IiLAotCQkuc3RhdGUgPSBQQ0E5NTMyX09GRiwKLQkJLnR5cGUgPSBQQ0E5NTMyX1RZUEVf TEVELAotCX0sCi0JeyAJLnR5cGUgPSBQQ0E5NTMyX1RZUEVfTk9ORSB9LAotCi0JeyAJLnR5cGUg PSBQQ0E5NTMyX1RZUEVfTk9ORSB9LAotCXsgCS50eXBlID0gUENBOTUzMl9UWVBFX05PTkUgfSwK LQl7IAkudHlwZSA9IFBDQTk1MzJfVFlQRV9OT05FIH0sCi0JewkubmFtZSA9ICJuMjEwMDpyZWQ6 dXNiIiwKLQkJLnN0YXRlID0gUENBOTUzMl9PRkYsCi0JCS50eXBlID0gUENBOTUzMl9UWVBFX0xF RCwKLQl9LAotCi0JewkudHlwZSA9IFBDQTk1MzJfVFlQRV9OT05FIH0sIC8qIHBvd2VyIE9GRiBn cGlvICovCi0JewkudHlwZSA9IFBDQTk1MzJfVFlQRV9OT05FIH0sIC8qIHJlc2V0IGdwaW8gKi8K LQl7CS50eXBlID0gUENBOTUzMl9UWVBFX05PTkUgfSwKLQl7CS50eXBlID0gUENBOTUzMl9UWVBF X05PTkUgfSwKLQotCXsJLnR5cGUgPSBQQ0E5NTMyX1RZUEVfTk9ORSB9LAotCXsJLm5hbWUgPSAi bjIxMDA6b3JhbmdlOnN5c3RlbSIsCi0JCS5zdGF0ZSA9IFBDQTk1MzJfT0ZGLAotCQkudHlwZSA9 IFBDQTk1MzJfVFlQRV9MRUQsCi0JfSwKLQl7CS5uYW1lID0gIm4yMTAwOnJlZDpzeXN0ZW0iLAot CQkuc3RhdGUgPSBQQ0E5NTMyX09GRiwKLQkJLnR5cGUgPSBQQ0E5NTMyX1RZUEVfTEVELAotCX0s Ci0JewkubmFtZSA9ICJOMjEwMCBiZWVwZXIiICAsCi0JCS5zdGF0ZSA9ICBQQ0E5NTMyX09GRiwK LQkJLnR5cGUgPSBQQ0E5NTMyX1RZUEVfTjIxMDBfQkVFUCwKLQl9LAotCX0sCi0JLnBzYyA9IHsg MCwgMCB9LAotCS5wd20gPSB7IDAsIDAgfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJk X2luZm8gX19pbml0ZGF0YSBuMjEwMF9pMmNfZGV2aWNlc1tdID0gewotCXsKLQkJSTJDX0JPQVJE X0lORk8oInJzNWMzNzJiIiwgMHgzMiksCi0JfSwKLQl7Ci0JCUkyQ19CT0FSRF9JTkZPKCJmNzUz NzUiLCAweDJlKSwKLQkJLnBsYXRmb3JtX2RhdGEgPSAmbjIxMDBfZjc1Mzc1cywKLQl9LAotCXsK LQkJSTJDX0JPQVJEX0lORk8oInBjYTk1MzIiLCAweDYwKSwKLQkJLnBsYXRmb3JtX2RhdGEgPSAm bjIxMDBfbGVkcywKLQl9LAotfTsKLQotLyoKLSAqIFB1bGwgUENBOTUzMiBHUElPICM4IGxvdyB0 byBwb3dlciBvZmYgdGhlIG1hY2hpbmUuCi0gKi8KLXN0YXRpYyB2b2lkIG4yMTAwX3Bvd2VyX29m Zih2b2lkKQotewotCWxvY2FsX2lycV9kaXNhYmxlKCk7Ci0KLQkvKiBTdGFydCBjb25kaXRpb24s IEkyQyBhZGRyZXNzIG9mIFBDQTk1MzIsIHdyaXRlIHRyYW5zYWN0aW9uLiAgKi8KLQkqSU9QM1hY X0lEQlIwID0gMHhjMDsKLQkqSU9QM1hYX0lDUjAgPSAweGU5OwotCW1kZWxheSgxKTsKLQotCS8q IFdyaXRlIGFkZHJlc3MgMHgwOC4gICovCi0JKklPUDNYWF9JREJSMCA9IDB4MDg7Ci0JKklPUDNY WF9JQ1IwID0gMHhlODsKLQltZGVsYXkoMSk7Ci0KLQkvKiBXcml0ZSBkYXRhIDB4MDEsIHN0b3Ag Y29uZGl0aW9uLiAgKi8KLQkqSU9QM1hYX0lEQlIwID0gMHgwMTsKLQkqSU9QM1hYX0lDUjAgPSAw eGVhOwotCi0Jd2hpbGUgKDEpCi0JCTsKLX0KLQotc3RhdGljIHZvaWQgbjIxMDBfcmVzdGFydChl bnVtIHJlYm9vdF9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmNtZCkKLXsKLQlpbnQgcmV0OwotCi0J cmV0ID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KE4yMTAwX0hBUkRXQVJFX1JFU0VULCAwKTsKLQlp ZiAocmV0KSB7Ci0JCXByX2NyaXQoImNvdWxkIG5vdCBkcml2ZSByZXNldCBHUElPIGxvd1xuIik7 Ci0JCXJldHVybjsKLQl9Ci0JLyogV2FpdCBmb3IgcmVzZXQgdG8gaGFwcGVuICovCi0Jd2hpbGUg KDEpCi0JCTsKLX0KLQotCi1zdGF0aWMgc3RydWN0IHRpbWVyX2xpc3QgcG93ZXJfYnV0dG9uX3Bv bGxfdGltZXI7Ci0KLXN0YXRpYyB2b2lkIHBvd2VyX2J1dHRvbl9wb2xsKHN0cnVjdCB0aW1lcl9s aXN0ICp1bnVzZWQpCi17Ci0JaWYgKGdwaW9fZ2V0X3ZhbHVlKE4yMTAwX1BPV0VSX0JVVFRPTikg PT0gMCkgewotCQljdHJsX2FsdF9kZWwoKTsKLQkJcmV0dXJuOwotCX0KLQotCXBvd2VyX2J1dHRv bl9wb2xsX3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgKEhaIC8gMTApOwotCWFkZF90aW1lcigm cG93ZXJfYnV0dG9uX3BvbGxfdGltZXIpOwotfQotCi1zdGF0aWMgaW50IF9faW5pdCBuMjEwMF9y ZXF1ZXN0X2dwaW9zKHZvaWQpCi17Ci0JaW50IHJldDsKLQotCWlmICghbWFjaGluZV9pc19uMjEw MCgpKQotCQlyZXR1cm4gMDsKLQotCXJldCA9IGdwaW9fcmVxdWVzdChOMjEwMF9IQVJEV0FSRV9S RVNFVCwgInJlc2V0Iik7Ci0JaWYgKHJldCkKLQkJcHJfZXJyKCJjb3VsZCBub3QgcmVxdWVzdCBy ZXNldCBHUElPXG4iKTsKLQotCXJldCA9IGdwaW9fcmVxdWVzdChOMjEwMF9QT1dFUl9CVVRUT04s ICJwb3dlciIpOwotCWlmIChyZXQpCi0JCXByX2VycigiY291bGQgbm90IHJlcXVlc3QgcG93ZXIg R1BJT1xuIik7Ci0JZWxzZSB7Ci0JCXJldCA9IGdwaW9fZGlyZWN0aW9uX2lucHV0KE4yMTAwX1BP V0VSX0JVVFRPTik7Ci0JCWlmIChyZXQpCi0JCQlwcl9lcnIoImNvdWxkIG5vdCBzZXQgcG93ZXIg R1BJTyBhcyBpbnB1dFxuIik7Ci0JfQotCS8qIFNldCB1cCBwb3dlciBidXR0b24gcG9sbCB0aW1l ciAqLwotCXRpbWVyX3NldHVwKCZwb3dlcl9idXR0b25fcG9sbF90aW1lciwgcG93ZXJfYnV0dG9u X3BvbGwsIDApOwotCXBvd2VyX2J1dHRvbl9wb2xsX3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsg KEhaIC8gMTApOwotCWFkZF90aW1lcigmcG93ZXJfYnV0dG9uX3BvbGxfdGltZXIpOwotCXJldHVy biAwOwotfQotZGV2aWNlX2luaXRjYWxsKG4yMTAwX3JlcXVlc3RfZ3Bpb3MpOwotCi1zdGF0aWMg dm9pZCBfX2luaXQgbjIxMDBfaW5pdF9tYWNoaW5lKHZvaWQpCi17Ci0JcmVnaXN0ZXJfaW9wMzJ4 X2dwaW8oKTsKLQlncGlvZF9hZGRfbG9va3VwX3RhYmxlKCZpb3AzeHhfaTJjMF9ncGlvX2xvb2t1 cCk7Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZpb3AzeHhfaTJjMF9kZXZpY2UpOwotCXBs YXRmb3JtX2RldmljZV9yZWdpc3RlcigmbjIxMDBfZmxhc2hfZGV2aWNlKTsKLQlwbGF0Zm9ybV9k ZXZpY2VfcmVnaXN0ZXIoJm4yMTAwX3NlcmlhbF9kZXZpY2UpOwotCXBsYXRmb3JtX2RldmljZV9y ZWdpc3RlcigmaW9wM3h4X2RtYV8wX2NoYW5uZWwpOwotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rl cigmaW9wM3h4X2RtYV8xX2NoYW5uZWwpOwotCi0JaTJjX3JlZ2lzdGVyX2JvYXJkX2luZm8oMCwg bjIxMDBfaTJjX2RldmljZXMsCi0JCUFSUkFZX1NJWkUobjIxMDBfaTJjX2RldmljZXMpKTsKLQot CXBtX3Bvd2VyX29mZiA9IG4yMTAwX3Bvd2VyX29mZjsKLX0KLQotTUFDSElORV9TVEFSVChOMjEw MCwgIlRoZWN1cyBOMjEwMCIpCi0JLyogTWFpbnRhaW5lcjogTGVubmVydCBCdXl0ZW5oZWsgPGJ1 eXRlbmhAd2FudHN0b2ZseS5vcmc+ICovCi0JLmF0YWdfb2Zmc2V0CT0gMHgxMDAsCi0JLm5yX2ly cXMJPSBJT1AzMlhfTlJfSVJRUywKLQkubWFwX2lvCQk9IG4yMTAwX21hcF9pbywKLQkuaW5pdF9p cnEJPSBpb3AzMnhfaW5pdF9pcnEsCi0JLmluaXRfdGltZQk9IG4yMTAwX3RpbWVyX2luaXQsCi0J LmluaXRfbWFjaGluZQk9IG4yMTAwX2luaXRfbWFjaGluZSwKLQkucmVzdGFydAk9IG4yMTAwX3Jl c3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvbjIx MDAuaCBiL2FyY2gvYXJtL21hY2gtaW9wMzJ4L24yMTAwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDBiOTdiOTQwZDNlNy4uMDAwMDAwMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gt aW9wMzJ4L24yMTAwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwotLyoKLSAqIFRoZWN1cyBOMjEwMCBib2FyZCBy ZWdpc3RlcnMKLSAqLwotCi0jaWZuZGVmIF9fTjIxMDBfSAotI2RlZmluZSBfX04yMTAwX0gKLQot I2RlZmluZSBOMjEwMF9VQVJUCQkweGZlODAwMDAwCS8qIFVBUlQgKi8KLQotI2RlZmluZSBOMjEw MF9DT1BZX0JVVFRPTglJT1AzWFhfR1BJT19MSU5FKDApCi0jZGVmaW5lIE4yMTAwX1BDQTk1MzJf UkVTRVQJSU9QM1hYX0dQSU9fTElORSgyKQotI2RlZmluZSBOMjEwMF9SRVNFVF9CVVRUT04JSU9Q M1hYX0dQSU9fTElORSgzKQotI2RlZmluZSBOMjEwMF9IQVJEV0FSRV9SRVNFVAlJT1AzWFhfR1BJ T19MSU5FKDQpCi0jZGVmaW5lIE4yMTAwX1BPV0VSX0JVVFRPTglJT1AzWFhfR1BJT19MSU5FKDUp Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9wY2kuYyBiL2Fy Y2gvYXJtL21hY2gtaW9wMzJ4L3BjaS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3 YTIxNWQyZWU3ZTIuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9wY2ku YworKysgL2Rldi9udWxsCkBAIC0xLDQwNCArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogYXJjaC9hcm0vcGxhdC1pb3AvcGNpLmMKLSAqCi0g KiBQQ0kgc3VwcG9ydCBmb3IgdGhlIEludGVsIElPUDMyWCBhbmQgSU9QMzNYIHByb2Nlc3NvcnMK LSAqCi0gKiBBdXRob3I6IFJvcnkgQm9sdCA8cm9yeWJvbHRAcGFjYmVsbC5uZXQ+Ci0gKiBDb3B5 cmlnaHQgKEMpIDIwMDIgUm9yeSBCb2x0Ci0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgotI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLSNpbmNs dWRlIDxsaW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51 eC9pb3BvcnQuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPGFzbS9pcnEuaD4K LSNpbmNsdWRlIDxhc20vc2lnbmFsLmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gvcGNpLmg+Ci0jaW5j bHVkZSAiaGFyZHdhcmUuaCIKLSNpbmNsdWRlICJpb3AzeHguaCIKLQotLy8gI2RlZmluZSBERUJV RwotCi0jaWZkZWYgREVCVUcKLSNkZWZpbmUgIERCRyh4Li4uKSBwcmludGsoeCkKLSNlbHNlCi0j ZGVmaW5lICBEQkcoeC4uLikgZG8geyB9IHdoaWxlICgwKQotI2VuZGlmCi0KLS8qCi0gKiBUaGlz IHJvdXRpbmUgYnVpbGRzIGVpdGhlciBhIHR5cGUwIG9yIHR5cGUxIGNvbmZpZ3VyYXRpb24gY29t bWFuZC4gIElmIHRoZQotICogYnVzIGlzIG9uIHRoZSA4MDN4eCB0aGVuIGEgdHlwZTAgbWFkZSwg ZWxzZSBhIHR5cGUxIGlzIGNyZWF0ZWQuCi0gKi8KLXN0YXRpYyB1MzIgaW9wM3h4X2NmZ19hZGRy ZXNzKHN0cnVjdCBwY2lfYnVzICpidXMsIGludCBkZXZmbiwgaW50IHdoZXJlKQotewotCXN0cnVj dCBwY2lfc3lzX2RhdGEgKnN5cyA9IGJ1cy0+c3lzZGF0YTsKLQl1MzIgYWRkcjsKLQotCWlmIChz eXMtPmJ1c25yID09IGJ1cy0+bnVtYmVyKQotCQlhZGRyID0gMSA8PCAoUENJX1NMT1QoZGV2Zm4p ICsgMTYpIHwgKFBDSV9TTE9UKGRldmZuKSA8PCAxMSk7Ci0JZWxzZQotCQlhZGRyID0gYnVzLT5u dW1iZXIgPDwgMTYgfCBQQ0lfU0xPVChkZXZmbikgPDwgMTEgfCAxOwotCi0JYWRkciB8PQlQQ0lf RlVOQyhkZXZmbikgPDwgOCB8ICh3aGVyZSAmIH4zKTsKLQotCXJldHVybiBhZGRyOwotfQotCi0v KgotICogVGhpcyByb3V0aW5lIGNoZWNrcyB0aGUgc3RhdHVzIG9mIHRoZSBsYXN0IGNvbmZpZ3Vy YXRpb24gY3ljbGUuICBJZiBhbiBlcnJvcgotICogd2FzIGRldGVjdGVkIGl0IHJldHVybnMgYSAx LCBlbHNlIGl0IHJldHVybnMgYSAwLiAgVGhlIGVycm9ycyBiZWluZyBjaGVja2VkCi0gKiBhcmUg cGFyaXR5LCBtYXN0ZXIgYWJvcnQsIHRhcmdldCBhYm9ydCAobWFzdGVyIGFuZCB0YXJnZXQpLiAg VGhlc2UgdHlwZXMgb2YKLSAqIGVycm9ycyBvY2N1ciBkdXJpbmcgYSBjb25maWcgY3ljbGUgd2hl cmUgdGhlcmUgaXMgbm8gZGV2aWNlLCBsaWtlIGR1cmluZwotICogdGhlIGRpc2NvdmVyeSBzdGFn ZS4KLSAqLwotc3RhdGljIGludCBpb3AzeHhfcGNpX3N0YXR1cyh2b2lkKQotewotCXVuc2lnbmVk IGludCBzdGF0dXM7Ci0JaW50IHJldCA9IDA7Ci0KLQkvKgotCSAqIENoZWNrIHRoZSBzdGF0dXMg cmVnaXN0ZXJzLgotCSAqLwotCXN0YXR1cyA9ICpJT1AzWFhfQVRVU1I7Ci0JaWYgKHN0YXR1cyAm IDB4ZjkwMCkgewotCQlEQkcoIlx0XHRcdFBDSTogUDAgLSBzdGF0dXMgPSAweCUwOHhcbiIsIHN0 YXR1cyk7Ci0JCSpJT1AzWFhfQVRVU1IgPSBzdGF0dXMgJiAweGY5MDA7Ci0JCXJldCA9IDE7Ci0J fQotCi0Jc3RhdHVzID0gKklPUDNYWF9BVFVJU1I7Ci0JaWYgKHN0YXR1cyAmIDB4Njc5Zikgewot CQlEQkcoIlx0XHRcdFBDSTogUDEgLSBzdGF0dXMgPSAweCUwOHhcbiIsIHN0YXR1cyk7Ci0JCSpJ T1AzWFhfQVRVSVNSID0gc3RhdHVzICYgMHg2NzlmOwotCQlyZXQgPSAxOwotCX0KLQotCXJldHVy biByZXQ7Ci19Ci0KLS8qCi0gKiBTaW1wbHkgd3JpdGUgdGhlIGFkZHJlc3MgcmVnaXN0ZXIgYW5k IHJlYWQgdGhlIGNvbmZpZ3VyYXRpb24KLSAqIGRhdGEuICBOb3RlIHRoYXQgdGhlIDQgbm9wcyBl bnN1cmUgdGhhdCB3ZSBhcmUgYWJsZSB0byBoYW5kbGUKLSAqIGEgZGVsYXllZCBhYm9ydCAoaW4g dGhlb3J5LikKLSAqLwotc3RhdGljIHUzMiBpb3AzeHhfcmVhZCh1bnNpZ25lZCBsb25nIGFkZHIp Ci17Ci0JdTMyIHZhbDsKLQotCV9fYXNtX18gX192b2xhdGlsZV9fKAotCQkic3RyCSUxLCBbJTJd XG5cdCIKLQkJImxkcgklMCwgWyUzXVxuXHQiCi0JCSJub3Bcblx0IgotCQkibm9wXG5cdCIKLQkJ Im5vcFxuXHQiCi0JCSJub3Bcblx0IgotCQk6ICI9ciIgKHZhbCkKLQkJOiAiciIgKGFkZHIpLCAi ciIgKElPUDNYWF9PQ0NBUiksICJyIiAoSU9QM1hYX09DQ0RSKSk7Ci0KLQlyZXR1cm4gdmFsOwot fQotCi0vKgotICogVGhlIHJlYWQgcm91dGluZXMgbXVzdCBjaGVjayB0aGUgZXJyb3Igc3RhdHVz IG9mIHRoZSBsYXN0IGNvbmZpZ3VyYXRpb24KLSAqIGN5Y2xlLiAgSWYgdGhlcmUgd2FzIGFuIGVy cm9yLCB0aGUgcm91dGluZSByZXR1cm5zIGFsbCBoZXggZidzLgotICovCi1zdGF0aWMgaW50Ci1p b3AzeHhfcmVhZF9jb25maWcoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50IGRldmZu LCBpbnQgd2hlcmUsCi0JCWludCBzaXplLCB1MzIgKnZhbHVlKQotewotCXVuc2lnbmVkIGxvbmcg YWRkciA9IGlvcDN4eF9jZmdfYWRkcmVzcyhidXMsIGRldmZuLCB3aGVyZSk7Ci0JdTMyIHZhbCA9 IGlvcDN4eF9yZWFkKGFkZHIpID4+ICgod2hlcmUgJiAzKSAqIDgpOwotCi0JaWYgKGlvcDN4eF9w Y2lfc3RhdHVzKCkpCi0JCXZhbCA9IDB4ZmZmZmZmZmY7Ci0KLQkqdmFsdWUgPSB2YWw7Ci0KLQly ZXR1cm4gUENJQklPU19TVUNDRVNTRlVMOwotfQotCi1zdGF0aWMgaW50Ci1pb3AzeHhfd3JpdGVf Y29uZmlnKHN0cnVjdCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHdoZXJl LAotCQlpbnQgc2l6ZSwgdTMyIHZhbHVlKQotewotCXVuc2lnbmVkIGxvbmcgYWRkciA9IGlvcDN4 eF9jZmdfYWRkcmVzcyhidXMsIGRldmZuLCB3aGVyZSk7Ci0JdTMyIHZhbDsKLQotCWlmIChzaXpl ICE9IDQpIHsKLQkJdmFsID0gaW9wM3h4X3JlYWQoYWRkcik7Ci0JCWlmIChpb3AzeHhfcGNpX3N0 YXR1cygpKQotCQkJcmV0dXJuIFBDSUJJT1NfU1VDQ0VTU0ZVTDsKLQotCQl3aGVyZSA9ICh3aGVy ZSAmIDMpICogODsKLQotCQlpZiAoc2l6ZSA9PSAxKQotCQkJdmFsICY9IH4oMHhmZiA8PCB3aGVy ZSk7Ci0JCWVsc2UKLQkJCXZhbCAmPSB+KDB4ZmZmZiA8PCB3aGVyZSk7Ci0KLQkJKklPUDNYWF9P Q0NEUiA9IHZhbCB8IHZhbHVlIDw8IHdoZXJlOwotCX0gZWxzZSB7Ci0JCWFzbSB2b2xhdGlsZSgK LQkJCSJzdHIJJTEsIFslMl1cblx0IgotCQkJInN0cgklMCwgWyUzXVxuXHQiCi0JCQkibm9wXG5c dCIKLQkJCSJub3Bcblx0IgotCQkJIm5vcFxuXHQiCi0JCQkibm9wXG5cdCIKLQkJCToKLQkJCTog InIiICh2YWx1ZSksICJyIiAoYWRkciksCi0JCQkgICJyIiAoSU9QM1hYX09DQ0FSKSwgInIiIChJ T1AzWFhfT0NDRFIpKTsKLQl9Ci0KLQlyZXR1cm4gUENJQklPU19TVUNDRVNTRlVMOwotfQotCi1z dHJ1Y3QgcGNpX29wcyBpb3AzeHhfb3BzID0gewotCS5yZWFkCT0gaW9wM3h4X3JlYWRfY29uZmln LAotCS53cml0ZQk9IGlvcDN4eF93cml0ZV9jb25maWcsCi19OwotCi0vKgotICogV2hlbiBhIFBD SSBkZXZpY2UgZG9lcyBub3QgZXhpc3QgZHVyaW5nIGNvbmZpZyBjeWNsZXMsIHRoZSA4MDIwMCBn ZXRzIGEKLSAqIGJ1cyBlcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZyAweGZmZmZmZmZmLiBUaGlz IGhhbmRsZXIgc2ltcGx5IHJldHVybnMuCi0gKi8KLXN0YXRpYyBpbnQKLWlvcDN4eF9wY2lfYWJv cnQodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBpbnQgZnNyLCBzdHJ1Y3QgcHRfcmVncyAq cmVncykKLXsKLQlEQkcoIlBDSSBhYm9ydDogYWRkcmVzcyA9IDB4JTA4bHggZnNyID0gMHglMDN4 IFBDID0gMHglMDhseCBMUiA9IDB4JTA4bHhcbiIsCi0JCWFkZHIsIGZzciwgcmVncy0+QVJNX3Bj LCByZWdzLT5BUk1fbHIpOwotCi0JLyoKLQkgKiBJZiBpdCB3YXMgYW4gaW1wcmVjaXNlIGFib3J0 LCB0aGVuIHdlIG5lZWQgdG8gY29ycmVjdCB0aGUKLQkgKiByZXR1cm4gYWRkcmVzcyB0byBiZSBf YWZ0ZXJfIHRoZSBpbnN0cnVjdGlvbi4KLQkgKi8KLQlpZiAoZnNyICYgKDEgPDwgMTApKQotCQly ZWdzLT5BUk1fcGMgKz0gNDsKLQotCXJldHVybiAwOwotfQotCi1pbnQgaW9wM3h4X3BjaV9zZXR1 cChpbnQgbnIsIHN0cnVjdCBwY2lfc3lzX2RhdGEgKnN5cykKLXsKLQlzdHJ1Y3QgcmVzb3VyY2Ug KnJlczsKLQlzdHJ1Y3QgcmVzb3VyY2UgcmVhbGlvOwotCi0JaWYgKG5yICE9IDApCi0JCXJldHVy biAwOwotCi0JcmVzID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHJlc291cmNlKSwgR0ZQX0tFUk5F TCk7Ci0JaWYgKCFyZXMpCi0JCXBhbmljKCJQQ0k6IHVuYWJsZSB0byBhbGxvYyByZXNvdXJjZXMi KTsKLQotCXJlcy0+c3RhcnQgPSBJT1AzWFhfUENJX0xPV0VSX01FTV9QQTsKLQlyZXMtPmVuZCAg ID0gSU9QM1hYX1BDSV9MT1dFUl9NRU1fUEEgKyBJT1AzWFhfUENJX01FTV9XSU5ET1dfU0laRSAt IDE7Ci0JcmVzLT5uYW1lICA9ICJJT1AzWFggUENJIE1lbW9yeSBTcGFjZSI7Ci0JcmVzLT5mbGFn cyA9IElPUkVTT1VSQ0VfTUVNOwotCXJlcXVlc3RfcmVzb3VyY2UoJmlvbWVtX3Jlc291cmNlLCBy ZXMpOwotCi0JLyoKLQkgKiBVc2Ugd2hhdGV2ZXIgdHJhbnNsYXRpb24gaXMgYWxyZWFkeSBzZXR1 cC4KLQkgKi8KLQlzeXMtPm1lbV9vZmZzZXQgPSBJT1AzWFhfUENJX0xPV0VSX01FTV9QQSAtICpJ T1AzWFhfT01XVFZSMDsKLQotCXBjaV9hZGRfcmVzb3VyY2Vfb2Zmc2V0KCZzeXMtPnJlc291cmNl cywgcmVzLCBzeXMtPm1lbV9vZmZzZXQpOwotCi0JcmVhbGlvLnN0YXJ0ID0gMDsKLQlyZWFsaW8u ZW5kID0gcmVhbGlvLnN0YXJ0ICsgU1pfNjRLIC0gMTsKLQlwY2lfcmVtYXBfaW9zcGFjZSgmcmVh bGlvLCBJT1AzWFhfUENJX0xPV0VSX0lPX1BBKTsKLQotCXJldHVybiAxOwotfQotCi12b2lkIF9f aW5pdCBpb3AzeHhfYXR1X3NldHVwKHZvaWQpCi17Ci0JLyogQkFSIDAgKCBEaXNhYmxlZCApICov Ci0JKklPUDNYWF9JQVVCQVIwID0gMHgwOwotCSpJT1AzWFhfSUFCQVIwICA9IDB4MDsKLQkqSU9Q M1hYX0lBVFZSMCAgPSAweDA7Ci0JKklPUDNYWF9JQUxSMCAgID0gMHgwOwotCi0JLyogQkFSIDEg KCBEaXNhYmxlZCApICovCi0JKklPUDNYWF9JQVVCQVIxID0gMHgwOwotCSpJT1AzWFhfSUFCQVIx ICA9IDB4MDsKLQkqSU9QM1hYX0lBTFIxICAgPSAweDA7Ci0KLQkvKiBCQVIgMiAoMToxIG1hcHBp bmcgd2l0aCBQaHlzaWNhbCBSQU0pICovCi0JLyogU2V0IGxpbWl0IGFuZCBlbmFibGUgKi8KLQkq SU9QM1hYX0lBTFIyID0gfigodTMyKUlPUDNYWF9NQVhfUkFNX1NJWkUgLSAxKSAmIH4weDE7Ci0J KklPUDNYWF9JQVVCQVIyID0gMHgwOwotCi0JLyogQWxpZ24gdGhlIGluYm91bmQgYmFyIHdpdGgg dGhlIGJhc2Ugb2YgbWVtb3J5ICovCi0JKklPUDNYWF9JQUJBUjIgPSBQSFlTX09GRlNFVCB8Ci0J CQkgICAgICAgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCB8Ci0JCQkgICAgICAgUENJX0JB U0VfQUREUkVTU19NRU1fUFJFRkVUQ0g7Ci0KLQkqSU9QM1hYX0lBVFZSMiA9IFBIWVNfT0ZGU0VU OwotCi0JLyogT3V0Ym91bmQgd2luZG93IDAgKi8KLQkqSU9QM1hYX09NV1RWUjAgPSBJT1AzWFhf UENJX0xPV0VSX01FTV9CQTsKLQkqSU9QM1hYX09VTVdUVlIwID0gMDsKLQotCS8qIE91dGJvdW5k IHdpbmRvdyAxICovCi0JKklPUDNYWF9PTVdUVlIxID0gSU9QM1hYX1BDSV9MT1dFUl9NRU1fQkEg KwotCQkJICBJT1AzWFhfUENJX01FTV9XSU5ET1dfU0laRSAvIDI7Ci0JKklPUDNYWF9PVU1XVFZS MSA9IDA7Ci0KLQkvKiBCQVIgMyAoIERpc2FibGVkICkgKi8KLQkqSU9QM1hYX0lBVUJBUjMgPSAw eDA7Ci0JKklPUDNYWF9JQUJBUjMgID0gMHgwOwotCSpJT1AzWFhfSUFUVlIzICA9IDB4MDsKLQkq SU9QM1hYX0lBTFIzICAgPSAweDA7Ci0KLQkvKiBTZXR1cCB0aGUgSS9PIEJhcgotCSAqLwotCSpJ T1AzWFhfT0lPV1RWUiA9IElPUDNYWF9QQ0lfTE9XRVJfSU9fQkE7Ci0KLQkvKiBFbmFibGUgaW5i b3VuZCBhbmQgb3V0Ym91bmQgY3ljbGVzCi0JICovCi0JKklPUDNYWF9BVFVDTUQgfD0gUENJX0NP TU1BTkRfTUVNT1JZIHwgUENJX0NPTU1BTkRfTUFTVEVSIHwKLQkJCSAgICAgICBQQ0lfQ09NTUFO RF9QQVJJVFkgfCBQQ0lfQ09NTUFORF9TRVJSOwotCSpJT1AzWFhfQVRVQ1IgfD0gSU9QM1hYX0FU VUNSX09VVF9FTjsKLX0KLQotdm9pZCBfX2luaXQgaW9wM3h4X2F0dV9kaXNhYmxlKHZvaWQpCi17 Ci0JKklPUDNYWF9BVFVDTUQgPSAwOwotCSpJT1AzWFhfQVRVQ1IgPSAwOwotCi0JLyogd2FpdCBm b3IgY3ljbGVzIHRvIHF1aWVzY2UgKi8KLQl3aGlsZSAoKklPUDNYWF9QQ1NSICYgKElPUDNYWF9Q Q1NSX09VVF9RX0JVU1kgfAotCQkJCSAgICAgSU9QM1hYX1BDU1JfSU5fUV9CVVNZKSkKLQkJY3B1 X3JlbGF4KCk7Ci0KLQkvKiBCQVIgMCAoIERpc2FibGVkICkgKi8KLQkqSU9QM1hYX0lBVUJBUjAg PSAweDA7Ci0JKklPUDNYWF9JQUJBUjAgID0gMHgwOwotCSpJT1AzWFhfSUFUVlIwICA9IDB4MDsK LQkqSU9QM1hYX0lBTFIwICAgPSAweDA7Ci0KLQkvKiBCQVIgMSAoIERpc2FibGVkICkgKi8KLQkq SU9QM1hYX0lBVUJBUjEgPSAweDA7Ci0JKklPUDNYWF9JQUJBUjEgID0gMHgwOwotCSpJT1AzWFhf SUFMUjEgICA9IDB4MDsKLQotCS8qIEJBUiAyICggRGlzYWJsZWQgKSAqLwotCSpJT1AzWFhfSUFV QkFSMiA9IDB4MDsKLQkqSU9QM1hYX0lBQkFSMiAgPSAweDA7Ci0JKklPUDNYWF9JQVRWUjIgID0g MHgwOwotCSpJT1AzWFhfSUFMUjIgICA9IDB4MDsKLQotCS8qIEJBUiAzICggRGlzYWJsZWQgKSAq LwotCSpJT1AzWFhfSUFVQkFSMyA9IDB4MDsKLQkqSU9QM1hYX0lBQkFSMyAgPSAweDA7Ci0JKklP UDNYWF9JQVRWUjMgID0gMHgwOwotCSpJT1AzWFhfSUFMUjMgICA9IDB4MDsKLQotCS8qIENsZWFy IHRoZSBvdXRib3VuZCB3aW5kb3dzICovCi0JKklPUDNYWF9PSU9XVFZSICA9IDA7Ci0KLQkvKiBP dXRib3VuZCB3aW5kb3cgMCAqLwotCSpJT1AzWFhfT01XVFZSMCA9IDA7Ci0JKklPUDNYWF9PVU1X VFZSMCA9IDA7Ci0KLQkvKiBPdXRib3VuZCB3aW5kb3cgMSAqLwotCSpJT1AzWFhfT01XVFZSMSA9 IDA7Ci0JKklPUDNYWF9PVU1XVFZSMSA9IDA7Ci19Ci0KLS8qIEZsYWcgdG8gZGV0ZXJtaW5lIHdo ZXRoZXIgdGhlIEFUVSBpcyBpbml0aWFsaXplZCBhbmQgdGhlIFBDSSBidXMgc2Nhbm5lZCAqLwot aW50IGluaXRfYXR1OwotCi1pbnQgaW9wM3h4X2dldF9pbml0X2F0dSh2b2lkKSB7Ci0JLyogY2hl Y2sgaWYgZGVmYXVsdCBoYXMgYmVlbiBvdmVycmlkZGVuICovCi0JaWYgKGluaXRfYXR1ICE9IElP UDNYWF9JTklUX0FUVV9ERUZBVUxUKQotCQlyZXR1cm4gaW5pdF9hdHU7Ci0JZWxzZQotCQlyZXR1 cm4gSU9QM1hYX0lOSVRfQVRVX0RJU0FCTEU7Ci19Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBpb3Az eHhfYXR1X2RlYnVnKHZvaWQpCi17Ci0JREJHKCJQQ0k6IEludGVsIElPUDN4eCBQQ0kgaW5pdC5c biIpOwotCURCRygiUENJOiBPdXRib3VuZCBtZW1vcnkgd2luZG93IDA6IFBDSSAweCUwOHglMDh4 XG4iLAotCQkqSU9QM1hYX09VTVdUVlIwLCAqSU9QM1hYX09NV1RWUjApOwotCURCRygiUENJOiBP dXRib3VuZCBtZW1vcnkgd2luZG93IDE6IFBDSSAweCUwOHglMDh4XG4iLAotCQkqSU9QM1hYX09V TVdUVlIxLCAqSU9QM1hYX09NV1RWUjEpOwotCURCRygiUENJOiBPdXRib3VuZCBJTyB3aW5kb3c6 IFBDSSAweCUwOHhcbiIsCi0JCSpJT1AzWFhfT0lPV1RWUik7Ci0KLQlEQkcoIlBDSTogSW5ib3Vu ZCBtZW1vcnkgd2luZG93IDA6IFBDSSAweCUwOHglMDh4IDB4JTA4eCAtPiAweCUwOHhcbiIsCi0J CSpJT1AzWFhfSUFVQkFSMCwgKklPUDNYWF9JQUJBUjAsICpJT1AzWFhfSUFMUjAsICpJT1AzWFhf SUFUVlIwKTsKLQlEQkcoIlBDSTogSW5ib3VuZCBtZW1vcnkgd2luZG93IDE6IFBDSSAweCUwOHgl MDh4IDB4JTA4eFxuIiwKLQkJKklPUDNYWF9JQVVCQVIxLCAqSU9QM1hYX0lBQkFSMSwgKklPUDNY WF9JQUxSMSk7Ci0JREJHKCJQQ0k6IEluYm91bmQgbWVtb3J5IHdpbmRvdyAyOiBQQ0kgMHglMDh4 JTA4eCAweCUwOHggLT4gMHglMDh4XG4iLAotCQkqSU9QM1hYX0lBVUJBUjIsICpJT1AzWFhfSUFC QVIyLCAqSU9QM1hYX0lBTFIyLCAqSU9QM1hYX0lBVFZSMik7Ci0JREJHKCJQQ0k6IEluYm91bmQg bWVtb3J5IHdpbmRvdyAzOiBQQ0kgMHglMDh4JTA4eCAweCUwOHggLT4gMHglMDh4XG4iLAotCQkq SU9QM1hYX0lBVUJBUjMsICpJT1AzWFhfSUFCQVIzLCAqSU9QM1hYX0lBTFIzLCAqSU9QM1hYX0lB VFZSMyk7Ci0KLQlEQkcoIlBDSTogRXhwYW5zaW9uIFJPTSB3aW5kb3c6IFBDSSAweCUwOHglMDh4 IDB4JTA4eCAtPiAweCUwOHhcbiIsCi0JCTAsICpJT1AzWFhfRVJCQVIsICpJT1AzWFhfRVJMUiwg KklPUDNYWF9FUlRWUik7Ci0KLQlEQkcoIkFUVTogSU9QM1hYX0FUVUNNRD0weCUwNHhcbiIsICpJ T1AzWFhfQVRVQ01EKTsKLQlEQkcoIkFUVTogSU9QM1hYX0FUVUNSPTB4JTA4eFxuIiwgKklPUDNY WF9BVFVDUik7Ci0KLQlob29rX2ZhdWx0X2NvZGUoMTYrNiwgaW9wM3h4X3BjaV9hYm9ydCwgU0lH QlVTLCAwLCAiaW1wcmVjaXNlIGV4dGVybmFsIGFib3J0Iik7Ci19Ci0KLS8qIGZvciBwbGF0Zm9y bXMgdGhhdCBtaWdodCBiZSBob3N0LWJ1cy1hZGFwdGVycyAqLwotdm9pZCBfX2luaXQgaW9wM3h4 X3BjaV9wcmVpbml0X2NvbmQodm9pZCkKLXsKLQlpZiAoaW9wM3h4X2dldF9pbml0X2F0dSgpID09 IElPUDNYWF9JTklUX0FUVV9FTkFCTEUpIHsKLQkJaW9wM3h4X2F0dV9kaXNhYmxlKCk7Ci0JCWlv cDN4eF9hdHVfc2V0dXAoKTsKLQkJaW9wM3h4X2F0dV9kZWJ1ZygpOwotCX0KLX0KLQotdm9pZCBf X2luaXQgaW9wM3h4X3BjaV9wcmVpbml0KHZvaWQpCi17Ci0JcGNpYmlvc19taW5fbWVtID0gMDsK LQotCWlvcDN4eF9hdHVfZGlzYWJsZSgpOwotCWlvcDN4eF9hdHVfc2V0dXAoKTsKLQlpb3AzeHhf YXR1X2RlYnVnKCk7Ci19Ci0KLS8qIGFsbG93IGluaXRfYXR1IHRvIGJlIHVzZXIgb3ZlcnJpZGRl biAqLwotc3RhdGljIGludCBfX2luaXQgaW9wM3h4X2luaXRfYXR1X3NldHVwKGNoYXIgKnN0cikK LXsKLQlpbml0X2F0dSA9IElPUDNYWF9JTklUX0FUVV9ERUZBVUxUOwotCWlmIChzdHIpIHsKLQkJ d2hpbGUgKCpzdHIgIT0gJ1wwJykgewotCQkJc3dpdGNoICgqc3RyKSB7Ci0JCQljYXNlICd5JzoK LQkJCWNhc2UgJ1knOgotCQkJCWluaXRfYXR1ID0gSU9QM1hYX0lOSVRfQVRVX0VOQUJMRTsKLQkJ CQlicmVhazsKLQkJCWNhc2UgJ24nOgotCQkJY2FzZSAnTic6Ci0JCQkJaW5pdF9hdHUgPSBJT1Az WFhfSU5JVF9BVFVfRElTQUJMRTsKLQkJCQlicmVhazsKLQkJCWNhc2UgJywnOgotCQkJY2FzZSAn PSc6Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCXByaW50ayhLRVJOX0RFQlVHICJcIiVz XCIgbWFsZm9ybWVkIGF0ICIKLQkJCQkJICAgICJjaGFyYWN0ZXI6IFwnJWNcJyIsCi0JCQkJCSAg ICBfX2Z1bmNfXywKLQkJCQkJICAgICpzdHIpOwotCQkJCSooc3RyICsgMSkgPSAnXDAnOwotCQkJ fQotCQkJc3RyKys7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gMTsKLX0KLQotX19zZXR1cCgiaW9wM3h4 X2luaXRfYXR1IiwgaW9wM3h4X2luaXRfYXR1X3NldHVwKTsKLQpkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC1pb3AzMngvcG11LmMgYi9hcmNoL2FybS9tYWNoLWlvcDMyeC9wbXUuYwpkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRiYzdhM2NiOGEzLi4wMDAwMDAwMDAwMDAKLS0tIGEv YXJjaC9hcm0vbWFjaC1pb3AzMngvcG11LmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBA Ci0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogUE1VIElS USByZWdpc3RyYXRpb24gZm9yIHRoZSBpb3AzeHggeHNjYWxlIFBNVSBmYW1pbGllcy4KLSAqIENv cHlyaWdodCAoQykgMjAxMCBXaWxsIERlYWNvbiwgQVJNIEx0ZC4KLSAqLwotCi0jaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Ci0jaW5jbHVkZSAiaXJxcy5oIgotCi1zdGF0aWMgc3Ry dWN0IHJlc291cmNlIHBtdV9yZXNvdXJjZSA9IHsKLQkuc3RhcnQJPSBJUlFfSU9QMzJYX0NPUkVf UE1VLAotCS5lbmQJPSBJUlFfSU9QMzJYX0NPUkVfUE1VLAotCS5mbGFncwk9IElPUkVTT1VSQ0Vf SVJRLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgcG11X2RldmljZSA9IHsK LQkubmFtZQkJPSAieHNjYWxlLXBtdSIsCi0JLmlkCQk9IC0xLAotCS5yZXNvdXJjZQk9ICZwbXVf cmVzb3VyY2UsCi0JLm51bV9yZXNvdXJjZXMJPSAxLAotfTsKLQotc3RhdGljIGludCBfX2luaXQg aW9wM3h4X3BtdV9pbml0KHZvaWQpCi17Ci0JcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZwbXVf ZGV2aWNlKTsKLQlyZXR1cm4gMDsKLX0KLQotYXJjaF9pbml0Y2FsbChpb3AzeHhfcG11X2luaXQp OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvcmVzdGFydC5jIGIvYXJjaC9hcm0v bWFjaC1pb3AzMngvcmVzdGFydC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGZh NTRkM2E3YTguLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWlvcDMyeC9yZXN0YXJ0 LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0vLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogcmVzdGFydC5jCi0gKgotICogQ29weXJpZ2h0IChD KSAyMDAxIE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KLSAqLwotI2luY2x1ZGUgPGFzbS9zeXN0 ZW1fbWlzYy5oPgotI2luY2x1ZGUgImhhcmR3YXJlLmgiCi0jaW5jbHVkZSAiaW9wM3h4LmgiCi0K LXZvaWQgaW9wM3h4X3Jlc3RhcnQoZW51bSByZWJvb3RfbW9kZSBtb2RlLCBjb25zdCBjaGFyICpj bWQpCi17Ci0JKklPUDNYWF9QQ1NSID0gMHgzMDsKLQotCS8qIEp1bXAgaW50byBST00gYXQgYWRk cmVzcyAwICovCi0Jc29mdF9yZXN0YXJ0KDApOwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFj aC1pb3AzMngvc2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtaW9wMzJ4L3NldHVwLmMKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYTgxYzI4YTYzMi4uMDAwMDAwMDAwMDAwCi0tLSBhL2Fy Y2gvYXJtL21hY2gtaW9wMzJ4L3NldHVwLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBA Ci0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Ci0vKgotICogYXJjaC9h cm0vcGxhdC1pb3Avc2V0dXAuYwotICoKLSAqIEF1dGhvcjogTmljb2xhcyBQaXRyZSA8bmljb0Bm bHV4bmljLm5ldD4KLSAqIENvcHlyaWdodCAoQykgMjAwMSBNb250YVZpc3RhIFNvZnR3YXJlLCBJ bmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgSW50ZWwgQ29ycG9yYXRpb24uCi0gKi8KLQotI2lu Y2x1ZGUgPGxpbnV4L21tLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1ZGUgPGFz bS9tYWNoL21hcC5oPgotI2luY2x1ZGUgImlvcDN4eC5oIgotCi0vKgotICogU3RhbmRhcmQgSU8g bWFwcGluZyBmb3IgYWxsIElPUDN4eCBiYXNlZCBzeXN0ZW1zLiAgTm90ZSB0aGF0Ci0gKiB0aGUg SU9QM3h4IE9DQ0RSIG11c3QgYmUgbWFwcGVkIHVuY2FjaGVkIGFuZCB1bmJ1ZmZlcmVkLgotICov Ci1zdGF0aWMgc3RydWN0IG1hcF9kZXNjIGlvcDN4eF9zdGRfZGVzY1tdIF9faW5pdGRhdGEgPSB7 Ci0JewkvKiBtZW0gbWFwcGVkIHJlZ2lzdGVycyAqLwotCQkudmlydHVhbAk9IElPUDNYWF9QRVJJ UEhFUkFMX1ZJUlRfQkFTRSwKLQkJLnBmbgkJPSBfX3BoeXNfdG9fcGZuKElPUDNYWF9QRVJJUEhF UkFMX1BIWVNfQkFTRSksCi0JCS5sZW5ndGgJCT0gSU9QM1hYX1BFUklQSEVSQUxfU0laRSwKLQkJ LnR5cGUJCT0gTVRfVU5DQUNIRUQsCi0JfSwKLX07Ci0KLXZvaWQgX19pbml0IGlvcDN4eF9tYXBf aW8odm9pZCkKLXsKLQlpb3RhYmxlX2luaXQoaW9wM3h4X3N0ZF9kZXNjLCBBUlJBWV9TSVpFKGlv cDN4eF9zdGRfZGVzYykpOwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzMngvdGlt ZS5jIGIvYXJjaC9hcm0vbWFjaC1pb3AzMngvdGltZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBhZTUzM2I2NmZlZmQuLjAwMDAwMDAwMDAwMAotLS0gYS9hcmNoL2FybS9tYWNoLWlv cDMyeC90aW1lLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLS8qCi0gKiBhcmNoL2FybS9wbGF0LWlv cC90aW1lLmMKLSAqCi0gKiBUaW1lciBjb2RlIGZvciBJT1AzMnggYW5kIElPUDMzeCBiYXNlZCBz eXN0ZW1zCi0gKgotICogQXV0aG9yOiBEZWVwYWsgU2F4ZW5hIDxkc2F4ZW5hQG12aXN0YS5jb20+ Ci0gKgotICogQ29weXJpZ2h0IDIwMDItMjAwMyBNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KLSAq LwotCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW50ZXJydXB0 Lmg+Ci0jaW5jbHVkZSA8bGludXgvdGltZS5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNp bmNsdWRlIDxsaW51eC90aW1leC5oPgotI2luY2x1ZGUgPGxpbnV4L2lvLmg+Ci0jaW5jbHVkZSA8 bGludXgvY2xvY2tzb3VyY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9jbG9ja2NoaXBzLmg+Ci0jaW5j bHVkZSA8bGludXgvZXhwb3J0Lmg+Ci0jaW5jbHVkZSA8bGludXgvc2NoZWRfY2xvY2suaD4KLSNp bmNsdWRlIDxhc20vaXJxLmg+Ci0jaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgotI2luY2x1ZGUg PGFzbS9tYWNoL2lycS5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL3RpbWUuaD4KLQotI2luY2x1ZGUg ImhhcmR3YXJlLmgiCi0jaW5jbHVkZSAiaXJxcy5oIgotCi0vKgotICogTWluaW11bSBjbG9ja3Nv dXJjZS9jbG9ja2V2ZW50IHRpbWVyIHJhbmdlIGluIHNlY29uZHMKLSAqLwotI2RlZmluZSBJT1Bf TUlOX1JBTkdFIDQKLQotLyoKLSAqIElPUCBjbG9ja3NvdXJjZSAoZnJlZS1ydW5uaW5nIHRpbWVy IDEpLgotICovCi1zdGF0aWMgdTY0IG5vdHJhY2UgaW9wX2Nsb2Nrc291cmNlX3JlYWQoc3RydWN0 IGNsb2Nrc291cmNlICp1bnVzZWQpCi17Ci0JcmV0dXJuIDB4ZmZmZmZmZmZ1IC0gcmVhZF90Y3Ix KCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgY2xvY2tzb3VyY2UgaW9wX2Nsb2Nrc291cmNlID0gewot CS5uYW1lIAkJPSAiaW9wX3RpbWVyMSIsCi0JLnJhdGluZwkJPSAzMDAsCi0JLnJlYWQJCT0gaW9w X2Nsb2Nrc291cmNlX3JlYWQsCi0JLm1hc2sJCT0gQ0xPQ0tTT1VSQ0VfTUFTSygzMiksCi0JLmZs YWdzCQk9IENMT0NLX1NPVVJDRV9JU19DT05USU5VT1VTLAotfTsKLQotLyoKLSAqIElPUCBzY2hl ZF9jbG9jaygpIGltcGxlbWVudGF0aW9uIHZpYSBpdHMgY2xvY2tzb3VyY2UuCi0gKi8KLXN0YXRp YyB1NjQgbm90cmFjZSBpb3BfcmVhZF9zY2hlZF9jbG9jayh2b2lkKQotewotCXJldHVybiAweGZm ZmZmZmZmdSAtIHJlYWRfdGNyMSgpOwotfQotCi0vKgotICogSU9QIGNsb2NrZXZlbnRzIChpbnRl cnJ1cHRpbmcgdGltZXIgMCkuCi0gKi8KLXN0YXRpYyBpbnQgaW9wX3NldF9uZXh0X2V2ZW50KHVu c2lnbmVkIGxvbmcgZGVsdGEsCi0JCQkgICAgICBzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICp1 bnVzZWQpCi17Ci0JdTMyIHRtciA9IElPUF9UTVJfUFJJVklMRUdFRCB8IElPUF9UTVJfUkFUSU9f MV8xOwotCi0JQlVHX09OKGRlbHRhID09IDApOwotCXdyaXRlX3RtcjAodG1yICYgfihJT1BfVE1S X0VOIHwgSU9QX1RNUl9SRUxPQUQpKTsKLQl3cml0ZV90Y3IwKGRlbHRhKTsKLQl3cml0ZV90bXIw KCh0bXIgJiB+SU9QX1RNUl9SRUxPQUQpIHwgSU9QX1RNUl9FTik7Ci0KLQlyZXR1cm4gMDsKLX0K LQotc3RhdGljIHVuc2lnbmVkIGxvbmcgdGlja3NfcGVyX2ppZmZ5OwotCi1zdGF0aWMgaW50IGlv cF9zZXRfcGVyaW9kaWMoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQotewotCXUzMiB0 bXIgPSByZWFkX3RtcjAoKTsKLQotCXdyaXRlX3RtcjAodG1yICYgfklPUF9UTVJfRU4pOwotCXdy aXRlX3RjcjAodGlja3NfcGVyX2ppZmZ5IC0gMSk7Ci0Jd3JpdGVfdHJyMCh0aWNrc19wZXJfamlm ZnkgLSAxKTsKLQl0bXIgfD0gKElPUF9UTVJfUkVMT0FEIHwgSU9QX1RNUl9FTik7Ci0KLQl3cml0 ZV90bXIwKHRtcik7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgaW9wX3NldF9vbmVzaG90 KHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmV2dCkKLXsKLQl1MzIgdG1yID0gcmVhZF90bXIw KCk7Ci0KLQkvKiAtPnNldF9uZXh0X2V2ZW50IHNldHMgcGVyaW9kIGFuZCBlbmFibGVzIHRpbWVy ICovCi0JdG1yICY9IH4oSU9QX1RNUl9SRUxPQUQgfCBJT1BfVE1SX0VOKTsKLQl3cml0ZV90bXIw KHRtcik7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgaW9wX3NodXRkb3duKHN0cnVjdCBj bG9ja19ldmVudF9kZXZpY2UgKmV2dCkKLXsKLQl1MzIgdG1yID0gcmVhZF90bXIwKCk7Ci0KLQl0 bXIgJj0gfklPUF9UTVJfRU47Ci0Jd3JpdGVfdG1yMCh0bXIpOwotCXJldHVybiAwOwotfQotCi1z dGF0aWMgaW50IGlvcF9yZXN1bWUoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQotewot CXUzMiB0bXIgPSByZWFkX3RtcjAoKTsKLQotCXRtciB8PSBJT1BfVE1SX0VOOwotCXdyaXRlX3Rt cjAodG1yKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0cnVjdCBjbG9ja19ldmVudF9kZXZp Y2UgaW9wX2Nsb2NrZXZlbnQgPSB7Ci0JLm5hbWUJCQk9ICJpb3BfdGltZXIwIiwKLQkuZmVhdHVy ZXMJCT0gQ0xPQ0tfRVZUX0ZFQVRfUEVSSU9ESUMgfAotCQkJCSAgQ0xPQ0tfRVZUX0ZFQVRfT05F U0hPVCwKLQkucmF0aW5nCQkJPSAzMDAsCi0JLnNldF9uZXh0X2V2ZW50CQk9IGlvcF9zZXRfbmV4 dF9ldmVudCwKLQkuc2V0X3N0YXRlX3NodXRkb3duCT0gaW9wX3NodXRkb3duLAotCS5zZXRfc3Rh dGVfcGVyaW9kaWMJPSBpb3Bfc2V0X3BlcmlvZGljLAotCS50aWNrX3Jlc3VtZQkJPSBpb3BfcmVz dW1lLAotCS5zZXRfc3RhdGVfb25lc2hvdAk9IGlvcF9zZXRfb25lc2hvdCwKLX07Ci0KLXN0YXRp YyBpcnFyZXR1cm5fdAotaW9wX3RpbWVyX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQp Ci17Ci0Jc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0ID0gZGV2X2lkOwotCi0Jd3JpdGVf dGlzcigxKTsKLQlldnQtPmV2ZW50X2hhbmRsZXIoZXZ0KTsKLQlyZXR1cm4gSVJRX0hBTkRMRUQ7 Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBsb25nIGlvcF90aWNrX3JhdGU7Ci11bnNpZ25lZCBsb25n IGdldF9pb3BfdGlja19yYXRlKHZvaWQpCi17Ci0JcmV0dXJuIGlvcF90aWNrX3JhdGU7Ci19Ci1F WFBPUlRfU1lNQk9MKGdldF9pb3BfdGlja19yYXRlKTsKLQotdm9pZCBfX2luaXQgaW9wX2luaXRf dGltZSh1bnNpZ25lZCBsb25nIHRpY2tfcmF0ZSkKLXsKLQl1MzIgdGltZXJfY3RsOwotCWludCBp cnEgPSBJUlFfSU9QMzJYX1RJTUVSMDsKLQotCXNjaGVkX2Nsb2NrX3JlZ2lzdGVyKGlvcF9yZWFk X3NjaGVkX2Nsb2NrLCAzMiwgdGlja19yYXRlKTsKLQotCXRpY2tzX3Blcl9qaWZmeSA9IERJVl9S T1VORF9DTE9TRVNUKHRpY2tfcmF0ZSwgSFopOwotCWlvcF90aWNrX3JhdGUgPSB0aWNrX3JhdGU7 Ci0KLQl0aW1lcl9jdGwgPSBJT1BfVE1SX0VOIHwgSU9QX1RNUl9QUklWSUxFR0VEIHwKLQkJCUlP UF9UTVJfUkVMT0FEIHwgSU9QX1RNUl9SQVRJT18xXzE7Ci0KLQkvKgotCSAqIFNldCB1cCBpbnRl cnJ1cHRpbmcgY2xvY2tldmVudCB0aW1lciAwLgotCSAqLwotCXdyaXRlX3RtcjAodGltZXJfY3Rs ICYgfklPUF9UTVJfRU4pOwotCXdyaXRlX3Rpc3IoMSk7Ci0JaWYgKHJlcXVlc3RfaXJxKGlycSwg aW9wX3RpbWVyX2ludGVycnVwdCwgSVJRRl9USU1FUiB8IElSUUZfSVJRUE9MTCwKLQkJCSJJT1Ag VGltZXIgVGljayIsICZpb3BfY2xvY2tldmVudCkpCi0JCXByX2VycigiRmFpbGVkIHRvIHJlcXVl c3QgaXJxKCkgJWQgKElPUCBUaW1lciBUaWNrKVxuIiwgaXJxKTsKLQlpb3BfY2xvY2tldmVudC5j cHVtYXNrID0gY3B1bWFza19vZigwKTsKLQljbG9ja2V2ZW50c19jb25maWdfYW5kX3JlZ2lzdGVy KCZpb3BfY2xvY2tldmVudCwgdGlja19yYXRlLAotCQkJCQkweGYsIDB4ZmZmZmZmZmUpOwotCi0J LyoKLQkgKiBTZXQgdXAgZnJlZS1ydW5uaW5nIGNsb2Nrc291cmNlIHRpbWVyIDEuCi0JICovCi0J d3JpdGVfdHJyMSgweGZmZmZmZmZmKTsKLQl3cml0ZV90Y3IxKDB4ZmZmZmZmZmYpOwotCXdyaXRl X3RtcjEodGltZXJfY3RsKTsKLQljbG9ja3NvdXJjZV9yZWdpc3Rlcl9oeigmaW9wX2Nsb2Nrc291 cmNlLCB0aWNrX3JhdGUpOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25m aWcgYi9kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZwppbmRleCAyNjRlNzgwYWUzMmUuLmU0ODhl MWI4ZTgwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcKKysrIGIvZHJp dmVycy9pMmMvYnVzc2VzL0tjb25maWcKQEAgLTcyMywxMSArNzIzLDExIEBAIGNvbmZpZyBJMkNf SU1YX0xQSTJDCiAJICB3aWxsIGJlIGNhbGxlZCBpMmMtaW14LWxwaTJjLgogCiBjb25maWcgSTJD X0lPUDNYWAotCXRyaXN0YXRlICJJbnRlbCBJT1B4M3h4IGFuZCBJWFA0eHggb24tY2hpcCBJMkMg aW50ZXJmYWNlIgotCWRlcGVuZHMgb24gQVJDSF9JT1AzMlggfHwgQVJDSF9JWFA0WFggfHwgQ09N UElMRV9URVNUCisJdHJpc3RhdGUgIkludGVsIElYUDR4eCBvbi1jaGlwIEkyQyBpbnRlcmZhY2Ui CisJZGVwZW5kcyBvbiBBUkNIX0lYUDRYWCB8fCBDT01QSUxFX1RFU1QKIAloZWxwCiAJICBTYXkg WSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgSUlDIGJ1cyBjb250cm9sbGVyIG9uCi0JICB0 aGUgSW50ZWwgSU9QeDN4eCBJL08gUHJvY2Vzc29ycyBvciBJWFA0eHggTmV0d29yayBQcm9jZXNz b3JzLgorCSAgdGhlIEludGVsIElYUDR4eCBOZXR3b3JrIFByb2Nlc3NvcnMuCiAKIAkgIFRoaXMg ZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUK IAkgIHdpbGwgYmUgY2FsbGVkIGkyYy1pb3AzeHguCi0tIAoyLjI5LjIKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==