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=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 D834CC3F2D1 for ; Thu, 5 Mar 2020 09:59:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4EA7F208CD for ; Thu, 5 Mar 2020 09:59:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="mxNTMxCn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727069AbgCEJ7B (ORCPT ); Thu, 5 Mar 2020 04:59:01 -0500 Received: from mx0b-00128a01.pphosted.com ([148.163.139.77]:52612 "EHLO mx0b-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727026AbgCEJ7B (ORCPT ); Thu, 5 Mar 2020 04:59:01 -0500 Received: from pps.filterd (m0167090.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0259p7E9001002; Thu, 5 Mar 2020 04:58:33 -0500 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2107.outbound.protection.outlook.com [104.47.70.107]) by mx0b-00128a01.pphosted.com with ESMTP id 2yfnfcfu4t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 05 Mar 2020 04:58:32 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H6LNjvg8yLpClF1l75C3kNvhHRoBiVYKDTVkHqAtUPjGUOQdIQbjCK99zhEUWpC4Y1mg17jyS/f0TVNfFqYYZGKZYAZJ1AHGACJBR7CJMVt11mGCXXnSROAmD0QOopa2rPgQr8gp3/0al64BuQVT6wicKFliv8Zr7c4DQP1TrdzVpv45GRmRBF1KNhQpST6uJ+DUY5MA96OTf8ECxYLelGh75rpsaqSb8Dvwhbq/3KZBVqJz4Q4v/Olum6GINyi2BlNQxnZgSvgubl+ZND8Z9lIgYor9fSbV9D4fv6YrKhuMIGak75iXdAlOBb9xBRHNUud+vXB7OfC5f9KsRiUVxA== 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=65YMnuI30Sv6kar+xQ6elsSixvf+R4eW5NQK2LFjaRk=; b=kLeP8PKLEMWvV8luP92dmCKIBc3FRaPdoxLNesn/NKNoJmuyzt2PFFLVpfDEByD/eY4PHNMDMDFeR3uLoG6FoPrHrInEdyqjJuKGfg8fCeofxTRf7oArrqDVEIyAcFfib8DHRojzwDMqVbltV0peyIkNfj87730o4SAMUqawVVx06O9V4g9wLMG39LN3w9kjeYQ3QGVP28MzmDgXa1pspLMuZ/JIoiZA/oMb3Y5Q2kDWN7iqAHlLXZEHU3a99Iit+/gTpE77fDR1YAXc6VGfbYD7X1F4e+mbewIgwXdi0OXP7ONsVKQ5+pW/hIWcz13NEl2BYfj8dwnkSWTYKIGpZQ== 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=65YMnuI30Sv6kar+xQ6elsSixvf+R4eW5NQK2LFjaRk=; b=mxNTMxCnkjzWU0ULr94wYMN49ntH3boTpsfB3GA8ufcv2JmlBRiWLwis0EfLDWBuskW95nvK4MpnwLNauyFrbhpMgv+f+/UMhNJrWqxBoyDqjcPPObL1BRnvYYIbIbhj2abe5xfznFrhwvmYFz6cIuiq1Hvu4H2Ijo8sjJDF1Wo= Received: from BN6PR03MB3347.namprd03.prod.outlook.com (2603:10b6:405:3d::35) by BN6PR03MB2564.namprd03.prod.outlook.com (2603:10b6:404:58::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2772.18; Thu, 5 Mar 2020 09:58:30 +0000 Received: from BN6PR03MB3347.namprd03.prod.outlook.com ([fe80::80b6:bfbd:9b6d:710a]) by BN6PR03MB3347.namprd03.prod.outlook.com ([fe80::80b6:bfbd:9b6d:710a%4]) with mapi id 15.20.2772.019; Thu, 5 Mar 2020 09:58:30 +0000 From: "Sa, Nuno" To: "jic23@kernel.org" CC: "linux-iio@vger.kernel.org" , "devicetree@vger.kernel.org" , "mark.rutland@arm.com" , "pmeerw@pmeerw.net" , "lars@metafoo.de" , "Ardelean, Alexandru" , "Hennerich, Michael" , "knaack.h@gmx.de" , "robh+dt@kernel.org" Subject: Re: [PATCH 4/5] iio: imu: Add support for adis16475 Thread-Topic: [PATCH 4/5] iio: imu: Add support for adis16475 Thread-Index: AQHV69jtJFnNsL93ykeDdBU02Kd4iag3aAIAgAFd0oCAAQv7AA== Date: Thu, 5 Mar 2020 09:58:30 +0000 Message-ID: References: <20200225124152.270914-1-nuno.sa@analog.com> <20200225124152.270914-5-nuno.sa@analog.com> <20200303210814.1057fbbb@archlinux> <0021fdd0f92a30209bd798c761add8e67a8df5db.camel@analog.com> In-Reply-To: <0021fdd0f92a30209bd798c761add8e67a8df5db.camel@analog.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-ht: Tenant x-ms-office365-filtering-correlation-id: 0afbc718-38d3-45ff-88c3-08d7c0ebc254 x-ms-traffictypediagnostic: BN6PR03MB2564: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 03333C607F x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(376002)(396003)(346002)(366004)(39860400002)(199004)(189003)(478600001)(6916009)(6506007)(64756008)(6512007)(2906002)(66556008)(66476007)(71200400001)(66446008)(2616005)(966005)(8936002)(54906003)(66946007)(81166006)(4326008)(30864003)(81156014)(76116006)(8676002)(36756003)(5660300002)(316002)(26005)(186003)(6486002)(86362001)(559001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR03MB2564;H:BN6PR03MB3347.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: BCL:0; x-microsoft-antispam-message-info: OfyNITgFVNa+s0VjoxDwoj52n665VFkYA1jGGJLFw9APgHKAyqDirPWHlUUkNIXmgJRNlWNHxUdlY/+kHqEF0PvrYGm8XH1cJcR6CMX/OY5jZcE00HgRstXT4borPNxoYlKcLOq5Brp+R1Te6627VKGW6AKRT/UzjgW1+WiSf3y6cyhiU0MaJXq4rzJy8hmcyIvRaaxLfBVvkqBfdtIfoDq/4AsE6Lgt6qO+B18XAUk8sGpVOQJ3uA+eKqaKL+gCHQ6xsuC/hnSVTRh2kV89UPhrFpJ7Iie1AhmwStp2TI/0UauLhhiiGA05unbidseZgT4XpqXojsOM1Y8ksfLnwphLN73gcoGPNS2iehP3G2MgikzNQvd5EN73d0BOK1TvHvnjoDExdU8FwXLPJJ6Z/2flmix+ZVxwi+tkHDGiUr7NShvLyKfm7AinWv5VufNZs/TRx7R6kgRI/Fms9ocDc8S+4IAj6EQJsEUcS64f6LKkKG3LCmyjeLohTvT+XsCIK7cMrhj2hRs8N+BJJNvAuQ== x-ms-exchange-antispam-messagedata: SrduUnsQjkdms1ArSOmVa3PVoAiLopgFxiW0DURh0uL5bitOd5ZtY8w9dtW5pYX2NX4anmKBImzQUKsWlfmw3BXvVY9175qMKxFekNzcIPD8zdNgldc2CL4DJpVjvSKYkLjfjxDM5eBcCUV4BxhfUA== Content-Type: text/plain; charset="utf-8" Content-ID: <5DCF21EC080A9B468DBDEA8CA69F8B30@namprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0afbc718-38d3-45ff-88c3-08d7c0ebc254 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Mar 2020 09:58:30.4912 (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: 77k6vkF1+MPBurNRspRGLLmP/PMEQlqLOKYTX5Clz/ATOSbQsCqfmDjCiY8mgGGOzNKHVIRtaC2AlbK30B4emA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2564 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-03-05_02:2020-03-04,2020-03-05 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 impostorscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 suspectscore=0 spamscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2003050062 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org T24gV2VkLCAyMDIwLTAzLTA0IGF0IDE3OjU5ICswMDAwLCBTYSwgTnVubyB3cm90ZToNCj4gW0V4 dGVybmFsXQ0KPiANCj4gT24gVHVlLCAyMDIwLTAzLTAzIGF0IDIxOjA4ICswMDAwLCBKb25hdGhh biBDYW1lcm9uIHdyb3RlOg0KPiA+IFtFeHRlcm5hbF0NCj4gPiANCj4gPiBPbiBUdWUsIDI1IEZl YiAyMDIwIDEzOjQxOjUxICswMTAwDQo+ID4gTnVubyBTw6EgPG51bm8uc2FAYW5hbG9nLmNvbT4g d3JvdGU6DQo+ID4gDQo+ID4gPiBTdXBwb3J0IEFESVMxNjQ3NSBhbmQgc2ltaWxhciBJTVUgZGV2 aWNlcy4gVGhlc2UgZGV2aWNlcyBhcmUNCj4gPiA+IGEgcHJlY2lzaW9uLCBtaW5pYXR1cmUgTUVN UyBpbmVydGlhbCBtZWFzdXJlbWVudCB1bml0IChJTVUpIHRoYXQNCj4gPiA+IGluY2x1ZGVzIGEg dHJpYXhpYWwgZ3lyb3Njb3BlIGFuZCBhIHRyaWF4aWFsIGFjY2VsZXJvbWV0ZXIuIEVhY2gNCj4g PiA+IGluZXJ0aWFsIHNlbnNvciBjb21iaW5lcyB3aXRoIHNpZ25hbCBjb25kaXRpb25pbmcgdGhh dCBvcHRpbWl6ZXMNCj4gPiA+IGR5bmFtaWMgcGVyZm9ybWFuY2UuDQo+ID4gPiANCj4gPiA+IFRo ZSBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIGRldmljZXM6DQo+ID4gPiAg KiBhZGlzMTY0NzAsIGFkaXMxNjQ3NSwgYWRpczE2NDc3LCBhZGlzMTY0NjUsIGFkaXMxNjQ2NywN Cj4gPiA+IGFkaXMxNjUwMCwNCj4gPiA+ICAgIGFkaXMxNjUwNSwgYWRpczE2NTA3Lg0KPiA+ID4g DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBOdW5vIFPDoSA8bnVuby5zYUBhbmFsb2cuY29tPg0KPiA+ IA0KPiA+IEEgZmV3IGJpdHMgYW5kIHBpZWNlcyBpbmxpbmUuDQo+ID4gDQo+ID4gVGhhbmtzLA0K PiA+IA0KPiA+IEpvbmF0aGFuDQo+ID4gDQo+ID4gDQo+ID4gPiAtLS0NCj4gPiA+ICAuLi4vQUJJ L3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1pbXUtYWRpczE2NDc1ICAgfCAgICA3ICsNCj4gPiA+ICBN QUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICsNCj4g PiA+ICBkcml2ZXJzL2lpby9pbXUvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEz ICsNCj4gPiA+ICBkcml2ZXJzL2lpby9pbXUvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAg fCAgICAxICsNCj4gPiA+ICBkcml2ZXJzL2lpby9pbXUvYWRpczE2NDc1LmMgICAgICAgICAgICAg ICAgICAgfCAxMzA0DQo+ID4gPiArKysrKysrKysrKysrKysrKw0KPiA+ID4gIDUgZmlsZXMgY2hh bmdlZCwgMTMzMyBpbnNlcnRpb25zKCspDQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3Vt ZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1pbXUtDQo+ID4gPiBhZGlzMTY0NzUN Cj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9paW8vaW11L2FkaXMxNjQ3NS5jDQo+ ID4gPiANCj4gPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2Zz LWJ1cy1paW8taW11LQ0KPiA+ID4gYWRpczE2NDc1DQo+ID4gPiBiL0RvY3VtZW50YXRpb24vQUJJ L3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1pbXUtYWRpczE2NDc1DQo+ID4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5lMmMzNzc2MDM1ZWENCj4gPiA+IC0t LSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMt YnVzLWlpby1pbXUtYWRpczE2NDc1DQo+ID4gPiBAQCAtMCwwICsxLDcgQEANCj4gPiA+ICtXaGF0 OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvYnVyc3RfbW9kZV9lbmENCj4gPiA+ IGJsZQ0KPiA+ID4gK0tlcm5lbFZlcnNpb246DQo+ID4gPiArQ29udGFjdDoJbGludXgtaWlvQHZn ZXIua2VybmVsLm9yZw0KPiA+ID4gK0Rlc2NyaXB0aW9uOg0KPiA+ID4gKwkJVXNlIHRoZSBkZXZp Y2UgYnVyc3QgcmVhZCBtb2RlIHdoZW4gcmVhZGluZyBidWZmZXJlZA0KPiA+ID4gKwkJZGF0YS4g VGhpcyBtb2RlIHByb3ZpZGVzIGEgd2F5IHRvIHJlYWQgYSBiYXRjaCBvZg0KPiA+ID4gKwkJb3V0 cHV0IGRhdGEgcmVnaXN0ZXJzLCB1c2luZyBhIGNvbnRpbnVvdXMgc3RyZWFtIG9mDQo+ID4gPiBi aXRzLg0KPiA+IA0KPiA+IFNlZSBjb21tZW50IG9uIHRoaXMgYmVsb3cuICBJJ20gbm90IGtlZW4g b24gdGhpcyBiZWluZyBleHBvc2VkIHRvDQo+ID4gdXNlcnNwYWNlDQo+ID4gYmVjYXVzZSBpdCB3 aWxsIHJhcmVseSBoYXZlIGFueSBpZGVhIGhvdyB0byBzZXQgaXQuDQo+ID4gDQo+ID4gPiBkaWZm IC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUw0KPiA+ID4gaW5kZXggOGZhNDBjM2Vi NzJhLi5mMTEyNjJmMWYzYmIgMTAwNjQ0DQo+ID4gPiAtLS0gYS9NQUlOVEFJTkVSUw0KPiA+ID4g KysrIGIvTUFJTlRBSU5FUlMNCj4gPiA+IEBAIC0xMDA4LDYgKzEwMDgsMTQgQEAgVzoJDQo+ID4g PiBodHRwOi8vZXouYW5hbG9nLmNvbS9jb21tdW5pdHkvbGludXgtZGV2aWNlLWRyaXZlcnMNCj4g PiA+ICBGOglkcml2ZXJzL2lpby9pbXUvYWRpczE2NDYwLmMNCj4gPiA+ICBGOglEb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2ltdS9hZGksYWRpczE2NDYwDQo+ID4gPiAueWFt bA0KPiA+ID4gIA0KPiA+ID4gK0FOQUxPRyBERVZJQ0VTIElOQyBBRElTMTY0NzUgRFJJVkVSDQo+ ID4gPiArTToJTnVubyBTYSA8bnVuby5zYUBhbmFsb2cuY29tPg0KPiA+ID4gK0w6CWxpbnV4LWlp b0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiA+ICtXOglodHRwOi8vZXouYW5hbG9nLmNvbS9jb21tdW5p dHkvbGludXgtZGV2aWNlLWRyaXZlcnMNCj4gPiA+ICtTOglTdXBwb3J0ZWQNCj4gPiA+ICtGOglk cml2ZXJzL2lpby9pbXUvYWRpczE2NDc1LmMNCj4gPiA+ICtGOglEb2N1bWVudGF0aW9uL0FCSS90 ZXN0aW5nL3N5c2ZzLWJ1cy1paW8taW11LWFkaXMxNjQ3NQ0KPiA+ID4gKw0KPiA+ID4gIEFOQUxP RyBERVZJQ0VTIElOQyBBRE0xMTc3IERSSVZFUg0KPiA+ID4gIE06CUJlbmlhbWluIEJpYSA8YmVu aWFtaW4uYmlhQGFuYWxvZy5jb20+DQo+ID4gPiAgTToJTWljaGFlbCBIZW5uZXJpY2ggPE1pY2hh ZWwuSGVubmVyaWNoQGFuYWxvZy5jb20+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8v aW11L0tjb25maWcgYi9kcml2ZXJzL2lpby9pbXUvS2NvbmZpZw0KPiA+ID4gaW5kZXggNjBiYjEw MjllNzU5Li5mYzQxMjNkNTE4YmMgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2lpby9pbXUv S2NvbmZpZw0KPiA+ID4gKysrIGIvZHJpdmVycy9paW8vaW11L0tjb25maWcNCj4gPiA+IEBAIC0y OSw2ICsyOSwxOSBAQCBjb25maWcgQURJUzE2NDYwDQo+ID4gPiAgCSAgVG8gY29tcGlsZSB0aGlz IGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQ0KPiA+ID4gd2ls bCBiZQ0KPiA+ID4gIAkgIGNhbGxlZCBhZGlzMTY0NjAuDQo+ID4gPiAgDQo+ID4gPiArY29uZmln IEFESVMxNjQ3NQ0KPiA+ID4gKwl0cmlzdGF0ZSAiQW5hbG9nIERldmljZXMgQURJUzE2NDc1IGFu ZCBzaW1pbGFyIElNVSBkcml2ZXIiDQo+ID4gPiArCWRlcGVuZHMgb24gU1BJDQo+ID4gPiArCXNl bGVjdCBJSU9fQURJU19MSUINCj4gPiA+ICsJc2VsZWN0IElJT19BRElTX0xJQl9CVUZGRVIgaWYg SUlPX0JVRkZFUg0KPiA+ID4gKwloZWxwDQo+ID4gPiArCSAgU2F5IHllcyBoZXJlIHRvIGJ1aWxk IHN1cHBvcnQgZm9yIEFuYWxvZyBEZXZpY2VzIEFESVMxNjQ3MCwNCj4gPiA+IEFESVMxNjQ3NSwN Cj4gPiA+ICsJICBBRElTMTY0NzcsIEFESVMxNjQ2NSwgQURJUzE2NDY3LCBBRElTMTY1MDAsIEFE SVMxNjUwNSwNCj4gPiA+IEFESVMxNjUwNyBpbmVydGlhbA0KPiA+ID4gKwkgIHNlbnNvcnMuDQo+ ID4gPiArDQo+ID4gPiArCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hv b3NlIE0gaGVyZTogdGhlIG1vZHVsZQ0KPiA+ID4gd2lsbCBiZQ0KPiA+ID4gKwkgIGNhbGxlZCBh ZGlzMTY0NzUuDQo+ID4gPiArDQo+ID4gPiAgY29uZmlnIEFESVMxNjQ4MA0KPiA+ID4gIAl0cmlz dGF0ZSAiQW5hbG9nIERldmljZXMgQURJUzE2NDgwIGFuZCBzaW1pbGFyIElNVSBkcml2ZXIiDQo+ ID4gPiAgCWRlcGVuZHMgb24gU1BJDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vaW11 L01ha2VmaWxlIGIvZHJpdmVycy9paW8vaW11L01ha2VmaWxlDQo+ID4gPiBpbmRleCA1MjM3ZmQ0 YmMzODQuLjg4YjJjNDU1NTIzMCAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvaWlvL2ltdS9N YWtlZmlsZQ0KPiA+ID4gKysrIGIvZHJpdmVycy9paW8vaW11L01ha2VmaWxlDQo+ID4gPiBAQCAt Niw2ICs2LDcgQEANCj4gPiA+ICAjIFdoZW4gYWRkaW5nIG5ldyBlbnRyaWVzIGtlZXAgdGhlIGxp c3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyDQo+ID4gPiAgb2JqLSQoQ09ORklHX0FESVMxNjQwMCkg Kz0gYWRpczE2NDAwLm8NCj4gPiA+ICBvYmotJChDT05GSUdfQURJUzE2NDYwKSArPSBhZGlzMTY0 NjAubw0KPiA+ID4gK29iai0kKENPTkZJR19BRElTMTY0NzUpICs9IGFkaXMxNjQ3NS5vDQo+ID4g PiAgb2JqLSQoQ09ORklHX0FESVMxNjQ4MCkgKz0gYWRpczE2NDgwLm8NCj4gPiA+ICANCj4gPiA+ ICBhZGlzX2xpYi15ICs9IGFkaXMubw0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2lt dS9hZGlzMTY0NzUuYw0KPiA+ID4gYi9kcml2ZXJzL2lpby9pbXUvYWRpczE2NDc1LmMNCj4gPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmY3YzYzNzcz NGVjOA0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvZHJpdmVycy9paW8vaW11L2Fk aXMxNjQ3NS5jDQo+ID4gPiBAQCAtMCwwICsxLDEzMDQgQEANCj4gPiA+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ID4gKy8qDQo+ID4gPiArICogQURJUzE2NDc1IElN VSBkcml2ZXINCj4gPiA+ICsgKg0KPiA+ID4gKyAqIENvcHlyaWdodCAyMDE5IEFuYWxvZyBEZXZp Y2VzIEluYy4NCj4gPiA+ICsgKi8NCj4gPiA+ICsjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPg0K PiA+ID4gKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51 eC9iaXRvcHMuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ID4gPiArI2luY2x1 ZGUgPGxpbnV4L2RlYnVnZnMuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4g PiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2tl cm5lbC5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8vYnVmZmVyLmg+DQo+ID4gPiArI2lu Y2x1ZGUgPGxpbnV4L2lpby9paW8uaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvaWlvL2ltdS9h ZGlzLmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2lpby9zeXNmcy5oPg0KPiA+ID4gKyNpbmNs dWRlIDxsaW51eC9paW8vdHJpZ2dlcl9jb25zdW1lci5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51 eC9pcnEuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gPiArI2luY2x1 ZGUgPGxpbnV4L3NwaS9zcGkuaD4NCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9S RUdfRElBR19TVEFUCQkweDAyDQo+ID4gPiArI2RlZmluZSBBRElTMTY0NzVfUkVHX1hfR1lST19M CQkweDA0DQo+ID4gPiArI2RlZmluZSBBRElTMTY0NzVfUkVHX1lfR1lST19MCQkweDA4DQo+ID4g PiArI2RlZmluZSBBRElTMTY0NzVfUkVHX1pfR1lST19MCQkweDBDDQo+ID4gPiArI2RlZmluZSBB RElTMTY0NzVfUkVHX1hfQUNDRUxfTAkJMHgxMA0KPiA+ID4gKyNkZWZpbmUgQURJUzE2NDc1X1JF R19ZX0FDQ0VMX0wJCTB4MTQNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9SRUdfWl9BQ0NFTF9M CQkweDE4DQo+ID4gPiArI2RlZmluZSBBRElTMTY0NzVfUkVHX1RFTVBfT1VUCQkweDFjDQo+ID4g PiArI2RlZmluZSBBRElTMTY0NzVfUkVHX1hfR1lST19CSUFTX0wJMHg0MA0KPiA+ID4gKyNkZWZp bmUgQURJUzE2NDc1X1JFR19ZX0dZUk9fQklBU19MCTB4NDQNCj4gPiA+ICsjZGVmaW5lIEFESVMx NjQ3NV9SRUdfWl9HWVJPX0JJQVNfTAkweDQ4DQo+ID4gPiArI2RlZmluZSBBRElTMTY0NzVfUkVH X1hfQUNDRUxfQklBU19MCTB4NGMNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9SRUdfWV9BQ0NF TF9CSUFTX0wJMHg1MA0KPiA+ID4gKyNkZWZpbmUgQURJUzE2NDc1X1JFR19aX0FDQ0VMX0JJQVNf TAkweDU0DQo+ID4gPiArI2RlZmluZSBBRElTMTY0NzVfUkVHX0ZJTFRfQ1RSTAkJMHg1Yw0KPiA+ ID4gKyNkZWZpbmUgQURJUzE2NDc1X0ZJTFRfQ1RSTF9NQVNLCUdFTk1BU0soMiwgMCkNCj4gPiA+ ICsjZGVmaW5lIEFESVMxNjQ3NV9GSUxUX0NUUkwoeCkJCUZJRUxEX1BSRVAoQURJUzE2NDc1X0ZJ DQo+ID4gPiBMVF9DVFJMX01BU0ssIHgpDQo+ID4gPiArI2RlZmluZSBBRElTMTY0NzVfUkVHX01T R19DVFJMCQkweDYwDQo+ID4gPiArI2RlZmluZSBBRElTMTY0NzVfTVNHX0NUUkxfRFJfUE9MX01B U0sJQklUKDApDQo+ID4gPiArI2RlZmluZSBBRElTMTY0NzVfTVNHX0NUUkxfRFJfUE9MKHgpIFwN Cj4gPiA+ICsJCQkJRklFTERfUFJFUChBRElTMTY0NzVfTVNHX0NUUkxfRFJfUE9MX01BDQo+ID4g PiBTSywgeCkNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9FWFRfQ0xLX01BU0sJCUdFTk1BU0so NCwgMikNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9FWFRfQ0xLKHgpCQlGSUVMRF9QUkVQKEFE SVMxNjQ3NV9FWA0KPiA+ID4gVF9DTEtfTUFTSywgeCkNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3 NV9SRUdfVVBfU0NBTEUJCTB4NjINCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9SRUdfREVDX1JB VEUJCTB4NjQNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9SRUdfR0xPQl9DTUQJCTB4NjgNCj4g PiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9SRUdfRklSTV9SRVYJCTB4NmMNCj4gPiA+ICsjZGVmaW5l IEFESVMxNjQ3NV9SRUdfRklSTV9ETQkJMHg2ZQ0KPiA+ID4gKyNkZWZpbmUgQURJUzE2NDc1X1JF R19GSVJNX1kJCTB4NzANCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9SRUdfUFJPRF9JRAkJMHg3 Mg0KPiA+ID4gKyNkZWZpbmUgQURJUzE2NDc1X1JFR19TRVJJQUxfTlVNCTB4NzQNCj4gPiA+ICsj ZGVmaW5lIEFESVMxNjQ3NV9SRUdfRkxBU0hfQ05UCQkweDdjDQo+ID4gPiArI2RlZmluZSBBRElT MTY1MDBfQlVSU1QzMl9NQVNLCQlCSVQoOSkNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjUwMF9CVVJT VDMyKHgpCQlGSUVMRF9QUkVQKEFESVMxNjUwMF9CVQ0KPiA+ID4gUlNUMzJfTUFTSywgeCkNCj4g PiA+ICsvKiBudW1iZXIgb2YgZGF0YSBlbGVtZW50cyBpbiBidXJzdCBtb2RlICovDQo+ID4gPiAr I2RlZmluZSBBRElTMTY0NzVfQlVSU1RfTUFYX0RBVEEJMTANCj4gPiA+ICsjZGVmaW5lIEFESVMx NjQ3NV9NQVhfU0NBTl9EQVRBCQkxNQ0KPiA+ID4gKw0KPiA+ID4gK2VudW0gY2xrX21vZGUgew0K PiA+ID4gKwlBRElTMTY0NzVfQ0xLX0RJUkVDVCA9IDEsDQo+ID4gPiArCUFESVMxNjQ3NV9DTEtf U0NBTEVELA0KPiA+ID4gKwlBRElTMTY0NzVfQ0xLX09VVFBVVCwNCj4gPiA+ICsJQURJUzE2NDc1 X0NMS19QVUxTRSA9IDUsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdHJ1Y3QgYWRpczE2 NDc1X2Nsa3Mgew0KPiA+ID4gKwljb25zdCBjaGFyICpuYW1lOw0KPiA+ID4gKwllbnVtIGNsa19t b2RlIGNsa19tb2RlOw0KPiA+ID4gKwl1MTYgbWluX3JhdGU7DQo+ID4gPiArCXUxNiBtYXhfcmF0 ZTsNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0cnVjdCBhZGlzMTY0NzVfY2hpcF9pbmZv IHsNCj4gPiA+ICsJY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgKmNoYW5uZWxzOw0KPiA+ID4g Kwljb25zdCBzdHJ1Y3QgYWRpczE2NDc1X2Nsa3MgKmNsa3M7DQo+ID4gPiArCWNvbnN0IHN0cnVj dCBhZGlzX2RhdGEgYWRpc19kYXRhOw0KPiA+ID4gKwl1MzIgbnVtX2NoYW5uZWxzOw0KPiA+ID4g Kwl1MzIgZ3lyb19tYXhfdmFsOw0KPiA+ID4gKwl1MzIgZ3lyb19tYXhfc2NhbGU7DQo+ID4gPiAr CXUzMiBhY2NlbF9tYXhfdmFsOw0KPiA+ID4gKwl1MzIgYWNjZWxfbWF4X3NjYWxlOw0KPiA+ID4g Kwl1MzIgdGVtcF9zY2FsZTsNCj4gPiA+ICsJdTMyIGludF9jbGs7DQo+ID4gPiArCXUxNiBtYXhf ZGVjOw0KPiA+ID4gKwl1OCBudW1fY2xrczsNCj4gPiA+ICsJYm9vbCBoYXNfYnVyc3QzMjsNCj4g PiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0cnVjdCBhZGlzMTY0NzUgew0KPiA+ID4gKwljb25z dCBzdHJ1Y3QgYWRpczE2NDc1X2NoaXBfaW5mbyAqaW5mbzsNCj4gPiA+ICsJc3RydWN0IGFkaXMg YWRpczsNCj4gPiA+ICsJdTMyIGNsa19mcmVxOw0KPiA+ID4gKwl1MzIgY2FjaGVkX3NwaV9zcGVl ZF9oejsNCj4gPiA+ICsJYm9vbCBidXJzdDMyOw0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiAr ZW51bSB7DQo+ID4gPiArCUFESVMxNjQ3NV9TQ0FOX0dZUk9fWCwNCj4gPiA+ICsJQURJUzE2NDc1 X1NDQU5fR1lST19ZLA0KPiA+ID4gKwlBRElTMTY0NzVfU0NBTl9HWVJPX1osDQo+ID4gPiArCUFE SVMxNjQ3NV9TQ0FOX0FDQ0VMX1gsDQo+ID4gPiArCUFESVMxNjQ3NV9TQ0FOX0FDQ0VMX1ksDQo+ ID4gPiArCUFESVMxNjQ3NV9TQ0FOX0FDQ0VMX1osDQo+ID4gPiArCUFESVMxNjQ3NV9TQ0FOX1RF TVAsDQo+ID4gPiArCUFESVMxNjQ3NV9TQ0FOX0RJQUdfU19GTEFHUywNCj4gPiA+ICsJQURJUzE2 NDc1X1NDQU5fQ1JDX0ZBSUxVUkUsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICsjaWZkZWYg Q09ORklHX0RFQlVHX0ZTDQo+ID4gPiArc3RhdGljIHNzaXplX3QgYWRpczE2NDc1X3Nob3dfZmly bXdhcmVfcmV2aXNpb24oc3RydWN0IGZpbGUNCj4gPiA+ICpmaWxlLA0KPiA+ID4gKwkJCQkJCWNo YXIgX191c2VyICp1c2VyYnVmLA0KPiA+ID4gKwkJCQkJCXNpemVfdCBjb3VudCwgbG9mZl90DQo+ ID4gPiAqcHBvcykNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBhZGlzMTY0NzUgKnN0ID0gZmls ZS0+cHJpdmF0ZV9kYXRhOw0KPiA+ID4gKwljaGFyIGJ1Zls3XTsNCj4gPiA+ICsJc2l6ZV90IGxl bjsNCj4gPiA+ICsJdTE2IHJldjsNCj4gPiA+ICsJaW50IHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJ cmV0ID0gYWRpc19yZWFkX3JlZ18xNigmc3QtPmFkaXMsIEFESVMxNjQ3NV9SRUdfRklSTV9SRVYs DQo+ID4gPiAmcmV2KTsNCj4gPiA+ICsJaWYgKHJldCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ ID4gPiArDQo+ID4gPiArCWxlbiA9IHNjbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXguJXhc biIsIHJldiA+PiA4LCByZXYgJg0KPiA+ID4gMHhmZik7DQo+ID4gPiArDQo+ID4gPiArCXJldHVy biBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4p Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3Bl cmF0aW9ucw0KPiA+ID4gYWRpczE2NDc1X2Zpcm13YXJlX3JldmlzaW9uX2ZvcHMgPSB7DQo+ID4g PiArCS5vcGVuID0gc2ltcGxlX29wZW4sDQo+ID4gPiArCS5yZWFkID0gYWRpczE2NDc1X3Nob3df ZmlybXdhcmVfcmV2aXNpb24sDQo+ID4gPiArCS5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlaywNCj4g PiA+ICsJLm93bmVyID0gVEhJU19NT0RVTEUsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtz dGF0aWMgc3NpemVfdCBhZGlzMTY0NzVfc2hvd19maXJtd2FyZV9kYXRlKHN0cnVjdCBmaWxlICpm aWxlLA0KPiA+ID4gKwkJCQkJICAgIGNoYXIgX191c2VyICp1c2VyYnVmLA0KPiA+ID4gKwkJCQkJ ICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0 IGFkaXMxNjQ3NSAqc3QgPSBmaWxlLT5wcml2YXRlX2RhdGE7DQo+ID4gPiArCXUxNiBtZCwgeWVh cjsNCj4gPiA+ICsJY2hhciBidWZbMTJdOw0KPiA+ID4gKwlzaXplX3QgbGVuOw0KPiA+ID4gKwlp bnQgcmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwlyZXQgPSBhZGlzX3JlYWRfcmVnXzE2KCZzdC0+YWRp cywgQURJUzE2NDc1X1JFR19GSVJNX1ksICZ5ZWFyKTsNCj4gPiA+ICsJaWYgKHJldCkNCj4gPiA+ ICsJCXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4gPiArCXJldCA9IGFkaXNfcmVhZF9yZWdfMTYo JnN0LT5hZGlzLCBBRElTMTY0NzVfUkVHX0ZJUk1fRE0sICZtZCk7DQo+ID4gPiArCWlmIChyZXQp DQo+ID4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwlsZW4gPSBzbnByaW50Zihi dWYsIHNpemVvZihidWYpLCAiJS4yeC0lLjJ4LSUuNHhcbiIsIG1kID4+IDgsDQo+ID4gPiBtZCAm IDB4ZmYsDQo+ID4gPiArCQkgICAgICAgeWVhcik7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBz aW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pOw0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyBhZGlzMTY0NzVfZmlybXdhcmVfZGF0ZV9mb3BzDQo+ID4gPiA9DQo+ID4gPiB7DQo+ID4g PiArCS5vcGVuID0gc2ltcGxlX29wZW4sDQo+ID4gPiArCS5yZWFkID0gYWRpczE2NDc1X3Nob3df ZmlybXdhcmVfZGF0ZSwNCj4gPiA+ICsJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLA0KPiA+ID4g Kwkub3duZXIgPSBUSElTX01PRFVMRSwNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRp YyBpbnQgYWRpczE2NDc1X3Nob3dfc2VyaWFsX251bWJlcih2b2lkICphcmcsIHU2NCAqdmFsKQ0K PiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGFkaXMxNjQ3NSAqc3QgPSBhcmc7DQo+ID4gPiArCXUx NiBzZXJpYWw7DQo+ID4gPiArCWludCByZXQ7DQo+ID4gPiArDQo+ID4gPiArCXJldCA9IGFkaXNf cmVhZF9yZWdfMTYoJnN0LT5hZGlzLCBBRElTMTY0NzVfUkVHX1NFUklBTF9OVU0sDQo+ID4gPiAm c2VyaWFsKTsNCj4gPiA+ICsJaWYgKHJldCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiAr DQo+ID4gPiArCSp2YWwgPSBzZXJpYWw7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiAwOw0KPiA+ ID4gK30NCj4gPiA+ICtERUZJTkVfU0lNUExFX0FUVFJJQlVURShhZGlzMTY0NzVfc2VyaWFsX251 bWJlcl9mb3BzLA0KPiA+ID4gKwkJCWFkaXMxNjQ3NV9zaG93X3NlcmlhbF9udW1iZXIsIE5VTEws DQo+ID4gPiAiMHglLjRsbHhcbiIpOw0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWRpczE2 NDc1X3Nob3dfcHJvZHVjdF9pZCh2b2lkICphcmcsIHU2NCAqdmFsKQ0KPiA+ID4gK3sNCj4gPiA+ ICsJc3RydWN0IGFkaXMxNjQ3NSAqc3QgPSBhcmc7DQo+ID4gPiArCXUxNiBwcm9kX2lkOw0KPiA+ ID4gKwlpbnQgcmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwlyZXQgPSBhZGlzX3JlYWRfcmVnXzE2KCZz dC0+YWRpcywgQURJUzE2NDc1X1JFR19QUk9EX0lELA0KPiA+ID4gJnByb2RfaWQpOw0KPiA+ID4g KwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJKnZhbCA9 IHByb2RfaWQ7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICtE RUZJTkVfU0lNUExFX0FUVFJJQlVURShhZGlzMTY0NzVfcHJvZHVjdF9pZF9mb3BzLA0KPiA+ID4g KwkJCWFkaXMxNjQ3NV9zaG93X3Byb2R1Y3RfaWQsIE5VTEwsICIlbGx1XG4iKTsNCj4gPiA+ICsN Cj4gPiA+ICtzdGF0aWMgaW50IGFkaXMxNjQ3NV9zaG93X2ZsYXNoX2NvdW50KHZvaWQgKmFyZywg dTY0ICp2YWwpDQo+ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgYWRpczE2NDc1ICpzdCA9IGFyZzsN Cj4gPiA+ICsJdTMyIGZsYXNoX2NvdW50Ow0KPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4gKw0KPiA+ ID4gKwlyZXQgPSBhZGlzX3JlYWRfcmVnXzMyKCZzdC0+YWRpcywgQURJUzE2NDc1X1JFR19GTEFT SF9DTlQsDQo+ID4gPiArCQkJICAgICAgICZmbGFzaF9jb3VudCk7DQo+ID4gPiArCWlmIChyZXQp DQo+ID4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwkqdmFsID0gZmxhc2hfY291 bnQ7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICtERUZJTkVf U0lNUExFX0FUVFJJQlVURShhZGlzMTY0NzVfZmxhc2hfY291bnRfZm9wcywNCj4gPiA+ICsJCQlh ZGlzMTY0NzVfc2hvd19mbGFzaF9jb3VudCwgTlVMTCwgIiVsbGRcbiIpOw0KPiA+ID4gKw0KPiA+ ID4gK3N0YXRpYyBpbnQgYWRpczE2NDc1X2RlYnVnZnNfaW5pdChzdHJ1Y3QgaWlvX2RldiAqaW5k aW9fZGV2KQ0KPiA+ID4gK3sNCj4gPiA+ICsJc3RydWN0IGFkaXMxNjQ3NSAqc3QgPSBpaW9fcHJp dihpbmRpb19kZXYpOw0KPiA+ID4gKw0KPiA+ID4gKwlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJzZXJp YWxfbnVtYmVyIiwgMDQwMCwgaW5kaW9fZGV2LQ0KPiA+ID4gPiBkZWJ1Z2ZzX2RlbnRyeSwNCj4g PiA+ICsJCQkgICAgc3QsICZhZGlzMTY0NzVfc2VyaWFsX251bWJlcl9mb3BzKTsNCj4gPiA+ICsJ ZGVidWdmc19jcmVhdGVfZmlsZSgicHJvZHVjdF9pZCIsIDA0MDAsIGluZGlvX2Rldi0NCj4gPiA+ ID4gZGVidWdmc19kZW50cnksIHN0LA0KPiA+ID4gKwkJCSAgICAmYWRpczE2NDc1X3Byb2R1Y3Rf aWRfZm9wcyk7DQo+ID4gPiArCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImZsYXNoX2NvdW50IiwgMDQw MCwgaW5kaW9fZGV2LQ0KPiA+ID4gPiBkZWJ1Z2ZzX2RlbnRyeSwgc3QsDQo+ID4gPiArCQkJICAg ICZhZGlzMTY0NzVfZmxhc2hfY291bnRfZm9wcyk7DQo+ID4gPiArCWRlYnVnZnNfY3JlYXRlX2Zp bGUoImZpcm13YXJlX3JldmlzaW9uIiwgMDQwMCwNCj4gPiA+ICsJCQkgICAgaW5kaW9fZGV2LT5k ZWJ1Z2ZzX2RlbnRyeSwgc3QsDQo+ID4gPiArCQkJICAgICZhZGlzMTY0NzVfZmlybXdhcmVfcmV2 aXNpb25fZm9wcyk7DQo+ID4gPiArCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImZpcm13YXJlX2RhdGUi LCAwNDAwLCBpbmRpb19kZXYtDQo+ID4gPiA+IGRlYnVnZnNfZGVudHJ5LA0KPiA+ID4gKwkJCSAg ICBzdCwgJmFkaXMxNjQ3NV9maXJtd2FyZV9kYXRlX2ZvcHMpOw0KPiA+ID4gKwlyZXR1cm4gMDsN Cj4gPiA+ICt9DQo+ID4gPiArI2Vsc2UNCj4gPiA+ICtzdGF0aWMgaW50IGFkaXMxNjQ3NV9kZWJ1 Z2ZzX2luaXQoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikNCj4gPiA+ICt7DQo+ID4gPiArCXJl dHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsjZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMg c3NpemVfdCBhZGlzMTY0NzVfYnVyc3RfbW9kZV9lbmFibGVfZ2V0KHN0cnVjdCBkZXZpY2UNCj4g PiA+ICpkZXYsDQo+ID4gPiArCQkJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUNCj4g PiA+ICphdHRyLA0KPiA+ID4gKwkJCQkJICAgICAgIGNoYXIgKmJ1ZikNCj4gPiA+ICt7DQo+ID4g PiArCXN0cnVjdCBhZGlzMTY0NzUgKnN0ID0gaWlvX3ByaXYoZGV2X3RvX2lpb19kZXYoZGV2KSk7 DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBzdC0+YWRpcy5i dXJzdC0+ZW4pOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgc3NpemVfdCBhZGlz MTY0NzVfYnVyc3RfbW9kZV9lbmFibGVfc2V0KHN0cnVjdCBkZXZpY2UNCj4gPiA+ICpkZXYsDQo+ ID4gPiArCQkJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUNCj4gPiA+ICphdHRyLA0K PiA+ID4gKwkJCQkJICAgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90DQo+ID4gPiBsZW4pDQo+ ID4gPiArew0KPiA+ID4gKwlzdHJ1Y3QgYWRpczE2NDc1ICpzdCA9IGlpb19wcml2KGRldl90b19p aW9fZGV2KGRldikpOw0KPiA+ID4gKwlib29sIHZhbDsNCj4gPiA+ICsJaW50IHJldDsNCj4gPiA+ ICsNCj4gPiA+ICsJcmV0ID0ga3N0cnRvYm9vbChidWYsICZ2YWwpOw0KPiA+ID4gKwlpZiAocmV0 KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKHZhbCkNCj4gPiA+ ICsJCS8qIDFNSHogbWF4IGluIGJ1cnN0IG1vZGUgKi8NCj4gPiA+ICsJCXN0LT5hZGlzLnNwaS0+ bWF4X3NwZWVkX2h6ID0gMTAwMDAwMDsNCj4gPiA+ICsJZWxzZQ0KPiA+ID4gKwkJc3QtPmFkaXMu c3BpLT5tYXhfc3BlZWRfaHogPSBzdC0+Y2FjaGVkX3NwaV9zcGVlZF9oejsNCj4gPiA+ICsNCj4g PiA+ICsJc3QtPmFkaXMuYnVyc3QtPmVuID0gdmFsOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4g bGVuOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgSUlPX0RFVklDRV9BVFRSKGJ1 cnN0X21vZGVfZW5hYmxlLCAwNjQ0LA0KPiA+ID4gKwkJICAgICAgIGFkaXMxNjQ3NV9idXJzdF9t b2RlX2VuYWJsZV9nZXQsDQo+ID4gPiArCQkgICAgICAgYWRpczE2NDc1X2J1cnN0X21vZGVfZW5h YmxlX3NldCwgMCk7DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFk aXMxNjQ3NV9hdHRyaWJ1dGVzW10gPSB7DQo+ID4gPiArCSZpaW9fZGV2X2F0dHJfYnVyc3RfbW9k ZV9lbmFibGUuZGV2X2F0dHIuYXR0ciwNCj4gPiANCj4gPiBIbW0uICBOb3JtYWxseSB3ZSB0cnkg dG8gYXZvaWQgZXhwb3NpbmcgdGhpcyBhbmQgbWFrZSB0aGUgZGVjaXNpb24NCj4gPiBhdXRvbWF0 aWNhbGx5IGJhc2VkIG9uIHdoaWNoIGNoYW5uZWxzIGFyZSBlbmFibGVkLg0KPiANCj4gSG1tLiBJ biB0aGF0IGNhc2UsIHRoZSBkZWNpc2lvbiB3b3VsZCBwcm9iYWJseSBoYXZlIHRvIGdvIHRvIHRo ZQ0KPiBsaWJyYXJ5IHNpbmNlIGl0IGlzIHRoZXJlIHRoYXQgdGhlICJwcmVwYXJhdGlvbnMiIGZv ciBidWZmZXJlZCBtb2RlDQo+IGFyZQ0KPiBkb25lLiBNb3N0bHksIHRoZSBkYXRhIHdlIGFyZSBp bnRlcmVzdGVkIGluIHRoZSBidXJzdCBkYXRhIGlzIGd5cm8sDQo+IGFjY2VsIGFuZCB0ZW1wLiBT byB0byBtYWtlIHRoZSBkZWNpc2lvbiBiYXNlZCBvbiB3aGljaCBjaGFubmVscyBhcmUNCj4gZW5h YmxlZCBpcyBub3QgdGhhdCBzdHJhaWdodC4gU2hvdWxkIHdlIGVuYWJsZSBpdCBvbmx5IHdoZW4g YWxsDQo+IGNoYW5uZWxzIGFyZSBlbmFibGVkPyBTb21lIG9mIHRoZW0gKGFuZCB3aGljaCk/DQoN CkkgdGhvdWdodCBhIGxpdHRsZSBiaXQgbW9yZSBhYm91dCBpdCBhbmQgd2UgY291bGQgZG8gc29t ZSBtYXRoIGluIHRoZQ0KbGliIHRvIGtub3cgd2hlbiB1c2luZyBidXJzdCBtb2RlIGJlY29tZXMg ZmFzdGVyIChkZXBlbmRpbmcgb24gZW5hYmxlZA0Kc2NhbiBlbGVtZW50cykuIFRoZSBsaWJyYXJ5 IHdvdWxkIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgYnVyc3QgbWF4IHNwaQ0KZnJlcXVlbmN5IGFu ZCBhbHNvIHNvbWUgbWlub3IgY2hhbmdlcyBpbiBob3cgYnVyc3RfbGVuIGlzIGJlaW5nDQpjYWxj dWxhdGVkIChkcml2ZXJzIHNob3VsZCBleHBsaWNpdGx5IHNldCB0aGlzIHJhdGhlciB0aGFuIHRo ZQ0KbGlicmFyeSkuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgd29ydGggaXQgdG8gZ28gd2l0aCB0 aGlzIGV4dHJhIHdvcmsNCjopPw0KDQo+IEkgZ3Vlc3MgdGhhdCB0aGUgb25seSBjYXNlIHdoZXJl IG5vdCB1c2luZyBidXJzdCBtb2RlIGlzIGZhc3RlciBpcw0KPiBfX21heWJlX18gd2hlbiBvbmx5 IHJlYWRpbmcgb25lIGNoYW5uZWwgKGV2ZW4gdGhlbiBJbSBub3Qgc3VyZS4uLikuDQo+IEhlbmNl LCBJJ20ga2luZCBvZiB0aGlua2luZyBpbiB0aGUgY3luaWNhbCBhcHByb2FjaCA6KS4NCj4gDQo+ IEhvd2V2ZXIsIEkgd2FzIGFsc28gdXNpbmcgdGhpcyB0byBoYW5kbGUgdGhlIHNwaSBtYXhfc3Bl ZWRfaHogc2luY2UNCj4gd2UNCj4gaGF2ZSBzb21lIGxpbWl0YXRpb25zIGluIGJ1cnN0IG1vZGUu IEkgaGF2ZSB0d28gdGhvdWdodHMgaGVyZToNCj4gDQo+IDEpIFdlIGhhbmRsZSB0aGlzIGluIHRo ZSB0cmlnZ2VyIGhhbmRsZXIsIGJlZm9yZSBkb2luZyB0aGUgc3BpDQo+IHRyYW5zZmVyDQo+IDIp IEp1c3Qgc2V0IHRoZSBzcGkgbWF4X3NwZWVkX2h6IHRvIHRoZSBvbmUgYWxsb3dlZCBieSBidXJz dCBtb2RlIGluDQo+IHRoZSBkZXZpY2V0cmVlLg0KPiANCj4gQW55IHByZWZlcmVuY2U/DQo+ID4g SWYgbW9yZSBjeW5pY2FsIHdlIGRlY2lkZSB0aGF0IG5vIG9uZSBidXlzIGFuZCBleHBlbnNpdmUg c2Vuc29yDQo+ID4gb25seQ0KPiA+IHRvIHJlYWQgYSBmZXcgb2YgaXQncyBjaGFubmVscywgc28g d2UgdHVybiBvbiBidXJzdCBtb2RlIGFsbCB0aGUNCj4gPiB0aW1lDQo+ID4gOikNCj4gPiANCj4g PiA+ICsJTlVMTCwNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlX2dyb3VwIGFkaXMxNjQ5NV9hdHRyaWJ1dGVfZ3JvdXAgPQ0KPiA+ID4gew0K PiA+ID4gKwkuYXR0cnMgPSBhZGlzMTY0NzVfYXR0cmlidXRlcywNCj4gPiA+ICt9Ow0KPiA+ID4g Kw0KPiA+ID4gK3N0YXRpYyBpbnQgYWRpczE2NDc1X2dldF9mcmVxKHN0cnVjdCBhZGlzMTY0NzUg KnN0LCB1MzIgKmZyZXEpDQo+ID4gPiArew0KPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4gKwl1MTYg ZGVjOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXQgPSBhZGlzX3JlYWRfcmVnXzE2KCZzdC0+YWRpcywg QURJUzE2NDc1X1JFR19ERUNfUkFURSwNCj4gPiA+ICZkZWMpOw0KPiA+ID4gKwlpZiAocmV0KQ0K PiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiArDQo+ID4gPiArCSpmcmVxID0gRElWX1JP VU5EX0NMT1NFU1Qoc3QtPmNsa19mcmVxLCBkZWMgKyAxKTsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0 dXJuIDA7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWRpczE2NDc1X3Nl dF9mcmVxKHN0cnVjdCBhZGlzMTY0NzUgKnN0LCBjb25zdCB1MzINCj4gPiA+IGZyZXEpDQo+ID4g PiArew0KPiA+ID4gKwl1MTYgZGVjOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoZnJlcSA9PSAwIHx8 IGZyZXEgPiBzdC0+Y2xrX2ZyZXEpDQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ICsN Cj4gPiA+ICsJZGVjID0gRElWX1JPVU5EX0NMT1NFU1Qoc3QtPmNsa19mcmVxLCBmcmVxKTsNCj4g PiA+ICsNCj4gPiA+ICsJaWYgKGRlYykNCj4gPiA+ICsJCWRlYy0tOw0KPiA+ID4gKw0KPiA+ID4g KwlpZiAoZGVjID4gc3QtPmluZm8tPm1heF9kZWMpDQo+ID4gPiArCQlkZWMgPSBzdC0+aW5mby0+ bWF4X2RlYzsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIGFkaXNfd3JpdGVfcmVnXzE2KCZzdC0+ YWRpcywgQURJUzE2NDc1X1JFR19ERUNfUkFURSwNCj4gPiA+IGRlYyk7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gKy8qIFRoZSB2YWx1ZXMgYXJlIGFwcHJveGltYXRlZC4gKi8NCj4gPiA+ICtz dGF0aWMgY29uc3QgdTMyIGFkaXMxNjQ3NV8zZGJfZnJlcXNbXSA9IHsNCj4gPiA+ICsJWzBdID0g NzIwLCAvKiBGaWx0ZXIgZGlzYWJsZWQsIGZ1bGwgQlcgKH43MjBIeikgKi8NCj4gPiA+ICsJWzFd ID0gMzYwLA0KPiA+ID4gKwlbMl0gPSAxNjQsDQo+ID4gPiArCVszXSA9IDgwLA0KPiA+ID4gKwlb NF0gPSA0MCwNCj4gPiA+ICsJWzVdID0gMjAsDQo+ID4gPiArCVs2XSA9IDEwLA0KPiA+ID4gKwlb N10gPSAxMCwgLyogbm90IGEgdmFsaWQgc2V0dGluZyAqLw0KPiA+ID4gK307DQo+ID4gPiArDQo+ ID4gPiArc3RhdGljIGludCBhZGlzMTY0NzVfZ2V0X2ZpbHRlcihzdHJ1Y3QgYWRpczE2NDc1ICpz dCwgdTMyDQo+ID4gPiAqZmlsdGVyKQ0KPiA+ID4gK3sNCj4gPiA+ICsJdTE2IGZpbHRlcl9zejsN Cj4gPiA+ICsJaW50IHJldDsNCj4gPiA+ICsJY29uc3QgaW50IG1hc2sgPSBBRElTMTY0NzVfRklM VF9DVFJMX01BU0s7DQo+ID4gPiArDQo+ID4gPiArCXJldCA9IGFkaXNfcmVhZF9yZWdfMTYoJnN0 LT5hZGlzLCBBRElTMTY0NzVfUkVHX0ZJTFRfQ1RSTCwNCj4gPiA+ICZmaWx0ZXJfc3opOw0KPiA+ ID4gKwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJKmZp bHRlciA9IGFkaXMxNjQ3NV8zZGJfZnJlcXNbZmlsdGVyX3N6ICYgbWFza107DQo+ID4gPiArDQo+ ID4gPiArCXJldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW50IGFk aXMxNjQ3NV9zZXRfZmlsdGVyKHN0cnVjdCBhZGlzMTY0NzUgKnN0LCBjb25zdCB1MzINCj4gPiA+ IGZpbHRlcikNCj4gPiA+ICt7DQo+ID4gPiArCWludCBpOw0KPiA+ID4gKw0KPiA+ID4gKwlmb3Ig KGkgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV8zZGJfZnJlcXMpIC0gMTsgaSA+PSAxOyBpLS0pIHsN Cj4gPiA+ICsJCWlmIChhZGlzMTY0NzVfM2RiX2ZyZXFzW2ldID49IGZpbHRlcikNCj4gPiA+ICsJ CQlicmVhazsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gYWRpc193cml0ZV9y ZWdfMTYoJnN0LT5hZGlzLCBBRElTMTY0NzVfUkVHX0ZJTFRfQ1RSTCwNCj4gPiA+ICsJCQkJIEFE SVMxNjQ3NV9GSUxUX0NUUkwoaSkpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMg Y29uc3QgdTMyIGFkaXMxNjQ3NV9jYWxpYl9yZWdzW10gPSB7DQo+ID4gPiArCVtBRElTMTY0NzVf U0NBTl9HWVJPX1hdID0gQURJUzE2NDc1X1JFR19YX0dZUk9fQklBU19MLA0KPiA+ID4gKwlbQURJ UzE2NDc1X1NDQU5fR1lST19ZXSA9IEFESVMxNjQ3NV9SRUdfWV9HWVJPX0JJQVNfTCwNCj4gPiA+ ICsJW0FESVMxNjQ3NV9TQ0FOX0dZUk9fWl0gPSBBRElTMTY0NzVfUkVHX1pfR1lST19CSUFTX0ws DQo+ID4gPiArCVtBRElTMTY0NzVfU0NBTl9BQ0NFTF9YXSA9IEFESVMxNjQ3NV9SRUdfWF9BQ0NF TF9CSUFTX0wsDQo+ID4gPiArCVtBRElTMTY0NzVfU0NBTl9BQ0NFTF9ZXSA9IEFESVMxNjQ3NV9S RUdfWV9BQ0NFTF9CSUFTX0wsDQo+ID4gPiArCVtBRElTMTY0NzVfU0NBTl9BQ0NFTF9aXSA9IEFE SVMxNjQ3NV9SRUdfWl9BQ0NFTF9CSUFTX0wsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtz dGF0aWMgaW50IGFkaXMxNjQ3NV9yZWFkX3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0K PiA+ID4gKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjICpjaGFuLA0KPiA+ID4g KwkJCSAgICAgIGludCAqdmFsLCBpbnQgKnZhbDIsIGxvbmcgaW5mbykNCj4gPiA+ICt7DQo+ID4g PiArCXN0cnVjdCBhZGlzMTY0NzUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gPiA+ICsJ aW50IHJldDsNCj4gPiA+ICsJdTMyIHRtcDsNCj4gPiA+ICsNCj4gPiA+ICsJc3dpdGNoIChpbmZv KSB7DQo+ID4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19SQVc6DQo+ID4gPiArCQlyZXR1cm4gYWRp c19zaW5nbGVfY29udmVyc2lvbihpbmRpb19kZXYsIGNoYW4sIDAsIHZhbCk7DQo+ID4gPiArCWNh c2UgSUlPX0NIQU5fSU5GT19TQ0FMRToNCj4gPiA+ICsJCXN3aXRjaCAoY2hhbi0+dHlwZSkgew0K PiA+ID4gKwkJY2FzZSBJSU9fQU5HTF9WRUw6DQo+ID4gPiArCQkJKnZhbCA9IHN0LT5pbmZvLT5n eXJvX21heF92YWw7DQo+ID4gPiArCQkJKnZhbDIgPSBzdC0+aW5mby0+Z3lyb19tYXhfc2NhbGU7 DQo+ID4gPiArCQkJcmV0dXJuIElJT19WQUxfRlJBQ1RJT05BTDsNCj4gPiA+ICsJCWNhc2UgSUlP X0FDQ0VMOg0KPiA+ID4gKwkJCSp2YWwgPSBzdC0+aW5mby0+YWNjZWxfbWF4X3ZhbDsNCj4gPiA+ ICsJCQkqdmFsMiA9IHN0LT5pbmZvLT5hY2NlbF9tYXhfc2NhbGU7DQo+ID4gPiArCQkJcmV0dXJu IElJT19WQUxfRlJBQ1RJT05BTDsNCj4gPiA+ICsJCWNhc2UgSUlPX1RFTVA6DQo+ID4gPiArCQkJ KnZhbCA9IHN0LT5pbmZvLT50ZW1wX3NjYWxlOw0KPiA+ID4gKwkJCXJldHVybiBJSU9fVkFMX0lO VDsNCj4gPiA+ICsJCWRlZmF1bHQ6DQo+ID4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiAr CQl9DQo+ID4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19DQUxJQkJJQVM6DQo+ID4gPiArCQlyZXQg PSBhZGlzX3JlYWRfcmVnXzMyKCZzdC0+YWRpcywNCj4gPiA+ICsJCQkJICAgICAgIGFkaXMxNjQ3 NV9jYWxpYl9yZWdzW2NoYW4tDQo+ID4gPiA+IHNjYW5faW5kZXhdLA0KPiA+ID4gKwkJCQkgICAg ICAgdmFsKTsNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ID4gKwljYXNlIElJT19DSEFOX0lORk9fTE9X X1BBU1NfRklMVEVSXzNEQl9GUkVRVUVOQ1k6DQo+ID4gPiArCQlyZXQgPSBhZGlzMTY0NzVfZ2V0 X2ZpbHRlcihzdCwgdmFsKTsNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ID4gKwljYXNlIElJT19DSEFO X0lORk9fU0FNUF9GUkVROg0KPiA+ID4gKwkJcmV0ID0gYWRpczE2NDc1X2dldF9mcmVxKHN0LCAm dG1wKTsNCj4gPiA+ICsJCWlmIChyZXQpDQo+ID4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiA+ICsN Cj4gPiA+ICsJCSp2YWwgPSB0bXAgLyAxMDAwOw0KPiA+ID4gKwkJKnZhbDIgPSAodG1wICUgMTAw MCkgKiAxMDAwOw0KPiA+ID4gKwkJcmV0dXJuIElJT19WQUxfSU5UX1BMVVNfTUlDUk87DQo+ID4g PiArCWRlZmF1bHQ6DQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ICsJfQ0KPiA+ID4g Kw0KPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiANCj4gPiBCZXR0 ZXIgdG8gcHV0IHRoaXMgaW5saW5lIGFmdGVyIGVhY2ggcmV0ID0gc2VjdGlvbiBhbmQgcmV0dXJu DQo+ID4gZGlyZWN0bHkgZnJvbSB0aG9zZS4NCj4gPiBBcyBpdCBzdGFuZHMgdGhlIGNvZGUgcGF0 aHMgYXJlIHJhdGhlciBpbmNvbnNpc3RlbnQuDQo+IA0KPiBHb3QgaXQuLi4NCj4gDQo+ID4gPiAr DQo+ID4gPiArCXJldHVybiBJSU9fVkFMX0lOVDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAr c3RhdGljIGludCBhZGlzMTY0NzVfd3JpdGVfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYs DQo+ID4gPiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjICpjaGFuLA0KPiA+ ID4gKwkJCSAgICAgICBpbnQgdmFsLCBpbnQgdmFsMiwgbG9uZyBpbmZvKQ0KPiA+ID4gK3sNCj4g PiA+ICsJc3RydWN0IGFkaXMxNjQ3NSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiA+ID4g Kwl1MzIgdG1wOw0KPiA+ID4gKw0KPiA+ID4gKwlzd2l0Y2ggKGluZm8pIHsNCj4gPiA+ICsJY2Fz ZSBJSU9fQ0hBTl9JTkZPX1NBTVBfRlJFUToNCj4gPiA+ICsJCXRtcCA9IHZhbCAqIDEwMDAgKyB2 YWwyIC8gMTAwMDsNCj4gPiA+ICsJCXJldHVybiBhZGlzMTY0NzVfc2V0X2ZyZXEoc3QsIHRtcCk7 DQo+ID4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19MT1dfUEFTU19GSUxURVJfM0RCX0ZSRVFVRU5D WToNCj4gPiA+ICsJCXJldHVybiBhZGlzMTY0NzVfc2V0X2ZpbHRlcihzdCwgdmFsKTsNCj4gPiA+ ICsJY2FzZSBJSU9fQ0hBTl9JTkZPX0NBTElCQklBUzoNCj4gPiA+ICsJCXJldHVybiBhZGlzX3dy aXRlX3JlZ18zMigmc3QtPmFkaXMsDQo+ID4gPiArCQkJCQkgYWRpczE2NDc1X2NhbGliX3JlZ3Nb Y2hhbi0NCj4gPiA+ID4gc2Nhbl9pbmRleF0sDQo+ID4gPiArCQkJCQkgdmFsKTsNCj4gPiA+ICsJ ZGVmYXVsdDoNCj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gKwl9DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgQURJUzE2NDc1X01PRF9DSEFOKF90eXBlLCBfbW9kLCBf YWRkcmVzcywgX3NpLCBfcl9iaXRzLA0KPiA+ID4gX3NfYml0cykgXA0KPiA+ID4gKwl7IFwNCj4g PiA+ICsJCS50eXBlID0gKF90eXBlKSwgXA0KPiA+ID4gKwkJLm1vZGlmaWVkID0gMSwgXA0KPiA+ ID4gKwkJLmNoYW5uZWwyID0gKF9tb2QpLCBcDQo+ID4gPiArCQkuaW5mb19tYXNrX3NlcGFyYXRl ID0gQklUKElJT19DSEFOX0lORk9fUkFXKSB8IFwNCj4gPiA+ICsJCQlCSVQoSUlPX0NIQU5fSU5G T19DQUxJQkJJQVMpLCBcDQo+ID4gPiArCQkuaW5mb19tYXNrX3NoYXJlZF9ieV90eXBlID0gQklU KElJT19DSEFOX0lORk9fU0NBTEUpLCBcDQo+ID4gPiArCQkuaW5mb19tYXNrX3NoYXJlZF9ieV9h bGwgPSBCSVQoSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVEpDQo+ID4gPiA+IFwNCj4gPiA+ICsJCQlC SVQoSUlPX0NIQU5fSU5GT19MT1dfUEFTU19GSUxURVJfM0RCX0ZSRVFVRU5DWQ0KPiA+ID4gKSwg XA0KPiA+ID4gKwkJLmFkZHJlc3MgPSAoX2FkZHJlc3MpLCBcDQo+ID4gPiArCQkuc2Nhbl9pbmRl eCA9IChfc2kpLCBcDQo+ID4gPiArCQkuc2Nhbl90eXBlID0geyBcDQo+ID4gPiArCQkJLnNpZ24g PSAncycsIFwNCj4gPiA+ICsJCQkucmVhbGJpdHMgPSAoX3JfYml0cyksIFwNCj4gPiA+ICsJCQku c3RvcmFnZWJpdHMgPSAoX3NfYml0cyksIFwNCj4gPiA+ICsJCQkuZW5kaWFubmVzcyA9IElJT19C RSwgXA0KPiA+ID4gKwkJfSwgXA0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBB RElTMTY0NzVfR1lST19DSEFOTkVMKF9tb2QpIFwNCj4gPiA+ICsJQURJUzE2NDc1X01PRF9DSEFO KElJT19BTkdMX1ZFTCwgSUlPX01PRF8gIyMgX21vZCwgXA0KPiA+ID4gKwlBRElTMTY0NzVfUkVH XyAjIyBfbW9kICMjIF9HWVJPX0wsIEFESVMxNjQ3NV9TQ0FOX0dZUk9fICMjDQo+ID4gPiBfbW9k LCAzMiwgXA0KPiA+ID4gKwkzMikNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIEFESVMxNjQ3NV9B Q0NFTF9DSEFOTkVMKF9tb2QpIFwNCj4gPiA+ICsJQURJUzE2NDc1X01PRF9DSEFOKElJT19BQ0NF TCwgSUlPX01PRF8gIyMgX21vZCwgXA0KPiA+ID4gKwlBRElTMTY0NzVfUkVHXyAjIyBfbW9kICMj IF9BQ0NFTF9MLCBBRElTMTY0NzVfU0NBTl9BQ0NFTF8gIyMNCj4gPiA+IF9tb2QsIDMyLCBcDQo+ ID4gPiArCTMyKQ0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgQURJUzE2NDc1X1RFTVBfQ0hBTk5F TCgpIHsgXA0KPiA+ID4gKwkJLnR5cGUgPSBJSU9fVEVNUCwgXA0KPiA+ID4gKwkJLmluZGV4ZWQg PSAxLCBcDQo+ID4gPiArCQkuY2hhbm5lbCA9IDAsIFwNCj4gPiA+ICsJCS5pbmZvX21hc2tfc2Vw YXJhdGUgPSBCSVQoSUlPX0NIQU5fSU5GT19SQVcpIHwgXA0KPiA+ID4gKwkJCUJJVChJSU9fQ0hB Tl9JTkZPX1NDQUxFKSwgXA0KPiA+ID4gKwkJLmluZm9fbWFza19zaGFyZWRfYnlfYWxsID0gQklU KElJT19DSEFOX0lORk9fU0FNUF9GUkVRKQ0KPiA+ID4gPiBcDQo+ID4gPiArCQkJQklUKElJT19D SEFOX0lORk9fTE9XX1BBU1NfRklMVEVSXzNEQl9GUkVRVUVOQ1kNCj4gPiA+ICksIFwNCj4gPiA+ ICsJCS5hZGRyZXNzID0gQURJUzE2NDc1X1JFR19URU1QX09VVCwgXA0KPiA+ID4gKwkJLnNjYW5f aW5kZXggPSBBRElTMTY0NzVfU0NBTl9URU1QLCBcDQo+ID4gPiArCQkuc2Nhbl90eXBlID0geyBc DQo+ID4gPiArCQkJLnNpZ24gPSAncycsIFwNCj4gPiA+ICsJCQkucmVhbGJpdHMgPSAxNiwgXA0K PiA+ID4gKwkJCS5zdG9yYWdlYml0cyA9IDE2LCBcDQo+ID4gPiArCQkJLmVuZGlhbm5lc3MgPSBJ SU9fQkUsIFwNCj4gPiA+ICsJCX0sIFwNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBhZGlzMTY0NzVfY2hhbm5lbHNbXSA9IHsNCj4g PiA+ICsJQURJUzE2NDc1X0dZUk9fQ0hBTk5FTChYKSwNCj4gPiA+ICsJQURJUzE2NDc1X0dZUk9f Q0hBTk5FTChZKSwNCj4gPiA+ICsJQURJUzE2NDc1X0dZUk9fQ0hBTk5FTChaKSwNCj4gPiA+ICsJ QURJUzE2NDc1X0FDQ0VMX0NIQU5ORUwoWCksDQo+ID4gPiArCUFESVMxNjQ3NV9BQ0NFTF9DSEFO TkVMKFkpLA0KPiA+ID4gKwlBRElTMTY0NzVfQUNDRUxfQ0hBTk5FTChaKSwNCj4gPiA+ICsJQURJ UzE2NDc1X1RFTVBfQ0hBTk5FTCgpLA0KPiA+ID4gKwlJSU9fQ0hBTl9TT0ZUX1RJTUVTVEFNUCg5 KQ0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArZW51bSBhZGlzMTY0NzVfdmFyaWFudCB7DQo+ ID4gPiArCUFESVMxNjQ3MCwNCj4gPiA+ICsJQURJUzE2NDc1XzEsDQo+ID4gPiArCUFESVMxNjQ3 NV8yLA0KPiA+ID4gKwlBRElTMTY0NzVfMywNCj4gPiA+ICsJQURJUzE2NDc3XzEsDQo+ID4gPiAr CUFESVMxNjQ3N18yLA0KPiA+ID4gKwlBRElTMTY0NzdfMywNCj4gPiA+ICsJQURJUzE2NDY1XzEs DQo+ID4gPiArCUFESVMxNjQ2NV8yLA0KPiA+ID4gKwlBRElTMTY0NjVfMywNCj4gPiA+ICsJQURJ UzE2NDY3XzEsDQo+ID4gPiArCUFESVMxNjQ2N18yLA0KPiA+ID4gKwlBRElTMTY0NjdfMywNCj4g PiA+ICsJQURJUzE2NTAwLA0KPiA+ID4gKwlBRElTMTY1MDVfMSwNCj4gPiA+ICsJQURJUzE2NTA1 XzIsDQo+ID4gPiArCUFESVMxNjUwNV8zLA0KPiA+ID4gKwlBRElTMTY1MDdfMSwNCj4gPiA+ICsJ QURJUzE2NTA3XzIsDQo+ID4gPiArCUFESVMxNjUwN18zLA0KPiA+ID4gKw0KPiA+ID4gK307DQo+ ID4gPiArDQo+ID4gPiArZW51bSB7DQo+ID4gPiArCUFESVMxNjQ3NV9ESUFHX1NUQVRfREFUQV9Q QVRIID0gMSwNCj4gPiA+ICsJQURJUzE2NDc1X0RJQUdfU1RBVF9GTEFTSF9NRU0sDQo+ID4gPiAr CUFESVMxNjQ3NV9ESUFHX1NUQVRfU1BJLA0KPiA+ID4gKwlBRElTMTY0NzVfRElBR19TVEFUX1NU QU5EQlksDQo+ID4gPiArCUFESVMxNjQ3NV9ESUFHX1NUQVRfU0VOU09SLA0KPiA+ID4gKwlBRElT MTY0NzVfRElBR19TVEFUX01FTU9SWSwNCj4gPiA+ICsJQURJUzE2NDc1X0RJQUdfU1RBVF9DTEss DQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFk aXMxNjQ3NV9zdGF0dXNfZXJyb3JfbXNnc1tdID0gew0KPiA+ID4gKwlbQURJUzE2NDc1X0RJQUdf U1RBVF9EQVRBX1BBVEhdID0gIkRhdGEgUGF0aCBPdmVycnVuIiwNCj4gPiA+ICsJW0FESVMxNjQ3 NV9ESUFHX1NUQVRfRkxBU0hfTUVNXSA9ICJGbGFzaCBtZW1vcnkgdXBkYXRlDQo+ID4gPiBmYWls dXJlIiwNCj4gPiA+ICsJW0FESVMxNjQ3NV9ESUFHX1NUQVRfU1BJXSA9ICJTUEkgY29tbXVuaWNh dGlvbiBlcnJvciIsDQo+ID4gPiArCVtBRElTMTY0NzVfRElBR19TVEFUX1NUQU5EQlldID0gIlN0 YW5kYnkgbW9kZSIsDQo+ID4gPiArCVtBRElTMTY0NzVfRElBR19TVEFUX1NFTlNPUl0gPSAiU2Vu c29yIGZhaWx1cmUiLA0KPiA+ID4gKwlbQURJUzE2NDc1X0RJQUdfU1RBVF9NRU1PUlldID0gIk1l bW9yeSBmYWlsdXJlIiwNCj4gPiA+ICsJW0FESVMxNjQ3NV9ESUFHX1NUQVRfQ0xLXSA9ICJDbG9j ayBlcnJvciIsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgaW50IGFkaXMxNjQ3 NV9lbmFibGVfaXJxKHN0cnVjdCBhZGlzICphZGlzLCBib29sIGVuYWJsZSkNCj4gPiA+ICt7DQo+ ID4gPiArCS8qDQo+ID4gPiArCSAqIFRoZXJlIGlzIG5vIHdheSB0byBnYXRlIHRoZSBkYXRhLXJl YWR5IHNpZ25hbCBpbnRlcm5hbGx5DQo+ID4gPiBpbnNpZGUgdGhlDQo+ID4gPiArCSAqIEFESVMx NjQ3NS4gV2UgY2FuIG9ubHkgY29udHJvbCBpdCdzIHBvbGFyaXR5Li4uDQo+ID4gPiArCSAqLw0K PiA+ID4gKwlpZiAoZW5hYmxlKQ0KPiA+ID4gKwkJZW5hYmxlX2lycShhZGlzLT5zcGktPmlycSk7 DQo+ID4gPiArCWVsc2UNCj4gPiA+ICsJCWRpc2FibGVfaXJxKGFkaXMtPnNwaS0+aXJxKTsNCj4g PiA+ICsNCj4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKyNkZWZp bmUgQURJUzE2NDc1X0RBVEEoX3Byb2RfaWQsIF90aW1lb3V0cykJCQkNCj4gPiA+IAlcDQo+ID4g PiArewkJCQkJCQkJDQo+ID4gPiAJDQo+ID4gPiBcDQo+ID4gPiArCS5tc2NfY3RybF9yZWcgPSBB RElTMTY0NzVfUkVHX01TR19DVFJMLAkJCQkNCj4gPiA+IFwNCj4gPiA+ICsJLmdsb2JfY21kX3Jl ZyA9IEFESVMxNjQ3NV9SRUdfR0xPQl9DTUQsCQkJCQ0KPiA+ID4gXA0KPiA+ID4gKwkuZGlhZ19z dGF0X3JlZyA9IEFESVMxNjQ3NV9SRUdfRElBR19TVEFULAkJCVwNCj4gPiA+ICsJLnByb2RfaWRf cmVnID0gQURJUzE2NDc1X1JFR19QUk9EX0lELAkJCQkNCj4gPiA+IFwNCj4gPiA+ICsJLnByb2Rf aWQgPSAoX3Byb2RfaWQpLAkJCQkJCQ0KPiA+ID4gXA0KPiA+ID4gKwkuc2VsZl90ZXN0X21hc2sg PSBCSVQoMiksCQkJCQlcDQo+ID4gPiArCS5zZWxmX3Rlc3RfcmVnID0gQURJUzE2NDc1X1JFR19H TE9CX0NNRCwJCQlcDQo+ID4gPiArCS5jc19jaGFuZ2VfZGVsYXkgPSAxNiwJCQkJCQkNCj4gPiA+ IFwNCj4gPiA+ICsJLnJlYWRfZGVsYXkgPSA1LAkJCQkJCVwNCj4gPiA+ICsJLndyaXRlX2RlbGF5 ID0gNSwJCQkJCQlcDQo+ID4gPiArCS5zdGF0dXNfZXJyb3JfbXNncyA9IGFkaXMxNjQ3NV9zdGF0 dXNfZXJyb3JfbXNncywJCVwNCj4gPiA+ICsJLnN0YXR1c19lcnJvcl9tYXNrID0gQklUKEFESVMx NjQ3NV9ESUFHX1NUQVRfREFUQV9QQVRIKSB8CVwNCj4gPiA+ICsJCUJJVChBRElTMTY0NzVfRElB R19TVEFUX0ZMQVNIX01FTSkgfAkJCQ0KPiA+ID4gXA0KPiA+ID4gKwkJQklUKEFESVMxNjQ3NV9E SUFHX1NUQVRfU1BJKSB8CQkJCQ0KPiA+ID4gXA0KPiA+ID4gKwkJQklUKEFESVMxNjQ3NV9ESUFH X1NUQVRfU1RBTkRCWSkgfAkJCVwNCj4gPiA+ICsJCUJJVChBRElTMTY0NzVfRElBR19TVEFUX1NF TlNPUikgfAkJCVwNCj4gPiA+ICsJCUJJVChBRElTMTY0NzVfRElBR19TVEFUX01FTU9SWSkgfAkJ CVwNCj4gPiA+ICsJCUJJVChBRElTMTY0NzVfRElBR19TVEFUX0NMSyksCQkJCQ0KPiA+ID4gXA0K PiA+ID4gKwkuZW5hYmxlX2lycSA9IGFkaXMxNjQ3NV9lbmFibGVfaXJxLAkJCQlcDQo+ID4gPiAr CS50aW1lb3V0cyA9IChfdGltZW91dHMpLAkJCQkJXA0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFkaXMxNjQ3NV9jbGtzIGFkaXMxNjQ3NV9leHRfY2xrc1td ID0gew0KPiA+ID4gKwl7ICJzeW5jIiwgQURJUzE2NDc1X0NMS19PVVRQVVQsIDE5MDAsIDIxMDAg fSwNCj4gPiA+ICsJeyAiZGlyZWN0LXN5bmMiLCBBRElTMTY0NzVfQ0xLX0RJUkVDVCwgMTkwMCwg MjEwMCB9LA0KPiA+ID4gKwl7ICJzY2FsZWQtc3luYyIsIEFESVMxNjQ3NV9DTEtfU0NBTEVELCAx LCAxMjggfSwNCj4gPiA+ICsJeyAicHVsc2Utc3luYyIsIEFESVMxNjQ3NV9DTEtfUFVMU0UsIDEw MDAsIDIxMDAgfSwNCj4gPiANCj4gPiBSb2IgYWxyZWFkeSBjb21tZW50ZWQgb24gdGhpcyBzbyBJ J2xsIG5vdCBib3RoZXIgOikNCj4gDQo+IEkgd2lsbCBjaGFuZ2UgdGhlIG5hbWUgdG8gYWRpczE2 NDc1X3N5bmMuLi4NCj4gDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGFkaXNfdGltZW91dCBhZGlzMTY0NzVfdGltZW91dHMgPSB7DQo+ID4gPiArCS5yZXNl dF9tcyA9IDIwMCwNCj4gPiA+ICsJLnN3X3Jlc2V0X21zID0gMjAwLA0KPiA+ID4gKwkuc2VsZl90 ZXN0X21zID0gMjAsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGFkaXNfdGltZW91dCBhZGlzMTY1MHhfdGltZW91dHMgPSB7DQo+ID4gPiArCS5yZXNldF9t cyA9IDI2MCwNCj4gPiA+ICsJLnN3X3Jlc2V0X21zID0gMjYwLA0KPiA+ID4gKwkuc2VsZl90ZXN0 X21zID0gMzAsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGFkaXMxNjQ3NV9jaGlwX2luZm8gYWRpczE2NDc1X2NoaXBfaW5mb1tdID0NCj4gPiA+IHsNCj4g PiA+ICsJW0FESVMxNjQ3MF0gPSB7DQo+ID4gPiArCQkubnVtX2NoYW5uZWxzID0gQVJSQVlfU0la RShhZGlzMTY0NzVfY2hhbm5lbHMpLA0KPiA+ID4gKwkJLmNoYW5uZWxzID0gYWRpczE2NDc1X2No YW5uZWxzLA0KPiA+ID4gKwkJLmd5cm9fbWF4X3ZhbCA9IDEsDQo+ID4gPiArCQkuZ3lyb19tYXhf c2NhbGUgPSBJSU9fUkFEX1RPX0RFR1JFRSgxMCA8PCAxNiksDQo+ID4gPiArCQkuYWNjZWxfbWF4 X3ZhbCA9IDEsDQo+ID4gPiArCQkuYWNjZWxfbWF4X3NjYWxlID0gSUlPX01fU18yX1RPX0coODAw IDw8IDE2KSwNCj4gPiA+ICsJCS50ZW1wX3NjYWxlID0gMTAwLA0KPiA+ID4gKwkJLmludF9jbGsg PSAyMDAwLA0KPiA+ID4gKwkJLm1heF9kZWMgPSAxOTk5LA0KPiA+ID4gKwkJLmNsa3MgPSBhZGlz MTY0NzVfZXh0X2Nsa3MsDQo+ID4gPiArCQkubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3 NV9leHRfY2xrcyksDQo+ID4gPiArCQkuYWRpc19kYXRhID0gQURJUzE2NDc1X0RBVEEoMTY0NzAs DQo+ID4gPiAmYWRpczE2NDc1X3RpbWVvdXRzKSwNCj4gPiA+ICsJfSwNCj4gPiA+ICsJW0FESVMx NjQ3NV8xXSA9IHsNCj4gPiA+ICsJCS5udW1fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3 NV9jaGFubmVscyksDQo+ID4gPiArCQkuY2hhbm5lbHMgPSBhZGlzMTY0NzVfY2hhbm5lbHMsDQo+ ID4gPiArCQkuZ3lyb19tYXhfdmFsID0gMSwNCj4gPiA+ICsJCS5neXJvX21heF9zY2FsZSA9IElJ T19SQURfVE9fREVHUkVFKDE2MCA8PCAxNiksDQo+ID4gPiArCQkuYWNjZWxfbWF4X3ZhbCA9IDEs DQo+ID4gPiArCQkuYWNjZWxfbWF4X3NjYWxlID0gSUlPX01fU18yX1RPX0coNDAwMCA8PCAxNiks DQo+ID4gPiArCQkudGVtcF9zY2FsZSA9IDEwMCwNCj4gPiA+ICsJCS5pbnRfY2xrID0gMjAwMCwN Cj4gPiA+ICsJCS5tYXhfZGVjID0gMTk5OSwNCj4gPiA+ICsJCS5jbGtzID0gYWRpczE2NDc1X2V4 dF9jbGtzLA0KPiA+ID4gKwkJLm51bV9jbGtzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfZXh0X2Ns a3MpLA0KPiA+ID4gKwkJLmFkaXNfZGF0YSA9IEFESVMxNjQ3NV9EQVRBKDE2NDc1LA0KPiA+ID4g JmFkaXMxNjQ3NV90aW1lb3V0cyksDQo+ID4gPiArCX0sDQo+ID4gPiArCVtBRElTMTY0NzVfMl0g PSB7DQo+ID4gPiArCQkubnVtX2NoYW5uZWxzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfY2hhbm5l bHMpLA0KPiA+ID4gKwkJLmNoYW5uZWxzID0gYWRpczE2NDc1X2NoYW5uZWxzLA0KPiA+ID4gKwkJ Lmd5cm9fbWF4X3ZhbCA9IDEsDQo+ID4gPiArCQkuZ3lyb19tYXhfc2NhbGUgPSBJSU9fUkFEX1RP X0RFR1JFRSg0MCA8PCAxNiksDQo+ID4gPiArCQkuYWNjZWxfbWF4X3ZhbCA9IDEsDQo+ID4gPiAr CQkuYWNjZWxfbWF4X3NjYWxlID0gSUlPX01fU18yX1RPX0coNDAwMCA8PCAxNiksDQo+ID4gPiAr CQkudGVtcF9zY2FsZSA9IDEwMCwNCj4gPiA+ICsJCS5pbnRfY2xrID0gMjAwMCwNCj4gPiA+ICsJ CS5tYXhfZGVjID0gMTk5OSwNCj4gPiA+ICsJCS5jbGtzID0gYWRpczE2NDc1X2V4dF9jbGtzLA0K PiA+ID4gKwkJLm51bV9jbGtzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfZXh0X2Nsa3MpLA0KPiA+ ID4gKwkJLmFkaXNfZGF0YSA9IEFESVMxNjQ3NV9EQVRBKDE2NDc1LA0KPiA+ID4gJmFkaXMxNjQ3 NV90aW1lb3V0cyksDQo+ID4gPiArCX0sDQo+ID4gPiArCVtBRElTMTY0NzVfM10gPSB7DQo+ID4g PiArCQkubnVtX2NoYW5uZWxzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfY2hhbm5lbHMpLA0KPiA+ ID4gKwkJLmNoYW5uZWxzID0gYWRpczE2NDc1X2NoYW5uZWxzLA0KPiA+ID4gKwkJLmd5cm9fbWF4 X3ZhbCA9IDEsDQo+ID4gPiArCQkuZ3lyb19tYXhfc2NhbGUgPSBJSU9fUkFEX1RPX0RFR1JFRSgx MCA8PCAxNiksDQo+ID4gPiArCQkuYWNjZWxfbWF4X3ZhbCA9IDEsDQo+ID4gPiArCQkuYWNjZWxf bWF4X3NjYWxlID0gSUlPX01fU18yX1RPX0coNDAwMCA8PCAxNiksDQo+ID4gPiArCQkudGVtcF9z Y2FsZSA9IDEwMCwNCj4gPiA+ICsJCS5pbnRfY2xrID0gMjAwMCwNCj4gPiA+ICsJCS5tYXhfZGVj ID0gMTk5OSwNCj4gPiA+ICsJCS5jbGtzID0gYWRpczE2NDc1X2V4dF9jbGtzLA0KPiA+ID4gKwkJ Lm51bV9jbGtzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfZXh0X2Nsa3MpLA0KPiA+ID4gKwkJLmFk aXNfZGF0YSA9IEFESVMxNjQ3NV9EQVRBKDE2NDc1LA0KPiA+ID4gJmFkaXMxNjQ3NV90aW1lb3V0 cyksDQo+ID4gPiArCX0sDQo+ID4gPiArCVtBRElTMTY0NzdfMV0gPSB7DQo+ID4gPiArCQkubnVt X2NoYW5uZWxzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfY2hhbm5lbHMpLA0KPiA+ID4gKwkJLmNo YW5uZWxzID0gYWRpczE2NDc1X2NoYW5uZWxzLA0KPiA+ID4gKwkJLmd5cm9fbWF4X3ZhbCA9IDEs DQo+ID4gPiArCQkuZ3lyb19tYXhfc2NhbGUgPSBJSU9fUkFEX1RPX0RFR1JFRSgxNjAgPDwgMTYp LA0KPiA+ID4gKwkJLmFjY2VsX21heF92YWwgPSAxLA0KPiA+ID4gKwkJLmFjY2VsX21heF9zY2Fs ZSA9IElJT19NX1NfMl9UT19HKDgwMCA8PCAxNiksDQo+ID4gPiArCQkudGVtcF9zY2FsZSA9IDEw MCwNCj4gPiA+ICsJCS5pbnRfY2xrID0gMjAwMCwNCj4gPiA+ICsJCS5tYXhfZGVjID0gMTk5OSwN Cj4gPiA+ICsJCS5jbGtzID0gYWRpczE2NDc1X2V4dF9jbGtzLA0KPiA+ID4gKwkJLm51bV9jbGtz ID0gQVJSQVlfU0laRShhZGlzMTY0NzVfZXh0X2Nsa3MpLA0KPiA+ID4gKwkJLmFkaXNfZGF0YSA9 IEFESVMxNjQ3NV9EQVRBKDE2NDc3LA0KPiA+ID4gJmFkaXMxNjQ3NV90aW1lb3V0cyksDQo+ID4g PiArCX0sDQo+ID4gPiArCVtBRElTMTY0NzdfMl0gPSB7DQo+ID4gPiArCQkubnVtX2NoYW5uZWxz ID0gQVJSQVlfU0laRShhZGlzMTY0NzVfY2hhbm5lbHMpLA0KPiA+ID4gKwkJLmNoYW5uZWxzID0g YWRpczE2NDc1X2NoYW5uZWxzLA0KPiA+ID4gKwkJLmd5cm9fbWF4X3ZhbCA9IDEsDQo+ID4gPiAr CQkuZ3lyb19tYXhfc2NhbGUgPSBJSU9fUkFEX1RPX0RFR1JFRSg0MCA8PCAxNiksDQo+ID4gPiAr CQkuYWNjZWxfbWF4X3ZhbCA9IDEsDQo+ID4gPiArCQkuYWNjZWxfbWF4X3NjYWxlID0gSUlPX01f U18yX1RPX0coODAwIDw8IDE2KSwNCj4gPiA+ICsJCS50ZW1wX3NjYWxlID0gMTAwLA0KPiA+ID4g KwkJLmludF9jbGsgPSAyMDAwLA0KPiA+ID4gKwkJLm1heF9kZWMgPSAxOTk5LA0KPiA+ID4gKwkJ LmNsa3MgPSBhZGlzMTY0NzVfZXh0X2Nsa3MsDQo+ID4gPiArCQkubnVtX2Nsa3MgPSBBUlJBWV9T SVpFKGFkaXMxNjQ3NV9leHRfY2xrcyksDQo+ID4gPiArCQkuYWRpc19kYXRhID0gQURJUzE2NDc1 X0RBVEEoMTY0NzcsDQo+ID4gPiAmYWRpczE2NDc1X3RpbWVvdXRzKSwNCj4gPiA+ICsJfSwNCj4g PiA+ICsJW0FESVMxNjQ3N18zXSA9IHsNCj4gPiA+ICsJCS5udW1fY2hhbm5lbHMgPSBBUlJBWV9T SVpFKGFkaXMxNjQ3NV9jaGFubmVscyksDQo+ID4gPiArCQkuY2hhbm5lbHMgPSBhZGlzMTY0NzVf Y2hhbm5lbHMsDQo+ID4gPiArCQkuZ3lyb19tYXhfdmFsID0gMSwNCj4gPiA+ICsJCS5neXJvX21h eF9zY2FsZSA9IElJT19SQURfVE9fREVHUkVFKDEwIDw8IDE2KSwNCj4gPiA+ICsJCS5hY2NlbF9t YXhfdmFsID0gMSwNCj4gPiA+ICsJCS5hY2NlbF9tYXhfc2NhbGUgPSBJSU9fTV9TXzJfVE9fRyg4 MDAgPDwgMTYpLA0KPiA+ID4gKwkJLnRlbXBfc2NhbGUgPSAxMDAsDQo+ID4gPiArCQkuaW50X2Ns ayA9IDIwMDAsDQo+ID4gPiArCQkubWF4X2RlYyA9IDE5OTksDQo+ID4gPiArCQkuY2xrcyA9IGFk aXMxNjQ3NV9leHRfY2xrcywNCj4gPiA+ICsJCS5udW1fY2xrcyA9IEFSUkFZX1NJWkUoYWRpczE2 NDc1X2V4dF9jbGtzKSwNCj4gPiA+ICsJCS5hZGlzX2RhdGEgPSBBRElTMTY0NzVfREFUQSgxNjQ3 NywNCj4gPiA+ICZhZGlzMTY0NzVfdGltZW91dHMpLA0KPiA+ID4gKwl9LA0KPiA+ID4gKwlbQURJ UzE2NDY1XzFdID0gew0KPiA+ID4gKwkJLm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoYWRpczE2 NDc1X2NoYW5uZWxzKSwNCj4gPiA+ICsJCS5jaGFubmVscyA9IGFkaXMxNjQ3NV9jaGFubmVscywN Cj4gPiA+ICsJCS5neXJvX21heF92YWwgPSAxLA0KPiA+ID4gKwkJLmd5cm9fbWF4X3NjYWxlID0g SUlPX1JBRF9UT19ERUdSRUUoMTYwIDw8IDE2KSwNCj4gPiA+ICsJCS5hY2NlbF9tYXhfdmFsID0g MSwNCj4gPiA+ICsJCS5hY2NlbF9tYXhfc2NhbGUgPSBJSU9fTV9TXzJfVE9fRyg0MDAwIDw8IDE2 KSwNCj4gPiA+ICsJCS50ZW1wX3NjYWxlID0gMTAwLA0KPiA+ID4gKwkJLmludF9jbGsgPSAyMDAw LA0KPiA+ID4gKwkJLm1heF9kZWMgPSAxOTk5LA0KPiA+ID4gKwkJLmNsa3MgPSBhZGlzMTY0NzVf ZXh0X2Nsa3MsDQo+ID4gPiArCQkubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9leHRf Y2xrcyksDQo+ID4gPiArCQkuYWRpc19kYXRhID0gQURJUzE2NDc1X0RBVEEoMTY0NjUsDQo+ID4g PiAmYWRpczE2NDc1X3RpbWVvdXRzKSwNCj4gPiA+ICsJfSwNCj4gPiA+ICsJW0FESVMxNjQ2NV8y XSA9IHsNCj4gPiA+ICsJCS5udW1fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9jaGFu bmVscyksDQo+ID4gPiArCQkuY2hhbm5lbHMgPSBhZGlzMTY0NzVfY2hhbm5lbHMsDQo+ID4gPiAr CQkuZ3lyb19tYXhfdmFsID0gMSwNCj4gPiA+ICsJCS5neXJvX21heF9zY2FsZSA9IElJT19SQURf VE9fREVHUkVFKDQwIDw8IDE2KSwNCj4gPiA+ICsJCS5hY2NlbF9tYXhfdmFsID0gMSwNCj4gPiA+ ICsJCS5hY2NlbF9tYXhfc2NhbGUgPSBJSU9fTV9TXzJfVE9fRyg0MDAwIDw8IDE2KSwNCj4gPiA+ ICsJCS50ZW1wX3NjYWxlID0gMTAwLA0KPiA+ID4gKwkJLmludF9jbGsgPSAyMDAwLA0KPiA+ID4g KwkJLm1heF9kZWMgPSAxOTk5LA0KPiA+ID4gKwkJLmNsa3MgPSBhZGlzMTY0NzVfZXh0X2Nsa3Ms DQo+ID4gPiArCQkubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9leHRfY2xrcyksDQo+ ID4gPiArCQkuYWRpc19kYXRhID0gQURJUzE2NDc1X0RBVEEoMTY0NjUsDQo+ID4gPiAmYWRpczE2 NDc1X3RpbWVvdXRzKSwNCj4gPiA+ICsJfSwNCj4gPiA+ICsJW0FESVMxNjQ2NV8zXSA9IHsNCj4g PiA+ICsJCS5udW1fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9jaGFubmVscyksDQo+ ID4gPiArCQkuY2hhbm5lbHMgPSBhZGlzMTY0NzVfY2hhbm5lbHMsDQo+ID4gPiArCQkuZ3lyb19t YXhfdmFsID0gMSwNCj4gPiA+ICsJCS5neXJvX21heF9zY2FsZSA9IElJT19SQURfVE9fREVHUkVF KDEwIDw8IDE2KSwNCj4gPiA+ICsJCS5hY2NlbF9tYXhfdmFsID0gMSwNCj4gPiA+ICsJCS5hY2Nl bF9tYXhfc2NhbGUgPSBJSU9fTV9TXzJfVE9fRyg0MDAwIDw8IDE2KSwNCj4gPiA+ICsJCS50ZW1w X3NjYWxlID0gMTAwLA0KPiA+ID4gKwkJLmludF9jbGsgPSAyMDAwLA0KPiA+ID4gKwkJLm1heF9k ZWMgPSAxOTk5LA0KPiA+ID4gKwkJLmNsa3MgPSBhZGlzMTY0NzVfZXh0X2Nsa3MsDQo+ID4gPiAr CQkubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9leHRfY2xrcyksDQo+ID4gPiArCQku YWRpc19kYXRhID0gQURJUzE2NDc1X0RBVEEoMTY0NjUsDQo+ID4gPiAmYWRpczE2NDc1X3RpbWVv dXRzKSwNCj4gPiA+ICsJfSwNCj4gPiA+ICsJW0FESVMxNjQ2N18xXSA9IHsNCj4gPiA+ICsJCS5u dW1fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9jaGFubmVscyksDQo+ID4gPiArCQku Y2hhbm5lbHMgPSBhZGlzMTY0NzVfY2hhbm5lbHMsDQo+ID4gPiArCQkuZ3lyb19tYXhfdmFsID0g MSwNCj4gPiA+ICsJCS5neXJvX21heF9zY2FsZSA9IElJT19SQURfVE9fREVHUkVFKDE2MCA8PCAx NiksDQo+ID4gPiArCQkuYWNjZWxfbWF4X3ZhbCA9IDEsDQo+ID4gPiArCQkuYWNjZWxfbWF4X3Nj YWxlID0gSUlPX01fU18yX1RPX0coODAwIDw8IDE2KSwNCj4gPiA+ICsJCS50ZW1wX3NjYWxlID0g MTAwLA0KPiA+ID4gKwkJLmludF9jbGsgPSAyMDAwLA0KPiA+ID4gKwkJLm1heF9kZWMgPSAxOTk5 LA0KPiA+ID4gKwkJLmNsa3MgPSBhZGlzMTY0NzVfZXh0X2Nsa3MsDQo+ID4gPiArCQkubnVtX2Ns a3MgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9leHRfY2xrcyksDQo+ID4gPiArCQkuYWRpc19kYXRh ID0gQURJUzE2NDc1X0RBVEEoMTY0NjcsDQo+ID4gPiAmYWRpczE2NDc1X3RpbWVvdXRzKSwNCj4g PiA+ICsJfSwNCj4gPiA+ICsJW0FESVMxNjQ2N18yXSA9IHsNCj4gPiA+ICsJCS5udW1fY2hhbm5l bHMgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9jaGFubmVscyksDQo+ID4gPiArCQkuY2hhbm5lbHMg PSBhZGlzMTY0NzVfY2hhbm5lbHMsDQo+ID4gPiArCQkuZ3lyb19tYXhfdmFsID0gMSwNCj4gPiA+ ICsJCS5neXJvX21heF9zY2FsZSA9IElJT19SQURfVE9fREVHUkVFKDQwIDw8IDE2KSwNCj4gPiA+ ICsJCS5hY2NlbF9tYXhfdmFsID0gMSwNCj4gPiA+ICsJCS5hY2NlbF9tYXhfc2NhbGUgPSBJSU9f TV9TXzJfVE9fRyg4MDAgPDwgMTYpLA0KPiA+ID4gKwkJLnRlbXBfc2NhbGUgPSAxMDAsDQo+ID4g PiArCQkuaW50X2NsayA9IDIwMDAsDQo+ID4gPiArCQkubWF4X2RlYyA9IDE5OTksDQo+ID4gPiAr CQkuY2xrcyA9IGFkaXMxNjQ3NV9leHRfY2xrcywNCj4gPiA+ICsJCS5udW1fY2xrcyA9IEFSUkFZ X1NJWkUoYWRpczE2NDc1X2V4dF9jbGtzKSwNCj4gPiA+ICsJCS5hZGlzX2RhdGEgPSBBRElTMTY0 NzVfREFUQSgxNjQ2NywNCj4gPiA+ICZhZGlzMTY0NzVfdGltZW91dHMpLA0KPiA+ID4gKwl9LA0K PiA+ID4gKwlbQURJUzE2NDY3XzNdID0gew0KPiA+ID4gKwkJLm51bV9jaGFubmVscyA9IEFSUkFZ X1NJWkUoYWRpczE2NDc1X2NoYW5uZWxzKSwNCj4gPiA+ICsJCS5jaGFubmVscyA9IGFkaXMxNjQ3 NV9jaGFubmVscywNCj4gPiA+ICsJCS5neXJvX21heF92YWwgPSAxLA0KPiA+ID4gKwkJLmd5cm9f bWF4X3NjYWxlID0gSUlPX1JBRF9UT19ERUdSRUUoMTAgPDwgMTYpLA0KPiA+ID4gKwkJLmFjY2Vs X21heF92YWwgPSAxLA0KPiA+ID4gKwkJLmFjY2VsX21heF9zY2FsZSA9IElJT19NX1NfMl9UT19H KDgwMCA8PCAxNiksDQo+ID4gPiArCQkudGVtcF9zY2FsZSA9IDEwMCwNCj4gPiA+ICsJCS5pbnRf Y2xrID0gMjAwMCwNCj4gPiA+ICsJCS5tYXhfZGVjID0gMTk5OSwNCj4gPiA+ICsJCS5jbGtzID0g YWRpczE2NDc1X2V4dF9jbGtzLA0KPiA+ID4gKwkJLm51bV9jbGtzID0gQVJSQVlfU0laRShhZGlz MTY0NzVfZXh0X2Nsa3MpLA0KPiA+ID4gKwkJLmFkaXNfZGF0YSA9IEFESVMxNjQ3NV9EQVRBKDE2 NDY3LA0KPiA+ID4gJmFkaXMxNjQ3NV90aW1lb3V0cyksDQo+ID4gPiArCX0sDQo+ID4gPiArCVtB RElTMTY1MDBdID0gew0KPiA+ID4gKwkJLm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoYWRpczE2 NDc1X2NoYW5uZWxzKSwNCj4gPiA+ICsJCS5jaGFubmVscyA9IGFkaXMxNjQ3NV9jaGFubmVscywN Cj4gPiA+ICsJCS5neXJvX21heF92YWwgPSAxLA0KPiA+ID4gKwkJLmd5cm9fbWF4X3NjYWxlID0g SUlPX1JBRF9UT19ERUdSRUUoMTAgPDwgMTYpLA0KPiA+ID4gKwkJLmFjY2VsX21heF92YWwgPSAz OTIsDQo+ID4gPiArCQkuYWNjZWxfbWF4X3NjYWxlID0gMzIwMDAgPDwgMTYsDQo+ID4gPiArCQku dGVtcF9zY2FsZSA9IDEwMCwNCj4gPiA+ICsJCS5pbnRfY2xrID0gMjAwMCwNCj4gPiA+ICsJCS5t YXhfZGVjID0gMTk5OSwNCj4gPiA+ICsJCS5jbGtzID0gYWRpczE2NDc1X2V4dF9jbGtzLA0KPiA+ ID4gKwkJLyogcHVsc2Ugc3luYyBub3Qgc3VwcG9ydGVkICovDQo+ID4gPiArCQkubnVtX2Nsa3Mg PSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9leHRfY2xrcykgLSAxLA0KPiA+ID4gKwkJLmhhc19idXJz dDMyID0gdHJ1ZSwNCj4gPiA+ICsJCS5hZGlzX2RhdGEgPSBBRElTMTY0NzVfREFUQSgxNjUwMCwN Cj4gPiA+ICZhZGlzMTY1MHhfdGltZW91dHMpLA0KPiA+ID4gKwl9LA0KPiA+ID4gKwlbQURJUzE2 NTA1XzFdID0gew0KPiA+ID4gKwkJLm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoYWRpczE2NDc1 X2NoYW5uZWxzKSwNCj4gPiA+ICsJCS5jaGFubmVscyA9IGFkaXMxNjQ3NV9jaGFubmVscywNCj4g PiA+ICsJCS5neXJvX21heF92YWwgPSAxLA0KPiA+ID4gKwkJLmd5cm9fbWF4X3NjYWxlID0gSUlP X1JBRF9UT19ERUdSRUUoMTYwIDw8IDE2KSwNCj4gPiA+ICsJCS5hY2NlbF9tYXhfdmFsID0gNzgs DQo+ID4gPiArCQkuYWNjZWxfbWF4X3NjYWxlID0gMzIwMDAgPDwgMTYsDQo+ID4gPiArCQkudGVt cF9zY2FsZSA9IDEwMCwNCj4gPiA+ICsJCS5pbnRfY2xrID0gMjAwMCwNCj4gPiA+ICsJCS5tYXhf ZGVjID0gMTk5OSwNCj4gPiA+ICsJCS5jbGtzID0gYWRpczE2NDc1X2V4dF9jbGtzLA0KPiA+ID4g KwkJLyogcHVsc2Ugc3luYyBub3Qgc3VwcG9ydGVkICovDQo+ID4gPiArCQkubnVtX2Nsa3MgPSBB UlJBWV9TSVpFKGFkaXMxNjQ3NV9leHRfY2xrcykgLSAxLA0KPiA+ID4gKwkJLmhhc19idXJzdDMy ID0gdHJ1ZSwNCj4gPiA+ICsJCS5hZGlzX2RhdGEgPSBBRElTMTY0NzVfREFUQSgxNjUwNSwNCj4g PiA+ICZhZGlzMTY1MHhfdGltZW91dHMpLA0KPiA+ID4gKwl9LA0KPiA+ID4gKwlbQURJUzE2NTA1 XzJdID0gew0KPiA+ID4gKwkJLm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoYWRpczE2NDc1X2No YW5uZWxzKSwNCj4gPiA+ICsJCS5jaGFubmVscyA9IGFkaXMxNjQ3NV9jaGFubmVscywNCj4gPiA+ ICsJCS5neXJvX21heF92YWwgPSAxLA0KPiA+ID4gKwkJLmd5cm9fbWF4X3NjYWxlID0gSUlPX1JB RF9UT19ERUdSRUUoNDAgPDwgMTYpLA0KPiA+ID4gKwkJLmFjY2VsX21heF92YWwgPSA3OCwNCj4g PiA+ICsJCS5hY2NlbF9tYXhfc2NhbGUgPSAzMjAwMCA8PCAxNiwNCj4gPiA+ICsJCS50ZW1wX3Nj YWxlID0gMTAwLA0KPiA+ID4gKwkJLmludF9jbGsgPSAyMDAwLA0KPiA+ID4gKwkJLm1heF9kZWMg PSAxOTk5LA0KPiA+ID4gKwkJLmNsa3MgPSBhZGlzMTY0NzVfZXh0X2Nsa3MsDQo+ID4gPiArCQkv KiBwdWxzZSBzeW5jIG5vdCBzdXBwb3J0ZWQgKi8NCj4gPiA+ICsJCS5udW1fY2xrcyA9IEFSUkFZ X1NJWkUoYWRpczE2NDc1X2V4dF9jbGtzKSAtIDEsDQo+ID4gPiArCQkuaGFzX2J1cnN0MzIgPSB0 cnVlLA0KPiA+ID4gKwkJLmFkaXNfZGF0YSA9IEFESVMxNjQ3NV9EQVRBKDE2NTA1LA0KPiA+ID4g JmFkaXMxNjUweF90aW1lb3V0cyksDQo+ID4gPiArCX0sDQo+ID4gPiArCVtBRElTMTY1MDVfM10g PSB7DQo+ID4gPiArCQkubnVtX2NoYW5uZWxzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfY2hhbm5l bHMpLA0KPiA+ID4gKwkJLmNoYW5uZWxzID0gYWRpczE2NDc1X2NoYW5uZWxzLA0KPiA+ID4gKwkJ Lmd5cm9fbWF4X3ZhbCA9IDEsDQo+ID4gPiArCQkuZ3lyb19tYXhfc2NhbGUgPSBJSU9fUkFEX1RP X0RFR1JFRSgxMCA8PCAxNiksDQo+ID4gPiArCQkuYWNjZWxfbWF4X3ZhbCA9IDc4LA0KPiA+ID4g KwkJLmFjY2VsX21heF9zY2FsZSA9IDMyMDAwIDw8IDE2LA0KPiA+ID4gKwkJLnRlbXBfc2NhbGUg PSAxMDAsDQo+ID4gPiArCQkuaW50X2NsayA9IDIwMDAsDQo+ID4gPiArCQkubWF4X2RlYyA9IDE5 OTksDQo+ID4gPiArCQkuY2xrcyA9IGFkaXMxNjQ3NV9leHRfY2xrcywNCj4gPiA+ICsJCS8qIHB1 bHNlIHN5bmMgbm90IHN1cHBvcnRlZCAqLw0KPiA+ID4gKwkJLm51bV9jbGtzID0gQVJSQVlfU0la RShhZGlzMTY0NzVfZXh0X2Nsa3MpIC0gMSwNCj4gPiA+ICsJCS5oYXNfYnVyc3QzMiA9IHRydWUs DQo+ID4gPiArCQkuYWRpc19kYXRhID0gQURJUzE2NDc1X0RBVEEoMTY1MDUsDQo+ID4gPiAmYWRp czE2NTB4X3RpbWVvdXRzKSwNCj4gPiA+ICsJfSwNCj4gPiA+ICsJW0FESVMxNjUwN18xXSA9IHsN Cj4gPiA+ICsJCS5udW1fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGFkaXMxNjQ3NV9jaGFubmVscyks DQo+ID4gPiArCQkuY2hhbm5lbHMgPSBhZGlzMTY0NzVfY2hhbm5lbHMsDQo+ID4gPiArCQkuZ3ly b19tYXhfdmFsID0gMSwNCj4gPiA+ICsJCS5neXJvX21heF9zY2FsZSA9IElJT19SQURfVE9fREVH UkVFKDE2MCA8PCAxNiksDQo+ID4gPiArCQkuYWNjZWxfbWF4X3ZhbCA9IDM5MiwNCj4gPiA+ICsJ CS5hY2NlbF9tYXhfc2NhbGUgPSAzMjAwMCA8PCAxNiwNCj4gPiA+ICsJCS50ZW1wX3NjYWxlID0g MTAwLA0KPiA+ID4gKwkJLmludF9jbGsgPSAyMDAwLA0KPiA+ID4gKwkJLm1heF9kZWMgPSAxOTk5 LA0KPiA+ID4gKwkJLmNsa3MgPSBhZGlzMTY0NzVfZXh0X2Nsa3MsDQo+ID4gPiArCQkvKiBwdWxz ZSBzeW5jIG5vdCBzdXBwb3J0ZWQgKi8NCj4gPiA+ICsJCS5udW1fY2xrcyA9IEFSUkFZX1NJWkUo YWRpczE2NDc1X2V4dF9jbGtzKSAtIDEsDQo+ID4gPiArCQkuaGFzX2J1cnN0MzIgPSB0cnVlLA0K PiA+ID4gKwkJLmFkaXNfZGF0YSA9IEFESVMxNjQ3NV9EQVRBKDE2NTA3LA0KPiA+ID4gJmFkaXMx NjUweF90aW1lb3V0cyksDQo+ID4gPiArCX0sDQo+ID4gPiArCVtBRElTMTY1MDdfMl0gPSB7DQo+ ID4gPiArCQkubnVtX2NoYW5uZWxzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfY2hhbm5lbHMpLA0K PiA+ID4gKwkJLmNoYW5uZWxzID0gYWRpczE2NDc1X2NoYW5uZWxzLA0KPiA+ID4gKwkJLmd5cm9f bWF4X3ZhbCA9IDEsDQo+ID4gPiArCQkuZ3lyb19tYXhfc2NhbGUgPSBJSU9fUkFEX1RPX0RFR1JF RSg0MCA8PCAxNiksDQo+ID4gPiArCQkuYWNjZWxfbWF4X3ZhbCA9IDM5MiwNCj4gPiA+ICsJCS5h Y2NlbF9tYXhfc2NhbGUgPSAzMjAwMCA8PCAxNiwNCj4gPiA+ICsJCS50ZW1wX3NjYWxlID0gMTAw LA0KPiA+ID4gKwkJLmludF9jbGsgPSAyMDAwLA0KPiA+ID4gKwkJLm1heF9kZWMgPSAxOTk5LA0K PiA+ID4gKwkJLmNsa3MgPSBhZGlzMTY0NzVfZXh0X2Nsa3MsDQo+ID4gPiArCQkvKiBwdWxzZSBz eW5jIG5vdCBzdXBwb3J0ZWQgKi8NCj4gPiA+ICsJCS5udW1fY2xrcyA9IEFSUkFZX1NJWkUoYWRp czE2NDc1X2V4dF9jbGtzKSAtIDEsDQo+ID4gPiArCQkuaGFzX2J1cnN0MzIgPSB0cnVlLA0KPiA+ ID4gKwkJLmFkaXNfZGF0YSA9IEFESVMxNjQ3NV9EQVRBKDE2NTA3LA0KPiA+ID4gJmFkaXMxNjUw eF90aW1lb3V0cyksDQo+ID4gPiArCX0sDQo+ID4gPiArCVtBRElTMTY1MDdfM10gPSB7DQo+ID4g PiArCQkubnVtX2NoYW5uZWxzID0gQVJSQVlfU0laRShhZGlzMTY0NzVfY2hhbm5lbHMpLA0KPiA+ ID4gKwkJLmNoYW5uZWxzID0gYWRpczE2NDc1X2NoYW5uZWxzLA0KPiA+ID4gKwkJLmd5cm9fbWF4 X3ZhbCA9IDEsDQo+ID4gPiArCQkuZ3lyb19tYXhfc2NhbGUgPSBJSU9fUkFEX1RPX0RFR1JFRSgx MCA8PCAxNiksDQo+ID4gPiArCQkuYWNjZWxfbWF4X3ZhbCA9IDM5MiwNCj4gPiA+ICsJCS5hY2Nl bF9tYXhfc2NhbGUgPSAzMjAwMCA8PCAxNiwNCj4gPiA+ICsJCS50ZW1wX3NjYWxlID0gMTAwLA0K PiA+ID4gKwkJLmludF9jbGsgPSAyMDAwLA0KPiA+ID4gKwkJLm1heF9kZWMgPSAxOTk5LA0KPiA+ ID4gKwkJLmNsa3MgPSBhZGlzMTY0NzVfZXh0X2Nsa3MsDQo+ID4gPiArCQkvKiBwdWxzZSBzeW5j IG5vdCBzdXBwb3J0ZWQgKi8NCj4gPiA+ICsJCS5udW1fY2xrcyA9IEFSUkFZX1NJWkUoYWRpczE2 NDc1X2V4dF9jbGtzKSAtIDEsDQo+ID4gPiArCQkuaGFzX2J1cnN0MzIgPSB0cnVlLA0KPiA+ID4g KwkJLmFkaXNfZGF0YSA9IEFESVMxNjQ3NV9EQVRBKDE2NTA3LA0KPiA+ID4gJmFkaXMxNjUweF90 aW1lb3V0cyksDQo+ID4gPiArCX0sDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGlpb19pbmZvIGFkaXMxNjQ3NV9pbmZvID0gew0KPiA+ID4gKwkucmVhZF9y YXcgPSAmYWRpczE2NDc1X3JlYWRfcmF3LA0KPiA+ID4gKwkud3JpdGVfcmF3ID0gJmFkaXMxNjQ3 NV93cml0ZV9yYXcsDQo+ID4gPiArCS51cGRhdGVfc2Nhbl9tb2RlID0gYWRpc191cGRhdGVfc2Nh bl9tb2RlLA0KPiA+ID4gKwkuYXR0cnMgPSAmYWRpczE2NDk1X2F0dHJpYnV0ZV9ncm91cCwNCj4g PiA+ICsJLmRlYnVnZnNfcmVnX2FjY2VzcyA9IGFkaXNfZGVidWdmc19yZWdfYWNjZXNzLA0KPiA+ ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHN0cnVjdCBhZGlzX2J1cnN0IGFkaXMxNjQ3 NV9idXJzdCA9IHsNCj4gPiA+ICsJLmVuID0gdHJ1ZSwNCj4gPiA+ICsJLnJlZ19jbWQgPSBBRElT MTY0NzVfUkVHX0dMT0JfQ01ELA0KPiA+ID4gKwkvKg0KPiA+ID4gKwkgKiBhZGlzX3VwZGF0ZV9z Y2FuX21vZGVfYnVyc3QoKSBzZXRzIHRoZSBidXJzdCBsZW5ndGggaW4NCj4gPiA+IHJlc3BlY3Qg d2l0aA0KPiA+ID4gKwkgKiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGFuZCBhbGxvY2F0ZXMgMTYg Yml0cyBmb3IgZWFjaC4NCj4gPiA+IEhvd2V2ZXIsDQo+ID4gPiArCSAqIGFkaXMxNjQ3eCBkZXZp Y2VzIGFsc28gbmVlZCBzcGFjZSBmb3IgRElBR19TVEFULCBEQVRBX0NOVFINCj4gPiA+IG9yDQo+ ID4gPiArCSAqIFRJTUVfU1RBTVAgKGRlcGVuZGluZyBvbiB0aGUgY2xvY2sgbW9kZSBidXQgZm9y IHVzIHRoZXNlDQo+ID4gPiBieXRlcyBhcmUNCj4gPiA+ICsJICogZG9uJ3QgY2FyZS4uLikgYW5k IENSQy4NCj4gPiA+ICsJICovDQo+ID4gPiArCS5leHRyYV9sZW4gPSAzICogc2l6ZW9mKHUxNiks DQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdTE2IGFkaXMxNjQ3NV92YWxpZGF0 ZV9jcmMoY29uc3QgdTggKmJ1ZmZlciwgY29uc3QgdTE2DQo+ID4gPiBjcmMsDQo+ID4gPiArCQkJ CSAgY29uc3QgYm9vbCBidXJzdDMyKQ0KPiA+ID4gK3sNCj4gPiA+ICsJaW50IGk7DQo+ID4gPiAr CXUxNiBfX2NyYyA9IDA7DQo+ID4gPiArDQo+ID4gPiArCS8qIGV4dHJhIDYgZWxlbWVudHMgZm9y IGxvdyBneXJvIGFuZCBhY2NlbCAqLw0KPiA+ID4gKwljb25zdCB1MTYgc3ogPSBidXJzdDMyID8g QURJUzE2NDc1X0JVUlNUX01BWF9EQVRBICsgNiA6DQo+ID4gPiArCQlBRElTMTY0NzVfQlVSU1Rf TUFYX0RBVEE7DQo+ID4gPiArDQo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBzeiAqIDIgLSAyOyBp KyspDQo+ID4gPiArCQlfX2NyYyArPSBidWZmZXJbaV07DQo+ID4gPiArDQo+ID4gPiArCXJldHVy biAoX19jcmMgIT0gY3JjKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGlycXJl dHVybl90IGFkaXMxNjQ3NV90cmlnZ2VyX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcCkNCj4gPiA+ ICt7DQo+ID4gPiArCXN0cnVjdCBpaW9fcG9sbF9mdW5jICpwZiA9IHA7DQo+ID4gPiArCXN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYgPSBwZi0+aW5kaW9fZGV2Ow0KPiA+ID4gKwlzdHJ1Y3QgYWRp czE2NDc1ICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4gPiArCXN0cnVjdCBhZGlzICph ZGlzID0gJnN0LT5hZGlzOw0KPiA+ID4gKwlpbnQgcmV0LCBiaXQsIGkgPSAwOw0KPiA+ID4gKwl1 MTYgY3JjLCBkYXRhW0FESVMxNjQ3NV9NQVhfU0NBTl9EQVRBXSwgKmJ1ZmZlciwgY3JjX3JlczsN Cj4gPiA+ICsJLyogb2Zmc2V0IHVudGlsIHRoZSBmaXJzdCBlbGVtZW50IGFmdGVyIGd5cm8gYW5k IGFjY2VsICovDQo+ID4gPiArCWNvbnN0IHU4IG9mZnNldCA9IHN0LT5idXJzdDMyID8gMTMgOiA3 Ow0KPiA+ID4gKw0KPiA+ID4gKwlyZXQgPSBzcGlfc3luYyhhZGlzLT5zcGksICZhZGlzLT5tc2cp Ow0KPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ ICsJYnVmZmVyID0gKHUxNiAqKWFkaXMtPmJ1ZmZlcjsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKCEo YWRpcy0+YnVyc3QgJiYgYWRpcy0+YnVyc3QtPmVuKSkNCj4gPiA+ICsJCWdvdG8gcHVzaF90b19i dWZmZXJzOw0KPiA+ID4gKw0KPiA+ID4gKwkvKiBXZSBhbHdheXMgdmFsaWRhdGUgdGhlIGNyYyB0 byBhdCBsZWFzdCBwcmludCBhIG1lc3NhZ2UgKi8NCj4gPiA+ICsJY3JjID0gZ2V0X3VuYWxpZ25l ZF9iZTE2KCZidWZmZXJbb2Zmc2V0ICsgMl0pOw0KPiA+ID4gKwljcmNfcmVzID0gYWRpczE2NDc1 X3ZhbGlkYXRlX2NyYygodTggKilhZGlzLT5idWZmZXIsIGNyYywNCj4gPiA+ICsJCQkJCSBzdC0+ YnVyc3QzMik7DQo+ID4gPiArCWlmIChjcmNfcmVzKQ0KPiA+ID4gKwkJZGV2X2VycigmYWRpcy0+ c3BpLT5kZXYsICJJbnZhbGlkIGNyY1xuIik7DQo+ID4gPiArDQo+ID4gPiArCWZvcl9lYWNoX3Nl dF9iaXQoYml0LCBpbmRpb19kZXYtPmFjdGl2ZV9zY2FuX21hc2ssDQo+ID4gPiArCQkJIGluZGlv X2Rldi0+bWFza2xlbmd0aCkgew0KPiA+ID4gKwkJLyoNCj4gPiA+ICsJCSAqIFdoZW4gYnVyc3Qg bW9kZSBpcyB1c2VkLCBzeXN0ZW0gZmxhZ3MgaXMgdGhlIGZpcnN0DQo+ID4gPiBkYXRhDQo+ID4g PiArCQkgKiBjaGFubmVsIGluIHRoZSBzZXF1ZW5jZSwgYnV0IHRoZSBzY2FuIGluZGV4IGlzIDcu DQo+ID4gPiArCQkgKi8NCj4gPiA+ICsJCXN3aXRjaCAoYml0KSB7DQo+ID4gPiArCQljYXNlIEFE SVMxNjQ3NV9TQ0FOX1RFTVA6DQo+ID4gPiArCQkJZGF0YVtpKytdID0gZ2V0X3VuYWxpZ25lZCgm YnVmZmVyW29mZnNldF0pOw0KPiA+ID4gKwkJCWJyZWFrOw0KPiA+ID4gKwkJY2FzZSBBRElTMTY0 NzVfU0NBTl9HWVJPX1ggLi4uIEFESVMxNjQ3NV9TQ0FOX0FDQ0VMX1o6DQo+ID4gPiArCQkJLyoN Cj4gPiA+ICsJCQkgKiBUaGUgZmlyc3QgMiBieXRlcyBvbiB0aGUgcmVjZWl2ZWQgZGF0YSBhcmUN Cj4gPiA+IHRoZQ0KPiA+ID4gKwkJCSAqIERJQUdfU1RBVCByZWcsIGhlbmNlIHRoZSArMSBvZmZz ZXQgaGVyZS4uLg0KPiA+ID4gKwkJCSAqLw0KPiA+ID4gKwkJCWlmIChzdC0+YnVyc3QzMikgew0K PiA+ID4gKwkJCQkvKiB1cHBlciAxNiAqLw0KPiA+ID4gKwkJCQlkYXRhW2krK10gPSBnZXRfdW5h bGlnbmVkKCZidWZmZXJbYml0ICoNCj4gPiA+IDIgKyAyXSk7DQo+ID4gPiArCQkJCS8qIGxvd2Vy IDE2ICovDQo+ID4gPiArCQkJCWRhdGFbaSsrXSA9IGdldF91bmFsaWduZWQoJmJ1ZmZlcltiaXQg Kg0KPiA+ID4gMiArIDFdKTsNCj4gPiA+ICsJCQl9IGVsc2Ugew0KPiA+ID4gKwkJCQlkYXRhW2kr K10gPSBnZXRfdW5hbGlnbmVkKCZidWZmZXJbYml0ICsNCj4gPiA+IDFdKTsNCj4gPiA+ICsJCQkJ LyogbG93ZXIgbm90IHVzZWQgKi8NCj4gPiA+ICsJCQkJZGF0YVtpKytdID0gMDsNCj4gPiA+ICsJ CQl9DQo+ID4gPiArCQkJYnJlYWs7DQo+ID4gPiArCQl9DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4g PiA+ICsJYnVmZmVyID0gZGF0YTsNCj4gPiA+ICsNCj4gPiA+ICtwdXNoX3RvX2J1ZmZlcnM6DQo+ ID4gPiArCWlpb19wdXNoX3RvX2J1ZmZlcnNfd2l0aF90aW1lc3RhbXAoaW5kaW9fZGV2LCBidWZm ZXIsIHBmLQ0KPiA+ID4gPiB0aW1lc3RhbXApOw0KPiA+IA0KPiA+IEknbSBub3Qgc3VyZSBkYXRh IGlzIHRoZSByaWdodCBzaXplLiAgSXQgbmVlZHMgdG8gaGF2ZSBzcGFjZSB0bw0KPiA+IGhhdmUN Cj4gPiBhbiBhbGlnbmVkDQo+ID4gdGltZXN0YW1wIGF0IHRoZSBlbmQuDQo+IA0KPiBXaWxsIGRv dWJsZSBjaGVjayB0aGlzLi4uIEhvbmVzdGx5IEkgZGlkIG5vdCBoYWQgdGhlIHRpbWVzdGFtcCBp bnRvDQo+IGFjY291bnQgc28gdGhlIHNpemUgaXMgcHJvYmFibHkgd3JvbmcuDQoNCkkgZ3Vlc3Mg eW91IGFyZSByaWdodC4gV2l0aCBhbGwgdGhlIGNoYW5uZWxzIGVuYWJsZWQgSSB0aGluayB3ZSBu ZWVkIGENCjQwIGJ5dGVzIGJ1ZmZlciBpbiBvcmRlciB0byBoYXZlIHRoZSBhbGlnbmVkIHRpbWVz dGFtcC4uLg0KDQo+ID4gPiArCWlpb190cmlnZ2VyX25vdGlmeV9kb25lKGluZGlvX2Rldi0+dHJp Zyk7DQo+ID4gPiArDQo+ID4gPiArCXJldHVybiBJUlFfSEFORExFRDsNCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiArc3RhdGljIHZvaWQgYWRpczE2NDc1X2Rpc2FibGVfY2xrKHZvaWQgKmRhdGEp DQo+ID4gPiArew0KPiA+ID4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoKHN0cnVjdCBjbGsgKilk YXRhKTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGludCBhZGlzMTY0NzVfY29u ZmlnX2V4dF9jbGsoc3RydWN0IGFkaXMxNjQ3NSAqc3QpDQo+ID4gPiArew0KPiA+ID4gKwlpbnQg cmV0Ow0KPiA+ID4gKwlpbnQgaTsNCj4gPiA+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnN0LT5h ZGlzLnNwaS0+ZGV2Ow0KPiA+ID4gKwljb25zdCBzdHJ1Y3QgYWRpczE2NDc1X2Nsa3MgKmV4dF9j bGtzID0gc3QtPmluZm8tPmNsa3M7DQo+ID4gPiArDQo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBz dC0+aW5mby0+bnVtX2Nsa3M7IGkrKykgew0KPiA+ID4gKwkJdTE2IG1vZGUgPSBBRElTMTY0NzVf RVhUX0NMSyhleHRfY2xrc1tpXS5jbGtfbW9kZSk7DQo+ID4gPiArCQlzdHJ1Y3QgY2xrICpjbGsg PSBkZXZtX2Nsa19nZXQoZGV2LCBleHRfY2xrc1tpXS5uYW1lKTsNCj4gPiA+ICsNCj4gPiA+ICsJ CWlmIChJU19FUlIoY2xrKSAmJiBQVFJfRVJSKGNsaykgIT0gLUVOT0VOVCkNCj4gPiA+ICsJCQly ZXR1cm4gUFRSX0VSUihjbGspOw0KPiA+ID4gKwkJZWxzZSBpZiAoSVNfRVJSKGNsaykpDQo+ID4g PiArCQkJY29udGludWU7DQo+ID4gPiArDQo+ID4gPiArCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFi bGUoY2xrKTsNCj4gPiA+ICsJCWlmIChyZXQpDQo+ID4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiA+ ICsNCj4gPiA+ICsJCXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsDQo+ID4gPiBh ZGlzMTY0NzVfZGlzYWJsZV9jbGssIGNsayk7DQo+ID4gPiArCQlpZiAocmV0KQ0KPiA+ID4gKwkJ CXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4gPiArCQlzdC0+Y2xrX2ZyZXEgPSBjbGtfZ2V0X3Jh dGUoY2xrKTsNCj4gPiA+ICsJCWlmIChzdC0+Y2xrX2ZyZXEgPCBleHRfY2xrc1tpXS5taW5fcmF0 ZSB8fA0KPiA+ID4gKwkJICAgIHN0LT5jbGtfZnJlcSA+IGV4dF9jbGtzW2ldLm1heF9yYXRlKSB7 DQo+ID4gPiArCQkJZGV2X2VycihkZXYsDQo+ID4gPiArCQkJCSJDbGsgcmF0ZToldSBub3QgaW4g YSB2YWxpZCByYW5nZTpbJXUNCj4gPiA+ICV1XVxuIiwNCj4gPiA+ICsJCQkJc3QtPmNsa19mcmVx LCBleHRfY2xrc1tpXS5taW5fcmF0ZSwNCj4gPiA+ICsJCQkJZXh0X2Nsa3NbaV0ubWF4X3JhdGUp Ow0KPiA+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gKwkJfQ0KPiA+ID4gKw0KPiA+ID4g KwkJaWYgKGV4dF9jbGtzW2ldLmNsa19tb2RlID09IEFESVMxNjQ3NV9DTEtfU0NBTEVEKSB7DQo+ ID4gPiArCQkJdTE2IHVwX3NjYWxlOw0KPiA+ID4gKwkJCXUzMiBzY2FsZWRfb3V0X2ZyZXEgPSAw Ow0KPiA+ID4gKwkJCS8qDQo+ID4gPiArCQkJICogSWYgd2UgYXJlIGluIHNjYWxlZCBtb2RlLCB3 ZSBtdXN0IGhhdmUgYW4NCj4gPiA+IHVwX3NjYWxlLg0KPiA+ID4gKwkJCSAqIEluIHNjYWxlZCBt b2RlIHRoZSBhbGxvd2FibGUgaW5wdXQgY2xvY2sNCj4gPiA+IHJhbmdlIGlzDQo+ID4gPiArCQkJ ICogMSBIeiB0byAxMjggSHosIGFuZCB0aGUgYWxsb3dhYmxlIG91dHB1dA0KPiA+ID4gcmFuZ2Ug aXMNCj4gPiA+ICsJCQkgKiAxOTAwIHRvIDIxMDAgSHouIEhlbmNlLCBhIHNjYWxlIG11c3QgYmUN Cj4gPiA+IGdpdmVuIHRvDQo+ID4gPiArCQkJICogZ2V0IHRoZSBhbGxvd2FibGUgb3V0cHV0Lg0K PiA+ID4gKwkJCSAqLw0KPiA+ID4gKwkJCWRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICJh ZGksc2NhbGVkLQ0KPiA+ID4gb3V0cHV0LWh6IiwNCj4gPiA+ICsJCQkJCQkgJnNjYWxlZF9vdXRf ZnJlcSk7DQo+ID4gPiArDQo+ID4gPiArCQkJaWYgKHNjYWxlZF9vdXRfZnJlcSA8IDE5MDAgfHwg c2NhbGVkX291dF9mcmVxID4NCj4gPiA+IDIxMDApIHsNCj4gPiA+ICsJCQkJZGV2X2VycihkZXYs DQo+ID4gPiArCQkJCQkiSW52YWxpZCB2YWx1ZToldSBmb3INCj4gPiA+IGFkaSxzY2FsZWQtb3V0 cHV0LWh6IiwNCj4gPiA+ICsJCQkJCXNjYWxlZF9vdXRfZnJlcSk7DQo+ID4gPiArCQkJCXJldHVy biAtRUlOVkFMOw0KPiA+ID4gKwkJCX0NCj4gPiA+ICsNCj4gPiA+ICsJCQl1cF9zY2FsZSA9IERJ Vl9ST1VORF9DTE9TRVNUKHNjYWxlZF9vdXRfZnJlcSwNCj4gPiA+ICsJCQkJCQkgICAgIHN0LT5j bGtfZnJlcSk7DQo+ID4gPiArDQo+ID4gPiArCQkJcmV0ID0gX19hZGlzX3dyaXRlX3JlZ18xNigm c3QtPmFkaXMsDQo+ID4gPiArCQkJCQkJICBBRElTMTY0NzVfQ0xLX1NDQUxFRCwNCj4gPiA+ICsJ CQkJCQkgIHVwX3NjYWxlKTsNCj4gPiA+ICsJCQlpZiAocmV0KQ0KPiA+ID4gKwkJCQlyZXR1cm4g cmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwkJCXN0LT5jbGtfZnJlcSA9IHNjYWxlZF9vdXRfZnJlcTsN Cj4gPiA+ICsJCX0NCj4gPiA+ICsJCS8qDQo+ID4gPiArCQkgKiBLZWVwIGluIG1pbmQgdGhhdCB0 aGUgbWFzayBmb3IgdGhlIGNsayBtb2RlcyBpbg0KPiA+ID4gYWRpczE2NTAqDQo+ID4gPiArCQkg KiBjaGlwcyBpcyBkaWZmZXJlbnQgKDExMDAgaW5zdGVhZCBvZiAxMTEwMCkuIEhvd2V2ZXIsDQo+ ID4gPiB3ZQ0KPiA+ID4gKwkJICogYXJlIG5vdCBjb25maWd1cmluZyBCSVQoNCkgaW4gdGhlc2Ug Y2hpcHMgYW5kIHRoZQ0KPiA+ID4gZGVmYXVsdA0KPiA+ID4gKwkJICogdmFsdWUgaXMgMCwgc28g d2UgYXJlIGZpbmUgaW4gZG9pbmcgdGhlIGJlbG93DQo+ID4gPiBvcGVyYXRpb25zLg0KPiA+ID4g KwkJICogSSdtIGtlZXBpbmcgdGhpcyBmb3Igc2ltcGxpY2l0eSBhbmQgYXZvaWRpbmcgZXh0cmEN Cj4gPiA+IHZhcmlhYmxlcw0KPiA+ID4gKwkJICogaW4gY2hpcF9pbmZvLg0KPiA+ID4gKwkJICov DQo+ID4gPiArCQlyZXQgPSBfX2FkaXNfdXBkYXRlX2JpdHMoJnN0LT5hZGlzLA0KPiA+ID4gQURJ UzE2NDc1X1JFR19NU0dfQ1RSTCwNCj4gPiA+ICsJCQkJCSBBRElTMTY0NzVfRVhUX0NMS19NQVNL LCBtb2RlKTsNCj4gPiA+ICsJCWlmIChyZXQpDQo+ID4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiA+ ICsNCj4gPiA+ICsJCXVzbGVlcF9yYW5nZSgyNTAsIDI2MCk7DQo+ID4gPiArDQo+ID4gPiArCQli cmVhazsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoaSA9PSBzdC0+aW5mby0+bnVt X2Nsa3MpDQo+ID4gPiArCQkvKiBpbnRlcm5hbCBjbGsgKi8NCj4gPiA+ICsJCXN0LT5jbGtfZnJl cSA9IHN0LT5pbmZvLT5pbnRfY2xrOw0KPiA+ID4gKw0KPiA+ID4gKwlzdC0+Y2xrX2ZyZXEgKj0g MTAwMDsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiArfQ0KPiA+ID4gDQo+ID4g PiArc3RhdGljIGludCBhZGlzMTY0NzVfY29uZmlnX2lycV9waW4oc3RydWN0IGFkaXMxNjQ3NSAq c3QpDQo+ID4gPiArew0KPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4gKwlzdHJ1Y3QgaXJxX2RhdGEg KmRlc2M7DQo+ID4gPiArCXUzMiBpcnFfdHlwZTsNCj4gPiA+ICsJdTE2IHZhbCA9IDA7DQo+ID4g PiArCXU4IHBvbGFyaXR5Ow0KPiA+ID4gKwlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpID0gc3QtPmFk aXMuc3BpOw0KPiA+ID4gKw0KPiA+ID4gKwlkZXNjID0gaXJxX2dldF9pcnFfZGF0YShzcGktPmly cSk7DQo+ID4gPiArCWlmICghZGVzYykgew0KPiA+ID4gKwkJZGV2X2Vycigmc3BpLT5kZXYsICJD b3VsZCBub3QgZmluZCBJUlEgJWRcbiIsIHNwaS0NCj4gPiA+ID4gaXJxKTsNCj4gPiA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+ID4gKwl9DQo+ID4gPiArCS8qDQo+ID4gPiArCSAqIEl0IGlzIHBv c3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgZGF0YSByZWFkeSBwb2xhcml0eS4NCj4gPiA+IEZ1cnRo ZXJtb3JlLCB3ZQ0KPiA+ID4gKwkgKiBuZWVkIHRvIHVwZGF0ZSB0aGUgYWRpcyBzdHJ1Y3QgaWYg d2Ugd2FudCBkYXRhIHJlYWR5IGFzDQo+ID4gPiBhY3RpdmUgbG93Lg0KPiA+ID4gKwkgKi8NCj4g PiA+ICsJaXJxX3R5cGUgPSBpcnFkX2dldF90cmlnZ2VyX3R5cGUoZGVzYyk7DQo+ID4gPiArCWlm IChpcnFfdHlwZSA9PSBJUlFGX1RSSUdHRVJfUklTSU5HKSB7DQo+ID4gPiArCQlwb2xhcml0eSA9 IDE7DQo+ID4gPiArCX0gZWxzZSBpZiAoaXJxX3R5cGUgPT0gSVJRRl9UUklHR0VSX0ZBTExJTkcp IHsNCj4gPiA+ICsJCXBvbGFyaXR5ID0gMDsNCj4gPiA+ICsJCXN0LT5hZGlzLmlycV9tYXNrID0g SVJRRl9UUklHR0VSX0ZBTExJTkc7DQo+ID4gPiArCX0gZWxzZSB7DQo+ID4gPiArCQlkZXZfZXJy KCZzcGktPmRldiwgIkludmFsaWQgaW50ZXJydXB0IHR5cGUgMHgleA0KPiA+ID4gc3BlY2lmaWVk XG4iLA0KPiA+ID4gKwkJCWlycV90eXBlKTsNCj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCXZhbCA9IEFESVMxNjQ3NV9NU0dfQ1RSTF9EUl9QT0wo cG9sYXJpdHkpOw0KPiA+ID4gKwlyZXQgPSBfX2FkaXNfdXBkYXRlX2JpdHMoJnN0LT5hZGlzLCBB RElTMTY0NzVfUkVHX01TR19DVFJMLA0KPiA+ID4gKwkJCQkgQURJUzE2NDc1X01TR19DVFJMX0RS X1BPTF9NQVNLLCB2YWwpOw0KPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsN Cj4gPiA+ICsJLyoNCj4gPiA+ICsJICogVGhlcmUgaXMgYSBkZWxheSB3cml0aW5nIHRvIGFueSBi aXRzIHdyaXR0ZW4gdG8gdGhlIE1TQ19DVFJMDQo+ID4gPiArCSAqIHJlZ2lzdGVyLiBJdCBzaG91 bGQgbm90IGJlIGJpZ2dlciB0aGFuIDIwMHVzLCBzbyAyNTAgc2hvdWxkDQo+ID4gPiBiZSBtb3Jl DQo+ID4gPiArCSAqIHRoYW4gZW5vdWdoIQ0KPiA+ID4gKwkgKi8NCj4gPiA+ICsJdXNsZWVwX3Jh bmdlKDI1MCwgMjYwKTsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgYWRpczE2NDc1X2J1cnN0X2NvbmZpZyhzdHJ1Y3QgYWRp czE2NDc1ICpzdCkNCj4gPiA+ICt7DQo+ID4gPiArCWNvbnN0IHUxNiBidXJzdDMyID0gQURJUzE2 NTAwX0JVUlNUMzIoMSk7DQo+ID4gPiArCWludCByZXQ7DQo+ID4gPiArDQo+ID4gPiArCXN0LT5i dXJzdDMyID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbCgmc3QtPmFkaXMuc3BpLT5kZXYsDQo+ ID4gPiArCQkJCQkJImFkaSxidXJzdDMyLWVuYWJsZSIpOw0KPiA+ID4gKwlpZiAoIXN0LT5idXJz dDMyKQ0KPiA+ID4gKwkJZ290byBidXJzdDE2Ow0KPiA+IEEgZm9yd2FyZHMgZ290byBsaWtlIHRo aXMgb24gYSBub24gZXJyb3IgY29uZGl0aW9uLCBpcyBhIGJpdA0KPiA+IHVudXN1YWwuDQo+ID4g V2hpbGUgaXQgaW52b2x2ZXMgbW9yZSBpbmRlbnRpbmcgSSB3b3VsZCBzdGlsbCBwcmVmZXIgdGhl IGxvZ2ljDQo+ID4gZmxpcHBlZA0KPiANCj4gSG9uZXN0bHkgSSBmaW5kIGl0IG1vcmUgcmVhZGFi bGUgKHRvIG1lKSBsaWtlIHRoaXMuIEJ1dCBJIGRvIGFncmVlDQo+IGl0J3MNCj4gbm90IHRoYXQg dXN1YWwuIFdpbGwgY2hhbmdlIGl0Li4uDQo+IA0KPiA+IAlpZiAoc3QtPmJ1cnN0MzIpIHsNCj4g PiANCj4gPiAJfQ0KPiA+IA0KPiA+IA0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoIXN0LT5pbmZvLT5o YXNfYnVyc3QzMikgew0KPiA+ID4gKwkJZGV2X2Vycigmc3QtPmFkaXMuc3BpLT5kZXYsICIlcyBk b2VzIG5vdCBzdXBwb3J0DQo+ID4gPiBidXJzdDMyIG1vZGVcbiIsDQo+ID4gPiArCQkJc3BpX2dl dF9kZXZpY2VfaWQoc3QtPmFkaXMuc3BpKS0+bmFtZSk7DQo+ID4gPiArCQlyZXR1cm4gLUVJTlZB TDsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlyZXQgPSBfX2FkaXNfdXBkYXRlX2JpdHMo JnN0LT5hZGlzLCBBRElTMTY0NzVfUkVHX01TR19DVFJMLA0KPiA+ID4gKwkJCQkgQURJUzE2NTAw X0JVUlNUMzJfTUFTSywgYnVyc3QzMik7DQo+ID4gPiArCWlmIChyZXQpDQo+ID4gPiArCQlyZXR1 cm4gcmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwl1c2xlZXBfcmFuZ2UoMjUwLCAyNjApOw0KPiA+ID4g KwkvKg0KPiA+ID4gKwkgKiBJbiAzMmJpdCBtb2RlIHdlIG5lZWQgZXh0cmEgMiBieXRlcyBmb3Ig YWxsIGd5cm8gYW5kIGFjY2VsDQo+ID4gPiArCSAqIGNoYW5uZWxzLg0KPiA+ID4gKwkgKi8NCj4g PiA+ICsJYWRpczE2NDc1X2J1cnN0LmV4dHJhX2xlbiArPSA2ICogc2l6ZW9mKHUxNik7DQo+ID4g PiArYnVyc3QxNjoNCj4gPiA+ICsJc3QtPmFkaXMuYnVyc3QgPSAmYWRpczE2NDc1X2J1cnN0Ow0K PiA+ID4gKwkvKiBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCBzbyBzcGkgbWF4IHNwZWVkIG5lZWRz IHRvIGJlIDFNSHogKi8NCj4gPiA+ICsJc3QtPmNhY2hlZF9zcGlfc3BlZWRfaHogPSBzdC0+YWRp cy5zcGktPm1heF9zcGVlZF9oejsNCj4gPiA+ICsJc3QtPmFkaXMuc3BpLT5tYXhfc3BlZWRfaHog PSAxMDAwMDAwOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArc3RhdGljIGludCBhZGlzMTY0NzVfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkNCj4gPiA+ICt7DQo+ID4gPiArCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXY7DQo+ID4gPiAr CXN0cnVjdCBhZGlzMTY0NzUgKnN0Ow0KPiA+ID4gKwljb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9p ZCAqaWQgPSBzcGlfZ2V0X2RldmljZV9pZChzcGkpOw0KPiA+ID4gKwlpbnQgcmV0Ow0KPiA+ID4g Kw0KPiA+ID4gKwlpbmRpb19kZXYgPSBkZXZtX2lpb19kZXZpY2VfYWxsb2MoJnNwaS0+ZGV2LCBz aXplb2YoKnN0KSk7DQo+ID4gPiArCWlmICghaW5kaW9fZGV2KQ0KPiA+ID4gKwkJcmV0dXJuIC1F Tk9NRU07DQo+ID4gPiArDQo+ID4gPiArCXN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gPiA+ ICsJc3QtPmluZm8gPSAmYWRpczE2NDc1X2NoaXBfaW5mb1tpZC0+ZHJpdmVyX2RhdGFdOw0KPiA+ ID4gKwlzcGlfc2V0X2RydmRhdGEoc3BpLCBpbmRpb19kZXYpOw0KPiA+ID4gKw0KPiA+ID4gKwly ZXQgPSBhZGlzX2luaXQoJnN0LT5hZGlzLCBpbmRpb19kZXYsIHNwaSwgJnN0LT5pbmZvLQ0KPiA+ ID4gPiBhZGlzX2RhdGEpOw0KPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsN Cj4gPiA+ICsNCj4gPiA+ICsJaW5kaW9fZGV2LT5kZXYucGFyZW50ID0gJnNwaS0+ZGV2Ow0KPiA+ ID4gKwlpbmRpb19kZXYtPm5hbWUgPSBpZC0+bmFtZTsNCj4gPiA+ICsJaW5kaW9fZGV2LT5jaGFu bmVscyA9IHN0LT5pbmZvLT5jaGFubmVsczsNCj4gPiA+ICsJaW5kaW9fZGV2LT5udW1fY2hhbm5l bHMgPSBzdC0+aW5mby0+bnVtX2NoYW5uZWxzOw0KPiA+ID4gKwlpbmRpb19kZXYtPmluZm8gPSAm YWRpczE2NDc1X2luZm87DQo+ID4gPiArCWluZGlvX2Rldi0+bW9kZXMgPSBJTkRJT19ESVJFQ1Rf TU9ERTsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0ID0gX19hZGlzX2luaXRpYWxfc3RhcnR1cCgmc3Qt PmFkaXMpOw0KPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsN Cj4gPiA+ICsJcmV0ID0gYWRpczE2NDc1X2J1cnN0X2NvbmZpZyhzdCk7DQo+ID4gPiArCWlmIChy ZXQpDQo+ID4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwlyZXQgPSBhZGlzMTY0 NzVfY29uZmlnX2lycV9waW4oc3QpOw0KPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJu IHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJcmV0ID0gYWRpczE2NDc1X2NvbmZpZ19leHRfY2xrKHN0 KTsNCj4gPiA+ICsJaWYgKHJldCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4g PiArCXJldCA9IGRldm1fYWRpc19zZXR1cF9idWZmZXJfYW5kX3RyaWdnZXIoJnN0LT5hZGlzLCBp bmRpb19kZXYsDQo+ID4gPiArCQkJCQkJIGFkaXMxNjQ3NV90cmlnZ2VyX2hhbmQNCj4gPiA+IGxl cik7DQo+ID4gPiArCWlmIChyZXQpDQo+ID4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gKw0KPiA+ ID4gKwlhZGlzMTY0NzVfZW5hYmxlX2lycSgmc3QtPmFkaXMsIGZhbHNlKTsNCj4gPiA+ICsNCj4g PiA+ICsJcmV0ID0gZGV2bV9paW9fZGV2aWNlX3JlZ2lzdGVyKCZzcGktPmRldiwgaW5kaW9fZGV2 KTsNCj4gPiA+ICsJaWYgKHJldCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiArDQo+ID4g PiArCWFkaXMxNjQ3NV9kZWJ1Z2ZzX2luaXQoaW5kaW9fZGV2KTsNCj4gPiA+ICsNCj4gPiA+ICsJ cmV0dXJuIDA7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg c3BpX2RldmljZV9pZCBhZGlzMTY0NzVfaWRzW10gPSB7DQo+ID4gDQo+ID4gSXMgaXQgYWN0dWFs bHkgcG9zc2libGUgdG8gaW5zdGFudGlhdGUgdGhpcyBleGNlcHQgYnkNCj4gPiB1c2luZyB0aGUg ZHQgdGFibGUgYmVsb3c/ICBJZiBub3QsIHRoZW4gbW92ZSB0aGUgJ2RhdGEnDQo+ID4gcGFydCBp bnRvIHRoYXQgdGFibGUgYW5kIGRvbid0IHByb3ZpZGUgYW4gc3BpX2RldmljZV9pZA0KPiA+IHRh YmxlIGF0IGFsbC4gIEl0J3Mgbm90IHJlbGV2YW50IHRvIHRoZSBwb3NzaWJsZSB3YXlzDQo+ID4g b2YgY2F1c2luZyB0aGUgZHJpdmVyIHRvIHByb2JlLg0KPiANCj4gSSBndWVzcyB3ZSBjb3VsZCB1 c2UgdGhlIGlkIHRhYmxlIHdpdGggZGV2aWNldHJlZSBldmVuIHdpdGhvdXQgdGhlIGR0DQo+IHRh YmxlIChldmVuIHRob3VnaCBpdCBtYWtlcyBubyBzZW5zZSkuDQo+IA0KPiBTbywgSSBjYW4gcmVt b3ZlIGl0IGJ1dCBJIHdhcyB1c2luZyB0aGUgaWQtPm5hbWUgdG8gc2V0IHRoZSB0aGUNCj4gaWlv X2Rldg0KPiBuYW1lIHdoaWNoIEkgZ3Vlc3MgaXMgbm90IHRoZSByaWdodCB3YXk/DQo+IA0KPiBX aGF0IEltIHRoaW5raW5nIGlzIGhhdmluZyBhIG5hbWUvcGFydCBudW1iZXIgc3RyaW5nIGluIGNo aXAgaW5mbw0KPiB0aGF0DQo+IEkgY2FuIHVzZSB0byBzZXQgdGhlIGlpbyBkZXYgbmFtZS4gRm9y IHBhcnRzIHRoYXQgaGF2ZSB0aGUgKi1bMXwyfDNdDQo+IHZhcmlhdGlvbnMgSSBjb3VsZCB1c2Ug dGhlIGRldmljZXRyZWUgaWlvIGxhYmVsIHByb3BlcnR5LiBJcyB0aGlzIHRoZQ0KPiBjb3JyZWN0 IHdheSBvZiBoYW5kbGluZyB0aGlzPw0KDQpJIHdhcyBtaXN1bmRlcnN0YW5kaW5nIHNvbWUgc3R1 ZmYgaGVyZS4gU28sIHRoZSAqLVsxfDJ8M10gYXJlIHZhbGlkDQpwYXJ0IG51bWJlcnMgc28gdGhl eSBjYW4gYmUgaW4gdGhlIGBuYW1lYCwgcmlnaHQ/IFNvLCBsYWJlbHMgY29tZSBpbnRvDQpwbGF5 LCBmb3IgZXhhbXBsZSwgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgc2Ft ZSBwYXJ0LA0KcmlnaHQ/DQogDQo+IC0gTnVubyBTw6ENCj4gPiA+ICsJeyAiYWRpczE2NDcwIiwg QURJUzE2NDcwIH0sDQo+ID4gPiArCXsgImFkaXMxNjQ3NS0xIiwgQURJUzE2NDc1XzEgfSwNCj4g PiA+ICsJeyAiYWRpczE2NDc1LTIiLCBBRElTMTY0NzVfMiB9LA0KPiA+ID4gKwl7ICJhZGlzMTY0 NzUtMyIsIEFESVMxNjQ3NV8zIH0sDQo+ID4gPiArCXsgImFkaXMxNjQ3Ny0xIiwgQURJUzE2NDc3 XzEgfSwNCj4gPiA+ICsJeyAiYWRpczE2NDc3LTIiLCBBRElTMTY0NzdfMiB9LA0KPiA+ID4gKwl7 ICJhZGlzMTY0NzctMyIsIEFESVMxNjQ3N18zIH0sDQo+ID4gPiArCXsgImFkaXMxNjQ2NS0xIiwg QURJUzE2NDY1XzEgfSwNCj4gPiA+ICsJeyAiYWRpczE2NDY1LTIiLCBBRElTMTY0NjVfMiB9LA0K PiA+ID4gKwl7ICJhZGlzMTY0NjUtMyIsIEFESVMxNjQ2NV8zIH0sDQo+ID4gPiArCXsgImFkaXMx NjQ2Ny0xIiwgQURJUzE2NDY3XzEgfSwNCj4gPiA+ICsJeyAiYWRpczE2NDY3LTIiLCBBRElTMTY0 NjdfMiB9LA0KPiA+ID4gKwl7ICJhZGlzMTY0NjctMyIsIEFESVMxNjQ2N18zIH0sDQo+ID4gPiAr CXsgImFkaXMxNjUwMCIsIEFESVMxNjUwMCB9LA0KPiA+ID4gKwl7ICJhZGlzMTY1MDUtMSIsIEFE SVMxNjUwNV8xIH0sDQo+ID4gPiArCXsgImFkaXMxNjUwNS0yIiwgQURJUzE2NTA1XzIgfSwNCj4g PiA+ICsJeyAiYWRpczE2NTA1LTMiLCBBRElTMTY1MDVfMyB9LA0KPiA+ID4gKwl7ICJhZGlzMTY1 MDctMSIsIEFESVMxNjUwN18xIH0sDQo+ID4gPiArCXsgImFkaXMxNjUwNy0yIiwgQURJUzE2NTA3 XzIgfSwNCj4gPiA+ICsJeyAiYWRpczE2NTA3LTMiLCBBRElTMTY1MDdfMyB9LA0KPiA+ID4gKwl7 IH0NCj4gPiA+ICt9Ow0KPiA+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBhZGlzMTY0NzVf aWRzKTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBh ZGlzMTY0NzVfb2ZfbWF0Y2hbXSA9IHsNCj4gPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhZGksYWRp czE2NDcwIiB9LA0KPiA+ID4gKwl7IC5jb21wYXRpYmxlID0gImFkaSxhZGlzMTY0NzUtMSIgfSwN Cj4gPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhZGksYWRpczE2NDc1LTIiIH0sDQo+ID4gPiArCXsg LmNvbXBhdGlibGUgPSAiYWRpLGFkaXMxNjQ3NS0zIiB9LA0KPiA+ID4gKwl7IC5jb21wYXRpYmxl ID0gImFkaSxhZGlzMTY0NzctMSIgfSwNCj4gPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhZGksYWRp czE2NDc3LTIiIH0sDQo+ID4gPiArCXsgLmNvbXBhdGlibGUgPSAiYWRpLGFkaXMxNjQ3Ny0zIiB9 LA0KPiA+ID4gKwl7IC5jb21wYXRpYmxlID0gImFkaSxhZGlzMTY0NjUtMSIgfSwNCj4gPiA+ICsJ eyAuY29tcGF0aWJsZSA9ICJhZGksYWRpczE2NDY1LTIiIH0sDQo+ID4gPiArCXsgLmNvbXBhdGli bGUgPSAiYWRpLGFkaXMxNjQ2NS0zIiB9LA0KPiA+ID4gKwl7IC5jb21wYXRpYmxlID0gImFkaSxh ZGlzMTY0NjctMSIgfSwNCj4gPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhZGksYWRpczE2NDY3LTIi IH0sDQo+ID4gPiArCXsgLmNvbXBhdGlibGUgPSAiYWRpLGFkaXMxNjQ2Ny0zIiB9LA0KPiA+ID4g Kwl7IC5jb21wYXRpYmxlID0gImFkaSxhZGlzMTY1MDAiIH0sDQo+ID4gPiArCXsgLmNvbXBhdGli bGUgPSAiYWRpLGFkaXMxNjUwNS0xIiB9LA0KPiA+ID4gKwl7IC5jb21wYXRpYmxlID0gImFkaSxh ZGlzMTY1MDUtMiIgfSwNCj4gPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhZGksYWRpczE2NTA1LTMi IH0sDQo+ID4gPiArCXsgLmNvbXBhdGlibGUgPSAiYWRpLGFkaXMxNjUwNy0xIiB9LA0KPiA+ID4g Kwl7IC5jb21wYXRpYmxlID0gImFkaSxhZGlzMTY1MDctMiIgfSwNCj4gPiA+ICsJeyAuY29tcGF0 aWJsZSA9ICJhZGksYWRpczE2NTA3LTMiIH0sDQo+ID4gPiArCXsgfSwNCj4gPiA+ICt9Ow0KPiA+ ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFkaXMxNjQ3NV9vZl9tYXRjaCk7DQo+ID4gPiAr DQo+ID4gPiArc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGFkaXMxNjQ3NV9kcml2ZXIgPSB7DQo+ ID4gPiArCS5kcml2ZXIgPSB7DQo+ID4gPiArCQkubmFtZSA9ICJhZGlzMTY0NzUiLA0KPiA+ID4g KwkJLm9mX21hdGNoX3RhYmxlID0gYWRpczE2NDc1X29mX21hdGNoLA0KPiA+ID4gKwl9LA0KPiA+ ID4gKwkuaWRfdGFibGUgPSBhZGlzMTY0NzVfaWRzLA0KPiA+ID4gKwkucHJvYmUgPSBhZGlzMTY0 NzVfcHJvYmUsDQo+ID4gPiArfTsNCj4gPiA+ICttb2R1bGVfc3BpX2RyaXZlcihhZGlzMTY0NzVf ZHJpdmVyKTsNCj4gPiA+ICsNCj4gPiA+ICtNT0RVTEVfQVVUSE9SKCJOdW5vIFNhIDxudW5vLnNh QGFuYWxvZy5jb20+Iik7DQo+ID4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJBbmFsb2cgRGV2aWNl cyBBRElTMTY0NzUgSU1VIGRyaXZlciIpOw0KPiA+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsN Cg0K