Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp26933pxb; Tue, 10 Nov 2020 18:36:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJyKwKzjI3S98b/1Q6tLqF+9spaCIz+jYWIzr+a76TMdzOgMFhV+NkL4FIfcmHPoOyVn3ouS X-Received: by 2002:aa7:d408:: with SMTP id z8mr2563408edq.166.1605062176276; Tue, 10 Nov 2020 18:36:16 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1605062176; cv=pass; d=google.com; s=arc-20160816; b=zGARdD6WG0FHGtmFDhGWy2bST+jDSbDGhj/ij2rVVGSGUGMb6nKtwxNjLHwJdNFv49 mJac1eEKLtXKIhjXeXVLAhGsm4Ro+vqqEsZL+RsxlFwBr/Qhl3pVepCLPSxtRdvN2dfN /q3OTCq2TycED1v9fRNqlmZ8gpxjArC5cmxZ2waTEKPncggSjsy1QChq/tMwuYZquYPR Tuuj0/2FyNcDEWTuJ1Rf1z33uzXjxZpdMC6Vz8hEfspQnGkh+g/XemFbPh2fQ0HKnJj2 WyuCNhxUxLgYGuXsx4nK1Y7BCp6b2TtpPijUrzPJqJtCcO3ILU2VfA/GuFoMaP/rQkoe 8b5g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=z4PykYbWkSud2+UF0/0xHM/qJ0EntFfOueGJHwCK+i8=; b=j2SYR7xsSjuhYk9BSnNX2OWAPryeOG2pyiwDQU4MasH9q56i+eC/Vt8T8m2PRJPA3/ aLBMZmCUpB5tGu72QzLadB5Rbx100zvONm4T+k4KEfhihdxkitq7QbLBN0i4561ysskN IfIPako2rbEC1qZ/h4Zyd/Obk/FMtK4Ipy9XoxWl83Uf4cKTwwVP0rEBsq5fx5AUi1xz DNvCVZlbqCu8xyQ6Gm4ZvIiZoTTclk3SHM2OY0imVCuzh7/wR7N6rDEcGDgqDwAxNAiW NrZZrpW7+eUWr7tgTeWazfqyhd4i7bABO8ptF0Uoxsck7xrIA/J+ukidtjWB9Zc2sWNM 1h+A== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=sXqz2Sl5; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s17si475661edr.437.2020.11.10.18.35.51; Tue, 10 Nov 2020 18:36:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=sXqz2Sl5; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732213AbgKKCeO (ORCPT + 99 others); Tue, 10 Nov 2020 21:34:14 -0500 Received: from mail-eopbgr40055.outbound.protection.outlook.com ([40.107.4.55]:17986 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725904AbgKKCeN (ORCPT ); Tue, 10 Nov 2020 21:34:13 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e6Zdt7aMXAC+R9BQ6QqrCZ3e+xNacA39iS17xoGpASLJiv+BnEfzH4m4bORr9MA2yALTbSXAx/OYPm/Y+hAVg+shbNkR8zmO1LYb5ydu5L6x9AtmuEwhrBbv2n4epWB84H8pxJuq03sEVjfOHpgjWkCuzJAs15wHZmPw92TpPC38A+v+lUulLkrVJWF8A8iUOCQhlapdnnxY7yjbM12PwOFGOr7DMyjXqqhvvJttTpGGvMFfpuvhbT+fhBgqAhNqZnDHGLNXJmONOuP073CylfyolBQ3u99PjcDj1OL7bMRkjRCno2HSe6fOT2a7eNkNvh2kZmFkmiuXbvkVaEJLzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z4PykYbWkSud2+UF0/0xHM/qJ0EntFfOueGJHwCK+i8=; b=ANxyR4z4v4M0Ja20gYPXuCrN8CtdbQK22IqoZfnzDHMZ0yQfmjDIfg6qgnpmt/fmjviz50Uh2561jt/IAPHxclxTaXTpZ178GLqtLnI4cRNQcOLAXKuoMs/CVBReD42BplGCcJnN0co/iss5rgLxjltdQoW79pURVrr8Av/zQJJ3xTCoSHq8JkMQF44obqWfEiyXZpNDVLfYZ7+iBzp6KorC+ThMplsmN8XkQWsNlZxda5pXqt/VcpfTO3Hc9pKLOL0krhEwg0zk2CEuQPfZcoq3vLm4mRpHHihqPrDSGacurQtS9s9X7FS8gXcF+3gVHFhcPSSzB98dyTwl6+KPiA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z4PykYbWkSud2+UF0/0xHM/qJ0EntFfOueGJHwCK+i8=; b=sXqz2Sl5bFoCfdw2bL6WSkrPOiI0fhG0nhNLPk+1MyNxeBfLUQy7vtpRgbXsnMsFyKxYBhkEPfd8RcuieJLRo7JgrIEnD8fGtkSqXCQWmALAmDGsuOZHqEbtC4PXMq0aFfJAU8bvsBK+tX4MbDO54FS/YM3IKFS3ZWJpKRANaf4= Received: from DBBPR04MB7979.eurprd04.prod.outlook.com (2603:10a6:10:1ec::9) by DB7PR04MB4090.eurprd04.prod.outlook.com (2603:10a6:5:28::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.25; Wed, 11 Nov 2020 02:33:46 +0000 Received: from DBBPR04MB7979.eurprd04.prod.outlook.com ([fe80::c8c:888f:3e0c:8d5c]) by DBBPR04MB7979.eurprd04.prod.outlook.com ([fe80::c8c:888f:3e0c:8d5c%5]) with mapi id 15.20.3541.025; Wed, 11 Nov 2020 02:33:46 +0000 From: Peter Chen To: Pawel Laszczak CC: "gregkh@linuxfoundation.org" , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "balbi@kernel.org" , "colin.king@canonical.com" , "rogerq@ti.com" , "kurahul@cadence.com" , "nsekhar@ti.com" Subject: Re: [PATCH v2 06/10] usb: cdnsp: Device side header file for CDNSP driver Thread-Topic: [PATCH v2 06/10] usb: cdnsp: Device side header file for CDNSP driver Thread-Index: AQHWtDI0tin57cQiMEWNxnpt+Jx6WanCPaGA Date: Wed, 11 Nov 2020 02:33:46 +0000 Message-ID: <20201111023317.GB14896@b29397-desktop> References: <20201106114300.1245-1-pawell@cadence.com> <20201106114300.1245-7-pawell@cadence.com> In-Reply-To: <20201106114300.1245-7-pawell@cadence.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: cadence.com; dkim=none (message not signed) header.d=none;cadence.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [119.31.174.67] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 3b8deb8e-0b03-4ca2-1377-08d885ea3715 x-ms-traffictypediagnostic: DB7PR04MB4090: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eKeojB244p+DwetHfcD0P/+tp/FCYOpT5sLDJX4qekyMn4RIC890gB434QAXLR6iUdIl/5lUNCxTUaGbRHkwqwWiVCDURml8ZCTdXF12edZ5F1nEmoUTM1Qp2nnd0B7W+74YZwhNdUvlsEzP4yqwLLV4NgirI8hQZam7wAbp9678Zp0lpfnSnZvope2CGT6n+p6IxtJdvQL4zjxfTXzLrnQs73jqGZU9aPDp9+K9yGYZFDqhLrtL/DuYtEPDFUHetnAEMEwv3ZAW61CA/OAjqr1XiCs8B++ROJn2z1PGmRuJ+Ku4rYYtRFcfUtNQgJpb6XefjgIDH+7LSksrtWyILAjHat88yfMCE7e2Jzy2yPaVM1lBgUB6KAfUsuTuQV2DfunexoRSebeLslSH55RvmQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBBPR04MB7979.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(7916004)(4636009)(366004)(396003)(376002)(346002)(136003)(39860400002)(6916009)(478600001)(8936002)(1076003)(66476007)(316002)(76116006)(26005)(91956017)(66946007)(86362001)(5660300002)(33656002)(66446008)(64756008)(66556008)(2906002)(186003)(9686003)(4326008)(6512007)(30864003)(33716001)(53546011)(6506007)(54906003)(83380400001)(8676002)(6486002)(44832011)(71200400001)(579004)(559001)(414714003)(473944003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: Ohl5JP8KH6A8m4w0c5rSs604Yu5FOvS4cESPsZAnkwVBmGxVnkjE5X0XSux0w94rnSRcnQGunwc71We7R7pVXW5Y+UN+foH5f6a5VJorQrfDqjCXRXC5kVw9QjZC93N0CUIu5Jf0lDzPiNJPtxUAokZ4wk+vz73L9chLWgfE4xDHklTr8U4Z/iXKfyki3gPOCpa23sBTPu7aYLQdU0EKQ7ItrTw2IgAW3DduA0BqP1H5v6KzFv/I8mCgMUsmfliBD8jzpDqOII/B/S/JgD6BXCliGgJOd2XL6TutVt0au4GoSl+oWSqjw0VT0dTDm8t+lX2tSZtW8JklZ9InTqQoug6PAj3XBycH09Gi2aCLwos8kCWs+ENVpGYNM2JqFTm9L8YTlgH/HlIs66UkuGt9OcuEy3E4fegnE0BVb8IBVR3Z9O1bE8m5FRT9K6kLZEe88d3IhP88mXzX1LEkod7Ws6uzHBkXM3O6F0fP6JsoG5+NUTQO/pflIHEl40RB1Sah/fqdEEfzJJSE0/yVWkfU6PcDUjeiAnKW4LpejTXRBH7ZNRaOPnWWws7xko2bnvxY6PMmtuJpW4bfgmTZJGKO+fXELd9Q7oI3J3QyUEzWGSDl3udLe+G2jVz55sGAAwmNSWYxFT1I5p0+SQ86Z0UmDg== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR04MB7979.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b8deb8e-0b03-4ca2-1377-08d885ea3715 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2020 02:33:46.4540 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pFYcv38RFRyoHVRMOiqBYCHShaX5FpxdR52nMUV512cR23WNSeW3vUXJf0pQrxUTEjg8oRZxWpVozOzCJFAFKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4090 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMjAtMTEtMDYgMTI6NDI6NTYsIFBhd2VsIExhc3pjemFrIHdyb3RlOg0KPiBQYXRjaCBkZWZp bmVzIG1hY3JvcywgcmVnaXN0ZXJzIGFuZCBzdHJ1Y3R1cmVzIHVzZWQgYnkNCj4gRGV2aWNlIHNp ZGUgZHJpdmVyLg0KPiANCj4gQmVjYXVzZSB0aGUgc2l6ZSBvZiBtYWluIHBhdGNoIGlzIHZlcnkg YmlnLCBJ4oCZdmUgZGVjaWRlZCB0byBjcmVhdGUNCj4gc2VwYXJhdGUgcGF0Y2ggZm9yIGNkbnNw LWdhZGdldC5oLiBJdCBzaG91bGQgc2ltcGxpZnkgcmV2aWV3aW5nIHRoZSBjb2RlLg0KPiANCj4g U2lnbmVkLW9mZi1ieTogUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4NCj4gLS0t DQo+ICBkcml2ZXJzL3VzYi9jZG5zMy9jZG5zcC1nYWRnZXQuaCB8IDE0NjMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrDQo+ICAxIGZpbGUgY2hhbmdlZCwgMTQ2MyBpbnNlcnRpb25zKCsp DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvY2Ruc3AtZ2FkZ2V0LmgN Cj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9jZG5zcC1nYWRnZXQuaCBiL2Ry aXZlcnMvdXNiL2NkbnMzL2NkbnNwLWdhZGdldC5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uMjlkNWUyZDAwODc5DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZHJpdmVycy91c2IvY2RuczMvY2Ruc3AtZ2FkZ2V0LmgNCj4gQEAgLTAsMCArMSwxNDYzIEBA DQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPiArLyoNCj4gKyAq IENhZGVuY2UgQ0ROU1AgRFJEIERyaXZlci4NCj4gKyAqDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjAgQ2FkZW5jZS4NCj4gKyAqDQo+ICsgKiBBdXRob3I6IFBhd2VsIExhc3pjemFrIDxwYXdlbGxA Y2FkZW5jZS5jb20+DQo+ICsgKg0KPiArICogQ29kZSBiYXNlZCBvbiBMaW51eCBYSENJIGRyaXZl ci4NCj4gKyAqIE9yaWdpbjogQ29weXJpZ2h0IChDKSAyMDA4IEludGVsIENvcnAuDQo+ICsgKi8N Cj4gKyNpZm5kZWYgX19MSU5VWF9DRE5TUF9HQURHRVRfSA0KPiArI2RlZmluZSBfX0xJTlVYX0NE TlNQX0dBREdFVF9IDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9pby02NC1ub25hdG9taWMtbG8t aGkuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC91c2IvZ2FkZ2V0Lmg+DQo+ICsjaW5jbHVkZSA8bGlu dXgvaXJxLmg+DQo+ICsNCj4gKy8qIE1heCBudW1iZXIgc2xvdHMgLSBvbmx5IDEgaXMgYWxsb3dl ZC4gKi8NCj4gKyNkZWZpbmUgQ0ROU1BfREVWX01BWF9TTE9UUwkxDQo+ICsNCj4gKyNkZWZpbmUg Q0ROU1BfRVAwX1NFVFVQX1NJWkUJNTEyDQo+ICsNCj4gKy8qMTYgZm9yIGluIGFuZCAxNiBmb3Ig b3V0LiAqLw0KPiArI2RlZmluZSBDRE5TUF9FTkRQT0lOVFNfTlVNCTMyDQo+ICsNCj4gKy8qIEJl c3QgRWZmb3J0IFNlcnZpY2UgTGF0ZW5jeS4gKi8NCj4gKyNkZWZpbmUgQ0ROU1BfREVGQVVMVF9C RVNMCTANCj4gKw0KPiArLyogRGV2aWNlIENvbnRyb2xsZXIgY29tbWFuZCBkZWZhdWx0IHRpbWVv dXQgdmFsdWUgaW4gdXMgKi8NCj4gKyNkZWZpbmUgQ0ROU1BfQ01EX1RJTUVPVVQJKDE1ICogMTAw MCkNCj4gKw0KPiArLyogVXAgdG8gMTYgbXMgdG8gaGFsdCBhbiBkZXZpY2UgY29udHJvbGxlciAq Lw0KPiArI2RlZmluZSBDRE5TUF9NQVhfSEFMVF9VU0VDCSgxNiAqIDEwMDApDQo+ICsNCj4gKyNk ZWZpbmUgQ0ROU1BfQ1RYX1NJWkUJMjExMg0KPiArDQo+ICsvKg0KPiArICogQ29udHJvbGxlciBy ZWdpc3RlciBpbnRlcmZhY2UuDQo+ICsgKi8NCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ru c3BfY2FwX3JlZ3MgLSBDRE5TUCBSZWdpc3RlcnMuDQo+ICsgKiBAaGNfY2FwYmFzZToJTGVuZ3Ro IG9mIHRoZSBjYXBhYmlsaXRpZXMgcmVnaXN0ZXIgYW5kIGNvbnRyb2xsZXINCj4gKyAqICAgICAg ICAgICAgICB2ZXJzaW9uIG51bWJlcg0KPiArICogQGhjc19wYXJhbXMxOiBIQ1NQQVJBTVMxIC0g U3RydWN0dXJhbCBQYXJhbWV0ZXJzIDENCj4gKyAqIEBoY3NfcGFyYW1zMjogSENTUEFSQU1TMiAt IFN0cnVjdHVyYWwgUGFyYW1ldGVycyAyDQo+ICsgKiBAaGNzX3BhcmFtczM6IEhDU1BBUkFNUzMg LSBTdHJ1Y3R1cmFsIFBhcmFtZXRlcnMgMw0KPiArICogQGhjY19wYXJhbXM6IEhDQ1BBUkFNUyAt IENhcGFiaWxpdHkgUGFyYW1ldGVycw0KPiArICogQGRiX29mZjogREJPRkYgLSBEb29yYmVsbCBh cnJheSBvZmZzZXQNCj4gKyAqIEBydW5fcmVnc19vZmY6IFJUU09GRiAtIFJ1bnRpbWUgcmVnaXN0 ZXIgc3BhY2Ugb2Zmc2V0DQo+ICsgKiBAaGNjX3BhcmFtczI6IEhDQ1BBUkFNUzIgQ2FwYWJpbGl0 eSBQYXJhbWV0ZXJzIDIsDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9jYXBfcmVncyB7DQo+ICsJ X19sZTMyIGhjX2NhcGJhc2U7DQo+ICsJX19sZTMyIGhjc19wYXJhbXMxOw0KPiArCV9fbGUzMiBo Y3NfcGFyYW1zMjsNCj4gKwlfX2xlMzIgaGNzX3BhcmFtczM7DQo+ICsJX19sZTMyIGhjY19wYXJh bXM7DQo+ICsJX19sZTMyIGRiX29mZjsNCj4gKwlfX2xlMzIgcnVuX3JlZ3Nfb2ZmOw0KPiArCV9f bGUzMiBoY2NfcGFyYW1zMjsNCj4gKwkvKiBSZXNlcnZlZCB1cCB0byAoQ0FQTEVOR1RIIC0gMHgx QykgKi8NCj4gK307DQo+ICsNCj4gKy8qIGhjX2NhcGJhc2UgYml0bWFza3MuICovDQo+ICsvKiBi aXRzIDc6MCAtIGhvdyBsb25nIGlzIHRoZSBDYXBhYmlsaXRpZXMgcmVnaXN0ZXIuICovDQo+ICsj ZGVmaW5lIEhDX0xFTkdUSChwKQkJKCgocCkgPj4gMDApICYgR0VOTUFTSyg3LCAwKSkNCj4gKy8q IGJpdHMgMzE6MTYJKi8NCj4gKyNkZWZpbmUgSENfVkVSU0lPTihwKQkJKCgocCkgPj4gMTYpICYg R0VOTUFTSygxNSwgMSkpDQo+ICsNCj4gKy8qIEhDU1BBUkFNUzEgLSBoY3NfcGFyYW1zMSAtIGJp dG1hc2tzICovDQo+ICsvKiBiaXRzIDA6NywgTWF4IERldmljZSBFbmRwb2ludHMgKi8NCj4gKyNk ZWZpbmUgSENTX0VORFBPSU5UU19NQVNLCUdFTk1BU0soNywgMCkNCj4gKyNkZWZpbmUgSENTX0VO RFBPSU5UUyhwKQkoKChwKSAmIEhDU19FTkRQT0lOVFNfTUFTSykgPj4gMCkNCj4gKw0KPiArLyog SENDUEFSQU1TIG9mZnNldCBmcm9tIFBDSSBiYXNlIGFkZHJlc3MgKi8NCj4gKyNkZWZpbmUgSEND X1BBUkFNU19PRkZTRVQJMHgxMA0KPiArDQo+ICsvKiBIQ0NQQVJBTVMgLSBoY2NfcGFyYW1zIC0g Yml0bWFza3MgKi8NCj4gKy8qIHRydWU6IGRldmljZSBjb250cm9sbGVyIGNhbiB1c2UgNjQtYml0 IGFkZHJlc3MgcG9pbnRlcnMuICovDQoNCldoYXQgZG9lcyAidHJ1ZSIgbWVhbiBhdCBhYm92ZSBj b21tZW50Pw0KDQo+ICsjZGVmaW5lIEhDQ182NEJJVF9BRERSKHApCSgocCkgJiBCSVQoMCkpDQo+ ICsvKiB0cnVlOiBkZXZpY2UgY29udHJvbGxlciB1c2VzIDY0LWJ5dGUgRGV2aWNlIENvbnRleHQg c3RydWN0dXJlcy4gKi8NCg0KZGl0dG8NCg0KPiArI2RlZmluZSBIQ0NfNjRCWVRFX0NPTlRFWFQo cCkJKChwKSAmIEJJVCgyKSkNCj4gKy8qIE1heCBzaXplIGZvciBQcmltYXJ5IFN0cmVhbSBBcnJh eXMgLSAyXihuKzEpLCB3aGVyZSBuIGlzIGJpdHMgMTI6MTUuICovDQo+ICsjZGVmaW5lIEhDQ19N QVhfUFNBKHApCQkoKCgocCkgPj4gMTIpICYgMHhmKSArIDEpDQo+ICsvKiBFeHRlbmRlZCBDYXBh YmlsaXRpZXMgcG9pbnRlciBmcm9tIFBDSSBiYXNlLiAqLw0KPiArI2RlZmluZSBIQ0NfRVhUX0NB UFMocCkJCSgoKHApICYgR0VOTUFTSygzMSwgMTYpKSA+PiAxNikNCj4gKw0KPiArI2RlZmluZSBD VFhfU0laRShfaGNjKQkJKEhDQ182NEJZVEVfQ09OVEVYVChfaGNjKSA/IDY0IDogMzIpDQo+ICsN Cj4gKy8qIGRiX29mZiBiaXRtYXNrIC0gYml0cyAwOjEgcmVzZXJ2ZWQuICovDQo+ICsjZGVmaW5l IERCT0ZGX01BU0sJR0VOTUFTSygzMSwgMikNCj4gKw0KPiArLyogcnVuX3JlZ3Nfb2ZmIGJpdG1h c2sgLSBiaXRzIDA6NCByZXNlcnZlZC4gKi8NCj4gKyNkZWZpbmUgUlRTT0ZGX01BU0sJR0VOTUFT SygzMSwgNSkNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3Bfb3BfcmVncyAtIERldmlj ZSBDb250cm9sbGVyIE9wZXJhdGlvbmFsIFJlZ2lzdGVycy4NCj4gKyAqIEBjb21tYW5kOiBVU0JD TUQgLSBDb250cm9sbGVyIGNvbW1hbmQgcmVnaXN0ZXIuDQo+ICsgKiBAc3RhdHVzOiBVU0JTVFMg LSBDb250cm9sbGVyIHN0YXR1cyByZWdpc3Rlci4NCj4gKyAqIEBwYWdlX3NpemU6IFRoaXMgaW5k aWNhdGVzIHRoZSBwYWdlIHNpemUgdGhhdCB0aGUgZGV2aWNlIGNvbnRyb2xsZXIgc3VwcG9ydHMu DQo+ICsgKiAgICAgICAgICAgICBJZiBiaXQgbiBpcyBzZXQsIHRoZSBjb250cm9sbGVyIHN1cHBv cnRzIGEgcGFnZSBzaXplIG9mIDJeKG4rMTIpLA0KPiArICogICAgICAgICAgICAgdXAgdG8gYSAx MjhNQiBwYWdlIHNpemUuIDRLIGlzIHRoZSBtaW5pbXVtIHBhZ2Ugc2l6ZS4NCj4gKyAqIEBkbmN0 cmw6IEROQ1RSTCAtIERldmljZSBub3RpZmljYXRpb24gY29udHJvbCByZWdpc3Rlci4NCj4gKyAq IEBjbWRfcmluZzogQ1JQIC0gNjQtYml0IENvbW1hbmQgUmluZyBQb2ludGVyLg0KPiArICogQGRj YmFhX3B0cjogRENCQUFQIC0gNjQtYml0IERldmljZSBDb250ZXh0IEJhc2UgQWRkcmVzcyBBcnJh eSBQb2ludGVyLg0KPiArICogQGNvbmZpZ19yZWc6IENPTkZJRyAtIENvbmZpZ3VyZSBSZWdpc3Rl cg0KPiArICogQHBvcnRfcmVnX2Jhc2U6IFBPUlRTQ24gLSBiYXNlIGFkZHJlc3MgZm9yIFBvcnQg U3RhdHVzIGFuZCBDb250cm9sDQo+ICsgKiAgICAgICAgICAgICAgICAgRWFjaCBwb3J0IGhhcyBh IFBvcnQgU3RhdHVzIGFuZCBDb250cm9sIHJlZ2lzdGVyLA0KPiArICogICAgICAgICAgICAgICAg IGZvbGxvd2VkIGJ5IGEgUG9ydCBQb3dlciBNYW5hZ2VtZW50IFN0YXR1cyBhbmQgQ29udHJvbA0K PiArICogICAgICAgICAgICAgICAgIHJlZ2lzdGVyLCBhIFBvcnQgTGluayBJbmZvIHJlZ2lzdGVy LCBhbmQgYSByZXNlcnZlZA0KPiArICogICAgICAgICAgICAgICAgIHJlZ2lzdGVyLg0KPiArICov DQo+ICtzdHJ1Y3QgY2Ruc3Bfb3BfcmVncyB7DQo+ICsJX19sZTMyIGNvbW1hbmQ7DQo+ICsJX19s ZTMyIHN0YXR1czsNCj4gKwlfX2xlMzIgcGFnZV9zaXplOw0KPiArCV9fbGUzMiByZXNlcnZlZDE7 DQo+ICsJX19sZTMyIHJlc2VydmVkMjsNCj4gKwlfX2xlMzIgZG5jdHJsOw0KPiArCV9fbGU2NCBj bWRfcmluZzsNCj4gKwkvKiByc3ZkOiBvZmZzZXQgMHgyMC0yRi4gKi8NCj4gKwlfX2xlMzIgcmVz ZXJ2ZWQzWzRdOw0KPiArCV9fbGU2NCBkY2JhYV9wdHI7DQo+ICsJX19sZTMyIGNvbmZpZ19yZWc7 DQo+ICsJLyogcnN2ZDogb2Zmc2V0IDB4M0MtM0ZGLiAqLw0KPiArCV9fbGUzMiByZXNlcnZlZDRb MjQxXTsNCj4gKwkvKiBwb3J0IDEgcmVnaXN0ZXJzLCB3aGljaCBzZXJ2ZSBhcyBhIGJhc2UgYWRk cmVzcyBmb3Igb3RoZXIgcG9ydHMuICovDQo+ICsJX19sZTMyIHBvcnRfcmVnX2Jhc2U7DQo+ICt9 Ow0KPiArDQo+ICsvKiBOdW1iZXIgb2YgcmVnaXN0ZXJzIHBlciBwb3J0LiAqLw0KPiArI2RlZmlu ZSBOVU1fUE9SVF9SRUdTCTQNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3BfcG9ydF9y ZWdzIC0gUG9ydCBSZWdpc3RlcnMuDQo+ICsgKiBAcG9ydHNjOiBQT1JUU0MgLSBQb3J0IFN0YXR1 cyBhbmQgQ29udHJvbCBSZWdpc3Rlci4NCj4gKyAqIEBwb3J0cG1zYzogUE9SVFBNU0MgLSBQb3J0 IFBvd2VyIE1hbmFnZW1lbnRzIFN0YXR1cyBhbmQgQ29udHJvbCBSZWdpc3Rlci4NCj4gKyAqIEBw b3J0bGk6IFBPUlRMSSAtIFBvcnQgTGluayBJbmZvIHJlZ2lzdGVyLg0KPiArICovDQo+ICtzdHJ1 Y3QgY2Ruc3BfcG9ydF9yZWdzIHsNCj4gKwlfX2xlMzIgcG9ydHNjOw0KPiArCV9fbGUzMiBwb3J0 cG1zYzsNCj4gKwlfX2xlMzIgcG9ydGxpOw0KPiArCV9fbGUzMiByZXNlcnZlZDsNCj4gK307DQo+ ICsNCj4gKy8qDQo+ICsgKiBUaGVzZSBiaXRzIGFyZSBSZWFkIE9ubHkgKFJPKSBhbmQgc2hvdWxk IGJlIHNhdmVkIGFuZCB3cml0dGVuIHRvIHRoZQ0KPiArICogcmVnaXN0ZXJzOiAwIChjb25uZWN0 IHN0YXR1cykgYW5kICAxMDoxMyAocG9ydCBzcGVlZCkuDQo+ICsgKiBUaGVzZSBiaXRzIGFyZSBh bHNvIHN0aWNreSAtIG1lYW5pbmcgdGhleSdyZSBpbiB0aGUgQVVYIHdlbGwgYW5kIHRoZXkgYXJl bid0DQo+ICsgKiBjaGFuZ2VkIGJ5IGEgaG90IGFuZCB3YXJtLg0KPiArICovDQo+ICsjZGVmaW5l IENETlNQX1BPUlRfUk8JKFBPUlRfQ09OTkVDVCB8IERFVl9TUEVFRF9NQVNLKQ0KPiArDQo+ICsv Kg0KPiArICogVGhlc2UgYml0cyBhcmUgUlc7IHdyaXRpbmcgYSAwIGNsZWFycyB0aGUgYml0LCB3 cml0aW5nIGEgMSBzZXRzIHRoZSBiaXQ6DQo+ICsgKiBiaXRzIDU6OCAobGluayBzdGF0ZSksIDI1 OjI2ICAoIndha2Ugb24iIGVuYWJsZSBzdGF0ZSkNCj4gKyAqLw0KPiArI2RlZmluZSBDRE5TUF9Q T1JUX1JXUwkoUE9SVF9QTFNfTUFTSyB8IFBPUlRfV0tDT05OX0UgfCBQT1JUX1dLRElTQ19FKQ0K PiArDQo+ICsvKg0KPiArICogVGhlc2UgYml0cyBhcmUgUlc7IHdyaXRpbmcgYSAxIGNsZWFycyB0 aGUgYml0LCB3cml0aW5nIGEgMCBoYXMgbm8gZWZmZWN0Og0KPiArICogYml0cyAxIChwb3J0IGVu YWJsZS9kaXNhYmxlKSwgMTcgICggY29ubmVjdCBjaGFuZ2VkKSwNCj4gKyAqIDIxIChwb3J0IHJl c2V0IGNoYW5nZWQpICwgMjIgKFBvcnQgTGluayBTdGF0ZSBDaGFuZ2UpLA0KPiArICovDQo+ICsj ZGVmaW5lIENETlNQX1BPUlRfUlcxQ1MgKFBPUlRfUEVEIHwgUE9SVF9DU0MgfCBQT1JUX1JDIHwg UE9SVF9QTEMpDQo+ICsNCj4gKy8qIFVTQkNNRCAtIFVTQiBjb21tYW5kIC0gYml0bWFza3MuICov DQo+ICsvKiBSdW4vU3RvcCwgY29udHJvbGxlciBleGVjdXRpb24gLSBkbyBub3Qgd3JpdGUgdW5s ZXNzIGNvbnRyb2xsZXIgaXMgaGFsdGVkLiovDQo+ICsjZGVmaW5lIENNRF9SX1MJCUJJVCgwKQ0K PiArLyoNCj4gKyAqIFJlc2V0IGRldmljZSBjb250cm9sbGVyIC0gcmVzZXRzIGludGVybmFsIGNv bnRyb2xsZXIgc3RhdGUgbWFjaGluZSBhbmQgYWxsDQo+ICsgKiByZWdpc3RlcnMgKGV4Y2VwdCBQ Q0kgY29uZmlnIHJlZ3MpLg0KPiArICovDQo+ICsjZGVmaW5lIENNRF9SRVNFVAlCSVQoMSkNCj4g Ky8qIEV2ZW50IEludGVycnVwdCBFbmFibGUgLSBhICcxJyBhbGxvd3MgaW50ZXJydXB0cyBmcm9t IHRoZSBjb250cm9sbGVyLiAqLw0KPiArI2RlZmluZSBDTURfSU5URQlCSVQoMikNCj4gKy8qDQo+ ICsgKiBEZXZpY2UgU3lzdGVtIEVycm9yIEludGVycnVwdCBFbmFibGUgLSBnZXQgb3V0LW9mLWJh bmQgc2lnbmFsIGZvcg0KPiArICogY29udHJvbGxlciBlcnJvcnMuDQo+ICsgKi8NCj4gKyNkZWZp bmUgQ01EX0RTRUlFCUJJVCgzKQ0KPiArLyogZGV2aWNlIGNvbnRyb2xsZXIgc2F2ZS9yZXN0b3Jl IHN0YXRlLiAqLw0KPiArI2RlZmluZSBDTURfQ1NTCQlCSVQoOCkNCj4gKyNkZWZpbmUgQ01EX0NS UwkJQklUKDkpDQo+ICsvKg0KPiArICogRW5hYmxlIFdyYXAgRXZlbnQgLSAnMScgbWVhbnMgZGV2 aWNlIGNvbnRyb2xsZXIgZ2VuZXJhdGVzIGFuIGV2ZW50DQo+ICsgKiB3aGVuIE1GSU5ERVggd3Jh cHMuDQo+ICsgKi8NCj4gKyNkZWZpbmUgQ01EX0VXRQkJQklUKDEwKQ0KPiArLypiaXQgMTMgQ0VN IEVuYWJsZSAoQ01FKSAqLw0KDQpVbmxlc3MgY29kZT8NCg0KPiArI2RlZmluZSBDTURfREVWRU4J QklUKDE3KQ0KPiArLyogYml0cyAxNjozMSBhcmUgcmVzZXJ2ZWQgKGFuZCBzaG91bGQgYmUgcHJl c2VydmVkIG9uIHdyaXRlcykuICovDQo+ICsNCj4gKy8qIENvbW1hbmQgcmVnaXN0ZXIgdmFsdWVz IHRvIGRpc2FibGUgaW50ZXJydXB0cy4gKi8NCj4gKyNkZWZpbmUgQ0ROU1BfSVJRUwkoQ01EX0lO VEUgfCBDTURfRFNFSUUgfCBDTURfRVdFKQ0KPiArDQo+ICsvKiBVU0JTVFMgLSBVU0Igc3RhdHVz IC0gYml0bWFza3MgKi8NCj4gKy8qIGNvbnRyb2xsZXIgbm90IHJ1bm5pbmcgLSBzZXQgdG8gMSB3 aGVuIHJ1bi9zdG9wIGJpdCBpcyBjbGVhcmVkLiAqLw0KPiArI2RlZmluZSBTVFNfSEFMVAlCSVQo MCkNCj4gKy8qDQo+ICsgKiBzZXJpb3VzIGVycm9yLCBlLmcuIFBDSSBwYXJpdHkgZXJyb3IuIFRo ZSBjb250cm9sbGVyIHdpbGwgY2xlYXINCj4gKyAqIHRoZSBydW4vc3RvcCBiaXQuDQo+ICsgKi8N Cj4gKyNkZWZpbmUgU1RTX0ZBVEFMCUJJVCgyKQ0KPiArLyogZXZlbnQgaW50ZXJydXB0IC0gY2xl YXIgdGhpcyBwcmlvciB0byBjbGVhcmluZyBhbnkgSVAgZmxhZ3MgaW4gSVIgc2V0LiovDQo+ICsj ZGVmaW5lIFNUU19FSU5UCUJJVCgzKQ0KPiArLyogcG9ydCBjaGFuZ2UgZGV0ZWN0ICovDQo+ICsj ZGVmaW5lIFNUU19QQ0QJCUJJVCg0KQ0KPiArLyogc2F2ZSBzdGF0ZSBzdGF0dXMgLSAnMScgbWVh bnMgZGV2aWNlIGNvbnRyb2xsZXIgaXMgc2F2aW5nIHN0YXRlLiAqLw0KPiArI2RlZmluZSBTVFNf U1NTCQlCSVQoOCkNCj4gKy8qIHJlc3RvcmUgc3RhdGUgc3RhdHVzIC0gJzEnIG1lYW5zIGNvbnRy b2xsZXJzIGlzIHJlc3RvcmluZyBzdGF0ZS4gKi8NCj4gKyNkZWZpbmUgU1RTX1JTUwkJQklUKDkp DQo+ICsvKiB0cnVlOiBzYXZlIG9yIHJlc3RvcmUgZXJyb3IgKi8NCj4gKyNkZWZpbmUgU1RTX1NS RQkJQklUKDEwKQ0KPiArLyogdHJ1ZTogZGV2aWNlIE5vdCBSZWFkeSB0byBhY2NlcHQgZG9vcmJl bGwgb3Igb3AgcmVnIHdyaXRlcyBhZnRlciByZXNldC4gKi8NCj4gKyNkZWZpbmUgU1RTX0NOUgkJ QklUKDExKQ0KPiArLyogdHJ1ZTogaW50ZXJuYWwgRGV2aWNlIENvbnRyb2xsZXIgRXJyb3IuKi8N Cj4gKyNkZWZpbmUgU1RTX0hDRQkJQklUKDEyKQ0KPiArDQo+ICsvKiBDUkNSIC0gQ29tbWFuZCBS aW5nIENvbnRyb2wgUmVnaXN0ZXIgLSBjbWRfcmluZyBiaXRtYXNrcy4gKi8NCj4gKy8qIGJpdCAw IGlzIHRoZSBjb21tYW5kIHJpbmcgY3ljbGUgc3RhdGUuICovDQo+ICsjZGVmaW5lIENNRF9SSU5H X0NTCQlCSVQoMCkNCj4gKy8qIHN0b3AgcmluZyBpbW1lZGlhdGVseSAtIGFib3J0IHRoZSBjdXJy ZW50bHkgZXhlY3V0aW5nIGNvbW1hbmQuICovDQo+ICsjZGVmaW5lIENNRF9SSU5HX0FCT1JUCQlC SVQoMikNCj4gKy8qDQo+ICsgKiBDb21tYW5kIFJpbmcgQnVzeS4NCj4gKyAqIFNldCB3aGVuIERv b3JiZWxsIHJlZ2lzdGVyIGlzIHdyaXR0ZW4gd2l0aCBEQiBmb3IgY29tbWFuZCBhbmQgY2xlYXJl ZCB3aGVuDQo+ICsgKiB0aGUgY29udHJvbGxlciByZWFjaGVkIGVuZCBvZiBDUi4NCj4gKyAqLw0K PiArI2RlZmluZSBDTURfUklOR19CVVNZKHApCSgocCkgJiBCSVQoNCkpDQo+ICsvKiB0cnVlOiBj b21tYW5kIHJpbmcgaXMgcnVubmluZyAqLw0KPiArI2RlZmluZSBDTURfUklOR19SVU5OSU5HCUJJ VCgzKQ0KPiArLyogQ29tbWFuZCBSaW5nIHBvaW50ZXIgLSBiaXQgbWFzayBmb3IgdGhlIGxvd2Vy IDMyIGJpdHMuICovDQo+ICsjZGVmaW5lIENNRF9SSU5HX1JTVkRfQklUUwlHRU5NQVNLKDUsIDAp DQo+ICsNCj4gKy8qIENPTkZJRyAtIENvbmZpZ3VyZSBSZWdpc3RlciAtIGNvbmZpZ19yZWcgYml0 bWFza3MuICovDQo+ICsvKiBiaXRzIDA6NyAtIG1heGltdW0gbnVtYmVyIG9mIGRldmljZSBzbG90 cyBlbmFibGVkLiAqLw0KPiArI2RlZmluZSBNQVhfREVWUwkJR0VOTUFTSyg3LCAwKQ0KPiArLyog Yml0IDg6IFUzIEVudHJ5IEVuYWJsZWQsIGFzc2VydCBQTEMgd2hlbiBjb250cm9sbGVyIGVudGVy cyBVMy4gKi8NCj4gKyNkZWZpbmUgQ09ORklHX1UzRQkJQklUKDgpDQo+ICsNCj4gKy8qIFBPUlRT QyAtIFBvcnQgU3RhdHVzIGFuZCBDb250cm9sIFJlZ2lzdGVyIC0gcG9ydF9yZWdfYmFzZSBiaXRt YXNrcyAqLw0KPiArLyogdHJ1ZTogZGV2aWNlIGNvbm5lY3RlZC4gKi8NCj4gKyNkZWZpbmUgUE9S VF9DT05ORUNUCQlCSVQoMCkNCj4gKy8qIHRydWU6IHBvcnQgZW5hYmxlZC4gKi8NCj4gKyNkZWZp bmUgUE9SVF9QRUQJCUJJVCgxKQ0KPiArLyogdHJ1ZTogcG9ydCByZXNldCBzaWduYWxpbmcgYXNz ZXJ0ZWQuICovDQo+ICsjZGVmaW5lIFBPUlRfUkVTRVQJCUJJVCg0KQ0KPiArLyoNCj4gKyAqIFBv cnQgTGluayBTdGF0ZSAtIGJpdHMgNTo4DQo+ICsgKiBBIHJlYWQgZ2l2ZXMgdGhlIGN1cnJlbnQg bGluayBQTSBzdGF0ZSBvZiB0aGUgcG9ydCwNCj4gKyAqIGEgd3JpdGUgd2l0aCBMaW5rIFN0YXRl IFdyaXRlIFN0cm9iZSBzZXQgc2V0cyB0aGUgbGluayBzdGF0ZS4NCg0KRHVwbGljYXRlICJzZXQi DQoNCj4gKyAqLw0KPiArI2RlZmluZSBQT1JUX1BMU19NQVNLCQlHRU5NQVNLKDgsIDUpDQo+ICsj ZGVmaW5lIFhERVZfVTAJCQkoMHgwIDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfVTEJCQkoMHgxIDw8 IDUpDQo+ICsjZGVmaW5lIFhERVZfVTIJCQkoMHgyIDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfVTMJ CQkoMHgzIDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfRElTQUJMRUQJCSgweDQgPDwgNSkNCj4gKyNk ZWZpbmUgWERFVl9SWERFVEVDVAkJKDB4NSA8PCA1KQ0KPiArI2RlZmluZSBYREVWX0lOQUNUSVZF CQkoMHg2IDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfUE9MTElORwkJKDB4NyA8PCA1KQ0KPiArI2Rl ZmluZSBYREVWX1JFQ09WRVJZCQkoMHg4IDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfSE9UX1JFU0VU CQkoMHg5IDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfQ09NUF9NT0RFCQkoMHhhIDw8IDUpDQo+ICsj ZGVmaW5lIFhERVZfVEVTVF9NT0RFCQkoMHhiIDw8IDUpDQo+ICsjZGVmaW5lIFhERVZfUkVTVU1F CQkoMHhmIDw8IDUpDQo+ICsvKiB0cnVlOiBwb3J0IGhhcyBwb3dlci4gKi8NCg0KZGl0dG8NCg0K PiArI2RlZmluZSBQT1JUX1BPV0VSCQlCSVQoOSkNCj4gKy8qDQo+ICsgKiBiaXRzIDEwOjEzIGlu ZGljYXRlIGRldmljZSBzcGVlZDoNCj4gKyAqIDAgLSB1bmRlZmluZWQgc3BlZWQgLSBwb3J0IGhh c24ndCBiZSBpbml0aWFsaXplZCBieSBhIHJlc2V0IHlldA0KPiArICogMSAtIGZ1bGwgc3BlZWQN Cj4gKyAqIDIgLSBSZXNlcnZlZCAoTG93IFNwZWVkIG5vdCBzdXBwb3J0ZWQNCj4gKyAqIDMgLSBo aWdoIHNwZWVkDQo+ICsgKiA0IC0gc3VwZXIgc3BlZWQNCj4gKyAqIDUgLSBzdXBlciBzcGVlZA0K PiArICogNi0xNSByZXNlcnZlZA0KPiArICovDQo+ICsjZGVmaW5lIERFVl9TUEVFRF9NQVNLCQlH RU5NQVNLKDEzLCAxMCkNCj4gKyNkZWZpbmUgWERFVl9GUwkJCSgweDEgPDwgMTApDQo+ICsjZGVm aW5lIFhERVZfSFMJCQkoMHgzIDw8IDEwKQ0KPiArI2RlZmluZSBYREVWX1NTCQkJKDB4NCA8PCAx MCkNCj4gKyNkZWZpbmUgWERFVl9TU1AJCSgweDUgPDwgMTApDQo+ICsjZGVmaW5lIERFVl9VTkRF RlNQRUVEKHApCSgoKHApICYgREVWX1NQRUVEX01BU0spID09ICgweDAgPDwgMTApKQ0KPiArI2Rl ZmluZSBERVZfRlVMTFNQRUVEKHApCSgoKHApICYgREVWX1NQRUVEX01BU0spID09IFhERVZfRlMp DQo+ICsjZGVmaW5lIERFVl9ISUdIU1BFRUQocCkJKCgocCkgJiBERVZfU1BFRURfTUFTSykgPT0g WERFVl9IUykNCj4gKyNkZWZpbmUgREVWX1NVUEVSU1BFRUQocCkJKCgocCkgJiBERVZfU1BFRURf TUFTSykgPT0gWERFVl9TUykNCj4gKyNkZWZpbmUgREVWX1NVUEVSU1BFRURQTFVTKHApCSgoKHAp ICYgREVWX1NQRUVEX01BU0spID09IFhERVZfU1NQKQ0KPiArI2RlZmluZSBERVZfU1VQRVJTUEVF RF9BTlkocCkJKCgocCkgJiBERVZfU1BFRURfTUFTSykgPj0gWERFVl9TUykNCj4gKyNkZWZpbmUg REVWX1BPUlRfU1BFRUQocCkJKCgocCkgPj4gMTApICYgMHgwZikNCj4gKy8qIFBvcnQgTGluayBT dGF0ZSBXcml0ZSBTdHJvYmUgLSBzZXQgdGhpcyB3aGVuIGNoYW5naW5nIGxpbmsgc3RhdGUgKi8N Cj4gKyNkZWZpbmUgUE9SVF9MSU5LX1NUUk9CRQlCSVQoMTYpDQo+ICsvKiB0cnVlOiBjb25uZWN0 IHN0YXR1cyBjaGFuZ2UgKi8NCj4gKyNkZWZpbmUgUE9SVF9DU0MJCUJJVCgxNykNCj4gKy8qIHRy dWU6IHdhcm0gcmVzZXQgZm9yIGEgVVNCIDMuMCBkZXZpY2UgaXMgZG9uZS4gKi8NCj4gKyNkZWZp bmUgUE9SVF9XUkMJCUJJVCgxOSkNCj4gKy8qIHRydWU6IHJlc2V0IGNoYW5nZSAtIDEgdG8gMCB0 cmFuc2l0aW9uIG9mIFBPUlRfUkVTRVQgKi8NCj4gKyNkZWZpbmUgUE9SVF9SQwkJCUJJVCgyMSkN Cj4gKy8qDQo+ICsgKiBwb3J0IGxpbmsgc3RhdHVzIGNoYW5nZSAtIHNldCBvbiBzb21lIHBvcnQg bGluayBzdGF0ZSB0cmFuc2l0aW9uczoNCj4gKyAqIFRyYW5zaXRpb24JCQlSZWFzb24NCj4gKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKyAqIC0gVTMgdG8gUmVzdW1lCQlXYWtldXAgc2lnbmFs aW5nIGZyb20gYSBkZXZpY2UNCj4gKyAqIC0gUmVzdW1lIHRvIFJlY292ZXJ5IHRvIFUwCVVTQiAz LjAgZGV2aWNlIHJlc3VtZQ0KPiArICogLSBSZXN1bWUgdG8gVTAJCVVTQiAyLjAgZGV2aWNlIHJl c3VtZQ0KPiArICogLSBVMyB0byBSZWNvdmVyeSB0byBVMAlTb2Z0d2FyZSByZXN1bWUgb2YgVVNC IDMuMCBkZXZpY2UgY29tcGxldGUNCj4gKyAqIC0gVTMgdG8gVTAJCQlTb2Z0d2FyZSByZXN1bWUg b2YgVVNCIDIuMCBkZXZpY2UgY29tcGxldGUNCj4gKyAqIC0gVTIgdG8gVTAJCQlMMSByZXN1bWUg b2YgVVNCIDIuMSBkZXZpY2UgY29tcGxldGUNCj4gKyAqIC0gVTAgdG8gVTAJCQlMMSBlbnRyeSBy ZWplY3Rpb24gYnkgVVNCIDIuMSBkZXZpY2UNCj4gKyAqIC0gVTAgdG8gZGlzYWJsZWQJCUwxIGVu dHJ5IGVycm9yIHdpdGggVVNCIDIuMSBkZXZpY2UNCj4gKyAqIC0gQW55IHN0YXRlIHRvIGluYWN0 aXZlCUVycm9yIG9uIFVTQiAzLjAgcG9ydA0KPiArICovDQo+ICsjZGVmaW5lIFBPUlRfUExDCQlC SVQoMjIpDQo+ICsvKiBQb3J0IGNvbmZpZ3VyZSBlcnJvciBjaGFuZ2UgLSBwb3J0IGZhaWxlZCB0 byBjb25maWd1cmUgaXRzIGxpbmsgcGFydG5lci4gKi8NCj4gKyNkZWZpbmUgUE9SVF9DRUMJCUJJ VCgyMykNCj4gKy8qIFdha2Ugb24gY29ubmVjdCAoZW5hYmxlKS4gKi8NCj4gKyNkZWZpbmUgUE9S VF9XS0NPTk5fRQkJQklUKDI1KQ0KPiArLyogV2FrZSBvbiBkaXNjb25uZWN0IChlbmFibGUpLiAq Lw0KPiArI2RlZmluZSBQT1JUX1dLRElTQ19FCQlCSVQoMjYpDQo+ICsvKiBJbmRpY2F0ZXMgaWYg V2FybSBSZXNldCBpcyBiZWluZyByZWNlaXZlZC4gKi8NCj4gKyNkZWZpbmUgUE9SVF9XUgkJCUJJ VCgzMSkNCj4gKw0KPiArI2RlZmluZSBQT1JUX0NIQU5HRV9CSVRTIChQT1JUX0NTQyB8IFBPUlRf V1JDIHwgUE9SVF9SQyB8IFBPUlRfUExDIHwgUE9SVF9DRUMpDQo+ICsNCj4gKy8qIFBPUlRQTVND VVNCMyAtIFBvcnQgUG93ZXIgTWFuYWdlbWVudCBTdGF0dXMgYW5kIENvbnRyb2wgLSBiaXRtYXNr cy4gKi8NCj4gKy8qICBFbmFibGVzIFUxIGVudHJ5LiAqLw0KPiArI2RlZmluZSBQT1JUX1UxX1RJ TUVPVVRfTUFTSwlHRU5NQVNLKDcsIDApDQo+ICsjZGVmaW5lIFBPUlRfVTFfVElNRU9VVChwKQko KHApICYgUE9SVF9VMV9USU1FT1VUX01BU0spDQo+ICsvKiBFbmFibGVzIFUyIGVudHJ5IC4qLw0K PiArI2RlZmluZSBQT1JUX1UyX1RJTUVPVVRfTUFTSwlHRU5NQVNLKDE0LCA4KQ0KPiArI2RlZmlu ZSBQT1JUX1UyX1RJTUVPVVQocCkJKCgocCkgPDwgOCkgJiBQT1JUX1UyX1RJTUVPVVRfTUFTSykN Cj4gKw0KPiArLyogUE9SVFBNU0NVU0IyIC0gUG9ydCBQb3dlciBNYW5hZ2VtZW50IFN0YXR1cyBh bmQgQ29udHJvbCAtIGJpdG1hc2tzLiAqLw0KPiArI2RlZmluZSBQT1JUX0wxU19NQVNLCQlHRU5N QVNLKDIsIDApDQo+ICsjZGVmaW5lIFBPUlRfTDFTKHApCQkoKHApICYgUE9SVF9MMVNfTUFTSykN Cj4gKyNkZWZpbmUgUE9SVF9MMVNfQUNLCQlQT1JUX0wxUygxKQ0KPiArI2RlZmluZSBQT1JUX0wx U19OWUVUCQlQT1JUX0wxUygyKQ0KPiArI2RlZmluZSBQT1JUX0wxU19TVEFMTAkJUE9SVF9MMVMo MykNCj4gKyNkZWZpbmUgUE9SVF9MMVNfVElNRU9VVAlQT1JUX0wxUyg0KQ0KPiArLyogUmVtb3Rl IFdha2UgRW5hYmxlLiAqLw0KPiArI2RlZmluZSBQT1JUX1JXRQkJQklUKDMpDQo+ICsvKiBCZXN0 IEVmZm9ydCBTZXJ2aWNlIExhdGVuY3kgKEJFU0wpLiAqLw0KPiArI2RlZmluZSBQT1JUX0JFU0wo cCkJCSgoKHApIDw8IDQpICYgR0VOTUFTSyg3LCA0KSkNCj4gKy8qIEhhcmR3YXJlIExQTSBFbmFi bGUgKEhMRSkuICovDQo+ICsjZGVmaW5lIFBPUlRfSExFCQlCSVQoMTYpDQo+ICsvKiBSZWNlaXZl ZCBCZXN0IEVmZm9ydCBTZXJ2aWNlIExhdGVuY3kgKEJFU0wpLiAqLw0KPiArI2RlZmluZSBQT1JU X1JSQkVTTChwKQkJKCgocCkgJiBHRU5NQVNLKDIwLCAxNykpID4+IDE3KQ0KPiArLyogUG9ydCBU ZXN0IENvbnRyb2wuICovDQo+ICsjZGVmaW5lIFBPUlRfVEVTVF9NT0RFX01BU0sJR0VOTUFTSygz MSwgMjgpDQo+ICsjZGVmaW5lIFBPUlRfVEVTVF9NT0RFKHApCSgoKHApIDw8IDI4KSAmIFBPUlRf VEVTVF9NT0RFX01BU0spDQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX2ludHJfcmVn IC0gSW50ZXJydXB0IFJlZ2lzdGVyIFNldC4NCj4gKyAqIEBpcnFfcGVuZGluZzogSU1BTiAtIElu dGVycnVwdCBNYW5hZ2VtZW50IFJlZ2lzdGVyLiBVc2VkIHRvIGVuYWJsZQ0KPiArICogICAgICAg ICAgICAgICBpbnRlcnJ1cHRzIGFuZCBjaGVjayBmb3IgcGVuZGluZyBpbnRlcnJ1cHRzLg0KPiAr ICogQGlycV9jb250cm9sOiBJTU9EIC0gSW50ZXJydXB0IE1vZGVyYXRpb24gUmVnaXN0ZXIuDQo+ ICsgKiAgICAgICAgICAgICAgIFVzZWQgdG8gdGhyb3R0bGUgaW50ZXJydXB0cy4NCj4gKyAqIEBl cnN0X3NpemU6IE51bWJlciBvZiBzZWdtZW50cyBpbiB0aGUgRXZlbnQgUmluZyBTZWdtZW50IFRh YmxlIChFUlNUKS4NCj4gKyAqIEBlcnN0X2Jhc2U6IEVSU1QgYmFzZSBhZGRyZXNzLg0KPiArICog QGVyc3RfZGVxdWV1ZTogRXZlbnQgcmluZyBkZXF1ZXVlIHBvaW50ZXIuDQo+ICsgKg0KPiArICog RWFjaCBpbnRlcnJ1cHRlciAoZGVmaW5lZCBieSBhIE1TSS1YIHZlY3RvcikgaGFzIGFuIGV2ZW50 IHJpbmcgYW5kIGFuIEV2ZW50DQo+ICsgKiBSaW5nIFNlZ21lbnQgVGFibGUgKEVSU1QpIGFzc29j aWF0ZWQgd2l0aCBpdC4gVGhlIGV2ZW50IHJpbmcgaXMgY29tcHJpc2VkIG9mDQo+ICsgKiBtdWx0 aXBsZSBzZWdtZW50cyBvZiB0aGUgc2FtZSBzaXplLiBUaGUgY29udHJvbGxlciBwbGFjZXMgZXZl bnRzIG9uIHRoZSByaW5nDQo+ICsgKiBhbmQgInVwZGF0ZXMgdGhlIEN5Y2xlIGJpdCBpbiB0aGUg VFJCcyB0byBpbmRpY2F0ZSB0byBzb2Z0d2FyZSB0aGUgY3VycmVudA0KPiArICogcG9zaXRpb24g b2YgdGhlIEVucXVldWUgUG9pbnRlci4iIFRoZSBkcml2ZXIgcHJvY2Vzc2VzIHRob3NlIGV2ZW50 cyBhbmQNCj4gKyAqIHVwZGF0ZXMgdGhlIGRlcXVldWUgcG9pbnRlci4NCj4gKyAqLw0KPiArc3Ry dWN0IGNkbnNwX2ludHJfcmVnIHsNCj4gKwlfX2xlMzIgaXJxX3BlbmRpbmc7DQo+ICsJX19sZTMy IGlycV9jb250cm9sOw0KPiArCV9fbGUzMiBlcnN0X3NpemU7DQo+ICsJX19sZTMyIHJzdmQ7DQo+ ICsJX19sZTY0IGVyc3RfYmFzZTsNCj4gKwlfX2xlNjQgZXJzdF9kZXF1ZXVlOw0KPiArfTsNCj4g Kw0KPiArLyogSU1BTiAtIEludGVycnVwdCBNYW5hZ2VtZW50IFJlZ2lzdGVyIC0gaXJxX3BlbmRp bmcgYml0bWFza3MgbC4gKi8NCj4gKyNkZWZpbmUgSU1BTl9JRQkJCUJJVCgxKQ0KPiArI2RlZmlu ZSBJTUFOX0lQCQkJQklUKDApDQo+ICsvKiBiaXRzIDI6MzEgbmVlZCB0byBiZSBwcmVzZXJ2ZWQg Ki8NCj4gKyNkZWZpbmUgSU1BTl9JRV9TRVQocCkJCSgoKHApICYgSU1BTl9JRSkgfCAweDIpDQo+ ICsjZGVmaW5lIElNQU5fSUVfQ0xFQVIocCkJKCgocCkgJiBJTUFOX0lFKSAmIH4oMHgyKSkNCj4g Kw0KPiArLyogSU1PRCAtIEludGVycnVwdGVyIE1vZGVyYXRpb24gUmVnaXN0ZXIgLSBpcnFfY29u dHJvbCBiaXRtYXNrcy4gKi8NCj4gKy8qDQo+ICsgKiBNaW5pbXVtIGludGVydmFsIGJldHdlZW4g aW50ZXJydXB0cyAoaW4gMjUwbnMgaW50ZXJ2YWxzKS4gVGhlIGludGVydmFsDQo+ICsgKiBiZXR3 ZWVuIGludGVycnVwdHMgd2lsbCBiZSBsb25nZXIgaWYgdGhlcmUgYXJlIG5vIGV2ZW50cyBvbiB0 aGUgZXZlbnQgcmluZy4NCj4gKyAqIERlZmF1bHQgaXMgNDAwMCAoMSBtcykuDQo+ICsgKi8NCj4g KyNkZWZpbmUgSU1PRF9JTlRFUlZBTF9NQVNLCUdFTk1BU0soMTUsIDApDQo+ICsvKiBDb3VudGVy IHVzZWQgdG8gY291bnQgZG93biB0aGUgdGltZSB0byB0aGUgbmV4dCBpbnRlcnJ1cHQgLSBIVyB1 c2Ugb25seSAqLw0KPiArI2RlZmluZSBJTU9EX0NPVU5URVJfTUFTSwlHRU5NQVNLKDMxLCAxNikN Cj4gKyNkZWZpbmUgSU1PRF9ERUZBVUxUX0lOVEVSVkFMCTANCj4gKw0KPiArLyogZXJzdF9zaXpl IGJpdG1hc2tzLiAqLw0KPiArLyogUHJlc2VydmUgYml0cyAxNjozMSBvZiBlcnN0X3NpemUuICov DQo+ICsjZGVmaW5lIEVSU1RfU0laRV9NQVNLCQlHRU5NQVNLKDMxLCAxNikNCj4gKw0KPiArLyog ZXJzdF9kZXF1ZXVlIGJpdG1hc2tzLiAqLw0KPiArLyoNCj4gKyAqIERlcXVldWUgRVJTVCBTZWdt ZW50IEluZGV4IChERVNJKSAtIFNlZ21lbnQgbnVtYmVyIChvciBhbGlhcykNCj4gKyAqIHdoZXJl IHRoZSBjdXJyZW50IGRlcXVldWUgcG9pbnRlciBsaWVzLiBUaGlzIGlzIGFuIG9wdGlvbmFsIEhX IGhpbnQuDQo+ICsgKi8NCj4gKyNkZWZpbmUgRVJTVF9ERVNJX01BU0sJCUdFTk1BU0soMiwgMCkN Cj4gKy8qIEV2ZW50IEhhbmRsZXIgQnVzeSAoRUhCKSAtIGlzIHRoZSBldmVudCByaW5nIHNjaGVk dWxlZCB0byBiZSBzZXJ2aWNlZC4gKi8NCj4gKyNkZWZpbmUgRVJTVF9FSEIJCUJJVCgzKQ0KPiAr I2RlZmluZSBFUlNUX1BUUl9NQVNLCQlHRU5NQVNLKDMsIDApDQo+ICsNCj4gKy8qKg0KPiArICog c3RydWN0IGNkbnNwX3J1bl9yZWdzDQo+ICsgKiBAbWljcm9mcmFtZV9pbmRleDogTUZJTkRFWCAt IGN1cnJlbnQgbWljcm9mcmFtZSBudW1iZXIuDQo+ICsgKiBAaXJfc2V0OiBBcnJheSBvZiBJbnRl cnJ1cHRlciByZWdpc3RlcnMuDQo+ICsgKg0KPiArICogRGV2aWNlIENvbnRyb2xsZXIgUnVudGlt ZSBSZWdpc3RlcnM6DQo+ICsgKiAiU29mdHdhcmUgc2hvdWxkIHJlYWQgYW5kIHdyaXRlIHRoZXNl IHJlZ2lzdGVycyB1c2luZyBvbmx5IER3b3JkICgzMiBiaXQpDQo+ICsgKiBvciBsYXJnZXIgYWNj ZXNzZXMiDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9ydW5fcmVncyB7DQo+ICsJX19sZTMyIG1p Y3JvZnJhbWVfaW5kZXg7DQo+ICsJX19sZTMyIHJzdmRbN107DQo+ICsJc3RydWN0IGNkbnNwX2lu dHJfcmVnIGlyX3NldFsxMjhdOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBVU0IyLjAgUG9y dCBQZXJpcGhlcmFsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzLg0KPiArICogQGV4dF9jYXA6IEhl YWRlciByZWdpc3RlciBmb3IgRXh0ZW5kZWQgQ2FwYWJpbGl0eS4NCj4gKyAqIEBwb3J0X3JlZzE6 IFRpbWVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIuDQo+ICsgKiBAcG9ydF9yZWcyOiBUaW1lciBD b25maWd1cmF0aW9uIFJlZ2lzdGVyLg0KPiArICogQHBvcnRfcmVnMzogVGltZXIgQ29uZmlndXJh dGlvbiBSZWdpc3Rlci4NCj4gKyAqIEBwb3J0X3JlZzQ6IFRpbWVyIENvbmZpZ3VyYXRpb24gUmVn aXN0ZXIuDQo+ICsgKiBAcG9ydF9yZWc1OiBUaW1lciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyLg0K PiArICogQHBvcnRfcmVnNjogQ2hpY2tlbiBiaXRzIGZvciBVU0IyMFBQUC4NCj4gKyAqLw0KPiAr c3RydWN0IGNkbnNwXzIwcG9ydF9jYXAgew0KPiArCV9fbGUzMiBleHRfY2FwOw0KPiArCV9fbGUz MiBwb3J0X3JlZzE7DQo+ICsJX19sZTMyIHBvcnRfcmVnMjsNCj4gKwlfX2xlMzIgcG9ydF9yZWcz Ow0KPiArCV9fbGUzMiBwb3J0X3JlZzQ7DQo+ICsJX19sZTMyIHBvcnRfcmVnNTsNCj4gKwlfX2xl MzIgcG9ydF9yZWc2Ow0KPiArfTsNCj4gKw0KPiArLyogRXh0ZW5kZWQgY2FwYWJpbGl0eSByZWdp c3RlciBmaWVsZHMgKi8NCj4gKyNkZWZpbmUgRVhUX0NBUFNfSUQocCkJCQkoKChwKSA+PiAwKSAm IEdFTk1BU0soNywgMCkpDQo+ICsjZGVmaW5lIEVYVF9DQVBTX05FWFQocCkJCSgoKHApID4+IDgp ICYgR0VOTUFTSyg3LCAwKSkNCj4gKy8qIEV4dGVuZGVkIGNhcGFiaWxpdHkgSURzIC0gSUQgMCBy ZXNlcnZlZCAqLw0KPiArI2RlZmluZSBFWFRfQ0FQU19QUk9UT0NPTAkJMg0KPiArDQo+ICsvKiBV U0IgMi4wIFBvcnQgUGVyaXBoZXJhbCBDb25maWd1cmF0aW9uIEV4dGVuZGVkIENhcGFiaWxpdHkg Ki8NCj4gKyNkZWZpbmUgRVhUX0NBUF9DRkdfREVWXzIwUE9SVF9DQVBfSUQJMHhDMQ0KPiArLyoN Cj4gKyAqIFNldHRpbmcgdGhpcyBiaXQgdG8gJzEnIGVuYWJsZXMgYXV0b21hdGljIHdha2V1cCBm cm9tIEwxIHN0YXRlIG9uIHRyYW5zZmVyDQo+ICsgKiBUUkIgcHJlcGFyZWQgd2hlbiBVU0JTU1Ag b3BlcmF0ZXMgaW4gVVNCMi4wIG1vZGUuDQo+ICsgKi8NCj4gKyNkZWZpbmUgUE9SVF9SRUc2X0wx X0wwX0hXX0VOCQlCSVQoMSkNCj4gKy8qDQo+ICsgKiBTZXR0aW5nIHRoaXMgYml0IHRvICcxJyBm b3JjZXMgRnVsbCBTcGVlZCB3aGVuIFVTQlNTUCBvcGVyYXRlcyBpbiBVU0IyLjANCj4gKyAqIG1v ZGUgKGRpc2FibGVzIEhpZ2ggU3BlZWQpLg0KPiArICovDQo+ICsjZGVmaW5lIFBPUlRfUkVHNl9G T1JDRV9GUwkJQklUKDApDQo+ICsNCj4gKy8qKg0KPiArICogVVNCMy54IFBvcnQgUGVyaXBoZXJh bCBDb25maWd1cmF0aW9uIFJlZ2lzdGVycy4NCj4gKyAqIEBleHRfY2FwOiBIZWFkZXIgcmVnaXN0 ZXIgZm9yIEV4dGVuZGVkIENhcGFiaWxpdHkuDQo+ICsgKiBAbW9kZV9hZGRyOiBNaXNjZWxsYW5l b3VzIDN4UE9SVCBvcGVyYXRpb24gbW9kZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLg0KPiArICog QG1vZGVfMjogM3ggUG9ydCBDb250cm9sIFJlZ2lzdGVyIDIuDQo+ICsgKi8NCj4gK3N0cnVjdCBj ZG5zcF8zeHBvcnRfY2FwIHsNCj4gKwlfX2xlMzIgZXh0X2NhcDsNCj4gKwlfX2xlMzIgbW9kZV9h ZGRyOw0KPiArCV9fbGUzMiByZXNlcnZlZFs1Ml07DQo+ICsJX19sZTMyIG1vZGVfMjsNCj4gK307 DQo+ICsNCj4gKy8qIEV4dGVuZGVkIENhcGFiaWxpdHkgSGVhZGVyIGZvciAzWFBvcnQgQ29uZmln dXJhdGlvbiBSZWdpc3RlcnMuICovDQo+ICsjZGVmaW5lIERfWEVDX0NGR18zWFBPUlRfQ0FQCQkw eEMwDQo+ICsjZGVmaW5lIENGR18zWFBPUlRfU1NQX1NVUFBPUlQJCUJJVCgzMSkNCj4gKyNkZWZp bmUgQ0ZHXzNYUE9SVF9VMV9QSVBFX0NMS19HQVRFX0VOCUJJVCgwKQ0KPiArDQo+ICsvKiBSZXZp c2lvbiBFeHRlbmRlZCBDYXBhYmlsaXR5IElEICovDQo+ICsjZGVmaW5lIFJUTF9SRVZfQ0FQCQkJ MHhDNA0KPiArI2RlZmluZSBSVExfUkVWX0NBUF9SWF9CVUZGX0NNRF9TSVpFCUJJVE1BU0soMzEs IDI0KQ0KPiArI2RlZmluZSBSVExfUkVWX0NBUF9SWF9CVUZGX1NJWkUJQklUTUFTSygxNSwgMCkN Cj4gKyNkZWZpbmUgUlRMX1JFVl9DQVBfVFhfQlVGRl9DTURfU0laRQlCSVRNQVNLKDMxLCAyNCkN Cj4gKyNkZWZpbmUgUlRMX1JFVl9DQVBfVFhfQlVGRl9TSVpFCUJJVE1BU0soMTUsIDApDQo+ICsN Cj4gKyNkZWZpbmUgQ0ROU1BfVkVSXzEgMHgwMDAwMDAwMA0KPiArI2RlZmluZSBDRE5TUF9WRVJf MiAweDEwMDAwMDAwDQo+ICsNCj4gKyNkZWZpbmUgQ0ROU1BfSUZfRVBfRVhJU1QocGRldiwgZXBf bnVtLCBkaXIpICgocGRldiktPnJldl9jYXAuZXBfc3VwcG9ydGVkICYgXA0KPiArCQkJICAoQklU KGVwX251bSkgPDwgKChkaXIpID8gMCA6IDE2KSkpDQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0 IGNkbnNwX3Jldl9jYXAgLSBjb250cm9sbGVyIGNhcGFiaWxpdGllcyAuDQo+ICsgKiBAZXh0X2Nh cDogSGVhZGVyIGZvciBSVEwgUmV2aXNpb24gRXh0ZW5kZWQgQ2FwYWJpbGl0eS4NCj4gKyAqIEBy dGxfcmV2aXNpb246IFJUTCByZXZpc2lvbi4NCj4gKyAqIEByeF9idWZmX3NpemU6IFJ4IGJ1ZmZl ciBzaXplcy4NCj4gKyAqIEB0eF9idWZmX3NpemU6IFR4IGJ1ZmZlciBzaXplcy4NCj4gKyAqIEBl cF9zdXBwb3J0ZWQ6IFN1cHBvcnRlZCBlbmRwb2ludHMuDQo+ICsgKiBAY3RybF9yZXZpc2lvbjog Q29udHJvbGxlciByZXZpc2lvbiBJRC4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX3Jldl9jYXAg ew0KPiArCV9fbGUzMiBleHRfY2FwOw0KPiArCV9fbGUzMiBydGxfcmV2aXNpb247DQo+ICsJX19s ZTMyIHJ4X2J1ZmZfc2l6ZTsNCj4gKwlfX2xlMzIgdHhfYnVmZl9zaXplOw0KPiArCV9fbGUzMiBl cF9zdXBwb3J0ZWQ7DQo+ICsJX19sZTMyIGN0cmxfcmV2aXNpb247DQo+ICt9Ow0KPiArDQo+ICsv KiBVU0IyLjAgUG9ydCBQZXJpcGhlcmFsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzLiAqLw0KPiAr I2RlZmluZSBEX1hFQ19QUkVfUkVHU19DQVAJCTB4QzgNCj4gKyNkZWZpbmUgUkVHX0NISUNLRU5f QklUU18yX09GRlNFVAkweDQ4DQo+ICsjZGVmaW5lIENISUNLRU5fWERNQV8yX1RQX0NBQ0hFX0RJ UwlCSVQoMjgpDQo+ICsNCj4gKy8qIFhCVUYgRXh0ZW5kZWQgQ2FwYWJpbGl0eSBJRC4gKi8NCj4g KyNkZWZpbmUgWEJVRl9DQVBfSUQJCQkweENCDQo+ICsjZGVmaW5lIFhCVUZfUlhfVEFHX01BU0tf MF9PRkZTRVQJMHgxQw0KPiArI2RlZmluZSBYQlVGX1JYX1RBR19NQVNLXzFfT0ZGU0VUCTB4MjQN Cj4gKyNkZWZpbmUgWEJVRl9UWF9DTURfT0ZGU0VUCQkweDJDDQo+ICsNCj4gKy8qKg0KPiArICog c3RydWN0IGNkbnNwX2Rvb3JiZWxsX2FycmF5Lg0KPiArICogQGNtZF9kYjogQ29tbWFuZCByaW5n IGRvb3JiZWxsIHJlZ2lzdGVyLg0KPiArICogQGVwX2RiOiBFbmRwb2ludCByaW5nIGRvb3JiZWxs IHJlZ2lzdGVyLg0KPiArICogICAgICAgICBCaXRzIDAgLSA3OiBFbmRwb2ludCB0YXJnZXQuDQo+ ICsgKiAgICAgICAgIEJpdHMgOCAtIDE1OiBSc3ZkWi4NCj4gKyAqICAgICAgICAgQml0cyAxNiAt IDMxOiBTdHJlYW0gSUQuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9kb29yYmVsbF9hcnJheSB7 DQo+ICsJX19sZTMyIGNtZF9kYjsNCj4gKwlfX2xlMzIgZXBfZGI7DQo+ICt9Ow0KPiArDQo+ICsj ZGVmaW5lIERCX1ZBTFVFKGVwLCBzdHJlYW0pCQkoKCgoZXApICsgMSkgJiAweGZmKSB8ICgoc3Ry ZWFtKSA8PCAxNikpDQo+ICsjZGVmaW5lIERCX1ZBTFVFX0VQMF9PVVQoZXAsIHN0cmVhbSkJKChl cCkgJiAweGZmKQ0KPiArI2RlZmluZSBEQl9WQUxVRV9DTUQJCQkweDAwMDAwMDAwDQo+ICsNCj4g Ky8qKg0KPiArICogc3RydWN0IGNkbnNwX2NvbnRhaW5lcl9jdHguDQo+ICsgKiBAdHlwZTogVHlw ZSBvZiBjb250ZXh0LiBVc2VkIHRvIGNhbGN1bGF0ZWQgb2Zmc2V0cyB0byBjb250YWluZWQgY29u dGV4dHMuDQo+ICsgKiBAc2l6ZTogU2l6ZSBvZiB0aGUgY29udGV4dCBkYXRhLg0KPiArICogQGN0 eF9zaXplOiBjb250ZXh0IGRhdGEgc3RydWN0dXJlIHNpemUgLSA2NCBvciAzMiBiaXRzLg0KPiAr ICogQGRtYTogZG1hIGFkZHJlc3Mgb2YgdGhlIGJ5dGVzLg0KPiArICogQGJ5dGVzOiBUaGUgcmF3 IGNvbnRleHQgZGF0YSBnaXZlbiB0byBIVy4NCj4gKyAqDQo+ICsgKiBSZXByZXNlbnRzIGVpdGhl ciBhIERldmljZSBvciBJbnB1dCBjb250ZXh0LiBIb2xkcyBhIHBvaW50ZXIgdG8gdGhlIHJhdw0K PiArICogbWVtb3J5IHVzZWQgZm9yIHRoZSBjb250ZXh0IChieXRlcykgYW5kIGRtYSBhZGRyZXNz IG9mIGl0IChkbWEpLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfY29udGFpbmVyX2N0eCB7DQo+ ICsJdW5zaWduZWQgaW50IHR5cGU7DQo+ICsjZGVmaW5lIENETlNQX0NUWF9UWVBFX0RFVklDRQkw eDENCj4gKyNkZWZpbmUgQ0ROU1BfQ1RYX1RZUEVfSU5QVVQJMHgyDQo+ICsJaW50IHNpemU7DQo+ ICsJaW50IGN0eF9zaXplOw0KPiArCWRtYV9hZGRyX3QgZG1hOw0KPiArCXU4ICpieXRlczsNCj4g K307DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX3Nsb3RfY3R4DQo+ICsgKiBAZGV2 X2luZm86IERldmljZSBzcGVlZCwgYW5kIGxhc3QgdmFsaWQgZW5kcG9pbnQuDQo+ICsgKiBAZGV2 X3BvcnQ6IERldmljZSBwb3J0IG51bWJlciB0aGF0IGlzIG5lZWRlZCB0byBhY2Nlc3MgdGhlIFVT QiBkZXZpY2UuDQo+ICsgKiBAaW50X3RhcmdldDogSW50ZXJydXB0ZXIgdGFyZ2V0IG51bWJlci4N Cj4gKyAqIEBkZXZfc3RhdGU6IFNsb3Qgc3RhdGUgYW5kIGRldmljZSBhZGRyZXNzLg0KPiArICoN Cj4gKyAqIFNsb3QgQ29udGV4dCAtIFRoaXMgYXNzdW1lcyB0aGUgY29udHJvbGxlciB1c2VzIDMy LWJ5dGUgY29udGV4dA0KPiArICogc3RydWN0dXJlcy4gSWYgdGhlIGNvbnRyb2xsZXIgdXNlcyA2 NC1ieXRlIGNvbnRleHRzLCB0aGVyZSBpcyBhbiBhZGRpdGlvbmFsDQo+ICsgKiAzMiBieXRlcyBy ZXNlcnZlZCBhdCB0aGUgZW5kIG9mIHRoZSBzbG90IGNvbnRleHQgZm9yIGNvbnRyb2xsZXIgaW50 ZXJuYWwgdXNlLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3Bfc2xvdF9jdHggew0KPiArCV9fbGUz MiBkZXZfaW5mbzsNCj4gKwlfX2xlMzIgZGV2X3BvcnQ7DQo+ICsJX19sZTMyIGludF90YXJnZXQ7 DQo+ICsJX19sZTMyIGRldl9zdGF0ZTsNCj4gKwkvKiBvZmZzZXQgMHgxMCB0byAweDFmIHJlc2Vy dmVkIGZvciBjb250cm9sbGVyIGludGVybmFsIHVzZS4gKi8NCj4gKwlfX2xlMzIgcmVzZXJ2ZWRb NF07DQo+ICt9Ow0KPiArDQo+ICsvKiBCaXRzIDIwOjIzIGluIHRoZSBTbG90IENvbnRleHQgYXJl IHRoZSBzcGVlZCBmb3IgdGhlIGRldmljZS4gKi8NCj4gKyNkZWZpbmUgU0xPVF9TUEVFRF9GUwkJ KFhERVZfRlMgPDwgMTApDQo+ICsjZGVmaW5lIFNMT1RfU1BFRURfSFMJCShYREVWX0hTIDw8IDEw KQ0KPiArI2RlZmluZSBTTE9UX1NQRUVEX1NTCQkoWERFVl9TUyA8PCAxMCkNCj4gKyNkZWZpbmUg U0xPVF9TUEVFRF9TU1AJCShYREVWX1NTUCA8PCAxMCkNCj4gKw0KPiArLyogZGV2X2luZm8gYml0 bWFza3MuICovDQo+ICsvKiBEZXZpY2Ugc3BlZWQgLSB2YWx1ZXMgZGVmaW5lZCBieSBQT1JUU0Mg RGV2aWNlIFNwZWVkIGZpZWxkIC0gMjA6MjMuICovDQo+ICsjZGVmaW5lIERFVl9TUEVFRAkJR0VO TUFTSygyMywgMjApDQo+ICsjZGVmaW5lIEdFVF9ERVZfU1BFRUQobikJKCgobikgJiBERVZfU1BF RUQpID4+IDIwKQ0KPiArLyogSW5kZXggb2YgdGhlIGxhc3QgdmFsaWQgZW5kcG9pbnQgY29udGV4 dCBpbiB0aGlzIGRldmljZSBjb250ZXh0IC0gMjc6MzEuICovDQo+ICsjZGVmaW5lIExBU1RfQ1RY X01BU0sJCUdFTk1BU0soMzEsIDI3KQ0KPiArI2RlZmluZSBMQVNUX0NUWChwKQkJKChwKSA8PCAy NykNCj4gKyNkZWZpbmUgTEFTVF9DVFhfVE9fRVBfTlVNKHApCSgoKHApID4+IDI3KSAtIDEpDQo+ ICsjZGVmaW5lIFNMT1RfRkxBRwkJQklUKDApDQo+ICsjZGVmaW5lIEVQMF9GTEFHCQlCSVQoMSkN Cj4gKw0KPiArLyogZGV2X3BvcnQgYml0bWFza3MgKi8NCj4gKy8qIERldmljZSBwb3J0IG51bWJl ciB0aGF0IGlzIG5lZWRlZCB0byBhY2Nlc3MgdGhlIFVTQiBkZXZpY2UuICovDQo+ICsjZGVmaW5l IERFVl9QT1JUKHApCQkoKChwKSAmIDB4ZmYpIDw8IDE2KQ0KPiArDQo+ICsvKiBkZXZfc3RhdGUg Yml0bWFza3MgKi8NCj4gKy8qIFVTQiBkZXZpY2UgYWRkcmVzcyAtIGFzc2lnbmVkIGJ5IHRoZSBj b250cm9sbGVyLiAqLw0KPiArI2RlZmluZSBERVZfQUREUl9NQVNLCQlHRU5NQVNLKDcsIDApDQo+ ICsvKiBTbG90IHN0YXRlICovDQo+ICsjZGVmaW5lIFNMT1RfU1RBVEUJCUdFTk1BU0soMzEsIDI3 KQ0KPiArI2RlZmluZSBHRVRfU0xPVF9TVEFURShwKQkoKChwKSAmIFNMT1RfU1RBVEUpID4+IDI3 KQ0KPiArDQo+ICsjZGVmaW5lIFNMT1RfU1RBVEVfRElTQUJMRUQJMA0KPiArI2RlZmluZSBTTE9U X1NUQVRFX0VOQUJMRUQJU0xPVF9TVEFURV9ESVNBQkxFRA0KPiArI2RlZmluZSBTTE9UX1NUQVRF X0RFRkFVTFQJMQ0KPiArI2RlZmluZSBTTE9UX1NUQVRFX0FERFJFU1NFRAkyDQo+ICsjZGVmaW5l IFNMT1RfU1RBVEVfQ09ORklHVVJFRAkzDQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNw X2VwX2N0eC4NCj4gKyAqIEBlcF9pbmZvOiBFbmRwb2ludCBzdGF0ZSwgc3RyZWFtcywgbXVsdCwg YW5kIGludGVydmFsIGluZm9ybWF0aW9uLg0KPiArICogQGVwX2luZm8yOiBJbmZvcm1hdGlvbiBv biBlbmRwb2ludCB0eXBlLCBtYXggcGFja2V0IHNpemUsIG1heCBidXJzdCBzaXplLA0KPiArICog ICAgICAgICAgICBlcnJvciBjb3VudCwgYW5kIHdoZXRoZXIgdGhlIGNvbnRyb2xsZXIgd2lsbCBm b3JjZSBhbiBldmVudCBmb3INCj4gKyAqICAgICAgICAgICAgYWxsIHRyYW5zYWN0aW9ucy4NCj4g KyAqIEBkZXE6IDY0LWJpdCByaW5nIGRlcXVldWUgcG9pbnRlciBhZGRyZXNzLiBJZiB0aGUgZW5k cG9pbnQgb25seQ0KPiArICogICAgICAgZGVmaW5lcyBvbmUgc3RyZWFtLCB0aGlzIHBvaW50cyB0 byB0aGUgZW5kcG9pbnQgdHJhbnNmZXIgcmluZy4NCj4gKyAqICAgICAgIE90aGVyd2lzZSwgaXQg cG9pbnRzIHRvIGEgc3RyZWFtIGNvbnRleHQgYXJyYXksIHdoaWNoIGhhcyBhDQo+ICsgKiAgICAg ICByaW5nIHBvaW50ZXIgZm9yIGVhY2ggZmxvdy4NCj4gKyAqIEB0eF9pbmZvOiBBdmVyYWdlIFRS QiBsZW5ndGhzIGZvciB0aGUgZW5kcG9pbnQgcmluZyBhbmQNCj4gKyAqCSAgICAgbWF4IHBheWxv YWQgd2l0aGluIGFuIEVuZHBvaW50IFNlcnZpY2UgSW50ZXJ2YWwgVGltZSAoRVNJVCkuDQo+ICsg Kg0KPiArICogRW5kcG9pbnQgQ29udGV4dCAtIFRoaXMgYXNzdW1lcyB0aGUgY29udHJvbGxlciB1 c2VzIDMyLWJ5dGUgY29udGV4dA0KPiArICogc3RydWN0dXJlcy4gSWYgdGhlIGNvbnRyb2xsZXIg dXNlcyA2NC1ieXRlIGNvbnRleHRzLCB0aGVyZSBpcyBhbiBhZGRpdGlvbmFsDQo+ICsgKiAzMiBi eXRlcyByZXNlcnZlZCBhdCB0aGUgZW5kIG9mIHRoZSBlbmRwb2ludCBjb250ZXh0IGZvciBjb250 cm9sbGVyIGludGVybmFsDQo+ICsgKiB1c2UuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9lcF9j dHggew0KPiArCV9fbGUzMiBlcF9pbmZvOw0KPiArCV9fbGUzMiBlcF9pbmZvMjsNCj4gKwlfX2xl NjQgZGVxOw0KPiArCV9fbGUzMiB0eF9pbmZvOw0KPiArCS8qIG9mZnNldCAweDE0IC0gMHgxZiBy ZXNlcnZlZCBmb3IgY29udHJvbGxlciBpbnRlcm5hbCB1c2UuICovDQo+ICsJX19sZTMyIHJlc2Vy dmVkWzNdOw0KPiArfTsNCj4gKw0KPiArLyogZXBfaW5mbyBiaXRtYXNrcy4gKi8NCj4gKy8qDQo+ ICsgKiBFbmRwb2ludCBTdGF0ZSAtIGJpdHMgMDoyOg0KPiArICogMCAtIGRpc2FibGVkDQo+ICsg KiAxIC0gcnVubmluZw0KPiArICogMiAtIGhhbHRlZCBkdWUgdG8gaGFsdCBjb25kaXRpb24NCj4g KyAqIDMgLSBzdG9wcGVkDQo+ICsgKiA0IC0gVFJCIGVycm9yDQo+ICsgKiA1LTcgLSByZXNlcnZl ZA0KPiArICovDQo+ICsjZGVmaW5lIEVQX1NUQVRFX01BU0sJCUdFTk1BU0soMywgMCkNCj4gKyNk ZWZpbmUgRVBfU1RBVEVfRElTQUJMRUQJMA0KPiArI2RlZmluZSBFUF9TVEFURV9SVU5OSU5HCTEN Cj4gKyNkZWZpbmUgRVBfU1RBVEVfSEFMVEVECQkyDQo+ICsjZGVmaW5lIEVQX1NUQVRFX1NUT1BQ RUQJMw0KPiArI2RlZmluZSBFUF9TVEFURV9FUlJPUgkJNA0KPiArI2RlZmluZSBHRVRfRVBfQ1RY X1NUQVRFKGN0eCkJKGxlMzJfdG9fY3B1KChjdHgpLT5lcF9pbmZvKSAmIEVQX1NUQVRFX01BU0sp DQo+ICsNCj4gKy8qIE11bHQgLSBNYXggbnVtYmVyIG9mIGJ1cnN0IHdpdGhpbiBhbiBpbnRlcnZh bCwgaW4gRVAgY29tcGFuaW9uIGRlc2MuICovDQo+ICsjZGVmaW5lIEVQX01VTFQocCkJCQkoKChw KSA8PCA4KSAmIEdFTk1BU0soOSwgOCkpDQo+ICsjZGVmaW5lIENUWF9UT19FUF9NVUxUKHApCQko KChwKSAmIEdFTk1BU0soOSwgOCkpID4+IDgpDQo+ICsvKiBiaXRzIDEwOjE0IGFyZSBNYXggUHJp bWFyeSBTdHJlYW1zLiAqLw0KPiArLyogYml0IDE1IGlzIExpbmVhciBTdHJlYW0gQXJyYXkuICov DQo+ICsvKiBJbnRlcnZhbCAtIHBlcmlvZCBiZXR3ZWVuIHJlcXVlc3RzIHRvIGFuIGVuZHBvaW50 IC0gMTI1dSBpbmNyZW1lbnRzLiAqLw0KPiArI2RlZmluZSBFUF9JTlRFUlZBTChwKQkJCSgoKHAp IDw8IDE2KSAmIEdFTk1BU0soMjMsIDE2KSkNCj4gKyNkZWZpbmUgRVBfSU5URVJWQUxfVE9fVUZS QU1FUyhwKQkoMSA8PCAoKChwKSAmIEdFTk1BU0soMjMsIDE2KSkgPj4gMTYpKQ0KPiArI2RlZmlu ZSBDVFhfVE9fRVBfSU5URVJWQUwocCkJCSgoKHApICYgR0VOTUFTSygyMywgMTYpKSA+PiAxNikN Cj4gKyNkZWZpbmUgRVBfTUFYUFNUUkVBTVNfTUFTSwkJR0VOTUFTSygxNCwgMTApDQo+ICsjZGVm aW5lIEVQX01BWFBTVFJFQU1TKHApCQkoKChwKSA8PCAxMCkgJiBFUF9NQVhQU1RSRUFNU19NQVNL KQ0KPiArI2RlZmluZSBDVFhfVE9fRVBfTUFYUFNUUkVBTVMocCkJKCgocCkgJiBFUF9NQVhQU1RS RUFNU19NQVNLKSA+PiAxMCkNCj4gKy8qIEVuZHBvaW50IGlzIHNldCB1cCB3aXRoIGEgTGluZWFy IFN0cmVhbSBBcnJheSAodnMuIFNlY29uZGFyeSBTdHJlYW0gQXJyYXkpICovDQo+ICsjZGVmaW5l IEVQX0hBU19MU0EJCQlCSVQoMTUpDQo+ICsNCj4gKy8qIGVwX2luZm8yIGJpdG1hc2tzICovDQo+ ICsjZGVmaW5lIEVSUk9SX0NPVU5UKHApCQkoKChwKSAmIDB4MykgPDwgMSkNCj4gKyNkZWZpbmUg Q1RYX1RPX0VQX1RZUEUocCkJKCgocCkgPj4gMykgJiAweDcpDQo+ICsjZGVmaW5lIEVQX1RZUEUo cCkJCSgocCkgPDwgMykNCj4gKyNkZWZpbmUgSVNPQ19PVVRfRVAJCTENCj4gKyNkZWZpbmUgQlVM S19PVVRfRVAJCTINCj4gKyNkZWZpbmUgSU5UX09VVF9FUAkJMw0KPiArI2RlZmluZSBDVFJMX0VQ CQkJNA0KPiArI2RlZmluZSBJU09DX0lOX0VQCQk1DQo+ICsjZGVmaW5lIEJVTEtfSU5fRVAJCTYN Cj4gKyNkZWZpbmUgSU5UX0lOX0VQCQk3DQo+ICsvKiBiaXQgNiByZXNlcnZlZC4gKi8NCj4gKy8q IGJpdCA3IGlzIERldmljZSBJbml0aWF0ZSBEaXNhYmxlIC0gZm9yIGRpc2FibGluZyBzdHJlYW0g c2VsZWN0aW9uLiAqLw0KPiArI2RlZmluZSBNQVhfQlVSU1QocCkJCSgoKHApIDw8IDgpICYgR0VO TUFTSygxNSwgOCkpDQo+ICsjZGVmaW5lIENUWF9UT19NQVhfQlVSU1QocCkJKCgocCkgJiBHRU5N QVNLKDE1LCA4KSkgPj4gOCkNCj4gKyNkZWZpbmUgTUFYX1BBQ0tFVChwKQkJKCgocCkgPDwgMTYp ICYgR0VOTUFTSygzMSwgMTYpKQ0KPiArI2RlZmluZSBNQVhfUEFDS0VUX01BU0sJCUdFTk1BU0so MzEsIDE2KQ0KPiArI2RlZmluZSBNQVhfUEFDS0VUX0RFQ09ERUQocCkJKCgocCkgJiBHRU5NQVNL KDMxLCAxNikpID4+IDE2KQ0KPiArDQo+ICsvKiB0eF9pbmZvIGJpdG1hc2tzLiAqLw0KPiArI2Rl ZmluZSBFUF9BVkdfVFJCX0xFTkdUSChwKQkJKChwKSAmIEdFTk1BU0soMTUsIDApKQ0KPiArI2Rl ZmluZSBFUF9NQVhfRVNJVF9QQVlMT0FEX0xPKHApCSgoKHApIDw8IDE2KSAmIEdFTk1BU0soMzEs IDE2KSkNCj4gKyNkZWZpbmUgRVBfTUFYX0VTSVRfUEFZTE9BRF9ISShwKQkoKCgocCkgJiBHRU5N QVNLKDIzLCAxNikpID4+IDE2KSA8PCAyNCkNCj4gKyNkZWZpbmUgQ1RYX1RPX01BWF9FU0lUX1BB WUxPQURfTE8ocCkJKCgocCkgJiBHRU5NQVNLKDMxLCAxNikpID4+IDE2KQ0KPiArI2RlZmluZSBD VFhfVE9fTUFYX0VTSVRfUEFZTE9BRF9ISShwKQkoKChwKSAmIEdFTk1BU0soMzEsIDI0KSkgPj4g MjQpDQo+ICsNCj4gKy8qIGRlcSBiaXRtYXNrcy4gKi8NCj4gKyNkZWZpbmUgRVBfQ1RYX0NZQ0xF X01BU0sJCUJJVCgwKQ0KPiArI2RlZmluZSBDVFhfREVRX01BU0sJCQkofjB4ZkwpDQo+ICsNCj4g Ky8qKg0KPiArICogc3RydWN0IGNkbnNwX2lucHV0X2NvbnRyb2xfY29udGV4dA0KPiArICogSW5w dXQgY29udHJvbCBjb250ZXh0Ow0KPiArICoNCj4gKyAqIEBkcm9wX2NvbnRleHQ6IFNldCB0aGUg Yml0IG9mIHRoZSBlbmRwb2ludCBjb250ZXh0IHlvdSB3YW50IHRvIGRpc2FibGUuDQo+ICsgKiBA YWRkX2NvbnRleHQ6IFNldCB0aGUgYml0IG9mIHRoZSBlbmRwb2ludCBjb250ZXh0IHlvdSB3YW50 IHRvIGVuYWJsZS4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX2lucHV0X2NvbnRyb2xfY3R4IHsN Cj4gKwlfX2xlMzIgZHJvcF9mbGFnczsNCj4gKwlfX2xlMzIgYWRkX2ZsYWdzOw0KPiArCV9fbGUz MiByc3ZkMls2XTsNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogUmVwcmVzZW50cyBldmVyeXRo aW5nIHRoYXQgaXMgbmVlZGVkIHRvIGlzc3VlIGEgY29tbWFuZCBvbiB0aGUgY29tbWFuZCByaW5n Lg0KPiArICoNCj4gKyAqIEBpbl9jdHg6IFBvaW50ZXIgdG8gaW5wdXQgY29udGV4dCBzdHJ1Y3R1 cmUuDQo+ICsgKiBAc3RhdHVzOiBDb21tYW5kIENvbXBsZXRpb24gQ29kZSBmb3IgbGFzdCBjb21t YW5kLg0KPiArICogQGNvbW1hbmRfdHJiOiBQb2ludGVyIHRvIGNvbW1hbmQgVFJCLg0KPiArICov DQo+ICtzdHJ1Y3QgY2Ruc3BfY29tbWFuZCB7DQo+ICsJLyogSW5wdXQgY29udGV4dCBmb3IgY2hh bmdpbmcgZGV2aWNlIHN0YXRlLiAqLw0KPiArCXN0cnVjdCBjZG5zcF9jb250YWluZXJfY3R4ICpp bl9jdHg7DQo+ICsJdTMyIHN0YXR1czsNCj4gKwl1bmlvbiBjZG5zcF90cmIgKmNvbW1hbmRfdHJi Ow0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBTdHJlYW0gY29udGV4dCBzdHJ1Y3R1cmUuDQo+ ICsgKg0KPiArICogQHN0cmVhbV9yaW5nOiA2NC1iaXQgc3RyZWFtIHJpbmcgYWRkcmVzcywgY3lj bGUgc3RhdGUsIGFuZCBzdHJlYW0gdHlwZS4NCj4gKyAqIEByZXNlcnZlZDogb2Zmc2V0IDB4MTQg LSAweDFmIHJlc2VydmVkIGZvciBjb250cm9sbGVyIGludGVybmFsIHVzZS4NCj4gKyAqLw0KPiAr c3RydWN0IGNkbnNwX3N0cmVhbV9jdHggew0KPiArCV9fbGU2NCBzdHJlYW1fcmluZzsNCj4gKwlf X2xlMzIgcmVzZXJ2ZWRbMl07DQo+ICt9Ow0KPiArDQo+ICsvKiBTdHJlYW0gQ29udGV4dCBUeXBl cyAtIGJpdHMgMzoxIG9mIHN0cmVhbSBjdHggZGVxIHB0ci4gKi8NCj4gKyNkZWZpbmUgU0NUX0ZP Ul9DVFgocCkJCSgoKHApIDw8IDEpICYgR0VOTUFTSygzLCAxKSkNCj4gKy8qIFNlY29uZGFyeSBz dHJlYW0gYXJyYXkgdHlwZSwgZGVxdWV1ZSBwb2ludGVyIGlzIHRvIGEgdHJhbnNmZXIgcmluZy4g Ki8NCj4gKyNkZWZpbmUgU0NUX1NFQ19UUgkJMA0KPiArLyogUHJpbWFyeSBzdHJlYW0gYXJyYXkg dHlwZSwgZGVxdWV1ZSBwb2ludGVyIGlzIHRvIGEgdHJhbnNmZXIgcmluZy4gKi8NCj4gKyNkZWZp bmUgU0NUX1BSSV9UUgkJMQ0KPiArDQo+ICsvKioNCj4gKyAqICBzdHJ1Y3QgY2Ruc3Bfc3RyZWFt X2luZm86IFJlcHJlc2VudGluZyBldmVyeXRoaW5nIHRoYXQgaXMgbmVlZGVkIHRvDQo+ICsgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cyBzdHJlYW0gY2FwYWJsZSBlbmRwb2lu dHMuDQo+ICsgKiAgQHN0cmVhbV9yaW5nczogQXJyYXkgb2YgcG9pbnRlcnMgY29udGFpbmluZyBU cmFuc2ZlciByaW5ncyBmb3IgYWxsDQo+ICsgKiAgICAgICAgICAgICAgICAgc3VwcG9ydGVkIHN0 cmVhbXMuDQo+ICsgKiAgQG51bV9zdHJlYW1zOiBOdW1iZXIgb2Ygc3RyZWFtcywgaW5jbHVkaW5n IHN0cmVhbSAwLg0KPiArICogIEBzdHJlYW1fY3R4X2FycmF5OiBUaGUgc3RyZWFtIGNvbnRleHQg YXJyYXkgbWF5IGJlIGJpZ2dlciB0aGFuIHRoZSBudW1iZXINCj4gKyAqICAgICAgICAgICAgICAg ICAgICAgb2Ygc3RyZWFtcyB0aGUgZHJpdmVyIGFza2VkIGZvci4NCj4gKyAqICBAbnVtX3N0cmVh bV9jdHhzOiBOdW1iZXIgb2Ygc3RyZWFtcy4NCj4gKyAqICBAY3R4X2FycmF5X2RtYTogRG1hIGFk ZHJlc3Mgb2YgQ29udGV4dCBTdHJlYW0gQXJyYXkuDQo+ICsgKiAgQHRyYl9hZGRyZXNzX21hcDog Rm9yIG1hcHBpbmcgcGh5c2ljYWwgVFJCIGFkZHJlc3NlcyB0byBzZWdtZW50cyBpbg0KPiArICog ICAgICAgICAgICAgICAgICAgIHN0cmVhbSByaW5ncy4NCj4gKyAqICBAdGRfY291bnQ6IE51bWJl ciBvZiBURHMgYXNzb2NpYXRlZCB3aXRoIGVuZHBvaW50Lg0KPiArICogIEBmaXJzdF9wcmltZV9k ZXQ6IEZpcnN0IFBSSU1FIHBhY2tldCBkZXRlY3RlZC4NCj4gKyAqICBAZHJibHNfY291bnQ6IE51 bWJlciBvZiBhbGxvd2VkIGRvb3JiZWxscy4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX3N0cmVh bV9pbmZvIHsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcmluZyAqKnN0cmVhbV9yaW5nczsNCj4gKwl1bnNp Z25lZCBpbnQgbnVtX3N0cmVhbXM7DQo+ICsJc3RydWN0IGNkbnNwX3N0cmVhbV9jdHggKnN0cmVh bV9jdHhfYXJyYXk7DQo+ICsJdW5zaWduZWQgaW50IG51bV9zdHJlYW1fY3R4czsNCj4gKwlkbWFf YWRkcl90IGN0eF9hcnJheV9kbWE7DQo+ICsJc3RydWN0IHJhZGl4X3RyZWVfcm9vdCB0cmJfYWRk cmVzc19tYXA7DQo+ICsJaW50IHRkX2NvdW50Ow0KPiArCXU4IGZpcnN0X3ByaW1lX2RldDsNCj4g KyNkZWZpbmUgU1RSRUFNX0RSQkxfRklGT19ERVBUSCAyDQo+ICsJdTggZHJibHNfY291bnQ7DQo+ ICt9Ow0KPiArDQo+ICsjZGVmaW5lIFNUUkVBTV9MT0dfU1RSRUFNUyA0DQo+ICsjZGVmaW5lIFNU UkVBTV9OVU1fU1RSRUFNUyBCSVQoU1RSRUFNX0xPR19TVFJFQU1TKQ0KPiArDQo+ICsjaWYgU1RS RUFNX0xPR19TVFJFQU1TID4gMTYgJiYgU1RSRUFNX0xPR19TVFJFQU1TIDwgMQ0KPiArI2Vycm9y ICJOb3Qgc3V1cHBvcnRlZCBzdHJlYW0gdmFsdWUiDQo+ICsjZW5kaWYNCj4gKw0KPiArLyoqDQo+ ICsgKiBzdHJ1Y3QgY2Ruc3BfZXAgLSBleHRlbmRlZCBkZXZpY2Ugc2lkZSByZXByZXNlbnRhdGlv biBvZiBVU0IgZW5kcG9pbnQuDQo+ICsgKiBAZW5kcG9pbnQ6IHVzYiBlbmRwb2ludA0KPiArICog QHBlbmRpbmdfcmVxX2xpc3Q6IExpc3Qgb2YgcmVxdWVzdHMgcXVldWluZyBvbiB0cmFuc2ZlciBy aW5nLg0KPiArICogQHBkZXY6IERldmljZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbmRwb2ludC4N Cj4gKyAqIEBudW1iZXI6IEVuZHBvaW50IG51bWJlciAoMSAtIDE1KS4NCj4gKyAqIGlkeDogVGhl IGRldmljZSBjb250ZXh0IGluZGV4IChEQ0kpLg0KPiArICogaW50ZXJ2YWw6IEludGVydmFsIGJl dHdlZW4gcGFja2V0cyB1c2VkIGZvciBJU09DIGVuZHBvaW50Lg0KPiArICogQG5hbWU6IEEgaHVt YW4gcmVhZGFibGUgbmFtZSBlLmcuIGVwMW91dC4NCj4gKyAqIEBkaXJlY3Rpb246IEVuZHBvaW50 IGRpcmVjdGlvbi4NCj4gKyAqIEBidWZmZXJpbmc6IE51bWJlciBvZiBvbi1jaGlwIGJ1ZmZlcnMg cmVsYXRlZCB0byBlbmRwb2ludC4NCj4gKyAqIEBidWZmZXJpbmdfcGVyaW9kOyBOdW1iZXIgb2Yg b24tY2hpcCBidWZmZXJzIHJlbGF0ZWQgdG8gcGVyaW9kaWMgZW5kcG9pbnQuDQo+ICsgKiBAaW5f Y3R4OiBQb2ludGVyIHRvIGlucHV0IGVuZHBvaW50IGNvbnRleHQgc3RydWN0dXJlLg0KPiArICog QG91dF9jdHg6IFBvaW50ZXIgdG8gb3V0cHV0IGVuZHBvaW50IGNvbnRleHQgc3RydWN0dXJlLg0K PiArICogQHJpbmc6IFBvaW50ZXIgdG8gdHJhbnNmZXIgcmluZy4NCj4gKyAqIEBzdHJlYW1faW5m bzogSG9sZCBzdHJlYW0gaW5mb3JtYXRpb24uDQo+ICsgKiBAZXBfc3RhdGU6IEN1cnJlbnQgc3Rh dGUgb2YgZW5kcG9pbnQuDQo+ICsgKiBza2lwOiBTb21ldGltZXMgdGhlIGNvbnRyb2xsZXIgY2Fu IG5vdCBwcm9jZXNzIGlzb2Nocm9ub3VzIGVuZHBvaW50IHJpbmcNCg0KYWRkICJAIg0KDQpQZXRl cg0KPiArICogICAgICAgcXVpY2tseSBlbm91Z2gsIGFuZCBpdCB3aWxsIG1pc3Mgc29tZSBpc29j IHRkcyBvbiB0aGUgcmluZyBhbmQNCj4gKyAqICAgICAgIGdlbmVyYXRlIE1pc3NlZCBTZXJ2aWNl IEVycm9yIEV2ZW50Lg0KPiArICogICAgICAgU2V0IHNraXAgZmxhZyB3aGVuIHJlY2VpdmUgYSBN aXNzZWQgU2VydmljZSBFcnJvciBFdmVudCBhbmQNCj4gKyAqICAgICAgIHByb2Nlc3MgdGhlIG1p c3NlZCB0ZHMgb24gdGhlIGVuZHBvaW50IHJpbmcuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9l cCB7DQo+ICsJc3RydWN0IHVzYl9lcCBlbmRwb2ludDsNCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHBl bmRpbmdfbGlzdDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfZGV2aWNlICpwZGV2Ow0KPiArCXU4IG51bWJl cjsNCj4gKwl1OCBpZHg7DQo+ICsJdTMyIGludGVydmFsOw0KPiArCWNoYXIgbmFtZVsyMF07DQo+ ICsJdTggZGlyZWN0aW9uOw0KPiArCXU4IGJ1ZmZlcmluZzsNCj4gKwl1OCBidWZmZXJpbmdfcGVy aW9kOw0KPiArCXN0cnVjdCBjZG5zcF9lcF9jdHggKmluX2N0eDsNCj4gKwlzdHJ1Y3QgY2Ruc3Bf ZXBfY3R4ICpvdXRfY3R4Ow0KPiArCXN0cnVjdCBjZG5zcF9yaW5nICpyaW5nOw0KPiArCXN0cnVj dCBjZG5zcF9zdHJlYW1faW5mbyBzdHJlYW1faW5mbzsNCj4gKwl1bnNpZ25lZCBpbnQgZXBfc3Rh dGU7DQo+ICsjZGVmaW5lIEVQX0VOQUJMRUQJCUJJVCgwKQ0KPiArI2RlZmluZSBFUF9ESVNfSU5f UlJPR1JFU1MJQklUKDEpDQo+ICsjZGVmaW5lIEVQX0hBTFRFRAkJQklUKDIpDQo+ICsjZGVmaW5l IEVQX1NUT1BQRUQJCUJJVCgzKQ0KPiArI2RlZmluZSBFUF9XRURHRQkJQklUKDQpDQo+ICsjZGVm aW5lIEVQMF9IQUxURURfU1RBVFVTCUJJVCg1KQ0KPiArI2RlZmluZSBFUF9IQVNfU1RSRUFNUwkJ QklUKDYpDQo+ICsNCj4gKwlib29sIHNraXA7DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0 cnVjdCBjZG5zcF9kZXZpY2VfY29udGV4dF9hcnJheQ0KPiArICogQGRldl9jb250ZXh0X3B0cjog QXJyYXkgb2YgNjQtYml0IERNQSBhZGRyZXNzZXMgZm9yIGRldmljZSBjb250ZXh0cy4NCj4gKyAq IEBkbWE6IERNQSBhZGRyZXNzIGZvciBkZXZpY2UgY29udGV4dHMgc3RydWN0dXJlLg0KPiArICov DQo+ICtzdHJ1Y3QgY2Ruc3BfZGV2aWNlX2NvbnRleHRfYXJyYXkgew0KPiArCV9fbGU2NCBkZXZf Y29udGV4dF9wdHJzW0NETlNQX0RFVl9NQVhfU0xPVFMgKyAxXTsNCj4gKwlkbWFfYWRkcl90IGRt YTsNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX3RyYW5zZmVyX2V2ZW50 Lg0KPiArICogQGJ1ZmZlcjogNjQtYml0IGJ1ZmZlciBhZGRyZXNzLCBvciBpbW1lZGlhdGUgZGF0 YS4NCj4gKyAqIEB0cmFuc2Zlcl9sZW46IERhdGEgbGVuZ3RoIHRyYW5zZmVycmVkLg0KPiArICog QGZsYWdzOiBGaWVsZCBpcyBpbnRlcnByZXRlZCBkaWZmZXJlbnRseSBiYXNlZCBvbiB0aGUgdHlw ZSBvZiBUUkIuDQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF90cmFuc2Zlcl9ldmVudCB7DQo+ICsJ X19sZTY0IGJ1ZmZlcjsNCj4gKwlfX2xlMzIgdHJhbnNmZXJfbGVuOw0KPiArCV9fbGUzMiBmbGFn czsNCj4gK307DQo+ICsNCj4gKy8qIEludmFsaWRhdGUgZXZlbnQgYWZ0ZXIgZGlzYWJsaW5nIGVu ZHBvaW50LiAqLw0KPiArI2RlZmluZSBUUkJfRVZFTlRfSU5WQUxJREFURSA4DQo+ICsNCj4gKy8q IFRyYW5zZmVyIGV2ZW50IFRSQiBsZW5ndGggYml0IG1hc2suICovDQo+ICsvKiBiaXRzIDA6MjMg Ki8NCj4gKyNkZWZpbmUgRVZFTlRfVFJCX0xFTihwKQkJCSgocCkgJiBHRU5NQVNLKDIzLCAwKSkN Cj4gKy8qIENvbXBsZXRpb24gQ29kZSAtIG9ubHkgYXBwbGljYWJsZSBmb3Igc29tZSB0eXBlcyBv ZiBUUkJzICovDQo+ICsjZGVmaW5lIENPTVBfQ09ERV9NQVNLCQkJCSgweGZmIDw8IDI0KQ0KPiAr I2RlZmluZSBHRVRfQ09NUF9DT0RFKHApCQkJKCgocCkgJiBDT01QX0NPREVfTUFTSykgPj4gMjQp DQo+ICsjZGVmaW5lIENPTVBfSU5WQUxJRAkJCQkwDQo+ICsjZGVmaW5lIENPTVBfU1VDQ0VTUwkJ CQkxDQo+ICsjZGVmaW5lIENPTVBfREFUQV9CVUZGRVJfRVJST1IJCQkyDQo+ICsjZGVmaW5lIENP TVBfQkFCQkxFX0RFVEVDVEVEX0VSUk9SCQkzDQo+ICsjZGVmaW5lIENPTVBfVFJCX0VSUk9SCQkJ CTUNCj4gKyNkZWZpbmUgQ09NUF9SRVNPVVJDRV9FUlJPUgkJCTcNCj4gKyNkZWZpbmUgQ09NUF9O T19TTE9UU19BVkFJTEFCTEVfRVJST1IJCTkNCj4gKyNkZWZpbmUgQ09NUF9JTlZBTElEX1NUUkVB TV9UWVBFX0VSUk9SCQkxMA0KPiArI2RlZmluZSBDT01QX1NMT1RfTk9UX0VOQUJMRURfRVJST1IJ CTExDQo+ICsjZGVmaW5lIENPTVBfRU5EUE9JTlRfTk9UX0VOQUJMRURfRVJST1IJCTEyDQo+ICsj ZGVmaW5lIENPTVBfU0hPUlRfUEFDS0VUCQkJMTMNCj4gKyNkZWZpbmUgQ09NUF9SSU5HX1VOREVS UlVOCQkJMTQNCj4gKyNkZWZpbmUgQ09NUF9SSU5HX09WRVJSVU4JCQkxNQ0KPiArI2RlZmluZSBD T01QX1ZGX0VWRU5UX1JJTkdfRlVMTF9FUlJPUgkJMTYNCj4gKyNkZWZpbmUgQ09NUF9QQVJBTUVU RVJfRVJST1IJCQkxNw0KPiArI2RlZmluZSBDT01QX0NPTlRFWFRfU1RBVEVfRVJST1IJCTE5DQo+ ICsjZGVmaW5lIENPTVBfRVZFTlRfUklOR19GVUxMX0VSUk9SCQkyMQ0KPiArI2RlZmluZSBDT01Q X0lOQ09NUEFUSUJMRV9ERVZJQ0VfRVJST1IJCTIyDQo+ICsjZGVmaW5lIENPTVBfTUlTU0VEX1NF UlZJQ0VfRVJST1IJCTIzDQo+ICsjZGVmaW5lIENPTVBfQ09NTUFORF9SSU5HX1NUT1BQRUQJCTI0 DQo+ICsjZGVmaW5lIENPTVBfQ09NTUFORF9BQk9SVEVECQkJMjUNCj4gKyNkZWZpbmUgQ09NUF9T VE9QUEVECQkJCTI2DQo+ICsjZGVmaW5lIENPTVBfU1RPUFBFRF9MRU5HVEhfSU5WQUxJRAkJMjcN Cj4gKyNkZWZpbmUgQ09NUF9TVE9QUEVEX1NIT1JUX1BBQ0tFVAkJMjgNCj4gKyNkZWZpbmUgQ09N UF9NQVhfRVhJVF9MQVRFTkNZX1RPT19MQVJHRV9FUlJPUgkyOQ0KPiArI2RlZmluZSBDT01QX0lT T0NIX0JVRkZFUl9PVkVSUlVOCQkzMQ0KPiArI2RlZmluZSBDT01QX0VWRU5UX0xPU1RfRVJST1IJ CQkzMg0KPiArI2RlZmluZSBDT01QX1VOREVGSU5FRF9FUlJPUgkJCTMzDQo+ICsjZGVmaW5lIENP TVBfSU5WQUxJRF9TVFJFQU1fSURfRVJST1IJCTM0DQo+ICsNCj4gKy8qVHJhbnNmZXIgRXZlbnQg TlJEWSBiaXQgZmllbGRzICovDQo+ICsjZGVmaW5lIFRSQl9UT19ERVZfU1RSRUFNKHApCQkJKChw KSAmIEdFTk1BU0soMTYsIDApKQ0KPiArI2RlZmluZSBUUkJfVE9fSE9TVF9TVFJFQU0ocCkJCQko KHApICYgR0VOTUFTSygxNiwgMCkpDQo+ICsjZGVmaW5lIFNUUkVBTV9QUklNRV9BQ0sJCQkweEZG RkUNCj4gKyNkZWZpbmUgU1RSRUFNX1JFSkVDVEVECQkJCTB4RkZGRg0KPiArDQo+ICsvKiogVHJh bnNmZXIgRXZlbnQgYml0IGZpZWxkcyAqKi8NCj4gKyNkZWZpbmUgVFJCX1RPX0VQX0lEKHApCQkJ CSgoKHApICYgR0VOTUFTSygyMCwgMTYpKSA+PiAxNikNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1 Y3QgY2Ruc3BfbGlua190cmINCj4gKyAqIEBzZWdtZW50X3B0cjogNjQtYml0IHNlZ21lbnQgcG9p bnRlci4NCj4gKyAqIEBpbnRyX3RhcmdldDogSW50ZXJydXB0ZXIgdGFyZ2V0Lg0KPiArICogQGNv bnRyb2w6IEZsYWdzLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfbGlua190cmIgew0KPiArCV9f bGU2NCBzZWdtZW50X3B0cjsNCj4gKwlfX2xlMzIgaW50cl90YXJnZXQ7DQo+ICsJX19sZTMyIGNv bnRyb2w7DQo+ICt9Ow0KPiArDQo+ICsvKiBjb250cm9sIGJpdGZpZWxkcyAqLw0KPiArI2RlZmlu ZSBMSU5LX1RPR0dMRQlCSVQoMSkNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3BfZXZl bnRfY21kIC0gQ29tbWFuZCBjb21wbGV0aW9uIGV2ZW50IFRSQi4NCj4gKyAqIGNtZF90cmI6IFBv aW50ZXIgdG8gY29tbWFuZCBUUkIsIG9yIHRoZSB2YWx1ZSBwYXNzZWQgYnkgdGhlIGV2ZW50IGRh dGEgdHJiDQo+ICsgKiBzdGF0dXM6IENvbW1hbmQgY29tcGxldGlvbiBwYXJhbWV0ZXJzIGFuZCBl cnJvciBjb2RlLg0KPiArICogZmxhZ3M6IEZsYWdzLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3Bf ZXZlbnRfY21kIHsNCj4gKwlfX2xlNjQgY21kX3RyYjsNCj4gKwlfX2xlMzIgc3RhdHVzOw0KPiAr CV9fbGUzMiBmbGFnczsNCj4gK307DQo+ICsNCj4gKy8qIGZsYWdzIGJpdG1hc2tzICovDQo+ICsN Cj4gKy8qIEFkZHJlc3MgZGV2aWNlIC0gZGlzYWJsZSBTZXRBZGRyZXNzLiAqLw0KPiArI2RlZmlu ZSBUUkJfQlNSCQlCSVQoOSkNCj4gKw0KPiArLyogQ29uZmlndXJlIEVuZHBvaW50IC0gRGVjb25m aWd1cmUuICovDQo+ICsjZGVmaW5lIFRSQl9EQwkJQklUKDkpDQo+ICsNCj4gKy8qIEZvcmNlIEhl YWRlciAqLw0KPiArI2RlZmluZSBUUkJfRkhfVE9fUEFDS0VUX1RZUEUocCkJKChwKSAmIEdFTk1B U0soNCwgMCkpDQo+ICsjZGVmaW5lIFRSQl9GSF9UUl9QQUNLRVQJCTB4NA0KPiArI2RlZmluZSBU UkJfRkhfVE9fREVWSUNFX0FERFJFU1MocCkJKCgocCkgPDwgMjUpICYgR0VOTUFTSygzMSwgMjUp KQ0KPiArI2RlZmluZSBUUkJfRkhfVFJfUEFDS0VUX0RFVl9OT1QJMHg2DQo+ICsjZGVmaW5lIFRS Ql9GSF9UT19OT1RfVFlQRShwKQkJKCgocCkgPDwgNCkgJiBHRU5NQVNLKDcsIDQpKQ0KPiArI2Rl ZmluZSBUUkJfRkhfVFJfUEFDS0VUX0ZVTkNUSU9OX1dBS0UJMHgxDQo+ICsjZGVmaW5lIFRSQl9G SF9UT19JTlRFUkZBQ0UocCkJCSgoKHApIDw8IDgpICYgR0VOTUFTSygxNSwgOCkpDQo+ICsNCj4g K2VudW0gY2Ruc3Bfc2V0dXBfZGV2IHsNCj4gKwlTRVRVUF9DT05URVhUX09OTFksDQo+ICsJU0VU VVBfQ09OVEVYVF9BRERSRVNTLA0KPiArfTsNCj4gKw0KPiArLyogYml0cyAyNDozMSBhcmUgdGhl IHNsb3QgSUQuICovDQo+ICsjZGVmaW5lIFRSQl9UT19TTE9UX0lEKHApCQkoKChwKSAmIEdFTk1B U0soMzEsIDI0KSkgPj4gMjQpDQo+ICsjZGVmaW5lIFNMT1RfSURfRk9SX1RSQihwKQkJKCgocCkg PDwgMjQpICYgR0VOTUFTSygzMSwgMjQpKQ0KPiArDQo+ICsvKiBTdG9wIEVuZHBvaW50IFRSQiAt IGVwX2luZGV4IHRvIGVuZHBvaW50IElEIGZvciB0aGlzIFRSQi4gKi8NCj4gKyNkZWZpbmUgVFJC X1RPX0VQX0lOREVYKHApCQkoKChwKSA+PiAxNikgJiAweDFmKQ0KPiArDQo+ICsjZGVmaW5lIEVQ X0lEX0ZPUl9UUkIocCkJCSgoKChwKSArIDEpIDw8IDE2KSAmIEdFTk1BU0soMjAsIDE2KSkNCj4g Kw0KPiArI2RlZmluZSBTVVNQRU5EX1BPUlRfRk9SX1RSQihwKQkJKCgocCkgJiAxKSA8PCAyMykN Cj4gKyNkZWZpbmUgVFJCX1RPX1NVU1BFTkRfUE9SVChwKQkJKCgocCkgPj4gMjMpICYgMHgxKQ0K PiArI2RlZmluZSBMQVNUX0VQX0lOREVYCQkJMzANCj4gKw0KPiArLyogU2V0IFRSIERlcXVldWUg UG9pbnRlciBjb21tYW5kIFRSQiBmaWVsZHMuICovDQo+ICsjZGVmaW5lIFRSQl9UT19TVFJFQU1f SUQocCkJCSgoKChwKSAmIEdFTk1BU0soMzEsIDE2KSkgPj4gMTYpKQ0KPiArI2RlZmluZSBTVFJF QU1fSURfRk9SX1RSQihwKQkJKCgoKHApKSA8PCAxNikgJiBHRU5NQVNLKDMxLCAxNikpDQo+ICsj ZGVmaW5lIFNDVF9GT1JfVFJCKHApCQkJKCgocCkgPDwgMSkgJiAweDcpDQo+ICsNCj4gKy8qIExp bmsgVFJCIHNwZWNpZmljIGZpZWxkcy4gKi8NCj4gKyNkZWZpbmUgVFJCX1RDCQkJCUJJVCgxKQ0K PiArDQo+ICsvKiBQb3J0IFN0YXR1cyBDaGFuZ2UgRXZlbnQgVFJCIGZpZWxkcy4gKi8NCj4gKy8q IFBvcnQgSUQgLSBiaXRzIDMxOjI0LiAqLw0KPiArI2RlZmluZSBHRVRfUE9SVF9JRChwKQkJCSgo KHApICYgR0VOTUFTSygzMSwgMjQpKSA+PiAyNCkNCj4gKyNkZWZpbmUgU0VUX1BPUlRfSUQocCkJ CQkoKChwKSA8PCAyNCkgJiBHRU5NQVNLKDMxLCAyNCkpDQo+ICsjZGVmaW5lIEVWRU5UX0RBVEEJ CQlCSVQoMikNCj4gKw0KPiArLyogTm9ybWFsIFRSQiBmaWVsZHMuICovDQo+ICsvKiB0cmFuc2Zl cl9sZW4gYml0bWFza3MgLSBiaXRzIDA6MTYuICovDQo+ICsjZGVmaW5lIFRSQl9MRU4ocCkJCQko KHApICYgR0VOTUFTSygxNiwgMCkpDQo+ICsvKiBURCBTaXplLCBwYWNrZXRzIHJlbWFpbmluZyBp biB0aGlzIFRELCBiaXRzIDIxOjE3ICg1IGJpdHMsIHNvIG1heCAzMSkuICovDQo+ICsjZGVmaW5l IFRSQl9URF9TSVpFKHApCQkJKG1pbigocCksICh1MzIpMzEpIDw8IDE3KQ0KPiArI2RlZmluZSBH RVRfVERfU0laRShwKQkJCSgoKHApICYgR0VOTUFTSygyMSwgMTcpKSA+PiAxNykNCj4gKy8qDQo+ ICsgKiBDb250cm9sbGVyIHVzZXMgdGhlIFREX1NJWkUgZmllbGQgZm9yIFRCQyBpZiBFeHRlbmRl ZCBUQkMNCj4gKyAqIGlzIGVuYWJsZWQgKEVURSkuDQo+ICsgKi8NCj4gKyNkZWZpbmUgVFJCX1RE X1NJWkVfVEJDKHApCQkobWluKChwKSwgKHUzMikzMSkgPDwgMTcpDQo+ICsvKiBJbnRlcnJ1cHRl ciBUYXJnZXQgLSB3aGljaCBNU0ktWCB2ZWN0b3IgdG8gdGFyZ2V0IHRoZSBjb21wbGV0aW9uIGV2 ZW50IGF0LiAqLw0KPiArI2RlZmluZSBUUkJfSU5UUl9UQVJHRVQocCkJCSgoKHApIDw8IDIyKSAm IEdFTk1BU0soMzEsIDIyKSkNCj4gKyNkZWZpbmUgR0VUX0lOVFJfVEFSR0VUKHApCQkoKChwKSAm IEdFTk1BU0soMzEsIDIyKSkgPj4gMjIpDQo+ICsvKg0KPiArICogVG90YWwgYnVyc3QgY291bnQg ZmllbGQsIFJzdmR6IG9uIGNvbnRyb2xsZXIgd2l0aCBFeHRlbmRlZCBUQkMNCj4gKyAqIGVuYWJs ZWQgKEVURSkuDQo+ICsgKi8NCj4gKyNkZWZpbmUgVFJCX1RCQyhwKQkJCSgoKHApICYgMHgzKSA8 PCA3KQ0KPiArI2RlZmluZSBUUkJfVExCUEMocCkJCQkoKChwKSAmIDB4ZikgPDwgMTYpDQo+ICsN Cj4gKy8qIEN5Y2xlIGJpdCAtIGluZGljYXRlcyBUUkIgb3duZXJzaGlwIGJ5IGRyaXZlciBvciBk cml2ZXIuKi8NCj4gKyNkZWZpbmUgVFJCX0NZQ0xFCQkJQklUKDApDQo+ICsvKg0KPiArICogRm9y Y2UgbmV4dCBldmVudCBkYXRhIFRSQiB0byBiZSBldmFsdWF0ZWQgYmVmb3JlIHRhc2sgc3dpdGNo Lg0KPiArICogVXNlZCB0byBwYXNzIE9TIGRhdGEgYmFjayBhZnRlciBhIFREIGNvbXBsZXRlcy4N Cj4gKyAqLw0KPiArI2RlZmluZSBUUkJfRU5UCQkJCUJJVCgxKQ0KPiArLyogSW50ZXJydXB0IG9u IHNob3J0IHBhY2tldC4gKi8NCj4gKyNkZWZpbmUgVFJCX0lTUAkJCQlCSVQoMikNCj4gKy8qIFNl dCBQQ0llIG5vIHNub29wIGF0dHJpYnV0ZS4gKi8NCj4gKyNkZWZpbmUgVFJCX05PX1NOT09QCQkJ QklUKDMpDQo+ICsvKiBDaGFpbiBtdWx0aXBsZSBUUkJzIGludG8gYSBURC4gKi8NCj4gKyNkZWZp bmUgVFJCX0NIQUlOCQkJQklUKDQpDQo+ICsvKiBJbnRlcnJ1cHQgb24gY29tcGxldGlvbi4gKi8N Cj4gKyNkZWZpbmUgVFJCX0lPQwkJCQlCSVQoNSkNCj4gKy8qIFRoZSBidWZmZXIgcG9pbnRlciBj b250YWlucyBpbW1lZGlhdGUgZGF0YS4gKi8NCj4gKyNkZWZpbmUgVFJCX0lEVAkJCQlCSVQoNikN Cj4gKy8qIDAgLSBOUkRZIGR1cmluZyBkYXRhIHN0YWdlLCAxIC0gTlJEWSBkdXJpbmcgc3RhdHVz IHN0YWdlIChvbmx5IGNvbnRyb2wpLiAqLw0KPiArI2RlZmluZSBUUkJfU1RBVAkJCUJJVCg3KQ0K PiArLyogQmxvY2sgRXZlbnQgSW50ZXJydXB0LiAqLw0KPiArI2RlZmluZSBUUkJfQkVJCQkJCUJJ VCg5KQ0KPiArDQo+ICsvKiBDb250cm9sIHRyYW5zZmVyIFRSQiBzcGVjaWZpYyBmaWVsZHMuICov DQo+ICsjZGVmaW5lIFRSQl9ESVJfSU4JCQlCSVQoMTYpDQo+ICsNCj4gKy8qIFRSQiBiaXQgbWFz ayBpbiBEYXRhIFN0YWdlIFRSQiAqLw0KPiArI2RlZmluZSBUUkJfU0VUVVBJRF9CSVRNQVNLCQlH RU5NQVNLKDksIDgpDQo+ICsjZGVmaW5lIFRSQl9TRVRVUElEKHApCQkJKChwKSA8PCA4KQ0KPiAr I2RlZmluZSBUUkJfU0VUVVBJRF9UT19UWVBFKHApCQkoKChwKSAmIFRSQl9TRVRVUElEX0JJVE1B U0spID4+IDgpDQo+ICsNCj4gKyNkZWZpbmUgVFJCX1NFVFVQX1NQRUVESURfVVNCMwkJMHgxDQo+ ICsjZGVmaW5lIFRSQl9TRVRVUF9TUEVFRElEX1VTQjIJCTB4MA0KPiArI2RlZmluZSBUUkJfU0VU VVBfU1BFRURJRChwKQkJKChwKSAmICgxIDw8IDcpKQ0KPiArDQo+ICsjZGVmaW5lIFRSQl9TRVRV UFNUQVRfQUNLCQkweDENCj4gKyNkZWZpbmUgVFJCX1NFVFVQU1RBVF9TVEFMTAkJMHgwDQo+ICsj ZGVmaW5lIFRSQl9TRVRVUFNUQVQocCkJCSgocCkgPDwgNikNCj4gKw0KPiArLyogSXNvY2hyb25v dXMgVFJCIHNwZWNpZmljIGZpZWxkcyAqLw0KPiArI2RlZmluZSBUUkJfU0lBCQkJCUJJVCgzMSkN Cj4gKyNkZWZpbmUgVFJCX0ZSQU1FX0lEKHApCQkJKCgocCkgPDwgMjApICYgR0VOTUFTSygzMCwg MjApKQ0KPiArDQo+ICtzdHJ1Y3QgY2Ruc3BfZ2VuZXJpY190cmIgew0KPiArCV9fbGUzMiBmaWVs ZFs0XTsNCj4gK307DQo+ICsNCj4gK3VuaW9uIGNkbnNwX3RyYiB7DQo+ICsJc3RydWN0IGNkbnNw X2xpbmtfdHJiIGxpbms7DQo+ICsJc3RydWN0IGNkbnNwX3RyYW5zZmVyX2V2ZW50IHRyYW5zX2V2 ZW50Ow0KPiArCXN0cnVjdCBjZG5zcF9ldmVudF9jbWQgZXZlbnRfY21kOw0KPiArCXN0cnVjdCBj ZG5zcF9nZW5lcmljX3RyYiBnZW5lcmljOw0KPiArfTsNCj4gKw0KPiArLyogVFJCIGJpdCBtYXNr LiAqLw0KPiArI2RlZmluZSBUUkJfVFlQRV9CSVRNQVNLCUdFTk1BU0soMTUsIDEwKQ0KPiArI2Rl ZmluZSBUUkJfVFlQRShwKQkJKChwKSA8PCAxMCkNCj4gKyNkZWZpbmUgVFJCX0ZJRUxEX1RPX1RZ UEUocCkJKCgocCkgJiBUUkJfVFlQRV9CSVRNQVNLKSA+PiAxMCkNCj4gKw0KPiArLyogVFJCIHR5 cGUgSURzLiAqLw0KPiArLyogYnVsaywgaW50ZXJydXB0LCBpc29jIHNjYXR0ZXIvZ2F0aGVyLCBh bmQgY29udHJvbCBkYXRhIHN0YWdlLiAqLw0KPiArI2RlZmluZSBUUkJfTk9STUFMCQkxDQo+ICsv KiBTZXR1cCBTdGFnZSBmb3IgY29udHJvbCB0cmFuc2ZlcnMuICovDQo+ICsjZGVmaW5lIFRSQl9T RVRVUAkJMg0KPiArLyogRGF0YSBTdGFnZSBmb3IgY29udHJvbCB0cmFuc2ZlcnMuICovDQo+ICsj ZGVmaW5lIFRSQl9EQVRBCQkzDQo+ICsvKiBTdGF0dXMgU3RhZ2UgZm9yIGNvbnRyb2wgdHJhbnNm ZXJzLiAqLw0KPiArI2RlZmluZSBUUkJfU1RBVFVTCQk0DQo+ICsvKiBJU09DIHRyYW5zZmVycy4g Ki8NCj4gKyNkZWZpbmUgVFJCX0lTT0MJCTUNCj4gKy8qIFRSQiBmb3IgbGlua2luZyByaW5nIHNl Z21lbnRzLiAqLw0KPiArI2RlZmluZSBUUkJfTElOSwkJNg0KPiArI2RlZmluZSBUUkJfRVZFTlRf REFUQQkJNw0KPiArLyogVHJhbnNmZXIgUmluZyBOby1vcCAobm90IGZvciB0aGUgY29tbWFuZCBy aW5nKS4gKi8NCj4gKyNkZWZpbmUgVFJCX1RSX05PT1AJCTgNCj4gKw0KPiArLyogQ29tbWFuZCBU UkJzICovDQo+ICsvKiBFbmFibGUgU2xvdCBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBUUkJfRU5B QkxFX1NMT1QJCTkNCj4gKy8qIERpc2FibGUgU2xvdCBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBU UkJfRElTQUJMRV9TTE9UCTEwDQo+ICsvKiBBZGRyZXNzIERldmljZSBDb21tYW5kLiAqLw0KPiAr I2RlZmluZSBUUkJfQUREUl9ERVYJCTExDQo+ICsvKiBDb25maWd1cmUgRW5kcG9pbnQgQ29tbWFu ZC4gKi8NCj4gKyNkZWZpbmUgVFJCX0NPTkZJR19FUAkJMTINCj4gKy8qIEV2YWx1YXRlIENvbnRl eHQgQ29tbWFuZC4gKi8NCj4gKyNkZWZpbmUgVFJCX0VWQUxfQ09OVEVYVAkxMw0KPiArLyogUmVz ZXQgRW5kcG9pbnQgQ29tbWFuZC4gKi8NCj4gKyNkZWZpbmUgVFJCX1JFU0VUX0VQCQkxNA0KPiAr LyogU3RvcCBUcmFuc2ZlciBSaW5nIENvbW1hbmQuICovDQo+ICsjZGVmaW5lIFRSQl9TVE9QX1JJ TkcJCTE1DQo+ICsvKiBTZXQgVHJhbnNmZXIgUmluZyBEZXF1ZXVlIFBvaW50ZXIgQ29tbWFuZC4g Ki8NCj4gKyNkZWZpbmUgVFJCX1NFVF9ERVEJCTE2DQo+ICsvKiBSZXNldCBEZXZpY2UgQ29tbWFu ZC4gKi8NCj4gKyNkZWZpbmUgVFJCX1JFU0VUX0RFVgkJMTcNCj4gKy8qIEZvcmNlIEV2ZW50IENv bW1hbmQgKG9wdCkuICovDQo+ICsjZGVmaW5lIFRSQl9GT1JDRV9FVkVOVAkJMTgNCj4gKy8qIEZv cmNlIEhlYWRlciBDb21tYW5kIC0gZ2VuZXJhdGUgYSB0cmFuc2FjdGlvbiBvciBsaW5rIG1hbmFn ZW1lbnQgcGFja2V0LiAqLw0KPiArI2RlZmluZSBUUkJfRk9SQ0VfSEVBREVSCTIyDQo+ICsvKiBO by1vcCBDb21tYW5kIC0gbm90IGZvciB0cmFuc2ZlciByaW5ncy4gKi8NCj4gKyNkZWZpbmUgVFJC X0NNRF9OT09QCQkyMw0KPiArLyogVFJCIElEcyAyNC0zMSByZXNlcnZlZC4gKi8NCj4gKw0KPiAr LyogRXZlbnQgVFJCUy4gKi8NCj4gKy8qIFRyYW5zZmVyIEV2ZW50LiAqLw0KPiArI2RlZmluZSBU UkJfVFJBTlNGRVIJCTMyDQo+ICsvKiBDb21tYW5kIENvbXBsZXRpb24gRXZlbnQuICovDQo+ICsj ZGVmaW5lIFRSQl9DT01QTEVUSU9OCQkzMw0KPiArLyogUG9ydCBTdGF0dXMgQ2hhbmdlIEV2ZW50 LiAqLw0KPiArI2RlZmluZSBUUkJfUE9SVF9TVEFUVVMJCTM0DQo+ICsvKiBEZXZpY2UgQ29udHJv bGxlciBFdmVudC4gKi8NCj4gKyNkZWZpbmUgVFJCX0hDX0VWRU5UCQkzNw0KPiArLyogTUZJTkRF WCBXcmFwIEV2ZW50IC0gbWljcm9mcmFtZSBjb3VudGVyIHdyYXBwZWQuICovDQo+ICsjZGVmaW5l IFRSQl9NRklOREVYX1dSQVAJMzkNCj4gKy8qIFRSQiBJRHMgNDAtNDcgcmVzZXJ2ZWQuICovDQo+ ICsvKiBFbmRwb2ludCBOb3QgUmVhZHkgRXZlbnQuICovDQo+ICsjZGVmaW5lIFRSQl9FTkRQT0lO VF9OUkRZCTQ4DQo+ICsvKiBUUkIgSURzIDQ5LTUzIHJlc2VydmVkLiAqLw0KPiArLyogSGFsdCBF bmRwb2ludCBDb21tYW5kLiAqLw0KPiArI2RlZmluZSBUUkJfSEFMVF9FTkRQT0lOVAk1NA0KPiAr LyogRG9vcmJlbGwgT3ZlcmZsb3cgRXZlbnQuICovDQo+ICsjZGVmaW5lIFRSQl9EUkJfT1ZFUkZM T1cJNTcNCj4gKy8qIEZsdXNoIEVuZHBvaW50IENvbW1hbmQuICovDQo+ICsjZGVmaW5lIFRSQl9G TFVTSF9FTkRQT0lOVAk1OA0KPiArDQo+ICsjZGVmaW5lIFRSQl9UWVBFX0xJTksoeCkJKCgoeCkg JiBUUkJfVFlQRV9CSVRNQVNLKSA9PSBUUkJfVFlQRShUUkJfTElOSykpDQo+ICsjZGVmaW5lIFRS Ql9UWVBFX0xJTktfTEUzMih4KQkoKCh4KSAmIGNwdV90b19sZTMyKFRSQl9UWVBFX0JJVE1BU0sp KSA9PSBcDQo+ICsJCQkJCWNwdV90b19sZTMyKFRSQl9UWVBFKFRSQl9MSU5LKSkpDQo+ICsjZGVm aW5lIFRSQl9UWVBFX05PT1BfTEUzMih4KQkoKCh4KSAmIGNwdV90b19sZTMyKFRSQl9UWVBFX0JJ VE1BU0spKSA9PSBcDQo+ICsJCQkJCWNwdV90b19sZTMyKFRSQl9UWVBFKFRSQl9UUl9OT09QKSkp DQo+ICsNCj4gKy8qDQo+ICsgKiBUUkJTX1BFUl9TRUdNRU5UIG11c3QgYmUgYSBtdWx0aXBsZSBv ZiA0Lg0KPiArICogVGhlIGNvbW1hbmQgcmluZyBpcyA2NC1ieXRlIGFsaWduZWQsIHNvIGl0IG11 c3QgYWxzbyBiZSBncmVhdGVyIHRoYW4gMTYuDQo+ICsgKi8NCj4gKyNkZWZpbmUgVFJCU19QRVJf U0VHTUVOVAkJMjU2DQo+ICsjZGVmaW5lIFRSQlNfUEVSX0VWRU5UX1NFR01FTlQJCTI1Ng0KPiAr I2RlZmluZSBUUkJTX1BFUl9FVl9ERVFfVVBEQVRFCQkxMDANCj4gKyNkZWZpbmUgVFJCX1NFR01F TlRfU0laRQkJKFRSQlNfUEVSX1NFR01FTlQgKiAxNikNCj4gKyNkZWZpbmUgVFJCX1NFR01FTlRf U0hJRlQJCShpbG9nMihUUkJfU0VHTUVOVF9TSVpFKSkNCj4gKy8qIFRSQiBidWZmZXIgcG9pbnRl cnMgY2FuJ3QgY3Jvc3MgNjRLQiBib3VuZGFyaWVzLiAqLw0KPiArI2RlZmluZSBUUkJfTUFYX0JV RkZfU0hJRlQJCTE2DQo+ICsjZGVmaW5lIFRSQl9NQVhfQlVGRl9TSVpFCQlCSVQoVFJCX01BWF9C VUZGX1NISUZUKQ0KPiArLyogSG93IG11Y2ggZGF0YSBpcyBsZWZ0IGJlZm9yZSB0aGUgNjRLQiBi b3VuZGFyeT8gKi8NCj4gKyNkZWZpbmUgVFJCX0JVRkZfTEVOX1VQX1RPX0JPVU5EQVJZKGFkZHIp IChUUkJfTUFYX0JVRkZfU0laRSAtIFwNCj4gKwkJCQkJKChhZGRyKSAmIChUUkJfTUFYX0JVRkZf U0laRSAtIDEpKSkNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgY2Ruc3Bfc2VnbWVudCAtIHNl Z21lbnQgcmVsYXRlZCBkYXRhLg0KPiArICogQHRyYnM6IEFycmF5IG9mIFRyYW5zZmVyIFJlcXVl c3QgQmxvY2tzLg0KPiArICogQG5leHQ6IFBvaW50ZXIgdG8gdGhlIG5leHQgc2VnbWVudC4NCj4g KyAqIEBkbWE6IERNQSBhZGRyZXNzIG9mIGN1cnJlbnQgc2VnbWVudC4NCj4gKyAqIEBib3VuY2Vf ZG1hOiBCb3VuY2UgIGJ1ZmZlciBETUEgYWRkcmVzcyAuDQo+ICsgKiBAYm91bmNlX2J1ZjogQm91 bmNlIGJ1ZmZlciB2aXJ0dWFsIGFkZHJlc3MuDQo+ICsgKiBib3VuY2Vfb2ZmczogQm91bmNlIGJ1 ZmZlciBvZmZzZXQuDQo+ICsgKiBib3VuY2VfbGVuOiBCb3VuY2UgYnVmZmVyIGxlbmd0aC4NCj4g KyAqLw0KPiArc3RydWN0IGNkbnNwX3NlZ21lbnQgew0KPiArCXVuaW9uIGNkbnNwX3RyYiAqdHJi czsNCj4gKwlzdHJ1Y3QgY2Ruc3Bfc2VnbWVudCAqbmV4dDsNCj4gKwlkbWFfYWRkcl90IGRtYTsN Cj4gKwkvKiBNYXggcGFja2V0IHNpemVkIGJvdW5jZSBidWZmZXIgZm9yIHRkLWZyYWdtYW50IGFs aWdubWVudCAqLw0KPiArCWRtYV9hZGRyX3QgYm91bmNlX2RtYTsNCj4gKwl2b2lkICpib3VuY2Vf YnVmOw0KPiArCXVuc2lnbmVkIGludCBib3VuY2Vfb2ZmczsNCj4gKwl1bnNpZ25lZCBpbnQgYm91 bmNlX2xlbjsNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX3RkIC0gVHJh bnNmZXIgRGVzY3JpcHRvciBvYmplY3QuDQo+ICsgKiBAdGRfbGlzdDogVXNlZCBmb3IgYmluZGlu ZyBURCB3aXRoIGVwX3JpbmctPnRkX2xpc3QuDQo+ICsgKiBAcHJlcTogUmVxdWVzdCBhc3NvY2lh dGVkIHdpdGggdGhpcyBURA0KPiArICogQHN0YXJ0X3NlZzogU2VnbWVudCBjb250YWluaW5nIHRo ZSBmaXJzdF90cmIgaW4gVEQuDQo+ICsgKiBAZmlyc3RfdHJiOiBGaXJzdCBUUkIgZm9yIHRoaXMg VEQuDQo+ICsgKiBAbGFzdF90cmI6IExhc3QgVFJCIHJlbGF0ZWQgd2l0aCBURC4NCj4gKyAqIEBi b3VuY2Vfc2VnOiBCb3VuY2Ugc2VnbWVudCBmb3IgdGhpcyBURC4NCj4gKyAqIEByZXF1ZXN0X2xl bmd0aF9zZXQ6IGFjdHVhbF9sZW5ndGggb2YgdGhlIHJlcXVlc3QgaGFzIGFscmVhZHkgYmVlbiBz ZXQuDQo+ICsgKiBAZHJibCAtIFREIGhhcyBiZWVuIGFkZGVkIHRvIEhXIHNjaGVkdWxlciAtIG9u bHkgZm9yIHN0cmVhbSBjYXBhYmxlDQo+ICsgKiAgICAgICAgIGVuZHBvaW50cy4NCj4gKyAqLw0K PiArc3RydWN0IGNkbnNwX3RkIHsNCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHRkX2xpc3Q7DQo+ICsJ c3RydWN0IGNkbnNwX3JlcXVlc3QgKnByZXE7DQo+ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKnN0 YXJ0X3NlZzsNCj4gKwl1bmlvbiBjZG5zcF90cmIgKmZpcnN0X3RyYjsNCj4gKwl1bmlvbiBjZG5z cF90cmIgKmxhc3RfdHJiOw0KPiArCXN0cnVjdCBjZG5zcF9zZWdtZW50ICpib3VuY2Vfc2VnOw0K PiArCWJvb2wgcmVxdWVzdF9sZW5ndGhfc2V0Ow0KPiArCWJvb2wgZHJibDsNCj4gK307DQo+ICsN Cj4gKy8qKg0KPiArICogc3RydWN0IGNkbnNwX2RlcXVldWVfc3RhdGUgLSBOZXcgZGVxdWV1ZSBw b2ludGVyIGZvciBUcmFuc2ZlciBSaW5nLg0KPiArICogQG5ld19kZXFfc2VnOiBOZXcgZGVxdWV1 ZSBzZWdtZW50Lg0KPiArICogQG5ld19kZXFfcHRyOiBOZXcgZGVxdWV1ZSBwb2ludGVyLg0KPiAr ICogQG5ld19jeWNsZV9zdGF0ZTogTmV3IGN5Y2xlIHN0YXRlLg0KPiArICogQHN0cmVhbV9pZDog c3RyZWFtIGlkIGZvciB3aGljaCBuZXcgZGVxdWV1ZSBwb2ludGVyIGhhcyBiZWVuIHNlbGVjdGVk Lg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfZGVxdWV1ZV9zdGF0ZSB7DQo+ICsJc3RydWN0IGNk bnNwX3NlZ21lbnQgKm5ld19kZXFfc2VnOw0KPiArCXVuaW9uIGNkbnNwX3RyYiAqbmV3X2RlcV9w dHI7DQo+ICsJaW50IG5ld19jeWNsZV9zdGF0ZTsNCj4gKwl1bnNpZ25lZCBpbnQgc3RyZWFtX2lk Ow0KPiArfTsNCj4gKw0KPiArZW51bSBjZG5zcF9yaW5nX3R5cGUgew0KPiArCVRZUEVfQ1RSTCA9 IDAsDQo+ICsJVFlQRV9JU09DLA0KPiArCVRZUEVfQlVMSywNCj4gKwlUWVBFX0lOVFIsDQo+ICsJ VFlQRV9TVFJFQU0sDQo+ICsJVFlQRV9DT01NQU5ELA0KPiArCVRZUEVfRVZFTlQsDQo+ICt9Ow0K PiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9yaW5nIC0gaW5mb3JtYXRpb24gZGVzY3Jp YmluZyB0cmFuc2ZlciwgY29tbWFuZCBvciBldmVudCByaW5nLg0KPiArICogQGZpcnN0X3NlZzog Rmlyc3Qgc2VnbWVudCBvbiB0cmFuc2ZlciByaW5nLg0KPiArICogQGxhc3Rfc2VnOiBMYXN0IHNl Z21lbnQgb24gdHJhbnNmZXIgcmluZy4NCj4gKyAqIEBlbnF1ZXVlOiBTVyBlbnF1ZXVlIHBvaW50 ZXIgYWRkcmVzcy4NCj4gKyAqIEBlbnFfc2VnOiBTVyBlbnF1ZXVlIHNlZ21lbnQgYWRkcmVzcy4N Cj4gKyAqIEBkZXF1ZXVlOiBTVyBkZXF1ZXVlIHBvaW50ZXIgYWRkcmVzcy4NCj4gKyAqIEBkZXFf c2VnOiBTVyBkZXF1ZXVlIHNlZ21lbnQgYWRkcmVzcy4NCj4gKyAqIEB0ZF9saXN0OiB0cmFuc2Zl ciBkZXNjcmlwdG9yIGxpc3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmluZy4NCj4gKyAqIEBjeWNs ZV9zdGF0ZTogQ3VycmVudCBjeWNsZSBiaXQuIFdyaXRlIHRoZSBjeWNsZSBzdGF0ZSBpbnRvIHRo ZSBUUkIgY3ljbGUNCj4gKyAqICAgICAgICAgICAgICAgZmllbGQgdG8gZ2l2ZSBvd25lcnNoaXAg b2YgdGhlIFRSQiB0byB0aGUgZGV2aWNlIGNvbnRyb2xsZXINCj4gKyAqICAgICAgICAgICAgICAg KGlmIHdlIGFyZSB0aGUgcHJvZHVjZXIpIG9yIHRvIGNoZWNrIGlmIHdlIG93biB0aGUgVFJCDQo+ ICsgKiAgICAgICAgICAgICAgIChpZiB3ZSBhcmUgdGhlIGNvbnN1bWVyKS4NCj4gKyAqIEBzdHJl YW1faWQ6IFN0cmVhbSBpZA0KPiArICogQHN0cmVhbV9hY3RpdmU6IFN0cmVhbSBpcyBhY3RpdmUg LSBQUklNRSBwYWNrZXQgaGFzIGJlZW4gZGV0ZWN0ZWQuDQo+ICsgKiBAc3RyZWFtX3JlamVjdGVk OiBUaGlzIHJpbmcgaGFzIGJlZW4gcmVqZWN0ZWQgYnkgaG9zdC4NCj4gKyAqIEBudW1fdGRzOiBO dW1iZXIgb2YgVERzIGFzc29jaWF0ZWQgd2l0aCByaW5nLg0KPiArICogQG51bV9zZWdzOiBOdW1i ZXIgb2Ygc2VnbWVudHMuDQo+ICsgKiBAbnVtX3RyYnNfZnJlZTogTnVtYmVyIG9mIGZyZWUgVFJC cyBvbiB0aGUgcmluZy4NCj4gKyAqIEBib3VuY2VfYnVmX2xlbjogTGVuZ3RoIG9mIGJvdW5jZSBi dWZmZXIuDQo+ICsgKiBAdHlwZTogUmluZyB0eXBlIC0gZXZlbnQsIHRyYW5zZmVyLCBvciBjb21t YW5kIHJpbmcuDQo+ICsgKiBAbGFzdF90ZF93YXNfc2hvcnQgLSBURCBpcyBzaG9ydCBURC4NCj4g KyAqIEB0cmJfYWRkcmVzc19tYXA6IEZvciBtYXBwaW5nIHBoeXNpY2FsIFRSQiBhZGRyZXNzZXMg dG8gc2VnbWVudHMgaW4NCj4gKyAqICAgICAgICAgICAgICAgICAgIHN0cmVhbSByaW5ncy4NCj4g KyAqLw0KPiArc3RydWN0IGNkbnNwX3Jpbmcgew0KPiArCXN0cnVjdCBjZG5zcF9zZWdtZW50ICpm aXJzdF9zZWc7DQo+ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKmxhc3Rfc2VnOw0KPiArCXVuaW9u IGNkbnNwX3RyYgkgKmVucXVldWU7DQo+ICsJc3RydWN0IGNkbnNwX3NlZ21lbnQgKmVucV9zZWc7 DQo+ICsJdW5pb24gY2Ruc3BfdHJiCSAqZGVxdWV1ZTsNCj4gKwlzdHJ1Y3QgY2Ruc3Bfc2VnbWVu dCAqZGVxX3NlZzsNCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHRkX2xpc3Q7DQo+ICsJdTMyIGN5Y2xl X3N0YXRlOw0KPiArCXVuc2lnbmVkIGludCBzdHJlYW1faWQ7DQo+ICsJdW5zaWduZWQgaW50IHN0 cmVhbV9hY3RpdmU7DQo+ICsJdW5zaWduZWQgaW50IHN0cmVhbV9yZWplY3RlZDsNCj4gKwlpbnQg bnVtX3RkczsNCj4gKwl1bnNpZ25lZCBpbnQgbnVtX3NlZ3M7DQo+ICsJdW5zaWduZWQgaW50IG51 bV90cmJzX2ZyZWU7DQo+ICsJdW5zaWduZWQgaW50IGJvdW5jZV9idWZfbGVuOw0KPiArCWVudW0g Y2Ruc3BfcmluZ190eXBlIHR5cGU7DQo+ICsJYm9vbCBsYXN0X3RkX3dhc19zaG9ydDsNCj4gKwlz dHJ1Y3QgcmFkaXhfdHJlZV9yb290ICp0cmJfYWRkcmVzc19tYXA7DQo+ICt9Ow0KPiArDQo+ICsv KioNCj4gKyAqIHN0cnVjdCBjZG5zcF9lcnN0X2VudHJ5IC0gZXZlbiByaW5nIHNlZ21lbnQgdGFi bGUgZW50cnkgb2JqZWN0Lg0KPiArICogQHNlZ19hZGRyOiA2NC1iaXQgZXZlbnQgcmluZyBzZWdt ZW50IGFkZHJlc3MuDQo+ICsgKiBzZWdfc2l6ZTogTnVtYmVyIG9mIFRSQnMgaW4gc2VnbWVudC47 DQo+ICsgKi8NCj4gK3N0cnVjdCBjZG5zcF9lcnN0X2VudHJ5IHsNCj4gKwlfX2xlNjQgc2VnX2Fk ZHI7DQo+ICsJX19sZTMyIHNlZ19zaXplOw0KPiArCS8qIFNldCB0byB6ZXJvICovDQo+ICsJX19s ZTMyIHJzdmQ7DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9lcnN0IC0g ZXZlbiByaW5nIHNlZ21lbnQgdGFibGUgZm9yIGV2ZW50IHJpbmcuDQo+ICsgKiBAZW50cmllczog QXJyYXkgb2YgZXZlbnQgcmluZyBzZWdtZW50cw0KPiArICogQG51bV9lbnRyaWVzOiBOdW1iZXIg b2Ygc2VnbWVudHMgaW4gZW50cmllcyBhcnJheS4NCj4gKyAqIEBlcnN0X2RtYV9hZGRyOiBETUEg YWRkcmVzcyBmb3IgZW50cmllcyBhcnJheS4NCj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX2Vyc3Qg ew0KPiArCXN0cnVjdCBjZG5zcF9lcnN0X2VudHJ5ICplbnRyaWVzOw0KPiArCXVuc2lnbmVkIGlu dCBudW1fZW50cmllczsNCj4gKwlkbWFfYWRkcl90IGVyc3RfZG1hX2FkZHI7DQo+ICt9Ow0KPiAr DQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9yZXF1ZXN0IC0gZXh0ZW5kZWQgZGV2aWNlIHNp ZGUgcmVwcmVzZW50YXRpb24gb2YgdXNiX3JlcXVlc3QNCj4gKyAqICAgICAgICAgICAgICAgICAg ICAgICAgb2JqZWN0IC4NCj4gKyAqIEB0ZDogVHJhbnNmZXIgZGVzY3JpcHRvciBhc3NvY2lhdGVk IHdpdGggdGhpcyByZXF1ZXN0Lg0KPiArICogQHJlcXVlc3Q6IEdlbmVyaWMgdXNiX3JlcXVlc3Qg b2JqZWN0IGRlc2NyaWJpbmcgc2luZ2xlIEkvTyByZXF1ZXN0Lg0KPiArICogQGxpc3Q6IFVzZWQg dG8gYWRkaW5nIHJlcXVlc3QgdG8gZW5kcG9pbnQgcGVuZGluZ19saXN0Lg0KPiArICogQHBlcDog RXh0ZW5kZWQgcmVwcmVzZW50YXRpb24gb2YgdXNiX2VwIG9iamVjdA0KPiArICogQGVwbnVtOiBF bmRwb2ludCBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHVzYiByZXF1ZXN0Lg0KPiArICogQGRpcmVj dGlvbjogRW5kcG9pbnQgZGlyZWN0aW9uIGZvciB1c2IgcmVxdWVzdC4NCj4gKyAqLw0KPiArc3Ry dWN0IGNkbnNwX3JlcXVlc3Qgew0KPiArCXN0cnVjdAljZG5zcF90ZCB0ZDsNCj4gKwlzdHJ1Y3Qg dXNiX3JlcXVlc3QgcmVxdWVzdDsNCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7DQo+ICsJc3Ry dWN0IGNkbnNwX2VwCSAqcGVwOw0KPiArCXU4IGVwbnVtOw0KPiArCXVuc2lnbmVkIGRpcmVjdGlv bjoxOw0KPiArfTsNCj4gKw0KPiArI2RlZmluZQlFUlNUX05VTV9TRUdTCTENCj4gKw0KPiArLyog U3RhZ2VzIHVzZWQgZHVyaW5nIGVudW1lcmF0aW9uIHByb2Nlc3MuKi8NCj4gK2VudW0gY2Ruc3Bf ZXAwX3N0YWdlIHsNCj4gKwlDRE5TUF9TRVRVUF9TVEFHRSwNCj4gKwlDRE5TUF9EQVRBX1NUQUdF LA0KPiArCUNETlNQX1NUQVRVU19TVEFHRSwNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogc3Ry dWN0IGNkbnNwX3BvcnQgLSBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBkZXRlY3RlZCBwb3J0cy4N Cj4gKyAqIEBwb3J0X251bTogUG9ydCBudW1iZXIuDQo+ICsgKiBAZXhpc3Q6IEluZGljYXRlIGlm IHBvcnQgZXhpc3QuDQo+ICsgKiBtYWpfcmV2OiBNYWpvciByZXZpc2lvbi4NCj4gKyAqIG1pbl9y ZXY6IE1pbm9yIHJldmlzaW9uLg0KPiArICovDQo+ICtzdHJ1Y3QgY2Ruc3BfcG9ydCB7DQo+ICsJ c3RydWN0IGNkbnNwX3BvcnRfcmVncyBfX2lvbWVtICpyZWdzOw0KPiArCXU4IHBvcnRfbnVtOw0K PiArCXU4IGV4aXN0Ow0KPiArCXU4IG1hal9yZXY7DQo+ICsJdTggbWluX3JldjsNCj4gK307DQo+ ICsNCj4gKyNkZWZpbmUgQ0ROU1BfRVhUX1BPUlRfTUFKT1IoeCkJCSgoKHgpID4+IDI0KSAmIDB4 ZmYpDQo+ICsjZGVmaW5lIENETlNQX0VYVF9QT1JUX01JTk9SKHgpCQkoKCh4KSA+PiAxNikgJiAw eGZmKQ0KPiArI2RlZmluZSBDRE5TUF9FWFRfUE9SVF9PRkYoeCkJCSgoeCkgJiAweGZmKQ0KPiAr I2RlZmluZSBDRE5TUF9FWFRfUE9SVF9DT1VOVCh4KQkJKCgoeCkgPj4gOCkgJiAweGZmKQ0KPiAr DQo+ICsvKioNCj4gKyAqIHN0cnVjdCBjZG5zcF9kZXZpY2UgLSByZXByZXNlbnQgVVNCIGRldmlj ZS4NCj4gKyAqIEBkZXY6IFBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdo aXQgdGhpcyBjb250cm9sbGVyLg0KPiArICogQGdhZGdldDogRGV2aWNlIHNpZGUgcmVwcmVzZW50 YXRpb24gb2YgdGhlIHBlcmlwaGVyYWwgY29udHJvbGxlci4NCj4gKyAqIEBnYWRnZXRfZHJpdmVy OiBQb2ludGVyIHRvIHRoZSBnYWRnZXQgZHJpdmVyLg0KPiArICogQGlycTogSVJRIGxpbmUgbnVt YmVyIHVzZWQgYnkgZGV2aWNlIHNpZGUuDQo+ICsgKiBAcmVnczpJTyBkZXZpY2UgbWVtb3J5Lg0K PiArICogQGNhcF9yZWdzOiBDYXBhYmlsaXR5IHJlZ2lzdGVycy4NCj4gKyAqIEBvcF9yZWdzOiBP cGVyYXRpb25hbCByZWdpc3RlcnMuDQo+ICsgKiBAcnVuX3JlZ3M6IFJ1bnRpbWUgcmVnaXN0ZXJz Lg0KPiArICogQGRiYTogRGV2aWNlIGJhc2UgYWRkcmVzcyByZWdpc3Rlci4NCj4gKyAqIEBpcl9z ZXQ6IEN1cnJlbnQgaW50ZXJydXB0ZXIgcmVnaXN0ZXIgc2V0Lg0KPiArICogQHBvcnQyMF9yZWdz OiBQb3J0IDIuMCBQZXJpcGhlcmFsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzLg0KPiArICogQHBv cnQzeF9yZWdzOiBVU0IzLnggUG9ydCBQZXJpcGhlcmFsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJz Lg0KPiArICogQGhjc19wYXJhbXMxOiBDYWNoZWQgcmVnaXN0ZXIgY29waWVzIG9mIHJlYWQtb25s eSBIQ1NQQVJBTVMxDQo+ICsgKiBAaGNjX3BhcmFtczogQ2FjaGVkIHJlZ2lzdGVyIGNvcGllcyBv ZiByZWFkLW9ubHkgSENDUEFSQU1TMQ0KPiArICogQHJldl9jYXA6IENvbnRyb2xsZXIgY2FwYWJp bGl0eS4NCj4gKyAqIEBzZXR1cDogVGVtcG9yYXJ5IGJ1ZmZlciBmb3Igc2V0dXAgcGFja2V0Lg0K PiArICogQGVwMF9wcmVxOiBJbnRlcm5hbCBhbGxvY2F0ZWQgcmVxdWVzdCB1c2VkIGR1cmluZyBl bnVtZXJhdGlvbi4NCj4gKyAqIEBlcDBfc3RhZ2U6IGVwMCBzdGFnZSBkdXJpbmcgZW51bWVyYXRp b24gcHJvY2Vzcy4NCj4gKyAqIEB0aHJlZV9zdGFnZV9zZXR1cDogVGhyZWUgc3RhdGUgb3IgdHdv IHN0YXRlIHNldHVwLg0KPiArICogQGVwMF9leHBlY3RfaW46IERhdGEgSU4gZXhwZWN0ZWQgZm9y IGNvbnRyb2wgdHJhbnNmZXIuDQo+ICsgKiBAc2V0dXBfaWQ6IFNldHVwIGlkZW50aWZpZXIuDQo+ ICsgKiBAc2V0dXBfc3BlZWQgLSBTcGVlZCBkZXRlY3RlZCBmb3IgY3VycmVudCBTRVRVUCBwYWNr ZXQuDQo+ICsgKiBAc2V0dXBfYnVmOiBCdWZmZXIgZm9yIFNFVFVQIHBhY2tldC4NCj4gKyAqIEBk ZXZpY2VfYWRkcmVzczogQ3VycmVudCBkZXZpY2UgYWRkcmVzcy4NCj4gKyAqIEBtYXlfd2FrZXVw OiByZW1vdGUgd2FrZXVwIGVuYWJsZWQvZGlzYWJsZWQuDQo+ICsgKiBAbG9jazogTG9jayB1c2Vk IGluIGludGVycnVwdCB0aHJlYWQgY29udGV4dC4NCj4gKyAqIEBoY2lfdmVyc2lvbjogZGV2aWNl IGNvbnRyb2xsZXIgdmVyc2lvbi4NCj4gKyAqIEBkY2JhYTogRGV2aWNlIGNvbnRleHQgYmFzZSBh ZGRyZXNzIGFycmF5Lg0KPiArICogQGNtZF9yaW5nOiBDb21tYW5kIHJpbmcuDQo+ICsgKiBAY21k OiBSZXByZXNlbnQgYWxsIHdoYXQgaXMgbmVlZGVkIHRvIGlzc3VlIGNvbW1hbmQgb24gQ29tbWFu ZCBSaW5nLg0KPiArICogQGV2ZW50X3Jpbmc6IEV2ZW50IHJpbmcuDQo+ICsgKiBAZXJzdDogRXZl bnQgUmluZyBTZWdtZW50IHRhYmxlDQo+ICsgKiBAc2xvdF9pZDogQ3VycmVudCBTbG90IElELiBT aG91bGQgYmUgMCBvciAxLg0KPiArICogQG91dF9jdHg6IE91dHB1dCBjb250ZXh0Lg0KPiArICog QGluX2N0eDogSW5wdXQgY29udGV4dC4NCj4gKyAqIEBlcHM6IGFycmF5IG9mIGVuZHBvaW50cyBv YmplY3QgYXNzb2NpYXRlZCB3aXRoIGRldmljZS4NCj4gKyAqIEB1c2IyX2h3X2xwbV9jYXBhYmxl OiBoYXJkd2FyZSBscG0gaXMgZW5hYmxlZDsNCj4gKyAqIEB1MV9hbGxvd2VkOiBBbGxvdyBkZXZp Y2UgdHJhbnNpdGlvbiB0byBVMSBzdGF0ZS4NCj4gKyAqIEB1Ml9hbGxvd2VkOiBBbGxvdyBkZXZp Y2UgdHJhbnNpdGlvbiB0byBVMiBzdGF0ZQ0KPiArICogQGRldmljZV9wb29sOiBETUEgcG9vbCBm b3IgYWxsb2NhdGluZyBpbnB1dCBhbmQgb3V0cHV0IGNvbnRleHQuDQo+ICsgKiBAc2VnbWVudF9w b29sOiBETUEgcG9vbCBmb3IgYWxsb2NhdGluZyBuZXcgc2VnbWVudHMuDQo+ICsgKiBAY2Ruc3Bf c3RhdGU6IEN1cnJlbnQgc3RhdGUgb2YgY29udHJvbGxlci4NCj4gKyAqIEBsaW5rX3N0YXRlOiBD dXJyZW50IGxpbmsgc3RhdGUuDQo+ICsgKiBAdXNiMl9wb3J0IC0gUG9ydCBVU0IgMi4wLg0KPiAr ICogQHVzYjNfcG9ydCAtIFBvcnQgVVNCIDMuMC4NCj4gKyAqIEBhY3RpdmVfcG9ydCAtIEN1cnJl bnQgc2VsZWN0ZWQgUG9ydC4NCj4gKyAqIEB0ZXN0X21vZGU6IHNlbGVjdGVkIFRlc3QgTW9kZS4N Cj4gKyAqLw0KPiArc3RydWN0IGNkbnNwX2RldmljZSB7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2 Ow0KPiArCXN0cnVjdCB1c2JfZ2FkZ2V0IGdhZGdldDsNCj4gKwlzdHJ1Y3QgdXNiX2dhZGdldF9k cml2ZXIgKmdhZGdldF9kcml2ZXI7DQo+ICsJdW5zaWduZWQgaW50IGlycTsNCj4gKwl2b2lkIF9f aW9tZW0gKnJlZ3M7DQo+ICsNCj4gKwkvKiBSZWdpc3RlcnMgbWFwICovDQo+ICsJc3RydWN0IGNk bnNwX2NhcF9yZWdzIF9faW9tZW0gKmNhcF9yZWdzOw0KPiArCXN0cnVjdCBjZG5zcF9vcF9yZWdz IF9faW9tZW0gKm9wX3JlZ3M7DQo+ICsJc3RydWN0IGNkbnNwX3J1bl9yZWdzIF9faW9tZW0gKnJ1 bl9yZWdzOw0KPiArCXN0cnVjdCBjZG5zcF9kb29yYmVsbF9hcnJheSBfX2lvbWVtICpkYmE7DQo+ ICsJc3RydWN0CWNkbnNwX2ludHJfcmVnIF9faW9tZW0gKmlyX3NldDsNCj4gKwlzdHJ1Y3QgY2Ru c3BfMjBwb3J0X2NhcCBfX2lvbWVtICpwb3J0MjBfcmVnczsNCj4gKwlzdHJ1Y3QgY2Ruc3BfM3hw b3J0X2NhcCBfX2lvbWVtICpwb3J0M3hfcmVnczsNCj4gKw0KPiArCS8qIENhY2hlZCByZWdpc3Rl ciBjb3BpZXMgb2YgcmVhZC1vbmx5IENETlNQIGRhdGEgKi8NCj4gKwlfX3UzMiBoY3NfcGFyYW1z MTsNCj4gKwlfX3UzMiBoY3NfcGFyYW1zMzsNCj4gKwlfX3UzMiBoY2NfcGFyYW1zOw0KPiArCXN0 cnVjdCBjZG5zcF9yZXZfY2FwIHJldl9jYXA7DQo+ICsJLyogTG9jayB1c2VkIGluIGludGVycnVw dCB0aHJlYWQgY29udGV4dC4gKi8NCj4gKwlzcGlubG9ja190IGxvY2s7DQo+ICsJc3RydWN0IHVz Yl9jdHJscmVxdWVzdCBzZXR1cDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcmVxdWVzdCBlcDBfcHJlcTsN Cj4gKwllbnVtIGNkbnNwX2VwMF9zdGFnZSBlcDBfc3RhZ2U7DQo+ICsJdTggdGhyZWVfc3RhZ2Vf c2V0dXA7DQo+ICsJdTggZXAwX2V4cGVjdF9pbjsNCj4gKwl1OCBzZXR1cF9pZDsNCj4gKwl1OCBz ZXR1cF9zcGVlZDsNCj4gKwl2b2lkICpzZXR1cF9idWY7DQo+ICsJdTggZGV2aWNlX2FkZHJlc3M7 DQo+ICsJaW50IG1heV93YWtldXA7DQo+ICsJdTE2IGhjaV92ZXJzaW9uOw0KPiArDQo+ICsJLyog ZGF0YSBzdHJ1Y3R1cmVzICovDQo+ICsJc3RydWN0IGNkbnNwX2RldmljZV9jb250ZXh0X2FycmF5 ICpkY2JhYTsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcmluZyAqY21kX3Jpbmc7DQo+ICsJc3RydWN0IGNk bnNwX2NvbW1hbmQgY21kOw0KPiArCXN0cnVjdCBjZG5zcF9yaW5nICpldmVudF9yaW5nOw0KPiAr CXN0cnVjdCBjZG5zcF9lcnN0IGVyc3Q7DQo+ICsJaW50IHNsb3RfaWQ7DQo+ICsNCj4gKwkvKg0K PiArCSAqIENvbW1hbmRzIHRvIHRoZSBoYXJkd2FyZSBhcmUgcGFzc2VkIGFuICJpbnB1dCBjb250 ZXh0IiB0aGF0DQo+ICsJICogdGVsbHMgdGhlIGhhcmR3YXJlIHdoYXQgdG8gY2hhbmdlIGluIGl0 cyBkYXRhIHN0cnVjdHVyZXMuDQo+ICsJICogVGhlIGhhcmR3YXJlIHdpbGwgcmV0dXJuIGNoYW5n ZXMgaW4gYW4gIm91dHB1dCBjb250ZXh0IiB0aGF0DQo+ICsJICogc29mdHdhcmUgbXVzdCBhbGxv Y2F0ZSBmb3IgdGhlIGhhcmR3YXJlLiAuDQo+ICsJICovDQo+ICsJc3RydWN0IGNkbnNwX2NvbnRh aW5lcl9jdHggb3V0X2N0eDsNCj4gKwlzdHJ1Y3QgY2Ruc3BfY29udGFpbmVyX2N0eCBpbl9jdHg7 DQo+ICsJc3RydWN0IGNkbnNwX2VwIGVwc1tDRE5TUF9FTkRQT0lOVFNfTlVNXTsNCj4gKwl1OCB1 c2IyX2h3X2xwbV9jYXBhYmxlOjE7DQo+ICsJdTggdTFfYWxsb3dlZDoxOw0KPiArCXU4IHUyX2Fs bG93ZWQ6MTsNCj4gKw0KPiArCS8qIERNQSBwb29scyAqLw0KPiArCXN0cnVjdCBkbWFfcG9vbCAq ZGV2aWNlX3Bvb2w7DQo+ICsJc3RydWN0IGRtYV9wb29sCSpzZWdtZW50X3Bvb2w7DQo+ICsNCj4g KyNkZWZpbmUgQ0ROU1BfU1RBVEVfSEFMVEVECQlCSVQoMSkNCj4gKyNkZWZpbmUgQ0ROU1BfU1RB VEVfRFlJTkcJCUJJVCgyKQ0KPiArI2RlZmluZSBDRE5TUF9TVEFURV9ESVNDT05ORUNUX1BFTkRJ TkcJQklUKDMpDQo+ICsjZGVmaW5lIENETlNQX1dBS0VVUF9QRU5ESU5HCQlCSVQoNCkNCj4gKwl1 bnNpZ25lZCBpbnQgY2Ruc3Bfc3RhdGU7DQo+ICsJdW5zaWduZWQgaW50IGxpbmtfc3RhdGU7DQo+ ICsNCj4gKwlzdHJ1Y3QgY2Ruc3BfcG9ydCB1c2IyX3BvcnQ7DQo+ICsJc3RydWN0IGNkbnNwX3Bv cnQgdXNiM19wb3J0Ow0KPiArCXN0cnVjdCBjZG5zcF9wb3J0ICphY3RpdmVfcG9ydDsNCj4gKwl1 MTYgdGVzdF9tb2RlOw0KPiArfTsNCj4gKw0KPiArI2VuZGlmIC8qIF9fTElOVVhfQ0ROU1BfR0FE R0VUX0ggKi8NCj4gLS0gDQo+IDIuMTcuMQ0KPiANCg0KLS0gDQoNClRoYW5rcywNClBldGVyIENo ZW4=