From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06202C388F2 for ; Tue, 3 Nov 2020 08:00:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A26912242A for ; Tue, 3 Nov 2020 08:00:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="qQ65ty04" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725982AbgKCIAL (ORCPT ); Tue, 3 Nov 2020 03:00:11 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:41630 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727194AbgKCIAG (ORCPT ); Tue, 3 Nov 2020 03:00:06 -0500 X-UUID: 37ebb16eddd4403e8653823d998f64a2-20201103 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=sV4d4Faheln20n2X2+mA0jGrPHK1FJTQvgXARVS1dOE=; b=qQ65ty04g5v9BdoEe46baFOW9vdvSsosS7BKrDPpFkfPT0YYj8SK9gpPYFn9hXbelod+yca8pprfdiE7GIbmvj5/qS4De8USXQ3iB4FiX0w4SwAZ6pWl9Rpnbr/zRW85l6QhKZhrh8doKVg1udNFxm4k2Q5v3HoYDGoPD33tj4k=; X-UUID: 37ebb16eddd4403e8653823d998f64a2-20201103 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 9590356; Tue, 03 Nov 2020 15:59:48 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs06n1.mediatek.inc (172.21.101.129) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 3 Nov 2020 15:59:46 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 3 Nov 2020 15:59:45 +0800 From: Jiaxin Yu To: , , , , , , , , , CC: , , , , Jiaxin Yu Subject: [PATCH v4 4/9] ASoC: mediatek: mt8192: support adda in platform driver Date: Tue, 3 Nov 2020 15:59:33 +0800 Message-ID: <1604390378-23993-5-git-send-email-jiaxin.yu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1604390378-23993-1-git-send-email-jiaxin.yu@mediatek.com> References: <1604390378-23993-1-git-send-email-jiaxin.yu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIG10ODE5MiBhZGRhIGRhaSBkcml2ZXIuDQoNClNpZ25lZC1vZmYtYnk6 IEppYXhpbiBZdSA8amlheGluLnl1QG1lZGlhdGVrLmNvbT4NCi0tLQ0KIHNvdW5kL3NvYy9tZWRp YXRlay9tdDgxOTIvbXQ4MTkyLWRhaS1hZGRhLmMgfCAxNDcxICsrKysrKysrKysrKysrKysrKysN CiAxIGZpbGUgY2hhbmdlZCwgMTQ3MSBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNvdW5kL3NvYy9tZWRpYXRlay9tdDgxOTIvbXQ4MTkyLWRhaS1hZGRhLmMNCg0KZGlmZiAtLWdp dCBhL3NvdW5kL3NvYy9tZWRpYXRlay9tdDgxOTIvbXQ4MTkyLWRhaS1hZGRhLmMgYi9zb3VuZC9z b2MvbWVkaWF0ZWsvbXQ4MTkyL210ODE5Mi1kYWktYWRkYS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAwMC4uZjA0MGRjZTg1ZGE1Mw0KLS0tIC9kZXYvbnVsbA0KKysr IGIvc291bmQvc29jL21lZGlhdGVrL210ODE5Mi9tdDgxOTItZGFpLWFkZGEuYw0KQEAgLTAsMCAr MSwxNDcxIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCisvLw0KKy8v IE1lZGlhVGVrIEFMU0EgU29DIEF1ZGlvIERBSSBBRERBIENvbnRyb2wNCisvLw0KKy8vIENvcHly aWdodCAoYykgMjAyMCBNZWRpYVRlayBJbmMuDQorLy8gQXV0aG9yOiBTaGFuZSBDaGllbiA8c2hh bmUuY2hpZW5AbWVkaWF0ZWsuY29tPg0KKy8vDQorDQorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+ DQorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KKw0KKyNpbmNsdWRlICJtdDgxOTItYWZlLWNs ay5oIg0KKyNpbmNsdWRlICJtdDgxOTItYWZlLWNvbW1vbi5oIg0KKyNpbmNsdWRlICJtdDgxOTIt YWZlLWdwaW8uaCINCisjaW5jbHVkZSAibXQ4MTkyLWludGVyY29ubmVjdGlvbi5oIg0KKw0KK2Vu dW0gew0KKwlVTF9JSVJfU1cgPSAwLA0KKwlVTF9JSVJfNUhaLA0KKwlVTF9JSVJfMTBIWiwNCisJ VUxfSUlSXzI1SFosDQorCVVMX0lJUl81MEhaLA0KKwlVTF9JSVJfNzVIWiwNCit9Ow0KKw0KK2Vu dW0gew0KKwlBVURJT19TRE1fTEVWRUxfTVVURSA9IDAsDQorCUFVRElPX1NETV9MRVZFTF9OT1JN QUwgPSAweDFkLA0KKwkvKiBpZiB5b3UgY2hhbmdlIGxldmVsIG5vcm1hbCAqLw0KKwkvKiB5b3Ug bmVlZCB0byBjaGFuZ2UgZm9ybXVsYSBvZiBocCBpbXBlZGFuY2UgYW5kIGRjIHRyaW0gdG9vICov DQorfTsNCisNCitlbnVtIHsNCisJQVVESU9fU0RNXzJORCA9IDAsDQorCUFVRElPX1NETV8zUkQs DQorfTsNCisNCitlbnVtIHsNCisJREVMQVlfREFUQV9NSVNPMSA9IDAsDQorCURFTEFZX0RBVEFf TUlTTzIsDQorfTsNCisNCitlbnVtIHsNCisJTVRLX0FGRV9BRERBX0RMX1JBVEVfOEsgPSAwLA0K KwlNVEtfQUZFX0FEREFfRExfUkFURV8xMUsgPSAxLA0KKwlNVEtfQUZFX0FEREFfRExfUkFURV8x MksgPSAyLA0KKwlNVEtfQUZFX0FEREFfRExfUkFURV8xNksgPSAzLA0KKwlNVEtfQUZFX0FEREFf RExfUkFURV8yMksgPSA0LA0KKwlNVEtfQUZFX0FEREFfRExfUkFURV8yNEsgPSA1LA0KKwlNVEtf QUZFX0FEREFfRExfUkFURV8zMksgPSA2LA0KKwlNVEtfQUZFX0FEREFfRExfUkFURV80NEsgPSA3 LA0KKwlNVEtfQUZFX0FEREFfRExfUkFURV80OEsgPSA4LA0KKwlNVEtfQUZFX0FEREFfRExfUkFU RV85NksgPSA5LA0KKwlNVEtfQUZFX0FEREFfRExfUkFURV8xOTJLID0gMTAsDQorfTsNCisNCitl bnVtIHsNCisJTVRLX0FGRV9BRERBX1VMX1JBVEVfOEsgPSAwLA0KKwlNVEtfQUZFX0FEREFfVUxf UkFURV8xNksgPSAxLA0KKwlNVEtfQUZFX0FEREFfVUxfUkFURV8zMksgPSAyLA0KKwlNVEtfQUZF X0FEREFfVUxfUkFURV80OEsgPSAzLA0KKwlNVEtfQUZFX0FEREFfVUxfUkFURV85NksgPSA0LA0K KwlNVEtfQUZFX0FEREFfVUxfUkFURV8xOTJLID0gNSwNCisJTVRLX0FGRV9BRERBX1VMX1JBVEVf NDhLX0hEID0gNiwNCit9Ow0KKw0KKyNkZWZpbmUgU0RNX0FVVE9fUkVTRVRfVEhSRVNIT0xEIDB4 MTkwMDAwDQorDQorc3RhdGljIHVuc2lnbmVkIGludCBhZGRhX2RsX3JhdGVfdHJhbnNmb3JtKHN0 cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSwNCisJCQkJCSAgIHVuc2lnbmVkIGludCByYXRlKQ0KK3sN CisJc3dpdGNoIChyYXRlKSB7DQorCWNhc2UgODAwMDoNCisJCXJldHVybiBNVEtfQUZFX0FEREFf RExfUkFURV84SzsNCisJY2FzZSAxMTAyNToNCisJCXJldHVybiBNVEtfQUZFX0FEREFfRExfUkFU RV8xMUs7DQorCWNhc2UgMTIwMDA6DQorCQlyZXR1cm4gTVRLX0FGRV9BRERBX0RMX1JBVEVfMTJL Ow0KKwljYXNlIDE2MDAwOg0KKwkJcmV0dXJuIE1US19BRkVfQUREQV9ETF9SQVRFXzE2SzsNCisJ Y2FzZSAyMjA1MDoNCisJCXJldHVybiBNVEtfQUZFX0FEREFfRExfUkFURV8yMks7DQorCWNhc2Ug MjQwMDA6DQorCQlyZXR1cm4gTVRLX0FGRV9BRERBX0RMX1JBVEVfMjRLOw0KKwljYXNlIDMyMDAw Og0KKwkJcmV0dXJuIE1US19BRkVfQUREQV9ETF9SQVRFXzMySzsNCisJY2FzZSA0NDEwMDoNCisJ CXJldHVybiBNVEtfQUZFX0FEREFfRExfUkFURV80NEs7DQorCWNhc2UgNDgwMDA6DQorCQlyZXR1 cm4gTVRLX0FGRV9BRERBX0RMX1JBVEVfNDhLOw0KKwljYXNlIDk2MDAwOg0KKwkJcmV0dXJuIE1U S19BRkVfQUREQV9ETF9SQVRFXzk2SzsNCisJY2FzZSAxOTIwMDA6DQorCQlyZXR1cm4gTVRLX0FG RV9BRERBX0RMX1JBVEVfMTkySzsNCisJZGVmYXVsdDoNCisJCWRldl93YXJuKGFmZS0+ZGV2LCAi JXMoKSwgcmF0ZSAlZCBpbnZhbGlkLCB1c2UgNDhrSHohISFcbiIsDQorCQkJIF9fZnVuY19fLCBy YXRlKTsNCisJCXJldHVybiBNVEtfQUZFX0FEREFfRExfUkFURV80OEs7DQorCX0NCit9DQorDQor c3RhdGljIHVuc2lnbmVkIGludCBhZGRhX3VsX3JhdGVfdHJhbnNmb3JtKHN0cnVjdCBtdGtfYmFz ZV9hZmUgKmFmZSwNCisJCQkJCSAgIHVuc2lnbmVkIGludCByYXRlKQ0KK3sNCisJc3dpdGNoIChy YXRlKSB7DQorCWNhc2UgODAwMDoNCisJCXJldHVybiBNVEtfQUZFX0FEREFfVUxfUkFURV84SzsN CisJY2FzZSAxNjAwMDoNCisJCXJldHVybiBNVEtfQUZFX0FEREFfVUxfUkFURV8xNks7DQorCWNh c2UgMzIwMDA6DQorCQlyZXR1cm4gTVRLX0FGRV9BRERBX1VMX1JBVEVfMzJLOw0KKwljYXNlIDQ4 MDAwOg0KKwkJcmV0dXJuIE1US19BRkVfQUREQV9VTF9SQVRFXzQ4SzsNCisJY2FzZSA5NjAwMDoN CisJCXJldHVybiBNVEtfQUZFX0FEREFfVUxfUkFURV85Nks7DQorCWNhc2UgMTkyMDAwOg0KKwkJ cmV0dXJuIE1US19BRkVfQUREQV9VTF9SQVRFXzE5Mks7DQorCWRlZmF1bHQ6DQorCQlkZXZfd2Fy bihhZmUtPmRldiwgIiVzKCksIHJhdGUgJWQgaW52YWxpZCwgdXNlIDQ4a0h6ISEhXG4iLA0KKwkJ CSBfX2Z1bmNfXywgcmF0ZSk7DQorCQlyZXR1cm4gTVRLX0FGRV9BRERBX1VMX1JBVEVfNDhLOw0K Kwl9DQorfQ0KKw0KKy8qIGRhaSBjb21wb25lbnQgKi8NCitzdGF0aWMgY29uc3Qgc3RydWN0IHNu ZF9rY29udHJvbF9uZXcgbXRrX2FkZGFfZGxfY2gxX21peFtdID0gew0KKwlTT0NfREFQTV9TSU5H TEVfQVVUT0RJU0FCTEUoIkRMMV9DSDEiLCBBRkVfQ09OTjMsIElfREwxX0NIMSwgMSwgMCksDQor CVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwxMl9DSDEiLCBBRkVfQ09OTjMsIElfREwx Ml9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMMl9DSDEiLCBB RkVfQ09OTjMsIElfREwyX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJM RSgiREwzX0NIMSIsIEFGRV9DT05OMywgSV9ETDNfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lO R0xFX0FVVE9ESVNBQkxFKCJETDRfQ0gxIiwgQUZFX0NPTk4zXzEsIElfREw0X0NIMSwgMSwgMCks DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw1X0NIMSIsIEFGRV9DT05OM18xLCBJ X0RMNV9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNl9DSDEi LCBBRkVfQ09OTjNfMSwgSV9ETDZfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9E SVNBQkxFKCJETDhfQ0gxIiwgQUZFX0NPTk4zXzEsIElfREw4X0NIMSwgMSwgMCksDQorCVNPQ19E QVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiQUREQV9VTF9DSDMiLCBBRkVfQ09OTjMsDQorCQkJCSAg ICBJX0FEREFfVUxfQ0gzLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJB RERBX1VMX0NIMiIsIEFGRV9DT05OMywNCisJCQkJICAgIElfQUREQV9VTF9DSDIsIDEsIDApLA0K KwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkFEREFfVUxfQ0gxIiwgQUZFX0NPTk4zLA0K KwkJCQkgICAgSV9BRERBX1VMX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElT QUJMRSgiR0FJTjFfT1VUX0NIMSIsIEFGRV9DT05OMywNCisJCQkJICAgIElfR0FJTjFfT1VUX0NI MSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiUENNXzFfQ0FQX0NIMSIs IEFGRV9DT05OMywNCisJCQkJICAgIElfUENNXzFfQ0FQX0NIMSwgMSwgMCksDQorCVNPQ19EQVBN X1NJTkdMRV9BVVRPRElTQUJMRSgiUENNXzJfQ0FQX0NIMSIsIEFGRV9DT05OMywNCisJCQkJICAg IElfUENNXzJfQ0FQX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgi U1JDXzFfT1VUX0NIMSIsIEFGRV9DT05OM18xLA0KKwkJCQkgICAgSV9TUkNfMV9PVVRfQ0gxLCAx LCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJTUkNfMl9PVVRfQ0gxIiwgQUZF X0NPTk4zXzEsDQorCQkJCSAgICBJX1NSQ18yX09VVF9DSDEsIDEsIDApLA0KK307DQorDQorc3Rh dGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG10a19hZGRhX2RsX2NoMl9taXhbXSA9 IHsNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDFfQ0gxIiwgQUZFX0NPTk40LCBJ X0RMMV9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMMV9DSDIi LCBBRkVfQ09OTjQsIElfREwxX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElT QUJMRSgiREwxMl9DSDIiLCBBRkVfQ09OTjQsIElfREwxMl9DSDIsIDEsIDApLA0KKwlTT0NfREFQ TV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMMl9DSDEiLCBBRkVfQ09OTjQsIElfREwyX0NIMSwgMSwg MCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwyX0NIMiIsIEFGRV9DT05ONCwg SV9ETDJfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDNfQ0gx IiwgQUZFX0NPTk40LCBJX0RMM19DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJ U0FCTEUoIkRMM19DSDIiLCBBRkVfQ09OTjQsIElfREwzX0NIMiwgMSwgMCksDQorCVNPQ19EQVBN X1NJTkdMRV9BVVRPRElTQUJMRSgiREw0X0NIMiIsIEFGRV9DT05ONF8xLCBJX0RMNF9DSDIsIDEs IDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkRMNV9DSDIiLCBBRkVfQ09OTjRf MSwgSV9ETDVfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDZf Q0gyIiwgQUZFX0NPTk40XzEsIElfREw2X0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9B VVRPRElTQUJMRSgiREw4X0NIMiIsIEFGRV9DT05ONF8xLCBJX0RMOF9DSDIsIDEsIDApLA0KKwlT T0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkFEREFfVUxfQ0gzIiwgQUZFX0NPTk40LA0KKwkJ CQkgICAgSV9BRERBX1VMX0NIMywgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJM RSgiQUREQV9VTF9DSDIiLCBBRkVfQ09OTjQsDQorCQkJCSAgICBJX0FEREFfVUxfQ0gyLCAxLCAw KSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJBRERBX1VMX0NIMSIsIEFGRV9DT05O NCwNCisJCQkJICAgIElfQUREQV9VTF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVU T0RJU0FCTEUoIkdBSU4xX09VVF9DSDIiLCBBRkVfQ09OTjQsDQorCQkJCSAgICBJX0dBSU4xX09V VF9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8xX0NBUF9D SDEiLCBBRkVfQ09OTjQsDQorCQkJCSAgICBJX1BDTV8xX0NBUF9DSDEsIDEsIDApLA0KKwlTT0Nf REFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8yX0NBUF9DSDEiLCBBRkVfQ09OTjQsDQorCQkJ CSAgICBJX1BDTV8yX0NBUF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FC TEUoIlBDTV8xX0NBUF9DSDIiLCBBRkVfQ09OTjQsDQorCQkJCSAgICBJX1BDTV8xX0NBUF9DSDIs IDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8yX0NBUF9DSDIiLCBB RkVfQ09OTjQsDQorCQkJCSAgICBJX1BDTV8yX0NBUF9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9T SU5HTEVfQVVUT0RJU0FCTEUoIlNSQ18xX09VVF9DSDIiLCBBRkVfQ09OTjRfMSwNCisJCQkJICAg IElfU1JDXzFfT1VUX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgi U1JDXzJfT1VUX0NIMiIsIEFGRV9DT05ONF8xLA0KKwkJCQkgICAgSV9TUkNfMl9PVVRfQ0gyLCAx LCAwKSwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBtdGtf YWRkYV9kbF9jaDNfbWl4W10gPSB7DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwx X0NIMSIsIEFGRV9DT05ONTIsIElfREwxX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9B VVRPRElTQUJMRSgiREwxMl9DSDEiLCBBRkVfQ09OTjUyLCBJX0RMMTJfQ0gxLCAxLCAwKSwNCisJ U09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDJfQ0gxIiwgQUZFX0NPTk41MiwgSV9ETDJf Q0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDNfQ0gxIiwgQUZF X0NPTk41MiwgSV9ETDNfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxF KCJETDRfQ0gxIiwgQUZFX0NPTk41Ml8xLCBJX0RMNF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9T SU5HTEVfQVVUT0RJU0FCTEUoIkRMNV9DSDEiLCBBRkVfQ09OTjUyXzEsIElfREw1X0NIMSwgMSwg MCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREw2X0NIMSIsIEFGRV9DT05ONTJf MSwgSV9ETDZfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJBRERB X1VMX0NIMyIsIEFGRV9DT05ONTIsDQorCQkJCSAgICBJX0FEREFfVUxfQ0gzLCAxLCAwKSwNCisJ U09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJBRERBX1VMX0NIMiIsIEFGRV9DT05ONTIsDQor CQkJCSAgICBJX0FEREFfVUxfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNB QkxFKCJBRERBX1VMX0NIMSIsIEFGRV9DT05ONTIsDQorCQkJCSAgICBJX0FEREFfVUxfQ0gxLCAx LCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJHQUlOMV9PVVRfQ0gxIiwgQUZF X0NPTk41MiwNCisJCQkJICAgIElfR0FJTjFfT1VUX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJ TkdMRV9BVVRPRElTQUJMRSgiUENNXzFfQ0FQX0NIMSIsIEFGRV9DT05ONTIsDQorCQkJCSAgICBJ X1BDTV8xX0NBUF9DSDEsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBD TV8yX0NBUF9DSDEiLCBBRkVfQ09OTjUyLA0KKwkJCQkgICAgSV9QQ01fMl9DQVBfQ0gxLCAxLCAw KSwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBtdGtfYWRk YV9kbF9jaDRfbWl4W10gPSB7DQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwxX0NI MSIsIEFGRV9DT05ONTMsIElfREwxX0NIMSwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRP RElTQUJMRSgiREwxX0NIMiIsIEFGRV9DT05ONTMsIElfREwxX0NIMiwgMSwgMCksDQorCVNPQ19E QVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiREwxMl9DSDIiLCBBRkVfQ09OTjUzLCBJX0RMMTJfQ0gy LCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDJfQ0gxIiwgQUZFX0NP Tk41MywgSV9ETDJfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJE TDJfQ0gyIiwgQUZFX0NPTk41MywgSV9ETDJfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xF X0FVVE9ESVNBQkxFKCJETDNfQ0gxIiwgQUZFX0NPTk41MywgSV9ETDNfQ0gxLCAxLCAwKSwNCisJ U09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDNfQ0gyIiwgQUZFX0NPTk41MywgSV9ETDNf Q0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJETDRfQ0gyIiwgQUZF X0NPTk41M18xLCBJX0RMNF9DSDIsIDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FC TEUoIkRMNV9DSDIiLCBBRkVfQ09OTjUzXzEsIElfREw1X0NIMiwgMSwgMCksDQorCVNPQ19EQVBN X1NJTkdMRV9BVVRPRElTQUJMRSgiREw2X0NIMiIsIEFGRV9DT05ONTNfMSwgSV9ETDZfQ0gxLCAx LCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJBRERBX1VMX0NIMyIsIEFGRV9D T05ONTMsDQorCQkJCSAgICBJX0FEREFfVUxfQ0gzLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xF X0FVVE9ESVNBQkxFKCJBRERBX1VMX0NIMiIsIEFGRV9DT05ONTMsDQorCQkJCSAgICBJX0FEREFf VUxfQ0gyLCAxLCAwKSwNCisJU09DX0RBUE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJBRERBX1VMX0NI MSIsIEFGRV9DT05ONTMsDQorCQkJCSAgICBJX0FEREFfVUxfQ0gxLCAxLCAwKSwNCisJU09DX0RB UE1fU0lOR0xFX0FVVE9ESVNBQkxFKCJHQUlOMV9PVVRfQ0gyIiwgQUZFX0NPTk41MywNCisJCQkJ ICAgIElfR0FJTjFfT1VUX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJM RSgiUENNXzFfQ0FQX0NIMSIsIEFGRV9DT05ONTMsDQorCQkJCSAgICBJX1BDTV8xX0NBUF9DSDEs IDEsIDApLA0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlBDTV8yX0NBUF9DSDEiLCBB RkVfQ09OTjUzLA0KKwkJCQkgICAgSV9QQ01fMl9DQVBfQ0gxLCAxLCAwKSwNCisJU09DX0RBUE1f U0lOR0xFX0FVVE9ESVNBQkxFKCJQQ01fMV9DQVBfQ0gyIiwgQUZFX0NPTk41MywNCisJCQkJICAg IElfUENNXzFfQ0FQX0NIMiwgMSwgMCksDQorCVNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgi UENNXzJfQ0FQX0NIMiIsIEFGRV9DT05ONTMsDQorCQkJCSAgICBJX1BDTV8yX0NBUF9DSDIsIDEs IDApLA0KK307DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG10a19z dGZfY2gxX21peFtdID0gew0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkFEREFfVUxf Q0gxIiwgQUZFX0NPTk4xOSwNCisJCQkJICAgIElfQUREQV9VTF9DSDEsIDEsIDApLA0KK307DQor DQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG10a19zdGZfY2gyX21peFtd ID0gew0KKwlTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIkFEREFfVUxfQ0gyIiwgQUZFX0NP Tk4yMCwNCisJCQkJICAgIElfQUREQV9VTF9DSDIsIDEsIDApLA0KK307DQorDQorZW51bSB7DQor CVNVUFBMWV9TRVFfQUREQV9BRkVfT04sDQorCVNVUFBMWV9TRVFfQUREQV9ETF9PTiwNCisJU1VQ UExZX1NFUV9BRERBX0FVRF9QQURfVE9QLA0KKwlTVVBQTFlfU0VRX0FEREFfTVRLQUlGX0NGRywN CisJU1VQUExZX1NFUV9BRERBNl9NVEtBSUZfQ0ZHLA0KKwlTVVBQTFlfU0VRX0FEREFfRklGTywN CisJU1VQUExZX1NFUV9BRERBX0FQX0RNSUMsDQorCVNVUFBMWV9TRVFfQUREQV9VTF9PTiwNCit9 Ow0KKw0KK3N0YXRpYyBpbnQgbXRrX2FkZGFfdWxfc3JjX2RtaWMoc3RydWN0IG10a19iYXNlX2Fm ZSAqYWZlLCBpbnQgaWQpDQorew0KKwl1bnNpZ25lZCBpbnQgcmVnOw0KKw0KKwlzd2l0Y2ggKGlk KSB7DQorCWNhc2UgTVQ4MTkyX0RBSV9BRERBOg0KKwljYXNlIE1UODE5Ml9EQUlfQVBfRE1JQzoN CisJCXJlZyA9IEFGRV9BRERBX1VMX1NSQ19DT04wOw0KKwkJYnJlYWs7DQorCWNhc2UgTVQ4MTky X0RBSV9BRERBX0NIMzQ6DQorCWNhc2UgTVQ4MTkyX0RBSV9BUF9ETUlDX0NIMzQ6DQorCQlyZWcg PSBBRkVfQUREQTZfVUxfU1JDX0NPTjA7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCXJldHVy biAtRUlOVkFMOw0KKwl9DQorDQorCS8qIGRtaWMgbW9kZSwgMy4yNU0qLw0KKwlyZWdtYXBfdXBk YXRlX2JpdHMoYWZlLT5yZWdtYXAsIHJlZywNCisJCQkgICBESUdNSUNfM1AyNU1fMVA2MjVNX1NF TF9DVExfTUFTS19TRlQsDQorCQkJICAgMHgwKTsNCisJcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+ cmVnbWFwLCByZWcsDQorCQkJICAgRE1JQ19MT1dfUE9XRVJfTU9ERV9DVExfTUFTS19TRlQsDQor CQkJICAgMHgwKTsNCisNCisJLyogdHVybiBvbiBkbWljLCBjaDEsIGNoMiAqLw0KKwlyZWdtYXBf dXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsIHJlZywNCisJCQkgICBVTF9TRE1fM19MRVZFTF9DVExf TUFTS19TRlQsDQorCQkJICAgMHgxIDw8IFVMX1NETV8zX0xFVkVMX0NUTF9TRlQpOw0KKwlyZWdt YXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsIHJlZywNCisJCQkgICBVTF9NT0RFXzNQMjVNX0NI MV9DVExfTUFTS19TRlQsDQorCQkJICAgMHgxIDw8IFVMX01PREVfM1AyNU1fQ0gxX0NUTF9TRlQp Ow0KKwlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsIHJlZywNCisJCQkgICBVTF9NT0RF XzNQMjVNX0NIMl9DVExfTUFTS19TRlQsDQorCQkJICAgMHgxIDw8IFVMX01PREVfM1AyNU1fQ0gy X0NUTF9TRlQpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdGtfYWRkYV91bF9l dmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkgICAgIHN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCSAgICAgaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNu ZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFw bSk7DQorCXN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9k cnZkYXRhKGNtcG50KTsNCisJc3RydWN0IG10ODE5Ml9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBh ZmUtPnBsYXRmb3JtX3ByaXY7DQorCWludCBtdGthaWZfZG1pYyA9IGFmZV9wcml2LT5tdGthaWZf ZG1pYzsNCisNCisJZGV2X2luZm8oYWZlLT5kZXYsICIlcygpLCBuYW1lICVzLCBldmVudCAweCV4 LCBtdGthaWZfZG1pYyAlZFxuIiwNCisJCSBfX2Z1bmNfXywgdy0+bmFtZSwgZXZlbnQsIG10a2Fp Zl9kbWljKTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVf UE1VOg0KKwkJbXQ4MTkyX2FmZV9ncGlvX3JlcXVlc3QoYWZlLT5kZXYsIHRydWUsIE1UODE5Ml9E QUlfQUREQSwgMSk7DQorDQorCQkvKiB1cGRhdGUgc2V0dGluZyB0byBkbWljICovDQorCQlpZiAo bXRrYWlmX2RtaWMpIHsNCisJCQkvKiBtdGthaWZfcnhpZl9kYXRhX21vZGUgPSAxLCBkbWljICov DQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLCBBRkVfQUREQV9NVEtBSUZfUlhf Q0ZHMCwNCisJCQkJCSAgIDB4MSwgMHgxKTsNCisNCisJCQkvKiBkbWljIG1vZGUsIDMuMjVNKi8N CisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsIEFGRV9BRERBX01US0FJRl9SWF9D RkcwLA0KKwkJCQkJICAgTVRLQUlGX1JYSUZfVk9JQ0VfTU9ERV9NQVNLX1NGVCwNCisJCQkJCSAg IDB4MCk7DQorCQkJbXRrX2FkZGFfdWxfc3JjX2RtaWMoYWZlLCBNVDgxOTJfREFJX0FEREEpOw0K KwkJfQ0KKwkJYnJlYWs7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BPU1RfUE1EOg0KKwkJLyogc2hv dWxkIGRlbGF5ZWQgMS9mcyhzbWFsbGVzdCBpcyA4aykgPSAxMjV1cyBiZWZvcmUgYWZlIG9mZiAq Lw0KKwkJdXNsZWVwX3JhbmdlKDEyNSwgMTM1KTsNCisJCW10ODE5Ml9hZmVfZ3Bpb19yZXF1ZXN0 KGFmZS0+ZGV2LCBmYWxzZSwgTVQ4MTkyX0RBSV9BRERBLCAxKTsNCisJCWJyZWFrOw0KKwlkZWZh dWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQg bXRrX2FkZGFfY2gzNF91bF9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJ CQkJICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkJICBpbnQgZXZlbnQpDQor ew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2Nv bXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19j b21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRl ICphZmVfcHJpdiA9IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisJaW50IG10a2FpZl9kbWljID0gYWZl X3ByaXYtPm10a2FpZl9kbWljX2NoMzQ7DQorCWludCBtdGthaWZfYWRkYTZfb25seSA9IGFmZV9w cml2LT5tdGthaWZfYWRkYTZfb25seTsNCisNCisJZGV2X2luZm8oYWZlLT5kZXYsDQorCQkgIiVz KCksIG5hbWUgJXMsIGV2ZW50IDB4JXgsIG10a2FpZl9kbWljICVkLCBtdGthaWZfYWRkYTZfb25s eSAlZFxuIiwNCisJCSBfX2Z1bmNfXywgdy0+bmFtZSwgZXZlbnQsIG10a2FpZl9kbWljLCBtdGth aWZfYWRkYTZfb25seSk7DQorDQorCXN3aXRjaCAoZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RB UE1fUFJFX1BNVToNCisJCW10ODE5Ml9hZmVfZ3Bpb19yZXF1ZXN0KGFmZS0+ZGV2LCB0cnVlLCBN VDgxOTJfREFJX0FEREFfQ0gzNCwNCisJCQkJCTEpOw0KKw0KKwkJLyogdXBkYXRlIHNldHRpbmcg dG8gZG1pYyAqLw0KKwkJaWYgKG10a2FpZl9kbWljKSB7DQorCQkJLyogbXRrYWlmX3J4aWZfZGF0 YV9tb2RlID0gMSwgZG1pYyAqLw0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwN CisJCQkJCSAgIEFGRV9BRERBNl9NVEtBSUZfUlhfQ0ZHMCwNCisJCQkJCSAgIDB4MSwgMHgxKTsN CisNCisJCQkvKiBkbWljIG1vZGUsIDMuMjVNKi8NCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZl LT5yZWdtYXAsDQorCQkJCQkgICBBRkVfQUREQTZfTVRLQUlGX1JYX0NGRzAsDQorCQkJCQkgICBN VEtBSUZfUlhJRl9WT0lDRV9NT0RFX01BU0tfU0ZULA0KKwkJCQkJICAgMHgwKTsNCisJCQltdGtf YWRkYV91bF9zcmNfZG1pYyhhZmUsIE1UODE5Ml9EQUlfQUREQV9DSDM0KTsNCisJCX0NCisNCisJ CS8qIHdoZW4gdXNpbmcgYWRkYTYgd2l0aG91dCBhZGRhIGVuYWJsZWQsDQorCQkgKiBSR19BRERB Nl9NVEtBSUZfUlhfU1lOQ19XT1JEMl9ESVNBQkxFX1NGVCBuZWVkIHRvIGJlIHNldCBvcg0KKwkJ ICogZGF0YSBjYW5ub3QgYmUgcmVjZWl2ZWQuDQorCQkgKi8NCisJCWlmIChtdGthaWZfYWRkYTZf b25seSkgew0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCisJCQkJCSAgIEFG RV9BRERBX01US0FJRl9TWU5DV09SRF9DRkcsDQorCQkJCQkgICAweDEgPDwgMjMsIDB4MSA8PCAy Myk7DQorCQl9DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTUQ6DQorCQkv KiBzaG91bGQgZGVsYXllZCAxL2ZzKHNtYWxsZXN0IGlzIDhrKSA9IDEyNXVzIGJlZm9yZSBhZmUg b2ZmICovDQorCQl1c2xlZXBfcmFuZ2UoMTI1LCAxMzUpOw0KKwkJbXQ4MTkyX2FmZV9ncGlvX3Jl cXVlc3QoYWZlLT5kZXYsIGZhbHNlLCBNVDgxOTJfREFJX0FEREFfQ0gzNCwNCisJCQkJCTEpOw0K Kw0KKwkJLyogcmVzZXQgZG1pYyAqLw0KKwkJYWZlX3ByaXYtPm10a2FpZl9kbWljX2NoMzQgPSAw Ow0KKw0KKwkJaWYgKG10a2FpZl9hZGRhNl9vbmx5KSB7DQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRz KGFmZS0+cmVnbWFwLA0KKwkJCQkJICAgQUZFX0FEREFfTVRLQUlGX1NZTkNXT1JEX0NGRywNCisJ CQkJCSAgIDB4MSA8PCAyMywgMHgwIDw8IDIzKTsNCisJCX0NCisJCWJyZWFrOw0KKwlkZWZhdWx0 Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRr X2FkZGFfcGFkX3RvcF9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywNCisJCQkJ ICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkJICBpbnQgZXZlbnQpDQorew0K KwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBv bmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19jb21w b25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRlICph ZmVfcHJpdiA9IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwlj YXNlIFNORF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJaWYgKGFmZV9wcml2LT5tdGthaWZfcHJvdG9j b2wgPT0gTVRLQUlGX1BST1RPQ09MXzJfQ0xLX1AyKQ0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJl Z21hcCwgQUZFX0FVRF9QQURfVE9QLCAweDM4KTsNCisJCWVsc2UgaWYgKGFmZV9wcml2LT5tdGth aWZfcHJvdG9jb2wgPT0gTVRLQUlGX1BST1RPQ09MXzIpDQorCQkJcmVnbWFwX3dyaXRlKGFmZS0+ cmVnbWFwLCBBRkVfQVVEX1BBRF9UT1AsIDB4MzApOw0KKwkJZWxzZQ0KKwkJCXJlZ21hcF93cml0 ZShhZmUtPnJlZ21hcCwgQUZFX0FVRF9QQURfVE9QLCAweDMwKTsNCisJCWJyZWFrOw0KKwlkZWZh dWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQg bXRrX2FkZGFfbXRrYWlmX2NmZ19ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywN CisJCQkJICAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkJICAgICBpbnQg ZXZlbnQpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19k YXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0g c25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2Fm ZV9wcml2YXRlICphZmVfcHJpdiA9IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisJaW50IGRlbGF5X2Rh dGE7DQorCWludCBkZWxheV9jeWNsZTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNO RF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJaWYgKGFmZV9wcml2LT5tdGthaWZfcHJvdG9jb2wgPT0g TVRLQUlGX1BST1RPQ09MXzJfQ0xLX1AyKSB7DQorCQkJLyogc2V0IHByb3RvY29sIDIgKi8NCisJ CQlyZWdtYXBfd3JpdGUoYWZlLT5yZWdtYXAsIEFGRV9BRERBX01US0FJRl9DRkcwLA0KKwkJCQkg ICAgIDB4MDAwMTAwMDApOw0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwgQUZFX0FEREE2 X01US0FJRl9DRkcwLA0KKwkJCQkgICAgIDB4MDAwMTAwMDApOw0KKw0KKwkJCWlmIChzdHJjbXAo dy0+bmFtZSwgIkFEREFfTVRLQUlGX0NGRyIpID09IDAgJiYNCisJCQkgICAgKGFmZV9wcml2LT5t dGthaWZfY2hvc2VuX3BoYXNlWzBdIDwgMCB8fA0KKwkJCSAgICAgYWZlX3ByaXYtPm10a2FpZl9j aG9zZW5fcGhhc2VbMV0gPCAwKSkgew0KKwkJCQlkZXZfd2FybihhZmUtPmRldiwNCisJCQkJCSAi JXMoKSwgbXRrYWlmX2Nob3Nlbl9waGFzZVswLzFdOiVkLyVkXG4iLA0KKwkJCQkJIF9fZnVuY19f LA0KKwkJCQkJIGFmZV9wcml2LT5tdGthaWZfY2hvc2VuX3BoYXNlWzBdLA0KKwkJCQkJIGFmZV9w cml2LT5tdGthaWZfY2hvc2VuX3BoYXNlWzFdKTsNCisJCQkJYnJlYWs7DQorCQkJfSBlbHNlIGlm IChzdHJjbXAody0+bmFtZSwgIkFEREE2X01US0FJRl9DRkciKSA9PSAwICYmDQorCQkJCSAgIGFm ZV9wcml2LT5tdGthaWZfY2hvc2VuX3BoYXNlWzJdIDwgMCkgew0KKwkJCQlkZXZfd2FybihhZmUt PmRldiwNCisJCQkJCSAiJXMoKSwgbXRrYWlmX2Nob3Nlbl9waGFzZVsyXTolZFxuIiwNCisJCQkJ CSBfX2Z1bmNfXywNCisJCQkJCSBhZmVfcHJpdi0+bXRrYWlmX2Nob3Nlbl9waGFzZVsyXSk7DQor CQkJCWJyZWFrOw0KKwkJCX0NCisNCisJCQkvKiBtdGthaWZfcnhpZl9jbGtpbnZfYWRjIGludmVy c2UgZm9yIGNhbGlicmF0aW9uICovDQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFw LCBBRkVfQUREQV9NVEtBSUZfQ0ZHMCwNCisJCQkJCSAgIE1US0FJRl9SWElGX0NMS0lOVl9BRENf TUFTS19TRlQsDQorCQkJCQkgICAweDEgPDwgTVRLQUlGX1JYSUZfQ0xLSU5WX0FEQ19TRlQpOw0K KwkJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwgQUZFX0FEREE2X01US0FJRl9DRkcw LA0KKwkJCQkJICAgTVRLQUlGX1JYSUZfQ0xLSU5WX0FEQ19NQVNLX1NGVCwNCisJCQkJCSAgIDB4 MSA8PCBNVEtBSUZfUlhJRl9DTEtJTlZfQURDX1NGVCk7DQorDQorCQkJLyogc2V0IGRlbGF5IGZv ciBjaDEyICovDQorCQkJaWYgKGFmZV9wcml2LT5tdGthaWZfcGhhc2VfY3ljbGVbMF0gPj0NCisJ CQkgICAgYWZlX3ByaXYtPm10a2FpZl9waGFzZV9jeWNsZVsxXSkgew0KKwkJCQlkZWxheV9kYXRh ID0gREVMQVlfREFUQV9NSVNPMTsNCisJCQkJZGVsYXlfY3ljbGUgPSBhZmVfcHJpdi0+bXRrYWlm X3BoYXNlX2N5Y2xlWzBdIC0NCisJCQkJCSAgICAgIGFmZV9wcml2LT5tdGthaWZfcGhhc2VfY3lj bGVbMV07DQorCQkJfSBlbHNlIHsNCisJCQkJZGVsYXlfZGF0YSA9IERFTEFZX0RBVEFfTUlTTzI7 DQorCQkJCWRlbGF5X2N5Y2xlID0gYWZlX3ByaXYtPm10a2FpZl9waGFzZV9jeWNsZVsxXSAtDQor CQkJCQkgICAgICBhZmVfcHJpdi0+bXRrYWlmX3BoYXNlX2N5Y2xlWzBdOw0KKwkJCX0NCisNCisJ CQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCQkgICBBRkVfQUREQV9NVEtB SUZfUlhfQ0ZHMiwNCisJCQkJCSAgIE1US0FJRl9SWElGX0RFTEFZX0RBVEFfTUFTS19TRlQsDQor CQkJCQkgICBkZWxheV9kYXRhIDw8DQorCQkJCQkgICBNVEtBSUZfUlhJRl9ERUxBWV9EQVRBX1NG VCk7DQorDQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0KKwkJCQkJICAgQUZF X0FEREFfTVRLQUlGX1JYX0NGRzIsDQorCQkJCQkgICBNVEtBSUZfUlhJRl9ERUxBWV9DWUNMRV9N QVNLX1NGVCwNCisJCQkJCSAgIGRlbGF5X2N5Y2xlIDw8DQorCQkJCQkgICBNVEtBSUZfUlhJRl9E RUxBWV9DWUNMRV9TRlQpOw0KKw0KKwkJCS8qIHNldCBkZWxheSBiZXR3ZWVuIGNoMyBhbmQgY2gy ICovDQorCQkJaWYgKGFmZV9wcml2LT5tdGthaWZfcGhhc2VfY3ljbGVbMl0gPj0NCisJCQkgICAg YWZlX3ByaXYtPm10a2FpZl9waGFzZV9jeWNsZVsxXSkgew0KKwkJCQlkZWxheV9kYXRhID0gREVM QVlfREFUQV9NSVNPMTsJLyogY2gzICovDQorCQkJCWRlbGF5X2N5Y2xlID0gYWZlX3ByaXYtPm10 a2FpZl9waGFzZV9jeWNsZVsyXSAtDQorCQkJCQkgICAgICBhZmVfcHJpdi0+bXRrYWlmX3BoYXNl X2N5Y2xlWzFdOw0KKwkJCX0gZWxzZSB7DQorCQkJCWRlbGF5X2RhdGEgPSBERUxBWV9EQVRBX01J U08yOwkvKiBjaDIgKi8NCisJCQkJZGVsYXlfY3ljbGUgPSBhZmVfcHJpdi0+bXRrYWlmX3BoYXNl X2N5Y2xlWzFdIC0NCisJCQkJCSAgICAgIGFmZV9wcml2LT5tdGthaWZfcGhhc2VfY3ljbGVbMl07 DQorCQkJfQ0KKw0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCisJCQkJCSAg IEFGRV9BRERBNl9NVEtBSUZfUlhfQ0ZHMiwNCisJCQkJCSAgIE1US0FJRl9SWElGX0RFTEFZX0RB VEFfTUFTS19TRlQsDQorCQkJCQkgICBkZWxheV9kYXRhIDw8DQorCQkJCQkgICBNVEtBSUZfUlhJ Rl9ERUxBWV9EQVRBX1NGVCk7DQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0K KwkJCQkJICAgQUZFX0FEREE2X01US0FJRl9SWF9DRkcyLA0KKwkJCQkJICAgTVRLQUlGX1JYSUZf REVMQVlfQ1lDTEVfTUFTS19TRlQsDQorCQkJCQkgICBkZWxheV9jeWNsZSA8PA0KKwkJCQkJICAg TVRLQUlGX1JYSUZfREVMQVlfQ1lDTEVfU0ZUKTsNCisJCX0gZWxzZSBpZiAoYWZlX3ByaXYtPm10 a2FpZl9wcm90b2NvbCA9PSBNVEtBSUZfUFJPVE9DT0xfMikgew0KKwkJCXJlZ21hcF93cml0ZShh ZmUtPnJlZ21hcCwgQUZFX0FEREFfTVRLQUlGX0NGRzAsDQorCQkJCSAgICAgMHgwMDAxMDAwMCk7 DQorCQkJcmVnbWFwX3dyaXRlKGFmZS0+cmVnbWFwLCBBRkVfQUREQTZfTVRLQUlGX0NGRzAsDQor CQkJCSAgICAgMHgwMDAxMDAwMCk7DQorCQl9IGVsc2Ugew0KKwkJCXJlZ21hcF93cml0ZShhZmUt PnJlZ21hcCwgQUZFX0FEREFfTVRLQUlGX0NGRzAsIDB4MCk7DQorCQkJcmVnbWFwX3dyaXRlKGFm ZS0+cmVnbWFwLCBBRkVfQUREQTZfTVRLQUlGX0NGRzAsIDB4MCk7DQorCQl9DQorCQlicmVhazsN CisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgaW50IG10a19hZGRhX2RsX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0K KwkJCSAgICAgc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkJICAgICBpbnQgZXZl bnQpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBt X3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0gc25k X3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKw0KKwlkZXZfaW5mbyhhZmUtPmRl diwgIiVzKCksIG5hbWUgJXMsIGV2ZW50IDB4JXhcbiIsDQorCQkgX19mdW5jX18sIHctPm5hbWUs IGV2ZW50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVf UE1VOg0KKwkJbXQ4MTkyX2FmZV9ncGlvX3JlcXVlc3QoYWZlLT5kZXYsIHRydWUsIE1UODE5Ml9E QUlfQUREQSwgMCk7DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTUQ6DQor CQkvKiBzaG91bGQgZGVsYXllZCAxL2ZzKHNtYWxsZXN0IGlzIDhrKSA9IDEyNXVzIGJlZm9yZSBh ZmUgb2ZmICovDQorCQl1c2xlZXBfcmFuZ2UoMTI1LCAxMzUpOw0KKwkJbXQ4MTkyX2FmZV9ncGlv X3JlcXVlc3QoYWZlLT5kZXYsIGZhbHNlLCBNVDgxOTJfREFJX0FEREEsIDApOw0KKwkJYnJlYWs7 DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludCBtdGtfYWRkYV9jaDM0X2RsX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0 ICp3LA0KKwkJCQkgIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCQkgIGludCBl dmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBzbmRfc29jX2Rh cG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUgPSBz bmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorDQorCWRldl9pbmZvKGFmZS0+ ZGV2LCAiJXMoKSwgbmFtZSAlcywgZXZlbnQgMHgleFxuIiwNCisJCSBfX2Z1bmNfXywgdy0+bmFt ZSwgZXZlbnQpOw0KKw0KKwlzd2l0Y2ggKGV2ZW50KSB7DQorCWNhc2UgU05EX1NPQ19EQVBNX1BS RV9QTVU6DQorCQltdDgxOTJfYWZlX2dwaW9fcmVxdWVzdChhZmUtPmRldiwgdHJ1ZSwgTVQ4MTky X0RBSV9BRERBX0NIMzQsDQorCQkJCQkwKTsNCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQ TV9QT1NUX1BNRDoNCisJCS8qIHNob3VsZCBkZWxheWVkIDEvZnMoc21hbGxlc3QgaXMgOGspID0g MTI1dXMgYmVmb3JlIGFmZSBvZmYgKi8NCisJCXVzbGVlcF9yYW5nZSgxMjUsIDEzNSk7DQorCQlt dDgxOTJfYWZlX2dwaW9fcmVxdWVzdChhZmUtPmRldiwgZmFsc2UsIE1UODE5Ml9EQUlfQUREQV9D SDM0LA0KKwkJCQkJMCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQor DQorCXJldHVybiAwOw0KK30NCisNCisvKiBzdGYgKi8NCitzdGF0aWMgaW50IHN0Zl9wb3NpdGl2 ZV9nYWluX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJCQkJIHN0cnVjdCBz bmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9u ZW50ICpjbXBudCA9IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsNCisJc3Ry dWN0IG10a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21w bnQpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRlICphZmVfcHJpdiA9IGFmZS0+cGxhdGZv cm1fcHJpdjsNCisNCisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPSBhZmVfcHJp di0+c3RmX3Bvc2l0aXZlX2dhaW5fZGI7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50 IHN0Zl9wb3NpdGl2ZV9nYWluX3NldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJ CQkJIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQ0KK3sNCisJc3RydWN0IHNu ZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtjb250 cm9sKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0 X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRlICphZmVfcHJpdiA9 IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisJaW50IGdhaW5fZGIgPSB1Y29udHJvbC0+dmFsdWUuaW50 ZWdlci52YWx1ZVswXTsNCisNCisJYWZlX3ByaXYtPnN0Zl9wb3NpdGl2ZV9nYWluX2RiID0gZ2Fp bl9kYjsNCisNCisJaWYgKGdhaW5fZGIgPj0gMCAmJiBnYWluX2RiIDw9IDI0KSB7DQorCQlyZWdt YXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCSAgIEFGRV9TSURFVE9ORV9HQUlOLA0K KwkJCQkgICBQT1NJVElWRV9HQUlOX01BU0tfU0ZULA0KKwkJCQkgICAoZ2Fpbl9kYiAvIDYpIDw8 IFBPU0lUSVZFX0dBSU5fU0ZUKTsNCisJfSBlbHNlIHsNCisJCWRldl93YXJuKGFmZS0+ZGV2LCAi JXMoKSwgZ2Fpbl9kYiAlZCBpbnZhbGlkXG4iLA0KKwkJCSBfX2Z1bmNfXywgZ2Fpbl9kYik7DQor CX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXQ4MTkyX2FkZGFfZG1pY19nZXQo c3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkJCXN0cnVjdCBzbmRfY3RsX2VsZW1f dmFsdWUgKnVjb250cm9sKQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9 IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsNCisJc3RydWN0IG10a19iYXNl X2FmZSAqYWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1 Y3QgbXQ4MTkyX2FmZV9wcml2YXRlICphZmVfcHJpdiA9IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisN CisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPSBhZmVfcHJpdi0+bXRrYWlmX2Rt aWM7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10ODE5Ml9hZGRhX2RtaWNfc2V0 KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KKwkJCQlzdHJ1Y3Qgc25kX2N0bF9lbGVt X3ZhbHVlICp1Y29udHJvbCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQg PSBzbmRfc29jX2tjb250cm9sX2NvbXBvbmVudChrY29udHJvbCk7DQorCXN0cnVjdCBtdGtfYmFz ZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisJc3Ry dWN0IG10ODE5Ml9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUtPnBsYXRmb3JtX3ByaXY7DQor CWludCBkbWljX29uOw0KKw0KKwlkbWljX29uID0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFs dWVbMF07DQorDQorCWRldl9pbmZvKGFmZS0+ZGV2LCAiJXMoKSwga2NvbnRyb2wgbmFtZSAlcywg ZG1pY19vbiAlZFxuIiwNCisJCSBfX2Z1bmNfXywga2NvbnRyb2wtPmlkLm5hbWUsIGRtaWNfb24p Ow0KKw0KKwlhZmVfcHJpdi0+bXRrYWlmX2RtaWMgPSBkbWljX29uOw0KKwlhZmVfcHJpdi0+bXRr YWlmX2RtaWNfY2gzNCA9IGRtaWNfb247DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50 IG10ODE5Ml9hZGRhNl9vbmx5X2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCisJ CQkJIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQ0KK3sNCisJc3RydWN0IHNu ZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtjb250 cm9sKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0 X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRlICphZmVfcHJpdiA9 IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisNCisJdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVb MF0gPSBhZmVfcHJpdi0+bXRrYWlmX2FkZGE2X29ubHk7DQorCXJldHVybiAwOw0KK30NCisNCitz dGF0aWMgaW50IG10ODE5Ml9hZGRhNl9vbmx5X3NldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29u dHJvbCwNCisJCQkJIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQ0KK3sNCisJ c3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBudCA9IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9u ZW50KGtjb250cm9sKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19jb21w b25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRlICph ZmVfcHJpdiA9IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisJaW50IG10a2FpZl9hZGRhNl9vbmx5Ow0K Kw0KKwltdGthaWZfYWRkYTZfb25seSA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBd Ow0KKw0KKwlkZXZfaW5mbyhhZmUtPmRldiwgIiVzKCksIGtjb250cm9sIG5hbWUgJXMsIG10a2Fp Zl9hZGRhNl9vbmx5ICVkXG4iLA0KKwkJIF9fZnVuY19fLCBrY29udHJvbC0+aWQubmFtZSwgbXRr YWlmX2FkZGE2X29ubHkpOw0KKw0KKwlhZmVfcHJpdi0+bXRrYWlmX2FkZGE2X29ubHkgPSBtdGth aWZfYWRkYTZfb25seTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg c25kX2tjb250cm9sX25ldyBtdGtfYWRkYV9jb250cm9sc1tdID0gew0KKwlTT0NfU0lOR0xFKCJT aWRldG9uZV9HYWluIiwgQUZFX1NJREVUT05FX0dBSU4sDQorCQkgICBTSURFX1RPTkVfR0FJTl9T RlQsIFNJREVfVE9ORV9HQUlOX01BU0ssIDApLA0KKwlTT0NfU0lOR0xFX0VYVCgiU2lkZXRvbmVf UG9zaXRpdmVfR2Fpbl9kQiIsIFNORF9TT0NfTk9QTSwgMCwgMTAwLCAwLA0KKwkJICAgICAgIHN0 Zl9wb3NpdGl2ZV9nYWluX2dldCwgc3RmX3Bvc2l0aXZlX2dhaW5fc2V0KSwNCisJU09DX1NJTkdM RSgiQUREQV9ETF9HQUlOIiwgQUZFX0FEREFfRExfU1JDMl9DT04xLA0KKwkJICAgRExfMl9HQUlO X0NUTF9QUkVfU0ZULCBETF8yX0dBSU5fQ1RMX1BSRV9NQVNLLCAwKSwNCisJU09DX1NJTkdMRV9C T09MX0VYVCgiTVRLQUlGX0RNSUMgU3dpdGNoIiwgMCwNCisJCQkgICAgbXQ4MTkyX2FkZGFfZG1p Y19nZXQsIG10ODE5Ml9hZGRhX2RtaWNfc2V0KSwNCisJU09DX1NJTkdMRV9CT09MX0VYVCgiTVRL QUlGX0FEREE2X09OTFkgU3dpdGNoIiwgMCwNCisJCQkgICAgbXQ4MTkyX2FkZGE2X29ubHlfZ2V0 LCBtdDgxOTJfYWRkYTZfb25seV9zZXQpLA0KK307DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBz bmRfa2NvbnRyb2xfbmV3IHN0Zl9jdGwgPQ0KKwlTT0NfREFQTV9TSU5HTEUoIlN3aXRjaCIsIFNO RF9TT0NfTk9QTSwgMCwgMSwgMCk7DQorDQorc3RhdGljIGNvbnN0IHUxNiBzdGZfY29lZmZfdGFi bGVfMTZrW10gPSB7DQorCTB4MDQ5QywgMHgwOUU4LCAweDA5RTAsIDB4MDg5QywNCisJMHhGRjU0 LCAweEY0ODgsIDB4RUFGQywgMHhFQkFDLA0KKwkweGZBNDAsIDB4MTdBQywgMHgzRDFDLCAweDYw MjgsDQorCTB4NzUzOA0KK307DQorDQorc3RhdGljIGNvbnN0IHUxNiBzdGZfY29lZmZfdGFibGVf MzJrW10gPSB7DQorCTB4RkU1MiwgMHgwMDQyLCAweDAwQzUsIDB4MDE5NCwNCisJMHgwMjlBLCAw eDAzQjcsIDB4MDRCRiwgMHgwNTdELA0KKwkweDA1QkUsIDB4MDU1NSwgMHgwNDI2LCAweDAyMzAs DQorCTB4RkY5MiwgMHhGQzg5LCAweEY5NzMsIDB4RjZDNiwNCisJMHhGNTAwLCAweEY0OUQsIDB4 RjYwMywgMHhGOTcwLA0KKwkweEZFRjMsIDB4MDY1RiwgMHgwRjRGLCAweDE5MjgsDQorCTB4MjMy OSwgMHgyQzgwLCAweDM0NUUsIDB4M0EwRCwNCisJMHgzRDA4DQorfTsNCisNCitzdGF0aWMgY29u c3QgdTE2IHN0Zl9jb2VmZl90YWJsZV80OGtbXSA9IHsNCisJMHgwNDAxLCAweEZGQjAsIDB4RkY1 QSwgMHhGRUNFLA0KKwkweEZFMTAsIDB4RkQyOCwgMHhGQzIxLCAweEZCMDgsDQorCTB4RjlFRiwg MHhGOEU4LCAweEY4MEEsIDB4Rjc2QywNCisJMHhGNzI0LCAweEY3NDYsIDB4RjdFNiwgMHhGOTBG LA0KKwkweEZBQ0MsIDB4RkQxRSwgMHhGRkZGLCAweDAzNjQsDQorCTB4MDczNywgMHgwQjYyLCAw eDBGQzEsIDB4MTQzMSwNCisJMHgxODhBLCAweDFDQTQsIDB4MjA1NiwgMHgyMzdELA0KKwkweDI1 RjksIDB4MjdCMCwgMHgyODkwDQorfTsNCisNCitzdGF0aWMgaW50IG10a19zdGZfZXZlbnQoc3Ry dWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQorCQkJIHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtj b250cm9sLA0KKwkJCSBpbnQgZXZlbnQpDQorew0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQg KmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10 a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0K Kw0KKwlzaXplX3QgaGFsZl90YXBfbnVtOw0KKwljb25zdCB1MTYgKnN0Zl9jb2VmZl90YWJsZTsN CisJdW5zaWduZWQgaW50IHVsX3JhdGUsIHJlZ192YWx1ZTsNCisJc2l6ZV90IGNvZWZfYWRkcjsN CisNCisJcmVnbWFwX3JlYWQoYWZlLT5yZWdtYXAsIEFGRV9BRERBX1VMX1NSQ19DT04wLCAmdWxf cmF0ZSk7DQorCXVsX3JhdGUgPSB1bF9yYXRlID4+IFVMX1ZPSUNFX01PREVfQ0gxX0NIMl9DVExf U0ZUOw0KKwl1bF9yYXRlID0gdWxfcmF0ZSAmIFVMX1ZPSUNFX01PREVfQ0gxX0NIMl9DVExfTUFT SzsNCisNCisJaWYgKHVsX3JhdGUgPT0gTVRLX0FGRV9BRERBX1VMX1JBVEVfNDhLKSB7DQorCQlo YWxmX3RhcF9udW0gPSBBUlJBWV9TSVpFKHN0Zl9jb2VmZl90YWJsZV80OGspOw0KKwkJc3RmX2Nv ZWZmX3RhYmxlID0gc3RmX2NvZWZmX3RhYmxlXzQ4azsNCisJfSBlbHNlIGlmICh1bF9yYXRlID09 IE1US19BRkVfQUREQV9VTF9SQVRFXzMySykgew0KKwkJaGFsZl90YXBfbnVtID0gQVJSQVlfU0la RShzdGZfY29lZmZfdGFibGVfMzJrKTsNCisJCXN0Zl9jb2VmZl90YWJsZSA9IHN0Zl9jb2VmZl90 YWJsZV8zMms7DQorCX0gZWxzZSB7DQorCQloYWxmX3RhcF9udW0gPSBBUlJBWV9TSVpFKHN0Zl9j b2VmZl90YWJsZV8xNmspOw0KKwkJc3RmX2NvZWZmX3RhYmxlID0gc3RmX2NvZWZmX3RhYmxlXzE2 azsNCisJfQ0KKw0KKwlyZWdtYXBfcmVhZChhZmUtPnJlZ21hcCwgQUZFX1NJREVUT05FX0NPTjEs ICZyZWdfdmFsdWUpOw0KKw0KKwlkZXZfaW5mbyhhZmUtPmRldiwgIiVzKCksIG5hbWUgJXMsIGV2 ZW50IDB4JXgsIHVsX3JhdGUgMHgleCwgQUZFX1NJREVUT05FX0NPTjEgMHgleFxuIiwNCisJCSBf X2Z1bmNfXywgdy0+bmFtZSwgZXZlbnQsIHVsX3JhdGUsIHJlZ192YWx1ZSk7DQorDQorCXN3aXRj aCAoZXZlbnQpIHsNCisJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToNCisJCS8qIHNldCBzaWRl IHRvbmUgZ2FpbiA9IDAgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCisJ CQkJICAgQUZFX1NJREVUT05FX0dBSU4sDQorCQkJCSAgIFNJREVfVE9ORV9HQUlOX01BU0tfU0ZU LA0KKwkJCQkgICAwKTsNCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCisJCQkJ ICAgQUZFX1NJREVUT05FX0dBSU4sDQorCQkJCSAgIFBPU0lUSVZFX0dBSU5fTUFTS19TRlQsDQor CQkJCSAgIDApOw0KKwkJLyogZG9uJ3QgYnlwYXNzIHN0ZiAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9i aXRzKGFmZS0+cmVnbWFwLA0KKwkJCQkgICBBRkVfU0lERVRPTkVfQ09OMSwNCisJCQkJICAgMHgx ZiA8PCAyNywNCisJCQkJICAgMHgwKTsNCisJCS8qIHNldCBzdGYgaGFsZiB0YXAgbnVtICovDQor CQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCSAgIEFGRV9TSURFVE9ORV9D T04xLA0KKwkJCQkgICBTSURFX1RPTkVfSEFMRl9UQVBfTlVNX01BU0tfU0ZULA0KKwkJCQkgICBo YWxmX3RhcF9udW0gPDwgU0lERV9UT05FX0hBTEZfVEFQX05VTV9TRlQpOw0KKw0KKwkJLyogc2V0 IHNpZGUgdG9uZSBjb2VmZmljaWVudCAqLw0KKwkJcmVnbWFwX3JlYWQoYWZlLT5yZWdtYXAsIEFG RV9TSURFVE9ORV9DT04wLCAmcmVnX3ZhbHVlKTsNCisJCWZvciAoY29lZl9hZGRyID0gMDsgY29l Zl9hZGRyIDwgaGFsZl90YXBfbnVtOyBjb2VmX2FkZHIrKykgew0KKwkJCWJvb2wgb2xkX3dfcmVh ZHkgPSAocmVnX3ZhbHVlID4+IFdfUkRZX1NGVCkgJiAweDE7DQorCQkJYm9vbCBuZXdfd19yZWFk eSA9IDA7DQorCQkJaW50IHRyeV9jbnQgPSAwOw0KKw0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhh ZmUtPnJlZ21hcCwNCisJCQkJCSAgIEFGRV9TSURFVE9ORV9DT04wLA0KKwkJCQkJICAgMHgzOUZG RkZGLA0KKwkJCQkJICAgKDEgPDwgUl9XX0VOX1NGVCkgfA0KKwkJCQkJICAgKDEgPDwgUl9XX1NF TF9TRlQpIHwNCisJCQkJCSAgICgwIDw8IFNFTF9DSDJfU0ZUKSB8DQorCQkJCQkgICAoY29lZl9h ZGRyIDw8DQorCQkJCQkgICBTSURFX1RPTkVfQ09FRkZJQ0lFTlRfQUREUl9TRlQpIHwNCisJCQkJ CSAgIHN0Zl9jb2VmZl90YWJsZVtjb2VmX2FkZHJdKTsNCisNCisJCQkvKiB3YWl0IHVudGlsIGZs YWcgd3JpdGVfcmVhZHkgY2hhbmdlZCAqLw0KKwkJCWZvciAodHJ5X2NudCA9IDA7IHRyeV9jbnQg PCAxMDsgdHJ5X2NudCsrKSB7DQorCQkJCXJlZ21hcF9yZWFkKGFmZS0+cmVnbWFwLA0KKwkJCQkJ ICAgIEFGRV9TSURFVE9ORV9DT04wLCAmcmVnX3ZhbHVlKTsNCisJCQkJbmV3X3dfcmVhZHkgPSAo cmVnX3ZhbHVlID4+IFdfUkRZX1NGVCkgJiAweDE7DQorDQorCQkJCS8qIGZsaXAgPT4gb2sgKi8N CisJCQkJaWYgKG5ld193X3JlYWR5ID09IG9sZF93X3JlYWR5KSB7DQorCQkJCQl1ZGVsYXkoMyk7 DQorCQkJCQlpZiAodHJ5X2NudCA9PSA5KSB7DQorCQkJCQkJZGV2X3dhcm4oYWZlLT5kZXYsDQor CQkJCQkJCSAiJXMoKSwgd3JpdGUgY29lZmYgbm90IHJlYWR5IiwNCisJCQkJCQkJIF9fZnVuY19f KTsNCisJCQkJCX0NCisJCQkJfSBlbHNlIHsNCisJCQkJCWJyZWFrOw0KKwkJCQl9DQorCQkJfQ0K KwkJCS8qIG5lZWQgd3JpdGUgLT4gcmVhZCAtPiB3cml0ZSB0byB3cml0ZSBuZXh0IGNvZWZmICov DQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0KKwkJCQkJICAgQUZFX1NJREVU T05FX0NPTjAsDQorCQkJCQkgICBSX1dfU0VMX01BU0tfU0ZULA0KKwkJCQkJICAgMHgwKTsNCisJ CX0NCisJCWJyZWFrOw0KKwljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoNCisJCS8qIGJ5cGFz cyBzdGYgKi8NCisJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCisJCQkJICAgQUZF X1NJREVUT05FX0NPTjEsDQorCQkJCSAgIDB4MWYgPDwgMjcsDQorCQkJCSAgIDB4MWYgPDwgMjcp Ow0KKw0KKwkJLyogc2V0IHNpZGUgdG9uZSBnYWluID0gMCAqLw0KKwkJcmVnbWFwX3VwZGF0ZV9i aXRzKGFmZS0+cmVnbWFwLA0KKwkJCQkgICBBRkVfU0lERVRPTkVfR0FJTiwNCisJCQkJICAgU0lE RV9UT05FX0dBSU5fTUFTS19TRlQsDQorCQkJCSAgIDApOw0KKwkJcmVnbWFwX3VwZGF0ZV9iaXRz KGFmZS0+cmVnbWFwLA0KKwkJCQkgICBBRkVfU0lERVRPTkVfR0FJTiwNCisJCQkJICAgUE9TSVRJ VkVfR0FJTl9NQVNLX1NGVCwNCisJCQkJICAgMCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJ CWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCisvKiBzdGYgbXV4ICovDQorZW51 bSB7DQorCVNURl9TUkNfQUREQV9BRERBNiA9IDAsDQorCVNURl9TUkNfTzE5TzIwLA0KK307DQor DQorc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0Zl9vMTlvMjBfbXV4X21hcFtdID0gew0KKwki QUREQV9BRERBNiIsDQorCSJPMTlPMjAiLA0KK307DQorDQorc3RhdGljIGludCBzdGZfbzE5bzIw X211eF9tYXBfdmFsdWVbXSA9IHsNCisJU1RGX1NSQ19BRERBX0FEREE2LA0KKwlTVEZfU1JDX08x OU8yMCwNCit9Ow0KKw0KK3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVDTChzdGZfbzE5 bzIwX211eF9tYXBfZW51bSwNCisJCQkJICBBRkVfU0lERVRPTkVfQ09OMSwNCisJCQkJICBTVEZf U09VUkNFX0ZST01fTzE5TzIwX1NGVCwNCisJCQkJICBTVEZfU09VUkNFX0ZST01fTzE5TzIwX01B U0ssDQorCQkJCSAgc3RmX28xOW8yMF9tdXhfbWFwLA0KKwkJCQkgIHN0Zl9vMTlvMjBfbXV4X21h cF92YWx1ZSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHN0Zl9v MTlPMjBfbXV4X2NvbnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJTVEZfTzE5TzIwX01VWCIsIHN0 Zl9vMTlvMjBfbXV4X21hcF9lbnVtKTsNCisNCitlbnVtIHsNCisJU1RGX1NSQ19BRERBID0gMCwN CisJU1RGX1NSQ19BRERBNiwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGZf YWRkYV9tdXhfbWFwW10gPSB7DQorCSJBRERBIiwNCisJIkFEREE2IiwNCit9Ow0KKw0KK3N0YXRp YyBpbnQgc3RmX2FkZGFfbXV4X21hcF92YWx1ZVtdID0gew0KKwlTVEZfU1JDX0FEREEsDQorCVNU Rl9TUkNfQUREQTYsDQorfTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RFQ0wo c3RmX2FkZGFfbXV4X21hcF9lbnVtLA0KKwkJCQkgIEFGRV9TSURFVE9ORV9DT04xLA0KKwkJCQkg IFNURl9PMTlPMjBfT1VUX0VOX1NFTF9TRlQsDQorCQkJCSAgU1RGX08xOU8yMF9PVVRfRU5fU0VM X01BU0ssDQorCQkJCSAgc3RmX2FkZGFfbXV4X21hcCwNCisJCQkJICBzdGZfYWRkYV9tdXhfbWFw X3ZhbHVlKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgc3RmX2Fk ZGFfbXV4X2NvbnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJTVEZfQUREQV9NVVgiLCBzdGZfYWRk YV9tdXhfbWFwX2VudW0pOw0KKw0KKy8qIEFEREEgVUwgTVVYICovDQorZW51bSB7DQorCUFEREFf VUxfTVVYX01US0FJRiA9IDAsDQorCUFEREFfVUxfTVVYX0FQX0RNSUMsDQorCUFEREFfVUxfTVVY X01BU0sgPSAweDEsDQorfTsNCisNCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFkZGFfdWxf bXV4X21hcFtdID0gew0KKwkiTVRLQUlGIiwgIkFQX0RNSUMiDQorfTsNCisNCitzdGF0aWMgaW50 IGFkZGFfdWxfbWFwX3ZhbHVlW10gPSB7DQorCUFEREFfVUxfTVVYX01US0FJRiwNCisJQUREQV9V TF9NVVhfQVBfRE1JQywNCit9Ow0KKw0KK3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVD TChhZGRhX3VsX211eF9tYXBfZW51bSwNCisJCQkJICBTTkRfU09DX05PUE0sDQorCQkJCSAgMCwN CisJCQkJICBBRERBX1VMX01VWF9NQVNLLA0KKwkJCQkgIGFkZGFfdWxfbXV4X21hcCwNCisJCQkJ ICBhZGRhX3VsX21hcF92YWx1ZSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRy b2xfbmV3IGFkZGFfdWxfbXV4X2NvbnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJBRERBX1VMX01V WCBTZWxlY3QiLCBhZGRhX3VsX211eF9tYXBfZW51bSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVj dCBzbmRfa2NvbnRyb2xfbmV3IGFkZGFfY2gzNF91bF9tdXhfY29udHJvbCA9DQorCVNPQ19EQVBN X0VOVU0oIkFEREFfQ0gzNF9VTF9NVVggU2VsZWN0IiwgYWRkYV91bF9tdXhfbWFwX2VudW0pOw0K Kw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBtdGtfZGFpX2FkZGFf d2lkZ2V0c1tdID0gew0KKwkvKiBpbnRlci1jb25uZWN0aW9ucyAqLw0KKwlTTkRfU09DX0RBUE1f TUlYRVIoIkFEREFfRExfQ0gxIiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgIG10a19hZGRh X2RsX2NoMV9taXgsDQorCQkJICAgQVJSQVlfU0laRShtdGtfYWRkYV9kbF9jaDFfbWl4KSksDQor CVNORF9TT0NfREFQTV9NSVhFUigiQUREQV9ETF9DSDIiLCBTTkRfU09DX05PUE0sIDAsIDAsDQor CQkJICAgbXRrX2FkZGFfZGxfY2gyX21peCwNCisJCQkgICBBUlJBWV9TSVpFKG10a19hZGRhX2Rs X2NoMl9taXgpKSwNCisNCisJU05EX1NPQ19EQVBNX01JWEVSKCJBRERBX0RMX0NIMyIsIFNORF9T T0NfTk9QTSwgMCwgMCwNCisJCQkgICBtdGtfYWRkYV9kbF9jaDNfbWl4LA0KKwkJCSAgIEFSUkFZ X1NJWkUobXRrX2FkZGFfZGxfY2gzX21peCkpLA0KKwlTTkRfU09DX0RBUE1fTUlYRVIoIkFEREFf RExfQ0g0IiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgIG10a19hZGRhX2RsX2NoNF9taXgs DQorCQkJICAgQVJSQVlfU0laRShtdGtfYWRkYV9kbF9jaDRfbWl4KSksDQorDQorCVNORF9TT0Nf REFQTV9TVVBQTFlfUygiQUREQSBFbmFibGUiLCBTVVBQTFlfU0VRX0FEREFfQUZFX09OLA0KKwkJ CSAgICAgIEFGRV9BRERBX1VMX0RMX0NPTjAsIEFEREFfQUZFX09OX1NGVCwgMCwNCisJCQkgICAg ICBOVUxMLCAwKSwNCisNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBRERBIFBsYXliYWNrIEVu YWJsZSIsIFNVUFBMWV9TRVFfQUREQV9ETF9PTiwNCisJCQkgICAgICBBRkVfQUREQV9ETF9TUkMy X0NPTjAsDQorCQkJICAgICAgRExfMl9TUkNfT05fVE1QX0NUTF9QUkVfU0ZULCAwLA0KKwkJCSAg ICAgIG10a19hZGRhX2RsX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwg U05EX1NPQ19EQVBNX1BPU1RfUE1EKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBRERBIENI MzQgUGxheWJhY2sgRW5hYmxlIiwNCisJCQkgICAgICBTVVBQTFlfU0VRX0FEREFfRExfT04sDQor CQkJICAgICAgQUZFX0FEREFfM1JEX0RBQ19ETF9TUkMyX0NPTjAsDQorCQkJICAgICAgRExfMl9T UkNfT05fVE1QX0NUTF9QUkVfU0ZULCAwLA0KKwkJCSAgICAgIG10a19hZGRhX2NoMzRfZGxfZXZl bnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9Q TUQpLA0KKw0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkFEREEgQ2FwdHVyZSBFbmFibGUiLCBT VVBQTFlfU0VRX0FEREFfVUxfT04sDQorCQkJICAgICAgQUZFX0FEREFfVUxfU1JDX0NPTjAsDQor CQkJICAgICAgVUxfU1JDX09OX1RNUF9DVExfU0ZULCAwLA0KKwkJCSAgICAgIG10a19hZGRhX3Vs X2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BP U1RfUE1EKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBRERBIENIMzQgQ2FwdHVyZSBFbmFi bGUiLCBTVVBQTFlfU0VRX0FEREFfVUxfT04sDQorCQkJICAgICAgQUZFX0FEREE2X1VMX1NSQ19D T04wLA0KKwkJCSAgICAgIFVMX1NSQ19PTl9UTVBfQ1RMX1NGVCwgMCwNCisJCQkgICAgICBtdGtf YWRkYV9jaDM0X3VsX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05E X1NPQ19EQVBNX1BPU1RfUE1EKSwNCisNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBVURfUEFE X1RPUCIsIFNVUFBMWV9TRVFfQUREQV9BVURfUEFEX1RPUCwNCisJCQkgICAgICBBRkVfQVVEX1BB RF9UT1AsDQorCQkJICAgICAgUkdfUlhfRklGT19PTl9TRlQsIDAsDQorCQkJICAgICAgbXRrX2Fk ZGFfcGFkX3RvcF9ldmVudCwNCisJCQkgICAgICBTTkRfU09DX0RBUE1fUFJFX1BNVSksDQorCVNO RF9TT0NfREFQTV9TVVBQTFlfUygiQUREQV9NVEtBSUZfQ0ZHIiwgU1VQUExZX1NFUV9BRERBX01U S0FJRl9DRkcsDQorCQkJICAgICAgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgICAgIG10a19h ZGRhX210a2FpZl9jZmdfZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUpLA0K KwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkFEREE2X01US0FJRl9DRkciLCBTVVBQTFlfU0VRX0FE REE2X01US0FJRl9DRkcsDQorCQkJICAgICAgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAgICAg IG10a19hZGRhX210a2FpZl9jZmdfZXZlbnQsDQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9Q TVUpLA0KKw0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIkFQX0RNSUNfRU4iLCBTVVBQTFlfU0VR X0FEREFfQVBfRE1JQywNCisJCQkgICAgICBBRkVfQUREQV9VTF9TUkNfQ09OMCwNCisJCQkgICAg ICBVTF9BUF9ETUlDX09OX1NGVCwgMCwNCisJCQkgICAgICBOVUxMLCAwKSwNCisJU05EX1NPQ19E QVBNX1NVUFBMWV9TKCJBUF9ETUlDX0NIMzRfRU4iLCBTVVBQTFlfU0VRX0FEREFfQVBfRE1JQywN CisJCQkgICAgICBBRkVfQUREQTZfVUxfU1JDX0NPTjAsDQorCQkJICAgICAgVUxfQVBfRE1JQ19P Tl9TRlQsIDAsDQorCQkJICAgICAgTlVMTCwgMCksDQorDQorCVNORF9TT0NfREFQTV9TVVBQTFlf UygiQUREQV9GSUZPIiwgU1VQUExZX1NFUV9BRERBX0ZJRk8sDQorCQkJICAgICAgQUZFX0FEREFf VUxfRExfQ09OMCwNCisJCQkgICAgICBBRkVfQUREQV9GSUZPX0FVVE9fUlNUX1NGVCwgMSwNCisJ CQkgICAgICBOVUxMLCAwKSwNCisJU05EX1NPQ19EQVBNX1NVUFBMWV9TKCJBRERBX0NIMzRfRklG TyIsIFNVUFBMWV9TRVFfQUREQV9GSUZPLA0KKwkJCSAgICAgIEFGRV9BRERBX1VMX0RMX0NPTjAs DQorCQkJICAgICAgQUZFX0FEREE2X0ZJRk9fQVVUT19SU1RfU0ZULCAxLA0KKwkJCSAgICAgIE5V TEwsIDApLA0KKw0KKwlTTkRfU09DX0RBUE1fTVVYKCJBRERBX1VMX011eCIsIFNORF9TT0NfTk9Q TSwgMCwgMCwNCisJCQkgJmFkZGFfdWxfbXV4X2NvbnRyb2wpLA0KKwlTTkRfU09DX0RBUE1fTVVY KCJBRERBX0NIMzRfVUxfTXV4IiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAmYWRkYV9jaDM0 X3VsX211eF9jb250cm9sKSwNCisNCisJU05EX1NPQ19EQVBNX0lOUFVUKCJBUF9ETUlDX0lOUFVU IiksDQorCVNORF9TT0NfREFQTV9JTlBVVCgiQVBfRE1JQ19DSDM0X0lOUFVUIiksDQorDQorCS8q IHN0ZiAqLw0KKwlTTkRfU09DX0RBUE1fU1dJVENIX0UoIlNpZGV0b25lIEZpbHRlciIsDQorCQkJ ICAgICAgQUZFX1NJREVUT05FX0NPTjEsIFNJREVfVE9ORV9PTl9TRlQsIDAsDQorCQkJICAgICAg JnN0Zl9jdGwsDQorCQkJICAgICAgbXRrX3N0Zl9ldmVudCwNCisJCQkgICAgICBTTkRfU09DX0RB UE1fUFJFX1BNVSB8DQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BPU1RfUE1EKSwNCisJU05EX1NP Q19EQVBNX01VWCgiU1RGX08xOU8yMF9NVVgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICZz dGZfbzE5TzIwX211eF9jb250cm9sKSwNCisJU05EX1NPQ19EQVBNX01VWCgiU1RGX0FEREFfTVVY IiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAmc3RmX2FkZGFfbXV4X2NvbnRyb2wpLA0KKwlT TkRfU09DX0RBUE1fTUlYRVIoIlNURl9DSDEiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAg bXRrX3N0Zl9jaDFfbWl4LA0KKwkJCSAgIEFSUkFZX1NJWkUobXRrX3N0Zl9jaDFfbWl4KSksDQor CVNORF9TT0NfREFQTV9NSVhFUigiU1RGX0NIMiIsIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkg ICBtdGtfc3RmX2NoMl9taXgsDQorCQkJICAgQVJSQVlfU0laRShtdGtfc3RmX2NoMl9taXgpKSwN CisJU05EX1NPQ19EQVBNX09VVFBVVCgiU1RGX09VVFBVVCIpLA0KKw0KKwkvKiBjbG9jayAqLw0K KwlTTkRfU09DX0RBUE1fQ0xPQ0tfU1VQUExZKCJ0b3BfbXV4X2F1ZGlvX2giKSwNCisNCisJU05E X1NPQ19EQVBNX0NMT0NLX1NVUFBMWSgiYXVkX2RhY19jbGsiKSwNCisJU05EX1NPQ19EQVBNX0NM T0NLX1NVUFBMWSgiYXVkX2RhY19wcmVkaXNfY2xrIiksDQorCVNORF9TT0NfREFQTV9DTE9DS19T VVBQTFkoImF1ZF8zcmRfZGFjX2NsayIpLA0KKwlTTkRfU09DX0RBUE1fQ0xPQ0tfU1VQUExZKCJh dWRfM3JkX2RhY19wcmVkaXNfY2xrIiksDQorDQorCVNORF9TT0NfREFQTV9DTE9DS19TVVBQTFko ImF1ZF9hZGNfY2xrIiksDQorCVNORF9TT0NfREFQTV9DTE9DS19TVVBQTFkoImF1ZF9hZGRhNl9h ZGNfY2xrIiksDQorfTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV9yb3V0 ZSBtdGtfZGFpX2FkZGFfcm91dGVzW10gPSB7DQorCS8qIHBsYXliYWNrICovDQorCXsiQUREQV9E TF9DSDEiLCAiREwxX0NIMSIsICJETDEifSwNCisJeyJBRERBX0RMX0NIMiIsICJETDFfQ0gxIiwg IkRMMSJ9LA0KKwl7IkFEREFfRExfQ0gyIiwgIkRMMV9DSDIiLCAiREwxIn0sDQorDQorCXsiQURE QV9ETF9DSDEiLCAiREwxMl9DSDEiLCAiREwxMiJ9LA0KKwl7IkFEREFfRExfQ0gyIiwgIkRMMTJf Q0gyIiwgIkRMMTIifSwNCisNCisJeyJBRERBX0RMX0NIMSIsICJETDZfQ0gxIiwgIkRMNiJ9LA0K Kwl7IkFEREFfRExfQ0gyIiwgIkRMNl9DSDIiLCAiREw2In0sDQorDQorCXsiQUREQV9ETF9DSDEi LCAiREw4X0NIMSIsICJETDgifSwNCisJeyJBRERBX0RMX0NIMiIsICJETDhfQ0gyIiwgIkRMOCJ9 LA0KKw0KKwl7IkFEREFfRExfQ0gxIiwgIkRMMl9DSDEiLCAiREwyIn0sDQorCXsiQUREQV9ETF9D SDIiLCAiREwyX0NIMSIsICJETDIifSwNCisJeyJBRERBX0RMX0NIMiIsICJETDJfQ0gyIiwgIkRM MiJ9LA0KKw0KKwl7IkFEREFfRExfQ0gxIiwgIkRMM19DSDEiLCAiREwzIn0sDQorCXsiQUREQV9E TF9DSDIiLCAiREwzX0NIMSIsICJETDMifSwNCisJeyJBRERBX0RMX0NIMiIsICJETDNfQ0gyIiwg IkRMMyJ9LA0KKw0KKwl7IkFEREFfRExfQ0gxIiwgIkRMNF9DSDEiLCAiREw0In0sDQorCXsiQURE QV9ETF9DSDIiLCAiREw0X0NIMiIsICJETDQifSwNCisNCisJeyJBRERBX0RMX0NIMSIsICJETDVf Q0gxIiwgIkRMNSJ9LA0KKwl7IkFEREFfRExfQ0gyIiwgIkRMNV9DSDIiLCAiREw1In0sDQorDQor CXsiQUREQSBQbGF5YmFjayIsIE5VTEwsICJBRERBX0RMX0NIMSJ9LA0KKwl7IkFEREEgUGxheWJh Y2siLCBOVUxMLCAiQUREQV9ETF9DSDIifSwNCisNCisJeyJBRERBIFBsYXliYWNrIiwgTlVMTCwg IkFEREEgRW5hYmxlIn0sDQorCXsiQUREQSBQbGF5YmFjayIsIE5VTEwsICJBRERBIFBsYXliYWNr IEVuYWJsZSJ9LA0KKw0KKwl7IkFEREFfRExfQ0gzIiwgIkRMMV9DSDEiLCAiREwxIn0sDQorCXsi QUREQV9ETF9DSDQiLCAiREwxX0NIMSIsICJETDEifSwNCisJeyJBRERBX0RMX0NINCIsICJETDFf Q0gyIiwgIkRMMSJ9LA0KKw0KKwl7IkFEREFfRExfQ0gzIiwgIkRMMTJfQ0gxIiwgIkRMMTIifSwN CisJeyJBRERBX0RMX0NINCIsICJETDEyX0NIMiIsICJETDEyIn0sDQorDQorCXsiQUREQV9ETF9D SDMiLCAiREw2X0NIMSIsICJETDYifSwNCisJeyJBRERBX0RMX0NINCIsICJETDZfQ0gyIiwgIkRM NiJ9LA0KKw0KKwl7IkFEREFfRExfQ0gzIiwgIkRMMl9DSDEiLCAiREwyIn0sDQorCXsiQUREQV9E TF9DSDQiLCAiREwyX0NIMSIsICJETDIifSwNCisJeyJBRERBX0RMX0NINCIsICJETDJfQ0gyIiwg IkRMMiJ9LA0KKw0KKwl7IkFEREFfRExfQ0gzIiwgIkRMM19DSDEiLCAiREwzIn0sDQorCXsiQURE QV9ETF9DSDQiLCAiREwzX0NIMSIsICJETDMifSwNCisJeyJBRERBX0RMX0NINCIsICJETDNfQ0gy IiwgIkRMMyJ9LA0KKw0KKwl7IkFEREFfRExfQ0gzIiwgIkRMNF9DSDEiLCAiREw0In0sDQorCXsi QUREQV9ETF9DSDQiLCAiREw0X0NIMiIsICJETDQifSwNCisNCisJeyJBRERBX0RMX0NIMyIsICJE TDVfQ0gxIiwgIkRMNSJ9LA0KKwl7IkFEREFfRExfQ0g0IiwgIkRMNV9DSDIiLCAiREw1In0sDQor DQorCXsiQUREQSBDSDM0IFBsYXliYWNrIiwgTlVMTCwgIkFEREFfRExfQ0gzIn0sDQorCXsiQURE QSBDSDM0IFBsYXliYWNrIiwgTlVMTCwgIkFEREFfRExfQ0g0In0sDQorDQorCXsiQUREQSBDSDM0 IFBsYXliYWNrIiwgTlVMTCwgIkFEREEgRW5hYmxlIn0sDQorCXsiQUREQSBDSDM0IFBsYXliYWNr IiwgTlVMTCwgIkFEREEgQ0gzNCBQbGF5YmFjayBFbmFibGUifSwNCisNCisJLyogY2FwdHVyZSAq Lw0KKwl7IkFEREFfVUxfTXV4IiwgIk1US0FJRiIsICJBRERBIENhcHR1cmUifSwNCisJeyJBRERB X1VMX011eCIsICJBUF9ETUlDIiwgIkFQIERNSUMgQ2FwdHVyZSJ9LA0KKw0KKwl7IkFEREFfQ0gz NF9VTF9NdXgiLCAiTVRLQUlGIiwgIkFEREEgQ0gzNCBDYXB0dXJlIn0sDQorCXsiQUREQV9DSDM0 X1VMX011eCIsICJBUF9ETUlDIiwgIkFQIERNSUMgQ0gzNCBDYXB0dXJlIn0sDQorDQorCXsiQURE QSBDYXB0dXJlIiwgTlVMTCwgIkFEREEgRW5hYmxlIn0sDQorCXsiQUREQSBDYXB0dXJlIiwgTlVM TCwgIkFEREEgQ2FwdHVyZSBFbmFibGUifSwNCisJeyJBRERBIENhcHR1cmUiLCBOVUxMLCAiQVVE X1BBRF9UT1AifSwNCisJeyJBRERBIENhcHR1cmUiLCBOVUxMLCAiQUREQV9NVEtBSUZfQ0ZHIn0s DQorDQorCXsiQVAgRE1JQyBDYXB0dXJlIiwgTlVMTCwgIkFEREEgRW5hYmxlIn0sDQorCXsiQVAg RE1JQyBDYXB0dXJlIiwgTlVMTCwgIkFEREEgQ2FwdHVyZSBFbmFibGUifSwNCisJeyJBUCBETUlD IENhcHR1cmUiLCBOVUxMLCAiQUREQV9GSUZPIn0sDQorCXsiQVAgRE1JQyBDYXB0dXJlIiwgTlVM TCwgIkFQX0RNSUNfRU4ifSwNCisNCisJeyJBRERBIENIMzQgQ2FwdHVyZSIsIE5VTEwsICJBRERB IEVuYWJsZSJ9LA0KKwl7IkFEREEgQ0gzNCBDYXB0dXJlIiwgTlVMTCwgIkFEREEgQ0gzNCBDYXB0 dXJlIEVuYWJsZSJ9LA0KKwl7IkFEREEgQ0gzNCBDYXB0dXJlIiwgTlVMTCwgIkFVRF9QQURfVE9Q In0sDQorCXsiQUREQSBDSDM0IENhcHR1cmUiLCBOVUxMLCAiQUREQTZfTVRLQUlGX0NGRyJ9LA0K Kw0KKwl7IkFQIERNSUMgQ0gzNCBDYXB0dXJlIiwgTlVMTCwgIkFEREEgRW5hYmxlIn0sDQorCXsi QVAgRE1JQyBDSDM0IENhcHR1cmUiLCBOVUxMLCAiQUREQSBDSDM0IENhcHR1cmUgRW5hYmxlIn0s DQorCXsiQVAgRE1JQyBDSDM0IENhcHR1cmUiLCBOVUxMLCAiQUREQV9DSDM0X0ZJRk8ifSwNCisJ eyJBUCBETUlDIENIMzQgQ2FwdHVyZSIsIE5VTEwsICJBUF9ETUlDX0NIMzRfRU4ifSwNCisNCisJ eyJBUCBETUlDIENhcHR1cmUiLCBOVUxMLCAiQVBfRE1JQ19JTlBVVCJ9LA0KKwl7IkFQIERNSUMg Q0gzNCBDYXB0dXJlIiwgTlVMTCwgIkFQX0RNSUNfQ0gzNF9JTlBVVCJ9LA0KKw0KKwkvKiBzaWRl dG9uZSBmaWx0ZXIgKi8NCisJeyJTVEZfQUREQV9NVVgiLCAiQUREQSIsICJBRERBX1VMX011eCJ9 LA0KKwl7IlNURl9BRERBX01VWCIsICJBRERBNiIsICJBRERBX0NIMzRfVUxfTXV4In0sDQorDQor CXsiU1RGX08xOU8yMF9NVVgiLCAiQUREQV9BRERBNiIsICJTVEZfQUREQV9NVVgifSwNCisJeyJT VEZfTzE5TzIwX01VWCIsICJPMTlPMjAiLCAiU1RGX0NIMSJ9LA0KKwl7IlNURl9PMTlPMjBfTVVY IiwgIk8xOU8yMCIsICJTVEZfQ0gyIn0sDQorDQorCXsiU2lkZXRvbmUgRmlsdGVyIiwgIlN3aXRj aCIsICJTVEZfTzE5TzIwX01VWCJ9LA0KKwl7IlNURl9PVVRQVVQiLCBOVUxMLCAiU2lkZXRvbmUg RmlsdGVyIn0sDQorCXsiQUREQSBQbGF5YmFjayIsIE5VTEwsICJTaWRldG9uZSBGaWx0ZXIifSwN CisJeyJBRERBIENIMzQgUGxheWJhY2siLCBOVUxMLCAiU2lkZXRvbmUgRmlsdGVyIn0sDQorDQor CS8qIGNsayAqLw0KKwl7IkFEREEgUGxheWJhY2siLCBOVUxMLCAiYXVkX2RhY19jbGsifSwNCisJ eyJBRERBIFBsYXliYWNrIiwgTlVMTCwgImF1ZF9kYWNfcHJlZGlzX2NsayJ9LA0KKw0KKwl7IkFE REEgQ0gzNCBQbGF5YmFjayIsIE5VTEwsICJhdWRfM3JkX2RhY19jbGsifSwNCisJeyJBRERBIENI MzQgUGxheWJhY2siLCBOVUxMLCAiYXVkXzNyZF9kYWNfcHJlZGlzX2NsayJ9LA0KKw0KKwl7IkFE REEgQ2FwdHVyZSBFbmFibGUiLCBOVUxMLCAiYXVkX2FkY19jbGsifSwNCisJeyJBRERBIENIMzQg Q2FwdHVyZSBFbmFibGUiLCBOVUxMLCAiYXVkX2FkZGE2X2FkY19jbGsifSwNCit9Ow0KKw0KKy8q IGRhaSBvcHMgKi8NCitzdGF0aWMgaW50IG10a19kYWlfYWRkYV9od19wYXJhbXMoc3RydWN0IHNu ZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sDQorCQkJCSAgc3RydWN0IHNuZF9wY21faHdfcGFy YW1zICpwYXJhbXMsDQorCQkJCSAgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpDQorew0KKwlzdHJ1 Y3QgbXRrX2Jhc2VfYWZlICphZmUgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShkYWkpOw0KKwl1 bnNpZ25lZCBpbnQgcmF0ZSA9IHBhcmFtc19yYXRlKHBhcmFtcyk7DQorCWludCBpZCA9IGRhaS0+ aWQ7DQorDQorCWRldl9pbmZvKGFmZS0+ZGV2LCAiJXMoKSwgaWQgJWQsIHN0cmVhbSAlZCwgcmF0 ZSAlZFxuIiwNCisJCSBfX2Z1bmNfXywNCisJCSBpZCwNCisJCSBzdWJzdHJlYW0tPnN0cmVhbSwN CisJCSByYXRlKTsNCisNCisJaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJF QU1fUExBWUJBQ0spIHsNCisJCXVuc2lnbmVkIGludCBkbF9zcmMyX2NvbjAgPSAwOw0KKwkJdW5z aWduZWQgaW50IGRsX3NyYzJfY29uMSA9IDA7DQorDQorCQkvKiBzZXQgc2FtcGxpbmcgcmF0ZSAq Lw0KKwkJZGxfc3JjMl9jb24wID0gYWRkYV9kbF9yYXRlX3RyYW5zZm9ybShhZmUsIHJhdGUpIDw8 DQorCQkJICAgICAgIERMXzJfSU5QVVRfTU9ERV9DVExfU0ZUOw0KKw0KKwkJLyogc2V0IG91dHB1 dCBtb2RlLCBVUF9TQU1QTElOR19SQVRFX1g4ICovDQorCQlkbF9zcmMyX2NvbjAgfD0gKDB4MyA8 PCBETF8yX09VVFBVVF9TRUxfQ1RMX1NGVCk7DQorDQorCQkvKiB0dXJuIG9mZiBtdXRlIGZ1bmN0 aW9uICovDQorCQlkbF9zcmMyX2NvbjAgfD0gKDB4MDEgPDwgRExfMl9NVVRFX0NIMl9PRkZfQ1RM X1BSRV9TRlQpOw0KKwkJZGxfc3JjMl9jb24wIHw9ICgweDAxIDw8IERMXzJfTVVURV9DSDFfT0ZG X0NUTF9QUkVfU0ZUKTsNCisNCisJCS8qIHNldCB2b2ljZSBpbnB1dCBkYXRhIGlmIGlucHV0IHNh bXBsZSByYXRlIGlzIDhrIG9yIDE2ayAqLw0KKwkJaWYgKHJhdGUgPT0gODAwMCB8fCByYXRlID09 IDE2MDAwKQ0KKwkJCWRsX3NyYzJfY29uMCB8PSAweDAxIDw8IERMXzJfVk9JQ0VfTU9ERV9DVExf UFJFX1NGVDsNCisNCisJCS8qIFNBIHN1Z2dlc3QgYXBwbHkgLTAuM2RiIHRvIGF1ZGlvL3NwZWVj aCBwYXRoICovDQorCQlkbF9zcmMyX2NvbjEgPSBNVEtfQUZFX0FEREFfRExfR0FJTl9OT1JNQUwg PDwNCisJCQkgICAgICAgRExfMl9HQUlOX0NUTF9QUkVfU0ZUOw0KKw0KKwkJLyogdHVybiBvbiBk b3duLWxpbmsgZ2FpbiAqLw0KKwkJZGxfc3JjMl9jb24wIHw9ICgweDAxIDw8IERMXzJfR0FJTl9P Tl9DVExfUFJFX1NGVCk7DQorDQorCQlpZiAoaWQgPT0gTVQ4MTkyX0RBSV9BRERBKSB7DQorCQkJ LyogY2xlYW4gcHJlZGlzdG9ydGlvbiAqLw0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwg QUZFX0FEREFfUFJFRElTX0NPTjAsIDApOw0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwg QUZFX0FEREFfUFJFRElTX0NPTjEsIDApOw0KKw0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21h cCwNCisJCQkJICAgICBBRkVfQUREQV9ETF9TUkMyX0NPTjAsIGRsX3NyYzJfY29uMCk7DQorCQkJ cmVnbWFwX3dyaXRlKGFmZS0+cmVnbWFwLA0KKwkJCQkgICAgIEFGRV9BRERBX0RMX1NSQzJfQ09O MSwgZGxfc3JjMl9jb24xKTsNCisNCisJCQkvKiBzZXQgc2RtIGdhaW4gKi8NCisJCQlyZWdtYXBf dXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCQkgICBBRkVfQUREQV9ETF9TRE1fRENDT01Q X0NPTiwNCisJCQkJCSAgIEFUVEdBSU5fQ1RMX01BU0tfU0ZULA0KKwkJCQkJICAgQVVESU9fU0RN X0xFVkVMX05PUk1BTCA8PA0KKwkJCQkJICAgQVRUR0FJTl9DVExfU0ZUKTsNCisNCisJCQkvKiAy bmQgc2RtICovDQorCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFmZS0+cmVnbWFwLA0KKwkJCQkJICAg QUZFX0FEREFfRExfU0RNX0RDQ09NUF9DT04sDQorCQkJCQkgICBVU0VfM1JEX1NETV9NQVNLX1NG VCwNCisJCQkJCSAgIEFVRElPX1NETV8yTkQgPDwgVVNFXzNSRF9TRE1fU0ZUKTsNCisNCisJCQkv KiBzZG0gYXV0byByZXNldCAqLw0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwNCisJCQkJ ICAgICBBRkVfQUREQV9ETF9TRE1fQVVUT19SRVNFVF9DT04sDQorCQkJCSAgICAgU0RNX0FVVE9f UkVTRVRfVEhSRVNIT0xEKTsNCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQor CQkJCQkgICBBRkVfQUREQV9ETF9TRE1fQVVUT19SRVNFVF9DT04sDQorCQkJCQkgICBBRERBX1NE TV9BVVRPX1JFU0VUX09OT0ZGX01BU0tfU0ZULA0KKwkJCQkJICAgMHgxIDw8IEFEREFfU0RNX0FV VE9fUkVTRVRfT05PRkZfU0ZUKTsNCisJCX0gZWxzZSB7DQorCQkJLyogY2xlYW4gcHJlZGlzdG9y dGlvbiAqLw0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwNCisJCQkJICAgICBBRkVfQURE QV8zUkRfREFDX1BSRURJU19DT04wLCAwKTsNCisJCQlyZWdtYXBfd3JpdGUoYWZlLT5yZWdtYXAs DQorCQkJCSAgICAgQUZFX0FEREFfM1JEX0RBQ19QUkVESVNfQ09OMSwgMCk7DQorDQorCQkJcmVn bWFwX3dyaXRlKGFmZS0+cmVnbWFwLCBBRkVfQUREQV8zUkRfREFDX0RMX1NSQzJfQ09OMCwNCisJ CQkJICAgICBkbF9zcmMyX2NvbjApOw0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwgQUZF X0FEREFfM1JEX0RBQ19ETF9TUkMyX0NPTjEsDQorCQkJCSAgICAgZGxfc3JjMl9jb24xKTsNCisN CisJCQkvKiBzZXQgc2RtIGdhaW4gKi8NCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdt YXAsDQorCQkJCQkgICBBRkVfQUREQV8zUkRfREFDX0RMX1NETV9EQ0NPTVBfQ09OLA0KKwkJCQkJ ICAgQVRUR0FJTl9DVExfTUFTS19TRlQsDQorCQkJCQkgICBBVURJT19TRE1fTEVWRUxfTk9STUFM IDw8DQorCQkJCQkgICBBVFRHQUlOX0NUTF9TRlQpOw0KKw0KKwkJCS8qIDJuZCBzZG0gKi8NCisJ CQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCQkgICBBRkVfQUREQV8zUkRf REFDX0RMX1NETV9EQ0NPTVBfQ09OLA0KKwkJCQkJICAgVVNFXzNSRF9TRE1fTUFTS19TRlQsDQor CQkJCQkgICBBVURJT19TRE1fMk5EIDw8IFVTRV8zUkRfU0RNX1NGVCk7DQorDQorCQkJLyogc2Rt IGF1dG8gcmVzZXQgKi8NCisJCQlyZWdtYXBfd3JpdGUoYWZlLT5yZWdtYXAsDQorCQkJCSAgICAg QUZFX0FEREFfM1JEX0RBQ19ETF9TRE1fQVVUT19SRVNFVF9DT04sDQorCQkJCSAgICAgU0RNX0FV VE9fUkVTRVRfVEhSRVNIT0xEKTsNCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAs DQorCQkJCQkgICBBRkVfQUREQV8zUkRfREFDX0RMX1NETV9BVVRPX1JFU0VUX0NPTiwNCisJCQkJ CSAgIEFEREFfM1JEX0RBQ19TRE1fQVVUT19SRVNFVF9PTk9GRl9NQVNLX1NGVCwNCisJCQkJCSAg IDB4MSA8PCBBRERBXzNSRF9EQUNfU0RNX0FVVE9fUkVTRVRfT05PRkZfU0ZUKTsNCisJCX0NCisJ fSBlbHNlIHsNCisJCXVuc2lnbmVkIGludCB2b2ljZV9tb2RlID0gMDsNCisJCXVuc2lnbmVkIGlu dCB1bF9zcmNfY29uMCA9IDA7CS8qIGRlZmF1bHQgdmFsdWUgKi8NCisNCisJCXZvaWNlX21vZGUg PSBhZGRhX3VsX3JhdGVfdHJhbnNmb3JtKGFmZSwgcmF0ZSk7DQorDQorCQl1bF9zcmNfY29uMCB8 PSAodm9pY2VfbW9kZSA8PCAxNykgJiAoMHg3IDw8IDE3KTsNCisNCisJCS8qIGVuYWJsZSBpaXIg Ki8NCisJCXVsX3NyY19jb24wIHw9ICgxIDw8IFVMX0lJUl9PTl9UTVBfQ1RMX1NGVCkgJg0KKwkJ CSAgICAgICBVTF9JSVJfT05fVE1QX0NUTF9NQVNLX1NGVDsNCisJCXVsX3NyY19jb24wIHw9IChV TF9JSVJfU1cgPDwgVUxfSUlSTU9ERV9DVExfU0ZUKSAmDQorCQkJICAgICAgIFVMX0lJUk1PREVf Q1RMX01BU0tfU0ZUOw0KKw0KKwkJc3dpdGNoIChpZCkgew0KKwkJY2FzZSBNVDgxOTJfREFJX0FE REE6DQorCQljYXNlIE1UODE5Ml9EQUlfQVBfRE1JQzoNCisJCQkvKiAzNUh6IEAgNDhrICovDQor CQkJcmVnbWFwX3dyaXRlKGFmZS0+cmVnbWFwLA0KKwkJCQkgICAgIEFGRV9BRERBX0lJUl9DT0VG XzAyXzAxLCAweDAwMDAwMDAwKTsNCisJCQlyZWdtYXBfd3JpdGUoYWZlLT5yZWdtYXAsDQorCQkJ CSAgICAgQUZFX0FEREFfSUlSX0NPRUZfMDRfMDMsIDB4MDAwMDNGQjgpOw0KKwkJCXJlZ21hcF93 cml0ZShhZmUtPnJlZ21hcCwNCisJCQkJICAgICBBRkVfQUREQV9JSVJfQ09FRl8wNl8wNSwgMHgz RkI4MDAwMCk7DQorCQkJcmVnbWFwX3dyaXRlKGFmZS0+cmVnbWFwLA0KKwkJCQkgICAgIEFGRV9B RERBX0lJUl9DT0VGXzA4XzA3LCAweDNGQjgwMDAwKTsNCisJCQlyZWdtYXBfd3JpdGUoYWZlLT5y ZWdtYXAsDQorCQkJCSAgICAgQUZFX0FEREFfSUlSX0NPRUZfMTBfMDksIDB4MDAwMEMwNDgpOw0K Kw0KKwkJCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwNCisJCQkJICAgICBBRkVfQUREQV9VTF9T UkNfQ09OMCwgdWxfc3JjX2NvbjApOw0KKw0KKwkJCS8qIFVzaW5nIEludGVybmFsIEFEQyAqLw0K KwkJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUtPnJlZ21hcCwNCisJCQkJCSAgIEFGRV9BRERBX1RP UF9DT04wLA0KKwkJCQkJICAgMHgxIDw8IDAsDQorCQkJCQkgICAweDAgPDwgMCk7DQorDQorCQkJ LyogbXRrYWlmX3J4aWZfZGF0YV9tb2RlID0gMCwgYW1pYyAqLw0KKwkJCXJlZ21hcF91cGRhdGVf Yml0cyhhZmUtPnJlZ21hcCwNCisJCQkJCSAgIEFGRV9BRERBX01US0FJRl9SWF9DRkcwLA0KKwkJ CQkJICAgMHgxIDw8IDAsDQorCQkJCQkgICAweDAgPDwgMCk7DQorCQkJYnJlYWs7DQorCQljYXNl IE1UODE5Ml9EQUlfQUREQV9DSDM0Og0KKwkJY2FzZSBNVDgxOTJfREFJX0FQX0RNSUNfQ0gzNDoN CisJCQkvKiAzNUh6IEAgNDhrICovDQorCQkJcmVnbWFwX3dyaXRlKGFmZS0+cmVnbWFwLA0KKwkJ CQkgICAgIEFGRV9BRERBNl9JSVJfQ09FRl8wMl8wMSwgMHgwMDAwMDAwMCk7DQorCQkJcmVnbWFw X3dyaXRlKGFmZS0+cmVnbWFwLA0KKwkJCQkgICAgIEFGRV9BRERBNl9JSVJfQ09FRl8wNF8wMywg MHgwMDAwM0ZCOCk7DQorCQkJcmVnbWFwX3dyaXRlKGFmZS0+cmVnbWFwLA0KKwkJCQkgICAgIEFG RV9BRERBNl9JSVJfQ09FRl8wNl8wNSwgMHgzRkI4MDAwMCk7DQorCQkJcmVnbWFwX3dyaXRlKGFm ZS0+cmVnbWFwLA0KKwkJCQkgICAgIEFGRV9BRERBNl9JSVJfQ09FRl8wOF8wNywgMHgzRkI4MDAw MCk7DQorCQkJcmVnbWFwX3dyaXRlKGFmZS0+cmVnbWFwLA0KKwkJCQkgICAgIEFGRV9BRERBNl9J SVJfQ09FRl8xMF8wOSwgMHgwMDAwQzA0OCk7DQorDQorCQkJcmVnbWFwX3dyaXRlKGFmZS0+cmVn bWFwLA0KKwkJCQkgICAgIEFGRV9BRERBNl9VTF9TUkNfQ09OMCwgdWxfc3JjX2NvbjApOw0KKw0K KwkJCS8qIFVzaW5nIEludGVybmFsIEFEQyAqLw0KKwkJCXJlZ21hcF91cGRhdGVfYml0cyhhZmUt PnJlZ21hcCwNCisJCQkJCSAgIEFGRV9BRERBNl9UT1BfQ09OMCwNCisJCQkJCSAgIDB4MSA8PCAw LA0KKwkJCQkJICAgMHgwIDw8IDApOw0KKw0KKwkJCS8qIG10a2FpZl9yeGlmX2RhdGFfbW9kZSA9 IDAsIGFtaWMgKi8NCisJCQlyZWdtYXBfdXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsDQorCQkJCQkg ICBBRkVfQUREQTZfTVRLQUlGX1JYX0NGRzAsDQorCQkJCQkgICAweDEgPDwgMCwNCisJCQkJCSAg IDB4MCA8PCAwKTsNCisJCQlicmVhazsNCisJCWRlZmF1bHQ6DQorCQkJYnJlYWs7DQorCQl9DQor DQorCQkvKiBhcCBkbWljICovDQorCQlzd2l0Y2ggKGlkKSB7DQorCQljYXNlIE1UODE5Ml9EQUlf QVBfRE1JQzoNCisJCWNhc2UgTVQ4MTkyX0RBSV9BUF9ETUlDX0NIMzQ6DQorCQkJbXRrX2FkZGFf dWxfc3JjX2RtaWMoYWZlLCBpZCk7DQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0KKwkJCWJyZWFr Ow0KKwkJfQ0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0 IHNuZF9zb2NfZGFpX29wcyBtdGtfZGFpX2FkZGFfb3BzID0gew0KKwkuaHdfcGFyYW1zID0gbXRr X2RhaV9hZGRhX2h3X3BhcmFtcywNCit9Ow0KKw0KKy8qIGRhaSBkcml2ZXIgKi8NCisjZGVmaW5l IE1US19BRERBX1BMQVlCQUNLX1JBVEVTIChTTkRSVl9QQ01fUkFURV84MDAwXzQ4MDAwIHxcDQor CQkJCSBTTkRSVl9QQ01fUkFURV85NjAwMCB8XA0KKwkJCQkgU05EUlZfUENNX1JBVEVfMTkyMDAw KQ0KKw0KKyNkZWZpbmUgTVRLX0FEREFfQ0FQVFVSRV9SQVRFUyAoU05EUlZfUENNX1JBVEVfODAw MCB8XA0KKwkJCQlTTkRSVl9QQ01fUkFURV8xNjAwMCB8XA0KKwkJCQlTTkRSVl9QQ01fUkFURV8z MjAwMCB8XA0KKwkJCQlTTkRSVl9QQ01fUkFURV80ODAwMCB8XA0KKwkJCQlTTkRSVl9QQ01fUkFU RV85NjAwMCB8XA0KKwkJCQlTTkRSVl9QQ01fUkFURV8xOTIwMDApDQorDQorI2RlZmluZSBNVEtf QUREQV9GT1JNQVRTIChTTkRSVl9QQ01fRk1UQklUX1MxNl9MRSB8XA0KKwkJCSAgU05EUlZfUENN X0ZNVEJJVF9TMjRfTEUgfFwNCisJCQkgIFNORFJWX1BDTV9GTVRCSVRfUzMyX0xFKQ0KKw0KK3N0 YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfZHJpdmVyIG10a19kYWlfYWRkYV9kcml2ZXJbXSA9IHsN CisJew0KKwkJLm5hbWUgPSAiQUREQSIsDQorCQkuaWQgPSBNVDgxOTJfREFJX0FEREEsDQorCQku cGxheWJhY2sgPSB7DQorCQkJLnN0cmVhbV9uYW1lID0gIkFEREEgUGxheWJhY2siLA0KKwkJCS5j aGFubmVsc19taW4gPSAxLA0KKwkJCS5jaGFubmVsc19tYXggPSAyLA0KKwkJCS5yYXRlcyA9IE1U S19BRERBX1BMQVlCQUNLX1JBVEVTLA0KKwkJCS5mb3JtYXRzID0gTVRLX0FEREFfRk9STUFUUywN CisJCX0sDQorCQkuY2FwdHVyZSA9IHsNCisJCQkuc3RyZWFtX25hbWUgPSAiQUREQSBDYXB0dXJl IiwNCisJCQkuY2hhbm5lbHNfbWluID0gMSwNCisJCQkuY2hhbm5lbHNfbWF4ID0gMiwNCisJCQku cmF0ZXMgPSBNVEtfQUREQV9DQVBUVVJFX1JBVEVTLA0KKwkJCS5mb3JtYXRzID0gTVRLX0FEREFf Rk9STUFUUywNCisJCX0sDQorCQkub3BzID0gJm10a19kYWlfYWRkYV9vcHMsDQorCX0sDQorCXsN CisJCS5uYW1lID0gIkFEREFfQ0gzNCIsDQorCQkuaWQgPSBNVDgxOTJfREFJX0FEREFfQ0gzNCwN CisJCS5wbGF5YmFjayA9IHsNCisJCQkuc3RyZWFtX25hbWUgPSAiQUREQSBDSDM0IFBsYXliYWNr IiwNCisJCQkuY2hhbm5lbHNfbWluID0gMSwNCisJCQkuY2hhbm5lbHNfbWF4ID0gMiwNCisJCQku cmF0ZXMgPSBNVEtfQUREQV9QTEFZQkFDS19SQVRFUywNCisJCQkuZm9ybWF0cyA9IE1US19BRERB X0ZPUk1BVFMsDQorCQl9LA0KKwkJLmNhcHR1cmUgPSB7DQorCQkJLnN0cmVhbV9uYW1lID0gIkFE REEgQ0gzNCBDYXB0dXJlIiwNCisJCQkuY2hhbm5lbHNfbWluID0gMSwNCisJCQkuY2hhbm5lbHNf bWF4ID0gMiwNCisJCQkucmF0ZXMgPSBNVEtfQUREQV9DQVBUVVJFX1JBVEVTLA0KKwkJCS5mb3Jt YXRzID0gTVRLX0FEREFfRk9STUFUUywNCisJCX0sDQorCQkub3BzID0gJm10a19kYWlfYWRkYV9v cHMsDQorCX0sDQorCXsNCisJCS5uYW1lID0gIkFQX0RNSUMiLA0KKwkJLmlkID0gTVQ4MTkyX0RB SV9BUF9ETUlDLA0KKwkJLmNhcHR1cmUgPSB7DQorCQkJLnN0cmVhbV9uYW1lID0gIkFQIERNSUMg Q2FwdHVyZSIsDQorCQkJLmNoYW5uZWxzX21pbiA9IDEsDQorCQkJLmNoYW5uZWxzX21heCA9IDIs DQorCQkJLnJhdGVzID0gTVRLX0FEREFfQ0FQVFVSRV9SQVRFUywNCisJCQkuZm9ybWF0cyA9IE1U S19BRERBX0ZPUk1BVFMsDQorCQl9LA0KKwkJLm9wcyA9ICZtdGtfZGFpX2FkZGFfb3BzLA0KKwl9 LA0KKwl7DQorCQkubmFtZSA9ICJBUF9ETUlDX0NIMzQiLA0KKwkJLmlkID0gTVQ4MTkyX0RBSV9B UF9ETUlDX0NIMzQsDQorCQkuY2FwdHVyZSA9IHsNCisJCQkuc3RyZWFtX25hbWUgPSAiQVAgRE1J QyBDSDM0IENhcHR1cmUiLA0KKwkJCS5jaGFubmVsc19taW4gPSAxLA0KKwkJCS5jaGFubmVsc19t YXggPSAyLA0KKwkJCS5yYXRlcyA9IE1US19BRERBX0NBUFRVUkVfUkFURVMsDQorCQkJLmZvcm1h dHMgPSBNVEtfQUREQV9GT1JNQVRTLA0KKwkJfSwNCisJCS5vcHMgPSAmbXRrX2RhaV9hZGRhX29w cywNCisJfSwNCit9Ow0KKw0KK2ludCBtdDgxOTJfZGFpX2FkZGFfcmVnaXN0ZXIoc3RydWN0IG10 a19iYXNlX2FmZSAqYWZlKQ0KK3sNCisJc3RydWN0IG10a19iYXNlX2FmZV9kYWkgKmRhaTsNCisJ c3RydWN0IG10ODE5Ml9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUtPnBsYXRmb3JtX3ByaXY7 DQorDQorCWRldl9pbmZvKGFmZS0+ZGV2LCAiJXMoKVxuIiwgX19mdW5jX18pOw0KKw0KKwlkYWkg PSBkZXZtX2t6YWxsb2MoYWZlLT5kZXYsIHNpemVvZigqZGFpKSwgR0ZQX0tFUk5FTCk7DQorCWlm ICghZGFpKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWxpc3RfYWRkKCZkYWktPmxpc3QsICZh ZmUtPnN1Yl9kYWlzKTsNCisNCisJZGFpLT5kYWlfZHJpdmVycyA9IG10a19kYWlfYWRkYV9kcml2 ZXI7DQorCWRhaS0+bnVtX2RhaV9kcml2ZXJzID0gQVJSQVlfU0laRShtdGtfZGFpX2FkZGFfZHJp dmVyKTsNCisNCisJZGFpLT5jb250cm9scyA9IG10a19hZGRhX2NvbnRyb2xzOw0KKwlkYWktPm51 bV9jb250cm9scyA9IEFSUkFZX1NJWkUobXRrX2FkZGFfY29udHJvbHMpOw0KKwlkYWktPmRhcG1f d2lkZ2V0cyA9IG10a19kYWlfYWRkYV93aWRnZXRzOw0KKwlkYWktPm51bV9kYXBtX3dpZGdldHMg PSBBUlJBWV9TSVpFKG10a19kYWlfYWRkYV93aWRnZXRzKTsNCisJZGFpLT5kYXBtX3JvdXRlcyA9 IG10a19kYWlfYWRkYV9yb3V0ZXM7DQorCWRhaS0+bnVtX2RhcG1fcm91dGVzID0gQVJSQVlfU0la RShtdGtfZGFpX2FkZGFfcm91dGVzKTsNCisNCisJLyogYXAgZG1pYyBwcml2IHNoYXJlIHdpdGgg YWRkYSAqLw0KKwlhZmVfcHJpdi0+ZGFpX3ByaXZbTVQ4MTkyX0RBSV9BUF9ETUlDXSA9DQorCQlh ZmVfcHJpdi0+ZGFpX3ByaXZbTVQ4MTkyX0RBSV9BRERBXTsNCisJYWZlX3ByaXYtPmRhaV9wcml2 W01UODE5Ml9EQUlfQVBfRE1JQ19DSDM0XSA9DQorCQlhZmVfcHJpdi0+ZGFpX3ByaXZbTVQ4MTky X0RBSV9BRERBX0NIMzRdOw0KKw0KKwlyZXR1cm4gMDsNCit9DQotLSANCjIuMTguMA0K