Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp380450img; Thu, 28 Mar 2019 01:29:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqxHgFkTDQZfnFFyXUCbi3Ux6WYWGiXJtHkXN7bBFqv5gMZQqqJQrEimHfUWZL0GrTsPUYuf X-Received: by 2002:a65:410a:: with SMTP id w10mr38569935pgp.206.1553761762348; Thu, 28 Mar 2019 01:29:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553761762; cv=none; d=google.com; s=arc-20160816; b=mNLKWizLMVINulMcPqQxqskunnPKfYH8aq8gmFQfu22izsca60bYQ7KCnNT0Ld8/oM hvabf17W7nYh4c8QwiR2BcBUkkVHl1P+jkewOvOldXbmnJwg6mLZ28eauS8hx8E8x2w3 8iFjlS9uluOZmIT3HSdSRdL0nUBOWbmQ3wAQ1UOsTwF+nbvEU9/TPMzlkgnvnyfLueQp fxkGkYq82JXzCOinDVhiZzv3whKn5nFRNuHQgIWAX6ehj8dCprGfmoP9xyz3Wi0lOy1a RXihn5XLJlLUrO4oFtis+B/lr3xQnT0ICRbxFAH5rFMGBeLy0GiUSS4JLXyVWaNemUqd oo8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=BSvQzhA0WFM3XEJdyD8GBHeEr8yvKIZV+oOWvY2yeNI=; b=t0D2/bc8bMo8fU0it95e7fnwPyRvhptnZb42Kq258hY+2Rcm1Fj+Qpl5trox6V+Owk AwQ9+MgGsZxHm5wAo7FM8TXOWqyJdVEZ2TJCfl80C+5EoETqRCJS0dRFRyr25yDUBvlZ MZ0krDXKNEjEqTCbXMZaRFRxDEOb/+XEe/LDCYNZWZ+0blaXdiAVZyxNhb/CBqVerC4G zAFB2aLptb+YrzwndoGUsv6YImaNnARjJmSAsnL91wl0qMZxdiC0CD0vqs0EfRuyLf6z nOFQDTUxnoYaXPynZoBhGEoj1pyG3oon48L7+uab3Glh3CtmdGkfrCmtQVZampcQ9ECR QRWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cadence.com header.s=proofpoint header.b=dKlh8mvF; dkim=pass header.i=@cadence.com header.s=selector1 header.b=LsVOQVe1; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id az7si20669895plb.21.2019.03.28.01.29.05; Thu, 28 Mar 2019 01:29:22 -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=@cadence.com header.s=proofpoint header.b=dKlh8mvF; dkim=pass header.i=@cadence.com header.s=selector1 header.b=LsVOQVe1; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726611AbfC1I20 (ORCPT + 99 others); Thu, 28 Mar 2019 04:28:26 -0400 Received: from mx0a-0014ca01.pphosted.com ([208.84.65.235]:35278 "EHLO mx0a-0014ca01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726098AbfC1I2Y (ORCPT ); Thu, 28 Mar 2019 04:28:24 -0400 Received: from pps.filterd (m0042385.ppops.net [127.0.0.1]) by mx0a-0014ca01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x2S8R3dn020217; Thu, 28 Mar 2019 01:27:07 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint; bh=BSvQzhA0WFM3XEJdyD8GBHeEr8yvKIZV+oOWvY2yeNI=; b=dKlh8mvFMn3jnjXhnoS5TSHLXE6h5WXSZqE7Qn15DlHZhylOJtKrl1uO2MVUWfyAHwNF ZSAG/usGcCFUdqQKPz8QBpzaqzmgdcsGa0u24ONOsXU8B0I/RmbBSu1mL9a/Ens9LbOA At8zJ78KDP5QIelVL2YVS2cG/CnLnAKki50JGtnsZzFIlF5HSAP35KNxmFgGCOhrnoCO B3qoMShvMpoUn432il27XvEldOjvBfPvYrJPUooqCVH7DpPymzazBlsGiKlokH/kGR2P 7IL7a4ZcB6SM8hCllMwsuoQymJxWuHjRdjx4B64p61BVV1MdbNwvRRPubpC6bS/aJ2QH lQ== Authentication-Results: cadence.com; spf=pass smtp.mailfrom=pawell@cadence.com Received: from nam04-sn1-obe.outbound.protection.outlook.com (mail-sn1nam04lp2058.outbound.protection.outlook.com [104.47.44.58]) by mx0a-0014ca01.pphosted.com with ESMTP id 2rg8pv4nce-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 28 Mar 2019 01:27:03 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BSvQzhA0WFM3XEJdyD8GBHeEr8yvKIZV+oOWvY2yeNI=; b=LsVOQVe1b5yZwGIaCZc/TgGHnTrXh2gJI1r1mkXFFp5XdrsUn/1XA5Mtn9QHXzlf5zEgBEGSOjfFhmFARdhVZemgcpSM8Pfuq/Cj8CsmSN4w9St3QdKs7yxWbmMeS8i4hR4qotXudkV7QyU2qBtz07qOpMr3gQh1i32TadBzz54= Received: from BYAPR07MB4709.namprd07.prod.outlook.com (52.135.204.159) by BYAPR07MB5399.namprd07.prod.outlook.com (52.135.241.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1730.18; Thu, 28 Mar 2019 08:26:57 +0000 Received: from BYAPR07MB4709.namprd07.prod.outlook.com ([fe80::cc0:46db:b7cf:9f14]) by BYAPR07MB4709.namprd07.prod.outlook.com ([fe80::cc0:46db:b7cf:9f14%3]) with mapi id 15.20.1730.019; Thu, 28 Mar 2019 08:26:57 +0000 From: Pawel Laszczak To: Peter Chen CC: "devicetree@vger.kernel.org" , Greg Kroah-Hartman , "felipe.balbi@linux.intel.com" , "mark.rutland@arm.com" , "linux-usb@vger.kernel.org" , "hdegoede@redhat.com" , Heikki Krogerus , "andy.shevchenko@gmail.com" , "robh+dt@kernel.org" , "rogerq@ti.com" , lkml , "jbergsagel@ti.com" , "nsekhar@ti.com" , "nm@ti.com" , Suresh Punnoose , "peter.chen@nxp.com" , Rahul Kumar Subject: RE: [PATCH v4 5/6] usb:cdns3 Add Cadence USB3 DRD Driver Thread-Topic: [PATCH v4 5/6] usb:cdns3 Add Cadence USB3 DRD Driver Thread-Index: AQHUxJ4VnRX9klsPV0GCGU5zGXPUXqYHgpeAgBlxNdA= Date: Thu, 28 Mar 2019 08:26:56 +0000 Message-ID: References: <1550173514-23573-1-git-send-email-pawell@cadence.com> <1550173514-23573-6-git-send-email-pawell@cadence.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNccGF3ZWxsXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEyOWUzNWJcbXNnc1xtc2ctM2E5YjQ1NTktNTEzMy0xMWU5LTg3MzMtMWM0ZDcwMWRmYmE0XGFtZS10ZXN0XDNhOWI0NTVhLTUxMzMtMTFlOS04NzMzLTFjNGQ3MDFkZmJhNGJvZHkudHh0IiBzej0iMjQ0ODMyIiB0PSIxMzE5ODIzNTIwOTI4NTE3OTIiIGg9IkdDdzZCZFVRc1doU3FwZ00rZ3pjTXpuZEJQST0iIGlkPSIiIGJsPSIwIiBibz0iMSIvPjwvbWV0YT4= x-dg-rorf: x-originating-ip: [185.217.253.59] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9cc1b10a-7033-40d1-3c00-08d6b3572449 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(2017052603328)(7153060)(7193020);SRVR:BYAPR07MB5399; x-ms-traffictypediagnostic: BYAPR07MB5399: x-microsoft-antispam-prvs: x-forefront-prvs: 0990C54589 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(346002)(366004)(396003)(39860400002)(376002)(199004)(189003)(51234002)(36092001)(1411001)(71200400001)(71190400001)(105586002)(107886003)(6246003)(8936002)(6916009)(229853002)(74316002)(478600001)(54906003)(316002)(6436002)(7736002)(102836004)(55016002)(5660300002)(33656002)(9686003)(2906002)(446003)(53936002)(26005)(11346002)(305945005)(6506007)(99286004)(68736007)(7696005)(76176011)(14454004)(86362001)(186003)(97736004)(486006)(53946003)(81166006)(476003)(106356001)(3846002)(6116002)(8676002)(256004)(25786009)(14444005)(19627235002)(4326008)(30864003)(66066001)(52536014)(81156014)(7416002)(559001)(579004)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:BYAPR07MB5399;H:BYAPR07MB4709.namprd07.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: cadence.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: FCgu6tzEZ8pHi/Qa2Hj8yHbs3K/nc2z3D0GCz1BsYgqMIesPYg2VbT63sHFm/TZZGey3/JdcfANaXntYGDSftx+KsWf9cIxgvG9AluVaMsZgKgZsHNagbn4+qE71v2wwHLALyHHzrpN8pI6YvM+AWnr9PpOx721voXiP26YTMzl9HuwdiO6TfXnBI8o3emWv0BpbB5cfXYcVRlZGyIQ7THNJDofnn+W9WbOaQrxdBsbDdXr+U2oiciiKN8jR81+383JZDYB1ilDGyFVYJfAz5uj+r+IjhosQCsw1weIuvicTwoiJPkr5gNpz6d0YPA6+x8HGQAe13MbBZQW5EHhHOa9Jib44bgTLtxyFO05fo7jL2x8g71Y7ZD8PNpaR3S1Xxct2OYuTUxHT/z7KdAU0j/+L5RQw2rjee9K3jIsq044= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9cc1b10a-7033-40d1-3c00-08d6b3572449 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Mar 2019 08:26:56.8077 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB5399 X-Proofpoint-SPF-Result: pass X-Proofpoint-SPF-Record: v=spf1 include:_spf.salesforce.com include:mktomail.com include:spf-0014ca01.pphosted.com include:spf.protection.outlook.com include:auth.msgapp.com include:spf.mandrillapp.com ~all X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-03-28_05:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903280064 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgUGV0ZXIsDQoNCj4NCj5Db21tZW50cyBmb3I6IGNkbnMzX2VwX29uY2hpcF9idWZmZXJfcmVz ZXJ2ZQ0KPi0gRm9yIE9VVCBlbmRwb2ludCBidWZmZXIsIGl0IGlzIHNoYXJlZCBhbW9uZyBhbGwg ZW5kcG9pbnRzLg0KPi0gVGhlIHJlZ2lzdGVyIHVzYl9jYXAyIHNvbWV0aW1lcyBjYW4ndCByZWZs ZWN0IHRoZSBhY3R1YWwgbWVtb3J5IHNpemUNCj5jb3JyZWN0bHksIHBsZWFzZQ0KPmFkZCBvbmUg ZHRzIGVudHJ5IHRvIG92ZXJyaWRlIGl0Lg0KPg0KDQpJIGtub3cgYWJvdXQgdGhpcy4gSSB3aWxs IGFkZCBvcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGR0LWJpbmRpbmcuIA0KQnV0IGdlbmVyYWxseSB0 aGUgc2l6ZSBvZiBvbi1jaGlwIGJ1ZmZlcnMgc2hvdWxkIGJlIHByb3BlciBzZXQgaW4gdXNiX2Nh cDIgcmVnaXN0ZXIuIA0KT24tY2hpcCBtZW1vcnkgaXMgZXh0ZXJuYWwgbWVtb3J5IGFuZCB0aGlz IHJlZ2lzdGVyIHNob3VsZCBiZSBzZXQgY29ycmVjdCBkdXJpbmcgaW50ZWdyYXRpb24uDQoNClBh d2VsDQoNCj4NCj5PbiBGcmksIEZlYiAxNSwgMjAxOSBhdCAxMDoxMSBBTSBQYXdlbCBMYXN6Y3ph ayA8cGF3ZWxsQGNhZGVuY2UuY29tPiB3cm90ZToNCj4+DQo+PiBUaGlzIHBhdGNoIGludHJvZHVj ZSBuZXcgQ2FkZW5jZSBVU0JTUyBEUkQgZHJpdmVyIHRvIGxpbnV4IGtlcm5lbC4NCj4+DQo+PiBU aGUgQ2FkZW5jZSBVU0JTUyBEUkQgRHJpdmVyIGlzIGEgaGlnaGx5IGNvbmZpZ3VyYWJsZSBJUCBD b3JlIHdoaWNoaQ0KPj4gY2FuIGJlIGluc3RhbnRpYXRlZCBhcyBEdWFsLVJvbGUgRGV2aWNlIChE UkQpLCBQZXJpcGhlcmFsIE9ubHkgYW5kDQo+PiBIb3N0IE9ubHkgKFhIQ0kpY29uZmlndXJhdGlv bnMuDQo+Pg0KPj4gVGhlIGN1cnJlbnQgZHJpdmVyIGhhcyBiZWVuIHZhbGlkYXRlZCB3aXRoIEZQ R0EgYnVybmVkLiBXZSBoYXZlIHN1cHBvcnQNCj4+IGZvciBQQ0llIGJ1cywgd2hpY2ggaXMgdXNl ZCBvbiBGUEdBIHByb3RvdHlwaW5nLg0KPj4NCj4+IFRoZSBob3N0IHNpZGUgb2YgVVNCU1MtRFJE IGNvbnRyb2xsZXIgaXMgY29tcGxpYW5jZSB3aXRoIFhIQ0kNCj4+IHNwZWNpZmljYXRpb24sIHNv IGl0IHdvcmtzIHdpdGggc3RhbmRhcmQgWEhDSSBsaW51eCBkcml2ZXIuDQo+Pg0KPj4gU2lnbmVk LW9mZi1ieTogUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4NCj4+IC0tLQ0KPj4g IGRyaXZlcnMvdXNiL0tjb25maWcgICAgICAgICAgICAgICAgfCAgICAyICsNCj4+ICBkcml2ZXJz L3VzYi9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAgMiArDQo+PiAgZHJpdmVycy91c2IvY2Ru czMvS2NvbmZpZyAgICAgICAgICB8ICAgNDQgKw0KPj4gIGRyaXZlcnMvdXNiL2NkbnMzL01ha2Vm aWxlICAgICAgICAgfCAgIDE0ICsNCj4+ICBkcml2ZXJzL3VzYi9jZG5zMy9jZG5zMy1wY2ktd3Jh cC5jIHwgIDE1NSArKysNCj4+ICBkcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMgICAgICAgICAgIHwg IDQwMyArKysrKysNCj4+ICBkcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmggICAgICAgICAgIHwgIDEx NiArKw0KPj4gIGRyaXZlcnMvdXNiL2NkbnMzL2RlYnVnLmggICAgICAgICAgfCAgMTY4ICsrKw0K Pj4gIGRyaXZlcnMvdXNiL2NkbnMzL2RlYnVnZnMuYyAgICAgICAgfCAgMTY0ICsrKw0KPj4gIGRy aXZlcnMvdXNiL2NkbnMzL2RyZC5jICAgICAgICAgICAgfCAgMzY1ICsrKysrDQo+PiAgZHJpdmVy cy91c2IvY2RuczMvZHJkLmggICAgICAgICAgICB8ICAxNjIgKysrDQo+PiAgZHJpdmVycy91c2Iv Y2RuczMvZXAwLmMgICAgICAgICAgICB8ICA5MDcgKysrKysrKysrKysrKw0KPj4gIGRyaXZlcnMv dXNiL2NkbnMzL2dhZGdldC1leHBvcnQuaCAgfCAgIDI4ICsNCj4+ICBkcml2ZXJzL3VzYi9jZG5z My9nYWRnZXQuYyAgICAgICAgIHwgMjAwMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ PiAgZHJpdmVycy91c2IvY2RuczMvZ2FkZ2V0LmggICAgICAgICB8IDEyMDcgKysrKysrKysrKysr KysrKysNCj4+ICBkcml2ZXJzL3VzYi9jZG5zMy9ob3N0LWV4cG9ydC5oICAgIHwgICAyOCArDQo+ PiAgZHJpdmVycy91c2IvY2RuczMvaG9zdC5jICAgICAgICAgICB8ICAgNzIgKw0KPj4gIGRyaXZl cnMvdXNiL2NkbnMzL3RyYWNlLmMgICAgICAgICAgfCAgIDIzICsNCj4+ICBkcml2ZXJzL3VzYi9j ZG5zMy90cmFjZS5oICAgICAgICAgIHwgIDQwNCArKysrKysNCj4+ICAxOSBmaWxlcyBjaGFuZ2Vk LCA2MjY3IGluc2VydGlvbnMoKykNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2Iv Y2RuczMvS2NvbmZpZw0KPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9N YWtlZmlsZQ0KPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9jZG5zMy1w Y2ktd3JhcC5jDQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL2NvcmUu Yw0KPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmgNCj4+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvZGVidWcuaA0KPj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9kZWJ1Z2ZzLmMNCj4+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy91c2IvY2RuczMvZHJkLmMNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy91c2IvY2RuczMvZHJkLmgNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2Iv Y2RuczMvZXAwLmMNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvZ2Fk Z2V0LWV4cG9ydC5oDQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL2dh ZGdldC5jDQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5o DQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL2hvc3QtZXhwb3J0LmgN Cj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvaG9zdC5jDQo+PiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL3RyYWNlLmMNCj4+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvdHJhY2UuaA0KPj4NCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9LY29uZmlnIGIvZHJpdmVycy91c2IvS2NvbmZpZw0KPj4gaW5kZXggOTg3ZmM1 YmE2MzIxLi41ZjkzMzQwMTlkMDQgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL3VzYi9LY29uZmln DQo+PiArKysgYi9kcml2ZXJzL3VzYi9LY29uZmlnDQo+PiBAQCAtMTEyLDYgKzExMiw4IEBAIHNv dXJjZSAiZHJpdmVycy91c2IvdXNiaXAvS2NvbmZpZyINCj4+DQo+PiAgZW5kaWYNCj4+DQo+PiAr c291cmNlICJkcml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnIg0KPj4gKw0KPj4gIHNvdXJjZSAiZHJp dmVycy91c2IvbXR1My9LY29uZmlnIg0KPj4NCj4+ICBzb3VyY2UgImRyaXZlcnMvdXNiL211c2Iv S2NvbmZpZyINCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9NYWtlZmlsZSBiL2RyaXZlcnMv dXNiL01ha2VmaWxlDQo+PiBpbmRleCA3ZDFiOGM4MmIyMDguLmFiMTI1Yjk2NmNhYyAxMDA2NDQN Cj4+IC0tLSBhL2RyaXZlcnMvdXNiL01ha2VmaWxlDQo+PiArKysgYi9kcml2ZXJzL3VzYi9NYWtl ZmlsZQ0KPj4gQEAgLTEyLDYgKzEyLDggQEAgb2JqLSQoQ09ORklHX1VTQl9EV0MzKSAgICAgICAg ICAgICAgICArPSBkd2MzLw0KPj4gIG9iai0kKENPTkZJR19VU0JfRFdDMikgICAgICAgICArPSBk d2MyLw0KPj4gIG9iai0kKENPTkZJR19VU0JfSVNQMTc2MCkgICAgICArPSBpc3AxNzYwLw0KPj4N Cj4+ICtvYmotJChDT05GSUdfVVNCX0NETlMzKSAgICAgICAgICAgICAgICArPSBjZG5zMy8NCj4+ ICsNCj4+ICBvYmotJChDT05GSUdfVVNCX01PTikgICAgICAgICAgKz0gbW9uLw0KPj4gIG9iai0k KENPTkZJR19VU0JfTVRVMykgICAgICAgICArPSBtdHUzLw0KPj4NCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnIGIvZHJpdmVycy91c2IvY2RuczMvS2NvbmZpZw0KPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjdjYjNkOGRiZTNk DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnDQo+ PiBAQCAtMCwwICsxLDQ0IEBADQo+PiArY29uZmlnIFVTQl9DRE5TMw0KPj4gKyAgICAgICB0cmlz dGF0ZSAiQ2FkZW5jZSBVU0IzIER1YWwtUm9sZSBDb250cm9sbGVyIg0KPj4gKyAgICAgICBkZXBl bmRzIG9uIFVTQl9TVVBQT1JUICYmIChVU0IgfHwgVVNCX0dBREdFVCkgJiYgSEFTX0RNQQ0KPj4g KyAgICAgICBoZWxwDQo+PiArICAgICAgICAgU2F5IFkgaGVyZSBpZiB5b3VyIHN5c3RlbSBoYXMg YSBjYWRlbmNlIFVTQjMgZHVhbC1yb2xlIGNvbnRyb2xsZXIuDQo+PiArICAgICAgICAgSXQgc3Vw cG9ydHM6IGR1YWwtcm9sZSBzd2l0Y2gsIEhvc3Qtb25seSwgYW5kIFBlcmlwaGVyYWwtb25seS4N Cj4+ICsNCj4+ICsgICAgICAgICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIHRoaXMgZHJpdmVyIGlz IGEgZHluYW1pY2FsbHkgbGlua2VkDQo+PiArICAgICAgICAgYXMgbW9kdWxlLCB0aGUgbW9kdWxl IHdpbGwgYmUgY2FsbGVkIGNkbnMzLmtvLg0KPj4gKw0KPj4gK2lmIFVTQl9DRE5TMw0KPj4gKw0K Pj4gK2NvbmZpZyBVU0JfQ0ROUzNfR0FER0VUDQo+PiArICAgICAgICBib29sICJDYWRlbmNlIFVT QjMgZGV2aWNlIGNvbnRyb2xsZXIiDQo+PiArICAgICAgICBkZXBlbmRzIG9uIFVTQl9HQURHRVQN Cj4+ICsgICAgICAgIGhlbHANCj4+ICsgICAgICAgICAgU2F5IFkgaGVyZSB0byBlbmFibGUgZGV2 aWNlIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSBvZiB0aGUNCj4+ICsgICAgICAgICAgY2FkZW5j ZSBVU0JTUy1ERVYgZHJpdmVyLg0KPj4gKw0KPj4gKyAgICAgICAgICBUaGlzIGNvbnRyb2xsZXIg c3VwcG9ydHMgRkYsIEhTIGFuZCBTUyBtb2RlLiBJdCBkb2Vzbid0IHN1cHBvcnQNCj4+ICsgICAg ICAgICAgTFMgYW5kIFNTUCBtb2RlLg0KPj4gKw0KPj4gK2NvbmZpZyBVU0JfQ0ROUzNfSE9TVA0K Pj4gKyAgICAgICAgYm9vbCAiQ2FkZW5jZSBVU0IzIGhvc3QgY29udHJvbGxlciINCj4+ICsgICAg ICAgIGRlcGVuZHMgb24gVVNCX1hIQ0lfSENEDQo+PiArICAgICAgICBoZWxwDQo+PiArICAgICAg ICAgIFNheSBZIGhlcmUgdG8gZW5hYmxlIGhvc3QgY29udHJvbGxlciBmdW5jdGlvbmFsaXR5IG9m IHRoZQ0KPj4gKyAgICAgICAgICBjYWRlbmNlIGRyaXZlci4NCj4+ICsNCj4+ICsgICAgICAgICAg SG9zdCBjb250cm9sbGVyIGlzIGNvbXBsaWFudCB3aXRoIFhIQ0kgc28gaXQgd2lsbCB1c2UNCj4+ ICsgICAgICAgICAgc3RhbmRhcmQgWEhDSSBkcml2ZXIuDQo+PiArDQo+PiArY29uZmlnIFVTQl9D RE5TM19QQ0lfV1JBUA0KPj4gKyAgICAgICB0cmlzdGF0ZSAiQ2FkZW5jZSBVU0IzIHN1cHBvcnQg b24gUENJZS1iYXNlZCBwbGF0Zm9ybXMiDQo+PiArICAgICAgIGRlcGVuZHMgb24gVVNCX1BDSSAm JiBBQ1BJDQo+PiArICAgICAgIGRlZmF1bHQgVVNCX0NETlMzDQo+PiArICAgICAgIGhlbHANCj4+ ICsgICAgICAgICBJZiB5b3UncmUgdXNpbmcgdGhlIFVTQlNTIENvcmUgSVAgd2l0aCBhIFBDSWUs IHBsZWFzZSBzYXkNCj4+ICsgICAgICAgICAnWScgb3IgJ00nIGhlcmUuDQo+PiArDQo+PiArICAg ICAgICAgSWYgeW91IGNob29zZSB0byBidWlsZCB0aGlzIGRyaXZlciBhcyBtb2R1bGUgaXQgd2ls bA0KPj4gKyAgICAgICAgIGJlIGR5bmFtaWNhbGx5IGxpbmtlZCBhbmQgbW9kdWxlIHdpbGwgYmUg Y2FsbGVkIGNkbnMzLXBjaS5rbw0KPj4gKw0KPj4gK2VuZGlmDQo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvY2RuczMvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZQ0KPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uOGY5NDM4NTkzMzc1 DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZQ0K Pj4gQEAgLTAsMCArMSwxNCBAQA0KPj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjANCj4+ICsjIGRlZmluZV90cmFjZS5oIG5lZWRzIHRvIGtub3cgaG93IHRvIGZpbmQgb3VyIGhl YWRlcg0KPj4gK0NGTEFHU190cmFjZS5vICAgICAgICAgICAgICAgICAgICAgICAgIDo9IC1JJChz cmMpDQo+PiArDQo+PiArY2RuczMteSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6PSBjb3JlLm8gZHJkLm8gdHJhY2Uubw0KPj4gKw0KPj4gK29iai0kKENPTkZJR19VU0Jf Q0ROUzMpICAgICAgICAgICAgICAgICAgICAgICAgKz0gY2RuczMubw0KPj4gK2lmbmVxICgkKENP TkZJR19ERUJVR19GUyksKQ0KPj4gKyAgICAgICBjZG5zMy15ICAgICAgICAgICAgICAgICAgICAg ICAgICs9IGRlYnVnZnMubw0KPj4gK2VuZGlmDQo+PiArDQo+PiArY2RuczMtJChDT05GSUdfVVNC X0NETlMzX0dBREdFVCkgICAgICAgKz0gZ2FkZ2V0Lm8gZXAwLm8NCj4+ICtjZG5zMy0kKENPTkZJ R19VU0JfQ0ROUzNfSE9TVCkgICAgICAgICArPSBob3N0Lm8NCj4+ICtvYmotJChDT05GSUdfVVNC X0NETlMzX1BDSV9XUkFQKSAgICAgICArPSBjZG5zMy1wY2ktd3JhcC5vDQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy91c2IvY2RuczMvY2RuczMtcGNpLXdyYXAuYyBiL2RyaXZlcnMvdXNiL2NkbnMz L2NkbnMzLXBjaS13cmFwLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAw MDAwMDAwMDAuLmQwYjJkM2Q5Yjk4Mw0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVy cy91c2IvY2RuczMvY2RuczMtcGNpLXdyYXAuYw0KPj4gQEAgLTAsMCArMSwxNTUgQEANCj4+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4gKy8qDQo+PiArICogQ2FkZW5j ZSBVU0JTUyBQQ0kgR2x1ZSBkcml2ZXINCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdodCAoQykgMjAx OCBDYWRlbmNlLg0KPj4gKyAqDQo+PiArICogQXV0aG9yOiBQYXdlbCBMYXN6Y3phayA8cGF3ZWxs QGNhZGVuY2UuY29tPg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwu aD4NCj4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3Bj aS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4+ICsjaW5jbHVk ZSA8bGludXgvZG1hLW1hcHBpbmcuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPj4g Kw0KPj4gK3N0cnVjdCBjZG5zM193cmFwIHsNCj4+ICsgICAgICAgc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGxhdF9kZXY7DQo+PiArICAgICAgIHN0cnVjdCBwY2lfZGV2ICpoZ19kZXY7DQo+PiAr ICAgICAgIHN0cnVjdCByZXNvdXJjZSBkZXZfcmVzWzRdOw0KPj4gK307DQo+PiArDQo+PiArc3Ry dWN0IGNkbnMzX3dyYXAgd3JhcDsNCj4+ICsNCj4+ICsjZGVmaW5lIFJFU19JUlFfSUQgICAgICAg ICAgICAgMA0KPj4gKyNkZWZpbmUgUkVTX0hPU1RfSUQgICAgICAgICAgICAxDQo+PiArI2RlZmlu ZSBSRVNfREVWX0lEICAgICAgICAgICAgIDINCj4+ICsjZGVmaW5lIFJFU19EUkRfSUQgICAgICAg ICAgICAgMw0KPj4gKw0KPj4gKyNkZWZpbmUgUENJX0JBUl9IT1NUICAgICAgICAgICAwDQo+PiAr I2RlZmluZSBQQ0lfQkFSX0RFViAgICAgICAgICAgIDINCj4+ICsjZGVmaW5lIFBDSV9CQVJfT1RH ICAgICAgICAgICAgNA0KPj4gKw0KPj4gKyNkZWZpbmUgUENJX0RFVl9GTl9IT1NUX0RFVklDRSAw DQo+PiArI2RlZmluZSBQQ0lfREVWX0ZOX09URyAgICAgICAgIDENCj4+ICsNCj4+ICsjZGVmaW5l IFBDSV9EUklWRVJfTkFNRSAgICAgICAgICAgICAgICAiY2RuczMtcGNpLXVzYnNzIg0KPj4gKyNk ZWZpbmUgUExBVF9EUklWRVJfTkFNRSAgICAgICAiY2Rucy11c2IzIg0KPj4gKw0KPj4gKyNkZWZp bmUgQ0ROU19WRU5ET1JfSUQgMHgxN2NkDQo+PiArI2RlZmluZSBDRE5TX0RFVklDRV9JRCAweDAx MDANCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19wY2lfcHJvYmUgLSBQcm9iZSBmdW5jdGlv biBmb3IgQ2FkZW5jZSBVU0Igd3JhcHBlciBkcml2ZXINCj4+ICsgKiBAcGRldjogcGxhdGZvcm0g ZGV2aWNlIG9iamVjdA0KPj4gKyAqIEBpZDogcGNpIGRldmljZSBpZA0KPj4gKyAqDQo+PiArICog UmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3RoZXJ3aXNlIG5lZ2F0aXZlIGVycm5vDQo+PiArICovDQo+ PiArc3RhdGljIGludCBjZG5zM19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQp DQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2luZm8gcGxhdF9pbmZv Ow0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfd3JhcCAqd3JhcDsNCj4+ICsgICAgICAgc3RydWN0 IHJlc291cmNlICpyZXM7DQo+PiArICAgICAgIGludCBlcnI7DQo+PiArDQo+PiArICAgICAgIC8q DQo+PiArICAgICAgICAqIGZvciBHQURHRVQvSE9TVCBQQ0kgKGRldmZuKSBmdW5jdGlvbiBudW1i ZXIgaXMgMCwNCj4+ICsgICAgICAgICogZm9yIE9URyBQQ0kgKGRldmZuKSBmdW5jdGlvbiBudW1i ZXIgaXMgMQ0KPj4gKyAgICAgICAgKi8NCj4+ICsgICAgICAgaWYgKCFpZCB8fCBwZGV2LT5kZXZm biAhPSBQQ0lfREVWX0ZOX0hPU1RfREVWSUNFKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOw0KPj4gKw0KPj4gKyAgICAgICBlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7 DQo+PiArICAgICAgIGlmIChlcnIpIHsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2 LT5kZXYsICJFbmFibGluZyBQQ0kgZGV2aWNlIGhhcyBmYWlsZWQgJWRcbiIsIGVycik7DQo+PiAr ICAgICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAg ICBwY2lfc2V0X21hc3RlcihwZGV2KTsNCj4+ICsgICAgICAgd3JhcCA9IGRldm1fa3phbGxvYygm cGRldi0+ZGV2LCBzaXplb2YoKndyYXApLCBHRlBfS0VSTkVMKTsNCj4+ICsgICAgICAgaWYgKCF3 cmFwKSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRv IGFsbG9jYXRlIG1lbW9yeVxuIik7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07 DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgLyogZnVuY3Rpb24gMDogaG9zdChCQVJf MCkgKyBkZXZpY2UoQkFSXzEpICsgb3RnKEJBUl8yKSkuICovDQo+PiArICAgICAgIG1lbXNldCh3 cmFwLT5kZXZfcmVzLCAweDAwLA0KPj4gKyAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCByZXNv dXJjZSkgKiBBUlJBWV9TSVpFKHdyYXAtPmRldl9yZXMpKTsNCj4+ICsgICAgICAgZGV2X2RiZygm cGRldi0+ZGV2LCAiSW5pdGlhbGl6ZSBEZXZpY2UgcmVzb3VyY2VzXG4iKTsNCj4+ICsgICAgICAg cmVzID0gd3JhcC0+ZGV2X3JlczsNCj4+ICsNCj4+ICsgICAgICAgcmVzW1JFU19ERVZfSURdLnN0 YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIFBDSV9CQVJfREVWKTsNCj4+ICsgICAgICAg cmVzW1JFU19ERVZfSURdLmVuZCA9ICAgcGNpX3Jlc291cmNlX2VuZChwZGV2LCBQQ0lfQkFSX0RF Vik7DQo+PiArICAgICAgIHJlc1tSRVNfREVWX0lEXS5uYW1lID0gImRldiI7DQo+PiArICAgICAg IHJlc1tSRVNfREVWX0lEXS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOw0KPj4gKyAgICAgICBkZXZf ZGJnKCZwZGV2LT5kZXYsICJVU0JTUy1ERVYgcGh5c2ljYWwgYmFzZSBhZGRyOiAlcGFcbiIsDQo+ PiArICAgICAgICAgICAgICAgJnJlc1tSRVNfREVWX0lEXS5zdGFydCk7DQo+PiArDQo+PiArICAg ICAgIHJlc1tSRVNfSE9TVF9JRF0uc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgUENJ X0JBUl9IT1NUKTsNCj4+ICsgICAgICAgcmVzW1JFU19IT1NUX0lEXS5lbmQgPSBwY2lfcmVzb3Vy Y2VfZW5kKHBkZXYsIFBDSV9CQVJfSE9TVCk7DQo+PiArICAgICAgIHJlc1tSRVNfSE9TVF9JRF0u bmFtZSA9ICJ4aGNpIjsNCj4+ICsgICAgICAgcmVzW1JFU19IT1NUX0lEXS5mbGFncyA9IElPUkVT T1VSQ0VfTUVNOw0KPj4gKyAgICAgICBkZXZfZGJnKCZwZGV2LT5kZXYsICJVU0JTUy1YSENJIHBo eXNpY2FsIGJhc2UgYWRkcjogJXBhXG4iLA0KPj4gKyAgICAgICAgICAgICAgICZyZXNbUkVTX0hP U1RfSURdLnN0YXJ0KTsNCj4+ICsNCj4+ICsgICAgICAgcmVzW1JFU19EUkRfSURdLnN0YXJ0ID0g cGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIFBDSV9CQVJfT1RHKTsNCj4+ICsgICAgICAgcmVzW1JF U19EUkRfSURdLmVuZCA9ICAgcGNpX3Jlc291cmNlX2VuZChwZGV2LCBQQ0lfQkFSX09URyk7DQo+ PiArICAgICAgIHJlc1tSRVNfRFJEX0lEXS5uYW1lID0gIm90ZyI7DQo+PiArICAgICAgIHJlc1tS RVNfRFJEX0lEXS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOw0KPj4gKyAgICAgICBkZXZfZGJnKCZw ZGV2LT5kZXYsICJVU0JTUy1EUkQgcGh5c2ljYWwgYmFzZSBhZGRyOiAlcGFcbiIsDQo+PiArICAg ICAgICAgICAgICAgJnJlc1tSRVNfRFJEX0lEXS5zdGFydCk7DQo+PiArDQo+PiArICAgICAgIC8q IEludGVycnVwdCBjb21tb24gZm9yIGJvdGggZGV2aWNlIGFuZCBYSENJICovDQo+PiArICAgICAg IHdyYXAtPmRldl9yZXNbUkVTX0lSUV9JRF0uc3RhcnQgPSBwZGV2LT5pcnE7DQo+PiArICAgICAg IHdyYXAtPmRldl9yZXNbUkVTX0lSUV9JRF0ubmFtZSA9ICJjZG5zMy1pcnEiOw0KPj4gKyAgICAg ICB3cmFwLT5kZXZfcmVzW1JFU19JUlFfSURdLmZsYWdzID0gSU9SRVNPVVJDRV9JUlE7DQo+PiAr DQo+PiArICAgICAgIC8qIHNldCB1cCBwbGF0Zm9ybSBkZXZpY2UgaW5mbyAqLw0KPj4gKyAgICAg ICBtZW1zZXQoJnBsYXRfaW5mbywgMCwgc2l6ZW9mKHBsYXRfaW5mbykpOw0KPj4gKyAgICAgICBw bGF0X2luZm8ucGFyZW50ID0gJnBkZXYtPmRldjsNCj4+ICsgICAgICAgcGxhdF9pbmZvLmZ3bm9k ZSA9IHBkZXYtPmRldi5md25vZGU7DQo+PiArICAgICAgIHBsYXRfaW5mby5uYW1lID0gUExBVF9E UklWRVJfTkFNRTsNCj4+ICsgICAgICAgcGxhdF9pbmZvLmlkID0gcGRldi0+ZGV2Zm47DQo+PiAr ICAgICAgIHBsYXRfaW5mby5yZXMgPSB3cmFwLT5kZXZfcmVzOw0KPj4gKyAgICAgICBwbGF0X2lu Zm8ubnVtX3JlcyA9IEFSUkFZX1NJWkUod3JhcC0+ZGV2X3Jlcyk7DQo+PiArICAgICAgIHBsYXRf aW5mby5kbWFfbWFzayA9IHBkZXYtPmRtYV9tYXNrOw0KPj4gKw0KPj4gKyAgICAgICAvKiByZWdp c3RlciBwbGF0Zm9ybSBkZXZpY2UgKi8NCj4+ICsgICAgICAgd3JhcC0+cGxhdF9kZXYgPSBwbGF0 Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbCgmcGxhdF9pbmZvKTsNCj4+ICsgICAgICAgaWYgKElT X0VSUih3cmFwLT5wbGF0X2RldikpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIo d3JhcC0+cGxhdF9kZXYpOw0KPj4gKw0KPj4gKyAgICAgICBwY2lfc2V0X2RydmRhdGEocGRldiwg d3JhcCk7DQo+PiArDQo+PiArICAgICAgIHJldHVybiBlcnI7DQo+PiArfQ0KPj4gKw0KPj4gK3Zv aWQgY2RuczNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikNCj4+ICt7DQo+PiArICAg ICAgIHN0cnVjdCBjZG5zM193cmFwICp3cmFwID0gKHN0cnVjdCBjZG5zM193cmFwICopcGNpX2dl dF9kcnZkYXRhKHBkZXYpOw0KPj4gKw0KPj4gKyAgICAgICBwbGF0Zm9ybV9kZXZpY2VfdW5yZWdp c3Rlcih3cmFwLT5wbGF0X2Rldik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgcGNpX2RldmljZV9pZCBjZG5zM19wY2lfaWRzW10gPSB7DQo+PiArICAgICAgIHsgUENJX0RF VklDRShDRE5TX1ZFTkRPUl9JRCwgQ0ROU19ERVZJQ0VfSUQpLCB9LA0KPj4gKyAgICAgICB7IDAs IH0NCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBjZG5zM19wY2lf ZHJpdmVyID0gew0KPj4gKyAgICAgICAubmFtZSA9IFBDSV9EUklWRVJfTkFNRSwNCj4+ICsgICAg ICAgLmlkX3RhYmxlID0gY2RuczNfcGNpX2lkcywNCj4+ICsgICAgICAgLnByb2JlID0gY2RuczNf cGNpX3Byb2JlLA0KPj4gKyAgICAgICAucmVtb3ZlID0gY2RuczNfcGNpX3JlbW92ZSwNCj4+ICt9 Ow0KPj4gKw0KPj4gK21vZHVsZV9wY2lfZHJpdmVyKGNkbnMzX3BjaV9kcml2ZXIpOw0KPj4gK01P RFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBjZG5zM19wY2lfaWRzKTsNCj4+ICsNCj4+ICtNT0RVTEVf QVVUSE9SKCJQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPiIpOw0KPj4gK01PRFVM RV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkNhZGVuY2UgVVNC U1MgUENJIHdyYXBwZXJyIik7DQo+PiArDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2Ru czMvY29yZS5jIGIvZHJpdmVycy91c2IvY2RuczMvY29yZS5jDQo+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hYTJmNjMyNDFkYWINCj4+IC0tLSAvZGV2L251 bGwNCj4+ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnMzL2NvcmUuYw0KPj4gQEAgLTAsMCArMSw0MDMg QEANCj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4gKy8qDQo+PiAr ICogQ2FkZW5jZSBVU0JTUyBEUkQgRHJpdmVyLg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChD KSAyMDE4IENhZGVuY2UuDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggTlhQDQo+PiAr ICoNCj4+ICsgKiBBdXRob3I6IFBldGVyIENoZW4gPHBldGVyLmNoZW5AbnhwLmNvbT4NCj4+ICsg KiAgICAgICAgIFBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+DQo+PiArICovDQo+ PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+PiArI2lu Y2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPj4g KyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+PiArDQo+PiArI2luY2x1ZGUgImdhZGdl dC5oIg0KPj4gKyNpbmNsdWRlICJjb3JlLmgiDQo+PiArI2luY2x1ZGUgImhvc3QtZXhwb3J0Lmgi DQo+PiArI2luY2x1ZGUgImdhZGdldC1leHBvcnQuaCINCj4+ICsjaW5jbHVkZSAiZHJkLmgiDQo+ PiArI2luY2x1ZGUgImRlYnVnLmgiDQo+PiArDQo+PiArc3RhdGljIGlubGluZQ0KPj4gK3N0cnVj dCBjZG5zM19yb2xlX2RyaXZlciAqY2RuczNfZ2V0X2N1cnJlbnRfcm9sZV9kcml2ZXIoc3RydWN0 IGNkbnMzICpjZG5zKQ0KPj4gK3sNCj4+ICsgICAgICAgV0FSTl9PTihjZG5zLT5yb2xlID49IENE TlMzX1JPTEVfRU5EIHx8ICFjZG5zLT5yb2xlc1tjZG5zLT5yb2xlXSk7DQo+PiArICAgICAgIHJl dHVybiBjZG5zLT5yb2xlc1tjZG5zLT5yb2xlXTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu dCBjZG5zM19yb2xlX3N0YXJ0KHN0cnVjdCBjZG5zMyAqY2RucywgZW51bSBjZG5zM19yb2xlcyBy b2xlKQ0KPj4gK3sNCj4+ICsgICAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKFdB Uk5fT04ocm9sZSA+PSBDRE5TM19ST0xFX0VORCkpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJu IDA7DQo+PiArDQo+PiArICAgICAgIGlmICghY2Rucy0+cm9sZXNbcm9sZV0pDQo+PiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FTlhJTzsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGNkbnMtPnJvbGVz W3JvbGVdLT5zdGF0ZSA9PSBDRE5TM19ST0xFX1NUQVRFX0FDVElWRSkNCj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gMDsNCj4+ICsNCj4+ICsgICAgICAgbXV0ZXhfbG9jaygmY2Rucy0+bXV0ZXgp Ow0KPj4gKyAgICAgICBjZG5zLT5yb2xlID0gcm9sZTsNCj4+ICsgICAgICAgcmV0ID0gY2Rucy0+ cm9sZXNbcm9sZV0tPnN0YXJ0KGNkbnMpOw0KPj4gKyAgICAgICBpZiAoIXJldCkNCj4+ICsgICAg ICAgICAgICAgICBjZG5zLT5yb2xlc1tyb2xlXS0+c3RhdGUgPSBDRE5TM19ST0xFX1NUQVRFX0FD VElWRTsNCj4+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZjZG5zLT5tdXRleCk7DQo+PiArICAgICAg IHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgY2RuczNfcm9sZV9zdG9wKHN0cnVj dCBjZG5zMyAqY2RucykNCj4+ICt7DQo+PiArICAgICAgIGVudW0gY2RuczNfcm9sZXMgcm9sZSA9 IGNkbnMtPnJvbGU7DQo+PiArDQo+PiArICAgICAgIGlmIChyb2xlID49IENETlMzX1JPTEVfRU5E KSB7DQo+PiArICAgICAgICAgICAgICAgV0FSTl9PTihyb2xlID4gQ0ROUzNfUk9MRV9FTkQpOw0K Pj4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAg ICBpZiAoY2Rucy0+cm9sZXNbcm9sZV0tPnN0YXRlID09IENETlMzX1JPTEVfU1RBVEVfSU5BQ1RJ VkUpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPj4gKw0KPj4gKyAgICAgICBtdXRleF9s b2NrKCZjZG5zLT5tdXRleCk7DQo+PiArICAgICAgIGNkbnMtPnJvbGVzW3JvbGVdLT5zdG9wKGNk bnMpOw0KPj4gKyAgICAgICBjZG5zLT5yb2xlc1tyb2xlXS0+c3RhdGUgPSBDRE5TM19ST0xFX1NU QVRFX0lOQUNUSVZFOw0KPj4gKyAgICAgICBtdXRleF91bmxvY2soJmNkbnMtPm11dGV4KTsNCj4+ ICt9DQo+PiArDQo+PiArLyoNCj4+ICsgKiBjZG5zLT5yb2xlIGdldHMgZnJvbSBjZG5zM19nZXRf aW5pdGlhbF9yb2xlLCBhbmQgdGhpcyBBUEkgdGVsbHMgcm9sZSBhdCB0aGUNCj4+ICsgKiBydW50 aW1lLg0KPj4gKyAqIElmIGJvdGggcm9sZXMgYXJlIHN1cHBvcnRlZCwgdGhlIHJvbGUgaXMgc2Vs ZWN0ZWQgYmFzZWQgb24gdmJ1cy9pZC4NCj4+ICsgKiBJdCBjb3VsZCBiZSByZWFkIGZyb20gT1RH IHJlZ2lzdGVyIG9yIGV4dGVybmFsIGNvbm5lY3Rvci4NCj4+ICsgKiBJZiBvbmx5IHNpbmdsZSBy b2xlIGlzIHN1cHBvcnRlZCwgb25seSBvbmUgcm9sZSBzdHJ1Y3R1cmUNCj4+ICsgKiBpcyBhbGxv Y2F0ZWQsIGNkbnMtPnJvbGVzW0NETlMzX1JPTEVfSE9TVF0gb3IgY2Rucy0+cm9sZXNbQ0ROUzNf Uk9MRV9HQURHRVRdLg0KPj4gKyAqLw0KPj4gK3N0YXRpYyBlbnVtIGNkbnMzX3JvbGVzIGNkbnMz X2dldF9pbml0aWFsX3JvbGUoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gK3sNCj4+ICsgICAgICAg aWYgKGNkbnMtPnJvbGVzW0NETlMzX1JPTEVfSE9TVF0gJiYgY2Rucy0+cm9sZXNbQ0ROUzNfUk9M RV9HQURHRVRdKSB7DQo+PiArICAgICAgICAgICAgICAgaWYgKGNkbnMzX2lzX2hvc3QoY2Rucykp DQo+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0ROUzNfUk9MRV9IT1NUOw0KPj4g KyAgICAgICAgICAgICAgIGlmIChjZG5zM19pc19kZXZpY2UoY2RucykpDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gQ0ROUzNfUk9MRV9HQURHRVQ7DQo+PiArICAgICAgIH0NCj4+ ICsgICAgICAgcmV0dXJuIGNkbnMtPnJvbGVzW0NETlMzX1JPTEVfSE9TVF0NCj4+ICsgICAgICAg ICAgICAgICA/IENETlMzX1JPTEVfSE9TVA0KPj4gKyAgICAgICAgICAgICAgIDogQ0ROUzNfUk9M RV9HQURHRVQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGNkbnMzX2V4aXRfcm9sZXMo c3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gK3sNCj4+ICsgICAgICAgY2RuczNfcm9sZV9zdG9wKGNk bnMpOw0KPj4gKyAgICAgICBjZG5zM19kcmRfZXhpdChjZG5zKTsNCj4+ICt9DQo+PiArDQo+PiAr LyoqDQo+PiArICogY2RuczNfY29yZV9pbml0X3JvbGUgLSBpbml0aWFsaXplIHJvbGUgb2Ygb3Bl cmF0aW9uDQo+PiArICogQGNkbnM6IFBvaW50ZXIgdG8gY2RuczMgc3RydWN0dXJlDQo+PiArICoN Cj4+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvdGhlcndpc2UgbmVnYXRpdmUgZXJybm8NCj4+ ICsgKi8NCj4+ICtzdGF0aWMgaW50IGNkbnMzX2NvcmVfaW5pdF9yb2xlKHN0cnVjdCBjZG5zMyAq Y2RucykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGNkbnMtPmRldjsN Cj4+ICsgICAgICAgZW51bSB1c2JfZHJfbW9kZSBiZXN0X2RyX21vZGU7DQo+PiArICAgICAgIGVu dW0gdXNiX2RyX21vZGUgZHJfbW9kZTsNCj4+ICsgICAgICAgaW50IHJldCA9IDA7DQo+PiArDQo+ PiArICAgICAgIGRyX21vZGUgPSB1c2JfZ2V0X2RyX21vZGUoZGV2KTsNCj4+ICsgICAgICAgY2Ru cy0+cm9sZSA9IENETlMzX1JPTEVfRU5EOw0KPj4gKw0KPj4gKyAgICAgICAvKg0KPj4gKyAgICAg ICAgKiBJZiBkcml2ZXIgY2FuJ3QgcmVhZCBtb2RlIGJ5IG1lYW5zIG9mIHVzYl9nZXRfZHJfbWRv ZSBmdW5jdGlvbiB0aGVuDQo+PiArICAgICAgICAqIGNob29zZXMgbW9kZSBhY2NvcmRpbmcgd2l0 aCBLZXJuZWwgY29uZmlndXJhdGlvbi4gVGhpcyBzZXR0aW5nDQo+PiArICAgICAgICAqIGNhbiBi ZSByZXN0cmljdGVkIGxhdGVyIGRlcGVuZGluZyBvbiBzdHJhcCBwaW4gY29uZmlndXJhdGlvbi4N Cj4+ICsgICAgICAgICovDQo+PiArICAgICAgIGlmIChkcl9tb2RlID09IFVTQl9EUl9NT0RFX1VO S05PV04pIHsNCj4+ICsgICAgICAgICAgICAgICBpZiAoSVNfRU5BQkxFRChDT05GSUdfVVNCX0NE TlMzX0hPU1QpICYmDQo+PiArICAgICAgICAgICAgICAgICAgIElTX0VOQUJMRUQoQ09ORklHX1VT Ql9DRE5TM19HQURHRVQpKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZHJfbW9kZSA9IFVT Ql9EUl9NT0RFX09URzsNCj4+ICsgICAgICAgICAgICAgICBlbHNlIGlmIChJU19FTkFCTEVEKENP TkZJR19VU0JfQ0ROUzNfSE9TVCkpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkcl9tb2Rl ID0gVVNCX0RSX01PREVfSE9TVDsNCj4+ICsgICAgICAgICAgICAgICBlbHNlIGlmIChJU19FTkFC TEVEKENPTkZJR19VU0JfQ0ROUzNfR0FER0VUKSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg IGRyX21vZGUgPSBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMOw0KPj4gKyAgICAgICB9DQo+PiArDQo+ PiArICAgICAgIGJlc3RfZHJfbW9kZSA9IFVTQl9EUl9NT0RFX09URzsNCj4+ICsNCj4+ICsgICAg ICAgaWYgKGRyX21vZGUgPT0gVVNCX0RSX01PREVfT1RHKSB7DQo+PiArICAgICAgICAgICAgICAg YmVzdF9kcl9tb2RlID0gY2Rucy0+ZHJfbW9kZTsNCj4+ICsgICAgICAgfSBlbHNlIGlmIChjZG5z LT5kcl9tb2RlID09IFVTQl9EUl9NT0RFX09URykgew0KPj4gKyAgICAgICAgICAgICAgIGJlc3Rf ZHJfbW9kZSA9IGRyX21vZGU7DQo+PiArICAgICAgIH0gZWxzZSBpZiAoY2Rucy0+ZHJfbW9kZSAh PSBkcl9tb2RlKSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJJbmNvcnJlY3Qg RFJEIGNvbmZpZ3VyYXRpb25cbiIpOw0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGRyX21vZGUgPSBiZXN0X2RyX21vZGU7 DQo+PiArDQo+PiArICAgICAgIGlmIChkcl9tb2RlID09IFVTQl9EUl9NT0RFX09URyB8fCBkcl9t b2RlID09IFVTQl9EUl9NT0RFX0hPU1QpIHsNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBjZG5z M19ob3N0X2luaXQoY2Rucyk7DQo+PiArICAgICAgICAgICAgICAgaWYgKHJldCkgew0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJIb3N0IGluaXRpYWxpemF0aW9uIGZh aWxlZCB3aXRoICVkXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQp Ow0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7DQo+PiArICAgICAgICAgICAg ICAgfQ0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGlmIChkcl9tb2RlID09IFVTQl9E Ul9NT0RFX09URyB8fCBkcl9tb2RlID09IFVTQl9EUl9NT0RFX1BFUklQSEVSQUwpIHsNCj4+ICsg ICAgICAgICAgICAgICByZXQgPSBjZG5zM19nYWRnZXRfaW5pdChjZG5zKTsNCj4+ICsgICAgICAg ICAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRl diwgIkRldmljZSBpbml0aWFsaXphdGlvbiBmYWlsZWQgd2l0aCAlZFxuIiwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0KTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg IGdvdG8gZXJyOw0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4g KyAgICAgICBjZG5zLT5kZXNpcmVkX2RyX21vZGUgPSBkcl9tb2RlOw0KPj4gKyAgICAgICBjZG5z LT5kcl9tb2RlID0gZHJfbW9kZTsNCj4+ICsgICAgICAgLyoNCj4+ICsgICAgICAgICogZHJfbW9k ZSBjb3VsZCBiZSBjaGFuZ2Ugc28gRFJEIG11c3QgdXBkYXRlIGNvbnRyb2xsZXINCj4+ICsgICAg ICAgICogY29uZmlndXJhdGlvbg0KPj4gKyAgICAgICAgKi8NCj4+ICsgICAgICAgcmV0ID0gY2Ru czNfZHJkX3VwZGF0ZV9tb2RlKGNkbnMpOw0KPj4gKyAgICAgICBpZiAocmV0KQ0KPj4gKyAgICAg ICAgICAgICAgIGdvdG8gZXJyOw0KPj4gKw0KPj4gKyAgICAgICBjZG5zLT5yb2xlID0gY2RuczNf Z2V0X2luaXRpYWxfcm9sZShjZG5zKTsNCj4+ICsNCj4+ICsgICAgICAgcmV0ID0gY2RuczNfcm9s ZV9zdGFydChjZG5zLCBjZG5zLT5yb2xlKTsNCj4+ICsgICAgICAgaWYgKHJldCkgew0KPj4gKyAg ICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiY2FuJ3Qgc3RhcnQgJXMgcm9sZVxuIiwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGNkbnMzX2dldF9jdXJyZW50X3JvbGVfZHJpdmVyKGNkbnMp LT5uYW1lKTsNCj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycjsNCj4+ICsgICAgICAgfQ0KPj4g Kw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK2VycjoNCj4+ICsgICAgICAgY2RuczNfZXhp dF9yb2xlcyhjZG5zKTsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiAr LyoqDQo+PiArICogY2RzbjNfZ2V0X3JlYWxfcm9sZSAtIGdldCByZWFsIHJvbGUgb2YgY29udHJv bGxlciBiYXNlZCBvbiBoYXJkd2FyZSBzZXR0aW5ncy4NCj4+ICsgKiBAY2RuczogUG9pbnRlciB0 byBjZG5zMyBzdHJ1Y3R1cmUNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgcm9sZQ0KPj4gKyAqLw0K Pj4gK2VudW0gY2RuczNfcm9sZXMgY2RzbjNfZ2V0X3JlYWxfcm9sZShzdHJ1Y3QgY2RuczMgKmNk bnMpDQo+PiArew0KPj4gKyAgICAgICBlbnVtIGNkbnMzX3JvbGVzIHJvbGUgPSBDRE5TM19ST0xF X0VORDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGNkbnMtPmN1cnJlbnRfZHJfbW9kZSA9PSBVU0Jf RFJfTU9ERV9PVEcpIHsNCj4+ICsgICAgICAgICAgICAgICBpZiAoY2RuczNfZ2V0X2lkKGNkbnMp KQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcm9sZSA9IENETlMzX1JPTEVfR0FER0VUOw0K Pj4gKyAgICAgICAgICAgICAgIGVsc2UNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJvbGUg PSBDRE5TM19ST0xFX0hPU1Q7DQo+PiArICAgICAgIH0gZWxzZSB7DQo+PiArICAgICAgICAgICAg ICAgaWYgKGNkbnMzX2lzX2hvc3QoY2RucykpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBy b2xlID0gQ0ROUzNfUk9MRV9IT1NUOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChjZG5zM19pc19k ZXZpY2UoY2RucykpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICByb2xlID0gQ0ROUzNfUk9M RV9HQURHRVQ7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHJvbGU7DQo+ PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX3JvbGVfc3dpdGNoIC0gd29yayBxdWV1 ZSBoYW5kbGVyIGZvciByb2xlIHN3aXRjaA0KPj4gKyAqDQo+PiArICogQHdvcms6IHdvcmsgcXVl dWUgaXRlbSBzdHJ1Y3R1cmUNCj4+ICsgKg0KPj4gKyAqIEhhbmRsZXMgYmVsb3cgZXZlbnRzOg0K Pj4gKyAqIC0gUm9sZSBzd2l0Y2ggZm9yIGR1YWwtcm9sZSBkZXZpY2VzDQo+PiArICogLSBDRE5T M19ST0xFX0dBREdFVCA8LS0+IENETlMzX1JPTEVfRU5EIGZvciBwZXJpcGhlcmFsLW9ubHkgZGV2 aWNlcw0KPj4gKyAqLw0KPj4gK3N0YXRpYyB2b2lkIGNkbnMzX3JvbGVfc3dpdGNoKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykNCj4+ICt7DQo+PiArICAgICAgIGVudW0gY2RuczNfcm9sZXMgcm9s ZSA9IENETlMzX1JPTEVfRU5EOw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfcm9sZV9kcml2ZXIg KnJvbGVfZHJ2Ow0KPj4gKyAgICAgICBlbnVtIGNkbnMzX3JvbGVzIGN1cnJlbnRfcm9sZTsNCj4+ ICsgICAgICAgc3RydWN0IGNkbnMzICpjZG5zOw0KPj4gKyAgICAgICBpbnQgcmV0ID0gMDsNCj4+ ICsNCj4+ICsgICAgICAgY2RucyA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgY2RuczMsIHJv bGVfc3dpdGNoX3dxKTsNCj4+ICsNCj4+ICsgICAgICAgLyogRHVyaW5nIHN3aXRjaGluZyBjZG5z LT5yb2xlIGNhbiBiZSBkaWZmZXJlbnQgdGhlbiByb2xlICovDQo+PiArICAgICAgIHJvbGUgPSBj ZHNuM19nZXRfcmVhbF9yb2xlKGNkbnMpOw0KPj4gKw0KPj4gKyAgICAgICByb2xlX2RydiA9IGNk bnMzX2dldF9jdXJyZW50X3JvbGVfZHJpdmVyKGNkbnMpOw0KPj4gKw0KPj4gKyAgICAgICBwbV9y dW50aW1lX2dldF9zeW5jKGNkbnMtPmRldik7DQo+PiArDQo+PiArICAgICAgIC8qIERpc2FibGUg Y3VycmVudCByb2xlLiBUaGlzIHN0YXRlIGNhbiBiZSBmb3JjZWQgZnJvbSB1c2VyIHNwYWNlLiAq Lw0KPj4gKyAgICAgICBpZiAoY2Rucy0+ZGVidWdfZGlzYWJsZSAmJiByb2xlX2Rydi0+c3RhdGUg PT0gQ0ROUzNfUk9MRV9TVEFURV9BQ1RJVkUpIHsNCj4+ICsgICAgICAgICAgICAgICBjZG5zM19y b2xlX3N0b3AoY2Rucyk7DQo+PiArICAgICAgICAgICAgICAgZ290byBleGl0Ow0KPj4gKyAgICAg ICB9DQo+PiArDQo+PiArICAgICAgIC8qIERvIG5vdGhpbmcgaWYgbm90aGluZyBjaGFuZ2VkICov DQo+PiArICAgICAgIGlmIChjZG5zLT5yb2xlID09IHJvbGUgJiYgcm9sZV9kcnYtPnN0YXRlID09 IENETlMzX1JPTEVfU1RBVEVfQUNUSVZFKQ0KPj4gKyAgICAgICAgICAgICAgIGdvdG8gZXhpdDsN Cj4+ICsNCj4+ICsgICAgICAgY2RuczNfcm9sZV9zdG9wKGNkbnMpOw0KPj4gKw0KPj4gKyAgICAg ICByb2xlID0gY2RzbjNfZ2V0X3JlYWxfcm9sZShjZG5zKTsNCj4+ICsNCj4+ICsgICAgICAgY3Vy cmVudF9yb2xlID0gY2Rucy0+cm9sZTsNCj4+ICsgICAgICAgZGV2X2RiZyhjZG5zLT5kZXYsICJT d2l0Y2hpbmcgcm9sZSIpOw0KPj4gKw0KPj4gKyAgICAgICByZXQgPSBjZG5zM19yb2xlX3N0YXJ0 KGNkbnMsIHJvbGUpOw0KPj4gKyAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgICAg LyogQmFjayB0byBjdXJyZW50IHJvbGUgKi8NCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGNk bnMtPmRldiwgInNldCAlZCBoYXMgZmFpbGVkLCBiYWNrIHRvICVkXG4iLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcm9sZSwgY3VycmVudF9yb2xlKTsNCj4+ICsgICAgICAgICAgICAgICBj ZG5zM19yb2xlX3N0YXJ0KGNkbnMsIGN1cnJlbnRfcm9sZSk7DQo+PiArICAgICAgIH0NCj4+ICtl eGl0Og0KPj4gKyAgICAgICBwbV9ydW50aW1lX3B1dF9zeW5jKGNkbnMtPmRldik7DQo+PiArfQ0K Pj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX3Byb2JlIC0gcHJvYmUgZm9yIGNkbnMzIGNvcmUg ZGV2aWNlDQo+PiArICogQHBkZXY6IFBvaW50ZXIgdG8gY2RuczMgY29yZSBwbGF0Zm9ybSBkZXZp Y2UNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG90aGVyd2lzZSBuZWdhdGl2 ZSBlcnJubw0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9 ICZwZGV2LT5kZXY7DQo+PiArICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzOw0KPj4gKyAgICAg ICBzdHJ1Y3QgY2RuczMgKmNkbnM7DQo+PiArICAgICAgIHZvaWQgX19pb21lbSAqcmVnczsNCj4+ ICsgICAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsgICAgICAgY2RucyA9IGRldm1fa3phbGxvYyhk ZXYsIHNpemVvZigqY2RucyksIEdGUF9LRVJORUwpOw0KPj4gKyAgICAgICBpZiAoIWNkbnMpDQo+ PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArICAgICAgIGNkbnMt PmRldiA9IGRldjsNCj4+ICsNCj4+ICsgICAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwg Y2Rucyk7DQo+PiArDQo+PiArICAgICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2 LCBJT1JFU09VUkNFX0lSUSwgMCk7DQo+PiArICAgICAgIGlmICghcmVzKSB7DQo+PiArICAgICAg ICAgICAgICAgZGV2X2VycihkZXYsICJtaXNzaW5nIElSUVxuIik7DQo+PiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FTk9ERVY7DQo+PiArICAgICAgIH0NCj4+ICsgICAgICAgY2Rucy0+aXJxID0g cmVzLT5zdGFydDsNCj4+ICsNCj4+ICsgICAgICAgY2Rucy0+eGhjaV9yZXNbMF0gPSAqcmVzOw0K Pj4gKw0KPj4gKyAgICAgICAvKg0KPj4gKyAgICAgICAgKiBSZXF1ZXN0IG1lbW9yeSByZWdpb24N Cj4+ICsgICAgICAgICogcmVnaW9uLTA6IHhIQ0kNCj4+ICsgICAgICAgICogcmVnaW9uLTE6IFBl cmlwaGVyYWwNCj4+ICsgICAgICAgICogcmVnaW9uLTI6IE9URyByZWdpc3RlcnMNCj4+ICsgICAg ICAgICovDQo+PiArICAgICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRl diwgSU9SRVNPVVJDRV9NRU0sICJ4aGNpIik7DQo+PiArICAgICAgIGlmICghcmVzKQ0KPj4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRU5YSU87DQo+PiArDQo+PiArICAgICAgIGNkbnMtPnhoY2lf cmVzWzFdID0gKnJlczsNCj4+ICsNCj4+ICsgICAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291 cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgImRldiIpOw0KPj4gKyAgICAgICByZWdz ID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsNCj4+ICsgICAgICAgaWYgKElTX0VS UihyZWdzKSkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihyZWdzKTsNCj4+ICsg ICAgICAgY2Rucy0+ZGV2X3JlZ3MgID0gcmVnczsNCj4+ICsNCj4+ICsgICAgICAgcmVzID0gcGxh dGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgIm90ZyIpOw0K Pj4gKyAgICAgICBpZiAoIXJlcykNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOWElPOw0K Pj4gKw0KPj4gKyAgICAgICBjZG5zLT5vdGdfcmVzID0gKnJlczsNCj4+ICsNCj4+ICsgICAgICAg bXV0ZXhfaW5pdCgmY2Rucy0+bXV0ZXgpOw0KPj4gKw0KPj4gKyAgICAgICBjZG5zLT5waHkgPSBk ZXZtX3BoeV9vcHRpb25hbF9nZXQoZGV2LCAiY2RuczMsdXNicGh5Iik7DQo+PiArICAgICAgIGlm IChJU19FUlIoY2Rucy0+cGh5KSkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihj ZG5zLT5waHkpOw0KPj4gKw0KPj4gKyAgICAgICBwaHlfaW5pdChjZG5zLT5waHkpOw0KPj4gKw0K Pj4gKyAgICAgICBJTklUX1dPUksoJmNkbnMtPnJvbGVfc3dpdGNoX3dxLCBjZG5zM19yb2xlX3N3 aXRjaCk7DQo+PiArDQo+PiArICAgICAgIHJldCA9IGNkbnMzX2RyZF9pbml0KGNkbnMpOw0KPj4g KyAgICAgICBpZiAocmV0KQ0KPj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyOw0KPj4gKw0KPj4g KyAgICAgICByZXQgPSBjZG5zM19jb3JlX2luaXRfcm9sZShjZG5zKTsNCj4+ICsgICAgICAgaWYg KHJldCkNCj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycjsNCj4+ICsNCj4+ICsgICAgICAgY2Ru czNfZGVidWdmc19pbml0KGNkbnMpOw0KPj4gKyAgICAgICBkZXZpY2Vfc2V0X3dha2V1cF9jYXBh YmxlKGRldiwgdHJ1ZSk7DQo+PiArICAgICAgIHBtX3J1bnRpbWVfc2V0X2FjdGl2ZShkZXYpOw0K Pj4gKyAgICAgICBwbV9ydW50aW1lX2VuYWJsZShkZXYpOw0KPj4gKw0KPj4gKyAgICAgICAvKg0K Pj4gKyAgICAgICAgKiBUaGUgY29udHJvbGxlciBuZWVkcyBsZXNzIHRpbWUgYmV0d2VlbiBidXMg YW5kIGNvbnRyb2xsZXIgc3VzcGVuZCwNCj4+ICsgICAgICAgICogYW5kIHdlIGFsc28gbmVlZHMg YSBzbWFsbCBkZWxheSB0byBhdm9pZCBmcmVxdWVudGx5IGVudGVyaW5nIGxvdw0KPj4gKyAgICAg ICAgKiBwb3dlciBtb2RlLg0KPj4gKyAgICAgICAgKi8NCj4+ICsgICAgICAgcG1fcnVudGltZV9z ZXRfYXV0b3N1c3BlbmRfZGVsYXkoZGV2LCAyMCk7DQo+PiArICAgICAgIHBtX3J1bnRpbWVfbWFy a19sYXN0X2J1c3koZGV2KTsNCj4+ICsgICAgICAgcG1fcnVudGltZV91c2VfYXV0b3N1c3BlbmQo ZGV2KTsNCj4+ICsgICAgICAgZGV2X2RiZyhkZXYsICJDYWRlbmNlIFVTQjMgY29yZTogcHJvYmUg c3VjY2VlZFxuIik7DQo+PiArDQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gK2VycjoN Cj4+ICsgICAgICAgcGh5X2V4aXQoY2Rucy0+cGh5KTsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsN Cj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfcmVtb3ZlIC0gdW5iaW5kIGRyZCBk cml2ZXIgYW5kIGNsZWFuIHVwDQo+PiArICogQHBkZXY6IFBvaW50ZXIgdG8gTGludXggcGxhdGZv cm0gZGV2aWNlDQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvdGhlcndpc2Ug bmVnYXRpdmUgZXJybm8NCj4+ICsgKi8NCj4+ICtzdGF0aWMgaW50IGNkbnMzX3JlbW92ZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IGNkbnMz ICpjZG5zID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+PiArDQo+PiArICAgICAgIHBt X3J1bnRpbWVfZ2V0X3N5bmMoJnBkZXYtPmRldik7DQo+PiArICAgICAgIHBtX3J1bnRpbWVfZGlz YWJsZSgmcGRldi0+ZGV2KTsNCj4+ICsgICAgICAgcG1fcnVudGltZV9wdXRfbm9pZGxlKCZwZGV2 LT5kZXYpOw0KPj4gKyAgICAgICBjZG5zM19kZWJ1Z2ZzX2V4aXQoY2Rucyk7DQo+PiArICAgICAg IGNkbnMzX2V4aXRfcm9sZXMoY2Rucyk7DQo+PiArICAgICAgIHBoeV9leGl0KGNkbnMtPnBoeSk7 DQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsjaWZkZWYgQ09ORklHX09G DQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2ZfY2RuczNfbWF0Y2hbXSA9 IHsNCj4+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJjZG5zLHVzYjMtMS4wLjAiIH0sDQo+PiAr ICAgICAgIHsgLmNvbXBhdGlibGUgPSAiY2Rucyx1c2IzLTEuMC4xIiB9LA0KPj4gKyAgICAgICB7 IH0sDQo+PiArfTsNCj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9jZG5zM19tYXRjaCk7 DQo+PiArI2VuZGlmDQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2Ru czNfZHJpdmVyID0gew0KPj4gKyAgICAgICAucHJvYmUgICAgICAgICAgPSBjZG5zM19wcm9iZSwN Cj4+ICsgICAgICAgLnJlbW92ZSAgICAgICAgID0gY2RuczNfcmVtb3ZlLA0KPj4gKyAgICAgICAu ZHJpdmVyICAgICAgICAgPSB7DQo+PiArICAgICAgICAgICAgICAgLm5hbWUgICA9ICJjZG5zLXVz YjMiLA0KPj4gKyAgICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cihv Zl9jZG5zM19tYXRjaCksDQo+PiArICAgICAgIH0sDQo+PiArfTsNCj4+ICsNCj4+ICttb2R1bGVf cGxhdGZvcm1fZHJpdmVyKGNkbnMzX2RyaXZlcik7DQo+PiArDQo+PiArTU9EVUxFX0FMSUFTKCJw bGF0Zm9ybTpjZG5zMyIpOw0KPj4gK01PRFVMRV9BVVRIT1IoIlBhd2VsIExhc3pjemFrIDxwYXdl bGxAY2FkZW5jZS5jb20+Iik7DQo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0KPj4gK01P RFVMRV9ERVNDUklQVElPTigiQ2FkZW5jZSBVU0IzIERSRCBDb250cm9sbGVyIERyaXZlciIpOw0K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2NvcmUuaCBiL2RyaXZlcnMvdXNiL2Nk bnMzL2NvcmUuaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAw MC4uZmI0YjM5MjA2MTU4DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3VzYi9j ZG5zMy9jb3JlLmgNCj4+IEBAIC0wLDAgKzEsMTE2IEBADQo+PiArLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4+ICsvKg0KPj4gKyAqIENhZGVuY2UgVVNCU1MgRFJEIEhl YWRlciBGaWxlLg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggTlhQDQo+ PiArICogQ29weXJpZ2h0IChDKSAyMDE4IENhZGVuY2UuDQo+PiArICoNCj4+ICsgKiBBdXRob3Jz OiBQZXRlciBDaGVuIDxwZXRlci5jaGVuQG54cC5jb20+DQo+PiArICogICAgICAgICAgUGF3ZWwg TGFzemN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4NCj4+ICsgKi8NCj4+ICsjaW5jbHVkZSA8bGlu dXgvdXNiL290Zy5oPg0KPj4gKw0KPj4gKyNpZm5kZWYgX19MSU5VWF9DRE5TM19DT1JFX0gNCj4+ ICsjZGVmaW5lIF9fTElOVVhfQ0ROUzNfQ09SRV9IDQo+PiArDQo+PiArc3RydWN0IGNkbnMzOw0K Pj4gK2VudW0gY2RuczNfcm9sZXMgew0KPj4gKyAgICAgICBDRE5TM19ST0xFX0hPU1QgPSAwLA0K Pj4gKyAgICAgICBDRE5TM19ST0xFX0dBREdFVCwNCj4+ICsgICAgICAgQ0ROUzNfUk9MRV9FTkQs DQo+PiArfTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBzdHJ1Y3QgY2RuczNfcm9sZV9kcml2ZXIg LSBob3N0L2dhZGdldCByb2xlIGRyaXZlcg0KPj4gKyAqIEBzdGFydDogc3RhcnQgdGhpcyByb2xl DQo+PiArICogQHN0b3A6IHN0b3AgdGhpcyByb2xlDQo+PiArICogQHN1c3BlbmQ6IHN1c3BlbmQg Y2FsbGJhY2sgZm9yIHRoaXMgcm9sZQ0KPj4gKyAqIEByZXN1bWU6IHJlc3VtZSBjYWxsYmFjayBm b3IgdGhpcyByb2xlDQo+PiArICogQGlycTogaXJxIGhhbmRsZXIgZm9yIHRoaXMgcm9sZQ0KPj4g KyAqIEBuYW1lOiByb2xlIG5hbWUgc3RyaW5nIChob3N0L2dhZGdldCkNCj4+ICsgKiBAc3RhdGU6 IGN1cnJlbnQgc3RhdGUNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2RuczNfcm9sZV9kcml2ZXIgew0K Pj4gKyAgICAgICBpbnQgKCpzdGFydCkoc3RydWN0IGNkbnMzICpjZG5zKTsNCj4+ICsgICAgICAg dm9pZCAoKnN0b3ApKHN0cnVjdCBjZG5zMyAqY2Rucyk7DQo+PiArICAgICAgIGludCAoKnN1c3Bl bmQpKHN0cnVjdCBjZG5zMyAqY2RucywgYm9vbCBkb193YWtldXApOw0KPj4gKyAgICAgICBpbnQg KCpyZXN1bWUpKHN0cnVjdCBjZG5zMyAqY2RucywgYm9vbCBoaWJlcm5hdGVkKTsNCj4+ICsgICAg ICAgY29uc3QgY2hhciAqbmFtZTsNCj4+ICsjZGVmaW5lIENETlMzX1JPTEVfU1RBVEVfSU5BQ1RJ VkUgICAgICAwDQo+PiArI2RlZmluZSBDRE5TM19ST0xFX1NUQVRFX0FDVElWRSAgICAgICAgICAg ICAgICAxDQo+PiArICAgICAgIGludCBzdGF0ZTsNCj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUg Q0ROUzNfWEhDSV9SRVNPVVJDRVNfTlVNICAgICAgIDINCj4+ICsvKioNCj4+ICsgKiBzdHJ1Y3Qg Y2RuczMgLSBSZXByZXNlbnRhdGlvbiBvZiBDYWRlbmNlIFVTQjMgRFJEIGNvbnRyb2xsZXIuDQo+ PiArICogQGRldjogcG9pbnRlciB0byBDYWRlbmNlIGRldmljZSBzdHJ1Y3QNCj4+ICsgKiBAeGhj aV9yZWdzOiBwb2ludGVyIHRvIGJhc2Ugb2YgeGhjaSByZWdpc3RlcnMNCj4+ICsgKiBAeGhjaV9y ZXM6IHRoZSByZXNvdXJjZSBmb3IgeGhjaQ0KPj4gKyAqIEBkZXZfcmVnczogcG9pbnRlciB0byBi YXNlIG9mIGRldiByZWdpc3RlcnMNCj4+ICsgKiBAb3RnX3JlZ3M6IHBvaW50ZXIgdG8gYmFzZSBv ZiBvdGcgcmVnaXN0ZXJzDQo+PiArICogQGlycTogaXJxIG51bWJlciBmb3IgY29udHJvbGxlcg0K Pj4gKyAqIEByb2xlczogYXJyYXkgb2Ygc3VwcG9ydGVkIHJvbGVzIGZvciB0aGlzIGNvbnRyb2xs ZXINCj4+ICsgKiBAcm9sZTogY3VycmVudCByb2xlDQo+PiArICogQGhvc3RfZGV2OiB0aGUgY2hp bGQgaG9zdCBkZXZpY2UgcG9pbnRlciBmb3IgY2RuczMgY29yZQ0KPj4gKyAqIEBnYWRnZXRfZGV2 OiB0aGUgY2hpbGQgZ2FkZ2V0IGRldmljZSBwb2ludGVyIGZvciBjZG5zMyBjb3JlDQo+PiArICog QHVzYjogcGh5IGZvciB0aGlzIGNvbnRyb2xsZXINCj4+ICsgKiBAcm9sZV9zd2l0Y2hfd3E6IHdv cmsgcXVldWUgaXRlbSBmb3Igcm9sZSBzd2l0Y2gNCj4+ICsgKiBAaW5fbHBtOiB0aGUgY29udHJv bGxlciBpbiBsb3cgcG93ZXIgbW9kZQ0KPj4gKyAqIEB3YWtldXBfaW50OiB0aGUgd2FrZXVwIGlu dGVycnVwdA0KPj4gKyAqIEBtdXRleDogdGhlIG11dGV4IGZvciBjb25jdXJyZW50IGNvZGUgYXQg ZHJpdmVyDQo+PiArICogQGRyX21vZGU6IHN1cHBvcnRlZCBtb2RlIG9mIG9wZXJhdGlvbiBpdCBj YW4gYmUgb25seSBIb3N0LCBvbmx5IERldmljZQ0KPj4gKyAqICAgICAgICAgICBvciBPVEcgbW9k ZSB0aGF0IGFsbG93IHRvIHN3aXRjaCBiZXR3ZWVuIERldmljZSBhbmQgSG9zdCBtb2RlLg0KPj4g KyAqICAgICAgICAgICBUaGlzIGZpZWxkIGJhc2VkIG9uIGZpcm13YXJlIHNldHRpbmcsIGtlcm5l bCBjb25maWd1cmF0aW9uDQo+PiArICogICAgICAgICAgIGFuZCBoYXJkd2FyZSBjb25maWd1cmF0 aW9uLg0KPj4gKyAqIEBjdXJyZW50X2RyX21vZGU6IGN1cnJlbnQgbW9kZSBvZiBvcGVyYXRpb24g d2hlbiBpbiBkdWFsLXJvbGUgbW9kZQ0KPj4gKyAqIEBkZXNpcmVkX2RyX21vZGU6IGRlc2lyZWQg bW9kZSBvZiBvcGVyYXRpb24gd2hlbiBpbiBkdWFsLXJvbGUgbW9kZS4NCj4+ICsgKiAgICAgICAg ICAgVGhpcyB2YWx1ZSBjYW4gYmUgY2hhbmdlZCBkdXJpbmcgcnVudGltZS4NCj4+ICsgKiAgICAg ICAgICAgQXZhaWxhYmxlIG9wdGlvbnMgZGVwZW5kcyBvbiAgZHJfbW9kZToNCj4+ICsgKiAgICAg ICAgICAgZHJfbW9kZSAgICAgICAgICAgICAgICAgfCAgZGVzaXJlZF9kcl9tb2RlIGFuZCBjdXJy ZW50X2RyX21vZGUNCj4+ICsgKiAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gKyAqICAgICAgICAgICBV U0JfRFJfTU9ERV9IT1NUICAgICAgICB8IG9ubHkgVVNCX0RSX01PREVfSE9TVA0KPj4gKyAqICAg ICAgICAgICBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMICB8IG9ubHkgVVNCX0RSX01PREVfUEVSSVBI RVJBTA0KPj4gKyAqICAgICAgICAgICBVU0JfRFJfTU9ERV9PVEcgICAgICAgICB8IG9ubHkgVVNC X0RSX01PREVfSE9TVA0KPj4gKyAqICAgICAgICAgICBVU0JfRFJfTU9ERV9PVEcgICAgICAgICB8 IG9ubHkgVVNCX0RSX01PREVfUEVSSVBIRVJBTA0KPj4gKyAqICAgICAgICAgICBVU0JfRFJfTU9E RV9PVEcgICAgICAgICB8IFVTQl9EUl9NT0RFX09URw0KPj4gKyAqDQo+PiArICogICAgICAgICAg IERlc2lyZWRfZHJfcm9sZSBjYW4gYmUgY2hhbmdlZCBieSBtZWFucyBvZiBkZWJ1Z2ZzLg0KPj4g KyAqIEByb290OiBkZWJ1Z2ZzIHJvb3QgZm9sZGVyIHBvaW50ZXINCj4+ICsgKiBAZGVidWdfZGlz YWJsZToNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2RuczMgew0KPj4gKyAgICAgICBzdHJ1Y3QgZGV2 aWNlICAgICAgICAgICAgICAgICAgICpkZXY7DQo+PiArICAgICAgIHZvaWQgX19pb21lbSAgICAg ICAgICAgICAgICAgICAgKnhoY2lfcmVnczsNCj4+ICsgICAgICAgc3RydWN0IHJlc291cmNlICAg ICAgICAgICAgICAgICB4aGNpX3Jlc1tDRE5TM19YSENJX1JFU09VUkNFU19OVU1dOw0KPj4gKyAg ICAgICBzdHJ1Y3QgY2RuczNfdXNiX3JlZ3MgX19pb21lbSAgICpkZXZfcmVnczsNCj4+ICsNCj4+ ICsgICAgICAgc3RydWN0IHJlc291cmNlICAgICAgICAgICAgICAgICBvdGdfcmVzOw0KPj4gKyAg ICAgICBzdHJ1Y3QgY2RuczNfb3RnX2xlZ2FjeV9yZWdzICAgICpvdGdfdjBfcmVnczsNCj4+ICsg ICAgICAgc3RydWN0IGNkbnMzX290Z19yZWdzICAgICAgICAgICAqb3RnX3YxX3JlZ3M7DQo+PiAr ICAgICAgIHN0cnVjdCBjZG5zM19vdGdfY29tbW9uX3JlZ3MgICAgKm90Z19yZWdzOw0KPj4gKyNk ZWZpbmUgQ0ROUzNfQ09OVFJPTExFUl9WMCAgICAwDQo+PiArI2RlZmluZSBDRE5TM19DT05UUk9M TEVSX1YxICAgIDENCj4+ICsgICAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 ZXJzaW9uOw0KPj4gKw0KPj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlycTsNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX3JvbGVfZHJpdmVyICAgICAgICAqcm9sZXNb Q0ROUzNfUk9MRV9FTkRdOw0KPj4gKyAgICAgICBlbnVtIGNkbnMzX3JvbGVzICAgICAgICAgICAg ICAgIHJvbGU7DQo+PiArICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgICAgICAgICAgKmhv c3RfZGV2Ow0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNlICAgICAgICAgICAgICpnYWRn ZXRfZGV2Ow0KPj4gKyAgICAgICBzdHJ1Y3QgcGh5ICAgICAgICAgICAgICAgICAgICAgICpwaHk7 DQo+PiArICAgICAgIHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcm9sZV9zd2l0Y2hf d3E7DQo+PiArICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fbHBtOjE7 DQo+PiArICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FrZXVwX2ludDox Ow0KPj4gKyAgICAgICAvKiBtdXRleHQgdXNlZCBpbiB3b3JrcXVldWUqLw0KPj4gKyAgICAgICBz dHJ1Y3QgbXV0ZXggICAgICAgICAgICAgICAgICAgIG11dGV4Ow0KPj4gKyAgICAgICBlbnVtIHVz Yl9kcl9tb2RlICAgICAgICAgICAgICAgIGRyX21vZGU7DQo+PiArICAgICAgIGVudW0gdXNiX2Ry X21vZGUgICAgICAgICAgICAgICAgY3VycmVudF9kcl9tb2RlOw0KPj4gKyAgICAgICBlbnVtIHVz Yl9kcl9tb2RlICAgICAgICAgICAgICAgIGRlc2lyZWRfZHJfbW9kZTsNCj4+ICsgICAgICAgc3Ry dWN0IGRlbnRyeSAgICAgICAgICAgICAgICAgICAqcm9vdDsNCj4+ICsgICAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19kaXNhYmxlOjE7DQo+PiArfTsNCj4+ICsNCj4+ ICt2b2lkIGNkbnMzX3JvbGVfc3RvcChzdHJ1Y3QgY2RuczMgKmNkbnMpOw0KPj4gKw0KPj4gKyNl bmRpZiAvKiBfX0xJTlVYX0NETlMzX0NPUkVfSCAqLw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL2NkbnMzL2RlYnVnLmggYi9kcml2ZXJzL3VzYi9jZG5zMy9kZWJ1Zy5oDQo+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xOTI5ZWRiM2E1MjENCj4+IC0t LSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnMzL2RlYnVnLmgNCj4+IEBAIC0w LDAgKzEsMTY4IEBADQo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8N Cj4+ICsvKg0KPj4gKyAqIENhZGVuY2UgVVNCU1MgRFJEIERyaXZlci4NCj4+ICsgKiBEZWJ1ZyBo ZWFkZXIgZmlsZS4NCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBDYWRlbmNlLg0K Pj4gKyAqDQo+PiArICogQXV0aG9yOiBQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29t Pg0KPj4gKyAqLw0KPj4gKyNpZm5kZWYgX19MSU5VWF9DRE5TM19ERUJVRw0KPj4gKyNkZWZpbmUg X19MSU5VWF9DRE5TM19ERUJVRw0KPj4gKw0KPj4gKyNpbmNsdWRlICJjb3JlLmgiDQo+PiArDQo+ PiArc3RhdGljIGlubGluZSBjaGFyICpjZG5zM19kZWNvZGVfdXNiX2lycShjaGFyICpzdHIsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gdXNiX2Rldmlj ZV9zcGVlZCBzcGVlZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdTMyIHVzYl9pc3RzKQ0KPj4gK3sNCj4+ICsgICAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsg ICAgICAgcmV0ID0gc3ByaW50ZihzdHIsICJJUlEgJTA4eCA9ICIsIHVzYl9pc3RzKTsNCj4+ICsN Cj4+ICsgICAgICAgaWYgKHVzYl9pc3RzICYgKFVTQl9JU1RTX0NPTjJJIHwgVVNCX0lTVFNfQ09O SSkpIHsNCj4+ICsgICAgICAgICAgICAgICByZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJDb25u ZWN0aW9uICVzXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYl9zcGVl ZF9zdHJpbmcoc3BlZWQpKTsNCj4+ICsgICAgICAgfQ0KPj4gKyAgICAgICBpZiAodXNiX2lzdHMg JiBVU0JfSVNUU19DT04ySSB8fCB1c2JfaXN0cyAmIFVTQl9JU1RTX0NPTkkpDQo+PiArICAgICAg ICAgICAgICAgcmV0ICs9IHNwcmludGYoc3RyICsgcmV0LCAiRGlzY29ubmVjdGlvbiAiKTsNCj4+ ICsgICAgICAgaWYgKHVzYl9pc3RzICYgVVNCX0lTVFNfTDJFTlRJKQ0KPj4gKyAgICAgICAgICAg ICAgIHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwgInN1c3BlbmRlZCAiKTsNCj4+ICsNCj4+ICsg ICAgICAgaWYgKHVzYl9pc3RzICYgVVNCX0lTVFNfTDJFWFRJKQ0KPj4gKyAgICAgICAgICAgICAg IHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwgIkwyIGV4aXQgIik7DQo+PiArICAgICAgIGlmICh1 c2JfaXN0cyAmIFVTQl9JU1RTX1UzRVhUSSkNCj4+ICsgICAgICAgICAgICAgICByZXQgKz0gc3By aW50ZihzdHIgKyByZXQsICJVMyBleGl0ICIpOw0KPj4gKyAgICAgICBpZiAodXNiX2lzdHMgJiBV U0JfSVNUU19VV1JFU0kpDQo+PiArICAgICAgICAgICAgICAgcmV0ICs9IHNwcmludGYoc3RyICsg cmV0LCAiV2FybSBSZXNldCAiKTsNCj4+ICsgICAgICAgaWYgKHVzYl9pc3RzICYgVVNCX0lTVFNf VUhSRVNJKQ0KPj4gKyAgICAgICAgICAgICAgIHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwgIkhv dCBSZXNldCAiKTsNCj4+ICsgICAgICAgaWYgKHVzYl9pc3RzICYgVVNCX0lTVFNfVTJSRVNJKQ0K Pj4gKyAgICAgICAgICAgICAgIHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwgIlJlc2V0Iik7DQo+ PiArDQo+PiArICAgICAgIHJldHVybiBzdHI7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxp bmUgIGNoYXIgKmNkbnMzX2RlY29kZV9lcF9pcnEoY2hhciAqc3RyLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgZXBfc3RzLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcF9uYW1lKQ0KPj4gK3sN Cj4+ICsgICAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsgICAgICAgcmV0ID0gc3ByaW50ZihzdHIs ICJJUlEgZm9yICVzOiAlMDh4ICIsIGVwX25hbWUsIGVwX3N0cyk7DQo+PiArDQo+PiArICAgICAg IGlmIChlcF9zdHMgJiBFUF9TVFNfU0VUVVApDQo+PiArICAgICAgICAgICAgICAgcmV0ICs9IHNw cmludGYoc3RyICsgcmV0LCAiU0VUVVAgIik7DQo+PiArICAgICAgIGlmIChlcF9zdHMgJiBFUF9T VFNfSU9DKQ0KPj4gKyAgICAgICAgICAgICAgIHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwgIklP QyAiKTsNCj4+ICsgICAgICAgaWYgKGVwX3N0cyAmIEVQX1NUU19JU1ApDQo+PiArICAgICAgICAg ICAgICAgcmV0ICs9IHNwcmludGYoc3RyICsgcmV0LCAiSVNQICIpOw0KPj4gKyAgICAgICBpZiAo ZXBfc3RzICYgRVBfU1RTX0RFU0NNSVMpDQo+PiArICAgICAgICAgICAgICAgcmV0ICs9IHNwcmlu dGYoc3RyICsgcmV0LCAiREVTQ01JUyAiKTsNCj4+ICsgICAgICAgaWYgKGVwX3N0cyAmIEVQX1NU U19TVFJFQU1SKQ0KPj4gKyAgICAgICAgICAgICAgIHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwg IlNUUkVBTVIgIik7DQo+PiArICAgICAgIGlmIChlcF9zdHMgJiBFUF9TVFNfTURfRVhJVCkNCj4+ ICsgICAgICAgICAgICAgICByZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJNRF9FWElUICIpOw0K Pj4gKyAgICAgICBpZiAoZXBfc3RzICYgRVBfU1RTX1RSQkVSUikNCj4+ICsgICAgICAgICAgICAg ICByZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJUUkJFUlIgIik7DQo+PiArICAgICAgIGlmIChl cF9zdHMgJiBFUF9TVFNfTlJEWSkNCj4+ICsgICAgICAgICAgICAgICByZXQgKz0gc3ByaW50Zihz dHIgKyByZXQsICJOUkRZICIpOw0KPj4gKyAgICAgICBpZiAoZXBfc3RzICYgRVBfU1RTX1BSSU1F KQ0KPj4gKyAgICAgICAgICAgICAgIHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwgIlBSSU1FICIp Ow0KPj4gKyAgICAgICBpZiAoZXBfc3RzICYgRVBfU1RTX1NJREVSUikNCj4+ICsgICAgICAgICAg ICAgICByZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJTSURFUlJUICIpOw0KPj4gKyAgICAgICBp ZiAoZXBfc3RzICYgRVBfU1RTX09VVFNNTSkNCj4+ICsgICAgICAgICAgICAgICByZXQgKz0gc3By aW50ZihzdHIgKyByZXQsICJPVVRTTU0gIik7DQo+PiArICAgICAgIGlmIChlcF9zdHMgJiBFUF9T VFNfSVNPRVJSKQ0KPj4gKyAgICAgICAgICAgICAgIHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwg IklTT0VSUiAiKTsNCj4+ICsgICAgICAgaWYgKGVwX3N0cyAmIEVQX1NUU19JT1QpDQo+PiArICAg ICAgICAgICAgICAgcmV0ICs9IHNwcmludGYoc3RyICsgcmV0LCAiSU9UICIpOw0KPj4gKw0KPj4g KyAgICAgICByZXR1cm4gc3RyOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIGNoYXIg KmNkbnMzX2RlY29kZV9lcHhfaXJxKGNoYXIgKnN0ciwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hhciAqZXBfbmFtZSwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGVwX3N0cykNCj4+ICt7DQo+PiArICAgICAgIHJl dHVybiBjZG5zM19kZWNvZGVfZXBfaXJxKHN0ciwgZXBfc3RzLCBlcF9uYW1lKTsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGlubGluZSBjaGFyICpjZG5zM19kZWNvZGVfZXAwX2lycShjaGFyICpz dHIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXIs DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBlcF9zdHMp DQo+PiArew0KPj4gKyAgICAgICByZXR1cm4gY2RuczNfZGVjb2RlX2VwX2lycShzdHIsIGVwX3N0 cywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyID8gImVwMElOIiA6 ICJlcDBPVVQiKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogRGVidWcgYSB0cmFuc2Zl ciByaW5nLg0KPj4gKyAqDQo+PiArICogUHJpbnRzIG91dCBhbGwgVFJCcyBpbiB0aGUgZW5kcG9p bnQgcmluZywgZXZlbiB0aG9zZSBhZnRlciB0aGUgTGluayBUUkIuDQo+PiArICouDQo+PiArICov DQo+PiArc3RhdGljIGlubGluZSBjaGFyICpjZG5zM19kYmdfcmluZyhzdHJ1Y3QgY2RuczNfZW5k cG9pbnQgKnByaXZfZXAsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBjZG5zM190cmIgKnJpbmcsIGNoYXIgKnN0cikNCj4+ICt7DQo+PiArICAgICAgIGRtYV9h ZGRyX3QgYWRkciA9IHByaXZfZXAtPnRyYl9wb29sX2RtYTsNCj4+ICsgICAgICAgc3RydWN0IGNk bnMzX3RyYiAqdHJiOw0KPj4gKyAgICAgICBpbnQgdHJiX3Blcl9zZWN0b3I7DQo+PiArICAgICAg IGludCByZXQgPSAwOw0KPj4gKyAgICAgICBpbnQgaTsNCj4+ICsNCj4+ICsgICAgICAgdHJiX3Bl cl9zZWN0b3IgPSBHRVRfVFJCU19QRVJfU0VHTUVOVChwcml2X2VwLT50eXBlKTsNCj4+ICsNCj4+ ICsgICAgICAgdHJiID0gJnByaXZfZXAtPnRyYl9wb29sW3ByaXZfZXAtPmRlcXVldWVdOw0KPj4g KyAgICAgICByZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJcblx0XHRSaW5nIGNvbnRlbnRzIGZv ciAlczoiLCBwcml2X2VwLT5uYW1lKTsNCj4+ICsNCj4+ICsgICAgICAgcmV0ICs9IHNwcmludGYo c3RyICsgcmV0LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAiXG5cdFx0UmluZyBkZXEgaW5k ZXg6ICVkLCB0cmI6ICVwICh2aXJ0KSwgMHglbGx4IChkbWEpXG4iLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICBwcml2X2VwLT5kZXF1ZXVlLCB0cmIsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICh1bnNpZ25lZCBsb25nIGxvbmcpY2RuczNfdHJiX3ZpcnRfdG9fZG1hKHByaXZfZXAsIHRy YikpOw0KPj4gKw0KPj4gKyAgICAgICB0cmIgPSAmcHJpdl9lcC0+dHJiX3Bvb2xbcHJpdl9lcC0+ ZW5xdWV1ZV07DQo+PiArICAgICAgIHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIlx0XHRSaW5nIGVucSBpbmRleDogJWQsIHRyYjogJXAgKHZpcnQp LCAweCVsbHggKGRtYSlcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPmVu cXVldWUsIHRyYiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9u ZyljZG5zM190cmJfdmlydF90b19kbWEocHJpdl9lcCwgdHJiKSk7DQo+PiArDQo+PiArICAgICAg IHJldCArPSBzcHJpbnRmKHN0ciArIHJldCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIlx0 XHRmcmVlIHRyYnM6ICVkLCBDQ1M9JWQsIFBDUz0lZFxuIiwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgcHJpdl9lcC0+ZnJlZV90cmJzLCBwcml2X2VwLT5jY3MsIHByaXZfZXAtPnBjcyk7DQo+ PiArDQo+PiArICAgICAgIGlmICh0cmJfcGVyX3NlY3RvciA+IFRSQlNfUEVSX1NFR01FTlQpDQo+ PiArICAgICAgICAgICAgICAgdHJiX3Blcl9zZWN0b3IgPSBUUkJTX1BFUl9TRUdNRU5UOw0KPj4g Kw0KPj4gKyAgICAgICBpZiAodHJiX3Blcl9zZWN0b3IgPiBUUkJTX1BFUl9TRUdNRU5UKSB7DQo+ PiArICAgICAgICAgICAgICAgc3ByaW50ZihzdHIgKyByZXQsICJcdFx0VG8gYmlnIHRyYW5zZmVy IHJpbmcgJWRcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICB0cmJfcGVyX3NlY3Rvcik7 DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4g KyAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHJiX3Blcl9zZWN0b3I7ICsraSkgew0KPj4gKyAgICAg ICAgICAgICAgIHRyYiA9ICZyaW5nW2ldOw0KPj4gKyAgICAgICAgICAgICAgIHJldCArPSBzcHJp bnRmKHN0ciArIHJldCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICJcdFx0QCVwYWQgJTA4 eCAlMDh4ICUwOHhcbiIsICZhZGRyLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGUzMl90 b19jcHUodHJiLT5idWZmZXIpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGUzMl90b19j cHUodHJiLT5sZW5ndGgpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGUzMl90b19jcHUo dHJiLT5jb250cm9sKSk7DQo+PiArICAgICAgICAgICAgICAgYWRkciArPSBzaXplb2YoKnRyYik7 DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHN0cjsNCj4+ICt9DQo+PiAr DQo+PiArdm9pZCBjZG5zM19kYmcoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsNCj4+ICsNCj4+ICsjaWZkZWYgQ09ORklHX0RFQlVHX0ZTDQo+PiAr dm9pZCBjZG5zM19kZWJ1Z2ZzX2luaXQoc3RydWN0IGNkbnMzICpjZG5zKTsNCj4+ICt2b2lkIGNk bnMzX2RlYnVnZnNfZXhpdChzdHJ1Y3QgY2RuczMgKmNkbnMpOw0KPj4gKyNlbHNlDQo+PiArdm9p ZCBjZG5zM19kZWJ1Z2ZzX2luaXQoc3RydWN0IGNkbnMzICpjZG5zKTsNCj4+ICt7ICB9DQo+PiAr dm9pZCBjZG5zM19kZWJ1Z2ZzX2V4aXQoc3RydWN0IGNkbnMzICpjZG5zKTsNCj4+ICt7ICB9DQo+ PiArI2VuZGlmDQo+PiArDQo+PiArI2VuZGlmIC8qX19MSU5VWF9DRE5TM19ERUJVRyovDQo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2RuczMvZGVidWdmcy5jIGIvZHJpdmVycy91c2IvY2Ru czMvZGVidWdmcy5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAw MDAwLi5kOGZjZDkwZDA1YjMNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvdXNi L2NkbnMzL2RlYnVnZnMuYw0KPj4gQEAgLTAsMCArMSwxNjQgQEANCj4+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4gKy8qDQo+PiArICogQ2FkZW5jZSBVU0JTUyBEUkQg Q29udHJvbGxlciBEZWJ1Z0ZTIGZpbGVyLg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChDKSAy MDE4IENhZGVuY2UuDQo+PiArICoNCj4+ICsgKiBBdXRob3I6IFBhd2VsIExhc3pjemFrIDxwYXdl bGxAY2FkZW5jZS5jb20+DQo+PiArICovDQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgv c2VxX2ZpbGUuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPg0KPj4gKw0KPj4gKyNp bmNsdWRlICJjb3JlLmgiDQo+PiArI2luY2x1ZGUgImdhZGdldC5oIg0KPj4gKyNpbmNsdWRlICJk cmQuaCINCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNkbnMzX21vZGVfc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKnMsIHZvaWQgKnVudXNlZCkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zMyAqY2Ru cyA9IHMtPnByaXZhdGU7DQo+PiArDQo+PiArICAgICAgIHN3aXRjaCAoY2Rucy0+Y3VycmVudF9k cl9tb2RlKSB7DQo+PiArICAgICAgIGNhc2UgVVNCX0RSX01PREVfSE9TVDoNCj4+ICsgICAgICAg ICAgICAgICBzZXFfcHV0cyhzLCAiaG9zdFxuIik7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7 DQo+PiArICAgICAgIGNhc2UgVVNCX0RSX01PREVfUEVSSVBIRVJBTDoNCj4+ICsgICAgICAgICAg ICAgICBzZXFfcHV0cyhzLCAiZGV2aWNlXG4iKTsNCj4+ICsgICAgICAgICAgICAgICBicmVhazsN Cj4+ICsgICAgICAgY2FzZSBVU0JfRFJfTU9ERV9PVEc6DQo+PiArICAgICAgICAgICAgICAgc2Vx X3B1dHMocywgIm90Z1xuIik7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAg IGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgc2VxX3B1dHMocywgIlVOS05PV04gbW9kZVxu Iik7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfbW9kZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmaWxlKQ0KPj4gK3sNCj4+ICsgICAgICAgcmV0dXJuIHNpbmdsZV9vcGVuKGZp bGUsIGNkbnMzX21vZGVfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7DQo+PiArfQ0KPj4gKw0KPj4g K3N0YXRpYyBzc2l6ZV90IGNkbnMzX21vZGVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAq cHBvcykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBzZXFfZmlsZSAgKnMgPSBmaWxlLT5wcml2 YXRlX2RhdGE7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zMyAqY2RucyA9IHMtPnByaXZhdGU7DQo+ PiArICAgICAgIHUzMiBtb2RlID0gVVNCX0RSX01PREVfVU5LTk9XTjsNCj4+ICsgICAgICAgY2hh ciBidWZbMzJdOw0KPj4gKw0KPj4gKyAgICAgICBpZiAoY29weV9mcm9tX3VzZXIoJmJ1ZiwgdWJ1 ZiwgbWluX3Qoc2l6ZV90LCBzaXplb2YoYnVmKSAtIDEsIGNvdW50KSkpDQo+PiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7DQo+PiArDQo+PiArICAgICAgIGlmICghc3RybmNtcChidWYs ICJob3N0IiwgNCkpIHsNCj4+ICsgICAgICAgICAgICAgICBpZiAoY2Rucy0+ZHJfbW9kZSA9PSBV U0JfRFJfTU9ERV9IT1NUIHx8DQo+PiArICAgICAgICAgICAgICAgICAgIGNkbnMtPmRyX21vZGUg PT0gVVNCX0RSX01PREVfT1RHKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0g VVNCX0RSX01PREVfSE9TVDsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArICAgICAgIH0NCj4+ ICsNCj4+ICsgICAgICAgaWYgKCFzdHJuY21wKGJ1ZiwgImRldmljZSIsIDYpKQ0KPj4gKyAgICAg ICAgICAgICAgIGlmIChjZG5zLT5kcl9tb2RlID09IFVTQl9EUl9NT0RFX1BFUklQSEVSQUwgfHwN Cj4+ICsgICAgICAgICAgICAgICAgICAgY2Rucy0+ZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9PVEcp DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gVVNCX0RSX01PREVfUEVSSVBIRVJB TDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKCFzdHJuY21wKGJ1ZiwgIm90ZyIsIDMpICYmIGNkbnMt PmRyX21vZGUgPT0gVVNCX0RSX01PREVfT1RHKQ0KPj4gKyAgICAgICAgICAgICAgIG1vZGUgPSBV U0JfRFJfTU9ERV9PVEc7DQo+PiArDQo+PiArICAgICAgIGlmIChtb2RlID09IFVTQl9EUl9NT0RF X1VOS05PV04pIHsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGNkbnMtPmRldiwgIkZhaWxl ZDogaW5jb3JyZWN0IG1vZGUgc2V0dGluZ1xuIik7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJu IC1FRkFVTFQ7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgaWYgKGNkbnMtPmN1cnJl bnRfZHJfbW9kZSAhPSBtb2RlKSB7DQo+PiArICAgICAgICAgICAgICAgY2Rucy0+ZGVzaXJlZF9k cl9tb2RlID0gbW9kZTsNCj4+ICsgICAgICAgICAgICAgICBjZG5zLT5kZWJ1Z19kaXNhYmxlID0g MDsNCj4+ICsgICAgICAgICAgICAgICBjZG5zM19yb2xlX3N0b3AoY2Rucyk7DQo+PiArICAgICAg ICAgICAgICAgY2RuczNfZHJkX3VwZGF0ZV9tb2RlKGNkbnMpOw0KPj4gKyAgICAgICAgICAgICAg IHF1ZXVlX3dvcmsoc3lzdGVtX2ZyZWV6YWJsZV93cSwgJmNkbnMtPnJvbGVfc3dpdGNoX3dxKTsN Cj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gY291bnQ7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGNkbnMzX21vZGVfZm9w cyA9IHsNCj4+ICsgICAgICAgLm9wZW4gICAgICAgICAgICAgICAgICAgPSBjZG5zM19tb2RlX29w ZW4sDQo+PiArICAgICAgIC53cml0ZSAgICAgICAgICAgICAgICAgID0gY2RuczNfbW9kZV93cml0 ZSwNCj4+ICsgICAgICAgLnJlYWQgICAgICAgICAgICAgICAgICAgPSBzZXFfcmVhZCwNCj4+ICsg ICAgICAgLmxsc2VlayAgICAgICAgICAgICAgICAgPSBzZXFfbHNlZWssDQo+PiArICAgICAgIC5y ZWxlYXNlICAgICAgICAgICAgICAgID0gc2luZ2xlX3JlbGVhc2UsDQo+PiArfTsNCj4+ICsNCj4+ ICtzdGF0aWMgaW50IGNkbnMzX2Rpc2FibGVfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQg KnVudXNlZCkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zMyAqY2RucyA9IHMtPnByaXZh dGU7DQo+PiArDQo+PiArICAgICAgIGlmICghY2Rucy0+ZGVidWdfZGlzYWJsZSkNCj4+ICsgICAg ICAgICAgICAgICBzZXFfcHV0cyhzLCAiMFxuIik7DQo+PiArICAgICAgIGVsc2UNCj4+ICsgICAg ICAgICAgICAgICBzZXFfcHV0cyhzLCAiMVxuIik7DQo+PiArDQo+PiArICAgICAgIHJldHVybiAw Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgc3NpemVfdCBjZG5zM19kaXNhYmxlX3dyaXRlKHN0 cnVjdCBmaWxlICpmaWxlLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1 Y3Qgc2VxX2ZpbGUgICpzID0gZmlsZS0+cHJpdmF0ZV9kYXRhOw0KPj4gKyAgICAgICBzdHJ1Y3Qg Y2RuczMgKmNkbnMgPSBzLT5wcml2YXRlOw0KPj4gKyAgICAgICBib29sIGRpc2FibGU7DQo+PiAr ICAgICAgIGNoYXIgYnVmWzE2XTsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGNvcHlfZnJvbV91c2Vy KCZidWYsIHVidWYsIG1pbl90KHNpemVfdCwgc2l6ZW9mKGJ1ZikgLSAxLCBjb3VudCkpKQ0KPj4g KyAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KPj4gKw0KPj4gKyAgICAgICBpZiAoa3N0 cnRvYm9vbChidWYsICZkaXNhYmxlKSkgew0KPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoY2Ru cy0+ZGV2LCAid3Jvbmcgc2V0dGluZ1xuIik7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgaWYgKGRpc2FibGUgIT0gY2Ru cy0+ZGVidWdfZGlzYWJsZSkgew0KPj4gKyAgICAgICAgICAgICAgIGNkbnMtPmRlYnVnX2Rpc2Fi bGUgPSBkaXNhYmxlOw0KPj4gKyAgICAgICAgICAgICAgIHF1ZXVlX3dvcmsoc3lzdGVtX2ZyZWV6 YWJsZV93cSwgJmNkbnMtPnJvbGVfc3dpdGNoX3dxKTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4g KyAgICAgICByZXR1cm4gY291bnQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY2RuczNf ZGlzYWJsZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQ0KPj4g K3sNCj4+ICsgICAgICAgcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGNkbnMzX2Rpc2FibGVfc2hv dywgaW5vZGUtPmlfcHJpdmF0ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIGNkbnMzX2Rpc2FibGVfZm9wcyA9IHsNCj4+ICsgICAgICAgLm9w ZW4gICAgICAgICAgICAgICAgICAgPSBjZG5zM19kaXNhYmxlX29wZW4sDQo+PiArICAgICAgIC53 cml0ZSAgICAgICAgICAgICAgICAgID0gY2RuczNfZGlzYWJsZV93cml0ZSwNCj4+ICsgICAgICAg LnJlYWQgICAgICAgICAgICAgICAgICAgPSBzZXFfcmVhZCwNCj4+ICsgICAgICAgLmxsc2VlayAg ICAgICAgICAgICAgICAgPSBzZXFfbHNlZWssDQo+PiArICAgICAgIC5yZWxlYXNlICAgICAgICAg ICAgICAgID0gc2luZ2xlX3JlbGVhc2UsDQo+PiArfTsNCj4+ICsNCj4+ICt2b2lkIGNkbnMzX2Rl YnVnZnNfaW5pdChzdHJ1Y3QgY2RuczMgKmNkbnMpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3Qg ZGVudHJ5ICpyb290Ow0KPj4gKw0KPj4gKyAgICAgICByb290ID0gZGVidWdmc19jcmVhdGVfZGly KGRldl9uYW1lKGNkbnMtPmRldiksIE5VTEwpOw0KPj4gKyAgICAgICBjZG5zLT5yb290ID0gcm9v dDsNCj4+ICsgICAgICAgaWYgKElTX0VOQUJMRUQoQ09ORklHX1VTQl9DRE5TM19HQURHRVQpICYm DQo+PiArICAgICAgICAgICBJU19FTkFCTEVEKENPTkZJR19VU0JfQ0ROUzNfSE9TVCkpDQo+PiAr ICAgICAgICAgICAgICAgZGVidWdmc19jcmVhdGVfZmlsZSgibW9kZSIsIDA2NDQsIHJvb3QsIGNk bnMsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2RuczNfbW9kZV9m b3BzKTsNCj4+ICsNCj4+ICsgICAgICAgZGVidWdmc19jcmVhdGVfZmlsZSgiZGlzYWJsZSIsIDA2 NDQsIHJvb3QsIGNkbnMsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNkbnMzX2Rp c2FibGVfZm9wcyk7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgY2RuczNfZGVidWdmc19leGl0KHN0 cnVjdCBjZG5zMyAqY2RucykNCj4+ICt7DQo+PiArICAgICAgIGRlYnVnZnNfcmVtb3ZlX3JlY3Vy c2l2ZShjZG5zLT5yb290KTsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2Ru czMvZHJkLmMgYi9kcml2ZXJzL3VzYi9jZG5zMy9kcmQuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uM2U1NjMzOGNkN2I5DQo+PiAtLS0gL2Rldi9udWxs DQo+PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9kcmQuYw0KPj4gQEAgLTAsMCArMSwzNjUgQEAN Cj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4gKy8qDQo+PiArICog Q2FkZW5jZSBVU0JTUyBEUkQgRHJpdmVyLg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChDKSAy MDE4IENhZGVuY2UuDQo+PiArICoNCj4+ICsgKiBBdXRob3I6IFBhd2VsIExhc3pjemFrIDxwYXdl bGxAY2FkZW5jZS5jb20NCj4+ICsgKg0KPj4gKyAqLw0KPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+PiArI2luY2x1ZGUgPGxp bnV4L2RlbGF5Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3VzYi9vdGcuaD4NCj4+ICsNCj4+ICsj aW5jbHVkZSAiZ2FkZ2V0LmgiDQo+PiArI2luY2x1ZGUgImRyZC5oIg0KPj4gKyNpbmNsdWRlICJj b3JlLmgiDQo+PiArDQo+PiArc3RhdGljIGludCBjZG5zM19kcmRfc3dpdGNoX2dhZGdldChzdHJ1 Y3QgY2RuczMgKmNkbnMsIGludCBvbik7DQo+PiArc3RhdGljIGludCBjZG5zM19kcmRfc3dpdGNo X2hvc3Qoc3RydWN0IGNkbnMzICpjZG5zLCBpbnQgb24pOw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAq IGNkbnMzX3NldF9tb2RlIC0gY2hhbmdlIG1vZGUgb2YgT1RHIENvcmUNCj4+ICsgKiBAY2Ruczog cG9pbnRlciB0byBjb250ZXh0IHN0cnVjdHVyZQ0KPj4gKyAqIEBtb2RlOiBzZWxlY3RlZCBtb2Rl IGZyb20gY2Ruc19yb2xlDQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvdGhl cndpc2UgbmVnYXRpdmUgZXJybm8NCj4+ICsgKi8NCj4+ICtpbnQgY2RuczNfc2V0X21vZGUoc3Ry dWN0IGNkbnMzICpjZG5zLCBlbnVtIHVzYl9kcl9tb2RlIG1vZGUpDQo+PiArew0KPj4gKyAgICAg ICBpbnQgcmV0ID0gMDsNCj4+ICsgICAgICAgdTMyIHJlZzsNCj4+ICsNCj4+ICsgICAgICAgY2Ru cy0+Y3VycmVudF9kcl9tb2RlID0gbW9kZTsNCj4+ICsNCj4+ICsgICAgICAgc3dpdGNoIChtb2Rl KSB7DQo+PiArICAgICAgIGNhc2UgVVNCX0RSX01PREVfUEVSSVBIRVJBTDoNCj4+ICsgICAgICAg ICAgICAgICBkZXZfaW5mbyhjZG5zLT5kZXYsICJTZXQgY29udHJvbGxlciB0byBHYWRnZXQgbW9k ZVxuIik7DQo+PiArICAgICAgICAgICAgICAgcmV0ID0gY2RuczNfZHJkX3N3aXRjaF9nYWRnZXQo Y2RucywgMSk7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGNhc2UgVVNC X0RSX01PREVfSE9TVDoNCj4+ICsgICAgICAgICAgICAgICBkZXZfaW5mbyhjZG5zLT5kZXYsICJT ZXQgY29udHJvbGxlciB0byBIb3N0IG1vZGVcbiIpOw0KPj4gKyAgICAgICAgICAgICAgIHJldCA9 IGNkbnMzX2RyZF9zd2l0Y2hfaG9zdChjZG5zLCAxKTsNCj4+ICsgICAgICAgICAgICAgICBicmVh azsNCj4+ICsgICAgICAgY2FzZSBVU0JfRFJfTU9ERV9PVEc6DQo+PiArICAgICAgICAgICAgICAg ZGV2X2luZm8oY2Rucy0+ZGV2LCAiU2V0IGNvbnRyb2xsZXIgdG8gT1RHIG1vZGVcbiIpOw0KPj4g KyAgICAgICAgICAgICAgIGlmIChjZG5zLT52ZXJzaW9uID09IENETlMzX0NPTlRST0xMRVJfVjEp IHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IHJlYWRsKCZjZG5zLT5vdGdfdjFf cmVncy0+b3ZlcnJpZGUpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVnIHw9IE9WRVJS SURFX0lEUFVMTFVQOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVsKHJlZywgJmNk bnMtPm90Z192MV9yZWdzLT5vdmVycmlkZSk7DQo+PiArICAgICAgICAgICAgICAgfSBlbHNlIHsN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IHJlYWRsKCZjZG5zLT5vdGdfdjBfcmVn cy0+Y3RybDEpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVnIHw9IE9WRVJSSURFX0lE UFVMTFVQX1YwOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVsKHJlZywgJmNkbnMt Pm90Z192MF9yZWdzLT5jdHJsMSk7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4gKyAg ICAgICAgICAgICAgIC8qDQo+PiArICAgICAgICAgICAgICAgICogSGFyZHdhcmUgc3BlY2lmaWNh dGlvbiBzYXlzOiAiSURfVkFMVUUgbXVzdCBiZSB2YWxpZCB3aXRoaW4NCj4+ICsgICAgICAgICAg ICAgICAgKiA1MG1zIGFmdGVyIGlkcHVsbHVwIGlzIHNldCB0byAnMSIgc28gZHJpdmVyIG11c3Qg d2FpdA0KPj4gKyAgICAgICAgICAgICAgICAqIDUwbXMgYmVmb3JlIHJlYWRpbmcgdGhpcyBwaW4u DQo+PiArICAgICAgICAgICAgICAgICovDQo+PiArICAgICAgICAgICAgICAgdXNsZWVwX3Jhbmdl KDUwMDAwLCA2MDAwMCk7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGRl ZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgY2Rucy0+Y3VycmVudF9kcl9tb2RlID0gVVNCX0RS X01PREVfVU5LTk9XTjsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGNkbnMtPmRldiwgIlVu c3VwcG9ydGVkIG1vZGUgb2Ygb3BlcmF0aW9uICVkXG4iLCBtb2RlKTsNCj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICByZXR1 cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtpbnQgY2RuczNfZ2V0X2lkKHN0cnVjdCBjZG5zMyAq Y2RucykNCj4+ICt7DQo+PiArICAgICAgIGludCBpZDsNCj4+ICsNCj4+ICsgICAgICAgaWQgPSBy ZWFkbCgmY2Rucy0+b3RnX3JlZ3MtPnN0cykgJiBPVEdTVFNfSURfVkFMVUU7DQo+PiArICAgICAg IGRldl9kYmcoY2Rucy0+ZGV2LCAiT1RHIElEOiAlZCIsIGlkKTsNCj4+ICsgICAgICAgcmV0dXJu IGlkOw0KPj4gK30NCj4+ICsNCj4+ICtpbnQgY2RuczNfaXNfaG9zdChzdHJ1Y3QgY2RuczMgKmNk bnMpDQo+PiArew0KPj4gKyAgICAgICBpZiAoY2Rucy0+Y3VycmVudF9kcl9tb2RlID09IFVTQl9E Ul9NT0RFX0hPU1QpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDE7DQo+PiArICAgICAgIGVs c2UgaWYgKCFjZG5zM19nZXRfaWQoY2RucykpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDE7 DQo+PiArDQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtpbnQgY2RuczNf aXNfZGV2aWNlKHN0cnVjdCBjZG5zMyAqY2RucykNCj4+ICt7DQo+PiArICAgICAgIGlmIChjZG5z LT5jdXJyZW50X2RyX21vZGUgPT0gVVNCX0RSX01PREVfUEVSSVBIRVJBTCkNCj4+ICsgICAgICAg ICAgICAgICByZXR1cm4gMTsNCj4+ICsgICAgICAgZWxzZSBpZiAoY2Rucy0+Y3VycmVudF9kcl9t b2RlID09IFVTQl9EUl9NT0RFX09URykNCj4+ICsgICAgICAgICAgICAgICBpZiAoY2RuczNfZ2V0 X2lkKGNkbnMpKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQo+PiArDQo+ PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19v dGdfZGlzYWJsZV9pcnEgLSBEaXNhYmxlIGFsbCBPVEcgaW50ZXJydXB0cw0KPj4gKyAqIEBjZG5z OiBQb2ludGVyIHRvIGNvbnRyb2xsZXIgY29udGV4dCBzdHJ1Y3R1cmUNCj4+ICsgKi8NCj4+ICtz dGF0aWMgdm9pZCBjZG5zM19vdGdfZGlzYWJsZV9pcnEoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4g K3sNCj4+ICsgICAgICAgd3JpdGVsKDAsICZjZG5zLT5vdGdfcmVncy0+aWVuKTsNCj4+ICt9DQo+ PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfb3RnX2VuYWJsZV9pcnEgLSBlbmFibGUgaWQgYW5k IHNlc3NfdmFsaWQgaW50ZXJydXB0cw0KPj4gKyAqIEBjZG5zOiBQb2ludGVyIHRvIGNvbnRyb2xs ZXIgY29udGV4dCBzdHJ1Y3R1cmUNCj4+ICsgKi8NCj4+ICtzdGF0aWMgdm9pZCBjZG5zM19vdGdf ZW5hYmxlX2lycShzdHJ1Y3QgY2RuczMgKmNkbnMpDQo+PiArew0KPj4gKyAgICAgICB3cml0ZWwo T1RHSUVOX0lEX0NIQU5HRV9JTlQgfCBPVEdJRU5fVkJVU1ZBTElEX1JJU0VfSU5UIHwNCj4+ICsg ICAgICAgICAgICAgIE9UR0lFTl9WQlVTVkFMSURfRkFMTF9JTlQsICZjZG5zLT5vdGdfcmVncy0+ aWVuKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZHJkX3N3aXRjaF9ob3N0 IC0gc3RhcnQvc3RvcCBob3N0DQo+PiArICogQGNkbnM6IFBvaW50ZXIgdG8gY29udHJvbGxlciBj b250ZXh0IHN0cnVjdHVyZQ0KPj4gKyAqIEBvbjogMSBmb3Igc3RhcnQsIDAgZm9yIHN0b3ANCj4+ ICsgKg0KPj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG90aGVyd2lzZSBuZWdhdGl2ZSBlcnJu bw0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfZHJkX3N3aXRjaF9ob3N0KHN0cnVjdCBj ZG5zMyAqY2RucywgaW50IG9uKQ0KPj4gK3sNCj4+ICsgICAgICAgaW50IHJldDsNCj4+ICsgICAg ICAgdTMyIHJlZyA9IE9UR0NNRF9PVEdfRElTOw0KPj4gKw0KPj4gKyAgICAgICAvKiBzd2l0Y2gg T1RHIGNvcmUgKi8NCj4+ICsgICAgICAgaWYgKG9uKSB7DQo+PiArICAgICAgICAgICAgICAgd3Jp dGVsKE9UR0NNRF9IT1NUX0JVU19SRVEgfCByZWcsICZjZG5zLT5vdGdfcmVncy0+Y21kKTsNCj4+ ICsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZGJnKGNkbnMtPmRldiwgIldhaXRpbmcgZm9yIEhv c3QgbW9kZSBpcyB0dXJuZWQgb25cbiIpOw0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IGNkbnMz X2hhbmRzaGFrZSgmY2Rucy0+b3RnX3JlZ3MtPnN0cywgT1RHU1RTX1hIQ0lfUkVBRFksDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9UR1NUU19YSENJX1JFQURZLCAx MDAwMDApOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKyAgICAgICB9IGVsc2Ugew0KPj4gKyAgICAg ICAgICAgICAgIHVzbGVlcF9yYW5nZSgzMCwgNDApOw0KPj4gKyAgICAgICAgICAgICAgIHdyaXRl bChPVEdDTURfSE9TVF9CVVNfRFJPUCB8IE9UR0NNRF9ERVZfQlVTX0RST1AgfA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICBPVEdDTURfREVWX1BPV0VSX09GRiB8IE9UR0NNRF9IT1NUX1BPV0VS X09GRiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgJmNkbnMtPm90Z19yZWdzLT5jbWQpOw0K Pj4gKyAgICAgICAgICAgICAgIHVzbGVlcF9yYW5nZSgzMDAwLCA0MDAwKTsNCj4+ICsgICAgICAg fQ0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiAr ICogY2RuczNfZHJkX3N3aXRjaF9nYWRnZXQgLSBzdGFydC9zdG9wIGdhZGdldA0KPj4gKyAqIEBj ZG5zOiBQb2ludGVyIHRvIGNvbnRyb2xsZXIgY29udGV4dCBzdHJ1Y3R1cmUNCj4+ICsgKiBAb246 IDEgZm9yIHN0YXJ0LCAwIGZvciBzdG9wDQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDAgb24gc3Vj Y2VzcyBvdGhlcndpc2UgbmVnYXRpdmUgZXJybm8NCj4+ICsgKi8NCj4+ICtzdGF0aWMgaW50IGNk bnMzX2RyZF9zd2l0Y2hfZ2FkZ2V0KHN0cnVjdCBjZG5zMyAqY2RucywgaW50IG9uKQ0KPj4gK3sN Cj4+ICsgICAgICAgaW50IHJldDsNCj4+ICsgICAgICAgdTMyIHJlZyA9IE9UR0NNRF9PVEdfRElT Ow0KPj4gKw0KPj4gKyAgICAgICAvKiBzd2l0Y2ggT1RHIGNvcmUgKi8NCj4+ICsgICAgICAgaWYg KG9uKSB7DQo+PiArICAgICAgICAgICAgICAgd3JpdGVsKE9UR0NNRF9ERVZfQlVTX1JFUSB8IHJl ZywgJmNkbnMtPm90Z19yZWdzLT5jbWQpOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGRldl9k YmcoY2Rucy0+ZGV2LCAiV2FpdGluZyBmb3IgRGV2aWNlIG1vZGUgaXMgdHVybmVkIG9uXG4iKTsN Cj4+ICsNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBjZG5zM19oYW5kc2hha2UoJmNkbnMtPm90 Z19yZWdzLT5zdHMsIE9UR1NUU19ERVZfUkVBRFksDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9UR1NUU19ERVZfUkVBRFksIDEwMDAwMCk7DQo+PiArDQo+PiArICAg ICAgICAgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7DQo+PiArICAgICAgIH0gZWxzZSB7DQo+PiArICAgICAgICAgICAgICAgLyoNCj4+ICsgICAg ICAgICAgICAgICAgKiBkcml2ZXIgc2hvdWxkIHdhaXQgYXQgbGVhc3QgMTB1cyBhZnRlciBkaXNh YmxpbmcgRGV2aWNlDQo+PiArICAgICAgICAgICAgICAgICogYmVmb3JlIHR1cm5pbmctb2ZmIERl dmljZSAoREVWX0JVU19EUk9QKQ0KPj4gKyAgICAgICAgICAgICAgICAqLw0KPj4gKyAgICAgICAg ICAgICAgIHVzbGVlcF9yYW5nZSgyMCwgMzApOw0KPj4gKyAgICAgICAgICAgICAgIHdyaXRlbChP VEdDTURfSE9TVF9CVVNfRFJPUCB8IE9UR0NNRF9ERVZfQlVTX0RST1AgfA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICBPVEdDTURfREVWX1BPV0VSX09GRiB8IE9UR0NNRF9IT1NUX1BPV0VSX09G RiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgJmNkbnMtPm90Z19yZWdzLT5jbWQpOw0KPj4g KyAgICAgICAgICAgICAgIHVzbGVlcF9yYW5nZSgzMDAwLCA0MDAwKTsNCj4+ICsgICAgICAgfQ0K Pj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICog Y2RuczNfaW5pdF9vdGdfbW9kZSAtIGluaXRpYWxpemUgZHJkIGNvbnRyb2xsZXINCj4+ICsgKiBA Y2RuczogUG9pbnRlciB0byBjb250cm9sbGVyIGNvbnRleHQgc3RydWN0dXJlDQo+PiArICoNCj4+ ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvdGhlcndpc2UgbmVnYXRpdmUgZXJybm8NCj4+ICsg Ki8NCj4+ICtzdGF0aWMgaW50IGNkbnMzX2luaXRfb3RnX21vZGUoc3RydWN0IGNkbnMzICpjZG5z KQ0KPj4gK3sNCj4+ICsgICAgICAgaW50IHJldCA9IDA7DQo+PiArDQo+PiArICAgICAgIGNkbnMz X290Z19kaXNhYmxlX2lycShjZG5zKTsNCj4+ICsgICAgICAgLyogY2xlYXIgYWxsIGludGVycnVw dHMgKi8NCj4+ICsgICAgICAgd3JpdGVsKH4wLCAmY2Rucy0+b3RnX3JlZ3MtPml2ZWN0KTsNCj4+ ICsNCj4+ICsgICAgICAgcmV0ID0gY2RuczNfc2V0X21vZGUoY2RucywgVVNCX0RSX01PREVfT1RH KTsNCj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0K Pj4gKw0KPj4gKyAgICAgICBpZiAoY2RuczNfaXNfaG9zdChjZG5zKSkNCj4+ICsgICAgICAgICAg ICAgICByZXQgPSBjZG5zM19kcmRfc3dpdGNoX2hvc3QoY2RucywgMSk7DQo+PiArICAgICAgIGVs c2UNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBjZG5zM19kcmRfc3dpdGNoX2dhZGdldChjZG5z LCAxKTsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19vdGdfZW5hYmxlX2lycShjZG5zKTsNCj4+ ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNf ZHJkX3VwZGF0ZV9tb2RlIC0gaW5pdGlhbGl6ZSBtb2RlIG9mIG9wZXJhdGlvbg0KPj4gKyAqIEBj ZG5zOiBQb2ludGVyIHRvIGNvbnRyb2xsZXIgY29udGV4dCBzdHJ1Y3R1cmUNCj4+ICsgKg0KPj4g KyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG90aGVyd2lzZSBuZWdhdGl2ZSBlcnJubw0KPj4gKyAq Lw0KPj4gK2ludCBjZG5zM19kcmRfdXBkYXRlX21vZGUoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4g K3sNCj4+ICsgICAgICAgaW50IHJldCA9IDA7DQo+PiArDQo+PiArICAgICAgIGlmIChjZG5zLT5k ZXNpcmVkX2RyX21vZGUgPT0gY2Rucy0+Y3VycmVudF9kcl9tb2RlKQ0KPj4gKyAgICAgICAgICAg ICAgIHJldHVybiByZXQ7DQo+PiArDQo+PiArICAgICAgIGNkbnMzX2RyZF9zd2l0Y2hfZ2FkZ2V0 KGNkbnMsIDApOw0KPj4gKyAgICAgICBjZG5zM19kcmRfc3dpdGNoX2hvc3QoY2RucywgMCk7DQo+ PiArDQo+PiArICAgICAgIHN3aXRjaCAoY2Rucy0+ZGVzaXJlZF9kcl9tb2RlKSB7DQo+PiArICAg ICAgIGNhc2UgVVNCX0RSX01PREVfUEVSSVBIRVJBTDoNCj4+ICsgICAgICAgICAgICAgICByZXQg PSBjZG5zM19zZXRfbW9kZShjZG5zLCBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMKTsNCj4+ICsgICAg ICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgY2FzZSBVU0JfRFJfTU9ERV9IT1NUOg0KPj4g KyAgICAgICAgICAgICAgIHJldCA9IGNkbnMzX3NldF9tb2RlKGNkbnMsIFVTQl9EUl9NT0RFX0hP U1QpOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNlIFVTQl9EUl9N T0RFX09URzoNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBjZG5zM19pbml0X290Z19tb2RlKGNk bnMpOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBkZWZhdWx0Og0KPj4g KyAgICAgICAgICAgICAgIGRldl9lcnIoY2Rucy0+ZGV2LCAiVW5zdXBwb3J0ZWQgbW9kZSBvZiBv cGVyYXRpb24gJWRcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjZG5zLT5kcl9tb2Rl KTsNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgICAgfQ0KPj4g Kw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBj ZG5zM19kcmRfaXJxIC0gaW50ZXJydXB0IGhhbmRsZXIgZm9yIE9URyBldmVudHMNCj4+ICsgKg0K Pj4gKyAqIEBpcnE6IGlycSBudW1iZXIgZm9yIGNkbnMzIGNvcmUgZGV2aWNlDQo+PiArICogQGRh dGE6IHN0cnVjdHVyZSBvZiBjZG5zMw0KPj4gKyAqDQo+PiArICogUmV0dXJucyBJUlFfSEFORExF RCBvciBJUlFfTk9ORQ0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBjZG5zM19kcmRf aXJxKGludCBpcnEsIHZvaWQgKmRhdGEpDQo+PiArew0KPj4gKyAgICAgICBpcnFyZXR1cm5fdCBy ZXQgPSBJUlFfTk9ORTsNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzICpjZG5zID0gZGF0YTsNCj4+ ICsgICAgICAgdTMyIHJlZzsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGNkbnMtPmRyX21vZGUgIT0g VVNCX0RSX01PREVfT1RHKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArDQo+ PiArICAgICAgIHJlZyA9IHJlYWRsKCZjZG5zLT5vdGdfcmVncy0+aXZlY3QpOw0KPj4gKw0KPj4g KyAgICAgICBpZiAoIXJlZykNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKw0K Pj4gKyAgICAgICBpZiAocmVnICYgT1RHSUVOX0lEX0NIQU5HRV9JTlQpIHsNCj4+ICsgICAgICAg ICAgICAgICBkZXZfZGJnKGNkbnMtPmRldiwgIk9URyBJUlE6IG5ldyBJRDogJWRcbiIsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICBjZG5zM19nZXRfaWQoY2RucykpOw0KPj4gKw0KPj4gKyAg ICAgICAgICAgICAgIHF1ZXVlX3dvcmsoc3lzdGVtX2ZyZWV6YWJsZV93cSwgJmNkbnMtPnJvbGVf c3dpdGNoX3dxKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBJUlFfSEFORExFRDsN Cj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICB3cml0ZWwofjAsICZjZG5zLT5vdGdfcmVn cy0+aXZlY3QpOw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtpbnQg Y2RuczNfZHJkX2luaXQoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gK3sNCj4+ICsgICAgICAgdm9p ZCBfX2lvbWVtICpyZWdzOw0KPj4gKyAgICAgICBpbnQgcmV0ID0gMDsNCj4+ICsgICAgICAgdTMy IHN0YXRlOw0KPj4gKw0KPj4gKyAgICAgICByZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGNk bnMtPmRldiwgJmNkbnMtPm90Z19yZXMpOw0KPj4gKyAgICAgICBpZiAoSVNfRVJSKHJlZ3MpKQ0K Pj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHJlZ3MpOw0KPj4gKw0KPj4gKyAgICAg ICAvKiBEZXRlY3Rpb24gb2YgRFJEIHZlcnNpb24uIENvbnRyb2xsZXIgaGFzIGJlZW4gcmVsZWFz ZWQNCj4+ICsgICAgICAgICogaW4gdHdvIHZlcnNpb25zLiBCb3RoIGFyZSBzaW1pbGFyLCBidXQg dGhleSBoYXZlIHNhbWUgY2hhbmdlcw0KPj4gKyAgICAgICAgKiBpbiByZWdpc3RlciBtYXBzLg0K Pj4gKyAgICAgICAgKiBUaGUgZmlyc3QgcmVnaXN0ZXIgaW4gb2xkIHZlcnNpb24gaXMgY29tbWFu ZCByZWdpc3RlciBhbmQgaXQncyByZWFkDQo+PiArICAgICAgICAqIG9ubHksIHNvIGRyaXZlciBz aG91bGQgcmVhZCAwIGZyb20gaXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpbiB2MQ0KPj4gKyAgICAg ICAgKiB0aGUgZmlyc3QgcmVnaXN0ZXIgY29udGFpbnMgZGV2aWNlIElEIG51bWJlciB3aGljaCBp cyBub3Qgc2V0IHRvIDAuDQo+PiArICAgICAgICAqIERyaXZlciB1c2VzIHRoaXMgZmFjdCB0byBk ZXRlY3QgdGhlIHByb3BlciB2ZXJzaW9uIG9mDQo+PiArICAgICAgICAqIGNvbnRyb2xsZXIuDQo+ PiArICAgICAgICAqLw0KPj4gKyAgICAgICBjZG5zLT5vdGdfdjBfcmVncyA9IHJlZ3M7DQo+PiAr ICAgICAgIGlmICghcmVhZGwoJmNkbnMtPm90Z192MF9yZWdzLT5jbWQpKSB7DQo+PiArICAgICAg ICAgICAgICAgY2Rucy0+dmVyc2lvbiAgPSBDRE5TM19DT05UUk9MTEVSX1YwOw0KPj4gKyAgICAg ICAgICAgICAgIGNkbnMtPm90Z192MV9yZWdzID0gTlVMTDsNCj4+ICsgICAgICAgICAgICAgICBj ZG5zLT5vdGdfcmVncyA9IHJlZ3M7DQo+PiArICAgICAgICAgICAgICAgZGV2X2luZm8oY2Rucy0+ ZGV2LCAiRFJEIHZlcnNpb24gdjAgKCUwOHgpXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIHJlYWRsKCZjZG5zLT5vdGdfdjBfcmVncy0+dmVyc2lvbikpOw0KPj4gKyAgICAgICB9IGVs c2Ugew0KPj4gKyAgICAgICAgICAgICAgIGNkbnMtPm90Z192MF9yZWdzID0gTlVMTDsNCj4+ICsg ICAgICAgICAgICAgICBjZG5zLT5vdGdfdjFfcmVncyA9IHJlZ3M7DQo+PiArICAgICAgICAgICAg ICAgY2Rucy0+b3RnX3JlZ3MgPSAodm9pZCAqKSZjZG5zLT5vdGdfdjFfcmVncy0+Y21kOw0KPj4g KyAgICAgICAgICAgICAgIGNkbnMtPnZlcnNpb24gID0gQ0ROUzNfQ09OVFJPTExFUl9WMTsNCj4+ ICsgICAgICAgICAgICAgICBkZXZfaW5mbyhjZG5zLT5kZXYsICJEUkQgdmVyc2lvbiB2MSAoSUQ6 ICUwOHgsIHJldjogJTA4eClcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGwo JmNkbnMtPm90Z192MV9yZWdzLT5kaWQpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJl YWRsKCZjZG5zLT5vdGdfdjFfcmVncy0+cmlkKSk7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsg ICAgICAgc3RhdGUgPSBPVEdTVFNfU1RSQVAocmVhZGwoJmNkbnMtPm90Z19yZWdzLT5zdHMpKTsN Cj4+ICsNCj4+ICsgICAgICAgLyogVXBkYXRlIGRyX21vZGUgYWNjb3JkaW5nIHRvIFNUUkFQIGNv bmZpZ3VyYXRpb24uICovDQo+PiArICAgICAgIGNkbnMtPmRyX21vZGUgPSBVU0JfRFJfTU9ERV9P VEc7DQo+PiArICAgICAgIGlmIChzdGF0ZSA9PSBPVEdTVFNfU1RSQVBfSE9TVCkgew0KPj4gKyAg ICAgICAgICAgICAgIGRldl9pbmZvKGNkbnMtPmRldiwgIkNvbnRyb2xsZXIgc3RyYXBwZWQgdG8g SE9TVFxuIik7DQo+PiArICAgICAgICAgICAgICAgY2Rucy0+ZHJfbW9kZSA9IFVTQl9EUl9NT0RF X0hPU1Q7DQo+PiArICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gT1RHU1RTX1NUUkFQX0dBREdF VCkgew0KPj4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGNkbnMtPmRldiwgIkNvbnRyb2xsZXIg c3RyYXBwZWQgdG8gUEVSSVBIRVJBTFxuIik7DQo+PiArICAgICAgICAgICAgICAgY2Rucy0+ZHJf bW9kZSA9IFVTQl9EUl9NT0RFX1BFUklQSEVSQUw7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsg ICAgICAgY2Rucy0+ZGVzaXJlZF9kcl9tb2RlID0gY2Rucy0+ZHJfbW9kZTsNCj4+ICsgICAgICAg Y2Rucy0+Y3VycmVudF9kcl9tb2RlID0gVVNCX0RSX01PREVfVU5LTk9XTjsNCj4+ICsNCj4+ICsg ICAgICAgcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShjZG5zLT5kZXYsIGNkbnMtPmly cSwgY2RuczNfZHJkX2lycSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCBJUlFGX1NIQVJFRCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXZfbmFtZShjZG5zLT5kZXYpLCBjZG5zKTsNCj4+ICsNCj4+ICsgICAgICAg aWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gKyAgICAg ICBzdGF0ZSA9IHJlYWRsKCZjZG5zLT5vdGdfcmVncy0+c3RzKTsNCj4+ICsgICAgICAgaWYgKE9U R1NUU19PVEdfTlJEWShzdGF0ZSkgIT0gMCkgew0KPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIo Y2Rucy0+ZGV2LCAiQ2FkZW5jZSBVU0IzIE9URyBkZXZpY2Ugbm90IHJlYWR5XG4iKTsNCj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAg ICAgICByZXQgPSBjZG5zM19kcmRfdXBkYXRlX21vZGUoY2Rucyk7DQo+PiArDQo+PiArICAgICAg IHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBjZG5zM19kcmRfZXhpdChzdHJ1Y3Qg Y2RuczMgKmNkbnMpDQo+PiArew0KPj4gKyAgICAgICByZXR1cm4gY2RuczNfZHJkX3N3aXRjaF9o b3N0KGNkbnMsIDApOw0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9k cmQuaCBiL2RyaXZlcnMvdXNiL2NkbnMzL2RyZC5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42YTI5Y2RjYjQ5MmQNCj4+IC0tLSAvZGV2L251bGwNCj4+ ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnMzL2RyZC5oDQo+PiBAQCAtMCwwICsxLDE2MiBAQA0KPj4g Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+PiArLyoNCj4+ICsgKiBD YWRlbmNlIFVTQjMgRFJEIGhlYWRlciBmaWxlLg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChD KSAyMDE4IENhZGVuY2UuDQo+PiArICoNCj4+ICsgKiBBdXRob3I6IFBhd2VsIExhc3pjemFrIDxw YXdlbGxAY2FkZW5jZS5jb20+DQo+PiArICovDQo+PiArI2lmbmRlZiBfX0xJTlVYX0NETlMzX0RS RA0KPj4gKyNkZWZpbmUgX19MSU5VWF9DRE5TM19EUkQNCj4+ICsNCj4+ICsjaW5jbHVkZSA8bGlu dXgvdXNiL290Zy5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+DQo+PiArI2luY2x1 ZGUgImNvcmUuaCINCj4+ICsNCj4+ICsvKiAgRFJEIHJlZ2lzdGVyIGludGVyZmFjZSBmb3IgdmVy c2lvbiB2MS4gKi8NCj4+ICtzdHJ1Y3QgY2RuczNfb3RnX3JlZ3Mgew0KPj4gKyAgICAgICBfX2xl MzIgZGlkOw0KPj4gKyAgICAgICBfX2xlMzIgcmlkOw0KPj4gKyAgICAgICBfX2xlMzIgY2FwYWJp bGl0aWVzOw0KPj4gKyAgICAgICBfX2xlMzIgcmVzZXJ2ZWQxOw0KPj4gKyAgICAgICBfX2xlMzIg Y21kOw0KPj4gKyAgICAgICBfX2xlMzIgc3RzOw0KPj4gKyAgICAgICBfX2xlMzIgc3RhdGU7DQo+ PiArICAgICAgIF9fbGUzMiByZXNlcnZlZDI7DQo+PiArICAgICAgIF9fbGUzMiBpZW47DQo+PiAr ICAgICAgIF9fbGUzMiBpdmVjdDsNCj4+ICsgICAgICAgX19sZTMyIHJlZmNsazsNCj4+ICsgICAg ICAgX19sZTMyIHRtcjsNCj4+ICsgICAgICAgX19sZTMyIHJlc2VydmVkM1s0XTsNCj4+ICsgICAg ICAgX19sZTMyIHNpbXVsYXRlOw0KPj4gKyAgICAgICBfX2xlMzIgb3ZlcnJpZGU7DQo+PiArICAg ICAgIF9fbGUzMiBzdXNwX2N0cmw7DQo+PiArICAgICAgIF9fbGUzMiByZXNlcnZlZDQ7DQo+PiAr ICAgICAgIF9fbGUzMiBhbmFzdHM7DQo+PiArICAgICAgIF9fbGUzMiBhZHBfcmFtcF90aW1lOw0K Pj4gKyAgICAgICBfX2xlMzIgY3RybDE7DQo+PiArICAgICAgIF9fbGUzMiBjdHJsMjsNCj4+ICt9 Ow0KPj4gKw0KPj4gKy8qICBEUkQgcmVnaXN0ZXIgaW50ZXJmYWNlIGZvciB2ZXJzaW9uIHYwLiAq Lw0KPj4gK3N0cnVjdCBjZG5zM19vdGdfbGVnYWN5X3JlZ3Mgew0KPj4gKyAgICAgICBfX2xlMzIg Y21kOw0KPj4gKyAgICAgICBfX2xlMzIgc3RzOw0KPj4gKyAgICAgICBfX2xlMzIgc3RhdGU7DQo+ PiArICAgICAgIF9fbGUzMiByZWZjbGs7DQo+PiArICAgICAgIF9fbGUzMiBpZW47DQo+PiArICAg ICAgIF9fbGUzMiBpdmVjdDsNCj4+ICsgICAgICAgX19sZTMyIHJlc2VydmVkMVszXTsNCj4+ICsg ICAgICAgX19sZTMyIHRtcjsNCj4+ICsgICAgICAgX19sZTMyIHJlc2VydmVkMlsyXTsNCj4+ICsg ICAgICAgX19sZTMyIHZlcnNpb247DQo+PiArICAgICAgIF9fbGUzMiBjYXBhYmlsaXRpZXM7DQo+ PiArICAgICAgIF9fbGUzMiByZXNlcnZlZDNbMl07DQo+PiArICAgICAgIF9fbGUzMiBzaW11bGF0 ZTsNCj4+ICsgICAgICAgX19sZTMyIHJlc2VydmVkNFs1XTsNCj4+ICsgICAgICAgX19sZTMyIGN0 cmwxOw0KPj4gK307DQo+PiArDQo+PiArLyoNCj4+ICsgKiBDb21tb24gcmVnaXN0ZXJzIGludGVy ZmFjZSBmb3IgYm90aCB2ZXJzaW9uIG9mIERSRC4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY2RuczNf b3RnX2NvbW1vbl9yZWdzIHsNCj4+ICsgICAgICAgX19sZTMyIGNtZDsNCj4+ICsgICAgICAgX19s ZTMyIHN0czsNCj4+ICsgICAgICAgX19sZTMyIHN0YXRlOw0KPj4gKyAgICAgICBfX2xlMzIgZGlm ZmVyZW50MTsNCj4+ICsgICAgICAgX19sZTMyIGllbjsNCj4+ICsgICAgICAgX19sZTMyIGl2ZWN0 Ow0KPj4gK307DQo+PiArDQo+PiArLyogQ0ROU19SSUQgLSBiaXRtYXNrcyAqLw0KPj4gKyNkZWZp bmUgQ0ROU19SSUQocCkgICAgICAgICAgICAgICAgICAgICgocCkgJiBHRU5NQVNLKDE1LCAwKSkN Cj4+ICsNCj4+ICsvKiBDRE5TX1ZJRCAtIGJpdG1hc2tzICovDQo+PiArI2RlZmluZSBDRE5TX0RJ RChwKSAgICAgICAgICAgICAgICAgICAgKChwKSAmIEdFTk1BU0soMzEsIDApKQ0KPj4gKw0KPj4g Ky8qIE9UR0NNRCAtIGJpdG1hc2tzICovDQo+PiArLyogIlJlcXVlc3QgdGhlIGJ1cyBmb3IgRGV2 aWNlIG1vZGUuICovDQo+PiArI2RlZmluZSBPVEdDTURfREVWX0JVU19SRVEgICAgICAgICAgICAg QklUKDApDQo+PiArLyogUmVxdWVzdCB0aGUgYnVzIGZvciBIb3N0IG1vZGUgKi8NCj4+ICsjZGVm aW5lIE9UR0NNRF9IT1NUX0JVU19SRVEgICAgICAgICAgICBCSVQoMSkNCj4+ICsvKiBFbmFibGUg T1RHIG1vZGUuICovDQo+PiArI2RlZmluZSBPVEdDTURfT1RHX0VOICAgICAgICAgICAgICAgICAg QklUKDIpDQo+PiArLyogRGlzYWJsZSBPVEcgbW9kZSAqLw0KPj4gKyNkZWZpbmUgT1RHQ01EX09U R19ESVMgICAgICAgICAgICAgICAgIEJJVCgzKQ0KPj4gKy8qIkNvbmZpZ3VyZSBPVEcgYXMgQS1E ZXZpY2UuICovDQo+PiArI2RlZmluZSBPVEdDTURfQV9ERVZfRU4gICAgICAgICAgICAgICAgICAg ICAgICBCSVQoNCkNCj4+ICsvKiJDb25maWd1cmUgT1RHIGFzIEEtRGV2aWNlLiAqLw0KPj4gKyNk ZWZpbmUgT1RHQ01EX0FfREVWX0RJUyAgICAgICAgICAgICAgIEJJVCg1KQ0KPj4gKy8qIERyb3Ag dGhlIGJ1cyBmb3IgRGV2aWNlIG1vZCBlLiAqLw0KPj4gKyNkZWZpbmUgT1RHQ01EX0RFVl9CVVNf RFJPUCAgICAgICAgICAgIEJJVCg4KQ0KPj4gKy8qIERyb3AgdGhlIGJ1cyBmb3IgSG9zdCBtb2Rl Ki8NCj4+ICsjZGVmaW5lIE9UR0NNRF9IT1NUX0JVU19EUk9QICAgICAgICAgICBCSVQoOSkNCj4+ ICsvKiBQb3dlciBEb3duIFVTQlNTLURFVi4gKi8NCj4+ICsjZGVmaW5lIE9UR0NNRF9ERVZfUE9X RVJfT0ZGICAgICAgICAgICBCSVQoMTEpDQo+PiArLyogUG93ZXIgRG93biBDRE5TWEhDSS4gKi8N Cj4+ICsjZGVmaW5lIE9UR0NNRF9IT1NUX1BPV0VSX09GRiAgICAgICAgICBCSVQoMTIpDQo+PiAr DQo+PiArLyogT1RHSUVOIC0gYml0bWFza3MgKi8NCj4+ICsvKiBJRCBjaGFuZ2UgaW50ZXJydXB0 IGVuYWJsZSAqLw0KPj4gKyNkZWZpbmUgT1RHSUVOX0lEX0NIQU5HRV9JTlQgICAgICAgICAgIEJJ VCgwKQ0KPj4gKy8qIFZidXN2YWxpZCBmYWxsIGRldGVjdGVkIGludGVycnVwdCBlbmFibGUuKi8N Cj4+ICsjZGVmaW5lIE9UR0lFTl9WQlVTVkFMSURfUklTRV9JTlQgICAgICBCSVQoNCkNCj4+ICsv KiBWYnVzdmFsaWQgZmFsbCBkZXRlY3RlZCBpbnRlcnJ1cHQgZW5hYmxlICovDQo+PiArI2RlZmlu ZSBPVEdJRU5fVkJVU1ZBTElEX0ZBTExfSU5UICAgICAgQklUKDUpDQo+PiArDQo+PiArLyogT1RH U1RTIC0gYml0bWFza3MgKi8NCj4+ICsvKg0KPj4gKyAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIElE IHBpbi4gSXQgaXMgb25seSB2YWxpZCB3aGVuIGlkcHVsbHVwIGluDQo+PiArICogIE9UR0NUUkwx X1RZUEUgcmVnaXN0ZXIgaXMgc2V0IHRvICcxJy4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIE9UR1NU U19JRF9WQUxVRSAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQ0KPj4gKy8qIEN1cnJlbnQg dmFsdWUgb2YgdGhlIHZidXNfdmFsaWQgKi8NCj4+ICsjZGVmaW5lIE9UR1NUU19WQlVTX1ZBTElE ICAgICAgICAgICAgICBCSVQoMSkNCj4+ICsvKiBDdXJyZW50IHZhbHVlIG9mIHRoZSBiX3Nlc3Nf dmxkICovDQo+PiArI2RlZmluZSBPVEdTVFNfU0VTU0lPTl9WQUxJRCAgICAgICAgICAgQklUKDIp DQo+PiArLypEZXZpY2UgbW9kZSBpcyBhY3RpdmUqLw0KPj4gKyNkZWZpbmUgT1RHU1RTX0RFVl9B Q1RJVkUgICAgICAgICAgICAgIEJJVCgzKQ0KPj4gKy8qIEhvc3QgbW9kZSBpcyBhY3RpdmUuICov DQo+PiArI2RlZmluZSBPVEdTVFNfSE9TVF9BQ1RJVkUgICAgICAgICAgICAgQklUKDQpDQo+PiAr LyogT1RHIENvbnRyb2xsZXIgbm90IHJlYWR5LiAqLw0KPj4gKyNkZWZpbmUgT1RHU1RTX09UR19O UkRZX01BU0sgICAgICAgICAgIEJJVCgxMSkNCj4+ICsjZGVmaW5lIE9UR1NUU19PVEdfTlJEWShw KSAgICAgICAgICAgICAoKHApICYgT1RHU1RTX09UR19OUkRZX01BU0spDQo+PiArLyoNCj4+ICsg KiBWYWx1ZSBvZiB0aGUgc3RyYXAgcGlucy4NCj4+ICsgKiAwMDAgLSBubyBkZWZhdWx0IGNvbmZp Z3VyYXRpb24NCj4+ICsgKiAwMTAgLSBDb250cm9sbGVyIGluaXRpYWxsIGNvbmZpZ3VyZWQgYXMg SG9zdA0KPj4gKyAqIDEwMCAtIENvbnRyb2xsZXIgaW5pdGlhbGx5IGNvbmZpZ3VyZWQgYXMgRGV2 aWNlDQo+PiArICovDQo+PiArI2RlZmluZSBPVEdTVFNfU1RSQVAocCkgICAgICAgICAgICAgICAg ICAgICAgICAoKChwKSAmIEdFTk1BU0soMTQsIDEyKSkgPj4gMTIpDQo+PiArI2RlZmluZSBPVEdT VFNfU1RSQVBfTk9fREVGQVVMVF9DRkcgICAgMHgwMA0KPj4gKyNkZWZpbmUgT1RHU1RTX1NUUkFQ X0hPU1RfT1RHICAgICAgICAgIDB4MDENCj4+ICsjZGVmaW5lIE9UR1NUU19TVFJBUF9IT1NUICAg ICAgICAgICAgICAweDAyDQo+PiArI2RlZmluZSBPVEdTVFNfU1RSQVBfR0FER0VUICAgICAgICAg ICAgMHgwNA0KPj4gKy8qIEhvc3QgbW9kZSBpcyB0dXJuZWQgb24uICovDQo+PiArI2RlZmluZSBP VEdTVFNfWEhDSV9SRUFEWSAgICAgICAgICAgICAgQklUKDI2KQ0KPj4gKy8qICJEZXZpY2UgbW9k ZSBpcyB0dXJuZWQgb24gLiovDQo+PiArI2RlZmluZSBPVEdTVFNfREVWX1JFQURZICAgICAgICAg ICAgICAgQklUKDI3KQ0KPj4gKw0KPj4gKy8qIE9UR1NUQVRFLSBiaXRtYXNrcyAqLw0KPj4gKyNk ZWZpbmUgT1RHU1RBVEVfSE9TVF9TVEFURV9NQVNLICAgICAgIEdFTk1BU0soNSwgMykNCj4+ICsj ZGVmaW5lIE9UR1NUQVRFX0hPU1RfU1RBVEVfSURMRSAgICAgICAweDANCj4+ICsjZGVmaW5lIE9U R1NUQVRFX0hPU1RfU1RBVEVfVkJVU19GQUxMICAgMHg3DQo+PiArI2RlZmluZSBPVEdTVEFURV9I T1NUX1NUQVRFKHApICAgICAgICAgKCgocCkgJiBPVEdTVEFURV9IT1NUX1NUQVRFX01BU0spID4+ IDMpDQo+PiArDQo+PiArLyogT1RHUkVGQ0xLIC0gYml0bWFza3MgKi8NCj4+ICsjZGVmaW5lIE9U R1JFRkNMS19TVEJfQ0xLX1NXSVRDSF9FTiAgICBCSVQoMzEpDQo+PiArDQo+PiArLyogT1ZFUlJJ REUgLSBiaXRtYXNrcyAqLw0KPj4gKyNkZWZpbmUgT1ZFUlJJREVfSURQVUxMVVAgICAgICAgICAg ICAgIEJJVCgwKQ0KPj4gKy8qIE9ubHkgZm9yIENETlMzX0NPTlRST0xMRVJfVjAgdmVyc2lvbiAq Lw0KPj4gKyNkZWZpbmUgT1ZFUlJJREVfSURQVUxMVVBfVjAgICAgICAgICAgIEJJVCgyNCkNCj4+ ICsNCj4+ICtpbnQgY2RuczNfaXNfaG9zdChzdHJ1Y3QgY2RuczMgKmNkbnMpOw0KPj4gK2ludCBj ZG5zM19pc19kZXZpY2Uoc3RydWN0IGNkbnMzICpjZG5zKTsNCj4+ICtpbnQgY2RuczNfZ2V0X2lk KHN0cnVjdCBjZG5zMyAqY2Rucyk7DQo+PiAraW50IGNkbnMzX2RyZF9pbml0KHN0cnVjdCBjZG5z MyAqY2Rucyk7DQo+PiAraW50IGNkbnMzX2RyZF9leGl0KHN0cnVjdCBjZG5zMyAqY2Rucyk7DQo+ PiAraW50IGNkbnMzX2RyZF91cGRhdGVfbW9kZShzdHJ1Y3QgY2RuczMgKmNkbnMpOw0KPj4gKw0K Pj4gKyNlbmRpZiAvKiBfX0xJTlVYX0NETlMzX0RSRCAqLw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2NkbnMzL2VwMC5jIGIvZHJpdmVycy91c2IvY2RuczMvZXAwLmMNCj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjI4Nzg5ODJiZTFlYw0KPj4gLS0t IC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy91c2IvY2RuczMvZXAwLmMNCj4+IEBAIC0wLDAg KzEsOTA3IEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ICsv Kg0KPj4gKyAqIENhZGVuY2UgVVNCU1MgRFJEIERyaXZlciAtIGdhZGdldCBzaWRlLg0KPj4gKyAq DQo+PiArICogQ29weXJpZ2h0IChDKSAyMDE4IENhZGVuY2UgRGVzaWduIFN5c3RlbXMuDQo+PiAr ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggTlhQDQo+PiArICoNCj4+ICsgKiBBdXRob3JzOiBQ YXdlbCBKZXogPHBqZXpAY2FkZW5jZS5jb20+LA0KPj4gKyAqICAgICAgICAgIFBhd2VsIExhc3pj emFrIDxwYXdlbGxAY2FkZW5jZS5jb20+DQo+PiArICogICAgICAgICBQZXRlciBDaGVuIDxwZXRl ci5jaGVuQG54cC5jb20+DQo+PiArICovDQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4L3VzYi9j b21wb3NpdGUuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAiZ2FkZ2V0LmgiDQo+PiArI2luY2x1ZGUg InRyYWNlLmgiDQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRv ciBjZG5zM19nYWRnZXRfZXAwX2Rlc2MgPSB7DQo+PiArICAgICAgIC5iTGVuZ3RoID0gVVNCX0RU X0VORFBPSU5UX1NJWkUsDQo+PiArICAgICAgIC5iRGVzY3JpcHRvclR5cGUgPSBVU0JfRFRfRU5E UE9JTlQsDQo+PiArICAgICAgIC5ibUF0dHJpYnV0ZXMgPSBVU0JfRU5EUE9JTlRfWEZFUl9DT05U Uk9MLA0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZXAwX3J1bl90cmFuc2Zl ciAtIERvIHRyYW5zZmVyIG9uIGRlZmF1bHQgZW5kcG9pbnQgaGFyZHdhcmUNCj4+ICsgKiBAcHJp dl9kZXY6IGV4dGVuZGVkIGdhZGdldCBvYmplY3QNCj4+ICsgKiBAZG1hX2FkZHI6IHBoeXNpY2Fs IGFkZHJlc3Mgd2hlcmUgZGF0YSBpcy93aWxsIGJlIHN0b3JlZA0KPj4gKyAqIEBsZW5ndGg6IGRh dGEgbGVuZ3RoDQo+PiArICogQGVyZHk6IHNldCBpdCB0byAxIHdoZW4gRVJEWSBwYWNrZXQgc2hv dWxkIGJlIHNlbnQgLQ0KPj4gKyAqICAgICAgICBleGl0IGZyb20gZmxvdyBjb250cm9sIHN0YXRl DQo+PiArICovDQo+PiArc3RhdGljIHZvaWQgY2RuczNfZXAwX3J1bl90cmFuc2ZlcihzdHJ1Y3Qg Y2RuczNfZGV2aWNlICpwcml2X2RldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG1hX2FkZHJfdCBkbWFfYWRkciwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGxlbmd0aCwgaW50IGVyZHkpDQo+PiArew0KPj4gKyAgICAg ICBzdHJ1Y3QgY2RuczNfdXNiX3JlZ3MgX19pb21lbSAqcmVncyA9IHByaXZfZGV2LT5yZWdzOw0K Pj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXAgPSBwcml2X2Rldi0+ZXBz WzBdOw0KPj4gKw0KPj4gKyAgICAgICBwcml2X2VwLT50cmJfcG9vbC0+YnVmZmVyID0gVFJCX0JV RkZFUihkbWFfYWRkcik7DQo+PiArICAgICAgIHByaXZfZXAtPnRyYl9wb29sLT5sZW5ndGggPSBU UkJfTEVOKGxlbmd0aCk7DQo+PiArICAgICAgIHByaXZfZXAtPnRyYl9wb29sLT5jb250cm9sID0g VFJCX0NZQ0xFIHwgVFJCX0lPQyB8IFRSQl9UWVBFKFRSQl9OT1JNQUwpOw0KPj4gKw0KPj4gKyAg ICAgICB0cmFjZV9jZG5zM19wcmVwYXJlX3RyYihwcml2X2VwLCBwcml2X2VwLT50cmJfcG9vbCk7 DQo+PiArDQo+PiArICAgICAgIGNkbnMzX3NlbGVjdF9lcChwcml2X2RldiwgcHJpdl9kZXYtPmVw MF9kYXRhX2Rpcik7DQo+PiArDQo+PiArICAgICAgIHdyaXRlbChFUF9TVFNfVFJCRVJSLCAmcmVn cy0+ZXBfc3RzKTsNCj4+ICsgICAgICAgd3JpdGVsKEVQX1RSQUREUl9UUkFERFIocHJpdl9lcC0+ dHJiX3Bvb2xfZG1hKSwgJnJlZ3MtPmVwX3RyYWRkcik7DQo+PiArICAgICAgIHRyYWNlX2NkbnMz X2Rvb3JiZWxsX2VwMChwcml2X2Rldi0+ZXAwX2RhdGFfZGlyID8gImVwMGluIiA6ICJlcDBvdXQi LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGwoJnJlZ3MtPmVwX3Ry YWRkcikpOw0KPj4gKw0KPj4gKyAgICAgICAvKiBUUkIgc2hvdWxkIGJlIHByZXBhcmVkIGJlZm9y ZSBzdGFydGluZyB0cmFuc2ZlciAqLw0KPj4gKyAgICAgICB3cml0ZWwoRVBfQ01EX0RSRFksICZy ZWdzLT5lcF9jbWQpOw0KPj4gKw0KPj4gKyAgICAgICBpZiAoZXJkeSkNCj4+ICsgICAgICAgICAg ICAgICB3cml0ZWwoRVBfQ01EX0VSRFksICZwcml2X2Rldi0+cmVncy0+ZXBfY21kKTsNCj4+ICt9 DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZXAwX2RlbGVnYXRlX3JlcSAtIFJldHVybnMg c3RhdHVzIG9mIGhhbmRsaW5nIHNldHVwIHBhY2tldA0KPj4gKyAqIFNldHVwIGlzIGhhbmRsZWQg YnkgZ2FkZ2V0IGRyaXZlcg0KPj4gKyAqIEBwcml2X2RldjogZXh0ZW5kZWQgZ2FkZ2V0IG9iamVj dA0KPj4gKyAqIEBjdHJsX3JlcTogcG9pbnRlciB0byByZWNlaXZlZCBzZXR1cCBwYWNrZXQNCj4+ ICsgKg0KPj4gKyAqIFJldHVybnMgemVybyBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIHZhbHVlIG9u IGZhaWx1cmUNCj4+ICsgKi8NCj4+ICtzdGF0aWMgaW50IGNkbnMzX2VwMF9kZWxlZ2F0ZV9yZXEo c3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybF9yZXEpDQo+PiArew0KPj4g KyAgICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4gKyAgICAgICBzcGluX3VubG9jaygmcHJpdl9kZXYt PmxvY2spOw0KPj4gKyAgICAgICBwcml2X2Rldi0+c2V0dXBfcGVuZGluZyA9IDE7DQo+PiArICAg ICAgIHJldCA9IHByaXZfZGV2LT5nYWRnZXRfZHJpdmVyLT5zZXR1cCgmcHJpdl9kZXYtPmdhZGdl dCwgY3RybF9yZXEpOw0KPj4gKyAgICAgICBwcml2X2Rldi0+c2V0dXBfcGVuZGluZyA9IDA7DQo+ PiArICAgICAgIHNwaW5fbG9jaygmcHJpdl9kZXYtPmxvY2spOw0KPj4gKyAgICAgICByZXR1cm4g cmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBjZG5zM19wcmVwYXJlX3NldHVwX3Bh Y2tldChzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldikNCj4+ICt7DQo+PiArICAgICAgIHBy aXZfZGV2LT5lcDBfZGF0YV9kaXIgPSAwOw0KPj4gKyAgICAgICBwcml2X2Rldi0+ZXAwX3N0YWdl ID0gQ0ROUzNfU0VUVVBfU1RBR0U7DQo+PiArICAgICAgIGNkbnMzX2VwMF9ydW5fdHJhbnNmZXIo cHJpdl9kZXYsIHByaXZfZGV2LT5zZXR1cF9kbWEsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QpLCAwKTsNCj4+ICt9DQo+PiAr DQo+PiArc3RhdGljIHZvaWQgY2RuczNfZXAwX2NvbXBsZXRlX3NldHVwKHN0cnVjdCBjZG5zM19k ZXZpY2UgKnByaXZfZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHU4IHNlbmRfc3RhbGwsIHU4IHNlbmRfZXJkeSkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBj ZG5zM19lbmRwb2ludCAqcHJpdl9lcCA9IHByaXZfZGV2LT5lcHNbMF07DQo+PiArICAgICAgIHN0 cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdDsNCj4+ICsNCj4+ICsgICAgICAgcmVxdWVzdCA9IGNk bnMzX25leHRfcmVxdWVzdCgmcHJpdl9lcC0+cGVuZGluZ19yZXFfbGlzdCk7DQo+PiArICAgICAg IGlmIChyZXF1ZXN0KQ0KPj4gKyAgICAgICAgICAgICAgIGxpc3RfZGVsX2luaXQoJnJlcXVlc3Qt Pmxpc3QpOw0KPj4gKw0KPj4gKyAgICAgICBpZiAoc2VuZF9zdGFsbCkgew0KPj4gKyAgICAgICAg ICAgICAgIGNkbnMzX2RiZyhwcml2X2VwLT5jZG5zM19kZXYsICJTVEFMTCBmb3IgZXAwXG4iKTsN Cj4+ICsgICAgICAgICAgICAgICAvKiBzZXRfc3RhbGwgb24gZXAwICovDQo+PiArICAgICAgICAg ICAgICAgY2RuczNfc2VsZWN0X2VwKHByaXZfZGV2LCAweDAwKTsNCj4+ICsgICAgICAgICAgICAg ICB3cml0ZWwoRVBfQ01EX1NTVEFMTCwgJnByaXZfZGV2LT5yZWdzLT5lcF9jbWQpOw0KPj4gKyAg ICAgICB9IGVsc2Ugew0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX3ByZXBhcmVfc2V0dXBfcGFj a2V0KHByaXZfZGV2KTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBwcml2X2Rldi0+ ZXAwX3N0YWdlID0gQ0ROUzNfU0VUVVBfU1RBR0U7DQo+PiArICAgICAgIHdyaXRlbCgoc2VuZF9l cmR5ID8gRVBfQ01EX0VSRFkgOiAwKSB8IEVQX0NNRF9SRVFfQ01QTCwNCj4+ICsgICAgICAgICAg ICAgICZwcml2X2Rldi0+cmVncy0+ZXBfY21kKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiAr ICogY2RuczNfcmVxX2VwMF9zZXRfY29uZmlndXJhdGlvbiAtIEhhbmRsaW5nIG9mIFNFVF9DT05G SUcgc3RhbmRhcmQgVVNCIHJlcXVlc3QNCj4+ICsgKiBAcHJpdl9kZXY6IGV4dGVuZGVkIGdhZGdl dCBvYmplY3QNCj4+ICsgKiBAY3RybF9yZXE6IHBvaW50ZXIgdG8gcmVjZWl2ZWQgc2V0dXAgcGFj a2V0DQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDAgaWYgc3VjY2VzcywgVVNCX0dBREdFVF9ERUxB WUVEX1NUQVRVUyBvbiBkZWZlcnJlZCBzdGF0dXMgc3RhZ2UsDQo+PiArICogZXJyb3IgY29kZSBv biBlcnJvcg0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfcmVxX2VwMF9zZXRfY29uZmln dXJhdGlvbihzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJs X3JlcSkNCj4+ICt7DQo+PiArICAgICAgIGVudW0gdXNiX2RldmljZV9zdGF0ZSBkZXZpY2Vfc3Rh dGUgPSBwcml2X2Rldi0+Z2FkZ2V0LnN0YXRlOw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZW5k cG9pbnQgKnByaXZfZXA7DQo+PiArICAgICAgIHUzMiBjb25maWcgPSBsZTE2X3RvX2NwdShjdHJs X3JlcS0+d1ZhbHVlKTsNCj4+ICsgICAgICAgaW50IHJlc3VsdCA9IDA7DQo+PiArICAgICAgIGlu dCBpOw0KPj4gKw0KPj4gKyAgICAgICBzd2l0Y2ggKGRldmljZV9zdGF0ZSkgew0KPj4gKyAgICAg ICBjYXNlIFVTQl9TVEFURV9BRERSRVNTOg0KPj4gKyAgICAgICAgICAgICAgIC8qIENvbmZpZ3Vy ZSBub24tY29udHJvbCBFUHMgKi8NCj4+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg Q0ROUzNfRU5EUE9JTlRTX01BWF9DT1VOVDsgaSsrKSB7DQo+PiArICAgICAgICAgICAgICAgICAg ICAgICBwcml2X2VwID0gcHJpdl9kZXYtPmVwc1tpXTsNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGlmICghcHJpdl9lcCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u dGludWU7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJpdl9lcC0+Zmxh Z3MgJiBFUF9DTEFJTUVEKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZG5z M19lcF9jb25maWcocHJpdl9lcCk7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4gKyAg ICAgICAgICAgICAgIHJlc3VsdCA9IGNkbnMzX2VwMF9kZWxlZ2F0ZV9yZXEocHJpdl9kZXYsIGN0 cmxfcmVxKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBpZiAocmVzdWx0KQ0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCj4+ICsNCj4+ICsgICAgICAgICAgICAg ICBpZiAoY29uZmlnKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjZG5zM19zZXRfaHdf Y29uZmlndXJhdGlvbihwcml2X2Rldik7DQo+PiArICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGNkbnMzX2h3X3Jlc2V0X2Vwc19jb25maWcocHJpdl9k ZXYpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdXNiX2dhZGdldF9zZXRfc3RhdGUoJnBy aXZfZGV2LT5nYWRnZXQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBVU0JfU1RBVEVfQUREUkVTUyk7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKyAg ICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNlIFVTQl9TVEFURV9DT05GSUdVUkVE Og0KPj4gKyAgICAgICAgICAgICAgIHJlc3VsdCA9IGNkbnMzX2VwMF9kZWxlZ2F0ZV9yZXEocHJp dl9kZXYsIGN0cmxfcmVxKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBpZiAoIWNvbmZpZyAm JiAhcmVzdWx0KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjZG5zM19od19yZXNldF9l cHNfY29uZmlnKHByaXZfZGV2KTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHVzYl9nYWRn ZXRfc2V0X3N0YXRlKCZwcml2X2Rldi0+Z2FkZ2V0LA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVVNCX1NUQVRFX0FERFJFU1MpOw0KPj4gKyAgICAgICAg ICAgICAgIH0NCj4+ICsgICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgZGVmYXVsdDoN Cj4+ICsgICAgICAgICAgICAgICByZXN1bHQgPSAtRUlOVkFMOw0KPj4gKyAgICAgICB9DQo+PiAr DQo+PiArICAgICAgIHJldHVybiByZXN1bHQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAq IGNkbnMzX3JlcV9lcDBfc2V0X2FkZHJlc3MgLSBIYW5kbGluZyBvZiBTRVRfQUREUkVTUyBzdGFu ZGFyZCBVU0IgcmVxdWVzdA0KPj4gKyAqIEBwcml2X2RldjogZXh0ZW5kZWQgZ2FkZ2V0IG9iamVj dA0KPj4gKyAqIEBjdHJsX3JlcTogcG9pbnRlciB0byByZWNlaXZlZCBzZXR1cCBwYWNrZXQNCj4+ ICsgKg0KPj4gKyAqIFJldHVybnMgMCBpZiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGVycm9yDQo+ PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19yZXFfZXAwX3NldF9hZGRyZXNzKHN0cnVjdCBj ZG5zM19kZXZpY2UgKnByaXZfZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmxfcmVxKQ0KPj4gK3sNCj4+ICsgICAg ICAgZW51bSB1c2JfZGV2aWNlX3N0YXRlIGRldmljZV9zdGF0ZSA9IHByaXZfZGV2LT5nYWRnZXQu c3RhdGU7DQo+PiArICAgICAgIHUzMiByZWc7DQo+PiArICAgICAgIHUzMiBhZGRyOw0KPj4gKw0K Pj4gKyAgICAgICBhZGRyID0gbGUxNl90b19jcHUoY3RybF9yZXEtPndWYWx1ZSk7DQo+PiArDQo+ PiArICAgICAgIGlmIChhZGRyID4gVVNCX0RFVklDRV9NQVhfQUREUkVTUykgew0KPj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIocHJpdl9kZXYtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICJEZXZpY2UgYWRkcmVzcyAoJWQpIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJWRcbiIsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICBhZGRyLCBVU0JfREVWSUNFX01BWF9BRERSRVNTKTsN Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgICAgfQ0KPj4gKw0K Pj4gKyAgICAgICBpZiAoZGV2aWNlX3N0YXRlID09IFVTQl9TVEFURV9DT05GSUdVUkVEKSB7DQo+ PiArICAgICAgICAgICAgICAgZGV2X2Vycihwcml2X2Rldi0+ZGV2LA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgImNhbid0IHNldF9hZGRyZXNzIGZyb20gY29uZmlndXJlZCBzdGF0ZVxuIik7 DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgICAgIH0NCj4+ICsN Cj4+ICsgICAgICAgcmVnID0gcmVhZGwoJnByaXZfZGV2LT5yZWdzLT51c2JfY21kKTsNCj4+ICsN Cj4+ICsgICAgICAgd3JpdGVsKHJlZyB8IFVTQl9DTURfRkFERFIoYWRkcikgfCBVU0JfQ01EX1NF VF9BRERSLA0KPj4gKyAgICAgICAgICAgICAgJnByaXZfZGV2LT5yZWdzLT51c2JfY21kKTsNCj4+ ICsNCj4+ICsgICAgICAgdXNiX2dhZGdldF9zZXRfc3RhdGUoJnByaXZfZGV2LT5nYWRnZXQsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRyID8gVVNCX1NUQVRFX0FERFJFU1Mg OiBVU0JfU1RBVEVfREVGQVVMVCkpOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9 DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfcmVxX2VwMF9nZXRfc3RhdHVzIC0gSGFuZGxp bmcgb2YgR0VUX1NUQVRVUyBzdGFuZGFyZCBVU0IgcmVxdWVzdA0KPj4gKyAqIEBwcml2X2Rldjog ZXh0ZW5kZWQgZ2FkZ2V0IG9iamVjdA0KPj4gKyAqIEBjdHJsX3JlcTogcG9pbnRlciB0byByZWNl aXZlZCBzZXR1cCBwYWNrZXQNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgMCBpZiBzdWNjZXNzLCBl cnJvciBjb2RlIG9uIGVycm9yDQo+PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19yZXFfZXAw X2dldF9zdGF0dXMoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsKQ0K Pj4gK3sNCj4+ICsgICAgICAgX19sZTE2ICpyZXNwb25zZV9wa3Q7DQo+PiArICAgICAgIHUxNiB1 c2Jfc3RhdHVzID0gMDsNCj4+ICsgICAgICAgdTMyIHJlY2lwOw0KPj4gKyAgICAgICB1MzIgcmVn Ow0KPj4gKw0KPj4gKyAgICAgICByZWNpcCA9IGN0cmwtPmJSZXF1ZXN0VHlwZSAmIFVTQl9SRUNJ UF9NQVNLOw0KPj4gKw0KPj4gKyAgICAgICBzd2l0Y2ggKHJlY2lwKSB7DQo+PiArICAgICAgIGNh c2UgVVNCX1JFQ0lQX0RFVklDRToNCj4+ICsgICAgICAgICAgICAgICAvKiBzZWxmIHBvd2VyZWQg Ki8NCj4+ICsgICAgICAgICAgICAgICBpZiAocHJpdl9kZXYtPmlzX3NlbGZwb3dlcmVkKQ0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgdXNiX3N0YXR1cyA9IEJJVChVU0JfREVWSUNFX1NFTEZf UE9XRVJFRCk7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgaWYgKHByaXZfZGV2LT53YWtlX3Vw X2ZsYWcpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICB1c2Jfc3RhdHVzIHw9IEJJVChVU0Jf REVWSUNFX1JFTU9URV9XQUtFVVApOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGlmIChwcml2 X2Rldi0+Z2FkZ2V0LnNwZWVkICE9IFVTQl9TUEVFRF9TVVBFUikNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHJlZyA9IHJlYWRsKCZw cml2X2Rldi0+cmVncy0+dXNiX3N0cyk7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgaWYgKHBy aXZfZGV2LT51MV9hbGxvd2VkKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdXNiX3N0YXR1 cyB8PSBCSVQoVVNCX0RFVl9TVEFUX1UxX0VOQUJMRUQpOw0KPj4gKw0KPj4gKyAgICAgICAgICAg ICAgIGlmIChwcml2X2Rldi0+dTJfYWxsb3dlZCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg IHVzYl9zdGF0dXMgfD0gQklUKFVTQl9ERVZfU1RBVF9VMl9FTkFCTEVEKTsNCj4+ICsNCj4+ICsg ICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgY2FzZSBVU0JfUkVDSVBfSU5URVJGQUNF Og0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiBjZG5zM19lcDBfZGVsZWdhdGVfcmVxKHByaXZf ZGV2LCBjdHJsKTsNCj4+ICsgICAgICAgY2FzZSBVU0JfUkVDSVBfRU5EUE9JTlQ6DQo+PiArICAg ICAgICAgICAgICAgLyogY2hlY2sgaWYgZW5kcG9pbnQgaXMgc3RhbGxlZCAqLw0KPj4gKyAgICAg ICAgICAgICAgIGNkbnMzX3NlbGVjdF9lcChwcml2X2RldiwgY3RybC0+d0luZGV4KTsNCj4+ICsg ICAgICAgICAgICAgICBpZiAoRVBfU1RTX1NUQUxMKHJlYWRsKCZwcml2X2Rldi0+cmVncy0+ZXBf c3RzKSkpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICB1c2Jfc3RhdHVzID0gIEJJVChVU0Jf RU5EUE9JTlRfSEFMVCk7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGRl ZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgICAgIH0N Cj4+ICsNCj4+ICsgICAgICAgcmVzcG9uc2VfcGt0ID0gKF9fbGUxNiAqKXByaXZfZGV2LT5zZXR1 cF9idWY7DQo+PiArICAgICAgICpyZXNwb25zZV9wa3QgPSBjcHVfdG9fbGUxNih1c2Jfc3RhdHVz KTsNCj4+ICsNCj4+ICsgICAgICAgY2RuczNfZXAwX3J1bl90cmFuc2Zlcihwcml2X2RldiwgcHJp dl9kZXYtPnNldHVwX2RtYSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YoKnJlc3BvbnNlX3BrdCksIDEpOw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiAr DQo+PiArc3RhdGljIGludCBjZG5zM19lcDBfZmVhdHVyZV9oYW5kbGVfZGV2aWNlKHN0cnVjdCBj ZG5zM19kZXZpY2UgKnByaXZfZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNldCkNCj4+ICt7DQo+PiArICAg ICAgIGVudW0gdXNiX2RldmljZV9zdGF0ZSBzdGF0ZTsNCj4+ICsgICAgICAgZW51bSB1c2JfZGV2 aWNlX3NwZWVkIHNwZWVkOw0KPj4gKyAgICAgICBpbnQgcmV0ID0gMDsNCj4+ICsgICAgICAgdTMy IHdWYWx1ZTsNCj4+ICsgICAgICAgdTMyIHdJbmRleDsNCj4+ICsgICAgICAgdTE2IHRtb2RlOw0K Pj4gKw0KPj4gKyAgICAgICB3VmFsdWUgPSBsZTE2X3RvX2NwdShjdHJsLT53VmFsdWUpOw0KPj4g KyAgICAgICB3SW5kZXggPSBsZTE2X3RvX2NwdShjdHJsLT53SW5kZXgpOw0KPj4gKyAgICAgICBz dGF0ZSA9IHByaXZfZGV2LT5nYWRnZXQuc3RhdGU7DQo+PiArICAgICAgIHNwZWVkID0gcHJpdl9k ZXYtPmdhZGdldC5zcGVlZDsNCj4+ICsNCj4+ICsgICAgICAgc3dpdGNoIChjdHJsLT53VmFsdWUp IHsNCj4+ICsgICAgICAgY2FzZSBVU0JfREVWSUNFX1JFTU9URV9XQUtFVVA6DQo+PiArICAgICAg ICAgICAgICAgcHJpdl9kZXYtPndha2VfdXBfZmxhZyA9ICEhc2V0Ow0KPj4gKyAgICAgICAgICAg ICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNlIFVTQl9ERVZJQ0VfVTFfRU5BQkxFOg0KPj4gKyAg ICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSBVU0JfU1RBVEVfQ09ORklHVVJFRCB8fCBzcGVlZCAh PSBVU0JfU1BFRURfU1VQRVIpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBwcml2X2Rldi0+dTFfYWxsb3dlZCA9ICEh c2V0Ow0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNlIFVTQl9ERVZJ Q0VfVTJfRU5BQkxFOg0KPj4gKyAgICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSBVU0JfU1RBVEVf Q09ORklHVVJFRCB8fCBzcGVlZCAhPSBVU0JfU1BFRURfU1VQRVIpDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBwcml2 X2Rldi0+dTJfYWxsb3dlZCA9ICEhc2V0Ow0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4g KyAgICAgICBjYXNlIFVTQl9ERVZJQ0VfTFRNX0VOQUJMRToNCj4+ICsgICAgICAgICAgICAgICBy ZXQgPSAtRUlOVkFMOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNl IFVTQl9ERVZJQ0VfVEVTVF9NT0RFOg0KPj4gKyAgICAgICAgICAgICAgIGlmIChzdGF0ZSAhPSBV U0JfU1RBVEVfQ09ORklHVVJFRCB8fCBzcGVlZCA+IFVTQl9TUEVFRF9ISUdIKQ0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArDQo+PiArICAgICAgICAgICAg ICAgdG1vZGUgPSBsZTE2X3RvX2NwdShjdHJsLT53SW5kZXgpOw0KPj4gKw0KPj4gKyAgICAgICAg ICAgICAgIGlmICghc2V0IHx8ICh0bW9kZSAmIDB4ZmYpICE9IDApDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBzd2l0 Y2ggKHRtb2RlID4+IDgpIHsNCj4+ICsgICAgICAgICAgICAgICBjYXNlIFRFU1RfSjoNCj4+ICsg ICAgICAgICAgICAgICBjYXNlIFRFU1RfSzoNCj4+ICsgICAgICAgICAgICAgICBjYXNlIFRFU1Rf U0UwX05BSzoNCj4+ICsgICAgICAgICAgICAgICBjYXNlIFRFU1RfUEFDS0VUOg0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgY2RuczNfZXAwX2NvbXBsZXRlX3NldHVwKHByaXZfZGV2LCAwLCAx KTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qKg0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICogIExpdHRsZSBkZWxheSB0byBnaXZlIHRoZSBjb250cm9sbGVyIHNvbWUgdGltZQ0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogZm9yIHNlbmRpbmcgc3RhdHVzIHN0YWdlLg0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogVGhpcyB0aW1lIHNob3VsZCBiZSBsZXNzIHRo ZW4gM21zLg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICovDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICB1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBjZG5zM19zZXRfcmVnaXN0ZXJfYml0KCZwcml2X2Rldi0+cmVncy0+dXNiX2NtZCwN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNCX0NN RF9TVE1PREUgfA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBVU0JfU1RTX1RNT0RFX1NFTCh0bW9kZSAtIDEpKTsNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAg ICAgICAgICAgICAgICByZXQgPSAtRUlOVkFMOw0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsg ICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgZGVmYXVsdDoNCj4+ICsgICAgICAgICAg ICAgICByZXQgPSAtRUlOVkFMOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIHJldHVy biByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfZXAwX2ZlYXR1cmVfaGFu ZGxlX2ludGYoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmws DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXQpDQo+ PiArew0KPj4gKyAgICAgICB1MzIgd1ZhbHVlOw0KPj4gKyAgICAgICBpbnQgcmV0ID0gMDsNCj4+ ICsNCj4+ICsgICAgICAgd1ZhbHVlID0gbGUxNl90b19jcHUoY3RybC0+d1ZhbHVlKTsNCj4+ICsN Cj4+ICsgICAgICAgc3dpdGNoICh3VmFsdWUpIHsNCj4+ICsgICAgICAgY2FzZSBVU0JfSU5UUkZf RlVOQ19TVVNQRU5EOg0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBkZWZh dWx0Og0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7DQo+PiArICAgICAgIH0NCj4+ ICsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBj ZG5zM19lcDBfZmVhdHVyZV9oYW5kbGVfZW5kcG9pbnQoc3RydWN0IGNkbnMzX2RldmljZSAqcHJp dl9kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHNldCkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBj ZG5zM19lbmRwb2ludCAqcHJpdl9lcDsNCj4+ICsgICAgICAgaW50IHJldCA9IDA7DQo+PiArICAg ICAgIHU4IGluZGV4Ow0KPj4gKw0KPj4gKyAgICAgICBpZiAobGUxNl90b19jcHUoY3RybC0+d1Zh bHVlKSAhPSBVU0JfRU5EUE9JTlRfSEFMVCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKCEoY3RybC0+d0luZGV4ICYgflVTQl9ESVJfSU4p KQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gKyAgICAgICBpbmRleCA9 IGNkbnMzX2VwX2FkZHJfdG9faW5kZXgoY3RybC0+d0luZGV4KTsNCj4+ICsgICAgICAgcHJpdl9l cCA9IHByaXZfZGV2LT5lcHNbaW5kZXhdOw0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19zZWxlY3Rf ZXAocHJpdl9kZXYsIGN0cmwtPndJbmRleCk7DQo+PiArDQo+PiArICAgICAgIGlmIChzZXQpIHsN Cj4+ICsgICAgICAgICAgICAgICBjZG5zM19kYmcocHJpdl9lcC0+Y2RuczNfZGV2LCAiU3RhbGwg ZW5kcG9pbnQgJXNcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPm5h bWUpOw0KPj4gKyAgICAgICAgICAgICAgIHdyaXRlbChFUF9DTURfU1NUQUxMLCAmcHJpdl9kZXYt PnJlZ3MtPmVwX2NtZCk7DQo+PiArICAgICAgICAgICAgICAgcHJpdl9lcC0+ZmxhZ3MgfD0gRVBf U1RBTEw7DQo+PiArICAgICAgIH0gZWxzZSB7DQo+PiArICAgICAgICAgICAgICAgc3RydWN0IHVz Yl9yZXF1ZXN0ICpyZXF1ZXN0Ow0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGlmIChwcml2X2Rl di0+ZXBzW2luZGV4XS0+ZmxhZ3MgJiBFUF9XRURHRSkgew0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgY2RuczNfc2VsZWN0X2VwKHByaXZfZGV2LCAweDAwKTsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAwOw0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAg ICAgICAgICAgICBjZG5zM19kYmcocHJpdl9lcC0+Y2RuczNfZGV2LCAiQ2xlYXIgU3RhbGxlZCBl bmRwb2ludCAlc1xuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+bmFt ZSk7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgd3JpdGVsKEVQX0NNRF9DU1RBTEwgfCBFUF9D TURfRVBSU1QsICZwcml2X2Rldi0+cmVncy0+ZXBfY21kKTsNCj4+ICsNCj4+ICsgICAgICAgICAg ICAgICAvKiB3YWl0IGZvciBFUFJTVCBjbGVhcmVkICovDQo+PiArICAgICAgICAgICAgICAgcmV0 ID0gY2RuczNfaGFuZHNoYWtlKCZwcml2X2Rldi0+cmVncy0+ZXBfY21kLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUF9DTURfRVBSU1QsIDAsIDEwMCk7DQo+PiAr ICAgICAgICAgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHByaXZfZXAtPmZsYWdzICY9IH5F UF9TVEFMTDsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICByZXF1ZXN0ID0gY2RuczNfbmV4dF9y ZXF1ZXN0KCZwcml2X2VwLT5wZW5kaW5nX3JlcV9saXN0KTsNCj4+ICsgICAgICAgICAgICAgICBp ZiAocmVxdWVzdCkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2RuczNfZGJnKHByaXZf ZXAtPmNkbnMzX2RldiwgIlJlc3VtZSB0cmFuc2ZlciBmb3IgJXNcbiIsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+bmFtZSk7DQo+PiArDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICBjZG5zM19yZWFybV90cmFuc2Zlcihwcml2X2VwLCAxKTsNCj4+ICsg ICAgICAgICAgICAgICB9DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHJl dDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfcmVxX2VwMF9oYW5kbGVfZmVh dHVyZSAtDQo+PiArICogSGFuZGxpbmcgb2YgR0VUL1NFVF9GRUFUVVJFIHN0YW5kYXJkIFVTQiBy ZXF1ZXN0DQo+PiArICoNCj4+ICsgKiBAcHJpdl9kZXY6IGV4dGVuZGVkIGdhZGdldCBvYmplY3QN Cj4+ICsgKiBAY3RybF9yZXE6IHBvaW50ZXIgdG8gcmVjZWl2ZWQgc2V0dXAgcGFja2V0DQo+PiAr ICogQHNldDogbXVzdCBiZSBzZXQgdG8gMSBmb3IgU0VUX0ZFQVRVUkUgcmVxdWVzdA0KPj4gKyAq DQo+PiArICogUmV0dXJucyAwIGlmIHN1Y2Nlc3MsIGVycm9yIGNvZGUgb24gZXJyb3INCj4+ICsg Ki8NCj4+ICtzdGF0aWMgaW50IGNkbnMzX3JlcV9lcDBfaGFuZGxlX2ZlYXR1cmUoc3RydWN0IGNk bnMzX2RldmljZSAqcHJpdl9kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybCwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2V0KQ0KPj4gK3sNCj4+ICsgICAgICAgaW50 IHJldCA9IDA7DQo+PiArICAgICAgIHUzMiByZWNpcDsNCj4+ICsNCj4+ICsgICAgICAgcmVjaXAg PSBjdHJsLT5iUmVxdWVzdFR5cGUgJiBVU0JfUkVDSVBfTUFTSzsNCj4+ICsNCj4+ICsgICAgICAg c3dpdGNoIChyZWNpcCkgew0KPj4gKyAgICAgICBjYXNlIFVTQl9SRUNJUF9ERVZJQ0U6DQo+PiAr ICAgICAgICAgICAgICAgcmV0ID0gY2RuczNfZXAwX2ZlYXR1cmVfaGFuZGxlX2RldmljZShwcml2 X2RldiwgY3RybCwgc2V0KTsNCj4+ICsgICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAg Y2FzZSBVU0JfUkVDSVBfSU5URVJGQUNFOg0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IGNkbnMz X2VwMF9mZWF0dXJlX2hhbmRsZV9pbnRmKHByaXZfZGV2LCBjdHJsLCBzZXQpOw0KPj4gKyAgICAg ICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNlIFVTQl9SRUNJUF9FTkRQT0lOVDoNCj4+ ICsgICAgICAgICAgICAgICByZXQgPSBjZG5zM19lcDBfZmVhdHVyZV9oYW5kbGVfZW5kcG9pbnQo cHJpdl9kZXYsIGN0cmwsIHNldCk7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAg ICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAg ICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArLyoq DQo+PiArICogY2RuczNfcmVxX2VwMF9zZXRfc2VsIC0gSGFuZGxpbmcgb2YgU0VUX1NFTCBzdGFu ZGFyZCBVU0IgcmVxdWVzdA0KPj4gKyAqIEBwcml2X2RldjogZXh0ZW5kZWQgZ2FkZ2V0IG9iamVj dA0KPj4gKyAqIEBjdHJsX3JlcTogcG9pbnRlciB0byByZWNlaXZlZCBzZXR1cCBwYWNrZXQNCj4+ ICsgKg0KPj4gKyAqIFJldHVybnMgMCBpZiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGVycm9yDQo+ PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19yZXFfZXAwX3NldF9zZWwoc3RydWN0IGNkbnMz X2RldmljZSAqcHJpdl9kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsX3JlcSkNCj4+ICt7DQo+PiArICAgICAgIGlmIChw cml2X2Rldi0+Z2FkZ2V0LnN0YXRlIDwgVVNCX1NUQVRFX0FERFJFU1MpDQo+PiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArDQo+PiArICAgICAgIGlmIChjdHJsX3JlcS0+d0xl bmd0aCAhPSA2KSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2Vycihwcml2X2Rldi0+ZGV2LCAi U2V0IFNFTCBzaG91bGQgYmUgNiBieXRlcywgZ290ICVkXG4iLA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgY3RybF9yZXEtPndMZW5ndGgpOw0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGNkbnMzX2VwMF9ydW5fdHJh bnNmZXIocHJpdl9kZXYsIHByaXZfZGV2LT5zZXR1cF9kbWEsIDYsIDEpOw0KPj4gKyAgICAgICBy ZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfcmVxX2VwMF9zZXRf aXNvY2hfZGVsYXkgLQ0KPj4gKyAqIEhhbmRsaW5nIG9mIEdFVF9JU09DSF9ERUxBWSBzdGFuZGFy ZCBVU0IgcmVxdWVzdA0KPj4gKyAqIEBwcml2X2RldjogZXh0ZW5kZWQgZ2FkZ2V0IG9iamVjdA0K Pj4gKyAqIEBjdHJsX3JlcTogcG9pbnRlciB0byByZWNlaXZlZCBzZXR1cCBwYWNrZXQNCj4+ICsg Kg0KPj4gKyAqIFJldHVybnMgMCBpZiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGVycm9yDQo+PiAr ICovDQo+PiArc3RhdGljIGludCBjZG5zM19yZXFfZXAwX3NldF9pc29jaF9kZWxheShzdHJ1Y3Qg Y2RuczNfZGV2aWNlICpwcml2X2RldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybF9yZXEpDQo+PiArew0KPj4g KyAgICAgICBpZiAoY3RybF9yZXEtPndJbmRleCB8fCBjdHJsX3JlcS0+d0xlbmd0aCkNCj4+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsgICAgICAgcHJpdl9kZXYt Pmlzb2NoX2RlbGF5ID0gY3RybF9yZXEtPndWYWx1ZTsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJu IDA7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX2VwMF9zdGFuZGFyZF9yZXF1 ZXN0IC0gSGFuZGxpbmcgc3RhbmRhcmQgVVNCIHJlcXVlc3RzDQo+PiArICogQHByaXZfZGV2OiBl eHRlbmRlZCBnYWRnZXQgb2JqZWN0DQo+PiArICogQGN0cmxfcmVxOiBwb2ludGVyIHRvIHJlY2Vp dmVkIHNldHVwIHBhY2tldA0KPj4gKyAqDQo+PiArICogUmV0dXJucyAwIGlmIHN1Y2Nlc3MsIGVy cm9yIGNvZGUgb24gZXJyb3INCj4+ICsgKi8NCj4+ICtzdGF0aWMgaW50IGNkbnMzX2VwMF9zdGFu ZGFyZF9yZXF1ZXN0KHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJs X3JlcSkNCj4+ICt7DQo+PiArICAgICAgIGludCByZXQ7DQo+PiArDQo+PiArICAgICAgIHN3aXRj aCAoY3RybF9yZXEtPmJSZXF1ZXN0KSB7DQo+PiArICAgICAgIGNhc2UgVVNCX1JFUV9TRVRfQURE UkVTUzoNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBjZG5zM19yZXFfZXAwX3NldF9hZGRyZXNz KHByaXZfZGV2LCBjdHJsX3JlcSk7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAg ICAgIGNhc2UgVVNCX1JFUV9TRVRfQ09ORklHVVJBVElPTjoNCj4+ICsgICAgICAgICAgICAgICBy ZXQgPSBjZG5zM19yZXFfZXAwX3NldF9jb25maWd1cmF0aW9uKHByaXZfZGV2LCBjdHJsX3JlcSk7 DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGNhc2UgVVNCX1JFUV9HRVRf U1RBVFVTOg0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IGNkbnMzX3JlcV9lcDBfZ2V0X3N0YXR1 cyhwcml2X2RldiwgY3RybF9yZXEpOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAg ICAgICBjYXNlIFVTQl9SRVFfQ0xFQVJfRkVBVFVSRToNCj4+ICsgICAgICAgICAgICAgICByZXQg PSBjZG5zM19yZXFfZXAwX2hhbmRsZV9mZWF0dXJlKHByaXZfZGV2LCBjdHJsX3JlcSwgMCk7DQo+ PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgIGNhc2UgVVNCX1JFUV9TRVRfRkVB VFVSRToNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBjZG5zM19yZXFfZXAwX2hhbmRsZV9mZWF0 dXJlKHByaXZfZGV2LCBjdHJsX3JlcSwgMSk7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ PiArICAgICAgIGNhc2UgVVNCX1JFUV9TRVRfU0VMOg0KPj4gKyAgICAgICAgICAgICAgIHJldCA9 IGNkbnMzX3JlcV9lcDBfc2V0X3NlbChwcml2X2RldiwgY3RybF9yZXEpOw0KPj4gKyAgICAgICAg ICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNlIFVTQl9SRVFfU0VUX0lTT0NIX0RFTEFZOg0K Pj4gKyAgICAgICAgICAgICAgIHJldCA9IGNkbnMzX3JlcV9lcDBfc2V0X2lzb2NoX2RlbGF5KHBy aXZfZGV2LCBjdHJsX3JlcSk7DQo+PiArICAgICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAg IGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgcmV0ID0gY2RuczNfZXAwX2RlbGVnYXRlX3Jl cShwcml2X2RldiwgY3RybF9yZXEpOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAg ICAgICB9DQo+PiArDQo+PiArICAgICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0 YXRpYyB2b2lkIF9fcGVuZGluZ19zZXR1cF9zdGF0dXNfaGFuZGxlcihzdHJ1Y3QgY2RuczNfZGV2 aWNlICpwcml2X2RldikNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVx dWVzdCA9IHByaXZfZGV2LT5wZW5kaW5nX3N0YXR1c19yZXF1ZXN0Ow0KPj4gKw0KPj4gKyAgICAg ICBpZiAocHJpdl9kZXYtPnN0YXR1c19jb21wbGV0aW9uX25vX2NhbGwgJiYgcmVxdWVzdCAmJg0K Pj4gKyAgICAgICAgICAgcmVxdWVzdC0+Y29tcGxldGUpIHsNCj4+ICsgICAgICAgICAgICAgICBy ZXF1ZXN0LT5jb21wbGV0ZSgmcHJpdl9kZXYtPmVwc1swXS0+ZW5kcG9pbnQsIHJlcXVlc3QpOw0K Pj4gKyAgICAgICAgICAgICAgIHByaXZfZGV2LT5zdGF0dXNfY29tcGxldGlvbl9ub19jYWxsID0g MDsNCj4+ICsgICAgICAgfQ0KPj4gK30NCj4+ICsNCj4+ICt2b2lkIGNkbnMzX3BlbmRpbmdfc2V0 dXBfc3RhdHVzX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPj4gK3sNCj4+ICsg ICAgICAgc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYgPSBjb250YWluZXJfb2Yod29yaywg c3RydWN0IGNkbnMzX2RldmljZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdf c3RhdHVzX3dxKTsNCj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+ICsNCj4+ICsg ICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7DQo+PiArICAg ICAgIF9fcGVuZGluZ19zZXR1cF9zdGF0dXNfaGFuZGxlcihwcml2X2Rldik7DQo+PiArICAgICAg IHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7DQo+PiArfQ0K Pj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX2dhZGdldF9lcF9naXZlYmFjayAtIGNhbGwgc3Ry dWN0IHVzYl9yZXF1ZXN0J3MgLT5jb21wbGV0ZSBjYWxsYmFjaw0KPj4gKyAqIEBwcml2X2VwOiBU aGUgZW5kcG9pbnQgdG8gd2hvbSB0aGUgcmVxdWVzdCBiZWxvbmdzIHRvDQo+PiArICogQHByaXZf cmVxOiBUaGUgcmVxdWVzdCB3ZSdyZSBnaXZpbmcgYmFjaw0KPj4gKyAqIEBzdGF0dXM6IGNvbXBs ZXRpb24gY29kZSBmb3IgdGhlIHJlcXVlc3QNCj4+ICsgKg0KPj4gKyAqIE11c3QgYmUgY2FsbGVk IHdpdGggY29udHJvbGxlcidzIGxvY2sgaGVsZCBhbmQgaW50ZXJydXB0cyBkaXNhYmxlZC4gVGhp cw0KPj4gKyAqIGZ1bmN0aW9uIHdpbGwgdW5tYXAgQHJlcSBhbmQgY2FsbCBpdHMgLT5jb21wbGV0 ZSgpIGNhbGxiYWNrIHRvIG5vdGlmeSB1cHBlcg0KPj4gKyAqIGxheWVycyB0aGF0IGl0IGhhcyBj b21wbGV0ZWQuDQo+PiArICovDQo+PiArDQo+PiArdm9pZCBjZG5zM19nYWRnZXRfZXAwX2dpdmVi YWNrKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBzdGF0dXMpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNf ZW5kcG9pbnQgKnByaXZfZXA7DQo+PiArICAgICAgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVz dDsNCj4+ICsNCj4+ICsgICAgICAgcHJpdl9lcCA9IHByaXZfZGV2LT5lcHNbMF07DQo+PiArICAg ICAgIHJlcXVlc3QgPSBjZG5zM19uZXh0X3JlcXVlc3QoJnByaXZfZXAtPnBlbmRpbmdfcmVxX2xp c3QpOw0KPj4gKw0KPj4gKyAgICAgICBwcml2X2VwLT5kaXIgPSBwcml2X2Rldi0+ZXAwX2RhdGFf ZGlyOw0KPj4gKyAgICAgICBjZG5zM19nYWRnZXRfZ2l2ZWJhY2socHJpdl9lcCwgdG9fY2RuczNf cmVxdWVzdChyZXF1ZXN0KSwgc3RhdHVzKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICog Y2RuczNfZXAwX3NldHVwX3BoYXNlIC0gSGFuZGxpbmcgc2V0dXAgVVNCIHJlcXVlc3RzDQo+PiAr ICogQHByaXZfZGV2OiBleHRlbmRlZCBnYWRnZXQgb2JqZWN0DQo+PiArICovDQo+PiArc3RhdGlj IHZvaWQgY2RuczNfZXAwX3NldHVwX3BoYXNlKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2 KQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybCA9IHByaXZf ZGV2LT5zZXR1cF9idWY7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9l cCA9IHByaXZfZGV2LT5lcHNbMF07DQo+PiArICAgICAgIGludCByZXN1bHQ7DQo+PiArDQo+PiAr ICAgICAgIHByaXZfZGV2LT5lcDBfZGF0YV9kaXIgPSBjdHJsLT5iUmVxdWVzdFR5cGUgJiBVU0Jf RElSX0lOOw0KPj4gKw0KPj4gKyAgICAgICB0cmFjZV9jZG5zM19jdHJsX3JlcShjdHJsKTsNCj4+ ICsNCj4+ICsgICAgICAgaWYgKCFsaXN0X2VtcHR5KCZwcml2X2VwLT5wZW5kaW5nX3JlcV9saXN0 KSkgew0KPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdDsNCj4+ ICsNCj4+ICsgICAgICAgICAgICAgICByZXF1ZXN0ID0gY2RuczNfbmV4dF9yZXF1ZXN0KCZwcml2 X2VwLT5wZW5kaW5nX3JlcV9saXN0KTsNCj4+ICsgICAgICAgICAgICAgICBwcml2X2VwLT5kaXIg PSBwcml2X2Rldi0+ZXAwX2RhdGFfZGlyOw0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX2dhZGdl dF9naXZlYmFjayhwcml2X2VwLCB0b19jZG5zM19yZXF1ZXN0KHJlcXVlc3QpLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRUNPTk5SRVNFVCk7DQo+PiArICAgICAg IH0NCj4+ICsNCj4+ICsgICAgICAgaWYgKGxlMTZfdG9fY3B1KGN0cmwtPndMZW5ndGgpKQ0KPj4g KyAgICAgICAgICAgICAgIHByaXZfZGV2LT5lcDBfc3RhZ2UgPSBDRE5TM19EQVRBX1NUQUdFOw0K Pj4gKyAgICAgICBlbHNlDQo+PiArICAgICAgICAgICAgICAgcHJpdl9kZXYtPmVwMF9zdGFnZSA9 IENETlMzX1NUQVRVU19TVEFHRTsNCj4+ICsNCj4+ICsgICAgICAgaWYgKChjdHJsLT5iUmVxdWVz dFR5cGUgJiBVU0JfVFlQRV9NQVNLKSA9PSBVU0JfVFlQRV9TVEFOREFSRCkNCj4+ICsgICAgICAg ICAgICAgICByZXN1bHQgPSBjZG5zM19lcDBfc3RhbmRhcmRfcmVxdWVzdChwcml2X2RldiwgY3Ry bCk7DQo+PiArICAgICAgIGVsc2UNCj4+ICsgICAgICAgICAgICAgICByZXN1bHQgPSBjZG5zM19l cDBfZGVsZWdhdGVfcmVxKHByaXZfZGV2LCBjdHJsKTsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHJl c3VsdCA9PSBVU0JfR0FER0VUX0RFTEFZRURfU1RBVFVTKQ0KPj4gKyAgICAgICAgICAgICAgIHJl dHVybjsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHJlc3VsdCA8IDApDQo+PiArICAgICAgICAgICAg ICAgY2RuczNfZXAwX2NvbXBsZXRlX3NldHVwKHByaXZfZGV2LCAxLCAxKTsNCj4+ICsgICAgICAg ZWxzZSBpZiAocHJpdl9kZXYtPmVwMF9zdGFnZSA9PSBDRE5TM19TVEFUVVNfU1RBR0UpDQo+PiAr ICAgICAgICAgICAgICAgY2RuczNfZXAwX2NvbXBsZXRlX3NldHVwKHByaXZfZGV2LCAwLCAxKTsN Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgY2RuczNfdHJhbnNmZXJfY29tcGxldGVkKHN0 cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2KQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IGNk bnMzX2VuZHBvaW50ICpwcml2X2VwID0gcHJpdl9kZXYtPmVwc1swXTsNCj4+ICsNCj4+ICsgICAg ICAgaWYgKCFsaXN0X2VtcHR5KCZwcml2X2VwLT5wZW5kaW5nX3JlcV9saXN0KSkgew0KPj4gKyAg ICAgICAgICAgICAgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdDsNCj4+ICsNCj4+ICsgICAg ICAgICAgICAgICB0cmFjZV9jZG5zM19jb21wbGV0ZV90cmIocHJpdl9lcCwgcHJpdl9lcC0+dHJi X3Bvb2wpOw0KPj4gKyAgICAgICAgICAgICAgIHJlcXVlc3QgPSBjZG5zM19uZXh0X3JlcXVlc3Qo JnByaXZfZXAtPnBlbmRpbmdfcmVxX2xpc3QpOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHJl cXVlc3QtPmFjdHVhbCA9DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBUUkJfTEVOKGxlMzJf dG9fY3B1KHByaXZfZXAtPnRyYl9wb29sLT5sZW5ndGgpKTsNCj4+ICsNCj4+ICsgICAgICAgICAg ICAgICBwcml2X2VwLT5kaXIgPSBwcml2X2Rldi0+ZXAwX2RhdGFfZGlyOw0KPj4gKyAgICAgICAg ICAgICAgIGNkbnMzX2dhZGdldF9naXZlYmFjayhwcml2X2VwLCB0b19jZG5zM19yZXF1ZXN0KHJl cXVlc3QpLCAwKTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19lcDBfY29t cGxldGVfc2V0dXAocHJpdl9kZXYsIDAsIDApOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsg KiBjZG5zM19jaGVja19uZXdfc2V0dXAgLSBDaGVjayBpZiBjb250cm9sbGVyIHJlY2VpdmUgbmV3 IFNFVFVQIHBhY2tldC4NCj4+ICsgKiBAcHJpdl9kZXY6IGV4dGVuZGVkIGdhZGdldCBvYmplY3QN Cj4+ICsgKg0KPj4gKyAqIFRoZSBTRVRVUCBwYWNrZXQgY2FuIGJlIGtlcHQgaW4gb24tY2hpcCBt ZW1vcnkgb3IgaW4gc3lzdGVtIG1lbW9yeS4NCj4+ICsgKi8NCj4+ICtzdGF0aWMgYm9vbCBjZG5z M19jaGVja19uZXdfc2V0dXAoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYpDQo+PiArew0K Pj4gKyAgICAgICB1MzIgZXBfc3RzX3JlZzsNCj4+ICsNCj4+ICsgICAgICAgY2RuczNfc2VsZWN0 X2VwKHByaXZfZGV2LCAwIHwgVVNCX0RJUl9PVVQpOw0KPj4gKyAgICAgICBlcF9zdHNfcmVnID0g cmVhZGwoJnByaXZfZGV2LT5yZWdzLT5lcF9zdHMpOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4g ISEoZXBfc3RzX3JlZyAmIChFUF9TVFNfU0VUVVAgfCBFUF9TVFNfU1RQV0FJVCkpOw0KPj4gK30N Cj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19jaGVja19lcDBfaW50ZXJydXB0X3Byb2NlZWQg LSBQcm9jZXNzZXMgaW50ZXJydXB0IHJlbGF0ZWQgdG8gZW5kcG9pbnQgMA0KPj4gKyAqIEBwcml2 X2RldjogZXh0ZW5kZWQgZ2FkZ2V0IG9iamVjdA0KPj4gKyAqIEBkaXI6IFVTQl9ESVJfSU4gZm9y IElOIGRpcmVjdGlvbiwgVVNCX0RJUl9PVVQgZm9yIE9VVCBkaXJlY3Rpb24NCj4+ICsgKi8NCj4+ ICt2b2lkIGNkbnMzX2NoZWNrX2VwMF9pbnRlcnJ1cHRfcHJvY2VlZChzdHJ1Y3QgY2RuczNfZGV2 aWNlICpwcml2X2RldiwgaW50IGRpcikNCj4+ICt7DQo+PiArICAgICAgIHUzMiBlcF9zdHNfcmVn Ow0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19zZWxlY3RfZXAocHJpdl9kZXYsIGRpcik7DQo+PiAr DQo+PiArICAgICAgIGVwX3N0c19yZWcgPSByZWFkbCgmcHJpdl9kZXYtPnJlZ3MtPmVwX3N0cyk7 DQo+PiArICAgICAgIHdyaXRlbChlcF9zdHNfcmVnLCAmcHJpdl9kZXYtPnJlZ3MtPmVwX3N0cyk7 DQo+PiArDQo+PiArICAgICAgIHRyYWNlX2NkbnMzX2VwMF9pcnEocHJpdl9kZXYsIGVwX3N0c19y ZWcpOw0KPj4gKw0KPj4gKyAgICAgICBfX3BlbmRpbmdfc2V0dXBfc3RhdHVzX2hhbmRsZXIocHJp dl9kZXYpOw0KPj4gKw0KPj4gKyAgICAgICBpZiAoKGVwX3N0c19yZWcgJiBFUF9TVFNfU0VUVVAp KSB7DQo+PiArICAgICAgICAgICAgICAgY2RuczNfZXAwX3NldHVwX3BoYXNlKHByaXZfZGV2KTsN Cj4+ICsgICAgICAgfSBlbHNlIGlmICgoZXBfc3RzX3JlZyAmIEVQX1NUU19JT0MpIHx8IChlcF9z dHNfcmVnICYgRVBfU1RTX0lTUCkpIHsNCj4+ICsgICAgICAgICAgICAgICBwcml2X2Rldi0+ZXAw X2RhdGFfZGlyID0gZGlyOw0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX3RyYW5zZmVyX2NvbXBs ZXRlZChwcml2X2Rldik7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgaWYgKGVwX3N0 c19yZWcgJiBFUF9TVFNfREVTQ01JUykgew0KPj4gKyAgICAgICAgICAgICAgIGlmIChkaXIgPT0g MCAmJiAhcHJpdl9kZXYtPnNldHVwX3BlbmRpbmcpDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICBjZG5zM19wcmVwYXJlX3NldHVwX3BhY2tldChwcml2X2Rldik7DQo+PiArICAgICAgIH0NCj4+ ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZ2FkZ2V0X2VwMF9lbmFibGUNCj4+ICsg KiBGdW5jdGlvbiBzaG91bGRuJ3QgYmUgY2FsbGVkIGJ5IGdhZGdldCBkcml2ZXIsDQo+PiArICog ZW5kcG9pbnQgMCBpcyBhbGx3YXlzIGFjdGl2ZQ0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQgY2Ru czNfZ2FkZ2V0X2VwMF9lbmFibGUoc3RydWN0IHVzYl9lcCAqZXAsDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRv ciAqZGVzYykNCj4+ICt7DQo+PiArICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gK30NCj4+ICsN Cj4+ICsvKioNCj4+ICsgKiBjZG5zM19nYWRnZXRfZXAwX2Rpc2FibGUNCj4+ICsgKiBGdW5jdGlv biBzaG91bGRuJ3QgYmUgY2FsbGVkIGJ5IGdhZGdldCBkcml2ZXIsDQo+PiArICogZW5kcG9pbnQg MCBpcyBhbGx3YXlzIGFjdGl2ZQ0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfZ2FkZ2V0 X2VwMF9kaXNhYmxlKHN0cnVjdCB1c2JfZXAgKmVwKQ0KPj4gK3sNCj4+ICsgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX2dhZGdldF9lcDBf c2V0X2hhbHQNCj4+ICsgKiBAZXA6IHBvaW50ZXIgdG8gZW5kcG9pbnQgemVybyBvYmplY3QNCj4+ ICsgKiBAdmFsdWU6IDEgZm9yIHNldCBzdGFsbCwgMCBmb3IgY2xlYXIgc3RhbGwNCj4+ICsgKg0K Pj4gKyAqIFJldHVybnMgMA0KPj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfZ2FkZ2V0X2Vw MF9zZXRfaGFsdChzdHJ1Y3QgdXNiX2VwICplcCwgaW50IHZhbHVlKQ0KPj4gK3sNCj4+ICsgICAg ICAgLyogVE9ETyAqLw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoq DQo+PiArICogY2RuczNfZ2FkZ2V0X2VwMF9xdWV1ZSBUcmFuc2ZlciBkYXRhIG9uIGVuZHBvaW50 IHplcm8NCj4+ICsgKiBAZXA6IHBvaW50ZXIgdG8gZW5kcG9pbnQgemVybyBvYmplY3QNCj4+ICsg KiBAcmVxdWVzdDogcG9pbnRlciB0byByZXF1ZXN0IG9iamVjdA0KPj4gKyAqIEBnZnBfZmxhZ3M6 IGdmcCBmbGFncw0KPj4gKyAqDQo+PiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIGNv ZGUgZWxzZXdoZXJlDQo+PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19nYWRnZXRfZXAwX3F1 ZXVlKHN0cnVjdCB1c2JfZXAgKmVwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdCwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZnBfdCBnZnBfZmxhZ3MpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3Qg Y2RuczNfZW5kcG9pbnQgKnByaXZfZXAgPSBlcF90b19jZG5zM19lcChlcCk7DQo+PiArICAgICAg IHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2ID0gcHJpdl9lcC0+Y2RuczNfZGV2Ow0KPj4g KyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4gKyAgICAgICBpbnQgZXJkeV9zZW50ID0g MDsNCj4+ICsgICAgICAgaW50IHJldCA9IDA7DQo+PiArDQo+PiArICAgICAgIGNkbnMzX2RiZyhw cml2X2VwLT5jZG5zM19kZXYsICJRdWV1ZSB0byBFcDAlcyBMOiAlZFxuIiwNCj4+ICsgICAgICAg ICAgICAgICAgIHByaXZfZGV2LT5lcDBfZGF0YV9kaXIgPyAiSU4iIDogIk9VVCIsDQo+PiArICAg ICAgICAgICAgICAgICByZXF1ZXN0LT5sZW5ndGgpOw0KPj4gKw0KPj4gKyAgICAgICAvKiBjYW5j ZWwgdGhlIHJlcXVlc3QgaWYgY29udHJvbGxlciByZWNlaXZlIG5ldyBTRVRVUCBwYWNrZXQuICov DQo+PiArICAgICAgIGlmIChjZG5zM19jaGVja19uZXdfc2V0dXAocHJpdl9kZXYpKQ0KPj4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRUNPTk5SRVNFVDsNCj4+ICsNCj4+ICsgICAgICAgLyogc2Vu ZCBTVEFUVVMgc3RhZ2UuIFNob3VsZCBiZSBjYWxsZWQgb25seSBmb3IgU0VUX0NPTkZJR1VSQVRJ T04gKi8NCj4+ICsgICAgICAgaWYgKHByaXZfZGV2LT5lcDBfc3RhZ2UgPT0gQ0ROUzNfU1RBVFVT X1NUQUdFKSB7DQo+PiArICAgICAgICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnByaXZfZGV2 LT5sb2NrLCBmbGFncyk7DQo+PiArICAgICAgICAgICAgICAgY2RuczNfc2VsZWN0X2VwKHByaXZf ZGV2LCAweDAwKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBlcmR5X3NlbnQgPSAhcHJpdl9k ZXYtPmh3X2NvbmZpZ3VyZWRfZmxhZzsNCj4+ICsgICAgICAgICAgICAgICBjZG5zM19zZXRfaHdf Y29uZmlndXJhdGlvbihwcml2X2Rldik7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgaWYgKCFl cmR5X3NlbnQpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjZG5zM19lcDBfY29tcGxldGVf c2V0dXAocHJpdl9kZXYsIDAsIDEpOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHJlcXVlc3Qt PmFjdHVhbCA9IDA7DQo+PiArICAgICAgICAgICAgICAgcHJpdl9kZXYtPnN0YXR1c19jb21wbGV0 aW9uX25vX2NhbGwgPSB0cnVlOw0KPj4gKyAgICAgICAgICAgICAgIHByaXZfZGV2LT5wZW5kaW5n X3N0YXR1c19yZXF1ZXN0ID0gcmVxdWVzdDsNCj4+ICsgICAgICAgICAgICAgICBzcGluX3VubG9j a19pcnFyZXN0b3JlKCZwcml2X2Rldi0+bG9jaywgZmxhZ3MpOw0KPj4gKw0KPj4gKyAgICAgICAg ICAgICAgIC8qDQo+PiArICAgICAgICAgICAgICAgICogU2luY2UgdGhlcmUgaXMgbm8gY29tcGxl dGlvbiBpbnRlcnJ1cHQgZm9yIHN0YXR1cyBzdGFnZSwNCj4+ICsgICAgICAgICAgICAgICAgKiBp dCBuZWVkcyB0byBjYWxsIC0+Y29tcGxldGlvbiBpbiBzb2Z0d2FyZSBhZnRlcg0KPj4gKyAgICAg ICAgICAgICAgICAqIGVwMF9xdWV1ZSBpcyBiYWNrLg0KPj4gKyAgICAgICAgICAgICAgICAqLw0K Pj4gKyAgICAgICAgICAgICAgIHF1ZXVlX3dvcmsoc3lzdGVtX2ZyZWV6YWJsZV93cSwgJnByaXZf ZGV2LT5wZW5kaW5nX3N0YXR1c193cSk7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnByaXZfZGV2 LT5sb2NrLCBmbGFncyk7DQo+PiArICAgICAgIGlmICghbGlzdF9lbXB0eSgmcHJpdl9lcC0+cGVu ZGluZ19yZXFfbGlzdCkpIHsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHByaXZfZGV2LT5k ZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgaGFuZGxlIG11bHRpcGxlIHJl cXVlc3RzIGZvciBlcDBcbiIpOw0KPj4gKyAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJu IC1FQlVTWTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICByZXQgPSB1c2JfZ2FkZ2V0 X21hcF9yZXF1ZXN0X2J5X2Rldihwcml2X2Rldi0+c3lzZGV2LCByZXF1ZXN0LA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2X2Rldi0+ZXAwX2RhdGFf ZGlyKTsNCj4+ICsgICAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICAgIHNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7DQo+PiArICAgICAgICAgICAg ICAgZGV2X2Vycihwcml2X2Rldi0+ZGV2LCAiZmFpbGVkIHRvIG1hcCByZXF1ZXN0XG4iKTsNCj4+ ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4g KyAgICAgICByZXF1ZXN0LT5zdGF0dXMgPSAtRUlOUFJPR1JFU1M7DQo+PiArICAgICAgIGxpc3Rf YWRkX3RhaWwoJnJlcXVlc3QtPmxpc3QsICZwcml2X2VwLT5wZW5kaW5nX3JlcV9saXN0KTsNCj4+ ICsgICAgICAgY2RuczNfZXAwX3J1bl90cmFuc2Zlcihwcml2X2RldiwgcmVxdWVzdC0+ZG1hLCBy ZXF1ZXN0LT5sZW5ndGgsIDEpOw0KPj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZw cml2X2Rldi0+bG9jaywgZmxhZ3MpOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4g K30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19nYWRnZXRfZXBfc2V0X3dlZGdlIFNldCB3 ZWRnZSBvbiBzZWxlY3RlZCBlbmRwb2ludA0KPj4gKyAqIEBlcDogZW5kcG9pbnQgb2JqZWN0DQo+ PiArICoNCj4+ICsgKiBSZXR1cm5zIDANCj4+ICsgKi8NCj4+ICtpbnQgY2RuczNfZ2FkZ2V0X2Vw X3NldF93ZWRnZShzdHJ1Y3QgdXNiX2VwICplcCkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBj ZG5zM19lbmRwb2ludCAqcHJpdl9lcCA9IGVwX3RvX2NkbnMzX2VwKGVwKTsNCj4+ICsgICAgICAg c3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYgPSBwcml2X2VwLT5jZG5zM19kZXY7DQo+PiAr DQo+PiArICAgICAgIGRldl9kYmcocHJpdl9kZXYtPmRldiwgIldlZGdlIGZvciAlc1xuIiwgZXAt Pm5hbWUpOw0KPj4gKyAgICAgICBjZG5zM19nYWRnZXRfZXBfc2V0X2hhbHQoZXAsIDEpOw0KPj4g KyAgICAgICBwcml2X2VwLT5mbGFncyB8PSBFUF9XRURHRTsNCj4+ICsNCj4+ICsgICAgICAgcmV0 dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK2NvbnN0IHN0cnVjdCB1c2JfZXBfb3BzIGNkbnMzX2dh ZGdldF9lcDBfb3BzID0gew0KPj4gKyAgICAgICAuZW5hYmxlID0gY2RuczNfZ2FkZ2V0X2VwMF9l bmFibGUsDQo+PiArICAgICAgIC5kaXNhYmxlID0gY2RuczNfZ2FkZ2V0X2VwMF9kaXNhYmxlLA0K Pj4gKyAgICAgICAuYWxsb2NfcmVxdWVzdCA9IGNkbnMzX2dhZGdldF9lcF9hbGxvY19yZXF1ZXN0 LA0KPj4gKyAgICAgICAuZnJlZV9yZXF1ZXN0ID0gY2RuczNfZ2FkZ2V0X2VwX2ZyZWVfcmVxdWVz dCwNCj4+ICsgICAgICAgLnF1ZXVlID0gY2RuczNfZ2FkZ2V0X2VwMF9xdWV1ZSwNCj4+ICsgICAg ICAgLmRlcXVldWUgPSBjZG5zM19nYWRnZXRfZXBfZGVxdWV1ZSwNCj4+ICsgICAgICAgLnNldF9o YWx0ID0gY2RuczNfZ2FkZ2V0X2VwMF9zZXRfaGFsdCwNCj4+ICsgICAgICAgLnNldF93ZWRnZSA9 IGNkbnMzX2dhZGdldF9lcF9zZXRfd2VkZ2UsDQo+PiArfTsNCj4+ICsNCj4+ICsvKioNCj4+ICsg KiBjZG5zM19lcDBfY29uZmlnIC0gQ29uZmlndXJlcyBkZWZhdWx0IGVuZHBvaW50DQo+PiArICog QHByaXZfZGV2OiBleHRlbmRlZCBnYWRnZXQgb2JqZWN0DQo+PiArICoNCj4+ICsgKiBGdW5jdGlv bnMgc2V0cyBwYXJhbWV0ZXJzOiBtYXhpbWFsIHBhY2tldCBzaXplIGFuZCBlbmFibGVzIGludGVy cnVwdHMNCj4+ICsgKi8NCj4+ICt2b2lkIGNkbnMzX2VwMF9jb25maWcoc3RydWN0IGNkbnMzX2Rl dmljZSAqcHJpdl9kZXYpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfdXNiX3JlZ3Mg X19pb21lbSAqcmVnczsNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2Vw Ow0KPj4gKyAgICAgICB1MzIgbWF4X3BhY2tldF9zaXplID0gNjQ7DQo+PiArDQo+PiArICAgICAg IHJlZ3MgPSBwcml2X2Rldi0+cmVnczsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHByaXZfZGV2LT5n YWRnZXQuc3BlZWQgPT0gVVNCX1NQRUVEX1NVUEVSKQ0KPj4gKyAgICAgICAgICAgICAgIG1heF9w YWNrZXRfc2l6ZSA9IDUxMjsNCj4+ICsNCj4+ICsgICAgICAgcHJpdl9lcCA9IHByaXZfZGV2LT5l cHNbMF07DQo+PiArDQo+PiArICAgICAgIGlmICghbGlzdF9lbXB0eSgmcHJpdl9lcC0+cGVuZGlu Z19yZXFfbGlzdCkpIHsNCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJl cXVlc3Q7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgcmVxdWVzdCA9IGNkbnMzX25leHRfcmVx dWVzdCgmcHJpdl9lcC0+cGVuZGluZ19yZXFfbGlzdCk7DQo+PiArICAgICAgICAgICAgICAgbGlz dF9kZWxfaW5pdCgmcmVxdWVzdC0+bGlzdCk7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAg ICAgcHJpdl9kZXYtPnUxX2FsbG93ZWQgPSAwOw0KPj4gKyAgICAgICBwcml2X2Rldi0+dTJfYWxs b3dlZCA9IDA7DQo+PiArDQo+PiArICAgICAgIHByaXZfZGV2LT5nYWRnZXQuZXAwLT5tYXhwYWNr ZXQgPSBtYXhfcGFja2V0X3NpemU7DQo+PiArICAgICAgIGNkbnMzX2dhZGdldF9lcDBfZGVzYy53 TWF4UGFja2V0U2l6ZSA9IGNwdV90b19sZTE2KG1heF9wYWNrZXRfc2l6ZSk7DQo+PiArDQo+PiAr ICAgICAgIC8qIGluaXQgZXAgb3V0ICovDQo+PiArICAgICAgIGNkbnMzX3NlbGVjdF9lcChwcml2 X2RldiwgVVNCX0RJUl9PVVQpOw0KPj4gKw0KPj4gKyAgICAgICB3cml0ZWwoRVBfQ0ZHX0VOQUJM RSB8IEVQX0NGR19NQVhQS1RTSVpFKG1heF9wYWNrZXRfc2l6ZSksDQo+PiArICAgICAgICAgICAg ICAmcmVncy0+ZXBfY2ZnKTsNCj4+ICsNCj4+ICsgICAgICAgd3JpdGVsKEVQX1NUU19FTl9TRVRV UEVOIHwgRVBfU1RTX0VOX0RFU0NNSVNFTiB8IEVQX1NUU19FTl9UUkJFUlJFTiwNCj4+ICsgICAg ICAgICAgICAgICZyZWdzLT5lcF9zdHNfZW4pOw0KPj4gKw0KPj4gKyAgICAgICAvKiBpbml0IGVw IGluICovDQo+PiArICAgICAgIGNkbnMzX3NlbGVjdF9lcChwcml2X2RldiwgVVNCX0RJUl9JTik7 DQo+PiArDQo+PiArICAgICAgIHdyaXRlbChFUF9DRkdfRU5BQkxFIHwgRVBfQ0ZHX01BWFBLVFNJ WkUobWF4X3BhY2tldF9zaXplKSwNCj4+ICsgICAgICAgICAgICAgICZyZWdzLT5lcF9jZmcpOw0K Pj4gKw0KPj4gKyAgICAgICB3cml0ZWwoRVBfU1RTX0VOX1NFVFVQRU4gfCBFUF9TVFNfRU5fVFJC RVJSRU4sICZyZWdzLT5lcF9zdHNfZW4pOw0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19zZXRfcmVn aXN0ZXJfYml0KCZyZWdzLT51c2JfY29uZiwgVVNCX0NPTkZfVTFEUyB8IFVTQl9DT05GX1UyRFMp Ow0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19pbml0X2VwMCBJbml0aWFsaXpl cyBzb2Z0d2FyZSBlbmRwb2ludCAwIG9mIGdhZGdldA0KPj4gKyAqIEBwcml2X2RldjogZXh0ZW5k ZWQgZ2FkZ2V0IG9iamVjdA0KPj4gKyAqIEBlcF9wcml2OiBleHRlbmRlZCBlbmRwb2ludCBvYmpl Y3QNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIGVsc2UgZXJyb3IgY29kZS4N Cj4+ICsgKi8NCj4+ICtpbnQgY2RuczNfaW5pdF9lcDAoc3RydWN0IGNkbnMzX2RldmljZSAqcHJp dl9kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2 X2VwKQ0KPj4gK3sNCj4+ICsgICAgICAgc3ByaW50Zihwcml2X2VwLT5uYW1lLCAiZXAwIik7DQo+ PiArDQo+PiArICAgICAgIC8qIGZpbGwgbGludXggZmllbGRzICovDQo+PiArICAgICAgIHByaXZf ZXAtPmVuZHBvaW50Lm9wcyA9ICZjZG5zM19nYWRnZXRfZXAwX29wczsNCj4+ICsgICAgICAgcHJp dl9lcC0+ZW5kcG9pbnQubWF4YnVyc3QgPSAxOw0KPj4gKyAgICAgICB1c2JfZXBfc2V0X21heHBh Y2tldF9saW1pdCgmcHJpdl9lcC0+ZW5kcG9pbnQsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENETlMzX0VQMF9NQVhfUEFDS0VUX0xJTUlUKTsNCj4+ICsgICAgICAgcHJp dl9lcC0+ZW5kcG9pbnQuYWRkcmVzcyA9IDA7DQo+PiArICAgICAgIHByaXZfZXAtPmVuZHBvaW50 LmNhcHMudHlwZV9jb250cm9sID0gMTsNCj4+ICsgICAgICAgcHJpdl9lcC0+ZW5kcG9pbnQuY2Fw cy5kaXJfaW4gPSAxOw0KPj4gKyAgICAgICBwcml2X2VwLT5lbmRwb2ludC5jYXBzLmRpcl9vdXQg PSAxOw0KPj4gKyAgICAgICBwcml2X2VwLT5lbmRwb2ludC5uYW1lID0gcHJpdl9lcC0+bmFtZTsN Cj4+ICsgICAgICAgcHJpdl9lcC0+ZW5kcG9pbnQuZGVzYyA9ICZjZG5zM19nYWRnZXRfZXAwX2Rl c2M7DQo+PiArICAgICAgIHByaXZfZGV2LT5nYWRnZXQuZXAwID0gJnByaXZfZXAtPmVuZHBvaW50 Ow0KPj4gKyAgICAgICBwcml2X2VwLT50eXBlID0gVVNCX0VORFBPSU5UX1hGRVJfQ09OVFJPTDsN Cj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIGNkbnMzX2FsbG9jYXRlX3RyYl9wb29sKHByaXZfZXAp Ow0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9nYWRnZXQtZXhwb3J0 LmggYi9kcml2ZXJzL3VzYi9jZG5zMy9nYWRnZXQtZXhwb3J0LmgNCj4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjU3NzQ2OWVlZTk2MQ0KPj4gLS0tIC9kZXYv bnVsbA0KPj4gKysrIGIvZHJpdmVycy91c2IvY2RuczMvZ2FkZ2V0LWV4cG9ydC5oDQo+PiBAQCAt MCwwICsxLDI4IEBADQo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8N Cj4+ICsvKg0KPj4gKyAqIENhZGVuY2UgVVNCU1MgRFJEIERyaXZlciAtIEdhZGdldCBFeHBvcnQg QVBJcy4NCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdodCAoQykgMjAxNyBOWFANCj4+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMTctMjAxOCBOWFANCj4+ICsgKg0KPj4gKyAqIEF1dGhvcnM6IFBldGVyIENo ZW4gPHBldGVyLmNoZW5AbnhwLmNvbT4NCj4+ICsgKi8NCj4+ICsjaWZuZGVmIF9fTElOVVhfQ0RO UzNfR0FER0VUX0VYUE9SVA0KPj4gKyNkZWZpbmUgX19MSU5VWF9DRE5TM19HQURHRVRfRVhQT1JU DQo+PiArDQo+PiArI2lmZGVmIENPTkZJR19VU0JfQ0ROUzNfR0FER0VUDQo+PiArDQo+PiAraW50 IGNkbnMzX2dhZGdldF9pbml0KHN0cnVjdCBjZG5zMyAqY2Rucyk7DQo+PiArdm9pZCBjZG5zM19n YWRnZXRfZXhpdChzdHJ1Y3QgY2RuczMgKmNkbnMpOw0KPj4gKyNlbHNlDQo+PiArDQo+PiArc3Rh dGljIGlubGluZSBpbnQgY2RuczNfZ2FkZ2V0X2luaXQoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4g K3sNCj4+ICsgICAgICAgcmV0dXJuIC1FTlhJTzsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu bGluZSB2b2lkIGNkbnMzX2dhZGdldF9leGl0KHN0cnVjdCBjZG5zMyAqY2RucykgeyB9DQo+PiAr DQo+PiArI2VuZGlmDQo+PiArDQo+PiArI2VuZGlmIC8qIF9fTElOVVhfQ0ROUzNfR0FER0VUX0VY UE9SVCAqLw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5jIGIvZHJp dmVycy91c2IvY2RuczMvZ2FkZ2V0LmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRl eCAwMDAwMDAwMDAwMDAuLjdmN2YyNGVlM2M0Yg0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIv ZHJpdmVycy91c2IvY2RuczMvZ2FkZ2V0LmMNCj4+IEBAIC0wLDAgKzEsMjAwMyBAQA0KPj4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+PiArLyoNCj4+ICsgKiBDYWRlbmNl IFVTQlNTIERSRCBEcml2ZXIgLSBnYWRnZXQgc2lkZS4NCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdo dCAoQykgMjAxOCBDYWRlbmNlIERlc2lnbiBTeXN0ZW1zLg0KPj4gKyAqIENvcHlyaWdodCAoQykg MjAxNy0yMDE4IE5YUA0KPj4gKyAqDQo+PiArICogQXV0aG9yczogUGF3ZWwgSmV6IDxwamV6QGNh ZGVuY2UuY29tPiwNCj4+ICsgKiAgICAgICAgICBQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVu Y2UuY29tPg0KPj4gKyAqICAgICAgICAgUGV0ZXIgQ2hlbiA8cGV0ZXIuY2hlbkBueHAuY29tPg0K Pj4gKyAqLw0KPj4gKw0KPj4gKy8qDQo+PiArICogV29yayBhcm91bmQgMToNCj4+ICsgKiBBdCBz b21lIHNpdHVhdGlvbnMsIHRoZSBjb250cm9sbGVyIG1heSBnZXQgc3RhbGUgZGF0YSBhZGRyZXNz IGluIFRSQg0KPj4gKyAqIGF0IGJlbG93IHNlcXVlbmNlczoNCj4+ICsgKiAxLiBDb250cm9sbGVy IHJlYWQgVFJCIGluY2x1ZGVzIGRhdGEgYWRkcmVzcw0KPj4gKyAqIDIuIFNvZnR3YXJlIHVwZGF0 ZXMgVFJCcyBpbmNsdWRlcyBkYXRhIGFkZHJlc3MgYW5kIEN5Y2xlIGJpdA0KPj4gKyAqIDMuIENv bnRyb2xsZXIgcmVhZCBUUkIgd2hpY2ggaW5jbHVkZXMgQ3ljbGUgYml0DQo+PiArICogNC4gRE1B IHJ1biB3aXRoIHN0YWxlIGRhdGEgYWRkcmVzcw0KPj4gKw0KPj4gKyAqIFRvIGZpeCB0aGlzIHBy b2JsZW0sIHdlIG5lZWQgdG8gbWFrZSB0aGUgZmlyc3QgVFJCIGluIFREIGFzIGludmFsaWQgVFJC IHdoZW4NCj4+ICsgKiB0aGUgVEQgd2hpY2ggdGhlIERNQSBpcyBoYW5kbGluZyBjbG9zZSB0byB0 aGUgVFJCIHdlIGFyZSBhZGRpbmcsDQo+PiArICogYW5kIG1ha2UgdGhpcyBUUkIgYXMgdmFsaWQg YXQgVFJCRVJSIGludGVycnVwdC4gVGhlIGNvbmRpdGlvbiBmb3INCj4+ICsgKiB0aGlzIFRSQiBp czoNCj4+ICsgKg0KPj4gKyAqIElmICgoKERlcXVldWUgUHRyIChpLmUuIEVQX1RSQUREUikgPT0g RW5xdWV1ZSBQdHItMSkgb3INCj4+ICsgKiAgICAgKERlcXVldWUgUHRyIChpLmUuIEVQX1RSQURE UikgPT0gRW5xdWV1ZSBQdHIpKQ0KPj4gKyAqICAgICAgICAgICAgIGFuZCAoRFJCTD09MSBhbmQg KG5vdCBFUDApKSkNCj4+ICsgKi8NCj4+ICsNCj4+ICsjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBp bmcuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvdXNiL2dhZGdldC5oPg0KPj4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAiY29yZS5oIg0KPj4gKyNpbmNsdWRl ICJnYWRnZXQtZXhwb3J0LmgiDQo+PiArI2luY2x1ZGUgImdhZGdldC5oIg0KPj4gKyNpbmNsdWRl ICJ0cmFjZS5oIg0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgX19jZG5zM19nYWRnZXRfZXBfcXVldWUo c3RydWN0IHVzYl9lcCAqZXAsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2ZwX3QgZ2ZwX2ZsYWdzKTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5z M19oYW5kc2hha2UgLSBzcGluIHJlYWRpbmcgIHVudGlsIGhhbmRzaGFrZSBjb21wbGV0ZXMgb3Ig ZmFpbHMNCj4+ICsgKiBAcHRyOiBhZGRyZXNzIG9mIGRldmljZSBjb250cm9sbGVyIHJlZ2lzdGVy IHRvIGJlIHJlYWQNCj4+ICsgKiBAbWFzazogYml0cyB0byBsb29rIGF0IGluIHJlc3VsdCBvZiBy ZWFkDQo+PiArICogQGRvbmU6IHZhbHVlIG9mIHRob3NlIGJpdHMgd2hlbiBoYW5kc2hha2Ugc3Vj Y2VlZHMNCj4+ICsgKiBAdXNlYzogdGltZW91dCBpbiBtaWNyb3NlY29uZHMNCj4+ICsgKg0KPj4g KyAqIFJldHVybnMgbmVnYXRpdmUgZXJybm8sIG9yIHplcm8gb24gc3VjY2Vzcw0KPj4gKyAqDQo+ PiArICogU3VjY2VzcyBoYXBwZW5zIHdoZW4gdGhlICJtYXNrIiBiaXRzIGhhdmUgdGhlIHNwZWNp ZmllZCB2YWx1ZSAoaGFyZHdhcmUNCj4+ICsgKiBoYW5kc2hha2UgZG9uZSkuIFRoZXJlIGFyZSB0 d28gZmFpbHVyZSBtb2RlczogInVzZWMiIGhhdmUgcGFzc2VkIChtYWpvcg0KPj4gKyAqIGhhcmR3 YXJlIGZsYWtlb3V0KSwgb3IgdGhlIHJlZ2lzdGVyIHJlYWRzIGFzIGFsbC1vbmVzIChoYXJkd2Fy ZSByZW1vdmVkKS4NCj4+ICsgKi8NCj4+ICtpbnQgY2RuczNfaGFuZHNoYWtlKHZvaWQgX19pb21l bSAqcHRyLCB1MzIgbWFzaywgdTMyIGRvbmUsIGludCB1c2VjKQ0KPj4gK3sNCj4+ICsgICAgICAg dTMyICAgICByZXN1bHQ7DQo+PiArDQo+PiArICAgICAgIGRvIHsNCj4+ICsgICAgICAgICAgICAg ICByZXN1bHQgPSByZWFkbChwdHIpOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g fih1MzIpMCkgIC8qIGNhcmQgcmVtb3ZlZCAqLw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC1FTk9ERVY7DQo+PiArICAgICAgICAgICAgICAgcmVzdWx0ICY9IG1hc2s7DQo+PiAr ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBkb25lKQ0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIDA7DQo+PiArICAgICAgICAgICAgICAgdWRlbGF5KDEpOw0KPj4gKyAgICAg ICAgICAgICAgIHVzZWMtLTsNCj4+ICsgICAgICAgfSB3aGlsZSAodXNlYyA+IDApOw0KPj4gKyAg ICAgICByZXR1cm4gLUVUSU1FRE9VVDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2Ru czNfc2V0X3JlZ2lzdGVyX2JpdCAtIHNldCBiaXQgaW4gZ2l2ZW4gcmVnaXN0ZXIuDQo+PiArICog QHB0cjogYWRkcmVzcyBvZiBkZXZpY2UgY29udHJvbGxlciByZWdpc3RlciB0byBiZSByZWFkIGFu ZCBjaGFuZ2VkDQo+PiArICogQG1hc2s6IGJpdHMgcmVxdWVzdGVkIHRvIHNldA0KPj4gKyAqLw0K Pj4gK3ZvaWQgY2RuczNfc2V0X3JlZ2lzdGVyX2JpdCh2b2lkIF9faW9tZW0gKnB0ciwgdTMyIG1h c2spDQo+PiArew0KPj4gKyAgICAgICBtYXNrID0gcmVhZGwocHRyKSB8IG1hc2s7DQo+PiArICAg ICAgIHdyaXRlbChtYXNrLCBwdHIpOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5z M19lcF9hZGRyX3RvX2luZGV4IC0gTWFjcm8gY29udmVydHMgZW5kcG9pbnQgYWRkcmVzcyB0bw0K Pj4gKyAqIGluZGV4IG9mIGVuZHBvaW50IG9iamVjdCBpbiBjZG5zM19kZXZpY2UuZXBzW10gY29u dGFpbmVyDQo+PiArICogQGVwX2FkZHI6IGVuZHBvaW50IGFkZHJlc3MgZm9yIHdoaWNoIGVuZHBv aW50IG9iamVjdCBpcyByZXF1aXJlZA0KPj4gKyAqDQo+PiArICovDQo+PiArdTggY2RuczNfZXBf YWRkcl90b19pbmRleCh1OCBlcF9hZGRyKQ0KPj4gK3sNCj4+ICsgICAgICAgcmV0dXJuICgoKGVw X2FkZHIgJiAweDdGKSkgKyAoKGVwX2FkZHIgJiBVU0JfRElSX0lOKSA/IDE2IDogMCkpOw0KPj4g K30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19uZXh0X3JlcXVlc3QgLSByZXR1cm5zIG5l eHQgcmVxdWVzdCBmcm9tIGxpc3QNCj4+ICsgKiBAbGlzdDogbGlzdCBjb250YWluaW5nIHJlcXVl c3RzDQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIHJlcXVlc3Qgb3IgTlVMTCBpZiBubyByZXF1ZXN0 cyBpbiBsaXN0DQo+PiArICovDQo+PiArc3RydWN0IHVzYl9yZXF1ZXN0ICpjZG5zM19uZXh0X3Jl cXVlc3Qoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkNCj4+ICt7DQo+PiArICAgICAgIHJldHVybiBs aXN0X2ZpcnN0X2VudHJ5X29yX251bGwobGlzdCwgc3RydWN0IHVzYl9yZXF1ZXN0LCBsaXN0KTsN Cj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogc2VsZWN0X2VwIC0gc2VsZWN0cyBlbmRwb2lu dA0KPj4gKyAqIEBwcml2X2RldjogIGV4dGVuZGVkIGdhZGdldCBvYmplY3QNCj4+ICsgKiBAZXA6 IGVuZHBvaW50IGFkZHJlc3MNCj4+ICsgKi8NCj4+ICt2b2lkIGNkbnMzX3NlbGVjdF9lcChzdHJ1 Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiwgdTMyIGVwKQ0KPj4gK3sNCj4+ICsgICAgICAgaWYg KHByaXZfZGV2LT5zZWxlY3RlZF9lcCA9PSBlcCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm47 DQo+PiArDQo+PiArICAgICAgIHByaXZfZGV2LT5zZWxlY3RlZF9lcCA9IGVwOw0KPj4gKyAgICAg ICB3cml0ZWwoZXAsICZwcml2X2Rldi0+cmVncy0+ZXBfc2VsKTsNCj4+ICt9DQo+PiArDQo+PiAr ZG1hX2FkZHJfdCBjZG5zM190cmJfdmlydF90b19kbWEoc3RydWN0IGNkbnMzX2VuZHBvaW50ICpw cml2X2VwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNkbnMz X3RyYiAqdHJiKQ0KPj4gK3sNCj4+ICsgICAgICAgdTMyIG9mZnNldCA9IChjaGFyICopdHJiIC0g KGNoYXIgKilwcml2X2VwLT50cmJfcG9vbDsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHByaXZf ZXAtPnRyYl9wb29sX2RtYSArIG9mZnNldDsNCj4+ICt9DQo+PiArDQo+PiAraW50IGNkbnMzX3Jp bmdfc2l6ZShzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXApDQo+PiArew0KPj4gKyAgICAg ICBzd2l0Y2ggKHByaXZfZXAtPnR5cGUpIHsNCj4+ICsgICAgICAgY2FzZSBVU0JfRU5EUE9JTlRf WEZFUl9JU09DOg0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiBUUkJfSVNPX1JJTkdfU0laRTsN Cj4+ICsgICAgICAgY2FzZSBVU0JfRU5EUE9JTlRfWEZFUl9DT05UUk9MOg0KPj4gKyAgICAgICAg ICAgICAgIHJldHVybiBUUkJfQ1RSTF9SSU5HX1NJWkU7DQo+PiArICAgICAgIGRlZmF1bHQ6DQo+ PiArICAgICAgICAgICAgICAgcmV0dXJuIFRSQl9SSU5HX1NJWkU7DQo+PiArICAgICAgIH0NCj4+ ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfYWxsb2NhdGVfdHJiX3Bvb2wgLSBBbGxv Y2F0ZXMgVFJCJ3MgcG9vbCBmb3Igc2VsZWN0ZWQgZW5kcG9pbnQNCj4+ICsgKiBAcHJpdl9lcDog IGVuZHBvaW50IG9iamVjdA0KPj4gKyAqDQo+PiArICogRnVuY3Rpb24gd2lsbCByZXR1cm4gMCBv biBzdWNjZXNzIG9yIC1FTk9NRU0gb24gYWxsb2NhdGlvbiBlcnJvcg0KPj4gKyAqLw0KPj4gK2lu dCBjZG5zM19hbGxvY2F0ZV90cmJfcG9vbChzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXAp DQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiA9IHByaXZf ZXAtPmNkbnMzX2RldjsNCj4+ICsgICAgICAgaW50IHJpbmdfc2l6ZSA9IGNkbnMzX3Jpbmdfc2l6 ZShwcml2X2VwKTsNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX3RyYiAqbGlua190cmI7DQo+PiAr DQo+PiArICAgICAgIGlmICghcHJpdl9lcC0+dHJiX3Bvb2wpIHsNCj4+ICsgICAgICAgICAgICAg ICBwcml2X2VwLT50cmJfcG9vbCA9IGRtYV96YWxsb2NfY29oZXJlbnQocHJpdl9kZXYtPnN5c2Rl diwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmluZ19zaXplLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmcHJpdl9lcC0+dHJiX3Bvb2xfZG1hLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRlBfRE1BKTsN Cj4+ICsgICAgICAgICAgICAgICBpZiAoIXByaXZfZXAtPnRyYl9wb29sKQ0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiArICAgICAgIH0gZWxzZSB7DQo+PiAr ICAgICAgICAgICAgICAgbWVtc2V0KHByaXZfZXAtPnRyYl9wb29sLCAwLCByaW5nX3NpemUpOw0K Pj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGlmICghcHJpdl9lcC0+bnVtKQ0KPj4gKyAg ICAgICAgICAgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gKyAgICAgICBpZiAoIXByaXZfZXAtPmFs aWduZWRfYnVmZikgew0KPj4gKyAgICAgICAgICAgICAgIHZvaWQgKmJ1ZmYgPSBkbWFfYWxsb2Nf Y29oZXJlbnQocHJpdl9kZXYtPnN5c2RldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENETlMzX0FMSUdORURfQlVGX1NJWkUsDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJpdl9lcC0+YWxpZ25l ZF9kbWFfYWRkciwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdGUF9ETUEpOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHByaXZfZXAtPmFsaWdu ZWRfYnVmZiAgPSBidWZmOw0KPj4gKyAgICAgICAgICAgICAgIGlmICghcHJpdl9lcC0+YWxpZ25l ZF9idWZmKSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkbWFfZnJlZV9jb2hlcmVudChw cml2X2Rldi0+c3lzZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmluZ19zaXplLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJpdl9lcC0+dHJiX3Bvb2wsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcml2X2VwLT50cmJfcG9vbF9kbWEpOw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcHJpdl9lcC0+dHJiX3Bvb2wgPSBOVUxMOw0KPj4gKw0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKyAg ICAgICB9DQo+PiArDQo+PiArICAgICAgIHByaXZfZXAtPm51bV90cmJzID0gcmluZ19zaXplIC8g VFJCX1NJWkU7DQo+PiArICAgICAgIC8qIEluaXRpYWxpemUgdGhlIGxhc3QgVFJCIGFzIExpbmsg VFJCICovDQo+PiArICAgICAgIGxpbmtfdHJiID0gKHByaXZfZXAtPnRyYl9wb29sICsgKHByaXZf ZXAtPm51bV90cmJzIC0gMSkpOw0KPj4gKyAgICAgICBsaW5rX3RyYi0+YnVmZmVyID0gVFJCX0JV RkZFUihwcml2X2VwLT50cmJfcG9vbF9kbWEpOw0KPj4gKyAgICAgICBsaW5rX3RyYi0+Y29udHJv bCA9IFRSQl9DWUNMRSB8IFRSQl9UWVBFKFRSQl9MSU5LKSB8DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgVFJCX0NIQUlOIHwgVFJCX1RPR0dMRTsNCj4+ICsNCj4+ICsgICAgICAgcmV0 dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGNkbnMzX2ZyZWVfdHJiX3Bvb2wo c3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0 IGNkbnMzX2RldmljZSAqcHJpdl9kZXYgPSBwcml2X2VwLT5jZG5zM19kZXY7DQo+PiArDQo+PiAr ICAgICAgIGlmIChwcml2X2VwLT50cmJfcG9vbCkgew0KPj4gKyAgICAgICAgICAgICAgIGRtYV9m cmVlX2NvaGVyZW50KHByaXZfZGV2LT5zeXNkZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2RuczNfcmluZ19zaXplKHByaXZfZXApLA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPnRyYl9wb29sLCBwcml2X2VwLT50cmJfcG9vbF9k bWEpOw0KPj4gKyAgICAgICAgICAgICAgIHByaXZfZXAtPnRyYl9wb29sID0gTlVMTDsNCj4+ICsg ICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBpZiAocHJpdl9lcC0+YWxpZ25lZF9idWZmKSB7DQo+ PiArICAgICAgICAgICAgICAgZG1hX2ZyZWVfY29oZXJlbnQocHJpdl9kZXYtPnN5c2RldiwgQ0RO UzNfQUxJR05FRF9CVUZfU0laRSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcml2X2VwLT5hbGlnbmVkX2J1ZmYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJpdl9lcC0+YWxpZ25lZF9kbWFfYWRkcik7DQo+PiArICAgICAgICAgICAgICAgcHJp dl9lcC0+YWxpZ25lZF9idWZmID0gTlVMTDsNCj4+ICsgICAgICAgfQ0KPj4gK30NCj4+ICsNCj4+ ICsvKioNCj4+ICsgKiBjZG5zM19kYXRhX2ZsdXNoIC0gZmx1c2ggZGF0YSBhdCBvbmNoaXAgYnVm ZmVyDQo+PiArICogQHByaXZfZXA6IGVuZHBvaW50IG9iamVjdA0KPj4gKyAqDQo+PiArICogRW5k cG9pbnQgbXVzdCBiZSBzZWxlY3RlZCBiZWZvcmUgY2FsbCB0byB0aGlzIGZ1bmN0aW9uDQo+PiAr ICoNCj4+ICsgKiBSZXR1cm5zIHplcm8gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSB2YWx1ZSBvbiBm YWlsdXJlDQo+PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19kYXRhX2ZsdXNoKHN0cnVjdCBj ZG5zM19lbmRwb2ludCAqcHJpdl9lcCkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19k ZXZpY2UgKnByaXZfZGV2ID0gcHJpdl9lcC0+Y2RuczNfZGV2Ow0KPj4gKw0KPj4gKyAgICAgICB3 cml0ZWwoRVBfQ01EX0RGTFVTSCwgJnByaXZfZGV2LT5yZWdzLT5lcF9jbWQpOw0KPj4gKw0KPj4g KyAgICAgICAvKiB3YWl0IGZvciBERkxVU0ggY2xlYXJlZCAqLw0KPj4gKyAgICAgICByZXR1cm4g Y2RuczNfaGFuZHNoYWtlKCZwcml2X2Rldi0+cmVncy0+ZXBfY21kLCBFUF9DTURfREZMVVNILCAw LCAxMDApOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19lcF9zdGFsbF9mbHVz aCAtIFN0YWxscyBhbmQgZmx1c2hlcyBzZWxlY3RlZCBlbmRwb2ludA0KPj4gKyAqIEBwcml2X2Vw OiBlbmRwb2ludCBvYmplY3QNCj4+ICsgKg0KPj4gKyAqIEVuZHBvaW50IG11c3QgYmUgc2VsZWN0 ZWQgYmVmb3JlIGNhbGwgdG8gdGhpcyBmdW5jdGlvbg0KPj4gKyAqLw0KPj4gK3N0YXRpYyB2b2lk IGNkbnMzX2VwX3N0YWxsX2ZsdXNoKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcCkNCj4+ ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2ID0gcHJpdl9lcC0+ Y2RuczNfZGV2Ow0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19kYmcocHJpdl9lcC0+Y2RuczNfZGV2 LCAiU3RhbGwgJiBmbHVzaCBlbmRwb2ludCAlc1xuIiwNCj4+ICsgICAgICAgICAgICAgICAgIHBy aXZfZXAtPm5hbWUpOw0KPj4gKw0KPj4gKyAgICAgICB3cml0ZWwoRVBfQ01EX0RGTFVTSCB8IEVQ X0NNRF9FUkRZIHwgRVBfQ01EX1NTVEFMTCwNCj4+ICsgICAgICAgICAgICAgICZwcml2X2Rldi0+ cmVncy0+ZXBfY21kKTsNCj4+ICsNCj4+ICsgICAgICAgLyogd2FpdCBmb3IgREZMVVNIIGNsZWFy ZWQgKi8NCj4+ICsgICAgICAgY2RuczNfaGFuZHNoYWtlKCZwcml2X2Rldi0+cmVncy0+ZXBfY21k LCBFUF9DTURfREZMVVNILCAwLCAxMDApOw0KPj4gKyAgICAgICBwcml2X2VwLT5mbGFncyB8PSBF UF9TVEFMTDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfaHdfcmVzZXRfZXBz X2NvbmZpZyAtIHJlc2V0IGVuZHBvaW50cyBjb25maWd1cmF0aW9uIGtlcHQgYnkgY29udHJvbGxl ci4NCj4+ICsgKiBAcHJpdl9kZXY6IGV4dGVuZGVkIGdhZGdldCBvYmplY3QNCj4+ICsgKi8NCj4+ ICt2b2lkIGNkbnMzX2h3X3Jlc2V0X2Vwc19jb25maWcoc3RydWN0IGNkbnMzX2RldmljZSAqcHJp dl9kZXYpDQo+PiArew0KPj4gKyAgICAgICB3cml0ZWwoVVNCX0NPTkZfQ0ZHUlNULCAmcHJpdl9k ZXYtPnJlZ3MtPnVzYl9jb25mKTsNCj4+ICsNCj4+ICsgICAgICAgY2RuczNfYWxsb3dfZW5hYmxl X2wxKHByaXZfZGV2LCAwKTsNCj4+ICsgICAgICAgcHJpdl9kZXYtPmh3X2NvbmZpZ3VyZWRfZmxh ZyA9IDA7DQo+PiArICAgICAgIHByaXZfZGV2LT5vbmNoaXBfbWVtX2FsbG9jYXRlZF9zaXplID0g MDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZXBfaW5jX3RyYiAtIGluY3Jl bWVudCBhIHRyYiBpbmRleC4NCj4+ICsgKiBAaW5kZXg6IFBvaW50ZXIgdG8gdGhlIFRSQiBpbmRl eCB0byBpbmNyZW1lbnQuDQo+PiArICogQGNzOiBDeWNsZSBzdGF0ZQ0KPj4gKyAqIEB0cmJfaW5f c2VnOiBudW1iZXIgb2YgVFJCcyBpbiBzZWdtZW50DQo+PiArICoNCj4+ICsgKiBUaGUgaW5kZXgg c2hvdWxkIG5ldmVyIHBvaW50IHRvIHRoZSBsaW5rIFRSQi4gQWZ0ZXIgaW5jcmVtZW50aW5nLA0K Pj4gKyAqIGlmIGl0IGlzIHBvaW50IHRvIHRoZSBsaW5rIFRSQiwgd3JhcCBhcm91bmQgdG8gdGhl IGJlZ2lubmluZyBhbmQgcmV2ZXJ0DQo+PiArICogY3ljbGUgc3RhdGUgYml0IFRoZQ0KPj4gKyAq IGxpbmsgVFJCIGlzIGFsd2F5cyBhdCB0aGUgbGFzdCBUUkIgZW50cnkuDQo+PiArICovDQo+PiAr c3RhdGljIHZvaWQgY2RuczNfZXBfaW5jX3RyYihpbnQgKmluZGV4LCB1OCAqY3MsIGludCB0cmJf aW5fc2VnKQ0KPj4gK3sNCj4+ICsgICAgICAgKCppbmRleCkrKzsNCj4+ICsgICAgICAgaWYgKCpp bmRleCA9PSAodHJiX2luX3NlZyAtIDEpKSB7DQo+PiArICAgICAgICAgICAgICAgKmluZGV4ID0g MDsNCj4+ICsgICAgICAgICAgICAgICAqY3MgXj0gIDE7DQo+PiArICAgICAgIH0NCj4+ICt9DQo+ PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZXBfaW5jX2VucSAtIGluY3JlbWVudCBlbmRwb2lu dCdzIGVucXVldWUgcG9pbnRlcg0KPj4gKyAqIEBwcml2X2VwOiBUaGUgZW5kcG9pbnQgd2hvc2Ug ZW5xdWV1ZSBwb2ludGVyIHdlJ3JlIGluY3JlbWVudGluZw0KPj4gKyAqLw0KPj4gK3N0YXRpYyB2 b2lkIGNkbnMzX2VwX2luY19lbnEoc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKQ0KPj4g K3sNCj4+ICsgICAgICAgcHJpdl9lcC0+ZnJlZV90cmJzLS07DQo+PiArICAgICAgIGNkbnMzX2Vw X2luY190cmIoJnByaXZfZXAtPmVucXVldWUsICZwcml2X2VwLT5wY3MsIHByaXZfZXAtPm51bV90 cmJzKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZXBfaW5jX2RlcSAtIGlu Y3JlbWVudCBlbmRwb2ludCdzIGRlcXVldWUgcG9pbnRlcg0KPj4gKyAqIEBwcml2X2VwOiBUaGUg ZW5kcG9pbnQgd2hvc2UgZGVxdWV1ZSBwb2ludGVyIHdlJ3JlIGluY3JlbWVudGluZw0KPj4gKyAq Lw0KPj4gK3N0YXRpYyB2b2lkIGNkbnMzX2VwX2luY19kZXEoc3RydWN0IGNkbnMzX2VuZHBvaW50 ICpwcml2X2VwKQ0KPj4gK3sNCj4+ICsgICAgICAgcHJpdl9lcC0+ZnJlZV90cmJzKys7DQo+PiAr ICAgICAgIGNkbnMzX2VwX2luY190cmIoJnByaXZfZXAtPmRlcXVldWUsICZwcml2X2VwLT5jY3Ms IHByaXZfZXAtPm51bV90cmJzKTsNCj4+ICt9DQo+PiArDQo+PiArdm9pZCBjZG5zM19tb3ZlX2Rl cV90b19uZXh0X3RyYihzdHJ1Y3QgY2RuczNfcmVxdWVzdCAqcHJpdl9yZXEpDQo+PiArew0KPj4g KyAgICAgICBzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXAgPSBwcml2X3JlcS0+cHJpdl9l cDsNCj4+ICsgICAgICAgaW50IGN1cnJlbnRfdHJiID0gcHJpdl9yZXEtPnN0YXJ0X3RyYjsNCj4+ ICsNCj4+ICsgICAgICAgd2hpbGUgKGN1cnJlbnRfdHJiICE9IHByaXZfcmVxLT5lbmRfdHJiKSB7 DQo+PiArICAgICAgICAgICAgICAgY2RuczNfZXBfaW5jX2RlcShwcml2X2VwKTsNCj4+ICsgICAg ICAgICAgICAgICBjdXJyZW50X3RyYiA9IHByaXZfZXAtPmRlcXVldWU7DQo+PiArICAgICAgIH0N Cj4+ICsNCj4+ICsgICAgICAgY2RuczNfZXBfaW5jX2RlcShwcml2X2VwKTsNCj4+ICt9DQo+PiAr DQo+PiArLyoqDQo+PiArICogY2RuczNfYWxsb3dfZW5hYmxlX2wxIC0gZW5hYmxlL2Rpc2FibGUg cGVybWl0cyB0byB0cmFuc2l0aW9uIHRvIEwxLg0KPj4gKyAqIEBwcml2X2RldjogRXh0ZW5kZWQg Z2FkZ2V0IG9iamVjdA0KPj4gKyAqIEBlbmFibGU6IEVuYWJsZS9kaXNhYmxlIHBlcm1pdCB0byB0 cmFuc2l0aW9uIHRvIEwxLg0KPj4gKyAqDQo+PiArICogSWYgYml0IFVTQl9DT05GX0wxRU4gaXMg c2V0IGFuZCBkZXZpY2UgcmVjZWl2ZSBFeHRlbmRlZCBUb2tlbiBwYWNrZXQsDQo+PiArICogdGhl biBjb250cm9sbGVyIGFuc3dlciB3aXRoIEFDSyBoYW5kc2hha2UuDQo+PiArICogSWYgYml0IFVT Ql9DT05GX0wxRFMgaXMgc2V0IGFuZCBkZXZpY2UgcmVjZWl2ZSBFeHRlbmRlZCBUb2tlbiBwYWNr ZXQsDQo+PiArICogdGhlbiBjb250cm9sbGVyIGFuc3dlciB3aXRoIE5ZRVQgaGFuZHNoYWtlLg0K Pj4gKyAqLw0KPj4gK3ZvaWQgY2RuczNfYWxsb3dfZW5hYmxlX2wxKHN0cnVjdCBjZG5zM19kZXZp Y2UgKnByaXZfZGV2LCBpbnQgZW5hYmxlKQ0KPj4gK3sNCj4+ICsgICAgICAgaWYgKGVuYWJsZSkN Cj4+ICsgICAgICAgICAgICAgICB3cml0ZWwoVVNCX0NPTkZfTDFFTiwgJnByaXZfZGV2LT5yZWdz LT51c2JfY29uZik7DQo+PiArICAgICAgIGVsc2UNCj4+ICsgICAgICAgICAgICAgICB3cml0ZWwo VVNCX0NPTkZfTDFEUywgJnByaXZfZGV2LT5yZWdzLT51c2JfY29uZik7DQo+PiArfQ0KPj4gKw0K Pj4gK2VudW0gdXNiX2RldmljZV9zcGVlZCBjZG5zM19nZXRfc3BlZWQoc3RydWN0IGNkbnMzX2Rl dmljZSAqcHJpdl9kZXYpDQo+PiArew0KPj4gKyAgICAgICB1MzIgcmVnOw0KPj4gKw0KPj4gKyAg ICAgICByZWcgPSByZWFkbCgmcHJpdl9kZXYtPnJlZ3MtPnVzYl9zdHMpOw0KPj4gKw0KPj4gKyAg ICAgICBpZiAoREVWX1NVUEVSU1BFRUQocmVnKSkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4g VVNCX1NQRUVEX1NVUEVSOw0KPj4gKyAgICAgICBlbHNlIGlmIChERVZfSElHSFNQRUVEKHJlZykp DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIFVTQl9TUEVFRF9ISUdIOw0KPj4gKyAgICAgICBl bHNlIGlmIChERVZfRlVMTFNQRUVEKHJlZykpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIFVT Ql9TUEVFRF9GVUxMOw0KPj4gKyAgICAgICBlbHNlIGlmIChERVZfTE9XU1BFRUQocmVnKSkNCj4+ ICsgICAgICAgICAgICAgICByZXR1cm4gVVNCX1NQRUVEX0xPVzsNCj4+ICsgICAgICAgcmV0dXJu IFVTQl9TUEVFRF9VTktOT1dOOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19z dGFydF9hbGxfcmVxdWVzdCAtIGFkZCB0byByaW5nIGFsbCByZXF1ZXN0IG5vdCBzdGFydGVkDQo+ PiArICogQHByaXZfZGV2OiBFeHRlbmRlZCBnYWRnZXQgb2JqZWN0DQo+PiArICogQHByaXZfZXA6 IFRoZSBlbmRwb2ludCBmb3Igd2hvbSByZXF1ZXN0IHdpbGwgYmUgc3RhcnRlZC4NCj4+ICsgKg0K Pj4gKyAqIFJldHVybnMgcmV0dXJuIEVOT01FTSBpZiB0cmFuc2ZlciByaW5nIGkgbm90IGVub3Vn aCBUUkJzIHRvIHN0YXJ0DQo+PiArICogICAgICAgICBhbGwgcmVxdWVzdHMuDQo+PiArICovDQo+ PiArc3RhdGljIGludCBjZG5zM19zdGFydF9hbGxfcmVxdWVzdChzdHJ1Y3QgY2RuczNfZGV2aWNl ICpwcml2X2RldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IGNkbnMz X3JlcXVlc3QgKnByaXZfcmVxOw0KPj4gKyAgICAgICBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcXVl c3Q7DQo+PiArICAgICAgIGludCByZXQgPSAwOw0KPj4gKw0KPj4gKyAgICAgICB3aGlsZSAoIWxp c3RfZW1wdHkoJnByaXZfZXAtPmRlZmVycmVkX3JlcV9saXN0KSkgew0KPj4gKyAgICAgICAgICAg ICAgIHJlcXVlc3QgPSBjZG5zM19uZXh0X3JlcXVlc3QoJnByaXZfZXAtPmRlZmVycmVkX3JlcV9s aXN0KTsNCj4+ICsgICAgICAgICAgICAgICBwcml2X3JlcSA9IHRvX2NkbnMzX3JlcXVlc3QocmVx dWVzdCk7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgcmV0ID0gY2RuczNfZXBfcnVuX3RyYW5z ZmVyKHByaXZfZXAsIHJlcXVlc3QpOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gKyAgICAgICAgICAg ICAgIGxpc3RfZGVsKCZyZXF1ZXN0LT5saXN0KTsNCj4+ICsgICAgICAgICAgICAgICBsaXN0X2Fk ZF90YWlsKCZyZXF1ZXN0LT5saXN0LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnByaXZfZXAtPnBlbmRpbmdfcmVxX2xpc3QpOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAg ICAgIHByaXZfZXAtPmZsYWdzICY9IH5FUF9SSU5HX0ZVTEw7DQo+PiArICAgICAgIHJldHVybiBy ZXQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX2dhZGdldF9naXZlYmFjayAt IGNhbGwgc3RydWN0IHVzYl9yZXF1ZXN0J3MgLT5jb21wbGV0ZSBjYWxsYmFjaw0KPj4gKyAqIEBw cml2X2VwOiBUaGUgZW5kcG9pbnQgdG8gd2hvbSB0aGUgcmVxdWVzdCBiZWxvbmdzIHRvDQo+PiAr ICogQHByaXZfcmVxOiBUaGUgcmVxdWVzdCB3ZSdyZSBnaXZpbmcgYmFjaw0KPj4gKyAqIEBzdGF0 dXM6IGNvbXBsZXRpb24gY29kZSBmb3IgdGhlIHJlcXVlc3QNCj4+ICsgKg0KPj4gKyAqIE11c3Qg YmUgY2FsbGVkIHdpdGggY29udHJvbGxlcidzIGxvY2sgaGVsZCBhbmQgaW50ZXJydXB0cyBkaXNh YmxlZC4gVGhpcw0KPj4gKyAqIGZ1bmN0aW9uIHdpbGwgdW5tYXAgQHJlcSBhbmQgY2FsbCBpdHMg LT5jb21wbGV0ZSgpIGNhbGxiYWNrIHRvIG5vdGlmeSB1cHBlcg0KPj4gKyAqIGxheWVycyB0aGF0 IGl0IGhhcyBjb21wbGV0ZWQuDQo+PiArICovDQo+PiArdm9pZCBjZG5zM19nYWRnZXRfZ2l2ZWJh Y2soc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGNkbnMzX3JlcXVlc3QgKnByaXZfcmVxLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHN0YXR1cykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5z M19kZXZpY2UgKnByaXZfZGV2ID0gcHJpdl9lcC0+Y2RuczNfZGV2Ow0KPj4gKyAgICAgICBzdHJ1 Y3QgdXNiX3JlcXVlc3QgKnJlcXVlc3QgPSAmcHJpdl9yZXEtPnJlcXVlc3Q7DQo+PiArDQo+PiAr ICAgICAgIGxpc3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpc3QpOw0KPj4gKw0KPj4gKyAgICAgICBp ZiAocmVxdWVzdC0+c3RhdHVzID09IC1FSU5QUk9HUkVTUykNCj4+ICsgICAgICAgICAgICAgICBy ZXF1ZXN0LT5zdGF0dXMgPSBzdGF0dXM7DQo+PiArDQo+PiArICAgICAgIHVzYl9nYWRnZXRfdW5t YXBfcmVxdWVzdF9ieV9kZXYocHJpdl9kZXYtPnN5c2RldiwgcmVxdWVzdCwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2X2VwLT5kaXIpOw0KPj4gKw0KPj4g KyAgICAgICBwcml2X3JlcS0+ZmxhZ3MgJj0gflJFUVVFU1RfUEVORElORzsNCj4+ICsgICAgICAg dHJhY2VfY2RuczNfZ2FkZ2V0X2dpdmViYWNrKHByaXZfcmVxKTsNCj4+ICsNCj4+ICsgICAgICAg LyogU3RhcnQgYWxsIG5vdCBwZW5kaW5nIHJlcXVlc3QgKi8NCj4+ICsgICAgICAgaWYgKHByaXZf ZXAtPmZsYWdzICYgRVBfUklOR19GVUxMKQ0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX3N0YXJ0 X2FsbF9yZXF1ZXN0KHByaXZfZGV2LCBwcml2X2VwKTsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHJl cXVlc3QtPmNvbXBsZXRlKSB7DQo+PiArICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnByaXZf ZGV2LT5sb2NrKTsNCj4+ICsgICAgICAgICAgICAgICB1c2JfZ2FkZ2V0X2dpdmViYWNrX3JlcXVl c3QoJnByaXZfZXAtPmVuZHBvaW50LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXF1ZXN0KTsNCj4+ICsgICAgICAgICAgICAgICBzcGluX2xvY2soJnBy aXZfZGV2LT5sb2NrKTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBpZiAocmVxdWVz dC0+YnVmID09IHByaXZfZGV2LT56bHBfYnVmKQ0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX2dh ZGdldF9lcF9mcmVlX3JlcXVlc3QoJnByaXZfZXAtPmVuZHBvaW50LCByZXF1ZXN0KTsNCj4+ICt9 DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZXBfcnVuX3RyYW5zZmVyIC0gc3RhcnQgdHJh bnNmZXIgb24gbm8tZGVmYXVsdCBlbmRwb2ludCBoYXJkd2FyZQ0KPj4gKyAqIEBwcml2X2VwOiBl bmRwb2ludCBvYmplY3QNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgemVybyBvbiBzdWNjZXNzIG9y IG5lZ2F0aXZlIHZhbHVlIG9uIGZhaWx1cmUNCj4+ICsgKi8NCj4+ICtpbnQgY2RuczNfZXBfcnVu X3RyYW5zZmVyKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcCwNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXF1ZXN0KQ0KPj4gK3sNCj4+ICsg ICAgICAgc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYgPSBwcml2X2VwLT5jZG5zM19kZXY7 DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19yZXF1ZXN0ICpwcml2X3JlcTsNCj4+ICsgICAgICAg c3RydWN0IGNkbnMzX3RyYiAqdHJiOw0KPj4gKyAgICAgICBkbWFfYWRkcl90IHRyYl9kbWE7DQo+ PiArICAgICAgIGludCBkbWFfaW5kZXg7DQo+PiArICAgICAgIGludCBzZ19pdGVyID0gMDsNCj4+ ICsgICAgICAgdTMyIGZpcnN0X3BjczsNCj4+ICsgICAgICAgaW50ICBudW1fdHJiOw0KPj4gKyAg ICAgICBpbnQgYWRkcmVzczsNCj4+ICsgICAgICAgdTMyIGRvb3JiZWxsOw0KPj4gKyAgICAgICBp bnQgcGNzOw0KPj4gKw0KPj4gKyAgICAgICBpZiAocHJpdl9lcC0+dHlwZSA9PSBVU0JfRU5EUE9J TlRfWEZFUl9JU09DKQ0KPj4gKyAgICAgICAgICAgICAgIG51bV90cmIgPSBwcml2X2VwLT5pbnRl cnZhbDsNCj4+ICsgICAgICAgZWxzZQ0KPj4gKyAgICAgICAgICAgICAgIG51bV90cmIgPSByZXF1 ZXN0LT5udW1fc2dzID8gcmVxdWVzdC0+bnVtX3NncyA6IDE7DQo+PiArDQo+PiArICAgICAgIGlm IChudW1fdHJiID4gcHJpdl9lcC0+ZnJlZV90cmJzKSB7DQo+PiArICAgICAgICAgICAgICAgcHJp dl9lcC0+ZmxhZ3MgfD0gRVBfUklOR19GVUxMOw0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAt RU5PQlVGUzsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBwcml2X3JlcSA9IHRvX2Nk bnMzX3JlcXVlc3QocmVxdWVzdCk7DQo+PiArICAgICAgIGFkZHJlc3MgPSBwcml2X2VwLT5lbmRw b2ludC5kZXNjLT5iRW5kcG9pbnRBZGRyZXNzOw0KPj4gKw0KPj4gKyAgICAgICBwcml2X2VwLT5m bGFncyB8PSBFUF9QRU5ESU5HX1JFUVVFU1Q7DQo+PiArICAgICAgIHRyYl9kbWEgPSByZXF1ZXN0 LT5kbWE7DQo+PiArDQo+PiArICAgICAgIC8qIG11c3QgYWxsb2NhdGUgYnVmZmVyIGFsaWduZWQg dG8gOCAqLw0KPj4gKyAgICAgICBpZiAoKHJlcXVlc3QtPmRtYSAlIDgpKSB7DQo+PiArICAgICAg ICAgICAgICAgaWYgKHJlcXVlc3QtPmxlbmd0aCA8PSBDRE5TM19BTElHTkVEX0JVRl9TSVpFKSB7 DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkocHJpdl9lcC0+YWxpZ25lZF9idWZm LCByZXF1ZXN0LT5idWYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz dC0+bGVuZ3RoKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHRyYl9kbWEgPSBwcml2X2Vw LT5hbGlnbmVkX2RtYV9hZGRyOw0KPj4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+PiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+ICsgICAgICAgICAgICAgICB9 DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgdHJiID0gcHJpdl9lcC0+dHJiX3Bvb2wg KyBwcml2X2VwLT5lbnF1ZXVlOw0KPj4gKyAgICAgICBwcml2X3JlcS0+c3RhcnRfdHJiID0gcHJp dl9lcC0+ZW5xdWV1ZTsNCj4+ICsgICAgICAgcHJpdl9yZXEtPnRyYiA9IHRyYjsNCj4+ICsNCj4+ ICsgICAgICAgLyogcHJlcGFyZSByaW5nICovDQo+PiArICAgICAgIGlmICgocHJpdl9lcC0+ZW5x dWV1ZSArIG51bV90cmIpICA+PSAocHJpdl9lcC0+bnVtX3RyYnMgLSAxKSkgew0KPj4gKyAgICAg ICAgICAgICAgIC8qdXBkYXRpbmcgQyBidCBpbiAgTGluayBUUkIgYmVmb3JlIHN0YXJ0aW5nIERN QSovDQo+PiArICAgICAgICAgICAgICAgc3RydWN0IGNkbnMzX3RyYiAqbGlua190cmIgPSBwcml2 X2VwLT50cmJfcG9vbCArDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocHJpdl9lcC0+bnVtX3RyYnMgLSAxKTsNCj4+ICsgICAgICAgICAgICAgICBsaW5r X3RyYi0+Y29udHJvbCA9ICgocHJpdl9lcC0+cGNzKSA/IFRSQl9DWUNMRSA6IDApIHwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSQl9UWVBFKFRSQl9MSU5LKSB8IFRS Ql9DSEFJTiB8DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkJfVE9H R0xFOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGZpcnN0X3BjcyA9IHByaXZfZXAt PnBjcyA/IFRSQl9DWUNMRSA6IDA7DQo+PiArDQo+PiArICAgICAgIC8qIGFybSB0cmFuc2ZlciBv biBzZWxlY3RlZCBlbmRwb2ludCAqLw0KPj4gKyAgICAgICBjZG5zM19zZWxlY3RfZXAocHJpdl9l cC0+Y2RuczNfZGV2LCBhZGRyZXNzKTsNCj4+ICsNCj4+ICsgICAgICAgZG9vcmJlbGwgPSAhIShy ZWFkbCgmcHJpdl9kZXYtPnJlZ3MtPmVwX2NtZCkgJiBFUF9DTURfRFJEWSk7DQo+PiArICAgICAg IGRtYV9pbmRleCA9IChyZWFkbCgmcHJpdl9kZXYtPnJlZ3MtPmVwX3RyYWRkcikgLQ0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPnRyYl9wb29sX2RtYSkgLyBUUkJfU0laRTsN Cj4+ICsNCj4+ICsgICAgICAgaWYgKCFwcml2X2VwLT53YTFfc2V0KSB7DQo+PiArICAgICAgICAg ICAgICAgaWYgKGRvb3JiZWxsICYmDQo+PiArICAgICAgICAgICAgICAgICAgICgocHJpdl9lcC0+ ZW5xdWV1ZSA9PSAwICYmDQo+PiArICAgICAgICAgICAgICAgICAgIGRtYV9pbmRleCA+PSBHRVRf VFJCU19QRVJfU0VHTUVOVChwcml2X2VwLT50eXBlKSAtIDIpIHx8DQo+PiArICAgICAgICAgICAg ICAgICAgIGRtYV9pbmRleCA9PSBwcml2X2VwLT5lbnF1ZXVlIHx8DQo+PiArICAgICAgICAgICAg ICAgICAgIChkbWFfaW5kZXggPT0gcHJpdl9lcC0+ZW5xdWV1ZSAtIDEpKSkgew0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+d2ExX2N5Y2xlX2JpdCA9IGZpcnN0X3BjczsNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPndhMV9zZXQgPSAxOw0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+d2ExX3RyYiA9IHRyYjsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIGZpcnN0X3BjcyBePSAweDE7DQo+PiArICAgICAgICAgICAgICAgICAgICAg ICBjZG5zM19kYmcocHJpdl9kZXYsICJXQTE6IGRlZmVycmVkIGRvb3JiZWxcbiIpOw0KPj4gKyAg ICAgICAgICAgICAgIH0NCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBkbyB7DQo+PiAr ICAgICAgIC8qIGZpbGwgVFJCICovDQo+PiArICAgICAgICAgICAgICAgdHJiLT5idWZmZXIgPSBU UkJfQlVGRkVSKHJlcXVlc3QtPm51bV9zZ3MgPT0gMA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA/IHRyYl9kbWEgOiByZXF1ZXN0LT5zZ1tzZ19pdGVyXS5kbWFfYWRkcmVzcyk7 DQo+PiArDQo+PiArICAgICAgICAgICAgICAgdHJiLT5sZW5ndGggPSBUUkJfQlVSU1RfTEVOKDE2 KSB8DQo+PiArICAgICAgICAgICAgICAgICAgIFRSQl9MRU4ocmVxdWVzdC0+bnVtX3NncyA9PSAw ID8NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+bGVuZ3RoIDog cmVxdWVzdC0+c2dbc2dfaXRlcl0ubGVuZ3RoKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICB0 cmItPmNvbnRyb2wgPSBUUkJfVFlQRShUUkJfTk9STUFMKTsNCj4+ICsgICAgICAgICAgICAgICBw Y3MgPSBwcml2X2VwLT5wY3MgPyBUUkJfQ1lDTEUgOiAwOw0KPj4gKw0KPj4gKyAgICAgICAgICAg ICAgIC8qDQo+PiArICAgICAgICAgICAgICAgICogZmlyc3QgdHJiIHNob3VsZCBiZSBwcmVwYXJl ZCBhcyBsYXN0IHRvIGF2b2lkIHByb2Nlc3NpbmcNCj4+ICsgICAgICAgICAgICAgICAgKiAgdHJh bnNmZXIgdG8gZWFybHkNCj4+ICsgICAgICAgICAgICAgICAgKi8NCj4+ICsgICAgICAgICAgICAg ICBpZiAoc2dfaXRlciAhPSAwKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdHJiLT5jb250 cm9sIHw9IHBjczsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBpZiAocHJpdl9lcC0+dHlwZSA9 PSBVU0JfRU5EUE9JTlRfWEZFUl9JU09DICAmJiAhcHJpdl9lcC0+ZGlyKSB7DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICB0cmItPmNvbnRyb2wgfD0gVFJCX0lPQyB8IFRSQl9JU1A7DQo+PiAr ICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIGZv ciBsYXN0IGVsZW1lbnQgaW4gVEQgb3IgaW4gU0cgbGlzdCAqLw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHNnX2l0ZXIgPT0gKG51bV90cmIgLSAxKSAmJiBzZ19pdGVyICE9IDApDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYi0+Y29udHJvbCB8PSBwY3MgfCBU UkJfSU9DIHwgVFJCX0lTUDsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArICAgICAgICAgICAg ICAgKytzZ19pdGVyOw0KPj4gKyAgICAgICAgICAgICAgIHByaXZfcmVxLT5lbmRfdHJiID0gcHJp dl9lcC0+ZW5xdWV1ZTsNCj4+ICsgICAgICAgICAgICAgICBjZG5zM19lcF9pbmNfZW5xKHByaXZf ZXApOw0KPj4gKyAgICAgICAgICAgICAgIHRyYiA9IHByaXZfZXAtPnRyYl9wb29sICsgcHJpdl9l cC0+ZW5xdWV1ZTsNCj4+ICsgICAgICAgfSB3aGlsZSAoc2dfaXRlciA8IG51bV90cmIpOw0KPj4g Kw0KPj4gKyAgICAgICB0cmIgPSBwcml2X3JlcS0+dHJiOw0KPj4gKw0KPj4gKyAgICAgICBwcml2 X3JlcS0+ZmxhZ3MgfD0gUkVRVUVTVF9QRU5ESU5HOw0KPj4gKw0KPj4gKyAgICAgICAvKg0KPj4g KyAgICAgICAgKiBNZW1vcnkgYmFycmllciAtIGN5Y2xlIGJpdCBtdXN0IGJlIHNldCBiZWZvcmUg b3RoZXIgZmlsZHMgaW4gdHJiLg0KPj4gKyAgICAgICAgKi8NCj4+ICsgICAgICAgd21iKCk7DQo+ PiArDQo+PiArICAgICAgIC8qIGdpdmUgdGhlIFREIHRvIHRoZSBjb25zdW1lciovDQo+PiArICAg ICAgIGlmIChzZ19pdGVyID09IDEpDQo+PiArICAgICAgICAgICAgICAgdHJiLT5jb250cm9sIHw9 IGZpcnN0X3BjcyB8IFRSQl9JT0MgfCBUUkJfSVNQOw0KPj4gKyAgICAgICBlbHNlDQo+PiArICAg ICAgICAgICAgICAgdHJiLT5jb250cm9sIHw9IGZpcnN0X3BjczsNCj4+ICsNCj4+ICsgICAgICAg dHJhY2VfY2RuczNfcHJlcGFyZV90cmIocHJpdl9lcCwgcHJpdl9yZXEtPnRyYik7DQo+PiArDQo+ PiArICAgICAgIC8qDQo+PiArICAgICAgICAqIE1lbW9yeSBiYXJyaWVyIC0gQ3ljbGUgQml0IG11 c3QgYmUgc2V0IGJlZm9yZSB0cmItPmxlbmd0aCAgYW5kDQo+PiArICAgICAgICAqIHRyYi0+YnVm ZmVyIGZpZWxkcy4NCj4+ICsgICAgICAgICovDQo+PiArICAgICAgIHdtYigpOw0KPj4gKw0KPj4g KyAgICAgICAvKg0KPj4gKyAgICAgICAgKiBGb3IgRE1VTFQgbW9kZSB3ZSBjYW4gc2V0IGFkZHJl c3MgdG8gdHJhbnNmZXIgcmluZyBvbmx5IG9uY2UgYWZ0ZXINCj4+ICsgICAgICAgICogZW5hYmxp bmcgZW5kcG9pbnQuDQo+PiArICAgICAgICAqLw0KPj4gKyAgICAgICBpZiAocHJpdl9lcC0+Zmxh Z3MgJiBFUF9VUERBVEVfRVBfVFJCQUREUikgew0KPj4gKyAgICAgICAgICAgICAgIHdyaXRlbChF UF9UUkFERFJfVFJBRERSKHByaXZfZXAtPnRyYl9wb29sX2RtYSArDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9yZXEtPnN0YXJ0X3RyYiAqIFRSQl9TSVpF KSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgJnByaXZfZGV2LT5yZWdzLT5lcF90cmFkZHIp Ow0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX2RiZyhwcml2X2VwLT5jZG5zM19kZXYs ICJVcGRhdGUgZXBfdHJiYWRkciBmb3IgJXMgdG8gJTA4eFxuIiwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgcHJpdl9lcC0+bmFtZSwgcmVhZGwoJnByaXZfZGV2LT5yZWdzLT5lcF90cmFk ZHIpKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBwcml2X2VwLT5mbGFncyAmPSB+RVBfVVBE QVRFX0VQX1RSQkFERFI7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgaWYgKCFwcml2 X2VwLT53YTFfc2V0ICYmICEocHJpdl9lcC0+ZmxhZ3MgJiBFUF9TVEFMTCkpIHsNCj4+ICsgICAg ICAgICAgICAgICB0cmFjZV9jZG5zM19yaW5nKHByaXZfZXApOw0KPj4gKyAgICAgICAgICAgICAg IC8qY2xlYXJpbmcgVFJCRVJSIGFuZCBFUF9TVFNfREVTQ01JUyBiZWZvcmUgc2V0aW5nIERSRFkq Lw0KPj4gKyAgICAgICAgICAgICAgIHdyaXRlbChFUF9TVFNfVFJCRVJSIHwgRVBfU1RTX0RFU0NN SVMsICZwcml2X2Rldi0+cmVncy0+ZXBfc3RzKTsNCj4+ICsgICAgICAgICAgICAgICB3cml0ZWwo RVBfQ01EX0RSRFksICZwcml2X2Rldi0+cmVncy0+ZXBfY21kKTsNCj4+ICsgICAgICAgICAgICAg ICB0cmFjZV9jZG5zM19kb29yYmVsbF9lcHgocHJpdl9lcC0+bmFtZSwNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGwoJnByaXZfZGV2LT5yZWdzLT5lcF90 cmFkZHIpKTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9 DQo+PiArDQo+PiArdm9pZCBjZG5zM19zZXRfaHdfY29uZmlndXJhdGlvbihzdHJ1Y3QgY2RuczNf ZGV2aWNlICpwcml2X2RldikNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19lbmRwb2lu dCAqcHJpdl9lcDsNCj4+ICsgICAgICAgc3RydWN0IHVzYl9lcCAqZXA7DQo+PiArICAgICAgIGlu dCByZXN1bHQgPSAwOw0KPj4gKw0KPj4gKyAgICAgICBpZiAocHJpdl9kZXYtPmh3X2NvbmZpZ3Vy ZWRfZmxhZykNCj4+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+PiArDQo+PiArICAgICAgIHdy aXRlbChVU0JfQ09ORl9DRkdTRVQsICZwcml2X2Rldi0+cmVncy0+dXNiX2NvbmYpOw0KPj4gKyAg ICAgICB3cml0ZWwoRVBfQ01EX0VSRFkgfCBFUF9DTURfUkVRX0NNUEwsICZwcml2X2Rldi0+cmVn cy0+ZXBfY21kKTsNCj4+ICsNCj4+ICsgICAgICAgY2RuczNfc2V0X3JlZ2lzdGVyX2JpdCgmcHJp dl9kZXYtPnJlZ3MtPnVzYl9jb25mLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFVTQl9DT05GX1UxRU4gfCBVU0JfQ09ORl9VMkVOKTsNCj4+ICsNCj4+ICsgICAgICAgLyogd2Fp dCB1bnRpbCBjb25maWd1cmF0aW9uIHNldCAqLw0KPj4gKyAgICAgICByZXN1bHQgPSBjZG5zM19o YW5kc2hha2UoJnByaXZfZGV2LT5yZWdzLT51c2Jfc3RzLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVVNCX1NUU19DRkdTVFNfTUFTSywgMSwgMTAwKTsNCj4+ICsNCj4+ICsg ICAgICAgcHJpdl9kZXYtPmh3X2NvbmZpZ3VyZWRfZmxhZyA9IDE7DQo+PiArICAgICAgIGNkbnMz X2FsbG93X2VuYWJsZV9sMShwcml2X2RldiwgMSk7DQo+PiArDQo+PiArICAgICAgIGxpc3RfZm9y X2VhY2hfZW50cnkoZXAsICZwcml2X2Rldi0+Z2FkZ2V0LmVwX2xpc3QsIGVwX2xpc3QpIHsNCj4+ ICsgICAgICAgICAgICAgICBpZiAoZXAtPmVuYWJsZWQpIHsNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHByaXZfZXAgPSBlcF90b19jZG5zM19lcChlcCk7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBjZG5zM19zdGFydF9hbGxfcmVxdWVzdChwcml2X2RldiwgcHJpdl9lcCk7DQo+PiAr ICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICB9DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4g KyAqIGNkbnMzX3JlcXVlc3RfaGFuZGxlZCAtIGNoZWNrIHdoZXRoZXIgcmVxdWVzdCBoYXMgYmVl biBoYW5kbGVkIGJ5IERNQQ0KPj4gKyAqDQo+PiArICogQHByaXZfZXA6IGV4dGVuZGVkIGVuZHBv aW50IG9iamVjdC4NCj4+ICsgKiBAcHJpdl9yZXE6IHJlcXVlc3Qgb2JqZWN0IGZvciBjaGVja2lu Zw0KPj4gKyAqDQo+PiArICogRW5kcG9pbnQgbXVzdCBiZSBzZWxlY3RlZCBiZWZvcmUgaW52b2tp bmcgdGhpcyBmdW5jdGlvbi4NCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgZmFsc2UgaWYgcmVxdWVz dCBoYXMgbm90IGJlZW4gaGFuZGxlZCBieSBETUEsIGVsc2UgcmV0dXJucyB0cnVlLg0KPj4gKyAq DQo+PiArICogU1IgLSBzdGFydCByaW5nDQo+PiArICogRVIgLSAgZW5kIHJpbmcNCj4+ICsgKiBE USA9IHByaXZfZXAtPmRlcXVldWUgLSBkZXF1ZXVlIHBvc2l0aW9uDQo+PiArICogRVEgPSBwcml2 X2VwLT5lbnF1ZXVlIC0gIGVucXVldWUgcG9zaXRpb24NCj4+ICsgKiBTVCA9IHByaXZfcmVxLT5z dGFydF90cmIgLSBpbmRleCBvZiBmaXJzdCBUUkIgaW4gdHJhbnNmZXIgcmluZw0KPj4gKyAqIEVU ID0gcHJpdl9yZXEtPmVuZF90cmIgLSBpbmRleCBvZiBsYXN0IFRSQiBpbiB0cmFuc2ZlciByaW5n DQo+PiArICogQ0kgPSBjdXJyZW50X2luZGV4IC0gaW5kZXggb2YgcHJvY2Vzc2VkIFRSQiBieSBE TUEuDQo+PiArICoNCj4+ICsgKiBBcyBmaXJzdCBzdGVwLCBmdW5jdGlvbiBjaGVja3MgaWYgY3lj bGUgYml0IGZvciBwcml2X3JlcS0+c3RhcnRfdHJiIGlzDQo+PiArICogY29ycmVjdC4NCj4+ICsg Kg0KPj4gKyAqIHNvbWUgcnVsZXM6DQo+PiArICogMS4gcHJpdl9lcC0+ZGVxdWV1ZSBuZXZlciBl eGNlZWQgY3VycmVudF9pbmRleC4NCj4+ICsgKiAyICBwcml2X2VwLT5lbnF1ZXVlIG5ldmVyIGV4 Y2VlZCBwcml2X2VwLT5kZXF1ZXVlDQo+PiArICoNCj4+ICsgKiBUaGVuIFdlIGNhbiBzcGxpdCBy ZWNvZ25pdGlvbiBpbnRvIHR3byBwYXJ0czoNCj4+ICsgKiBDYXNlIDEgLSBwcml2X2VwLT5kZXF1 ZXVlIDwgY3VycmVudF9pbmRleA0KPj4gKyAqICAgICAgU1IgLi4uIEVRIC4uLiBEUSAuLi4gQ0kg Li4uIEVSDQo+PiArICogICAgICBTUiAuLi4gRFEgLi4uIENJIC4uLiBFUSAuLi4gRVINCj4+ICsg Kg0KPj4gKyAqICAgICAgUmVxdWVzdCBoYXMgYmVlbiBoYW5kbGVkIGJ5IERNQSBpZiBTVCBhbmQg RVQgaXMgYmV0d2VlbiBEUSBhbmQgQ0kuDQo+PiArICoNCj4+ICsgKiBDYXNlIDIgLSBwcml2X2Vw LT5kZXF1ZXVlID4gY3VycmVudF9pbmRleA0KPj4gKyAqIFRoaXMgc2l0dWF0aW9uIHRha2UgcGxh Y2Ugd2hlbiBDSSBnbyB0aHJvdWdoIHRoZSBMSU5LIFRSQiBhdCB0aGUgZW5kIG9mDQo+PiArICog dHJhbnNmZXIgcmluZy4NCj4+ICsgKiAgICAgIFNSIC4uLiBDSSAuLi4gRVEgLi4uIERRIC4uLiBF Ug0KPj4gKyAqDQo+PiArICogICAgICBSZXF1ZXN0IGhhcyBiZWVuIGhhbmRsZWQgYnkgRE1BIGlm IEVUIGlzIGxlc3MgdGhlbiBDSSBvcg0KPj4gKyAqICAgICAgRVQgaXMgZ3JlYXRlciBvciBlcXVh bCBEUS4NCj4+ICsgKi8NCj4+ICtzdGF0aWMgYm9vbCBjZG5zM19yZXF1ZXN0X2hhbmRsZWQoc3Ry dWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBjZG5zM19yZXF1ZXN0ICpwcml2X3JlcSkNCj4+ICt7DQo+PiArICAg ICAgIHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2ID0gcHJpdl9lcC0+Y2RuczNfZGV2Ow0K Pj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfdHJiICp0cmIgPSBwcml2X3JlcS0+dHJiOw0KPj4gKyAg ICAgICBpbnQgY3VycmVudF9pbmRleCA9IDA7DQo+PiArICAgICAgIGludCBoYW5kbGVkID0gMDsN Cj4+ICsNCj4+ICsgICAgICAgY3VycmVudF9pbmRleCA9IChyZWFkbCgmcHJpdl9kZXYtPnJlZ3Mt PmVwX3RyYWRkcikgLQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPnRyYl9w b29sX2RtYSkgLyBUUkJfU0laRTsNCj4+ICsNCj4+ICsgICAgICAgdHJiID0gJnByaXZfZXAtPnRy Yl9wb29sW3ByaXZfcmVxLT5zdGFydF90cmJdOw0KPj4gKw0KPj4gKyAgICAgICBpZiAoKHRyYi0+ Y29udHJvbCAgJiBUUkJfQ1lDTEUpICE9IHByaXZfZXAtPmNjcykNCj4+ICsgICAgICAgICAgICAg ICBnb3RvIGZpbmlzaDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKHByaXZfZXAtPmRlcXVldWUgPCBj dXJyZW50X2luZGV4KSB7DQo+PiArICAgICAgICAgICAgICAgaWYgKChjdXJyZW50X2luZGV4ID09 IChwcml2X2VwLT5udW1fdHJicyAtIDEpKSAmJg0KPj4gKyAgICAgICAgICAgICAgICAgICAhcHJp dl9lcC0+ZGVxdWV1ZSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOw0K Pj4gKw0KPj4gKyAgICAgICAgICAgICAgIGlmIChwcml2X3JlcS0+ZW5kX3RyYiA+PSBwcml2X2Vw LT5kZXF1ZXVlICYmDQo+PiArICAgICAgICAgICAgICAgICAgIHByaXZfcmVxLT5lbmRfdHJiIDwg Y3VycmVudF9pbmRleCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSAxOw0K Pj4gKyAgICAgICB9IGVsc2UgaWYgKHByaXZfZXAtPmRlcXVldWUgID4gY3VycmVudF9pbmRleCkg ew0KPj4gKyAgICAgICAgICAgICAgIGlmIChwcml2X3JlcS0+ZW5kX3RyYiAgPCBjdXJyZW50X2lu ZGV4IHx8DQo+PiArICAgICAgICAgICAgICAgICAgIHByaXZfcmVxLT5lbmRfdHJiID49IHByaXZf ZXAtPmRlcXVldWUpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gMTsNCj4+ ICsgICAgICAgfQ0KPj4gKw0KPj4gK2ZpbmlzaDoNCj4+ICsgICAgICAgdHJhY2VfY2RuczNfcmVx dWVzdF9oYW5kbGVkKHByaXZfcmVxLCBjdXJyZW50X2luZGV4LCBoYW5kbGVkKTsNCj4+ICsNCj4+ ICsgICAgICAgcmV0dXJuIGhhbmRsZWQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGNk bnMzX3RyYW5zZmVyX2NvbXBsZXRlZChzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY2RuczNfZW5kcG9p bnQgKnByaXZfZXApDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfcmVxdWVzdCAqcHJp dl9yZXE7DQo+PiArICAgICAgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdDsNCj4+ICsgICAg ICAgc3RydWN0IGNkbnMzX3RyYiAqdHJiOw0KPj4gKw0KPj4gKyAgICAgICB3aGlsZSAoIWxpc3Rf ZW1wdHkoJnByaXZfZXAtPnBlbmRpbmdfcmVxX2xpc3QpKSB7DQo+PiArICAgICAgICAgICAgICAg cmVxdWVzdCA9IGNkbnMzX25leHRfcmVxdWVzdCgmcHJpdl9lcC0+cGVuZGluZ19yZXFfbGlzdCk7 DQo+PiArICAgICAgICAgICAgICAgcHJpdl9yZXEgPSB0b19jZG5zM19yZXF1ZXN0KHJlcXVlc3Qp Ow0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIC8qIFJlLXNlbGVjdCBlbmRwb2ludC4gSXQgY291 bGQgYmUgY2hhbmdlZCBieSBvdGhlciBDUFUgZHVyaW5nDQo+PiArICAgICAgICAgICAgICAgICog aGFuZGxpbmcgdXNiX2dhZGdldF9naXZlYmFja19yZXF1ZXN0Lg0KPj4gKyAgICAgICAgICAgICAg ICAqLw0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX3NlbGVjdF9lcChwcml2X2RldiwgcHJpdl9l cC0+ZW5kcG9pbnQuYWRkcmVzcyk7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgaWYgKCFjZG5z M19yZXF1ZXN0X2hhbmRsZWQocHJpdl9lcCwgcHJpdl9yZXEpKQ0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5k bWEgJSA4ICYmIHByaXZfZXAtPmRpciA9PSBVU0JfRElSX09VVCkNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIG1lbWNweShyZXF1ZXN0LT5idWYsIHByaXZfZXAtPmFsaWduZWRfYnVmZiwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5sZW5ndGgpOw0KPj4gKw0K Pj4gKyAgICAgICAgICAgICAgIHRyYiA9IHByaXZfZXAtPnRyYl9wb29sICsgcHJpdl9lcC0+ZGVx dWV1ZTsNCj4+ICsgICAgICAgICAgICAgICB0cmFjZV9jZG5zM19jb21wbGV0ZV90cmIocHJpdl9l cCwgdHJiKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBpZiAodHJiICE9IHByaXZfcmVxLT50 cmIpDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfd2Fybihwcml2X2Rldi0+ZGV2LA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVlc3RfdHJiPTB4JXAsIHF1 ZXVlX3RyYj0weCVwXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJp dl9yZXEtPnRyYiwgdHJiKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICByZXF1ZXN0LT5hY3R1 YWwgPSBUUkJfTEVOKGxlMzJfdG9fY3B1KHRyYi0+bGVuZ3RoKSk7DQo+PiArICAgICAgICAgICAg ICAgY2RuczNfbW92ZV9kZXFfdG9fbmV4dF90cmIocHJpdl9yZXEpOw0KPj4gKyAgICAgICAgICAg ICAgIGNkbnMzX2dhZGdldF9naXZlYmFjayhwcml2X2VwLCBwcml2X3JlcSwgMCk7DQo+PiArICAg ICAgIH0NCj4+ICsgICAgICAgcHJpdl9lcC0+ZmxhZ3MgJj0gfkVQX1BFTkRJTkdfUkVRVUVTVDsN Cj4+ICt9DQo+PiArDQo+PiArdm9pZCBjZG5zM193YTFfcmVzdG9yZV9jeWNsZV9iaXQoc3RydWN0 IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IGNkbnMz X2RldmljZSAqcHJpdl9kZXYgPSBwcml2X2VwLT5jZG5zM19kZXY7DQo+PiArDQo+PiArICAgICAg IC8qIFdvcmsgYXJvdW5kIGZvciBzdGFsZSBkYXRhIGFkZHJlc3MgaW4gVFJCKi8NCj4+ICsgICAg ICAgaWYgKHByaXZfZXAtPndhMV9zZXQpIHsNCj4+ICsgICAgICAgICAgICAgICBjZG5zM19kYmco cHJpdl9kZXYsICJXQTE6IHVwZGF0ZSBjeWNsZSBiaXRcbiIpOw0KPj4gKyAgICAgICAgICAgICAg IHByaXZfZXAtPndhMV9zZXQgPSAwOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChwcml2X2VwLT53 YTFfY3ljbGVfYml0KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBwcml2X2VwLT53YTFf dHJiLT5jb250cm9sID0NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9l cC0+d2ExX3RyYi0+Y29udHJvbCB8IDB4MTsNCj4+ICsgICAgICAgICAgICAgICB9IGVsc2Ugew0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+d2ExX3RyYi0+Y29udHJvbCA9DQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPndhMV90cmItPmNvbnRy b2wgJiB+MHgxOw0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsgICAgICAgfQ0KPj4gK30NCj4+ ICsNCj4+ICt2b2lkIGNkbnMzX3JlYXJtX3RyYW5zZmVyKHN0cnVjdCBjZG5zM19lbmRwb2ludCAq cHJpdl9lcCwgdTggcmVhcm0pDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNl ICpwcml2X2RldiA9IHByaXZfZXAtPmNkbnMzX2RldjsNCj4+ICsNCj4+ICsgICAgICAgY2RuczNf d2ExX3Jlc3RvcmVfY3ljbGVfYml0KHByaXZfZXApOw0KPj4gKw0KPj4gKyAgICAgICBpZiAocmVh cm0pIHsNCj4+ICsgICAgICAgICAgICAgICB0cmFjZV9jZG5zM19yaW5nKHByaXZfZXApOw0KPj4g Kw0KPj4gKyAgICAgICAgICAgICAgIC8qIEN5Y2xlIEJpdCBtdXN0IGJlIHVwZGF0ZWQgYmVmb3Jl IGFybWluZyBETUEuICovDQo+PiArICAgICAgICAgICAgICAgd21iKCk7DQo+PiArICAgICAgICAg ICAgICAgd3JpdGVsKEVQX0NNRF9EUkRZLCAmcHJpdl9kZXYtPnJlZ3MtPmVwX2NtZCk7DQo+PiAr DQo+PiArICAgICAgICAgICAgICAgdHJhY2VfY2RuczNfZG9vcmJlbGxfZXB4KHByaXZfZXAtPm5h bWUsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsKCZw cml2X2Rldi0+cmVncy0+ZXBfdHJhZGRyKSk7DQo+PiArICAgICAgIH0NCj4+ICt9DQo+PiArDQo+ PiArLyoqDQo+PiArICogY2RuczNfY2hlY2tfZXBfaW50ZXJydXB0X3Byb2NlZWQgLSBQcm9jZXNz ZXMgaW50ZXJydXB0IHJlbGF0ZWQgdG8gZW5kcG9pbnQNCj4+ICsgKiBAcHJpdl9lcDogZW5kcG9p bnQgb2JqZWN0DQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDANCj4+ICsgKi8NCj4+ICtzdGF0aWMg aW50IGNkbnMzX2NoZWNrX2VwX2ludGVycnVwdF9wcm9jZWVkKHN0cnVjdCBjZG5zM19lbmRwb2lu dCAqcHJpdl9lcCkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZf ZGV2ID0gcHJpdl9lcC0+Y2RuczNfZGV2Ow0KPj4gKyAgICAgICB1MzIgZXBfc3RzX3JlZzsNCj4+ ICsNCj4+ICsgICAgICAgY2RuczNfc2VsZWN0X2VwKHByaXZfZGV2LCBwcml2X2VwLT5lbmRwb2lu dC5hZGRyZXNzKTsNCj4+ICsNCj4+ICsgICAgICAgdHJhY2VfY2RuczNfZXB4X2lycShwcml2X2Rl diwgcHJpdl9lcCk7DQo+PiArDQo+PiArICAgICAgIGVwX3N0c19yZWcgPSByZWFkbCgmcHJpdl9k ZXYtPnJlZ3MtPmVwX3N0cyk7DQo+PiArICAgICAgIHdyaXRlbChlcF9zdHNfcmVnLCAmcHJpdl9k ZXYtPnJlZ3MtPmVwX3N0cyk7DQo+PiArDQo+PiArICAgICAgIGlmIChlcF9zdHNfcmVnICYgRVBf U1RTX1RSQkVSUikgew0KPj4gKyAgICAgICAgICAgICAgIC8qDQo+PiArICAgICAgICAgICAgICAg ICogRm9yIGlzb2Nocm9ub3VzIHRyYW5zZmVyIGRyaXZlciBjb21wbGV0ZXMgcmVxdWVzdCBvbg0K Pj4gKyAgICAgICAgICAgICAgICAqIElPQyBvciBvbiBUUkJFUlIuIElPQyBhcHBlYXJzIG9ubHkg d2hlbiBkZXZpY2UgcmVjZWl2ZQ0KPj4gKyAgICAgICAgICAgICAgICAqIE9VVCBkYXRhIHBhY2tl dC4gSWYgaG9zdCBkaXNhYmxlIHN0cmVhbSBvciBsb3N0IHNvbWUgcGFja2V0DQo+PiArICAgICAg ICAgICAgICAgICogdGhlbiB0aGUgb25seSB3YXkgdG8gZmluaXNoIGFsbCBxdWV1ZWQgdHJhbnNm ZXIgaXMgdG8gZG8gaXQNCj4+ICsgICAgICAgICAgICAgICAgKiBvbiBUUkJFUlIgZXZlbnQuDQo+ PiArICAgICAgICAgICAgICAgICovDQo+PiArICAgICAgICAgICAgICAgaWYgKHByaXZfZXAtPnR5 cGUgPT0gVVNCX0VORFBPSU5UX1hGRVJfSVNPQyAmJg0KPj4gKyAgICAgICAgICAgICAgICAgICAh cHJpdl9lcC0+d2ExX3NldCkNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNkbnMzX3RyYW5z ZmVyX2NvbXBsZXRlZChwcml2X2RldiwgcHJpdl9lcCk7DQo+PiArICAgICAgICAgICAgICAgZWxz ZQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2RuczNfcmVhcm1fdHJhbnNmZXIocHJpdl9l cCwgcHJpdl9lcC0+d2ExX3NldCk7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgaWYg KChlcF9zdHNfcmVnICYgRVBfU1RTX0lPQykgfHwgKGVwX3N0c19yZWcgJiBFUF9TVFNfSVNQKSkN Cj4+ICsgICAgICAgICAgICAgICBjZG5zM190cmFuc2Zlcl9jb21wbGV0ZWQocHJpdl9kZXYsIHBy aXZfZXApOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoq DQo+PiArICogY2RuczNfY2hlY2tfdXNiX2ludGVycnVwdF9wcm9jZWVkIC0gUHJvY2Vzc2VzIGlu dGVycnVwdCByZWxhdGVkIHRvIGRldmljZQ0KPj4gKyAqIEBwcml2X2RldjogZXh0ZW5kZWQgZ2Fk Z2V0IG9iamVjdA0KPj4gKyAqIEB1c2JfaXN0czogYml0bWFwIHJlcHJlc2VudGF0aW9uIG9mIGRl dmljZSdzIHJlcG9ydGVkIGludGVycnVwdHMNCj4+ICsgKiAodXNiX2lzdHMgcmVnaXN0ZXIgdmFs dWUpDQo+PiArICovDQo+PiArc3RhdGljIHZvaWQgY2RuczNfY2hlY2tfdXNiX2ludGVycnVwdF9w cm9jZWVkKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiB1c2JfaXN0cykNCj4+ICt7DQo+PiAr ICAgICAgIGludCBzcGVlZCA9IDA7DQo+PiArDQo+PiArICAgICAgIHRyYWNlX2NkbnMzX3VzYl9p cnEocHJpdl9kZXYsIHVzYl9pc3RzKTsNCj4+ICsgICAgICAgLyogQ29ubmVjdGlvbiBkZXRlY3Rl ZCAqLw0KPj4gKyAgICAgICBpZiAodXNiX2lzdHMgJiAoVVNCX0lTVFNfQ09OMkkgfCBVU0JfSVNU U19DT05JKSkgew0KPj4gKyAgICAgICAgICAgICAgIHNwZWVkID0gY2RuczNfZ2V0X3NwZWVkKHBy aXZfZGV2KTsNCj4+ICsgICAgICAgICAgICAgICBwcml2X2Rldi0+Z2FkZ2V0LnNwZWVkID0gc3Bl ZWQ7DQo+PiArICAgICAgICAgICAgICAgdXNiX2dhZGdldF9zZXRfc3RhdGUoJnByaXZfZGV2LT5n YWRnZXQsIFVTQl9TVEFURV9QT1dFUkVEKTsNCj4+ICsgICAgICAgICAgICAgICBjZG5zM19lcDBf Y29uZmlnKHByaXZfZGV2KTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAvKiBEaXNj b25uZWN0aW9uIGRldGVjdGVkICovDQo+PiArICAgICAgIGlmICh1c2JfaXN0cyAmIChVU0JfSVNU U19ESVMySSB8IFVTQl9JU1RTX0RJU0kpKSB7DQo+PiArICAgICAgICAgICAgICAgaWYgKHByaXZf ZGV2LT5nYWRnZXRfZHJpdmVyICYmDQo+PiArICAgICAgICAgICAgICAgICAgIHByaXZfZGV2LT5n YWRnZXRfZHJpdmVyLT5kaXNjb25uZWN0KSB7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBz cGluX3VubG9jaygmcHJpdl9kZXYtPmxvY2spOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg cHJpdl9kZXYtPmdhZGdldF9kcml2ZXItPmRpc2Nvbm5lY3QoJnByaXZfZGV2LT5nYWRnZXQpOw0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl9sb2NrKCZwcml2X2Rldi0+bG9jayk7DQo+ PiArICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHByaXZfZGV2LT5n YWRnZXQuc3BlZWQgPSBVU0JfU1BFRURfVU5LTk9XTjsNCj4+ICsgICAgICAgICAgICAgICB1c2Jf Z2FkZ2V0X3NldF9zdGF0ZSgmcHJpdl9kZXYtPmdhZGdldCwgVVNCX1NUQVRFX05PVEFUVEFDSEVE KTsNCj4+ICsgICAgICAgICAgICAgICBjZG5zM19od19yZXNldF9lcHNfY29uZmlnKHByaXZfZGV2 KTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAvKiByZXNldCovDQo+PiArICAgICAg IGlmICh1c2JfaXN0cyAmIChVU0JfSVNUU19VV1JFU0kgfCBVU0JfSVNUU19VSFJFU0kgfCBVU0Jf SVNUU19VMlJFU0kpKSB7DQo+PiArICAgICAgICAgICAgICAgLypyZWFkIGFnYWluIHRvIGNoZWNr IHRoZSBhY3R1YWxsIHNwZWVkKi8NCj4+ICsgICAgICAgICAgICAgICBzcGVlZCA9IGNkbnMzX2dl dF9zcGVlZChwcml2X2Rldik7DQo+PiArICAgICAgICAgICAgICAgdXNiX2dhZGdldF9zZXRfc3Rh dGUoJnByaXZfZGV2LT5nYWRnZXQsIFVTQl9TVEFURV9ERUZBVUxUKTsNCj4+ICsgICAgICAgICAg ICAgICBwcml2X2Rldi0+Z2FkZ2V0LnNwZWVkID0gc3BlZWQ7DQo+PiArICAgICAgICAgICAgICAg Y2RuczNfaHdfcmVzZXRfZXBzX2NvbmZpZyhwcml2X2Rldik7DQo+PiArICAgICAgICAgICAgICAg Y2RuczNfZXAwX2NvbmZpZyhwcml2X2Rldik7DQo+PiArICAgICAgIH0NCj4+ICt9DQo+PiArDQo+ PiArLyoqDQo+PiArICogY2RuczNfZGV2aWNlX2lycV9oYW5kbGVyLSBpbnRlcnJ1cHQgaGFuZGxl ciBmb3IgZGV2aWNlIHBhcnQgb2YgY29udHJvbGxlcg0KPj4gKyAqDQo+PiArICogQGlycTogaXJx IG51bWJlciBmb3IgY2RuczMgY29yZSBkZXZpY2UNCj4+ICsgKiBAZGF0YTogc3RydWN0dXJlIG9m IGNkbnMzDQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIElSUV9IQU5ETEVEIG9yIElSUV9OT05FDQo+ PiArICovDQo+PiArc3RhdGljIGlycXJldHVybl90IGNkbnMzX2RldmljZV9pcnFfaGFuZGxlcihp bnQgaXJxLCB2b2lkICpkYXRhKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX2Rldmlj ZSAqcHJpdl9kZXY7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zMyAqY2RucyA9IGRhdGE7DQo+PiAr ICAgICAgIGlycXJldHVybl90IHJldCA9IElSUV9OT05FOw0KPj4gKyAgICAgICB1bnNpZ25lZCBs b25nIGZsYWdzOw0KPj4gKyAgICAgICB1MzIgcmVnOw0KPj4gKw0KPj4gKyAgICAgICBwcml2X2Rl diA9IGNkbnMtPmdhZGdldF9kZXY7DQo+PiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwcml2 X2Rldi0+bG9jaywgZmxhZ3MpOw0KPj4gKw0KPj4gKyAgICAgICAvKiBjaGVjayBVU0IgZGV2aWNl IGludGVycnVwdCAqLw0KPj4gKyAgICAgICByZWcgPSByZWFkbCgmcHJpdl9kZXYtPnJlZ3MtPnVz Yl9pc3RzKTsNCj4+ICsgICAgICAgd3JpdGVsKHJlZywgJnByaXZfZGV2LT5yZWdzLT51c2JfaXN0 cyk7DQo+PiArDQo+PiArICAgICAgIGlmIChyZWcpIHsNCj4+ICsgICAgICAgICAgICAgICBjZG5z M19jaGVja191c2JfaW50ZXJydXB0X3Byb2NlZWQocHJpdl9kZXYsIHJlZyk7DQo+PiArICAgICAg ICAgICAgICAgcmV0ID0gSVJRX0hBTkRMRUQ7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAg ICAgLyogY2hlY2sgZW5kcG9pbnQgaW50ZXJydXB0ICovDQo+PiArICAgICAgIHJlZyA9IHJlYWRs KCZwcml2X2Rldi0+cmVncy0+ZXBfaXN0cyk7DQo+PiArDQo+PiArICAgICAgIGlmIChyZWcpIHsN Cj4+ICsgICAgICAgICAgICAgICBwcml2X2Rldi0+c2hhZG93X2VwX2VuIHw9IHJlZzsNCj4+ICsg ICAgICAgICAgICAgICByZWcgPSB+cmVnICYgcmVhZGwoJnByaXZfZGV2LT5yZWdzLT5lcF9pZW4p Ow0KPj4gKyAgICAgICAgICAgICAgIC8qIG1hc2sgZGVmZXJyZWQgaW50ZXJydXB0LiAqLw0KPj4g KyAgICAgICAgICAgICAgIHdyaXRlbChyZWcsICZwcml2X2Rldi0+cmVncy0+ZXBfaWVuKTsNCj4+ ICsgICAgICAgICAgICAgICByZXQgPSBJUlFfV0FLRV9USFJFQUQ7DQo+PiArICAgICAgIH0NCj4+ ICsNCj4+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdl9kZXYtPmxvY2ssIGZs YWdzKTsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiAr ICogY2RuczNfZGV2aWNlX3RocmVhZF9pcnFfaGFuZGxlci0gaW50ZXJydXB0IGhhbmRsZXIgZm9y IGRldmljZSBwYXJ0DQo+PiArICogb2YgY29udHJvbGxlcg0KPj4gKyAqDQo+PiArICogQGlycTog aXJxIG51bWJlciBmb3IgY2RuczMgY29yZSBkZXZpY2UNCj4+ICsgKiBAZGF0YTogc3RydWN0dXJl IG9mIGNkbnMzDQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIElSUV9IQU5ETEVEIG9yIElSUV9OT05F DQo+PiArICovDQo+PiArc3RhdGljIGlycXJldHVybl90IGNkbnMzX2RldmljZV90aHJlYWRfaXJx X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBj ZG5zM19kZXZpY2UgKnByaXZfZGV2Ow0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczMgKmNkbnMgPSBk YXRhOw0KPj4gKyAgICAgICBpcnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTsNCj4+ICsgICAgICAg dW5zaWduZWQgbG9uZyBmbGFnczsNCj4+ICsgICAgICAgdTMyIGVwX2llbjsNCj4+ICsgICAgICAg aW50IGJpdDsNCj4+ICsgICAgICAgdTMyIHJlZzsNCj4+ICsNCj4+ICsgICAgICAgcHJpdl9kZXYg PSBjZG5zLT5nYWRnZXRfZGV2Ow0KPj4gKyAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdl9k ZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsNCj4+ICsgICAgICAgcmVnID0gcmVhZGwoJnByaXZfZGV2 LT5yZWdzLT5lcF9pc3RzKTsNCj4+ICsNCj4+ICsgICAgICAgLyogaGFuZGxlIGRlZmF1bHQgZW5k cG9pbnQgT1VUICovDQo+PiArICAgICAgIGlmIChyZWcgJiBFUF9JU1RTX0VQX09VVDApIHsNCj4+ ICsgICAgICAgICAgICAgICBjZG5zM19jaGVja19lcDBfaW50ZXJydXB0X3Byb2NlZWQocHJpdl9k ZXYsIFVTQl9ESVJfT1VUKTsNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBJUlFfSEFORExFRDsN Cj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAvKiBoYW5kbGUgZGVmYXVsdCBlbmRwb2lu dCBJTiAqLw0KPj4gKyAgICAgICBpZiAocmVnICYgRVBfSVNUU19FUF9JTjApIHsNCj4+ICsgICAg ICAgICAgICAgICBjZG5zM19jaGVja19lcDBfaW50ZXJydXB0X3Byb2NlZWQocHJpdl9kZXYsIFVT Ql9ESVJfSU4pOw0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IElSUV9IQU5ETEVEOw0KPj4gKyAg ICAgICB9DQo+PiArDQo+PiArICAgICAgIC8qIGNoZWNrIGlmIGludGVycnVwdCBmcm9tIG5vbiBk ZWZhdWx0IGVuZHBvaW50LCBpZiBubyBleGl0ICovDQo+PiArICAgICAgIHJlZyAmPSB+KEVQX0lT VFNfRVBfT1VUMCB8IEVQX0lTVFNfRVBfSU4wKTsNCj4+ICsgICAgICAgaWYgKCFyZWcpDQo+PiAr ICAgICAgICAgICAgICAgZ290byBpcnFlbmQ7DQo+PiArDQo+PiArICAgICAgIGZvcl9lYWNoX3Nl dF9iaXQoYml0LCAodW5zaWduZWQgbG9uZyAqKSZyZWcsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKHUzMikgKiBCSVRTX1BFUl9CWVRFKSB7DQo+PiArICAgICAgICAgICAgICAg cHJpdl9kZXYtPnNoYWRvd19lcF9lbiB8PSBCSVQoYml0KTsNCj4+ICsgICAgICAgICAgICAgICBj ZG5zM19jaGVja19lcF9pbnRlcnJ1cHRfcHJvY2VlZChwcml2X2Rldi0+ZXBzW2JpdF0pOw0KPj4g KyAgICAgICAgICAgICAgIHJldCA9IElSUV9IQU5ETEVEOw0KPj4gKyAgICAgICB9DQo+PiArDQo+ PiAraXJxZW5kOg0KPj4gKyAgICAgICBlcF9pZW4gPSByZWFkbCgmcHJpdl9kZXYtPnJlZ3MtPmVw X2llbikgfCBwcml2X2Rldi0+c2hhZG93X2VwX2VuOw0KPj4gKyAgICAgICBwcml2X2Rldi0+c2hh ZG93X2VwX2VuID0gMDsNCj4+ICsgICAgICAgLyogVW5tYXNrIGFsbCBoYW5kbGVkIEVQIGludGVy cnVwdHMgKi8NCj4+ICsgICAgICAgd3JpdGVsKGVwX2llbiwgJnByaXZfZGV2LT5yZWdzLT5lcF9p ZW4pOw0KPj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2X2Rldi0+bG9jaywg ZmxhZ3MpOw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ ICsgKiBjZG5zM19lcF9vbmNoaXBfYnVmZmVyX3Jlc2VydmUgLSBUcnkgdG8gcmVzZXJ2ZSBvbmNo aXAgYnVmIGZvciBFUA0KPj4gKyAqDQo+PiArICogVGhlIHJlYWwgcmVzZXJ2YXRpb24gd2lsbCBv Y2N1ciBkdXJpbmcgd3JpdGUgdG8gRVBfQ0ZHIHJlZ2lzdGVyLA0KPj4gKyAqIHRoaXMgZnVuY3Rp b24gaXMgdXNlZCB0byBjaGVjayBpZiB0aGUgJ3NpemUnIHJlc2VydmF0aW9uIGlzIGFsbG93ZWQu DQo+PiArICoNCj4+ICsgKiBAcHJpdl9kZXY6IGV4dGVuZGVkIGdhZGdldCBvYmplY3QNCj4+ICsg KiBAc2l6ZTogdGhlIHNpemUgKEtCKSBmb3IgRVAgd291bGQgbGlrZSB0byBhbGxvY2F0ZQ0KPj4g KyAqDQo+PiArICogUmV0dXJuIDAgaWYgdGhlIHJlcXVpcmVkIHNpemUgY2FuIG1ldCBvciBuZWdh dGl2ZSB2YWx1ZSBvbiBmYWlsdXJlDQo+PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19lcF9v bmNoaXBfYnVmZmVyX3Jlc2VydmUoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkNCj4+ICt7 DQo+PiArICAgICAgIHUzMiBvbmNoaXBfbWVtOw0KPj4gKw0KPj4gKyAgICAgICBwcml2X2Rldi0+ b25jaGlwX21lbV9hbGxvY2F0ZWRfc2l6ZSArPSBzaXplOw0KPj4gKw0KPj4gKyAgICAgICBvbmNo aXBfbWVtID0gVVNCX0NBUDJfQUNUVUFMX01FTV9TSVpFKHJlYWRsKCZwcml2X2Rldi0+cmVncy0+ dXNiX2NhcDIpKTsNCj4+ICsgICAgICAgaWYgKCFvbmNoaXBfbWVtKQ0KPj4gKyAgICAgICAgICAg ICAgIG9uY2hpcF9tZW0gPSAyNTY7DQo+PiArDQo+PiArICAgICAgIC8qIDJLQiBpcyByZXNlcnZl ZCBmb3IgRVAwKi8NCj4+ICsgICAgICAgb25jaGlwX21lbSAtPSAyOw0KPj4gKyAgICAgICBpZiAo cHJpdl9kZXYtPm9uY2hpcF9tZW1fYWxsb2NhdGVkX3NpemUgPiBvbmNoaXBfbWVtKSB7DQo+PiAr ICAgICAgICAgICAgICAgcHJpdl9kZXYtPm9uY2hpcF9tZW1fYWxsb2NhdGVkX3NpemUgLT0gc2l6 ZTsNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOw0KPj4gKyAgICAgICB9DQo+PiAr DQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5z M19lcF9jb25maWcgQ29uZmlndXJlIGhhcmR3YXJlIGVuZHBvaW50DQo+PiArICogQHByaXZfZXA6 IGV4dGVuZGVkIGVuZHBvaW50IG9iamVjdA0KPj4gKyAqLw0KPj4gK3ZvaWQgY2RuczNfZXBfY29u ZmlnKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcCkNCj4+ICt7DQo+PiArICAgICAgIGJv b2wgaXNfaXNvX2VwID0gKHByaXZfZXAtPnR5cGUgPT0gVVNCX0VORFBPSU5UX1hGRVJfSVNPQyk7 DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2ID0gcHJpdl9lcC0+Y2Ru czNfZGV2Ow0KPj4gKyAgICAgICB1MzIgYkVuZHBvaW50QWRkcmVzcyA9IHByaXZfZXAtPm51bSB8 IHByaXZfZXAtPmRpcjsNCj4+ICsgICAgICAgdTMyIGJ1ZmZlcmluZyA9IENETlMzX0VQX0JVRl9T SVpFIC0gMTsNCj4+ICsgICAgICAgdTMyIG1heF9wYWNrZXRfc2l6ZSA9IDA7DQo+PiArICAgICAg IHUzMiBlcF9jZmcgPSAwOw0KPj4gKyAgICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4gKyAgICAgICBz d2l0Y2ggKHByaXZfZXAtPnR5cGUpIHsNCj4+ICsgICAgICAgY2FzZSBVU0JfRU5EUE9JTlRfWEZF Ul9JTlQ6DQo+PiArICAgICAgICAgICAgICAgZXBfY2ZnID0gRVBfQ0ZHX0VQVFlQRShVU0JfRU5E UE9JTlRfWEZFUl9JTlQpOw0KPj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICBj YXNlIFVTQl9FTkRQT0lOVF9YRkVSX0JVTEs6DQo+PiArICAgICAgICAgICAgICAgZXBfY2ZnID0g RVBfQ0ZHX0VQVFlQRShVU0JfRU5EUE9JTlRfWEZFUl9CVUxLKTsNCj4+ICsgICAgICAgICAgICAg ICBicmVhazsNCj4+ICsgICAgICAgZGVmYXVsdDoNCj4+ICsgICAgICAgICAgICAgICBlcF9jZmcg PSBFUF9DRkdfRVBUWVBFKFVTQl9FTkRQT0lOVF9YRkVSX0lTT0MpOw0KPj4gKyAgICAgICAgICAg ICAgIGJ1ZmZlcmluZyA9IHByaXZfZXAtPmVuZHBvaW50Lm11bHQgKyAxOw0KPj4gKyAgICAgICB9 DQo+PiArDQo+PiArICAgICAgIHN3aXRjaCAocHJpdl9kZXYtPmdhZGdldC5zcGVlZCkgew0KPj4g KyAgICAgICBjYXNlIFVTQl9TUEVFRF9GVUxMOg0KPj4gKyAgICAgICAgICAgICAgIG1heF9wYWNr ZXRfc2l6ZSA9IGlzX2lzb19lcCA/IDEwMjMgOiA2NDsNCj4+ICsgICAgICAgICAgICAgICBicmVh azsNCj4+ICsgICAgICAgY2FzZSBVU0JfU1BFRURfSElHSDoNCj4+ICsgICAgICAgICAgICAgICBt YXhfcGFja2V0X3NpemUgPSBpc19pc29fZXAgPyAxMDI0IDogNTEyOw0KPj4gKyAgICAgICAgICAg ICAgIGJyZWFrOw0KPj4gKyAgICAgICBjYXNlIFVTQl9TUEVFRF9TVVBFUjoNCj4+ICsgICAgICAg ICAgICAgICBtYXhfcGFja2V0X3NpemUgPSAxMDI0Ow0KPj4gKyAgICAgICAgICAgICAgIGlmIChw cml2X2VwLT50eXBlID09IFVTQl9FTkRQT0lOVF9YRkVSX0lTT0MpIHsNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIGJ1ZmZlcmluZyA9IChwcml2X2VwLT5lbmRwb2ludC5tdWx0ICsgMSkgKg0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaXZfZXAtPmVuZHBvaW50 Lm1heGJ1cnN0ICsgMSk7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJp dl9lcC0+aW50ZXJ2YWwgPiAxKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi dWZmZXJpbmcrKzsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArICAgICAgICAgICAgICAgYnJl YWs7DQo+PiArICAgICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgLyogYWxsIG90aGVy IHNwZWVkIGFyZSBub3Qgc3VwcG9ydGVkICovDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuOw0K Pj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIHJldCA9IGNkbnMzX2VwX29uY2hpcF9idWZm ZXJfcmVzZXJ2ZShwcml2X2RldiwgYnVmZmVyaW5nKTsNCj4+ICsgICAgICAgaWYgKHJldCkgew0K Pj4gKyAgICAgICAgICAgICAgIGRldl9lcnIocHJpdl9kZXYtPmRldiwgIm9uY2hpcCBtZW0gaXMg ZnVsbCwgZXAgaXMgaW52YWxpZFxuIik7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPj4g KyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGVwX2NmZyB8PSBFUF9DRkdfTUFYUEtUU0laRSht YXhfcGFja2V0X3NpemUpIHwNCj4+ICsgICAgICAgICAgICAgICAgIEVQX0NGR19NVUxUKHByaXZf ZXAtPmVuZHBvaW50Lm11bHQpIHwNCj4+ICsgICAgICAgICAgICAgICAgIEVQX0NGR19CVUZGRVJJ TkcoYnVmZmVyaW5nKSB8DQo+PiArICAgICAgICAgICAgICAgICBFUF9DRkdfTUFYQlVSU1QocHJp dl9lcC0+ZW5kcG9pbnQubWF4YnVyc3QpOw0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19zZWxlY3Rf ZXAocHJpdl9kZXYsIGJFbmRwb2ludEFkZHJlc3MpOw0KPj4gKyAgICAgICB3cml0ZWwoZXBfY2Zn LCAmcHJpdl9kZXYtPnJlZ3MtPmVwX2NmZyk7DQo+PiArDQo+PiArICAgICAgIGRldl9kYmcocHJp dl9kZXYtPmRldiwgIkNvbmZpZ3VyZSAlczogd2l0aCB2YWwgJTA4eFxuIiwNCj4+ICsgICAgICAg ICAgICAgICBwcml2X2VwLT5uYW1lLCBlcF9jZmcpOw0KPj4gK30NCj4+ICsNCj4+ICsvKiBGaW5k IGNvcnJlY3QgZGlyZWN0aW9uIGZvciBIVyBlbmRwb2ludCBhY2NvcmRpbmcgdG8gZGVzY3JpcHRp b24gKi8NCj4+ICtzdGF0aWMgaW50IGNkbnMzX2VwX2Rpcl9pc19jb3JyZWN0KHN0cnVjdCB1c2Jf ZW5kcG9pbnRfZGVzY3JpcHRvciAqZGVzYywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKQ0KPj4gK3sNCj4+ICsgICAg ICAgcmV0dXJuIChwcml2X2VwLT5lbmRwb2ludC5jYXBzLmRpcl9pbiAmJiB1c2JfZW5kcG9pbnRf ZGlyX2luKGRlc2MpKSB8fA0KPj4gKyAgICAgICAgICAgICAgKHByaXZfZXAtPmVuZHBvaW50LmNh cHMuZGlyX291dCAmJiB1c2JfZW5kcG9pbnRfZGlyX291dChkZXNjKSk7DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyBzdHJ1Y3QNCj4+ICtjZG5zM19lbmRwb2ludCAqY2RuczNfZmluZF9hdmFpbGFi bGVfZXAoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICpk ZXNjKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IHVzYl9lcCAqZXA7DQo+PiArICAgICAgIHN0 cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcDsNCj4+ICsNCj4+ICsgICAgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeShlcCwgJnByaXZfZGV2LT5nYWRnZXQuZXBfbGlzdCwgZXBfbGlzdCkgew0KPj4g KyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnVtOw0KPj4gKyAgICAgICAgICAgICAgIGlu dCByZXQ7DQo+PiArICAgICAgICAgICAgICAgLyogZXAgbmFtZSBwYXR0ZXJuIGxpa2VzIGVwWGlu IG9yIGVwWG91dCAqLw0KPj4gKyAgICAgICAgICAgICAgIGNoYXIgY1syXSA9IHtlcC0+bmFtZVsy XSwgJ1wwJ307DQo+PiArDQo+PiArICAgICAgICAgICAgICAgcmV0ID0ga3N0cnRvdWwoYywgMTAs ICZudW0pOw0KPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gRVJSX1BUUihyZXQpOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHBy aXZfZXAgPSBlcF90b19jZG5zM19lcChlcCk7DQo+PiArICAgICAgICAgICAgICAgaWYgKGNkbnMz X2VwX2Rpcl9pc19jb3JyZWN0KGRlc2MsIHByaXZfZXApKSB7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAoIShwcml2X2VwLT5mbGFncyAmIEVQX0NMQUlNRUQpKSB7DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPm51bSAgPSBudW07DQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcml2X2VwOw0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsgICAgICAgfQ0KPj4gKw0K Pj4gKyAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsNCj4+ICt9DQo+PiArDQo+PiArLyoN Cj4+ICsgKiAgQ2FkZW5jZSBJUCBoYXMgb25lIGxpbWl0YXRpb24gdGhhdCBhbGwgZW5kcG9pbnRz IG11c3QgYmUgY29uZmlndXJlZA0KPj4gKyAqIChUeXBlICYgTWF4UGFja2V0U2l6ZSkgYmVmb3Jl IHNldHRpbmcgY29uZmlndXJhdGlvbiB0aHJvdWdoIGhhcmR3YXJlDQo+PiArICogcmVnaXN0ZXIs IGl0IG1lYW5zIHdlIGNhbid0IGNoYW5nZSBlbmRwb2ludHMgY29uZmlndXJhdGlvbiBhZnRlcg0K Pj4gKyAqIHNldF9jb25maWd1cmF0aW9uLg0KPj4gKyAqDQo+PiArICogVGhpcyBmdW5jdGlvbiBz ZXQgRVBfQ0xBSU1FRCBmbGFnIHdoaWNoIGlzIGFkZGVkIHdoZW4gdGhlIGdhZGdldCBkcml2ZXIN Cj4+ICsgKiB1c2VzIHVzYl9lcF9hdXRvY29uZmlnIHRvIGNvbmZpZ3VyZSBzcGVjaWZpYyBlbmRw b2ludDsNCj4+ICsgKiBXaGVuIHRoZSB1ZGMgZHJpdmVyIHJlY2VpdmVzIHNldF9jb25maWd1cmlv biByZXF1ZXN0LA0KPj4gKyAqIGl0IGdvZXMgdGhyb3VnaCBhbGwgY2xhaW1lZCBlbmRwb2ludHMs IGFuZCBjb25maWd1cmUgYWxsIGVuZHBvaW50cw0KPj4gKyAqIGFjY29yZGluZ2x5Lg0KPj4gKyAq DQo+PiArICogQXQgdXNiX2VwX29wcy5lbmFibGUvZGlzYWJsZSwgd2Ugb25seSBlbmFibGUgYW5k IGRpc2FibGUgZW5kcG9pbnQgdGhyb3VnaA0KPj4gKyAqIGVwX2NmZyByZWdpc3RlciB3aGljaCBj YW4gYmUgY2hhbmdlZCBhZnRlciBzZXRfY29uZmlndXJhdGlvbiwgYW5kIGRvDQo+PiArICogc29t ZSBzb2Z0d2FyZSBvcGVyYXRpb24gYWNjb3JkaW5nbHkuDQo+PiArICovDQo+PiArc3RhdGljIHN0 cnVjdA0KPj4gK3VzYl9lcCAqY2RuczNfZ2FkZ2V0X21hdGNoX2VwKHN0cnVjdCB1c2JfZ2FkZ2V0 ICpnYWRnZXQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2Vu ZHBvaW50X2Rlc2NyaXB0b3IgKmRlc2MsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdXNiX3NzX2VwX2NvbXBfZGVzY3JpcHRvciAqY29tcF9kZXNjKQ0KPj4gK3sNCj4+ ICsgICAgICAgc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYgPSBnYWRnZXRfdG9fY2RuczNf ZGV2aWNlKGdhZGdldCk7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9l cDsNCj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+ICsNCj4+ICsgICAgICAgcHJp dl9lcCA9IGNkbnMzX2ZpbmRfYXZhaWxhYmxlX2VwKHByaXZfZGV2LCBkZXNjKTsNCj4+ICsgICAg ICAgaWYgKElTX0VSUihwcml2X2VwKSkgew0KPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIocHJp dl9kZXYtPmRldiwgIm5vIGF2YWlsYWJsZSBlcFxuIik7DQo+PiArICAgICAgICAgICAgICAgcmV0 dXJuIE5VTEw7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgZGV2X2RiZyhwcml2X2Rl di0+ZGV2LCAibWF0Y2ggZW5kcG9pbnQ6ICVzXG4iLCBwcml2X2VwLT5uYW1lKTsNCj4+ICsNCj4+ ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7DQo+PiAr ICAgICAgIHByaXZfZXAtPmVuZHBvaW50LmRlc2MgPSBkZXNjOw0KPj4gKyAgICAgICBwcml2X2Vw LT5kaXIgID0gdXNiX2VuZHBvaW50X2Rpcl9pbihkZXNjKSA/IFVTQl9ESVJfSU4gOiBVU0JfRElS X09VVDsNCj4+ICsgICAgICAgcHJpdl9lcC0+dHlwZSA9IHVzYl9lbmRwb2ludF90eXBlKGRlc2Mp Ow0KPj4gKyAgICAgICBwcml2X2VwLT5mbGFncyB8PSBFUF9DTEFJTUVEOw0KPj4gKyAgICAgICBw cml2X2VwLT5pbnRlcnZhbCA9IGRlc2MtPmJJbnRlcnZhbCA/IEJJVChkZXNjLT5iSW50ZXJ2YWwg LSAxKSA6IDA7DQo+PiArDQo+PiArICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXZf ZGV2LT5sb2NrLCBmbGFncyk7DQo+PiArICAgICAgIHJldHVybiAmcHJpdl9lcC0+ZW5kcG9pbnQ7 DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX2dhZGdldF9lcF9hbGxvY19yZXF1 ZXN0IEFsbG9jYXRlcyByZXF1ZXN0DQo+PiArICogQGVwOiBlbmRwb2ludCBvYmplY3QgYXNzb2Np YXRlZCB3aXRoIHJlcXVlc3QNCj4+ICsgKiBAZ2ZwX2ZsYWdzOiBnZnAgZmxhZ3MNCj4+ICsgKg0K Pj4gKyAqIFJldHVybnMgYWxsb2NhdGVkIHJlcXVlc3QgYWRkcmVzcywgTlVMTCBvbiBhbGxvY2F0 aW9uIGVycm9yDQo+PiArICovDQo+PiArc3RydWN0IHVzYl9yZXF1ZXN0ICpjZG5zM19nYWRnZXRf ZXBfYWxsb2NfcmVxdWVzdChzdHJ1Y3QgdXNiX2VwICplcCwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZwX3QgZ2ZwX2ZsYWdzKQ0KPj4gK3sN Cj4+ICsgICAgICAgc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwID0gZXBfdG9fY2RuczNf ZXAoZXApOw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfcmVxdWVzdCAqcHJpdl9yZXE7DQo+PiAr DQo+PiArICAgICAgIHByaXZfcmVxID0ga3phbGxvYyhzaXplb2YoKnByaXZfcmVxKSwgZ2ZwX2Zs YWdzKTsNCj4+ICsgICAgICAgaWYgKCFwcml2X3JlcSkNCj4+ICsgICAgICAgICAgICAgICByZXR1 cm4gTlVMTDsNCj4+ICsNCj4+ICsgICAgICAgcHJpdl9yZXEtPnByaXZfZXAgPSBwcml2X2VwOw0K Pj4gKw0KPj4gKyAgICAgICB0cmFjZV9jZG5zM19hbGxvY19yZXF1ZXN0KHByaXZfcmVxKTsNCj4+ ICsgICAgICAgcmV0dXJuICZwcml2X3JlcS0+cmVxdWVzdDsNCj4+ICt9DQo+PiArDQo+PiArLyoq DQo+PiArICogY2RuczNfZ2FkZ2V0X2VwX2ZyZWVfcmVxdWVzdCBGcmVlIG1lbW9yeSBvY2N1cGll ZCBieSByZXF1ZXN0DQo+PiArICogQGVwOiBlbmRwb2ludCBvYmplY3QgYXNzb2NpYXRlZCB3aXRo IHJlcXVlc3QNCj4+ICsgKiBAcmVxdWVzdDogcmVxdWVzdCB0byBmcmVlIG1lbW9yeQ0KPj4gKyAq Lw0KPj4gK3ZvaWQgY2RuczNfZ2FkZ2V0X2VwX2ZyZWVfcmVxdWVzdChzdHJ1Y3QgdXNiX2VwICpl cCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX3JlcXVl c3QgKnJlcXVlc3QpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfcmVxdWVzdCAqcHJp dl9yZXEgPSB0b19jZG5zM19yZXF1ZXN0KHJlcXVlc3QpOw0KPj4gKw0KPj4gKyAgICAgICB0cmFj ZV9jZG5zM19mcmVlX3JlcXVlc3QocHJpdl9yZXEpOw0KPj4gKyAgICAgICBrZnJlZShwcml2X3Jl cSk7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIGNkbnMzX2dhZGdldF9lcF9lbmFibGUg RW5hYmxlIGVuZHBvaW50DQo+PiArICogQGVwOiBlbmRwb2ludCBvYmplY3QNCj4+ICsgKiBAZGVz YzogZW5kcG9pbnQgZGVzY3JpcHRvcg0KPj4gKyAqDQo+PiArICogUmV0dXJucyAwIG9uIHN1Y2Nl c3MsIGVycm9yIGNvZGUgZWxzZXdoZXJlDQo+PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19n YWRnZXRfZXBfZW5hYmxlKHN0cnVjdCB1c2JfZXAgKmVwLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZGVz YykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcDsNCj4+ ICsgICAgICAgc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXY7DQo+PiArICAgICAgIHUzMiBy ZWcgPSBFUF9TVFNfRU5fVFJCRVJSRU47DQo+PiArICAgICAgIHUzMiBiRW5kcG9pbnRBZGRyZXNz Ow0KPj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4gKyAgICAgICBpbnQgcmV0Ow0K Pj4gKw0KPj4gKyAgICAgICBwcml2X2VwID0gZXBfdG9fY2RuczNfZXAoZXApOw0KPj4gKyAgICAg ICBwcml2X2RldiA9IHByaXZfZXAtPmNkbnMzX2RldjsNCj4+ICsNCj4+ICsgICAgICAgaWYgKCFl cCB8fCAhZGVzYyB8fCBkZXNjLT5iRGVzY3JpcHRvclR5cGUgIT0gVVNCX0RUX0VORFBPSU5UKSB7 DQo+PiArICAgICAgICAgICAgICAgZGV2X2RiZyhwcml2X2Rldi0+ZGV2LCAidXNic3M6IGludmFs aWQgcGFyYW1ldGVyc1xuIik7DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgaWYgKCFkZXNjLT53TWF4UGFja2V0U2l6ZSkg ew0KPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIocHJpdl9kZXYtPmRldiwgInVzYnNzOiBtaXNz aW5nIHdNYXhQYWNrZXRTaXplXG4iKTsNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBpZiAoZGV2X1dBUk5fT05DRShwcml2 X2Rldi0+ZGV2LCBwcml2X2VwLT5mbGFncyAmIEVQX0VOQUJMRUQsDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICIlcyBpcyBhbHJlYWR5IGVuYWJsZWRcbiIsIHByaXZfZXAtPm5hbWUpKQ0K Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gKyAgICAgICBzcGluX2xvY2tf aXJxc2F2ZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsNCj4+ICsgICAgICAgcHJpdl9l cC0+ZW5kcG9pbnQuZGVzYyA9IGRlc2M7DQo+PiArICAgICAgIHByaXZfZXAtPnR5cGUgPSB1c2Jf ZW5kcG9pbnRfdHlwZShkZXNjKTsNCj4+ICsgICAgICAgcHJpdl9lcC0+aW50ZXJ2YWwgPSBkZXNj LT5iSW50ZXJ2YWwgPyBCSVQoZGVzYy0+YkludGVydmFsIC0gMSkgOiAwOw0KPj4gKw0KPj4gKyAg ICAgICBpZiAocHJpdl9lcC0+aW50ZXJ2YWwgPiBJU09fTUFYX0lOVEVSVkFMICYmDQo+PiArICAg ICAgICAgICBwcml2X2VwLT50eXBlID09IFVTQl9FTkRQT0lOVF9YRkVSX0lTT0MpIHsNCj4+ICsg ICAgICAgICAgICAgICBkZXZfZXJyKHByaXZfZGV2LT5kZXYsICJEcml2ZXIgaXMgbGltaXRlZCB0 byAlZCBwZXJpb2RcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBJU09fTUFYX0lOVEVS VkFMKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICByZXQgPSAgLUVJTlZBTDsNCj4+ICsgICAg ICAgICAgICAgICBnb3RvIGV4aXQ7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0 ID0gY2RuczNfYWxsb2NhdGVfdHJiX3Bvb2wocHJpdl9lcCk7DQo+PiArDQo+PiArICAgICAgIGlm IChyZXQpDQo+PiArICAgICAgICAgICAgICAgZ290byBleGl0Ow0KPj4gKw0KPj4gKyAgICAgICBi RW5kcG9pbnRBZGRyZXNzID0gcHJpdl9lcC0+bnVtIHwgcHJpdl9lcC0+ZGlyOw0KPj4gKyAgICAg ICBjZG5zM19zZWxlY3RfZXAocHJpdl9kZXYsIGJFbmRwb2ludEFkZHJlc3MpOw0KPj4gKw0KPj4g KyAgICAgICB0cmFjZV9jZG5zM19nYWRnZXRfZXBfZW5hYmxlKHByaXZfZXApOw0KPj4gKw0KPj4g KyAgICAgICB3cml0ZWwoRVBfQ01EX0VQUlNULCAmcHJpdl9kZXYtPnJlZ3MtPmVwX2NtZCk7DQo+ PiArDQo+PiArICAgICAgIHJldCA9IGNkbnMzX2hhbmRzaGFrZSgmcHJpdl9kZXYtPnJlZ3MtPmVw X2NtZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVQX0NNRF9DU1RBTEwgfCBF UF9DTURfRVBSU1QsIDAsIDEwMCk7DQo+PiArDQo+PiArICAgICAgIC8qIGVuYWJsZSBpbnRlcnJ1 cHQgZm9yIHNlbGVjdGVkIGVuZHBvaW50ICovDQo+PiArICAgICAgIGNkbnMzX3NldF9yZWdpc3Rl cl9iaXQoJnByaXZfZGV2LT5yZWdzLT5lcF9pZW4sDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQklUKGNkbnMzX2VwX2FkZHJfdG9faW5kZXgoYkVuZHBvaW50QWRkcmVzcykpKTsN Cj4+ICsNCj4+ICsgICAgICAgd3JpdGVsKHJlZywgJnByaXZfZGV2LT5yZWdzLT5lcF9zdHNfZW4p Ow0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19zZXRfcmVnaXN0ZXJfYml0KCZwcml2X2Rldi0+cmVn cy0+ZXBfY2ZnLCBFUF9DRkdfRU5BQkxFKTsNCj4+ICsNCj4+ICsgICAgICAgZXAtPmRlc2MgPSBk ZXNjOw0KPj4gKyAgICAgICBwcml2X2VwLT5mbGFncyAmPSB+KEVQX1BFTkRJTkdfUkVRVUVTVCB8 IEVQX1NUQUxMKTsNCj4+ICsgICAgICAgcHJpdl9lcC0+ZmxhZ3MgfD0gRVBfRU5BQkxFRCB8IEVQ X1VQREFURV9FUF9UUkJBRERSOw0KPj4gKyAgICAgICBwcml2X2VwLT53YTFfc2V0ID0gMDsNCj4+ ICsgICAgICAgcHJpdl9lcC0+ZW5xdWV1ZSA9IDA7DQo+PiArICAgICAgIHByaXZfZXAtPmRlcXVl dWUgPSAwOw0KPj4gKyAgICAgICByZWcgPSByZWFkbCgmcHJpdl9kZXYtPnJlZ3MtPmVwX3N0cyk7 DQo+PiArICAgICAgIHByaXZfZXAtPnBjcyA9ICEhRVBfU1RTX0NDUyhyZWcpOw0KPj4gKyAgICAg ICBwcml2X2VwLT5jY3MgPSAhIUVQX1NUU19DQ1MocmVnKTsNCj4+ICsgICAgICAgLyogb25lIFRS QiBpcyByZXNlcnZlZCBmb3IgbGluayBUUkIgdXNlZCBpbiBETVVMVCBtb2RlKi8NCj4+ICsgICAg ICAgcHJpdl9lcC0+ZnJlZV90cmJzID0gcHJpdl9lcC0+bnVtX3RyYnMgLSAxOw0KPj4gK2V4aXQ6 DQo+PiArICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFn cyk7DQo+PiArDQo+PiArICAgICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0K Pj4gKyAqIGNkbnMzX2dhZGdldF9lcF9kaXNhYmxlIERpc2FibGUgZW5kcG9pbnQNCj4+ICsgKiBA ZXA6IGVuZHBvaW50IG9iamVjdA0KPj4gKyAqDQo+PiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Ms IGVycm9yIGNvZGUgZWxzZXdoZXJlDQo+PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19nYWRn ZXRfZXBfZGlzYWJsZShzdHJ1Y3QgdXNiX2VwICplcCkNCj4+ICt7DQo+PiArICAgICAgIHN0cnVj dCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcDsNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX2Rldmlj ZSAqcHJpdl9kZXY7DQo+PiArICAgICAgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxdWVzdDsNCj4+ ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+ICsgICAgICAgaW50IHJldCA9IDA7DQo+ PiArICAgICAgIHUzMiBlcF9jZmc7DQo+PiArDQo+PiArICAgICAgIGlmICghZXApIHsNCj4+ICsg ICAgICAgICAgICAgICBwcl9lcnIoInVzYnNzOiBpbnZhbGlkIHBhcmFtZXRlcnNcbiIpOw0KPj4g KyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiAr ICAgICAgIHByaXZfZXAgPSBlcF90b19jZG5zM19lcChlcCk7DQo+PiArICAgICAgIHByaXZfZGV2 ID0gcHJpdl9lcC0+Y2RuczNfZGV2Ow0KPj4gKw0KPj4gKyAgICAgICBpZiAoZGV2X1dBUk5fT05D RShwcml2X2Rldi0+ZGV2LCAhKHByaXZfZXAtPmZsYWdzICYgRVBfRU5BQkxFRCksDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBhbHJlYWR5IGRpc2FibGVkXG4iLCBwcml2X2Vw LT5uYW1lKSkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4+ICsNCj4+ICsgICAgICAg c3Bpbl9sb2NrX2lycXNhdmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7DQo+PiArDQo+PiArICAg ICAgIHRyYWNlX2NkbnMzX2dhZGdldF9lcF9kaXNhYmxlKHByaXZfZXApOw0KPj4gKw0KPj4gKyAg ICAgICBjZG5zM19zZWxlY3RfZXAocHJpdl9kZXYsIGVwLT5kZXNjLT5iRW5kcG9pbnRBZGRyZXNz KTsNCj4+ICsgICAgICAgcmV0ID0gY2RuczNfZGF0YV9mbHVzaChwcml2X2VwKTsNCj4+ICsNCj4+ ICsgICAgICAgZXBfY2ZnID0gcmVhZGwoJnByaXZfZGV2LT5yZWdzLT5lcF9jZmcpOw0KPj4gKyAg ICAgICBlcF9jZmcgJj0gfkVQX0NGR19FTkFCTEU7DQo+PiArICAgICAgIHdyaXRlbChlcF9jZmcs ICZwcml2X2Rldi0+cmVncy0+ZXBfY2ZnKTsNCj4+ICsNCj4+ICsgICAgICAgd2hpbGUgKCFsaXN0 X2VtcHR5KCZwcml2X2VwLT5wZW5kaW5nX3JlcV9saXN0KSkgew0KPj4gKyAgICAgICAgICAgICAg IHJlcXVlc3QgPSBjZG5zM19uZXh0X3JlcXVlc3QoJnByaXZfZXAtPnBlbmRpbmdfcmVxX2xpc3Qp Ow0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX2dhZGdldF9naXZlYmFjayhwcml2X2Vw LCB0b19jZG5zM19yZXF1ZXN0KHJlcXVlc3QpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtRVNIVVRET1dOKTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAg ICB3aGlsZSAoIWxpc3RfZW1wdHkoJnByaXZfZXAtPmRlZmVycmVkX3JlcV9saXN0KSkgew0KPj4g KyAgICAgICAgICAgICAgIHJlcXVlc3QgPSBjZG5zM19uZXh0X3JlcXVlc3QoJnByaXZfZXAtPmRl ZmVycmVkX3JlcV9saXN0KTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBjZG5zM19nYWRnZXRf Z2l2ZWJhY2socHJpdl9lcCwgdG9fY2RuczNfcmVxdWVzdChyZXF1ZXN0KSwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLUVTSFVURE9XTik7DQo+PiArICAgICAgIH0N Cj4+ICsNCj4+ICsgICAgICAgcHJpdl9lcC0+ZGVzY21pc19yZXEgPSBOVUxMOw0KPj4gKw0KPj4g KyAgICAgICBlcC0+ZGVzYyA9IE5VTEw7DQo+PiArICAgICAgIHByaXZfZXAtPmZsYWdzICY9IH5F UF9FTkFCTEVEOw0KPj4gKw0KPj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2 X2Rldi0+bG9jaywgZmxhZ3MpOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPj4gK30N Cj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19nYWRnZXRfZXBfcXVldWUgVHJhbnNmZXIgZGF0 YSBvbiBlbmRwb2ludA0KPj4gKyAqIEBlcDogZW5kcG9pbnQgb2JqZWN0DQo+PiArICogQHJlcXVl c3Q6IHJlcXVlc3Qgb2JqZWN0DQo+PiArICogQGdmcF9mbGFnczogZ2ZwIGZsYWdzDQo+PiArICoN Cj4+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJyb3IgY29kZSBlbHNld2hlcmUNCj4+ICsg Ki8NCj4+ICtzdGF0aWMgaW50IF9fY2RuczNfZ2FkZ2V0X2VwX3F1ZXVlKHN0cnVjdCB1c2JfZXAg KmVwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX3Jl cXVlc3QgKnJlcXVlc3QsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdm cF90IGdmcF9mbGFncykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19lbmRwb2ludCAq cHJpdl9lcCA9IGVwX3RvX2NkbnMzX2VwKGVwKTsNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX2Rl dmljZSAqcHJpdl9kZXYgPSBwcml2X2VwLT5jZG5zM19kZXY7DQo+PiArICAgICAgIHN0cnVjdCBj ZG5zM19yZXF1ZXN0ICpwcml2X3JlcTsNCj4+ICsgICAgICAgaW50IGRlZmVycmVkID0gMDsNCj4+ ICsgICAgICAgaW50IHJldCA9IDA7DQo+PiArDQo+PiArICAgICAgIHJlcXVlc3QtPmFjdHVhbCA9 IDA7DQo+PiArICAgICAgIHJlcXVlc3QtPnN0YXR1cyA9IC1FSU5QUk9HUkVTUzsNCj4+ICsgICAg ICAgcHJpdl9yZXEgPSB0b19jZG5zM19yZXF1ZXN0KHJlcXVlc3QpOw0KPj4gKyAgICAgICB0cmFj ZV9jZG5zM19lcF9xdWV1ZShwcml2X3JlcSk7DQo+PiArDQo+PiArICAgICAgIHJldCA9IHVzYl9n YWRnZXRfbWFwX3JlcXVlc3RfYnlfZGV2KHByaXZfZGV2LT5zeXNkZXYsIHJlcXVlc3QsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYl9lbmRwb2ludF9k aXJfaW4oZXAtPmRlc2MpKTsNCj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAg ICByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gKyAgICAgICAvKg0KPj4gKyAgICAgICAgKiBJZiBoYXJk d2FyZSBlbmRwb2ludCBjb25maWd1cmF0aW9uIGhhcyBub3QgYmVlbiBzZXQgeWV0IHRoZW4NCj4+ ICsgICAgICAgICoganVzdCBxdWV1ZSByZXF1ZXN0IGluIGRlZmVycmVkIGxpc3QuIFRyYW5zZmVy IHdpbGwgYmUgc3RhcnRlZCBpbg0KPj4gKyAgICAgICAgKiBjZG5zM19zZXRfaHdfY29uZmlndXJh dGlvbi4NCj4+ICsgICAgICAgICovDQo+PiArICAgICAgIGlmICghcHJpdl9kZXYtPmh3X2NvbmZp Z3VyZWRfZmxhZykNCj4+ICsgICAgICAgICAgICAgICBkZWZlcnJlZCA9IDE7DQo+PiArICAgICAg IGVsc2UNCj4+ICsgICAgICAgICAgICAgICByZXQgPSBjZG5zM19lcF9ydW5fdHJhbnNmZXIocHJp dl9lcCwgcmVxdWVzdCk7DQo+PiArDQo+PiArICAgICAgIGlmIChyZXQgfHwgZGVmZXJyZWQpDQo+ PiArICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+bGlzdCwgJnByaXZfZXAt PmRlZmVycmVkX3JlcV9saXN0KTsNCj4+ICsgICAgICAgZWxzZQ0KPj4gKyAgICAgICAgICAgICAg IGxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPmxpc3QsICZwcml2X2VwLT5wZW5kaW5nX3JlcV9saXN0 KTsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj IGludCBjZG5zM19nYWRnZXRfZXBfcXVldWUoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2Jf cmVxdWVzdCAqcmVxdWVzdCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdm cF90IGdmcF9mbGFncykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCB1c2JfcmVxdWVzdCAqemxw X3JlcXVlc3Q7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcDsNCj4+ ICsgICAgICAgc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXY7DQo+PiArICAgICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7DQo+PiArICAgICAgIGludCByZXQ7DQo+PiArDQo+PiArICAgICAgIGlm ICghcmVxdWVzdCB8fCAhZXApDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ PiArDQo+PiArICAgICAgIHByaXZfZXAgPSBlcF90b19jZG5zM19lcChlcCk7DQo+PiArICAgICAg IHByaXZfZGV2ID0gcHJpdl9lcC0+Y2RuczNfZGV2Ow0KPj4gKw0KPj4gKyAgICAgICBzcGluX2xv Y2tfaXJxc2F2ZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsNCj4+ICsgICAgICAgcmV0 ID0gX19jZG5zM19nYWRnZXRfZXBfcXVldWUoZXAsIHJlcXVlc3QsIGdmcF9mbGFncyk7DQo+PiAr DQo+PiArICAgICAgIGlmIChyZXQgPT0gMCAmJiByZXF1ZXN0LT56ZXJvICYmIHJlcXVlc3QtPmxl bmd0aCAmJg0KPj4gKyAgICAgICAgICAgKHJlcXVlc3QtPmxlbmd0aCAlIGVwLT5tYXhwYWNrZXQg PT0gMCkpIHsNCj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgY2RuczNfcmVxdWVzdCAqcHJpdl9y ZXE7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgemxwX3JlcXVlc3QgPSBjZG5zM19nYWRnZXRf ZXBfYWxsb2NfcmVxdWVzdChlcCwgR0ZQX0FUT01JQyk7DQo+PiArICAgICAgICAgICAgICAgemxw X3JlcXVlc3QtPmJ1ZiA9IHByaXZfZGV2LT56bHBfYnVmOw0KPj4gKyAgICAgICAgICAgICAgIHps cF9yZXF1ZXN0LT5sZW5ndGggPSAwOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIHByaXZfcmVx ID0gdG9fY2RuczNfcmVxdWVzdCh6bHBfcmVxdWVzdCk7DQo+PiArICAgICAgICAgICAgICAgcHJp dl9yZXEtPmZsYWdzIHw9IFJFUVVFU1RfWkxQOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGRl dl9kYmcocHJpdl9kZXYtPmRldiwgIlF1ZXVpbmcgWkxQIGZvciBlbmRwb2ludDogJXNcbiIsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICBwcml2X2VwLT5uYW1lKTsNCj4+ICsgICAgICAgICAg ICAgICByZXQgPSBfX2NkbnMzX2dhZGdldF9lcF9xdWV1ZShlcCwgemxwX3JlcXVlc3QsIGdmcF9m bGFncyk7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZ2FkZ2V0X2VwX2RlcXVldWUgUmVtb3Zl IHJlcXVlc3QgZnJvbSB0cmFuc2ZlciBxdWV1ZQ0KPj4gKyAqIEBlcDogZW5kcG9pbnQgb2JqZWN0 IGFzc29jaWF0ZWQgd2l0aCByZXF1ZXN0DQo+PiArICogQHJlcXVlc3Q6IHJlcXVlc3Qgb2JqZWN0 DQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJyb3IgY29kZSBlbHNld2hl cmUNCj4+ICsgKi8NCj4+ICtpbnQgY2RuczNfZ2FkZ2V0X2VwX2RlcXVldWUoc3RydWN0IHVzYl9l cCAqZXAsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVzYl9yZXF1ZXN0 ICpyZXF1ZXN0KQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2 X2VwID0gZXBfdG9fY2RuczNfZXAoZXApOw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNl ICpwcml2X2RldiA9IHByaXZfZXAtPmNkbnMzX2RldjsNCj4+ICsgICAgICAgc3RydWN0IHVzYl9y ZXF1ZXN0ICpyZXEsICpyZXFfdGVtcDsNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX3JlcXVlc3Qg KnByaXZfcmVxOw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfdHJiICpsaW5rX3RyYjsNCj4+ICsg ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+ICsgICAgICAgaW50IHJldCA9IDA7DQo+PiAr DQo+PiArICAgICAgIGlmICghZXAgfHwgIXJlcXVlc3QgfHwgIWVwLT5kZXNjKQ0KPj4gKyAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKyAgICAgICBzcGluX2xvY2tfaXJx c2F2ZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsNCj4+ICsgICAgICAgcHJpdl9yZXEg PSB0b19jZG5zM19yZXF1ZXN0KHJlcXVlc3QpOw0KPj4gKw0KPj4gKyAgICAgICB0cmFjZV9jZG5z M19lcF9kZXF1ZXVlKHByaXZfcmVxKTsNCj4+ICsNCj4+ICsgICAgICAgY2RuczNfc2VsZWN0X2Vw KHByaXZfZGV2LCBlcC0+ZGVzYy0+YkVuZHBvaW50QWRkcmVzcyk7DQo+PiArDQo+PiArICAgICAg IGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXEsIHJlcV90ZW1wLCAmcHJpdl9lcC0+cGVuZGlu Z19yZXFfbGlzdCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QpIHsN Cj4+ICsgICAgICAgICAgICAgICBpZiAocmVxdWVzdCA9PSByZXEpDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIGZvdW5kOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiArICAgICAgIGxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXEsIHJlcV90ZW1wLCAmcHJpdl9lcC0+ZGVmZXJyZWRf cmVxX2xpc3QsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KSB7DQo+ PiArICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QgPT0gcmVxKQ0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZ290byBmb3VuZDsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBnb3Rv IG5vdF9mb3VuZDsNCj4+ICsNCj4+ICtmb3VuZDoNCj4+ICsNCj4+ICsgICAgICAgaWYgKHByaXZf ZXAtPndhMV90cmIgPT0gcHJpdl9yZXEtPnRyYikNCj4+ICsgICAgICAgICAgICAgICBjZG5zM193 YTFfcmVzdG9yZV9jeWNsZV9iaXQocHJpdl9lcCk7DQo+PiArDQo+PiArICAgICAgIGxpbmtfdHJi ID0gcHJpdl9yZXEtPnRyYjsNCj4+ICsgICAgICAgY2RuczNfbW92ZV9kZXFfdG9fbmV4dF90cmIo cHJpdl9yZXEpOw0KPj4gKyAgICAgICBjZG5zM19nYWRnZXRfZ2l2ZWJhY2socHJpdl9lcCwgcHJp dl9yZXEsIC1FQ09OTlJFU0VUKTsNCj4+ICsNCj4+ICsgICAgICAgLyogVXBkYXRlIHJpbmcgKi8N Cj4+ICsgICAgICAgcmVxdWVzdCA9IGNkbnMzX25leHRfcmVxdWVzdCgmcHJpdl9lcC0+ZGVmZXJy ZWRfcmVxX2xpc3QpOw0KPj4gKyAgICAgICBpZiAocmVxdWVzdCkgew0KPj4gKyAgICAgICAgICAg ICAgIHByaXZfcmVxID0gdG9fY2RuczNfcmVxdWVzdChyZXF1ZXN0KTsNCj4+ICsNCj4+ICsgICAg ICAgICAgICAgICBsaW5rX3RyYi0+YnVmZmVyID0gVFJCX0JVRkZFUihwcml2X2VwLT50cmJfcG9v bF9kbWEgKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwcml2X3JlcS0+c3RhcnRfdHJiICogVFJCX1NJWkUpKTsNCj4+ICsgICAgICAgICAgICAgICBs aW5rX3RyYi0+Y29udHJvbCA9IChsaW5rX3RyYi0+Y29udHJvbCAmIFRSQl9DWUNMRSkgfA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJCX1RZUEUoVFJCX0xJTkspIHwg VFJCX0NIQUlOIHwgVFJCX1RPR0dMRTsNCj4+ICsgICAgICAgfSBlbHNlIHsNCj4+ICsgICAgICAg ICAgICAgICBwcml2X2VwLT5mbGFncyB8PSBFUF9VUERBVEVfRVBfVFJCQUREUjsNCj4+ICsgICAg ICAgfQ0KPj4gKw0KPj4gK25vdF9mb3VuZDoNCj4+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZ2FkZ2V0X2VwX3NldF9oYWx0IFNldHMv Y2xlYXJzIHN0YWxsIG9uIHNlbGVjdGVkIGVuZHBvaW50DQo+PiArICogQGVwOiBlbmRwb2ludCBv YmplY3QgdG8gc2V0L2NsZWFyIHN0YWxsIG9uDQo+PiArICogQHZhbHVlOiAxIGZvciBzZXQgc3Rh bGwsIDAgZm9yIGNsZWFyIHN0YWxsDQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2Vz cywgZXJyb3IgY29kZSBlbHNld2hlcmUNCj4+ICsgKi8NCj4+ICtpbnQgY2RuczNfZ2FkZ2V0X2Vw X3NldF9oYWx0KHN0cnVjdCB1c2JfZXAgKmVwLCBpbnQgdmFsdWUpDQo+PiArew0KPj4gKyAgICAg ICBzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXAgPSBlcF90b19jZG5zM19lcChlcCk7DQo+ PiArICAgICAgIHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2ID0gcHJpdl9lcC0+Y2RuczNf ZGV2Ow0KPj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4gKyAgICAgICBpbnQgcmV0 ID0gMDsNCj4+ICsNCj4+ICsgICAgICAgaWYgKCEocHJpdl9lcC0+ZmxhZ3MgJiBFUF9FTkFCTEVE KSkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOw0KPj4gKw0KPj4gKyAgICAgICBz cGluX2xvY2tfaXJxc2F2ZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsNCj4+ICsgICAg ICAgY2RuczNfc2VsZWN0X2VwKHByaXZfZGV2LCBlcC0+ZGVzYy0+YkVuZHBvaW50QWRkcmVzcyk7 DQo+PiArICAgICAgIGlmICh2YWx1ZSkgew0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX2VwX3N0 YWxsX2ZsdXNoKHByaXZfZXApOw0KPj4gKyAgICAgICB9IGVsc2Ugew0KPj4gKyAgICAgICAgICAg ICAgIHByaXZfZXAtPmZsYWdzICY9IH5FUF9XRURHRTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAg ICBjZG5zM19kYmcocHJpdl9lcC0+Y2RuczNfZGV2LCAiQ2xlYXIgc3RhbGxlZCBlbmRwb2ludCAl c1xuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+bmFtZSk7DQo+PiAr DQo+PiArICAgICAgICAgICAgICAgd3JpdGVsKEVQX0NNRF9DU1RBTEwgfCBFUF9DTURfRVBSU1Qs ICZwcml2X2Rldi0+cmVncy0+ZXBfY21kKTsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICAvKiB3 YWl0IGZvciBFUFJTVCBjbGVhcmVkICovDQo+PiArICAgICAgICAgICAgICAgcmV0ID0gY2RuczNf aGFuZHNoYWtlKCZwcml2X2Rldi0+cmVncy0+ZXBfY21kLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFUF9DTURfRVBSU1QsIDAsIDEwMCk7DQo+PiArICAgICAgICAg ICAgICAgaWYgKHVubGlrZWx5KHJldCkpIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRl dl9lcnIocHJpdl9kZXYtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkNsZWFyaW5nIGhhbHQgY29uZGl0aW9uIGZhaWxlZCBmb3IgJXNcbiIsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPm5hbWUpOw0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZ290byBmaW5pc2g7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgfSBlbHNlIHsN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPmZsYWdzICY9IH5FUF9TVEFMTDsN Cj4+ICsgICAgICAgICAgICAgICB9DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcHJp dl9lcC0+ZmxhZ3MgJj0gfkVQX1BFTkRJTkdfUkVRVUVTVDsNCj4+ICtmaW5pc2g6DQo+PiArICAg ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7DQo+PiAr DQo+PiArICAgICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK2V4dGVybiBjb25zdCBz dHJ1Y3QgdXNiX2VwX29wcyBjZG5zM19nYWRnZXRfZXAwX29wczsNCj4+ICsNCj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHVzYl9lcF9vcHMgY2RuczNfZ2FkZ2V0X2VwX29wcyA9IHsNCj4+ICsgICAg ICAgLmVuYWJsZSA9IGNkbnMzX2dhZGdldF9lcF9lbmFibGUsDQo+PiArICAgICAgIC5kaXNhYmxl ID0gY2RuczNfZ2FkZ2V0X2VwX2Rpc2FibGUsDQo+PiArICAgICAgIC5hbGxvY19yZXF1ZXN0ID0g Y2RuczNfZ2FkZ2V0X2VwX2FsbG9jX3JlcXVlc3QsDQo+PiArICAgICAgIC5mcmVlX3JlcXVlc3Qg PSBjZG5zM19nYWRnZXRfZXBfZnJlZV9yZXF1ZXN0LA0KPj4gKyAgICAgICAucXVldWUgPSBjZG5z M19nYWRnZXRfZXBfcXVldWUsDQo+PiArICAgICAgIC5kZXF1ZXVlID0gY2RuczNfZ2FkZ2V0X2Vw X2RlcXVldWUsDQo+PiArICAgICAgIC5zZXRfaGFsdCA9IGNkbnMzX2dhZGdldF9lcF9zZXRfaGFs dCwNCj4+ICsgICAgICAgLnNldF93ZWRnZSA9IGNkbnMzX2dhZGdldF9lcF9zZXRfd2VkZ2UsDQo+ PiArfTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5zM19nYWRnZXRfZ2V0X2ZyYW1lIFJldHVy bnMgbnVtYmVyIG9mIGFjdHVhbCBJVFAgZnJhbWUNCj4+ICsgKiBAZ2FkZ2V0OiBnYWRnZXQgb2Jq ZWN0DQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIG51bWJlciBvZiBhY3R1YWwgSVRQIGZyYW1lDQo+ PiArICovDQo+PiArc3RhdGljIGludCBjZG5zM19nYWRnZXRfZ2V0X2ZyYW1lKHN0cnVjdCB1c2Jf Z2FkZ2V0ICpnYWRnZXQpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNlICpw cml2X2RldiA9IGdhZGdldF90b19jZG5zM19kZXZpY2UoZ2FkZ2V0KTsNCj4+ICsNCj4+ICsgICAg ICAgcmV0dXJuIHJlYWRsKCZwcml2X2Rldi0+cmVncy0+dXNiX2lwdG4pOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGNkbnMzX2dhZGdldF93YWtldXAoc3RydWN0IHVzYl9nYWRnZXQgKmdh ZGdldCkNCj4+ICt7DQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0 aWMgaW50IGNkbnMzX2dhZGdldF9zZXRfc2VsZnBvd2VyZWQoc3RydWN0IHVzYl9nYWRnZXQgKmdh ZGdldCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNf c2VsZnBvd2VyZWQpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2 X2RldiA9IGdhZGdldF90b19jZG5zM19kZXZpY2UoZ2FkZ2V0KTsNCj4+ICsgICAgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsNCj4+ICsNCj4+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnByaXZf ZGV2LT5sb2NrLCBmbGFncyk7DQo+PiArICAgICAgIHByaXZfZGV2LT5pc19zZWxmcG93ZXJlZCA9 ICEhaXNfc2VsZnBvd2VyZWQ7DQo+PiArICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBy aXZfZGV2LT5sb2NrLCBmbGFncyk7DQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGNkbnMzX2dhZGdldF9wdWxsdXAoc3RydWN0IHVzYl9nYWRnZXQgKmdh ZGdldCwgaW50IGlzX29uKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX2RldmljZSAq cHJpdl9kZXYgPSBnYWRnZXRfdG9fY2RuczNfZGV2aWNlKGdhZGdldCk7DQo+PiArDQo+PiArICAg ICAgIGlmIChpc19vbikNCj4+ICsgICAgICAgICAgICAgICB3cml0ZWwoVVNCX0NPTkZfREVWRU4s ICZwcml2X2Rldi0+cmVncy0+dXNiX2NvbmYpOw0KPj4gKyAgICAgICBlbHNlDQo+PiArICAgICAg ICAgICAgICAgd3JpdGVsKFVTQl9DT05GX0RFVkRTLCAmcHJpdl9kZXYtPnJlZ3MtPnVzYl9jb25m KTsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2 b2lkIGNkbnMzX2dhZGdldF9jb25maWcoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYpDQo+ PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfdXNiX3JlZ3MgX19pb21lbSAqcmVncyA9IHBy aXZfZGV2LT5yZWdzOw0KPj4gKw0KPj4gKyAgICAgICBjZG5zM19lcDBfY29uZmlnKHByaXZfZGV2 KTsNCj4+ICsNCj4+ICsgICAgICAgLyogZW5hYmxlIGludGVycnVwdHMgZm9yIGVuZHBvaW50IDAg KGluIGFuZCBvdXQpICovDQo+PiArICAgICAgIHdyaXRlbChFUF9JRU5fRVBfT1VUMCB8IEVQX0lF Tl9FUF9JTjAsICZyZWdzLT5lcF9pZW4pOw0KPj4gKw0KPj4gKyAgICAgICAvKg0KPj4gKyAgICAg ICAgKkRyaXZlciBuZWVkIG1vZGlmeSBMRlBTIG1pbmltYWwgVTEgRXhpdCB0aW1lIGZvciAweDAw MDI0NTA1IHJldmlzaW9uDQo+PiArICAgICAgICAqIG9mIGNvbnRyb2xsZXINCj4+ICsgICAgICAg ICovDQo+PiArICAgICAgIGlmIChwcml2X2Rldi0+ZGV2X3ZlciA9PSAweDAwMDI0NTA1KSB7DQo+ PiArICAgICAgICAgICAgICAgdTMyIHJlZyA9IHJlYWRsKCZyZWdzLT5kYmdfbGluazEpOw0KPj4g Kw0KPj4gKyAgICAgICAgICAgICAgIHJlZyAmPSB+REJHX0xJTksxX0xGUFNfTUlOX0dFTl9VMV9F WElUX01BU0s7DQo+PiArICAgICAgICAgICAgICAgcmVnIHw9IERCR19MSU5LMV9MRlBTX01JTl9H RU5fVTFfRVhJVCgweDU1KSB8DQo+PiArICAgICAgICAgICAgICAgICAgICAgIERCR19MSU5LMV9M RlBTX01JTl9HRU5fVTFfRVhJVF9TRVQ7DQo+PiArICAgICAgICAgICAgICAgd3JpdGVsKHJlZywg JnJlZ3MtPmRiZ19saW5rMSk7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgLyogZW5h YmxlIGdlbmVyaWMgaW50ZXJydXB0Ki8NCj4+ICsgICAgICAgd3JpdGVsKFVTQl9JRU5fSU5JVCwg JnJlZ3MtPnVzYl9pZW4pOw0KPj4gKyAgICAgICB3cml0ZWwoVVNCX0NPTkZfQ0xLMk9GRkRTIHwg VVNCX0NPTkZfTDFEUywgJnJlZ3MtPnVzYl9jb25mKTsNCj4+ICsgICAgICAgd3JpdGVsKFVTQl9D T05GX0RNVUxULCAmcmVncy0+dXNiX2NvbmYpOw0KPj4gKyAgICAgICBjZG5zM19nYWRnZXRfcHVs bHVwKCZwcml2X2Rldi0+Z2FkZ2V0LCAxKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICog Y2RuczNfZ2FkZ2V0X3VkY19zdGFydCBHYWRnZXQgc3RhcnQNCj4+ICsgKiBAZ2FkZ2V0OiBnYWRn ZXQgb2JqZWN0DQo+PiArICogQGRyaXZlcjogZHJpdmVyIHdoaWNoIG9wZXJhdGVzIG9uIHRoaXMg Z2FkZ2V0DQo+PiArICoNCj4+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgZXJyb3IgY29kZSBl bHNld2hlcmUNCj4+ICsgKi8NCj4+ICtzdGF0aWMgaW50IGNkbnMzX2dhZGdldF91ZGNfc3RhcnQo c3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcikNCj4+ICt7DQo+PiArICAg ICAgIHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2ID0gZ2FkZ2V0X3RvX2NkbnMzX2Rldmlj ZShnYWRnZXQpOw0KPj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4gKw0KPj4gKyAg ICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsgICAg ICAgcHJpdl9kZXYtPmdhZGdldF9kcml2ZXIgPSBkcml2ZXI7DQo+PiArICAgICAgIGNkbnMzX2dh ZGdldF9jb25maWcocHJpdl9kZXYpOw0KPj4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZwcml2X2Rldi0+bG9jaywgZmxhZ3MpOw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+ PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZ2FkZ2V0X3VkY19zdG9wIFN0b3BzIGdhZGdldA0K Pj4gKyAqIEBnYWRnZXQ6IGdhZGdldCBvYmplY3QNCj4+ICsgKg0KPj4gKyAqIFJldHVybnMgMA0K Pj4gKyAqLw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfZ2FkZ2V0X3VkY19zdG9wKHN0cnVjdCB1c2Jf Z2FkZ2V0ICpnYWRnZXQpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNlICpw cml2X2RldiA9IGdhZGdldF90b19jZG5zM19kZXZpY2UoZ2FkZ2V0KTsNCj4+ICsgICAgICAgc3Ry dWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwOw0KPj4gKyAgICAgICB1MzIgYkVuZHBvaW50QWRk cmVzczsNCj4+ICsgICAgICAgc3RydWN0IHVzYl9lcCAqZXA7DQo+PiArICAgICAgIGludCByZXQg PSAwOw0KPj4gKw0KPj4gKyAgICAgICBwcml2X2Rldi0+Z2FkZ2V0X2RyaXZlciA9IE5VTEw7DQo+ PiArDQo+PiArICAgICAgIHByaXZfZGV2LT5vbmNoaXBfbWVtX2FsbG9jYXRlZF9zaXplID0gMDsN Cj4+ICsgICAgICAgcHJpdl9kZXYtPmdhZGdldC5zcGVlZCA9IFVTQl9TUEVFRF9VTktOT1dOOw0K Pj4gKw0KPj4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGVwLCAmcHJpdl9kZXYtPmdhZGdl dC5lcF9saXN0LCBlcF9saXN0KSB7DQo+PiArICAgICAgICAgICAgICAgcHJpdl9lcCA9IGVwX3Rv X2NkbnMzX2VwKGVwKTsNCj4+ICsgICAgICAgICAgICAgICBiRW5kcG9pbnRBZGRyZXNzID0gcHJp dl9lcC0+bnVtIHwgcHJpdl9lcC0+ZGlyOw0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX3NlbGVj dF9lcChwcml2X2RldiwgYkVuZHBvaW50QWRkcmVzcyk7DQo+PiArICAgICAgICAgICAgICAgd3Jp dGVsKEVQX0NNRF9FUFJTVCwgJnByaXZfZGV2LT5yZWdzLT5lcF9jbWQpOw0KPj4gKyAgICAgICAg ICAgICAgIHJldCA9IGNkbnMzX2hhbmRzaGFrZSgmcHJpdl9kZXYtPnJlZ3MtPmVwX2NtZCwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVBfQ01EX0VQUlNULCAwLCAx MDApOw0KPj4gKyAgICAgICAgICAgICAgIGNkbnMzX2ZyZWVfdHJiX3Bvb2wocHJpdl9lcCk7DQo+ PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgLyogZGlzYWJsZSBpbnRlcnJ1cHQgZm9yIGRl dmljZSAqLw0KPj4gKyAgICAgICB3cml0ZWwoMCwgJnByaXZfZGV2LT5yZWdzLT51c2JfaWVuKTsN Cj4+ICsgICAgICAgd3JpdGVsKFVTQl9DT05GX0RFVkRTLCAmcHJpdl9kZXYtPnJlZ3MtPnVzYl9j b25mKTsNCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3Rh dGljIGNvbnN0IHN0cnVjdCB1c2JfZ2FkZ2V0X29wcyBjZG5zM19nYWRnZXRfb3BzID0gew0KPj4g KyAgICAgICAuZ2V0X2ZyYW1lID0gY2RuczNfZ2FkZ2V0X2dldF9mcmFtZSwNCj4+ICsgICAgICAg Lndha2V1cCA9IGNkbnMzX2dhZGdldF93YWtldXAsDQo+PiArICAgICAgIC5zZXRfc2VsZnBvd2Vy ZWQgPSBjZG5zM19nYWRnZXRfc2V0X3NlbGZwb3dlcmVkLA0KPj4gKyAgICAgICAucHVsbHVwID0g Y2RuczNfZ2FkZ2V0X3B1bGx1cCwNCj4+ICsgICAgICAgLnVkY19zdGFydCA9IGNkbnMzX2dhZGdl dF91ZGNfc3RhcnQsDQo+PiArICAgICAgIC51ZGNfc3RvcCA9IGNkbnMzX2dhZGdldF91ZGNfc3Rv cCwNCj4+ICsgICAgICAgLm1hdGNoX2VwID0gY2RuczNfZ2FkZ2V0X21hdGNoX2VwLA0KPj4gK307 DQo+PiArDQo+PiArc3RhdGljIHZvaWQgY2RuczNfZnJlZV9hbGxfZXBzKHN0cnVjdCBjZG5zM19k ZXZpY2UgKnByaXZfZGV2KQ0KPj4gK3sNCj4+ICsgICAgICAgaW50IGk7DQo+PiArDQo+PiArICAg ICAgIC8qZXAwIE9VVCBwb2ludCB0byBlcDAgSU4qLw0KPj4gKyAgICAgICBwcml2X2Rldi0+ZXBz WzE2XSA9IE5VTEw7DQo+PiArDQo+PiArICAgICAgIGNkbnMzX2ZyZWVfdHJiX3Bvb2wocHJpdl9k ZXYtPmVwc1swXSk7DQo+PiArDQo+PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBDRE5TM19FTkRQ T0lOVFNfTUFYX0NPVU5UOyBpKyspDQo+PiArICAgICAgICAgICAgICAgaWYgKHByaXZfZGV2LT5l cHNbaV0pDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZtX2tmcmVlKHByaXZfZGV2LT5k ZXYsIHByaXZfZGV2LT5lcHNbaV0pOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBjZG5z M19pbml0X2VwcyBJbml0aWFsaXplcyBzb2Z0d2FyZSBlbmRwb2ludHMgb2YgZ2FkZ2V0DQo+PiAr ICogQGNkbnMzOiBleHRlbmRlZCBnYWRnZXQgb2JqZWN0DQo+PiArICoNCj4+ICsgKiBSZXR1cm5z IDAgb24gc3VjY2VzcywgZXJyb3IgY29kZSBlbHNld2hlcmUNCj4+ICsgKi8NCj4+ICtzdGF0aWMg aW50IGNkbnMzX2luaXRfZXBzKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2KQ0KPj4gK3sN Cj4+ICsgICAgICAgdTMyIGVwX2VuYWJsZWRfcmVnLCBpc29fZXBfcmVnOw0KPj4gKyAgICAgICBz dHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXA7DQo+PiArICAgICAgIGludCBlcF9kaXIsIGVw X251bWJlcjsNCj4+ICsgICAgICAgdTMyIGVwX21hc2s7DQo+PiArICAgICAgIGludCByZXQgPSAw Ow0KPj4gKyAgICAgICBpbnQgaTsNCj4+ICsNCj4+ICsgICAgICAgLyogUmVhZCBpdCBmcm9tIFVT Ql9DQVAzIHRvIFVTQl9DQVA1ICovDQo+PiArICAgICAgIGVwX2VuYWJsZWRfcmVnID0gcmVhZGwo JnByaXZfZGV2LT5yZWdzLT51c2JfY2FwMyk7DQo+PiArICAgICAgIGlzb19lcF9yZWcgPSByZWFk bCgmcHJpdl9kZXYtPnJlZ3MtPnVzYl9jYXA0KTsNCj4+ICsNCj4+ICsgICAgICAgZGV2X2RiZyhw cml2X2Rldi0+ZGV2LCAiSW5pdGlhbGl6aW5nIG5vbi16ZXJvIGVuZHBvaW50c1xuIik7DQo+PiAr DQo+PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBDRE5TM19FTkRQT0lOVFNfTUFYX0NPVU5UOyBp KyspIHsNCj4+ICsgICAgICAgICAgICAgICBlcF9kaXIgPSBpID4+IDQ7ICAgICAgICAvKiBpIGRp diAxNiAqLw0KPj4gKyAgICAgICAgICAgICAgIGVwX251bWJlciA9IGkgJiAweEY7ICAgIC8qIGkg JSAxNiAqLw0KPj4gKyAgICAgICAgICAgICAgIGVwX21hc2sgPSBCSVQoaSk7DQo+PiArDQo+PiAr ICAgICAgICAgICAgICAgaWYgKCEoZXBfZW5hYmxlZF9yZWcgJiBlcF9tYXNrKSkNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIGlm IChlcF9kaXIgJiYgIWVwX251bWJlcikgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJp dl9kZXYtPmVwc1tpXSA9IHByaXZfZGV2LT5lcHNbMF07DQo+PiArICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsNCj4+ICsgICAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAg ICAgICAgcHJpdl9lcCA9IGRldm1fa3phbGxvYyhwcml2X2Rldi0+ZGV2LCBzaXplb2YoKnByaXZf ZXApLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0ZQX0tFUk5F TCk7DQo+PiArICAgICAgICAgICAgICAgaWYgKCFwcml2X2VwKSB7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICByZXQgPSAtRU5PTUVNOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290 byBlcnI7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgICAgICAgIC8q IHNldCBwYXJlbnQgb2YgZW5kcG9pbnQgb2JqZWN0ICovDQo+PiArICAgICAgICAgICAgICAgcHJp dl9lcC0+Y2RuczNfZGV2ID0gcHJpdl9kZXY7DQo+PiArICAgICAgICAgICAgICAgcHJpdl9kZXYt PmVwc1tpXSA9IHByaXZfZXA7DQo+PiArICAgICAgICAgICAgICAgcHJpdl9lcC0+bnVtID0gZXBf bnVtYmVyOw0KPj4gKyAgICAgICAgICAgICAgIHByaXZfZXAtPmRpciA9IGVwX2RpciA/IFVTQl9E SVJfSU4gOiBVU0JfRElSX09VVDsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgICBpZiAoIWVwX251 bWJlcikgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gY2RuczNfaW5pdF9lcDAo cHJpdl9kZXYsIHByaXZfZXApOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkg ew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKHByaXZfZGV2LT5k ZXYsICJGYWlsZWQgdG8gaW5pdCBlcDBcbiIpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIGVycjsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4+ICsgICAg ICAgICAgICAgICB9IGVsc2Ugew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc25wcmludGYo cHJpdl9lcC0+bmFtZSwgc2l6ZW9mKHByaXZfZXAtPm5hbWUpLCAiZXAlZCVzIiwNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwX251bWJlciwgISFlcF9kaXIgPyAiaW4iIDog Im91dCIpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+ZW5kcG9pbnQubmFt ZSA9IHByaXZfZXAtPm5hbWU7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgICAgICAgICB1c2Jf ZXBfc2V0X21heHBhY2tldF9saW1pdCgmcHJpdl9lcC0+ZW5kcG9pbnQsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRE5TM19FUF9NQVhfUEFD S0VUX0xJTUlUKTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPmVuZHBvaW50 Lm1heF9zdHJlYW1zID0gQ0ROUzNfRVBfTUFYX1NUUkVBTVM7DQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBwcml2X2VwLT5lbmRwb2ludC5vcHMgPSAmY2RuczNfZ2FkZ2V0X2VwX29wczsNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcF9kaXIpDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByaXZfZXAtPmVuZHBvaW50LmNhcHMuZGlyX2luID0gMTsNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJpdl9lcC0+ZW5kcG9pbnQuY2Fwcy5kaXJfb3V0ID0gMTsNCj4+ICsNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGlmIChpc29fZXBfcmVnICYgZXBfbWFzaykNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+ZW5kcG9pbnQuY2Fwcy50eXBlX2lzbyA9 IDE7DQo+PiArDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBwcml2X2VwLT5lbmRwb2ludC5j YXBzLnR5cGVfYnVsayA9IDE7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICBwcml2X2VwLT5l bmRwb2ludC5jYXBzLnR5cGVfaW50ID0gMTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHBy aXZfZXAtPmVuZHBvaW50Lm1heGJ1cnN0ID0gQ0ROUzNfRVBfQlVGX1NJWkUgLSAxOw0KPj4gKw0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmcHJpdl9lcC0+ZW5kcG9p bnQuZXBfbGlzdCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBy aXZfZGV2LT5nYWRnZXQuZXBfbGlzdCk7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKw0KPj4g KyAgICAgICAgICAgICAgIHByaXZfZXAtPmZsYWdzID0gMDsNCj4+ICsNCj4+ICsgICAgICAgICAg ICAgICBkZXZfaW5mbyhwcml2X2Rldi0+ZGV2LCAiSW5pdGlhbGl6ZWQgICVzIHN1cHBvcnQ6ICVz ICVzXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAtPm5hbWUsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgcHJpdl9lcC0+ZW5kcG9pbnQuY2Fwcy50eXBlX2J1bGsg PyAiQlVMSywgSU5UIiA6ICIiLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZXAt PmVuZHBvaW50LmNhcHMudHlwZV9pc28gPyAiSVNPIiA6ICIiKTsNCj4+ICsNCj4+ICsgICAgICAg ICAgICAgICBJTklUX0xJU1RfSEVBRCgmcHJpdl9lcC0+cGVuZGluZ19yZXFfbGlzdCk7DQo+PiAr ICAgICAgICAgICAgICAgSU5JVF9MSVNUX0hFQUQoJnByaXZfZXAtPmRlZmVycmVkX3JlcV9saXN0 KTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICtlcnI6DQo+ PiArICAgICAgIGNkbnMzX2ZyZWVfYWxsX2Vwcyhwcml2X2Rldik7DQo+PiArICAgICAgIHJldHVy biAtRU5PTUVNOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBjZG5zM19nYWRnZXRfZGlz YWJsZShzdHJ1Y3QgY2RuczMgKmNkbnMpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNf ZGV2aWNlICpwcml2X2RldjsNCj4+ICsNCj4+ICsgICAgICAgcHJpdl9kZXYgPSBjZG5zLT5nYWRn ZXRfZGV2Ow0KPj4gKw0KPj4gKyAgICAgICBpZiAocHJpdl9kZXYtPmdhZGdldF9kcml2ZXIpDQo+ PiArICAgICAgICAgICAgICAgcHJpdl9kZXYtPmdhZGdldF9kcml2ZXItPmRpc2Nvbm5lY3QoJnBy aXZfZGV2LT5nYWRnZXQpOw0KPj4gKw0KPj4gKyAgICAgICB1c2JfZ2FkZ2V0X2Rpc2Nvbm5lY3Qo JnByaXZfZGV2LT5nYWRnZXQpOw0KPj4gKyAgICAgICBwcml2X2Rldi0+Z2FkZ2V0LnNwZWVkID0g VVNCX1NQRUVEX1VOS05PV047DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgY2RuczNfZ2FkZ2V0X2V4 aXQoc3RydWN0IGNkbnMzICpjZG5zKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IGNkbnMzX2Rl dmljZSAqcHJpdl9kZXY7DQo+PiArDQo+PiArICAgICAgIHByaXZfZGV2ID0gY2Rucy0+Z2FkZ2V0 X2RldjsNCj4+ICsNCj4+ICsgICAgICAgY2RuczNfZ2FkZ2V0X2Rpc2FibGUoY2Rucyk7DQo+PiAr DQo+PiArICAgICAgIGRldm1fZnJlZV9pcnEoY2Rucy0+ZGV2LCBjZG5zLT5pcnEsIGNkbnMpOw0K Pj4gKw0KPj4gKyAgICAgICBwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGNkbnMtPmRldik7DQo+ PiArICAgICAgIHBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGNkbnMtPmRldik7DQo+PiArDQo+ PiArICAgICAgIHVzYl9kZWxfZ2FkZ2V0X3VkYygmcHJpdl9kZXYtPmdhZGdldCk7DQo+PiArDQo+ PiArICAgICAgIGNkbnMzX2ZyZWVfYWxsX2Vwcyhwcml2X2Rldik7DQo+PiArDQo+PiArICAgICAg IGRtYV9mcmVlX2NvaGVyZW50KHByaXZfZGV2LT5zeXNkZXYsIDgsIHByaXZfZGV2LT5zZXR1cF9i dWYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZGV2LT5zZXR1cF9kbWEpOw0K Pj4gKw0KPj4gKyAgICAgICBrZnJlZShwcml2X2Rldi0+emxwX2J1Zik7DQo+PiArICAgICAgIGtm cmVlKHByaXZfZGV2KTsNCj4+ICsgICAgICAgY2Rucy0+Z2FkZ2V0X2RldiA9IE5VTEw7DQo+PiAr fQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY2RuczNfZ2FkZ2V0X3N0YXJ0KHN0cnVjdCBjZG5zMyAq Y2RucykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2Ow0K Pj4gKyAgICAgICB1MzIgbWF4X3NwZWVkOw0KPj4gKyAgICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4g KyAgICAgICBwcml2X2RldiA9IGt6YWxsb2Moc2l6ZW9mKCpwcml2X2RldiksIEdGUF9LRVJORUwp Ow0KPj4gKyAgICAgICBpZiAoIXByaXZfZGV2KQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAt RU5PTUVNOw0KPj4gKw0KPj4gKyAgICAgICBjZG5zLT5nYWRnZXRfZGV2ID0gcHJpdl9kZXY7DQo+ PiArICAgICAgIHByaXZfZGV2LT5zeXNkZXYgPSBjZG5zLT5kZXY7DQo+PiArICAgICAgIHByaXZf ZGV2LT5kZXYgPSBjZG5zLT5kZXY7DQo+PiArICAgICAgIHByaXZfZGV2LT5yZWdzID0gY2Rucy0+ ZGV2X3JlZ3M7DQo+PiArDQo+PiArICAgICAgIG1heF9zcGVlZCA9IHVzYl9nZXRfbWF4aW11bV9z cGVlZChjZG5zLT5kZXYpOw0KPj4gKw0KPj4gKyAgICAgICAvKiBDaGVjayB0aGUgbWF4aW11bV9z cGVlZCBwYXJhbWV0ZXIgKi8NCj4+ICsgICAgICAgc3dpdGNoIChtYXhfc3BlZWQpIHsNCj4+ICsg ICAgICAgY2FzZSBVU0JfU1BFRURfRlVMTDoNCj4+ICsgICAgICAgY2FzZSBVU0JfU1BFRURfSElH SDoNCj4+ICsgICAgICAgY2FzZSBVU0JfU1BFRURfU1VQRVI6DQo+PiArICAgICAgICAgICAgICAg YnJlYWs7DQo+PiArICAgICAgIGRlZmF1bHQ6DQo+PiArICAgICAgICAgICAgICAgZGV2X2Vycihj ZG5zLT5kZXYsICJpbnZhbGlkIG1heGltdW1fc3BlZWQgcGFyYW1ldGVyICVkXG4iLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgbWF4X3NwZWVkKTsNCj4+ICsgICAgICAgICAgICAgICAvKiBm YWxsIHRocm91Z2ggKi8NCj4+ICsgICAgICAgY2FzZSBVU0JfU1BFRURfVU5LTk9XTjoNCj4+ICsg ICAgICAgICAgICAgICAvKiBkZWZhdWx0IHRvIHN1cGVyc3BlZWQgKi8NCj4+ICsgICAgICAgICAg ICAgICBtYXhfc3BlZWQgPSBVU0JfU1BFRURfU1VQRVI7DQo+PiArICAgICAgICAgICAgICAgYnJl YWs7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgLyogZmlsbCBnYWRnZXQgZmllbGRz ICovDQo+PiArICAgICAgIHByaXZfZGV2LT5nYWRnZXQubWF4X3NwZWVkID0gbWF4X3NwZWVkOw0K Pj4gKyAgICAgICBwcml2X2Rldi0+Z2FkZ2V0LnNwZWVkID0gVVNCX1NQRUVEX1VOS05PV047DQo+ PiArICAgICAgIHByaXZfZGV2LT5nYWRnZXQub3BzID0gJmNkbnMzX2dhZGdldF9vcHM7DQo+PiAr ICAgICAgIHByaXZfZGV2LT5nYWRnZXQubmFtZSA9ICJ1c2Itc3MtZ2FkZ2V0IjsNCj4+ICsgICAg ICAgcHJpdl9kZXYtPmdhZGdldC5zZ19zdXBwb3J0ZWQgPSAxOw0KPj4gKw0KPj4gKyAgICAgICBz cGluX2xvY2tfaW5pdCgmcHJpdl9kZXYtPmxvY2spOw0KPj4gKyAgICAgICBJTklUX1dPUksoJnBy aXZfZGV2LT5wZW5kaW5nX3N0YXR1c193cSwNCj4+ICsgICAgICAgICAgICAgICAgIGNkbnMzX3Bl bmRpbmdfc2V0dXBfc3RhdHVzX2hhbmRsZXIpOw0KPj4gKw0KPj4gKyAgICAgICAvKiBpbml0aWFs aXplIGVuZHBvaW50IGNvbnRhaW5lciAqLw0KPj4gKyAgICAgICBJTklUX0xJU1RfSEVBRCgmcHJp dl9kZXYtPmdhZGdldC5lcF9saXN0KTsNCj4+ICsNCj4+ICsgICAgICAgcmV0ID0gY2RuczNfaW5p dF9lcHMocHJpdl9kZXYpOw0KPj4gKyAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAg ICAgZGV2X2Vycihwcml2X2Rldi0+ZGV2LCAiRmFpbGVkIHRvIGNyZWF0ZSBlbmRwb2ludHNcbiIp Ow0KPj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyMTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4g KyAgICAgICAvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHNldHVwIHBhY2tldCBidWZmZXIgKi8NCj4+ ICsgICAgICAgcHJpdl9kZXYtPnNldHVwX2J1ZiA9IGRtYV9hbGxvY19jb2hlcmVudChwcml2X2Rl di0+c3lzZGV2LCA4LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZwcml2X2Rldi0+c2V0dXBfZG1hLCBHRlBfRE1BKTsNCj4+ICsgICAgICAgaWYg KCFwcml2X2Rldi0+c2V0dXBfYnVmKSB7DQo+PiArICAgICAgICAgICAgICAgZGV2X2Vycihwcml2 X2Rldi0+ZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgU0VUVVAgYnVmZmVyXG4i KTsNCj4+ICsgICAgICAgICAgICAgICByZXQgPSAtRU5PTUVNOw0KPj4gKyAgICAgICAgICAgICAg IGdvdG8gZXJyMjsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBwcml2X2Rldi0+ZGV2 X3ZlciA9IHJlYWRsKCZwcml2X2Rldi0+cmVncy0+dXNiX2NhcDYpOw0KPj4gKyAgICAgICBkZXZf ZGJnKHByaXZfZGV2LT5kZXYsICJEZXZpY2UgQ29udHJvbGxlciB2ZXJzaW9uOiAlMDh4XG4iLA0K Pj4gKyAgICAgICAgICAgICAgIHJlYWRsKCZwcml2X2Rldi0+cmVncy0+dXNiX2NhcDYpKTsNCj4+ ICsgICAgICAgZGV2X2RiZyhwcml2X2Rldi0+ZGV2LCAiVVNCIENhcGFiaWxpdGllczo6ICUwOHhc biIsDQo+PiArICAgICAgICAgICAgICAgcmVhZGwoJnByaXZfZGV2LT5yZWdzLT51c2JfY2FwMSkp Ow0KPj4gKyAgICAgICBkZXZfZGJnKHByaXZfZGV2LT5kZXYsICJPbi1DaGlwIG1lbW9yeSBjbmZp Z3VyYXRpb246ICUwOHhcbiIsDQo+PiArICAgICAgICAgICAgICAgcmVhZGwoJnByaXZfZGV2LT5y ZWdzLT51c2JfY2FwMikpOw0KPj4gKw0KPj4gKyAgICAgICBwcml2X2Rldi0+emxwX2J1ZiA9IGt6 YWxsb2MoQ0ROUzNfRVBfWkxQX0JVRl9TSVpFLCBHRlBfS0VSTkVMKTsNCj4+ICsgICAgICAgaWYg KCFwcml2X2Rldi0+emxwX2J1Zikgew0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07 DQo+PiArICAgICAgICAgICAgICAgZ290byBlcnIzOw0KPj4gKyAgICAgICB9DQo+PiArDQo+PiAr ICAgICAgIC8qIGFkZCBVU0IgZ2FkZ2V0IGRldmljZSAqLw0KPj4gKyAgICAgICByZXQgPSB1c2Jf YWRkX2dhZGdldF91ZGMocHJpdl9kZXYtPmRldiwgJnByaXZfZGV2LT5nYWRnZXQpOw0KPj4gKyAg ICAgICBpZiAocmV0IDwgMCkgew0KPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIocHJpdl9kZXYt PmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVnaXN0ZXIgVVNC IGRldmljZSBjb250cm9sbGVyXG4iKTsNCj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycjQ7DQo+ PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+PiArZXJyNDoNCj4+ICsg ICAgICAga2ZyZWUocHJpdl9kZXYtPnpscF9idWYpOw0KPj4gK2VycjM6DQo+PiArICAgICAgIGRt YV9mcmVlX2NvaGVyZW50KHByaXZfZGV2LT5zeXNkZXYsIDgsIHByaXZfZGV2LT5zZXR1cF9idWYs DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZfZGV2LT5zZXR1cF9kbWEpOw0KPj4g K2VycjI6DQo+PiArICAgICAgIGNkbnMzX2ZyZWVfYWxsX2Vwcyhwcml2X2Rldik7DQo+PiArZXJy MToNCj4+ICsgICAgICAgY2Rucy0+Z2FkZ2V0X2RldiA9IE5VTEw7DQo+PiArICAgICAgIHJldHVy biByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgX19jZG5zM19nYWRnZXRfaW5pdChz dHJ1Y3QgY2RuczMgKmNkbnMpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNl ICpwcml2X2RldjsNCj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+ICsgICAgICAg aW50IHJldCA9IDA7DQo+PiArDQo+PiArICAgICAgIHJldCA9IGNkbnMzX2dhZGdldF9zdGFydChj ZG5zKTsNCj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0 Ow0KPj4gKw0KPj4gKyAgICAgICBwcml2X2RldiA9IGNkbnMtPmdhZGdldF9kZXY7DQo+PiArICAg ICAgIHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoY2Rucy0+ZGV2LCBjZG5zLT5pcnEs DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RuczNfZGV2aWNl X2lycV9oYW5kbGVyLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNkbnMzX2RldmljZV90aHJlYWRfaXJxX2hhbmRsZXIsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSVJRRl9TSEFSRUQsIGRldl9uYW1lKGNkbnMtPmRldiksIGNk bnMpOw0KPj4gKyAgICAgICBpZiAocmV0KQ0KPj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyMDsN Cj4+ICsNCj4+ICsgICAgICAgcG1fcnVudGltZV9nZXRfc3luYyhjZG5zLT5kZXYpOw0KPj4gKyAg ICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsgICAg ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdl9kZXYtPmxvY2ssIGZsYWdzKTsNCj4+ICsg ICAgICAgcmV0dXJuIDA7DQo+PiArZXJyMDoNCj4+ICsgICAgICAgY2RuczNfZ2FkZ2V0X2V4aXQo Y2Rucyk7DQo+PiArICAgICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp bnQgY2RuczNfZ2FkZ2V0X3N1c3BlbmQoc3RydWN0IGNkbnMzICpjZG5zLCBib29sIGRvX3dha2V1 cCkNCj4+ICt7DQo+PiArICAgICAgIGNkbnMzX2dhZGdldF9kaXNhYmxlKGNkbnMpOw0KPj4gKyAg ICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjZG5zM19nYWRnZXRf cmVzdW1lKHN0cnVjdCBjZG5zMyAqY2RucywgYm9vbCBoaWJlcm5hdGVkKQ0KPj4gK3sNCj4+ICsg ICAgICAgc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXY7DQo+PiArICAgICAgIHVuc2lnbmVk IGxvbmcgZmxhZ3M7DQo+PiArDQo+PiArICAgICAgIHByaXZfZGV2ID0gY2Rucy0+Z2FkZ2V0X2Rl djsNCj4+ICsgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7 DQo+PiArDQo+PiArICAgICAgIGlmICghcHJpdl9kZXYtPmdhZGdldF9kcml2ZXIpIHsNCj4+ICsg ICAgICAgICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2X2Rldi0+bG9jaywgZmxh Z3MpOw0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPj4gKyAgICAgICB9DQo+PiArDQo+ PiArICAgICAgIGNkbnMzX2dhZGdldF9jb25maWcocHJpdl9kZXYpOw0KPj4gKyAgICAgICBzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZwcml2X2Rldi0+bG9jaywgZmxhZ3MpOw0KPj4gKyAgICAgICBy ZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICogY2RuczNfZ2FkZ2V0X2luaXQg LSBpbml0aWFsaXplIGRldmljZSBzdHJ1Y3R1cmUNCj4+ICsgKg0KPj4gKyAqIGNkbnM6IGNkbnMz IGluc3RhbmNlDQo+PiArICoNCj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBn YWRnZXQuDQo+PiArICovDQo+PiAraW50IGNkbnMzX2dhZGdldF9pbml0KHN0cnVjdCBjZG5zMyAq Y2RucykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19yb2xlX2RyaXZlciAqcmRydjsN Cj4+ICsNCj4+ICsgICAgICAgcmRydiA9IGRldm1fa3phbGxvYyhjZG5zLT5kZXYsIHNpemVvZigq cmRydiksIEdGUF9LRVJORUwpOw0KPj4gKyAgICAgICBpZiAoIXJkcnYpDQo+PiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArICAgICAgIHJkcnYtPnN0YXJ0ICAgICA9 IF9fY2RuczNfZ2FkZ2V0X2luaXQ7DQo+PiArICAgICAgIHJkcnYtPnN0b3AgICAgICA9IGNkbnMz X2dhZGdldF9leGl0Ow0KPj4gKyAgICAgICByZHJ2LT5zdXNwZW5kICAgPSBjZG5zM19nYWRnZXRf c3VzcGVuZDsNCj4+ICsgICAgICAgcmRydi0+cmVzdW1lICAgID0gY2RuczNfZ2FkZ2V0X3Jlc3Vt ZTsNCj4+ICsgICAgICAgcmRydi0+c3RhdGUgICAgID0gQ0ROUzNfUk9MRV9TVEFURV9JTkFDVElW RTsNCj4+ICsgICAgICAgcmRydi0+bmFtZSAgICAgID0gImdhZGdldCI7DQo+PiArICAgICAgIGNk bnMtPnJvbGVzW0NETlMzX1JPTEVfR0FER0VUXSA9IHJkcnY7DQo+PiArDQo+PiArICAgICAgIHJl dHVybiAwOw0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9nYWRnZXQu aCBiL2RyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi44MTdmOGFlN2E0ZGENCj4+IC0tLSAvZGV2L251bGwNCj4+ ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5oDQo+PiBAQCAtMCwwICsxLDEyMDcgQEAN Cj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPj4gKy8qDQo+PiAr ICogVVNCU1MgZGV2aWNlIGNvbnRyb2xsZXIgZHJpdmVyIGhlYWRlciBmaWxlDQo+PiArICoNCj4+ ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggQ2FkZW5jZS4NCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTctMjAxOCBOWFANCj4+ICsgKg0KPj4gKyAqIEF1dGhvcjogUGF3ZWwgTGFzemN6YWsgPHBhd2Vs bEBjYWRlbmNlLmNvbT4NCj4+ICsgKiAgICAgICAgIFBhd2VsIEpleiA8cGplekBjYWRlbmNlLmNv bT4NCj4+ICsgKiAgICAgICAgIFBldGVyIENoZW4gPHBldGVyLmNoZW5AbnhwLmNvbT4NCj4+ICsg Ki8NCj4+ICsjaWZuZGVmIF9fTElOVVhfQ0ROUzNfR0FER0VUDQo+PiArI2RlZmluZSBfX0xJTlVY X0NETlMzX0dBREdFVA0KPj4gKyNpbmNsdWRlIDxsaW51eC91c2IvZ2FkZ2V0Lmg+DQo+PiArDQo+ PiArLyoNCj4+ICsgKiBVU0JTUy1ERVYgcmVnaXN0ZXIgaW50ZXJmYWNlLg0KPj4gKyAqIFRoaXMg Y29ycmVzcG9uZHMgdG8gdGhlIFVTQlNTIERldmljZSBDb250cm9sbGVyIEludGVyZmFjZQ0KPj4g KyAqLw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBjZG5zM191c2JfcmVncyAtIGRldmlj ZSBjb250cm9sbGVyIHJlZ2lzdGVycy4NCj4+ICsgKiBAdXNiX2NvbmY6ICAgICAgR2xvYmFsIENv bmZpZ3VyYXRpb24gUmVnaXN0ZXIuDQo+PiArICogQHVzYl9zdHM6ICAgICAgIEdsb2JhbCBTdGF0 dXMgUmVnaXN0ZXIuDQo+PiArICogQHVzYl9jbWQ6ICAgICAgIEdsb2JhbCBDb21tYW5kIFJlZ2lz dGVyLg0KPj4gKyAqIEB1c2JfaXB0bjogICAgICBJVFAvU09GIG51bWJlciBSZWdpc3Rlci4NCj4+ ICsgKiBAdXNiX2xwbTogICAgICAgR2xvYmFsIENvbW1hbmQgUmVnaXN0ZXIuDQo+PiArICogQHVz Yl9pZW46ICAgICAgIFVTQiBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyLg0KPj4gKyAqIEB1c2Jf aXN0czogICAgICBVU0IgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3Rlci4NCj4+ICsgKiBAZXBfc2Vs OiAgICAgICAgRW5kcG9pbnQgU2VsZWN0IFJlZ2lzdGVyLg0KPj4gKyAqIEBlcF90cmFkZHI6ICAg ICBFbmRwb2ludCBUcmFuc2ZlciBSaW5nIEFkZHJlc3MgUmVnaXN0ZXIuDQo+PiArICogQGVwX2Nm ZzogICAgICAgIEVuZHBvaW50IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIuDQo+PiArICogQGVwX2Nt ZDogICAgICAgIEVuZHBvaW50IENvbW1hbmQgUmVnaXN0ZXIuDQo+PiArICogQGVwX3N0czogICAg ICAgIEVuZHBvaW50IFN0YXR1cyBSZWdpc3Rlci4NCj4+ICsgKiBAZXBfc3RzX3NpZDogICAgRW5k cG9pbnQgU3RhdHVzIFJlZ2lzdGVyLg0KPj4gKyAqIEBlcF9zdHNfZW46ICAgICBFbmRwb2ludCBT dGF0dXMgUmVnaXN0ZXIgRW5hYmxlLg0KPj4gKyAqIEBkcmJsOiAgICAgICAgICBEb29yYmVsbCBS ZWdpc3Rlci4NCj4+ICsgKiBAZXBfaWVuOiAgICAgICAgRVAgSW50ZXJydXB0IEVuYWJsZSBSZWdp c3Rlci4NCj4+ICsgKiBAZXBfaXN0czogICAgICAgRVAgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3Rl ci4NCj4+ICsgKiBAdXNiX3B3cjogICAgICAgR2xvYmFsIFBvd2VyIENvbmZpZ3VyYXRpb24gUmVn aXN0ZXIuDQo+PiArICogQHVzYl9jb25mMjogICAgIEdsb2JhbCBDb25maWd1cmF0aW9uIFJlZ2lz dGVyIDIuDQo+PiArICogQHVzYl9jYXAxOiAgICAgIENhcGFiaWxpdHkgUmVnaXN0ZXIgMS4NCj4+ ICsgKiBAdXNiX2NhcDI6ICAgICAgQ2FwYWJpbGl0eSBSZWdpc3RlciAyLg0KPj4gKyAqIEB1c2Jf Y2FwMzogICAgICBDYXBhYmlsaXR5IFJlZ2lzdGVyIDMuDQo+PiArICogQHVzYl9jYXA0OiAgICAg IENhcGFiaWxpdHkgUmVnaXN0ZXIgNC4NCj4+ICsgKiBAdXNiX2NhcDU6ICAgICAgQ2FwYWJpbGl0 eSBSZWdpc3RlciA1Lg0KPj4gKyAqIEB1c2JfY2FwNjogICAgICBDYXBhYmlsaXR5IFJlZ2lzdGVy IDYuDQo+PiArICogQHVzYl9jcGt0MTogICAgIEN1c3RvbSBQYWNrZXQgUmVnaXN0ZXIgMS4NCj4+ ICsgKiBAdXNiX2Nwa3QyOiAgICAgQ3VzdG9tIFBhY2tldCBSZWdpc3RlciAyLg0KPj4gKyAqIEB1 c2JfY3BrdDM6ICAgICBDdXN0b20gUGFja2V0IFJlZ2lzdGVyIDMuDQo+PiArICogQHJlc2VydmVk MTogICAgIFJlc2VydmVkLg0KPj4gKyAqIEBjZmdfcmVnczogICAgICBDb25maWd1cmF0aW9uIHJl Z2lzdGVycy4NCj4+ICsgKiBAcmVzZXJ2ZWQyOiAgICAgUmVzZXJ2ZWQuDQo+PiArICogQGRtYV9h eGlfY3RybDogIEFYSSBDb250cm9sIHJlZ2lzdGVyLg0KPj4gKyAqIEBkbWFfYXhpX2lkOiAgICBB WEkgSUQgcmVnaXN0ZXIuDQo+PiArICogQGRtYV9heGlfY2FwOiAgIEFYSSBDYXBhYmlsaXR5IHJl Z2lzdGVyLg0KPj4gKyAqIEBkbWFfYXhpX2N0cmwwOiBBWEkgQ29udHJvbCAwIHJlZ2lzdGVyLg0K Pj4gKyAqIEBkbWFfYXhpX2N0cmwxOiBBWEkgQ29udHJvbCAxIHJlZ2lzdGVyLg0KPj4gKyAqLw0K Pj4gK3N0cnVjdCBjZG5zM191c2JfcmVncyB7DQo+PiArICAgICAgIF9fbGUzMiB1c2JfY29uZjsN Cj4+ICsgICAgICAgX19sZTMyIHVzYl9zdHM7DQo+PiArICAgICAgIF9fbGUzMiB1c2JfY21kOw0K Pj4gKyAgICAgICBfX2xlMzIgdXNiX2lwdG47DQo+PiArICAgICAgIF9fbGUzMiB1c2JfbHBtOw0K Pj4gKyAgICAgICBfX2xlMzIgdXNiX2llbjsNCj4+ICsgICAgICAgX19sZTMyIHVzYl9pc3RzOw0K Pj4gKyAgICAgICBfX2xlMzIgZXBfc2VsOw0KPj4gKyAgICAgICBfX2xlMzIgZXBfdHJhZGRyOw0K Pj4gKyAgICAgICBfX2xlMzIgZXBfY2ZnOw0KPj4gKyAgICAgICBfX2xlMzIgZXBfY21kOw0KPj4g KyAgICAgICBfX2xlMzIgZXBfc3RzOw0KPj4gKyAgICAgICBfX2xlMzIgZXBfc3RzX3NpZDsNCj4+ ICsgICAgICAgX19sZTMyIGVwX3N0c19lbjsNCj4+ICsgICAgICAgX19sZTMyIGRyYmw7DQo+PiAr ICAgICAgIF9fbGUzMiBlcF9pZW47DQo+PiArICAgICAgIF9fbGUzMiBlcF9pc3RzOw0KPj4gKyAg ICAgICBfX2xlMzIgdXNiX3B3cjsNCj4+ICsgICAgICAgX19sZTMyIHVzYl9jb25mMjsNCj4+ICsg ICAgICAgX19sZTMyIHVzYl9jYXAxOw0KPj4gKyAgICAgICBfX2xlMzIgdXNiX2NhcDI7DQo+PiAr ICAgICAgIF9fbGUzMiB1c2JfY2FwMzsNCj4+ICsgICAgICAgX19sZTMyIHVzYl9jYXA0Ow0KPj4g KyAgICAgICBfX2xlMzIgdXNiX2NhcDU7DQo+PiArICAgICAgIF9fbGUzMiB1c2JfY2FwNjsNCj4+ ICsgICAgICAgX19sZTMyIHVzYl9jcGt0MTsNCj4+ICsgICAgICAgX19sZTMyIHVzYl9jcGt0MjsN Cj4+ICsgICAgICAgX19sZTMyIHVzYl9jcGt0MzsNCj4+ICsgICAgICAgX19sZTMyIHJlc2VydmVk MVszNl07DQo+PiArICAgICAgIF9fbGUzMiBjZmdfcmVnMTsNCj4+ICsgICAgICAgX19sZTMyIGRi Z19saW5rMTsNCj4+ICsgICAgICAgX19sZTMyIGRiZ19saW5rMjsNCj4+ICsgICAgICAgX19sZTMy IGNmZ19yZWdzWzc0XTsNCj4+ICsgICAgICAgX19sZTMyIHJlc2VydmVkMlszNF07DQo+PiArICAg ICAgIF9fbGUzMiBkbWFfYXhpX2N0cmw7DQo+PiArICAgICAgIF9fbGUzMiBkbWFfYXhpX2lkOw0K Pj4gKyAgICAgICBfX2xlMzIgZG1hX2F4aV9jYXA7DQo+PiArICAgICAgIF9fbGUzMiBkbWFfYXhp X2N0cmwwOw0KPj4gKyAgICAgICBfX2xlMzIgZG1hX2F4aV9jdHJsMTsNCj4+ICt9Ow0KPj4gKw0K Pj4gKy8qIFVTQl9DT05GIC0gYml0bWFza3MgKi8NCj4+ICsvKiBSZXNldCBVU0IgZGV2aWNlIGNv bmZpZ3VyYXRpb24uICovDQo+PiArI2RlZmluZSBVU0JfQ09ORl9DRkdSU1QgICAgICAgICAgICAg ICAgQklUKDApDQo+PiArLyogU2V0IENvbmZpZ3VyYXRpb24uICovDQo+PiArI2RlZmluZSBVU0Jf Q09ORl9DRkdTRVQgICAgICAgICAgICAgICAgQklUKDEpDQo+PiArLyogRGlzY29ubmVjdCBVU0Ig ZGV2aWNlIGluIFN1cGVyU3BlZWQuICovDQo+PiArI2RlZmluZSBVU0JfQ09ORl9VU0IzRElTICAg ICAgIEJJVCgzKQ0KPj4gKy8qIERpc2Nvbm5lY3QgVVNCIGRldmljZSBpbiBIUy9GUyAqLw0KPj4g KyNkZWZpbmUgVVNCX0NPTkZfVVNCMkRJUyAgICAgICBCSVQoNCkNCj4+ICsvKiBMaXR0bGUgRW5k aWFuIGFjY2VzcyAtIGRlZmF1bHQgKi8NCj4+ICsjZGVmaW5lIFVTQl9DT05GX0xFTkRJQU4gICAg ICAgQklUKDUpDQo+PiArLyoNCj4+ICsgKiBCaWcgRW5kaWFuIGFjY2Vzcy4gRHJpdmVyIGFzc3Vt ZSB0aGF0IGJ5dGUgb3JkZXIgZm9yDQo+PiArICogU0ZScyBhY2Nlc3MgYWx3YXlzIGlzIGFzIExp dHRsZSBFbmRpYW4gc28gdGhpcyBiaXQNCj4+ICsgKiBpcyBub3QgdXNlZC4NCj4+ICsgKi8NCj4+ ICsjZGVmaW5lIFVTQl9DT05GX0JFTkRJQU4gICAgICAgQklUKDYpDQo+PiArLyogRGV2aWNlIHNv ZnR3YXJlIHJlc2V0LiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NPTkZfU1dSU1QgICAgICAgICBCSVQo NykNCj4+ICsvKiBTaW5ndWxhciBETUEgdHJhbnNmZXIgbW9kZS4gKi8NCj4+ICsjZGVmaW5lIFVT Ql9DT05GX0RTSU5HICAgICAgICAgQklUKDgpDQo+PiArLyogTXVsdGlwbGUgRE1BIHRyYW5zZmVy cyBtb2RlLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NPTkZfRE1VTFQgICAgICAgICBCSVQoOSkNCj4+ ICsvKiBETUEgY2xvY2sgdHVybi1vZmYgZW5hYmxlLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NPTkZf RE1BT0ZGRU4gICAgICBCSVQoMTApDQo+PiArLyogRE1BIGNsb2NrIHR1cm4tb2ZmIGRpc2FibGUu ICovDQo+PiArI2RlZmluZSBVU0JfQ09ORl9ETUFPRkZEUyAgICAgIEJJVCgxMSkNCj4+ICsvKiBD bGVhciBGb3JjZSBGdWxsIFNwZWVkLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NPTkZfQ0ZPUkNFX0ZT ICAgICBCSVQoMTIpDQo+PiArLyogU2V0IEZvcmNlIEZ1bGwgU3BlZWQuICovDQo+PiArI2RlZmlu ZSBVU0JfQ09ORl9TRk9SQ0VfRlMgICAgIEJJVCgxMykNCj4+ICsvKiBEZXZpY2UgZW5hYmxlLiAq Lw0KPj4gKyNkZWZpbmUgVVNCX0NPTkZfREVWRU4gICAgICAgICBCSVQoMTQpDQo+PiArLyogRGV2 aWNlIGRpc2FibGUuICovDQo+PiArI2RlZmluZSBVU0JfQ09ORl9ERVZEUyAgICAgICAgIEJJVCgx NSkNCj4+ICsvKiBMMSBMUE0gc3RhdGUgZW50cnkgZW5hYmxlICh1c2VkIGluIEhTL0ZTIG1vZGUp LiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NPTkZfTDFFTiAgICAgICAgICBCSVQoMTYpDQo+PiArLyog TDEgTFBNIHN0YXRlIGVudHJ5IGRpc2FibGUgKHVzZWQgaW4gSFMvRlMgbW9kZSkuICovDQo+PiAr I2RlZmluZSBVU0JfQ09ORl9MMURTICAgICAgICAgIEJJVCgxNykNCj4+ICsvKiBVU0IgMi4wIGNs b2NrIGdhdGUgZGlzYWJsZS4gKi8NCj4+ICsjZGVmaW5lIFVTQl9DT05GX0NMSzJPRkZFTiAgICAg QklUKDE4KQ0KPj4gKy8qIFVTQiAyLjAgY2xvY2sgZ2F0ZSBlbmFibGUuICovDQo+PiArI2RlZmlu ZSBVU0JfQ09ORl9DTEsyT0ZGRFMgICAgIEJJVCgxOSkNCj4+ICsvKiBMMCBMUE0gc3RhdGUgZW50 cnkgcmVxdWVzdCAodXNlZCBpbiBIUy9GUyBtb2RlKS4gKi8NCj4+ICsjZGVmaW5lIFVTQl9DT05G X0xHT19MMCAgICAgICAgICAgICAgICBCSVQoMjApDQo+PiArLyogVVNCIDMuMCBjbG9jayBnYXRl IGRpc2FibGUuICovDQo+PiArI2RlZmluZSBVU0JfQ09ORl9DTEszT0ZGRU4gICAgIEJJVCgyMSkN Cj4+ICsvKiBVU0IgMy4wIGNsb2NrIGdhdGUgZW5hYmxlLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NP TkZfQ0xLM09GRkRTICAgICBCSVQoMjIpDQo+PiArLyogQml0IDIzIGlzIHJlc2VydmVkKi8NCj4+ ICsvKiBVMSBzdGF0ZSBlbnRyeSBlbmFibGUgKHVzZWQgaW4gU1MgbW9kZSkuICovDQo+PiArI2Rl ZmluZSBVU0JfQ09ORl9VMUVOICAgICAgICAgIEJJVCgyNCkNCj4+ICsvKiBVMSBzdGF0ZSBlbnRy eSBkaXNhYmxlICh1c2VkIGluIFNTIG1vZGUpLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NPTkZfVTFE UyAgICAgICAgICBCSVQoMjUpDQo+PiArLyogVTIgc3RhdGUgZW50cnkgZW5hYmxlICh1c2VkIGlu IFNTIG1vZGUpLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NPTkZfVTJFTiAgICAgICAgICBCSVQoMjYp DQo+PiArLyogVTIgc3RhdGUgZW50cnkgZGlzYWJsZSAodXNlZCBpbiBTUyBtb2RlKS4gKi8NCj4+ ICsjZGVmaW5lIFVTQl9DT05GX1UyRFMgICAgICAgICAgQklUKDI3KQ0KPj4gKy8qIFUwIHN0YXRl IGVudHJ5IHJlcXVlc3QgKHVzZWQgaW4gU1MgbW9kZSkuICovDQo+PiArI2RlZmluZSBVU0JfQ09O Rl9MR09fVTAgICAgICAgICAgICAgICAgQklUKDI4KQ0KPj4gKy8qIFUxIHN0YXRlIGVudHJ5IHJl cXVlc3QgKHVzZWQgaW4gU1MgbW9kZSkuICovDQo+PiArI2RlZmluZSBVU0JfQ09ORl9MR09fVTEg ICAgICAgICAgICAgICAgQklUKDI5KQ0KPj4gKy8qIFUyIHN0YXRlIGVudHJ5IHJlcXVlc3QgKHVz ZWQgaW4gU1MgbW9kZSkuICovDQo+PiArI2RlZmluZSBVU0JfQ09ORl9MR09fVTIgICAgICAgICAg ICAgICAgQklUKDMwKQ0KPj4gKy8qIFNTLkluYWN0aXZlIHN0YXRlIGVudHJ5IHJlcXVlc3QgKHVz ZWQgaW4gU1MgbW9kZSkgKi8NCj4+ICsjZGVmaW5lIFVTQl9DT05GX0xHT19TU0lOQUNUICAgQklU KDMxKQ0KPj4gKw0KPj4gKy8qIFVTQl9TVFMgLSBiaXRtYXNrcyAqLw0KPj4gKy8qDQo+PiArICog Q29uZmlndXJhdGlvbiBzdGF0dXMuDQo+PiArICogMSAtIGRldmljZSBpcyBpbiB0aGUgY29uZmln dXJlZCBzdGF0ZS4NCj4+ICsgKiAwIC0gZGV2aWNlIGlzIG5vdCBjb25maWd1cmVkLg0KPj4gKyAq Lw0KPj4gKyNkZWZpbmUgVVNCX1NUU19DRkdTVFNfTUFTSyAgICBCSVQoMCkNCj4+ICsjZGVmaW5l IFVTQl9TVFNfQ0ZHU1RTKHApICAgICAgKChwKSAmIFVTQl9TVFNfQ0ZHU1RTX01BU0spDQo+PiAr LyoNCj4+ICsgKiBPbi1jaGlwIG1lbW9yeSBvdmVyZmxvdy4NCj4+ICsgKiAwIC0gT24tY2hpcCBt ZW1vcnkgc3RhdHVzIE9LLg0KPj4gKyAqIDEgLSBPbi1jaGlwIG1lbW9yeSBvdmVyZmxvdy4NCj4+ ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9TVFNfT1ZfTUFTSyAgICAgICAgICAgICAgICBCSVQoMSkN Cj4+ICsjZGVmaW5lIFVTQl9TVFNfT1YocCkgICAgICAgICAgKChwKSAmIFVTQl9TVFNfT1ZfTUFT SykNCj4+ICsvKg0KPj4gKyAqIFN1cGVyU3BlZWQgY29ubmVjdGlvbiBzdGF0dXMuDQo+PiArICog MCAtIFVTQiBpbiBTdXBlclNwZWVkIG1vZGUgZGlzY29ubmVjdGVkLg0KPj4gKyAqIDEgLSBVU0Ig aW4gU3VwZXJTcGVlZCBtb2RlIGNvbm5lY3RlZC4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9T VFNfVVNCM0NPTlNfTUFTSyAgQklUKDIpDQo+PiArI2RlZmluZSBVU0JfU1RTX1VTQjNDT05TKHAp ICAgICgocCkgJiBVU0JfU1RTX1VTQjNDT05TX01BU0spDQo+PiArLyoNCj4+ICsgKiBETUEgdHJh bnNmZXIgY29uZmlndXJhdGlvbiBzdGF0dXMuDQo+PiArICogMCAtIHNpbmdsZSByZXF1ZXN0Lg0K Pj4gKyAqIDEgLSBtdWx0aXBsZSBUUkIgY2hhaW4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9T VFNfRFRSQU5TX01BU0sgICAgQklUKDMpDQo+PiArI2RlZmluZSBVU0JfU1RTX0RUUkFOUyhwKSAg ICAgICgocCkgJiBVU0JfU1RTX0RUUkFOU19NQVNLKQ0KPj4gKy8qDQo+PiArICogRGV2aWNlIHNw ZWVkLg0KPj4gKyAqIDAgLSBVbmRlZmluZWQgKHZhbHVlIGFmdGVyIHJlc2V0KS4NCj4+ICsgKiAx IC0gTG93IHNwZWVkDQo+PiArICogMiAtIEZ1bGwgc3BlZWQNCj4+ICsgKiAzIC0gSGlnaCBzcGVl ZA0KPj4gKyAqIDQgLSBTdXBlciBzcGVlZA0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgVVNCX1NUU19V U0JTUEVFRF9NQVNLICBHRU5NQVNLKDYsIDQpDQo+PiArI2RlZmluZSBVU0JfU1RTX1VTQlNQRUVE KHApICAgICgoKHApICYgVVNCX1NUU19VU0JTUEVFRF9NQVNLKSA+PiA0KQ0KPj4gKyNkZWZpbmUg VVNCX1NUU19MUyAgICAgICAgICAgICAoMHgxIDw8IDQpDQo+PiArI2RlZmluZSBVU0JfU1RTX0ZT ICAgICAgICAgICAgICgweDIgPDwgNCkNCj4+ICsjZGVmaW5lIFVTQl9TVFNfSFMgICAgICAgICAg ICAgKDB4MyA8PCA0KQ0KPj4gKyNkZWZpbmUgVVNCX1NUU19TUyAgICAgICAgICAgICAoMHg0IDw8 IDQpDQo+PiArI2RlZmluZSBERVZfVU5ERUZTUEVFRChwKSAgICAgICgoKHApICYgVVNCX1NUU19V U0JTUEVFRF9NQVNLKSA9PSAoMHgwIDw8IDQpKQ0KPj4gKyNkZWZpbmUgREVWX0xPV1NQRUVEKHAp ICAgICAgICAgICAgICAgICgoKHApICYgVVNCX1NUU19VU0JTUEVFRF9NQVNLKSA9PSBVU0JfU1RT X0xTKQ0KPj4gKyNkZWZpbmUgREVWX0ZVTExTUEVFRChwKSAgICAgICAoKChwKSAmIFVTQl9TVFNf VVNCU1BFRURfTUFTSykgPT0gVVNCX1NUU19GUykNCj4+ICsjZGVmaW5lIERFVl9ISUdIU1BFRUQo cCkgICAgICAgKCgocCkgJiBVU0JfU1RTX1VTQlNQRUVEX01BU0spID09IFVTQl9TVFNfSFMpDQo+ PiArI2RlZmluZSBERVZfU1VQRVJTUEVFRChwKSAgICAgICgoKHApICYgVVNCX1NUU19VU0JTUEVF RF9NQVNLKSA9PSBVU0JfU1RTX1NTKQ0KPj4gKy8qDQo+PiArICogRW5kaWFubmVzcyBmb3IgU0ZS IGFjY2Vzcy4NCj4+ICsgKiAwIC0gTGl0dGxlIEVuZGlhbiBvcmRlciAoZGVmYXVsdCBhZnRlciBo YXJkd2FyZSByZXNldCkuDQo+PiArICogMSAtIEJpZyBFbmRpYW4gb3JkZXINCj4+ICsgKi8NCj4+ ICsjZGVmaW5lIFVTQl9TVFNfRU5ESUFOX01BU0sgICAgQklUKDcpDQo+PiArI2RlZmluZSBVU0Jf U1RTX0VORElBTihwKSAgICAgICgocCkgJiBVU0JfU1RTX0VORElBTl9NQVNLKQ0KPj4gKy8qDQo+ PiArICogSFMvRlMgY2xvY2sgdHVybi1vZmYgc3RhdHVzLg0KPj4gKyAqIDAgLSBoc2ZzIGNsb2Nr IGlzIGFsd2F5cyBvbi4NCj4+ICsgKiAxIC0gaHNmcyBjbG9jayB0dXJuLW9mZiBpbiBMMiAoSFMv RlMgbW9kZSkgaXMgZW5hYmxlZA0KPj4gKyAqICAgICAgICAgIChkZWZhdWx0IGFmdGVyIGhhcmR3 YXJlIHJlc2V0KS4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9TVFNfQ0xLMk9GRl9NQVNLICAg QklUKDgpDQo+PiArI2RlZmluZSBVU0JfU1RTX0NMSzJPRkYocCkgICAgICgocCkgJiBVU0JfU1RT X0NMSzJPRkZfTUFTSykNCj4+ICsvKg0KPj4gKyAqIFBDTEsgY2xvY2sgdHVybi1vZmYgc3RhdHVz Lg0KPj4gKyAqIDAgLSBwY2xrIGNsb2NrIGlzIGFsd2F5cyBvbi4NCj4+ICsgKiAxIC0gcGNsayBj bG9jayB0dXJuLW9mZiBpbiBVMyAoU1MgbW9kZSkgaXMgZW5hYmxlZA0KPj4gKyAqICAgICAgICAg IChkZWZhdWx0IGFmdGVyIGhhcmR3YXJlIHJlc2V0KS4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVT Ql9TVFNfQ0xLM09GRl9NQVNLICAgQklUKDkpDQo+PiArI2RlZmluZSBVU0JfU1RTX0NMSzNPRkYo cCkgICAgICgocCkgJiBVU0JfU1RTX0NMSzNPRkZfTUFTSykNCj4+ICsvKg0KPj4gKyAqIENvbnRy b2xsZXIgaW4gcmVzZXQgc3RhdGUuDQo+PiArICogMCAtIEludGVybmFsIHJlc2V0IGlzIGFjdGl2 ZS4NCj4+ICsgKiAxIC0gSW50ZXJuYWwgcmVzZXQgaXMgbm90IGFjdGl2ZSBhbmQgY29udHJvbGxl ciBpcyBmdWxseSBvcGVyYXRpb25hbC4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9TVFNfSU5f UlNUX01BU0sgICAgQklUKDEwKQ0KPj4gKyNkZWZpbmUgVVNCX1NUU19JTl9SU1QocCkgICAgICAo KHApICYgVVNCX1NUU19JTl9SU1RfTUFTSykNCj4+ICsvKg0KPj4gKyAqIERldmljZSBlbmFibGUg U3RhdHVzLg0KPj4gKyAqIDAgLSBVU0IgZGV2aWNlIGlzIGRpc2FibGVkIChWQlVTIGlucHV0IGlz IGRpc2Nvbm5lY3RlZCBmcm9tIGludGVybmFsIGxvZ2ljKS4NCj4+ICsgKiAxIC0gVVNCIGRldmlj ZSBpcyBlbmFibGVkIChWQlVTIGlucHV0IGlzIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuYWwgbG9n aWMpLg0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgVVNCX1NUU19ERVZTX01BU0sgICAgICBCSVQoMTQp DQo+PiArI2RlZmluZSBVU0JfU1RTX0RFVlMocCkgICAgICAgICAgICAgICAgKChwKSAmIFVTQl9T VFNfREVWU19NQVNLKQ0KPj4gKy8qDQo+PiArICogREFkZHJlc3Mgc3RhdHVzcy4NCj4+ICsgKiAw IC0gVVNCIGRldmljZSBpcyBkZWZhdWx0IHN0YXRlLg0KPj4gKyAqIDEgLSBVU0IgZGV2aWNlIGlz IGF0IGxlYXN0IGluIGFkZHJlc3Mgc3RhdGUuDQo+PiArICovDQo+PiArI2RlZmluZSBVU0JfU1RT X0FERFJFU1NFRF9NQVNLIEJJVCgxNSkNCj4+ICsjZGVmaW5lIFVTQl9TVFNfQUREUkVTU0VEKHAp ICAgKChwKSAmIFVTQl9TVFNfQUREUkVTU0VEX01BU0spDQo+PiArLyoNCj4+ICsgKiBMMSBMUE0g c3RhdGUgZW5hYmxlIHN0YXR1cyAodXNlZCBpbiBIUy9GUyBtb2RlKS4NCj4+ICsgKiAwIC0gRW50 ZXJpbmcgdG8gTDEgTFBNIHN0YXRlIGRpc2FibGVkLg0KPj4gKyAqIDEgLSBFbnRlcmluZyB0byBM MSBMUE0gc3RhdGUgZW5hYmxlZC4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9TVFNfTDFFTlNf TUFTSyAgICAgQklUKDE2KQ0KPj4gKyNkZWZpbmUgVVNCX1NUU19MMUVOUyhwKSAgICAgICAoKHAp ICYgVVNCX1NUU19MMUVOU19NQVNLKQ0KPj4gKy8qDQo+PiArICogSW50ZXJuYWwgVkJVUyBjb25u ZWN0aW9uIHN0YXR1cyAodXNlZCBib3RoIGluIEhTL0ZTICBhbmQgU1MgbW9kZSkuDQo+PiArICog MCAtIGludGVybmFsIFZCVVMgaXMgbm90IGRldGVjdGVkLg0KPj4gKyAqIDEgLSBpbnRlcm5hbCBW QlVTIGlzIGRldGVjdGVkLg0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgVVNCX1NUU19WQlVTU19NQVNL ICAgICBCSVQoMTcpDQo+PiArI2RlZmluZSBVU0JfU1RTX1ZCVVNTKHApICAgICAgICgocCkgJiBV U0JfU1RTX1ZCVVNTX01BU0spDQo+PiArLyoNCj4+ICsgKiBIUy9GUyBMUE0gIHN0YXRlICh1c2Vk IGluIEZTL0hTIG1vZGUpLg0KPj4gKyAqIDAgLSBMMCBTdGF0ZQ0KPj4gKyAqIDEgLSBMMSBTdGF0 ZQ0KPj4gKyAqIDIgLSBMMiBTdGF0ZQ0KPj4gKyAqIDMgLSBMMyBTdGF0ZQ0KPj4gKyAqLw0KPj4g KyNkZWZpbmUgVVNCX1NUU19MUE1TVF9NQVNLICAgICBHRU5NQVNLKDE5LCAxOCkNCj4+ICsjZGVm aW5lIERFVl9MMF9TVEFURShwKSAgICAgICAgICAgICAgICAoKChwKSAmIFVTQl9TVFNfTFBNU1Rf TUFTSykgPT0gKDB4MCA8PCAxOCkpDQo+PiArI2RlZmluZSBERVZfTDFfU1RBVEUocCkgICAgICAg ICAgICAgICAgKCgocCkgJiBVU0JfU1RTX0xQTVNUX01BU0spID09ICgweDEgPDwgMTgpKQ0KPj4g KyNkZWZpbmUgREVWX0wyX1NUQVRFKHApICAgICAgICAgICAgICAgICgoKHApICYgVVNCX1NUU19M UE1TVF9NQVNLKSA9PSAoMHgyIDw8IDE4KSkNCj4+ICsjZGVmaW5lIERFVl9MM19TVEFURShwKSAg ICAgICAgICAgICAgICAoKChwKSAmIFVTQl9TVFNfTFBNU1RfTUFTSykgPT0gKDB4MyA8PCAxOCkp DQo+PiArLyoNCj4+ICsgKiBEaXNhYmxlIEhTIHN0YXR1cyAodXNlZCBpbiBGUy9IUyBtb2RlKS4N Cj4+ICsgKiAwIC0gdGhlIGRpc2Nvbm5lY3QgYml0IGZvciBIUy9GUyBtb2RlIGlzIHNldCAuDQo+ PiArICogMSAtIHRoZSBkaXNjb25uZWN0IGJpdCBmb3IgSFMvRlMgbW9kZSBpcyBub3Qgc2V0Lg0K Pj4gKyAqLw0KPj4gKyNkZWZpbmUgVVNCX1NUU19VU0IyQ09OU19NQVNLICBCSVQoMjApDQo+PiAr I2RlZmluZSBVU0JfU1RTX1VTQjJDT05TKHApICAgICgocCkgJiBVU0JfU1RTX1VTQjJDT05TX01B U0spDQo+PiArLyoNCj4+ICsgKiBIUy9GUyBtb2RlIGNvbm5lY3Rpb24gc3RhdHVzICh1c2VkIGlu IEZTL0hTIG1vZGUpLg0KPj4gKyAqIDAgLSBIaWdoIFNwZWVkIG9wZXJhdGlvbnMgaW4gVVNCMi4w IChGUy9IUykgbW9kZSBub3QgZGlzYWJsZWQuDQo+PiArICogMSAtIEhpZ2ggU3BlZWQgb3BlcmF0 aW9ucyBpbiBVU0IyLjAgKEZTL0hTKS4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9TVFNfRElT QUJMRV9IU19NQVNLICAgICAgICBCSVQoMjEpDQo+PiArI2RlZmluZSBVU0JfU1RTX0RJU0FCTEVf SFMocCkgICgocCkgJiBVU0JfU1RTX0RJU0FCTEVfSFNfTUFTSykNCj4+ICsvKg0KPj4gKyAqIFUx IHN0YXRlIGVuYWJsZSBzdGF0dXMgKHVzZWQgaW4gU1MgbW9kZSkuDQo+PiArICogMCAtIEVudGVy aW5nIHRvICBVMSBzdGF0ZSBkaXNhYmxlZC4NCj4+ICsgKiAxIC0gRW50ZXJpbmcgdG8gIFUxIHN0 YXRlIGVuYWJsZWQuDQo+PiArICovDQo+PiArI2RlZmluZSBVU0JfU1RTX1UxRU5TX01BU0sgICAg IEJJVCgyNCkNCj4+ICsjZGVmaW5lIFVTQl9TVFNfVTFFTlMocCkgICAgICAgKChwKSAmIFVTQl9T VFNfVTFFTlNfTUFTSykNCj4+ICsvKg0KPj4gKyAqIFUyIHN0YXRlIGVuYWJsZSBzdGF0dXMgKHVz ZWQgaW4gU1MgbW9kZSkuDQo+PiArICogMCAtIEVudGVyaW5nIHRvICBVMiBzdGF0ZSBkaXNhYmxl ZC4NCj4+ICsgKiAxIC0gRW50ZXJpbmcgdG8gIFUyIHN0YXRlIGVuYWJsZWQuDQo+PiArICovDQo+ PiArI2RlZmluZSBVU0JfU1RTX1UyRU5TX01BU0sgICAgIEJJVCgyNSkNCj4+ICsjZGVmaW5lIFVT Ql9TVFNfVTJFTlMocCkgICAgICAgKChwKSAmIFVTQl9TVFNfVTJFTlNfTUFTSykNCj4+ICsvKg0K Pj4gKyAqIFN1cGVyU3BlZWQgTGluayBMVFNTTSBzdGF0ZS4gVGhpcyBmaWVsZCByZWZsZWN0cyBV U0JTUy1ERVYgY3VycmVudA0KPj4gKyAqIFN1cGVyU3BlZWQgbGluayBzdGF0ZQ0KPj4gKyAqLw0K Pj4gKyNkZWZpbmUgVVNCX1NUU19MU1RfTUFTSyAgICAgICBHRU5NQVNLKDI5LCAyNikNCj4+ICsj ZGVmaW5lIERFVl9MU1RfVTAgICAgICAgICAgICAgKCgocCkgJiBVU0JfU1RTX0xTVF9NQVNLKSA9 PSAoMHgwIDw8IDI2KSkNCj4+ICsjZGVmaW5lIERFVl9MU1RfVTEgICAgICAgICAgICAgKCgocCkg JiBVU0JfU1RTX0xTVF9NQVNLKSA9PSAoMHgxIDw8IDI2KSkNCj4+ICsjZGVmaW5lIERFVl9MU1Rf VTIgICAgICAgICAgICAgKCgocCkgJiBVU0JfU1RTX0xTVF9NQVNLKSA9PSAoMHgyIDw8IDI2KSkN Cj4+ICsjZGVmaW5lIERFVl9MU1RfVTMgICAgICAgICAgICAgKCgocCkgJiBVU0JfU1RTX0xTVF9N QVNLKSA9PSAoMHgzIDw8IDI2KSkNCj4+ICsjZGVmaW5lIERFVl9MU1RfRElTQUJMRUQgICAgICAg KCgocCkgJiBVU0JfU1RTX0xTVF9NQVNLKSA9PSAoMHg0IDw8IDI2KSkNCj4+ICsjZGVmaW5lIERF Vl9MU1RfUlhERVRFQ1QgICAgICAgKCgocCkgJiBVU0JfU1RTX0xTVF9NQVNLKSA9PSAoMHg1IDw8 IDI2KSkNCj4+ICsjZGVmaW5lIERFVl9MU1RfSU5BQ1RJVkUgICAgICAgKCgocCkgJiBVU0JfU1RT X0xTVF9NQVNLKSA9PSAoMHg2IDw8IDI2KSkNCj4+ICsjZGVmaW5lIERFVl9MU1RfUE9MTElORyAg ICAgICAgICAgICAgICAoKChwKSAmIFVTQl9TVFNfTFNUX01BU0spID09ICgweDcgPDwgMjYpKQ0K Pj4gKyNkZWZpbmUgREVWX0xTVF9SRUNPVkVSWSAgICAgICAoKChwKSAmIFVTQl9TVFNfTFNUX01B U0spID09ICgweDggPDwgMjYpKQ0KPj4gKyNkZWZpbmUgREVWX0xTVF9IT1RfUkVTRVQgICAgICAo KChwKSAmIFVTQl9TVFNfTFNUX01BU0spID09ICgweDkgPDwgMjYpKQ0KPj4gKyNkZWZpbmUgREVW X0xTVF9DT01QX01PREUgICAgICAoKChwKSAmIFVTQl9TVFNfTFNUX01BU0spID09ICgweGEgPDwg MjYpKQ0KPj4gKyNkZWZpbmUgREVWX0xTVF9MQl9TVEFURSAgICAgICAoKChwKSAmIFVTQl9TVFNf TFNUX01BU0spID09ICgweGIgPDwgMjYpKQ0KPj4gKy8qDQo+PiArICogRE1BIGNsb2NrIHR1cm4t b2ZmIHN0YXR1cy4NCj4+ICsgKiAwIC0gRE1BIGNsb2NrIGlzIGFsd2F5cyBvbiAoZGVmYXVsdCBh ZnRlciBoYXJkd2FyZSByZXNldCkuDQo+PiArICogMSAtIERNQSBjbG9jayB0dXJuLW9mZiBpbiBV MSwgVTIgYW5kIFUzIChTUyBtb2RlKSBpcyBlbmFibGVkLg0KPj4gKyAqLw0KPj4gKyNkZWZpbmUg VVNCX1NUU19ETUFPRkZfTUFTSyAgICBCSVQoMzApDQo+PiArI2RlZmluZSBVU0JfU1RTX0RNQU9G RihwKSAgICAgICgocCkgJiBVU0JfU1RTX0RNQU9GRl9NQVNLKQ0KPj4gKy8qDQo+PiArICogU0ZS IEVuZGlhbiBzdGF0dXNzLg0KPj4gKyAqIDAgLSBMaXR0bGUgRW5kaWFuIG9yZGVyIChkZWZhdWx0 IGFmdGVyIGhhcmR3YXJlIHJlc2V0KS4NCj4+ICsgKiAxIC0gQmlnIEVuZGlhbiBvcmRlci4NCj4+ ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9TVFNfRU5ESUFOMl9NQVNLICAgQklUKDMxKQ0KPj4gKyNk ZWZpbmUgVVNCX1NUU19FTkRJQU4yKHApICAgICAoKHApICYgVVNCX1NUU19FTkRJQU4yX01BU0sp DQo+PiArDQo+PiArLyogVVNCX0NNRCAtICBiaXRtYXNrcyAqLw0KPj4gKy8qIFNldCBGdW5jdGlv biBBZGRyZXNzICovDQo+PiArI2RlZmluZSBVU0JfQ01EX1NFVF9BRERSICAgICAgIEJJVCgwKQ0K Pj4gKy8qDQo+PiArICogRnVuY3Rpb24gQWRkcmVzcyBUaGlzIGZpZWxkIGlzIHNhdmVkIHRvIHRo ZSBkZXZpY2Ugb25seSB3aGVuIHRoZSBmaWVsZA0KPj4gKyAqIFNFVF9BRERSIGlzIHNldCAnMSAn IGR1cmluZyB3cml0ZSB0byBVU0JfQ01EIHJlZ2lzdGVyLg0KPj4gKyAqIFNvZnR3YXJlIGlzIHJl c3BvbnNpYmxlIGZvciBlbnRlcmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGR1cmluZw0K Pj4gKyAqIFNFVF9BRERSRVNTIHJlcXVlc3Qgc2VydmljZS4gVGhpcyBmaWVsZCBzaG91bGQgYmUg c2V0IGltbWVkaWF0ZWx5IGFmdGVyDQo+PiArICogdGhlIFNFVFVQIHBhY2tldCBpcyBkZWNvZGVk LCBhbmQgcHJpb3IgdG8gY29uZmlybWF0aW9uIG9mIHRoZSBzdGF0dXMgcGhhc2UNCj4+ICsgKi8N Cj4+ICsjZGVmaW5lIFVTQl9DTURfRkFERFJfTUFTSyAgICAgR0VOTUFTSyg3LCAxKQ0KPj4gKyNk ZWZpbmUgVVNCX0NNRF9GQUREUihwKSAgICAgICAoKChwKSA8PCAxKSAmIFVTQl9DTURfRkFERFJf TUFTSykNCj4+ICsvKiBTZW5kIEZ1bmN0aW9uIFdha2UgRGV2aWNlIE5vdGlmaWNhdGlvbiBUUCAo dXNlZCBvbmx5IGluIFNTIG1vZGUpLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NNRF9TRE5GVyAgICAg ICAgICBCSVQoOCkNCj4+ICsvKiBTZXQgVGVzdCBNb2RlICh1c2VkIG9ubHkgaW4gSFMvRlMgbW9k ZSkuICovDQo+PiArI2RlZmluZSBVU0JfQ01EX1NUTU9ERSAgICAgICAgIEJJVCg5KQ0KPj4gKy8q IFRlc3QgbW9kZSBzZWxlY3RvciAodXNlZCBvbmx5IGluIEhTL0ZTIG1vZGUpICovDQo+PiArI2Rl ZmluZSBVU0JfU1RTX1RNT0RFX1NFTF9NQVNLIEdFTk1BU0soMTEsIDEwKQ0KPj4gKyNkZWZpbmUg VVNCX1NUU19UTU9ERV9TRUwocCkgICAoKChwKSA8PCAxMCkgJiBVU0JfU1RTX1RNT0RFX1NFTF9N QVNLKQ0KPj4gKy8qDQo+PiArICogIFNlbmQgTGF0ZW5jeSBUb2xlcmFuY2UgTWVzc2FnZSBEZXZp Y2UgTm90aWZpY2F0aW9uIFRQICh1c2VkIG9ubHkNCj4+ICsgKiAgaW4gU1MgbW9kZSkuDQo+PiAr ICovDQo+PiArI2RlZmluZSBVU0JfQ01EX1NETkxUTSAgICAgICAgIEJJVCgxMikNCj4+ICsvKiBT ZW5kIEN1c3RvbSBUcmFuc2FjdGlvbiBQYWNrZXQgKHVzZWQgb25seSBpbiBTUyBtb2RlKSAqLw0K Pj4gKyNkZWZpbmUgVVNCX0NNRF9TUEtUICAgICAgICAgICBCSVQoMTMpDQo+PiArLypEZXZpY2Ug Tm90aWZpY2F0aW9uICdGdW5jdGlvbiBXYWtlJyAtIEludGVyZmFjZSB2YWx1ZSAob25seSBpbiBT UyBtb2RlLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0NNRF9ETkZXX0lOVF9NQVNLICBHRU5NQVNLKDIz LCAxNikNCj4+ICsjZGVmaW5lIFVTQl9TVFNfRE5GV19JTlQocCkgICAgKCgocCkgPDwgMTYpICYg VVNCX0NNRF9ETkZXX0lOVF9NQVNLKQ0KPj4gKy8qDQo+PiArICogRGV2aWNlIE5vdGlmaWNhdGlv biAnTGF0ZW5jeSBUb2xlcmFuY2UgTWVzc2FnZScgLTM3MyBCRUxUIHZhbHVlIFs3OjBdDQo+PiAr ICogKHVzZWQgb25seSBpbiBTUyBtb2RlKS4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9DTURf RE5MVE1fQkVMVF9NQVNLICAgICAgICBHRU5NQVNLKDI3LCAxNikNCj4+ICsjZGVmaW5lIFVTQl9T VFNfRE5MVE1fQkVMVChwKSAgKCgocCkgPDwgMTYpICYgVVNCX0NNRF9ETkxUTV9CRUxUX01BU0sp DQo+PiArDQo+PiArLyogVVNCX0lUUE4gLSBiaXRtYXNrcyAqLw0KPj4gKy8qDQo+PiArICogSVRQ KFNTKSAvIFNPRiAoSFMvRlMpIG51bWJlcg0KPj4gKyAqIEluIFNTIG1vZGUgdGhpcyBmaWVsZCBy ZXByZXNlbnQgbnVtYmVyIG9mIGxhc3QgSVRQIHJlY2VpdmVkIGZyb20gaG9zdC4NCj4+ICsgKiBJ biBIUy9GUyBtb2RlIHRoaXMgZmllbGQgcmVwcmVzZW50IG51bWJlciBvZiBsYXN0IFNPRiByZWNl aXZlZCBmcm9tIGhvc3QuDQo+PiArICovDQo+PiArI2RlZmluZSBVU0JfSVRQTl9NQVNLICAgICAg ICAgIEdFTk1BU0soMTMsIDApDQo+PiArI2RlZmluZSBVU0JfSVRQTihwKSAgICAgICAgICAgICgo cCkgJiBVU0JfSVRQTl9NQVNLKQ0KPj4gKw0KPj4gKy8qIFVTQl9MUE0gLSBiaXRtYXNrcyAqLw0K Pj4gKy8qIEhvc3QgSW5pdGlhdGVkIFJlc3VtZSBEdXJhdGlvbi4gKi8NCj4+ICsjZGVmaW5lIFVT Ql9MUE1fSElSRF9NQVNLICAgICAgR0VOTUFTSygzLCAwKQ0KPj4gKyNkZWZpbmUgVVNCX0xQTV9I SVJEKHApICAgICAgICAgICAgICAgICgocCkgJiBVU0JfTFBNX0hJUkRfTUFTSykNCj4+ICsvKiBS ZW1vdGUgV2FrZXVwIEVuYWJsZSAoYlJlbW90ZVdha2UpLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0xQ TV9CUlcgICAgICAgICAgICBCSVQoNCkNCj4+ICsNCj4+ICsvKiBVU0JfSUVOIC0gYml0bWFza3Mg Ki8NCj4+ICsvKiBTUyBjb25uZWN0aW9uIGludGVycnVwdCBlbmFibGUgKi8NCj4+ICsjZGVmaW5l IFVTQl9JRU5fQ09OSUVOICAgICAgICAgQklUKDApDQo+PiArLyogU1MgZGlzY29ubmVjdGlvbiBp bnRlcnJ1cHQgZW5hYmxlLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0lFTl9ESVNJRU4gICAgICAgICBC SVQoMSkNCj4+ICsvKiBVU0IgU1Mgd2FybSByZXNldCBpbnRlcnJ1cHQgZW5hYmxlLiAqLw0KPj4g KyNkZWZpbmUgVVNCX0lFTl9VV1JFU0lFTiAgICAgICBCSVQoMikNCj4+ICsvKiBVU0IgU1MgaG90 IHJlc2V0IGludGVycnVwdCBlbmFibGUgKi8NCj4+ICsjZGVmaW5lIFVTQl9JRU5fVUhSRVNJRU4g ICAgICAgQklUKDMpDQo+PiArLyogU1MgbGluayBVMyBzdGF0ZSBlbnRlciBpbnRlcnJ1cHQgZW5h YmxlIChzdXNwZW5kKS4qLw0KPj4gKyNkZWZpbmUgVVNCX0lFTl9VM0VOVElFTiAgICAgICBCSVQo NCkNCj4+ICsvKiBTUyBsaW5rIFUzIHN0YXRlIGV4aXQgaW50ZXJydXB0IGVuYWJsZSAod2FrZXVw KS4gKi8NCj4+ICsjZGVmaW5lIFVTQl9JRU5fVTNFWFRJRU4gICAgICAgQklUKDUpDQo+PiArLyog U1MgbGluayBVMiBzdGF0ZSBlbnRlciBpbnRlcnJ1cHQgZW5hYmxlLiovDQo+PiArI2RlZmluZSBV U0JfSUVOX1UyRU5USUVOICAgICAgIEJJVCg2KQ0KPj4gKy8qIFNTIGxpbmsgVTIgc3RhdGUgZXhp dCBpbnRlcnJ1cHQgZW5hYmxlLiovDQo+PiArI2RlZmluZSBVU0JfSUVOX1UyRVhUSUVOICAgICAg IEJJVCg3KQ0KPj4gKy8qIFNTIGxpbmsgVTEgc3RhdGUgZW50ZXIgaW50ZXJydXB0IGVuYWJsZS4q Lw0KPj4gKyNkZWZpbmUgVVNCX0lFTl9VMUVOVElFTiAgICAgICBCSVQoOCkNCj4+ICsvKiBTUyBs aW5rIFUxIHN0YXRlIGV4aXQgaW50ZXJydXB0IGVuYWJsZS4qLw0KPj4gKyNkZWZpbmUgVVNCX0lF Tl9VMUVYVElFTiAgICAgICBCSVQoOSkNCj4+ICsvKiBJVFAvU09GIHBhY2tldCBkZXRlY3RlZCBp bnRlcnJ1cHQgZW5hYmxlLiovDQo+PiArI2RlZmluZSBVU0JfSUVOX0lUUElFTiAgICAgICAgIEJJ VCgxMCkNCj4+ICsvKiBXYWtldXAgaW50ZXJydXB0IGVuYWJsZS4qLw0KPj4gKyNkZWZpbmUgVVNC X0lFTl9XQUtFSUVOICAgICAgICAgICAgICAgIEJJVCgxMSkNCj4+ICsvKiBTZW5kIEN1c3RvbSBQ YWNrZXQgaW50ZXJydXB0IGVuYWJsZS4qLw0KPj4gKyNkZWZpbmUgVVNCX0lFTl9TUEtUSUVOICAg ICAgICAgICAgICAgIEJJVCgxMikNCj4+ICsvKiBIUy9GUyBtb2RlIGNvbm5lY3Rpb24gaW50ZXJy dXB0IGVuYWJsZS4qLw0KPj4gKyNkZWZpbmUgVVNCX0lFTl9DT04ySUVOICAgICAgICAgICAgICAg IEJJVCgxNikNCj4+ICsvKiBIUy9GUyBtb2RlIGRpc2Nvbm5lY3Rpb24gaW50ZXJydXB0IGVuYWJs ZS4qLw0KPj4gKyNkZWZpbmUgVVNCX0lFTl9ESVMySUVOICAgICAgICAgICAgICAgIEJJVCgxNykN Cj4+ICsvKiBVU0IgcmVzZXQgKEhTL0ZTIG1vZGUpIGludGVycnVwdCBlbmFibGUuKi8NCj4+ICsj ZGVmaW5lIFVTQl9JRU5fVTJSRVNJRU4gICAgICAgQklUKDE4KQ0KPj4gKy8qIExQTSBMMiBzdGF0 ZSBlbnRlciBpbnRlcnJ1cHQgZW5hYmxlLiovDQo+PiArI2RlZmluZSBVU0JfSUVOX0wyRU5USUVO ICAgICAgIEJJVCgyMCkNCj4+ICsvKiBMUE0gIEwyIHN0YXRlIGV4aXQgaW50ZXJydXB0IGVuYWJs ZS4qLw0KPj4gKyNkZWZpbmUgVVNCX0lFTl9MMkVYVElFTiAgICAgICBCSVQoMjEpDQo+PiArLyog TFBNIEwxIHN0YXRlIGVudGVyIGludGVycnVwdCBlbmFibGUuKi8NCj4+ICsjZGVmaW5lIFVTQl9J RU5fTDFFTlRJRU4gICAgICAgQklUKDI0KQ0KPj4gKy8qIExQTSAgTDEgc3RhdGUgZXhpdCBpbnRl cnJ1cHQgZW5hYmxlLiovDQo+PiArI2RlZmluZSBVU0JfSUVOX0wxRVhUSUVOICAgICAgIEJJVCgy NSkNCj4+ICsvKiBDb25maWd1cmF0aW9uIHJlc2V0IGludGVycnVwdCBlbmFibGUuKi8NCj4+ICsj ZGVmaW5lIFVTQl9JRU5fQ0ZHUkVTSUVOICAgICAgQklUKDI2KQ0KPj4gKy8qIFN0YXJ0IG9mIHRo ZSBVU0IgU1Mgd2FybSByZXNldCBpbnRlcnJ1cHQgZW5hYmxlLiovDQo+PiArI2RlZmluZSBVU0Jf SUVOX1VXUkVTU0lFTiAgICAgIEJJVCgyOCkNCj4+ICsvKiBFbmQgb2YgdGhlIFVTQiBTUyB3YXJt IHJlc2V0IGludGVycnVwdCBlbmFibGUuKi8NCj4+ICsjZGVmaW5lIFVTQl9JRU5fVVdSRVNFSUVO ICAgICAgQklUKDI5KQ0KPj4gKw0KPj4gKyNkZWZpbmUgVVNCX0lFTl9JTklUICAoVVNCX0lFTl9V MlJFU0lFTiB8IFVTQl9JU1RTX0RJUzJJIHwgVVNCX0lFTl9DT04ySUVOIFwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgfCBVU0JfSUVOX1VIUkVTSUVOIHwgVVNCX0lFTl9VV1JFU0lFTiB8IFVT Ql9JRU5fRElTSUVOIFwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgfCBVU0JfSUVOX0NPTklF TiB8IFVTQl9JRU5fVTNFWFRJRU4gfCBVU0JfSUVOX0wyRU5USUVOIFwNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgfCBVU0JfSUVOX0wyRVhUSUVOKQ0KPj4gKw0KPj4gKy8qIFVTQl9JU1RTIC0g Yml0bWFza3MgKi8NCj4+ICsvKiBTUyBDb25uZWN0aW9uIGRldGVjdGVkLiAqLw0KPj4gKyNkZWZp bmUgVVNCX0lTVFNfQ09OSSAgICAgICAgICBCSVQoMCkNCj4+ICsvKiBTUyBEaXNjb25uZWN0aW9u IGRldGVjdGVkLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0lTVFNfRElTSSAgICAgICAgICBCSVQoMSkN Cj4+ICsvKiBVVVNCIHdhcm0gcmVzZXQgZGV0ZWN0ZWRlLiAqLw0KPj4gKyNkZWZpbmUgVVNCX0lT VFNfVVdSRVNJICAgICAgICAgICAgICAgIEJJVCgyKQ0KPj4gKy8qIFVTQiBob3QgcmVzZXQgZGV0 ZWN0ZWQuICovDQo+PiArI2RlZmluZSBVU0JfSVNUU19VSFJFU0kgICAgICAgICAgICAgICAgQklU KDMpDQo+PiArLyogVTMgbGluayBzdGF0ZSBlbnRlciBkZXRlY3RlZCAoc3VzcGVuZCkuKi8NCj4+ ICsjZGVmaW5lIFVTQl9JU1RTX1UzRU5USSAgICAgICAgICAgICAgICBCSVQoNCkNCj4+ICsvKiBV MyBsaW5rIHN0YXRlIGV4aXQgZGV0ZWN0ZWQgKHdha2V1cCkuICovDQo+PiArI2RlZmluZSBVU0Jf SVNUU19VM0VYVEkgICAgICAgICAgICAgICAgQklUKDUpDQo+PiArLyogVTIgbGluayBzdGF0ZSBl bnRlciBkZXRlY3RlZC4qLw0KPj4gKyNkZWZpbmUgVVNCX0lTVFNfVTJFTlRJICAgICAgICAgICAg ICAgIEJJVCg2KQ0KPj4gKy8qIFUyIGxpbmsgc3RhdGUgZXhpdCBkZXRlY3RlZC4qLw0KPj4gKyNk ZWZpbmUgVVNCX0lTVFNfVTJFWFRJICAgICAgICAgICAgICAgIEJJVCg3KQ0KPj4gKy8qIFUxIGxp bmsgc3RhdGUgZW50ZXIgZGV0ZWN0ZWQuKi8NCj4+ICsjZGVmaW5lIFVTQl9JU1RTX1UxRU5USSAg ICAgICAgICAgICAgICBCSVQoOCkNCj4+ICsvKiBVMSBsaW5rIHN0YXRlIGV4aXQgZGV0ZWN0ZWQu Ki8NCj4+ICsjZGVmaW5lIFVTQl9JU1RTX1UxRVhUSSAgICAgICAgICAgICAgICBCSVQoOSkNCj4+ ICsvKiBJVFAvU09GIHBhY2tldCBkZXRlY3RlZC4qLw0KPj4gKyNkZWZpbmUgVVNCX0lTVFNfSVRQ SSAgICAgICAgICBCSVQoMTApDQo+PiArLyogV2FrZXVwIGRldGVjdGVkLiovDQo+PiArI2RlZmlu ZSBVU0JfSVNUU19XQUtFSSAgICAgICAgIEJJVCgxMSkNCj4+ICsvKiBTZW5kIEN1c3RvbSBQYWNr ZXQgZGV0ZWN0ZWQuKi8NCj4+ICsjZGVmaW5lIFVTQl9JU1RTX1NQS1RJICAgICAgICAgQklUKDEy KQ0KPj4gKy8qIEhTL0ZTIG1vZGUgY29ubmVjdGlvbiBkZXRlY3RlZC4qLw0KPj4gKyNkZWZpbmUg VVNCX0lTVFNfQ09OMkkgICAgICAgICBCSVQoMTYpDQo+PiArLyogSFMvRlMgbW9kZSBkaXNjb25u ZWN0aW9uIGRldGVjdGVkLiovDQo+PiArI2RlZmluZSBVU0JfSVNUU19ESVMySSAgICAgICAgIEJJ VCgxNykNCj4+ICsvKiBVU0IgcmVzZXQgKEhTL0ZTIG1vZGUpIGRldGVjdGVkLiovDQo+PiArI2Rl ZmluZSBVU0JfSVNUU19VMlJFU0kgICAgICAgICAgICAgICAgQklUKDE4KQ0KPj4gKy8qIExQTSBM MiBzdGF0ZSBlbnRlciBkZXRlY3RlZC4qLw0KPj4gKyNkZWZpbmUgVVNCX0lTVFNfTDJFTlRJICAg ICAgICAgICAgICAgIEJJVCgyMCkNCj4+ICsvKiBMUE0gIEwyIHN0YXRlIGV4aXQgZGV0ZWN0ZWQu Ki8NCj4+ICsjZGVmaW5lIFVTQl9JU1RTX0wyRVhUSSAgICAgICAgICAgICAgICBCSVQoMjEpDQo+ PiArLyogTFBNIEwxIHN0YXRlIGVudGVyIGRldGVjdGVkLiovDQo+PiArI2RlZmluZSBVU0JfSVNU U19MMUVOVEkgICAgICAgICAgICAgICAgQklUKDI0KQ0KPj4gKy8qIExQTSBMMSBzdGF0ZSBleGl0 IGRldGVjdGVkLiovDQo+PiArI2RlZmluZSBVU0JfSVNUU19MMUVYVEkgICAgICAgICAgICAgICAg QklUKDI1KQ0KPj4gKy8qIFVTQiBjb25maWd1cmF0aW9uIHJlc2V0IGRldGVjdGVkLiovDQo+PiAr I2RlZmluZSBVU0JfSVNUU19DRkdSRVNJICAgICAgIEJJVCgyNikNCj4+ICsvKiBTdGFydCBvZiB0 aGUgVVNCIHdhcm0gcmVzZXQgZGV0ZWN0ZWQuKi8NCj4+ICsjZGVmaW5lIFVTQl9JU1RTX1VXUkVT U0kgICAgICAgQklUKDI4KQ0KPj4gKy8qIEVuZCBvZiB0aGUgVVNCIHdhcm0gcmVzZXQgZGV0ZWN0 ZWQuKi8NCj4+ICsjZGVmaW5lIFVTQl9JU1RTX1VXUkVTRUkgICAgICAgQklUKDI5KQ0KPj4gKw0K Pj4gKy8qIFVTQl9TRUwgLSBiaXRtYXNrcyAqLw0KPj4gKyNkZWZpbmUgRVBfU0VMX0VQTk9fTUFT SyAgICAgICBHRU5NQVNLKDMsIDApDQo+PiArLyogRW5kcG9pbnQgbnVtYmVyLiAqLw0KPj4gKyNk ZWZpbmUgRVBfU0VMX0VQTk8ocCkgICAgICAgICAoKHApICYgRVBfU0VMX0VQTk9fTUFTSykNCj4+ ICsvKiBFbmRwb2ludCBkaXJlY3Rpb24gYml0IC0gMCAtIE9VVCwgMSAtIElOLiAqLw0KPj4gKyNk ZWZpbmUgRVBfU0VMX0RJUiAgICAgICAgICAgICBCSVQoNykNCj4+ICsNCj4+ICsjZGVmaW5lIHNl bGVjdF9lcF9pbihucikgICAgICAgKEVQX1NFTF9FUE5PKHApIHwgRVBfU0VMX0RJUikNCj4+ICsj ZGVmaW5lIHNlbGVjdF9lcF9vdXQgICAgICAgICAgKEVQX1NFTF9FUE5PKHApKQ0KPj4gKw0KPj4g Ky8qIEVQX1RSQUREUiAtIGJpdG1hc2tzICovDQo+PiArLyogVHJhbnNmZXIgUmluZyBhZGRyZXNz LiAqLw0KPj4gKyNkZWZpbmUgRVBfVFJBRERSX1RSQUREUihwKSAgICAoKHApKQ0KPj4gKw0KPj4g Ky8qIEVQX0NGRyAtIGJpdG1hc2tzICovDQo+PiArLyogRW5kcG9pbnQgZW5hYmxlICovDQo+PiAr I2RlZmluZSBFUF9DRkdfRU5BQkxFICAgICAgICAgIEJJVCgwKQ0KPj4gKy8qDQo+PiArICogIEVu ZHBvaW50IHR5cGUuDQo+PiArICogMSAtIGlzb2Nocm9ub3VzDQo+PiArICogMiAtIGJ1bGsNCj4+ ICsgKiAzIC0gaW50ZXJydXB0DQo+PiArICovDQo+PiArI2RlZmluZSBFUF9DRkdfRVBUWVBFX01B U0sgICAgIEdFTk1BU0soMiwgMSkNCj4+ICsjZGVmaW5lIEVQX0NGR19FUFRZUEUocCkgICAgICAg KCgocCkgPDwgMSkgICYgRVBfQ0ZHX0VQVFlQRV9NQVNLKQ0KPj4gKy8qIFN0cmVhbSBzdXBwb3J0 IGVuYWJsZSAob25seSBpbiBTUyBtb2RlKS4gKi8NCj4+ICsjZGVmaW5lIEVQX0NGR19TVFJFQU1f RU4gICAgICAgQklUKDMpDQo+PiArLyogVERMIGNoZWNrIChvbmx5IGluIFNTIG1vZGUgZm9yIEJV TEsgRVApLiAqLw0KPj4gKyNkZWZpbmUgRVBfQ0ZHX1RETF9DSEsgICAgICAgICBCSVQoNCkNCj4+ ICsvKiBTSUQgY2hlY2sgKG9ubHkgaW4gU1MgbW9kZSBmb3IgQlVMSyBPVVQgRVApLiAqLw0KPj4g KyNkZWZpbmUgRVBfQ0ZHX1NJRF9DSEsgICAgICAgICBCSVQoNSkNCj4+ICsvKiBETUEgdHJhbnNm ZXIgZW5kaWFubmVzcy4gKi8NCj4+ICsjZGVmaW5lIEVQX0NGR19FUEVORElBTiAgICAgICAgICAg ICAgICBCSVQoNykNCj4+ICsvKiBNYXggYnVyc3Qgc2l6ZSAodXNlZCBvbmx5IGluIFNTIG1vZGUp LiAqLw0KPj4gKyNkZWZpbmUgRVBfQ0ZHX01BWEJVUlNUX01BU0sgICBHRU5NQVNLKDExLCA4KQ0K Pj4gKyNkZWZpbmUgRVBfQ0ZHX01BWEJVUlNUKHApICAgICAoKChwKSA8PCA4KSAmIEVQX0NGR19N QVhCVVJTVF9NQVNLKQ0KPj4gKy8qIElTTyBtYXggYnVyc3QuICovDQo+PiArI2RlZmluZSBFUF9D RkdfTVVMVF9NQVNLICAgICAgIEdFTk1BU0soMTUsIDE0KQ0KPj4gKyNkZWZpbmUgRVBfQ0ZHX01V TFQocCkgICAgICAgICAoKChwKSA8PCAxNCkgJiBFUF9DRkdfTVVMVF9NQVNLKQ0KPj4gKy8qIElT TyBtYXggYnVyc3QuICovDQo+PiArI2RlZmluZSBFUF9DRkdfTUFYUEtUU0laRV9NQVNLIEdFTk1B U0soMjYsIDE2KQ0KPj4gKyNkZWZpbmUgRVBfQ0ZHX01BWFBLVFNJWkUocCkgICAoKChwKSA8PCAx NikgJiBFUF9DRkdfTUFYUEtUU0laRV9NQVNLKQ0KPj4gKy8qIE1heCBudW1iZXIgb2YgYnVmZmVy ZWQgcGFja2V0cy4gKi8NCj4+ICsjZGVmaW5lIEVQX0NGR19CVUZGRVJJTkdfTUFTSyAgR0VOTUFT SygzMSwgMjcpDQo+PiArI2RlZmluZSBFUF9DRkdfQlVGRkVSSU5HKHApICAgICgoKHApIDw8IDI3 KSAmIEVQX0NGR19CVUZGRVJJTkdfTUFTSykNCj4+ICsNCj4+ICsvKiBFUF9DTUQgLSBiaXRtYXNr cyAqLw0KPj4gKy8qIEVuZHBvaW50IHJlc2V0LiAqLw0KPj4gKyNkZWZpbmUgRVBfQ01EX0VQUlNU ICAgICAgICAgICBCSVQoMCkNCj4+ICsvKiBFbmRwb2ludCBTVEFMTCBzZXQuICovDQo+PiArI2Rl ZmluZSBFUF9DTURfU1NUQUxMICAgICAgICAgIEJJVCgxKQ0KPj4gKy8qIEVuZHBvaW50IFNUQUxM IGNsZWFyLiAqLw0KPj4gKyNkZWZpbmUgRVBfQ01EX0NTVEFMTCAgICAgICAgICBCSVQoMikNCj4+ ICsvKiBTZW5kIEVSRFkgVFAuICovDQo+PiArI2RlZmluZSBFUF9DTURfRVJEWSAgICAgICAgICAg IEJJVCgzKQ0KPj4gKy8qIFJlcXVlc3QgY29tcGxldGUuICovDQo+PiArI2RlZmluZSBFUF9DTURf UkVRX0NNUEwgICAgICAgICAgICAgICAgQklUKDUpDQo+PiArLyogVHJhbnNmZXIgZGVzY3JpcHRv ciByZWFkeS4gKi8NCj4+ICsjZGVmaW5lIEVQX0NNRF9EUkRZICAgICAgICAgICAgQklUKDYpDQo+ PiArLyogRGF0YSBmbHVzaC4gKi8NCj4+ICsjZGVmaW5lIEVQX0NNRF9ERkxVU0ggICAgICAgICAg QklUKDcpDQo+PiArLyoNCj4+ICsgKiBUcmFuc2ZlciBEZXNjcmlwdG9yIExlbmd0aCB3cml0ZSAg KHVzZWQgb25seSBmb3IgQnVsayBTdHJlYW0gY2FwYWJsZQ0KPj4gKyAqIGVuZHBvaW50cyBpbiBT UyBtb2RlKS4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIEVQX0NNRF9TVERMICAgICAgICAgICAgQklU KDgpDQo+PiArLyogVHJhbnNmZXIgRGVzY3JpcHRvciBMZW5ndGggKHVzZWQgb25seSBpbiBTUyBt b2RlIGZvciBidWxrIGVuZHBvaW50cykuICovDQo+PiArI2RlZmluZSBFUF9DTURfVERMX01BU0sg ICAgICAgICAgICAgICAgR0VOTUFTSygxNSwgOSkNCj4+ICsjZGVmaW5lIEVQX0NNRF9UREwocCkg ICAgICAgICAgKCgocCkgPDwgOSkgJiBFUF9DTURfVERMX01BU0spDQo+PiArLyogRVJEWSBTdHJl YW0gSUQgdmFsdWUgKHVzZWQgaW4gU1MgbW9kZSkuICovDQo+PiArI2RlZmluZSBFUF9DTURfRVJE WV9TSURfTUFTSyAgIEdFTk1BU0soMzEsIDE2KQ0KPj4gKyNkZWZpbmUgRVBfQ01EX0VSRFlfU0lE KHApICAgICAoKChwKSA8PCAxNikgJiBFUF9DTURfU0lEX01BU0spDQo+PiArDQo+PiArLyogRVBf U1RTIC0gYml0bWFza3MgKi8NCj4+ICsvKiBTZXR1cCB0cmFuc2ZlciBjb21wbGV0ZS4gKi8NCj4+ ICsjZGVmaW5lIEVQX1NUU19TRVRVUCAgICAgICAgICAgQklUKDApDQo+PiArLyogRW5kcG9pbnQg U1RBTEwgc3RhdHVzLiAqLw0KPj4gKyNkZWZpbmUgRVBfU1RTX1NUQUxMKHApICAgICAgICAgICAg ICAgICgocCkgJiBCSVQoMSkpDQo+PiArLyogSW50ZXJydXB0IE9uIENvbXBsZXRlLiAqLw0KPj4g KyNkZWZpbmUgRVBfU1RTX0lPQyAgICAgICAgICAgICBCSVQoMikNCj4+ICsvKiBJbnRlcnJ1cHQg b24gU2hvcnQgUGFja2V0LiAqLw0KPj4gKyNkZWZpbmUgRVBfU1RTX0lTUCAgICAgICAgICAgICBC SVQoMykNCj4+ICsvKiBUcmFuc2ZlciBkZXNjcmlwdG9yIG1pc3NpbmcuICovDQo+PiArI2RlZmlu ZSBFUF9TVFNfREVTQ01JUyAgICAgICAgIEJJVCg0KQ0KPj4gKy8qIFN0cmVhbSBSZWplY3RlZCAo dXNlZCBvbmx5IGluIFNTIG1vZGUpICovDQo+PiArI2RlZmluZSBFUF9TVFNfU1RSRUFNUiAgICAg ICAgIEJJVCg1KQ0KPj4gKy8qIEVYSVQgZnJvbSBNT1ZFIERBVEEgU3RhdGUgKHVzZWQgb25seSBm b3Igc3RyZWFtIHRyYW5zZmVycyBpbiBTUyBtb2RlKS4gKi8NCj4+ICsjZGVmaW5lIEVQX1NUU19N RF9FWElUICAgICAgICAgQklUKDYpDQo+PiArLyogVFJCIGVycm9yLiAqLw0KPj4gKyNkZWZpbmUg RVBfU1RTX1RSQkVSUiAgICAgICAgICBCSVQoNykNCj4+ICsvKiBOb3QgcmVhZHkgKHVzZWQgb25s eSBpbiBTUyBtb2RlKS4gKi8NCj4+ICsjZGVmaW5lIEVQX1NUU19OUkRZICAgICAgICAgICAgQklU KDgpDQo+PiArLyogRE1BIGJ1c3kuICovDQo+PiArI2RlZmluZSBFUF9TVFNfREJVU1kocCkgICAg ICAgICAgICAgICAgKChwKSAmIEJJVCg5KSkNCj4+ICsvKiBFbmRwb2ludCBCdWZmZXIgRW1wdHkg Ki8NCj4+ICsjZGVmaW5lIEVQX1NUU19CVUZGRU1QVFkocCkgICAgKChwKSAmIEJJVCgxMCkpDQo+ PiArLyogQ3VycmVudCBDeWNsZSBTdGF0dXMgKi8NCj4+ICsjZGVmaW5lIEVQX1NUU19DQ1MocCkg ICAgICAgICAgKChwKSAmIEJJVCgxMSkpDQo+PiArLyogUHJpbWUgKHVzZWQgb25seSBpbiBTUyBt b2RlLiAqLw0KPj4gKyNkZWZpbmUgRVBfU1RTX1BSSU1FICAgICAgICAgICBCSVQoMTIpDQo+PiAr LyogU3RyZWFtIGVycm9yICh1c2VkIG9ubHkgaW4gU1MgbW9kZSkuICovDQo+PiArI2RlZmluZSBF UF9TVFNfU0lERVJSICAgICAgICAgIEJJVCgxMykNCj4+ICsvKiBPVVQgc2l6ZSBtaXNtYXRjaC4g Ki8NCj4+ICsjZGVmaW5lIEVQX1NUU19PVVRTTU0gICAgICAgICAgQklUKDE0KQ0KPj4gKy8qIElT TyB0cmFuc21pc3Npb24gZXJyb3IuICovDQo+PiArI2RlZmluZSBFUF9TVFNfSVNPRVJSICAgICAg ICAgIEJJVCgxNSkNCj4+ICsvKiBIb3N0IFBhY2tldCBQZW5kaW5nIChvbmx5IGZvciBTUyBtb2Rl KS4gKi8NCj4+ICsjZGVmaW5lIEVQX1NUU19IT1NUUFAocCkgICAgICAgKChwKSAmIEJJVCgxNikp DQo+PiArLyogU3RyZWFtIFByb3RvY29sIFN0YXRlIE1hY2hpbmUgU3RhdGUgKG9ubHkgZm9yIEJ1 bGsgc3RyZWFtIGVuZHBvaW50cykuICovDQo+PiArI2RlZmluZSBFUF9TVFNfU1BTTVNUX01BU0sg ICAgICAgICAgICAgR0VOTUFTSygxOCwgMTcpDQo+PiArI2RlZmluZSBFUF9TVFNfU1BTTVNUX0RJ U0FCTEVEKHApICAgICAgKCgocCkgJiBFUF9TVFNfU1BTTVNUX01BU0spID4+IDE3KQ0KPj4gKyNk ZWZpbmUgRVBfU1RTX1NQU01TVF9JRExFKHApICAgICAgICAgICgoKHApICYgRVBfU1RTX1NQU01T VF9NQVNLKSA+PiAxNykNCj4+ICsjZGVmaW5lIEVQX1NUU19TUFNNU1RfU1RBUlRfU1RSRUFNKHAp ICAoKChwKSAmIEVQX1NUU19TUFNNU1RfTUFTSykgPj4gMTcpDQo+PiArI2RlZmluZSBFUF9TVFNf U1BTTVNUX01PVkVfREFUQShwKSAgICAgKCgocCkgJiBFUF9TVFNfU1BTTVNUX01BU0spID4+IDE3 KQ0KPj4gKy8qIEludGVycnVwdCBPbiBUcmFuc2ZlciBjb21wbGV0ZS4gKi8NCj4+ICsjZGVmaW5l IEVQX1NUU19JT1QgICAgICAgICAgICAgQklUKDE5KQ0KPj4gKy8qIE9VVCBxdWV1ZSBlbmRwb2lu dCBudW1iZXIuICovDQo+PiArI2RlZmluZSBFUF9TVFNfT1VUUV9OT19NQVNLICAgIEdFTk1BU0so MjcsIDI0KQ0KPj4gKyNkZWZpbmUgRVBfU1RTX09VVFFfTk8ocCkgICAgICAoKChwKSAmIEVQX1NU U19PVVRRX05PX01BU0spID4+IDI0KQ0KPj4gKy8qIE9VVCBxdWV1ZSB2YWxpZCBmbGFnLiAqLw0K Pj4gKyNkZWZpbmUgRVBfU1RTX09VVFFfVkFMX01BU0sgICBCSVQoMjgpDQo+PiArI2RlZmluZSBF UF9TVFNfT1VUUV9WQUwocCkgICAgICgocCkgJiBFUF9TVFNfT1VUUV9WQUxfTUFTSykNCj4+ICsv KiBTRVRVUCBXQUlULiAqLw0KPj4gKyNkZWZpbmUgRVBfU1RTX1NUUFdBSVQgICAgICAgICBCSVQo MzEpDQo+PiArDQo+PiArLyogRVBfU1RTX1NJRCAtIGJpdG1hc2tzICovDQo+PiArLyogU3RyZWFt IElEICh1c2VkIG9ubHkgaW4gU1MgbW9kZSkuICovDQo+PiArI2RlZmluZSBFUF9TVFNfU0lEX01B U0sgICAgICAgICAgICAgICAgR0VOTUFTSygxNSwgMCkNCj4+ICsjZGVmaW5lIEVQX1NUU19TSUQo cCkgICAgICAgICAgKChwKSAmIEVQX1NUU19TSURfTUFTSykNCj4+ICsNCj4+ICsvKiBFUF9TVFNf RU4gLSBiaXRtYXNrcyAqLw0KPj4gKy8qIFNFVFVQIGludGVycnVwdCBlbmFibGUuICovDQo+PiAr I2RlZmluZSBFUF9TVFNfRU5fU0VUVVBFTiAgICAgIEJJVCgwKQ0KPj4gKy8qIE9VVCB0cmFuc2Zl ciBtaXNzaW5nIGRlc2NyaXB0b3IgZW5hYmxlLiAqLw0KPj4gKyNkZWZpbmUgRVBfU1RTX0VOX0RF U0NNSVNFTiAgICBCSVQoNCkNCj4+ICsvKiBTdHJlYW0gUmVqZWN0ZWQgZW5hYmxlLiAqLw0KPj4g KyNkZWZpbmUgRVBfU1RTX0VOX1NUUkVBTVJFTiAgICBCSVQoNSkNCj4+ICsvKiBNb3ZlIERhdGEg RXhpdCBlbmFibGUuKi8NCj4+ICsjZGVmaW5lIEVQX1NUU19FTl9NRF9FWElURU4gICAgQklUKDYp DQo+PiArLyogVFJCIGVuYWJsZS4gKi8NCj4+ICsjZGVmaW5lIEVQX1NUU19FTl9UUkJFUlJFTiAg ICAgQklUKDcpDQo+PiArLyogTlJEWSBlbmFibGUuICovDQo+PiArI2RlZmluZSBFUF9TVFNfRU5f TlJEWUVOICAgICAgIEJJVCg4KQ0KPj4gKy8qIFByaW1lIGVuYWJsZS4gKi8NCj4+ICsjZGVmaW5l IEVQX1NUU19FTl9QUklNRUVFTiAgICAgQklUKDEyKQ0KPj4gKy8qIFN0cmVhbSBlcnJvciBlbmFi bGUuICovDQo+PiArI2RlZmluZSBFUF9TVFNfRU5fU0lERVJSRU4gICAgIEJJVCgxMykNCj4+ICsv KiBPVVQgc2l6ZSBtaXNtYXRjaCBlbmFibGUuICovDQo+PiArI2RlZmluZSBFUF9TVFNfRU5fT1VU U01NRU4gICAgIEJJVCgxNCkNCj4+ICsvKiBJU08gdHJhbnNtaXNzaW9uIGVycm9yIGVuYWJsZS4g Ki8NCj4+ICsjZGVmaW5lIEVQX1NUU19FTl9JU09FUlJFTiAgICAgQklUKDE1KQ0KPj4gKy8qIElu dGVycnVwdCBvbiBUcmFuc21pc3Npb24gY29tcGxldGUgZW5hYmxlLiAqLw0KPj4gKyNkZWZpbmUg RVBfU1RTX0VOX0lPVEVOICAgICAgICAgICAgICAgIEJJVCgxOSkNCj4+ICsvKiBTZXR1cCBXYWl0 IGludGVycnVwdCBlbmFibGUuICovDQo+PiArI2RlZmluZSBFUF9TVFNfRU5fU1RQV0FJVEVOICAg IEJJVCgzMSkNCj4+ICsNCj4+ICsvKiBEUkJMLSBiaXRtYXNrcyAqLw0KPj4gKyNkZWZpbmUgREJf VkFMVUVfQllfSU5ERVgoaW5kZXgpICgxIDw8IChpbmRleCkpDQo+PiArI2RlZmluZSBEQl9WQUxV RV9FUDBfT1VUICAgICAgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgREJfVkFMVUVfRVAwX0lOICAgICAg ICAgICAgICAgIEJJVCgxNikNCj4+ICsNCj4+ICsvKiBFUF9JRU4gLSBiaXRtYXNrcyAqLw0KPj4g KyNkZWZpbmUgRVBfSUVOKGluZGV4KSAgICAgICAgICAoMSA8PCAoaW5kZXgpKQ0KPj4gKyNkZWZp bmUgRVBfSUVOX0VQX09VVDAgICAgICAgICBCSVQoMCkNCj4+ICsjZGVmaW5lIEVQX0lFTl9FUF9J TjAgICAgICAgICAgQklUKDE2KQ0KPj4gKw0KPj4gKy8qIEVQX0lTVFMgLSBiaXRtYXNrcyAqLw0K Pj4gKyNkZWZpbmUgRVBfSVNUUyhpbmRleCkgICAgICAgICAoMSA8PCAoaW5kZXgpKQ0KPj4gKyNk ZWZpbmUgRVBfSVNUU19FUF9PVVQwICAgICAgICAgICAgICAgIEJJVCgwKQ0KPj4gKyNkZWZpbmUg RVBfSVNUU19FUF9JTjAgICAgICAgICBCSVQoMTYpDQo+PiArDQo+PiArLyogRVBfUFdSLSBiaXRt YXNrcyAqLw0KPj4gKy8qUG93ZXIgU2h1dCBPZmYgY2FwYWJpbGl0eSBlbmFibGUqLw0KPj4gKyNk ZWZpbmUgUFVTQl9QV1JfUFNPX0VOICAgICAgICAgICAgICAgIEJJVCgwKQ0KPj4gKy8qUG93ZXIg U2h1dCBPZmYgY2FwYWJpbGl0eSBkaXNhYmxlKi8NCj4+ICsjZGVmaW5lIFBVU0JfUFdSX1BTT19E UyAgICAgICAgICAgICAgICBCSVQoMSkNCj4+ICsvKg0KPj4gKyAqIEVuYWJsZXMgdHVybmluZy1v ZmYgUmVmZXJlbmNlIENsb2NrLg0KPj4gKyAqIFRoaXMgYml0IGlzIG9wdGlvbmFsIGFuZCBpbXBs ZW1lbnRlZCBvbmx5IHdoZW4gc3VwcG9ydCBmb3IgT1RHIGlzDQo+PiArICogaW1wbGVtZW50ZWQg KGluZGljYXRlZCBieSBPVEdfUkVBRFkgYml0IHNldCB0byAnMScpLg0KPj4gKyAqLw0KPj4gKyNk ZWZpbmUgUFVTQl9QV1JfU1RCX0NMS19TV0lUQ0hfRU4gICAgIEJJVCg4KQ0KPj4gKy8qDQo+PiAr ICogU3RhdHVzIGJpdCBpbmRpY2F0aW5nIHRoYXQgb3BlcmF0aW9uIHJlcXVpcmVkIGJ5IFNUQl9D TEtfU1dJVENIX0VOIHdyaXRlDQo+PiArICogaXMgY29tcGxldGVkDQo+PiArICovDQo+PiArI2Rl ZmluZSBQVVNCX1BXUl9TVEJfQ0xLX1NXSVRDSF9ET05FICAgQklUKDkpDQo+PiArLyogVGhpcyBi aXQgaW5mb3JtcyBpZiBGYXN0IFJlZ2lzdGVycyBBY2Nlc3MgaXMgZW5hYmxlZC4gKi8NCj4+ICsj ZGVmaW5lIFBVU0JfUFdSX0ZTVF9SRUdfQUNDRVNTX1NUQVQgICBCSVQoMzApDQo+PiArLyogRmFz dCBSZWdpc3RlcnMgQWNjZXNzIEVuYWJsZS4gKi8NCj4+ICsjZGVmaW5lIFBVU0JfUFdSX0ZTVF9S RUdfQUNDRVNTICAgICAgICBCSVQoMzEpDQo+PiArDQo+PiArLyogVVNCX0NBUDEtIGJpdG1hc2tz ICovDQo+PiArLyoNCj4+ICsgKiBTRlIgSW50ZXJmYWNlIHR5cGUNCj4+ICsgKiBUaGVzZSBmaWVs ZCByZWZsZWN0cyB0eXBlIG9mIFNGUiBpbnRlcmZhY2UgaW1wbGVtZW50ZWQ6DQo+PiArICogMHgw IC0gT0NQDQo+PiArICogMHgxIC0gQUhCLA0KPj4gKyAqIDB4MiAtIFBMQg0KPj4gKyAqIDB4MyAt IEFYSQ0KPj4gKyAqIDB4NC0weEYgLSByZXNlcnZlZA0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgVVNC X0NBUDFfU0ZSX1RZUEVfTUFTSyBHRU5NQVNLKDMsIDApDQo+PiArI2RlZmluZSBERVZfU0ZSX1RZ UEVfT0NQKHApICAgICgoKHApICYgVVNCX0NBUDFfU0ZSX1RZUEVfTUFTSykgPT0gMHgwKQ0KPj4g KyNkZWZpbmUgREVWX1NGUl9UWVBFX0FIQihwKSAgICAoKChwKSAmIFVTQl9DQVAxX1NGUl9UWVBF X01BU0spID09IDB4MSkNCj4+ICsjZGVmaW5lIERFVl9TRlJfVFlQRV9QTEIocCkgICAgKCgocCkg JiBVU0JfQ0FQMV9TRlJfVFlQRV9NQVNLKSA9PSAweDIpDQo+PiArI2RlZmluZSBERVZfU0ZSX1RZ UEVfQVhJKHApICAgICgoKHApICYgVVNCX0NBUDFfU0ZSX1RZUEVfTUFTSykgPT0gMHgzKQ0KPj4g Ky8qDQo+PiArICogU0ZSIEludGVyZmFjZSB3aWR0aA0KPj4gKyAqIFRoZXNlIGZpZWxkIHJlZmxl Y3RzIHdpZHRoIG9mIFNGUiBpbnRlcmZhY2UgaW1wbGVtZW50ZWQ6DQo+PiArICogMHgwIC0gOCBi aXQgaW50ZXJmYWNlLA0KPj4gKyAqIDB4MSAtIDE2IGJpdCBpbnRlcmZhY2UsDQo+PiArICogMHgy IC0gMzIgYml0IGludGVyZmFjZQ0KPj4gKyAqIDB4MyAtIDY0IGJpdCBpbnRlcmZhY2UNCj4+ICsg KiAweDQtMHhGIC0gcmVzZXJ2ZWQNCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9DQVAxX1NGUl9X SURUSF9NQVNLICAgICAgICBHRU5NQVNLKDcsIDQpDQo+PiArI2RlZmluZSBERVZfU0ZSX1dJRFRI XzgocCkgICAgICgoKHApICYgVVNCX0NBUDFfU0ZSX1dJRFRIX01BU0spID09ICgweDAgPDwgNCkp DQo+PiArI2RlZmluZSBERVZfU0ZSX1dJRFRIXzE2KHApICAgICgoKHApICYgVVNCX0NBUDFfU0ZS X1dJRFRIX01BU0spID09ICgweDEgPDwgNCkpDQo+PiArI2RlZmluZSBERVZfU0ZSX1dJRFRIXzMy KHApICAgICgoKHApICYgVVNCX0NBUDFfU0ZSX1dJRFRIX01BU0spID09ICgweDIgPDwgNCkpDQo+ PiArI2RlZmluZSBERVZfU0ZSX1dJRFRIXzY0KHApICAgICgoKHApICYgVVNCX0NBUDFfU0ZSX1dJ RFRIX01BU0spID09ICgweDMgPDwgNCkpDQo+PiArLyoNCj4+ICsgKiBETUEgSW50ZXJmYWNlIHR5 cGUNCj4+ICsgKiBUaGVzZSBmaWVsZCByZWZsZWN0cyB0eXBlIG9mIERNQSBpbnRlcmZhY2UgaW1w bGVtZW50ZWQ6DQo+PiArICogMHgwIC0gT0NQDQo+PiArICogMHgxIC0gQUhCLA0KPj4gKyAqIDB4 MiAtIFBMQg0KPj4gKyAqIDB4MyAtIEFYSQ0KPj4gKyAqIDB4NC0weEYgLSByZXNlcnZlZA0KPj4g KyAqLw0KPj4gKyNkZWZpbmUgVVNCX0NBUDFfRE1BX1RZUEVfTUFTSyBHRU5NQVNLKDExLCA4KQ0K Pj4gKyNkZWZpbmUgREVWX0RNQV9UWVBFX09DUChwKSAgICAoKChwKSAmIFVTQl9DQVAxX0RNQV9U WVBFX01BU0spID09ICgweDAgPDwgOCkpDQo+PiArI2RlZmluZSBERVZfRE1BX1RZUEVfQUhCKHAp ICAgICgoKHApICYgVVNCX0NBUDFfRE1BX1RZUEVfTUFTSykgPT0gKDB4MSA8PCA4KSkNCj4+ICsj ZGVmaW5lIERFVl9ETUFfVFlQRV9QTEIocCkgICAgKCgocCkgJiBVU0JfQ0FQMV9ETUFfVFlQRV9N QVNLKSA9PSAoMHgyIDw8IDgpKQ0KPj4gKyNkZWZpbmUgREVWX0RNQV9UWVBFX0FYSShwKSAgICAo KChwKSAmIFVTQl9DQVAxX0RNQV9UWVBFX01BU0spID09ICgweDMgPDwgOCkpDQo+PiArLyoNCj4+ ICsgKiBETUEgSW50ZXJmYWNlIHdpZHRoDQo+PiArICogVGhlc2UgZmllbGQgcmVmbGVjdHMgd2lk dGggb2YgRE1BIGludGVyZmFjZSBpbXBsZW1lbnRlZDoNCj4+ICsgKiAweDAgLSByZXNlcnZlZCwN Cj4+ICsgKiAweDEgLSByZXNlcnZlZCwNCj4+ICsgKiAweDIgLSAzMiBiaXQgaW50ZXJmYWNlDQo+ PiArICogMHgzIC0gNjQgYml0IGludGVyZmFjZQ0KPj4gKyAqIDB4NC0weEYgLSByZXNlcnZlZA0K Pj4gKyAqLw0KPj4gKyNkZWZpbmUgVVNCX0NBUDFfRE1BX1dJRFRIX01BU0sgICAgICAgIEdFTk1B U0soMTUsIDEyKQ0KPj4gKyNkZWZpbmUgREVWX0RNQV9XSURUSF8zMihwKSAgICAoKChwKSAmIFVT Ql9DQVAxX0RNQV9XSURUSF9NQVNLKSA9PSAoMHgyIDw8IDEyKSkNCj4+ICsjZGVmaW5lIERFVl9E TUFfV0lEVEhfNjQocCkgICAgKCgocCkgJiBVU0JfQ0FQMV9ETUFfV0lEVEhfTUFTSykgPT0gKDB4 MyA8PCAxMikpDQo+PiArLyoNCj4+ICsgKiBVU0IzIFBIWSBJbnRlcmZhY2UgdHlwZQ0KPj4gKyAq IFRoZXNlIGZpZWxkIHJlZmxlY3RzIHR5cGUgb2YgVVNCMyBQSFkgaW50ZXJmYWNlIGltcGxlbWVu dGVkOg0KPj4gKyAqIDB4MCAtIFVTQiBQSVBFLA0KPj4gKyAqIDB4MSAtIFJNTUksDQo+PiArICog MHgyLTB4RiAtIHJlc2VydmVkDQo+PiArICovDQo+PiArI2RlZmluZSBVU0JfQ0FQMV9VM1BIWV9U WVBFX01BU0sgR0VOTUFTSygxOSwgMTYpDQo+PiArI2RlZmluZSBERVZfVTNQSFlfUElQRShwKSAo KChwKSAmIFVTQl9DQVAxX1UzUEhZX1RZUEVfTUFTSykgPT0gKDB4MCA8PCAxNikpDQo+PiArI2Rl ZmluZSBERVZfVTNQSFlfUk1NSShwKSAoKChwKSAmIFVTQl9DQVAxX1UzUEhZX1RZUEVfTUFTSykg PT0gKDB4MSA8PCAxNikpDQo+PiArLyoNCj4+ICsgKiBVU0IzIFBIWSBJbnRlcmZhY2Ugd2lkdGgN Cj4+ICsgKiBUaGVzZSBmaWVsZCByZWZsZWN0cyB3aWR0aCBvZiBVU0IzIFBIWSBpbnRlcmZhY2Ug aW1wbGVtZW50ZWQ6DQo+PiArICogMHgwIC0gOCBiaXQgUElQRSBpbnRlcmZhY2UsDQo+PiArICog MHgxIC0gMTYgYml0IFBJUEUgaW50ZXJmYWNlLA0KPj4gKyAqIDB4MiAtIDMyIGJpdCBQSVBFIGlu dGVyZmFjZSwNCj4+ICsgKiAweDMgLSA2NCBiaXQgUElQRSBpbnRlcmZhY2UNCj4+ICsgKiAweDQt MHhGIC0gcmVzZXJ2ZWQNCj4+ICsgKiBOb3RlOiBXaGVuIFNTSUMgaW50ZXJmYWNlIGlzIGltcGxl bWVudGVkIHRoaXMgZmllbGQgc2hvd3MgdGhlIHdpZHRoIG9mDQo+PiArICogaW50ZXJuYWwgUElQ RSBpbnRlcmZhY2UuIFRoZSBSTU1JIGludGVyZmFjZSBpcyBhbHdheXMgMjBiaXQgd2lkZS4NCj4+ ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9DQVAxX1UzUEhZX1dJRFRIX01BU0sgR0VOTUFTSygyMywg MjApDQo+PiArI2RlZmluZSBERVZfVTNQSFlfV0lEVEhfOChwKSBcDQo+PiArICAgICAgICgoKHAp ICYgVVNCX0NBUDFfVTNQSFlfV0lEVEhfTUFTSykgPT0gKDB4MCA8PCAyMCkpDQo+PiArI2RlZmlu ZSBERVZfVTNQSFlfV0lEVEhfMTYocCkgXA0KPj4gKyAgICAgICAoKChwKSAmIFVTQl9DQVAxX1Uz UEhZX1dJRFRIX01BU0spID09ICgweDEgPDwgMTYpKQ0KPj4gKyNkZWZpbmUgREVWX1UzUEhZX1dJ RFRIXzMyKHApIFwNCj4+ICsgICAgICAgKCgocCkgJiBVU0JfQ0FQMV9VM1BIWV9XSURUSF9NQVNL KSA9PSAoMHgyIDw8IDIwKSkNCj4+ICsjZGVmaW5lIERFVl9VM1BIWV9XSURUSF82NChwKSBcDQo+ PiArICAgICAgICgoKHApICYgVVNCX0NBUDFfVTNQSFlfV0lEVEhfTUFTSykgPT0gKDB4MyA8PCAx NikpDQo+PiArDQo+PiArLyoNCj4+ICsgKiBVU0IyIFBIWSBJbnRlcmZhY2UgZW5hYmxlDQo+PiAr ICogVGhlc2UgZmllbGQgaW5mb3JtcyBpZiBVU0IyIFBIWSBpbnRlcmZhY2UgaXMgaW1wbGVtZW50 ZWQ6DQo+PiArICogMHgwIC0gaW50ZXJmYWNlIE5PVCBpbXBsZW1lbnRlZCwNCj4+ICsgKiAweDEg LSBpbnRlcmZhY2UgaW1wbGVtZW50ZWQNCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVTQl9DQVAxX1Uy UEhZX0VOKHApICAgKChwKSAmIEJJVCgyNCkpDQo+PiArLyoNCj4+ICsgKiBVU0IyIFBIWSBJbnRl cmZhY2UgdHlwZQ0KPj4gKyAqIFRoZXNlIGZpZWxkIHJlZmxlY3RzIHR5cGUgb2YgVVNCMiBQSFkg aW50ZXJmYWNlIGltcGxlbWVudGVkOg0KPj4gKyAqIDB4MCAtIFVUTUksDQo+PiArICogMHgxIC0g VUxQSQ0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgREVWX1UyUEhZX1VMUEkocCkgICAgICAoKHApICYg QklUKDI1KSkNCj4+ICsvKg0KPj4gKyAqIFVTQjIgUEhZIEludGVyZmFjZSB3aWR0aA0KPj4gKyAq IFRoZXNlIGZpZWxkIHJlZmxlY3RzIHdpZHRoIG9mIFVTQjIgUEhZIGludGVyZmFjZSBpbXBsZW1l bnRlZDoNCj4+ICsgKiAweDAgLSA4IGJpdCBpbnRlcmZhY2UsDQo+PiArICogMHgxIC0gMTYgYml0 IGludGVyZmFjZSwNCj4+ICsgKiBOb3RlOiBUaGUgVUxQSSBpbnRlcmZhY2UgaXMgYWx3YXlzIDhi aXQgd2lkZS4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIERFVl9VMlBIWV9XSURUSF8xNihwKSAgKChw KSAmIEJJVCgyNikpDQo+PiArLyoNCj4+ICsgKiBPVEcgUmVhZHkNCj4+ICsgKiAweDAgLSBwdXJl IGRldmljZSBtb2RlDQo+PiArICogMHgxIC0gc29tZSBmZWF0dXJlcyBhbmQgcG9ydHMgZm9yIENE TlMgVVNCIE9URyBjb250cm9sbGVyIGFyZSBpbXBsZW1lbnRlZC4NCj4+ICsgKi8NCj4+ICsjZGVm aW5lIFVTQl9DQVAxX09UR19SRUFEWShwKSAgKChwKSAmIEJJVCgyNykpDQo+PiArDQo+PiArLyog VVNCX0NBUDItIGJpdG1hc2tzICovDQo+PiArLyoNCj4+ICsgKiBUaGUgYWN0dWFsIHNpemUgb2Yg dGhlIGNvbm5lY3RlZCBPbi1jaGlwIFJBTSBtZW1vcnkgaW4ga0I6DQo+PiArICogLSAwIG1lYW5z IDI1NiBrQiAobWF4IHN1cHBvcnRlZCBtZW0gc2l6ZSkNCj4+ICsgKiAtIHZhbHVlIG90aGVyIHRo YW4gMCByZWZsZWN0cyB0aGUgbWVtIHNpemUgaW4ga0INCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFVT Ql9DQVAyX0FDVFVBTF9NRU1fU0laRShwKSAoKHApICYgR0VOTUFTSyg3LCAwKSkNCj4+ICsvKg0K Pj4gKyAqIE1heCBzdXBwb3J0ZWQgbWVtIHNpemUNCj4+ICsgKiBUaGVzZSBmaWVsZCByZWZsZWN0 cyB3aWR0aCBvZiBvbi1jaGlwIFJBTSBhZGRyZXNzIGJ1cyB3aWR0aCwNCj4+ICsgKiB3aGljaCBk ZXRlcm1pbmVzIG1heCBzdXBwb3J0ZWQgbWVtIHNpemU6DQo+PiArICogMHgwLTB4NyAtIHJlc2Vy dmVkLA0KPj4gKyAqIDB4OCAtIHN1cHBvcnQgZm9yIDRrQiBtZW0sDQo+PiArICogMHg5IC0gc3Vw cG9ydCBmb3IgOGtCIG1lbSwNCj4+ICsgKiAweEEgLSBzdXBwb3J0IGZvciAxNmtCIG1lbSwNCj4+ ICsgKiAweEIgLSBzdXBwb3J0IGZvciAzMmtCIG1lbSwNCj4+ICsgKiAweEMgLSBzdXBwb3J0IGZv ciA2NGtCIG1lbSwNCj4+ICsgKiAweEQgLSBzdXBwb3J0IGZvciAxMjhrQiBtZW0sDQo+PiArICog MHhFIC0gc3VwcG9ydCBmb3IgMjU2a0IgbWVtLA0KPj4gKyAqIDB4RiAtIHJlc2VydmVkDQo+PiAr ICovDQo+PiArI2RlZmluZSBVU0JfQ0FQMl9NQVhfTUVNX1NJWkUocCkgKChwKSAmIEdFTk1BU0so MTEsIDgpKQ0KPj4gKw0KPj4gKy8qIFVTQl9DQVAzLSBiaXRtYXNrcyAqLw0KPj4gKyNkZWZpbmUg RVBfSVNfSU1QTEVNRU5URUQocmVnLCBpbmRleCkgKChyZWcpICYgKDEgPDwgKGluZGV4KSkpDQo+ PiArDQo+PiArLyogVVNCX0NBUDQtIGJpdG1hc2tzICovDQo+PiArI2RlZmluZSBFUF9TVVBQT1JU X0lTTyhyZWcsIGluZGV4KSAoKHJlZykgJiAoMSA8PCAoaW5kZXgpKSkNCj4+ICsNCj4+ICsvKiBV U0JfQ0FQNS0gYml0bWFza3MgKi8NCj4+ICsjZGVmaW5lIEVQX1NVUFBPUlRfU1RSRUFNKHJlZywg aW5kZXgpICgocmVnKSAmICgxIDw8IChpbmRleCkpKQ0KPj4gKw0KPj4gKy8qIFVTQl9DQVA2LSBi aXRtYXNrcyAqLw0KPj4gKy8qIFRoZSBVU0JTUy1ERVYgQ29udHJvbGxlciAgSW50ZXJuYWwgYnVp bGQgbnVtYmVyLiAqLw0KPj4gKyNkZWZpbmUgR0VUX0RFVl9WRVJTSU9OX19JTlRFUk5BTF9OVU1C RVIocCkgKChwKSAmIEdFTk1BU0soNywgMCkpDQo+PiArLyogVGhlIFVTQlNTLURFViBDb250cm9s bGVyICB2ZXJzaW9uIG51bWJlci4gKi8NCj4+ICsjZGVmaW5lIEdFVF9ERVZfVkVSU0lPTihwKSAo KHApICYgR0VOTUFTSygzMSwgOCkpDQo+PiArDQo+PiArLyogREJHX0xJTksxLSBiaXRtYXNrcyAq Lw0KPj4gKy8qDQo+PiArICogTEZQU19NSU5fREVUX1UxX0VYSVQgdmFsdWUgVGhpcyBwYXJhbWV0 ZXIgY29uZmlndXJlcyB0aGUgbWluaW11bQ0KPj4gKyAqIHRpbWUgcmVxdWlyZWQgZm9yIGRlY29k aW5nIHRoZSByZWNlaXZlZCBMRlBTIGFzIGFuIExGUFMuVTFfRXhpdC4NCj4+ICsgKi8NCj4+ICsj ZGVmaW5lIERCR19MSU5LMV9MRlBTX01JTl9ERVRfVTFfRVhJVChwKSAgICAgICgocCkgJiBHRU5N QVNLKDcsIDApKQ0KPj4gKy8qDQo+PiArICogTEZQU19NSU5fR0VOX1UxX0VYSVQgdmFsdWUgVGhp cyBwYXJhbWV0ZXIgY29uZmlndXJlcyB0aGUgbWluaW11bSB0aW1lIGZvcg0KPj4gKyAqIHBoeXR4 ZWxlY2lkbGUgZGVhc3NlcnRpb24gd2hlbiBMRlBTLlUxX0V4aXQNCj4+ICsgKi8NCj4+ICsjZGVm aW5lIERCR19MSU5LMV9MRlBTX01JTl9HRU5fVTFfRVhJVF9NQVNLICAgIEdFTk1BU0soMTUsIDgp DQo+PiArI2RlZmluZSBEQkdfTElOSzFfTEZQU19NSU5fR0VOX1UxX0VYSVQocCkgICAgICAoKChw KSA8PCA4KSAmIEdFTk1BU0soMTUsIDgpKQ0KPj4gKy8qDQo+PiArICogUlhERVRfQlJFQUtfRElT IHZhbHVlIFRoaXMgcGFyYW1ldGVyIGNvbmZpZ3VyZXMgdGVybWluYXRpbmcgdGhlIEZhci1lbmQN Cj4+ICsgKiBSZWNlaXZlciB0ZXJtaW5hdGlvbiBkZXRlY3Rpb24gc2VxdWVuY2U6DQo+PiArICog MDogaXQgaXMgcG9zc2libGUgdGhhdCBVU0JTU19ERVYgd2lsbCB0ZXJtaW5hdGUgRmFyZW5kIHJl Y2VpdmVyDQo+PiArICogICAgdGVybWluYXRpb24gZGV0ZWN0aW9uIHNlcXVlbmNlDQo+PiArICog MTogVVNCU1NfREVWIHdpbGwgbm90IHRlcm1pbmF0ZSBGYXItZW5kIHJlY2VpdmVyIHRlcm1pbmF0 aW9uDQo+PiArICogICAgZGV0ZWN0aW9uIHNlcXVlbmNlDQo+PiArICovDQo+PiArI2RlZmluZSBE QkdfTElOSzFfUlhERVRfQlJFQUtfRElTICAgICAgICAgICAgICBCSVQoMTYpDQo+PiArLyogTEZQ U19HRU5fUElORyB2YWx1ZSBUaGlzIHBhcmFtZXRlciBjb25maWd1cmVzIHRoZSBMRlBTLlBpbmcg Z2VuZXJhdGlvbiAqLw0KPj4gKyNkZWZpbmUgREJHX0xJTksxX0xGUFNfR0VOX1BJTkcocCkgICAg ICAgICAgICAgKCgocCkgPDwgMTcpICYgR0VOTUFTSygyMSwgMTcpKQ0KPj4gKy8qDQo+PiArICog U2V0IHRoZSBMRlBTX01JTl9ERVRfVTFfRVhJVCB2YWx1ZSBXcml0aW5nICcxJyB0byB0aGlzIGJp dCB3cml0ZXMgdGhlDQo+PiArICogTEZQU19NSU5fREVUX1UxX0VYSVQgZmllbGQgdmFsdWUgdG8g dGhlIGRldmljZS4gVGhpcyBiaXQgaXMgYXV0b21hdGljYWxseQ0KPj4gKyAqIGNsZWFyZWQuIFdy aXRpbmcgJzAnIGhhcyBubyBlZmZlY3QNCj4+ICsgKi8NCj4+ICsjZGVmaW5lIERCR19MSU5LMV9M RlBTX01JTl9ERVRfVTFfRVhJVF9TRVQgICAgIEJJVCgyNCkNCj4+ICsvKg0KPj4gKyAqIFNldCB0 aGUgTEZQU19NSU5fR0VOX1UxX0VYSVQgdmFsdWUuIFdyaXRpbmcgJzEnIHRvIHRoaXMgYml0IHdy aXRlcyB0aGUNCj4+ICsgKiBMRlBTX01JTl9HRU5fVTFfRVhJVCBmaWVsZCB2YWx1ZSB0byB0aGUg ZGV2aWNlLiBUaGlzIGJpdCBpcyBhdXRvbWF0aWNhbGx5DQo+PiArICogY2xlYXJlZC4gV3JpdGlu ZyAnMCcgaGFzIG5vIGVmZmVjdA0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgREJHX0xJTksxX0xGUFNf TUlOX0dFTl9VMV9FWElUX1NFVCAgICAgQklUKDI1KQ0KPj4gKy8qDQo+PiArICogU2V0IHRoZSBS WERFVF9CUkVBS19ESVMgdmFsdWUgV3JpdGluZyAnMScgdG8gdGhpcyBiaXQgd3JpdGVzDQo+PiAr ICogdGhlIFJYREVUX0JSRUFLX0RJUyBmaWVsZCB2YWx1ZSB0byB0aGUgZGV2aWNlLiBUaGlzIGJp dCBpcyBhdXRvbWF0aWNhbGx5DQo+PiArICogY2xlYXJlZC4gV3JpdGluZyAnMCcgaGFzIG5vIGVm ZmVjdA0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgREJHX0xJTksxX1JYREVUX0JSRUFLX0RJU19TRVQg ICAgICAgICAgQklUKDI2KQ0KPj4gKy8qDQo+PiArICogU2V0IHRoZSBMRlBTX0dFTl9QSU5HX1NF VCB2YWx1ZSBXcml0aW5nICcxJyB0byB0aGlzIGJpdCB3cml0ZXMNCj4+ICsgKiB0aGUgTEZQU19H RU5fUElORyBmaWVsZCB2YWx1ZSB0byB0aGUgZGV2aWNlLiBUaGlzIGJpdCBpcyBhdXRvbWF0aWNh bGx5DQo+PiArICogY2xlYXJlZC4gV3JpdGluZyAnMCcgaGFzIG5vIGVmZmVjdC4iDQo+PiArICov DQo+PiArI2RlZmluZSBEQkdfTElOSzFfTEZQU19HRU5fUElOR19TRVQgICAgICAgICAgICBCSVQo MjcpDQo+PiArDQo+PiArI2RlZmluZSBnYWRnZXRfdG9fY2RuczNfZGV2aWNlKGcpIChjb250YWlu ZXJfb2YoZywgc3RydWN0IGNkbnMzX2RldmljZSwgZ2FkZ2V0KSkNCj4+ICsNCj4+ICsjZGVmaW5l IGVwX3RvX2NkbnMzX2VwKGVwKSAoY29udGFpbmVyX29mKGVwLCBzdHJ1Y3QgY2RuczNfZW5kcG9p bnQsIGVuZHBvaW50KSkNCj4+ICsNCj4+ICsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KPj4gKy8qDQo+ PiArICogVVNCU1MtREVWIERNQSBpbnRlcmZhY2UuDQo+PiArICovDQo+PiArI2RlZmluZSBUUkJT X1BFUl9TRUdNRU5UICAgICAgIDQwDQo+PiArDQo+PiArI2RlZmluZSBJU09fTUFYX0lOVEVSVkFM ICAgICAgIDEwDQo+PiArDQo+PiArLyoNCj4+ICsgKk9ubHkgZm9yIElTT0MgZW5kcG9pbnRzIC0g bWF4aW11bSBudW1iZXIgb2YgVFJCcyBpcyBjYWxjdWxhdGVkIGFzDQo+PiArICogcG93KDIsIGJJ bnRlcnZhbC0xKSAqIG51bWJlciBvZiB1c2IgcmVxdWVzdHMuIEl0IGlzIGxpbWl0YXRpb24gbWFk ZSBieQ0KPj4gKyAqIGRyaXZlciB0byBzYXZlIG1lbW9yeS4gQ29udHJvbGxlciBtdXN0IHByZXBh cmUgVFJCIGZvciBlYWNoIElUUCBldmVuDQo+PiArICogaWYgYkludGVydmFsID4gMS4gSXQncyB0 aGUgcmVhc29uIHdoeSBkcml2ZXIgbmVlZHMgc28gbWFueSBUUkJzIGZvcg0KPj4gKyAqIGlzb2No cm9ub3VzIGVuZHBvaW50cy4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIFRSQlNfUEVSX0lTT0NfU0VH TUVOVCAgKElTT19NQVhfSU5URVJWQUwgKiA4KQ0KPj4gKw0KPj4gKyNkZWZpbmUgR0VUX1RSQlNf UEVSX1NFR01FTlQoZXBfdHlwZSkgKChlcF90eXBlKSA9PSBVU0JfRU5EUE9JTlRfWEZFUl9JU09D ID8gXA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkJTX1BFUl9J U09DX1NFR01FTlQgOiBUUkJTX1BFUl9TRUdNRU5UKQ0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBj ZG5zM190cmIgLSByZXByZXNlbnQgVHJhbnNmZXIgRGVzY3JpcHRvciBibG9jay4NCj4+ICsgKiBA YnVmZmVyOiAgICBwb2ludGVyIHRvIGJ1ZmZlciBkYXRhDQo+PiArICogQGxlbmd0aDogICAgbGVu Z3RoIG9mIGRhdGENCj4+ICsgKiBAY29udHJvbDogICBjb250cm9sIGZsYWdzLg0KPj4gKyAqDQo+ PiArICogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIHRyYW5zZmVyIGJsb2NrIHNlcnZpY2VkIGJ5 IERNQSBtb2R1bGUuDQo+PiArICovDQo+PiArc3RydWN0IGNkbnMzX3RyYiB7DQo+PiArICAgICAg IF9fbGUzMiBidWZmZXI7DQo+PiArICAgICAgIF9fbGUzMiBsZW5ndGg7DQo+PiArICAgICAgIF9f bGUzMiBjb250cm9sOw0KPj4gK307DQo+PiArDQo+PiArI2RlZmluZSBUUkJfU0laRSAgICAgICAg ICAgICAgIChzaXplb2Yoc3RydWN0IGNkbnMzX3RyYikpDQo+PiArI2RlZmluZSBUUkJfUklOR19T SVpFICAgICAgICAgIChUUkJfU0laRSAqIFRSQlNfUEVSX1NFR01FTlQpDQo+PiArI2RlZmluZSBU UkJfSVNPX1JJTkdfU0laRSAgICAgIChUUkJfU0laRSAqIFRSQlNfUEVSX0lTT0NfU0VHTUVOVCkN Cj4+ICsjZGVmaW5lIFRSQl9DVFJMX1JJTkdfU0laRSAgICAgKFRSQl9TSVpFICogMikNCj4+ICsN Cj4+ICsvKiBUUkIgYml0IG1hc2sgKi8NCj4+ICsjZGVmaW5lIFRSQl9UWVBFX0JJVE1BU0sgICAg ICAgR0VOTUFTSygxNSwgMTApDQo+PiArI2RlZmluZSBUUkJfVFlQRShwKSAgICAgICAgICAgICgo cCkgPDwgMTApDQo+PiArI2RlZmluZSBUUkJfRklFTERfVE9fVFlQRShwKSAgICgoKHApICYgVFJC X1RZUEVfQklUTUFTSykgPj4gMTApDQo+PiArDQo+PiArLyogVFJCIHR5cGUgSURzICovDQo+PiAr LyogYnVsaywgaW50ZXJydXB0LCBpc29jICwgYW5kIGNvbnRyb2wgZGF0YSBzdGFnZSAqLw0KPj4g KyNkZWZpbmUgVFJCX05PUk1BTCAgICAgICAgICAgICAxDQo+PiArLyogVFJCIGZvciBsaW5raW5n IHJpbmcgc2VnbWVudHMgKi8NCj4+ICsjZGVmaW5lIFRSQl9MSU5LICAgICAgICAgICAgICAgNg0K Pj4gKw0KPj4gKy8qIEN5Y2xlIGJpdCAtIGluZGljYXRlcyBUUkIgb3duZXJzaGlwIGJ5IGRyaXZl ciBvciBodyovDQo+PiArI2RlZmluZSBUUkJfQ1lDTEUgICAgICAgICAgICAgIEJJVCgwKQ0KPj4g Ky8qDQo+PiArICogV2hlbiBzZXQgdG8gJzEnLCB0aGUgZGV2aWNlIHdpbGwgdG9nZ2xlIGl0cyBp bnRlcnByZXRhdGlvbiBvZiB0aGUgQ3ljbGUgYml0DQo+PiArICovDQo+PiArI2RlZmluZSBUUkJf VE9HR0xFICAgICAgICAgICAgIEJJVCgxKQ0KPj4gKw0KPj4gKy8qIEludGVycnVwdCBvbiBzaG9y dCBwYWNrZXQqLw0KPj4gKyNkZWZpbmUgVFJCX0lTUCAgICAgICAgICAgICAgICAgICAgICAgIEJJ VCgyKQ0KPj4gKy8qU2V0dGluZyB0aGlzIGJpdCBlbmFibGVzIEZJRk8gRE1BIG9wZXJhdGlvbiBt b2RlKi8NCj4+ICsjZGVmaW5lIFRSQl9GSUZPX01PREUgICAgICAgICAgQklUKDMpDQo+PiArLyog U2V0IFBDSWUgbm8gc25vb3AgYXR0cmlidXRlICovDQo+PiArI2RlZmluZSBUUkJfQ0hBSU4gICAg ICAgICAgICAgIEJJVCg0KQ0KPj4gKy8qIEludGVycnVwdCBvbiBjb21wbGV0aW9uICovDQo+PiAr I2RlZmluZSBUUkJfSU9DICAgICAgICAgICAgICAgICAgICAgICAgQklUKDUpDQo+PiArDQo+PiAr Lyogc3RyZWFtIElEIGJpdG1hc2tzLiAqLw0KPj4gKyNkZWZpbmUgVFJCX1NUUkVBTV9JRChwKSAg ICAgICAoKHApICYgR0VOTUFTSygzMSwgMTYpKQ0KPj4gKw0KPj4gKy8qIHRyYW5zZmVyX2xlbiBi aXRtYXNrcy4gKi8NCj4+ICsjZGVmaW5lIFRSQl9MRU4ocCkgICAgICAgICAgICAgKChwKSAmIEdF Tk1BU0soMTYsIDApKQ0KPj4gKw0KPj4gKy8qIHRyYW5zZmVyX2xlbiBiaXRtYXNrcyAtIGJpdHMg MzE6MjQgKi8NCj4+ICsjZGVmaW5lIFRSQl9CVVJTVF9MRU4ocCkgICAgICAgKChwKSAmIEdFTk1B U0soMzEsIDI0KSkNCj4+ICsNCj4+ICsvKiBEYXRhIGJ1ZmZlciBwb2ludGVyIGJpdG1hc2tzKi8N Cj4+ICsjZGVmaW5lIFRSQl9CVUZGRVIocCkgICAgICAgICAgKChwKSAmIEdFTk1BU0soMzEsIDAp KQ0KPj4gKw0KPj4gKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQo+PiArLyogRHJpdmVyIG51bWVyaWMg Y29uc3RhbnRzICovDQo+PiArDQo+PiArLyogU3VjaCBkZWNsYXJhdGlvbiBzaG91bGQgYmUgYWRk ZWQgdG8gY2g5LmggKi8NCj4+ICsjZGVmaW5lIFVTQl9ERVZJQ0VfTUFYX0FERFJFU1MgICAgICAg ICAxMjcNCj4+ICsNCj4+ICsvKiBFbmRwb2ludCBpbml0IHZhbHVlcyAqLw0KPj4gKyNkZWZpbmUg Q0ROUzNfRVBfTUFYX1BBQ0tFVF9MSU1JVCAgICAgIDEwMjQNCj4+ICsjZGVmaW5lIENETlMzX0VQ X01BWF9TVFJFQU1TICAgICAgICAgICAxNQ0KPj4gKyNkZWZpbmUgQ0ROUzNfRVAwX01BWF9QQUNL RVRfTElNSVQgICAgIDUxMg0KPj4gKw0KPj4gKy8qIEFsbCBlbmRwb2ludHMgaW5jbHVkaW5nIEVQ MCAqLw0KPj4gKyNkZWZpbmUgQ0ROUzNfRU5EUE9JTlRTX01BWF9DT1VOVCAgICAgIDMyDQo+PiAr I2RlZmluZSBDRE5TM19FUF9aTFBfQlVGX1NJWkUgICAgICAgICAgMTAyNA0KPj4gKw0KPj4gKyNk ZWZpbmUgQ0ROUzNfRVBfQlVGX1NJWkUgICAgICAgICAgICAgIDIgICAgICAgLyogS0IgKi8NCj4+ ICsjZGVmaW5lIENETlMzX0FMSUdORURfQlVGX1NJWkUgICAgICAgICAxNjM4NCAgIC8qIEJ5dGVz ICovDQo+PiArI2RlZmluZSBDRE5TM19NQVhfTlVNX0RFU0NNSVNTX0JVRiAgICAgMzINCj4+ICsj ZGVmaW5lIENETlMzX0RFU0NNSVNfQlVGX1NJWkUgICAgICAgICAyMDQ4ICAgIC8qIEJ5dGVzICov DQo+PiArLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCj4+ICsvKiBVc2VkIHN0cnVjdHMgKi8NCj4+ICsN Cj4+ICtzdHJ1Y3QgY2RuczNfZGV2aWNlOw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBj ZG5zM19lbmRwb2ludCAtIGV4dGVuZGVkIGRldmljZSBzaWRlIHJlcHJlc2VudGF0aW9uIG9mIFVT QiBlbmRwb2ludC4NCj4+ICsgKiBAZW5kcG9pbnQ6IHVzYiBlbmRwb2ludA0KPj4gKyAqIEBwZW5k aW5nX3JlcV9saXN0OiBsaXN0IG9mIHJlcXVlc3RzIHF1ZXVpbmcgb24gdHJhbnNmZXIgcmluZy4N Cj4+ICsgKiBAZGVmZXJyZWRfcmVxX2xpc3Q6IGxpc3Qgb2YgcmVxdWVzdHMgd2FpdGluZyBmb3Ig cXVldWluZyBvbiB0cmFuc2ZlciByaW5nLg0KPj4gKyAqIEB0cmJfcG9vbDogdHJhbnNmZXIgcmlu ZyAtIGFycmF5IG9mIHRyYW5zYWN0aW9uIGJ1ZmZlcnMNCj4+ICsgKiBAdHJiX3Bvb2xfZG1hOiBk bWEgYWRkcmVzcyBvZiB0cmFuc2ZlciByaW5nDQo+PiArICogQGNkbnMzX2RldjogZGV2aWNlIGFz c29jaWF0ZWQgd2l0aCB0aGlzIGVuZHBvaW50DQo+PiArICogQG5hbWU6IGEgaHVtYW4gcmVhZGFi bGUgbmFtZSBlLmcuIGVwMW91dA0KPj4gKyAqIEBmbGFnczogc3BlY2lmeSB0aGUgY3VycmVudCBz dGF0ZSBvZiBlbmRwb2ludA0KPj4gKyAqIEBkZXNjbWlzX3JlcTogaW50ZXJuYWwgdHJhbnNmZXIg b2JqZWN0IHVzZWQgZm9yIGdldHRpbmcgZGF0YSBmcm9tIG9uLWNoaXANCj4+ICsgKiAgICAgYnVm ZmVyLiBJdCBjYW4gaGFwcGVuIG9ubHkgaWYgZnVuY3Rpb24gZHJpdmVyIGRvZXNuJ3Qgc2VuZCB1 c2JfcmVxdWVzdA0KPj4gKyAqICAgICBvYmplY3Qgb24gdGltZS4NCj4+ICsgKiBAYWxpZ25lZF9i dWZmOiBhbGlnbmVkIHRvIDggYnl0ZXMgZGF0YSBidWZmZXIuIEJ1ZmZlciBhZGRyZXNzIHVzZWQg aW4NCj4+ICsgKiAgICAgVFJCIHNoYWxsIGJlIGFsaWduZWQgdG8gOC4NCj4+ICsgKiBAYWxpZ25l ZF9kbWFfYWRkcjogZG1hIGFkZHJlc3Mgb2YgYWxpZ25lZF9idWZmDQo+PiArICogQGRpcjogZW5k cG9pbnQgZGlyZWN0aW9uDQo+PiArICogQG51bTogZW5kcG9pbnQgbnVtYmVyICgxIC0gMTUpDQo+ PiArICogQHR5cGU6IHNldCB0byBibUF0dHJpYnV0ZXMgJiBVU0JfRU5EUE9JTlRfWEZFUlRZUEVf TUFTSw0KPj4gKyAqIEBpbnRlcnZhbDogaW50ZXJ2YWwgYmV0d2VlbiBwYWNrZXRzIHVzZWQgZm9y IElTT0MgZW5kcG9pbnQuDQo+PiArICogQGZyZWVfdHJiczogbnVtYmVyIG9mIGZyZWUgVFJCcyBp biB0cmFuc2ZlciByaW5nDQo+PiArICogQG51bV90cmJzOiBudW1iZXIgb2YgYWxsIFRSQnMgaW4g dHJhbnNmZXIgcmluZw0KPj4gKyAqIEBwY3M6IHByb2R1Y2VyIGN5Y2xlIHN0YXRlDQo+PiArICog QGNjczogY29uc3VtZXIgY3ljbGUgc3RhdGUNCj4+ICsgKiBAZW5xdWV1ZTogZW5xdWV1ZSBpbmRl eCBpbiB0cmFuc2ZlciByaW5nDQo+PiArICogQGRlcXVldWU6IGRlcXVldWUgaW5kZXggaW4gdHJh bnNmZXIgcmluZw0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjZG5zM19lbmRwb2ludCB7DQo+PiArICAg ICAgIHN0cnVjdCB1c2JfZXAgICAgICAgICAgIGVuZHBvaW50Ow0KPj4gKyAgICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICAgICAgICBwZW5kaW5nX3JlcV9saXN0Ow0KPj4gKyAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkICAgICAgICBkZWZlcnJlZF9yZXFfbGlzdDsNCj4+ICsNCj4+ICsgICAgICAgc3RydWN0 IGNkbnMzX3RyYiAgICAgICAgKnRyYl9wb29sOw0KPj4gKyAgICAgICBkbWFfYWRkcl90ICAgICAg ICAgICAgICB0cmJfcG9vbF9kbWE7DQo+PiArDQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19kZXZp Y2UgICAgICpjZG5zM19kZXY7DQo+PiArICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgIG5h bWVbMjBdOw0KPj4gKw0KPj4gKyNkZWZpbmUgRVBfRU5BQkxFRCAgICAgICAgICAgICBCSVQoMCkN Cj4+ICsjZGVmaW5lIEVQX1NUQUxMICAgICAgICAgICAgICAgQklUKDEpDQo+PiArI2RlZmluZSBF UF9XRURHRSAgICAgICAgICAgICAgIEJJVCgyKQ0KPj4gKyNkZWZpbmUgRVBfVFJBTlNGRVJfU1RB UlRFRCAgICBCSVQoMykNCj4+ICsjZGVmaW5lIEVQX1VQREFURV9FUF9UUkJBRERSICAgQklUKDQp DQo+PiArI2RlZmluZSBFUF9QRU5ESU5HX1JFUVVFU1QgICAgIEJJVCg1KQ0KPj4gKyNkZWZpbmUg RVBfUklOR19GVUxMICAgICAgICAgICBCSVQoNikNCj4+ICsjZGVmaW5lIEVQX0NMQUlNRUQgICAg ICAgICAgICAgQklUKDcpDQo+PiArDQo+PiArICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAg IGZsYWdzOw0KPj4gKw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfcmVxdWVzdCAgICAqZGVzY21p c19yZXE7DQo+PiArDQo+PiArICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICphbGlnbmVk X2J1ZmY7DQo+PiArICAgICAgIGRtYV9hZGRyX3QgICAgICAgICAgICAgIGFsaWduZWRfZG1hX2Fk ZHI7DQo+PiArICAgICAgIHU4ICAgICAgICAgICAgICAgICAgICAgIGRpcjsNCj4+ICsgICAgICAg dTggICAgICAgICAgICAgICAgICAgICAgbnVtOw0KPj4gKyAgICAgICB1OCAgICAgICAgICAgICAg ICAgICAgICB0eXBlOw0KPj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBpbnRlcnZh bDsNCj4+ICsNCj4+ICsgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZnJlZV90cmJzOw0K Pj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBudW1fdHJiczsNCj4+ICsgICAgICAg dTggICAgICAgICAgICAgICAgICAgICAgcGNzOw0KPj4gKyAgICAgICB1OCAgICAgICAgICAgICAg ICAgICAgICBjY3M7DQo+PiArICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGVucXVldWU7 DQo+PiArICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGRlcXVldWU7DQo+PiArDQo+PiAr ICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIHdhMV9zZXQ6MTsNCj4+ICsgICAgICAgc3Ry dWN0IGNkbnMzX3RyYiAgICAgICAgKndhMV90cmI7DQo+PiArICAgICAgIHVuc2lnbmVkIGludCAg ICAgICAgICAgIHdhMV9jeWNsZV9iaXQ6MTsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAq IHN0cnVjdCBjZG5zM19yZXF1ZXN0IC0gZXh0ZW5kZWQgZGV2aWNlIHNpZGUgcmVwcmVzZW50YXRp b24gb2YgdXNiX3JlcXVlc3QNCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCAu DQo+PiArICogQHJlcXVlc3Q6IGdlbmVyaWMgdXNiX3JlcXVlc3Qgb2JqZWN0IGRlc2NyaWJpbmcg c2luZ2xlIEkvTyByZXF1ZXN0Lg0KPj4gKyAqIEBwcml2X2VwOiBleHRlbmRlZCByZXByZXNlbnRh dGlvbiBvZiB1c2JfZXAgb2JqZWN0DQo+PiArICogQHRyYjogdGhlIGZpcnN0IFRSQiBhc3NvY2lh dGlvbiB3aXRoIHRoaXMgcmVxdWVzdA0KPj4gKyAqIEBzdGFydF90cmI6IG51bWJlciBvZiB0aGUg Zmlyc3QgVFJCIGluIHRyYW5zZmVyIHJpbmcNCj4+ICsgKiBAZW5kX3RyYjogbnVtYmVyIG9mIHRo ZSBsYXN0IFRSQiBpbiB0cmFuc2ZlciByaW5nDQo+PiArICogQGZsYWdzOiBmbGFnIHNwZWNpZnlp bmcgc3BlY2lhbCB1c2FnZSBvZiByZXF1ZXN0DQo+PiArICovDQo+PiArc3RydWN0IGNkbnMzX3Jl cXVlc3Qgew0KPj4gKyAgICAgICBzdHJ1Y3QgdXNiX3JlcXVlc3QgICAgICByZXF1ZXN0Ow0KPj4g KyAgICAgICBzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgICAqcHJpdl9lcDsNCj4+ICsgICAgICAgc3Ry dWN0IGNkbnMzX3RyYiAgICAgICAgKnRyYjsNCj4+ICsgICAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgc3RhcnRfdHJiOw0KPj4gKyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBlbmRf dHJiOw0KPj4gKyNkZWZpbmUgUkVRVUVTVF9QRU5ESU5HICAgICAgICAgICAgICAgIEJJVCgwKQ0K Pj4gKyNkZWZpbmUgUkVRVUVTVF9JTlRFUk5BTCAgICAgICBCSVQoMSkNCj4+ICsjZGVmaW5lIFJF UVVFU1RfSU5URVJOQUxfQ0ggICAgQklUKDIpDQo+PiArI2RlZmluZSBSRVFVRVNUX1pMUCAgICAg ICAgICAgIEJJVCgzKQ0KPj4gKyAgICAgICB1MzIgICAgICAgICAgICAgICAgICAgICBmbGFnczsN Cj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUgdG9fY2RuczNfcmVxdWVzdChyKSAoY29udGFpbmVy X29mKHIsIHN0cnVjdCBjZG5zM19yZXF1ZXN0LCByZXF1ZXN0KSkNCj4+ICsNCj4+ICsvKlN0YWdl cyB1c2VkIGR1cmluZyBlbnVtZXJhdGlvbiBwcm9jZXNzLiovDQo+PiArI2RlZmluZSBDRE5TM19T RVRVUF9TVEFHRSAgICAgICAgICAgICAgMHgwDQo+PiArI2RlZmluZSBDRE5TM19EQVRBX1NUQUdF ICAgICAgICAgICAgICAgMHgxDQo+PiArI2RlZmluZSBDRE5TM19TVEFUVVNfU1RBR0UgICAgICAg ICAgICAgMHgyDQo+PiArDQo+PiArLyoqDQo+PiArICogc3RydWN0IGNkbnMzX2RldmljZSAtIHJl cHJlc2VudCBVU0IgZGV2aWNlLg0KPj4gKyAqIEBkZXY6IHBvaW50ZXIgdG8gZGV2aWNlIHN0cnVj dHVyZSBhc3NvY2lhdGVkIHdoaXQgdGhpcyBjb250cm9sbGVyDQo+PiArICogQHN5c2RldjogcG9p bnRlciB0byB0aGUgRE1BIGNhcGFibGUgZGV2aWNlDQo+PiArICogQGdhZGdldDogZGV2aWNlIHNp ZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBlcmlwaGVyYWwgY29udHJvbGxlcg0KPj4gKyAqIEBn YWRnZXRfZHJpdmVyOiBwb2ludGVyIHRvIHRoZSBnYWRnZXQgZHJpdmVyDQo+PiArICogQGRldl92 ZXI6IGRldmljZSBjb250cm9sbGVyIHZlcnNpb24uDQo+PiArICogQGxvY2s6IGZvciBzeW5jaHJv bml6aW5nDQo+PiArICogQHJlZ3M6IGJhc2UgYWRkcmVzcyBmb3IgZGV2aWNlIHNpZGUgcmVnaXN0 ZXJzDQo+PiArICogQHNldHVwX2J1ZjogdXNlZCB3aGlsZSBwcm9jZXNzaW5nIHVzYiBjb250cm9s IHJlcXVlc3RzDQo+PiArICogQHNldHVwX2RtYTogZG1hIGFkZHJlc3MgZm9yIHNldHVwX2J1Zg0K Pj4gKyAqIEB6bHBfYnVmIC0gemxwIGJ1ZmZlcg0KPj4gKyAqIEBlcDBfc3RhZ2U6IGVwMCBzdGFn ZSBkdXJpbmcgZW51bWVyYXRpb24gcHJvY2Vzcy4NCj4+ICsgKiBAZXAwX2RhdGFfZGlyOiBkaXJl Y3Rpb24gZm9yIGNvbnRyb2wgdHJhbnNmZXINCj4+ICsgKiBAZXBzOiBhcnJheSBvZiBwb2ludGVy cyB0byBhbGwgZW5kcG9pbnRzIHdpdGggZXhjbHVzaW9uIGVwMA0KPj4gKyAqIEBzZWxlY3RlZF9l cDogYWN0dWFsbHkgc2VsZWN0ZWQgZW5kcG9pbnQuIEl0J3MgdXNlZCBvbmx5IHRvIGltcHJvdmUN Cj4+ICsgKiAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLg0KPj4gKyAqIEBpc29jaF9kZWxheTog dmFsdWUgZnJvbSBTZXQgSXNvY2ggRGVsYXkgcmVxdWVzdC4gT25seSB2YWxpZCBvbiBTUy9TU1Au DQo+PiArICogQHUxX2FsbG93ZWQ6IGFsbG93IGRldmljZSB0cmFuc2l0aW9uIHRvIHUxIHN0YXRl DQo+PiArICogQHUyX2FsbG93ZWQ6IGFsbG93IGRldmljZSB0cmFuc2l0aW9uIHRvIHUyIHN0YXRl DQo+PiArICogQGlzX3NlbGZwb3dlcmVkOiBkZXZpY2UgaXMgc2VsZiBwb3dlcmVkDQo+PiArICog QHNldHVwX3BlbmRpbmc6IHNldHVwIHBhY2tldCBpcyBwcm9jZXNzaW5nIGJ5IGdhZGdldCBkcml2 ZXINCj4+ICsgKiBAaHdfY29uZmlndXJlZF9mbGFnOiBoYXJkd2FyZSBlbmRwb2ludCBjb25maWd1 cmF0aW9uIHdhcyBzZXQuDQo+PiArICogQHdha2VfdXBfZmxhZzogYWxsb3cgZGV2aWNlIHRvIHJl bW90ZSB1cCB0aGUgaG9zdA0KPj4gKyAqIEBzdGF0dXNfY29tcGxldGlvbl9ub19jYWxsOiBpbmRp Y2F0ZSB0aGF0IGRyaXZlciBpcyB3YWl0aW5nIGZvciBzdGF0dXMgcw0KPj4gKyAqICAgICBzdGFn ZSBjb21wbGV0aW9uLiBJdCdzIHVzZWQgaW4gZGVmZXJyZWQgU0VUX0NPTkZJR1VSQVRJT04gcmVx dWVzdC4NCj4+ICsgKiBAb25jaGlwX21lbV9hbGxvY2F0ZWRfc2l6ZTogYWN0dWFsIHNpemUgb2Yg b24tY2hpcCBtZW1vcnkgYXNzaWduZWQNCj4+ICsgKiAgICAgdG8gZW5kcG9pbnRzDQo+PiArICog QHBlbmRpbmdfc3RhdHVzX3dxOiB3b3JrcXVldWUgaGFuZGxpbmcgc3RhdHVzIHN0YWdlIGZvciBk ZWZlcnJlZCByZXF1ZXN0cy4NCj4+ICsgKiBAc2hhZG93X2VwX2VuOiBob2xkIGluZm9ybWF0aW9u IGFib3V0IGVuZHBvaW50cyB0aGF0IHdpbGwgYmUgZW5hYmxlZA0KPj4gKyAqICAgICBpbiBzb2Z0 IGlycS4NCj4+ICsgKiBAcGVuZGluZ19zdGF0dXNfcmVxdWVzdDogcmVxdWVzdCBmb3Igd2hpY2gg c3RhdHVzIHN0YWdlIHdhcyBkZWZlcnJlZA0KPj4gKyAqLw0KPj4gK3N0cnVjdCBjZG5zM19kZXZp Y2Ugew0KPj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAgICAgICAgICpkZXY7DQo+ PiArICAgICAgIHN0cnVjdCBkZXZpY2UgICAgICAgICAgICAgICAgICAgKnN5c2RldjsNCj4+ICsN Cj4+ICsgICAgICAgc3RydWN0IHVzYl9nYWRnZXQgICAgICAgICAgICAgICBnYWRnZXQ7DQo+PiAr ICAgICAgIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAgICAgICAgKmdhZGdldF9kcml2ZXI7DQo+ PiArDQo+PiArI2RlZmluZSBDRE5TX1JFVklTSU9OX1YwICAgICAgICAgICAgICAgMHgwMDAyNDUw MQ0KPj4gKyNkZWZpbmUgQ0ROU19SRVZJU0lPTl9WMSAgICAgICAgICAgICAgIDB4MDAwMjQ1MDkN Cj4+ICsgICAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfdmVyOw0KPj4g Kw0KPj4gKyAgICAgICAvKiBnZW5lcmljIHNwaW4tbG9jayBmb3IgZHJpdmVycyAqLw0KPj4gKyAg ICAgICBzcGlubG9ja190ICAgICAgICAgICAgICAgICAgICAgIGxvY2s7DQo+PiArDQo+PiArICAg ICAgIHN0cnVjdCBjZG5zM191c2JfcmVncyAgICAgICAgICAgX19pb21lbSAqcmVnczsNCj4+ICsN Cj4+ICsgICAgICAgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAgICAgICAgICAqc2V0dXBfYnVmOw0K Pj4gKyAgICAgICBkbWFfYWRkcl90ICAgICAgICAgICAgICAgICAgICAgIHNldHVwX2RtYTsNCj4+ ICsgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqemxwX2J1ZjsNCj4+ICsN Cj4+ICsgICAgICAgdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcDBfc3RhZ2U7DQo+ PiArICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXAwX2RhdGFfZGlyOw0K Pj4gKw0KPj4gKyAgICAgICBzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgICAgICAgICAgICplcHNbQ0RO UzNfRU5EUE9JTlRTX01BWF9DT1VOVF07DQo+PiArDQo+PiArICAgICAgIHUzMiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRfZXA7DQo+PiArICAgICAgIHUxNiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaXNvY2hfZGVsYXk7DQo+PiArDQo+PiArICAgICAgIHVuc2lnbmVk ICAgICAgICAgICAgICAgICAgICAgICAgdTFfYWxsb3dlZDoxOw0KPj4gKyAgICAgICB1bnNpZ25l ZCAgICAgICAgICAgICAgICAgICAgICAgIHUyX2FsbG93ZWQ6MTsNCj4+ICsgICAgICAgdW5zaWdu ZWQgICAgICAgICAgICAgICAgICAgICAgICBpc19zZWxmcG93ZXJlZDoxOw0KPj4gKyAgICAgICB1 bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwX3BlbmRpbmc6MTsNCj4+ICsgICAg ICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod19jb25maWd1cmVkX2ZsYWc6MTsN Cj4+ICsgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWtlX3VwX2ZsYWc6 MTsNCj4+ICsgICAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfY29t cGxldGlvbl9ub19jYWxsOjE7DQo+PiArDQo+PiArICAgICAgIHN0cnVjdCB3b3JrX3N0cnVjdCAg ICAgICAgICAgICAgcGVuZGluZ19zdGF0dXNfd3E7DQo+PiArICAgICAgIHN0cnVjdCB1c2JfcmVx dWVzdCAgICAgICAgICAgICAgKnBlbmRpbmdfc3RhdHVzX3JlcXVlc3Q7DQo+PiArICAgICAgIHUz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93X2VwX2VuOw0KPj4gKyAgICAgICAv KmluIEtCICovDQo+PiArICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25j aGlwX21lbV9hbGxvY2F0ZWRfc2l6ZTsNCj4+ICt9Ow0KPj4gKw0KPj4gK2ludCBjZG5zM19oYW5k c2hha2Uodm9pZCBfX2lvbWVtICpwdHIsIHUzMiBtYXNrLCB1MzIgZG9uZSwgaW50IHVzZWMpOw0K Pj4gK3ZvaWQgY2RuczNfc2V0X3JlZ2lzdGVyX2JpdCh2b2lkIF9faW9tZW0gKnB0ciwgdTMyIG1h c2spOw0KPj4gK2RtYV9hZGRyX3QgY2RuczNfdHJiX3ZpcnRfdG9fZG1hKHN0cnVjdCBjZG5zM19l bmRwb2ludCAqcHJpdl9lcCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBjZG5zM190cmIgKnRyYik7DQo+PiArZW51bSB1c2JfZGV2aWNlX3NwZWVkIGNkbnMzX2dl dF9zcGVlZChzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2Rldik7DQo+PiArdm9pZCBjZG5zM19w ZW5kaW5nX3NldHVwX3N0YXR1c19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7DQo+ PiArdm9pZCBjZG5zM19od19yZXNldF9lcHNfY29uZmlnKHN0cnVjdCBjZG5zM19kZXZpY2UgKnBy aXZfZGV2KTsNCj4+ICt2b2lkIGNkbnMzX3NldF9od19jb25maWd1cmF0aW9uKHN0cnVjdCBjZG5z M19kZXZpY2UgKnByaXZfZGV2KTsNCj4+ICt2b2lkIGNkbnMzX3NlbGVjdF9lcChzdHJ1Y3QgY2Ru czNfZGV2aWNlICpwcml2X2RldiwgdTMyIGVwKTsNCj4+ICt2b2lkIGNkbnMzX2FsbG93X2VuYWJs ZV9sMShzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiwgaW50IGVuYWJsZSk7DQo+PiArc3Ry dWN0IHVzYl9yZXF1ZXN0ICpjZG5zM19uZXh0X3JlcXVlc3Qoc3RydWN0IGxpc3RfaGVhZCAqbGlz dCk7DQo+PiAraW50IGNkbnMzX2VwX3J1bl90cmFuc2ZlcihzdHJ1Y3QgY2RuczNfZW5kcG9pbnQg KnByaXZfZXAsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfcmVxdWVz dCAqcmVxdWVzdCk7DQo+PiArdm9pZCBjZG5zM19yZWFybV90cmFuc2ZlcihzdHJ1Y3QgY2RuczNf ZW5kcG9pbnQgKnByaXZfZXAsIHU4IHJlYXJtKTsNCj4+ICtpbnQgY2RuczNfYWxsb2NhdGVfdHJi X3Bvb2woc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKTsNCj4+ICt1OCBjZG5zM19lcF9h ZGRyX3RvX2luZGV4KHU4IGVwX2FkZHIpOw0KPj4gK2ludCBjZG5zM19nYWRnZXRfZXBfc2V0X3dl ZGdlKHN0cnVjdCB1c2JfZXAgKmVwKTsNCj4+ICtpbnQgY2RuczNfZ2FkZ2V0X2VwX3NldF9oYWx0 KHN0cnVjdCB1c2JfZXAgKmVwLCBpbnQgdmFsdWUpOw0KPj4gK3N0cnVjdCB1c2JfcmVxdWVzdCAq Y2RuczNfZ2FkZ2V0X2VwX2FsbG9jX3JlcXVlc3Qoc3RydWN0IHVzYl9lcCAqZXAsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmcF90IGdmcF9m bGFncyk7DQo+PiArdm9pZCBjZG5zM19nYWRnZXRfZXBfZnJlZV9yZXF1ZXN0KHN0cnVjdCB1c2Jf ZXAgKmVwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1c2Jf cmVxdWVzdCAqcmVxdWVzdCk7DQo+PiAraW50IGNkbnMzX2dhZGdldF9lcF9kZXF1ZXVlKHN0cnVj dCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcXVlc3QpOw0KPj4gK3ZvaWQgY2Ru czNfZ2FkZ2V0X2dpdmViYWNrKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcCwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjZG5zM19yZXF1ZXN0ICpwcml2X3JlcSwN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMpOw0KPj4gKw0KPj4gK2lu dCBjZG5zM19pbml0X2VwMChzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiwNCj4+ICsgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXApOw0KPj4gK3ZvaWQg Y2RuczNfZXAwX2NvbmZpZyhzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2Rldik7DQo+PiArdm9p ZCBjZG5zM19lcF9jb25maWcoc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKTsNCj4+ICt2 b2lkIGNkbnMzX2NoZWNrX2VwMF9pbnRlcnJ1cHRfcHJvY2VlZChzdHJ1Y3QgY2RuczNfZGV2aWNl ICpwcml2X2RldiwgaW50IGRpcik7DQo+PiArDQo+PiArI2VuZGlmIC8qIF9fTElOVVhfQ0ROUzNf R0FER0VUICovDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2RuczMvaG9zdC1leHBvcnQu aCBiL2RyaXZlcnMvdXNiL2NkbnMzL2hvc3QtZXhwb3J0LmgNCj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmI0OThhMTcwYjdlOA0KPj4gLS0tIC9kZXYvbnVs bA0KPj4gKysrIGIvZHJpdmVycy91c2IvY2RuczMvaG9zdC1leHBvcnQuaA0KPj4gQEAgLTAsMCAr MSwyOCBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+PiAr LyoNCj4+ICsgKiBDYWRlbmNlIFVTQlNTIERSRCBEcml2ZXIgLSBIb3N0IEV4cG9ydCBBUElzDQo+ PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBOWFANCj4+ICsgKg0KPj4gKyAq IEF1dGhvcnM6IFBldGVyIENoZW4gPHBldGVyLmNoZW5AbnhwLmNvbT4NCj4+ICsgKi8NCj4+ICsj aWZuZGVmIF9fTElOVVhfQ0ROUzNfSE9TVF9FWFBPUlQNCj4+ICsjZGVmaW5lIF9fTElOVVhfQ0RO UzNfSE9TVF9FWFBPUlQNCj4+ICsNCj4+ICsjaWZkZWYgQ09ORklHX1VTQl9DRE5TM19IT1NUDQo+ PiArDQo+PiAraW50IGNkbnMzX2hvc3RfaW5pdChzdHJ1Y3QgY2RuczMgKmNkbnMpOw0KPj4gK3Zv aWQgY2RuczNfaG9zdF9leGl0KHN0cnVjdCBjZG5zMyAqY2Rucyk7DQo+PiArDQo+PiArI2Vsc2UN Cj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIGludCBjZG5zM19ob3N0X2luaXQoc3RydWN0IGNkbnMz ICpjZG5zKQ0KPj4gK3sNCj4+ICsgICAgICAgcmV0dXJuIC1FTlhJTzsNCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIGlubGluZSB2b2lkIGNkbnMzX2hvc3RfZXhpdChzdHJ1Y3QgY2RuczMgKmNkbnMp IHsgfQ0KPj4gKw0KPj4gKyNlbmRpZiAvKiBDT05GSUdfVVNCX0NETlMzX0hPU1QgKi8NCj4+ICsN Cj4+ICsjZW5kaWYgLyogX19MSU5VWF9DRE5TM19IT1NUX0VYUE9SVCAqLw0KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2NkbnMzL2hvc3QuYyBiL2RyaXZlcnMvdXNiL2NkbnMzL2hvc3QuYw0K Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjQzYjAyMzZh ODg1DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9ob3N0LmMN Cj4+IEBAIC0wLDAgKzEsNzIgQEANCj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMA0KPj4gKy8qDQo+PiArICogQ2FkZW5jZSBVU0JTUyBEUkQgRHJpdmVyIC0gaG9zdCBzaWRl DQo+PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggQ2FkZW5jZSBEZXNpZ24gU3lzdGVt cy4NCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBOWFANCj4+ICsgKg0KPj4gKyAqIEF1 dGhvcnM6IFBldGVyIENoZW4gPHBldGVyLmNoZW5AbnhwLmNvbT4NCj4+ICsgKiAgICAgICAgIFBh d2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+DQo+PiArICovDQo+PiArDQo+PiArI2lu Y2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPj4gKyNpbmNsdWRlICJjb3JlLmgiDQo+ PiArDQo+PiArc3RhdGljIGludCBfX2NkbnMzX2hvc3RfaW5pdChzdHJ1Y3QgY2RuczMgKmNkbnMp DQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICp4aGNpOw0KPj4gKyAg ICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4gKyAgICAgICB4aGNpID0gcGxhdGZvcm1fZGV2aWNlX2Fs bG9jKCJ4aGNpLWhjZCIsIFBMQVRGT1JNX0RFVklEX0FVVE8pOw0KPj4gKyAgICAgICBpZiAoIXho Y2kpIHsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGNkbnMtPmRldiwgImNvdWxkbid0IGFs bG9jYXRlIHhIQ0kgZGV2aWNlXG4iKTsNCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICB4aGNpLT5kZXYucGFyZW50ID0gY2Ru cy0+ZGV2Ow0KPj4gKyAgICAgICBjZG5zLT5ob3N0X2RldiA9IHhoY2k7DQo+PiArDQo+PiArICAg ICAgIHJldCA9IHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzKHhoY2ksIGNkbnMtPnhoY2lf cmVzLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRE5T M19YSENJX1JFU09VUkNFU19OVU0pOw0KPj4gKyAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAg ICAgICAgICAgZGV2X2VycihjZG5zLT5kZXYsICJjb3VsZG4ndCBhZGQgcmVzb3VyY2VzIHRvIHhI Q0kgZGV2aWNlXG4iKTsNCj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycjE7DQo+PiArICAgICAg IH0NCj4+ICsNCj4+ICsgICAgICAgcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZCh4aGNpKTsNCj4+ ICsgICAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoY2Rucy0+ZGV2 LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHhIQ0kgZGV2aWNlXG4iKTsNCj4+ICsgICAgICAgICAgICAg ICBnb3RvIGVycjE7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+ PiArZXJyMToNCj4+ICsgICAgICAgcGxhdGZvcm1fZGV2aWNlX3B1dCh4aGNpKTsNCj4+ICsgICAg ICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgY2RuczNfaG9zdF9l eGl0KHN0cnVjdCBjZG5zMyAqY2RucykNCj4+ICt7DQo+PiArICAgICAgIHBsYXRmb3JtX2Rldmlj ZV91bnJlZ2lzdGVyKGNkbnMtPmhvc3RfZGV2KTsNCj4+ICsgICAgICAgY2Rucy0+aG9zdF9kZXYg PSBOVUxMOw0KPj4gK30NCj4+ICsNCj4+ICtpbnQgY2RuczNfaG9zdF9pbml0KHN0cnVjdCBjZG5z MyAqY2RucykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBjZG5zM19yb2xlX2RyaXZlciAqcmRy djsNCj4+ICsNCj4+ICsgICAgICAgcmRydiA9IGRldm1fa3phbGxvYyhjZG5zLT5kZXYsIHNpemVv ZigqcmRydiksIEdGUF9LRVJORUwpOw0KPj4gKyAgICAgICBpZiAoIXJkcnYpDQo+PiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArICAgICAgIHJkcnYtPnN0YXJ0ICAg ICA9IF9fY2RuczNfaG9zdF9pbml0Ow0KPj4gKyAgICAgICByZHJ2LT5zdG9wICAgICAgPSBjZG5z M19ob3N0X2V4aXQ7DQo+PiArICAgICAgIHJkcnYtPnN0YXRlICAgICA9IENETlMzX1JPTEVfU1RB VEVfSU5BQ1RJVkU7DQo+PiArICAgICAgIHJkcnYtPnN1c3BlbmQgICA9IE5VTEw7DQo+PiArICAg ICAgIHJkcnYtPnJlc3VtZSAgICA9IE5VTEw7DQo+PiArICAgICAgIHJkcnYtPm5hbWUgICAgICA9 ICJob3N0IjsNCj4+ICsNCj4+ICsgICAgICAgY2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9IT1NUXSA9 IHJkcnY7DQo+PiArDQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3VzYi9jZG5zMy90cmFjZS5jIGIvZHJpdmVycy91c2IvY2RuczMvdHJhY2UuYw0K Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTQzMWViODZk NGZmDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy90cmFjZS5j DQo+PiBAQCAtMCwwICsxLDIzIEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjANCj4+ICsvKg0KPj4gKyAqIFVTQlNTIGRldmljZSBjb250cm9sbGVyIGRyaXZlciBUcmFj ZSBTdXBwb3J0DQo+PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggQ2FkZW5jZS4NCj4+ ICsgKg0KPj4gKyAqIEF1dGhvcjogUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4N Cj4+ICsgKi8NCj4+ICsNCj4+ICsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMNCj4+ICsjaW5j bHVkZSAidHJhY2UuaCINCj4+ICsNCj4+ICt2b2lkIGNkbnMzX2RiZyhzdHJ1Y3QgY2RuczNfZGV2 aWNlICpwcml2X2RldiwgY29uc3QgY2hhciAqZm10LCAuLi4pDQo+PiArew0KPj4gKyAgICAgICBz dHJ1Y3QgdmFfZm9ybWF0IHZhZjsNCj4+ICsgICAgICAgdmFfbGlzdCBhcmdzOw0KPj4gKw0KPj4g KyAgICAgICB2YV9zdGFydChhcmdzLCBmbXQpOw0KPj4gKyAgICAgICB2YWYuZm10ID0gZm10Ow0K Pj4gKyAgICAgICB2YWYudmEgPSAmYXJnczsNCj4+ICsgICAgICAgdHJhY2VfY2RuczNfbG9nKHBy aXZfZGV2LCAmdmFmKTsNCj4+ICsgICAgICAgdmFfZW5kKGFyZ3MpOw0KPj4gK30NCj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy90cmFjZS5oIGIvZHJpdmVycy91c2IvY2RuczMvdHJh Y2UuaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uYTZi YmY5MWM2MTZiDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy90 cmFjZS5oDQo+PiBAQCAtMCwwICsxLDQwNCBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wICovDQo+PiArLyoNCj4+ICsgKiBVU0JTUyBkZXZpY2UgY29udHJvbGxlciBk cml2ZXIuDQo+PiArICogVHJhY2Ugc3VwcG9ydCBoZWFkZXIgZmlsZS4NCj4+ICsgKg0KPj4gKyAq IENvcHlyaWdodCAoQykgMjAxOCBDYWRlbmNlLg0KPj4gKyAqDQo+PiArICogQXV0aG9yOiBQYXdl bCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPg0KPj4gKyAqLw0KPj4gKw0KPj4gKyN1bmRl ZiBUUkFDRV9TWVNURU0NCj4+ICsjZGVmaW5lIFRSQUNFX1NZU1RFTSBjZG5zMw0KPj4gKw0KPj4g KyNpZiAhZGVmaW5lZChfX0xJTlVYX0NETlMzX1RSQUNFKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURF Ul9NVUxUSV9SRUFEKQ0KPj4gKyNkZWZpbmUgX19MSU5VWF9DRE5TM19UUkFDRQ0KPj4gKw0KPj4g KyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC90cmFjZXBvaW50 Lmg+DQo+PiArI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgv dXNiL2NoOS5oPg0KPj4gKyNpbmNsdWRlICJjb3JlLmgiDQo+PiArI2luY2x1ZGUgImdhZGdldC5o Ig0KPj4gKyNpbmNsdWRlICJkZWJ1Zy5oIg0KPj4gKw0KPj4gKyNkZWZpbmUgQ0ROUzNfTVNHX01B WCAgNTAwDQo+PiArDQo+PiArVFJBQ0VfRVZFTlQoY2RuczNfbG9nLA0KPj4gKyAgICAgICBUUF9Q Uk9UTyhzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2Rldiwgc3RydWN0IHZhX2Zvcm1hdCAqdmFm KSwNCj4+ICsgICAgICAgVFBfQVJHUyhwcml2X2RldiwgdmFmKSwNCj4+ICsgICAgICAgVFBfU1RS VUNUX19lbnRyeSgNCj4+ICsgICAgICAgICAgICAgICBfX3N0cmluZyhuYW1lLCBkZXZfbmFtZShw cml2X2Rldi0+ZGV2KSkNCj4+ICsgICAgICAgICAgICAgICBfX2R5bmFtaWNfYXJyYXkoY2hhciwg bXNnLCBDRE5TM19NU0dfTUFYKQ0KPj4gKyAgICAgICApLA0KPj4gKyAgICAgICBUUF9mYXN0X2Fz c2lnbigNCj4+ICsgICAgICAgICAgICAgICBfX2Fzc2lnbl9zdHIobmFtZSwgZGV2X25hbWUocHJp dl9kZXYtPmRldikpOw0KPj4gKyAgICAgICAgICAgICAgIHZzbnByaW50ZihfX2dldF9zdHIobXNn KSwgQ0ROUzNfTVNHX01BWCwgdmFmLT5mbXQsICp2YWYtPnZhKTsNCj4+ICsgICAgICAgKSwNCj4+ ICsgICAgICAgVFBfcHJpbnRrKCIlczogJXMiLCBfX2dldF9zdHIobmFtZSksIF9fZ2V0X3N0ciht c2cpKQ0KPj4gKyk7DQo+PiArDQo+PiArREVDTEFSRV9FVkVOVF9DTEFTUyhjZG5zM19sb2dfZG9v cmJlbGwsDQo+PiArICAgICAgIFRQX1BST1RPKGNvbnN0IGNoYXIgKmVwX25hbWUsIHUzMiBlcF90 cmJhZGRyKSwNCj4+ICsgICAgICAgVFBfQVJHUyhlcF9uYW1lLCBlcF90cmJhZGRyKSwNCj4+ICsg ICAgICAgVFBfU1RSVUNUX19lbnRyeSgNCj4+ICsgICAgICAgICAgICAgICBfX3N0cmluZyhuYW1l LCBlcF9uYW1lKQ0KPj4gKyAgICAgICAgICAgICAgIF9fZmllbGQodTMyLCBlcF90cmJhZGRyKQ0K Pj4gKyAgICAgICApLA0KPj4gKyAgICAgICBUUF9mYXN0X2Fzc2lnbigNCj4+ICsgICAgICAgICAg ICAgICBfX2Fzc2lnbl9zdHIobmFtZSwgZXBfbmFtZSk7DQo+PiArICAgICAgICAgICAgICAgX19l bnRyeS0+ZXBfdHJiYWRkciA9IGVwX3RyYmFkZHI7DQo+PiArICAgICAgICksDQo+PiArICAgICAg IFRQX3ByaW50aygiLy9EaW5nIERvbmcgJXMsIGVwX3RyYmFkZHIgJTA4eCIsIF9fZ2V0X3N0cihu YW1lKSwNCj4+ICsgICAgICAgICAgICAgICAgIF9fZW50cnktPmVwX3RyYmFkZHIpDQo+PiArKTsN Cj4+ICsNCj4+ICtERUZJTkVfRVZFTlQoY2RuczNfbG9nX2Rvb3JiZWxsLCBjZG5zM19kb29yYmVs bF9lcDAsDQo+PiArICAgICAgIFRQX1BST1RPKGNvbnN0IGNoYXIgKmVwX25hbWUsIHUzMiBlcF90 cmJhZGRyKSwNCj4+ICsgICAgICAgVFBfQVJHUyhlcF9uYW1lLCBlcF90cmJhZGRyKQ0KPj4gKyk7 DQo+PiArDQo+PiArREVGSU5FX0VWRU5UKGNkbnMzX2xvZ19kb29yYmVsbCwgY2RuczNfZG9vcmJl bGxfZXB4LA0KPj4gKyAgICAgICBUUF9QUk9UTyhjb25zdCBjaGFyICplcF9uYW1lLCB1MzIgZXBf dHJiYWRkciksDQo+PiArICAgICAgIFRQX0FSR1MoZXBfbmFtZSwgZXBfdHJiYWRkcikNCj4+ICsp Ow0KPj4gKw0KPj4gK0RFQ0xBUkVfRVZFTlRfQ0xBU1MoY2RuczNfbG9nX3VzYl9pcnEsDQo+PiAr ICAgICAgIFRQX1BST1RPKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LCB1MzIgdXNiX2lz dHMpLA0KPj4gKyAgICAgICBUUF9BUkdTKHByaXZfZGV2LCB1c2JfaXN0cyksDQo+PiArICAgICAg IFRQX1NUUlVDVF9fZW50cnkoDQo+PiArICAgICAgICAgICAgICAgX19maWVsZChlbnVtIHVzYl9k ZXZpY2Vfc3BlZWQsIHNwZWVkKQ0KPj4gKyAgICAgICAgICAgICAgIF9fZmllbGQodTMyLCB1c2Jf aXN0cykNCj4+ICsgICAgICAgICAgICAgICBfX2R5bmFtaWNfYXJyYXkoY2hhciwgc3RyLCBDRE5T M19NU0dfTUFYKQ0KPj4gKyAgICAgICApLA0KPj4gKyAgICAgICBUUF9mYXN0X2Fzc2lnbigNCj4+ ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5zcGVlZCA9IGNkbnMzX2dldF9zcGVlZChwcml2X2Rl dik7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+dXNiX2lzdHMgPSB1c2JfaXN0czsNCj4+ ICsgICAgICAgKSwNCj4+ICsgICAgICAgVFBfcHJpbnRrKCIlcyIsIGNkbnMzX2RlY29kZV91c2Jf aXJxKF9fZ2V0X3N0cihzdHIpLCBfX2VudHJ5LT5zcGVlZCwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZW50cnktPnVzYl9pc3RzKSkNCj4+ICspOw0K Pj4gKw0KPj4gK0RFRklORV9FVkVOVChjZG5zM19sb2dfdXNiX2lycSwgY2RuczNfdXNiX2lycSwN Cj4+ICsgICAgICAgVFBfUFJPVE8oc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsIHUzMiB1 c2JfaXN0cyksDQo+PiArICAgICAgIFRQX0FSR1MocHJpdl9kZXYsIHVzYl9pc3RzKQ0KPj4gKyk7 DQo+PiArDQo+PiArREVDTEFSRV9FVkVOVF9DTEFTUyhjZG5zM19sb2dfZXB4X2lycSwNCj4+ICsg ICAgICAgVFBfUFJPVE8oc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsIHN0cnVjdCBjZG5z M19lbmRwb2ludCAqcHJpdl9lcCksDQo+PiArICAgICAgIFRQX0FSR1MocHJpdl9kZXYsIHByaXZf ZXApLA0KPj4gKyAgICAgICBUUF9TVFJVQ1RfX2VudHJ5KA0KPj4gKyAgICAgICAgICAgICAgIF9f c3RyaW5nKGVwX25hbWUsIHByaXZfZXAtPm5hbWUpDQo+PiArICAgICAgICAgICAgICAgX19maWVs ZCh1MzIsIGVwX3N0cykNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHUzMiwgZXBfdHJhZGRy KQ0KPj4gKyAgICAgICAgICAgICAgIF9fZHluYW1pY19hcnJheShjaGFyLCBzdHIsIENETlMzX01T R19NQVgpDQo+PiArICAgICAgICksDQo+PiArICAgICAgIFRQX2Zhc3RfYXNzaWduKA0KPj4gKyAg ICAgICAgICAgICAgIF9fYXNzaWduX3N0cihlcF9uYW1lLCBwcml2X2VwLT5uYW1lKTsNCj4+ICsg ICAgICAgICAgICAgICBfX2VudHJ5LT5lcF9zdHMgPSByZWFkbCgmcHJpdl9kZXYtPnJlZ3MtPmVw X3N0cyk7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ZXBfdHJhZGRyID0gcmVhZGwoJnBy aXZfZGV2LT5yZWdzLT5lcF90cmFkZHIpOw0KPj4gKyAgICAgICApLA0KPj4gKyAgICAgICBUUF9w cmludGsoIiVzLCBlcF90cmFkZHI6ICUwOHgiLA0KPj4gKyAgICAgICAgICAgICAgICAgY2RuczNf ZGVjb2RlX2VweF9pcnEoX19nZXRfc3RyKHN0ciksDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfX2dldF9zdHIoZXBfbmFtZSksDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfX2VudHJ5LT5lcF9zdHMpLA0KPj4gKyAgICAgICAgICAg ICAgICAgX19lbnRyeS0+ZXBfdHJhZGRyKQ0KPj4gKyk7DQo+PiArDQo+PiArREVGSU5FX0VWRU5U KGNkbnMzX2xvZ19lcHhfaXJxLCBjZG5zM19lcHhfaXJxLA0KPj4gKyAgICAgICBUUF9QUk9UTyhz dHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2Rldiwgc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2 X2VwKSwNCj4+ICsgICAgICAgVFBfQVJHUyhwcml2X2RldiwgcHJpdl9lcCkNCj4+ICspOw0KPj4g Kw0KPj4gK0RFQ0xBUkVfRVZFTlRfQ0xBU1MoY2RuczNfbG9nX2VwMF9pcnEsDQo+PiArICAgICAg IFRQX1BST1RPKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LCAgdTMyIGVwX3N0cyksDQo+ PiArICAgICAgIFRQX0FSR1MocHJpdl9kZXYsIGVwX3N0cyksDQo+PiArICAgICAgIFRQX1NUUlVD VF9fZW50cnkoDQo+PiArICAgICAgICAgICAgICAgX19maWVsZChpbnQsIGVwX2RpcikNCj4+ICsg ICAgICAgICAgICAgICBfX2ZpZWxkKHUzMiwgZXBfc3RzKQ0KPj4gKyAgICAgICAgICAgICAgIF9f ZHluYW1pY19hcnJheShjaGFyLCBzdHIsIENETlMzX01TR19NQVgpDQo+PiArICAgICAgICksDQo+ PiArICAgICAgIFRQX2Zhc3RfYXNzaWduKA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPmVw X2RpciA9IHByaXZfZGV2LT5lcDBfZGF0YV9kaXI7DQo+PiArICAgICAgICAgICAgICAgX19lbnRy eS0+ZXBfc3RzID0gZXBfc3RzOw0KPj4gKyAgICAgICApLA0KPj4gKyAgICAgICBUUF9wcmludGso IiVzIiwgY2RuczNfZGVjb2RlX2VwMF9pcnEoX19nZXRfc3RyKHN0ciksDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2VudHJ5LT5lcF9kaXIsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2VudHJ5LT5lcF9z dHMpKQ0KPj4gKyk7DQo+PiArDQo+PiArREVGSU5FX0VWRU5UKGNkbnMzX2xvZ19lcDBfaXJxLCBj ZG5zM19lcDBfaXJxLA0KPj4gKyAgICAgICBUUF9QUk9UTyhzdHJ1Y3QgY2RuczNfZGV2aWNlICpw cml2X2RldiwgdTMyIGVwX3N0cyksDQo+PiArICAgICAgIFRQX0FSR1MocHJpdl9kZXYsIGVwX3N0 cykNCj4+ICspOw0KPj4gKw0KPj4gK0RFQ0xBUkVfRVZFTlRfQ0xBU1MoY2RuczNfbG9nX2N0cmws DQo+PiArICAgICAgIFRQX1BST1RPKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpLA0KPj4g KyAgICAgICBUUF9BUkdTKGN0cmwpLA0KPj4gKyAgICAgICBUUF9TVFJVQ1RfX2VudHJ5KA0KPj4g KyAgICAgICAgICAgICAgIF9fZmllbGQodTgsIGJSZXF1ZXN0VHlwZSkNCj4+ICsgICAgICAgICAg ICAgICBfX2ZpZWxkKHU4LCBiUmVxdWVzdCkNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHUx Niwgd1ZhbHVlKQ0KPj4gKyAgICAgICAgICAgICAgIF9fZmllbGQodTE2LCB3SW5kZXgpDQo+PiAr ICAgICAgICAgICAgICAgX19maWVsZCh1MTYsIHdMZW5ndGgpDQo+PiArICAgICAgICAgICAgICAg X19keW5hbWljX2FycmF5KGNoYXIsIHN0ciwgQ0ROUzNfTVNHX01BWCkNCj4+ICsgICAgICAgKSwN Cj4+ICsgICAgICAgVFBfZmFzdF9hc3NpZ24oDQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ YlJlcXVlc3RUeXBlID0gY3RybC0+YlJlcXVlc3RUeXBlOw0KPj4gKyAgICAgICAgICAgICAgIF9f ZW50cnktPmJSZXF1ZXN0ID0gY3RybC0+YlJlcXVlc3Q7DQo+PiArICAgICAgICAgICAgICAgX19l bnRyeS0+d1ZhbHVlID0gbGUxNl90b19jcHUoY3RybC0+d1ZhbHVlKTsNCj4+ICsgICAgICAgICAg ICAgICBfX2VudHJ5LT53SW5kZXggPSBsZTE2X3RvX2NwdShjdHJsLT53SW5kZXgpOw0KPj4gKyAg ICAgICAgICAgICAgIF9fZW50cnktPndMZW5ndGggPSBsZTE2X3RvX2NwdShjdHJsLT53TGVuZ3Ro KTsNCj4+ICsgICAgICAgKSwNCj4+ICsgICAgICAgVFBfcHJpbnRrKCIlcyIsIHVzYl9kZWNvZGVf Y3RybChfX2dldF9zdHIoc3RyKSwgQ0ROUzNfTVNHX01BWCwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfX2VudHJ5LT5iUmVxdWVzdFR5cGUsDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19lbnRyeS0+YlJlcXVlc3QsIF9fZW50 cnktPndWYWx1ZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X2VudHJ5LT53SW5kZXgsIF9fZW50cnktPndMZW5ndGgpDQo+PiArICAgICAgICkNCj4+ICspOw0K Pj4gKw0KPj4gK0RFRklORV9FVkVOVChjZG5zM19sb2dfY3RybCwgY2RuczNfY3RybF9yZXEsDQo+ PiArICAgICAgIFRQX1BST1RPKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpLA0KPj4gKyAg ICAgICBUUF9BUkdTKGN0cmwpDQo+PiArKTsNCj4+ICsNCj4+ICtERUNMQVJFX0VWRU5UX0NMQVNT KGNkbnMzX2xvZ19yZXF1ZXN0LA0KPj4gKyAgICAgICBUUF9QUk9UTyhzdHJ1Y3QgY2RuczNfcmVx dWVzdCAqcmVxKSwNCj4+ICsgICAgICAgVFBfQVJHUyhyZXEpLA0KPj4gKyAgICAgICBUUF9TVFJV Q1RfX2VudHJ5KA0KPj4gKyAgICAgICAgICAgICAgIF9fc3RyaW5nKG5hbWUsIHJlcS0+cHJpdl9l cC0+bmFtZSkNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHN0cnVjdCBjZG5zM19yZXF1ZXN0 ICosIHJlcSkNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHVuc2lnbmVkIGludCwgYWN0dWFs KQ0KPj4gKyAgICAgICAgICAgICAgIF9fZmllbGQodW5zaWduZWQgaW50LCBsZW5ndGgpDQo+PiAr ICAgICAgICAgICAgICAgX19maWVsZChpbnQsIHN0YXR1cykNCj4+ICsgICAgICAgICAgICAgICBf X2ZpZWxkKGludCwgemVybykNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKGludCwgc2hvcnRf bm90X29rKQ0KPj4gKyAgICAgICAgICAgICAgIF9fZmllbGQoaW50LCBub19pbnRlcnJ1cHQpDQo+ PiArICAgICAgICAgICAgICAgX19maWVsZChpbnQsIHN0YXJ0X3RyYikNCj4+ICsgICAgICAgICAg ICAgICBfX2ZpZWxkKGludCwgZW5kX3RyYikNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHN0 cnVjdCBjZG5zM190cmIgKiwgc3RhcnRfdHJiX2FkZHIpDQo+PiArICAgICAgICAgICAgICAgX19m aWVsZChpbnQsIGZsYWdzKQ0KPj4gKyAgICAgICApLA0KPj4gKyAgICAgICBUUF9mYXN0X2Fzc2ln bigNCj4+ICsgICAgICAgICAgICAgICBfX2Fzc2lnbl9zdHIobmFtZSwgcmVxLT5wcml2X2VwLT5u YW1lKTsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5yZXEgPSByZXE7DQo+PiArICAgICAg ICAgICAgICAgX19lbnRyeS0+YWN0dWFsID0gcmVxLT5yZXF1ZXN0LmFjdHVhbDsNCj4+ICsgICAg ICAgICAgICAgICBfX2VudHJ5LT5sZW5ndGggPSByZXEtPnJlcXVlc3QubGVuZ3RoOw0KPj4gKyAg ICAgICAgICAgICAgIF9fZW50cnktPnN0YXR1cyA9IHJlcS0+cmVxdWVzdC5zdGF0dXM7DQo+PiAr ICAgICAgICAgICAgICAgX19lbnRyeS0+emVybyA9IHJlcS0+cmVxdWVzdC56ZXJvOw0KPj4gKyAg ICAgICAgICAgICAgIF9fZW50cnktPnNob3J0X25vdF9vayA9IHJlcS0+cmVxdWVzdC5zaG9ydF9u b3Rfb2s7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+bm9faW50ZXJydXB0ID0gcmVxLT5y ZXF1ZXN0Lm5vX2ludGVycnVwdDsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5zdGFydF90 cmIgPSByZXEtPnN0YXJ0X3RyYjsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5lbmRfdHJi ID0gcmVxLT5lbmRfdHJiOw0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPnN0YXJ0X3RyYl9h ZGRyID0gcmVxLT50cmI7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ZmxhZ3MgPSByZXEt PmZsYWdzOw0KPj4gKyAgICAgICApLA0KPj4gKyAgICAgICBUUF9wcmludGsoIiVzOiByZXE6ICVw LCBsZW5ndGg6ICV1LyV1ICVzJXMlcywgc3RhdHVzOiAlZCwiDQo+PiArICAgICAgICAgICAgICAg ICAiIHRyYjogW3N0YXJ0OiVkLCBlbmQ6JWQ6IHZpcnQgYWRkciAlcGFdLCBmbGFnczoleCAiLA0K Pj4gKyAgICAgICAgICAgICAgIF9fZ2V0X3N0cihuYW1lKSwgX19lbnRyeS0+cmVxLCBfX2VudHJ5 LT5hY3R1YWwsIF9fZW50cnktPmxlbmd0aCwNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT56 ZXJvID8gInplcm8gfCAiIDogIiIsDQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+c2hvcnRf bm90X29rID8gInNob3J0IHwgIiA6ICIiLA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPm5v X2ludGVycnVwdCA/ICJubyBpbnQiIDogIiIsDQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ c3RhdHVzLA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPnN0YXJ0X3RyYiwNCj4+ICsgICAg ICAgICAgICAgICBfX2VudHJ5LT5lbmRfdHJiLA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnkt PnN0YXJ0X3RyYl9hZGRyLA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPmZsYWdzDQo+PiAr ICAgICAgICkNCj4+ICspOw0KPj4gKw0KPj4gK0RFRklORV9FVkVOVChjZG5zM19sb2dfcmVxdWVz dCwgY2RuczNfYWxsb2NfcmVxdWVzdCwNCj4+ICsgICAgICAgVFBfUFJPVE8oc3RydWN0IGNkbnMz X3JlcXVlc3QgKnJlcSksDQo+PiArICAgICAgIFRQX0FSR1MocmVxKQ0KPj4gKyk7DQo+PiArDQo+ PiArREVGSU5FX0VWRU5UKGNkbnMzX2xvZ19yZXF1ZXN0LCBjZG5zM19mcmVlX3JlcXVlc3QsDQo+ PiArICAgICAgIFRQX1BST1RPKHN0cnVjdCBjZG5zM19yZXF1ZXN0ICpyZXEpLA0KPj4gKyAgICAg ICBUUF9BUkdTKHJlcSkNCj4+ICspOw0KPj4gKw0KPj4gK0RFRklORV9FVkVOVChjZG5zM19sb2df cmVxdWVzdCwgY2RuczNfZXBfcXVldWUsDQo+PiArICAgICAgIFRQX1BST1RPKHN0cnVjdCBjZG5z M19yZXF1ZXN0ICpyZXEpLA0KPj4gKyAgICAgICBUUF9BUkdTKHJlcSkNCj4+ICspOw0KPj4gKw0K Pj4gK0RFRklORV9FVkVOVChjZG5zM19sb2dfcmVxdWVzdCwgY2RuczNfZXBfZGVxdWV1ZSwNCj4+ ICsgICAgICAgVFBfUFJPVE8oc3RydWN0IGNkbnMzX3JlcXVlc3QgKnJlcSksDQo+PiArICAgICAg IFRQX0FSR1MocmVxKQ0KPj4gKyk7DQo+PiArDQo+PiArREVGSU5FX0VWRU5UKGNkbnMzX2xvZ19y ZXF1ZXN0LCBjZG5zM19nYWRnZXRfZ2l2ZWJhY2ssDQo+PiArICAgICAgIFRQX1BST1RPKHN0cnVj dCBjZG5zM19yZXF1ZXN0ICpyZXEpLA0KPj4gKyAgICAgICBUUF9BUkdTKHJlcSkNCj4+ICspOw0K Pj4gKw0KPj4gK0RFQ0xBUkVfRVZFTlRfQ0xBU1MoY2RuczNfbG9nX3RyYiwNCj4+ICsgICAgICAg VFBfUFJPVE8oc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwLCBzdHJ1Y3QgY2RuczNfdHJi ICp0cmIpLA0KPj4gKyAgICAgICBUUF9BUkdTKHByaXZfZXAsIHRyYiksDQo+PiArICAgICAgIFRQ X1NUUlVDVF9fZW50cnkoDQo+PiArICAgICAgICAgICAgICAgX19zdHJpbmcobmFtZSwgcHJpdl9l cC0+bmFtZSkNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHN0cnVjdCBjZG5zM190cmIgKiwg dHJiKQ0KPj4gKyAgICAgICAgICAgICAgIF9fZmllbGQodTMyLCBidWZmZXIpDQo+PiArICAgICAg ICAgICAgICAgX19maWVsZCh1MzIsIGxlbmd0aCkNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxk KHUzMiwgY29udHJvbCkNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHUzMiwgdHlwZSkNCj4+ ICsgICAgICAgKSwNCj4+ICsgICAgICAgVFBfZmFzdF9hc3NpZ24oDQo+PiArICAgICAgICAgICAg ICAgX19hc3NpZ25fc3RyKG5hbWUsIHByaXZfZXAtPm5hbWUpOw0KPj4gKyAgICAgICAgICAgICAg IF9fZW50cnktPnRyYiA9IHRyYjsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5idWZmZXIg PSB0cmItPmJ1ZmZlcjsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5sZW5ndGggPSB0cmIt Pmxlbmd0aDsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5jb250cm9sID0gdHJiLT5jb250 cm9sOw0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPnR5cGUgPSB1c2JfZW5kcG9pbnRfdHlw ZShwcml2X2VwLT5lbmRwb2ludC5kZXNjKTsNCj4+ICsgICAgICAgKSwNCj4+ICsgICAgICAgVFBf cHJpbnRrKCIlczogdHJiICVwYSwgZG1hIGJ1ZjogMHglMDh4LCBzaXplOiAlbGQsIGN0cmw6IDB4 JTA4eCAoJXMlcyVzJXMlcyVzJXMpIiwNCj4+ICsgICAgICAgICAgICAgICBfX2dldF9zdHIobmFt ZSksIF9fZW50cnktPnRyYiwgX19lbnRyeS0+YnVmZmVyLA0KPj4gKyAgICAgICAgICAgICAgIFRS Ql9MRU4oX19lbnRyeS0+bGVuZ3RoKSwgX19lbnRyeS0+Y29udHJvbCwNCj4+ICsgICAgICAgICAg ICAgICBfX2VudHJ5LT5jb250cm9sICYgVFJCX0NZQ0xFID8gIkM9MSwgIiA6ICJDPTAsICIsDQo+ PiArICAgICAgICAgICAgICAgX19lbnRyeS0+Y29udHJvbCAmIFRSQl9UT0dHTEUgPyAiVD0xLCAi IDogIlQ9MCwgIiwNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5jb250cm9sICYgVFJCX0lT UCA/ICJJU1AsICIgOiAiIiwNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5jb250cm9sICYg VFJCX0ZJRk9fTU9ERSA/ICJGSUZPLCAiIDogIiIsDQo+PiArICAgICAgICAgICAgICAgX19lbnRy eS0+Y29udHJvbCAmIFRSQl9DSEFJTiA/ICJDSEFJTiwgIiA6ICIiLA0KPj4gKyAgICAgICAgICAg ICAgIF9fZW50cnktPmNvbnRyb2wgJiBUUkJfSU9DID8gIklPQywgIiA6ICIiLA0KPj4gKyAgICAg ICAgICAgICAgIFRSQl9GSUVMRF9UT19UWVBFKF9fZW50cnktPmNvbnRyb2wpID09IFRSQl9OT1JN QUwgPyAiTm9ybWFsIiA6ICJMSU5LIg0KPj4gKyAgICAgICApDQo+PiArKTsNCj4+ICsNCj4+ICtE RUZJTkVfRVZFTlQoY2RuczNfbG9nX3RyYiwgY2RuczNfcHJlcGFyZV90cmIsDQo+PiArICAgICAg IFRQX1BST1RPKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcCwgc3RydWN0IGNkbnMzX3Ry YiAqdHJiKSwNCj4+ICsgICAgICAgVFBfQVJHUyhwcml2X2VwLCB0cmIpDQo+PiArKTsNCj4+ICsN Cj4+ICtERUZJTkVfRVZFTlQoY2RuczNfbG9nX3RyYiwgY2RuczNfY29tcGxldGVfdHJiLA0KPj4g KyAgICAgICBUUF9QUk9UTyhzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXAsIHN0cnVjdCBj ZG5zM190cmIgKnRyYiksDQo+PiArICAgICAgIFRQX0FSR1MocHJpdl9lcCwgdHJiKQ0KPj4gKyk7 DQo+PiArDQo+PiArREVDTEFSRV9FVkVOVF9DTEFTUyhjZG5zM19sb2dfcmluZywNCj4+ICsgICAg ICAgVFBfUFJPVE8oc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKSwNCj4+ICsgICAgICAg VFBfQVJHUyhwcml2X2VwKSwNCj4+ICsgICAgICAgVFBfU1RSVUNUX19lbnRyeSgNCj4+ICsgICAg ICAgICAgICAgICBfX2R5bmFtaWNfYXJyYXkodTgsIHJpbmcsIFRSQl9SSU5HX1NJWkUpDQo+PiAr ICAgICAgICAgICAgICAgX19keW5hbWljX2FycmF5KHU4LCBwcml2X2VwLCBzaXplb2Yoc3RydWN0 IGNkbnMzX2VuZHBvaW50KSkNCj4+ICsgICAgICAgICAgICAgICBfX2R5bmFtaWNfYXJyYXkoY2hh ciwgYnVmZmVyLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVFJCU19QRVJf U0VHTUVOVCAqIDY1KSArIENETlMzX01TR19NQVgpDQo+PiArICAgICAgICksDQo+PiArICAgICAg IFRQX2Zhc3RfYXNzaWduKA0KPj4gKyAgICAgICAgICAgICAgIG1lbWNweShfX2dldF9keW5hbWlj X2FycmF5KHByaXZfZXApLCBwcml2X2VwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICBzaXpl b2Yoc3RydWN0IGNkbnMzX2VuZHBvaW50KSk7DQo+PiArICAgICAgICAgICAgICAgbWVtY3B5KF9f Z2V0X2R5bmFtaWNfYXJyYXkocmluZyksIHByaXZfZXAtPnRyYl9wb29sLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICBUUkJfUklOR19TSVpFKTsNCj4+ICsgICAgICAgKSwNCj4+ICsNCj4+ICsg ICAgICAgVFBfcHJpbnRrKCIlcyIsDQo+PiArICAgICAgICAgICAgICAgICBjZG5zM19kYmdfcmlu Zygoc3RydWN0IGNkbnMzX2VuZHBvaW50ICopX19nZXRfc3RyKHByaXZfZXApLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjZG5zM190cmIgKilfX2dldF9zdHIo cmluZyksDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dldF9zdHIoYnVm ZmVyKSkpDQo+PiArKTsNCj4+ICsNCj4+ICtERUZJTkVfRVZFTlQoY2RuczNfbG9nX3JpbmcsIGNk bnMzX3JpbmcsDQo+PiArICAgICAgIFRQX1BST1RPKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJp dl9lcCksDQo+PiArICAgICAgIFRQX0FSR1MocHJpdl9lcCkNCj4+ICspOw0KPj4gKw0KPj4gK0RF Q0xBUkVfRVZFTlRfQ0xBU1MoY2RuczNfbG9nX2VwLA0KPj4gKyAgICAgICBUUF9QUk9UTyhzdHJ1 Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXApLA0KPj4gKyAgICAgICBUUF9BUkdTKHByaXZfZXAp LA0KPj4gKyAgICAgICBUUF9TVFJVQ1RfX2VudHJ5KA0KPj4gKyAgICAgICAgICAgICAgIF9fc3Ry aW5nKG5hbWUsIHByaXZfZXAtPm5hbWUpDQo+PiArICAgICAgICAgICAgICAgX19maWVsZCh1bnNp Z25lZCBpbnQsIG1heHBhY2tldCkNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHVuc2lnbmVk IGludCwgbWF4cGFja2V0X2xpbWl0KQ0KPj4gKyAgICAgICAgICAgICAgIF9fZmllbGQodW5zaWdu ZWQgaW50LCBtYXhfc3RyZWFtcykNCj4+ICsgICAgICAgICAgICAgICBfX2ZpZWxkKHVuc2lnbmVk IGludCwgbWF4YnVyc3QpDQo+PiArICAgICAgICAgICAgICAgX19maWVsZCh1bnNpZ25lZCBpbnQs IGZsYWdzKQ0KPj4gKyAgICAgICAgICAgICAgIF9fZmllbGQodW5zaWduZWQgaW50LCBkaXIpDQo+ PiArICAgICAgICAgICAgICAgX19maWVsZCh1OCwgZW5xdWV1ZSkNCj4+ICsgICAgICAgICAgICAg ICBfX2ZpZWxkKHU4LCBkZXF1ZXVlKQ0KPj4gKyAgICAgICApLA0KPj4gKyAgICAgICBUUF9mYXN0 X2Fzc2lnbigNCj4+ICsgICAgICAgICAgICAgICBfX2Fzc2lnbl9zdHIobmFtZSwgcHJpdl9lcC0+ bmFtZSk7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+bWF4cGFja2V0ID0gcHJpdl9lcC0+ ZW5kcG9pbnQubWF4cGFja2V0Ow0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPm1heHBhY2tl dF9saW1pdCA9IHByaXZfZXAtPmVuZHBvaW50Lm1heHBhY2tldF9saW1pdDsNCj4+ICsgICAgICAg ICAgICAgICBfX2VudHJ5LT5tYXhfc3RyZWFtcyA9IHByaXZfZXAtPmVuZHBvaW50Lm1heF9zdHJl YW1zOw0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPm1heGJ1cnN0ID0gcHJpdl9lcC0+ZW5k cG9pbnQubWF4YnVyc3Q7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ZmxhZ3MgPSBwcml2 X2VwLT5mbGFnczsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5kaXIgPSBwcml2X2VwLT5k aXI7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ZW5xdWV1ZSA9IHByaXZfZXAtPmVucXVl dWU7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ZGVxdWV1ZSA9IHByaXZfZXAtPmRlcXVl dWU7DQo+PiArICAgICAgICksDQo+PiArICAgICAgIFRQX3ByaW50aygiJXM6IG1wczogJWQvJWQu IHN0cmVhbXM6ICVkLCBidXJzdDogJWQsIGVucSBpZHg6ICVkLCAiDQo+PiArICAgICAgICAgICAg ICAgICAiZGVxIGlkeDogJWQsIGZsYWdzICVzJXMlcyVzJXMlcyVzJXMsIGRpcjogJXMiLA0KPj4g KyAgICAgICAgICAgICAgIF9fZ2V0X3N0cihuYW1lKSwgX19lbnRyeS0+bWF4cGFja2V0LA0KPj4g KyAgICAgICAgICAgICAgIF9fZW50cnktPm1heHBhY2tldF9saW1pdCwgX19lbnRyeS0+bWF4X3N0 cmVhbXMsDQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+bWF4YnVyc3QsIF9fZW50cnktPmVu cXVldWUsDQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ZGVxdWV1ZSwNCj4+ICsgICAgICAg ICAgICAgICBfX2VudHJ5LT5mbGFncyAmIEVQX0VOQUJMRUQgPyAiRU4gfCAiIDogIiIsDQo+PiAr ICAgICAgICAgICAgICAgX19lbnRyeS0+ZmxhZ3MgJiBFUF9TVEFMTCA/ICJTVEFMTCB8ICIgOiAi IiwNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5mbGFncyAmIEVQX1dFREdFID8gIldFREdF IHwgIiA6ICIiLA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPmZsYWdzICYgRVBfVFJBTlNG RVJfU1RBUlRFRCA/ICJTVEFSVEVEIHwgIiA6ICIiLA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50 cnktPmZsYWdzICYgRVBfVVBEQVRFX0VQX1RSQkFERFIgPyAiVVBEIFRSQiB8ICIgOiAiIiwNCj4+ ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5mbGFncyAmIEVQX1BFTkRJTkdfUkVRVUVTVCA/ICJS RVEgUEVOIHwgIiA6ICIiLA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPmZsYWdzICYgRVBf UklOR19GVUxMID8gIlJJTkcgRlVMTCB8IiA6ICIiLA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50 cnktPmZsYWdzICYgRVBfQ0xBSU1FRCA/ICAiQ0xBSU1FRCAiIDogIiIsDQo+PiArICAgICAgICAg ICAgICAgX19lbnRyeS0+ZGlyID8gIklOIiA6ICJPVVQiDQo+PiArICAgICAgICkNCj4+ICspOw0K Pj4gKw0KPj4gK0RFRklORV9FVkVOVChjZG5zM19sb2dfZXAsIGNkbnMzX2dhZGdldF9lcF9lbmFi bGUsDQo+PiArICAgICAgIFRQX1BST1RPKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcCks DQo+PiArICAgICAgIFRQX0FSR1MocHJpdl9lcCkNCj4+ICspOw0KPj4gKw0KPj4gK0RFRklORV9F VkVOVChjZG5zM19sb2dfZXAsIGNkbnMzX2dhZGdldF9lcF9kaXNhYmxlLA0KPj4gKyAgICAgICBU UF9QUk9UTyhzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXApLA0KPj4gKyAgICAgICBUUF9B UkdTKHByaXZfZXApDQo+PiArKTsNCj4+ICsNCj4+ICtERUNMQVJFX0VWRU5UX0NMQVNTKGNkbnMz X2xvZ19yZXF1ZXN0X2hhbmRsZWQsDQo+PiArICAgICAgIFRQX1BST1RPKHN0cnVjdCBjZG5zM19y ZXF1ZXN0ICpwcml2X3JlcSwgaW50IGN1cnJlbnRfaW5kZXgsDQo+PiArICAgICAgICAgICAgICAg IGludCBoYW5kbGVkKSwNCj4+ICsgICAgICAgVFBfQVJHUyhwcml2X3JlcSwgY3VycmVudF9pbmRl eCwgaGFuZGxlZCksDQo+PiArICAgICAgIFRQX1NUUlVDVF9fZW50cnkoDQo+PiArICAgICAgICAg ICAgICAgX19maWVsZChzdHJ1Y3QgY2RuczNfcmVxdWVzdCAqLCBwcml2X3JlcSkNCj4+ICsgICAg ICAgICAgICAgICBfX2ZpZWxkKHVuc2lnbmVkIGludCwgZG1hX3Bvc2l0aW9uKQ0KPj4gKyAgICAg ICAgICAgICAgIF9fZmllbGQodW5zaWduZWQgaW50LCBoYW5kbGVkKQ0KPj4gKyAgICAgICAgICAg ICAgIF9fZmllbGQodW5zaWduZWQgaW50LCBkZXF1ZXVlX2lkeCkNCj4+ICsgICAgICAgICAgICAg ICBfX2ZpZWxkKHVuc2lnbmVkIGludCwgZW5xdWV1ZV9pZHgpDQo+PiArICAgICAgICAgICAgICAg X19maWVsZCh1bnNpZ25lZCBpbnQsIHN0YXJ0X3RyYikNCj4+ICsgICAgICAgICAgICAgICBfX2Zp ZWxkKHVuc2lnbmVkIGludCwgZW5kX3RyYikNCj4+ICsgICAgICAgKSwNCj4+ICsgICAgICAgVFBf ZmFzdF9hc3NpZ24oDQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+cHJpdl9yZXEgPSBwcml2 X3JlcTsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5kbWFfcG9zaXRpb24gPSBjdXJyZW50 X2luZGV4Ow0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPmhhbmRsZWQgPSBoYW5kbGVkOw0K Pj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPmRlcXVldWVfaWR4ID0gcHJpdl9yZXEtPnByaXZf ZXAtPmRlcXVldWU7DQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ZW5xdWV1ZV9pZHggPSBw cml2X3JlcS0+cHJpdl9lcC0+ZW5xdWV1ZTsNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5z dGFydF90cmIgPSBwcml2X3JlcS0+c3RhcnRfdHJiOw0KPj4gKyAgICAgICAgICAgICAgIF9fZW50 cnktPmVuZF90cmIgPSBwcml2X3JlcS0+ZW5kX3RyYjsNCj4+ICsgICAgICAgKSwNCj4+ICsgICAg ICAgVFBfcHJpbnRrKCJSZXE6ICVwICVzLCBETUEgcG9zOiAlZCwgZXAgZGVxOiAlZCwgZXAgZW5x OiAlZCwiDQo+PiArICAgICAgICAgICAgICAgICAiIHN0YXJ0IHRyYjogJWQsIGVuZCB0cmI6ICVk IiwNCj4+ICsgICAgICAgICAgICAgICBfX2VudHJ5LT5wcml2X3JlcSwNCj4+ICsgICAgICAgICAg ICAgICBfX2VudHJ5LT5oYW5kbGVkID8gImhhbmRsZWQiIDogIm5vdCBoYW5kbGVkIiwNCj4+ICsg ICAgICAgICAgICAgICBfX2VudHJ5LT5kbWFfcG9zaXRpb24sIF9fZW50cnktPmRlcXVldWVfaWR4 LA0KPj4gKyAgICAgICAgICAgICAgIF9fZW50cnktPmVucXVldWVfaWR4LCBfX2VudHJ5LT5zdGFy dF90cmIsDQo+PiArICAgICAgICAgICAgICAgX19lbnRyeS0+ZW5kX3RyYg0KPj4gKyAgICAgICAp DQo+PiArKTsNCj4+ICsNCj4+ICtERUZJTkVfRVZFTlQoY2RuczNfbG9nX3JlcXVlc3RfaGFuZGxl ZCwgY2RuczNfcmVxdWVzdF9oYW5kbGVkLA0KPj4gKyAgICAgICBUUF9QUk9UTyhzdHJ1Y3QgY2Ru czNfcmVxdWVzdCAqcHJpdl9yZXEsIGludCBjdXJyZW50X2luZGV4LA0KPj4gKyAgICAgICAgICAg ICAgICBpbnQgaGFuZGxlZCksDQo+PiArICAgICAgIFRQX0FSR1MocHJpdl9yZXEsIGN1cnJlbnRf aW5kZXgsIGhhbmRsZWQpDQo+PiArKTsNCj4+ICsjZW5kaWYgLyogX19MSU5VWF9DRE5TM19UUkFD RSAqLw0KPj4gKw0KPj4gKy8qIHRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgaGVhZGVyIGd1YXJk ICovDQo+PiArDQo+PiArI3VuZGVmIFRSQUNFX0lOQ0xVREVfUEFUSA0KPj4gKyNkZWZpbmUgVFJB Q0VfSU5DTFVERV9QQVRIIC4NCj4+ICsNCj4+ICsjdW5kZWYgVFJBQ0VfSU5DTFVERV9GSUxFDQo+ PiArI2RlZmluZSBUUkFDRV9JTkNMVURFX0ZJTEUgdHJhY2UNCj4+ICsNCj4+ICsjaW5jbHVkZSA8 dHJhY2UvZGVmaW5lX3RyYWNlLmg+DQo+PiAtLQ0KPj4gMi4xNy4xDQo+Pg0K