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 D2190C54EE9 for ; Wed, 7 Sep 2022 14:26:57 +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=I/0uS90dWH+2qOGSAMOqfcFbbPuONotTw4PxOYrYEg0=; b=3Ti10sPwqMewVm KKMMMP7GQ8B+bEct/f7o5I12XzDsfYsMVwaNxuhkLOlyiZ6tFYnYKylC3MCO8XwAoliRSlvIu8Z1z D0nuY+IVVutKIShIa/ydL36ZRgtysZ1lHUhmrk6s9EfV40EoEn1jxQmZ1HHlzzoFHZ70w+TLeJzCj tNyUJXlWWdKIiyizcjtub8H5MMkQxErXWjI6EHW8EdPjvq0TjTlr8hA7Fcn2Jmx/0anF67EKTZlkL h6wiD5ym0SnkG+fE99eQlDQe+qmoni2d2Nc5K2l/h+Q/xjkFiUxZ335UA+sH53/aN78rTwyfbWwCQ AK/301NQ0vAYKzsfh+fA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oVvzX-006qpT-GJ; Wed, 07 Sep 2022 14:25:24 +0000 Received: from relay12.mail.gandi.net ([2001:4b98:dc4:8::232]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oVvwX-006oev-Fe; Wed, 07 Sep 2022 14:22:24 +0000 Received: from booty.fritz.box (unknown [77.244.183.192]) (Authenticated sender: luca.ceresoli@bootlin.com) by mail.gandi.net (Postfix) with ESMTPA id E1F6920000A; Wed, 7 Sep 2022 14:22:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1662560535; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xuLgzYpw92Z5skYvCzdhlOMlfP8qmscKLZEAb70AKTs=; b=DN8Rg/nbHNnTFIRz68juFamKfuaBvwQ0gkCeYBgkQODd8YW8yFYCkr4sc1Tjonht0NcunK RFEqWHlXeU4W87ocOy4oVphuNrkhq8Ok0EtxOSskU/EPKcdB3xjj7G0haxzppU5wD7fkmQ xAPu5AXICCS2sDKmVqVkzccGKNejd0iPrVvxz5ElqSIqpYNlSV5gDvScioW7+hYPGb+5RW CqaxecofWcPHPa4ChShtNtEtbzx23BwMHgxs8hy5RT80j1+8YmH91f8FEe4erMgsIM1Xgz xqprRuWoFj8siCzEmAjCmnBIl2kkSzzmTzbkYmLik6qJjWcZRlFw5OvdF4d6Dg== From: luca.ceresoli@bootlin.com To: alsa-devel@alsa-project.org, linux-rockchip@lists.infradead.org Cc: Luca Ceresoli , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Heiko Stuebner , Jaroslav Kysela , Takashi Iwai , Nicolas Frattaroli , Philipp Zabel , Johan Jonker , Chris Morgan Subject: [PATCH 7/8] ASoC: codecs: Add RK3308 internal audio codec driver Date: Wed, 7 Sep 2022 16:21:23 +0200 Message-Id: <20220907142124.2532620-8-luca.ceresoli@bootlin.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220907142124.2532620-1-luca.ceresoli@bootlin.com> References: <20220907142124.2532620-1-luca.ceresoli@bootlin.com> MIME-Version: 1.0 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 RnJvbTogTHVjYSBDZXJlc29saSA8bHVjYS5jZXJlc29saUBib290bGluLmNvbT4KCkFkZCBkcml2 ZXIgZm9yIHRoZSBpbnRlcm5hbCBhdWRpbyBjb2RlYyBvZiB0aGUgUm9ja2NoaXAgUkszMzA4IFNv Qy4KCkluaXRpYWxseSBiYXNlZCBvbiB0aGUgdmVuZG9yIGtlcm5lbCBkcml2ZXIgWzBdLCB3aXRo IGxvdHMgb2YgY2xlYW51cHMsCmZpeGVzLCBpbXByb3ZlbWVudHMgYW5kIHJlbW92YWwgb2Ygc29t ZSBmZWF0dXJlcy4KClswXSBodHRwczovL2dpdGh1Yi5jb20vcm9ja2NoaXAtbGludXgva2VybmVs L2Jsb2IvZGV2ZWxvcC00LjE5L3NvdW5kL3NvYy9jb2RlY3MvcmszMzA4X2NvZGVjLmMKClNpZ25l ZC1vZmYtYnk6IEx1Y2EgQ2VyZXNvbGkgPGx1Y2EuY2VyZXNvbGlAYm9vdGxpbi5jb20+Ci0tLQog TUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogc291bmQvc29jL2NvZGVj cy9LY29uZmlnICAgICAgICB8ICAgMTEgKwogc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZSAgICAg ICB8ICAgIDIgKwogc291bmQvc29jL2NvZGVjcy9yazMzMDhfY29kZWMuYyB8IDIxMjIgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogc291bmQvc29jL2NvZGVjcy9yazMzMDhfY29kZWMu aCB8ICA2NDggKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAyNzg1IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC9zb2MvY29kZWNzL3JrMzMwOF9jb2RlYy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc291bmQvc29jL2NvZGVjcy9yazMzMDhfY29kZWMuaAoKZGlmZiAtLWdp dCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMDc5YmRkOTVkYzQ5Li5mYjJhMGE2 ZTNjMWYgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC0xNzU5 Myw2ICsxNzU5Myw4IEBAIE06CUx1Y2EgQ2VyZXNvbGkgPGx1Y2EuY2VyZXNvbGlAYm9vdGxpbi5j b20+CiBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv c291bmQvcm9ja2NoaXAscmszMzA4LWNvZGVjLnlhbWwKIEY6CWluY2x1ZGUvZHQtYmluZGluZ3Mv c291bmQvcm9ja2NoaXAscmszMzA4LWNvZGVjLmgKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvcmszMzA4 X2NvZGVjLmMKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvcmszMzA4X2NvZGVjLmgKIAogUk9DS0NISVAg UkszMzA4IFNPVU5EIENBUkQgRFJJVkVSCiBNOglMdWNhIENlcmVzb2xpIDxsdWNhLmNlcmVzb2xp QGJvb3RsaW4uY29tPgpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9LY29uZmlnIGIvc291 bmQvc29jL2NvZGVjcy9LY29uZmlnCmluZGV4IGM3ZDgzZmU5OTllOS4uZTA1YjA4NDMwOGY0IDEw MDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcKKysrIGIvc291bmQvc29jL2NvZGVj cy9LY29uZmlnCkBAIC0xNjQsNiArMTY0LDcgQEAgY29uZmlnIFNORF9TT0NfQUxMX0NPREVDUwog CWltcGx5IFNORF9TT0NfUENNNTEwMkEKIAlpbXBseSBTTkRfU09DX1BDTTUxMnhfSTJDCiAJaW1w bHkgU05EX1NPQ19QQ001MTJ4X1NQSQorCWltcGx5IFNORF9TT0NfUkszMzA4CiAJaW1wbHkgU05E X1NPQ19SSzMzMjgKIAlpbXBseSBTTkRfU09DX1JLODE3CiAJaW1wbHkgU05EX1NPQ19SVDI3NApA QCAtMTE5MSw2ICsxMTkyLDE2IEBAIGNvbmZpZyBTTkRfU09DX1BDTTUxMnhfU1BJCiAJc2VsZWN0 IFNORF9TT0NfUENNNTEyeAogCXNlbGVjdCBSRUdNQVBfU1BJCiAKK2NvbmZpZyBTTkRfU09DX1JL MzMwOAorCXRyaXN0YXRlICJSb2NrY2hpcCBSSzMzMDggYXVkaW8gQ09ERUMiCisJc2VsZWN0IFJF R01BUF9NTUlPCisJaGVscAorCSAgVGhpcyBpcyBhIGRldmljZSBkcml2ZXIgZm9yIHRoZSBhdWRp byBjb2RlYyBlbWJlZGRlZCBpbiB0aGUKKwkgIFJvY2tjaGlwIFJLMzMwOCBTb0MuCisKKwkgIEl0 IGhhcyA4IDI0LWJpdCBBRENzIGFuZCAyIDI0LWJpdCBEQUNzLiBUaGUgbWF4aW11bSBzdXBwb3J0 ZWQKKwkgIHNhbXBsaW5nIHJhdGUgaXMgMTkyIGtIei4KKwogY29uZmlnIFNORF9TT0NfUkszMzI4 CiAJdHJpc3RhdGUgIlJvY2tjaGlwIFJLMzMyOCBhdWRpbyBDT0RFQyIKIAlzZWxlY3QgUkVHTUFQ X01NSU8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUgYi9zb3VuZC9zb2Mv Y29kZWNzL01ha2VmaWxlCmluZGV4IDE2YTAxNjM1ZGQwNC4uOGY2YTQ3M2MyNDY3IDEwMDY0NAot LS0gYS9zb3VuZC9zb2MvY29kZWNzL01ha2VmaWxlCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvTWFr ZWZpbGUKQEAgLTE4MSw2ICsxODEsNyBAQCBzbmQtc29jLXBjbTUxMDJhLW9ianMgOj0gcGNtNTEw MmEubwogc25kLXNvYy1wY201MTJ4LW9ianMgOj0gcGNtNTEyeC5vCiBzbmQtc29jLXBjbTUxMngt aTJjLW9ianMgOj0gcGNtNTEyeC1pMmMubwogc25kLXNvYy1wY201MTJ4LXNwaS1vYmpzIDo9IHBj bTUxMngtc3BpLm8KK3NuZC1zb2MtcmszMzA4LW9ianMgOj0gcmszMzA4X2NvZGVjLm8KIHNuZC1z b2MtcmszMzI4LW9ianMgOj0gcmszMzI4X2NvZGVjLm8KIHNuZC1zb2Mtcms4MTctb2JqcyA6PSBy azgxN19jb2RlYy5vCiBzbmQtc29jLXJsNjIzMS1vYmpzIDo9IHJsNjIzMS5vCkBAIC01MzQsNiAr NTM1LDcgQEAgb2JqLSQoQ09ORklHX1NORF9TT0NfUENNNTEwMkEpCSs9IHNuZC1zb2MtcGNtNTEw MmEubwogb2JqLSQoQ09ORklHX1NORF9TT0NfUENNNTEyeCkJKz0gc25kLXNvYy1wY201MTJ4Lm8K IG9iai0kKENPTkZJR19TTkRfU09DX1BDTTUxMnhfSTJDKQkrPSBzbmQtc29jLXBjbTUxMngtaTJj Lm8KIG9iai0kKENPTkZJR19TTkRfU09DX1BDTTUxMnhfU1BJKQkrPSBzbmQtc29jLXBjbTUxMngt c3BpLm8KK29iai0kKENPTkZJR19TTkRfU09DX1JLMzMwOCkJKz0gc25kLXNvYy1yazMzMDgubwog b2JqLSQoQ09ORklHX1NORF9TT0NfUkszMzI4KQkrPSBzbmQtc29jLXJrMzMyOC5vCiBvYmotJChD T05GSUdfU05EX1NPQ19SSzgxNykJKz0gc25kLXNvYy1yazgxNy5vCiBvYmotJChDT05GSUdfU05E X1NPQ19STDYyMzEpCSs9IHNuZC1zb2Mtcmw2MjMxLm8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9j b2RlY3MvcmszMzA4X2NvZGVjLmMgYi9zb3VuZC9zb2MvY29kZWNzL3JrMzMwOF9jb2RlYy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmMwMDE2ODlkY2U3Ci0tLSAv ZGV2L251bGwKKysrIGIvc291bmQvc29jL2NvZGVjcy9yazMzMDhfY29kZWMuYwpAQCAtMCwwICsx LDIxMjIgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisg KiBSb2NrY2hpcCBSSzMzMDggaW50ZXJuYWwgYXVkaW8gY29kZWMgZHJpdmVyCisgKgorICogQ29w eXJpZ2h0IChjKSAyMDE4LCBGdXpob3UgUm9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uLCBMdGQgQWxs IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAyMiwgVml2YXgtTWV0cm90ZWNo IEx0ZAorICovCisKKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcCxyazMzMDgt Y29kZWMuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2Uu aD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNp bmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KKyNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxp bnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1 ZGUgPGxpbnV4L3Jlc2V0Lmg+CisjaW5jbHVkZSA8bGludXgvdXRpbF9tYWNyb3MuaD4KKyNpbmNs dWRlIDxzb3VuZC9jb3JlLmg+CisjaW5jbHVkZSA8c291bmQvcGNtLmg+CisjaW5jbHVkZSA8c291 bmQvcGNtX3BhcmFtcy5oPgorI2luY2x1ZGUgPHNvdW5kL3NvYy5oPgorI2luY2x1ZGUgPHNvdW5k L3Rsdi5oPgorCisjaW5jbHVkZSAicmszMzA4X2NvZGVjLmgiCisKKyNkZWZpbmUgQURDX0xSX0dS T1VQX01BWAkJNAorI2RlZmluZSBSSzMzMDhfTl9NSUNCSUFTX01BWAkJMgorCisjZGVmaW5lIEdS Rl9DSElQX0lECQkJMHg4MDAKKworI2RlZmluZSBBQ09ERUNfVkVSU0lPTl9BCQkweGEKKyNkZWZp bmUgQUNPREVDX1ZFUlNJT05fQgkJMHhiCisKK2VudW0geworCUFEQ19HUlAwX01JQ0lOID0gMCwK KwlBRENfR1JQMF9MSU5FSU4KK307CisKK2VudW0geworCURBQ19MSU5FT1VUID0gMCwKKwlEQUNf SFBPVVQgPSAxLAorCURBQ19MSU5FT1VUX0hQT1VUID0gMTEsCit9OworCitzdHJ1Y3QgcmszMzA4 X2NvZGVjX3ByaXYgeworCWNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgcmVnbWFw ICpyZWdtYXA7CisJc3RydWN0IHJlZ21hcCAqZ3JmOworCXN0cnVjdCByZXNldF9jb250cm9sICpy ZXNldDsKKwlzdHJ1Y3QgY2xrICpwY2xrOworCXN0cnVjdCBjbGsgKm1jbGtfcng7CisJc3RydWN0 IGNsayAqbWNsa190eDsKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudDsKKwl1 MzIgY29kZWNfdmVyOworCisJLyoKKwkgKiBUbyBzZWxlY3QgQURDcyBmb3IgZ3JvdXBzOgorCSAq CisJICogZ3JwIDAgLS0gc2VsZWN0IEFEQzEgLyBBREMyCisJICogZ3JwIDEgLS0gc2VsZWN0IEFE QzMgLyBBREM0CisJICogZ3JwIDIgLS0gc2VsZWN0IEFEQzUgLyBBREM2CisJICogZ3JwIDMgLS0g c2VsZWN0IEFEQzcgLyBBREM4CisJICovCisJdTMyIHVzZWRfYWRjX2dycHM7CisJaW50IGFkY19n cnAwX3VzaW5nX2xpbmVpbjsKKwkvKiAwOiBsaW5lIG91dCwgMTogaHAgb3V0LCAxMTogbGluZW91 dCBhbmQgaHBvdXQgKi8KKwlpbnQgZGFjX291dHB1dDsKKworCS8qIEFHQyBML1IgT2ZmL29uICov CisJdW5zaWduZWQgaW50IGFnY19sW0FEQ19MUl9HUk9VUF9NQVhdOworCXVuc2lnbmVkIGludCBh Z2NfcltBRENfTFJfR1JPVVBfTUFYXTsKKworCS8qIE9ubHkgaHBvdXQgZG8gZmFkZS1pbiBhbmQg ZmFkZS1vdXQgKi8KKwl1bnNpZ25lZCBpbnQgaHBvdXRfbF9kZ2FpbjsKKwl1bnNpZ25lZCBpbnQg aHBvdXRfcl9kZ2FpbjsKKworCWJvb2wgbWljYmlhc19lbmFibGVkW1JLMzMwOF9OX01JQ0JJQVNf TUFYXTsKKwl1MzIgbWljYmlhc19hdmRkX211bHQ7Cit9OworCitzdGF0aWMgY29uc3QgREVDTEFS RV9UTFZfREJfU0NBTEUocmszMzA4X2NvZGVjX2FsY19hZ2NfZ3JwX2dhaW5fdGx2LCAgICAgLTE4 MDAsIDE1MCwgMCk7CitzdGF0aWMgY29uc3QgREVDTEFSRV9UTFZfREJfU0NBTEUocmszMzA4X2Nv ZGVjX2FsY19hZ2NfZ3JwX21heF9nYWluX3RsdiwgLTEzNTAsIDYwMCwgMCk7CitzdGF0aWMgY29u c3QgREVDTEFSRV9UTFZfREJfU0NBTEUocmszMzA4X2NvZGVjX2FsY19hZ2NfZ3JwX21pbl9nYWlu X3RsdiwgLTE4MDAsIDYwMCwgMCk7CitzdGF0aWMgY29uc3QgREVDTEFSRV9UTFZfREJfU0NBTEUo cmszMzA4X2NvZGVjX2FkY19hbGNfZ2Fpbl90bHYsCSAtMTgwMCwgMTUwLCAwKTsKK3N0YXRpYyBj b25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShyazMzMDhfY29kZWNfZGFjX2hwb3V0X2dhaW5fdGx2 LAkgLTM5MDAsIDE1MCwgMCk7CitzdGF0aWMgY29uc3QgREVDTEFSRV9UTFZfREJfU0NBTEUocmsz MzA4X2NvZGVjX2RhY19ocG1peF9nYWluX3RsdiwJICAtNjAwLCA2MDAsIDApOworCitzdGF0aWMg Y29uc3QgREVDTEFSRV9UTFZfREJfUkFOR0UocmszMzA4X2NvZGVjX2RhY19saW5lb3V0X2dhaW5f dGx2LAorCTAsIDAsIFRMVl9EQl9TQ0FMRV9JVEVNKC02MDAsIDAsIDApLAorCTEsIDEsIFRMVl9E Ql9TQ0FMRV9JVEVNKC0zMDAsIDAsIDApLAorCTIsIDIsIFRMVl9EQl9TQ0FMRV9JVEVNKC0xNTAs IDAsIDApLAorCTMsIDMsIFRMVl9EQl9TQ0FMRV9JVEVNKDAsICAgIDAsIDApLAorKTsKKworc3Rh dGljIGludCByazMzMDhfY29kZWNfaHBvdXRfbF9nZXRfdGx2KHN0cnVjdCBzbmRfa2NvbnRyb2wg Kmtjb250cm9sLAorCQkJCQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCk7Citz dGF0aWMgaW50IHJrMzMwOF9jb2RlY19ocG91dF9sX3B1dF90bHYoc3RydWN0IHNuZF9rY29udHJv bCAqa2NvbnRyb2wsCisJCQkJCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKTsK K3N0YXRpYyBpbnQgcmszMzA4X2NvZGVjX2hwb3V0X3JfZ2V0X3RsdihzdHJ1Y3Qgc25kX2tjb250 cm9sICprY29udHJvbCwKKwkJCQkJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wp Oworc3RhdGljIGludCByazMzMDhfY29kZWNfaHBvdXRfcl9wdXRfdGx2KHN0cnVjdCBzbmRfa2Nv bnRyb2wgKmtjb250cm9sLAorCQkJCQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJv bCk7CitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19hZ2NfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wg Kmtjb250cm9sLAorCQkJCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKTsKK3N0 YXRpYyBpbnQgcmszMzA4X2NvZGVjX2FnY19wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRy b2wsCisJCQkJc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpOworc3RhdGljIGlu dCByazMzMDhfY29kZWNfbWljYmlhc19nZXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2ws CisJCQkJICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKTsKK3N0YXRpYyBp bnQgcmszMzA4X2NvZGVjX21pY2JpYXNfcHV0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9s LAorCQkJCSAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCk7CisKK3N0YXRp YyBjb25zdCBjaGFyICpvZmZvbl90ZXh0WzJdID0geworCVswXSA9ICJPZmYiLAorCVsxXSA9ICJP biIsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIHJrMzMwOF9taWNiaWFzX2Vu dW1bXSA9IHsKKwlTT0NfRU5VTV9TSU5HTEUoMCwgMCwgQVJSQVlfU0laRShvZmZvbl90ZXh0KSwg b2Zmb25fdGV4dCksCisJU09DX0VOVU1fU0lOR0xFKDEsIDAsIEFSUkFZX1NJWkUob2Zmb25fdGV4 dCksIG9mZm9uX3RleHQpLAorfTsKKworLyogQUxDIEFHQyBTd2l0Y2ggKi8KK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgc29jX2VudW0gcmszMzA4X2FnY19lbnVtX2FycmF5W10gPSB7CisJU09DX0VOVU1f U0lOR0xFKDAsIDAsIEFSUkFZX1NJWkUob2Zmb25fdGV4dCksIG9mZm9uX3RleHQpLAorCVNPQ19F TlVNX1NJTkdMRSgwLCAxLCBBUlJBWV9TSVpFKG9mZm9uX3RleHQpLCBvZmZvbl90ZXh0KSwKKwlT T0NfRU5VTV9TSU5HTEUoMSwgMCwgQVJSQVlfU0laRShvZmZvbl90ZXh0KSwgb2Zmb25fdGV4dCks CisJU09DX0VOVU1fU0lOR0xFKDEsIDEsIEFSUkFZX1NJWkUob2Zmb25fdGV4dCksIG9mZm9uX3Rl eHQpLAorCVNPQ19FTlVNX1NJTkdMRSgyLCAwLCBBUlJBWV9TSVpFKG9mZm9uX3RleHQpLCBvZmZv bl90ZXh0KSwKKwlTT0NfRU5VTV9TSU5HTEUoMiwgMSwgQVJSQVlfU0laRShvZmZvbl90ZXh0KSwg b2Zmb25fdGV4dCksCisJU09DX0VOVU1fU0lOR0xFKDMsIDAsIEFSUkFZX1NJWkUob2Zmb25fdGV4 dCksIG9mZm9uX3RleHQpLAorCVNPQ19FTlVNX1NJTkdMRSgzLCAxLCBBUlJBWV9TSVpFKG9mZm9u X3RleHQpLCBvZmZvbl90ZXh0KSwKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWdj X2FwcHJveF9yYXRlW10gPSB7CisJOTYwMDAsIDQ4MDAwLCA0NDEwMCwgMzIwMDAsIDI0MDAwLCAx NjAwMCwgMTIwMDAsIDgwMDAKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9s X25ldyByazMzMDhfY29kZWNfY29udHJvbHNbXSA9IHsKKwkvKiBEZXNwaXRlIHRoZSByZWdpc3Rl ciBuYW1lcywgdGhlc2Ugc2V0IHRoZSBnYWluIHdoZW4gQUdDIGlzIE9GRiAqLworCVNPQ19TSU5H TEVfUkFOR0VfVExWKCJNSUMxIENhcHR1cmUgVm9sdW1lIiwKKwkJCSAgICAgUkszMzA4X0FEQ19B TkFfQ09OMDMoMCksCisJCQkgICAgIFJLMzMwOF9BRENfQ0gxX0FMQ19HQUlOX1NGVCwKKwkJCSAg ICAgUkszMzA4X0FEQ19DSDFfQUxDX0dBSU5fTUlOLAorCQkJICAgICBSSzMzMDhfQURDX0NIMV9B TENfR0FJTl9NQVgsCisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19hZGNfYWxjX2dhaW5fdGx2KSwK KwlTT0NfU0lOR0xFX1JBTkdFX1RMVigiTUlDMiBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAgIFJL MzMwOF9BRENfQU5BX0NPTjA0KDApLAorCQkJICAgICBSSzMzMDhfQURDX0NIMl9BTENfR0FJTl9T RlQsCisJCQkgICAgIFJLMzMwOF9BRENfQ0gyX0FMQ19HQUlOX01JTiwKKwkJCSAgICAgUkszMzA4 X0FEQ19DSDJfQUxDX0dBSU5fTUFYLAorCQkJICAgICAwLCByazMzMDhfY29kZWNfYWRjX2FsY19n YWluX3RsdiksCisJU09DX1NJTkdMRV9SQU5HRV9UTFYoIk1JQzMgQ2FwdHVyZSBWb2x1bWUiLAor CQkJICAgICBSSzMzMDhfQURDX0FOQV9DT04wMygxKSwKKwkJCSAgICAgUkszMzA4X0FEQ19DSDFf QUxDX0dBSU5fU0ZULAorCQkJICAgICBSSzMzMDhfQURDX0NIMV9BTENfR0FJTl9NSU4sCisJCQkg ICAgIFJLMzMwOF9BRENfQ0gxX0FMQ19HQUlOX01BWCwKKwkJCSAgICAgMCwgcmszMzA4X2NvZGVj X2FkY19hbGNfZ2Fpbl90bHYpLAorCVNPQ19TSU5HTEVfUkFOR0VfVExWKCJNSUM0IENhcHR1cmUg Vm9sdW1lIiwKKwkJCSAgICAgUkszMzA4X0FEQ19BTkFfQ09OMDQoMSksCisJCQkgICAgIFJLMzMw OF9BRENfQ0gyX0FMQ19HQUlOX1NGVCwKKwkJCSAgICAgUkszMzA4X0FEQ19DSDJfQUxDX0dBSU5f TUlOLAorCQkJICAgICBSSzMzMDhfQURDX0NIMl9BTENfR0FJTl9NQVgsCisJCQkgICAgIDAsIHJr MzMwOF9jb2RlY19hZGNfYWxjX2dhaW5fdGx2KSwKKwlTT0NfU0lOR0xFX1JBTkdFX1RMVigiTUlD NSBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAgIFJLMzMwOF9BRENfQU5BX0NPTjAzKDIpLAorCQkJ ICAgICBSSzMzMDhfQURDX0NIMV9BTENfR0FJTl9TRlQsCisJCQkgICAgIFJLMzMwOF9BRENfQ0gx X0FMQ19HQUlOX01JTiwKKwkJCSAgICAgUkszMzA4X0FEQ19DSDFfQUxDX0dBSU5fTUFYLAorCQkJ ICAgICAwLCByazMzMDhfY29kZWNfYWRjX2FsY19nYWluX3RsdiksCisJU09DX1NJTkdMRV9SQU5H RV9UTFYoIk1JQzYgQ2FwdHVyZSBWb2x1bWUiLAorCQkJICAgICBSSzMzMDhfQURDX0FOQV9DT04w NCgyKSwKKwkJCSAgICAgUkszMzA4X0FEQ19DSDJfQUxDX0dBSU5fU0ZULAorCQkJICAgICBSSzMz MDhfQURDX0NIMl9BTENfR0FJTl9NSU4sCisJCQkgICAgIFJLMzMwOF9BRENfQ0gyX0FMQ19HQUlO X01BWCwKKwkJCSAgICAgMCwgcmszMzA4X2NvZGVjX2FkY19hbGNfZ2Fpbl90bHYpLAorCVNPQ19T SU5HTEVfUkFOR0VfVExWKCJNSUM3IENhcHR1cmUgVm9sdW1lIiwKKwkJCSAgICAgUkszMzA4X0FE Q19BTkFfQ09OMDMoMyksCisJCQkgICAgIFJLMzMwOF9BRENfQ0gxX0FMQ19HQUlOX1NGVCwKKwkJ CSAgICAgUkszMzA4X0FEQ19DSDFfQUxDX0dBSU5fTUlOLAorCQkJICAgICBSSzMzMDhfQURDX0NI MV9BTENfR0FJTl9NQVgsCisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19hZGNfYWxjX2dhaW5fdGx2 KSwKKwlTT0NfU0lOR0xFX1JBTkdFX1RMVigiTUlDOCBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAg IFJLMzMwOF9BRENfQU5BX0NPTjA0KDMpLAorCQkJICAgICBSSzMzMDhfQURDX0NIMl9BTENfR0FJ Tl9TRlQsCisJCQkgICAgIFJLMzMwOF9BRENfQ0gyX0FMQ19HQUlOX01JTiwKKwkJCSAgICAgUksz MzA4X0FEQ19DSDJfQUxDX0dBSU5fTUFYLAorCQkJICAgICAwLCByazMzMDhfY29kZWNfYWRjX2Fs Y19nYWluX3RsdiksCisJU09DX1NJTkdMRSgiTUlDMSBDYXB0dXJlIFN3aXRjaCIsIFJLMzMwOF9B RENfRElHX0NPTjAzKDApLCBSSzMzMDhfQURDX0xfQ0hfQklTVF9TRlQsIDEsIDEpLAorCVNPQ19T SU5HTEUoIk1JQzIgQ2FwdHVyZSBTd2l0Y2giLCBSSzMzMDhfQURDX0RJR19DT04wMygwKSwgUksz MzA4X0FEQ19SX0NIX0JJU1RfU0ZULCAxLCAxKSwKKwlTT0NfU0lOR0xFKCJNSUMzIENhcHR1cmUg U3dpdGNoIiwgUkszMzA4X0FEQ19ESUdfQ09OMDMoMSksIFJLMzMwOF9BRENfTF9DSF9CSVNUX1NG VCwgMSwgMSksCisJU09DX1NJTkdMRSgiTUlDNCBDYXB0dXJlIFN3aXRjaCIsIFJLMzMwOF9BRENf RElHX0NPTjAzKDEpLCBSSzMzMDhfQURDX1JfQ0hfQklTVF9TRlQsIDEsIDEpLAorCVNPQ19TSU5H TEUoIk1JQzUgQ2FwdHVyZSBTd2l0Y2giLCBSSzMzMDhfQURDX0RJR19DT04wMygyKSwgUkszMzA4 X0FEQ19MX0NIX0JJU1RfU0ZULCAxLCAxKSwKKwlTT0NfU0lOR0xFKCJNSUM2IENhcHR1cmUgU3dp dGNoIiwgUkszMzA4X0FEQ19ESUdfQ09OMDMoMiksIFJLMzMwOF9BRENfUl9DSF9CSVNUX1NGVCwg MSwgMSksCisJU09DX1NJTkdMRSgiTUlDNyBDYXB0dXJlIFN3aXRjaCIsIFJLMzMwOF9BRENfRElH X0NPTjAzKDMpLCBSSzMzMDhfQURDX0xfQ0hfQklTVF9TRlQsIDEsIDEpLAorCVNPQ19TSU5HTEUo Ik1JQzggQ2FwdHVyZSBTd2l0Y2giLCBSSzMzMDhfQURDX0RJR19DT04wMygzKSwgUkszMzA4X0FE Q19SX0NIX0JJU1RfU0ZULCAxLCAxKSwKKworCVNPQ19FTlVNX0VYVCgiTUlDMSBBR0MgQ2FwdHVy ZSBTd2l0Y2giLCByazMzMDhfYWdjX2VudW1fYXJyYXlbMF0sCisJCSAgICAgcmszMzA4X2NvZGVj X2FnY19nZXQsIHJrMzMwOF9jb2RlY19hZ2NfcHV0KSwKKwlTT0NfRU5VTV9FWFQoIk1JQzIgQUdD IENhcHR1cmUgU3dpdGNoIiwgcmszMzA4X2FnY19lbnVtX2FycmF5WzFdLAorCQkgICAgIHJrMzMw OF9jb2RlY19hZ2NfZ2V0LCByazMzMDhfY29kZWNfYWdjX3B1dCksCisJU09DX0VOVU1fRVhUKCJN SUMzIEFHQyBDYXB0dXJlIFN3aXRjaCIsIHJrMzMwOF9hZ2NfZW51bV9hcnJheVsyXSwKKwkJICAg ICByazMzMDhfY29kZWNfYWdjX2dldCwgcmszMzA4X2NvZGVjX2FnY19wdXQpLAorCVNPQ19FTlVN X0VYVCgiTUlDNCBBR0MgQ2FwdHVyZSBTd2l0Y2giLCByazMzMDhfYWdjX2VudW1fYXJyYXlbM10s CisJCSAgICAgcmszMzA4X2NvZGVjX2FnY19nZXQsIHJrMzMwOF9jb2RlY19hZ2NfcHV0KSwKKwlT T0NfRU5VTV9FWFQoIk1JQzUgQUdDIENhcHR1cmUgU3dpdGNoIiwgcmszMzA4X2FnY19lbnVtX2Fy cmF5WzRdLAorCQkgICAgIHJrMzMwOF9jb2RlY19hZ2NfZ2V0LCByazMzMDhfY29kZWNfYWdjX3B1 dCksCisJU09DX0VOVU1fRVhUKCJNSUM2IEFHQyBDYXB0dXJlIFN3aXRjaCIsIHJrMzMwOF9hZ2Nf ZW51bV9hcnJheVs1XSwKKwkJICAgICByazMzMDhfY29kZWNfYWdjX2dldCwgcmszMzA4X2NvZGVj X2FnY19wdXQpLAorCVNPQ19FTlVNX0VYVCgiTUlDNyBBR0MgQ2FwdHVyZSBTd2l0Y2giLCByazMz MDhfYWdjX2VudW1fYXJyYXlbNl0sCisJCSAgICAgcmszMzA4X2NvZGVjX2FnY19nZXQsIHJrMzMw OF9jb2RlY19hZ2NfcHV0KSwKKwlTT0NfRU5VTV9FWFQoIk1JQzggQUdDIENhcHR1cmUgU3dpdGNo IiwgcmszMzA4X2FnY19lbnVtX2FycmF5WzddLAorCQkgICAgIHJrMzMwOF9jb2RlY19hZ2NfZ2V0 LCByazMzMDhfY29kZWNfYWdjX3B1dCksCisKKwlTT0NfU0lOR0xFX1JBTkdFX1RMVigiTUlDMSBB R0MgTWF4IENhcHR1cmUgVm9sdW1lIiwKKwkJCSAgICAgUkszMzA4X0FMQ19MX0RJR19DT04wOSgw KSwKKwkJCSAgICAgUkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfU0ZULAorCQkJICAgICBSSzMzMDhf QUdDX01BWF9HQUlOX1BHQV9NSU4sCisJCQkgICAgIFJLMzMwOF9BR0NfTUFYX0dBSU5fUEdBX01B WCwKKwkJCSAgICAgMCwgcmszMzA4X2NvZGVjX2FsY19hZ2NfZ3JwX21heF9nYWluX3RsdiksCisJ U09DX1NJTkdMRV9SQU5HRV9UTFYoIk1JQzIgQUdDIE1heCBDYXB0dXJlIFZvbHVtZSIsCisJCQkg ICAgIFJLMzMwOF9BTENfUl9ESUdfQ09OMDkoMCksCisJCQkgICAgIFJLMzMwOF9BR0NfTUFYX0dB SU5fUEdBX1NGVCwKKwkJCSAgICAgUkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfTUlOLAorCQkJICAg ICBSSzMzMDhfQUdDX01BWF9HQUlOX1BHQV9NQVgsCisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19h bGNfYWdjX2dycF9tYXhfZ2Fpbl90bHYpLAorCVNPQ19TSU5HTEVfUkFOR0VfVExWKCJNSUMzIEFH QyBNYXggQ2FwdHVyZSBWb2x1bWUiLAorCQkJICAgICBSSzMzMDhfQUxDX0xfRElHX0NPTjA5KDEp LAorCQkJICAgICBSSzMzMDhfQUdDX01BWF9HQUlOX1BHQV9TRlQsCisJCQkgICAgIFJLMzMwOF9B R0NfTUFYX0dBSU5fUEdBX01JTiwKKwkJCSAgICAgUkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfTUFY LAorCQkJICAgICAwLCByazMzMDhfY29kZWNfYWxjX2FnY19ncnBfbWF4X2dhaW5fdGx2KSwKKwlT T0NfU0lOR0xFX1JBTkdFX1RMVigiTUlDNCBBR0MgTWF4IENhcHR1cmUgVm9sdW1lIiwKKwkJCSAg ICAgUkszMzA4X0FMQ19SX0RJR19DT04wOSgxKSwKKwkJCSAgICAgUkszMzA4X0FHQ19NQVhfR0FJ Tl9QR0FfU0ZULAorCQkJICAgICBSSzMzMDhfQUdDX01BWF9HQUlOX1BHQV9NSU4sCisJCQkgICAg IFJLMzMwOF9BR0NfTUFYX0dBSU5fUEdBX01BWCwKKwkJCSAgICAgMCwgcmszMzA4X2NvZGVjX2Fs Y19hZ2NfZ3JwX21heF9nYWluX3RsdiksCisJU09DX1NJTkdMRV9SQU5HRV9UTFYoIk1JQzUgQUdD IE1heCBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAgIFJLMzMwOF9BTENfTF9ESUdfQ09OMDkoMiks CisJCQkgICAgIFJLMzMwOF9BR0NfTUFYX0dBSU5fUEdBX1NGVCwKKwkJCSAgICAgUkszMzA4X0FH Q19NQVhfR0FJTl9QR0FfTUlOLAorCQkJICAgICBSSzMzMDhfQUdDX01BWF9HQUlOX1BHQV9NQVgs CisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19hbGNfYWdjX2dycF9tYXhfZ2Fpbl90bHYpLAorCVNP Q19TSU5HTEVfUkFOR0VfVExWKCJNSUM2IEFHQyBNYXggQ2FwdHVyZSBWb2x1bWUiLAorCQkJICAg ICBSSzMzMDhfQUxDX1JfRElHX0NPTjA5KDIpLAorCQkJICAgICBSSzMzMDhfQUdDX01BWF9HQUlO X1BHQV9TRlQsCisJCQkgICAgIFJLMzMwOF9BR0NfTUFYX0dBSU5fUEdBX01JTiwKKwkJCSAgICAg UkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfTUFYLAorCQkJICAgICAwLCByazMzMDhfY29kZWNfYWxj X2FnY19ncnBfbWF4X2dhaW5fdGx2KSwKKwlTT0NfU0lOR0xFX1JBTkdFX1RMVigiTUlDNyBBR0Mg TWF4IENhcHR1cmUgVm9sdW1lIiwKKwkJCSAgICAgUkszMzA4X0FMQ19MX0RJR19DT04wOSgzKSwK KwkJCSAgICAgUkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfU0ZULAorCQkJICAgICBSSzMzMDhfQUdD X01BWF9HQUlOX1BHQV9NSU4sCisJCQkgICAgIFJLMzMwOF9BR0NfTUFYX0dBSU5fUEdBX01BWCwK KwkJCSAgICAgMCwgcmszMzA4X2NvZGVjX2FsY19hZ2NfZ3JwX21heF9nYWluX3RsdiksCisJU09D X1NJTkdMRV9SQU5HRV9UTFYoIk1JQzggQUdDIE1heCBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAg IFJLMzMwOF9BTENfUl9ESUdfQ09OMDkoMyksCisJCQkgICAgIFJLMzMwOF9BR0NfTUFYX0dBSU5f UEdBX1NGVCwKKwkJCSAgICAgUkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfTUlOLAorCQkJICAgICBS SzMzMDhfQUdDX01BWF9HQUlOX1BHQV9NQVgsCisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19hbGNf YWdjX2dycF9tYXhfZ2Fpbl90bHYpLAorCisJU09DX1NJTkdMRV9SQU5HRV9UTFYoIk1JQzEgQUdD IE1pbiBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAgIFJLMzMwOF9BTENfTF9ESUdfQ09OMDkoMCks CisJCQkgICAgIFJLMzMwOF9BR0NfTUlOX0dBSU5fUEdBX1NGVCwKKwkJCSAgICAgUkszMzA4X0FH Q19NSU5fR0FJTl9QR0FfTUlOLAorCQkJICAgICBSSzMzMDhfQUdDX01JTl9HQUlOX1BHQV9NQVgs CisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19hbGNfYWdjX2dycF9taW5fZ2Fpbl90bHYpLAorCVNP Q19TSU5HTEVfUkFOR0VfVExWKCJNSUMyIEFHQyBNaW4gQ2FwdHVyZSBWb2x1bWUiLAorCQkJICAg ICBSSzMzMDhfQUxDX1JfRElHX0NPTjA5KDApLAorCQkJICAgICBSSzMzMDhfQUdDX01JTl9HQUlO X1BHQV9TRlQsCisJCQkgICAgIFJLMzMwOF9BR0NfTUlOX0dBSU5fUEdBX01JTiwKKwkJCSAgICAg UkszMzA4X0FHQ19NSU5fR0FJTl9QR0FfTUFYLAorCQkJICAgICAwLCByazMzMDhfY29kZWNfYWxj X2FnY19ncnBfbWluX2dhaW5fdGx2KSwKKwlTT0NfU0lOR0xFX1JBTkdFX1RMVigiTUlDMyBBR0Mg TWluIENhcHR1cmUgVm9sdW1lIiwKKwkJCSAgICAgUkszMzA4X0FMQ19MX0RJR19DT04wOSgxKSwK KwkJCSAgICAgUkszMzA4X0FHQ19NSU5fR0FJTl9QR0FfU0ZULAorCQkJICAgICBSSzMzMDhfQUdD X01JTl9HQUlOX1BHQV9NSU4sCisJCQkgICAgIFJLMzMwOF9BR0NfTUlOX0dBSU5fUEdBX01BWCwK KwkJCSAgICAgMCwgcmszMzA4X2NvZGVjX2FsY19hZ2NfZ3JwX21pbl9nYWluX3RsdiksCisJU09D X1NJTkdMRV9SQU5HRV9UTFYoIk1JQzQgQUdDIE1pbiBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAg IFJLMzMwOF9BTENfUl9ESUdfQ09OMDkoMSksCisJCQkgICAgIFJLMzMwOF9BR0NfTUlOX0dBSU5f UEdBX1NGVCwKKwkJCSAgICAgUkszMzA4X0FHQ19NSU5fR0FJTl9QR0FfTUlOLAorCQkJICAgICBS SzMzMDhfQUdDX01JTl9HQUlOX1BHQV9NQVgsCisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19hbGNf YWdjX2dycF9taW5fZ2Fpbl90bHYpLAorCVNPQ19TSU5HTEVfUkFOR0VfVExWKCJNSUM1IEFHQyBN aW4gQ2FwdHVyZSBWb2x1bWUiLAorCQkJICAgICBSSzMzMDhfQUxDX0xfRElHX0NPTjA5KDIpLAor CQkJICAgICBSSzMzMDhfQUdDX01JTl9HQUlOX1BHQV9TRlQsCisJCQkgICAgIFJLMzMwOF9BR0Nf TUlOX0dBSU5fUEdBX01JTiwKKwkJCSAgICAgUkszMzA4X0FHQ19NSU5fR0FJTl9QR0FfTUFYLAor CQkJICAgICAwLCByazMzMDhfY29kZWNfYWxjX2FnY19ncnBfbWluX2dhaW5fdGx2KSwKKwlTT0Nf U0lOR0xFX1JBTkdFX1RMVigiTUlDNiBBR0MgTWluIENhcHR1cmUgVm9sdW1lIiwKKwkJCSAgICAg UkszMzA4X0FMQ19SX0RJR19DT04wOSgyKSwKKwkJCSAgICAgUkszMzA4X0FHQ19NSU5fR0FJTl9Q R0FfU0ZULAorCQkJICAgICBSSzMzMDhfQUdDX01JTl9HQUlOX1BHQV9NSU4sCisJCQkgICAgIFJL MzMwOF9BR0NfTUlOX0dBSU5fUEdBX01BWCwKKwkJCSAgICAgMCwgcmszMzA4X2NvZGVjX2FsY19h Z2NfZ3JwX21pbl9nYWluX3RsdiksCisJU09DX1NJTkdMRV9SQU5HRV9UTFYoIk1JQzcgQUdDIE1p biBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAgIFJLMzMwOF9BTENfTF9ESUdfQ09OMDkoMyksCisJ CQkgICAgIFJLMzMwOF9BR0NfTUlOX0dBSU5fUEdBX1NGVCwKKwkJCSAgICAgUkszMzA4X0FHQ19N SU5fR0FJTl9QR0FfTUlOLAorCQkJICAgICBSSzMzMDhfQUdDX01JTl9HQUlOX1BHQV9NQVgsCisJ CQkgICAgIDAsIHJrMzMwOF9jb2RlY19hbGNfYWdjX2dycF9taW5fZ2Fpbl90bHYpLAorCVNPQ19T SU5HTEVfUkFOR0VfVExWKCJNSUM4IEFHQyBNaW4gQ2FwdHVyZSBWb2x1bWUiLAorCQkJICAgICBS SzMzMDhfQUxDX1JfRElHX0NPTjA5KDMpLAorCQkJICAgICBSSzMzMDhfQUdDX01JTl9HQUlOX1BH QV9TRlQsCisJCQkgICAgIFJLMzMwOF9BR0NfTUlOX0dBSU5fUEdBX01JTiwKKwkJCSAgICAgUksz MzA4X0FHQ19NSU5fR0FJTl9QR0FfTUFYLAorCQkJICAgICAwLCByazMzMDhfY29kZWNfYWxjX2Fn Y19ncnBfbWluX2dhaW5fdGx2KSwKKworCVNPQ19TSU5HTEVfUkFOR0VfVExWKCJNSUMxIFBHQSBH YWluIENhcHR1cmUgVm9sdW1lIiwKKwkJCSAgICAgUkszMzA4X0FMQ19MX0RJR19DT04wMygwKSwK KwkJCSAgICAgUkszMzA4X0FHQ19QR0FfR0FJTl9TRlQsCisJCQkgICAgIFJLMzMwOF9BR0NfUEdB X0dBSU5fTUlOLAorCQkJICAgICBSSzMzMDhfQUdDX1BHQV9HQUlOX01BWCwKKwkJCSAgICAgMCwg cmszMzA4X2NvZGVjX2FsY19hZ2NfZ3JwX2dhaW5fdGx2KSwKKwlTT0NfU0lOR0xFX1JBTkdFX1RM VigiTUlDMiBQR0EgR2FpbiBDYXB0dXJlIFZvbHVtZSIsCisJCQkgICAgIFJLMzMwOF9BTENfUl9E SUdfQ09OMDMoMCksCisJCQkgICAgIFJLMzMwOF9BR0NfUEdBX0dBSU5fU0ZULAorCQkJICAgICBS SzMzMDhfQUdDX1BHQV9HQUlOX01JTiwKKwkJCSAgICAgUkszMzA4X0FHQ19QR0FfR0FJTl9NQVgs CisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19hbGNfYWdjX2dycF9nYWluX3RsdiksCisJU09DX1NJ TkdMRV9SQU5HRV9UTFYoIk1JQzMgUEdBIEdhaW4gQ2FwdHVyZSBWb2x1bWUiLAorCQkJICAgICBS SzMzMDhfQUxDX0xfRElHX0NPTjAzKDEpLAorCQkJICAgICBSSzMzMDhfQUdDX1BHQV9HQUlOX1NG VCwKKwkJCSAgICAgUkszMzA4X0FHQ19QR0FfR0FJTl9NSU4sCisJCQkgICAgIFJLMzMwOF9BR0Nf UEdBX0dBSU5fTUFYLAorCQkJICAgICAwLCByazMzMDhfY29kZWNfYWxjX2FnY19ncnBfZ2Fpbl90 bHYpLAorCVNPQ19TSU5HTEVfUkFOR0VfVExWKCJNSUM0IFBHQSBHYWluIENhcHR1cmUgVm9sdW1l IiwKKwkJCSAgICAgUkszMzA4X0FMQ19SX0RJR19DT04wMygxKSwKKwkJCSAgICAgUkszMzA4X0FH Q19QR0FfR0FJTl9TRlQsCisJCQkgICAgIFJLMzMwOF9BR0NfUEdBX0dBSU5fTUlOLAorCQkJICAg ICBSSzMzMDhfQUdDX1BHQV9HQUlOX01BWCwKKwkJCSAgICAgMCwgcmszMzA4X2NvZGVjX2FsY19h Z2NfZ3JwX2dhaW5fdGx2KSwKKwlTT0NfU0lOR0xFX1JBTkdFX1RMVigiTUlDNSBQR0EgR2FpbiBD YXB0dXJlIFZvbHVtZSIsCisJCQkgICAgIFJLMzMwOF9BTENfTF9ESUdfQ09OMDMoMiksCisJCQkg ICAgIFJLMzMwOF9BR0NfUEdBX0dBSU5fU0ZULAorCQkJICAgICBSSzMzMDhfQUdDX1BHQV9HQUlO X01JTiwKKwkJCSAgICAgUkszMzA4X0FHQ19QR0FfR0FJTl9NQVgsCisJCQkgICAgIDAsIHJrMzMw OF9jb2RlY19hbGNfYWdjX2dycF9nYWluX3RsdiksCisJU09DX1NJTkdMRV9SQU5HRV9UTFYoIk1J QzYgUEdBIEdhaW4gQ2FwdHVyZSBWb2x1bWUiLAorCQkJICAgICBSSzMzMDhfQUxDX1JfRElHX0NP TjAzKDIpLAorCQkJICAgICBSSzMzMDhfQUdDX1BHQV9HQUlOX1NGVCwKKwkJCSAgICAgUkszMzA4 X0FHQ19QR0FfR0FJTl9NSU4sCisJCQkgICAgIFJLMzMwOF9BR0NfUEdBX0dBSU5fTUFYLAorCQkJ ICAgICAwLCByazMzMDhfY29kZWNfYWxjX2FnY19ncnBfZ2Fpbl90bHYpLAorCVNPQ19TSU5HTEVf UkFOR0VfVExWKCJNSUM3IFBHQSBHYWluIENhcHR1cmUgVm9sdW1lIiwKKwkJCSAgICAgUkszMzA4 X0FMQ19MX0RJR19DT04wMygzKSwKKwkJCSAgICAgUkszMzA4X0FHQ19QR0FfR0FJTl9TRlQsCisJ CQkgICAgIFJLMzMwOF9BR0NfUEdBX0dBSU5fTUlOLAorCQkJICAgICBSSzMzMDhfQUdDX1BHQV9H QUlOX01BWCwKKwkJCSAgICAgMCwgcmszMzA4X2NvZGVjX2FsY19hZ2NfZ3JwX2dhaW5fdGx2KSwK KwlTT0NfU0lOR0xFX1JBTkdFX1RMVigiTUlDOCBQR0EgR2FpbiBDYXB0dXJlIFZvbHVtZSIsCisJ CQkgICAgIFJLMzMwOF9BTENfUl9ESUdfQ09OMDMoMyksCisJCQkgICAgIFJLMzMwOF9BR0NfUEdB X0dBSU5fU0ZULAorCQkJICAgICBSSzMzMDhfQUdDX1BHQV9HQUlOX01JTiwKKwkJCSAgICAgUksz MzA4X0FHQ19QR0FfR0FJTl9NQVgsCisJCQkgICAgIDAsIHJrMzMwOF9jb2RlY19hbGNfYWdjX2dy cF9nYWluX3RsdiksCisKKwlTT0NfRU5VTV9FWFQoIk1JQ0JJQVMxIENhcHR1cmUgU3dpdGNoIiwg cmszMzA4X21pY2JpYXNfZW51bVswXSwKKwkJICAgICByazMzMDhfY29kZWNfbWljYmlhc19nZXQs IHJrMzMwOF9jb2RlY19taWNiaWFzX3B1dCksCisJU09DX0VOVU1fRVhUKCJNSUNCSUFTMiBDYXB0 dXJlIFN3aXRjaCIsIHJrMzMwOF9taWNiaWFzX2VudW1bMV0sCisJCSAgICAgcmszMzA4X2NvZGVj X21pY2JpYXNfZ2V0LCByazMzMDhfY29kZWNfbWljYmlhc19wdXQpLAorCisJU09DX1NJTkdMRV9U TFYoIkxpbmUgT3V0IExlZnQgUGxheWJhY2sgVm9sdW1lIiwKKwkJICAgICAgIFJLMzMwOF9EQUNf QU5BX0NPTjA0LAorCQkgICAgICAgUkszMzA4X0RBQ19MX0xJTkVPVVRfR0FJTl9TRlQsCisJCSAg ICAgICBSSzMzMDhfREFDX0xfTElORU9VVF9HQUlOX01BWCwKKwkJICAgICAgIDAsIHJrMzMwOF9j b2RlY19kYWNfbGluZW91dF9nYWluX3RsdiksCisJU09DX1NJTkdMRV9UTFYoIkxpbmUgT3V0IFJp Z2h0IFBsYXliYWNrIFZvbHVtZSIsCisJCSAgICAgICBSSzMzMDhfREFDX0FOQV9DT04wNCwKKwkJ ICAgICAgIFJLMzMwOF9EQUNfUl9MSU5FT1VUX0dBSU5fU0ZULAorCQkgICAgICAgUkszMzA4X0RB Q19SX0xJTkVPVVRfR0FJTl9NQVgsCisJCSAgICAgICAwLCByazMzMDhfY29kZWNfZGFjX2xpbmVv dXRfZ2Fpbl90bHYpLAorCisJU09DX1NJTkdMRV9FWFRfVExWKCJIZWFkcGhvbmUgTGVmdCBQbGF5 YmFjayBWb2x1bWUiLAorCQkJICAgUkszMzA4X0RBQ19BTkFfQ09OMDUsCisJCQkgICBSSzMzMDhf REFDX0xfSFBPVVRfR0FJTl9TRlQsCisJCQkgICBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9NQVgs CisJCQkgICAwLAorCQkJICAgcmszMzA4X2NvZGVjX2hwb3V0X2xfZ2V0X3RsdiwKKwkJCSAgIHJr MzMwOF9jb2RlY19ocG91dF9sX3B1dF90bHYsCisJCQkgICByazMzMDhfY29kZWNfZGFjX2hwb3V0 X2dhaW5fdGx2KSwKKwlTT0NfU0lOR0xFX0VYVF9UTFYoIkhlYWRwaG9uZSBSaWdodCBQbGF5YmFj ayBWb2x1bWUiLAorCQkJICAgUkszMzA4X0RBQ19BTkFfQ09OMDYsCisJCQkgICBSSzMzMDhfREFD X1JfSFBPVVRfR0FJTl9TRlQsCisJCQkgICBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9NQVgsCisJ CQkgICAwLAorCQkJICAgcmszMzA4X2NvZGVjX2hwb3V0X3JfZ2V0X3RsdiwKKwkJCSAgIHJrMzMw OF9jb2RlY19ocG91dF9yX3B1dF90bHYsCisJCQkgICByazMzMDhfY29kZWNfZGFjX2hwb3V0X2dh aW5fdGx2KSwKKworCVNPQ19TSU5HTEVfUkFOR0VfVExWKCJIZWFkcGhvbmUgTWl4IExlZnQgUGxh eWJhY2sgVm9sdW1lIiwKKwkJCSAgICAgUkszMzA4X0RBQ19BTkFfQ09OMTIsCisJCQkgICAgIFJL MzMwOF9EQUNfTF9IUE1JWF9HQUlOX1NGVCwKKwkJCSAgICAgUkszMzA4X0RBQ19MX0hQTUlYX0dB SU5fTUlOLAorCQkJICAgICBSSzMzMDhfREFDX0xfSFBNSVhfR0FJTl9NQVgsCisJCQkgICAgIDAs IHJrMzMwOF9jb2RlY19kYWNfaHBtaXhfZ2Fpbl90bHYpLAorCVNPQ19TSU5HTEVfUkFOR0VfVExW KCJIZWFkcGhvbmUgTWl4IFJpZ2h0IFBsYXliYWNrIFZvbHVtZSIsCisJCQkgICAgIFJLMzMwOF9E QUNfQU5BX0NPTjEyLAorCQkJICAgICBSSzMzMDhfREFDX1JfSFBNSVhfR0FJTl9TRlQsCisJCQkg ICAgIFJLMzMwOF9EQUNfUl9IUE1JWF9HQUlOX01JTiwKKwkJCSAgICAgUkszMzA4X0RBQ19SX0hQ TUlYX0dBSU5fTUFYLAorCQkJICAgICAwLCByazMzMDhfY29kZWNfZGFjX2hwbWl4X2dhaW5fdGx2 KSwKK307CisKK3N0YXRpYyB2b2lkIHJrMzMwOF9jb2RlY191cGRhdGVfemVyb2Nyb3NzKHN0cnVj dCByazMzMDhfY29kZWNfcHJpdiAqcmszMzA4KQoreworCXVuc2lnbmVkIGludCBhZ2Nfb24sIHZh bHVlOworCWludCBncnA7CisKKwkvKiAxNDogZW5hYmxlIHplcm8tY3Jvc3MgZGV0ZWN0aW9uIGlm IEFHQyBlbmFibGVkLCBlbHNlIEFHQyB3b24ndCB3b3JrICovCisJZm9yIChncnAgPSAwOyBncnAg PCByazMzMDgtPnVzZWRfYWRjX2dycHM7IGdycCsrKSB7CisJCXJlZ21hcF9yZWFkKHJrMzMwOC0+ cmVnbWFwLCBSSzMzMDhfQUxDX0xfRElHX0NPTjA5KGdycCksICZhZ2Nfb24pOworCQl2YWx1ZSA9 IChhZ2Nfb24gJiBSSzMzMDhfQUdDX0ZVTkNfU0VMX01TSykgPyBSSzMzMDhfQURDX0NIMV9aRVJP Q1JPU1NfREVUX0VOIDogMDsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBS SzMzMDhfQURDX0FOQV9DT04wMihncnApLAorCQkJCSAgIFJLMzMwOF9BRENfQ0gxX1pFUk9DUk9T U19ERVRfRU4sIHZhbHVlKTsKKworCQlyZWdtYXBfcmVhZChyazMzMDgtPnJlZ21hcCwgUkszMzA4 X0FMQ19SX0RJR19DT04wOShncnApLCAmYWdjX29uKTsKKwkJdmFsdWUgPSAoYWdjX29uICYgUksz MzA4X0FHQ19GVU5DX1NFTF9NU0spID8gUkszMzA4X0FEQ19DSDJfWkVST0NST1NTX0RFVF9FTiA6 IDA7CisJCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0FEQ19BTkFf Q09OMDIoZ3JwKSwKKwkJCQkgICBSSzMzMDhfQURDX0NIMl9aRVJPQ1JPU1NfREVUX0VOLCB2YWx1 ZSk7CisJfQorfQorCitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19hZ2NfZ2V0KHN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLAorCQkJCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250 cm9sKQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gc25kX3NvY19r Y29udHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOworCXN0cnVjdCByazMzMDhfY29kZWNfcHJpdiAq cmszMzA4ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKwlzdHJ1 Y3Qgc29jX2VudW0gKmUgPSAoc3RydWN0IHNvY19lbnVtICopa2NvbnRyb2wtPnByaXZhdGVfdmFs dWU7CisKKwlzbmRfQlVHX09OKGUtPnJlZyA8IDAgfHwgZS0+cmVnID4gQURDX0xSX0dST1VQX01B WCAtIDEpOworCisJaWYgKGUtPnNoaWZ0X2wpCisJCXVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZh bHVlWzBdID0gcmszMzA4LT5hZ2NfcltlLT5yZWddOworCWVsc2UKKwkJdWNvbnRyb2wtPnZhbHVl LmludGVnZXIudmFsdWVbMF0gPSByazMzMDgtPmFnY19sW2UtPnJlZ107CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCByazMzMDhfY29kZWNfYWdjX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9s ICprY29udHJvbCwKKwkJCQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sK KwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IHNuZF9zb2Nfa2NvbnRyb2xf Y29tcG9uZW50KGtjb250cm9sKTsKKwlzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCA9 IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisKKwlzdHJ1Y3Qgc29j X2VudW0gKmUgPSAoc3RydWN0IHNvY19lbnVtICopa2NvbnRyb2wtPnByaXZhdGVfdmFsdWU7CisJ dW5zaWduZWQgaW50IHZhbHVlID0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF07CisJ aW50IGdycCA9IGUtPnJlZzsKKworCXNuZF9CVUdfT04oZS0+cmVnIDwgMCB8fCBlLT5yZWcgPiBB RENfTFJfR1JPVVBfTUFYIC0gMSk7CisKKwlpZiAodmFsdWUpIHsKKwkJLyogQUxDIEFHQyBPbiAq LworCQlpZiAoZS0+c2hpZnRfbCkgeworCQkJLyogQUxDIEFHQyBSaWdodCBPbiAqLworCQkJcmVn bWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQUxDX1JfRElHX0NPTjA5KGdycCks CisJCQkJCVJLMzMwOF9BR0NfRlVOQ19TRUxfTVNLKTsKKwkJCXJlZ21hcF9zZXRfYml0cyhyazMz MDgtPnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMTEoZ3JwKSwKKwkJCQkJUkszMzA4X0FEQ19B TENSX0NPTl9HQUlOX1BHQVJfRU4pOworCisJCQlyazMzMDgtPmFnY19yW2UtPnJlZ10gPSAxOwor CQl9IGVsc2UgeworCQkJLyogQUxDIEFHQyBMZWZ0IE9uICovCisJCQlyZWdtYXBfc2V0X2JpdHMo cmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BTENfTF9ESUdfQ09OMDkoZ3JwKSwKKwkJCQkJUkszMzA4 X0FHQ19GVU5DX1NFTF9NU0spOworCQkJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBS SzMzMDhfQURDX0FOQV9DT04xMShncnApLAorCQkJCQlSSzMzMDhfQURDX0FMQ0xfQ09OX0dBSU5f UEdBTF9FTik7CisKKwkJCXJrMzMwOC0+YWdjX2xbZS0+cmVnXSA9IDE7CisJCX0KKwl9IGVsc2Ug eworCQkvKiBBTEMgQUdDIE9mZiAqLworCQlpZiAoZS0+c2hpZnRfbCkgeworCQkJLyogQUxDIEFH QyBSaWdodCBPZmYgKi8KKwkJCXJlZ21hcF9jbGVhcl9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMz MDhfQUxDX1JfRElHX0NPTjA5KGdycCksCisJCQkJCSAgUkszMzA4X0FHQ19GVU5DX1NFTF9NU0sp OworCQkJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NP TjExKGdycCksCisJCQkJCSAgUkszMzA4X0FEQ19BTENSX0NPTl9HQUlOX1BHQVJfRU4pOworCisJ CQlyazMzMDgtPmFnY19yW2UtPnJlZ10gPSAwOworCQl9IGVsc2UgeworCQkJLyogQUxDIEFHQyBM ZWZ0IE9mZiAqLworCQkJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9B TENfTF9ESUdfQ09OMDkoZ3JwKSwKKwkJCQkJICBSSzMzMDhfQUdDX0ZVTkNfU0VMX01TSyk7CisJ CQlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMTEo Z3JwKSwKKwkJCQkJICBSSzMzMDhfQURDX0FMQ0xfQ09OX0dBSU5fUEdBTF9FTik7CisKKwkJCXJr MzMwOC0+YWdjX2xbZS0+cmVnXSA9IDA7CisJCX0KKwl9CisKKwlyazMzMDhfY29kZWNfdXBkYXRl X3plcm9jcm9zcyhyazMzMDgpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBEaXNhYmxlIGFs bCBCSUFTIGNpcmN1aXRzLCBidXQgZG8gbm90IGNoYW5nZSB0aGUgZHJpdmVyIHN0YXR1cyAocmsz MzA4LT5taWNiaWFzXyopLgorICogVXNlZnVsIGUuZy4gZm9yIHN1c3BlbmQuCisgKi8KK3N0YXRp YyB2b2lkIHJrMzMwOF9jb2RlY19taWNiaWFzX2Rpc2FibGUoc3RydWN0IHJrMzMwOF9jb2RlY19w cml2ICpyazMzMDgpCit7CisJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMw OF9BRENfQU5BX0NPTjA3KDEpLCBSSzMzMDhfQURDX01JQ19CSUFTX0JVRl9FTik7CisJcmVnbWFw X2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NPTjA3KDIpLCBSSzMz MDhfQURDX01JQ19CSUFTX0JVRl9FTik7CisJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdt YXAsIFJLMzMwOF9BRENfQU5BX0NPTjA4KDApLCBSSzMzMDhfQURDX01JQ0JJQVNfQ1VSUkVOVF9F Tik7Cit9CisKKy8qCisgKiBFbmFibGUgb3IgZGlzYWJsZSBNSUMgQklBUyBIVyBjb21wb25lbnRz IGJhc2VkIG9uIHRoZSBzdGF0dXMgKHJrMzMwOC0+bWljYmlhc18qKS4KKyAqLworc3RhdGljIHZv aWQgcmszMzA4X2NvZGVjX21pY2JpYXNfYXBwbHkoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpy azMzMDgpCit7CisJYm9vbCBhbnlfbWljYmlhc19lbmFibGVkID0gKHJrMzMwOC0+bWljYmlhc19l bmFibGVkWzBdIHx8IHJrMzMwOC0+bWljYmlhc19lbmFibGVkWzFdKTsKKwl1bnNpZ25lZCBpbnQg aTsKKworCS8qCisJICogTUlDQklBUyBwcm9ncmFtbWluZyBzZXF1ZW5jZSBmcm9tIFRSTToKKwkg KgorCSAqIC0gRW5hYmxlIE1JQ0JJQVM6CisJICogICAxLiBDb25maWd1cmUgQUNPREVDX0FEQ19B TkFfQ09ON1syOjBdIChBVkREIHZvbHRhZ2UgbXVsdGlwbGllcikKKwkgKiAgIDIuIFdhaXQgdW50 aWwgdGhlIFZDTUggc3RhYmxlCisJICogICAzLiBDb25maWd1cmUgQUNPREVDX0FEQ19BTkFfQ09O OFs0XSB0byAxIChlbmFibGUgY3VycmVudCBzb3VyY2UpCisJICogICA0LiBDb25maWd1cmUgdGhl IChBRENfQU5BX0NPTjcrezB4NDB8MHg4MH0pWzNdIChlbmFibGUgTUlDQklBU3sxfDJ9KQorCSAq CisJICogLSBEaXNhYmxlIE1JQ0JJQVM6CisJICogICAxLiBDbGVhciAoQURDX0FOQV9DT043K3sw eDQwfDB4ODB9KVszXSAoZGlzYWJsZSBNSUNCSUFTezF8Mn0pCisJICogICAyLiBDbGVhciBBQ09E RUNfQURDX0FOQV9DT044WzRdIChkaXNlbmFibGUgY3VycmVudCBzb3VyY2UpCisJICovCisKKwlp ZiAoYW55X21pY2JpYXNfZW5hYmxlZCkgeworCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5y ZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NPTjA3KDApLAorCQkJCSAgIFJLMzMwOF9BRENfTEVWRUxf UkFOR0VfTUlDQklBU19NU0ssCisJCQkJICAgcmszMzA4LT5taWNiaWFzX2F2ZGRfbXVsdCk7CisK KwkJLyogV2FpdCB1bnRpbCB0aGUgVkNNSCBrZWVwIHN0YWJsZSAqLworCQltc2xlZXAoMjApOwkv KiBlc3RpbWF0ZWQgdmFsdWUgKi8KKworCQlyZWdtYXBfc2V0X2JpdHMocmszMzA4LT5yZWdtYXAs IFJLMzMwOF9BRENfQU5BX0NPTjA4KDApLAorCQkJCVJLMzMwOF9BRENfTUlDQklBU19DVVJSRU5U X0VOKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgUkszMzA4X05fTUlDQklBU19NQVg7IGkrKykK KwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04w NyhpICsgMSksCisJCQkJICAgUkszMzA4X0FEQ19NSUNfQklBU19CVUZfRU4sCisJCQkJICAgcmsz MzA4LT5taWNiaWFzX2VuYWJsZWRbaV0gPyBSSzMzMDhfQURDX01JQ19CSUFTX0JVRl9FTiA6IDAp OworCisJaWYgKCFhbnlfbWljYmlhc19lbmFibGVkKQorCQlyZWdtYXBfY2xlYXJfYml0cyhyazMz MDgtPnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMDgoMCksCisJCQkJICBSSzMzMDhfQURDX01J Q0JJQVNfQ1VSUkVOVF9FTik7Cit9CisKK3N0YXRpYyBpbnQgcmszMzA4X2NvZGVjX21pY2JpYXNf Z2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJCSAgICBzdHJ1Y3Qgc25kX2N0 bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCA9IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsKKwlzdHJ1Y3Qg cmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRh KGNvbXBvbmVudCk7CisJc3RydWN0IHNvY19lbnVtICpwcml2ID0gKHN0cnVjdCBzb2NfZW51bSAq KWtjb250cm9sLT5wcml2YXRlX3ZhbHVlOworCisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFs dWVbMF0gPSByazMzMDgtPm1pY2JpYXNfZW5hYmxlZFtwcml2LT5yZWddOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgcmszMzA4X2NvZGVjX21pY2JpYXNfcHV0KHN0cnVjdCBzbmRfa2Nv bnRyb2wgKmtjb250cm9sLAorCQkJCSAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29u dHJvbCkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IHNuZF9zb2Nf a2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsKKwlzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYg KnJrMzMwOCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisJc3Ry dWN0IHNvY19lbnVtICpwcml2ID0gKHN0cnVjdCBzb2NfZW51bSAqKWtjb250cm9sLT5wcml2YXRl X3ZhbHVlOworCXVuc2lnbmVkIGludCBvbiA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVl WzBdOworCisJcmszMzA4LT5taWNiaWFzX2VuYWJsZWRbcHJpdi0+cmVnXSA9IG9uOworCisJcmsz MzA4X2NvZGVjX21pY2JpYXNfYXBwbHkocmszMzA4KTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IHJrMzMwOF9jb2RlY19ocG91dF9sX2dldF90bHYoc3RydWN0IHNuZF9rY29udHJvbCAq a2NvbnRyb2wsCisJCQkJCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQorewor CXJldHVybiBzbmRfc29jX2dldF92b2xzd19yYW5nZShrY29udHJvbCwgdWNvbnRyb2wpOworfQor CitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19ocG91dF9sX3B1dF90bHYoc3RydWN0IHNuZF9rY29u dHJvbCAqa2NvbnRyb2wsCisJCQkJCXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9s KQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gc25kX3NvY19rY29u dHJvbF9jb21wb25lbnQoa2NvbnRyb2wpOworCXN0cnVjdCByazMzMDhfY29kZWNfcHJpdiAqcmsz MzA4ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKwl1bnNpZ25l ZCBpbnQgZGdhaW4gPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXTsKKworCXJrMzMw OC0+aHBvdXRfbF9kZ2FpbiA9IGRnYWluOworCisJcmV0dXJuIHNuZF9zb2NfcHV0X3ZvbHN3X3Jh bmdlKGtjb250cm9sLCB1Y29udHJvbCk7Cit9CisKK3N0YXRpYyBpbnQgcmszMzA4X2NvZGVjX2hw b3V0X3JfZ2V0X3RsdihzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkJc3RydWN0 IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJcmV0dXJuIHNuZF9zb2NfZ2V0X3Zv bHN3X3JhbmdlKGtjb250cm9sLCB1Y29udHJvbCk7Cit9CisKK3N0YXRpYyBpbnQgcmszMzA4X2Nv ZGVjX2hwb3V0X3JfcHV0X3RsdihzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKwkJCQkJ c3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7CisJc3RydWN0IHNuZF9zb2Nf Y29tcG9uZW50ICpjb21wb25lbnQgPSBzbmRfc29jX2tjb250cm9sX2NvbXBvbmVudChrY29udHJv bCk7CisJc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDggPSBzbmRfc29jX2NvbXBvbmVu dF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCXVuc2lnbmVkIGludCBkZ2FpbiA9IHVjb250cm9s LT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdOworCisJcmszMzA4LT5ocG91dF9yX2RnYWluID0gZGdh aW47CisKKwlyZXR1cm4gc25kX3NvY19wdXRfdm9sc3dfcmFuZ2Uoa2NvbnRyb2wsIHVjb250cm9s KTsKK30KKworc3RhdGljIGludCByazMzMDhfY29kZWNfcmVzZXQoc3RydWN0IHNuZF9zb2NfY29t cG9uZW50ICpjb21wb25lbnQpCit7CisJc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgg PSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCisJcmVzZXRfY29u dHJvbF9hc3NlcnQocmszMzA4LT5yZXNldCk7CisJdXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7 ICAgICAvKiBlc3RpbWF0ZWQgdmFsdWUgKi8KKwlyZXNldF9jb250cm9sX2RlYXNzZXJ0KHJrMzMw OC0+cmVzZXQpOworCisJcmVnbWFwX3dyaXRlKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfR0xCX0NP TiwgMHgwMCk7CisJdXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7ICAgICAvKiBlc3RpbWF0ZWQg dmFsdWUgKi8KKwlyZWdtYXBfd3JpdGUocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9HTEJfQ09OLAor CQkgICAgIFJLMzMwOF9TWVNfV09SSyB8CisJCSAgICAgUkszMzA4X0RBQ19ESUdfV09SSyB8CisJ CSAgICAgUkszMzA4X0FEQ19ESUdfV09SSyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCByazMzMDhfY29kZWNfYWRjX2RpZ19yZXNldChzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJr MzMwOCkKK3sKKwlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0dMQl9D T04sIFJLMzMwOF9BRENfRElHX1dPUkspOworCXVzbGVlcF9yYW5nZSg1MCwgMTAwKTsKKwlyZWdt YXBfc2V0X2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9HTEJfQ09OLCBSSzMzMDhfQURDX0RJ R19XT1JLKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19kYWNf ZGlnX3Jlc2V0KHN0cnVjdCByazMzMDhfY29kZWNfcHJpdiAqcmszMzA4KQoreworCXJlZ21hcF9j bGVhcl9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfR0xCX0NPTiwgUkszMzA4X0RBQ19ESUdf V09SSyk7CisJdXNsZWVwX3JhbmdlKDEwMDAwLCAxMTAwMCk7CisJcmVnbWFwX3NldF9iaXRzKHJr MzMwOC0+cmVnbWFwLCBSSzMzMDhfR0xCX0NPTiwgUkszMzA4X0RBQ19ESUdfV09SSyk7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCByazMzMDhfc2V0X2JpYXNfbGV2ZWwoc3RydWN0IHNu ZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsCisJCQkJIGVudW0gc25kX3NvY19iaWFzX2xldmVs IGxldmVsKQoreworCXN0cnVjdCByazMzMDhfY29kZWNfcHJpdiAqcmszMzA4ID0gc25kX3NvY19j b21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKworCXN3aXRjaCAobGV2ZWwpIHsKKwlj YXNlIFNORF9TT0NfQklBU19PTjoKKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0JJQVNfUFJFUEFS RToKKwkJcmszMzA4X2NvZGVjX21pY2JpYXNfYXBwbHkocmszMzA4KTsKKwkJYnJlYWs7CisJY2Fz ZSBTTkRfU09DX0JJQVNfU1RBTkRCWToKKwkJcmszMzA4X2NvZGVjX21pY2JpYXNfZGlzYWJsZShy azMzMDgpOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfQklBU19PRkY6CisJCWJyZWFrOworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJrMzMwOF9zZXRfZGFpX2ZtdChzdHJ1Y3Qg c25kX3NvY19kYWkgKmNvZGVjX2RhaSwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBmbXQpCit7CisJ c3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPSBjb2RlY19kYWktPmNvbXBvbmVu dDsKKwlzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCA9IHNuZF9zb2NfY29tcG9uZW50 X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisJY29uc3QgdW5zaWduZWQgaW50IGludl9iaXRzID0g Zm10ICYgU05EX1NPQ19EQUlGTVRfSU5WX01BU0s7CisJY29uc3QgYm9vbCBpbnZfYml0Y2xrID0K KwkJKGludl9iaXRzICYgU05EX1NPQ19EQUlGTVRfSUJfSUYpIHx8CisJCShpbnZfYml0cyAmIFNO RF9TT0NfREFJRk1UX0lCX05GKTsKKwljb25zdCBib29sIGludl9mcm1jbGsgPQorCQkoaW52X2Jp dHMgJiBTTkRfU09DX0RBSUZNVF9JQl9JRikgfHwKKwkJKGludl9iaXRzICYgU05EX1NPQ19EQUlG TVRfTkJfSUYpOworCisJdW5zaWduZWQgaW50IGFkY19haWYxID0gMCwgYWRjX2FpZjIgPSAwLCBk YWNfYWlmMSA9IDAsIGRhY19haWYyID0gMDsKKwlpbnQgZ3JwLCBpc19tYXN0ZXI7CisKKwlzd2l0 Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX01BU1RFUl9NQVNLKSB7CisJY2FzZSBTTkRfU09DX0RB SUZNVF9DQkNfQ0ZDOgorCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0NCUF9DRlA6CisJ CWFkY19haWYyIHw9IFJLMzMwOF9BRENfSU9fTU9ERV9NQVNURVI7CisJCWFkY19haWYyIHw9IFJL MzMwOF9BRENfTU9ERV9NQVNURVI7CisJCWRhY19haWYyIHw9IFJLMzMwOF9EQUNfSU9fTU9ERV9N QVNURVI7CisJCWRhY19haWYyIHw9IFJLMzMwOF9EQUNfTU9ERV9NQVNURVI7CisJCWlzX21hc3Rl ciA9IDE7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXN3 aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01BU0spIHsKKwljYXNlIFNORF9TT0Nf REFJRk1UX0RTUF9BOgorCQlhZGNfYWlmMSB8PSBSSzMzMDhfQURDX0kyU19NT0RFX1BDTTsKKwkJ ZGFjX2FpZjEgfD0gUkszMzA4X0RBQ19JMlNfTU9ERV9QQ007CisJCWJyZWFrOworCWNhc2UgU05E X1NPQ19EQUlGTVRfSTJTOgorCQlhZGNfYWlmMSB8PSBSSzMzMDhfQURDX0kyU19NT0RFX0kyUzsK KwkJZGFjX2FpZjEgfD0gUkszMzA4X0RBQ19JMlNfTU9ERV9JMlM7CisJCWJyZWFrOworCWNhc2Ug U05EX1NPQ19EQUlGTVRfUklHSFRfSjoKKwkJYWRjX2FpZjEgfD0gUkszMzA4X0FEQ19JMlNfTU9E RV9SSjsKKwkJZGFjX2FpZjEgfD0gUkszMzA4X0RBQ19JMlNfTU9ERV9SSjsKKwkJYnJlYWs7CisJ Y2FzZSBTTkRfU09DX0RBSUZNVF9MRUZUX0o6CisJCWFkY19haWYxIHw9IFJLMzMwOF9BRENfSTJT X01PREVfTEo7CisJCWRhY19haWYxIHw9IFJLMzMwOF9EQUNfSTJTX01PREVfTEo7CisJCWJyZWFr OworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChpbnZfYml0Y2xrKSB7 CisJCWFkY19haWYyIHw9IFJLMzMwOF9BRENfSTJTX0JJVF9DTEtfUE9MX1JFVkVSU0FMOworCQlk YWNfYWlmMiB8PSBSSzMzMDhfREFDX0kyU19CSVRfQ0xLX1BPTF9SRVZFUlNBTDsKKwl9CisKKwlp ZiAoaW52X2ZybWNsaykgeworCQlhZGNfYWlmMSB8PSBSSzMzMDhfQURDX0kyU19MUkNfUE9MX1JF VkVSU0FMOworCQlkYWNfYWlmMSB8PSBSSzMzMDhfREFDX0kyU19MUkNfUE9MX1JFVkVSU0FMOwor CX0KKworCS8qCisJICogSG9sZCBBREMgRGlnaXRhbCByZWdpc3RlcnMgc3RhcnQgYXQgbWFzdGVy IG1vZGUKKwkgKgorCSAqIFRoZXJlIGFyZSA4IEFEQ3MgYW5kIHVzZSB0aGUgc2FtZSBTQ0xLIGFu ZCBMUkNLIGludGVybmFsIGZvciBtYXN0ZXIKKwkgKiBtb2RlLCBXZSBuZWVkIHRvIG1ha2Ugc3Vy ZSB0aGF0IHRoZXkgYXJlIGluIGVmZmVjdCBhdCB0aGUgc2FtZSB0aW1lLAorCSAqIG90aGVyd2lz ZSB0aGV5IHdpbGwgY2F1c2UgdGhlIGFibm9ybWFsIGNsb2Nrcy4KKwkgKi8KKwlpZiAoaXNfbWFz dGVyKQorCQlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0dMQl9DT04s IFJLMzMwOF9BRENfRElHX1dPUkspOworCisJZm9yIChncnAgPSAwOyBncnAgPCBBRENfTFJfR1JP VVBfTUFYOyBncnArKykgeworCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJL MzMwOF9BRENfRElHX0NPTjAxKGdycCksCisJCQkJICAgUkszMzA4X0FEQ19JMlNfTFJDX1BPTF9S RVZFUlNBTCB8CisJCQkJICAgUkszMzA4X0FEQ19JMlNfTU9ERV9NU0ssCisJCQkJICAgYWRjX2Fp ZjEpOworCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfRElH X0NPTjAyKGdycCksCisJCQkJICAgUkszMzA4X0FEQ19JT19NT0RFX01BU1RFUiB8CisJCQkJICAg UkszMzA4X0FEQ19NT0RFX01BU1RFUiB8CisJCQkJICAgUkszMzA4X0FEQ19JMlNfQklUX0NMS19Q T0xfUkVWRVJTQUwsCisJCQkJICAgYWRjX2FpZjIpOworCX0KKworCS8qIEhvbGQgQURDIERpZ2l0 YWwgcmVnaXN0ZXJzIGVuZCBhdCBtYXN0ZXIgbW9kZSAqLworCWlmIChpc19tYXN0ZXIpCisJCXJl Z21hcF9zZXRfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0dMQl9DT04sIFJLMzMwOF9BRENf RElHX1dPUkspOworCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhf REFDX0RJR19DT04wMSwKKwkJCSAgIFJLMzMwOF9EQUNfSTJTX0xSQ19QT0xfUkVWRVJTQUwgfAor CQkJICAgUkszMzA4X0RBQ19JMlNfTU9ERV9NU0ssCisJCQkgICBkYWNfYWlmMSk7CisJcmVnbWFw X3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0RJR19DT04wMiwKKwkJCSAg IFJLMzMwOF9EQUNfSU9fTU9ERV9NQVNURVIgfAorCQkJICAgUkszMzA4X0RBQ19NT0RFX01BU1RF UiB8CisJCQkgICBSSzMzMDhfREFDX0kyU19CSVRfQ0xLX1BPTF9SRVZFUlNBTCwKKwkJCSAgIGRh Y19haWYyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19kYWNf ZGlnX2NvbmZpZyhzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCwKKwkJCQkgICAgICAg c3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMpCit7CisJdW5zaWduZWQgaW50IGRhY19h aWYxID0gMDsKKworCS8qIENsZWFyIHRoZSBzdGF0dXMgb2YgREFDIERJRyBEaWdpdGFsIHJlaWdp c3RlcnMgKi8KKwlyazMzMDhfY29kZWNfZGFjX2RpZ19yZXNldChyazMzMDgpOworCisJc3dpdGNo IChwYXJhbXNfZm9ybWF0KHBhcmFtcykpIHsKKwljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzE2X0xF OgorCQlkYWNfYWlmMSB8PSBSSzMzMDhfREFDX0kyU19WQUxJRF9MRU5fMTZCSVRTOworCQlicmVh azsKKwljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzIwXzNMRToKKwkJZGFjX2FpZjEgfD0gUkszMzA4 X0RBQ19JMlNfVkFMSURfTEVOXzIwQklUUzsKKwkJYnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fRk9S TUFUX1MyNF9MRToKKwkJZGFjX2FpZjEgfD0gUkszMzA4X0RBQ19JMlNfVkFMSURfTEVOXzI0QklU UzsKKwkJYnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1MzMl9MRToKKwkJZGFjX2FpZjEg fD0gUkszMzA4X0RBQ19JMlNfVkFMSURfTEVOXzMyQklUUzsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVn bWFwLCBSSzMzMDhfREFDX0RJR19DT04wMSwKKwkJCSAgIFJLMzMwOF9EQUNfSTJTX1ZBTElEX0xF Tl9NU0ssIGRhY19haWYxKTsKKwlyZWdtYXBfc2V0X2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMw OF9EQUNfRElHX0NPTjAyLCBSSzMzMDhfREFDX0kyU19XT1JLKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19hZGNfZGlnX2NvbmZpZyhzdHJ1Y3QgcmszMzA4X2Nv ZGVjX3ByaXYgKnJrMzMwOCwKKwkJCQkgICAgICAgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpw YXJhbXMpCit7CisJdW5zaWduZWQgaW50IGFkY19haWYxID0gMDsKKwlpbnQgZ3JwOworCisJLyog Q2xlYXIgdGhlIHN0YXR1cyBvZiBBREMgRElHIERpZ2l0YWwgcmVpZ2lzdGVycyAqLworCXJrMzMw OF9jb2RlY19hZGNfZGlnX3Jlc2V0KHJrMzMwOCk7CisKKwlzd2l0Y2ggKHBhcmFtc19mb3JtYXQo cGFyYW1zKSkgeworCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMTZfTEU6CisJCWFkY19haWYxIHw9 IFJLMzMwOF9BRENfSTJTX1ZBTElEX0xFTl8xNkJJVFM7CisJCWJyZWFrOworCWNhc2UgU05EUlZf UENNX0ZPUk1BVF9TMjBfM0xFOgorCQlhZGNfYWlmMSB8PSBSSzMzMDhfQURDX0kyU19WQUxJRF9M RU5fMjBCSVRTOworCQlicmVhazsKKwljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzI0X0xFOgorCQlh ZGNfYWlmMSB8PSBSSzMzMDhfQURDX0kyU19WQUxJRF9MRU5fMjRCSVRTOworCQlicmVhazsKKwlj YXNlIFNORFJWX1BDTV9GT1JNQVRfUzMyX0xFOgorCQlhZGNfYWlmMSB8PSBSSzMzMDhfQURDX0ky U19WQUxJRF9MRU5fMzJCSVRTOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlzd2l0Y2ggKHBhcmFtc19jaGFubmVscyhwYXJhbXMpKSB7CisJY2FzZSAxOgor CQlhZGNfYWlmMSB8PSBSSzMzMDhfQURDX0kyU19NT05POworCQlicmVhazsKKwljYXNlIDI6CisJ Y2FzZSA0OgorCWNhc2UgNjoKKwljYXNlIDg6CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVy biAtRUlOVkFMOworCX0KKworCWZvciAoZ3JwID0gMDsgZ3JwIDwgcmszMzA4LT51c2VkX2FkY19n cnBzOyBncnArKykgeworCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMw OF9BRENfRElHX0NPTjAxKGdycCksCisJCQkJICAgUkszMzA4X0FEQ19JMlNfVkFMSURfTEVOX01T SyB8IFJLMzMwOF9BRENfSTJTX01PTk8sIGFkY19haWYxKTsKKwkJcmVnbWFwX3NldF9iaXRzKHJr MzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0RJR19DT04wMihncnApLCBSSzMzMDhfQURDX0kyU19X T1JLKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByazMzMDhfY29kZWNfYWdj X2RpZ19jb25maWcoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgsCisJCQkJICAgICAg IHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zKQoreworCWludCBncnA7CisKKwl1bnNp Z25lZCBpbnQgdmFsdWUgPSBmaW5kX2Nsb3Nlc3RfZGVzY2VuZGluZyhwYXJhbXNfcmF0ZShwYXJh bXMpLAorCQkJCQkgIGFnY19hcHByb3hfcmF0ZSwgQVJSQVlfU0laRShhZ2NfYXBwcm94X3JhdGUp KTsKKworCWZvciAoZ3JwID0gMDsgZ3JwIDwgcmszMzA4LT51c2VkX2FkY19ncnBzOyBncnArKykg eworCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BTENfTF9ESUdf Q09OMDQoZ3JwKSwKKwkJCQkgICBSSzMzMDhfQUdDX0FQUFJPWF9SQVRFX01TSywgdmFsdWUpOwor CQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BTENfUl9ESUdfQ09O MDQoZ3JwKSwKKwkJCQkgICBSSzMzMDhfQUdDX0FQUFJPWF9SQVRFX01TSywgdmFsdWUpOworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY191cGRhdGVfYWRjX2dy cHMoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgsCisJCQkJCXN0cnVjdCBzbmRfcGNt X2h3X3BhcmFtcyAqcGFyYW1zKQoreworCXN3aXRjaCAocGFyYW1zX2NoYW5uZWxzKHBhcmFtcykp IHsKKwljYXNlIDE6CisJCXJrMzMwOC0+dXNlZF9hZGNfZ3JwcyA9IDE7CisJCWJyZWFrOworCWNh c2UgMjoKKwljYXNlIDQ6CisJY2FzZSA2OgorCWNhc2UgODoKKwkJcmszMzA4LT51c2VkX2FkY19n cnBzID0gcGFyYW1zX2NoYW5uZWxzKHBhcmFtcykgLyAyOworCQlicmVhazsKKwlkZWZhdWx0Ogor CQlkZXZfZXJyKHJrMzMwOC0+ZGV2LCAiSW52YWxpZCBjaGFubmVsczogJWRcbiIsCisJCQlwYXJh bXNfY2hhbm5lbHMocGFyYW1zKSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IHJrMzMwOF9tdXRlX3N0cmVhbShzdHJ1Y3Qgc25kX3NvY19kYWkg KmRhaSwgaW50IG11dGUsIGludCBzdHJlYW0pCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50 ICpjb21wb25lbnQgPSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYg KnJrMzMwOCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisKKwlp ZiAoc3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0spIHsKKwkJaW50IGRnYWluOwor CisJCWlmIChtdXRlKSB7CisJCQlmb3IgKGRnYWluID0gMHgyOyBkZ2FpbiA8PSAweDc7IGRnYWlu KyspIHsKKwkJCQkvKgorCQkJCSAqIEtlZXAgdGhlIG1heCAtPiBtaW4gZGlnaXRhbCBDSUMgaW50 ZXJwb2xhdGlvbgorCQkJCSAqIGZpbHRlciBnYWluIHN0ZXAgYnkgc3RlcC4KKwkJCQkgKgorCQkJ CSAqIGxvdWQ6IDB4Mjsgd2hpc3BlcjogMHg3CisJCQkJICovCisJCQkJcmVnbWFwX3VwZGF0ZV9i aXRzKHJrMzMwOC0+cmVnbWFwLAorCQkJCQkJICAgUkszMzA4X0RBQ19ESUdfQ09OMDQsCisJCQkJ CQkgICBSSzMzMDhfREFDX0NJQ19JRl9HQUlOX01TSywKKwkJCQkJCSAgIGRnYWluKTsKKwkJCQl1 c2xlZXBfcmFuZ2UoMjAwLCAzMDApOyAgLyogZXN0aW1hdGVkIHZhbHVlICovCisJCQl9CisJCX0g ZWxzZSB7CisJCQlmb3IgKGRnYWluID0gMHg3OyBkZ2FpbiA+PSAweDI7IGRnYWluLS0pIHsKKwkJ CQkvKgorCQkJCSAqIEtlZXAgdGhlIG1pbiAtPiBtYXggZGlnaXRhbCBDSUMgaW50ZXJwb2xhdGlv bgorCQkJCSAqIGZpbHRlciBnYWluIHN0ZXAgYnkgc3RlcAorCQkJCSAqCisJCQkJICogbG91ZDog MHgyOyB3aGlzcGVyOiAweDcKKwkJCQkgKi8KKwkJCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4 LT5yZWdtYXAsCisJCQkJCQkgICBSSzMzMDhfREFDX0RJR19DT04wNCwKKwkJCQkJCSAgIFJLMzMw OF9EQUNfQ0lDX0lGX0dBSU5fTVNLLAorCQkJCQkJICAgZGdhaW4pOworCQkJCXVzbGVlcF9yYW5n ZSgyMDAsIDMwMCk7ICAvKiBlc3RpbWF0ZWQgdmFsdWUgKi8KKwkJCX0KKwkJfQorCX0KKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19kaWdpdGFsX2ZhZGVpbihzdHJ1 Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCkKK3sKKwl1bnNpZ25lZCBpbnQgZGdhaW4sIGRn YWluX3JlZjsKKworCWlmIChyazMzMDgtPmhwb3V0X2xfZGdhaW4gIT0gcmszMzA4LT5ocG91dF9y X2RnYWluKSB7CisJCXByX3dhcm4oIkhQT1VUIGxfZGdhaW46IDB4JXggIT0gcl9kZ2FpbjogMHgl eFxuIiwKKwkJCXJrMzMwOC0+aHBvdXRfbF9kZ2FpbiwgcmszMzA4LT5ocG91dF9yX2RnYWluKTsK KwkJZGdhaW5fcmVmID0gbWluKHJrMzMwOC0+aHBvdXRfbF9kZ2FpbiwgcmszMzA4LT5ocG91dF9y X2RnYWluKTsKKwl9IGVsc2UgeworCQlkZ2Fpbl9yZWYgPSByazMzMDgtPmhwb3V0X2xfZGdhaW47 CisJfQorCisJLyoKKwkgKiBXZSdkIGJldHRlciBjaGFuZ2UgdGhlIGdhaW4gb2YgdGhlIGxlZnQg YW5kIHJpZ2h0IGNoYW5uZWxzCisJICogYXQgdGhlIHNhbWUgdGltZSB0byBhdm9pZCBkaWZmZXJl bnQgbGlzdGVuaW5nCisJICovCisJZm9yIChkZ2FpbiA9IFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlO X05EQl8zOTsKKwkgICAgIGRnYWluIDw9IGRnYWluX3JlZjsgZGdhaW4rKykgeworCQkvKiBTdGVw IDAyIGRlY3JlYXNlIGRnYWlucyBmb3IgZGUtcG9wICovCisJCXJlZ21hcF91cGRhdGVfYml0cyhy azMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDUsCisJCQkJICAgUkszMzA4X0RBQ19M X0hQT1VUX0dBSU5fTVNLLAorCQkJCSAgIGRnYWluKTsKKworCQkvKiBTdGVwIDAyIGRlY3JlYXNl IGRnYWlucyBmb3IgZGUtcG9wICovCisJCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21h cCwgUkszMzA4X0RBQ19BTkFfQ09OMDYsCisJCQkJICAgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5f TVNLLAorCQkJCSAgIGRnYWluKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBy azMzMDhfY29kZWNfZGlnaXRhbF9mYWRlb3V0KHN0cnVjdCByazMzMDhfY29kZWNfcHJpdiAqcmsz MzA4KQoreworCXVuc2lnbmVkIGludCBsX2RnYWluLCByX2RnYWluOworCisJLyoKKwkgKiBOb3Rl LiBJbiB0aGUgc3RlcDIsIGFkanVzdGluZyB0aGUgcmVnaXN0ZXIgc3RlcCBieSBzdGVwIHRvCisJ ICogdGhlIGFwcHJvcHJpYXRlIHZhbHVlIGFuZCB0YWtpbmcgMjBtcyBhcyB0aW1lIHN0ZXAKKwkg Ki8KKwlyZWdtYXBfcmVhZChyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDUsICZs X2RnYWluKTsKKwlsX2RnYWluICY9IFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX01TSzsKKworCXJl Z21hcF9yZWFkKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04wNiwgJnJfZGdhaW4p OworCXJfZGdhaW4gJj0gUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTVNLOworCisJaWYgKGxfZGdh aW4gIT0gcl9kZ2FpbikgeworCQlwcl93YXJuKCJIUE9VVCBsX2RnYWluOiAweCV4ICE9IHJfZGdh aW46IDB4JXhcbiIsCisJCQlsX2RnYWluLCByX2RnYWluKTsKKwkJbF9kZ2FpbiA9IG1pbihsX2Rn YWluLCByX2RnYWluKTsKKwl9CisKKwkvKgorCSAqIFdlJ2QgYmV0dGVyIGNoYW5nZSB0aGUgZ2Fp biBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgY2hhbm5lbHMKKwkgKiBhdCB0aGUgc2FtZSB0aW1lIHRv IGF2b2lkIGRpZmZlcmVudCBsaXN0ZW5pbmcKKwkgKi8KKwl3aGlsZSAobF9kZ2FpbiA+PSBSSzMz MDhfREFDX0xfSFBPVVRfR0FJTl9OREJfMzkpIHsKKwkJLyogU3RlcCAwMiBkZWNyZWFzZSBkZ2Fp bnMgZm9yIGRlLXBvcCAqLworCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJL MzMwOF9EQUNfQU5BX0NPTjA1LAorCQkJCSAgIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX01TSywK KwkJCQkgICBsX2RnYWluKTsKKworCQkvKiBTdGVwIDAyIGRlY3JlYXNlIGRnYWlucyBmb3IgZGUt cG9wICovCisJCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19B TkFfQ09OMDYsCisJCQkJICAgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTVNLLAorCQkJCSAgIGxf ZGdhaW4pOworCisJCXVzbGVlcF9yYW5nZSgyMDAsIDMwMCk7ICAvKiBlc3RpbWF0ZWQgdmFsdWUg Ki8KKworCQlpZiAobF9kZ2FpbiA9PSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9OREJfMzkpCisJ CQlicmVhazsKKworCQlsX2RnYWluLS07CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgcmszMzA4X2NvZGVjX2RhY19lbmFibGUoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMz MDgpCit7CisJLyoKKwkgKiBOb3RlMS4gSWYgdGhlIEFDT0RFQ19EQUNfQU5BX0NPTjEyWzZdIG9y IEFDT0RFQ19EQUNfQU5BX0NPTjEyWzJdCisJICogaXMgc2V0IHRvIDB4MSwgaWdub3JpbmcgdGhl IHN0ZXA5fjEyLgorCSAqLworCisJLyoKKwkgKiBOb3RlMi4gSWYgdGhlIEFDT0RFQ18gREFDX0FO QV9DT04xMls3XSBvciBBQ09ERUNfREFDX0FOQV9DT04xMlszXQorCSAqIGlzIHNldCB0byAweDEs IHRoZSBBREMwIG9yIEFEQzEgc2hvdWxkIGJlIGVuYWJsZWQgZmlyc3RseSwgYW5kCisJICogcGxl YXNlIHJlZmVyIHRvIEVuYWJsZSBBREMgQ29uZmlndXJhdGlvbiBTdGFuZGFyZCBVc2FnZSBGbG93 KGV4cGVjdAorCSAqIHN0ZXA3fnN0ZXA5LHN0ZXAxNCkuCisJICovCisKKwkvKgorCSAqIE5vdGUz LiBJZiBubyBvcGVuaW5nIHRoZSBsaW5lIG91dCwgaWdub3JpbmcgdGhlIHN0ZXA2LCBzdGVwMTcg YW5kCisJICogc3RlcDE5LgorCSAqLworCisJLyoKKwkgKiBOb3RlNC4gSWYgbm8gb3BlbmluZyB0 aGUgaGVhZHBob25lIG91dCwgaWdub3JpbmcgdGhlIHN0ZXAzLHN0ZXA3fjgsCisJICogc3RlcDE2 IGFuZCBzdGVwMTguCisJICovCisKKwkvKgorCSAqIE5vdGU1LiBJbiB0aGUgc3RlcDE4LCBhZGp1 c3QgdGhlIHJlZ2lzdGVyIHN0ZXAgYnkgc3RlcCB0byB0aGUKKwkgKiBhcHByb3ByaWF0ZSB2YWx1 ZSBhbmQgdGFraW5nIDEwbXMgYXMgb25lIHRpbWUgc3RlcAorCSAqLworCisJLyoKKwkgKiAxLiBT ZXQgdGhlIEFDT0RFQ19EQUNfQU5BX0NPTjBbMF0gdG8gMHgxLCB0byBlbmFibGUgdGhlIGN1cnJl bnQKKwkgKiBzb3VyY2Ugb2YgREFDCisJICovCisJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVn bWFwLCBSSzMzMDhfREFDX0FOQV9DT04wMCwKKwkJCVJLMzMwOF9EQUNfQ1VSUkVOVF9FTik7CisK Kwl1c2xlZXBfcmFuZ2UoMjAsIDQwKTsKKworCS8qCisJICogMi4gU2V0IHRoZSBBQ09ERUNfREFD X0FOQV9DT04xWzZdIGFuZCBBQ09ERUNfREFDX0FOQV9DT04xWzJdIHRvIDB4MSwKKwkgKiB0byBl bmFibGUgdGhlIHJlZmVyZW5jZSB2b2x0YWdlIGJ1ZmZlcgorCSAqLworCXJlZ21hcF9zZXRfYml0 cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDEsCisJCQlSSzMzMDhfREFDX0JV Rl9SRUZfTF9FTiB8CisJCQlSSzMzMDhfREFDX0JVRl9SRUZfUl9FTik7CisKKwkvKiBXYWl0aW5n IHRoZSBzdGFibGUgcmVmZXJlbmNlIHZvbHRhZ2UgKi8KKwltZGVsYXkoMSk7CisKKwkvKiBTdGVw IDAzICovCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FO QV9DT04wMSwKKwkJCSAgIFJLMzMwOF9EQUNfSFBPVVRfUE9QX1NPVU5EX0xfTVNLIHwKKwkJCSAg IFJLMzMwOF9EQUNfSFBPVVRfUE9QX1NPVU5EX1JfTVNLLAorCQkJICAgUkszMzA4X0RBQ19IUE9V VF9QT1BfU09VTkRfTF9XT1JLIHwKKwkJCSAgIFJLMzMwOF9EQUNfSFBPVVRfUE9QX1NPVU5EX1Jf V09SSyk7CisKKwl1c2xlZXBfcmFuZ2UoMjAsIDQwKTsKKworCWlmIChyazMzMDgtPmNvZGVjX3Zl ciA9PSBBQ09ERUNfVkVSU0lPTl9CICYmCisJICAgIChyazMzMDgtPmRhY19vdXRwdXQgPT0gREFD X0xJTkVPVVQgfHwKKwkgICAgIHJrMzMwOC0+ZGFjX291dHB1dCA9PSBEQUNfTElORU9VVF9IUE9V VCkpIHsKKwkJLyogU3RlcCAwNCAqLworCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdt YXAsIFJLMzMwOF9EQUNfQU5BX0NPTjE1LAorCQkJCSAgIFJLMzMwOF9EQUNfTElORU9VVF9QT1Bf U09VTkRfTF9NU0sgfAorCQkJCSAgIFJLMzMwOF9EQUNfTElORU9VVF9QT1BfU09VTkRfUl9NU0ss CisJCQkJICAgUkszMzA4X0RBQ19MX1NFTF9EQ19GUk9NX0lOVEVSTkFMIHwKKwkJCQkgICBSSzMz MDhfREFDX1JfU0VMX0RDX0ZST01fSU5URVJOQUwpOworCisJCXVzbGVlcF9yYW5nZSgyMCwgNDAp OworCX0KKworCS8qIFN0ZXAgMDUgKi8KKwlyZWdtYXBfc2V0X2JpdHMocmszMzA4LT5yZWdtYXAs IFJLMzMwOF9EQUNfQU5BX0NPTjEzLAorCQkJUkszMzA4X0RBQ19MX0hQTUlYX0VOIHwKKwkJCVJL MzMwOF9EQUNfUl9IUE1JWF9FTik7CisKKwkvKiBXYWl0aW5nIHRoZSBzdGFibGUgSFBNSVggKi8K KwltZGVsYXkoMSk7CisKKwkvKiBTdGVwIDA2LiBSZXNldCBIUE1JWCBhbmQgcmVjb3ZlciBIUE1J WCBnYWlucyAqLworCXJlZ21hcF9jbGVhcl9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFD X0FOQV9DT04xMywKKwkJCSAgUkszMzA4X0RBQ19MX0hQTUlYX1dPUksgfAorCQkJICBSSzMzMDhf REFDX1JfSFBNSVhfV09SSyk7CisJdXNsZWVwX3JhbmdlKDUwLCAxMDApOworCXJlZ21hcF9zZXRf Yml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMTMsCisJCQlSSzMzMDhfREFD X0xfSFBNSVhfV09SSyB8CisJCQlSSzMzMDhfREFDX1JfSFBNSVhfV09SSyk7CisKKwl1c2xlZXBf cmFuZ2UoMjAsIDQwKTsKKworCWlmIChyazMzMDgtPmRhY19vdXRwdXQgPT0gREFDX0xJTkVPVVQg fHwKKwkgICAgcmszMzA4LT5kYWNfb3V0cHV0ID09IERBQ19MSU5FT1VUX0hQT1VUKSB7CisJCS8q IFN0ZXAgMDcgKi8KKwkJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFD X0FOQV9DT04wNCwKKwkJCQlSSzMzMDhfREFDX0xfTElORU9VVF9FTiB8CisJCQkJUkszMzA4X0RB Q19SX0xJTkVPVVRfRU4pOworCisJCXVzbGVlcF9yYW5nZSgyMCwgNDApOworCX0KKworCWlmIChy azMzMDgtPmRhY19vdXRwdXQgPT0gREFDX0hQT1VUIHx8CisJICAgIHJrMzMwOC0+ZGFjX291dHB1 dCA9PSBEQUNfTElORU9VVF9IUE9VVCkgeworCQkvKiBTdGVwIDA4ICovCisJCXJlZ21hcF9zZXRf Yml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDMsCisJCQkJUkszMzA4X0RB Q19MX0hQT1VUX0VOIHwKKwkJCQlSSzMzMDhfREFDX1JfSFBPVVRfRU4pOworCisJCXVzbGVlcF9y YW5nZSgyMCwgNDApOworCisJCS8qIFN0ZXAgMDkgKi8KKwkJcmVnbWFwX3NldF9iaXRzKHJrMzMw OC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04wMywKKwkJCQlSSzMzMDhfREFDX0xfSFBPVVRf V09SSyB8CisJCQkJUkszMzA4X0RBQ19SX0hQT1VUX1dPUkspOworCisJCXVzbGVlcF9yYW5nZSgy MCwgNDApOworCX0KKworCWlmIChyazMzMDgtPmNvZGVjX3ZlciA9PSBBQ09ERUNfVkVSU0lPTl9C KSB7CisJCS8qIFN0ZXAgMTAgKi8KKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFw LCBSSzMzMDhfREFDX0FOQV9DT04xNSwKKwkJCQkgICBSSzMzMDhfREFDX0xJTkVPVVRfUE9QX1NP VU5EX0xfTVNLIHwKKwkJCQkgICBSSzMzMDhfREFDX0xJTkVPVVRfUE9QX1NPVU5EX1JfTVNLLAor CQkJCSAgIFJLMzMwOF9EQUNfTF9TRUxfTElORU9VVF9GUk9NX0lOVEVSTkFMIHwKKwkJCQkgICBS SzMzMDhfREFDX1JfU0VMX0xJTkVPVVRfRlJPTV9JTlRFUk5BTCk7CisKKwkJdXNsZWVwX3Jhbmdl KDIwLCA0MCk7CisJfQorCisJLyogU3RlcCAxMSAqLworCXJlZ21hcF9zZXRfYml0cyhyazMzMDgt PnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDIsCisJCQlSSzMzMDhfREFDX0xfUkVGX0VOIHwg UkszMzA4X0RBQ19SX1JFRl9FTik7CisKKwl1c2xlZXBfcmFuZ2UoMjAsIDQwKTsKKworCS8qIFN0 ZXAgMTIgKi8KKwlyZWdtYXBfc2V0X2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9EQUNfQU5B X0NPTjAyLAorCQkJUkszMzA4X0RBQ19MX0NMS19FTiB8IFJLMzMwOF9EQUNfUl9DTEtfRU4pOwor CisJdXNsZWVwX3JhbmdlKDIwLCA0MCk7CisKKwkvKiBTdGVwIDEzICovCisJcmVnbWFwX3NldF9i aXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04wMiwKKwkJCVJLMzMwOF9EQUNf TF9EQUNfRU4gfCBSSzMzMDhfREFDX1JfREFDX0VOKTsKKworCXVzbGVlcF9yYW5nZSgyMCwgNDAp OworCisJLyogU3RlcCAxNCAqLworCXJlZ21hcF9zZXRfYml0cyhyazMzMDgtPnJlZ21hcCwgUksz MzA4X0RBQ19BTkFfQ09OMDIsCisJCQlSSzMzMDhfREFDX0xfREFDX1dPUksgfCBSSzMzMDhfREFD X1JfREFDX1dPUkspOworCisJdXNsZWVwX3JhbmdlKDIwLCA0MCk7CisKKwkvKiBTdGVwIDE1ICov CisJcmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04x MiwKKwkJCSAgIFJLMzMwOF9EQUNfTF9IUE1JWF9TRUxfTVNLIHwKKwkJCSAgIFJLMzMwOF9EQUNf Ul9IUE1JWF9TRUxfTVNLLAorCQkJICAgUkszMzA4X0RBQ19MX0hQTUlYX0kyUyB8CisJCQkgICBS SzMzMDhfREFDX1JfSFBNSVhfSTJTKTsKKworCXVzbGVlcF9yYW5nZSgyMCwgNDApOworCisJLyog U3RlcCAxNiAqLworCXJlZ21hcF9zZXRfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19B TkFfQ09OMTMsCisJCQlSSzMzMDhfREFDX0xfSFBNSVhfVU5NVVRFIHwgUkszMzA4X0RBQ19SX0hQ TUlYX1VOTVVURSk7CisKKwl1c2xlZXBfcmFuZ2UoMjAsIDQwKTsKKworCS8qIFN0ZXAgMTc6IFB1 dCBjb25maWd1cmF0aW9uIEhQTUlYIEdhaW4gKi8KKworCWlmIChyazMzMDgtPmRhY19vdXRwdXQg PT0gREFDX0hQT1VUIHx8CisJICAgIHJrMzMwOC0+ZGFjX291dHB1dCA9PSBEQUNfTElORU9VVF9I UE9VVCkgeworCQkvKiBTdGVwIDE4ICovCisJCXJlZ21hcF9zZXRfYml0cyhyazMzMDgtPnJlZ21h cCwgUkszMzA4X0RBQ19BTkFfQ09OMDMsCisJCQkJUkszMzA4X0RBQ19MX0hQT1VUX1VOTVVURSB8 IFJLMzMwOF9EQUNfUl9IUE9VVF9VTk1VVEUpOworCisJCXVzbGVlcF9yYW5nZSgyMCwgNDApOwor CX0KKworCWlmIChyazMzMDgtPmRhY19vdXRwdXQgPT0gREFDX0xJTkVPVVQgfHwKKwkgICAgcmsz MzA4LT5kYWNfb3V0cHV0ID09IERBQ19MSU5FT1VUX0hQT1VUKSB7CisJCS8qIFN0ZXAgMTkgKi8K KwkJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04wNCwK KwkJCQlSSzMzMDhfREFDX0xfTElORU9VVF9VTk1VVEUgfCBSSzMzMDhfREFDX1JfTElORU9VVF9V Tk1VVEUpOworCQl1c2xlZXBfcmFuZ2UoMjAsIDQwKTsKKwl9CisKKwkvKiBTdGVwIDIwLCBwdXQg Y29uZmlndXJhdGlvbiBIUE9VVCBnYWluIGNvbnRyb2wgKi8KKwkvKiBTdGVwIDIxLCBwdXQgY29u ZmlndXJhdGlvbiBMSU5FT1VUIGdhaW4gY29udHJvbCAqLworCisJaWYgKHJrMzMwOC0+ZGFjX291 dHB1dCA9PSBEQUNfSFBPVVQgfHwKKwkgICAgcmszMzA4LT5kYWNfb3V0cHV0ID09IERBQ19MSU5F T1VUX0hQT1VUKSB7CisJCS8qIEp1c3QgZm9yIEhQT1VUICovCisJCXJrMzMwOF9jb2RlY19kaWdp dGFsX2ZhZGVpbihyazMzMDgpOworCX0KKworCS8qIFRPRE86IFRSWSBUTyBURVNUIERSSVZFIFNU UkVOR1RIICovCisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByazMzMDhfY29kZWNfZGFj X2Rpc2FibGUoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgpCit7CisJLyoKKwkgKiBT dGVwIDAwIHNraXBwZWQuIEtlZXAgdGhlIERBQyBjaGFubmVsIHdvcmsgYW5kIGlucHV0IHRoZSBt dXRlIHNpZ25hbC4KKwkgKi8KKworCS8qIFN0ZXAgMDEgc2tpcHBlZC4gTWF5IHNldCB0aGUgbWlu IGdhaW4gZm9yIExJTkVPVVQuICovCisKKwkvKiBTdGVwIDAyIHNraXBwZWQuIE1heSBzZXQgdGhl IG1pbiBnYWluIGZvciBIUE9VVC4gKi8KKworCWlmIChyazMzMDgtPmRhY19vdXRwdXQgPT0gREFD X0hQT1VUIHx8CisJICAgIHJrMzMwOC0+ZGFjX291dHB1dCA9PSBEQUNfTElORU9VVF9IUE9VVCkg eworCQkvKiBKdXN0IGZvciBIUE9VVCAqLworCQlyazMzMDhfY29kZWNfZGlnaXRhbF9mYWRlb3V0 KHJrMzMwOCk7CisJfQorCisJLyogU3RlcCAwMyAqLworCXJlZ21hcF9zZXRfYml0cyhyazMzMDgt PnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMTMsCisJCQlSSzMzMDhfREFDX0xfSFBNSVhfVU5N VVRFIHwgUkszMzA4X0RBQ19SX0hQTUlYX1VOTVVURSk7CisKKwkvKiBTdGVwIDA0ICovCisJcmVn bWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04xMiwKKwkJ CSAgIFJLMzMwOF9EQUNfTF9IUE1JWF9TRUxfTVNLIHwKKwkJCSAgIFJLMzMwOF9EQUNfUl9IUE1J WF9TRUxfTVNLLAorCQkJICAgUkszMzA4X0RBQ19MX0hQTUlYX05PTkUgfAorCQkJICAgUkszMzA4 X0RBQ19SX0hQTUlYX05PTkUpOworCS8qIFN0ZXAgMDUgKi8KKwlyZWdtYXBfY2xlYXJfYml0cyhy azMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDMsCisJCQkgIFJLMzMwOF9EQUNfTF9I UE9VVF9VTk1VVEUgfAorCQkJICBSSzMzMDhfREFDX1JfSFBPVVRfVU5NVVRFKTsKKworCS8qIFN0 ZXAgMDYgKi8KKwlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19B TkFfQ09OMDIsCisJCQkgIFJLMzMwOF9EQUNfTF9EQUNfV09SSyB8CisJCQkgIFJLMzMwOF9EQUNf Ul9EQUNfV09SSyk7CisKKwkvKiBTdGVwIDA3ICovCisJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4 LT5yZWdtYXAsIFJLMzMwOF9EQUNfQU5BX0NPTjAzLAorCQkJICBSSzMzMDhfREFDX0xfSFBPVVRf RU4gfAorCQkJICBSSzMzMDhfREFDX1JfSFBPVVRfRU4pOworCisJLyogU3RlcCAwOCAqLworCXJl Z21hcF9jbGVhcl9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04wNCwKKwkJ CSAgUkszMzA4X0RBQ19MX0xJTkVPVVRfVU5NVVRFIHwKKwkJCSAgUkszMzA4X0RBQ19SX0xJTkVP VVRfVU5NVVRFKTsKKworCS8qIFN0ZXAgMDkgKi8KKwlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgt PnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDQsCisJCQkgIFJLMzMwOF9EQUNfTF9MSU5FT1VU X0VOIHwKKwkJCSAgUkszMzA4X0RBQ19SX0xJTkVPVVRfRU4pOworCisJLyogU3RlcCAxMCAqLwor CXJlZ21hcF9jbGVhcl9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04xMywK KwkJCSAgUkszMzA4X0RBQ19MX0hQTUlYX0VOIHwKKwkJCSAgUkszMzA4X0RBQ19SX0hQTUlYX0VO KTsKKworCS8qIFN0ZXAgMTEgKi8KKwlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21hcCwg UkszMzA4X0RBQ19BTkFfQ09OMDIsCisJCQkgIFJLMzMwOF9EQUNfTF9EQUNfRU4gfAorCQkJICBS SzMzMDhfREFDX1JfREFDX0VOKTsKKworCS8qIFN0ZXAgMTIgKi8KKwlyZWdtYXBfY2xlYXJfYml0 cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDIsCisJCQkgIFJLMzMwOF9EQUNf TF9DTEtfRU4gfAorCQkJICBSSzMzMDhfREFDX1JfQ0xLX0VOKTsKKworCS8qIFN0ZXAgMTMgKi8K KwlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDIs CisJCQkgIFJLMzMwOF9EQUNfTF9SRUZfRU4gfAorCQkJICBSSzMzMDhfREFDX1JfUkVGX0VOKTsK KworCS8qIFN0ZXAgMTQgKi8KKwlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJL MzMwOF9EQUNfQU5BX0NPTjAxLAorCQkJICAgUkszMzA4X0RBQ19IUE9VVF9QT1BfU09VTkRfTF9N U0sgfAorCQkJICAgUkszMzA4X0RBQ19IUE9VVF9QT1BfU09VTkRfUl9NU0ssCisJCQkgICBSSzMz MDhfREFDX0hQT1VUX1BPUF9TT1VORF9MX0lOSVQgfAorCQkJICAgUkszMzA4X0RBQ19IUE9VVF9Q T1BfU09VTkRfUl9JTklUKTsKKworCS8qIFN0ZXAgMTUgKi8KKwlpZiAocmszMzA4LT5jb2RlY192 ZXIgPT0gQUNPREVDX1ZFUlNJT05fQiAmJgorCSAgICAocmszMzA4LT5kYWNfb3V0cHV0ID09IERB Q19MSU5FT1VUIHx8CisJICAgICByazMzMDgtPmRhY19vdXRwdXQgPT0gREFDX0xJTkVPVVRfSFBP VVQpKSB7CisJCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19B TkFfQ09OMTUsCisJCQkJICAgUkszMzA4X0RBQ19MSU5FT1VUX1BPUF9TT1VORF9MX01TSyB8CisJ CQkJICAgUkszMzA4X0RBQ19MSU5FT1VUX1BPUF9TT1VORF9SX01TSywKKwkJCQkgICBSSzMzMDhf REFDX0xfU0VMX0RDX0ZST01fVkNNIHwKKwkJCQkgICBSSzMzMDhfREFDX1JfU0VMX0RDX0ZST01f VkNNKTsKKwl9CisKKwkvKiBTdGVwIDE2ICovCisJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5y ZWdtYXAsIFJLMzMwOF9EQUNfQU5BX0NPTjAxLAorCQkJICBSSzMzMDhfREFDX0JVRl9SRUZfTF9F TiB8CisJCQkgIFJLMzMwOF9EQUNfQlVGX1JFRl9SX0VOKTsKKworCS8qIFN0ZXAgMTcgKi8KKwly ZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMDAsCisJ CQkgIFJLMzMwOF9EQUNfQ1VSUkVOVF9FTik7CisKKwkvKiBTdGVwIDE4ICovCisJcmVnbWFwX2Ns ZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9EQUNfQU5BX0NPTjAzLAorCQkJICBSSzMz MDhfREFDX0xfSFBPVVRfV09SSyB8CisJCQkgIFJLMzMwOF9EQUNfUl9IUE9VVF9XT1JLKTsKKwor CS8qIFN0ZXAgMTkgKi8KKwlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMw OF9EQUNfQU5BX0NPTjEzLAorCQkJICAgUkszMzA4X0RBQ19MX0hQTUlYX1dPUksgfAorCQkJICAg UkszMzA4X0RBQ19SX0hQTUlYX1dPUkssCisJCQkgICBSSzMzMDhfREFDX0xfSFBNSVhfV09SSyB8 CisJCQkgICBSSzMzMDhfREFDX1JfSFBNSVhfV09SSyk7CisKKwkvKiBTdGVwIDIwIHNraXBwZWQs IG1heSBzZXQgdGhlIG1pbiBnYWluIGZvciBIUE9VVC4gKi8KKworCS8qCisJICogTm90ZTIuIElm IHRoZSBBQ09ERUNfREFDX0FOQV9DT04xMls3XSBvciBBQ09ERUNfREFDX0FOQV9DT04xMlszXQor CSAqIGlzIHNldCB0byAweDEsIGFkZCB0aGUgc3RlcHMgZnJvbSB0aGUgc2VjdGlvbiBEaXNhYmxl IEFEQworCSAqIENvbmZpZ3VyYXRpb24gU3RhbmRhcmQgVXNhZ2UgRmxvdyBhZnRlciBjb21wbGV0 ZSB0aGUgc3RlcCAxOQorCSAqCisJICogSUYgVVNJTkcgTElORS1JTgorCSAqIHJrMzMwOF9jb2Rl Y19hZGNfYW5hX2Rpc2FibGUocmszMzA4LCB0eXBlKTsKKwkgKi8KKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19wb3dlcl9vbihzdHJ1Y3QgcmszMzA4X2NvZGVjX3By aXYgKnJrMzMwOCkKK3sKKwl1bnNpZ25lZCBpbnQgdjsKKworCS8qIFRSTSBTZWN0aW9uIDguNi4z IFBvd2VyIFVwICovCisKKwkvKiAwLiBTdXBwbHkgdGhlIHBvd2VyIG9mIGRpZ2l0YWwgcGFydCBh bmQgcmVzZXQgdGhlIEF1ZGlvIENvZGVjICovCisKKwkvKgorCSAqIDEuIENvbmZpZ3VyZSBBQ09E RUNfREFDX0FOQV9DT04xWzE6MF0gYW5kIEFDT0RFQ19EQUNfQU5BX0NPTjFbNTo0XQorCSAqICAg IHRvIDB4MSwgdG8gc2V0dXAgZGMgdm9sdGFnZSBvZiB0aGUgREFDIGNoYW5uZWwgb3V0cHV0Lgor CSAqLworCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFf Q09OMDEsCisJCQkgICBSSzMzMDhfREFDX0hQT1VUX1BPUF9TT1VORF9MX01TSyB8CisJCQkgICBS SzMzMDhfREFDX0hQT1VUX1BPUF9TT1VORF9SX01TSywKKwkJCSAgIFJLMzMwOF9EQUNfSFBPVVRf UE9QX1NPVU5EX0xfSU5JVCB8CisJCQkgICBSSzMzMDhfREFDX0hQT1VUX1BPUF9TT1VORF9SX0lO SVQpOworCisJaWYgKHJrMzMwOC0+Y29kZWNfdmVyID09IEFDT0RFQ19WRVJTSU9OX0IpIHsKKwkJ LyoKKwkJICogMi4gQ29uZmlndXJlIEFDT0RFQ19EQUNfQU5BX0NPTjE1WzE6MF0gYW5kCisJCSAq ICAgIEFDT0RFQ19EQUNfQU5BX0NPTjE1WzU6NF0gdG8gMHgxLCB0byBzZXR1cCBkYyB2b2x0YWdl IG9mCisJCSAqICAgIHRoZSBEQUMgY2hhbm5lbCBvdXRwdXQuCisJCSAqLworCQlyZWdtYXBfdXBk YXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9EQUNfQU5BX0NPTjE1LAorCQkJCSAgIFJL MzMwOF9EQUNfTElORU9VVF9QT1BfU09VTkRfTF9NU0sgfAorCQkJCSAgIFJLMzMwOF9EQUNfTElO RU9VVF9QT1BfU09VTkRfUl9NU0ssCisJCQkJICAgUkszMzA4X0RBQ19MX1NFTF9EQ19GUk9NX1ZD TSB8CisJCQkJICAgUkszMzA4X0RBQ19SX1NFTF9EQ19GUk9NX1ZDTSk7CisJfQorCisJLyoKKwkg KiAzLiBDb25maWd1cmUgdGhlIHJlZ2lzdGVyIEFDT0RFQ19BRENfQU5BX0NPTjEwWzY6MF0gdG8g N+KAmWIwMDBfMDAwMS4KKwkgKi8KKwlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAs IFJLMzMwOF9BRENfQU5BX0NPTjEwKDApLAorCQkJICAgUkszMzA4X0FEQ19DVVJSRU5UX0NIQVJH RV9NU0ssCisJCQkgICBSSzMzMDhfQURDX1NFTF9JKDB4MSkpOworCisJaWYgKHJrMzMwOC0+Y29k ZWNfdmVyID09IEFDT0RFQ19WRVJTSU9OX0IpIHsKKwkJLyoKKwkJICogNC4gQ29uZmlndXJlIHRo ZSByZWdpc3RlciBBQ09ERUNfQURDX0FOQV9DT04xNFszOjBdIHRvCisJCSAqICAgIDTigJliMDAw MS4KKwkJICovCisJCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RB Q19BTkFfQ09OMTQsCisJCQkJICAgUkszMzA4X0RBQ19DVVJSRU5UX0NIQVJHRV9NU0ssCisJCQkJ ICAgUkszMzA4X0RBQ19TRUxfSSgweDEpKTsKKwl9CisKKwkvKiA1LiBTdXBwbHkgdGhlIHBvd2Vy IG9mIHRoZSBhbmFsb2cgcGFydChBVkRELEFWRERSVikgKi8KKworCS8qCisJICogNi4gQ29uZmln dXJlIHRoZSByZWdpc3RlciBBQ09ERUNfQURDX0FOQV9DT04xMFs3XSB0byAweDEgdG8gc2V0dXAK KwkgKiAgICByZWZlcmVuY2Ugdm9sdGFnZQorCSAqLworCXJlZ21hcF9zZXRfYml0cyhyazMzMDgt PnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMTAoMCksIFJLMzMwOF9BRENfUkVGX0VOKTsKKwor CWlmIChyazMzMDgtPmNvZGVjX3ZlciA9PSBBQ09ERUNfVkVSU0lPTl9CKSB7CisJCS8qCisJCSAq IDcuIENvbmZpZ3VyZSB0aGUgcmVnaXN0ZXIgQUNPREVDX0FEQ19BTkFfQ09OMTRbNF0gdG8gMHgx IHRvCisJCSAqICAgIHNldHVwIHJlZmVyZW5jZSB2b2x0YWdlCisJCSAqLworCQlyZWdtYXBfc2V0 X2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9EQUNfQU5BX0NPTjE0LAorCQkJCVJLMzMwOF9E QUNfVkNNX0xJTkVPVVRfRU4pOworCX0KKworCS8qCisJICogOC4gQ2hhbmdlIHRoZSByZWdpc3Rl ciBBQ09ERUNfQURDX0FOQV9DT04xMFs2OjBdIGZyb20gdGhlIDB4MSB0bworCSAqICAgIDB4N2Yg c3RlcCBieSBzdGVwIG9yIGNvbmZpZ3VyZSB0aGUgQUNPREVDX0FEQ19BTkFfQ09OMTBbNjowXSB0 bworCSAqICAgIDB4N2YgZGlyZWN0bHkuIEhlcmUgdGhlIHNsb3QgdGltZSBvZiB0aGUgc3RlcCBp cyAyMDB1cy4KKwkgKi8KKwlmb3IgKHYgPSAweDE7IHYgPD0gMHg3ZjsgdisrKSB7CisJCXJlZ21h cF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMTAoMCksCisJ CQkJICAgUkszMzA4X0FEQ19DVVJSRU5UX0NIQVJHRV9NU0ssIHYpOworCQl1c2xlZXBfcmFuZ2Uo MjAwLCA0MDApOworCX0KKworCWlmIChyazMzMDgtPmNvZGVjX3ZlciA9PSBBQ09ERUNfVkVSU0lP Tl9CKSB7CisJCS8qCisJCSAqIDkuIENoYW5nZSB0aGUgcmVnaXN0ZXIgQUNPREVDX0FEQ19BTkFf Q09OMTRbMzowXSBmcm9tIHRoZSAweDEKKwkJICogICAgdG8gMHhmIHN0ZXAgYnkgc3RlcCBvciBj b25maWd1cmUgdGhlCisJCSAqICAgIEFDT0RFQ19BRENfQU5BX0NPTjE0WzM6MF0gdG8gMHhmIGRp cmVjdGx5LiBIZXJlIHRoZSBzbG90CisJCSAqICAgIHRpbWUgb2YgdGhlIHN0ZXAgaXMgMjAwdXMu CisJCSAqLworCQlmb3IgKHYgPSAweDE7IHYgPD0gMHhmOyB2KyspIHsKKwkJCXJlZ21hcF91cGRh dGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMTQsCisJCQkJCSAgIFJL MzMwOF9EQUNfQ1VSUkVOVF9DSEFSR0VfTVNLLCB2KTsKKwkJCXVzbGVlcF9yYW5nZSgyMDAsIDQw MCk7CisJCX0KKwl9CisKKwkvKiAxMC4gV2FpdCB1bnRpbCB0aGUgdm9sdGFnZSBvZiBWQ00ga2Vl cHMgc3RhYmxlIGF0IHRoZSBBVkRELzIgKi8KKwltc2xlZXAoMjApOwkvKiBlc3RpbWF0ZWQgdmFs dWUgKi8KKworCS8qCisJICogMTEuIENvbmZpZ3VyZSB0aGUgcmVnaXN0ZXIgQUNPREVDX0FEQ19B TkFfQ09OMTBbNjowXSB0byB0aGUKKwkgKiAgICAgYXBwcm9wcmlhdGUgdmFsdWUgKGV4cGVjdCAw eDApIGZvciByZWR1Y2luZyBwb3dlci4KKwkgKi8KKwlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4 LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NPTjEwKDApLAorCQkJICAgUkszMzA4X0FEQ19DVVJS RU5UX0NIQVJHRV9NU0ssIDB4N2MpOworCisJaWYgKHJrMzMwOC0+Y29kZWNfdmVyID09IEFDT0RF Q19WRVJTSU9OX0IpIHsKKwkJLyoKKwkJICogMTIuIENvbmZpZ3VyZSB0aGUgcmVnaXN0ZXIgQUNP REVDX0RBQ19BTkFfQ09OMTRbNjowXSB0byB0aGUKKwkJICogICAgIGFwcHJvcHJpYXRlIHZhbHVl KGV4cGVjdCAweDApIGZvciByZWR1Y2luZyBwb3dlci4KKwkJICovCisJCXJlZ21hcF91cGRhdGVf Yml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMTQsCisJCQkJICAgUkszMzA4 X0RBQ19DVVJSRU5UX0NIQVJHRV9NU0ssIDB4Zik7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgcmszMzA4X2NvZGVjX3Bvd2VyX29mZihzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYg KnJrMzMwOCkKK3sKKwl1bnNpZ25lZCBpbnQgdjsKKworCS8qCisJICogMC4gS2VlcCB0aGUgcG93 ZXIgb24gYW5kIGRpc2FibGUgdGhlIERBQyBhbmQgQURDIHBhdGggYWNjb3JkaW5nIHRvCisJICog ICAgdGhlIHNlY3Rpb24gcG93ZXIgb24gY29uZmlndXJhdGlvbiBzdGFuZGFyZCB1c2FnZSBmbG93 LgorCSAqLworCisJLyoKKwkgKiAxLiBDb25maWd1cmUgdGhlIHJlZ2lzdGVyIEFDT0RFQ19BRENf QU5BX0NPTjEwWzY6MF0gdG8gN+KAmWIwMDBfMDAwMS4KKwkgKi8KKwlyZWdtYXBfdXBkYXRlX2Jp dHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NPTjEwKDApLAorCQkJICAgUkszMzA4 X0FEQ19DVVJSRU5UX0NIQVJHRV9NU0ssCisJCQkgICBSSzMzMDhfQURDX1NFTF9JKDB4MSkpOwor CisJaWYgKHJrMzMwOC0+Y29kZWNfdmVyID09IEFDT0RFQ19WRVJTSU9OX0IpIHsKKwkJLyoKKwkJ ICogMi4gQ29uZmlndXJlIHRoZSByZWdpc3RlciBBQ09ERUNfREFDX0FOQV9DT04xNFszOjBdIHRv CisJCSAqICAgIDTigJliMDAwMS4KKwkJICovCisJCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgt PnJlZ21hcCwgUkszMzA4X0RBQ19BTkFfQ09OMTQsCisJCQkJICAgUkszMzA4X0RBQ19DVVJSRU5U X0NIQVJHRV9NU0ssCisJCQkJICAgUkszMzA4X0RBQ19TRUxfSSgweDEpKTsKKwl9CisKKwkvKiAz LiBDb25maWd1cmUgdGhlIHJlZ2lzdGVyIEFDT0RFQ19BRENfQU5BX0NPTjEwWzddIHRvIDB4MCAq LworCXJlZ21hcF9jbGVhcl9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04x MCgwKSwgUkszMzA4X0FEQ19SRUZfRU4pOworCisJaWYgKHJrMzMwOC0+Y29kZWNfdmVyID09IEFD T0RFQ19WRVJTSU9OX0IpIHsKKwkJLyogNC4gQ29uZmlndXJlIHRoZSByZWdpc3RlciBBQ09ERUNf REFDX0FOQV9DT04xNFs3XSB0byAweDAgKi8KKwkJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5y ZWdtYXAsIFJLMzMwOF9EQUNfQU5BX0NPTjE0LAorCQkJCSAgUkszMzA4X0RBQ19WQ01fTElORU9V VF9FTik7CisJfQorCisJLyoKKwkgKiA1LiBDaGFuZ2UgdGhlIHJlZ2lzdGVyIEFDT0RFQ19BRENf QU5BX0NPTjEwWzY6MF0gZnJvbSB0aGUgMHgxIHRvIDB4N2YKKwkgKiAgICBzdGVwIGJ5IHN0ZXAg b3IgY29uZmlndXJlIHRoZSBBQ09ERUNfQURDX0FOQV9DT04xMFs2OjBdIHRvIDB4N2YKKwkgKiAg ICBkaXJlY3RseS4gSGVyZSB0aGUgc2xvdCB0aW1lIG9mIHRoZSBzdGVwIGlzIDIwMHVzLgorCSAq LworCWZvciAodiA9IDB4MTsgdiA8PSAweDdmOyB2KyspIHsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRz KHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04xMCgwKSwKKwkJCQkgICBSSzMzMDhf QURDX0NVUlJFTlRfQ0hBUkdFX01TSywgdik7CisJCXVzbGVlcF9yYW5nZSgyMDAsIDQwMCk7CisJ fQorCisJaWYgKHJrMzMwOC0+Y29kZWNfdmVyID09IEFDT0RFQ19WRVJTSU9OX0IpIHsKKwkJLyoK KwkJICogNi4gQ2hhbmdlIHRoZSByZWdpc3RlciBBQ09ERUNfREFDX0FOQV9DT04xNFszOjBdIGZy b20gdGhlIDB4MQorCQkgKiAgICB0byAweGYgc3RlcCBieSBzdGVwIG9yIGNvbmZpZ3VyZSB0aGUK KwkJICogICAgQUNPREVDX0RBQ19BTkFfQ09OMTRbMzowXSB0byAweGYgZGlyZWN0bHkuIEhlcmUg dGhlIHNsb3QKKwkJICogICAgdGltZSBvZiB0aGUgc3RlcCBpcyAyMDB1cy4KKwkJICovCisJCWZv ciAodiA9IDB4MTsgdiA8PSAweDdmOyB2KyspIHsKKwkJCXJlZ21hcF91cGRhdGVfYml0cyhyazMz MDgtPnJlZ21hcCwKKwkJCQkJICAgUkszMzA4X0FEQ19BTkFfQ09OMTAoMCksCisJCQkJCSAgIFJL MzMwOF9BRENfQ1VSUkVOVF9DSEFSR0VfTVNLLCB2KTsKKwkJCXVzbGVlcF9yYW5nZSgyMDAsIDQw MCk7CisJCX0KKwl9CisKKwkvKiA3LiBXYWl0IHVudGlsIHRoZSB2b2x0YWdlIG9mIFZDTSBrZWVw cyBzdGFibGUgYXQgdGhlIEFHTkQgKi8KKwltc2xlZXAoMjApOwkvKiBlc3RpbWF0ZWQgdmFsdWUg Ki8KKworCS8qIDguIFBvd2VyIG9mZiB0aGUgYW5hbG9nIHBvd2VyIHN1cHBseSAqLworCS8qIDku IFBvd2VyIG9mZiB0aGUgZGlnaXRhbCBwb3dlciBzdXBwbHkgKi8KKworCS8qIERvIHNvbWV0aGlu ZyB2aWEgaGFyZHdhcmUgKi8KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJrMzMwOF9j b2RlY19hZGNfcmVpbml0X21pY3Moc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgpCit7 CisJaW50IGdycDsKKworCWZvciAoZ3JwID0gMDsgZ3JwIDwgcmszMzA4LT51c2VkX2FkY19ncnBz OyBncnArKykgeworCQkvKiB2ZW5kb3Igc3RlcCAxICovCisJCXJlZ21hcF9jbGVhcl9iaXRzKHJr MzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04wNShncnApLAorCQkJCSAgUkszMzA4X0FE Q19DSDFfQURDX1dPUksgfAorCQkJCSAgUkszMzA4X0FEQ19DSDJfQURDX1dPUkspOworCisJCS8q IHZlbmRvciBzdGVwIDIgKi8KKwkJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJL MzMwOF9BRENfQU5BX0NPTjAyKGdycCksCisJCQkJICBSSzMzMDhfQURDX0NIMV9BTENfV09SSyB8 CisJCQkJICBSSzMzMDhfQURDX0NIMl9BTENfV09SSyk7CisKKwkJLyogdmVuZG9yIHN0ZXAgMyAq LworCQlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09O MDAoZ3JwKSwKKwkJCQkgIFJLMzMwOF9BRENfQ0gxX01JQ19XT1JLIHwKKwkJCQkgIFJLMzMwOF9B RENfQ0gyX01JQ19XT1JLKTsKKwl9CisKKwl1c2xlZXBfcmFuZ2UoMjAwLCAyNTApOwkvKiBlc3Rp bWF0ZWQgdmFsdWUgKi8KKworCWZvciAoZ3JwID0gMDsgZ3JwIDwgcmszMzA4LT51c2VkX2FkY19n cnBzOyBncnArKykgeworCQkvKiB2ZW5kb3Igc3RlcCAxICovCisJCXJlZ21hcF9zZXRfYml0cyhy azMzMDgtPnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMDUoZ3JwKSwKKwkJCQlSSzMzMDhfQURD X0NIMV9BRENfV09SSyB8CisJCQkJUkszMzA4X0FEQ19DSDJfQURDX1dPUkspOworCisJCS8qIHZl bmRvciBzdGVwIDIgKi8KKwkJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhf QURDX0FOQV9DT04wMihncnApLAorCQkJCVJLMzMwOF9BRENfQ0gxX0FMQ19XT1JLIHwKKwkJCQlS SzMzMDhfQURDX0NIMl9BTENfV09SSyk7CisKKwkJLyogdmVuZG9yIHN0ZXAgMyAqLworCQlyZWdt YXBfc2V0X2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NPTjAwKGdycCksCisJ CQkJUkszMzA4X0FEQ19DSDFfTUlDX1dPUksgfAorCQkJCVJLMzMwOF9BRENfQ0gyX01JQ19XT1JL KTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByazMzMDhfY29kZWNfYWRjX2Fu YV9lbmFibGUoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgpCit7CisJaW50IGdycCA9 IDA7CisKKwkvKgorCSAqIDEuIFNldCB0aGUgQUNPREVDX0FEQ19BTkFfQ09ON1s3OjZdIGFuZCBB Q09ERUNfQURDX0FOQV9DT043WzU6NF0sCisJICogdG8gc2VsZWN0IHRoZSBsaW5lLWluIG9yIG1p Y3JvcGhvbmUgYXMgaW5wdXQgb2YgQURDCisJICoKKwkgKiBOb3RlMS4gUGxlYXNlIGlnbm9yZSB0 aGUgc3RlcDEgZm9yIGVuYWJsaW5nIEFEQzMsIEFEQzQsIEFEQzUsCisJICogQURDNiwgQURDNywg YW5kIEFEQzgKKwkgKi8KKwlpZiAocmszMzA4LT5hZGNfZ3JwMF91c2luZ19saW5laW4pIHsKKwkJ cmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04wNygw KSwKKwkJCQkgICBSSzMzMDhfQURDX0NIMV9JTl9TRUxfTVNLIHwKKwkJCQkgICBSSzMzMDhfQURD X0NIMl9JTl9TRUxfTVNLLAorCQkJCSAgIFJLMzMwOF9BRENfQ0gxX0lOX0xJTkVJTiB8CisJCQkJ ICAgUkszMzA4X0FEQ19DSDJfSU5fTElORUlOKTsKKwkJZ3JwKys7CisJfQorCisJZm9yICg7IGdy cCA8IHJrMzMwOC0+dXNlZF9hZGNfZ3JwczsgZ3JwKyspIHsKKwkJcmVnbWFwX3VwZGF0ZV9iaXRz KHJrMzMwOC0+cmVnbWFwLAorCQkJCSAgIFJLMzMwOF9BRENfQU5BX0NPTjA3KGdycCksCisJCQkJ ICAgUkszMzA4X0FEQ19DSDFfSU5fU0VMX01TSyB8CisJCQkJICAgUkszMzA4X0FEQ19DSDJfSU5f U0VMX01TSywKKwkJCQkgICBSSzMzMDhfQURDX0NIMV9JTl9NSUMgfAorCQkJCSAgIFJLMzMwOF9B RENfQ0gyX0lOX01JQyk7CisJfQorCisJZm9yIChncnAgPSAwOyBncnAgPCByazMzMDgtPnVzZWRf YWRjX2dycHM7IGdycCsrKSB7CisJCS8qCisJCSAqIDIuIFNldCBBQ09ERUNfQURDX0FOQV9DT04w WzddIGFuZCBbM10gdG8gMHgxLCB0byBlbmQgdGhlIG11dGUgc3RhdGlvbgorCQkgKiBvZiBBREMs IHRvIGVuYWJsZSB0aGUgTUlDIG1vZHVsZSwgdG8gZW5hYmxlIHRoZSByZWZlcmVuY2Ugdm9sdGFn ZQorCQkgKiBidWZmZXIsIGFuZCB0byBlbmQgdGhlIGluaXRpYWxpemF0aW9uIG9mIE1JQworCQkg Ki8KKwkJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04w MChncnApLAorCQkJCVJLMzMwOF9BRENfQ0gxX01JQ19VTk1VVEUgfAorCQkJCVJLMzMwOF9BRENf Q0gyX01JQ19VTk1VVEUpOworCisJCS8qCisJCSAqIDMuIFNldCBBQ09ERUNfQURDX0FOQV9DT042 WzBdIHRvIDB4MSwgdG8gZW5hYmxlIHRoZSBjdXJyZW50IHNvdXJjZQorCQkgKiBvZiBhdWRpbwor CQkgKi8KKwkJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9D T04wNihncnApLAorCQkJCVJLMzMwOF9BRENfQ1VSUkVOVF9FTik7CisJfQorCisJLyoKKwkgKiBU aGlzIGlzIG1haW5seSB1c2VkIGZvciBCSVNUIG1vZGUgdGhhdCB3YWl0IEFEQ3MgYXJlIHN0YWJs ZS4KKwkgKgorCSAqIEJ5IHRlc3RlZCByZXN1bHRzLCB0aGUgdHlwZSBkZWxheSBpcyA+NDB1cywg YnV0IHdlIG5lZWQgdG8gbGVhdmUKKwkgKiBlbm91Z2ggZGVsYXkgbWFyZ2luLgorCSAqLworCXVz bGVlcF9yYW5nZSg0MDAsIDUwMCk7CisKKwlmb3IgKGdycCA9IDA7IGdycCA8IHJrMzMwOC0+dXNl ZF9hZGNfZ3JwczsgZ3JwKyspIHsKKwkJLyogdmVuZG9yIHN0ZXAgNCAqLworCQlyZWdtYXBfc2V0 X2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NPTjAwKGdycCksCisJCQkJUksz MzA4X0FEQ19DSDFfQlVGX1JFRl9FTiB8CisJCQkJUkszMzA4X0FEQ19DSDJfQlVGX1JFRl9FTik7 CisKKwkJLyogdmVuZG9yIHN0ZXAgNSAqLworCQlyZWdtYXBfc2V0X2JpdHMocmszMzA4LT5yZWdt YXAsIFJLMzMwOF9BRENfQU5BX0NPTjAwKGdycCksCisJCQkJUkszMzA4X0FEQ19DSDFfTUlDX0VO IHwKKwkJCQlSSzMzMDhfQURDX0NIMl9NSUNfRU4pOworCisJCS8qIHZlbmRvciBzdGVwIDYgKi8K KwkJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04wMihn cnApLAorCQkJCVJLMzMwOF9BRENfQ0gxX0FMQ19FTiB8CisJCQkJUkszMzA4X0FEQ19DSDJfQUxD X0VOKTsKKworCQkvKiB2ZW5kb3Igc3RlcCA3ICovCisJCXJlZ21hcF9zZXRfYml0cyhyazMzMDgt PnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMDUoZ3JwKSwKKwkJCQlSSzMzMDhfQURDX0NIMV9D TEtfRU4gfAorCQkJCVJLMzMwOF9BRENfQ0gyX0NMS19FTik7CisKKwkJLyogdmVuZG9yIHN0ZXAg OCAqLworCQlyZWdtYXBfc2V0X2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NP TjA1KGdycCksCisJCQkJUkszMzA4X0FEQ19DSDFfQURDX0VOIHwKKwkJCQlSSzMzMDhfQURDX0NI Ml9BRENfRU4pOworCisJCS8qIHZlbmRvciBzdGVwIDkgKi8KKwkJcmVnbWFwX3NldF9iaXRzKHJr MzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04wNShncnApLAorCQkJCVJLMzMwOF9BRENf Q0gxX0FEQ19XT1JLIHwKKwkJCQlSSzMzMDhfQURDX0NIMl9BRENfV09SSyk7CisKKwkJLyogdmVu ZG9yIHN0ZXAgMTAgKi8KKwkJcmVnbWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhf QURDX0FOQV9DT04wMihncnApLAorCQkJCVJLMzMwOF9BRENfQ0gxX0FMQ19XT1JLIHwKKwkJCQlS SzMzMDhfQURDX0NIMl9BTENfV09SSyk7CisKKwkJLyogdmVuZG9yIHN0ZXAgMTEgKi8KKwkJcmVn bWFwX3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04wMChncnApLAor CQkJCVJLMzMwOF9BRENfQ0gxX01JQ19XT1JLIHwKKwkJCQlSSzMzMDhfQURDX0NIMl9NSUNfV09S Syk7CisJfQorCisJcmszMzA4X2NvZGVjX3VwZGF0ZV96ZXJvY3Jvc3MocmszMzA4KTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19hZGNfYW5hX2Rpc2FibGUoc3Ry dWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgsCisJCQkJCXVuc2lnbmVkIGludCBudW1fZ3Jw cykKK3sKKwlpbnQgZ3JwOworCisJZm9yIChncnAgPSAwOyBncnAgPCBudW1fZ3JwczsgZ3JwKysp IHsKKwkJLyogdmVuZG9yIHN0ZXAgMSAqLworCQlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJl Z21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMDIoZ3JwKSwKKwkJCQkgIFJLMzMwOF9BRENfQ0gxX1pF Uk9DUk9TU19ERVRfRU4gfAorCQkJCSAgUkszMzA4X0FEQ19DSDJfWkVST0NST1NTX0RFVF9FTik7 CisKKwkJLyogdmVuZG9yIHN0ZXAgMiAqLworCQlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJl Z21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMDUoZ3JwKSwKKwkJCQkgIFJLMzMwOF9BRENfQ0gxX0FE Q19FTiB8CisJCQkJICBSSzMzMDhfQURDX0NIMl9BRENfRU4pOworCisJCS8qIHZlbmRvciBzdGVw IDMgKi8KKwkJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5B X0NPTjA1KGdycCksCisJCQkJICBSSzMzMDhfQURDX0NIMV9DTEtfRU4gfAorCQkJCSAgUkszMzA4 X0FEQ19DSDJfQ0xLX0VOKTsKKworCQkvKiB2ZW5kb3Igc3RlcCA0ICovCisJCXJlZ21hcF9jbGVh cl9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04wMihncnApLAorCQkJCSAg UkszMzA4X0FEQ19DSDFfQUxDX0VOIHwKKwkJCQkgIFJLMzMwOF9BRENfQ0gyX0FMQ19FTik7CisK KwkJLyogdmVuZG9yIHN0ZXAgNSAqLworCQlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21h cCwgUkszMzA4X0FEQ19BTkFfQ09OMDAoZ3JwKSwKKwkJCQkgIFJLMzMwOF9BRENfQ0gxX01JQ19F TiB8CisJCQkJICBSSzMzMDhfQURDX0NIMl9NSUNfRU4pOworCisJCS8qIHZlbmRvciBzdGVwIDYg Ki8KKwkJcmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NP TjAwKGdycCksCisJCQkJICBSSzMzMDhfQURDX0NIMV9CVUZfUkVGX0VOIHwKKwkJCQkgIFJLMzMw OF9BRENfQ0gyX0JVRl9SRUZfRU4pOworCisJCS8qIHZlbmRvciBzdGVwIDcgKi8KKwkJcmVnbWFw X2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NPTjA2KGdycCksCisJ CQkJICBSSzMzMDhfQURDX0NVUlJFTlRfRU4pOworCisJCS8qIHZlbmRvciBzdGVwIDggKi8KKwkJ cmVnbWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9BRENfQU5BX0NPTjA1KGdy cCksCisJCQkJICBSSzMzMDhfQURDX0NIMV9BRENfV09SSyB8CisJCQkJICBSSzMzMDhfQURDX0NI Ml9BRENfV09SSyk7CisKKwkJLyogdmVuZG9yIHN0ZXAgOSAqLworCQlyZWdtYXBfY2xlYXJfYml0 cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0FEQ19BTkFfQ09OMDIoZ3JwKSwKKwkJCQkgIFJLMzMw OF9BRENfQ0gxX0FMQ19XT1JLIHwKKwkJCQkgIFJLMzMwOF9BRENfQ0gyX0FMQ19XT1JLKTsKKwor CQkvKiB2ZW5kb3Igc3RlcCAxMCAqLworCQlyZWdtYXBfY2xlYXJfYml0cyhyazMzMDgtPnJlZ21h cCwgUkszMzA4X0FEQ19BTkFfQ09OMDAoZ3JwKSwKKwkJCQkgIFJLMzMwOF9BRENfQ0gxX01JQ19X T1JLIHwKKwkJCQkgIFJLMzMwOF9BRENfQ0gyX01JQ19XT1JLKTsKKwl9CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCByazMzMDhfY29kZWNfb3Blbl9jYXB0dXJlKHN0cnVjdCByazMzMDhf Y29kZWNfcHJpdiAqcmszMzA4KQoreworCWludCBncnAgPSAwOworCisJcmszMzA4X2NvZGVjX2Fk Y19hbmFfZW5hYmxlKHJrMzMwOCk7CisJcmszMzA4X2NvZGVjX2FkY19yZWluaXRfbWljcyhyazMz MDgpOworCisJaWYgKHJrMzMwOC0+YWRjX2dycDBfdXNpbmdfbGluZWluKSB7CisJCXJlZ21hcF91 cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0FEQ19ESUdfQ09OMDMoMCksCisJCQkJ ICAgUkszMzA4X0FEQ19MX0NIX0JJU1RfTVNLLAorCQkJCSAgIFJLMzMwOF9BRENfTF9DSF9OT1JN QUxfTEVGVCk7CisJCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0FE Q19ESUdfQ09OMDMoMCksCisJCQkJICAgUkszMzA4X0FEQ19SX0NIX0JJU1RfTVNLLAorCQkJCSAg IFJLMzMwOF9BRENfUl9DSF9OT1JNQUxfUklHSFQpOworCX0gZWxzZSB7CisJCWZvciAoZ3JwID0g MDsgZ3JwIDwgcmszMzA4LT51c2VkX2FkY19ncnBzOyBncnArKykgeworCQkJcmVnbWFwX3VwZGF0 ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLAorCQkJCQkgICBSSzMzMDhfQURDX0RJR19DT04wMyhncnAp LAorCQkJCQkgICBSSzMzMDhfQURDX0xfQ0hfQklTVF9NU0ssCisJCQkJCSAgIFJLMzMwOF9BRENf TF9DSF9OT1JNQUxfTEVGVCk7CisJCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAs CisJCQkJCSAgIFJLMzMwOF9BRENfRElHX0NPTjAzKGdycCksCisJCQkJCSAgIFJLMzMwOF9BRENf Ul9DSF9CSVNUX01TSywKKwkJCQkJICAgUkszMzA4X0FEQ19SX0NIX05PUk1BTF9SSUdIVCk7CisJ CX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcmszMzA4X2NvZGVjX2FkY19t Y2xrX2Rpc2FibGUoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgpCit7CisJcmVnbWFw X3NldF9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfR0xCX0NPTiwgUkszMzA4X0FEQ19NQ0xL X0dBVElOR19NU0spOworfQorCitzdGF0aWMgdm9pZCByazMzMDhfY29kZWNfYWRjX21jbGtfZW5h YmxlKHN0cnVjdCByazMzMDhfY29kZWNfcHJpdiAqcmszMzA4KQoreworCXJlZ21hcF9jbGVhcl9i aXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfR0xCX0NPTiwgUkszMzA4X0FEQ19NQ0xLX0dBVElO R19NU0spOworCXVzbGVlcF9yYW5nZSgyMCwgNDApOworfQorCitzdGF0aWMgdm9pZCByazMzMDhf Y29kZWNfZGFjX21jbGtfZGlzYWJsZShzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCkK K3sKKwlyZWdtYXBfc2V0X2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9HTEJfQ09OLCBSSzMz MDhfREFDX01DTEtfR0FUSU5HX01TSyk7Cit9CisKK3N0YXRpYyB2b2lkIHJrMzMwOF9jb2RlY19k YWNfbWNsa19lbmFibGUoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDgpCit7CisJcmVn bWFwX2NsZWFyX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9HTEJfQ09OLCBSSzMzMDhfREFD X01DTEtfR0FUSU5HX01TSyk7CisJdXNsZWVwX3JhbmdlKDIwLCA0MCk7Cit9CisKK3N0YXRpYyBp bnQgcmszMzA4X2NvZGVjX2xscF9kb3duKHN0cnVjdCByazMzMDhfY29kZWNfcHJpdiAqcmszMzA4 KQoreworCXJrMzMwOF9jb2RlY19hZGNfbWNsa19kaXNhYmxlKHJrMzMwOCk7CisJcmszMzA4X2Nv ZGVjX2RhY19tY2xrX2Rpc2FibGUocmszMzA4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IHJrMzMwOF9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0s CisJCQkgICAgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkgICAgc3RydWN0 IHNuZF9zb2NfZGFpICpkYWkpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25l bnQgPSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCA9 IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisJaW50IHJldDsKKwor CWlmIChzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLKSB7CisJ CS8qIERBQyBvbmx5IHN1cHBvcnRzIDIgY2hhbm5lbHMgKi8KKwkJcmszMzA4X2NvZGVjX2RhY19t Y2xrX2VuYWJsZShyazMzMDgpOworCQlyazMzMDhfY29kZWNfZGFjX2VuYWJsZShyazMzMDgpOwor CQlyazMzMDhfY29kZWNfZGFjX2RpZ19jb25maWcocmszMzA4LCBwYXJhbXMpOworCX0gZWxzZSB7 CisJCXJrMzMwOF9jb2RlY19taWNiaWFzX2FwcGx5KHJrMzMwOCk7CisJCXJrMzMwOF9jb2RlY19h ZGNfbWNsa19lbmFibGUocmszMzA4KTsKKwkJcmV0ID0gcmszMzA4X2NvZGVjX3VwZGF0ZV9hZGNf Z3JwcyhyazMzMDgsIHBhcmFtcyk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwor CQlyazMzMDhfY29kZWNfb3Blbl9jYXB0dXJlKHJrMzMwOCk7CisJCXJrMzMwOF9jb2RlY19hZ2Nf ZGlnX2NvbmZpZyhyazMzMDgsIHBhcmFtcyk7CisJCXJrMzMwOF9jb2RlY19hZGNfZGlnX2NvbmZp ZyhyazMzMDgsIHBhcmFtcyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHJr MzMwOF9wY21fc2h1dGRvd24oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJ CQkJc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50 ICpjb21wb25lbnQgPSBkYWktPmNvbXBvbmVudDsKKwlzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYg KnJrMzMwOCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisKKwlp ZiAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykgeworCQly azMzMDhfY29kZWNfZGFjX2Rpc2FibGUocmszMzA4KTsKKwkJcmszMzA4X2NvZGVjX2RhY19tY2xr X2Rpc2FibGUocmszMzA4KTsKKwl9IGVsc2UgeworCQlyazMzMDhfY29kZWNfYWRjX2FuYV9kaXNh YmxlKHJrMzMwOCwgcmszMzA4LT51c2VkX2FkY19ncnBzKTsKKwkJcmszMzA4X2NvZGVjX2FkY19t Y2xrX2Rpc2FibGUocmszMzA4KTsKKwkJcmszMzA4X2NvZGVjX21pY2JpYXNfZGlzYWJsZShyazMz MDgpOworCX0KK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhaV9vcHMgcmszMzA4 X2RhaV9vcHMgPSB7CisJLmh3X3BhcmFtcyA9IHJrMzMwOF9od19wYXJhbXMsCisJLnNldF9mbXQg PSByazMzMDhfc2V0X2RhaV9mbXQsCisJLm11dGVfc3RyZWFtID0gcmszMzA4X211dGVfc3RyZWFt LAorCS5zaHV0ZG93biA9IHJrMzMwOF9wY21fc2h1dGRvd24sCit9OworCitzdGF0aWMgc3RydWN0 IHNuZF9zb2NfZGFpX2RyaXZlciByazMzMDhfZGFpW10gPSB7CisJeworCQkubmFtZSA9ICJyazMz MDgtaGlmaSIsCisJCS5pZCA9IFJLMzMwOF9ISUZJLAorCQkucGxheWJhY2sgPSB7CisJCQkuc3Ry ZWFtX25hbWUgPSAiSGlGaSBQbGF5YmFjayIsCisJCQkuY2hhbm5lbHNfbWluID0gMiwKKwkJCS5j aGFubmVsc19tYXggPSAyLAorCQkJLnJhdGVzID0gU05EUlZfUENNX1JBVEVfODAwMF8xOTIwMDAs CisJCQkuZm9ybWF0cyA9IChTTkRSVl9QQ01fRk1UQklUX1MxNl9MRSB8CisJCQkJICAgIFNORFJW X1BDTV9GTVRCSVRfUzIwXzNMRSB8CisJCQkJICAgIFNORFJWX1BDTV9GTVRCSVRfUzI0X0xFIHwK KwkJCQkgICAgU05EUlZfUENNX0ZNVEJJVF9TMzJfTEUpLAorCQl9LAorCQkuY2FwdHVyZSA9IHsK KwkJCS5zdHJlYW1fbmFtZSA9ICJIaUZpIENhcHR1cmUiLAorCQkJLmNoYW5uZWxzX21pbiA9IDEs CisJCQkuY2hhbm5lbHNfbWF4ID0gOCwKKwkJCS5yYXRlcyA9IFNORFJWX1BDTV9SQVRFXzgwMDBf MTkyMDAwLAorCQkJLmZvcm1hdHMgPSAoU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUgfAorCQkJCSAg ICBTTkRSVl9QQ01fRk1UQklUX1MyMF8zTEUgfAorCQkJCSAgICBTTkRSVl9QQ01fRk1UQklUX1My NF9MRSB8CisJCQkJICAgIFNORFJWX1BDTV9GTVRCSVRfUzMyX0xFKSwKKwkJfSwKKwkJLm9wcyA9 ICZyazMzMDhfZGFpX29wcywKKwl9LAorfTsKKworc3RhdGljIGludCByazMzMDhfY29kZWNfZGVm YXVsdF9nYWlucyhzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCkKK3sKKwlpbnQgZ3Jw OworCisJZm9yIChncnAgPSAwOyBncnAgPCBBRENfTFJfR1JPVVBfTUFYOyBncnArKykgeworCQkv KiAxMjogc2V0IEFEQyBnYWluIHRvIDIwIGRCIChyZWNvbW1lbmRlZCBieSBUUk0gd2hlbiB1c2lu ZyBNSUMgaW5wdXQpICovCisJCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUksz MzA4X0FEQ19BTkFfQ09OMDEoZ3JwKSwKKwkJCQkgICBSSzMzMDhfQURDX0NIMV9NSUNfR0FJTl9N U0sgfAorCQkJCSAgIFJLMzMwOF9BRENfQ0gyX01JQ19HQUlOX01TSywKKwkJCQkgICBSSzMzMDhf QURDX0NIMV9NSUNfR0FJTl8yMERCIHwKKwkJCQkgICBSSzMzMDhfQURDX0NIMl9NSUNfR0FJTl8y MERCKTsKKworCS8qIHZlbmRvciBzdGVwIDEzLCBzZXQgQUxDIGRlZmF1bHQgZ2FpbnMgKi8KKwkJ cmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfQURDX0FOQV9DT04wMyhn cnApLAorCQkJCSAgIFJLMzMwOF9BRENfQ0gxX0FMQ19HQUlOX01TSywKKwkJCQkgICBSSzMzMDhf QURDX0NIMV9BTENfR0FJTl8wREIpOworCQlyZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdt YXAsIFJLMzMwOF9BRENfQU5BX0NPTjA0KGdycCksCisJCQkJICAgUkszMzA4X0FEQ19DSDJfQUxD X0dBSU5fTVNLLAorCQkJCSAgIFJLMzMwOF9BRENfQ0gyX0FMQ19HQUlOXzBEQik7CisJfQorCisJ LyogUHJlcGFyZSBEQUMgZ2FpbnMgKi8KKwkvKiBTdGVwIDE1LCBzZXQgSFBNSVggZGVmYXVsdCBn YWlucyAqLworCXJlZ21hcF91cGRhdGVfYml0cyhyazMzMDgtPnJlZ21hcCwgUkszMzA4X0RBQ19B TkFfQ09OMTIsCisJCQkgICBSSzMzMDhfREFDX0xfSFBNSVhfR0FJTl9NU0sgfAorCQkJICAgUksz MzA4X0RBQ19SX0hQTUlYX0dBSU5fTVNLLAorCQkJICAgUkszMzA4X0RBQ19MX0hQTUlYX0dBSU5f TkRCXzYgfAorCQkJICAgUkszMzA4X0RBQ19SX0hQTUlYX0dBSU5fTkRCXzYpOworCisJLyogU3Rl cCAxOCwgc2V0IEhQT1VUIGRlZmF1bHQgZ2FpbnMgKi8KKwlyZWdtYXBfdXBkYXRlX2JpdHMocmsz MzA4LT5yZWdtYXAsIFJLMzMwOF9EQUNfQU5BX0NPTjA1LAorCQkJICAgUkszMzA4X0RBQ19MX0hQ T1VUX0dBSU5fTVNLLAorCQkJICAgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fTkRCXzM5KTsKKwly ZWdtYXBfdXBkYXRlX2JpdHMocmszMzA4LT5yZWdtYXAsIFJLMzMwOF9EQUNfQU5BX0NPTjA2LAor CQkJICAgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTVNLLAorCQkJICAgUkszMzA4X0RBQ19SX0hQ T1VUX0dBSU5fTkRCXzM5KTsKKworCS8qIFVzaW5nIHRoZSBzYW1lIGdhaW4gdG8gSFBPVVQgTFIg Y2hhbm5lbHMgKi8KKwlyazMzMDgtPmhwb3V0X2xfZGdhaW4gPSBSSzMzMDhfREFDX0xfSFBPVVRf R0FJTl9OREJfMzk7CisKKwkvKiBTdGVwIDE5LCBzZXQgTElORU9VVCBkZWZhdWx0IGdhaW5zICov CisJcmVnbWFwX3VwZGF0ZV9iaXRzKHJrMzMwOC0+cmVnbWFwLCBSSzMzMDhfREFDX0FOQV9DT04w NCwKKwkJCSAgIFJLMzMwOF9EQUNfTF9MSU5FT1VUX0dBSU5fTVNLIHwKKwkJCSAgIFJLMzMwOF9E QUNfUl9MSU5FT1VUX0dBSU5fTVNLLAorCQkJICAgUkszMzA4X0RBQ19MX0xJTkVPVVRfR0FJTl9O REJfNiB8CisJCQkgICBSSzMzMDhfREFDX1JfTElORU9VVF9HQUlOX05EQl82KTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19jb250cm9sc19wcmVwYXJlKHN0cnVj dCByazMzMDhfY29kZWNfcHJpdiAqcmszMzA4KQoreworCWludCBncnA7CisKKwlmb3IgKGdycCA9 IDA7IGdycCA8IEFEQ19MUl9HUk9VUF9NQVg7IGdycCsrKSB7CisJCXJrMzMwOC0+YWdjX2xbZ3Jw XSA9IDA7CisJCXJrMzMwOC0+YWdjX3JbZ3JwXSA9IDA7CisJfQorCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgcmszMzA4X2NvZGVjX3ByZXBhcmUoc3RydWN0IHJrMzMwOF9jb2RlY19wcml2 ICpyazMzMDgpCit7CisJLyogQ2xlYXIgcmVnaXN0ZXJzIGZvciBBREMgYW5kIERBQyAqLworCXJr MzMwOF9jb2RlY19kYWNfZGlzYWJsZShyazMzMDgpOworCXJrMzMwOF9jb2RlY19hZGNfYW5hX2Rp c2FibGUocmszMzA4LCBBRENfTFJfR1JPVVBfTUFYKTsKKwlyazMzMDhfY29kZWNfZGVmYXVsdF9n YWlucyhyazMzMDgpOworCXJrMzMwOF9jb2RlY19sbHBfZG93bihyazMzMDgpOworCXJrMzMwOF9j b2RlY19jb250cm9sc19wcmVwYXJlKHJrMzMwOCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCByazMzMDhfcHJvYmUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCit7 CisJc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDggPSBzbmRfc29jX2NvbXBvbmVudF9n ZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCisJcmszMzA4LT5jb21wb25lbnQgPSBjb21wb25lbnQ7 CisKKwlyazMzMDhfY29kZWNfcmVzZXQoY29tcG9uZW50KTsKKwlyazMzMDhfY29kZWNfcG93ZXJf b24ocmszMzA4KTsKKworCXJrMzMwOF9jb2RlY19taWNiaWFzX2Rpc2FibGUocmszMzA4KTsKKwor CXJrMzMwOF9jb2RlY19wcmVwYXJlKHJrMzMwOCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IHZvaWQgcmszMzA4X3JlbW92ZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCkK K3sKKwlzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCA9IHNuZF9zb2NfY29tcG9uZW50 X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7CisKKwlyazMzMDhfY29kZWNfbWljYmlhc19kaXNhYmxl KHJrMzMwOCk7CisJcmszMzA4X2NvZGVjX3Bvd2VyX29mZihyazMzMDgpOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZlciBzb2NfY29kZWNfZGV2X3JrMzMw OCA9IHsKKwkucHJvYmUgPSByazMzMDhfcHJvYmUsCisJLnJlbW92ZSA9IHJrMzMwOF9yZW1vdmUs CisJLnNldF9iaWFzX2xldmVsID0gcmszMzA4X3NldF9iaWFzX2xldmVsLAorCS5jb250cm9scyA9 IHJrMzMwOF9jb2RlY19jb250cm9scywKKwkubnVtX2NvbnRyb2xzID0gQVJSQVlfU0laRShyazMz MDhfY29kZWNfY29udHJvbHMpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29u ZmlnIHJrMzMwOF9jb2RlY19yZWdtYXBfY29uZmlnID0geworCS5yZWdfYml0cyA9IDMyLAorCS5y ZWdfc3RyaWRlID0gNCwKKwkudmFsX2JpdHMgPSAzMiwKKwkubWF4X3JlZ2lzdGVyID0gUkszMzA4 X0RBQ19BTkFfQ09OMTUsCit9OworCitzdGF0aWMgaW50IHJrMzMwOF9jb2RlY19nZXRfdmVyc2lv bihzdHJ1Y3QgcmszMzA4X2NvZGVjX3ByaXYgKnJrMzMwOCkKK3sKKwl1bnNpZ25lZCBpbnQgY2hp cF9pZDsKKworCXJlZ21hcF9yZWFkKHJrMzMwOC0+Z3JmLCBHUkZfQ0hJUF9JRCwgJmNoaXBfaWQp OworCXN3aXRjaCAoY2hpcF9pZCkgeworCWNhc2UgMzMwNjoKKwkJcmszMzA4LT5jb2RlY192ZXIg PSBBQ09ERUNfVkVSU0lPTl9BOworCQlicmVhazsKKwljYXNlIDB4MzMwODoKKwkJcmszMzA4LT5j b2RlY192ZXIgPSBBQ09ERUNfVkVSU0lPTl9COworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1 cm4gZGV2X2Vycl9wcm9iZShyazMzMDgtPmRldiwgLUVJTlZBTCwgIlVua25vd24gY2hpcF9pZDog MHgleFxuIiwgY2hpcF9pZCk7CisJfQorCisJZGV2X2luZm8ocmszMzA4LT5kZXYsICJGb3VuZCBj b2RlYyB2ZXJzaW9uICVYXG4iLCByazMzMDgtPmNvZGVjX3Zlcik7CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgcmszMzA4X2NvZGVjX3BhcnNlX2R0KHN0cnVjdCByazMzMDhfY29kZWNfcHJp diAqcmszMzA4KQoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSByazMzMDgtPmRldi0+b2Zf bm9kZTsKKwlpbnQgZXJyOworCisJLyogRGVmYXVsdCB2YWx1ZSBpcyAwICovCisJZXJyID0gb2Zf cHJvcGVydHlfcmVhZF91MzIobnAsICJyb2NrY2hpcCxtaWNiaWFzLWF2ZGQtbXVsdGlwbGllciIs CisJCQkJICAgJnJrMzMwOC0+bWljYmlhc19hdmRkX211bHQpOworCWlmIChyazMzMDgtPm1pY2Jp YXNfYXZkZF9tdWx0ID49IFJLMzMwOF9DT0RFQ19NSUNCSUFTX05VTSkKKwkJcmV0dXJuIGRldl9l cnJfcHJvYmUocmszMzA4LT5kZXYsIC1FSU5WQUwsCisJCQkJICAgICAiSW52YWxpZCB2YWx1ZSBm b3IgJ3JvY2tjaGlwLG1pY2JpYXMtYXZkZC1tdWx0aXBsaWVyJ1xuIik7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCByazMzMDhfcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ZGV2Lm9mX25v ZGU7CisJc3RydWN0IHJrMzMwOF9jb2RlY19wcml2ICpyazMzMDg7CisJc3RydWN0IHJlc291cmNl ICpyZXM7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCWludCBlcnI7CisKKwlyazMzMDggPSBkZXZt X2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpyazMzMDgpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IXJrMzMwOCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlyazMzMDgtPmdyZiA9IHN5c2Nvbl9yZWdt YXBfbG9va3VwX2J5X3BoYW5kbGUobnAsICJyb2NrY2hpcCxncmYiKTsKKwlpZiAoSVNfRVJSKHJr MzMwOC0+Z3JmKSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgUFRSX0VSUihy azMzMDgtPmdyZiksCisJCQkiTWlzc2luZyAncm9ja2NoaXAsZ3JmJyBwcm9wZXJ0eVxuIik7CisK KwlyazMzMDgtPmRldiA9ICZwZGV2LT5kZXY7CisKKwllcnIgPSByazMzMDhfY29kZWNfcGFyc2Vf ZHQocmszMzA4KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJcmszMzA4LT5yZXNldCA9 IGRldm1fcmVzZXRfY29udHJvbF9nZXQoJnBkZXYtPmRldiwgImFjb2RlYyIpOworCWlmIChJU19F UlIocmszMzA4LT5yZXNldCkpIHsKKwkJZXJyID0gUFRSX0VSUihyazMzMDgtPnJlc2V0KTsKKwkJ aWYgKGVyciAhPSAtRU5PRU5UKQorCQkJcmV0dXJuIGVycjsKKworCQlkZXZfZGJnKCZwZGV2LT5k ZXYsICJObyByZXNldCBjb250cm9sIGZvdW5kXG4iKTsKKwkJcmszMzA4LT5yZXNldCA9IE5VTEw7 CisJfQorCisJcmszMzA4LT5wY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJoY2xrIik7 CisJaWYgKElTX0VSUihyazMzMDgtPnBjbGspKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRl di0+ZGV2LCBQVFJfRVJSKHJrMzMwOC0+cGNsayksICJDYW4ndCBnZXQgaGNsa1xuIik7CisKKwly azMzMDgtPm1jbGtfcnggPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgIm1jbGtfcngiKTsKKwlp ZiAoSVNfRVJSKHJrMzMwOC0+bWNsa19yeCkpCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2 LT5kZXYsIFBUUl9FUlIocmszMzA4LT5tY2xrX3J4KSwgIkNhbid0IGdldCBtY2xrX3J4XG4iKTsK KworCXJrMzMwOC0+bWNsa190eCA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAibWNsa190eCIp OworCWlmIChJU19FUlIocmszMzA4LT5tY2xrX3R4KSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUo JnBkZXYtPmRldiwgUFRSX0VSUihyazMzMDgtPm1jbGtfdHgpLCAiQ2FuJ3QgZ2V0IG1jbGtfdHhc biIpOworCisJZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKHJrMzMwOC0+cGNsayk7CisJaWYgKGVy cikKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgZXJyLCAiRmFpbGVkIHRvIGVu YWJsZSBhY29kZWMgcGNsa1xuIik7CisKKwllcnIgPSBjbGtfcHJlcGFyZV9lbmFibGUocmszMzA4 LT5tY2xrX3J4KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2 LCBlcnIsICJGYWlsZWQgdG8gZW5hYmxlIGkycyBtY2xrX3J4XG4iKTsKKworCWVyciA9IGNsa19w cmVwYXJlX2VuYWJsZShyazMzMDgtPm1jbGtfdHgpOworCWlmIChlcnIpCisJCXJldHVybiBkZXZf ZXJyX3Byb2JlKCZwZGV2LT5kZXYsIGVyciwgIkZhaWxlZCB0byBlbmFibGUgaTJzIG1jbGtfdHhc biIpOworCisJZXJyID0gcmszMzA4X2NvZGVjX2dldF92ZXJzaW9uKHJrMzMwOCk7CisJaWYgKGVy cikKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgZXJyLCAiRmFpbGVkIHRvIGdl dCBhY29kZWMgdmVyc2lvblxuIik7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRl diwgSU9SRVNPVVJDRV9NRU0sIDApOworCWJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBk ZXYtPmRldiwgcmVzKTsKKwlpZiAoSVNfRVJSKGJhc2UpKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9i ZSgmcGRldi0+ZGV2LCBQVFJfRVJSKGJhc2UpLCAiRmFpbGVkIHRvIGlvcmVtYXAgcmVzb3VyY2Vc biIpOworCisJcmszMzA4LT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oJnBkZXYtPmRl diwgYmFzZSwKKwkJCQkJICAgICAgICZyazMzMDhfY29kZWNfcmVnbWFwX2NvbmZpZyk7CisJaWYg KElTX0VSUihyazMzMDgtPnJlZ21hcCkpCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKCZwZGV2LT5k ZXYsIFBUUl9FUlIocmszMzA4LT5yZWdtYXApLAorCQkJCSAgICAgIkZhaWxlZCB0byBpbml0IHJl Z21hcFxuIik7CisKKwlyazMzMDgtPmFkY19ncnAwX3VzaW5nX2xpbmVpbiA9IEFEQ19HUlAwX01J Q0lOOworCXJrMzMwOC0+ZGFjX291dHB1dCA9IERBQ19MSU5FT1VUOworCisJcGxhdGZvcm1fc2V0 X2RydmRhdGEocGRldiwgcmszMzA4KTsKKworCWVyciA9IGRldm1fc25kX3NvY19yZWdpc3Rlcl9j b21wb25lbnQoJnBkZXYtPmRldiwgJnNvY19jb2RlY19kZXZfcmszMzA4LAorCQkJCQkgICAgICBy azMzMDhfZGFpLCBBUlJBWV9TSVpFKHJrMzMwOF9kYWkpKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4g ZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCBlcnIsICJGYWlsZWQgdG8gcmVnaXN0ZXIgY29kZWNc biIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IHJrMzMwOGNvZGVjX29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxy azMzMDgtY29kZWMiLCB9LAorCXt9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJrMzMw OGNvZGVjX29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmszMzA4 X2NvZGVjX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJyazMzMDgtYWNvZGVj IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKHJrMzMwOGNvZGVjX29mX21hdGNo KSwKKwl9LAorCS5wcm9iZSA9IHJrMzMwOF9wbGF0Zm9ybV9wcm9iZSwKK307Cittb2R1bGVfcGxh dGZvcm1fZHJpdmVyKHJrMzMwOF9jb2RlY19kcml2ZXIpOworCitNT0RVTEVfQVVUSE9SKCJYaW5n IFpoZW5nIDx6aGVuZ3hpbmdAcm9jay1jaGlwcy5jb20+Iik7CitNT0RVTEVfQVVUSE9SKCJMdWNh IENlcmVzb2xpIDxsdWNhLmNlcmVzb2xpQGJvb3RsaW4uY29tPiIpOworTU9EVUxFX0RFU0NSSVBU SU9OKCJBU29DIFJLMzMwOCBDb2RlYyBEcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsK ZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvcmszMzA4X2NvZGVjLmggYi9zb3VuZC9zb2Mv Y29kZWNzL3JrMzMwOF9jb2RlYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uN2FiMDg5NzIxNDFkCi0tLSAvZGV2L251bGwKKysrIGIvc291bmQvc29jL2NvZGVjcy9y azMzMDhfY29kZWMuaApAQCAtMCwwICsxLDY0OCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAtb25seSAqLworLyoKKyAqIFJvY2tjaGlwIFJLMzMwOCBpbnRlcm5hbCBhdWRp byBjb2RlYyBkcml2ZXIgLS0gcmVnaXN0ZXIgZGVmaW5pdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQg KGMpIDIwMTgsIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby4sIEx0ZCBBbGwgcmlnaHRz IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDIyLCBWaXZheC1NZXRyb3RlY2ggTHRkCisg Ki8KKworI2lmbmRlZiBfX1JLMzMwOF9DT0RFQ19IX18KKyNkZWZpbmUgX19SSzMzMDhfQ09ERUNf SF9fCisKKyNkZWZpbmUgUkszMzA4X0dMQl9DT04JCQkJMHgwMAorCisvKiBBREMgRElHSVRBTCBS RUdJU1RFUlMgKi8KKworLyoKKyAqIFRoZSBBREMgZ3JvdXAgYXJlIDAgfiAzLCB0aGF0IGNvbnRy b2w6CisgKgorICogQ0gwOiBsZWZ0XzAoQURDMSkgYW5kIHJpZ2h0XzAoQURDMikKKyAqIENIMTog bGVmdF8xKEFEQzMpIGFuZCByaWdodF8xKEFEQzQpCisgKiBDSDI6IGxlZnRfMihBREM1KSBhbmQg cmlnaHRfMihBREM2KQorICogQ0gzOiBsZWZ0XzMoQURDNykgYW5kIHJpZ2h0XzMoQURDOCkKKyAq LworI2RlZmluZSBSSzMzMDhfQURDX0RJR19PRkZTRVQoY2gpCQkoKChjaCkgJiAweDMpICogMHhj MCArIDB4MCkKKworI2RlZmluZSBSSzMzMDhfQURDX0RJR19DT04wMShjaCkJCShSSzMzMDhfQURD X0RJR19PRkZTRVQoKGNoKSkgKyAweDA0KQorI2RlZmluZSBSSzMzMDhfQURDX0RJR19DT04wMihj aCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQoKGNoKSkgKyAweDA4KQorI2RlZmluZSBSSzMzMDhf QURDX0RJR19DT04wMyhjaCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQoKGNoKSkgKyAweDBjKQor I2RlZmluZSBSSzMzMDhfQURDX0RJR19DT04wNChjaCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQo KGNoKSkgKyAweDEwKQorI2RlZmluZSBSSzMzMDhfQURDX0RJR19DT04wNyhjaCkJCShSSzMzMDhf QURDX0RJR19PRkZTRVQoKGNoKSkgKyAweDFjKQorCisjZGVmaW5lIFJLMzMwOF9BTENfTF9ESUdf Q09OMDAoY2gpCQkoUkszMzA4X0FEQ19ESUdfT0ZGU0VUKChjaCkpICsgMHg0MCkKKyNkZWZpbmUg UkszMzA4X0FMQ19MX0RJR19DT04wMShjaCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQoKGNoKSkg KyAweDQ0KQorI2RlZmluZSBSSzMzMDhfQUxDX0xfRElHX0NPTjAyKGNoKQkJKFJLMzMwOF9BRENf RElHX09GRlNFVCgoY2gpKSArIDB4NDgpCisjZGVmaW5lIFJLMzMwOF9BTENfTF9ESUdfQ09OMDMo Y2gpCQkoUkszMzA4X0FEQ19ESUdfT0ZGU0VUKChjaCkpICsgMHg0YykKKyNkZWZpbmUgUkszMzA4 X0FMQ19MX0RJR19DT04wNChjaCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQoKGNoKSkgKyAweDUw KQorI2RlZmluZSBSSzMzMDhfQUxDX0xfRElHX0NPTjA1KGNoKQkJKFJLMzMwOF9BRENfRElHX09G RlNFVCgoY2gpKSArIDB4NTQpCisjZGVmaW5lIFJLMzMwOF9BTENfTF9ESUdfQ09OMDYoY2gpCQko UkszMzA4X0FEQ19ESUdfT0ZGU0VUKChjaCkpICsgMHg1OCkKKyNkZWZpbmUgUkszMzA4X0FMQ19M X0RJR19DT04wNyhjaCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQoKGNoKSkgKyAweDVjKQorI2Rl ZmluZSBSSzMzMDhfQUxDX0xfRElHX0NPTjA4KGNoKQkJKFJLMzMwOF9BRENfRElHX09GRlNFVCgo Y2gpKSArIDB4NjApCisjZGVmaW5lIFJLMzMwOF9BTENfTF9ESUdfQ09OMDkoY2gpCQkoUkszMzA4 X0FEQ19ESUdfT0ZGU0VUKChjaCkpICsgMHg2NCkKKyNkZWZpbmUgUkszMzA4X0FMQ19MX0RJR19D T04xMihjaCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQoKGNoKSkgKyAweDcwKQorCisjZGVmaW5l IFJLMzMwOF9BTENfUl9ESUdfQ09OMDAoY2gpCQkoUkszMzA4X0FEQ19ESUdfT0ZGU0VUKChjaCkp ICsgMHg4MCkKKyNkZWZpbmUgUkszMzA4X0FMQ19SX0RJR19DT04wMShjaCkJCShSSzMzMDhfQURD X0RJR19PRkZTRVQoKGNoKSkgKyAweDg0KQorI2RlZmluZSBSSzMzMDhfQUxDX1JfRElHX0NPTjAy KGNoKQkJKFJLMzMwOF9BRENfRElHX09GRlNFVCgoY2gpKSArIDB4ODgpCisjZGVmaW5lIFJLMzMw OF9BTENfUl9ESUdfQ09OMDMoY2gpCQkoUkszMzA4X0FEQ19ESUdfT0ZGU0VUKChjaCkpICsgMHg4 YykKKyNkZWZpbmUgUkszMzA4X0FMQ19SX0RJR19DT04wNChjaCkJCShSSzMzMDhfQURDX0RJR19P RkZTRVQoKGNoKSkgKyAweDkwKQorI2RlZmluZSBSSzMzMDhfQUxDX1JfRElHX0NPTjA1KGNoKQkJ KFJLMzMwOF9BRENfRElHX09GRlNFVCgoY2gpKSArIDB4OTQpCisjZGVmaW5lIFJLMzMwOF9BTENf Ul9ESUdfQ09OMDYoY2gpCQkoUkszMzA4X0FEQ19ESUdfT0ZGU0VUKChjaCkpICsgMHg5OCkKKyNk ZWZpbmUgUkszMzA4X0FMQ19SX0RJR19DT04wNyhjaCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQo KGNoKSkgKyAweDljKQorI2RlZmluZSBSSzMzMDhfQUxDX1JfRElHX0NPTjA4KGNoKQkJKFJLMzMw OF9BRENfRElHX09GRlNFVCgoY2gpKSArIDB4YTApCisjZGVmaW5lIFJLMzMwOF9BTENfUl9ESUdf Q09OMDkoY2gpCQkoUkszMzA4X0FEQ19ESUdfT0ZGU0VUKChjaCkpICsgMHhhNCkKKyNkZWZpbmUg UkszMzA4X0FMQ19SX0RJR19DT04xMihjaCkJCShSSzMzMDhfQURDX0RJR19PRkZTRVQoKGNoKSkg KyAweGIwKQorCisvKiBEQUMgRElHSVRBTCBSRUdJU1RFUlMgKi8KKyNkZWZpbmUgUkszMzA4X0RB Q19ESUdfT0ZGU0VUCQkJMHgzMDAKKyNkZWZpbmUgUkszMzA4X0RBQ19ESUdfQ09OMDEJCQkoUksz MzA4X0RBQ19ESUdfT0ZGU0VUICsgMHgwNCkKKyNkZWZpbmUgUkszMzA4X0RBQ19ESUdfQ09OMDIJ CQkoUkszMzA4X0RBQ19ESUdfT0ZGU0VUICsgMHgwOCkKKyNkZWZpbmUgUkszMzA4X0RBQ19ESUdf Q09OMDMJCQkoUkszMzA4X0RBQ19ESUdfT0ZGU0VUICsgMHgwYykKKyNkZWZpbmUgUkszMzA4X0RB Q19ESUdfQ09OMDQJCQkoUkszMzA4X0RBQ19ESUdfT0ZGU0VUICsgMHgxMCkKKyNkZWZpbmUgUksz MzA4X0RBQ19ESUdfQ09OMDUJCQkoUkszMzA4X0RBQ19ESUdfT0ZGU0VUICsgMHgxNCkKKyNkZWZp bmUgUkszMzA4X0RBQ19ESUdfQ09OMTAJCQkoUkszMzA4X0RBQ19ESUdfT0ZGU0VUICsgMHgyOCkK KyNkZWZpbmUgUkszMzA4X0RBQ19ESUdfQ09OMTEJCQkoUkszMzA4X0RBQ19ESUdfT0ZGU0VUICsg MHgyYykKKyNkZWZpbmUgUkszMzA4X0RBQ19ESUdfQ09OMTMJCQkoUkszMzA4X0RBQ19ESUdfT0ZG U0VUICsgMHgzNCkKKyNkZWZpbmUgUkszMzA4X0RBQ19ESUdfQ09OMTQJCQkoUkszMzA4X0RBQ19E SUdfT0ZGU0VUICsgMHgzOCkKKworLyogQURDIEFOQUxPRyBSRUdJU1RFUlMgKi8KKy8qCisgKiBU aGUgQURDIGdyb3VwIGFyZSAwIH4gMywgdGhhdCBjb250cm9sOgorICoKKyAqIENIMDogbGVmdF8w KEFEQzEpIGFuZCByaWdodF8wKEFEQzIpCisgKiBDSDE6IGxlZnRfMShBREMzKSBhbmQgcmlnaHRf MShBREM0KQorICogQ0gyOiBsZWZ0XzIoQURDNSkgYW5kIHJpZ2h0XzIoQURDNikKKyAqIENIMzog bGVmdF8zKEFEQzcpIGFuZCByaWdodF8zKEFEQzgpCisgKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19B TkFfT0ZGU0VUKGNoKQkJKCgoY2gpICYgMHgzKSAqIDB4NDAgKyAweDM0MCkKKyNkZWZpbmUgUksz MzA4X0FEQ19BTkFfQ09OMDAoY2gpCQkoUkszMzA4X0FEQ19BTkFfT0ZGU0VUKChjaCkpICsgMHgw MCkKKyNkZWZpbmUgUkszMzA4X0FEQ19BTkFfQ09OMDEoY2gpCQkoUkszMzA4X0FEQ19BTkFfT0ZG U0VUKChjaCkpICsgMHgwNCkKKyNkZWZpbmUgUkszMzA4X0FEQ19BTkFfQ09OMDIoY2gpCQkoUksz MzA4X0FEQ19BTkFfT0ZGU0VUKChjaCkpICsgMHgwOCkKKyNkZWZpbmUgUkszMzA4X0FEQ19BTkFf Q09OMDMoY2gpCQkoUkszMzA4X0FEQ19BTkFfT0ZGU0VUKChjaCkpICsgMHgwYykKKyNkZWZpbmUg UkszMzA4X0FEQ19BTkFfQ09OMDQoY2gpCQkoUkszMzA4X0FEQ19BTkFfT0ZGU0VUKChjaCkpICsg MHgxMCkKKyNkZWZpbmUgUkszMzA4X0FEQ19BTkFfQ09OMDUoY2gpCQkoUkszMzA4X0FEQ19BTkFf T0ZGU0VUKChjaCkpICsgMHgxNCkKKyNkZWZpbmUgUkszMzA4X0FEQ19BTkFfQ09OMDYoY2gpCQko UkszMzA4X0FEQ19BTkFfT0ZGU0VUKChjaCkpICsgMHgxOCkKKyNkZWZpbmUgUkszMzA4X0FEQ19B TkFfQ09OMDcoY2gpCQkoUkszMzA4X0FEQ19BTkFfT0ZGU0VUKChjaCkpICsgMHgxYykKKyNkZWZp bmUgUkszMzA4X0FEQ19BTkFfQ09OMDgoY2gpCQkoUkszMzA4X0FEQ19BTkFfT0ZGU0VUKChjaCkp ICsgMHgyMCkKKyNkZWZpbmUgUkszMzA4X0FEQ19BTkFfQ09OMTAoY2gpCQkoUkszMzA4X0FEQ19B TkFfT0ZGU0VUKChjaCkpICsgMHgyOCkKKyNkZWZpbmUgUkszMzA4X0FEQ19BTkFfQ09OMTEoY2gp CQkoUkszMzA4X0FEQ19BTkFfT0ZGU0VUKChjaCkpICsgMHgyYykKKworLyogREFDIEFOQUxPRyBS RUdJU1RFUlMgKi8KKyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfT0ZGU0VUCQkJMHg0NDAKKyNkZWZp bmUgUkszMzA4X0RBQ19BTkFfQ09OMDAJCQkoUkszMzA4X0RBQ19BTkFfT0ZGU0VUICsgMHgwMCkK KyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09OMDEJCQkoUkszMzA4X0RBQ19BTkFfT0ZGU0VUICsg MHgwNCkKKyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09OMDIJCQkoUkszMzA4X0RBQ19BTkFfT0ZG U0VUICsgMHgwOCkKKyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09OMDMJCQkoUkszMzA4X0RBQ19B TkFfT0ZGU0VUICsgMHgwYykKKyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09OMDQJCQkoUkszMzA4 X0RBQ19BTkFfT0ZGU0VUICsgMHgxMCkKKyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09OMDUJCQko UkszMzA4X0RBQ19BTkFfT0ZGU0VUICsgMHgxNCkKKyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09O MDYJCQkoUkszMzA4X0RBQ19BTkFfT0ZGU0VUICsgMHgxOCkKKyNkZWZpbmUgUkszMzA4X0RBQ19B TkFfQ09OMDcJCQkoUkszMzA4X0RBQ19BTkFfT0ZGU0VUICsgMHgxYykKKyNkZWZpbmUgUkszMzA4 X0RBQ19BTkFfQ09OMDgJCQkoUkszMzA4X0RBQ19BTkFfT0ZGU0VUICsgMHgyMCkKKyNkZWZpbmUg UkszMzA4X0RBQ19BTkFfQ09OMTIJCQkoUkszMzA4X0RBQ19BTkFfT0ZGU0VUICsgMHgzMCkKKyNk ZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09OMTMJCQkoUkszMzA4X0RBQ19BTkFfT0ZGU0VUICsgMHgz NCkKKyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09OMTQJCQkoUkszMzA4X0RBQ19BTkFfT0ZGU0VU ICsgMHgzOCkKKyNkZWZpbmUgUkszMzA4X0RBQ19BTkFfQ09OMTUJCQkoUkszMzA4X0RBQ19BTkFf T0ZGU0VUICsgMHgzYykKKworLyoKKyAqIFRoZXNlIGFyZSB0aGUgYml0cyBmb3IgcmVnaXN0ZXJz CisgKi8KKworLyogUkszMzA4X0dMQl9DT04gLSBSRUc6IDB4MDAwMCAqLworI2RlZmluZSBSSzMz MDhfQURDX0JJU1RfV09SSwkJCUJJVCg3KQorI2RlZmluZSBSSzMzMDhfREFDX0JJU1RfV09SSwkJ CUJJVCg2KQorI2RlZmluZSBSSzMzMDhfQURDX01DTEtfR0FUSU5HX01TSwkJQklUKDUpCisjZGVm aW5lIFJLMzMwOF9EQUNfTUNMS19HQVRJTkdfTVNLCQlCSVQoNCkKKyNkZWZpbmUgUkszMzA4X0NP REVDX1JTVF9NU0sJCQkoMHg3IDw8IDApCisjZGVmaW5lIFJLMzMwOF9BRENfRElHX1dPUksJCQlC SVQoMikKKyNkZWZpbmUgUkszMzA4X0RBQ19ESUdfV09SSwkJCUJJVCgxKQorI2RlZmluZSBSSzMz MDhfU1lTX1dPUksJCQkJQklUKDApCisKKy8qIFJLMzMwOF9BRENfRElHX0NPTjAxIC0gUkVHOiAw eDAwMDQgKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19JMlNfTFJDX1BPTF9SRVZFUlNBTAkJQklUKDcp CisjZGVmaW5lIFJLMzMwOF9BRENfSTJTX1ZBTElEX0xFTl9TRlQJCTUKKyNkZWZpbmUgUkszMzA4 X0FEQ19JMlNfVkFMSURfTEVOX01TSwkJKDB4MyA8PCBSSzMzMDhfQURDX0kyU19WQUxJRF9MRU5f U0ZUKQorI2RlZmluZSBSSzMzMDhfQURDX0kyU19WQUxJRF9MRU5fMzJCSVRTCQkoMHgzIDw8IFJL MzMwOF9BRENfSTJTX1ZBTElEX0xFTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9BRENfSTJTX1ZBTElE X0xFTl8yNEJJVFMJCSgweDIgPDwgUkszMzA4X0FEQ19JMlNfVkFMSURfTEVOX1NGVCkKKyNkZWZp bmUgUkszMzA4X0FEQ19JMlNfVkFMSURfTEVOXzIwQklUUwkJKDB4MSA8PCBSSzMzMDhfQURDX0ky U19WQUxJRF9MRU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfQURDX0kyU19WQUxJRF9MRU5fMTZCSVRT CQkoMHgwIDw8IFJLMzMwOF9BRENfSTJTX1ZBTElEX0xFTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9B RENfSTJTX01PREVfU0ZUCQkJMworI2RlZmluZSBSSzMzMDhfQURDX0kyU19NT0RFX01TSwkJCSgw eDMgPDwgUkszMzA4X0FEQ19JMlNfTU9ERV9TRlQpCisjZGVmaW5lIFJLMzMwOF9BRENfSTJTX01P REVfUENNCQkJKDB4MyA8PCBSSzMzMDhfQURDX0kyU19NT0RFX1NGVCkKKyNkZWZpbmUgUkszMzA4 X0FEQ19JMlNfTU9ERV9JMlMJCQkoMHgyIDw8IFJLMzMwOF9BRENfSTJTX01PREVfU0ZUKQorI2Rl ZmluZSBSSzMzMDhfQURDX0kyU19NT0RFX0xKCQkJKDB4MSA8PCBSSzMzMDhfQURDX0kyU19NT0RF X1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19JMlNfTU9ERV9SSgkJCSgweDAgPDwgUkszMzA4X0FE Q19JMlNfTU9ERV9TRlQpCisjZGVmaW5lIFJLMzMwOF9BRENfSTJTX0xSX1NXQVAJCQlCSVQoMSkK KyNkZWZpbmUgUkszMzA4X0FEQ19JMlNfTU9OTwkJCUJJVCgwKQorCisvKiBSSzMzMDhfQURDX0RJ R19DT04wMiAtIFJFRzogMHgwMDA4ICovCisjZGVmaW5lIFJLMzMwOF9BRENfSU9fTU9ERV9NQVNU RVIJCUJJVCg1KQorI2RlZmluZSBSSzMzMDhfQURDX01PREVfTUFTVEVSCQkJQklUKDQpCisjZGVm aW5lIFJLMzMwOF9BRENfSTJTX0ZSQU1FX0xFTl9TRlQJCTIKKyNkZWZpbmUgUkszMzA4X0FEQ19J MlNfRlJBTUVfTEVOX01TSwkJKDB4MyA8PCBSSzMzMDhfQURDX0kyU19GUkFNRV9MRU5fU0ZUKQor I2RlZmluZSBSSzMzMDhfQURDX0kyU19GUkFNRV8zMkJJVFMJCSgweDMgPDwgUkszMzA4X0FEQ19J MlNfRlJBTUVfTEVOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19JMlNfRlJBTUVfMjRCSVRTCQko MHgyIDw8IFJLMzMwOF9BRENfSTJTX0ZSQU1FX0xFTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9BRENf STJTX0ZSQU1FXzIwQklUUwkJKDB4MSA8PCBSSzMzMDhfQURDX0kyU19GUkFNRV9MRU5fU0ZUKQor I2RlZmluZSBSSzMzMDhfQURDX0kyU19GUkFNRV8xNkJJVFMJCSgweDAgPDwgUkszMzA4X0FEQ19J MlNfRlJBTUVfTEVOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19JMlNfV09SSwkJCUJJVCgxKQor I2RlZmluZSBSSzMzMDhfQURDX0kyU19CSVRfQ0xLX1BPTF9SRVZFUlNBTAlCSVQoMCkKKworLyog UkszMzA4X0FEQ19ESUdfQ09OMDMgLSBSRUc6IDB4MDAwYyAqLworI2RlZmluZSBSSzMzMDhfQURD X0xfQ0hfQklTVF9TRlQJCTIKKyNkZWZpbmUgUkszMzA4X0FEQ19MX0NIX0JJU1RfTVNLCQkoMHgz IDw8IFJLMzMwOF9BRENfTF9DSF9CSVNUX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19MX0NIX05P Uk1BTF9SSUdIVAkJKDB4MyA8PCBSSzMzMDhfQURDX0xfQ0hfQklTVF9TRlQpIC8qIG5vcm1hbCBt b2RlICovCisjZGVmaW5lIFJLMzMwOF9BRENfTF9DSF9CSVNUX0NVQkUJCSgweDIgPDwgUkszMzA4 X0FEQ19MX0NIX0JJU1RfU0ZUKQorI2RlZmluZSBSSzMzMDhfQURDX0xfQ0hfQklTVF9TSU5FCQko MHgxIDw8IFJLMzMwOF9BRENfTF9DSF9CSVNUX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19MX0NI X05PUk1BTF9MRUZUCQkoMHgwIDw8IFJLMzMwOF9BRENfTF9DSF9CSVNUX1NGVCkgLyogbm9ybWFs IG1vZGUgKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19SX0NIX0JJU1RfU0ZUCQkwCisjZGVmaW5lIFJL MzMwOF9BRENfUl9DSF9CSVNUX01TSwkJKDB4MyA8PCBSSzMzMDhfQURDX1JfQ0hfQklTVF9TRlQp CisjZGVmaW5lIFJLMzMwOF9BRENfUl9DSF9OT1JNQUxfTEVGVAkJKDB4MyA8PCBSSzMzMDhfQURD X1JfQ0hfQklTVF9TRlQpIC8qIG5vcm1hbCBtb2RlICovCisjZGVmaW5lIFJLMzMwOF9BRENfUl9D SF9CSVNUX0NVQkUJCSgweDIgPDwgUkszMzA4X0FEQ19SX0NIX0JJU1RfU0ZUKQorI2RlZmluZSBS SzMzMDhfQURDX1JfQ0hfQklTVF9TSU5FCQkoMHgxIDw8IFJLMzMwOF9BRENfUl9DSF9CSVNUX1NG VCkKKyNkZWZpbmUgUkszMzA4X0FEQ19SX0NIX05PUk1BTF9SSUdIVAkJKDB4MCA8PCBSSzMzMDhf QURDX1JfQ0hfQklTVF9TRlQpIC8qIG5vcm1hbCBtb2RlICovCisKKy8qIFJLMzMwOF9BRENfRElH X0NPTjA0IC0gUkVHOiAweDAwMTAgKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19IUEZfUEFUSF9ESVMJ CQlCSVQoMikKKyNkZWZpbmUgUkszMzA4X0FEQ19IUEZfQ1VUT0ZGX1NGVAkJMAorI2RlZmluZSBS SzMzMDhfQURDX0hQRl9DVVRPRkZfTVNLCQkoMHgzIDw8IFJLMzMwOF9BRENfSFBGX0NVVE9GRl9T RlQpCisjZGVmaW5lIFJLMzMwOF9BRENfSFBGX0NVVE9GRl82MTJIWgkJKDB4MiA8PCBSSzMzMDhf QURDX0hQRl9DVVRPRkZfU0ZUKQorI2RlZmluZSBSSzMzMDhfQURDX0hQRl9DVVRPRkZfMjQ1SFoJ CSgweDEgPDwgUkszMzA4X0FEQ19IUEZfQ1VUT0ZGX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19I UEZfQ1VUT0ZGXzIwSFoJCSgweDAgPDwgUkszMzA4X0FEQ19IUEZfQ1VUT0ZGX1NGVCkKKworLyog UkszMzA4X0FEQ19ESUdfQ09OMDcgLSBSRUc6IDB4MDAxYyAqLworI2RlZmluZSBSSzMzMDhfQURD TF9EQVRBX1NGVAkJCTQKKyNkZWZpbmUgUkszMzA4X0FEQ1JfREFUQV9TRlQJCQkyCisjZGVmaW5l IFJLMzMwOF9BRENMX0RBVEFfU0VMX0FEQ0wJCUJJVCgxKQorI2RlZmluZSBSSzMzMDhfQURDUl9E QVRBX1NFTF9BRENSCQlCSVQoMCkKKworLyoKKyAqIFJLMzMwOF9BTENfTF9ESUdfQ09OMDAgLSBS RUc6IDB4MDA0MCArIGNoICogMHhjMAorICogUkszMzA4X0FMQ19SX0RJR19DT04wMCAtIFJFRzog MHgwMDgwICsgY2ggKiAweGMwCisgKi8KKyNkZWZpbmUgUkszMzA4X0dBSU5fQVRUQUNLX0pBQ0sJ CQlCSVQoNikKKyNkZWZpbmUgUkszMzA4X0NUUkxfR0VOX1NGVAkJCTQKKyNkZWZpbmUgUkszMzA4 X0NUUkxfR0VOX01TSwkJCSgweDMgPDwgUkszMzA4X0FMQ19DVFJMX0dFTl9TRlQpCisjZGVmaW5l IFJLMzMwOF9DVFJMX0dFTl9KQUNLMwkJCSgweDMgPDwgUkszMzA4X0FMQ19DVFJMX0dFTl9TRlQp CisjZGVmaW5lIFJLMzMwOF9DVFJMX0dFTl9KQUNLMgkJCSgweDIgPDwgUkszMzA4X0FMQ19DVFJM X0dFTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9DVFJMX0dFTl9KQUNLMQkJCSgweDEgPDwgUkszMzA4 X0FMQ19DVFJMX0dFTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9DVFJMX0dFTl9OT1JNQUwJCQkoMHgw IDw8IFJLMzMwOF9BTENfQ1RSTF9HRU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfQUdDX0hPTERfVElN RV9TRlQJCTAKKyNkZWZpbmUgUkszMzA4X0FHQ19IT0xEX1RJTUVfTVNLCQkoMHhmIDw8IFJLMzMw OF9BR0NfSE9MRF9USU1FX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FHQ19IT0xEX1RJTUVfMVMJCQko MHhhIDw8IFJLMzMwOF9BR0NfSE9MRF9USU1FX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FHQ19IT0xE X1RJTUVfNTEyTVMJCSgweDkgPDwgUkszMzA4X0FHQ19IT0xEX1RJTUVfU0ZUKQorI2RlZmluZSBS SzMzMDhfQUdDX0hPTERfVElNRV8yNTZNUwkJKDB4OCA8PCBSSzMzMDhfQUdDX0hPTERfVElNRV9T RlQpCisjZGVmaW5lIFJLMzMwOF9BR0NfSE9MRF9USU1FXzEyOE1TCQkoMHg3IDw8IFJLMzMwOF9B R0NfSE9MRF9USU1FX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FHQ19IT0xEX1RJTUVfNjRNUwkJKDB4 NiA8PCBSSzMzMDhfQUdDX0hPTERfVElNRV9TRlQpCisjZGVmaW5lIFJLMzMwOF9BR0NfSE9MRF9U SU1FXzMyTVMJCSgweDUgPDwgUkszMzA4X0FHQ19IT0xEX1RJTUVfU0ZUKQorI2RlZmluZSBSSzMz MDhfQUdDX0hPTERfVElNRV8xNk1TCQkoMHg0IDw8IFJLMzMwOF9BR0NfSE9MRF9USU1FX1NGVCkK KyNkZWZpbmUgUkszMzA4X0FHQ19IT0xEX1RJTUVfOE1TCQkoMHgzIDw8IFJLMzMwOF9BR0NfSE9M RF9USU1FX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FHQ19IT0xEX1RJTUVfNE1TCQkoMHgyIDw8IFJL MzMwOF9BR0NfSE9MRF9USU1FX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FHQ19IT0xEX1RJTUVfMk1T CQkoMHgxIDw8IFJLMzMwOF9BR0NfSE9MRF9USU1FX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FHQ19I T0xEX1RJTUVfME1TCQkoMHgwIDw8IFJLMzMwOF9BR0NfSE9MRF9USU1FX1NGVCkKKworLyoKKyAq IFJLMzMwOF9BTENfTF9ESUdfQ09OMDEgLSBSRUc6IDB4MDA0NCArIGNoICogMHhjMAorICogUksz MzA4X0FMQ19SX0RJR19DT04wMSAtIFJFRzogMHgwMDg0ICsgY2ggKiAweGMwCisgKi8KKyNkZWZp bmUgUkszMzA4X0FHQ19ERUNBWV9USU1FX1NGVAkJNAorI2RlZmluZSBSSzMzMDhfQUdDX0FUVEFD S19USU1FX1NGVAkJMAorCisvKgorICogUkszMzA4X0FMQ19MX0RJR19DT04wMiAtIFJFRzogMHgw MDQ4ICsgY2ggKiAweGMwCisgKiBSSzMzMDhfQUxDX1JfRElHX0NPTjAyIC0gUkVHOiAweDAwODgg KyBjaCAqIDB4YzAKKyAqLworI2RlZmluZSBSSzMzMDhfQUdDX01PREVfTElNSVRFUgkJCUJJVCg3 KQorI2RlZmluZSBSSzMzMDhfQUdDX1pFUk9fQ1JPX0VOCQkJQklUKDYpCisjZGVmaW5lIFJLMzMw OF9BR0NfQU1QX1JFQ09WRVJfR0FJTgkJQklUKDUpCisjZGVmaW5lIFJLMzMwOF9BR0NfRkFTVF9E RUNfRU4JCQlCSVQoNCkKKyNkZWZpbmUgUkszMzA4X0FHQ19OT0lTRV9HQVRFX0VOCQlCSVQoMykK KyNkZWZpbmUgUkszMzA4X0FHQ19OT0lTRV9HQVRFX1RIUkVTSF9TRlQJMAorI2RlZmluZSBSSzMz MDhfQUdDX05PSVNFX0dBVEVfVEhSRVNIX01TSwkoMHg3IDw8IFJLMzMwOF9BR0NfTk9JU0VfR0FU RV9USFJFU0hfU0ZUKQorCisvKgorICogUkszMzA4X0FMQ19MX0RJR19DT04wMyAtIFJFRzogMHgw MDRjICsgY2ggKiAweGMwCisgKiBSSzMzMDhfQUxDX1JfRElHX0NPTjAzIC0gUkVHOiAweDAwOGMg KyBjaCAqIDB4YzAKKyAqLworI2RlZmluZSBSSzMzMDhfQUdDX1BHQV9aRVJPX0NST19FTgkJQklU KDUpCisjZGVmaW5lIFJLMzMwOF9BR0NfUEdBX0dBSU5fTUFYCQkJMHgxZgorI2RlZmluZSBSSzMz MDhfQUdDX1BHQV9HQUlOX01JTgkJCTAKKyNkZWZpbmUgUkszMzA4X0FHQ19QR0FfR0FJTl9TRlQJ CQkwCisKKy8qCisgKiBSSzMzMDhfQUxDX0xfRElHX0NPTjA0IC0gUkVHOiAweDAwNTAgKyBjaCAq IDB4YzAKKyAqIFJLMzMwOF9BTENfUl9ESUdfQ09OMDQgLSBSRUc6IDB4MDA5MCArIGNoICogMHhj MAorICovCisjZGVmaW5lIFJLMzMwOF9BR0NfU0xPV19DTEtfRU4JCQlCSVQoMykKKyNkZWZpbmUg UkszMzA4X0FHQ19BUFBST1hfUkFURV9TRlQJCTAKKyNkZWZpbmUgUkszMzA4X0FHQ19BUFBST1hf UkFURV9NU0sJCSgweDcgPDwgUkszMzA4X0FHQ19BUFBST1hfUkFURV9TRlQpCisKKy8qCisgKiBS SzMzMDhfQUxDX0xfRElHX0NPTjA1IC0gUkVHOiAweDAwNTQgKyBjaCAqIDB4YzAKKyAqIFJLMzMw OF9BTENfUl9ESUdfQ09OMDUgLSBSRUc6IDB4MDA5NCArIGNoICogMHhjMAorICovCisjZGVmaW5l IFJLMzMwOF9BR0NfTE9fOEJJVFNfQUdDX01BWF9NU0sJCTB4ZmYKKworLyoKKyAqIFJLMzMwOF9B TENfTF9ESUdfQ09OMDYgLSBSRUc6IDB4MDA1OCArIGNoICogMHhjMAorICogUkszMzA4X0FMQ19S X0RJR19DT04wNiAtIFJFRzogMHgwMDk4ICsgY2ggKiAweGMwCisgKi8KKyNkZWZpbmUgUkszMzA4 X0FHQ19ISV84QklUU19BR0NfTUFYX01TSwkJMHhmZgorCisvKgorICogUkszMzA4X0FMQ19MX0RJ R19DT04wNyAtIFJFRzogMHgwMDVjICsgY2ggKiAweGMwCisgKiBSSzMzMDhfQUxDX1JfRElHX0NP TjA3IC0gUkVHOiAweDAwOWMgKyBjaCAqIDB4YzAKKyAqLworI2RlZmluZSBSSzMzMDhfQUdDX0xP XzhCSVRTX0FHQ19NSU5fTVNLCQkweGZmCisKKy8qCisgKiBSSzMzMDhfQUxDX0xfRElHX0NPTjA4 IC0gUkVHOiAweDAwNjAgKyBjaCAqIDB4YzAKKyAqIFJLMzMwOF9BTENfUl9ESUdfQ09OMDggLSBS RUc6IDB4MDBhMCArIGNoICogMHhjMAorICovCisjZGVmaW5lIFJLMzMwOF9BR0NfSElfOEJJVFNf QUdDX01JTl9NU0sJCTB4ZmYKKworLyoKKyAqIFJLMzMwOF9BTENfTF9ESUdfQ09OMDkgLSBSRUc6 IDB4MDA2NCArIGNoICogMHhjMAorICogUkszMzA4X0FMQ19SX0RJR19DT04wOSAtIFJFRzogMHgw MGE0ICsgY2ggKiAweGMwCisgKi8KKyNkZWZpbmUgUkszMzA4X0FHQ19GVU5DX1NFTF9NU0sJCQlC SVQoNikKKyNkZWZpbmUgUkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfTUFYCQkweDcKKyNkZWZpbmUg UkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfTUlOCQkwCisjZGVmaW5lIFJLMzMwOF9BR0NfTUFYX0dB SU5fUEdBX1NGVAkJMworI2RlZmluZSBSSzMzMDhfQUdDX01BWF9HQUlOX1BHQV9NU0sJCSgweDcg PDwgUkszMzA4X0FHQ19NQVhfR0FJTl9QR0FfU0ZUKQorI2RlZmluZSBSSzMzMDhfQUdDX01JTl9H QUlOX1BHQV9NQVgJCTB4NworI2RlZmluZSBSSzMzMDhfQUdDX01JTl9HQUlOX1BHQV9NSU4JCTAK KyNkZWZpbmUgUkszMzA4X0FHQ19NSU5fR0FJTl9QR0FfU0ZUCQkwCisjZGVmaW5lIFJLMzMwOF9B R0NfTUlOX0dBSU5fUEdBX01TSwkJKDB4NyA8PCBSSzMzMDhfQUdDX01JTl9HQUlOX1BHQV9TRlQp CisKKy8qCisgKiBSSzMzMDhfQUxDX0xfRElHX0NPTjEyIC0gUkVHOiAweDAwNjggKyBjaCAqIDB4 YzAKKyAqIFJLMzMwOF9BTENfUl9ESUdfQ09OMTIgLSBSRUc6IDB4MDBhOCArIGNoICogMHhjMAor ICovCisjZGVmaW5lIFJLMzMwOF9BR0NfR0FJTl9NU0sJCQkweDFmCisKKy8qIFJLMzMwOF9EQUNf RElHX0NPTjAxIC0gUkVHOiAweDAzMDQgKi8KKyNkZWZpbmUgUkszMzA4X0RBQ19JMlNfTFJDX1BP TF9SRVZFUlNBTAkJQklUKDcpCisjZGVmaW5lIFJLMzMwOF9EQUNfSTJTX1ZBTElEX0xFTl9TRlQJ CTUKKyNkZWZpbmUgUkszMzA4X0RBQ19JMlNfVkFMSURfTEVOX01TSwkJKDB4MyA8PCBSSzMzMDhf REFDX0kyU19WQUxJRF9MRU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0kyU19WQUxJRF9MRU5f MzJCSVRTCQkoMHgzIDw8IFJLMzMwOF9EQUNfSTJTX1ZBTElEX0xFTl9TRlQpCisjZGVmaW5lIFJL MzMwOF9EQUNfSTJTX1ZBTElEX0xFTl8yNEJJVFMJCSgweDIgPDwgUkszMzA4X0RBQ19JMlNfVkFM SURfTEVOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19JMlNfVkFMSURfTEVOXzIwQklUUwkJKDB4 MSA8PCBSSzMzMDhfREFDX0kyU19WQUxJRF9MRU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0ky U19WQUxJRF9MRU5fMTZCSVRTCQkoMHgwIDw8IFJLMzMwOF9EQUNfSTJTX1ZBTElEX0xFTl9TRlQp CisjZGVmaW5lIFJLMzMwOF9EQUNfSTJTX01PREVfU0ZUCQkJMworI2RlZmluZSBSSzMzMDhfREFD X0kyU19NT0RFX01TSwkJCSgweDMgPDwgUkszMzA4X0RBQ19JMlNfTU9ERV9TRlQpCisjZGVmaW5l IFJLMzMwOF9EQUNfSTJTX01PREVfUENNCQkJKDB4MyA8PCBSSzMzMDhfREFDX0kyU19NT0RFX1NG VCkKKyNkZWZpbmUgUkszMzA4X0RBQ19JMlNfTU9ERV9JMlMJCQkoMHgyIDw8IFJLMzMwOF9EQUNf STJTX01PREVfU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0kyU19NT0RFX0xKCQkJKDB4MSA8PCBS SzMzMDhfREFDX0kyU19NT0RFX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19JMlNfTU9ERV9SSgkJ CSgweDAgPDwgUkszMzA4X0RBQ19JMlNfTU9ERV9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfSTJT X0xSX1NXQVAJCQlCSVQoMikKKworLyogUkszMzA4X0RBQ19ESUdfQ09OMDIgLSBSRUc6IDB4MDMw OCAqLworI2RlZmluZSBSSzMzMDhfREFDX0lPX01PREVfTUFTVEVSCQlCSVQoNSkKKyNkZWZpbmUg UkszMzA4X0RBQ19NT0RFX01BU1RFUgkJCUJJVCg0KQorI2RlZmluZSBSSzMzMDhfREFDX0kyU19G UkFNRV9MRU5fU0ZUCQkyCisjZGVmaW5lIFJLMzMwOF9EQUNfSTJTX0ZSQU1FX0xFTl9NU0sJCSgw eDMgPDwgUkszMzA4X0RBQ19JMlNfRlJBTUVfTEVOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19J MlNfRlJBTUVfMzJCSVRTCQkoMHgzIDw8IFJLMzMwOF9EQUNfSTJTX0ZSQU1FX0xFTl9TRlQpCisj ZGVmaW5lIFJLMzMwOF9EQUNfSTJTX0ZSQU1FXzI0QklUUwkJKDB4MiA8PCBSSzMzMDhfREFDX0ky U19GUkFNRV9MRU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0kyU19GUkFNRV8yMEJJVFMJCSgw eDEgPDwgUkszMzA4X0RBQ19JMlNfRlJBTUVfTEVOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19J MlNfRlJBTUVfMTZCSVRTCQkoMHgwIDw8IFJLMzMwOF9EQUNfSTJTX0ZSQU1FX0xFTl9TRlQpCisj ZGVmaW5lIFJLMzMwOF9EQUNfSTJTX1dPUksJCQlCSVQoMSkKKyNkZWZpbmUgUkszMzA4X0RBQ19J MlNfQklUX0NMS19QT0xfUkVWRVJTQUwJQklUKDApCisKKy8qIFJLMzMwOF9EQUNfRElHX0NPTjAz IC0gUkVHOiAweDAzMEMgKi8KKyNkZWZpbmUgUkszMzA4X0RBQ19MX0NIX0JJU1RfU0ZUCQkyCisj ZGVmaW5lIFJLMzMwOF9EQUNfTF9DSF9CSVNUX01TSwkJKDB4MyA8PCBSSzMzMDhfREFDX0xfQ0hf QklTVF9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9DSF9CSVNUX0xFRlQJCSgweDMgPDwgUksz MzA4X0RBQ19MX0NIX0JJU1RfU0ZUKSAvKiBub3JtYWwgbW9kZSAqLworI2RlZmluZSBSSzMzMDhf REFDX0xfQ0hfQklTVF9DVUJFCQkoMHgyIDw8IFJLMzMwOF9EQUNfTF9DSF9CSVNUX1NGVCkKKyNk ZWZpbmUgUkszMzA4X0RBQ19MX0NIX0JJU1RfU0lORQkJKDB4MSA8PCBSSzMzMDhfREFDX0xfQ0hf QklTVF9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9DSF9CSVNUX1JJR0hUCQkoMHgwIDw8IFJL MzMwOF9EQUNfTF9DSF9CSVNUX1NGVCkgLyogbm9ybWFsIG1vZGUgKi8KKyNkZWZpbmUgUkszMzA4 X0RBQ19SX0NIX0JJU1RfU0ZUCQkwCisjZGVmaW5lIFJLMzMwOF9EQUNfUl9DSF9CSVNUX01TSwkJ KDB4MyA8PCBSSzMzMDhfREFDX1JfQ0hfQklTVF9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfUl9D SF9CSVNUX0xFRlQJCSgweDMgPDwgUkszMzA4X0RBQ19SX0NIX0JJU1RfU0ZUKSAvKiBub3JtYWwg bW9kZSAqLworI2RlZmluZSBSSzMzMDhfREFDX1JfQ0hfQklTVF9DVUJFCQkoMHgyIDw8IFJLMzMw OF9EQUNfUl9DSF9CSVNUX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0NIX0JJU1RfU0lORQkJ KDB4MSA8PCBSSzMzMDhfREFDX1JfQ0hfQklTVF9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfUl9D SF9CSVNUX1JJR0hUCQkoMHgwIDw8IFJLMzMwOF9EQUNfUl9DSF9CSVNUX1NGVCkgLyogbm9ybWFs IG1vZGUgKi8KKworLyogUkszMzA4X0RBQ19ESUdfQ09OMDQgLSBSRUc6IDB4MDMxMCAqLworI2Rl ZmluZSBSSzMzMDhfREFDX01PRFVMQVRPUl9HQUlOX1NGVAkJNAorI2RlZmluZSBSSzMzMDhfREFD X01PRFVMQVRPUl9HQUlOX01TSwkJKDB4NyA8PCBSSzMzMDhfREFDX01PRFVMQVRPUl9HQUlOX1NG VCkKKyNkZWZpbmUgUkszMzA4X0RBQ19DSUNfSUZfR0FJTl9TRlQJCTAKKyNkZWZpbmUgUkszMzA4 X0RBQ19DSUNfSUZfR0FJTl9NU0sJCSgweDcgPDwgUkszMzA4X0RBQ19DSUNfSUZfR0FJTl9TRlQp CisKKy8qIFJLMzMwOF9EQUNfRElHX0NPTjA1IC0gUkVHOiAweDAzMTQgKi8KKyNkZWZpbmUgUksz MzA4X0RBQ19MX1JFR19DVExfSU5EQVRBCQlCSVQoMikKKyNkZWZpbmUgUkszMzA4X0RBQ19SX1JF R19DVExfSU5EQVRBCQlCSVQoMSkKKworLyogUkszMzA4X0RBQ19ESUdfQ09OMTAgLSBSRUc6IDB4 MDMyOCAqLworI2RlZmluZSBSSzMzMDhfREFDX0RBVEFfSEk0KHgpCQkJKCh4KSAmIDB4ZikKKwor LyogUkszMzA4X0RBQ19ESUdfQ09OMTEgLSBSRUc6IDB4MDMyYyAqLworI2RlZmluZSBSSzMzMDhf REFDX0RBVEFfTE84KHgpCQkJKCh4KSAmIDB4ZmYpCisKKy8qIFJLMzMwOF9BRENfQU5BX0NPTjAw IC0gUkVHOiAweDAzNDAgKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19DSDFfQ0gyX01JQ19BTExfTVNL CQkoMHhmZiA8PCAwKQorI2RlZmluZSBSSzMzMDhfQURDX0NIMV9DSDJfTUlDX0FMTAkJMHhmZgor I2RlZmluZSBSSzMzMDhfQURDX0NIMl9NSUNfVU5NVVRFCQlCSVQoNykKKyNkZWZpbmUgUkszMzA4 X0FEQ19DSDJfTUlDX1dPUksJCQlCSVQoNikKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfTUlDX0VO CQkJQklUKDUpCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gyX0JVRl9SRUZfRU4JCUJJVCg0KQorI2Rl ZmluZSBSSzMzMDhfQURDX0NIMV9NSUNfVU5NVVRFCQlCSVQoMykKKyNkZWZpbmUgUkszMzA4X0FE Q19DSDFfTUlDX1dPUksJCQlCSVQoMikKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDFfTUlDX0VOCQkJ QklUKDEpCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gxX0JVRl9SRUZfRU4JCUJJVCgwKQorCisvKiBS SzMzMDhfQURDX0FOQV9DT04wMSAtIFJFRzogMHgwMzQ0CisgKgorICogVGhlIFBHQSBvZiBNSUMt SU5zOgorICogLSBIVyB2ZXJzaW9uIEE6CisgKiAgIDB4MCAtIE1JQzF+TUlDOCAgMCBkQiAocmVj b21tZW5kZWQgd2hlbiBBREMgdXNlZCBhcyBsb29wYmFjaykKKyAqICAgMHgzIC0gTUlDMX5NSUM4 IDIwIGRCIChyZWNvbW1lbmRlZCB3aGVuIEFEQyB1c2VkIGFzIE1JQyBpbnB1dCkKKyAqIC0gSFcg dmVyc2lvbiBCOgorICogICAweDAgLSBNSUMxfk1JQzggICAwIGRCCisgKiAgIDB4MSAtIE1JQzF+ TUlDOCA2LjYgZEIKKyAqICAgMHgyIC0gTUlDMX5NSUM4ICAxMyBkQgorICogICAweDMgLSBNSUMx fk1JQzggIDIwIGRCCisgKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfTUlDX0dBSU5fTUFYCQkw eDMKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfTUlDX0dBSU5fTUlOCQkwCisjZGVmaW5lIFJLMzMw OF9BRENfQ0gyX01JQ19HQUlOX1NGVAkJNAorI2RlZmluZSBSSzMzMDhfQURDX0NIMl9NSUNfR0FJ Tl9NU0sJCSgweDMgPDwgUkszMzA4X0FEQ19DSDJfTUlDX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMz MDhfQURDX0NIMl9NSUNfR0FJTl8yMERCCQkoMHgzIDw8IFJLMzMwOF9BRENfQ0gyX01JQ19HQUlO X1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfTUlDX0dBSU5fMTNEQgkJKDB4MiA8PCBSSzMz MDhfQURDX0NIMl9NSUNfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gyX01JQ19HQUlO XzZfNkRCCQkoMHgxIDw8IFJLMzMwOF9BRENfQ0gyX01JQ19HQUlOX1NGVCkKKyNkZWZpbmUgUksz MzA4X0FEQ19DSDJfTUlDX0dBSU5fMERCCQkoMHgwIDw8IFJLMzMwOF9BRENfQ0gyX01JQ19HQUlO X1NGVCkKKworI2RlZmluZSBSSzMzMDhfQURDX0NIMV9NSUNfR0FJTl9NQVgJCTB4MworI2RlZmlu ZSBSSzMzMDhfQURDX0NIMV9NSUNfR0FJTl9NSU4JCTAKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDFf TUlDX0dBSU5fU0ZUCQkwCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gxX01JQ19HQUlOX01TSwkJKDB4 MyA8PCBSSzMzMDhfQURDX0NIMV9NSUNfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gx X01JQ19HQUlOXzIwREIJCSgweDMgPDwgUkszMzA4X0FEQ19DSDFfTUlDX0dBSU5fU0ZUKQorI2Rl ZmluZSBSSzMzMDhfQURDX0NIMV9NSUNfR0FJTl8xM0RCCQkoMHgyIDw8IFJLMzMwOF9BRENfQ0gx X01JQ19HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDFfTUlDX0dBSU5fNl82REIJCSgw eDEgPDwgUkszMzA4X0FEQ19DSDFfTUlDX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfQURDX0NI MV9NSUNfR0FJTl8wREIJCSgweDAgPDwgUkszMzA4X0FEQ19DSDFfTUlDX0dBSU5fU0ZUKQorCisv KiBSSzMzMDhfQURDX0FOQV9DT04wMiAtIFJFRzogMHgwMzQ4ICovCisjZGVmaW5lIFJLMzMwOF9B RENfQ0gyX1pFUk9DUk9TU19ERVRfRU4JCUJJVCg2KQorI2RlZmluZSBSSzMzMDhfQURDX0NIMl9B TENfV09SSwkJCUJJVCg1KQorI2RlZmluZSBSSzMzMDhfQURDX0NIMl9BTENfRU4JCQlCSVQoNCkK KyNkZWZpbmUgUkszMzA4X0FEQ19DSDFfWkVST0NST1NTX0RFVF9FTgkJQklUKDIpCisjZGVmaW5l IFJLMzMwOF9BRENfQ0gxX0FMQ19XT1JLCQkJQklUKDEpCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gx X0FMQ19FTgkJCUJJVCgwKQorCisvKiBSSzMzMDhfQURDX0FOQV9DT04wMyAtIFJFRzogMHgwMzRj ICovCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gxX0FMQ19HQUlOX01BWAkJMHgxZgorI2RlZmluZSBS SzMzMDhfQURDX0NIMV9BTENfR0FJTl9NSU4JCTAKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDFfQUxD X0dBSU5fU0ZUCQkwCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gxX0FMQ19HQUlOX01TSwkJKDB4MWYg PDwgUkszMzA4X0FEQ19DSDFfQUxDX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfQURDX0NIMV9B TENfR0FJTl8wREIJCSgweDBjIDw8IFJLMzMwOF9BRENfQ0gxX0FMQ19HQUlOX1NGVCkKKworLyog UkszMzA4X0FEQ19BTkFfQ09OMDQgLSBSRUc6IDB4MDM1MCAqLworI2RlZmluZSBSSzMzMDhfQURD X0NIMl9BTENfR0FJTl9NQVgJCTB4MWYKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfQUxDX0dBSU5f TUlOCQkwCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gyX0FMQ19HQUlOX1NGVAkJMAorI2RlZmluZSBS SzMzMDhfQURDX0NIMl9BTENfR0FJTl9NU0sJCSgweDFmIDw8IFJLMzMwOF9BRENfQ0gyX0FMQ19H QUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfQUxDX0dBSU5fMERCCQkoMHgwYyA8PCBS SzMzMDhfQURDX0NIMl9BTENfR0FJTl9TRlQpCisKKy8qIFJLMzMwOF9BRENfQU5BX0NPTjA1IC0g UkVHOiAweDAzNTQgKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfQURDX1dPUksJCQlCSVQoNikK KyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfQURDX0VOCQkJQklUKDUpCisjZGVmaW5lIFJLMzMwOF9B RENfQ0gyX0NMS19FTgkJCUJJVCg0KQorI2RlZmluZSBSSzMzMDhfQURDX0NIMV9BRENfV09SSwkJ CUJJVCgyKQorI2RlZmluZSBSSzMzMDhfQURDX0NIMV9BRENfRU4JCQlCSVQoMSkKKyNkZWZpbmUg UkszMzA4X0FEQ19DSDFfQ0xLX0VOCQkJQklUKDApCisKKy8qIFJLMzMwOF9BRENfQU5BX0NPTjA2 IC0gUkVHOiAweDAzNTggKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19DVVJSRU5UX0VOCQkJQklUKDAp CisKKy8qIFJLMzMwOF9BRENfQU5BX0NPTjA3IC0gUkVHOiAweDAzNWMgKi8KKy8qIE5vdGU6IFRo ZSByZWdpc3RlciBjb25maWd1cmF0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIEFEQzIgKi8KKyNkZWZp bmUgUkszMzA4X0FEQ19DSDJfSU5fU0VMX1NGVAkJNgorI2RlZmluZSBSSzMzMDhfQURDX0NIMl9J Tl9TRUxfTVNLCQkoMHgzIDw8IFJLMzMwOF9BRENfQ0gyX0lOX1NFTF9TRlQpCisjZGVmaW5lIFJL MzMwOF9BRENfQ0gyX0lOX0xJTkVJTl9NSUMJCSgweDMgPDwgUkszMzA4X0FEQ19DSDJfSU5fU0VM X1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfSU5fTElORUlOCQkoMHgyIDw8IFJLMzMwOF9B RENfQ0gyX0lOX1NFTF9TRlQpCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gyX0lOX01JQwkJCSgweDEg PDwgUkszMzA4X0FEQ19DSDJfSU5fU0VMX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDJfSU5f Tk9ORQkJCSgweDAgPDwgUkszMzA4X0FEQ19DSDJfSU5fU0VMX1NGVCkKKy8qIE5vdGU6IFRoZSBy ZWdpc3RlciBjb25maWd1cmF0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIEFEQzEgKi8KKyNkZWZpbmUg UkszMzA4X0FEQ19DSDFfSU5fU0VMX1NGVAkJNAorI2RlZmluZSBSSzMzMDhfQURDX0NIMV9JTl9T RUxfTVNLCQkoMHgzIDw8IFJLMzMwOF9BRENfQ0gxX0lOX1NFTF9TRlQpCisjZGVmaW5lIFJLMzMw OF9BRENfQ0gxX0lOX0xJTkVJTl9NSUMJCSgweDMgPDwgUkszMzA4X0FEQ19DSDFfSU5fU0VMX1NG VCkKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDFfSU5fTElORUlOCQkoMHgyIDw8IFJLMzMwOF9BRENf Q0gxX0lOX1NFTF9TRlQpCisjZGVmaW5lIFJLMzMwOF9BRENfQ0gxX0lOX01JQwkJCSgweDEgPDwg UkszMzA4X0FEQ19DSDFfSU5fU0VMX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FEQ19DSDFfSU5fTk9O RQkJCSgweDAgPDwgUkszMzA4X0FEQ19DSDFfSU5fU0VMX1NGVCkKKyNkZWZpbmUgUkszMzA4X0FE Q19NSUNfQklBU19CVUZfRU4JCUJJVCgzKQorI2RlZmluZSBSSzMzMDhfQURDX0xFVkVMX1JBTkdF X01JQ0JJQVNfU0ZUCTAKKyNkZWZpbmUgUkszMzA4X0FEQ19MRVZFTF9SQU5HRV9NSUNCSUFTX01T SwkoMHg3IDw8IFJLMzMwOF9BRENfTEVWRUxfUkFOR0VfTUlDQklBU19TRlQpCisKKy8qIFJLMzMw OF9BRENfQU5BX0NPTjA4IC0gUkVHOiAweDAzNjAgKi8KKyNkZWZpbmUgUkszMzA4X0FEQ19NSUNC SUFTX0NVUlJFTlRfRU4JCUJJVCg0KQorCisvKiBSSzMzMDhfQURDX0FOQV9DT04xMCAtIFJFRzog MHgwMzY4ICovCisjZGVmaW5lIFJLMzMwOF9BRENfUkVGX0VOCQkJQklUKDcpCisjZGVmaW5lIFJL MzMwOF9BRENfQ1VSUkVOVF9DSEFSR0VfU0ZUCQkwCisjZGVmaW5lIFJLMzMwOF9BRENfQ1VSUkVO VF9DSEFSR0VfTVNLCQkoMHg3ZiA8PCBSSzMzMDhfQURDX0NVUlJFTlRfQ0hBUkdFX1NGVCkKKy8q CisgKiAxOiBDaG9vc2UgdGhlIGN1cnJlbnQgSQorICogMDogRG9uJ3QgY2hvb3NlIHRoZSBjdXJy ZW50IEkKKyAqLworI2RlZmluZSBSSzMzMDhfQURDX1NFTF9JKHgpCQkJKCh4KSAmIDB4N2YpCisK Ky8qIFJLMzMwOF9BRENfQU5BX0NPTjExIC0gUkVHOiAweDAzNmMgKi8KKyNkZWZpbmUgUkszMzA4 X0FEQ19BTENSX0NPTl9HQUlOX1BHQVJfRU4JQklUKDEpCisjZGVmaW5lIFJLMzMwOF9BRENfQUxD TF9DT05fR0FJTl9QR0FMX0VOCUJJVCgwKQorCisvKiBSSzMzMDhfREFDX0FOQV9DT04wMCAtIFJF RzogMHgwNDQwICovCisjZGVmaW5lIFJLMzMwOF9EQUNfSEVBRFBIT05FX0RFVF9FTgkJQklUKDEp CisjZGVmaW5lIFJLMzMwOF9EQUNfQ1VSUkVOVF9FTgkJCUJJVCgwKQorCisvKiBSSzMzMDhfREFD X0FOQV9DT04wMSAtIFJFRzogMHgwNDQ0ICovCisjZGVmaW5lIFJLMzMwOF9EQUNfQlVGX1JFRl9S X0VOCQkJQklUKDYpCisjZGVmaW5lIFJLMzMwOF9EQUNfSFBPVVRfUE9QX1NPVU5EX1JfU0ZUCTQK KyNkZWZpbmUgUkszMzA4X0RBQ19IUE9VVF9QT1BfU09VTkRfUl9NU0sJKDB4MyA8PCBSSzMzMDhf REFDX0hQT1VUX1BPUF9TT1VORF9SX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19IUE9VVF9QT1Bf U09VTkRfUl9XT1JLCSgweDIgPDwgUkszMzA4X0RBQ19IUE9VVF9QT1BfU09VTkRfUl9TRlQpCisj ZGVmaW5lIFJLMzMwOF9EQUNfSFBPVVRfUE9QX1NPVU5EX1JfSU5JVAkoMHgxIDw8IFJLMzMwOF9E QUNfSFBPVVRfUE9QX1NPVU5EX1JfU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0JVRl9SRUZfTF9F TgkJCUJJVCgyKQorI2RlZmluZSBSSzMzMDhfREFDX0hQT1VUX1BPUF9TT1VORF9MX1NGVAkwCisj ZGVmaW5lIFJLMzMwOF9EQUNfSFBPVVRfUE9QX1NPVU5EX0xfTVNLCSgweDMgPDwgUkszMzA4X0RB Q19IUE9VVF9QT1BfU09VTkRfTF9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfSFBPVVRfUE9QX1NP VU5EX0xfV09SSwkoMHgyIDw8IFJLMzMwOF9EQUNfSFBPVVRfUE9QX1NPVU5EX0xfU0ZUKQorI2Rl ZmluZSBSSzMzMDhfREFDX0hQT1VUX1BPUF9TT1VORF9MX0lOSVQJKDB4MSA8PCBSSzMzMDhfREFD X0hQT1VUX1BPUF9TT1VORF9MX1NGVCkKKworLyogUkszMzA4X0RBQ19BTkFfQ09OMDIgLSBSRUc6 IDB4MDQ0OCAqLworI2RlZmluZSBSSzMzMDhfREFDX1JfREFDX1dPUksJCQlCSVQoNykKKyNkZWZp bmUgUkszMzA4X0RBQ19SX0RBQ19FTgkJCUJJVCg2KQorI2RlZmluZSBSSzMzMDhfREFDX1JfQ0xL X0VOCQkJQklUKDUpCisjZGVmaW5lIFJLMzMwOF9EQUNfUl9SRUZfRU4JCQlCSVQoNCkKKyNkZWZp bmUgUkszMzA4X0RBQ19MX0RBQ19XT1JLCQkJQklUKDMpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9E QUNfRU4JCQlCSVQoMikKKyNkZWZpbmUgUkszMzA4X0RBQ19MX0NMS19FTgkJCUJJVCgxKQorI2Rl ZmluZSBSSzMzMDhfREFDX0xfUkVGX0VOCQkJQklUKDApCisKKy8qIFJLMzMwOF9EQUNfQU5BX0NP TjAzIC0gUkVHOiAweDA0NGMgKi8KKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX1dPUksJCQlC SVQoNikKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0VOCQkJQklUKDUpCisjZGVmaW5lIFJL MzMwOF9EQUNfUl9IUE9VVF9VTk1VVEUJCUJJVCg0KQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBP VVRfV09SSwkJCUJJVCgyKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfRU4JCQlCSVQoMSkK KyNkZWZpbmUgUkszMzA4X0RBQ19MX0hQT1VUX1VOTVVURQkJQklUKDApCisKKy8qIFJLMzMwOF9E QUNfQU5BX0NPTjA0IC0gUkVHOiAweDA0NTAgKi8KKyNkZWZpbmUgUkszMzA4X0RBQ19SX0xJTkVP VVRfR0FJTl9NQVgJCTB4MworI2RlZmluZSBSSzMzMDhfREFDX1JfTElORU9VVF9HQUlOX1NGVAkJ NgorI2RlZmluZSBSSzMzMDhfREFDX1JfTElORU9VVF9HQUlOX01TSwkJKDB4MyA8PCBSSzMzMDhf REFDX1JfTElORU9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0xJTkVPVVRfR0FJ Tl8wREIJCSgweDMgPDwgUkszMzA4X0RBQ19SX0xJTkVPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJL MzMwOF9EQUNfUl9MSU5FT1VUX0dBSU5fTkRCXzFfNQkoMHgyIDw8IFJLMzMwOF9EQUNfUl9MSU5F T1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfTElORU9VVF9HQUlOX05EQl8zCQko MHgxIDw8IFJLMzMwOF9EQUNfUl9MSU5FT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFD X1JfTElORU9VVF9HQUlOX05EQl82CQkoMHgwIDw8IFJLMzMwOF9EQUNfUl9MSU5FT1VUX0dBSU5f U0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfTElORU9VVF9VTk1VVEUJCUJJVCg1KQorI2RlZmlu ZSBSSzMzMDhfREFDX1JfTElORU9VVF9FTgkJCUJJVCg0KQorI2RlZmluZSBSSzMzMDhfREFDX0xf TElORU9VVF9HQUlOX01BWAkJMHgzCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9MSU5FT1VUX0dBSU5f U0ZUCQkyCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9MSU5FT1VUX0dBSU5fTVNLCQkoMHgzIDw8IFJL MzMwOF9EQUNfTF9MSU5FT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfTElORU9V VF9HQUlOXzBEQgkJKDB4MyA8PCBSSzMzMDhfREFDX0xfTElORU9VVF9HQUlOX1NGVCkKKyNkZWZp bmUgUkszMzA4X0RBQ19MX0xJTkVPVVRfR0FJTl9OREJfMV81CSgweDIgPDwgUkszMzA4X0RBQ19M X0xJTkVPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9MSU5FT1VUX0dBSU5fTkRC XzMJCSgweDEgPDwgUkszMzA4X0RBQ19MX0xJTkVPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMw OF9EQUNfTF9MSU5FT1VUX0dBSU5fTkRCXzYJCSgweDAgPDwgUkszMzA4X0RBQ19MX0xJTkVPVVRf R0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9MSU5FT1VUX1VOTVVURQkJQklUKDEpCisj ZGVmaW5lIFJLMzMwOF9EQUNfTF9MSU5FT1VUX0VOCQkJQklUKDApCisKKy8qIFJLMzMwOF9EQUNf QU5BX0NPTjA1IC0gUkVHOiAweDA0NTQsIHN0ZXAgaXMgMS41ZGIgKi8KKyNkZWZpbmUgUkszMzA4 X0RBQ19MX0hQT1VUX0dBSU5fTUFYCQkweDFlCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9H QUlOX1NGVAkJMAorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9NU0sJCSgweDFmIDw8 IFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19MX0hQT1VU X0dBSU5fUERCXzYJCSgweDFlIDw8IFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX1NGVCkKKyNkZWZp bmUgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fUERCXzRfNQkJKDB4MWQgPDwgUkszMzA4X0RBQ19M X0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9QREJfMwkJ KDB4MWMgPDwgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFD X0xfSFBPVVRfR0FJTl9QREJfMV81CQkoMHgxYiA8PCBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9T RlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOXzBEQgkJKDB4MWEgPDwgUkszMzA4 X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9O REJfMV81CQkoMHgxOSA8PCBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJL MzMwOF9EQUNfTF9IUE9VVF9HQUlOX05EQl8zCQkoMHgxOCA8PCBSSzMzMDhfREFDX0xfSFBPVVRf R0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX05EQl80XzUJCSgweDE3 IDw8IFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19MX0hQ T1VUX0dBSU5fTkRCXzYJCSgweDE2IDw8IFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX1NGVCkKKyNk ZWZpbmUgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fTkRCXzdfNQkJKDB4MTUgPDwgUkszMzA4X0RB Q19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9OREJf OQkJKDB4MTQgPDwgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhf REFDX0xfSFBPVVRfR0FJTl9OREJfMTBfNQkoMHgxMyA8PCBSSzMzMDhfREFDX0xfSFBPVVRfR0FJ Tl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX05EQl8xMgkJKDB4MTIgPDwg UkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRf R0FJTl9OREJfMTNfNQkoMHgxMSA8PCBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9TRlQpCisjZGVm aW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX05EQl8xNQkJKDB4MTAgPDwgUkszMzA4X0RBQ19M X0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9OREJfMTZf NQkoMHgwZiA8PCBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9E QUNfTF9IUE9VVF9HQUlOX05EQl8xOAkJKDB4MGUgPDwgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5f U0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9OREJfMTlfNQkoMHgwZCA8PCBS SzMzMDhfREFDX0xfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9H QUlOX05EQl8yMQkJKDB4MGMgPDwgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmlu ZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9OREJfMjJfNQkoMHgwYiA8PCBSSzMzMDhfREFDX0xf SFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX05EQl8yNAkJ KDB4MGEgPDwgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFD X0xfSFBPVVRfR0FJTl9OREJfMjVfNQkoMHgwOSA8PCBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9T RlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX05EQl8yNwkJKDB4MDggPDwgUksz MzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJ Tl9OREJfMjhfNQkoMHgwNyA8PCBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5l IFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX05EQl8zMAkJKDB4MDYgPDwgUkszMzA4X0RBQ19MX0hQ T1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9OREJfMzFfNQko MHgwNSA8PCBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNf TF9IUE9VVF9HQUlOX05EQl8zMwkJKDB4MDQgPDwgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZU KQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBPVVRfR0FJTl9OREJfMzRfNQkoMHgwMyA8PCBSSzMz MDhfREFDX0xfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlO X05EQl8zNgkJKDB4MDIgPDwgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBS SzMzMDhfREFDX0xfSFBPVVRfR0FJTl9OREJfMzdfNQkoMHgwMSA8PCBSSzMzMDhfREFDX0xfSFBP VVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE9VVF9HQUlOX05EQl8zOQkJKDB4 MDAgPDwgUkszMzA4X0RBQ19MX0hQT1VUX0dBSU5fU0ZUKQorCisvKiBSSzMzMDhfREFDX0FOQV9D T04wNiAtIFJFRzogMHgwNDU4LCBzdGVwIGlzIDEuNWRiICovCisjZGVmaW5lIFJLMzMwOF9EQUNf Ul9IUE9VVF9HQUlOX01BWAkJMHgxZQorI2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9T RlQJCTAKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTVNLCQkoMHgxZiA8PCBSSzMz MDhfREFDX1JfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlO X1BEQl82CQkoMHgxZSA8PCBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJL MzMwOF9EQUNfUl9IUE9VVF9HQUlOX1BEQl80XzUJCSgweDFkIDw8IFJLMzMwOF9EQUNfUl9IUE9V VF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fUERCXzMJCSgweDFj IDw8IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQ T1VUX0dBSU5fUERCXzFfNQkJKDB4MWIgPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fU0ZUKQor I2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl8wREIJCSgweDFhIDw8IFJLMzMwOF9EQUNf Ul9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTkRCXzFf NQkJKDB4MTkgPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhf REFDX1JfSFBPVVRfR0FJTl9OREJfMwkJKDB4MTggPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5f U0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9OREJfNF81CQkoMHgxNyA8PCBS SzMzMDhfREFDX1JfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfUl9IUE9VVF9H QUlOX05EQl82CQkoMHgxNiA8PCBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9TRlQpCisjZGVmaW5l IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX05EQl83XzUJCSgweDE1IDw8IFJLMzMwOF9EQUNfUl9I UE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTkRCXzkJCSgw eDE0IDw8IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19S X0hQT1VUX0dBSU5fTkRCXzEwXzUJKDB4MTMgPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fU0ZU KQorI2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9OREJfMTIJCSgweDEyIDw8IFJLMzMw OF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5f TkRCXzEzXzUJKDB4MTEgPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBS SzMzMDhfREFDX1JfSFBPVVRfR0FJTl9OREJfMTUJCSgweDEwIDw8IFJLMzMwOF9EQUNfUl9IUE9V VF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTkRCXzE2XzUJKDB4 MGYgPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1Jf SFBPVVRfR0FJTl9OREJfMTgJCSgweDBlIDw8IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkK KyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTkRCXzE5XzUJKDB4MGQgPDwgUkszMzA4 X0RBQ19SX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9O REJfMjEJCSgweDBjIDw8IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUksz MzA4X0RBQ19SX0hQT1VUX0dBSU5fTkRCXzIyXzUJKDB4MGIgPDwgUkszMzA4X0RBQ19SX0hQT1VU X0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9OREJfMjQJCSgweDBh IDw8IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQ T1VUX0dBSU5fTkRCXzI1XzUJKDB4MDkgPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fU0ZUKQor I2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9OREJfMjcJCSgweDA4IDw8IFJLMzMwOF9E QUNfUl9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTkRC XzI4XzUJKDB4MDcgPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMz MDhfREFDX1JfSFBPVVRfR0FJTl9OREJfMzAJCSgweDA2IDw8IFJLMzMwOF9EQUNfUl9IUE9VVF9H QUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTkRCXzMxXzUJKDB4MDUg PDwgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfSFBP VVRfR0FJTl9OREJfMzMJCSgweDA0IDw8IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkKKyNk ZWZpbmUgUkszMzA4X0RBQ19SX0hQT1VUX0dBSU5fTkRCXzM0XzUJKDB4MDMgPDwgUkszMzA4X0RB Q19SX0hQT1VUX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9OREJf MzYJCSgweDAyIDw8IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4 X0RBQ19SX0hQT1VUX0dBSU5fTkRCXzM3XzUJKDB4MDEgPDwgUkszMzA4X0RBQ19SX0hQT1VUX0dB SU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfR0FJTl9OREJfMzkJCSgweDAwIDw8 IFJLMzMwOF9EQUNfUl9IUE9VVF9HQUlOX1NGVCkKKworLyogUkszMzA4X0RBQ19BTkFfQ09OMDcg LSBSRUc6IDB4MDQ1YyAqLworI2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfRFJWX1NGVAkJNAor I2RlZmluZSBSSzMzMDhfREFDX1JfSFBPVVRfRFJWX01TSwkJKDB4ZiA8PCBSSzMzMDhfREFDX1Jf SFBPVVRfRFJWX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19MX0hQT1VUX0RSVl9TRlQJCTAKKyNk ZWZpbmUgUkszMzA4X0RBQ19MX0hQT1VUX0RSVl9NU0sJCSgweGYgPDwgUkszMzA4X0RBQ19MX0hQ T1VUX0RSVl9TRlQpCisKKy8qIFJLMzMwOF9EQUNfQU5BX0NPTjA4IC0gUkVHOiAweDA0NjAgKi8K KyNkZWZpbmUgUkszMzA4X0RBQ19SX0xJTkVPVVRfRFJWX1NGVAkJNAorI2RlZmluZSBSSzMzMDhf REFDX1JfTElORU9VVF9EUlZfTVNLCQkoMHhmIDw8IFJLMzMwOF9EQUNfUl9MSU5FT1VUX0RSVl9T RlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9MSU5FT1VUX0RSVl9TRlQJCTAKKyNkZWZpbmUgUksz MzA4X0RBQ19MX0xJTkVPVVRfRFJWX01TSwkJKDB4ZiA8PCBSSzMzMDhfREFDX0xfTElORU9VVF9E UlZfU0ZUKQorCisvKiBSSzMzMDhfREFDX0FOQV9DT04xMiAtIFJFRzogMHgwNDcwICovCisjZGVm aW5lIFJLMzMwOF9EQUNfUl9IUE1JWF9TRUxfU0ZUCQk2CisjZGVmaW5lIFJLMzMwOF9EQUNfUl9I UE1JWF9TRUxfTVNLCQkoMHgzIDw8IFJLMzMwOF9EQUNfUl9IUE1JWF9TRUxfU0ZUKQorI2RlZmlu ZSBSSzMzMDhfREFDX1JfSFBNSVhfTElORUlOX0kyUwkJKDB4MyA8PCBSSzMzMDhfREFDX1JfSFBN SVhfU0VMX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQTUlYX0xJTkVJTgkJKDB4MiA8PCBS SzMzMDhfREFDX1JfSFBNSVhfU0VMX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQTUlYX0ky UwkJCSgweDEgPDwgUkszMzA4X0RBQ19SX0hQTUlYX1NFTF9TRlQpCisjZGVmaW5lIFJLMzMwOF9E QUNfUl9IUE1JWF9OT05FCQkJKDB4MCA8PCBSSzMzMDhfREFDX1JfSFBNSVhfU0VMX1NGVCkKKyNk ZWZpbmUgUkszMzA4X0RBQ19SX0hQTUlYX0dBSU5fTUlOCQkweDEgLyogMHh4MCBhbmQgMHgzIGFy ZSByZXNlcnZlZCAqLworI2RlZmluZSBSSzMzMDhfREFDX1JfSFBNSVhfR0FJTl9NQVgJCTB4Mgor I2RlZmluZSBSSzMzMDhfREFDX1JfSFBNSVhfR0FJTl9TRlQJCTQKKyNkZWZpbmUgUkszMzA4X0RB Q19SX0hQTUlYX0dBSU5fTVNLCQkoMHgzIDw8IFJLMzMwOF9EQUNfUl9IUE1JWF9HQUlOX1NGVCkK KyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQTUlYX0dBSU5fMERCCQkoMHgyIDw8IFJLMzMwOF9EQUNf Ul9IUE1JWF9HQUlOX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19SX0hQTUlYX0dBSU5fTkRCXzYJ CSgweDEgPDwgUkszMzA4X0RBQ19SX0hQTUlYX0dBSU5fU0ZUKQorI2RlZmluZSBSSzMzMDhfREFD X0xfSFBNSVhfU0VMX1NGVAkJMgorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBNSVhfU0VMX01TSwkJ KDB4MyA8PCBSSzMzMDhfREFDX0xfSFBNSVhfU0VMX1NGVCkKKyNkZWZpbmUgUkszMzA4X0RBQ19M X0hQTUlYX0xJTkVJTl9JMlMJCSgweDMgPDwgUkszMzA4X0RBQ19MX0hQTUlYX1NFTF9TRlQpCisj ZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE1JWF9MSU5FSU4JCSgweDIgPDwgUkszMzA4X0RBQ19MX0hQ TUlYX1NFTF9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE1JWF9JMlMJCQkoMHgxIDw8IFJL MzMwOF9EQUNfTF9IUE1JWF9TRUxfU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBNSVhfTk9O RQkJCSgweDAgPDwgUkszMzA4X0RBQ19MX0hQTUlYX1NFTF9TRlQpCisjZGVmaW5lIFJLMzMwOF9E QUNfTF9IUE1JWF9HQUlOX01JTgkJMHgxIC8qIDB4eDAgYW5kIDB4MyBhcmUgcmVzZXJ2ZWQgKi8K KyNkZWZpbmUgUkszMzA4X0RBQ19MX0hQTUlYX0dBSU5fTUFYCQkweDIKKyNkZWZpbmUgUkszMzA4 X0RBQ19MX0hQTUlYX0dBSU5fU0ZUCQkwCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE1JWF9HQUlO X01TSwkJKDB4MyA8PCBSSzMzMDhfREFDX0xfSFBNSVhfR0FJTl9TRlQpCisjZGVmaW5lIFJLMzMw OF9EQUNfTF9IUE1JWF9HQUlOXzBEQgkJKDB4MiA8PCBSSzMzMDhfREFDX0xfSFBNSVhfR0FJTl9T RlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE1JWF9HQUlOX05EQl82CQkoMHgxIDw8IFJLMzMw OF9EQUNfTF9IUE1JWF9HQUlOX1NGVCkKKworLyogUkszMzA4X0RBQ19BTkFfQ09OMTMgLSBSRUc6 IDB4MDQ3NCAqLworI2RlZmluZSBSSzMzMDhfREFDX1JfSFBNSVhfVU5NVVRFCQlCSVQoNikKKyNk ZWZpbmUgUkszMzA4X0RBQ19SX0hQTUlYX1dPUksJCQlCSVQoNSkKKyNkZWZpbmUgUkszMzA4X0RB Q19SX0hQTUlYX0VOCQkJQklUKDQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9IUE1JWF9VTk1VVEUJ CUJJVCgyKQorI2RlZmluZSBSSzMzMDhfREFDX0xfSFBNSVhfV09SSwkJCUJJVCgxKQorI2RlZmlu ZSBSSzMzMDhfREFDX0xfSFBNSVhfRU4JCQlCSVQoMCkKKworLyogUkszMzA4X0RBQ19BTkFfQ09O MTQgLSBSRUc6IDB4MDQ3OCAqLworI2RlZmluZSBSSzMzMDhfREFDX1ZDTV9MSU5FT1VUX0VOCQko MHgxIDw8IDQpCisjZGVmaW5lIFJLMzMwOF9EQUNfQ1VSUkVOVF9DSEFSR0VfU0ZUCQkwCisjZGVm aW5lIFJLMzMwOF9EQUNfQ1VSUkVOVF9DSEFSR0VfTVNLCQkoMHhmIDw8IFJLMzMwOF9EQUNfQ1VS UkVOVF9DSEFSR0VfU0ZUKQorCisvKgorICogMTogQ2hvb3NlIHRoZSBjdXJyZW50IEkKKyAqIDA6 IERvbid0IGNob29zZSB0aGUgY3VycmVudCBJCisgKi8KKyNkZWZpbmUgUkszMzA4X0RBQ19TRUxf SSh4KQkJCSgoeCkgJiAweGYpCisKKy8qIFJLMzMwOF9EQUNfQU5BX0NPTjE1IC0gUkVHOiAweDA0 N0MgKi8KKyNkZWZpbmUgUkszMzA4X0RBQ19MSU5FT1VUX1BPUF9TT1VORF9SX1NGVAk0CisjZGVm aW5lIFJLMzMwOF9EQUNfTElORU9VVF9QT1BfU09VTkRfUl9NU0sJKDB4MyA8PCBSSzMzMDhfREFD X0xJTkVPVVRfUE9QX1NPVU5EX1JfU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX1JfU0VMX0RDX0ZS T01fSU5URVJOQUwJKDB4MiA8PCBSSzMzMDhfREFDX0xJTkVPVVRfUE9QX1NPVU5EX1JfU0ZUKQor I2RlZmluZSBSSzMzMDhfREFDX1JfU0VMX0RDX0ZST01fVkNNCQkoMHgxIDw8IFJLMzMwOF9EQUNf TElORU9VVF9QT1BfU09VTkRfUl9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfUl9TRUxfTElORU9V VF9GUk9NX0lOVEVSTkFMCSgweDAgPDwgUkszMzA4X0RBQ19MSU5FT1VUX1BPUF9TT1VORF9SX1NG VCkKKyNkZWZpbmUgUkszMzA4X0RBQ19MSU5FT1VUX1BPUF9TT1VORF9MX1NGVAkwCisjZGVmaW5l IFJLMzMwOF9EQUNfTElORU9VVF9QT1BfU09VTkRfTF9NU0sJKDB4MyA8PCBSSzMzMDhfREFDX0xJ TkVPVVRfUE9QX1NPVU5EX0xfU0ZUKQorI2RlZmluZSBSSzMzMDhfREFDX0xfU0VMX0RDX0ZST01f SU5URVJOQUwJKDB4MiA8PCBSSzMzMDhfREFDX0xJTkVPVVRfUE9QX1NPVU5EX0xfU0ZUKQorI2Rl ZmluZSBSSzMzMDhfREFDX0xfU0VMX0RDX0ZST01fVkNNCQkoMHgxIDw8IFJLMzMwOF9EQUNfTElO RU9VVF9QT1BfU09VTkRfTF9TRlQpCisjZGVmaW5lIFJLMzMwOF9EQUNfTF9TRUxfTElORU9VVF9G Uk9NX0lOVEVSTkFMCSgweDAgPDwgUkszMzA4X0RBQ19MSU5FT1VUX1BPUF9TT1VORF9MX1NGVCkK KworI2RlZmluZSBSSzMzMDhfSElGSQkJCQkweDAKKworI2VuZGlmIC8qIF9fUkszMzA4X0NPREVD X0hfXyAqLwotLSAKMi4zNC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5l bEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=