Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp596137ybe; Mon, 2 Sep 2019 06:28:18 -0700 (PDT) X-Google-Smtp-Source: APXvYqwDvnIN0eIbjTjPiokmWmX/KlyvLzKYfRbPrKByTaRS6OZ4LUOpE9cSUJvV9i55m1h1LtUJ X-Received: by 2002:a17:902:e686:: with SMTP id cn6mr30234887plb.12.1567430898227; Mon, 02 Sep 2019 06:28:18 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1567430898; cv=pass; d=google.com; s=arc-20160816; b=FLzX/F8XO4pwHl+y3/gPFXWCNucLTcfBk7STb+VHc5p7m8nQ1d0F9QGXNvw5AZVMrd vlB3H3+XDERxF4iuFVuRruHnS4mBx2WZwcSkI0huDFxSWdiNyhpimrhQG/PqR90AgwmR JnJBDoElk/YPIElcyHD/8j0N7WpZtJNtoqYJHyor8SA/fC+x0H8CI1yKAW4pficD0UJh RHc+wWR+WwQ7b2ti0PMJmSgQ2GptwYQkVvWxmv7ofxaZC5VXW2H2Qor6O+ry+6+eqfbQ COGep3z/QwgGS4KyvyzWFmZDiiw6wmXgqQLYMWrurBNESwHcLH2nKD5eoAveo395tyns j93Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=IA47rwfeZ/+FsG+xRVm9jBuKL/0xi4ex9ynjObttDXA=; b=JP/O5sqimjFuYaYBB2uGiJrN4YXQf1WBNsl6BOfsXyddyfD/T5eeXmZh9LIiGqBS46 JUMGKk/Y+2iLh/MGmyiQdFciHY9MIkPbRdmuYpKeGwlScEPJvHryfT9morUZXdIVP9E1 wKb1n46Jw2U+Fy62mbuwkkTUx6RKtG7fLtPL59ARMSO0Kc91DMVcJUylg5/GfYEbxZcb xRnBrpV3fLqKCSfV4tgVhM8SvzG24hEtpBrucD4VFdaWepcccLpckoKXB/skZdFX/hYC Kq8r0xerQUmByQzLuC+PTdMBhE4TN5+YUvHL7GYeHDKVM30o+/YPlsO2PeINkrPMQTye kHtA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@analog.onmicrosoft.com header.s=selector2-analog-onmicrosoft-com header.b=4EUDzw3W; arc=pass (i=1 spf=pass spfdomain=analog.com dkim=pass dkdomain=analog.com dmarc=pass fromdomain=analog.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a9si3223136pjw.59.2019.09.02.06.28.02; Mon, 02 Sep 2019 06:28:18 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@analog.onmicrosoft.com header.s=selector2-analog-onmicrosoft-com header.b=4EUDzw3W; arc=pass (i=1 spf=pass spfdomain=analog.com dkim=pass dkdomain=analog.com dmarc=pass fromdomain=analog.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730629AbfIBN0g (ORCPT + 99 others); Mon, 2 Sep 2019 09:26:36 -0400 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:32882 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726391AbfIBN0f (ORCPT ); Mon, 2 Sep 2019 09:26:35 -0400 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x82DNCum014321; Mon, 2 Sep 2019 09:26:04 -0400 Received: from nam05-by2-obe.outbound.protection.outlook.com (mail-by2nam05lp2054.outbound.protection.outlook.com [104.47.50.54]) by mx0a-00128a01.pphosted.com with ESMTP id 2uqjrab7wd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 02 Sep 2019 09:26:04 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fLjFY6HySGutMBOgO6ZJqsjJq3bLWU7oAmKhJgMKzReFBNwk4mth8Jub3X96k4rO52fjtcEy44AqetVYwBF2zHloJUDzcI8HpB6X/aiZzEMstvUejJoz1m2fR1IwkWwPosW2GZx1kvlqDz1yL3UMTpF3toKMwOSd57H3hDJ+1kqRmEDxku8H9rQMqX/0cEDOhOO5Qt68+XbnznQtWXM03a/qbGUdgxQkW0EyCqXkcO273PRHZijJhp0f8qH1muINR/G74tkqlG000ds+4tl8lxZLUkWtpYYeWH2J0uPsU6voBzBf51gX983U2XINDWzM12WX9SLgS3TnNcCssSP1Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IA47rwfeZ/+FsG+xRVm9jBuKL/0xi4ex9ynjObttDXA=; b=XtirGr+17HGYUDQwM0vbmMK9N7aD9pq9rQnlLlSgBUJXgYV+YFJiB64WSounrbs+M1iUrh1jGbqqtUbIQ/vkQ1ZQtYSxlhj4iDRG3PR0n2RpKDiPPWEXdD+x+7Ekgt1m5nQz8sgPErgXkFekli9pht1FibBorOLIENtWMnemVvTbWRVyDbjX3np1aaFZvN83rfWF9vpUqAjhmgZygghTqp8OXBDIhN2kbCI1X0JOaTNaJm9Yem/Xdxw/WQ6Qo2yzpDEfQRxElfLY1SEgagYdgWANugkQq46pzKNn89udg/pFgQbAcVIXCMRTAdH2rAQXKIhST2mFjdY96el8B4SSbw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=analog.com; dmarc=pass action=none header.from=analog.com; dkim=pass header.d=analog.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IA47rwfeZ/+FsG+xRVm9jBuKL/0xi4ex9ynjObttDXA=; b=4EUDzw3W1/sZrItCin5cOBom67qebaindJESsKuURDieB1dnKeffMJzAtj8rmhcmhpStpAlN8DZJke1RQbAeyXh/xM/eJeTKACt/T8W9qj90V8uddzyWKwb7CbxL+1NTYuOfWRMQdWkuhHDbW6pgCh3fKWZiiyO9ggoHSlUoPho= Received: from CH2PR03MB5192.namprd03.prod.outlook.com (20.180.12.152) by CH2PR03MB5301.namprd03.prod.outlook.com (20.180.15.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.20; Mon, 2 Sep 2019 13:26:02 +0000 Received: from CH2PR03MB5192.namprd03.prod.outlook.com ([fe80::ad16:8446:873b:4042]) by CH2PR03MB5192.namprd03.prod.outlook.com ([fe80::ad16:8446:873b:4042%3]) with mapi id 15.20.2220.021; Mon, 2 Sep 2019 13:26:02 +0000 From: "Ardelean, Alexandru" To: "Popa, Stefan Serban" , "Hennerich, Michael" , "jic23@kernel.org" , "rodrigorsdc@gmail.com" , "lars@metafoo.de" , "pmeerw@pmeerw.net" , "knaack.h@gmx.de" CC: "kernel-usp@googlegroups.com" , "linux-kernel@vger.kernel.org" , "linux-iio@vger.kernel.org" Subject: Re: [PATCH 2/2] staging: iio: accel: adis16240: move out of staging Thread-Topic: [PATCH 2/2] staging: iio: accel: adis16240: move out of staging Thread-Index: AQHVYSnZFCWG9VNqVkWJw952NEF21acYYZmA Date: Mon, 2 Sep 2019 13:26:02 +0000 Message-ID: <5cd4ad2f84280d8567d8c82e745a3189cecbde49.camel@analog.com> References: <20190902005938.7734-1-rodrigorsdc@gmail.com> <20190902005938.7734-2-rodrigorsdc@gmail.com> In-Reply-To: <20190902005938.7734-2-rodrigorsdc@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [137.71.226.54] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ee3dc6f5-5fab-4d93-8422-08d72fa9199c x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:CH2PR03MB5301; x-ms-traffictypediagnostic: CH2PR03MB5301: x-ld-processed: eaa689b4-8f87-40e0-9c6f-7228de4d754a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 01480965DA x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(376002)(346002)(366004)(396003)(136003)(199004)(189003)(110136005)(53946003)(6246003)(229853002)(53936002)(6486002)(118296001)(3846002)(14454004)(2906002)(36756003)(6116002)(478600001)(6436002)(6512007)(2501003)(26005)(76176011)(6506007)(305945005)(91956017)(76116006)(102836004)(186003)(66946007)(86362001)(7736002)(5660300002)(2201001)(99286004)(71190400001)(71200400001)(11346002)(2616005)(446003)(476003)(486006)(30864003)(66066001)(8676002)(14444005)(256004)(81166006)(25786009)(8936002)(4326008)(66446008)(54906003)(64756008)(66556008)(66476007)(81156014)(316002)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:CH2PR03MB5301;H:CH2PR03MB5192.namprd03.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: analog.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: +krgV4lPYt5SzBVxhLorcUClNoVdmVsCE3Kkyr4NxEetPJtJl0NKrTzfBYtsWJRGd6Y2D8vLx2Ua7vpXLSWcj4VEaONyOrp9yjaYEoQzjmuusRm5FPk3FDechBDmeCRtTsP49vuUfo65oWjQ/EAkLX2Lvru1xgY3uqKzDEgk5n4E6RjtsqxGWqHrVvY8wC7xtck4LreCmM7KU5f7EkepScSaJEE3imqlifuQ5cWt8q0wHsq5p72tt/lrwvdeWCwlg6CGHIJXm4Ci4VfwW4cuRPW+qNu1pPe9xsB0j0hC6jcGVCr/MDdUbrtEfhdyO6rcsD/YUrFUZaWmaC05KHrT5B+293rPU2cA6L3xg1mQ7QWVy9fnm5jIwW1wRgp8opBRdwyIIRvZUGS+O/l15TJ5ZpwcEWVBApDSC1356/B2KQk= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee3dc6f5-5fab-4d93-8422-08d72fa9199c X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Sep 2019 13:26:02.0950 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: b4DCoVwlu9VJcjR/eD9nGf5xa5KwRZ4RCeNBOZeSdoNjjmwTk1K6Vs6v+CxKhSnST+DVlSqCNJdHskFL1LdeTRAduMtUE+gL2Wi4h413ja4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5301 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.70,1.0.8 definitions=2019-09-02_05:2019-08-29,2019-09-02 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxlogscore=999 spamscore=0 malwarescore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 phishscore=0 adultscore=0 mlxscore=0 suspectscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1906280000 definitions=main-1909020150 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gU3VuLCAyMDE5LTA5LTAxIGF0IDIxOjU5IC0wMzAwLCBSb2RyaWdvIENhcnZhbGhvIHdyb3Rl Og0KPiBNb3ZlIEFESVMxNjI0MCBkcml2ZXIgZnJvbSBzdGFnaW5nIHRvIG1haW5saW5lLg0KPiAN Cj4gVGhlIEFESVMxNjI0MCBpcyBhIGZ1bGx5IGludGVncmF0ZWQgZGlnaXRhbCBzaG9jayBkZXRl Y3Rpb24NCj4gYW5kIHJlY29yZGVyIHN5c3RlbS4NCg0KDQpIZXksDQoNCkNvbW1lbnRzIGlubGlu ZS4NCg0KSSdsbCBwcm9iYWJseSB0YWtlIGEgbG9vayBpbiB0aGUgbmV4dCBkYXlzIGFnYWluLg0K VGhlcmUgc2VlbSB0byBiZSBzb21lIEFCSS9zeXNmcyBhdHRyaWJ1dGVzIHRoYXQgbmVlZCB0byBi ZSByZXNvbHZlZCBiZWZvcmUgbW92aW5nIHRoaXMgb3V0IG9mIHN0YWdpbmcuDQoNCj4gDQo+IFNp Z25lZC1vZmYtYnk6IFJvZHJpZ28gUmliZWlybyBDYXJ2YWxobyA8cm9kcmlnb3JzZGNAZ21haWwu Y29tPg0KPiAtLS0NCj4gIGRyaXZlcnMvaWlvL2FjY2VsL0tjb25maWcgICAgICAgICAgICAgfCAg MTIgKw0KPiAgZHJpdmVycy9paW8vYWNjZWwvTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArDQo+ ICBkcml2ZXJzL2lpby9hY2NlbC9hZGlzMTYyNDAuYyAgICAgICAgIHwgNDU0ICsrKysrKysrKysr KysrKysrKysrKysrKysrDQo+ICBkcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL0tjb25maWcgICAg IHwgIDEyIC0NCj4gIGRyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvTWFrZWZpbGUgICAgfCAgIDEg LQ0KPiAgZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyNDAuYyB8IDQ1NCAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgNiBmaWxlcyBjaGFuZ2VkLCA0NjcgaW5zZXJ0aW9ucygr KSwgNDY3IGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaWlvL2Fj Y2VsL2FkaXMxNjI0MC5jDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL2lp by9hY2NlbC9hZGlzMTYyNDAuYw0KDQpMb29rcyBsaWtlIE1BSU5UQUlORVJTIGZpbGUgYWxzbyBu ZWVkcyB0byBiZSB1cGRhdGVkLCBhbHNvIHdpdGggdGhlIERUIGJpbmRpbmdzIGZpbGUuDQpJIHRo aW5rIGNoZWNrcGF0Y2ggdXN1YWxseSBjb21wbGFpbnMgYWJvdXQgdGhlc2UuDQoNCj4gDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hY2NlbC9LY29uZmlnIGIvZHJpdmVycy9paW8vYWNjZWwv S2NvbmZpZw0KPiBpbmRleCBkNGVmMzVhZWI1NzkuLjkxZmQ4NzQxYzk1ZiAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9paW8vYWNjZWwvS2NvbmZpZw0KPiArKysgYi9kcml2ZXJzL2lpby9hY2NlbC9L Y29uZmlnDQo+IEBAIC0zMCw2ICszMCwxOCBAQCBjb25maWcgQURJUzE2MjA5DQo+ICAJICBUbyBj b21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBzYXkgTSBoZXJlOiB0aGUgbW9kdWxlIHdp bGwgYmUNCj4gIAkgIGNhbGxlZCBhZGlzMTYyMDkuDQo+ICANCj4gK2NvbmZpZyBBRElTMTYyNDAN Cj4gKwl0cmlzdGF0ZSAiQW5hbG9nIERldmljZXMgQURJUzE2MjQwIFByb2dyYW1tYWJsZSBJbXBh Y3QgU2Vuc29yIGFuZCBSZWNvcmRlciINCj4gKwlkZXBlbmRzIG9uIFNQSQ0KPiArCXNlbGVjdCBJ SU9fQURJU19MSUINCj4gKwlzZWxlY3QgSUlPX0FESVNfTElCX0JVRkZFUiBpZiBJSU9fQlVGRkVS DQo+ICsJaGVscA0KPiArCSAgU2F5IFkgaGVyZSB0byBidWlsZCBzdXBwb3J0IGZvciBBbmFsb2cg RGV2aWNlcyBhZGlzMTYyNDAgcHJvZ3JhbW1hYmxlDQo+ICsJICBpbXBhY3QgU2Vuc29yIGFuZCBy ZWNvcmRlci4NCj4gKw0KPiArCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwg c2F5IE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlDQo+ICsJICBjYWxsZWQgYWRpczE2MjQwLg0K PiArCSAgDQo+ICBjb25maWcgQURYTDM0NQ0KPiAgCXRyaXN0YXRlDQo+ICANCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaWlvL2FjY2VsL01ha2VmaWxlIGIvZHJpdmVycy9paW8vYWNjZWwvTWFrZWZp bGUNCj4gaW5kZXggNTZiZDAyMTVlMGQ0Li5mN2UwMjVhODZkZDkgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvaWlvL2FjY2VsL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvaWlvL2FjY2VsL01ha2Vm aWxlDQo+IEBAIC02LDYgKzYsNyBAQA0KPiAgIyBXaGVuIGFkZGluZyBuZXcgZW50cmllcyBrZWVw IHRoZSBsaXN0IGluIGFscGhhYmV0aWNhbCBvcmRlcg0KPiAgb2JqLSQoQ09ORklHX0FESVMxNjIw MSkgKz0gYWRpczE2MjAxLm8NCj4gIG9iai0kKENPTkZJR19BRElTMTYyMDkpICs9IGFkaXMxNjIw OS5vDQo+ICtvYmotJChDT05GSUdfQURJUzE2MjQwKSArPSBhZGlzMTYyNDAubw0KPiAgb2JqLSQo Q09ORklHX0FEWEwzNDUpICs9IGFkeGwzNDVfY29yZS5vDQo+ICBvYmotJChDT05GSUdfQURYTDM0 NV9JMkMpICs9IGFkeGwzNDVfaTJjLm8NCj4gIG9iai0kKENPTkZJR19BRFhMMzQ1X1NQSSkgKz0g YWR4bDM0NV9zcGkubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWNjZWwvYWRpczE2MjQw LmMgYi9kcml2ZXJzL2lpby9hY2NlbC9hZGlzMTYyNDAuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjgyMDk5ZGI0YmYwYw0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL2RyaXZlcnMvaWlvL2FjY2VsL2FkaXMxNjI0MC5jDQo+IEBAIC0wLDAgKzEsNDU0IEBA DQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsNCj4gKy8qDQo+ICsgKiBB RElTMTYyNDAgUHJvZ3JhbW1hYmxlIEltcGFjdCBTZW5zb3IgYW5kIFJlY29yZGVyIGRyaXZlcg0K PiArICoNCj4gKyAqIENvcHlyaWdodCAyMDEwIEFuYWxvZyBEZXZpY2VzIEluYy4NCj4gKyAqLw0K PiArDQo+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgv aXJxLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2Rl bGF5Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L2xpc3QuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKw0KPiArI2luY2x1 ZGUgPGxpbnV4L2lpby9paW8uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9paW8vc3lzZnMuaD4NCj4g KyNpbmNsdWRlIDxsaW51eC9paW8vYnVmZmVyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaWlvL2lt dS9hZGlzLmg+DQo+ICsNCj4gKyNkZWZpbmUgQURJUzE2MjQwX1NUQVJUVVBfREVMQVkJMjIwIC8q IG1zICovDQo+ICsNCj4gKy8qIEZsYXNoIG1lbW9yeSB3cml0ZSBjb3VudCAqLw0KPiArI2RlZmlu ZSBBRElTMTYyNDBfRkxBU0hfQ05UICAgICAgMHgwMA0KPiArDQo+ICsvKiBPdXRwdXQsIHBvd2Vy IHN1cHBseSAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfU1VQUExZX09VVCAgICAgMHgwMg0KPiAr DQo+ICsvKiBPdXRwdXQsIHgtYXhpcyBhY2NlbGVyb21ldGVyICovDQo+ICsjZGVmaW5lIEFESVMx NjI0MF9YQUNDTF9PVVQgICAgICAweDA0DQo+ICsNCj4gKy8qIE91dHB1dCwgeS1heGlzIGFjY2Vs ZXJvbWV0ZXIgKi8NCj4gKyNkZWZpbmUgQURJUzE2MjQwX1lBQ0NMX09VVCAgICAgIDB4MDYNCj4g Kw0KPiArLyogT3V0cHV0LCB6LWF4aXMgYWNjZWxlcm9tZXRlciAqLw0KPiArI2RlZmluZSBBRElT MTYyNDBfWkFDQ0xfT1VUICAgICAgMHgwOA0KPiArDQo+ICsvKiBPdXRwdXQsIGF1eGlsaWFyeSBB REMgaW5wdXQgKi8NCj4gKyNkZWZpbmUgQURJUzE2MjQwX0FVWF9BREMgICAgICAgIDB4MEENCj4g Kw0KPiArLyogT3V0cHV0LCB0ZW1wZXJhdHVyZSAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfVEVN UF9PVVQgICAgICAgMHgwQw0KPiArDQo+ICsvKiBPdXRwdXQsIHgtYXhpcyBhY2NlbGVyYXRpb24g cGVhayAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfWFBFQUtfT1VUICAgICAgMHgwRQ0KPiArDQo+ ICsvKiBPdXRwdXQsIHktYXhpcyBhY2NlbGVyYXRpb24gcGVhayAqLw0KPiArI2RlZmluZSBBRElT MTYyNDBfWVBFQUtfT1VUICAgICAgMHgxMA0KPiArDQo+ICsvKiBPdXRwdXQsIHotYXhpcyBhY2Nl bGVyYXRpb24gcGVhayAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfWlBFQUtfT1VUICAgICAgMHgx Mg0KPiArDQo+ICsvKiBPdXRwdXQsIHN1bS1vZi1zcXVhcmVzIGFjY2VsZXJhdGlvbiBwZWFrICov DQo+ICsjZGVmaW5lIEFESVMxNjI0MF9YWVpQRUFLX09VVCAgICAweDE0DQo+ICsNCj4gKy8qIE91 dHB1dCwgQ2FwdHVyZSBCdWZmZXIgMSwgWCBhbmQgWSBhY2NlbGVyYXRpb24gKi8NCj4gKyNkZWZp bmUgQURJUzE2MjQwX0NBUFRfQlVGMSAgICAgIDB4MTYNCj4gKw0KPiArLyogT3V0cHV0LCBDYXB0 dXJlIEJ1ZmZlciAyLCBaIGFjY2VsZXJhdGlvbiAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfQ0FQ VF9CVUYyICAgICAgMHgxOA0KPiArDQo+ICsvKiBEaWFnbm9zdGljLCBlcnJvciBmbGFncyAqLw0K PiArI2RlZmluZSBBRElTMTYyNDBfRElBR19TVEFUICAgICAgMHgxQQ0KPiArVGhpcyBsb29rcyBs aWtlIGl0IGNvdWxkIGJlIGNvbnZlcnRlZCB0byBJSU9fQ0hBTl9JTkZPX1NBTVBfRlJFUSBhdHRy aWJ1dGUuDQo+ICsvKiBEaWFnbm9zdGljLCBldmVudCBjb3VudGVyICovDQo+ICsjZGVmaW5lIEFE SVMxNjI0MF9FVk5UX0NOVFIgICAgICAweDFDDQo+ICsNCj4gKy8qIERpYWdub3N0aWMsIGNoZWNr IHN1bSB2YWx1ZSBmcm9tIGZpcm13YXJlIHRlc3QgKi8NCj4gKyNkZWZpbmUgQURJUzE2MjQwX0NI S19TVU0gICAgICAgIDB4MUUNCj4gKw0KPiArLyogQ2FsaWJyYXRpb24sIHgtYXhpcyBhY2NlbGVy YXRpb24gb2Zmc2V0IGFkanVzdG1lbnQgKi8NCj4gKyNkZWZpbmUgQURJUzE2MjQwX1hBQ0NMX09G RiAgICAgIDB4MjANCj4gKw0KPiArLyogQ2FsaWJyYXRpb24sIHktYXhpcyBhY2NlbGVyYXRpb24g b2Zmc2V0IGFkanVzdG1lbnQgKi8NCj4gKyNkZWZpbmUgQURJUzE2MjQwX1lBQ0NMX09GRiAgICAg IDB4MjINCj4gKw0KPiArLyogQ2FsaWJyYXRpb24sIHotYXhpcyBhY2NlbGVyYXRpb24gb2Zmc2V0 IGFkanVzdG1lbnQgKi8NCj4gKyNkZWZpbmUgQURJUzE2MjQwX1pBQ0NMX09GRiAgICAgIDB4MjQN Cj4gK1RoaXMgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSBjb252ZXJ0ZWQgdG8gSUlPX0NIQU5fSU5G T19TQU1QX0ZSRVEgYXR0cmlidXRlLg0KPiArLyogQ2xvY2ssIGhvdXIgYW5kIG1pbnV0ZSAqLw0K PiArI2RlZmluZSBBRElTMTYyNDBfQ0xLX1RJTUUgICAgICAgMHgyRQ0KPiArDQo+ICsvKiBDbG9j aywgbW9udGggYW5kIGRheSAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfQ0xLX0RBVEUgICAgICAg MHgzMA0KPiArDQo+ICsvKiBDbG9jaywgeWVhciAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfQ0xL X1lFQVIgICAgICAgMHgzMg0KPiArDQo+ICsvKiBXYWtlLXVwIHNldHRpbmcsIGhvdXIgYW5kIG1p bnV0ZSAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfV0FLRV9USU1FICAgICAgMHgzNA0KPiArDQo+ ICsvKiBXYWtlLXVwIHNldHRpbmcsIG1vbnRoIGFuZCBkYXkgKi8NCj4gKyNkZWZpbmUgQURJUzE2 MjQwX1dBS0VfREFURSAgICAgIDB4MzYNCj4gKw0KPiArLyogQWxhcm0gMSBhbXBsaXR1ZGUgdGhy ZXNob2xkICovDQo+ICsjZGVmaW5lIEFESVMxNjI0MF9BTE1fTUFHMSAgICAgICAweDM4DQo+ICsN Cj4gKy8qIEFsYXJtIDIgYW1wbGl0dWRlIHRocmVzaG9sZCAqLw0KPiArI2RlZmluZSBBRElTMTYy NDBfQUxNX01BRzIgICAgICAgMHgzQQ0KPiArDQo+ICsvKiBBbGFybSBjb250cm9sICovDQo+ICsj ZGVmaW5lIEFESVMxNjI0MF9BTE1fQ1RSTCAgICAgICAweDNDDQo+ICsNCj4gKy8qIENhcHR1cmUs IGV4dGVybmFsIHRyaWdnZXIgY29udHJvbCAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfWFRSSUdf Q1RSTCAgICAgMHgzRQ0KPiArDQo+ICsvKiBDYXB0dXJlLCBhZGRyZXNzIHBvaW50ZXIgKi8NCj4g KyNkZWZpbmUgQURJUzE2MjQwX0NBUFRfUE5UUiAgICAgIDB4NDANCj4gKw0KPiArLyogQ2FwdHVy ZSwgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfQ0FQ VF9DVFJMICAgICAgMHg0Mg0KPiArDQo+ICsvKiBHZW5lcmFsLXB1cnBvc2UgZGlnaXRhbCBpbnB1 dC9vdXRwdXQgY29udHJvbCAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfR1BJT19DVFJMICAgICAg MHg0NA0KPiArDQo+ICsvKiBNaXNjZWxsYW5lb3VzIGNvbnRyb2wgKi8NCj4gKyNkZWZpbmUgQURJ UzE2MjQwX01TQ19DVFJMICAgICAgIDB4NDYNCj4gKw0KPiArLyogSW50ZXJuYWwgc2FtcGxlIHBl cmlvZCAocmF0ZSkgY29udHJvbCAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfU01QTF9QUkQgICAg ICAgMHg0OA0KPiArDQo+ICsvKiBTeXN0ZW0gY29tbWFuZCAqLw0KPiArI2RlZmluZSBBRElTMTYy NDBfR0xPQl9DTUQgICAgICAgMHg0QQ0KPiArDQo+ICsvKiBNU0NfQ1RSTCAqLw0KPiArDQo+ICsv KiBFbmFibGVzIHN1bS1vZi1zcXVhcmVzIG91dHB1dCAoWFlaUEVBS19PVVQpICovDQo+ICsjZGVm aW5lIEFESVMxNjI0MF9NU0NfQ1RSTF9YWVpQRUFLX09VVF9FTglCSVQoMTUpDQo+ICsNCj4gKy8q IEVuYWJsZXMgcGVhayB0cmFja2luZyBvdXRwdXQgKFhQRUFLX09VVCwgWVBFQUtfT1VULCBhbmQg WlBFQUtfT1VUKSAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfTVNDX0NUUkxfWF9ZX1pQRUFLX09V VF9FTglCSVQoMTQpDQo+ICsNCj4gKy8qIFNlbGYtdGVzdCBlbmFibGU6IDEgPSBhcHBseSBlbGVj dHJvc3RhdGljIGZvcmNlLCAwID0gZGlzYWJsZWQgKi8NCj4gKyNkZWZpbmUgQURJUzE2MjQwX01T Q19DVFJMX1NFTEZfVEVTVF9FTgkgICAgICAgIEJJVCg4KQ0KPiArDQo+ICsvKiBEYXRhLXJlYWR5 IGVuYWJsZTogMSA9IGVuYWJsZWQsIDAgPSBkaXNhYmxlZCAqLw0KPiArI2RlZmluZSBBRElTMTYy NDBfTVNDX0NUUkxfREFUQV9SRFlfRU4JICAgICAgICBCSVQoMikNCj4gKw0KPiArLyogRGF0YS1y ZWFkeSBwb2xhcml0eTogMSA9IGFjdGl2ZSBoaWdoLCAwID0gYWN0aXZlIGxvdyAqLw0KPiArI2Rl ZmluZSBBRElTMTYyNDBfTVNDX0NUUkxfQUNUSVZFX0hJR0gJICAgICAgICBCSVQoMSkNCj4gKw0K PiArLyogRGF0YS1yZWFkeSBsaW5lIHNlbGVjdGlvbjogMSA9IERJTzIsIDAgPSBESU8xICovDQo+ ICsjZGVmaW5lIEFESVMxNjI0MF9NU0NfQ1RSTF9EQVRBX1JEWV9ESU8yCUJJVCgwKQ0KPiArDQo+ ICsvKiBESUFHX1NUQVQgKi8NCj4gKw0KPiArLyogQWxhcm0gMiBzdGF0dXM6IDEgPSBhbGFybSBh Y3RpdmUsIDAgPSBhbGFybSBpbmFjdGl2ZSAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfRElBR19T VEFUX0FMQVJNMiAgICAgIEJJVCg5KQ0KPiArDQo+ICsvKiBBbGFybSAxIHN0YXR1czogMSA9IGFs YXJtIGFjdGl2ZSwgMCA9IGFsYXJtIGluYWN0aXZlICovDQo+ICsjZGVmaW5lIEFESVMxNjI0MF9E SUFHX1NUQVRfQUxBUk0xICAgICAgQklUKDgpDQo+ICsNCj4gKy8qIENhcHR1cmUgYnVmZmVyIGZ1 bGw6IDEgPSBjYXB0dXJlIGJ1ZmZlciBpcyBmdWxsICovDQo+ICsjZGVmaW5lIEFESVMxNjI0MF9E SUFHX1NUQVRfQ1BUX0JVRl9GVUwgQklUKDcpDQo+ICsNCj4gKy8qIEZsYXNoIHRlc3QsIGNoZWNr c3VtIGZsYWc6IDEgPSBtaXNtYXRjaCwgMCA9IG1hdGNoICovDQo+ICsjZGVmaW5lIEFESVMxNjI0 MF9ESUFHX1NUQVRfQ0hLU1VNICAgICAgQklUKDYpDQo+ICsNCj4gKy8qIFBvd2VyLW9uLCBzZWxm LXRlc3QgZmxhZzogMSA9IGZhaWx1cmUsIDAgPSBwYXNzICovDQo+ICsjZGVmaW5lIEFESVMxNjI0 MF9ESUFHX1NUQVRfUFdST05fRkFJTF9CSVQgIDUNCj4gKw0KPiArLyogUG93ZXItb24gc2VsZi10 ZXN0OiAxID0gaW4tcHJvZ3Jlc3MsIDAgPSBjb21wbGV0ZSAqLw0KPiArI2RlZmluZSBBRElTMTYy NDBfRElBR19TVEFUX1BXUk9OX0JVU1kgIEJJVCg0KQ0KPiArDQo+ICsvKiBTUEkgY29tbXVuaWNh dGlvbnMgZmFpbHVyZSAqLw0KPiArI2RlZmluZSBBRElTMTYyNDBfRElBR19TVEFUX1NQSV9GQUlM X0JJVAkzDQo+ICsNCj4gKy8qIEZsYXNoIHVwZGF0ZSBmYWlsdXJlICovDQo+ICsjZGVmaW5lIEFE SVMxNjI0MF9ESUFHX1NUQVRfRkxBU0hfVVBUX0JJVAkyDQo+ICsNCj4gKy8qIFBvd2VyIHN1cHBs eSBhYm92ZSAzLjYyNSBWICovDQo+ICsjZGVmaW5lIEFESVMxNjI0MF9ESUFHX1NUQVRfUE9XRVJf SElHSF9CSVQJMQ0KPiArDQo+ICsgLyogUG93ZXIgc3VwcGx5IGJlbG93IDIuMjI1IFYgKi8NCj4g KyNkZWZpbmUgQURJUzE2MjQwX0RJQUdfU1RBVF9QT1dFUl9MT1dfQklUCTANCj4gKw0KPiArLyog R0xPQl9DTUQgKi8NCj4gKw0KPiArI2RlZmluZSBBRElTMTYyNDBfR0xPQl9DTURfUkVTVU1FCUJJ VCg4KQ0KPiArI2RlZmluZSBBRElTMTYyNDBfR0xPQl9DTURfU1dfUkVTRVQJQklUKDcpDQo+ICsj ZGVmaW5lIEFESVMxNjI0MF9HTE9CX0NNRF9TVEFOREJZCUJJVCgyKQ0KPiArDQo+ICsjZGVmaW5l IEFESVMxNjI0MF9FUlJPUl9BQ1RJVkUgICAgICAgICAgQklUKDE0KQ0KPiArDQo+ICsvKiBBdCB0 aGUgbW9tZW50IHRyaWdnZXJzIGFyZSBvbmx5IHVzZWQgZm9yIHJpbmcgYnVmZmVyDQo+ICsgKiBm aWxsaW5nLiBUaGlzIG1heSBjaGFuZ2UhDQo+ICsgKi8NCj4gKw0KPiArZW51bSBhZGlzMTYyNDBf c2NhbiB7DQo+ICsJQURJUzE2MjQwX1NDQU5fQUNDX1gsDQo+ICsJQURJUzE2MjQwX1NDQU5fQUND X1ksDQo+ICsJQURJUzE2MjQwX1NDQU5fQUNDX1osDQo+ICsJQURJUzE2MjQwX1NDQU5fU1VQUExZ LA0KPiArCUFESVMxNjI0MF9TQ0FOX0FVWF9BREMsDQo+ICsJQURJUzE2MjQwX1NDQU5fVEVNUCwN Cj4gK307DQo+ICsNCj4gK3N0YXRpYyBzc2l6ZV90IGFkaXMxNjI0MF9zcGlfcmVhZF9zaWduZWQo c3RydWN0IGRldmljZSAqZGV2LA0KPiArCQkJCQkgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsDQo+ICsJCQkJCSBjaGFyICpidWYsDQo+ICsJCQkJCSB1bnNpZ25lZCBpbnQgYml0cykNCj4g K3sNCj4gKwlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gZGV2X3RvX2lpb19kZXYoZGV2KTsN Cj4gKwlzdHJ1Y3QgYWRpcyAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiArCWludCByZXQ7 DQo+ICsJczE2IHZhbCA9IDA7DQo+ICsJdW5zaWduZWQgaW50IHNoaWZ0ID0gMTYgLSBiaXRzOw0K PiArCXN0cnVjdCBpaW9fZGV2X2F0dHIgKnRoaXNfYXR0ciA9IHRvX2lpb19kZXZfYXR0cihhdHRy KTsNCj4gKw0KPiArCXJldCA9IGFkaXNfcmVhZF9yZWdfMTYoc3QsDQo+ICsJCQkgICAgICAgdGhp c19hdHRyLT5hZGRyZXNzLCAodTE2ICopJnZhbCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJu IHJldDsNCj4gKw0KPiArCWlmICh2YWwgJiBBRElTMTYyNDBfRVJST1JfQUNUSVZFKQ0KPiArCQlh ZGlzX2NoZWNrX3N0YXR1cyhzdCk7DQo+ICsNCj4gKwl2YWwgPSAoczE2KSh2YWwgPDwgc2hpZnQp ID4+IHNoaWZ0Ow0KPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB2YWwpOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgc3NpemVfdCBhZGlzMTYyNDBfcmVhZF8xMmJpdF9zaWduZWQoc3RydWN0 IGRldmljZSAqZGV2LA0KPiArCQkJCQkgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwN Cj4gKwkJCQkJICAgY2hhciAqYnVmKQ0KPiArew0KPiArCXJldHVybiBhZGlzMTYyNDBfc3BpX3Jl YWRfc2lnbmVkKGRldiwgYXR0ciwgYnVmLCAxMik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBJSU9f REVWSUNFX0FUVFIoaW5fYWNjZWxfeHl6X3NxdWFyZWRfcGVha19yYXcsIDA0NDQsDQo+ICsJCSAg ICAgICBhZGlzMTYyNDBfcmVhZF8xMmJpdF9zaWduZWQsIE5VTEwsDQo+ICsJCSAgICAgICBBRElT MTYyNDBfWFlaUEVBS19PVVQpOw0KPiArDQo+ICtzdGF0aWMgSUlPX0NPTlNUX0FUVFJfU0FNUF9G UkVRX0FWQUlMKCI0MDk2Iik7DQo+ICsNCj4gK3N0YXRpYyBjb25zdCB1OCBhZGlzMTYyNDBfYWRk cmVzc2VzW11bMl0gPSB7DQo+ICsJW0FESVMxNjI0MF9TQ0FOX0FDQ19YXSA9IHsgQURJUzE2MjQw X1hBQ0NMX09GRiwgQURJUzE2MjQwX1hQRUFLX09VVCB9LA0KPiArCVtBRElTMTYyNDBfU0NBTl9B Q0NfWV0gPSB7IEFESVMxNjI0MF9ZQUNDTF9PRkYsIEFESVMxNjI0MF9ZUEVBS19PVVQgfSwNCj4g KwlbQURJUzE2MjQwX1NDQU5fQUNDX1pdID0geyBBRElTMTYyNDBfWkFDQ0xfT0ZGLCBBRElTMTYy NDBfWlBFQUtfT1VUIH0sDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IGFkaXMxNjI0MF9yZWFk X3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiArCQkJICAgICAgc3RydWN0IGlpb19j aGFuX3NwZWMgY29uc3QgKmNoYW4sDQo+ICsJCQkgICAgICBpbnQgKnZhbCwgaW50ICp2YWwyLA0K PiArCQkJICAgICAgbG9uZyBtYXNrKQ0KPiArew0KPiArCXN0cnVjdCBhZGlzICpzdCA9IGlpb19w cml2KGluZGlvX2Rldik7DQo+ICsJaW50IHJldDsNCj4gKwl1OCBhZGRyOw0KPiArCXMxNiB2YWwx NjsNCj4gKw0KPiArCXN3aXRjaCAobWFzaykgew0KPiArCWNhc2UgSUlPX0NIQU5fSU5GT19SQVc6 DQo+ICsJCXJldHVybiBhZGlzX3NpbmdsZV9jb252ZXJzaW9uKGluZGlvX2RldiwgY2hhbiwNCj4g KwkJCQlBRElTMTYyNDBfRVJST1JfQUNUSVZFLCB2YWwpOw0KPiArCWNhc2UgSUlPX0NIQU5fSU5G T19TQ0FMRToNCj4gKwkJc3dpdGNoIChjaGFuLT50eXBlKSB7DQo+ICsJCWNhc2UgSUlPX1ZPTFRB R0U6DQo+ICsJCQlpZiAoY2hhbi0+Y2hhbm5lbCA9PSAwKSB7DQo+ICsJCQkJKnZhbCA9IDQ7DQo+ ICsJCQkJKnZhbDIgPSA4ODAwMDA7IC8qIDQuODggbVYgKi8NCj4gKwkJCQlyZXR1cm4gSUlPX1ZB TF9JTlRfUExVU19NSUNSTzsNCj4gKwkJCX0NCj4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiArCQlj YXNlIElJT19URU1QOg0KPiArCQkJKnZhbCA9IDI0NDsgLyogMC4yNDQgQyAqLw0KPiArCQkJKnZh bDIgPSAwOw0KDQpUaGlzIGxvb2tzIGxpa2UgYSBidWcgaW4gdGhlIG9yaWdpbmFsIGRyaXZlci4N CkkgdGhpbmsgKnZhbCA9IDAsIGFuZCAqdmFsMiA9IDI0NCA/DQoNCj4gKwkJCXJldHVybiBJSU9f VkFMX0lOVF9QTFVTX01JQ1JPOw0KPiArCQljYXNlIElJT19BQ0NFTDoNCj4gKwkJCSp2YWwgPSAw Ow0KPiArCQkJKnZhbDIgPSBJSU9fR19UT19NX1NfMig1MTQwMCk7IC8qIDUxLjQgbWcgKi8NCj4g KwkJCXJldHVybiBJSU9fVkFMX0lOVF9QTFVTX01JQ1JPOw0KPiArCQlkZWZhdWx0Og0KPiArCQkJ cmV0dXJuIC1FSU5WQUw7DQo+ICsJCX0NCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBJSU9fQ0hBTl9J TkZPX1BFQUtfU0NBTEU6DQo+ICsJCSp2YWwgPSAwOw0KPiArCQkqdmFsMiA9IElJT19HX1RPX01f U18yKDUxNDAwKTsgLyogNTEuNCBtZyAqLw0KPiArCQlyZXR1cm4gSUlPX1ZBTF9JTlRfUExVU19N SUNSTzsNCj4gKwljYXNlIElJT19DSEFOX0lORk9fT0ZGU0VUOg0KPiArCQkqdmFsID0gMjUwMDAg LyAyNDQgLSAweDEzMzsgLyogMjUgQyA9IDB4MTMzICovDQo+ICsJCXJldHVybiBJSU9fVkFMX0lO VDsNCj4gKwljYXNlIElJT19DSEFOX0lORk9fQ0FMSUJCSUFTOg0KPiArCQlhZGRyID0gYWRpczE2 MjQwX2FkZHJlc3Nlc1tjaGFuLT5zY2FuX2luZGV4XVswXTsNCj4gKwkJcmV0ID0gYWRpc19yZWFk X3JlZ18xNihzdCwgYWRkciwgJnZhbDE2KTsNCj4gKwkJaWYgKHJldCkNCj4gKwkJCXJldHVybiBy ZXQ7DQo+ICsJCSp2YWwgPSBzaWduX2V4dGVuZDMyKHZhbDE2LCA5KTsNCj4gKwkJcmV0dXJuIElJ T19WQUxfSU5UOw0KPiArCWNhc2UgSUlPX0NIQU5fSU5GT19QRUFLOg0KPiArCQlhZGRyID0gYWRp czE2MjQwX2FkZHJlc3Nlc1tjaGFuLT5zY2FuX2luZGV4XVsxXTsNCj4gKwkJcmV0ID0gYWRpc19y ZWFkX3JlZ18xNihzdCwgYWRkciwgJnZhbDE2KTsNCj4gKwkJaWYgKHJldCkNCj4gKwkJCXJldHVy biByZXQ7DQo+ICsJCSp2YWwgPSBzaWduX2V4dGVuZDMyKHZhbDE2LCA5KTsNCj4gKwkJcmV0dXJu IElJT19WQUxfSU5UOw0KPiArCX0NCj4gKwlyZXR1cm4gLUVJTlZBTDsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGludCBhZGlzMTYyNDBfd3JpdGVfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYs DQo+ICsJCQkgICAgICAgc3RydWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNoYW4sDQo+ICsJCQkg ICAgICAgaW50IHZhbCwNCj4gKwkJCSAgICAgICBpbnQgdmFsMiwNCj4gKwkJCSAgICAgICBsb25n IG1hc2spDQo+ICt7DQo+ICsJc3RydWN0IGFkaXMgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsN Cj4gKwl1OCBhZGRyOw0KPiArDQo+ICsJc3dpdGNoIChtYXNrKSB7DQo+ICsJY2FzZSBJSU9fQ0hB Tl9JTkZPX0NBTElCQklBUzoNCj4gKwkJYWRkciA9IGFkaXMxNjI0MF9hZGRyZXNzZXNbY2hhbi0+ c2Nhbl9pbmRleF1bMF07DQo+ICsJCXJldHVybiBhZGlzX3dyaXRlX3JlZ18xNihzdCwgYWRkciwg dmFsICYgR0VOTUFTSyg5LCAwKSk7DQo+ICsJfQ0KPiArCXJldHVybiAtRUlOVkFMOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgYWRpczE2MjQwX2NoYW5u ZWxzW10gPSB7DQo+ICsJQURJU19TVVBQTFlfQ0hBTihBRElTMTYyNDBfU1VQUExZX09VVCwgQURJ UzE2MjQwX1NDQU5fU1VQUExZLCAwLCAxMCksDQo+ICsJQURJU19BVVhfQURDX0NIQU4oQURJUzE2 MjQwX0FVWF9BREMsIEFESVMxNjI0MF9TQ0FOX0FVWF9BREMsIDAsIDEwKSwNCj4gKwlBRElTX0FD Q0VMX0NIQU4oWCwgQURJUzE2MjQwX1hBQ0NMX09VVCwgQURJUzE2MjQwX1NDQU5fQUNDX1gsDQo+ ICsJCQlCSVQoSUlPX0NIQU5fSU5GT19DQUxJQkJJQVMpIHwgQklUKElJT19DSEFOX0lORk9fUEVB SyksDQo+ICsJCQkwLCAxMCksDQo+ICsJQURJU19BQ0NFTF9DSEFOKFksIEFESVMxNjI0MF9ZQUND TF9PVVQsIEFESVMxNjI0MF9TQ0FOX0FDQ19ZLA0KPiArCQkJQklUKElJT19DSEFOX0lORk9fQ0FM SUJCSUFTKSB8IEJJVChJSU9fQ0hBTl9JTkZPX1BFQUspLA0KPiArCQkJMCwgMTApLA0KPiArCUFE SVNfQUNDRUxfQ0hBTihaLCBBRElTMTYyNDBfWkFDQ0xfT1VULCBBRElTMTYyNDBfU0NBTl9BQ0Nf WiwNCj4gKwkJCUJJVChJSU9fQ0hBTl9JTkZPX0NBTElCQklBUykgfCBCSVQoSUlPX0NIQU5fSU5G T19QRUFLKSwNCj4gKwkJCTAsIDEwKSwNCj4gKwlBRElTX1RFTVBfQ0hBTihBRElTMTYyNDBfVEVN UF9PVVQsIEFESVMxNjI0MF9TQ0FOX1RFTVAsIDAsIDEwKSwNCj4gKwlJSU9fQ0hBTl9TT0ZUX1RJ TUVTVEFNUCg2KQ0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkaXMx NjI0MF9hdHRyaWJ1dGVzW10gPSB7DQo+ICsJJmlpb19kZXZfYXR0cl9pbl9hY2NlbF94eXpfc3F1 YXJlZF9wZWFrX3Jhdy5kZXZfYXR0ci5hdHRyLA0KDQoNClRoaXMgb25lIGxvb2tzIGEgYml0IHdl aXJkL3JhcmUuDQpJIGFtIG5vdCBzdXJlIGFib3V0IGl0J3MgdXNlLWNhc2UvbmVlZCByaWdodCBu b3cgKGF0IHRoaXMgcG9pbnQgaW4gdGltZSkuDQoNCk1heWJlIHdlIGNvdWxkIGp1c3QgZHJvcCBp dD8NClNpbmNlIEkgZGlkIG5vdCB3cml0ZSB0aGUgaW5pdGlhbCBkcml2ZXIsIEkgZG9uJ3Qga25v dyB5ZXQgd2hhdCBpdCB3YXMgc3VwcG9zZWQgdG8gYmUvZG8uDQoNCkluIGFueSBjYXNlLCBpZiB3 ZSB3YW50IHRvIGFkZCBpdCwgaXQgbG9va3MgbGlrZSBpdCBuZWVkcyBhbiBBQkkgZG9jdW1lbnRh dGlvbi4NCg0KDQo+ICsJJmlpb19jb25zdF9hdHRyX3NhbXBsaW5nX2ZyZXF1ZW5jeV9hdmFpbGFi bGUuZGV2X2F0dHIuYXR0ciwNCg0KVGhpcyBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIGNvbnZlcnRl ZCB0byBJSU9fQ0hBTl9JTkZPX1NBTVBfRlJFUSBhdHRyaWJ1dGUuDQoNCg0KPiArCU5VTEwNCj4g K307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGFkaXMxNjI0 MF9hdHRyaWJ1dGVfZ3JvdXAgPSB7DQo+ICsJLmF0dHJzID0gYWRpczE2MjQwX2F0dHJpYnV0ZXMs DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19pbmZvIGFkaXMxNjI0MF9p bmZvID0gew0KPiArCS5hdHRycyA9ICZhZGlzMTYyNDBfYXR0cmlidXRlX2dyb3VwLA0KPiArCS5y ZWFkX3JhdyA9IGFkaXMxNjI0MF9yZWFkX3JhdywNCj4gKwkud3JpdGVfcmF3ID0gYWRpczE2MjQw X3dyaXRlX3JhdywNCj4gKwkudXBkYXRlX3NjYW5fbW9kZSA9IGFkaXNfdXBkYXRlX3NjYW5fbW9k ZSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYWRpczE2MjQwX3N0 YXR1c19lcnJvcl9tc2dzW10gPSB7DQo+ICsJW0FESVMxNjI0MF9ESUFHX1NUQVRfUFdST05fRkFJ TF9CSVRdID0gIlBvd2VyIG9uLCBzZWxmLXRlc3QgZmFpbGVkIiwNCj4gKwlbQURJUzE2MjQwX0RJ QUdfU1RBVF9TUElfRkFJTF9CSVRdID0gIlNQSSBmYWlsdXJlIiwNCj4gKwlbQURJUzE2MjQwX0RJ QUdfU1RBVF9GTEFTSF9VUFRfQklUXSA9ICJGbGFzaCB1cGRhdGUgZmFpbGVkIiwNCj4gKwlbQURJ UzE2MjQwX0RJQUdfU1RBVF9QT1dFUl9ISUdIX0JJVF0gPSAiUG93ZXIgc3VwcGx5IGFib3ZlIDMu NjI1ViIsDQo+ICsJW0FESVMxNjI0MF9ESUFHX1NUQVRfUE9XRVJfTE9XX0JJVF0gPSAiUG93ZXIg c3VwcGx5IGJlbG93IDIuMjI1ViIsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGFkaXNfZGF0YSBhZGlzMTYyNDBfZGF0YSA9IHsNCj4gKwkud3JpdGVfZGVsYXkgPSAzNSwNCj4g KwkucmVhZF9kZWxheSA9IDM1LA0KPiArCS5tc2NfY3RybF9yZWcgPSBBRElTMTYyNDBfTVNDX0NU UkwsDQo+ICsJLmdsb2JfY21kX3JlZyA9IEFESVMxNjI0MF9HTE9CX0NNRCwNCj4gKwkuZGlhZ19z dGF0X3JlZyA9IEFESVMxNjI0MF9ESUFHX1NUQVQsDQo+ICsNCj4gKwkuc2VsZl90ZXN0X21hc2sg PSBBRElTMTYyNDBfTVNDX0NUUkxfU0VMRl9URVNUX0VOLA0KPiArCS5zZWxmX3Rlc3Rfbm9fYXV0 b2NsZWFyID0gdHJ1ZSwNCj4gKwkuc3RhcnR1cF9kZWxheSA9IEFESVMxNjI0MF9TVEFSVFVQX0RF TEFZLA0KPiArDQo+ICsJLnN0YXR1c19lcnJvcl9tc2dzID0gYWRpczE2MjQwX3N0YXR1c19lcnJv cl9tc2dzLA0KPiArCS5zdGF0dXNfZXJyb3JfbWFzayA9IEJJVChBRElTMTYyNDBfRElBR19TVEFU X1BXUk9OX0ZBSUxfQklUKSB8DQo+ICsJCUJJVChBRElTMTYyNDBfRElBR19TVEFUX1NQSV9GQUlM X0JJVCkgfA0KPiArCQlCSVQoQURJUzE2MjQwX0RJQUdfU1RBVF9GTEFTSF9VUFRfQklUKSB8DQo+ ICsJCUJJVChBRElTMTYyNDBfRElBR19TVEFUX1BPV0VSX0hJR0hfQklUKSB8DQo+ICsJCUJJVChB RElTMTYyNDBfRElBR19TVEFUX1BPV0VSX0xPV19CSVQpLA0KPiArfTsNCj4gKw0KPiArc3RhdGlj IGludCBhZGlzMTYyNDBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkNCj4gK3sNCj4gKwlp bnQgcmV0Ow0KPiArCXN0cnVjdCBhZGlzICpzdDsNCj4gKwlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2Ow0KPiArDQo+ICsJLyogc2V0dXAgdGhlIGluZHVzdHJpYWxpbyBkcml2ZXIgYWxsb2NhdGVk IGVsZW1lbnRzICovDQo+ICsJaW5kaW9fZGV2ID0gZGV2bV9paW9fZGV2aWNlX2FsbG9jKCZzcGkt PmRldiwgc2l6ZW9mKCpzdCkpOw0KPiArCWlmICghaW5kaW9fZGV2KQ0KPiArCQlyZXR1cm4gLUVO T01FTTsNCj4gKwlzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ICsJLyogdGhpcyBpcyBvbmx5 IHVzZWQgZm9yIHJlbW92YWwgcHVycG9zZXMgKi8NCj4gKwlzcGlfc2V0X2RydmRhdGEoc3BpLCBp bmRpb19kZXYpOw0KPiArDQo+ICsJaW5kaW9fZGV2LT5uYW1lID0gc3BpLT5kZXYuZHJpdmVyLT5u YW1lOw0KPiArCWluZGlvX2Rldi0+ZGV2LnBhcmVudCA9ICZzcGktPmRldjsNCj4gKwlpbmRpb19k ZXYtPmluZm8gPSAmYWRpczE2MjQwX2luZm87DQo+ICsJaW5kaW9fZGV2LT5jaGFubmVscyA9IGFk aXMxNjI0MF9jaGFubmVsczsNCj4gKwlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IEFSUkFZX1NJ WkUoYWRpczE2MjQwX2NoYW5uZWxzKTsNCj4gKwlpbmRpb19kZXYtPm1vZGVzID0gSU5ESU9fRElS RUNUX01PREU7DQo+ICsNCj4gKwlyZXQgPSBhZGlzX2luaXQoc3QsIGluZGlvX2Rldiwgc3BpLCAm YWRpczE2MjQwX2RhdGEpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsJcmV0 ID0gYWRpc19zZXR1cF9idWZmZXJfYW5kX3RyaWdnZXIoc3QsIGluZGlvX2RldiwgTlVMTCk7DQo+ ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIEdldCB0aGUgZGV2aWNl IGludG8gYSBzYW5lIGluaXRpYWwgc3RhdGUgKi8NCj4gKwlyZXQgPSBhZGlzX2luaXRpYWxfc3Rh cnR1cChzdCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBlcnJvcl9jbGVhbnVwX2J1ZmZlcl90 cmlnZ2VyOw0KPiArCXJldCA9IGlpb19kZXZpY2VfcmVnaXN0ZXIoaW5kaW9fZGV2KTsNCj4gKwlp ZiAocmV0KQ0KPiArCQlnb3RvIGVycm9yX2NsZWFudXBfYnVmZmVyX3RyaWdnZXI7DQo+ICsJcmV0 dXJuIDA7DQo+ICsNCj4gK2Vycm9yX2NsZWFudXBfYnVmZmVyX3RyaWdnZXI6DQo+ICsJYWRpc19j bGVhbnVwX2J1ZmZlcl9hbmRfdHJpZ2dlcihzdCwgaW5kaW9fZGV2KTsNCj4gKwlyZXR1cm4gcmV0 Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGFkaXMxNjI0MF9yZW1vdmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkNCj4gK3sNCj4gKwlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gc3BpX2dl dF9kcnZkYXRhKHNwaSk7DQo+ICsJc3RydWN0IGFkaXMgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2 KTsNCj4gKw0KPiArCWlpb19kZXZpY2VfdW5yZWdpc3RlcihpbmRpb19kZXYpOw0KPiArCWFkaXNf Y2xlYW51cF9idWZmZXJfYW5kX3RyaWdnZXIoc3QsIGluZGlvX2Rldik7DQo+ICsNCj4gKwlyZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYWRp czE2MjQwX29mX21hdGNoW10gPSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJhZGksYWRpczE2MjQw IiB9LA0KPiArCXsgfSwNCj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhZGlzMTYy NDBfb2ZfbWF0Y2gpOw0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgYWRpczE2MjQw X2RyaXZlciA9IHsNCj4gKwkuZHJpdmVyID0gew0KPiArCQkubmFtZSA9ICJhZGlzMTYyNDAiLA0K PiArCQkub2ZfbWF0Y2hfdGFibGUgPSBhZGlzMTYyNDBfb2ZfbWF0Y2gsDQo+ICsJfSwNCj4gKwku cHJvYmUgPSBhZGlzMTYyNDBfcHJvYmUsDQo+ICsJLnJlbW92ZSA9IGFkaXMxNjI0MF9yZW1vdmUs DQo+ICt9Ow0KPiArbW9kdWxlX3NwaV9kcml2ZXIoYWRpczE2MjQwX2RyaXZlcik7DQo+ICsNCj4g K01PRFVMRV9BVVRIT1IoIkJhcnJ5IFNvbmcgPDIxY25iYW9AZ21haWwuY29tPiIpOw0KPiArTU9E VUxFX0RFU0NSSVBUSU9OKCJBbmFsb2cgRGV2aWNlcyBQcm9ncmFtbWFibGUgSW1wYWN0IFNlbnNv ciBhbmQgUmVjb3JkZXIiKTsNCj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4gK01PRFVM RV9BTElBUygic3BpOmFkaXMxNjI0MCIpOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L2lpby9hY2NlbC9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9LY29uZmlnDQo+ IGluZGV4IDMzMTg5OTdhNzAwOS4uY2VlNTFmNjRiYzRiIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz L3N0YWdpbmcvaWlvL2FjY2VsL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9h Y2NlbC9LY29uZmlnDQo+IEBAIC0xNiwxNiArMTYsNCBAQCBjb25maWcgQURJUzE2MjAzDQo+ICAJ ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBzYXkgTSBoZXJlOiB0aGUgbW9k dWxlIHdpbGwgYmUNCj4gIAkgIGNhbGxlZCBhZGlzMTYyMDMuDQo+ICANCj4gLWNvbmZpZyBBRElT MTYyNDANCj4gLQl0cmlzdGF0ZSAiQW5hbG9nIERldmljZXMgQURJUzE2MjQwIFByb2dyYW1tYWJs ZSBJbXBhY3QgU2Vuc29yIGFuZCBSZWNvcmRlciINCj4gLQlkZXBlbmRzIG9uIFNQSQ0KPiAtCXNl bGVjdCBJSU9fQURJU19MSUINCj4gLQlzZWxlY3QgSUlPX0FESVNfTElCX0JVRkZFUiBpZiBJSU9f QlVGRkVSDQo+IC0JaGVscA0KPiAtCSAgU2F5IFkgaGVyZSB0byBidWlsZCBzdXBwb3J0IGZvciBB bmFsb2cgRGV2aWNlcyBhZGlzMTYyNDAgcHJvZ3JhbW1hYmxlDQo+IC0JICBpbXBhY3QgU2Vuc29y IGFuZCByZWNvcmRlci4NCj4gLQ0KPiAtCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1v ZHVsZSwgc2F5IE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlDQo+IC0JICBjYWxsZWQgYWRpczE2 MjQwLg0KPiAtDQo+ICBlbmRtZW51DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlv L2FjY2VsL01ha2VmaWxlIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9NYWtlZmlsZQ0KPiBp bmRleCAwOTRjYzliZTM1YmQuLmFjYWM3YmM5YjljMCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9z dGFnaW5nL2lpby9hY2NlbC9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2Fj Y2VsL01ha2VmaWxlDQo+IEBAIC00LDQgKzQsMyBAQA0KPiAgIw0KPiAgDQo+ICBvYmotJChDT05G SUdfQURJUzE2MjAzKSArPSBhZGlzMTYyMDMubw0KPiAtb2JqLSQoQ09ORklHX0FESVMxNjI0MCkg Kz0gYWRpczE2MjQwLm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwv YWRpczE2MjQwLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjI0MC5jDQo+IGRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCA4MjA5OWRiNGJmMGMuLjAwMDAwMDAwMDAw MA0KPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjI0MC5jDQo+ICsrKyAv ZGV2L251bGwNCj4gQEAgLTEsNDU0ICswLDAgQEANCj4gLS8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wKw0KPiAtLyoNCj4gLSAqIEFESVMxNjI0MCBQcm9ncmFtbWFibGUgSW1wYWN0 IFNlbnNvciBhbmQgUmVjb3JkZXIgZHJpdmVyDQo+IC0gKg0KPiAtICogQ29weXJpZ2h0IDIwMTAg QW5hbG9nIERldmljZXMgSW5jLg0KPiAtICovDQo+IC0NCj4gLSNpbmNsdWRlIDxsaW51eC9pbnRl cnJ1cHQuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9pcnEuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9n cGlvLmg+DQo+IC0jaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9k ZXZpY2UuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gLSNpbmNsdWRlIDxsaW51 eC9zcGkvc3BpLmg+DQo+IC0jaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPiAtI2luY2x1ZGUgPGxp bnV4L3N5c2ZzLmg+DQo+IC0jaW5jbHVkZSA8bGludXgvbGlzdC5oPg0KPiAtI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPg0KPiAtDQo+IC0jaW5jbHVkZSA8bGludXgvaWlvL2lpby5oPg0KPiAtI2lu Y2x1ZGUgPGxpbnV4L2lpby9zeXNmcy5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L2lpby9idWZmZXIu aD4NCj4gLSNpbmNsdWRlIDxsaW51eC9paW8vaW11L2FkaXMuaD4NCj4gLQ0KPiAtI2RlZmluZSBB RElTMTYyNDBfU1RBUlRVUF9ERUxBWQkyMjAgLyogbXMgKi8NCj4gLQ0KPiAtLyogRmxhc2ggbWVt b3J5IHdyaXRlIGNvdW50ICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9GTEFTSF9DTlQgICAgICAw eDAwDQo+IC0NCj4gLS8qIE91dHB1dCwgcG93ZXIgc3VwcGx5ICovDQo+IC0jZGVmaW5lIEFESVMx NjI0MF9TVVBQTFlfT1VUICAgICAweDAyDQo+IC0NCj4gLS8qIE91dHB1dCwgeC1heGlzIGFjY2Vs ZXJvbWV0ZXIgKi8NCj4gLSNkZWZpbmUgQURJUzE2MjQwX1hBQ0NMX09VVCAgICAgIDB4MDQNCj4g LQ0KPiAtLyogT3V0cHV0LCB5LWF4aXMgYWNjZWxlcm9tZXRlciAqLw0KPiAtI2RlZmluZSBBRElT MTYyNDBfWUFDQ0xfT1VUICAgICAgMHgwNg0KPiAtDQo+IC0vKiBPdXRwdXQsIHotYXhpcyBhY2Nl bGVyb21ldGVyICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9aQUNDTF9PVVQgICAgICAweDA4DQo+ IC0NCj4gLS8qIE91dHB1dCwgYXV4aWxpYXJ5IEFEQyBpbnB1dCAqLw0KPiAtI2RlZmluZSBBRElT MTYyNDBfQVVYX0FEQyAgICAgICAgMHgwQQ0KPiAtDQo+IC0vKiBPdXRwdXQsIHRlbXBlcmF0dXJl ICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9URU1QX09VVCAgICAgICAweDBDDQo+IC0NCj4gLS8q IE91dHB1dCwgeC1heGlzIGFjY2VsZXJhdGlvbiBwZWFrICovDQo+IC0jZGVmaW5lIEFESVMxNjI0 MF9YUEVBS19PVVQgICAgICAweDBFDQo+IC0NCj4gLS8qIE91dHB1dCwgeS1heGlzIGFjY2VsZXJh dGlvbiBwZWFrICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9ZUEVBS19PVVQgICAgICAweDEwDQo+ IC0NCj4gLS8qIE91dHB1dCwgei1heGlzIGFjY2VsZXJhdGlvbiBwZWFrICovDQo+IC0jZGVmaW5l IEFESVMxNjI0MF9aUEVBS19PVVQgICAgICAweDEyDQo+IC0NCj4gLS8qIE91dHB1dCwgc3VtLW9m LXNxdWFyZXMgYWNjZWxlcmF0aW9uIHBlYWsgKi8NCj4gLSNkZWZpbmUgQURJUzE2MjQwX1hZWlBF QUtfT1VUICAgIDB4MTQNCj4gLQ0KPiAtLyogT3V0cHV0LCBDYXB0dXJlIEJ1ZmZlciAxLCBYIGFu ZCBZIGFjY2VsZXJhdGlvbiAqLw0KPiAtI2RlZmluZSBBRElTMTYyNDBfQ0FQVF9CVUYxICAgICAg MHgxNg0KPiAtDQo+IC0vKiBPdXRwdXQsIENhcHR1cmUgQnVmZmVyIDIsIFogYWNjZWxlcmF0aW9u ICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9DQVBUX0JVRjIgICAgICAweDE4DQo+IC0NCj4gLS8q IERpYWdub3N0aWMsIGVycm9yIGZsYWdzICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9ESUFHX1NU QVQgICAgICAweDFBDQo+IC0NCj4gLS8qIERpYWdub3N0aWMsIGV2ZW50IGNvdW50ZXIgKi8NCj4g LSNkZWZpbmUgQURJUzE2MjQwX0VWTlRfQ05UUiAgICAgIDB4MUMNCj4gLQ0KPiAtLyogRGlhZ25v c3RpYywgY2hlY2sgc3VtIHZhbHVlIGZyb20gZmlybXdhcmUgdGVzdCAqLw0KPiAtI2RlZmluZSBB RElTMTYyNDBfQ0hLX1NVTSAgICAgICAgMHgxRQ0KPiAtDQo+IC0vKiBDYWxpYnJhdGlvbiwgeC1h eGlzIGFjY2VsZXJhdGlvbiBvZmZzZXQgYWRqdXN0bWVudCAqLw0KPiAtI2RlZmluZSBBRElTMTYy NDBfWEFDQ0xfT0ZGICAgICAgMHgyMA0KPiAtDQo+IC0vKiBDYWxpYnJhdGlvbiwgeS1heGlzIGFj Y2VsZXJhdGlvbiBvZmZzZXQgYWRqdXN0bWVudCAqLw0KPiAtI2RlZmluZSBBRElTMTYyNDBfWUFD Q0xfT0ZGICAgICAgMHgyMg0KPiAtDQo+IC0vKiBDYWxpYnJhdGlvbiwgei1heGlzIGFjY2VsZXJh dGlvbiBvZmZzZXQgYWRqdXN0bWVudCAqLw0KPiAtI2RlZmluZSBBRElTMTYyNDBfWkFDQ0xfT0ZG ICAgICAgMHgyNA0KPiAtDQo+IC0vKiBDbG9jaywgaG91ciBhbmQgbWludXRlICovDQo+IC0jZGVm aW5lIEFESVMxNjI0MF9DTEtfVElNRSAgICAgICAweDJFDQo+IC0NCj4gLS8qIENsb2NrLCBtb250 aCBhbmQgZGF5ICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9DTEtfREFURSAgICAgICAweDMwDQo+ IC0NCj4gLS8qIENsb2NrLCB5ZWFyICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9DTEtfWUVBUiAg ICAgICAweDMyDQo+IC0NCj4gLS8qIFdha2UtdXAgc2V0dGluZywgaG91ciBhbmQgbWludXRlICov DQo+IC0jZGVmaW5lIEFESVMxNjI0MF9XQUtFX1RJTUUgICAgICAweDM0DQo+IC0NCj4gLS8qIFdh a2UtdXAgc2V0dGluZywgbW9udGggYW5kIGRheSAqLw0KPiAtI2RlZmluZSBBRElTMTYyNDBfV0FL RV9EQVRFICAgICAgMHgzNg0KPiAtDQo+IC0vKiBBbGFybSAxIGFtcGxpdHVkZSB0aHJlc2hvbGQg Ki8NCj4gLSNkZWZpbmUgQURJUzE2MjQwX0FMTV9NQUcxICAgICAgIDB4MzgNCj4gLQ0KPiAtLyog QWxhcm0gMiBhbXBsaXR1ZGUgdGhyZXNob2xkICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9BTE1f TUFHMiAgICAgICAweDNBDQo+IC0NCj4gLS8qIEFsYXJtIGNvbnRyb2wgKi8NCj4gLSNkZWZpbmUg QURJUzE2MjQwX0FMTV9DVFJMICAgICAgIDB4M0MNCj4gLQ0KPiAtLyogQ2FwdHVyZSwgZXh0ZXJu YWwgdHJpZ2dlciBjb250cm9sICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9YVFJJR19DVFJMICAg ICAweDNFDQo+IC0NCj4gLS8qIENhcHR1cmUsIGFkZHJlc3MgcG9pbnRlciAqLw0KPiAtI2RlZmlu ZSBBRElTMTYyNDBfQ0FQVF9QTlRSICAgICAgMHg0MA0KPiAtDQo+IC0vKiBDYXB0dXJlLCBjb25m aWd1cmF0aW9uIGFuZCBjb250cm9sICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9DQVBUX0NUUkwg ICAgICAweDQyDQo+IC0NCj4gLS8qIEdlbmVyYWwtcHVycG9zZSBkaWdpdGFsIGlucHV0L291dHB1 dCBjb250cm9sICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9HUElPX0NUUkwgICAgICAweDQ0DQo+ IC0NCj4gLS8qIE1pc2NlbGxhbmVvdXMgY29udHJvbCAqLw0KPiAtI2RlZmluZSBBRElTMTYyNDBf TVNDX0NUUkwgICAgICAgMHg0Ng0KPiAtDQo+IC0vKiBJbnRlcm5hbCBzYW1wbGUgcGVyaW9kIChy YXRlKSBjb250cm9sICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9TTVBMX1BSRCAgICAgICAweDQ4 DQo+IC0NCj4gLS8qIFN5c3RlbSBjb21tYW5kICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9HTE9C X0NNRCAgICAgICAweDRBDQo+IC0NCj4gLS8qIE1TQ19DVFJMICovDQo+IC0NCj4gLS8qIEVuYWJs ZXMgc3VtLW9mLXNxdWFyZXMgb3V0cHV0IChYWVpQRUFLX09VVCkgKi8NCj4gLSNkZWZpbmUgQURJ UzE2MjQwX01TQ19DVFJMX1hZWlBFQUtfT1VUX0VOCUJJVCgxNSkNCj4gLQ0KPiAtLyogRW5hYmxl cyBwZWFrIHRyYWNraW5nIG91dHB1dCAoWFBFQUtfT1VULCBZUEVBS19PVVQsIGFuZCBaUEVBS19P VVQpICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9NU0NfQ1RSTF9YX1lfWlBFQUtfT1VUX0VOCUJJ VCgxNCkNCj4gLQ0KPiAtLyogU2VsZi10ZXN0IGVuYWJsZTogMSA9IGFwcGx5IGVsZWN0cm9zdGF0 aWMgZm9yY2UsIDAgPSBkaXNhYmxlZCAqLw0KPiAtI2RlZmluZSBBRElTMTYyNDBfTVNDX0NUUkxf U0VMRl9URVNUX0VOCSAgICAgICAgQklUKDgpDQo+IC0NCj4gLS8qIERhdGEtcmVhZHkgZW5hYmxl OiAxID0gZW5hYmxlZCwgMCA9IGRpc2FibGVkICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9NU0Nf Q1RSTF9EQVRBX1JEWV9FTgkgICAgICAgIEJJVCgyKQ0KPiAtDQo+IC0vKiBEYXRhLXJlYWR5IHBv bGFyaXR5OiAxID0gYWN0aXZlIGhpZ2gsIDAgPSBhY3RpdmUgbG93ICovDQo+IC0jZGVmaW5lIEFE SVMxNjI0MF9NU0NfQ1RSTF9BQ1RJVkVfSElHSAkgICAgICAgIEJJVCgxKQ0KPiAtDQo+IC0vKiBE YXRhLXJlYWR5IGxpbmUgc2VsZWN0aW9uOiAxID0gRElPMiwgMCA9IERJTzEgKi8NCj4gLSNkZWZp bmUgQURJUzE2MjQwX01TQ19DVFJMX0RBVEFfUkRZX0RJTzIJQklUKDApDQo+IC0NCj4gLS8qIERJ QUdfU1RBVCAqLw0KPiAtDQo+IC0vKiBBbGFybSAyIHN0YXR1czogMSA9IGFsYXJtIGFjdGl2ZSwg MCA9IGFsYXJtIGluYWN0aXZlICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9ESUFHX1NUQVRfQUxB Uk0yICAgICAgQklUKDkpDQo+IC0NCj4gLS8qIEFsYXJtIDEgc3RhdHVzOiAxID0gYWxhcm0gYWN0 aXZlLCAwID0gYWxhcm0gaW5hY3RpdmUgKi8NCj4gLSNkZWZpbmUgQURJUzE2MjQwX0RJQUdfU1RB VF9BTEFSTTEgICAgICBCSVQoOCkNCj4gLQ0KPiAtLyogQ2FwdHVyZSBidWZmZXIgZnVsbDogMSA9 IGNhcHR1cmUgYnVmZmVyIGlzIGZ1bGwgKi8NCj4gLSNkZWZpbmUgQURJUzE2MjQwX0RJQUdfU1RB VF9DUFRfQlVGX0ZVTCBCSVQoNykNCj4gLQ0KPiAtLyogRmxhc2ggdGVzdCwgY2hlY2tzdW0gZmxh ZzogMSA9IG1pc21hdGNoLCAwID0gbWF0Y2ggKi8NCj4gLSNkZWZpbmUgQURJUzE2MjQwX0RJQUdf U1RBVF9DSEtTVU0gICAgICBCSVQoNikNCj4gLQ0KPiAtLyogUG93ZXItb24sIHNlbGYtdGVzdCBm bGFnOiAxID0gZmFpbHVyZSwgMCA9IHBhc3MgKi8NCj4gLSNkZWZpbmUgQURJUzE2MjQwX0RJQUdf U1RBVF9QV1JPTl9GQUlMX0JJVCAgNQ0KPiAtDQo+IC0vKiBQb3dlci1vbiBzZWxmLXRlc3Q6IDEg PSBpbi1wcm9ncmVzcywgMCA9IGNvbXBsZXRlICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9ESUFH X1NUQVRfUFdST05fQlVTWSAgQklUKDQpDQo+IC0NCj4gLS8qIFNQSSBjb21tdW5pY2F0aW9ucyBm YWlsdXJlICovDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9ESUFHX1NUQVRfU1BJX0ZBSUxfQklUCTMN Cj4gLQ0KPiAtLyogRmxhc2ggdXBkYXRlIGZhaWx1cmUgKi8NCj4gLSNkZWZpbmUgQURJUzE2MjQw X0RJQUdfU1RBVF9GTEFTSF9VUFRfQklUCTINCj4gLQ0KPiAtLyogUG93ZXIgc3VwcGx5IGFib3Zl IDMuNjI1IFYgKi8NCj4gLSNkZWZpbmUgQURJUzE2MjQwX0RJQUdfU1RBVF9QT1dFUl9ISUdIX0JJ VAkxDQo+IC0NCj4gLSAvKiBQb3dlciBzdXBwbHkgYmVsb3cgMi4yMjUgViAqLw0KPiAtI2RlZmlu ZSBBRElTMTYyNDBfRElBR19TVEFUX1BPV0VSX0xPV19CSVQJMA0KPiAtDQo+IC0vKiBHTE9CX0NN RCAqLw0KPiAtDQo+IC0jZGVmaW5lIEFESVMxNjI0MF9HTE9CX0NNRF9SRVNVTUUJQklUKDgpDQo+ IC0jZGVmaW5lIEFESVMxNjI0MF9HTE9CX0NNRF9TV19SRVNFVAlCSVQoNykNCj4gLSNkZWZpbmUg QURJUzE2MjQwX0dMT0JfQ01EX1NUQU5EQlkJQklUKDIpDQo+IC0NCj4gLSNkZWZpbmUgQURJUzE2 MjQwX0VSUk9SX0FDVElWRSAgICAgICAgICBCSVQoMTQpDQo+IC0NCj4gLS8qIEF0IHRoZSBtb21l bnQgdHJpZ2dlcnMgYXJlIG9ubHkgdXNlZCBmb3IgcmluZyBidWZmZXINCj4gLSAqIGZpbGxpbmcu IFRoaXMgbWF5IGNoYW5nZSENCj4gLSAqLw0KPiAtDQo+IC1lbnVtIGFkaXMxNjI0MF9zY2FuIHsN Cj4gLQlBRElTMTYyNDBfU0NBTl9BQ0NfWCwNCj4gLQlBRElTMTYyNDBfU0NBTl9BQ0NfWSwNCj4g LQlBRElTMTYyNDBfU0NBTl9BQ0NfWiwNCj4gLQlBRElTMTYyNDBfU0NBTl9TVVBQTFksDQo+IC0J QURJUzE2MjQwX1NDQU5fQVVYX0FEQywNCj4gLQlBRElTMTYyNDBfU0NBTl9URU1QLA0KPiAtfTsN Cj4gLQ0KPiAtc3RhdGljIHNzaXplX3QgYWRpczE2MjQwX3NwaV9yZWFkX3NpZ25lZChzdHJ1Y3Qg ZGV2aWNlICpkZXYsDQo+IC0JCQkJCSBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwNCj4g LQkJCQkJIGNoYXIgKmJ1ZiwNCj4gLQkJCQkJIHVuc2lnbmVkIGludCBiaXRzKQ0KPiAtew0KPiAt CXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBkZXZfdG9faWlvX2RldihkZXYpOw0KPiAtCXN0 cnVjdCBhZGlzICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+IC0JaW50IHJldDsNCj4gLQlz MTYgdmFsID0gMDsNCj4gLQl1bnNpZ25lZCBpbnQgc2hpZnQgPSAxNiAtIGJpdHM7DQo+IC0Jc3Ry dWN0IGlpb19kZXZfYXR0ciAqdGhpc19hdHRyID0gdG9faWlvX2Rldl9hdHRyKGF0dHIpOw0KPiAt DQo+IC0JcmV0ID0gYWRpc19yZWFkX3JlZ18xNihzdCwNCj4gLQkJCSAgICAgICB0aGlzX2F0dHIt PmFkZHJlc3MsICh1MTYgKikmdmFsKTsNCj4gLQlpZiAocmV0KQ0KPiAtCQlyZXR1cm4gcmV0Ow0K PiAtDQo+IC0JaWYgKHZhbCAmIEFESVMxNjI0MF9FUlJPUl9BQ1RJVkUpDQo+IC0JCWFkaXNfY2hl Y2tfc3RhdHVzKHN0KTsNCj4gLQ0KPiAtCXZhbCA9IChzMTYpKHZhbCA8PCBzaGlmdCkgPj4gc2hp ZnQ7DQo+IC0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIHZhbCk7DQo+IC19DQo+IC0NCj4g LXN0YXRpYyBzc2l6ZV90IGFkaXMxNjI0MF9yZWFkXzEyYml0X3NpZ25lZChzdHJ1Y3QgZGV2aWNl ICpkZXYsDQo+IC0JCQkJCSAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPiAtCQkJ CQkgICBjaGFyICpidWYpDQo+IC17DQo+IC0JcmV0dXJuIGFkaXMxNjI0MF9zcGlfcmVhZF9zaWdu ZWQoZGV2LCBhdHRyLCBidWYsIDEyKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIElJT19ERVZJQ0Vf QVRUUihpbl9hY2NlbF94eXpfc3F1YXJlZF9wZWFrX3JhdywgMDQ0NCwNCj4gLQkJICAgICAgIGFk aXMxNjI0MF9yZWFkXzEyYml0X3NpZ25lZCwgTlVMTCwNCj4gLQkJICAgICAgIEFESVMxNjI0MF9Y WVpQRUFLX09VVCk7DQo+IC0NCj4gLXN0YXRpYyBJSU9fQ09OU1RfQVRUUl9TQU1QX0ZSRVFfQVZB SUwoIjQwOTYiKTsNCj4gLQ0KPiAtc3RhdGljIGNvbnN0IHU4IGFkaXMxNjI0MF9hZGRyZXNzZXNb XVsyXSA9IHsNCj4gLQlbQURJUzE2MjQwX1NDQU5fQUNDX1hdID0geyBBRElTMTYyNDBfWEFDQ0xf T0ZGLCBBRElTMTYyNDBfWFBFQUtfT1VUIH0sDQo+IC0JW0FESVMxNjI0MF9TQ0FOX0FDQ19ZXSA9 IHsgQURJUzE2MjQwX1lBQ0NMX09GRiwgQURJUzE2MjQwX1lQRUFLX09VVCB9LA0KPiAtCVtBRElT MTYyNDBfU0NBTl9BQ0NfWl0gPSB7IEFESVMxNjI0MF9aQUNDTF9PRkYsIEFESVMxNjI0MF9aUEVB S19PVVQgfSwNCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBpbnQgYWRpczE2MjQwX3JlYWRfcmF3KHN0 cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsDQo+IC0JCQkgICAgICBzdHJ1Y3QgaWlvX2NoYW5fc3Bl YyBjb25zdCAqY2hhbiwNCj4gLQkJCSAgICAgIGludCAqdmFsLCBpbnQgKnZhbDIsDQo+IC0JCQkg ICAgICBsb25nIG1hc2spDQo+IC17DQo+IC0Jc3RydWN0IGFkaXMgKnN0ID0gaWlvX3ByaXYoaW5k aW9fZGV2KTsNCj4gLQlpbnQgcmV0Ow0KPiAtCXU4IGFkZHI7DQo+IC0JczE2IHZhbDE2Ow0KPiAt DQo+IC0Jc3dpdGNoIChtYXNrKSB7DQo+IC0JY2FzZSBJSU9fQ0hBTl9JTkZPX1JBVzoNCj4gLQkJ cmV0dXJuIGFkaXNfc2luZ2xlX2NvbnZlcnNpb24oaW5kaW9fZGV2LCBjaGFuLA0KPiAtCQkJCUFE SVMxNjI0MF9FUlJPUl9BQ1RJVkUsIHZhbCk7DQo+IC0JY2FzZSBJSU9fQ0hBTl9JTkZPX1NDQUxF Og0KPiAtCQlzd2l0Y2ggKGNoYW4tPnR5cGUpIHsNCj4gLQkJY2FzZSBJSU9fVk9MVEFHRToNCj4g LQkJCWlmIChjaGFuLT5jaGFubmVsID09IDApIHsNCj4gLQkJCQkqdmFsID0gNDsNCj4gLQkJCQkq dmFsMiA9IDg4MDAwMDsgLyogNC44OCBtViAqLw0KPiAtCQkJCXJldHVybiBJSU9fVkFMX0lOVF9Q TFVTX01JQ1JPOw0KPiAtCQkJfQ0KPiAtCQkJcmV0dXJuIC1FSU5WQUw7DQo+IC0JCWNhc2UgSUlP X1RFTVA6DQo+IC0JCQkqdmFsID0gMjQ0OyAvKiAwLjI0NCBDICovDQo+IC0JCQkqdmFsMiA9IDA7 DQo+IC0JCQlyZXR1cm4gSUlPX1ZBTF9JTlRfUExVU19NSUNSTzsNCj4gLQkJY2FzZSBJSU9fQUND RUw6DQo+IC0JCQkqdmFsID0gMDsNCj4gLQkJCSp2YWwyID0gSUlPX0dfVE9fTV9TXzIoNTE0MDAp OyAvKiA1MS40IG1nICovDQo+IC0JCQlyZXR1cm4gSUlPX1ZBTF9JTlRfUExVU19NSUNSTzsNCj4g LQkJZGVmYXVsdDoNCj4gLQkJCXJldHVybiAtRUlOVkFMOw0KPiAtCQl9DQo+IC0JCWJyZWFrOw0K PiAtCWNhc2UgSUlPX0NIQU5fSU5GT19QRUFLX1NDQUxFOg0KPiAtCQkqdmFsID0gMDsNCj4gLQkJ KnZhbDIgPSBJSU9fR19UT19NX1NfMig1MTQwMCk7IC8qIDUxLjQgbWcgKi8NCj4gLQkJcmV0dXJu IElJT19WQUxfSU5UX1BMVVNfTUlDUk87DQo+IC0JY2FzZSBJSU9fQ0hBTl9JTkZPX09GRlNFVDoN Cj4gLQkJKnZhbCA9IDI1MDAwIC8gMjQ0IC0gMHgxMzM7IC8qIDI1IEMgPSAweDEzMyAqLw0KPiAt CQlyZXR1cm4gSUlPX1ZBTF9JTlQ7DQo+IC0JY2FzZSBJSU9fQ0hBTl9JTkZPX0NBTElCQklBUzoN Cj4gLQkJYWRkciA9IGFkaXMxNjI0MF9hZGRyZXNzZXNbY2hhbi0+c2Nhbl9pbmRleF1bMF07DQo+ IC0JCXJldCA9IGFkaXNfcmVhZF9yZWdfMTYoc3QsIGFkZHIsICZ2YWwxNik7DQo+IC0JCWlmIChy ZXQpDQo+IC0JCQlyZXR1cm4gcmV0Ow0KPiAtCQkqdmFsID0gc2lnbl9leHRlbmQzMih2YWwxNiwg OSk7DQo+IC0JCXJldHVybiBJSU9fVkFMX0lOVDsNCj4gLQljYXNlIElJT19DSEFOX0lORk9fUEVB SzoNCj4gLQkJYWRkciA9IGFkaXMxNjI0MF9hZGRyZXNzZXNbY2hhbi0+c2Nhbl9pbmRleF1bMV07 DQo+IC0JCXJldCA9IGFkaXNfcmVhZF9yZWdfMTYoc3QsIGFkZHIsICZ2YWwxNik7DQo+IC0JCWlm IChyZXQpDQo+IC0JCQlyZXR1cm4gcmV0Ow0KPiAtCQkqdmFsID0gc2lnbl9leHRlbmQzMih2YWwx NiwgOSk7DQo+IC0JCXJldHVybiBJSU9fVkFMX0lOVDsNCj4gLQl9DQo+IC0JcmV0dXJuIC1FSU5W QUw7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbnQgYWRpczE2MjQwX3dyaXRlX3JhdyhzdHJ1Y3Qg aWlvX2RldiAqaW5kaW9fZGV2LA0KPiAtCQkJICAgICAgIHN0cnVjdCBpaW9fY2hhbl9zcGVjIGNv bnN0ICpjaGFuLA0KPiAtCQkJICAgICAgIGludCB2YWwsDQo+IC0JCQkgICAgICAgaW50IHZhbDIs DQo+IC0JCQkgICAgICAgbG9uZyBtYXNrKQ0KPiAtew0KPiAtCXN0cnVjdCBhZGlzICpzdCA9IGlp b19wcml2KGluZGlvX2Rldik7DQo+IC0JdTggYWRkcjsNCj4gLQ0KPiAtCXN3aXRjaCAobWFzaykg ew0KPiAtCWNhc2UgSUlPX0NIQU5fSU5GT19DQUxJQkJJQVM6DQo+IC0JCWFkZHIgPSBhZGlzMTYy NDBfYWRkcmVzc2VzW2NoYW4tPnNjYW5faW5kZXhdWzBdOw0KPiAtCQlyZXR1cm4gYWRpc193cml0 ZV9yZWdfMTYoc3QsIGFkZHIsIHZhbCAmIEdFTk1BU0soOSwgMCkpOw0KPiAtCX0NCj4gLQlyZXR1 cm4gLUVJTlZBTDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9z cGVjIGFkaXMxNjI0MF9jaGFubmVsc1tdID0gew0KPiAtCUFESVNfU1VQUExZX0NIQU4oQURJUzE2 MjQwX1NVUFBMWV9PVVQsIEFESVMxNjI0MF9TQ0FOX1NVUFBMWSwgMCwgMTApLA0KPiAtCUFESVNf QVVYX0FEQ19DSEFOKEFESVMxNjI0MF9BVVhfQURDLCBBRElTMTYyNDBfU0NBTl9BVVhfQURDLCAw LCAxMCksDQo+IC0JQURJU19BQ0NFTF9DSEFOKFgsIEFESVMxNjI0MF9YQUNDTF9PVVQsIEFESVMx NjI0MF9TQ0FOX0FDQ19YLA0KPiAtCQkJQklUKElJT19DSEFOX0lORk9fQ0FMSUJCSUFTKSB8IEJJ VChJSU9fQ0hBTl9JTkZPX1BFQUspLA0KPiAtCQkJMCwgMTApLA0KPiAtCUFESVNfQUNDRUxfQ0hB TihZLCBBRElTMTYyNDBfWUFDQ0xfT1VULCBBRElTMTYyNDBfU0NBTl9BQ0NfWSwNCj4gLQkJCUJJ VChJSU9fQ0hBTl9JTkZPX0NBTElCQklBUykgfCBCSVQoSUlPX0NIQU5fSU5GT19QRUFLKSwNCj4g LQkJCTAsIDEwKSwNCj4gLQlBRElTX0FDQ0VMX0NIQU4oWiwgQURJUzE2MjQwX1pBQ0NMX09VVCwg QURJUzE2MjQwX1NDQU5fQUNDX1osDQo+IC0JCQlCSVQoSUlPX0NIQU5fSU5GT19DQUxJQkJJQVMp IHwgQklUKElJT19DSEFOX0lORk9fUEVBSyksDQo+IC0JCQkwLCAxMCksDQo+IC0JQURJU19URU1Q X0NIQU4oQURJUzE2MjQwX1RFTVBfT1VULCBBRElTMTYyNDBfU0NBTl9URU1QLCAwLCAxMCksDQo+ IC0JSUlPX0NIQU5fU09GVF9USU1FU1RBTVAoNikNCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICphZGlzMTYyNDBfYXR0cmlidXRlc1tdID0gew0KPiAtCSZpaW9fZGV2X2F0 dHJfaW5fYWNjZWxfeHl6X3NxdWFyZWRfcGVha19yYXcuZGV2X2F0dHIuYXR0ciwNCj4gLQkmaWlv X2NvbnN0X2F0dHJfc2FtcGxpbmdfZnJlcXVlbmN5X2F2YWlsYWJsZS5kZXZfYXR0ci5hdHRyLA0K PiAtCU5VTEwNCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIGFkaXMxNjI0MF9hdHRyaWJ1dGVfZ3JvdXAgPSB7DQo+IC0JLmF0dHJzID0gYWRpczE2MjQw X2F0dHJpYnV0ZXMsDQo+IC19Ow0KPiAtDQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGlpb19pbmZv IGFkaXMxNjI0MF9pbmZvID0gew0KPiAtCS5hdHRycyA9ICZhZGlzMTYyNDBfYXR0cmlidXRlX2dy b3VwLA0KPiAtCS5yZWFkX3JhdyA9IGFkaXMxNjI0MF9yZWFkX3JhdywNCj4gLQkud3JpdGVfcmF3 ID0gYWRpczE2MjQwX3dyaXRlX3JhdywNCj4gLQkudXBkYXRlX3NjYW5fbW9kZSA9IGFkaXNfdXBk YXRlX3NjYW5fbW9kZSwNCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qg YWRpczE2MjQwX3N0YXR1c19lcnJvcl9tc2dzW10gPSB7DQo+IC0JW0FESVMxNjI0MF9ESUFHX1NU QVRfUFdST05fRkFJTF9CSVRdID0gIlBvd2VyIG9uLCBzZWxmLXRlc3QgZmFpbGVkIiwNCj4gLQlb QURJUzE2MjQwX0RJQUdfU1RBVF9TUElfRkFJTF9CSVRdID0gIlNQSSBmYWlsdXJlIiwNCj4gLQlb QURJUzE2MjQwX0RJQUdfU1RBVF9GTEFTSF9VUFRfQklUXSA9ICJGbGFzaCB1cGRhdGUgZmFpbGVk IiwNCj4gLQlbQURJUzE2MjQwX0RJQUdfU1RBVF9QT1dFUl9ISUdIX0JJVF0gPSAiUG93ZXIgc3Vw cGx5IGFib3ZlIDMuNjI1ViIsDQo+IC0JW0FESVMxNjI0MF9ESUFHX1NUQVRfUE9XRVJfTE9XX0JJ VF0gPSAiUG93ZXIgc3VwcGx5IGJlbG93IDIuMjI1ViIsDQo+IC19Ow0KPiAtDQo+IC1zdGF0aWMg Y29uc3Qgc3RydWN0IGFkaXNfZGF0YSBhZGlzMTYyNDBfZGF0YSA9IHsNCj4gLQkud3JpdGVfZGVs YXkgPSAzNSwNCj4gLQkucmVhZF9kZWxheSA9IDM1LA0KPiAtCS5tc2NfY3RybF9yZWcgPSBBRElT MTYyNDBfTVNDX0NUUkwsDQo+IC0JLmdsb2JfY21kX3JlZyA9IEFESVMxNjI0MF9HTE9CX0NNRCwN Cj4gLQkuZGlhZ19zdGF0X3JlZyA9IEFESVMxNjI0MF9ESUFHX1NUQVQsDQo+IC0NCj4gLQkuc2Vs Zl90ZXN0X21hc2sgPSBBRElTMTYyNDBfTVNDX0NUUkxfU0VMRl9URVNUX0VOLA0KPiAtCS5zZWxm X3Rlc3Rfbm9fYXV0b2NsZWFyID0gdHJ1ZSwNCj4gLQkuc3RhcnR1cF9kZWxheSA9IEFESVMxNjI0 MF9TVEFSVFVQX0RFTEFZLA0KPiAtDQo+IC0JLnN0YXR1c19lcnJvcl9tc2dzID0gYWRpczE2MjQw X3N0YXR1c19lcnJvcl9tc2dzLA0KPiAtCS5zdGF0dXNfZXJyb3JfbWFzayA9IEJJVChBRElTMTYy NDBfRElBR19TVEFUX1BXUk9OX0ZBSUxfQklUKSB8DQo+IC0JCUJJVChBRElTMTYyNDBfRElBR19T VEFUX1NQSV9GQUlMX0JJVCkgfA0KPiAtCQlCSVQoQURJUzE2MjQwX0RJQUdfU1RBVF9GTEFTSF9V UFRfQklUKSB8DQo+IC0JCUJJVChBRElTMTYyNDBfRElBR19TVEFUX1BPV0VSX0hJR0hfQklUKSB8 DQo+IC0JCUJJVChBRElTMTYyNDBfRElBR19TVEFUX1BPV0VSX0xPV19CSVQpLA0KPiAtfTsNCj4g LQ0KPiAtc3RhdGljIGludCBhZGlzMTYyNDBfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkN Cj4gLXsNCj4gLQlpbnQgcmV0Ow0KPiAtCXN0cnVjdCBhZGlzICpzdDsNCj4gLQlzdHJ1Y3QgaWlv X2RldiAqaW5kaW9fZGV2Ow0KPiAtDQo+IC0JLyogc2V0dXAgdGhlIGluZHVzdHJpYWxpbyBkcml2 ZXIgYWxsb2NhdGVkIGVsZW1lbnRzICovDQo+IC0JaW5kaW9fZGV2ID0gZGV2bV9paW9fZGV2aWNl X2FsbG9jKCZzcGktPmRldiwgc2l6ZW9mKCpzdCkpOw0KPiAtCWlmICghaW5kaW9fZGV2KQ0KPiAt CQlyZXR1cm4gLUVOT01FTTsNCj4gLQlzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+IC0JLyog dGhpcyBpcyBvbmx5IHVzZWQgZm9yIHJlbW92YWwgcHVycG9zZXMgKi8NCj4gLQlzcGlfc2V0X2Ry dmRhdGEoc3BpLCBpbmRpb19kZXYpOw0KPiAtDQo+IC0JaW5kaW9fZGV2LT5uYW1lID0gc3BpLT5k ZXYuZHJpdmVyLT5uYW1lOw0KPiAtCWluZGlvX2Rldi0+ZGV2LnBhcmVudCA9ICZzcGktPmRldjsN Cj4gLQlpbmRpb19kZXYtPmluZm8gPSAmYWRpczE2MjQwX2luZm87DQo+IC0JaW5kaW9fZGV2LT5j aGFubmVscyA9IGFkaXMxNjI0MF9jaGFubmVsczsNCj4gLQlpbmRpb19kZXYtPm51bV9jaGFubmVs cyA9IEFSUkFZX1NJWkUoYWRpczE2MjQwX2NoYW5uZWxzKTsNCj4gLQlpbmRpb19kZXYtPm1vZGVz ID0gSU5ESU9fRElSRUNUX01PREU7DQo+IC0NCj4gLQlyZXQgPSBhZGlzX2luaXQoc3QsIGluZGlv X2Rldiwgc3BpLCAmYWRpczE2MjQwX2RhdGEpOw0KPiAtCWlmIChyZXQpDQo+IC0JCXJldHVybiBy ZXQ7DQo+IC0JcmV0ID0gYWRpc19zZXR1cF9idWZmZXJfYW5kX3RyaWdnZXIoc3QsIGluZGlvX2Rl diwgTlVMTCk7DQo+IC0JaWYgKHJldCkNCj4gLQkJcmV0dXJuIHJldDsNCj4gLQ0KPiAtCS8qIEdl dCB0aGUgZGV2aWNlIGludG8gYSBzYW5lIGluaXRpYWwgc3RhdGUgKi8NCj4gLQlyZXQgPSBhZGlz X2luaXRpYWxfc3RhcnR1cChzdCk7DQo+IC0JaWYgKHJldCkNCj4gLQkJZ290byBlcnJvcl9jbGVh bnVwX2J1ZmZlcl90cmlnZ2VyOw0KPiAtCXJldCA9IGlpb19kZXZpY2VfcmVnaXN0ZXIoaW5kaW9f ZGV2KTsNCj4gLQlpZiAocmV0KQ0KPiAtCQlnb3RvIGVycm9yX2NsZWFudXBfYnVmZmVyX3RyaWdn ZXI7DQo+IC0JcmV0dXJuIDA7DQo+IC0NCj4gLWVycm9yX2NsZWFudXBfYnVmZmVyX3RyaWdnZXI6 DQo+IC0JYWRpc19jbGVhbnVwX2J1ZmZlcl9hbmRfdHJpZ2dlcihzdCwgaW5kaW9fZGV2KTsNCj4g LQlyZXR1cm4gcmV0Ow0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGFkaXMxNjI0MF9yZW1vdmUo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkNCj4gLXsNCj4gLQlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9f ZGV2ID0gc3BpX2dldF9kcnZkYXRhKHNwaSk7DQo+IC0Jc3RydWN0IGFkaXMgKnN0ID0gaWlvX3By aXYoaW5kaW9fZGV2KTsNCj4gLQ0KPiAtCWlpb19kZXZpY2VfdW5yZWdpc3RlcihpbmRpb19kZXYp Ow0KPiAtCWFkaXNfY2xlYW51cF9idWZmZXJfYW5kX3RyaWdnZXIoc3QsIGluZGlvX2Rldik7DQo+ IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgYWRpczE2MjQwX29mX21hdGNoW10gPSB7DQo+IC0JeyAuY29tcGF0aWJsZSA9ICJh ZGksYWRpczE2MjQwIiB9LA0KPiAtCXsgfSwNCj4gLX07DQo+IC1NT0RVTEVfREVWSUNFX1RBQkxF KG9mLCBhZGlzMTYyNDBfb2ZfbWF0Y2gpOw0KPiAtDQo+IC1zdGF0aWMgc3RydWN0IHNwaV9kcml2 ZXIgYWRpczE2MjQwX2RyaXZlciA9IHsNCj4gLQkuZHJpdmVyID0gew0KPiAtCQkubmFtZSA9ICJh ZGlzMTYyNDAiLA0KPiAtCQkub2ZfbWF0Y2hfdGFibGUgPSBhZGlzMTYyNDBfb2ZfbWF0Y2gsDQo+ IC0JfSwNCj4gLQkucHJvYmUgPSBhZGlzMTYyNDBfcHJvYmUsDQo+IC0JLnJlbW92ZSA9IGFkaXMx NjI0MF9yZW1vdmUsDQo+IC19Ow0KPiAtbW9kdWxlX3NwaV9kcml2ZXIoYWRpczE2MjQwX2RyaXZl cik7DQo+IC0NCj4gLU1PRFVMRV9BVVRIT1IoIkJhcnJ5IFNvbmcgPDIxY25iYW9AZ21haWwuY29t PiIpOw0KPiAtTU9EVUxFX0RFU0NSSVBUSU9OKCJBbmFsb2cgRGV2aWNlcyBQcm9ncmFtbWFibGUg SW1wYWN0IFNlbnNvciBhbmQgUmVjb3JkZXIiKTsNCj4gLU1PRFVMRV9MSUNFTlNFKCJHUEwgdjIi KTsNCj4gLU1PRFVMRV9BTElBUygic3BpOmFkaXMxNjI0MCIpOw0K