Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C623FC61DA4 for ; Thu, 2 Feb 2023 04:43:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231434AbjBBEnh (ORCPT ); Wed, 1 Feb 2023 23:43:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33824 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229916AbjBBEne (ORCPT ); Wed, 1 Feb 2023 23:43:34 -0500 Received: from mo-csw.securemx.jp (mo-csw1516.securemx.jp [210.130.202.155]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E273B5B5BD; Wed, 1 Feb 2023 20:43:27 -0800 (PST) Received: by mo-csw.securemx.jp (mx-mo-csw1516) id 3124gnSv019368; Thu, 2 Feb 2023 13:42:49 +0900 X-Iguazu-Qid: 34tMQ0sdmLpjRrF575 X-Iguazu-QSIG: v=2; s=0; t=1675312969; q=34tMQ0sdmLpjRrF575; m=iD20hgR/ogvH5mYdBjPjyX1rjqoyr9ncfk+8scSas+E= Received: from imx2-a.toshiba.co.jp (imx2-a.toshiba.co.jp [106.186.93.35]) by relay.securemx.jp (mx-mr1512) id 3124gkfA001256 (version=TLSv1.2 cipher=AES128-GCM-SHA256 bits=128 verify=NOT); Thu, 2 Feb 2023 13:42:47 +0900 X-SA-MID: 54230805 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D7upfHrkZgez2plsPp1kYjhawgSE3np0E3SYOkIVpLDnesL46oq82UKmZqBhBqz4ScHFl6OWoU22H+9+PTztqX6TRhxsMWQOIlgzti+WvPHVlXn4mj9BK4akfw+D27Kvdx+1WhmSK7sSFUUuenMp9abnCzI3DN8oEwduMvKOUI1QO2HJeS156toaUtTRnrWq5wQL9XIY60krMHHoPd4WmxnQubC5/adBAIwTWZop5z/CY6o6BPm+6C6gXkCGf+ZWsYwrbOk5k3SWDBdQldib5FyQZZDB0FZRqGQmBT81xhOXJjlO6Vl/CUrXXHh7eKI93sRrON6lWBMLjgbEBg6OZg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=a6ww0GMXiO+jg1nyJhoxj+UciPUvsDucTjyaJb8DL3Y=; b=d9vZDsVIBdOyi2+V6kcibPS9XyErSGGtZY7TN5MSBcNtALjdh5ScpdRClDrJNZDD5I0Q1n3vtZVhXZ5fUMxfm0TvruoMS8YfaOjkBvRGB7QVH/Wv67Uzsv6DBpm//PPBPircFRY+GgYrIUeYt3qWFt+YqH88T7O0ZidFIHLM2LM2nqQ/Oz1tVQ+H2DufBfYWDmlogAsbZGvixNZPgaBiLSrUTCn4NNT4okpt2yPtT51xENc/MX3tudGN+JRlAp6iIcSJsMOg6DA7U7StyyUvYTr2ZTfQMFgoBq7iIdbtt1XdeJu2HHzzGbFp09ibyKfv57C3FUGZelxz97apJKcRVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=toshiba.co.jp; dmarc=pass action=none header.from=toshiba.co.jp; dkim=pass header.d=toshiba.co.jp; arc=none From: To: CC: , , , , , , , , , , Subject: RE: [PATCH v5 2/6] media: platform: visconti: Add Toshiba Visconti Video Input Interface driver Thread-Topic: [PATCH v5 2/6] media: platform: visconti: Add Toshiba Visconti Video Input Interface driver Thread-Index: AQHZJWP0bZ/zoVA7GUOz/bXYKEan6q6jY5EAgBfRbFA= Date: Thu, 2 Feb 2023 04:37:37 +0000 X-TSB-HOP2: ON Message-ID: References: <20230111022433.25950-1-yuji2.ishikawa@toshiba.co.jp> <20230111022433.25950-3-yuji2.ishikawa@toshiba.co.jp> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=toshiba.co.jp; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYAPR01MB6201:EE_|TY3PR01MB11626:EE_ x-ms-office365-filtering-correlation-id: ec77b7e1-554d-4e91-18a3-08db04d73654 x-ld-processed: f109924e-fb71-4ba0-b2cc-65dcdf6fbe4f,ExtAddr,ExtFwd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8VH6IQ88+pOC8Rc7bshB/Amfni6zg5DGMsxZ09Ndxs7rea27v5F0jMkYtMCZoYkEqGVozGRDnVRAEcyzhNlUWssilL4llmWRzzPe3RRTgPkjyEQ2hy9BgwxGtZmDmvcyvbAiNiesG+noDGQcDopMorAOux7P6V7eN69y51iBybnD1uwGxXjBxiBvwovLdLqGegKelXfdOqOWKqbNFxR+m7JNLnT7XYRxnVwdyMhuUV7DIL6r4EIklC+Hrcd3uuiHbPA20yHnDKym51bjXxeq8jAUeIAdwi4SRHJaQkDlgtnI/6U+B4xYZPeAHAuVNWvV5V0OH0QVV+DFlCQeCZGu1YYuj22KsoKAeMf2DWTals3hmTMxHNAnj5OkOepoef47PTCBB0KC7AOuR5dYxqWL1/6S33YvUilxS6RxoQZuDNGq/h66oOy+sytMHXebucac3bcdbGPv816Tz8IURSq3zJ2IuiHaik9agUhmoP0xDsg4Z4aaVU9z3PK53S6w2HPT4XQNPS1xms40CdtxfwL0feKLwhgGyfz157p0SMeUpRan7e7S+FhJca8LnIBnAK3tiic2u3WMB0D8nepoLbgEqESRFsJaNphKN3jrEpd0+HNTBeRLFLcOpgplBeqcZMKmbDwc11hFxehN5ZQwzvyTTnNUhEsVffx+5CF3YFMY83Nmj2uLPOp0Hx6vxZT3hKJ6C5xyrLFzBR6KBCb0EiuruZI+emWiqJVK0u6DTtCqW0c= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR01MB6201.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(136003)(346002)(376002)(366004)(39860400002)(396003)(451199018)(122000001)(2906002)(5660300002)(8936002)(7416002)(71200400001)(33656002)(478600001)(38070700005)(41300700001)(30864003)(38100700002)(52536014)(86362001)(66476007)(66556008)(64756008)(54906003)(66446008)(76116006)(4326008)(6916009)(66946007)(186003)(9686003)(8676002)(55016003)(26005)(7696005)(316002)(53546011)(55236004)(83380400001)(6506007)(21314003)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SVVZeS9QQ3daemdxeGlNbFpqZFBZRDJWTXdqcXg2Q1cvMmYyS21vOTg0VWE5?= =?utf-8?B?RjFxMnlRTytVeElWVVlQZWtzY0hJK3N4ak1aKy9ZYWE1RWgyZVhTejVvTk16?= =?utf-8?B?RmY4OEVjamh6RDZOUlE3YXhsMG55Y29kZ1IwUUNUWktPaVRWcWtFTmlmWUN5?= =?utf-8?B?QUl2akRnMDcrS05pZDNUTWpVNTNkeGtocy9zSjZqSm9NZ0psOHRnVDFvd0xD?= =?utf-8?B?V1FOVnBKUnF6L1N5d1V4eEFta0VDUFllY21VS3ZCSS9NMndnZ2Z3Y2R0c1ZI?= =?utf-8?B?OS9zYXJKclNTdnY0NGo4QU9MUXBnME5WQXRMWUhwTVFpZkRnNVg5WXRmTlBX?= =?utf-8?B?MEJISGRBNnR3d05KR2RoOG9OajJ0NnJXb1NJNWZSd2R3aStZZnZCTUlKK3dB?= =?utf-8?B?UFN5TnZhOE9OTC9rd2tyNHpQU1IzUHhmMmg2dXA5a0ZIaG1HR3VNZ1M1MjFx?= =?utf-8?B?RkJRM0tMWG0wSEdwMkpxdGFjZVZHQWVYblNnd3ZJbkIxSEZyWC9JQmpicis2?= =?utf-8?B?bGdMbytFUkRtQklUQ1U0eFRqLzlUMGxRL0h0eFBRYkFSdFBDUFFnTzNLcmJP?= =?utf-8?B?aVhJemdTUWlsSWUvQ014Vm5ZU3EzMzRDNytiMjFrNFhmSUU5S2xzSm1LbTE3?= =?utf-8?B?eWtxbmIvS0p4QWhCMHp5eHJYRG1JQmkvdkdkRytUUXRYd0ZlNHlqV1VyV1po?= =?utf-8?B?eDVyS2I4RUNaeTdKTDZqemNmRmtVNy9iZ0Evcy9LY2dqMnVJditrRUl1cStx?= =?utf-8?B?clduYWVhL2I4VWFhNzlDZTY3ZnBHb000VmQzTENxYmZuR0VnTXNHV24zdytE?= =?utf-8?B?SWpYTFJKc0hmL1dRT0toWWdqQ2dEVzBraEJocko5M29NdG53anBKUkpzVnd5?= =?utf-8?B?NkM2Zm05ZjcvOXRaY01DeE5sWmQvQXZBM1krMFlvNG85UXlNbkpla3RsNDg3?= =?utf-8?B?eXlvTkNkRTVId2xxZWRmUENJZ1djY1J3RmZycDVsb3FOM3UwazJZT2RaQ1JJ?= =?utf-8?B?djY3QmlqeWxpTFFNS09jZHRjZzBkRXhvREo3cmtDemVXRzQvY2JaQXN6d1BQ?= =?utf-8?B?SityTTF2MDdXQXhhalIrcHg1TGZPSXBzaUd3Rk5jRjBUeVhWT1l6M2xvME1F?= =?utf-8?B?Slg5dTk4Zkd6Y1BmUjdQMzRLS0VKQXpQamtoalRiSkE0U05ybXpISlRKc0ZS?= =?utf-8?B?Rkg1bm11bEhMNEdBK214enZwQ2d6bnNxMkRIZjVVckt0bktWMEdQNVdDbDlN?= =?utf-8?B?ckRqWnZib0VEWXlyUkFqK1cwVlFDSFYxQ282UkcvMHhiR0tESTFtR3krOXFS?= =?utf-8?B?aFU3am5VU3N6SkRoZFJMaVNyZHhIMlFuZ3ozdnprRVd1Nkp3WDRLU3lOS3dL?= =?utf-8?B?Um5pMkRVdHF6a3M0WUkzUnBJZm5ZamUvdjVyakxvd2lRdTk4YlFpL3JaU3NV?= =?utf-8?B?cDVWelQ2bUpnVTVnQWdvUlhZQWczSzlsMmdVNkp6SVpyYkRORWxETytMdTVx?= =?utf-8?B?eUlwSjlLOVIwNEtjY096N05oMTlIS0tYQzZyRm5NSTNhRkRpNmJsdXlibHRE?= =?utf-8?B?UGhzNlJOby9ucmdSQWdYbWVrWVNEUm1rMzdwejJoS2IxcFNRRFVKbHFlcUh5?= =?utf-8?B?VFVMTXVFVE1yZk5qZXM3SW8yR2NNVGtKbnBsNDJlK3hLK0ZqTFZOa0pHcnpr?= =?utf-8?B?U3owRzJ1Y01teWNNTE5RZk15d2hhdXZDNUdHbThidndCUVJPM3NVWERUMm5v?= =?utf-8?B?MmJGSjdDaURwZ2hVay96ZzNVQUhOU0xPVThkUFU1ckRIeEZabzNHc2JjcXAx?= =?utf-8?B?NVkwQU5zbytrK3F0bllPTmxHMmdnMHZCZ2V5T2k2M0IvcHMxNlBSYTdjQVo0?= =?utf-8?B?SFU2U041N2k0YzhwZ1BMOEw0VUFERWQ1LzgyUDFyWTVzMUhyd0k2N0lud3Yv?= =?utf-8?B?RjJmZFZnOHFOVWoxcW90NnRNMmJ6MnBoaTArNk40cC9kNXRBUlVzWHhZaXlz?= =?utf-8?B?M0JJQUNScWc1UDQ0ZC9rREFKdlpqUDByTVpWUHUyK2lsLytPSEpmbnVxOG50?= =?utf-8?B?d3M3WThkSVF0ODRvYVA1dk9Jb2kyajdONmw5RGx6d0NFbldVdTNSTGNMQksx?= =?utf-8?B?elN3cFZtRy91N0tXalNLL3BkbDhKeEU5R0FjNVNoT2JlWTRwTjF3Y3h2OU9I?= =?utf-8?B?R2c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB6201.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec77b7e1-554d-4e91-18a3-08db04d73654 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Feb 2023 04:37:37.8393 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f109924e-fb71-4ba0-b2cc-65dcdf6fbe4f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: OKEaleSG97LE98i4GruP5V86jSrQwOl2NH7PfkfYWen/v8naAmW8pdXzSOZB6TbMludRxGf98b9Py3AgSZ5Vml7Czc4sAaEtmvDudFiw99Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB11626 X-OriginatorOrg: toshiba.co.jp MSSCP.TransferMailToMossAgent: 103 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGVsbG8gTGF1cmVudCwNCg0KVGhhbmsgeW91IGZvciB5b3VyIGNvbW1lbnRzLg0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQu cGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBKYW51YXJ5IDE4 LCAyMDIzIDk6NTMgQU0NCj4gVG86IGlzaGlrYXdhIHl1amko55+z5bedIOaCoOWPuCDil4vvvLLv vKTvvKPilqHvvKHvvKnvvLTvvKPil4vvvKXvvKHplospDQo+IDx5dWppMi5pc2hpa2F3YUB0b3No aWJhLmNvLmpwPg0KPiBDYzogSGFucyBWZXJrdWlsIDxodmVya3VpbEB4czRhbGwubmw+OyBNYXVy byBDYXJ2YWxobyBDaGVoYWINCj4gPG1jaGVoYWJAa2VybmVsLm9yZz47IGl3YW1hdHN1IG5vYnVo aXJvKOWyqeadviDkv6HmtIsg4pah77yz77y377yj4pev77yh77yj77y0KQ0KPiA8bm9idWhpcm8x Lml3YW1hdHN1QHRvc2hpYmEuY28uanA+OyBSb2IgSGVycmluZyA8cm9iaCtkdEBrZXJuZWwub3Jn PjsNCj4gS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6eXN6dG9mLmtvemxvd3NraStkdEBsaW5hcm8u b3JnPjsgUmFmYWVsIEogLiBXeXNvY2tpDQo+IDxyYWZhZWwuai53eXNvY2tpQGludGVsLmNvbT47 IE1hcmsgQnJvd24gPGJyb29uaWVAa2VybmVsLm9yZz47DQo+IGxpbnV4LW1lZGlhQHZnZXIua2Vy bmVsLm9yZzsgbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOw0KPiBsaW51eC1r ZXJuZWxAdmdlci5rZXJuZWwub3JnOyBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZw0KPiBTdWJq ZWN0OiBSZTogW1BBVENIIHY1IDIvNl0gbWVkaWE6IHBsYXRmb3JtOiB2aXNjb250aTogQWRkIFRv c2hpYmEgVmlzY29udGkNCj4gVmlkZW8gSW5wdXQgSW50ZXJmYWNlIGRyaXZlcg0KPiANCj4gSGkg WXVqaSwNCj4gDQo+IFRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoLg0KPiANCj4gSSdsbCBjb21tZW50 IG9uIHRoZSBoaWdoLWxldmVsIGRlc2lnbiBmaXJzdCAod2l0aCBhIGZldyBhZC1ob2MgbW9yZQ0K PiBkZXRhaWxlZCBjb21tZW50cyBoZXJlIGFuZCB0aGVyZSkuDQo+IA0KPiBPbiBXZWQsIEphbiAx MSwgMjAyMyBhdCAxMToyNDoyOUFNICswOTAwLCBZdWppIElzaGlrYXdhIHdyb3RlOg0KPiA+IEFk ZCBzdXBwb3J0IHRvIFZpZGVvIElucHV0IEludGVyZmFjZSBvbiBUb3NoaWJhIFZpc2NvbnRpIEFS TSBTb0NzLg0KPiA+IFRoZSBpbnRlcmZhY2UgZGV2aWNlIGluY2x1ZGVzIENTSTIgUmVjZWl2ZXIs DQo+ID4gZnJhbWUgZ3JhYmJlciwgdmlkZW8gRE1BQyBhbmQgaW1hZ2Ugc2lnbmFsIHByb2Nlc3Nv ci4NCj4gPiBUaGlzIHBhdGNoIHByb3ZpZGVzIG9wZXJhdGlvbnMgdG8gaGFuZGxlIHJlZ2lzdGVy cyBvZiBIVyBsaXN0ZWQgYWJvdmUuDQo+ID4NCj4gPiBUaGUgVmlkZW8gRE1BQ3MgaGF2ZSAzMmJp dCBhZGRyZXNzIHNwYWNlDQo+ID4gYW5kIGN1cnJlbnRseSBjb3JyZXNwb25kaW5nIElPTU1VIGRy aXZlciBpcyBub3QgcHJvdmlkZWQuDQo+ID4gVGhlcmVmb3JlLCBtZW1vcnktYmxvY2sgYWRkcmVz cyBmb3IgY2FwdHVyZWQgaW1hZ2UgaXMgMzJiaXQgSU9WQQ0KPiA+IHdoaWNoIGlzIGVxdWFsIHRv IDMyYml0LXRydW5jYXRlZCBwaGlzaWNhbCBhZGRyZXNzLg0KPiA+IFdoZW4gdGhlIFZpc2NvbnRp IElPTU1VIGRyaXZlciAoY3VycmVudGx5IHVuZGVyIGRldmVsb3BtZW50KSBpcyBhY2NlcHRlZCwN Cj4gPiB0aGUgaGFyZHdhcmUgbGF5ZXIgd2lsbCB1c2UgMzJiaXQgSU9WQSBtYXBwZWQgYnkgdGhl IGF0dGFjaGVkIElPTU1VLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogWXVqaSBJc2hpa2F3YSA8 eXVqaTIuaXNoaWthd2FAdG9zaGliYS5jby5qcD4NCj4gPiAtLS0NCj4gPiBDaGFuZ2Vsb2cgdjI6 DQo+ID4gLSBSZXNlbmQgdjEgYmVjYXVzZSBhIHBhdGNoIGV4Y2VlZHMgc2l6ZSBsaW1pdC4NCj4g Pg0KPiA+IENoYW5nZWxvZyB2MzoNCj4gPiAtIEFkYXB0ZWQgdG8gbWVkaWEgY29udHJvbCBmcmFt ZXdvcmsNCj4gPiAtIEludHJvZHVjZWQgSVNQIHN1YmRldmljZSwgY2FwdHVyZSBkZXZpY2UNCj4g PiAtIFJlbW92ZSBwcml2YXRlIElPQ1RMcyBhbmQgYWRkIHZlbmRvciBzcGVjaWZpYyBWNEwyIGNv bnRyb2xzDQo+ID4gLSBDaGFuZ2UgZnVuY3Rpb24gbmFtZSBhdm9pZGluZyBjYW1lbGNhc2UgYW5k IHVwcGVyY2FzZSBsZXR0ZXJzDQo+ID4NCj4gPiBDaGFuZ2Vsb2cgdjQ6DQo+ID4gLSBTcGxpdCBw YXRjaGVzIGJlY2F1c2UgdGhlIHYzIHBhdGNoIGV4Y2VlZHMgc2l6ZSBsaW1pdA0KPiA+IC0gU3Rv cCB1c2luZyBJRCBudW1iZXIgdG8gaWRlbnRpZnkgZHJpdmVyIGluc3RhbmNlOg0KPiA+ICAgLSBV c2UgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHN0cnVjdHVyZSB0byBob2xkIGRyaXZlcidzIGNvbnRl eHQsDQo+ID4gICAgIGluc3RlYWQgb2Ygc3RhdGljIG9uZSBpbmRleGVkIGJ5IElEIG51bWJlci4N Cj4gPiAgIC0gRnVuY3Rpb25zIGFjY2VwdCBkcml2ZXIncyBjb250ZXh0IHN0cnVjdHVyZSBpbnN0 ZWFkIG9mIElEIG51bWJlci4NCj4gPg0KPiA+IENoYW5nZWxvZyB2NToNCj4gPiAtIG5vIGNoYW5n ZQ0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcgICAgICAgICAg ICAgICAgfCAgICAxICsNCj4gPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSAgICAg ICAgICAgICAgIHwgICAgMSArDQo+ID4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlzY29udGkv S2NvbmZpZyAgICAgICB8ICAgIDkgKw0KPiA+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2Nv bnRpL01ha2VmaWxlICAgICAgfCAgICA4ICsNCj4gPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92 aXNjb250aS9od2RfdmlpZi5jICAgIHwgMTY5MCArKysrKysrKysrDQo+ID4gIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdmlzY29udGkvaHdkX3ZpaWYuaCAgICB8ICA3MTAgKysrKysNCj4gPiAgLi4u L21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlmX2NzaTJyeC5jIHwgIDYxMCArKysrDQo+ ID4gIC4uLi9wbGF0Zm9ybS92aXNjb250aS9od2RfdmlpZl9pbnRlcm5hbC5oICAgICB8ICAzNDAg KysNCj4gPiAgLi4uL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlmX3JlZy5oICAgIHwg MjgwMg0KPiArKysrKysrKysrKysrKysrKw0KPiA+ICBpbmNsdWRlL3VhcGkvbGludXgvdmlzY29u dGlfdmlpZi5oICAgICAgICAgICAgfCAxNzI0ICsrKysrKysrKysNCj4gPiAgMTAgZmlsZXMgY2hh bmdlZCwgNzg5NSBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL0tjb25maWcNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlzY29udGkvTWFrZWZpbGUNCj4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlzY29udGkvaHdkX3ZpaWYuYw0KPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS9od2Rf dmlpZi5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zp c2NvbnRpL2h3ZF92aWlmX2NzaTJyeC5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlmX2ludGVybmFsLmgNCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlzY29udGkvaHdkX3ZpaWZfcmVn LmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdWFwaS9saW51eC92aXNjb250aV92 aWlmLmgNCj4gDQo+IFRoaXMgZmlsZSBzcGxpdCBtYWtlcyBpdCBxdWl0ZSBoYXJkIHRvIG5hdmln YXRlIGFuZCB1bmRlcnN0YW5kIHRoZQ0KPiBkcml2ZXIgZm9yIHBlb3BsZSB3aG8gYXJlIG5vdCBm YW1pbGlhciB3aXRoIGl0IChhdCBsZWFzdCBmb3IgbWUpIDotUyBJdA0KPiB3b3VsZCBiZSBuaWNl IHRvIHNwbGl0IHRoZSBkcml2ZXIgYmFzZWQgb24gZnVuY3Rpb25hbCBhcmVhLCBmb3IgaW5zdGFu Y2UNCj4gYXMgZm9sbG93czoNCj4gDQo+IC0gdmlpZi5jIChvciB2aWlmX2Rydi5jKTogVG9wLWxl dmVsIGRyaXZlciBmaWxlLCBhcyBhbHJlYWR5IGRvbmUgaW4gdjUNCj4gLSB2aWlmX2NzaTJyeC5j OiBDU0ktMiByZWNlaXZlciBzdXBwb3J0IGNvZGUNCj4gLSB2aWlmX2wxaXNwLmM6IEwxIElTUCBz dXBwb3J0DQo+IC0gdmlpZl9sMmlzcC5jOiBMMiBJU1Agc3VwcG9ydA0KPiAtIHZpaWZfY2FwdHVy ZS5jOiBWNEwyIHZpZGVvIG5vZGUgc3VwcG9ydA0KPiANCj4gRWFjaCBvZiB0aG9zZSBmaWxlcyBz aG91bGQgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUgdG8gZGVjbGFyZQ0KPiBmdW5j dGlvbnMgYW5kIGRlZmluZSB0aGUgcmVsYXRlZCBtYWNyb3MgYW5kIHN0cnVjdHVyZXMgdGhhdCBh cmUgdXNlZCBieQ0KPiAqb3RoZXIqIC5jIGZpbGVzLiBNYWNyb3MgYW5kIHN0cnVjdHVyZXMgdGhh dCBhcmUgaW50ZXJuYWwgdG8gYSAuYyBmaWxlDQo+IHNob3VsZCBiZSBkZWZpbmVkIHRoZXJlLg0K DQpJJ2xsIGZvbGxvdyB0aGUgYWR2aXNlZCBsYXlvdXQgb2YgZmlsZXMuDQpJJ20gY3VycmVudGx5 IG5vdCBmb3Igc3VyZSBpZiBMMSBhbmQgTDIgSVNQIHN1cHBvcnQgY2FuIGJlIHdyaXR0ZW4gc2Vw YXJhdGVseS4gTGV0IG1lIHRyeS4NCg0KPiAtIHZpaWZfcmVnLmg6IFJlZ2lzdGVyIGFkZHJlc3Nl cyBhbmQgbWFjcm9zDQo+IA0KPiBJJ20gdGVtcHRlZCB0byBzcGxpdCB0aGUgQ1NJLTIgUlggcmVn aXN0ZXJzIGZyb20gdmlpZl9yZWcuaCB0bw0KPiB2aWlmX2NzaTJyeF9yZWcuaC4NCg0KSSdsbCBt b3ZlIENTSS0yIFJYIHJlZ2lzdGVycyBhbmQgcmVsYXRlZCBkZWZpbml0aW9ucyB0byBhIG5ldyBm aWxlLg0KDQo+IEFzIGZvciB0aGUgY29kZSBjdXJyZW50bHkgc3RvcmVkIGluIHRoZSBod2RfKi5j IGZpbGVzLCBpdCBjb3VsZCBiZSBrZXB0DQo+IHNlcGFyYXRlLCBvciBiZSBpbnRlZ3JhdGVkIGlu IHRoZSBjb3JyZXNwb25kaW5nICouYyBmaWxlLCB1cCB0byB5b3UuIElmDQo+IHlvdSBwcmVmZXIg a2VlcGluZyBpdCBzZXBhcmF0ZSwgSSB3b3VsZCBuYW1lIHRoZSBmaWxlcyB2aWlmXypfaHcuYyAo ZS5nLg0KPiB2aWlmX2NzaTJyeF9ody5jKS4NCg0KQWxsIHJpZ2h0LiBJJ2xsIHJlbmFtZSB0aGVt IHRvIHZpaWZfKl9ody5jIGlmIHRoZXkgZXhpc3QgYWZ0ZXIgcmVmYWN0b3JpbmcuDQoNCg0KPiBJ J2xsIGN1dCBwYXJ0cyBvZiB0aGUgb3JpZ2luYWwgcGFydCBvdXQgb2YgdGhlIHJlcGx5LCBhcyB0 aGUgcmVzdWx0DQo+IHdvdWxkIGJlIHRvbyBsYXJnZSBmb3IgdGhlIG1haWxpbmcgbGlzdC4NCj4g DQo+IFtzbmlwXQ0KPiANCj4gPiAgIyBQbGVhc2UgcGxhY2UgaGVyZSBvbmx5IGFuY2lsbGFyeSBk cml2ZXJzIHRoYXQgYXJlbid0IFNvQy1zcGVjaWZpYw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL0tjb25maWcNCj4gYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL3Zpc2NvbnRpL0tjb25maWcNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4 IDAwMDAwMDAwMDAwLi4wMzFlNDYxMDgwOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL0tjb25maWcNCj4gPiBAQCAtMCwwICsxLDkg QEANCj4gDQo+IFBsZWFzZSBhZGQgYW4gU1BEWCBoZWFkZXIuDQoNCkknbGwgYWRkIGl0Lg0KDQo+ ID4gK2NvbmZpZyBWSURFT19WSVNDT05USV9WSUlGDQo+ID4gKwl0cmlzdGF0ZSAiVmlzY29udGkg Q2FtZXJhIEludGVyZmFjZSBkcml2ZXIiDQo+ID4gKwlkZXBlbmRzIG9uIFY0TF9QTEFURk9STV9E UklWRVJTICYmIE1FRElBX0NPTlRST0xMRVIgJiYNCj4gVklERU9fREVWDQo+ID4gKwlkZXBlbmRz IG9uIEFSQ0hfVklTQ09OVEkNCj4gPiArCXNlbGVjdCBWSURFT0JVRjJfRE1BX0NPTlRJRw0KPiA+ ICsJc2VsZWN0IFY0TDJfRldOT0RFDQo+IA0KPiBZb3UgYWxzbyBuZWVkIFY0TDJfQVNZTkMgYW5k IFZJREVPX1Y0TDJfU1VCREVWX0FQSS4gU29ydCB0aGVtDQo+IGFscGhhYmV0aWNhbGx5Og0KDQpJ J2xsIGFkZCB0aGVtLg0KDQo+IAlzZWxlY3QgVjRMMl9BU1lOQw0KPiAJc2VsZWN0IFY0TDJfRldO T0RFDQo+IAlzZWxlY3QgVklERU9CVUYyX0RNQV9DT05USUcNCj4gCXNlbGVjdCBWSURFT19WNEwy X1NVQkRFVl9BUEkNCj4gDQo+ID4gKwloZWxwDQo+ID4gKwkgIFRoaXMgaXMgVjRMMiBkcml2ZXIg Zm9yIFRvc2hpYmEgVmlzY29udGkgQ2FtZXJhIEludGVyZmFjZSBkcml2ZXINCj4gPiArDQo+IA0K PiBbc25pcF0NCj4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlz Y29udGkvaHdkX3ZpaWYuYw0KPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlzY29udGkvaHdk X3ZpaWYuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAu LjI2MDI5M2ZhNGQwDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vdmlzY29udGkvaHdkX3ZpaWYuYw0KPiA+IEBAIC0wLDAgKzEsMTY5MCBAQA0KPiA+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMi1DbGF1c2UNCj4g PiArLyogVG9zaGliYSBWaXNjb250aSBWaWRlbyBDYXB0dXJlIFN1cHBvcnQNCj4gPiArICoNCj4g PiArICogKEMpIENvcHlyaWdodCAyMDIyIFRPU0hJQkEgQ09SUE9SQVRJT04NCj4gPiArICogKEMp IENvcHlyaWdodCAyMDIyIFRvc2hpYmEgRWxlY3Ryb25pYyBEZXZpY2VzICYgU3RvcmFnZSBDb3Jw b3JhdGlvbg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3Jt X2RldmljZS5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImh3ZF92aWlmLmgiDQo+ID4gKyNpbmNs dWRlICJod2RfdmlpZl9pbnRlcm5hbC5oIg0KPiA+ICsNCj4gPiArLyogTUlQSSBDU0kyIERhdGFU eXBlIGRlZmluaXRpb24gKi8NCj4gPiArI2RlZmluZSBDU0kyX0RUX1lVVjQyMjhCICBWSVNDT05U SV9DU0kyX0RUX1lVVjQyMjhCDQo+ID4gKyNkZWZpbmUgQ1NJMl9EVF9ZVVY0MjIxMEIgVklTQ09O VElfQ1NJMl9EVF9ZVVY0MjIxMEINCj4gPiArI2RlZmluZSBDU0kyX0RUX1JHQjU2NQkgIFZJU0NP TlRJX0NTSTJfRFRfUkdCNTY1DQo+ID4gKyNkZWZpbmUgQ1NJMl9EVF9SR0I4ODgJICBWSVNDT05U SV9DU0kyX0RUX1JHQjg4OA0KPiA+ICsjZGVmaW5lIENTSTJfRFRfUkFXOAkgIFZJU0NPTlRJX0NT STJfRFRfUkFXOA0KPiA+ICsjZGVmaW5lIENTSTJfRFRfUkFXMTAJICBWSVNDT05USV9DU0kyX0RU X1JBVzEwDQo+ID4gKyNkZWZpbmUgQ1NJMl9EVF9SQVcxMgkgIFZJU0NPTlRJX0NTSTJfRFRfUkFX MTINCj4gPiArI2RlZmluZSBDU0kyX0RUX1JBVzE0CSAgVklTQ09OVElfQ1NJMl9EVF9SQVcxNA0K PiANCj4gWW91IGNhbiBkcm9wIHRoaXMgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgbWFjcm9zIGRl ZmluZWQgaW4NCj4gaW5jbHVkZS9tZWRpYS9taXBpLWNzaTIuaC4NCg0KSSdsbCB1c2UgdGhlIGRl ZmluaXRpaW9ucyBpbiBtZWRpYS9taXBpLWNzaTIuaCAuDQoNCj4gPiArDQo+ID4gK3N0cnVjdCBo d2RfdmlpZl9yZXMgKmFsbG9jYXRlX3ZpaWZfcmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZA0K PiAqY3NpMmhvc3RfdmFkZHIsDQo+ID4gKwkJCQkgICAgICAgdm9pZCAqY2FwdHVyZV92YWRkcikN Cj4gPiArew0KPiA+ICsJc3RydWN0IGh3ZF92aWlmX3JlcyAqcmVzID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKHN0cnVjdCBod2RfdmlpZl9yZXMpLA0KPiBHRlBfS0VSTkVMKTsNCj4gDQo+IERv bid0IGFsbG9jYXRlIHRoaXMgZHluYW1pY2FsbHksIGl0IGNhbiBiZSBlbWJlZGRlZCBpbiB0aGUg dmlpZl9kZXZpY2UNCj4gc3RydWN0dXJlLg0KDQpJJ2xsIGVtYmVkIGl0IHRvIHN0cnVjdCB2aWlm X2RldmljZS4NCg0KPiA+ICsNCj4gPiArCXJlcy0+Y3NpMmhvc3RfcmVnID0gY3NpMmhvc3RfdmFk ZHI7DQo+ID4gKwlyZXMtPmNhcHR1cmVfcmVnID0gY2FwdHVyZV92YWRkcjsNCj4gPiArCXJlcy0+ cnVuX2ZsYWdfbWFpbiA9IChib29sKWZhbHNlOw0KPiA+ICsJcmV0dXJuIHJlczsNCj4gPiArfQ0K PiANCj4gW3NuaXBdDQo+IA0KPiA+ICsjZGVmaW5lIFZETV9CSVRfVzAwIEJJVCgwKQ0KPiA+ICsj ZGVmaW5lIFZETV9CSVRfVzAxIEJJVCgxKQ0KPiA+ICsjZGVmaW5lIFZETV9CSVRfVzAyIEJJVCgy KQ0KPiA+ICsjZGVmaW5lIFZETV9CSVRfVzAzIEJJVCgzKQ0KPiA+ICsjZGVmaW5lIFZETV9CSVRf VzA0IEJJVCg0KQ0KPiA+ICsjZGVmaW5lIFZETV9CSVRfVzA1IEJJVCg1KQ0KPiA+ICsjZGVmaW5l IFZETV9CSVRfUjAwIEJJVCgwKQ0KPiA+ICsjZGVmaW5lIFZETV9CSVRfUjAxIEJJVCgxKQ0KPiA+ ICsjZGVmaW5lIFZETV9CSVRfUjAyIEJJVCgyKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBWRE1fQUJP UlRfTUFTS19TVUJfVyAgKFZETV9CSVRfVzAzIHwgVkRNX0JJVF9XMDQgfA0KPiBWRE1fQklUX1cw NSkNCj4gPiArI2RlZmluZSBWRE1fQUJPUlRfTUFTS19NQUlOX1cgKFZETV9CSVRfVzAwIHwgVkRN X0JJVF9XMDEgfA0KPiBWRE1fQklUX1cwMikNCj4gPiArI2RlZmluZSBWRE1fQUJPUlRfTUFTS19N QUlOX1IgKFZETV9CSVRfUjAwIHwgVkRNX0JJVF9SMDEgfA0KPiBWRE1fQklUX1IwMikNCj4gDQo+ IE5vbmUgb2YgdGhlc2UgYXJlIHVzZWQuDQoNCkknbGwgcmVtb3ZlIHRoZW0uIFNhbWUgZm9yIG90 aGVyIHVudXNlZCBkZWZpbml0aW9ucy4NCg0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDJf c2V0X2ltZ190cmFuc21pc3Npb24oKSAtIFNldCBpbWFnZSB0cmFuc2ZlciBjb25kaXRpb24gb2YN Cj4gTDJJU1ANCj4gPiArICoNCj4gPiArICogQHBvc3RfaWQ6IFBPU1QgSUQgWzAuLjFdDQo+ID4g KyAqIEBlbmFibGU6IG9yIGRpc2FibGUgaW1hZ2UgdHJhbnNmZXIgb2YgTUFJTiB1bml0LiBGb3Ig bW9yZSByZWZlciBAcmVmDQo+IGh3ZF92aWlmX2VuYWJsZV9mbGFnLg0KPiA+ICsgKiBAc3JjOiBQ b2ludGVyIHRvIGNyb3AgYXJlYSBpbmZvcm1hdGlvbg0KPiA+ICsgKiBAb3V0X3Byb2Nlc3M6IFBv aW50ZXIgdG8gb3V0cHV0IHByb2Nlc3MgaW5mb3JtYXRpb24NCj4gPiArICogQGltZzogUG9pbnRl ciB0byBvdXRwdXQgaW1hZ2UgaW5mb3JtYXRpb24NCj4gPiArICogUmV0dXJuOiAwIE9wZXJhdGlv biBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZBTCBQYXJhbWV0 ZXIgZXJyb3INCj4gPiArICogLSBbMV0gInBvc3RfaWQiIG9yICJlbmFibGUiIGlzIG91dCBvZiBy YW5nZQ0KPiA+ICsgKiAtIFsyXSAic3JjIiBvciAib3V0X3Byb2Nlc3MiIGlzIE5VTEwgd2hlbiAi ZW5hYmxlIiBpcyBIV0RfVklJRl9FTkFCTEUNCj4gPiArICogLSBbM10gInNyYyIgb3IgIm91dF9w cm9jZXNzIiBpcyBub3QgTlVMTCB3aGVuICJlbmFibGUiIGlzDQo+IEhXRF9WSUlGX0RJU0FCTEUN Cj4gPiArICogLSBbNF0gTWVtYmVyIG9mICJzcmMiIGlzIG91dCBvZiByYW5nZQ0KPiA+ICsgKiAt IFs1XSAidyIgb2YgInNyYyIgaXMgbm90IGVxdWFsIHRvIDIgKiAid2lkdGgiIG9mICJpbWFnZSIN Cj4gPiArICogICB3aGVuICJoYWxmX3NjYWwiIG9mICJvdXRfcHJvY2VzcyIgaXMgSFdEX1ZJSUZf RU5BQkxFDQo+ID4gKyAqIC0gWzZdICJoIiBvZiAic3JjIiBpcyBub3QgZXF1YWwgdG8gMiAqICJo ZWlnaHQiIG9mICJpbWFnZSINCj4gPiArICogICB3aGVuICJoYWxmX3NjYWwiIG9mICJvdXRfcHJv Y2VzcyIgaXMgSFdEX1ZJSUZfRU5BQkxFDQo+ID4gKyAqIC0gWzddICJ3IiBvZiAic3JjIiBpcyBu b3QgZXF1YWwgdG8gIndpZHRoIiBvZiAiaW1hZ2UiDQo+ID4gKyAqICAgd2hlbiAiaGFsZl9zY2Fs IiBvZiAib3V0X3Byb2Nlc3MiIGlzIEhXRF9WSUlGX0RJU0FCTEUNCj4gPiArICogLSBbOF0gImgi IG9mICJzcmMiIGlzIG5vdCBlcXVhbCB0byAiaGVpZ2h0IiBvZiAiaW1hZ2UiDQo+ID4gKyAqICAg d2hlbiAiaGFsZl9zY2FsIiBvZiAib3V0X3Byb2Nlc3MiIGlzIEhXRF9WSUlGX0RJU0FCTEUNCj4g PiArICogLSBbOV0gTWVtYmVyIG9mICJvdXRfcHJvY2VzcyIgaXMgaW52YWxpZA0KPiA+ICsgKiAt IFsxMF0gImFscGhhIiBvZiAib3V0X3Byb2Nlc3MiIGlzIG5vdCAwIHdoZW4gImZvcm1hdCIgb2Yg ImltZyIgaXMgbm90DQo+IEhXRF9WSUlGX0FSR0I4ODg4X1BBQ0tFRA0KPiA+ICsgKiAtIFsxMV0g ImZvcm1hdCIgb2YgImltZyIgaXMgbm90IEhXRF9WSUlGX09ORV9DT0xPUl84IG9yDQo+IEhXRF9W SUlGX09ORV9DT0xPUl8xNg0KPiA+ICsgKiAgIHdoZW4gInNlbGVjdF9jb2xvciIgb2YgIm91dF9w cm9jZXNzIg0KPiA+ICsgKiAgIGlzIEhXRF9WSUlGX0NPTE9SX1lfRywgSFdEX1ZJSUZfQ09MT1Jf VV9CIG9yDQo+IEhXRF9WSUlGX0NPTE9SX1ZfUg0KPiA+ICsgKiAtIFsxMl0gTWVtYmVyIG9mICJp bWciIGlzIGludmFsaWQNCj4gPiArICoNCj4gPiArICogc2VlIGFsc286ICNod2RfdmlpZl9sMl9z ZXRfcm9pX3BhdGgNCj4gPiArICovDQo+ID4gK3MzMiBod2RfdmlpZl9sMl9zZXRfaW1nX3RyYW5z bWlzc2lvbihzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpyZXMsIHUzMiBwb3N0X2lkLA0KPiB1MzIgZW5h YmxlLA0KPiA+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaHdkX3ZpaWZfaW1nX2FyZWEgKnNyYywN Cj4gPiArCQkJCSAgICAgY29uc3Qgc3RydWN0IGh3ZF92aWlmX291dF9wcm9jZXNzDQo+ICpvdXRf cHJvY2VzcywNCj4gPiArCQkJCSAgICAgY29uc3Qgc3RydWN0IGh3ZF92aWlmX2ltZyAqaW1nKQ0K PiA+ICt7DQo+ID4gKwl1MzIgcGl0Y2hbSFdEX1ZJSUZfTUFYX1BMQU5FX05VTV0sDQo+IGltZ19z dGFydF9hZGRyW0hXRF9WSUlGX01BWF9QTEFORV9OVU1dOw0KPiA+ICsJdTMyIGksIHZhbCwgbG9v cCwgaywgcltIV0RfVklJRl9NQVhfUExBTkVfTlVNXTsNCj4gPiArCXMzMiByZXQgPSAwOw0KPiA+ ICsNCj4gPiArCS8qIHBpdGNoIGFsaWdubWVudCBmb3IgcGxhbmFyIG9yIG9uZSBjb2xvciBmb3Jt YXQgKi8NCj4gPiArCXUzMiBwaXRjaF9hbGlnbiA9IDEyOFU7DQo+IA0KPiBbc25pcF0NCj4gDQo+ ID4gKwkvKiBidWlsZCBETUFDIHBhcmFtZXRlciAqLw0KPiA+ICsJc3dpdGNoIChpbWctPmZvcm1h dCkgew0KPiA+ICsJY2FzZSBIV0RfVklJRl9ZQ0JDUjQyMl84X1BBQ0tFRDoNCj4gPiArCQlpbWdf c3RhcnRfYWRkclswXSA9ICh1MzIpaW1nLT5waXhlbG1hcFswXS5wbWFwX3BhZGRyOw0KPiA+ICsJ CXBpdGNoWzBdID0gaW1nLT5waXhlbG1hcFswXS5waXRjaDsNCj4gPiArCQlsb29wID0gMVU7DQo+ ID4gKwkJayA9IDJVOw0KPiA+ICsJCXJbMF0gPSAxVTsNCj4gPiArCQlwaXRjaF9hbGlnbiA9IDI1 NlU7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIEhXRF9WSUlGX1JHQjg4OF9QQUNLRUQ6DQo+ ID4gKwkJaW1nX3N0YXJ0X2FkZHJbMF0gPSAodTMyKWltZy0+cGl4ZWxtYXBbMF0ucG1hcF9wYWRk cjsNCj4gPiArCQlwaXRjaFswXSA9IGltZy0+cGl4ZWxtYXBbMF0ucGl0Y2g7DQo+ID4gKwkJbG9v cCA9IDFVOw0KPiA+ICsJCWsgPSAzVTsNCj4gPiArCQlyWzBdID0gMVU7DQo+ID4gKwkJcGl0Y2hf YWxpZ24gPSAzODRVOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBIV0RfVklJRl9BUkdCODg4 OF9QQUNLRUQ6DQo+ID4gKwkJaW1nX3N0YXJ0X2FkZHJbMF0gPSAodTMyKWltZy0+cGl4ZWxtYXBb MF0ucG1hcF9wYWRkcjsNCj4gPiArCQlwaXRjaFswXSA9IGltZy0+cGl4ZWxtYXBbMF0ucGl0Y2g7 DQo+ID4gKwkJbG9vcCA9IDFVOw0KPiA+ICsJCWsgPSA0VTsNCj4gPiArCQlyWzBdID0gMVU7DQo+ ID4gKwkJcGl0Y2hfYWxpZ24gPSA1MTJVOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBIV0Rf VklJRl9PTkVfQ09MT1JfODoNCj4gPiArCQlpbWdfc3RhcnRfYWRkclswXSA9ICh1MzIpaW1nLT5w aXhlbG1hcFswXS5wbWFwX3BhZGRyOw0KPiA+ICsJCXBpdGNoWzBdID0gaW1nLT5waXhlbG1hcFsw XS5waXRjaDsNCj4gPiArCQlsb29wID0gMVU7DQo+ID4gKwkJayA9IDFVOw0KPiA+ICsJCXJbMF0g PSAxVTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNhc2UgSFdEX1ZJSUZfT05FX0NPTE9SXzE2Og0K PiA+ICsJCWltZ19zdGFydF9hZGRyWzBdID0gKHUzMilpbWctPnBpeGVsbWFwWzBdLnBtYXBfcGFk ZHI7DQo+ID4gKwkJcGl0Y2hbMF0gPSBpbWctPnBpeGVsbWFwWzBdLnBpdGNoOw0KPiA+ICsJCWxv b3AgPSAxVTsNCj4gPiArCQlrID0gMlU7DQo+ID4gKwkJclswXSA9IDFVOw0KPiA+ICsJCWJyZWFr Ow0KPiA+ICsJY2FzZSBIV0RfVklJRl9ZQ0JDUjQyMl84X1BMQU5BUjoNCj4gPiArCQlpbWdfc3Rh cnRfYWRkclswXSA9ICh1MzIpaW1nLT5waXhlbG1hcFswXS5wbWFwX3BhZGRyOw0KPiA+ICsJCWlt Z19zdGFydF9hZGRyWzFdID0gKHUzMilpbWctPnBpeGVsbWFwWzFdLnBtYXBfcGFkZHI7DQo+ID4g KwkJaW1nX3N0YXJ0X2FkZHJbMl0gPSAodTMyKWltZy0+cGl4ZWxtYXBbMl0ucG1hcF9wYWRkcjsN Cj4gPiArCQlwaXRjaFswXSA9IGltZy0+cGl4ZWxtYXBbMF0ucGl0Y2g7DQo+ID4gKwkJcGl0Y2hb MV0gPSBpbWctPnBpeGVsbWFwWzFdLnBpdGNoOw0KPiA+ICsJCXBpdGNoWzJdID0gaW1nLT5waXhl bG1hcFsyXS5waXRjaDsNCj4gPiArCQlsb29wID0gSFdEX1ZJSUZfTUFYX1BMQU5FX05VTTsNCj4g PiArCQlrID0gMVU7DQo+ID4gKwkJclswXSA9IDFVOw0KPiA+ICsJCXJbMV0gPSAyVTsNCj4gPiAr CQlyWzJdID0gMlU7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIEhXRF9WSUlGX1JHQjg4OF9Z Q0JDUjQ0NF84X1BMQU5BUjoNCj4gPiArCQlpbWdfc3RhcnRfYWRkclswXSA9ICh1MzIpaW1nLT5w aXhlbG1hcFswXS5wbWFwX3BhZGRyOw0KPiA+ICsJCWltZ19zdGFydF9hZGRyWzFdID0gKHUzMilp bWctPnBpeGVsbWFwWzFdLnBtYXBfcGFkZHI7DQo+ID4gKwkJaW1nX3N0YXJ0X2FkZHJbMl0gPSAo dTMyKWltZy0+cGl4ZWxtYXBbMl0ucG1hcF9wYWRkcjsNCj4gPiArCQlwaXRjaFswXSA9IGltZy0+ cGl4ZWxtYXBbMF0ucGl0Y2g7DQo+ID4gKwkJcGl0Y2hbMV0gPSBpbWctPnBpeGVsbWFwWzFdLnBp dGNoOw0KPiA+ICsJCXBpdGNoWzJdID0gaW1nLT5waXhlbG1hcFsyXS5waXRjaDsNCj4gPiArCQls b29wID0gSFdEX1ZJSUZfTUFYX1BMQU5FX05VTTsNCj4gPiArCQlrID0gMVU7DQo+ID4gKwkJclsw XSA9IDFVOw0KPiA+ICsJCXJbMV0gPSAxVTsNCj4gPiArCQlyWzJdID0gMVU7DQo+ID4gKwkJYnJl YWs7DQo+ID4gKwljYXNlIEhXRF9WSUlGX1lDQkNSNDIyXzE2X1BMQU5BUjoNCj4gPiArCQlpbWdf c3RhcnRfYWRkclswXSA9ICh1MzIpaW1nLT5waXhlbG1hcFswXS5wbWFwX3BhZGRyOw0KPiA+ICsJ CWltZ19zdGFydF9hZGRyWzFdID0gKHUzMilpbWctPnBpeGVsbWFwWzFdLnBtYXBfcGFkZHI7DQo+ ID4gKwkJaW1nX3N0YXJ0X2FkZHJbMl0gPSAodTMyKWltZy0+cGl4ZWxtYXBbMl0ucG1hcF9wYWRk cjsNCj4gPiArCQlwaXRjaFswXSA9IGltZy0+cGl4ZWxtYXBbMF0ucGl0Y2g7DQo+ID4gKwkJcGl0 Y2hbMV0gPSBpbWctPnBpeGVsbWFwWzFdLnBpdGNoOw0KPiA+ICsJCXBpdGNoWzJdID0gaW1nLT5w aXhlbG1hcFsyXS5waXRjaDsNCj4gPiArCQlsb29wID0gSFdEX1ZJSUZfTUFYX1BMQU5FX05VTTsN Cj4gPiArCQlrID0gMlU7DQo+ID4gKwkJclswXSA9IDFVOw0KPiA+ICsJCXJbMV0gPSAyVTsNCj4g PiArCQlyWzJdID0gMlU7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIEhXRF9WSUlGX1JHQjE2 MTYxNl9ZQ0JDUjQ0NF8xNl9QTEFOQVI6DQo+ID4gKwkJaW1nX3N0YXJ0X2FkZHJbMF0gPSAodTMy KWltZy0+cGl4ZWxtYXBbMF0ucG1hcF9wYWRkcjsNCj4gPiArCQlpbWdfc3RhcnRfYWRkclsxXSA9 ICh1MzIpaW1nLT5waXhlbG1hcFsxXS5wbWFwX3BhZGRyOw0KPiA+ICsJCWltZ19zdGFydF9hZGRy WzJdID0gKHUzMilpbWctPnBpeGVsbWFwWzJdLnBtYXBfcGFkZHI7DQo+ID4gKwkJcGl0Y2hbMF0g PSBpbWctPnBpeGVsbWFwWzBdLnBpdGNoOw0KPiA+ICsJCXBpdGNoWzFdID0gaW1nLT5waXhlbG1h cFsxXS5waXRjaDsNCj4gPiArCQlwaXRjaFsyXSA9IGltZy0+cGl4ZWxtYXBbMl0ucGl0Y2g7DQo+ ID4gKwkJbG9vcCA9IEhXRF9WSUlGX01BWF9QTEFORV9OVU07DQo+ID4gKwkJayA9IDJVOw0KPiA+ ICsJCXJbMF0gPSAxVTsNCj4gPiArCQlyWzFdID0gMVU7DQo+ID4gKwkJclsyXSA9IDFVOw0KPiA+ ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr CX0NCj4gDQo+IFRoaXMgaXMgbG90cyBvZiBjb2RlIHRoYXQgY291bGQgYmUgcmVwbGFjZWQgd2l0 aCBzdGF0aWMgZGF0YS4gQ3JlYXRlDQo+IA0KPiBzdHJ1Y3QgdmlpZl9mb3JtYXRfaW5mbyB7DQo+ IAl1MzIgZm9ybWF0Ow0KPiAJdW5zaWduZWQgaW50IG51bV9wbGFuZXM7DQo+IAl1bnNpZ25lZCBp bnQgYnBwOw0KPiAJLyogd2hhdGV2ZXIgb3RoZXIgZmllbGRzIGFyZSBuZWVkZWQgKi8NCj4gfTsN Cj4gDQo+IGluIHZpaWYuaCwgYW5kIGFkZCB0byB2aWlmLmMgYSBzdGF0aWMgdGFibGUgb2YgdGhv c2UNCj4gDQo+IHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlpZl9mb3JtYXRfaW5mbyB2aWlmX2Zvcm1h dHNbXSA9IHsNCj4gCXsNCj4gCQkuZm9ybWF0ID0gSFdEX1ZJSUZfWUNCQ1I0MjJfOF9QQUNLRUQs DQo+IAkJLm51bV9wbGFuZXMgPSAxDQo+IAkJLmJwcCA9IDIsDQo+IAl9LCB7DQo+IAkJLi4uDQo+ IAl9LA0KPiB9Ow0KPiANCj4gd2l0aCBhIGxvb2t1cCBmdW5jdGlvbg0KPiANCj4gY29uc3Qgc3Ry dWN0IHZpaWZfZm9ybWF0X2luZm8gdmlpZl9mb3JtYXRfaW5mbyh1MzIgZm9ybWF0KQ0KPiB7DQo+ IAl1bnNpZ25lZCBpbnQgaTsNCj4gDQo+IAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2aWlm X2Zvcm1hdHMpOyArK2kpIHsNCj4gCQlpZiAodmlpZl9mb3JtYXRzW2ldLmZvcm1hdCA9PSBmb3Jt YXQpDQo+IAkJCXJldHVybiAmdmlpZl9mb3JtYXRzW2ldOw0KPiAJfQ0KPiANCj4gCXJldHVybiBO VUxMOw0KPiB9DQo+IA0KPiBZb3UgY2FuIHRoZW4gdXNlIHRoaXMgd2hlcmV2ZXIgeW91IG5lZWQg cGVyLWZvcm1hdCBpbmZvcm1hdGlvbiB0aHJvdWdoDQo+IHRoZSBkcml2ZXIuIEkgc3VzcGVjdCBp dCB3aWxsIGJlIHVzZWZ1bCB0byBzdG9yZSBvdGhlciBwZXItZm9ybWF0DQo+IGluZm9ybWF0aW9u LCBzdWNoIGFzIHRoZSBWNEwyIHBpeGVsIGZvcm1hdCBmb3IgaW5zdGFuY2UuDQo+IA0KPiBOb3cg dGhhdCBJIHdyb3RlIHRoaXMsIGl0IHNlZW1zIHlvdSBhbHJlYWR5IGhhdmUgc3VjaCBhIHN0cnVj dHVyZSBjYWxsZWQNCj4gdmlpZl9mbXQgaW4gYSBzdWJzZXF1ZW50IHBhdGNoLCB3aXRoIGEgc3Rh dGljIGFycmF5LiBNb3ZlIHRoZW0gdG8gdmlpZi5jDQo+IGFuZCB2aWlmLmgsIGV4dGVuZCB0aGUg c3RydWN0dXJlIHdpdGggdGhlIGhhcmR3YXJlIGZvcm1hdCwgYXJlIHVzZSBpdA0KPiB0aHJvdWdo IHRoZSBkcml2ZXIuDQoNClRoYW5rIHlvdSBmb3IgdGhlIGRldGFpbGVkIGFkdmljZS4NCkknbGwg bW92ZSBpdCB0byBhIG5ldyB0YWJsZS4NCg0KPiA+ICsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBs b29wOyBpKyspIHsNCj4gPiArCQl2YWwgPSBtYXgoKChpbWctPndpZHRoICogaykgLyByW2ldKSwg MTI4VSk7DQo+ID4gKwkJaWYgKHBpdGNoW2ldIDwgdmFsIHx8IHBpdGNoW2ldID4gSFdEX1ZJSUZf TUFYX1BJVENIX0lTUCB8fA0KPiA+ICsJCSAgICAoKHBpdGNoW2ldICUgcGl0Y2hfYWxpZ24pICE9 IDBVKSB8fCAoKGltZ19zdGFydF9hZGRyW2ldICUNCj4gNFUpICE9IDBVKSkgew0KPiA+ICsJCQly ZXR1cm4gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJd3JpdGVsKGlt Z19zdGFydF9hZGRyWzBdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDJpc3AucG9zdFtwb3N0X2lk XS5MMl9QT1NUX09VVF9TVEFEUl9HKTsNCj4gPiArCXdyaXRlbChwaXRjaFswXSwNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwyaXNwLnBvc3RbcG9zdF9pZF0uTDJfUE9TVF9PVVRfUElUQ0hfRyk7DQo+ ID4gKwlpZiAobG9vcCA9PSBIV0RfVklJRl9NQVhfUExBTkVfTlVNKSB7DQo+ID4gKwkJd3JpdGVs KGltZ19zdGFydF9hZGRyWzFdLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwyaXNwLnBv c3RbcG9zdF9pZF0uTDJfUE9TVF9PVVRfU1RBRFJfQik7DQo+ID4gKwkJd3JpdGVsKGltZ19zdGFy dF9hZGRyWzJdLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwyaXNwLnBvc3RbcG9zdF9p ZF0uTDJfUE9TVF9PVVRfU1RBRFJfUik7DQo+ID4gKwkJd3JpdGVsKHBpdGNoWzFdLA0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDJpc3AucG9zdFtwb3N0X2lkXS5MMl9QT1NUX09VVF9QSVRDSF9CKTsN Cj4gPiArCQl3cml0ZWwocGl0Y2hbMl0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMmlzcC5wb3N0 W3Bvc3RfaWRdLkwyX1BPU1RfT1VUX1BJVENIX1IpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8q IFNldCBDUk9QICovDQo+ID4gKwl2YWwgPSAoc3JjLT55IDw8IDE2VSkgfCBzcmMtPng7DQo+ID4g Kwl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDJpc3AucG9zdFtwb3N0X2lkXS5M Ml9QT1NUX0NBUF9PRkZTRVQpOw0KPiA+ICsJdmFsID0gKHNyYy0+aCA8PCAxNlUpIHwgc3JjLT53 Ow0KPiA+ICsJd3JpdGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwyaXNwLnBvc3RbcG9z dF9pZF0uTDJfUE9TVF9DQVBfU0laRSk7DQo+ID4gKw0KPiA+ICsJLyogU2V0IG91dHB1dCBwcm9j ZXNzICovDQo+ID4gKwl3cml0ZWwob3V0X3Byb2Nlc3MtPmhhbGZfc2NhbGUsDQo+ID4gKw0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDJpc3AucG9zdFtwb3N0X2lkXS5MMl9QT1NUX0hBTEZfU0NBTEVf RU4pOw0KPiA+ICsJd3JpdGVsKG91dF9wcm9jZXNzLT5zZWxlY3RfY29sb3IsDQo+ICZyZXMtPmNh cHR1cmVfcmVnLT5sMmlzcC5wb3N0W3Bvc3RfaWRdLkwyX1BPU1RfQ19TRUxFQ1QpOw0KPiA+ICsJ d3JpdGVsKCh1MzIpb3V0X3Byb2Nlc3MtPmFscGhhLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDJp c3AucG9zdFtwb3N0X2lkXS5MMl9QT1NUX09QT1JUQUxQKTsNCj4gPiArCXdyaXRlbChpbWctPmZv cm1hdCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwyaXNwLnBvc3RbcG9zdF9pZF0uTDJfUE9TVF9P UE9SVEZNVCk7DQo+ID4gKw0KPiA+ICsJLyogVXBkYXRlIFJPSSBhcmVhIGFuZCBpbnB1dCB0byBl YWNoIFBPU1QgKi8NCj4gPiArCXJlcy0+bDJfcm9pX3BhdGhfaW5mby5wb3N0X2VuYWJsZV9mbGFn W3Bvc3RfaWRdID0gdHJ1ZTsNCj4gPiArCXJlcy0+bDJfcm9pX3BhdGhfaW5mby5wb3N0X2Nyb3Bf eFtwb3N0X2lkXSA9IHNyYy0+eDsNCj4gPiArCXJlcy0+bDJfcm9pX3BhdGhfaW5mby5wb3N0X2Ny b3BfeVtwb3N0X2lkXSA9IHNyYy0+eTsNCj4gPiArCXJlcy0+bDJfcm9pX3BhdGhfaW5mby5wb3N0 X2Nyb3Bfd1twb3N0X2lkXSA9IHNyYy0+dzsNCj4gPiArCXJlcy0+bDJfcm9pX3BhdGhfaW5mby5w b3N0X2Nyb3BfaFtwb3N0X2lkXSA9IHNyYy0+aDsNCj4gPiArCWh3ZF92aWlmX2wyX3NldF9yb2lf cGF0aChyZXMpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gDQo+IFtzbmlw XQ0KPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS9o d2RfdmlpZi5oDQo+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS9od2RfdmlpZi5o DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMC4uMTAwYWZk YTg0MzYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS92aXNjb250aS9od2RfdmlpZi5oDQo+ID4gQEAgLTAsMCArMSw3MTAgQEANCj4gPiArLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlICovDQo+ID4gKy8q IFRvc2hpYmEgVmlzY29udGkgVmlkZW8gQ2FwdHVyZSBTdXBwb3J0DQo+ID4gKyAqDQo+ID4gKyAq IChDKSBDb3B5cmlnaHQgMjAyMiBUT1NISUJBIENPUlBPUkFUSU9ODQo+ID4gKyAqIChDKSBDb3B5 cmlnaHQgMjAyMiBUb3NoaWJhIEVsZWN0cm9uaWMgRGV2aWNlcyAmIFN0b3JhZ2UgQ29ycG9yYXRp b24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIEhXRF9WSUlGX0gNCj4gPiArI2RlZmlu ZSBIV0RfVklJRl9IDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvZXJybm8uaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvdmlz Y29udGlfdmlpZi5oPg0KPiA+ICsNCj4gPiArZW51bSBod2RfcG93ZXJfY3RybCB7DQo+ID4gKwlI V0RfUE9XRVJfT0ZGID0gMCwgLyoqPCBQb3dlciBvZmYgKi8NCj4gPiArCUhXRF9QT1dFUl9PTiAv Kio8IFBvd2VyIG9uICAqLw0KPiA+ICt9Ow0KPiANCj4gTm90IHVzZWQuDQoNCkknbGwgcmVtb3Zl IGl0Lg0KDQo+ID4gKw0KPiA+ICsvKiBNSVBJIENTSTIgRGF0YSBUeXBlcyAqLw0KPiA+ICsjZGVm aW5lIFZJU0NPTlRJX0NTSTJfRFRfWVVWNDIyOEIgIDB4MUUNCj4gPiArI2RlZmluZSBWSVNDT05U SV9DU0kyX0RUX1lVVjQyMjEwQiAweDFGDQo+ID4gKyNkZWZpbmUgVklTQ09OVElfQ1NJMl9EVF9S R0I1NjUJICAgMHgyMg0KPiA+ICsjZGVmaW5lIFZJU0NPTlRJX0NTSTJfRFRfUkdCODg4CSAgIDB4 MjQNCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0kyX0RUX1JBVzgJICAgMHgyQQ0KPiA+ICsjZGVm aW5lIFZJU0NPTlRJX0NTSTJfRFRfUkFXMTAJICAgMHgyQg0KPiA+ICsjZGVmaW5lIFZJU0NPTlRJ X0NTSTJfRFRfUkFXMTIJICAgMHgyQw0KPiA+ICsjZGVmaW5lIFZJU0NPTlRJX0NTSTJfRFRfUkFX MTQJICAgMHgyRA0KPiANCj4gWW91IGNhbiBkcm9wIHRoaXMgYW5kIHJlcGxhY2UgaXQgd2l0aCB0 aGUgbWFjcm9zIGRlZmluZWQgCWluDQo+IGluY2x1ZGUvbWVkaWEvbWlwaS1jc2kyLmguDQoNCkkn bGwgdXNlIHRoZSBkZWZpbml0aW9ucyBpbiBtZWRpYS9taXBpLWNzaTIuaCAuDQoNCj4gPiArDQo+ ID4gKy8qIGh3ZF92aWlmX2VuYWJsZV9mbGFnICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfRElT QUJMRSAoMFUpDQo+IA0KPiBObyBuZWVkIGZvciBwYXJlbnRoZXNlcywgaGVyZSBhbmQgYmVsb3cu DQoNCkknbGwgZml4IGl0LiBTYW1lIGZvciBzaW1pbGFyIGRlZmluaXRpb25zLg0KDQo+ID4gKyNk ZWZpbmUgSFdEX1ZJSUZfRU5BQkxFCSAoMVUpDQo+IA0KPiBmYWxzZS90cnVlIG9yIDAvMSB3b3Vs ZCBiZSBtb3JlIHJlYWRhYmxlIGluIHRoZSBjb2RlLg0KDQpGb3Igc3RydWN0IG1lbWJlcnMgYW5k IHZhcmlhYmxlcywgSSdsbCB1c2UgZmFsc2UvdHJ1ZS4NCmUuZzogImVuYWJsZSAhPSBIV0RfVklJ Rl9FTkFCTEUiOyB0aGUgdmFyaWFibGUgImhhbGZfc2NhbGUiIHNob3VsZCBiZSBib29sZWFuIHR5 cGUgaW5zdGVhZCBvZiB1MzIsIGFzIFNha2FyaSBhZHZpc2VkLg0KDQpGb3Igd3JpdGluZyByZWdp c3RlcnMuIDAvMSB3b3VsZCBiZSBiZXR0ZXIuDQplLmc6ICJ3cml0ZWwoSFdEX1ZJSUZfRU5BQkxF LCAmcmVnX2wyaXNwX3Bvc3QtPmNzYy5NVEIpOyINCg0KPiA+ICsNCj4gPiArLyogaHdkX3ZpaWZf bWVtb3J5X3N5bmNfdHlwZSAqLw0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01FTV9TWU5DX0lOVEVS TkFMICgwVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9NRU1fU1lOQ19DU0kyCSAgICgxVSkNCj4g DQo+IFRoaXMgaXNuJ3QgdXNlZCBhbnl3aGVyZS4NCg0KSSdsbCByZW1vdmUgdGhlbS4NCg0KPiA+ ICsNCj4gPiArLyogaHdkX3ZpaWZfY29sb3JfZm9ybWF0ICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJ SUZfWUNCQ1I0MjJfOF9QQUNLRUQJICAgICAgKDBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX1JH Qjg4OF9QQUNLRUQJCSAgICAgICgxVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9BUkdCODg4OF9Q QUNLRUQJICAgICAgKDNVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX1lDQkNSNDIyXzhfUExBTkFS CSAgICAgICg4VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9SR0I4ODhfWUNCQ1I0NDRfOF9QTEFO QVIgICAgICg5VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9PTkVfQ09MT1JfOAkJICAgICAgKDEx VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9ZQ0JDUjQyMl8xNl9QTEFOQVIJICAgICAgKDEyVSkN Cj4gPiArI2RlZmluZSBIV0RfVklJRl9SR0IxNjE2MTZfWUNCQ1I0NDRfMTZfUExBTkFSICgxM1Up DQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfT05FX0NPTE9SXzE2CQkgICAgICAoMTVVKQ0KPiANCj4g Q291bGQgdGhpcyBiZSB0dXJuZWQgaW50byBhbiBlbnVtID8NCj4gDQo+IGVudW0gaHdkX3ZpaWZf Y29sb3JfZm9ybWF0IHsNCj4gCUhXRF9WSUlGX1lDQkNSNDIyXzhfUEFDS0VECSAgICAgICA9IDBV LA0KPiAJSFdEX1ZJSUZfUkdCODg4X1BBQ0tFRAkJICAgICAgID0gMVUsDQo+IAlIV0RfVklJRl9B UkdCODg4OF9QQUNLRUQJICAgICAgID0gM1UsDQo+IAlIV0RfVklJRl9ZQ0JDUjQyMl84X1BMQU5B UgkgICAgICAgPSA4VSwNCj4gCUhXRF9WSUlGX1JHQjg4OF9ZQ0JDUjQ0NF84X1BMQU5BUiAgICAg ID0gOVUsDQo+IAlIV0RfVklJRl9PTkVfQ09MT1JfOAkJICAgICAgID0gMTFVLA0KPiAJSFdEX1ZJ SUZfWUNCQ1I0MjJfMTZfUExBTkFSCSAgICAgICA9IDEyVSwNCj4gCUhXRF9WSUlGX1JHQjE2MTYx Nl9ZQ0JDUjQ0NF8xNl9QTEFOQVIgID0gMTNVLA0KPiAJSFdEX1ZJSUZfT05FX0NPTE9SXzE2CQkg ICAgICAgPSAxNVUsDQo+IH07DQo+IA0KPiBUaGVuIHlvdSdsbCBiZSBhYmxlIHRvIHVzZSB0aGUg ZW51bSBpbiB2YXJpYWJsZXMsIGZ1bmN0aW9uIHBhcmFtZXRlcnMNCj4gYW5kIHN0cnVjdHVyZSBm aWVsZHMsIGZvciBpbnN0YW5jZQ0KPiANCj4gc3RydWN0IGh3ZF92aWlmX2ltZyB7DQo+IAl1MzIg d2lkdGg7DQo+IAl1MzIgaGVpZ2h0Ow0KPiAJZW51bSBod2RfdmlpZl9jb2xvcl9mb3JtYXQgZm9y bWF0Ow0KPiAJc3RydWN0IGh3ZF92aWlmX3BpeGVsbWFwIHBpeGVsbWFwWzNdOw0KPiB9Ow0KPiAN Cj4gd2hpY2ggd2lsbCBtYWtlIGl0IGNsZWFyZXIgdGhyb3VnaCB0aGUgY29kZSB3aGljaCB0eXBl cyBhbmQgdmFsdWVzIGFyZQ0KPiBleHBlY3RlZCBpbiBhIGdpdmVuIHBsYWNlLg0KPiANCj4gU2Ft ZSBmb3IgYWxsIG90aGVyIG1hY3JvcyB3aGVyZSB0aGlzIHdvdWxkIGJlIGFwcGxpY2FibGUuDQoN CkknbGwgbW92ZSB0aGVtIHRvIGVudW0uIFNhbWUgZm9yIHNpbWlsYXIgY2FzZXMuDQoNCj4gPiAr DQo+ID4gKy8qIGh3ZF92aWlmX3Jhd19wYWNrX21vZGUgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJ Rl9SQVdQQUNLX0RJU0FCTEUgICgwVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9SQVdQQUNLX01T QkZJUlNUICgyVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9SQVdQQUNLX0xTQkZJUlNUICgzVSkN Cj4gPiArDQo+ID4gKy8qIGh3ZF92aWlmX3l1dl9jb252ZXJzaW9uX21vZGUgKi8NCj4gPiArI2Rl ZmluZSBIV0RfVklJRl9ZVVZfQ09OVl9SRVBFQVQJKDBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlG X1lVVl9DT05WX0lOVEVSUE9MQVRJT04gKDFVKQ0KPiA+ICsNCj4gPiArLyogaHdkX3ZpaWZfZ2Ft bWFfdGFibGVfbW9kZSAqLw0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0dBTU1BX0NPTVBSRVNTRUQg KDBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0dBTU1BX0xJTkVBUgkgICgxVSkNCj4gPiArDQo+ ID4gKy8qIGh3ZF92aWlmX291dHB1dF9jb2xvcl9tb2RlICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJ SUZfQ09MT1JfWV9HICAgICAoMFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfQ09MT1JfVV9CICAg ICAoMVUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfQ09MT1JfVl9SICAgICAoMlUpDQo+ID4gKyNk ZWZpbmUgSFdEX1ZJSUZfQ09MT1JfWVVWX1JHQiAoNFUpDQo+ID4gKw0KPiA+ICsvKiBod2Rfdmlp Zl9od19wYXJhbXMgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9NQVhfQ0gJICAgICAgICg2VSkN Cj4gDQo+IFRoaXMgaXNuJ3QgdXNlZC4NCj4gDQo+IENvdWxkIHlvdSBnbyB0aHJvdWdoIHRoaXMg ZmlsZSBhbmQgZGVsZXRlIGFsbCB0aGUgbWFjcm9zIHRoYXQgYXJlIG5vdA0KPiB1c2VkIGFuZCB0 aGF0IHlvdSBkb24ndCBwbGFuIHRvIHVzZSBpbiB0aGUgZnV0dXJlID8NCg0KSSdsbCByZW1vdmUg dW51c2VkIGRlZmluaXRpb25zLg0KDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUFYX1BMQU5FX05V TSAoM1UpDQo+IA0KPiBUaGlzIGlzIHVzZWQgaW5zaWRlIHRoZSBod2RfdmlpZl9sMl9zZXRfaW1n X3RyYW5zbWlzc2lvbigpIGZ1bmN0aW9uDQo+IG9ubHkuIEknbSByZWFsbHkgdGVtcHRlZCB0byBt b3ZlIGRlZmluaXRpb25zIG9mIG1hY3JvcyB0aGF0IGFyZSBsb2NhbCB0bw0KPiBhIGZ1bmN0aW9u IGluIHRoZSBjb3JyZXNwb25kaW5nIC5jIGZpbGUsIGp1c3QgYmVmb3JlIHRoZSBmdW5jdGlvbi4g VGhpcw0KPiBmaWxlIGlzIGh1Z2UsIGFuZCBxdWl0ZSBkaWZmaWN1bHQgdG8gcmVhZCwgYW55dGhp bmcgdGhhdCB3b3VsZCBzaHJpbmsgaXQNCj4gd291bGQgYmUgbmljZS4NCg0KSSdsbCBtb3ZlIGRl ZmluaXRpb25zIHRvIGxvY2FsIHBsYWNlIGFzIHBvc3NpYmxlLg0KDQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogZW51bSBod2RfdmlpZl9jc2kyX2RwaHkgLSBELVBIWSBMYW5lIGFzc2lnbm1lbnQN Cj4gPiArICoNCj4gPiArICogc3BlY2lmaWVzIHdoaWNoIGxpbmUoTDAtTDMpIGlzIGFzc2lnbmVk IHRvIEQwLUQzDQo+ID4gKyAqLw0KPiA+ICtlbnVtIGh3ZF92aWlmX2NzaTJfZHBoeSB7DQo+ID4g KwlIV0RfVklJRl9DU0kyX0RQSFlfTDBMMUwyTDMgPSAwVSwNCj4gPiArCUhXRF9WSUlGX0NTSTJf RFBIWV9MMEwzTDFMMiA9IDFVLA0KPiA+ICsJSFdEX1ZJSUZfQ1NJMl9EUEhZX0wwTDJMM0wxID0g MlUsDQo+ID4gKwlIV0RfVklJRl9DU0kyX0RQSFlfTDBMMUwzTDIgPSA0VSwNCj4gPiArCUhXRF9W SUlGX0NTSTJfRFBIWV9MMEwzTDJMMSA9IDVVLA0KPiA+ICsJSFdEX1ZJSUZfQ1NJMl9EUEhZX0ww TDJMMUwzID0gNlUNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIGh3ZF92aWlmX2NzaTJyeF9jYWxf c3RhdHVzICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfQ1NJMl9DQUxfTk9UX0RPTkUgKDBVKQ0K PiA+ICsjZGVmaW5lIEhXRF9WSUlGX0NTSTJfQ0FMX1NVQ0NFU1MgICgxVSkNCj4gPiArI2RlZmlu ZSBIV0RfVklJRl9DU0kyX0NBTF9GQUlMCSAgICgyVSkNCj4gDQo+IEN1c3RvbSBlcnJvciBjb2Rl cyBhcmUgdXN1YWxseSBmcm93bmVkIHVwb24sIGVzcGVjaWFsbHkgd2hlbiBzdWNjZXNzIGlzDQo+ IHNpZ25hbGVkIGJ5IGEgdmFsdWUgb3RoZXIgdGhhbiAwLiBIb3cgYWJvdXQgdXNpbmcgMCBmb3Ig c3VjY2VzcywgLUVBR0FJTg0KPiBmb3IgTk9UX0RPTkUsIGFuZCAtRUlPIGZvciBmYWlsdXJlID8g U2FtZSBjb21tZW50IGZvciBvdGhlciBjdXN0b20NCj4gc3RhdHVzIHZhbHVlcywgaWYgYW55Lg0K DQpUaGVzZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIGRlc2NyaXB0aW9uIG9mIGVhY2ggQ1NJMiBkYXRh IGxhbmUgaW4gVjRMMl9DSURfVklTQ09OVElfVklJRl9DU0kyUlhfR0VUX0NBTElCUkFUSU9OX1NU QVRVUyBjb250cm9sLA0KVGhleSBhcmUgbm90IHVzZWQgZm9yIHB1YmxpYyBmdW5jdGlvbnMncyBy ZXR1cm4gY29kZS4NCkNhbiBJIHVzZSAtRUFHQUlOIGFuZCAtRUlPIHRvIGRlc2NyaWJlIHN0YXR1 cyBvZiBhIGhhcmR3YXJlPw0KDQo+ID4gKw0KPiA+ICsvKiBod2RfdmlpZl9jc2kycnhfbm90X2Nh cHR1cmUgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9DU0kyX05PVF9DQVBUVVJFICgtMSkgLyoq PCBjc2kyIG5vdCBjYXB0dXJlICovDQo+IA0KPiBbc25pcF0NCj4gDQo+ID4gKw0KPiA+ICsvKiBo d2RfdmlpZl9sMV9pbnB1dF9tb2RlICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfSU5QVVRf SERSCQkgICgwVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9JTlBVVF9QV0wJCSAgKDFVKQ0K PiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wxX0lOUFVUX1NEUgkJICAoMlUpDQo+ID4gKyNkZWZpbmUg SFdEX1ZJSUZfTDFfSU5QVVRfSERSX0lNR19DT1JSRUNUICgzVSkNCj4gPiArI2RlZmluZSBIV0Rf VklJRl9MMV9JTlBVVF9QV0xfSU1HX0NPUlJFQ1QgKDRVKQ0KPiA+ICsNCj4gPiArLyogaHdkX3Zp aWZfbDFfcmF3X2NvbG9yX2ZpbHRlcl9tb2RlICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFf UkFXX0dSX1JfQl9HQiAoMFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfUkFXX1JfR1JfR0Jf QiAoMVUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfUkFXX0JfR0JfR1JfUiAoMlUpDQo+ID4g KyNkZWZpbmUgSFdEX1ZJSUZfTDFfUkFXX0dCX0JfUl9HUiAoM1UpDQo+ID4gKw0KPiA+ICsvKiBo d2RfdmlpZl9sMV9pbnB1dF9pbnRlcnBvbGF0aW9uX21vZGUgKi8NCj4gPiArI2RlZmluZSBIV0Rf VklJRl9MMV9JTlBVVF9JTlRFUlBPTEFUSU9OX0xJTkUgICgwVSkNCj4gPiArI2RlZmluZSBIV0Rf VklJRl9MMV9JTlBVVF9JTlRFUlBPTEFUSU9OX1BJWEVMICgxVSkNCj4gPiArDQo+ID4gKy8qIGh3 ZF92aWlmX2wxX2ltZ19zZW5zICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfSU1HX1NFTlNJ VElWSVRZX0hJR0ggICAgICAgKDBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wxX0lNR19TRU5T SVRJVklUWV9NSURETEVfTEVEICgxVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9JTUdfU0VO U0lUSVZJVFlfTE9XCSAgICAgICAoMlUpDQo+ID4gKw0KPiA+ICsvKiBod2RfdmlpZl9sMV9kcGMg Ki8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9EUENfMVBJWEVMICgwVSkNCj4gPiArI2RlZmlu ZSBIV0RfVklJRl9MMV9EUENfMlBJWEVMICgxVSkNCj4gPiArDQo+ID4gKy8qIGh3ZF92aWlmX2wx X3JjbnJfaHJ5X3R5cGUgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9SQ05SX0xPV19SRVNP TFVUSU9OCSAgICAgICAoMFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfUkNOUl9NSURETEVf UkVTT0xVVElPTiAgICAgKDFVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wxX1JDTlJfSElHSF9S RVNPTFVUSU9OICAgICAgICgyVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9SQ05SX1VMVFJB X0hJR0hfUkVTT0xVVElPTiAoM1UpDQo+ID4gKw0KPiA+ICsvKiBod2RfdmlpZl9sMV9yY25yX21z Zl9ibGVuZF9yYXRpbyAqLw0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wxX01TRl9CTEVORF9SQVRJ T18wX0RJVl82NCAoMFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfTVNGX0JMRU5EX1JBVElP XzFfRElWXzY0ICgxVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9NU0ZfQkxFTkRfUkFUSU9f Ml9ESVZfNjQgKDJVKQ0KPiA+ICsNCj4gPiArLyogaHdkX3ZpaWZfbDFfaGRycyAqLw0KPiA+ICsj ZGVmaW5lIEhXRF9WSUlGX0wxX0hEUlNfTk9UX1VTRV9NSURETEVfU0VOU19JTUFHRSAoMFUpDQo+ ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfSERSU19VU0VfTUlERExFX1NFTlNfSU1BR0UJICAgKDFV KQ0KPiA+ICsNCj4gPiArLyogaHdkX3ZpaWZfbDFfbHNjX3BhcmFfbWFnICovDQo+ID4gKyNkZWZp bmUgSFdEX1ZJSUZfTDFfUEFSQV9DT0VGX0dBSU5fT05FX0VJR0hUSCAoMFUpDQo+ID4gKyNkZWZp bmUgSFdEX1ZJSUZfTDFfUEFSQV9DT0VGX0dBSU5fT05FX0ZPVVJUSCAoMVUpDQo+ID4gKyNkZWZp bmUgSFdEX1ZJSUZfTDFfUEFSQV9DT0VGX0dBSU5fT05FX1NFQ09ORCAoMlUpDQo+ID4gKyNkZWZp bmUgSFdEX1ZJSUZfTDFfUEFSQV9DT0VGX0dBSU5fT05FX0ZJUlNUICAoM1UpDQo+ID4gKw0KPiA+ ICsvKiBod2RfdmlpZl9sMV9sc2NfZ3JpZF9tYWcgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9M MV9HUklEX0NPRUZfR0FJTl9YMSAoMFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfR1JJRF9D T0VGX0dBSU5fWDIgKDFVKQ0KPiA+ICsNCj4gPiArLyogaHdkX3ZpaWZfbDFfZGVtb3NhaWMgKi8N Cj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9ERU1PU0FJQ19BQ1BJICgwVSkNCj4gPiArI2RlZmlu ZSBIV0RfVklJRl9MMV9ERU1PU0FJQ19ETUcgICgxVSkNCj4gPiArDQo+ID4gKy8qIGh3ZF92aWlm X2wxX2F3Yl9yZXN0YXJ0X2NvbmQgKi8NCj4gPiArLyogbWFjcm9zIGZvciBMMUlTUCBjb25kaXRp b24gdG8gcmVzdGFydCBhdXRvIHdoaXRlIGJhbGFuY2UgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJ Rl9MMV9BV0JfUkVTVEFSVF9OTwkgKDBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wxX0FXQl9S RVNUQVJUXzEyOEZSQU1FICgxVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9BV0JfUkVTVEFS VF82NEZSQU1FCSAoMlUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfQVdCX1JFU1RBUlRfMzJG UkFNRQkgKDNVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wxX0FXQl9SRVNUQVJUXzE2RlJBTUUJ ICg0VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9BV0JfUkVTVEFSVF84RlJBTUUJICg1VSkN Cj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9BV0JfUkVTVEFSVF80RlJBTUUJICg2VSkNCj4gPiAr I2RlZmluZSBIV0RfVklJRl9MMV9BV0JfUkVTVEFSVF8yRlJBTUUJICg3VSkNCj4gPiArDQo+ID4g Ky8qIGh3ZF92aWlmX2wxX2F3Yl9tYWcgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9BV0Jf T05FX1NFQ09ORCAoMFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfQVdCX1gxCSAgICgxVSkN Cj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9BV0JfWDIJICAgKDJVKQ0KPiA+ICsjZGVmaW5lIEhX RF9WSUlGX0wxX0FXQl9YNAkgICAoM1UpDQo+ID4gKw0KPiA+ICsvKiBod2RfdmlpZl9sMV9hd2Jf YXJlYV9tb2RlICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDFfQVdCX0FSRUFfTU9ERTAgKDBV KQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wxX0FXQl9BUkVBX01PREUxICgxVSkNCj4gPiArI2Rl ZmluZSBIV0RfVklJRl9MMV9BV0JfQVJFQV9NT0RFMiAoMlUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJ SUZfTDFfQVdCX0FSRUFfTU9ERTMgKDNVKQ0KPiA+ICsNCj4gPiArLyogaHdkX3ZpaWZfbDFfaGRy Y190b25lX3R5cGUgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9IRFJDX1RPTkVfVVNFUiAg ICgwVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9MMV9IRFJDX1RPTkVfUFJFU0VUICgxVSkNCj4g PiArDQo+ID4gKy8qIGh3ZF92aWlmX2wxX2Jpbl9tb2RlICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJ SUZfTDFfSElTVF9CSU5fTU9ERV9MSU5FQVIgKDBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wx X0hJU1RfQklOX01PREVfTE9HCSAoMVUpDQo+ID4gKw0KPiA+ICsvKiBod2RfdmlpZl9sMl91bmRp c3RfbW9kZSAqLw0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wyX1VORElTVF9QT0xZCQkoMFUpDQo+ ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTDJfVU5ESVNUX0dSSUQJCSgxVSkNCj4gPiArI2RlZmluZSBI V0RfVklJRl9MMl9VTkRJU1RfUE9MWV9UT19HUklEICgyVSkNCj4gPiArI2RlZmluZSBIV0RfVklJ Rl9MMl9VTkRJU1RfR1JJRF9UT19QT0xZICgzVSkNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBz dHJ1Y3QgaHdkX3ZpaWZfY3NpMnJ4X2xpbmVfZXJyX3RhcmdldA0KPiA+ICsgKg0KPiA+ICsgKiBW aXJ0dWFsIENoYW5uZWwgYW5kIERhdGEgVHlwZSBwYWlyIGZvciBDU0kyUlggbGluZSBlcnJvciBt b25pdG9yDQo+ID4gKyAqDQo+ID4gKyAqIFdoZW4gMCBpcyBzZXQgdG8gZHQsIGxpbmUgZXJyb3Ig ZGV0ZWN0aW9uIGlzIGRpc2FibGVkLg0KPiA+ICsgKg0KPiA+ICsgKiAqIFZDIGNhbiBiZSAwIC4u IDMNCj4gPiArICogKiBEVCBjYW4gYmUgMCBvciAweDEwIC4uIDB4M0YNCj4gPiArICovDQo+ID4g KyNkZWZpbmUgVklTQ09OVElfQ1NJMl9FUlJPUl9NT05JVE9SU19OVU0gOA0KPiA+ICtzdHJ1Y3Qg aHdkX3ZpaWZfY3NpMnJ4X2xpbmVfZXJyX3RhcmdldCB7DQo+ID4gKwl1MzIgdmNbVklTQ09OVElf Q1NJMl9FUlJPUl9NT05JVE9SU19OVU1dOw0KPiA+ICsJdTMyIGR0W1ZJU0NPTlRJX0NTSTJfRVJS T1JfTU9OSVRPUlNfTlVNXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1 Y3QgaHdkX3ZpaWZfY3NpMnJ4X2lycV9tYXNrDQo+ID4gKyAqIEBtYXNrOiBtYXNrIHNldHRpbmcg Zm9yIENTSTJSWCBlcnJvciBpbnRlcnJ1cHRpb24NCj4gPiArICoNCj4gPiArICogKiBtYXNrWzBd OiBELVBIWSBmYXRhbCBlcnJvcg0KPiA+ICsgKiAqIG1hc2tbMV06IFBhY2tldCBmYXRhbCBlcnJv cg0KPiA+ICsgKiAqIG1hc2tbMl06IEZyYW1lIGZhdGFsIGVycm9yDQo+ID4gKyAqICogbWFza1sz XTogRC1QSFkgZXJyb3INCj4gPiArICogKiBtYXNrWzRdOiBQYWNrZXQgZXJyb3INCj4gPiArICog KiBtYXNrWzVdOiBMaW5lIGVycm9yDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFZJU0NPTlRJX0NT STJSWF9JUlFfTUFTS1NfTlVNCSAgICAgIDYNCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0kyUlhf SVJRX01BU0tfRFBIWV9GQVRBTCAgIDANCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0kyUlhfSVJR X01BU0tfUEFDS0VUX0ZBVEFMIDENCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0kyUlhfSVJRX01B U0tfRlJBTUVfRkFUQUwgIDINCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0kyUlhfSVJRX01BU0tf RFBIWV9FUlJPUiAgIDMNCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0kyUlhfSVJRX01BU0tfUEFD S0VUX0VSUk9SIDQNCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0kyUlhfSVJRX01BU0tfTElORV9F UlJPUiAgIDUNCj4gPiArc3RydWN0IGh3ZF92aWlmX2NzaTJyeF9pcnFfbWFzayB7DQo+ID4gKwl1 MzIgbWFza1tWSVNDT05USV9DU0kyUlhfSVJRX01BU0tTX05VTV07DQo+ID4gK307DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogc3RydWN0IGh3ZF92aWlmX2NzaTJyeF9wYWNrZXQgLSBDU0kyIHBh Y2tldCBpbmZvcm1hdGlvbg0KPiA+ICsgKiBAd29yZF9jb3VudDogd29yZCBjb3VudCBpbmNsdWRl ZCBpbiBvbmUgcGFja2V0W2J5dGVdIFswLi4xNjM4NF0NCj4gPiArICogQHBhY2tldF9udW06IHRo ZSBudW1iZXIgb2YgcGFja2V0IGluY2x1ZGVkIGluIG9uZSBwYWNrZXQgWzAuLjgxOTJdDQo+ID4g KyAqDQo+ID4gKyAqIGVhY2ggZWxlbWVudCBtZWFucyBhcyBiZWxvdy4NCj4gPiArICogKiBbMF06 IGVtYmVkZGVkIGRhdGEgb2YgTUFJTiB1bml0DQo+ID4gKyAqICogWzFdOiBsb25nIHBhY2tldCBk YXRhIG9mIE1BSU4gdW5pdA0KPiA+ICsgKiAqIFsyXTogZW1iZWRkZWQgZGF0YSBvZiBTVUIgdW5p dA0KPiA+ICsgKiAqIFszXTogbG9uZyBwYWNrZXQgZGF0YSBvZiBTVUIgdW5pdA0KPiA+ICsgKg0K PiA+ICsgKiBSZWdhcmRpbmcgd29yZF9jb3VudCBvZiBsb25nIHBhY2tldCBkYXRhLA0KPiA+ICsg KiB3b3JkIGNvdW50IG9mIG9kZCBsaW5lIG5lZWRzIHRvIGJlIHNldCBpbiBjYXNlIG9mIERUID0g MHgxOCwgMHgxOSwgMHgxQyBvcg0KPiAweDFELg0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBWSVND T05USV9DU0kyUlhfUEFDS0VUX1RZUEVTX05VTSAgICAgIDQNCj4gPiArI2RlZmluZSBWSVNDT05U SV9DU0kyUlhfUEFDS0VUX1RZUEVfRU1CX01BSU4gIDANCj4gPiArI2RlZmluZSBWSVNDT05USV9D U0kyUlhfUEFDS0VUX1RZUEVfTE9OR19NQUlOIDENCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0ky UlhfUEFDS0VUX1RZUEVfRU1CX1NVQiAgIDINCj4gPiArI2RlZmluZSBWSVNDT05USV9DU0kyUlhf UEFDS0VUX1RZUEVfTE9OR19TVUIgIDMNCj4gPiArc3RydWN0IGh3ZF92aWlmX2NzaTJyeF9wYWNr ZXQgew0KPiA+ICsJdTMyIHdvcmRfY291bnRbVklTQ09OVElfQ1NJMlJYX1BBQ0tFVF9UWVBFU19O VU1dOw0KPiA+ICsJdTMyIHBhY2tldF9udW1bVklTQ09OVElfQ1NJMlJYX1BBQ0tFVF9UWVBFU19O VU1dOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBod2RfdmlpZl9w aXhlbG1hcCAtIHBpeGVsbWFwIGluZm9ybWF0aW9uDQo+ID4gKyAqIEBwbWFwX3BhZGRyOiBzdGFy dCBhZGRyZXNzIG9mIHBpeGVsIGRhdGEocGh5c2ljYWwgYWRkcmVzcykuIDRieXRlDQo+IGFsaWdu bWVudC4NCj4gPiArICogQHBpdGNoOiBwaXRjaCBzaXplIG9mIHBpeGVsIG1hcFtieXRlXQ0KPiA+ ICsgKg0KPiA+ICsgKiBDb25kaXRpb24gb2YgcGl0Y2ggaW4gY2FzZSBvZiBMMklTUCBvdXRwdXQg aXMgYXMgYmVsb3cuDQo+ID4gKyAqICogbWF4OiAzMjcwNFtieXRlXQ0KPiA+ICsgKiAqIG1pbjog dGhlIGxhcmdlciB2YWx1ZSBvZiAoYWN0aXZlIHdpZHRoIG9mIGltYWdlICogayAvIHIpIGFuZCAx MjhbYnl0ZV0NCj4gPiArICogKiBhbGlnbm1lbnQ6IDY0W2J5dGVdDQo+ID4gKyAqDQo+ID4gKyAq IENvbmRpdGlvbiBvZiBwaXRjaCBpbiB0aGUgb3RoZXIgY2FzZXMgaXMgYXMgYmVsb3cuDQo+ID4g KyAqICogbWF4OiA2NTUzNltieXRlXQ0KPiA+ICsgKiAqIG1pbjogYWN0aXZlIHdpZHRoIG9mIGlt YWdlICogayAvIHJbYnl0ZV0NCj4gPiArICogKiBhbGlnbm1lbnQ6IDRbYnl0ZV0NCj4gPiArICoN Cj4gPiArICogayBpcyB0aGUgc2l6ZSBvZiAxIHBpeGVsIGFuZCB0aGUgdmFsdWUgaXMgYXMgYmVs b3cuDQo+ID4gKyAqICogSFdEX1ZJSUZfWUNCQ1I0MjJfOF9QQUNLRUQ6IDINCj4gPiArICogKiBI V0RfVklJRl9SR0I4ODhfUEFDS0VEOiAzDQo+ID4gKyAqICogSFdEX1ZJSUZfQVJHQjg4ODhfUEFD S0VEOiA0DQo+ID4gKyAqICogSFdEX1ZJSUZfWUNCQ1I0MjJfOF9QTEFOQVI6IDENCj4gPiArICog KiBIV0RfVklJRl9SR0I4ODhfWUNCQ1I0NDRfOF9QTEFOQVI6IDENCj4gPiArICogKiBIV0RfVklJ Rl9PTkVfQ09MT1JfODogMQ0KPiA+ICsgKiAqIEhXRF9WSUlGX1lDQkNSNDIyXzE2X1BMQU5BUjog Mg0KPiA+ICsgKiAqIEhXRF9WSUlGX1JHQjE2MTYxNl9ZQ0JDUjQ0NF8xNl9QTEFOQVI6IDINCj4g PiArICogKiBIV0RfVklJRl9PTkVfQ09MT1JfMTY6IDINCj4gPiArICoNCj4gPiArICogciBpcyB0 aGUgY29ycmVjdGlvbiBmYWN0b3IgZm9yIENiIG9yIENyIG9mIFlDYkNyNDIyIHBsYW5hciBhbmQg dGhlIHZhbHVlIGlzDQo+IGFzIGJlbG93Lg0KPiA+ICsgKiAqIFlDYkNyNDIyIENiLXBsYW5hcjog Mg0KPiA+ICsgKiAqIFlDYkNyNDIyIENyLXBsYW5hcjogMg0KPiA+ICsgKiAqIG90aGVyczogMQ0K PiA+ICsgKg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGh3ZF92aWlmX3BpeGVsbWFwIHsNCj4gPiAr CXVpbnRwdHJfdCBwbWFwX3BhZGRyOw0KPiA+ICsJdTMyIHBpdGNoOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBod2RfdmlpZl9pbWcgLSBpbWFnZSBpbmZvcm1hdGlv bg0KPiA+ICsgKiBAd2lkdGg6IGFjdGl2ZSB3aWR0aCBvZiBpbWFnZVtwaXhlbF0NCj4gPiArICog KiBbMTI4Li41NzYwXShvdXRwdXQgZnJvbSBMMklTUCkNCj4gPiArICogKiBbMTI4Li40MDk2XShp bnB1dCB0byBNQUlOIHVuaXQobWVtb3J5IGlucHV0KSkNCj4gPiArICogKiBbMTI4Li40MDk2XShv dXRwdXQgZnJvbSBTVUIgdW5pdCkNCj4gPiArICogKiBUaGUgdmFsdWUgc2hvdWxkIGJlIGV2ZW4u DQo+ID4gKyAqDQo+ID4gKyAqIEBoZWlnaHQ6IGFjdGl2ZSBoZWlnaHQgb2YgaW1hZ2VbbGluZV0N Cj4gPiArICogKiBbMTI4Li4zMjQwXShvdXRwdXQgZnJvbSBMMklTUCkNCj4gPiArICogKiBbMTI4 Li4yMTYwXShpbnB1dCB0byBNQUlOIHVuaXQobWVtb3J5IGlucHV0KSkNCj4gPiArICogKiBbMTI4 Li4yMTYwXShvdXRwdXQgZnJvbSBTVUIgdW5pdCkNCj4gPiArICogKiBUaGUgdmFsdWUgc2hvdWxk IGJlIGV2ZW4uDQo+ID4gKyAqDQo+ID4gKyAqIEBmb3JtYXQ6IGh3ZF92aWlmX2NvbG9yX2Zvcm1h dCAiY29sb3IgZm9ybWF0Ig0KPiA+ICsgKiAqIEJlbG93IGNvbG9yIGZvcm1hdHMgYXJlIHN1cHBv cnRlZCBmb3IgaW5wdXQgYW5kIG91dHB1dCBvZiBNQUlOIHVuaXQNCj4gPiArICogKiBIV0RfVklJ Rl9ZQ0JDUjQyMl84X1BBQ0tFRA0KPiA+ICsgKiAqIEhXRF9WSUlGX1JHQjg4OF9QQUNLRUQNCj4g PiArICogKiBIV0RfVklJRl9BUkdCODg4OF9QQUNLRUQNCj4gPiArICogKiBIV0RfVklJRl9ZQ0JD UjQyMl84X1BMQU5BUg0KPiA+ICsgKiAqIEhXRF9WSUlGX1JHQjg4OF9ZQ0JDUjQ0NF84X1BMQU5B Ug0KPiA+ICsgKiAqIEhXRF9WSUlGX09ORV9DT0xPUl84DQo+ID4gKyAqICogSFdEX1ZJSUZfWUNC Q1I0MjJfMTZfUExBTkFSDQo+ID4gKyAqICogSFdEX1ZJSUZfUkdCMTYxNjE2X1lDQkNSNDQ0XzE2 X1BMQU5BUg0KPiA+ICsgKiAqIEhXRF9WSUlGX09ORV9DT0xPUl8xNg0KPiA+ICsgKiAqIEJlbG93 IGNvbG9yIGZvcm1hdHMgYXJlIHN1cHBvcnRlZCBmb3Igb3V0cHV0IG9mIFNVQiB1bml0DQo+ID4g KyAqICogSFdEX1ZJSUZfT05FX0NPTE9SXzgNCj4gPiArICogKiBIV0RfVklJRl9PTkVfQ09MT1Jf MTYNCj4gPiArICoNCj4gPiArICogQHBpeGVsbWFwOiBwaXhlbG1hcCBpbmZvcm1hdGlvbg0KPiA+ ICsgKiAqIFswXTogWS9HLXBsYW5hciwgcGFja2VkL1kvUkFXDQo+ID4gKyAqICogWzFdOiBDYi9C LXBsYW5hcg0KPiA+ICsgKiAqIFsyXTogQ3IvUi1wbGFuYXINCj4gPiArICovDQo+ID4gK3N0cnVj dCBod2RfdmlpZl9pbWcgew0KPiA+ICsJdTMyIHdpZHRoOw0KPiA+ICsJdTMyIGhlaWdodDsNCj4g PiArCXUzMiBmb3JtYXQ7DQo+ID4gKwlzdHJ1Y3QgaHdkX3ZpaWZfcGl4ZWxtYXAgcGl4ZWxtYXBb M107DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGh3ZF92aWlmX2lu cHV0X2ltZyAtIGlucHV0IGltYWdlIGluZm9ybWF0aW9uDQo+ID4gKyAqIEBwaXhlbF9jbG9jazog cGl4ZWwgY2xvY2sgWzMzNzUuLjYwMDAwMF0gW2tIel0uIDAgbmVlZHMgdG8gYmUgc2V0IGZvciBs b25nDQo+IHBhY2tldCBkYXRhLg0KPiA+ICsgKiBAaHRvdGFsX3NpemU6IGhvcml6b250YWwgdG90 YWwgc2l6ZQ0KPiA+ICsgKiAqIFsxNDMuLjY1NTM1XSBbcGl4ZWxdIGZvciBpbWFnZSBkYXRhDQo+ ID4gKyAqICogWzIzOS4uMTA5MjI1XSBbbnNdIGZvciBsb25nIHBhY2tldCBkYXRhDQo+ID4gKyAq IEBoYWN0aXZlX3NpemU6IGhvcml6b250YWwgYWN0aXZlIHNpemUgW3BpeGVsXQ0KPiA+ICsgKiAq IFsxMjguLjQwOTZdIHdpdGhvdXQgTDFJU1ANCj4gPiArICogKiBbNjQwLi4zODQwXSB3aXRoIEwx SVNQDQo+ID4gKyAqICogVGhlIHZhbHVlIHNob3VsZCBiZSBldmVuLiBJbiBhZGRpdGlvbiwgdGhl IHZhbHVlIHNob3VsZCBiZSBhIG11bHRpcGxlIG9mIDgNCj4gd2l0aCBMMUlTUA0KPiA+ICsgKiAq IDAgbmVlZHMgdG8gYmUgc2V0IGZvciB0aGUgY29uZmlndXJhdGlvbiBvZiBsb25nIHBhY2tldCBk YXRhIG9yIFNVQiB1bml0DQo+IG91dHB1dC4NCj4gPiArICogQHZ0b3RhbF9zaXplOiB2ZXJ0aWNh bCB0b3RhbCBzaXplIFtsaW5lXQ0KPiA+ICsgKiAqIFsxNDQuLjE2MzgzXSBmb3IgaW1hZ2UgZGF0 YQ0KPiA+ICsgKiAqIDAgbmVlZHMgdG8gYmUgc2V0IGZvciB0aGUgY29uZmlndXJhdGlvbiBvZiBs b25nIHBhY2tldCBkYXRhLg0KPiA+ICsgKiBAdmJwX3NpemU6IHZlcnRpY2FsIGJhY2sgcG9yY2gg c2l6ZQ0KPiA+ICsgKiAqIFs1Li40MDk1XSBbbGluZV0gZm9yIGltYWdlIGRhdGENCj4gPiArICog KiBbNS4uNDA5NV0gW3RoZSBudW1iZXIgb2YgcGFja2V0XSBmb3IgbG9uZyBwYWNrZXQgZGF0YQ0K PiA+ICsgKiBAdmFjdGl2ZV9zaXplOiB2ZXJ0aWNhbCBhY3RpdmUgc2l6ZSBbbGluZV0NCj4gPiAr ICogKiBbMTI4Li4yMTYwXSB3aXRob3V0IEwxSVNQDQo+ID4gKyAqICogWzQ4MC4uMjE2MF0gd2l0 aCBMMUlTUA0KPiA+ICsgKiAqIFRoZSB2YWx1ZSBzaG91bGQgYmUgZXZlbi4NCj4gPiArICogKiAw IG5lZWRzIHRvIGJlIHNldCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb2YgbG9uZyBwYWNrZXQgZGF0 YS4NCj4gPiArICogQGludGVycG9sYXRpb25fbW9kZTogaW5wdXQgaW1hZ2UgaW50ZXJwb2xhdGlv biBtb2RlIGZvcg0KPiBod2RfdmlpZl9sMV9pbnB1dF9pbnRlcnBvbGF0aW9uX21vZGUNCj4gPiAr ICogKiBIV0RfVklJRl9MMV9JTlBVVF9JTlRFUlBPTEFUSU9OX0xJTkUgbmVlZHMgdG8gYmUgc2V0 IGluIHRoZQ0KPiBiZWxvdyBjYXNlcy4NCj4gPiArICogKiBpbWFnZSBkYXRhKHdpdGhvdXQgTDFJ U1ApIG9yIGxvbmcgcGFja2V0IGRhdGENCj4gPiArICogKiBpbWFnZSBkYXRhIG9yIGxvbmcgcGFj a2V0IGRhdGEgb2YgU1VCIHVuaXQNCj4gPiArICogQGlucHV0X251bTogdGhlIG51bWJlciBvZiBp bnB1dCBpbWFnZXMgWzEuLjNdDQo+ID4gKyAqICogMSBuZWVkcyB0byBiZSBzZXQgaW4gdGhlIGJl bG93IGNhc2VzLg0KPiA+ICsgKiAqIGltYWdlIGRhdGEod2l0aG91dCBMMUlTUCkgb3IgbG9uZyBw YWNrZXQgZGF0YQ0KPiA+ICsgKiAqIGltYWdlIGRhdGEgb3IgbG9uZyBwYWNrZXQgZGF0YSBvZiBT VUIgdW5pdA0KPiA+ICsgKiBAaG9iY193aWR0aDogdGhlIG51bWJlciBvZiBob3Jpem9udGFsIG9w dGljYWwgYmxhY2sgcGl4ZWxzIFswLDE2LDMyLDY0IG9yDQo+IDEyOF0NCj4gPiArICogKiAwIG5l ZWRzIHRvIGJlIHNldCBpbiB0aGUgYmVsb3cgY2FzZXMuDQo+ID4gKyAqICogaW4gY2FzZSBvZiBo b2JjX21hcmdpbiA9IDANCj4gPiArICogKiBpbWFnZSBkYXRhKHdpdGhvdXQgTDFJU1ApIG9yIGxv bmcgcGFja2V0IGRhdGENCj4gPiArICogKiBpbWFnZSBkYXRhIG9yIGxvbmcgcGFja2V0IGRhdGEg b2YgU1VCIHVuaXQNCj4gPiArICogQGhvYmNfbWFyZ2luOiB0aGUgbnVtYmVyIG9mIGhvcml6b250 YWwgb3B0aWNhbCBibGFjayBtYXJnaW5bMC4uMzBdIChldmVuDQo+IG51bWJlcikNCj4gPiArICog KiAwIG5lZWRzIHRvIGJlIHNldCBpbiB0aGUgYmVsb3cgY2FzZXMuDQo+ID4gKyAqICogaW4gY2Fz ZSBvZiBob2JjX3dpZHRoID0gMA0KPiA+ICsgKiAqIGltYWdlIGRhdGEod2l0aG91dCBMMUlTUCkg b3IgbG9uZyBwYWNrZXQgZGF0YQ0KPiA+ICsgKiAqIGltYWdlIGRhdGEgb3IgbG9uZyBwYWNrZXQg ZGF0YSBvZiBTVUIgdW5pdA0KPiA+ICsgKg0KPiA+ICsgKiBCZWxvdyBjb25kaXRpb25zIG5lZWQg dG8gYmUgc2F0aXNmaWVkLg0KPiA+ICsgKiAqIGludGVycG9sYXRpb25fbW9kZSBpcyBIV0RfVklJ Rl9MMV9JTlBVVF9JTlRFUlBPTEFUSU9OX0xJTkU6DQo+ID4gKyAqICAgKGh0b3RhbF9zaXplID4g KGhhY3RpdmVfc2l6ZSArIGhvYmNfd2lkdGggKyBob2JjX21hcmdpbikpICYmDQo+ID4gKyAqICAg KHZ0b3RhbF9zaXplID4gKHZicF9zaXplICsgdmFjdGl2ZV9zaXplICogaW5wdXRfbnVtKSkNCj4g PiArICogKiBpbnRlcnBvbGF0aW9uX21vZGUgaXMgSFdEX1ZJSUZfTDFfSU5QVVRfSU5URVJQT0xB VElPTl9QSVhFTDoNCj4gPiArICogICAoaHRvdGFsX3NpemUgPiAoKGhhY3RpdmVfc2l6ZSArIGhv YmNfd2lkdGggKyBob2JjX21hcmdpbikgKg0KPiBpbnB1dF9udW0pKSAmJg0KPiA+ICsgKiAgICh2 dG90YWxfc2l6ZSA+ICh2YnBfc2l6ZSArIHZhY3RpdmVfc2l6ZSkpDQo+ID4gKyAqICogTDFJU1Ag aXMgdXNlZDoNCj4gPiArICogICB2YnBfc2l6ZSA+PSAoNTQ3MjBbY3ljbGVdIC8gNTAwMDAwW2tI el0pICogKHBpeGVsX2Nsb2NrIC8gaHRvdGFsX3NpemUpDQo+ICsgMzggKyBJU1NUIHRpbWUNCj4g PiArICogKiBMMUlTUCBpcyBub3QgdXNlZDoNCj4gPiArICogICB2YnBfc2l6ZSA+PSAoMzkzNjBb Y3ljbGVdIC8gNTAwMDAwW2tIel0pICogKHBpeGVsX2Nsb2NrIC8gaHRvdGFsX3NpemUpDQo+ICsg MTYgKyBJU1NUIHRpbWUNCj4gPiArICoNCj4gPiArICogTm90ZTogTDFJU1AgaXMgdXNlZCB3aGVu IFJBVyBkYXRhIGlzIGlucHV0IHRvIE1BSU4gdW5pdA0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGh3 ZF92aWlmX2lucHV0X2ltZyB7DQo+ID4gKwl1MzIgcGl4ZWxfY2xvY2s7DQo+ID4gKwl1MzIgaHRv dGFsX3NpemU7DQo+ID4gKwl1MzIgaGFjdGl2ZV9zaXplOw0KPiA+ICsJdTMyIHZ0b3RhbF9zaXpl Ow0KPiA+ICsJdTMyIHZicF9zaXplOw0KPiA+ICsJdTMyIHZhY3RpdmVfc2l6ZTsNCj4gPiArCXUz MiBpbnRlcnBvbGF0aW9uX21vZGU7DQo+ID4gKwl1MzIgaW5wdXRfbnVtOw0KPiA+ICsJdTMyIGhv YmNfd2lkdGg7DQo+ID4gKwl1MzIgaG9iY19tYXJnaW47DQo+ID4gK307DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogc3RydWN0IGh3ZF92aWlmX2NzY19wYXJhbSAtIGNvbG9yIGNvbnZlcnNpb24g aW5mb3JtYXRpb24NCj4gPiArICogQHJfY3JfaW5fb2Zmc2V0OiBpbnB1dCBvZmZzZXQgb2YgUi9D cltwaXggdmFsdWVdIFsweDAuLjB4MUZGRkZdDQo+ID4gKyAqIEBnX3lfaW5fb2Zmc2V0OiBpbnB1 dCBvZmZzZXQgb2YgRy9ZW3BpeCB2YWx1ZV0gWzB4MC4uMHgxRkZGRl0NCj4gPiArICogQGJfY2Jf aW5fb2Zmc2V0OiBpbnB1dCBvZmZzZXQgb2YgQi9DYltwaXggdmFsdWVdIFsweDAuLjB4MUZGRkZd DQo+ID4gKyAqIEBjb2VmOiBjb2VmZmljaWVudCBvZiBtYXRyaXggWzB4MC4uMHhGRkZGXQ0KPiA+ ICsgKiAqIFswXSA6IGMwMChZR19ZRyksIFsxXSA6IGMwMShVQl9ZRyksIFsyXSA6IGMwMihWUl9Z RyksDQo+ID4gKyAqICogWzNdIDogYzEwKFlHX1VCKSwgWzRdIDogYzExKFVCX1VCKSwgWzVdIDog YzEyKFZSX1VCKSwNCj4gPiArICogKiBbNl0gOiBjMjAoWUdfVlIpLCBbN10gOiBjMjEoVUJfVlIp LCBbOF0gOiBjMjIoVlJfVlIpDQo+ID4gKyAqIEByX2NyX291dF9vZmZzZXQ6IG91dHB1dCBvZmZz ZXQgb2YgUi9DcltwaXggdmFsdWVdIFsweDAuLjB4MUZGRkZdDQo+ID4gKyAqIEBnX3lfb3V0X29m ZnNldDogb3V0cHV0IG9mZnNldCBvZiBHL1lbcGl4IHZhbHVlXSBbMHgwLi4weDFGRkZGXQ0KPiA+ ICsgKiBAYl9jYl9vdXRfb2Zmc2V0OiBvdXRwdXQgb2Zmc2V0IG9mIEIvQ2JbcGl4IHZhbHVlXSBb MHgwLi4weDFGRkZGXQ0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGh3ZF92aWlmX2NzY19wYXJhbSB7 DQo+ID4gKwl1MzIgcl9jcl9pbl9vZmZzZXQ7DQo+ID4gKwl1MzIgZ195X2luX29mZnNldDsNCj4g PiArCXUzMiBiX2NiX2luX29mZnNldDsNCj4gPiArCXUzMiBjb2VmWzldOw0KPiA+ICsJdTMyIHJf Y3Jfb3V0X29mZnNldDsNCj4gPiArCXUzMiBnX3lfb3V0X29mZnNldDsNCj4gPiArCXUzMiBiX2Ni X291dF9vZmZzZXQ7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGh3 ZF92aWlmX2ltZ19hcmVhIC0gaW1hZ2UgYXJlYSBkZWZpbml0aW9uDQo+ID4gKyAqIEB4OiB4IHBv c2l0aW9uIFswLi44MDYyXSBbcGl4ZWxdDQo+ID4gKyAqIEB5OiB5IHBvc2l0aW9uIFswLi4zOTY2 XSBbbGluZV0NCj4gPiArICogQHc6IGltYWdlIHdpZHRoIFsxMjguLjgxOTBdIFtwaXhlbF0NCj4g PiArICogQGg6IGltYWdlIGhlaWdodCBbMTI4Li40MDk0XSBbbGluZV0NCj4gPiArICovDQo+ID4g K3N0cnVjdCBod2RfdmlpZl9pbWdfYXJlYSB7DQo+ID4gKwl1MzIgeDsNCj4gPiArCXUzMiB5Ow0K PiA+ICsJdTMyIHc7DQo+ID4gKwl1MzIgaDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBzdHJ1Y3QgaHdkX3ZpaWZfb3V0X3Byb2Nlc3MgLSBjb25maWd1cmF0aW9uIG9mIG91dHB1 dCBwcm9jZXNzIG9mIE1BSU4gdW5pdA0KPiBhbmQgTDJJU1ANCj4gPiArICogQGhhbGZfc2NhbGU6 IGh3ZF92aWlmX2VuYWJsZV9mbGFnICJlbmFibGUgb3IgZGlzYWJsZSBoYWxmIHNjYWxlIg0KPiA+ ICsgKiBAc2VsZWN0X2NvbG9yOiBod2RfdmlpZl9vdXRwdXRfY29sb3JfbW9kZSAic2VsZWN0IG91 dHB1dCBjb2xvciINCj4gPiArICogQGFscGhhOiBhbHBoYSB2YWx1ZSB1c2VkIGluIGNhc2Ugb2Yg QVJHQjg4ODggb3V0cHV0IFswLi4yNTVdDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaHdkX3ZpaWZf b3V0X3Byb2Nlc3Mgew0KPiA+ICsJdTMyIGhhbGZfc2NhbGU7DQo+ID4gKwl1MzIgc2VsZWN0X2Nv bG9yOw0KPiA+ICsJdTggYWxwaGE7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog c3RydWN0IGh3ZF92aWlmX2wxX2xzYyAtIEhXRCBMMUlTUCBsZW5zIHNoYWRpbmcgY29ycmVjdGlv biBwYXJhbWV0ZXJzDQo+ID4gKyAqIEBsc3NjX3BhcmFib2xhX3BhcmFtOiBwYXJhYm9sYSBzaGFk aW5nIGNvcnJlY3Rpb24gcGFyYW1ldGVyDQo+ID4gKyAqICogTlVMTDogZGlzYWJsZSBwYXJhYm9s YSBzaGFkaW5nIGNvcnJlY3Rpb24NCj4gPiArICogKiBub3QgTlVMTDogZW5hYmxlIHBhcmFib2xh IHNoYWRpbmcgY29ycmVjdGlvbg0KPiA+ICsgKiBAbHNzY19ncmlkX3BhcmFtOiBncmlkIHNoYWRp bmcgY29ycmVjdGlvbiBwYXJhbWV0ZXINCj4gPiArICogKiBOVUxMOiBkaXNhYmxlIGdyaWQgc2hh ZGluZyBjb3JyZWN0aW9uDQo+ID4gKyAqICogbm90IE5VTEw6IGVuYWJsZSBncmlkIHNoYWRpbmcg Y29ycmVjdGlvbg0KPiA+ICsgKiBAbHNzY19wd2hiX3JfZ2Fpbl9tYXg6IG1heGltdW0gUiBnYWlu IG9mIHByZXNldCB3aGl0ZSBiYWxhbmNlDQo+IGNvcnJlY3Rpb24NCj4gPiArICogQGxzc2NfcHdo Yl9yX2dhaW5fbWluOiBtaW5pbXVtIFIgZ2FpbiBvZiBwcmVzZXQgd2hpdGUgYmFsYW5jZQ0KPiBj b3JyZWN0aW9uDQo+ID4gKyAqIEBsc3NjX3B3aGJfZ3JfZ2Fpbl9tYXg6IG1heGltdW0gR3IgZ2Fp biBvZiBwcmVzZXQgd2hpdGUgYmFsYW5jZQ0KPiBjb3JyZWN0aW9uDQo+ID4gKyAqIEBsc3NjX3B3 aGJfZ3JfZ2Fpbl9taW46IG1pbmltdW0gR3IgZ2FpbiBvZiBwcmVzZXQgd2hpdGUgYmFsYW5jZQ0K PiBjb3JyZWN0aW9uDQo+ID4gKyAqIEBsc3NjX3B3aGJfZ2JfZ2Fpbl9tYXg6IG1heGltdW0gR2Ig Z2FpbiBvZiBwcmVzZXQgd2hpdGUgYmFsYW5jZQ0KPiBjb3JyZWN0aW9uDQo+ID4gKyAqIEBsc3Nj X3B3aGJfZ2JfZ2Fpbl9taW46IG1pbmltdW0gR2IgZ2FpbiBvZiBwcmVzZXQgd2hpdGUgYmFsYW5j ZQ0KPiBjb3JyZWN0aW9uDQo+ID4gKyAqIEBsc3NjX3B3aGJfYl9nYWluX21heDogbWF4aW11bSBC IGdhaW4gb2YgcHJlc2V0IHdoaXRlIGJhbGFuY2UNCj4gY29ycmVjdGlvbg0KPiA+ICsgKiBAbHNz Y19wd2hiX2JfZ2Fpbl9taW46IG1pbmltdW0gQiBnYWluIG9mIHByZXNldCB3aGl0ZSBiYWxhbmNl DQo+IGNvcnJlY3Rpb24NCj4gPiArICoNCj4gPiArICogUmFuZ2UgYW5kIGFjY3VyYWN5IG9mIGxz c2NfcHdoYl94eHhfZ2Fpbl94eHggYXJlIGFzIGJlbG93Lg0KPiA+ICsgKiAtIHJhbmdlOiBbMHgw Li4weDdGRl0NCj4gPiArICogLSBhY2N1cmFjeSA6IDEvMjU2DQo+ID4gKyAqLw0KPiA+ICtzdHJ1 Y3QgaHdkX3ZpaWZfbDFfbHNjIHsNCj4gPiArCXN0cnVjdCB2aWlmX2wxX2xzY19wYXJhYm9sYV9w YXJhbSAqbHNzY19wYXJhYm9sYV9wYXJhbTsNCj4gPiArCXN0cnVjdCB2aWlmX2wxX2xzY19ncmlk X3BhcmFtICpsc3NjX2dyaWRfcGFyYW07DQo+ID4gKwl1MzIgbHNzY19wd2hiX3JfZ2Fpbl9tYXg7 DQo+ID4gKwl1MzIgbHNzY19wd2hiX3JfZ2Fpbl9taW47DQo+ID4gKwl1MzIgbHNzY19wd2hiX2dy X2dhaW5fbWF4Ow0KPiA+ICsJdTMyIGxzc2NfcHdoYl9ncl9nYWluX21pbjsNCj4gPiArCXUzMiBs c3NjX3B3aGJfZ2JfZ2Fpbl9tYXg7DQo+ID4gKwl1MzIgbHNzY19wd2hiX2diX2dhaW5fbWluOw0K PiA+ICsJdTMyIGxzc2NfcHdoYl9iX2dhaW5fbWF4Ow0KPiA+ICsJdTMyIGxzc2NfcHdoYl9iX2dh aW5fbWluOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBod2Rfdmlp Zl9sMV9pbWdfcXVhbGl0eV9hZGp1c3RtZW50IC0gSFdEIEwxSVNQIGltYWdlIHF1YWxpdHkNCj4g YWRqdXN0bWVudCBwYXJhbWV0ZXJzDQo+ID4gKyAqIEBjb2VmX2NiOiBDYiBjb2VmZmljaWVudCBb MHgwLi4weGZmZmZdIGFjY3VyYWN5OiAxLzY1NTM2DQo+ID4gKyAqIEBjb2VmX2NyOiBDciBjb2Vm ZmljaWVudCBbMHgwLi4weGZmZmZdIGFjY3VyYWN5OiAxLzY1NTM2DQo+ID4gKyAqIEBicmlnaHRu ZXNzOiBicmlnaHRuZXNzIHZhbHVlIFstMzI3NjguLjMyNzY3XSAoMCBtZWFucyBvZmYuKQ0KPiA+ ICsgKiBAbGluZWFyX2NvbnRyYXN0OiBsaW5lYXIgY29udHJhc3QgdmFsdWUgWzB4MC4uMHhmZl0g YWNjdXJhY3k6IDEvMTI4ICgxMjgNCj4gbWVhbnMgb2ZmLikNCj4gPiArICogQCpub25saW5lYXJf Y29udHJhc3Q6IHBvaW50ZXIgdG8gbm9ubGluZWFyIGNvbnRyYXN0IHBhcmFtZXRlcg0KPiA+ICsg KiBAKmx1bV9ub2lzZV9yZWR1Y3Rpb246IHBvaW50ZXIgdG8gbHVtaW5hbmNlIG5vaXNlIHJlZHVj dGlvbiBwYXJhbWV0ZXINCj4gPiArICogQCplZGdlX2VuaGFuY2VtZW50OiBwb2ludGVyIHRvIGVk Z2UgZW5oYW5jZW1lbnQgcGFyYW1ldGVyDQo+ID4gKyAqIEAqdXZfc3VwcHJlc3Npb246IHBvaW50 ZXIgdG8gVVYgc3VwcHJlc3Npb24gcGFyYW1ldGVyDQo+ID4gKyAqIEAqY29yaW5nX3N1cHByZXNz aW9uOiBwb2ludGVyIHRvIGNvcmluZyBzdXBwcmVzc2lvbiBwYXJhbWV0ZXINCj4gPiArICogQCpl ZGdlX3N1cHByZXNzaW9uOiBwb2ludGVyIHRvIGVkZ2UgZW5oYW5jZW1lbnQgcGFyYW1ldGVyDQo+ ID4gKyAqIEAqY29sb3JfbGV2ZWw6IHBvaW50ZXIgdG8gY29sb3IgbGV2ZWwgYWRqdXN0bWVudCBw YXJhbWV0ZXINCj4gPiArICogQGNvbG9yX25vaXNlX3JlZHVjdGlvbl9lbmFibGU6IGVuYWJsZS9k aXNhYmxlIGNvbG9yIG5vaXNlIHJlZHVjdGlvbiBAcmVmDQo+IGh3ZF92aWlmX2VuYWJsZV9mbGFn DQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaHdkX3ZpaWZfbDFfaW1nX3F1YWxpdHlfYWRqdXN0bWVu dCB7DQo+ID4gKwl1MTYgY29lZl9jYjsNCj4gPiArCXUxNiBjb2VmX2NyOw0KPiA+ICsJczE2IGJy aWdodG5lc3M7DQo+ID4gKwl1OCBsaW5lYXJfY29udHJhc3Q7DQo+ID4gKwlzdHJ1Y3QgdmlpZl9s MV9ub25saW5lYXJfY29udHJhc3QgKm5vbmxpbmVhcl9jb250cmFzdDsNCj4gPiArCXN0cnVjdCB2 aWlmX2wxX2x1bV9ub2lzZV9yZWR1Y3Rpb24gKmx1bV9ub2lzZV9yZWR1Y3Rpb247DQo+ID4gKwlz dHJ1Y3QgdmlpZl9sMV9lZGdlX2VuaGFuY2VtZW50ICplZGdlX2VuaGFuY2VtZW50Ow0KPiA+ICsJ c3RydWN0IHZpaWZfbDFfdXZfc3VwcHJlc3Npb24gKnV2X3N1cHByZXNzaW9uOw0KPiA+ICsJc3Ry dWN0IHZpaWZfbDFfY29yaW5nX3N1cHByZXNzaW9uICpjb3Jpbmdfc3VwcHJlc3Npb247DQo+ID4g KwlzdHJ1Y3QgdmlpZl9sMV9lZGdlX3N1cHByZXNzaW9uICplZGdlX3N1cHByZXNzaW9uOw0KPiA+ ICsJc3RydWN0IHZpaWZfbDFfY29sb3JfbGV2ZWwgKmNvbG9yX2xldmVsOw0KPiA+ICsJdTMyIGNv bG9yX25vaXNlX3JlZHVjdGlvbl9lbmFibGU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogc3RydWN0IGh3ZF92aWlmX2wxX2luZm8gLSBIV0QgTDFJU1AgcHJvY2Vzc2luZyBpbmZv cm1hdGlvbg0KPiA+ICsgKiBAY29udGV4dF9pZDogY29udGV4dCBpZA0KPiA+ICsgKiBAYWdfY29u dF9ob2JjX2hpZ2g6IGFuYWxvZyBnYWluIGZvciBoaWdoIHNlbnNpdGl2aXR5IGltYWdlIG9mIE9C Q0MNCj4gPiArICogQGFnX2NvbnRfaG9iY19taWRkbGVfbGVkOiBhbmFsb2cgZ2FpbiBmb3IgbWlk ZGxlIHNlbnNpdGl2aXR5IG9yIGxlZCBpbWFnZQ0KPiBvZiBPQkNDDQo+ID4gKyAqIEBhZ19jb250 X2hvYmNfbG93OiBhbmFsb2cgZ2FpbiBmb3IgbG93IHNlbnNpdGl2aXR5IGltYWdlIG9mIE9CQ0MN Cj4gPiArICogQGFnX2NvbnRfYWJwY19oaWdoOiBhbmFsb2cgZ2FpbiBmb3IgaGlnaCBzZW5zaXRp dml0eSBpbWFnZSBvZiBBQlBDDQo+ID4gKyAqIEBhZ19jb250X2FicGNfbWlkZGxlX2xlZDogYW5h bG9nIGdhaW4gZm9yIG1pZGRsZSBzZW5zaXRpdml0eSBvciBsZWQgaW1hZ2UNCj4gb2YgQUJQQw0K PiA+ICsgKiBAYWdfY29udF9hYnBjX2xvdzogYW5hbG9nIGdhaW4gZm9yIGxvdyBzZW5zaXRpdml0 eSBpbWFnZSBvZiBBQlBDDQo+ID4gKyAqIEBhZ19jb250X3JjbnJfaGlnaDogYW5hbG9nIGdhaW4g Zm9yIGhpZ2ggc2Vuc2l0aXZpdHkgaW1hZ2Ugb2YgUkNOUg0KPiA+ICsgKiBAYWdfY29udF9yY25y X21pZGRsZV9sZWQ6IGFuYWxvZyBnYWluIGZvciBtaWRkbGUgc2Vuc2l0aXZpdHkgb3IgbGVkIGlt YWdlDQo+IG9mIFJDTlINCj4gPiArICogQGFnX2NvbnRfcmNucl9sb3c6IGFuYWxvZyBnYWluIGZv ciBsb3cgc2Vuc2l0aXZpdHkgaW1hZ2Ugb2YgUkNOUg0KPiA+ICsgKiBAYWdfY29udF9sc3NjOiBh bmFsb2cgZ2FpbiBmb3IgTFNTQw0KPiA+ICsgKiBAYWdfY29udF9tcHJvOiBhbmFsb2cgZ2FpbiBm b3IgY29sb3IgbWF0cml4IGNvcnJlY3Rpb24NCj4gPiArICogQGFnX2NvbnRfdnBybzogYW5hbG9n IGdhaW4gZm9yIGltYWdlIHF1YWxpdHkgYWRqdXN0bWVudA0KPiA+ICsgKiBAZHBjX2RlZmVjdF9u dW1faDoNCj4gPiArICogICAgIHRoZSBudW1iZXIgb2YgZHluYW1pY2FsbHkgY29ycmVjdGVkIGRl ZmVjdGl2ZSBwaXhlbChoaWdoIHNlbnNpdGl2aXR5DQo+IGltYWdlKQ0KPiA+ICsgKiBAZHBjX2Rl ZmVjdF9udW1fbToNCj4gPiArICogICAgIHRoZSBudW1iZXIgb2YgZHluYW1pY2FsbHkgY29ycmVj dGVkIGRlZmVjdGl2ZSBwaXhlbChtaWRkbGUNCj4gc2Vuc2l0aXZpdHkgb3IgbGVkIGltYWdlKQ0K PiA+ICsgKiBAZHBjX2RlZmVjdF9udW1fbDoNCj4gPiArICogICAgIHRoZSBudW1iZXIgb2YgZHlu YW1pY2FsbHkgY29ycmVjdGVkIGRlZmVjdGl2ZSBwaXhlbChsb3cgc2Vuc2l0aXZpdHkNCj4gaW1h Z2UpDQo+ID4gKyAqIEBoZHJjX3RucF9mYl9zbXRoX21heDogdGhlIG1heGltdW0gdmFsdWUgb2Yg bHVtaW5hbmNlIGluZm9ybWF0aW9uDQo+IGFmdGVyIHNtb290aGluZyBmaWx0ZXIgYXQgSERSQw0K PiA+ICsgKiBAYXZnX2x1bV93ZWlnaHQ6IHdlaWdodGVkIGF2ZXJhZ2UgbHVtaW5hbmNlIHZhbHVl IGF0IGF2ZXJhZ2UNCj4gbHVtaW5hbmNlIGdlbmVyYXRpb24NCj4gPiArICogQGF2Z19sdW1fYmxv Y2tbOF1bOF06DQo+ID4gKyAqICAgICBhdmVyYWdlIGx1bWluYW5jZSBvZiBlYWNoIGJsb2NrIFt5 XVt4XToNCj4gPiArICogICAgIHkgbWVhbnMgdmVydGljYWwgcG9zaXRpb24gYW5kIHggbWVhbnMg aG9yaXpvbnRhbCBwb3NpdGlvbi4NCj4gPiArICogQGF2Z19sdW1fZm91cl9saW5lX2x1bVs0XToN Cj4gPiArICogICAgIDQtbGluZXMgYXZlcmFnZSBsdW1pbmFuY2UuIGF2Z19sdW1fZm91cl9saW5l X2x1bVtuXSBjb3JyZXNwb25kcyB0bw0KPiBhZXhwX2F2ZTRsaW5lc3lbbl0NCj4gPiArICogQGF2 Z19zYXR1cl9waXhudW06IHRoZSBudW1iZXIgb2Ygc2F0dXJhdGVkIHBpeGVsIGF0IGF2ZXJhZ2Ug bHVtaW5hbmNlDQo+IGdlbmVyYXRpb24NCj4gPiArICogQGF2Z19ibGFja19waXhudW06IHRoZSBu dW1iZXIgb2YgYmxhY2sgcGl4ZWwgYXQgYXZlcmFnZSBsdW1pbmFuY2UNCj4gZ2VuZXJhdGlvbg0K PiA+ICsgKiBAYXdiX2F2ZV91OiBhdmVyYWdlIFUgYXQgQVdIQiBbcGl4ZWxdDQo+ID4gKyAqIEBh d2JfYXZlX3Y6IGF2ZXJhZ2UgViBhdCBBV0hCIFtwaXhlbF0NCj4gPiArICogQGF3Yl9hY2N1bXVs YXRlZF9waXhlbDogdGhlIG51bWJlciBvZiBhY2N1bXVsYXRlZCBwaXhlbCBhdCBBV0hCDQo+ID4g KyAqIEBhd2JfZ2Fpbl9yOiBSIGdhaW4gYXBwbGllZCBpbiB0aGUgbmV4dCBmcmFtZSBhdCBBV0hC DQo+ID4gKyAqIEBhd2JfZ2Fpbl9nOiBHIGdhaW4gYXBwbGllZCBpbiB0aGUgbmV4dCBmcmFtZSBh dCBBV0hCDQo+ID4gKyAqIEBhd2JfZ2Fpbl9iOiBCIGdhaW4gYXBwbGllZCBpbiB0aGUgbmV4dCBm cmFtZSBhdCBBV0hCDQo+ID4gKyAqIEBhd2Jfc3RhdHVzX3U6IHN0YXR1cyBvZiBVIGNvbnZlcmdl bmNlIGF0IEFXSEIgKHRydWU6IGNvbnZlcmdlZCwgZmFsc2U6DQo+IG5vdCBjb252ZXJnZWQpDQo+ ID4gKyAqIEBhd2Jfc3RhdHVzX3Y6IHN0YXR1cyBvZiBWIGNvbnZlcmdlbmNlIGF0IEFXSEIgKHRy dWU6IGNvbnZlcmdlZCwgZmFsc2U6DQo+IG5vdCBjb252ZXJnZWQpDQo+ID4gKyAqLw0KPiA+ICtz dHJ1Y3QgaHdkX3ZpaWZfbDFfaW5mbyB7DQo+ID4gKwl1MzIgY29udGV4dF9pZDsNCj4gPiArCXU4 IGFnX2NvbnRfaG9iY19oaWdoOw0KPiA+ICsJdTggYWdfY29udF9ob2JjX21pZGRsZV9sZWQ7DQo+ ID4gKwl1OCBhZ19jb250X2hvYmNfbG93Ow0KPiA+ICsJdTggYWdfY29udF9hYnBjX2hpZ2g7DQo+ ID4gKwl1OCBhZ19jb250X2FicGNfbWlkZGxlX2xlZDsNCj4gPiArCXU4IGFnX2NvbnRfYWJwY19s b3c7DQo+ID4gKwl1OCBhZ19jb250X3JjbnJfaGlnaDsNCj4gPiArCXU4IGFnX2NvbnRfcmNucl9t aWRkbGVfbGVkOw0KPiA+ICsJdTggYWdfY29udF9yY25yX2xvdzsNCj4gPiArCXU4IGFnX2NvbnRf bHNzYzsNCj4gPiArCXU4IGFnX2NvbnRfbXBybzsNCj4gPiArCXU4IGFnX2NvbnRfdnBybzsNCj4g PiArCXUzMiBkcGNfZGVmZWN0X251bV9oOw0KPiA+ICsJdTMyIGRwY19kZWZlY3RfbnVtX207DQo+ ID4gKwl1MzIgZHBjX2RlZmVjdF9udW1fbDsNCj4gPiArCXUzMiBoZHJjX3RucF9mYl9zbXRoX21h eDsNCj4gPiArCXUzMiBhdmdfbHVtX3dlaWdodDsNCj4gPiArCXUzMiBhdmdfbHVtX2Jsb2NrWzhd WzhdOw0KPiA+ICsJdTMyIGF2Z19sdW1fZm91cl9saW5lX2x1bVs0XTsNCj4gPiArCXUxNiBhdmdf c2F0dXJfcGl4bnVtOw0KPiA+ICsJdTE2IGF2Z19ibGFja19waXhudW07DQo+ID4gKwl1MzIgYXdi X2F2ZV91Ow0KPiA+ICsJdTMyIGF3Yl9hdmVfdjsNCj4gPiArCXUzMiBhd2JfYWNjdW11bGF0ZWRf cGl4ZWw7DQo+ID4gKwl1MzIgYXdiX2dhaW5fcjsNCj4gPiArCXUzMiBhd2JfZ2Fpbl9nOw0KPiA+ ICsJdTMyIGF3Yl9nYWluX2I7DQo+ID4gKwlib29sIGF3Yl9zdGF0dXNfdTsNCj4gPiArCWJvb2wg YXdiX3N0YXR1c192Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBo d2RfdmlpZl9sMl9nYW1tYV90YWJsZSAtIEhXRCBMMklTUCBHYW1tYSB0YWJsZSBwaHlzaWNhbA0K PiBhZGRyZXNzDQo+ID4gKyAqIEB0YWJsZVs2XTogdGFibGUgYWRkcmVzcyhwaHlzaWNhbCBhZGRy ZXNzKSA0Ynl0ZSBhbGlnbm1lbnQNCj4gPiArICoNCj4gPiArICogcmVsYXRpb24gYmV0d2VlbiBl bGVtZW50IGFuZCB0YWJsZSBpcyBhcyBiZWxvdy4NCj4gPiArICogKiBbMF06IEcvWSgxc3QgdGFi bGUpDQo+ID4gKyAqICogWzFdOiBHL1koMm5kIHRhYmxlKQ0KPiA+ICsgKiAqIFsyXTogQi9VKDFz dCB0YWJsZSkNCj4gPiArICogKiBbM106IEIvVSgybmQgdGFibGUpDQo+ID4gKyAqICogWzRdOiBS L1YoMXN0IHRhYmxlKQ0KPiA+ICsgKiAqIFs1XTogUi9WKDJuZCB0YWJsZSkNCj4gPiArICoNCj4g PiArICogd2hlbiAwIGlzIHNldCB0byB0YWJsZSBhZGRyZXNzLCB0YWJsZSB0cmFuc2ZlciBpcyBk aXNhYmxlZC4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBod2RfdmlpZl9sMl9nYW1tYV90YWJsZSB7 DQo+ID4gKwl1aW50cHRyX3QgdGFibGVbNl07DQo+IA0KPiBVc2UgZG1hX2FkZHJfdCBmb3IgZmll bGRzIHRoYXQgc3RvcmUgRE1BIGFkZHJlc3Nlcy4gU2FtZSBjb21tZW50IGZvciBhbGwNCj4gdGhl IG90aGVyIHVzYWdlcyBvZiB1aW50cHRyX3QgSSB0aGluay4gV2hpbGUgYXQgaXQsIGRvbid0IG5h bWUgdGhlDQo+IHZhcmlhYmxlcyAicGFkZHIiLCB0aG9zZSBhcmUgbm90IHBoeXNpY2FsIGFkZHJl c3NlcyBidXQgRE1BIGFkZHJlc3Nlcw0KPiAodGhleSBjYW4gZGlmZmVyIHdoZW4gYW4gSU9NTVUg aXMgcHJlc2VudCkuIFVzZSAiZG1hX2FkZHIiIG9yIGp1c3QNCj4gImFkZHIiIGluIHZhcmlhYmxl IG5hbWVzLg0KDQpJJ2xsIHVzZSBkbWFfYWRkcl90IGZvciBETUEgYWRkcmVzc2VzLg0KQWxzbywg SSBkbyBub3QgdXNlIHBhZGRyIGZvciB2YXJpYWJsZSdzIG5hbWUuDQoNCj4gPiArfTsNCj4gDQo+ IFtzbmlwXQ0KPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNj b250aS9od2RfdmlpZl9jc2kycnguYw0KPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlzY29u dGkvaHdkX3ZpaWZfY3NpMnJ4LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4 IDAwMDAwMDAwMDAwLi5mNDk4NjljNWJkZA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlmX2NzaTJyeC5jDQo+ID4gQEAg LTAsMCArMSw2MTAgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg T1IgQlNELTItQ2xhdXNlDQo+ID4gKy8qIFRvc2hpYmEgVmlzY29udGkgVmlkZW8gQ2FwdHVyZSBT dXBwb3J0DQo+ID4gKyAqDQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMiBUT1NISUJBIENPUlBP UkFUSU9ODQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMiBUb3NoaWJhIEVsZWN0cm9uaWMgRGV2 aWNlcyAmIFN0b3JhZ2UgQ29ycG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVk ZSA8bGludXgvZGVsYXkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+ID4gKyNpbmNs dWRlIDxsaW51eC90aW1la2VlcGluZy5oPg0KPiA+ICsjaW5jbHVkZSAiaHdkX3ZpaWYuaCINCj4g PiArI2luY2x1ZGUgImh3ZF92aWlmX2ludGVybmFsLmgiDQo+ID4gKw0KPiA+ICsjZGVmaW5lIENT STJfRFRfWVVWNDIwOAkgIDB4MTgNCj4gPiArI2RlZmluZSBDU0kyX0RUX1lVVjQyMDEwICAweDE5 DQo+ID4gKyNkZWZpbmUgQ1NJMl9EVF9ZVVY0MjA4TCAgMHgxQQ0KPiA+ICsjZGVmaW5lIENTSTJf RFRfWVVWNDIwOEMgIDB4MUMNCj4gPiArI2RlZmluZSBDU0kyX0RUX1lVVjQyMDEwQyAweDFEDQo+ ID4gKyNkZWZpbmUgQ1NJMl9EVF9ZVVY0MjI4QiAgVklTQ09OVElfQ1NJMl9EVF9ZVVY0MjI4Qg0K PiA+ICsjZGVmaW5lIENTSTJfRFRfWVVWNDIyMTBCIFZJU0NPTlRJX0NTSTJfRFRfWVVWNDIyMTBC DQo+ID4gKyNkZWZpbmUgQ1NJMl9EVF9SR0I0NDQJICAweDIwDQo+ID4gKyNkZWZpbmUgQ1NJMl9E VF9SR0I1NTUJICAweDIxDQo+ID4gKyNkZWZpbmUgQ1NJMl9EVF9SR0I1NjUJICBWSVNDT05USV9D U0kyX0RUX1JHQjU2NQ0KPiA+ICsjZGVmaW5lIENTSTJfRFRfUkdCNjY2CSAgMHgyMw0KPiA+ICsj ZGVmaW5lIENTSTJfRFRfUkdCODg4CSAgVklTQ09OVElfQ1NJMl9EVF9SR0I4ODgNCj4gPiArI2Rl ZmluZSBDU0kyX0RUX1JBVzgJICBWSVNDT05USV9DU0kyX0RUX1JBVzgNCj4gPiArI2RlZmluZSBD U0kyX0RUX1JBVzEwCSAgVklTQ09OVElfQ1NJMl9EVF9SQVcxMA0KPiA+ICsjZGVmaW5lIENTSTJf RFRfUkFXMTIJICBWSVNDT05USV9DU0kyX0RUX1JBVzEyDQo+ID4gKyNkZWZpbmUgQ1NJMl9EVF9S QVcxNAkgIFZJU0NPTlRJX0NTSTJfRFRfUkFXMTQNCj4gDQo+IFlvdSBjYW4gZHJvcCB0aGlzIGFu ZCByZXBsYWNlIGl0IHdpdGggdGhlIG1hY3JvcyBkZWZpbmVkIGluDQo+IGluY2x1ZGUvbWVkaWEv bWlwaS1jc2kyLmguDQoNCkknbGwgdXNlIGRlZmluaXRpb25zIGluIG1lZGlhL21pcGktY3NpMi5o IC4NCg0KPiA+ICsNCj4gPiArI2RlZmluZSBURVNUQ1RSTDBfUEhZX1RFU1RDTEtfMQkgICAgIDB4 Mg0KPiA+ICsjZGVmaW5lIFRFU1RDVFJMMF9QSFlfVEVTVENMS18wCSAgICAgMHgwDQo+ID4gKyNk ZWZpbmUgVEVTVENUUkwxX1BIWV9URVNURU4JICAgICAweDEwMDAwDQo+ID4gKyNkZWZpbmUgVEVT VENUUkwxX1BIWV9URVNURE9VVF9TSElGVCA4VQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHdy aXRlX2RwaHlfcGFyYW0oKSAtIFdyaXRlIENTSTJSWCBEUEhZIHBhcmFtcw0KPiA+ICsgKg0KPiA+ ICsgKiBAdGVzdF9tb2RlOiB0ZXN0IGNvZGUgYWRkcmVzcw0KPiA+ICsgKiBAdGVzdF9pbjogdGVz dCBjb2RlIGRhdGENCj4gPiArICogUmV0dXJuOiBOb25lDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMg dm9pZCB3cml0ZV9kcGh5X3BhcmFtKHUzMiB0ZXN0X21vZGUsIHU4IHRlc3RfaW4sIHN0cnVjdCBo d2RfdmlpZl9yZXMNCj4gKnJlcykNCj4gPiArew0KPiA+ICsJLyogc2VsZWN0IE1TQiBhZGRyZXNz IHJlZ2lzdGVyICovDQo+ID4gKwl3cml0ZWwoVEVTVENUUkwxX1BIWV9URVNURU4sDQo+ICZyZXMt PmNzaTJob3N0X3JlZy0+Q1NJMlJYX1BIWV9URVNUQ1RSTDEpOw0KPiA+ICsNCj4gPiArCS8qIHJp c2UgYW5kIGNsZWFyIHRoZSB0ZXN0Y2xrICovDQo+ID4gKwl3cml0ZWwoVEVTVENUUkwwX1BIWV9U RVNUQ0xLXzEsDQo+ICZyZXMtPmNzaTJob3N0X3JlZy0+Q1NJMlJYX1BIWV9URVNUQ1RSTDApOw0K PiA+ICsJd3JpdGVsKFRFU1RDVFJMMF9QSFlfVEVTVENMS18wLA0KPiAmcmVzLT5jc2kyaG9zdF9y ZWctPkNTSTJSWF9QSFlfVEVTVENUUkwwKTsNCj4gPiArDQo+ID4gKwkvKiBzZXQgTVNCIGFkZHJl c3Mgb2YgdGVzdF9tb2RlICovDQo+ID4gKwl3cml0ZWwoRklFTERfR0VUKDB4RjAwLCB0ZXN0X21v ZGUpLA0KPiAmcmVzLT5jc2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfVEVTVENUUkwxKTsNCj4gPiAr DQo+ID4gKwkvKiByaXNlIGFuZCBjbGVhciB0aGUgdGVzdGNsayAqLw0KPiA+ICsJd3JpdGVsKFRF U1RDVFJMMF9QSFlfVEVTVENMS18xLA0KPiAmcmVzLT5jc2kyaG9zdF9yZWctPkNTSTJSWF9QSFlf VEVTVENUUkwwKTsNCj4gPiArCXdyaXRlbChURVNUQ1RSTDBfUEhZX1RFU1RDTEtfMCwNCj4gJnJl cy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhfUEhZX1RFU1RDVFJMMCk7DQo+ID4gKw0KPiA+ICsJLyog c2VsZWN0IGFuZCBzZXQgTFNCIGFkZHJlc3MgcmVnaXN0ZXIgKi8NCj4gPiArCXdyaXRlbChURVNU Q1RSTDFfUEhZX1RFU1RFTiB8IEZJRUxEX0dFVCgweEZGLCB0ZXN0X21vZGUpLA0KPiA+ICsJICAg ICAgICZyZXMtPmNzaTJob3N0X3JlZy0+Q1NJMlJYX1BIWV9URVNUQ1RSTDEpOw0KPiA+ICsNCj4g PiArCS8qIHJpc2UgYW5kIGNsZWFyIHRoZSB0ZXN0Y2xrICovDQo+ID4gKwl3cml0ZWwoVEVTVENU UkwwX1BIWV9URVNUQ0xLXzEsDQo+ICZyZXMtPmNzaTJob3N0X3JlZy0+Q1NJMlJYX1BIWV9URVNU Q1RSTDApOw0KPiA+ICsJd3JpdGVsKFRFU1RDVFJMMF9QSFlfVEVTVENMS18wLA0KPiAmcmVzLT5j c2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfVEVTVENUUkwwKTsNCj4gPiArDQo+ID4gKwkvKiBzZXQg dGhlIHRlc3QgY29kZSBkYXRhICovDQo+ID4gKwl3cml0ZWwoKHUzMil0ZXN0X2luLCAmcmVzLT5j c2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfVEVTVENUUkwxKTsNCj4gPiArDQo+ID4gKwkvKiByaXNl IGFuZCBjbGVhciB0aGUgdGVzdGNsayAqLw0KPiA+ICsJd3JpdGVsKFRFU1RDVFJMMF9QSFlfVEVT VENMS18xLA0KPiAmcmVzLT5jc2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfVEVTVENUUkwwKTsNCj4g PiArCXdyaXRlbChURVNUQ1RSTDBfUEhZX1RFU1RDTEtfMCwNCj4gJnJlcy0+Y3NpMmhvc3RfcmVn LT5DU0kyUlhfUEhZX1RFU1RDVFJMMCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg KiByZWFkX2RwaHlfcGFyYW0oKSAtIFJlYWQgQ1NJMlJYIERQSFkgcGFyYW1zDQo+ID4gKyAqDQo+ ID4gKyAqIEB0ZXN0X21vZGU6IHRlc3QgY29kZSBhZGRyZXNzDQo+ID4gKyAqIFJldHVybjogdGVz dCBjb2RlIGRhdGENCj4gPiArICovDQo+ID4gK3N0YXRpYyB1OCByZWFkX2RwaHlfcGFyYW0odTMy IHRlc3RfbW9kZSwgc3RydWN0IGh3ZF92aWlmX3JlcyAqcmVzKQ0KPiA+ICt7DQo+ID4gKwl1MzIg cmVhZF9kYXRhOw0KPiA+ICsNCj4gPiArCS8qIHNlbGVjdCBNU0IgYWRkcmVzcyByZWdpc3RlciAq Lw0KPiA+ICsJd3JpdGVsKFRFU1RDVFJMMV9QSFlfVEVTVEVOLA0KPiAmcmVzLT5jc2kyaG9zdF9y ZWctPkNTSTJSWF9QSFlfVEVTVENUUkwxKTsNCj4gPiArDQo+ID4gKwkvKiByaXNlIGFuZCBjbGVh ciB0aGUgdGVzdGNsayAqLw0KPiA+ICsJd3JpdGVsKFRFU1RDVFJMMF9QSFlfVEVTVENMS18xLA0K PiAmcmVzLT5jc2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfVEVTVENUUkwwKTsNCj4gPiArCXdyaXRl bChURVNUQ1RSTDBfUEhZX1RFU1RDTEtfMCwNCj4gJnJlcy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhf UEhZX1RFU1RDVFJMMCk7DQo+ID4gKw0KPiA+ICsJLyogc2V0IE1TQiBhZGRyZXNzIG9mIHRlc3Rf bW9kZSAqLw0KPiA+ICsJd3JpdGVsKEZJRUxEX0dFVCgweEYwMCwgdGVzdF9tb2RlKSwNCj4gJnJl cy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhfUEhZX1RFU1RDVFJMMSk7DQo+ID4gKw0KPiA+ICsJLyog cmlzZSBhbmQgY2xlYXIgdGhlIHRlc3RjbGsgKi8NCj4gPiArCXdyaXRlbChURVNUQ1RSTDBfUEhZ X1RFU1RDTEtfMSwNCj4gJnJlcy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhfUEhZX1RFU1RDVFJMMCk7 DQo+ID4gKwl3cml0ZWwoVEVTVENUUkwwX1BIWV9URVNUQ0xLXzAsDQo+ICZyZXMtPmNzaTJob3N0 X3JlZy0+Q1NJMlJYX1BIWV9URVNUQ1RSTDApOw0KPiA+ICsNCj4gPiArCS8qIHNlbGVjdCBhbmQg c2V0IExTQiBhZGRyZXNzIHJlZ2lzdGVyICovDQo+ID4gKwl3cml0ZWwoVEVTVENUUkwxX1BIWV9U RVNURU4gfCBGSUVMRF9HRVQoMHhGRiwgdGVzdF9tb2RlKSwNCj4gPiArCSAgICAgICAmcmVzLT5j c2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfVEVTVENUUkwxKTsNCj4gPiArDQo+ID4gKwkvKiByaXNl IGFuZCBjbGVhciB0aGUgdGVzdGNsayAqLw0KPiA+ICsJd3JpdGVsKFRFU1RDVFJMMF9QSFlfVEVT VENMS18xLA0KPiAmcmVzLT5jc2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfVEVTVENUUkwwKTsNCj4g PiArCXdyaXRlbChURVNUQ1RSTDBfUEhZX1RFU1RDTEtfMCwNCj4gJnJlcy0+Y3NpMmhvc3RfcmVn LT5DU0kyUlhfUEhZX1RFU1RDVFJMMCk7DQo+ID4gKw0KPiA+ICsJLyogcmVhZCB0aGUgdGVzdCBj b2RlIGRhdGEgKi8NCj4gPiArCXJlYWRfZGF0YSA9IHJlYWRsKCZyZXMtPmNzaTJob3N0X3JlZy0+ Q1NJMlJYX1BIWV9URVNUQ1RSTDEpOw0KPiA+ICsJcmV0dXJuICh1OCkocmVhZF9kYXRhID4+IFRF U1RDVFJMMV9QSFlfVEVTVERPVVRfU0hJRlQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogZW51bSBkcGh5X3Rlc3Rjb2RlIC0gRFBIWSByZWdpc3RlcnMgdmlhIHRoZSBsb2NhbCBj b21tdW5pY2F0aW9uIHBhdGgNCj4gPiArICovDQo+ID4gK2VudW0gZHBoeV90ZXN0Y29kZSB7DQo+ ID4gKwlESUdfUkRXUl9SWF9TWVNfMCA9IDB4MDAxLA0KPiA+ICsJRElHX1JEV1JfUlhfU1lTXzEg PSAweDAwMiwNCj4gPiArCURJR19SRFdSX1JYX1NZU18zID0gMHgwMDQsDQo+ID4gKwlESUdfUkRX Ul9SWF9TWVNfNyA9IDB4MDA4LA0KPiA+ICsJRElHX1JEV1JfUlhfUlhfU1RBUlRVUF9PVlJfMiA9 IDB4MEUyLA0KPiA+ICsJRElHX1JEV1JfUlhfUlhfU1RBUlRVUF9PVlJfMyA9IDB4MEUzLA0KPiA+ ICsJRElHX1JEV1JfUlhfUlhfU1RBUlRVUF9PVlJfNCA9IDB4MEU0LA0KPiA+ICsJRElHX1JEV1Jf UlhfUlhfU1RBUlRVUF9PVlJfNSA9IDB4MEU1LA0KPiA+ICsJRElHX1JEV1JfUlhfQ0JfMiA9IDB4 MUFDLA0KPiA+ICsJRElHX1JEX1JYX1RFUk1fQ0FMXzAgPSAweDIyMCwNCj4gPiArCURJR19SRF9S WF9URVJNX0NBTF8xID0gMHgyMjEsDQo+ID4gKwlESUdfUkRfUlhfVEVSTV9DQUxfMiA9IDB4MjIy LA0KPiA+ICsJRElHX1JEV1JfUlhfQ0xLTEFORV9MQU5FXzYgPSAweDMwNywNCj4gPiArCURJR19S RF9SWF9DTEtMQU5FX09GRlNFVF9DQUxfMCA9IDB4MzlELA0KPiA+ICsJRElHX1JEX1JYX0xBTkUw X09GRlNFVF9DQUxfMCA9IDB4NTlGLA0KPiA+ICsJRElHX1JEX1JYX0xBTkUwX0RETF8wID0gMHg1 RTAsDQo+ID4gKwlESUdfUkRfUlhfTEFORTFfT0ZGU0VUX0NBTF8wID0gMHg3OUYsDQo+ID4gKwlE SUdfUkRfUlhfTEFORTFfRERMXzAgPSAweDdFMCwNCj4gPiArCURJR19SRF9SWF9MQU5FMl9PRkZT RVRfQ0FMXzAgPSAweDk5RiwNCj4gPiArCURJR19SRF9SWF9MQU5FMl9ERExfMCA9IDB4OUUwLA0K PiA+ICsJRElHX1JEX1JYX0xBTkUzX09GRlNFVF9DQUxfMCA9IDB4QjlGLA0KPiA+ICsJRElHX1JE X1JYX0xBTkUzX0RETF8wID0gMHhCRTAsDQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFNZ U18wX0hTRlJFUVJBTkdFX09WUiAgQklUKDUpDQo+ID4gKyNkZWZpbmUgU1lTXzdfUkVTRVJWRUQJ ICAgICAgIEZJRUxEX1BSRVAoMHgxRiwgMHgwQykNCj4gPiArI2RlZmluZSBTWVNfN19ERVNLRVdf UE9MICAgICAgIEJJVCg1KQ0KPiA+ICsjZGVmaW5lIFNUQVJUVVBfT1ZSXzRfQ05UVkFMICAgRklF TERfUFJFUCgweDcwLCAweDAxKQ0KPiA+ICsjZGVmaW5lIFNUQVJUVVBfT1ZSXzRfRERMX0VOICAg QklUKDApDQo+ID4gKyNkZWZpbmUgU1RBUlRVUF9PVlJfNV9CWVBBU1MgICBCSVQoMCkNCj4gPiAr I2RlZmluZSBDQl8yX0xQUlhfQklBUwkgICAgICAgQklUKDYpDQo+ID4gKyNkZWZpbmUgQ0JfMl9S RVNFUlZFRAkgICAgICAgRklFTERfUFJFUCgweDNGLCAweDBCKQ0KPiA+ICsjZGVmaW5lIENMS0xB TkVfUlhIU19QVUxMX0xPTkcgQklUKDcpDQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGh3ZF92aWlmX2RwaHlfaHNfaW5mbyBkcGh5X2hzX2luZm9bXSA9IHsNCj4gPiArCXsgODAsIDB4 MCwgMHgxY2MgfSwgICB7IDg1LCAweDEwLCAweDFjYyB9LCAgIHsgOTUsIDB4MjAsIDB4MWNjIH0s ICAgeyAxMDUsDQo+IDB4MzAsIDB4MWNjIH0sDQo+ID4gKwl7IDExNSwgMHgxLCAweDFjYyB9LCAg eyAxMjUsIDB4MTEsIDB4MWNjIH0sICB7IDEzNSwgMHgyMSwgMHgxY2MgfSwgIHsgMTQ1LA0KPiAw eDMxLCAweDFjYyB9LA0KPiA+ICsJeyAxNTUsIDB4MiwgMHgxY2MgfSwgIHsgMTY1LCAweDEyLCAw eDFjYyB9LCAgeyAxNzUsIDB4MjIsIDB4MWNjIH0sICB7IDE4NSwNCj4gMHgzMiwgMHgxY2MgfSwN Cj4gPiArCXsgMTk4LCAweDMsIDB4MWNjIH0sICB7IDIxMywgMHgxMywgMHgxY2MgfSwgIHsgMjI4 LCAweDIzLCAweDFjYyB9LCAgeyAyNDMsDQo+IDB4MzMsIDB4MWNjIH0sDQo+ID4gKwl7IDI2Mywg MHg0LCAweDFjYyB9LCAgeyAyODgsIDB4MTQsIDB4MWNjIH0sICB7IDMxMywgMHgyNSwgMHgxY2Mg fSwgIHsgMzM4LA0KPiAweDM1LCAweDFjYyB9LA0KPiA+ICsJeyAzNzUsIDB4NSwgMHgxY2MgfSwg IHsgNDI1LCAweDE2LCAweDFjYyB9LCAgeyA0NzUsIDB4MjYsIDB4MWNjIH0sICB7IDUyNSwNCj4g MHgzNywgMHgxY2MgfSwNCj4gPiArCXsgNTc1LCAweDcsIDB4MWNjIH0sICB7IDYyNSwgMHgxOCwg MHgxY2MgfSwgIHsgNjc1LCAweDI4LCAweDFjYyB9LCAgeyA3MjUsDQo+IDB4MzksIDB4MWNjIH0s DQo+ID4gKwl7IDc3NSwgMHg5LCAweDFjYyB9LCAgeyA4MjUsIDB4MTksIDB4MWNjIH0sICB7IDg3 NSwgMHgyOSwgMHgxY2MgfSwgIHsgOTI1LA0KPiAweDNhLCAweDFjYyB9LA0KPiA+ICsJeyA5NzUs IDB4YSwgMHgxY2MgfSwgIHsgMTAyNSwgMHgxYSwgMHgxY2MgfSwgeyAxMDc1LCAweDJhLCAweDFj YyB9LCB7IDExMjUsDQo+IDB4M2IsIDB4MWNjIH0sDQo+ID4gKwl7IDExNzUsIDB4YiwgMHgxY2Mg fSwgeyAxMjI1LCAweDFiLCAweDFjYyB9LCB7IDEyNzUsIDB4MmIsIDB4MWNjIH0sIHsgMTMyNSwN Cj4gMHgzYywgMHgxY2MgfSwNCj4gPiArCXsgMTM3NSwgMHhjLCAweDFjYyB9LCB7IDE0MjUsIDB4 MWMsIDB4MWNjIH0sIHsgMTQ3NSwgMHgyYywgMHgxY2MgfQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIGdldF9kcGh5X2hzX3RyYW5zZmVyX2luZm8oKSAtIEdldCBEUEhZIEhTIGlu Zm8gZnJvbSB0YWJsZQ0KPiA+ICsgKg0KPiA+ICsgKiBAZHBoeV9yYXRlOiBEUEhZIGNsb2NrIGlu IE1Ieg0KPiA+ICsgKiBAaHNmcmVxcmFuZ2U6IEhTIEZyZXF1ZW5jeSBSYW5nZQ0KPiA+ICsgKiBA b3NjX2ZyZXFfdGFyZ2V0OiBPU0MgRnJlcXVlbmN5IFRhcmdldA0KPiA+ICsgKiBSZXR1cm46IE5v bmUNCj4gPiArICovDQo+ID4gK3N0YXRpYyB2b2lkIGdldF9kcGh5X2hzX3RyYW5zZmVyX2luZm8o dTMyIGRwaHlfcmF0ZSwgdTMyICpoc2ZyZXFyYW5nZSwgdTMyDQo+ICpvc2NfZnJlcV90YXJnZXQs DQo+ID4gKwkJCQkgICAgICBzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpyZXMpDQo+ID4gK3sNCj4gPiAr CWludCB0YWJsZV9zaXplID0gQVJSQVlfU0laRShkcGh5X2hzX2luZm8pOw0KPiA+ICsJaW50IGk7 DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMTsgaSA8IHRhYmxlX3NpemU7IGkrKykgew0KPiA+ICsJ CWlmIChkcGh5X3JhdGUgPCBkcGh5X2hzX2luZm9baV0ucmF0ZSkgew0KPiA+ICsJCQkqaHNmcmVx cmFuZ2UgPSBkcGh5X2hzX2luZm9baSAtIDFdLmhzZnJlcXJhbmdlOw0KPiA+ICsJCQkqb3NjX2Zy ZXFfdGFyZ2V0ID0gZHBoeV9oc19pbmZvW2kgLSAxXS5vc2NfZnJlcV90YXJnZXQ7DQo+ID4gKwkJ CXJldHVybjsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogbm90IGZvdW5kOyBy ZXR1cm4gdGhlIGxhcmdlc3QgZW50cnkgKi8NCj4gPiArCSpoc2ZyZXFyYW5nZSA9IGRwaHlfaHNf aW5mb1t0YWJsZV9zaXplIC0gMV0uaHNmcmVxcmFuZ2U7DQo+ID4gKwkqb3NjX2ZyZXFfdGFyZ2V0 ID0gZHBoeV9oc19pbmZvW3RhYmxlX3NpemUgLSAxXS5vc2NfZnJlcV90YXJnZXQ7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBod2RfdmlpZl9jc2kycnhfc2V0X2RwaHlfcmF0ZSgp IC0gU2V0IEQtUEhZIHJhdGUNCj4gPiArICoNCj4gPiArICogQGRwaHlfcmF0ZTogRC1QSFkgcmF0 ZSBvZiAxIExhbmVbTWJwc10gWzgwLi4xNTAwXQ0KPiA+ICsgKiBSZXR1cm46IE5vbmUNCj4gPiAr ICovDQo+ID4gK3N0YXRpYyB2b2lkIGh3ZF92aWlmX2NzaTJyeF9zZXRfZHBoeV9yYXRlKHUzMiBk cGh5X3JhdGUsIHN0cnVjdCBod2RfdmlpZl9yZXMNCj4gKnJlcykNCj4gPiArew0KPiA+ICsJdTMy IGhzZnJlcXJhbmdlLCBvc2NfZnJlcV90YXJnZXQ7DQo+ID4gKw0KPiA+ICsJZ2V0X2RwaHlfaHNf dHJhbnNmZXJfaW5mbyhkcGh5X3JhdGUsICZoc2ZyZXFyYW5nZSwgJm9zY19mcmVxX3RhcmdldCwN Cj4gcmVzKTsNCj4gPiArDQo+ID4gKwl3cml0ZV9kcGh5X3BhcmFtKERJR19SRFdSX1JYX1NZU18x LCAodTgpaHNmcmVxcmFuZ2UsIHJlcyk7DQo+ID4gKwl3cml0ZV9kcGh5X3BhcmFtKERJR19SRFdS X1JYX1NZU18wLA0KPiBTWVNfMF9IU0ZSRVFSQU5HRV9PVlIsIHJlcyk7DQo+ID4gKwl3cml0ZV9k cGh5X3BhcmFtKERJR19SRFdSX1JYX1JYX1NUQVJUVVBfT1ZSXzUsDQo+IFNUQVJUVVBfT1ZSXzVf QllQQVNTLCByZXMpOw0KPiA+ICsJd3JpdGVfZHBoeV9wYXJhbShESUdfUkRXUl9SWF9SWF9TVEFS VFVQX09WUl80LA0KPiBTVEFSVFVQX09WUl80X0NOVFZBTCwgcmVzKTsNCj4gPiArCXdyaXRlX2Rw aHlfcGFyYW0oRElHX1JEV1JfUlhfQ0JfMiwgQ0JfMl9MUFJYX0JJQVMgfA0KPiBDQl8yX1JFU0VS VkVELCByZXMpOw0KPiA+ICsJd3JpdGVfZHBoeV9wYXJhbShESUdfUkRXUl9SWF9TWVNfNywgU1lT XzdfREVTS0VXX1BPTCB8DQo+IFNZU183X1JFU0VSVkVELCByZXMpOw0KPiA+ICsJd3JpdGVfZHBo eV9wYXJhbShESUdfUkRXUl9SWF9DTEtMQU5FX0xBTkVfNiwNCj4gQ0xLTEFORV9SWEhTX1BVTExf TE9ORywgcmVzKTsNCj4gPiArCXdyaXRlX2RwaHlfcGFyYW0oRElHX1JEV1JfUlhfUlhfU1RBUlRV UF9PVlJfMiwNCj4gRklFTERfR0VUKDB4ZmYsIG9zY19mcmVxX3RhcmdldCksIHJlcyk7DQo+ID4g Kwl3cml0ZV9kcGh5X3BhcmFtKERJR19SRFdSX1JYX1JYX1NUQVJUVVBfT1ZSXzMsDQo+IEZJRUxE X0dFVCgweGYwMCwgb3NjX2ZyZXFfdGFyZ2V0KSwgcmVzKTsNCj4gPiArCXdyaXRlX2RwaHlfcGFy YW0oRElHX1JEV1JfUlhfUlhfU1RBUlRVUF9PVlJfNCwNCj4gU1RBUlRVUF9PVlJfNF9DTlRWQUwg fCBTVEFSVFVQX09WUl80X0RETF9FTiwNCj4gPiArCQkJIHJlcyk7DQo+ID4gKw0KPiA+ICsJd3Jp dGVsKEhXRF9WSUlGX0RQSFlfQ0ZHX0NMS18yNU0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5zeXMu RFBIWV9GUkVRUkFOR0UpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogY2hlY2tf ZHBoeV9jYWxpYnJhdGlvbl9zdGF0dXMoKSAtIENoZWNrIEQtUEhZIGNhbGlicmF0aW9uIHN0YXR1 cw0KPiA+ICsgKg0KPiA+ICsgKiBAdGVzdF9tb2RlOiB0ZXN0IGNvZGUgcmVsYXRlZCB0byBjYWxp YnJhdGlvbiBpbmZvcm1hdGlvbg0KPiA+ICsgKiBAc2hpZnRfdmFsX2Vycjogc2hpZnQgdmFsdWUg cmVsYXRlZCB0byBlcnJvciBpbmZvcm1hdGlvbg0KPiA+ICsgKiBAc2hpZnRfdmFsX2RvbmU6IHNo aWZ0IHZhbHVlIHJlbGF0ZWQgdG8gZG9uZSBpbmZvcm1hdGlvbg0KPiA+ICsgKiBSZXR1cm46IEhX RF9WSUlGX0NTSTJfQ0FMX05PVF9ET05FIGNhbGlicmF0aW9uIGlzIG5vdCBkb25lKG91dCBvZg0K PiB0YXJnZXQgb3Igbm90IGNvbXBsZXRlZCkNCj4gPiArICogUmV0dXJuOiBIV0RfVklJRl9DU0ky X0NBTF9GQUlMIGNhbGlicmF0aW9uIHdhcyBmYWlsZWQNCj4gPiArICogUmV0dXJuOiBIV0RfVklJ Rl9DU0kyX0NBTF9TVUNDRVNTIGNhbGlicmF0aW9uIHdhcyBzdWNjZWVkZWQNCj4gPiArICovDQo+ ID4gK3N0YXRpYyB1MzIgY2hlY2tfZHBoeV9jYWxpYnJhdGlvbl9zdGF0dXModTMyIHRlc3RfbW9k ZSwgdTMyIHNoaWZ0X3ZhbF9lcnIsDQo+IHUzMiBzaGlmdF92YWxfZG9uZSwNCj4gPiArCQkJCQkg c3RydWN0IGh3ZF92aWlmX3JlcyAqcmVzKQ0KPiA+ICt7DQo+ID4gKwl1MzIgcmVhZF9kYXRhID0g KHUzMilyZWFkX2RwaHlfcGFyYW0odGVzdF9tb2RlLCByZXMpOw0KPiA+ICsNCj4gPiArCWlmICgh KHJlYWRfZGF0YSAmIEJJVChzaGlmdF92YWxfZG9uZSkpKQ0KPiA+ICsJCXJldHVybiBIV0RfVklJ Rl9DU0kyX0NBTF9OT1RfRE9ORTsNCj4gPiArDQo+ID4gKwkvKiBlcnJvciBjaGVjayBpcyBub3Qg cmVxdWlyZWQgZm9yIHRlcm1pbmF0aW9uIGNhbGlicmF0aW9uIHdpdGgNCj4gUkVYVCgweDIyMSkg Ki8NCj4gPiArCWlmICh0ZXN0X21vZGUgPT0gRElHX1JEX1JYX1RFUk1fQ0FMXzEpDQo+ID4gKwkJ cmV0dXJuIEhXRF9WSUlGX0NTSTJfQ0FMX1NVQ0NFU1M7DQo+ID4gKw0KPiA+ICsJLyogZG9uZSB3 aXRoIGVycm9yICovDQo+ID4gKwlpZiAocmVhZF9kYXRhICYgQklUKHNoaWZ0X3ZhbF9lcnIpKQ0K PiA+ICsJCXJldHVybiBIV0RfVklJRl9DU0kyX0NBTF9GQUlMOw0KPiA+ICsNCj4gPiArCXJldHVy biBIV0RfVklJRl9DU0kyX0NBTF9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogaHdkX3ZpaWZfY3NpMnJ4X2luaXRpYWxpemUoKSAtIEluaXRpYWxpemUgQ1NJLTIgUlgg ZHJpdmVyDQo+ID4gKyAqDQo+ID4gKyAqIEBudW1fbGFuZTogWzEuLjRdKFZJSUYgQ0gwLUNIMSkN Cj4gPiArICogQGxhbmVfYXNzaWduOiBsYW5lIGNvbm5lY3Rpb24uIEZvciBtb3JlIHJlZmVyIEBy ZWYNCj4gaHdkX3ZpaWZfZHBoeV9sYW5lX2Fzc2lnbm1lbnQNCj4gPiArICogQGRwaHlfcmF0ZTog RC1QSFkgcmF0ZSBvZiAxIExhbmVbTWJwc10gWzgwLi4xNTAwXQ0KPiA+ICsgKiBAcmV4dF9jYWxp YnJhdGlvbjogZW5hYmxlIG9yIGRpc2FibGUgcmV4dCBjYWxpYnJhdGlvbi4NCj4gPiArICogICAg ICAgICAgICAgICAgICAgIEZvciBtb3JlIHJlZmVyIEByZWYgaHdkX3ZpaWZfY3NpMnJ4X2NhbF9z dGF0dXMNCj4gPiArICogQGVycl90YXJnZXQ6IFBvaW50ZXIgdG8gY29uZmlndXJhdGlvbiBmb3Ig TGluZSBlcnJvciBkZXRlY3Rpb24uDQo+ID4gKyAqIEBtYXNrOiBNQVNLIG9mIENTSS0yIFJYIGVy cm9yIGludGVycnVwdGlvbg0KPiA+ICsgKiBSZXR1cm46IDAgT3BlcmF0aW9uIGNvbXBsZXRlcyBz dWNjZXNzZnVsbHkNCj4gPiArICogUmV0dXJuOiAtRUlOVkFMIFBhcmFtZXRlciBlcnJvcg0KPiA+ ICsgKiAtIFsxXSAibnVtX2xhbmUiLCAibGFuZV9hc3NpZ24iLCAiZHBoeV9yYXRlIiwgInJleHRf Y2FsaWJyYXRpb24iIG9yDQo+ICJpbnB1dF9tb2RlIiBpcyBvdXQgb2YgcmFuZ2UNCj4gPiArICog LSBbMl0gImVycl90YXJnZXQiIGlzIE5VTEwNCj4gPiArICogLSBbM10gbWVtYmVyIG9mICJlcnJf dGFyZ2V0IiBpcyBpbnZhbGlkDQo+ID4gKyAqLw0KPiA+ICtzMzIgaHdkX3ZpaWZfY3NpMnJ4X2lu aXRpYWxpemUoc3RydWN0IGh3ZF92aWlmX3JlcyAqcmVzLCB1MzIgbnVtX2xhbmUsIHUzMg0KPiBs YW5lX2Fzc2lnbiwNCj4gPiArCQkJICAgICAgIHUzMiBkcGh5X3JhdGUsIHUzMiByZXh0X2NhbGli cmF0aW9uLA0KPiA+ICsJCQkgICAgICAgY29uc3Qgc3RydWN0IGh3ZF92aWlmX2NzaTJyeF9saW5l X2Vycl90YXJnZXQNCj4gKmVycl90YXJnZXQsDQo+ID4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg aHdkX3ZpaWZfY3NpMnJ4X2lycV9tYXNrICptYXNrKQ0KPiA+ICt7DQo+ID4gKwl1MzIgaSwgdmFs Ow0KPiA+ICsNCj4gPiArCWlmIChudW1fbGFuZSA9PSAwVSB8fCBudW1fbGFuZSA+IDRVIHx8IGxh bmVfYXNzaWduID4NCj4gSFdEX1ZJSUZfQ1NJMl9EUEhZX0wwTDJMMUwzKQ0KPiA+ICsJCXJldHVy biAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWlmIChkcGh5X3JhdGUgPCBIV0RfVklJRl9EUEhZX01J Tl9EQVRBX1JBVEUgfHwgZHBoeV9yYXRlID4NCj4gSFdEX1ZJSUZfRFBIWV9NQVhfREFUQV9SQVRF IHx8DQo+ID4gKwkgICAgKHJleHRfY2FsaWJyYXRpb24gIT0gSFdEX1ZJSUZfRU5BQkxFICYmIHJl eHRfY2FsaWJyYXRpb24gIT0NCj4gSFdEX1ZJSUZfRElTQUJMRSkgfHwNCj4gPiArCSAgICAhZXJy X3RhcmdldCkgew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CWZvciAoaSA9IDA7IGkgPCA4VTsgaSsrKSB7DQo+ID4gKwkJaWYgKGVycl90YXJnZXQtPnZjW2ld ID4gSFdEX1ZJSUZfQ1NJMl9NQVhfVkMgfHwNCj4gPiArCQkgICAgZXJyX3RhcmdldC0+ZHRbaV0g PiBIV0RfVklJRl9DU0kyX01BWF9EVCB8fA0KPiA+ICsJCSAgICAoZXJyX3RhcmdldC0+ZHRbaV0g PCBIV0RfVklJRl9DU0kyX01JTl9EVCAmJg0KPiBlcnJfdGFyZ2V0LT5kdFtpXSAhPSAwVSkpIHsN Cj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CS8qIDFzdCBwaGFzZSBvZiBpbml0aWFsaXphdGlvbiAqLw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlG X0VOQUJMRSwgJnJlcy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhfUkVTRVROKTsNCj4gPiArCXdyaXRl bChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jc2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfUlNU Wik7DQo+ID4gKwl3cml0ZWwoSFdEX1ZJSUZfRElTQUJMRSwNCj4gJnJlcy0+Y3NpMmhvc3RfcmVn LT5DU0kyUlhfUEhZX1NIVVRET1dOWik7DQo+ID4gKwl3cml0ZWwoSFdEX1ZJSUZfRU5BQkxFLA0K PiAmcmVzLT5jc2kyaG9zdF9yZWctPkNTSTJSWF9QSFlfVEVTVENUUkwwKTsNCj4gPiArCW5kZWxh eSgxNVUpOw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlGX0RJU0FCTEUsDQo+ICZyZXMtPmNzaTJob3N0 X3JlZy0+Q1NJMlJYX1BIWV9URVNUQ1RSTDApOw0KPiA+ICsNCj4gPiArCS8qIENvbmZpZ3VyZSBE LVBIWSBmcmVxdWVuY3kgcmFuZ2UgKi8NCj4gPiArCWh3ZF92aWlmX2NzaTJyeF9zZXRfZHBoeV9y YXRlKGRwaHlfcmF0ZSwgcmVzKTsNCj4gPiArDQo+ID4gKwkvKiAybmQgcGhhc2Ugb2YgaW5pdGlh bGl6YXRpb24gKi8NCj4gPiArCXdyaXRlbCgobnVtX2xhbmUgLSAxVSksICZyZXMtPmNzaTJob3N0 X3JlZy0+Q1NJMlJYX05MQU5FUyk7DQo+ID4gKwluZGVsYXkoNVUpOw0KPiA+ICsNCj4gPiArCS8q IGNvbmZpZ3VyYXRpb24gbm90IHRvIHVzZSByZXh0ICovDQo+ID4gKwlpZiAocmV4dF9jYWxpYnJh dGlvbiA9PSBIV0RfVklJRl9ESVNBQkxFKSB7DQo+ID4gKwkJd3JpdGVfZHBoeV9wYXJhbSgweDAw NCwgMHgxMCwgcmVzKTsNCj4gPiArCQluZGVsYXkoNVUpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CS8qIFJlbGVhc2UgRC1QSFkgZnJvbSBSZXNldCAqLw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlGX0VO QUJMRSwNCj4gJnJlcy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhfUEhZX1NIVVRET1dOWik7DQo+ID4g KwluZGVsYXkoNVUpOw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlGX0VOQUJMRSwgJnJlcy0+Y3NpMmhv c3RfcmVnLT5DU0kyUlhfUEhZX1JTVFopOw0KPiA+ICsNCj4gPiArCS8qIGNvbmZpZ3VyYXRpb24g b2YgbGluZSBlcnJvciB0YXJnZXQgKi8NCj4gPiArCXZhbCA9IChlcnJfdGFyZ2V0LT52Y1szXSA8 PCAzMFUpIHwgKGVycl90YXJnZXQtPmR0WzNdIDw8IDI0VSkgfA0KPiAoZXJyX3RhcmdldC0+dmNb Ml0gPDwgMjJVKSB8DQo+ID4gKwkgICAgICAoZXJyX3RhcmdldC0+ZHRbMl0gPDwgMTZVKSB8IChl cnJfdGFyZ2V0LT52Y1sxXSA8PCAxNFUpIHwNCj4gKGVycl90YXJnZXQtPmR0WzFdIDw8IDhVKSB8 DQo+ID4gKwkgICAgICAoZXJyX3RhcmdldC0+dmNbMF0gPDwgNlUpIHwgKGVycl90YXJnZXQtPmR0 WzBdKTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNzaTJob3N0X3JlZy0+Q1NJMlJYX0RBVEFf SURTXzEpOw0KPiA+ICsJdmFsID0gKGVycl90YXJnZXQtPnZjWzddIDw8IDMwVSkgfCAoZXJyX3Rh cmdldC0+ZHRbN10gPDwgMjRVKSB8DQo+IChlcnJfdGFyZ2V0LT52Y1s2XSA8PCAyMlUpIHwNCj4g PiArCSAgICAgIChlcnJfdGFyZ2V0LT5kdFs2XSA8PCAxNlUpIHwgKGVycl90YXJnZXQtPnZjWzVd IDw8IDE0VSkgfA0KPiAoZXJyX3RhcmdldC0+ZHRbNV0gPDwgOFUpIHwNCj4gPiArCSAgICAgIChl cnJfdGFyZ2V0LT52Y1s0XSA8PCA2VSkgfCAoZXJyX3RhcmdldC0+ZHRbNF0pOw0KPiA+ICsJd3Jp dGVsKHZhbCwgJnJlcy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhfREFUQV9JRFNfMik7DQo+ID4gKw0K PiA+ICsJLyogY29uZmlndXJhdGlvbiBvZiBtYXNrICovDQo+ID4gKwl3cml0ZWwobWFzay0+bWFz a1swXSwNCj4gJnJlcy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhfSU5UX01TS19QSFlfRkFUQUwpOw0K PiA+ICsJd3JpdGVsKG1hc2stPm1hc2tbMV0sDQo+ICZyZXMtPmNzaTJob3N0X3JlZy0+Q1NJMlJY X0lOVF9NU0tfUEtUX0ZBVEFMKTsNCj4gPiArCXdyaXRlbChtYXNrLT5tYXNrWzJdLA0KPiAmcmVz LT5jc2kyaG9zdF9yZWctPkNTSTJSWF9JTlRfTVNLX0ZSQU1FX0ZBVEFMKTsNCj4gPiArCXdyaXRl bChtYXNrLT5tYXNrWzNdLCAmcmVzLT5jc2kyaG9zdF9yZWctPkNTSTJSWF9JTlRfTVNLX1BIWSk7 DQo+ID4gKwl3cml0ZWwobWFzay0+bWFza1s0XSwgJnJlcy0+Y3NpMmhvc3RfcmVnLT5DU0kyUlhf SU5UX01TS19QS1QpOw0KPiA+ICsJd3JpdGVsKG1hc2stPm1hc2tbNV0sDQo+ICZyZXMtPmNzaTJo b3N0X3JlZy0+Q1NJMlJYX0lOVF9NU0tfTElORSk7DQo+ID4gKw0KPiA+ICsJLyogY29uZmlndXJh dGlvbiBvZiBsYW5lIGFzc2lnbm1lbnQgKi8NCj4gPiArCXdyaXRlbChsYW5lX2Fzc2lnbiwgJnJl cy0+Y2FwdHVyZV9yZWctPnN5cy5EUEhZX0xBTkUpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfY3NpMnJ4X3VuaW5pdGlh bGl6ZSgpIC0gVW5pbml0aWFsaXplIENTSS0yIFJYIGRyaXZlcg0KPiA+ICsgKg0KPiA+ICsgKiBS ZXR1cm46IDAgT3BlcmF0aW9uIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHkNCj4gPiArICovDQo+ID4g K3MzMiBod2RfdmlpZl9jc2kycnhfdW5pbml0aWFsaXplKHN0cnVjdCBod2RfdmlpZl9yZXMgKnJl cykNCj4gPiArew0KPiA+ICsJd3JpdGVsKEhXRF9WSUlGX0RJU0FCTEUsDQo+ICZyZXMtPmNzaTJo b3N0X3JlZy0+Q1NJMlJYX1BIWV9TSFVURE9XTlopOw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlGX0RJ U0FCTEUsDQo+ICZyZXMtPmNzaTJob3N0X3JlZy0+Q1NJMlJYX1BIWV9SU1RaKTsNCj4gPiArCXdy aXRlbChIV0RfVklJRl9FTkFCTEUsDQo+ICZyZXMtPmNzaTJob3N0X3JlZy0+Q1NJMlJYX1BIWV9U RVNUQ1RSTDApOw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlGX0RJU0FCTEUsICZyZXMtPmNzaTJob3N0 X3JlZy0+Q1NJMlJYX1JFU0VUTik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4g PiArDQo+ID4gKyNkZWZpbmUgUE9SVF9TRUxfTUFJTl9MT05HICAwDQo+ID4gKyNkZWZpbmUgUE9S VF9TRUxfTUFJTl9FTUJFRCAxDQo+ID4gKyNkZWZpbmUgUE9SVF9TRUxfU1VCX0xPTkcgICA0DQo+ ID4gKyNkZWZpbmUgUE9SVF9TRUxfU1VCX0VNQkVEICA1DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9p ZCBjb25maWdfdmRtX3dwb3J0KHN0cnVjdCBod2RfdmlpZl9yZXMgKnJlcywgaW50IHBvcnRfc2Vs LCB1MzINCj4gaGVpZ2h0LCB1MzIgcGl0Y2gpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBod2Rfdmlp Zl92ZG1fd3JpdGVfcG9ydF9yZWcgKndwb3J0Ow0KPiA+ICsJdTMyIHN0YXJ0X2FkZHIsIGVuZF9h ZGRyOw0KPiA+ICsNCj4gPiArCXdwb3J0ID0gJnJlcy0+Y2FwdHVyZV9yZWctPnZkbS53X3BvcnRb cG9ydF9zZWxdOw0KPiA+ICsNCj4gPiArCXdyaXRlbChwaXRjaCwgJndwb3J0LT5WRE1fV19QSVRD SCk7DQo+ID4gKwl3cml0ZWwoaGVpZ2h0LCAmd3BvcnQtPlZETV9XX0hFSUdIVCk7DQo+ID4gKwlz dGFydF9hZGRyID0gcmVhZGwoJndwb3J0LT5WRE1fV19TVEFEUik7DQo+ID4gKwllbmRfYWRkciA9 IHN0YXJ0X2FkZHIgKyBwaXRjaCAtIDFVOw0KPiA+ICsJd3JpdGVsKGVuZF9hZGRyLCAmd3BvcnQt PlZETV9XX0VOREFEUik7DQo+ID4gK30NCj4gDQo+IFRoZSBWRE0gZG9lc24ndCBzZWVtIHRvIGJl bG9uZyB0byB0aGUgQ1NJLTIgUlgsIEkgd291bGQgbW92ZSB0aGlzIHRvIGENCj4gZGlmZmVyZW50 IGZpbGUuDQoNCkknbGwgbW92ZSB0aGVtIHRvIHN1aXRhYmxlIGZ1bmN0aW9ucy4NCkl0J3Mgc3Vy ZWx5IG5vdCBhIGdvb2QgaWRlYSB0byBoYW5kbGUgVmlkZW8gRE1BQyBoZXJlLg0KDQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfY3NpMnJ4X3N0YXJ0KCkgLSBTdGFydCBDU0ktMiBp bnB1dA0KPiA+ICsgKg0KPiA+ICsgKiBAdmNfbWFpbjogY29udHJvbCBDU0ktMiBpbnB1dCBvZiBN QUlOIHVuaXQuDQo+ID4gKyAqICAgICAgICAgICBlbmFibGUgd2l0aCBjb25maWd1cmVkIFZDOiAw LCAxLCAyIG9yIDMsIGtlZXAgZGlzYWJsaW5nOg0KPiA+ICsgKiBAdmNfc3ViOiBjb250cm9sIENT SS0yIGlucHV0IG9mIFNVQiB1bml0Lg0KPiA+ICsgKiAgICAgICAgICBlbmFibGUgd2l0aCBjb25m aWd1cmVkIFZDOiAwLCAxLCAyIG9yIDMsIGtlZXAgZGlzYWJsaW5nOg0KPiA+ICsgKiBAcGFja2V0 OiBQb2ludGVyIHRvIHBhY2tldCBpbmZvcm1hdGlvbiBvZiBlbWJlZGRlZCBkYXRhIGFuZCBsb25n IHBhY2tldA0KPiBkYXRhDQo+ID4gKyAqIFJldHVybjogMCBPcGVyYXRpb24gY29tcGxldGVzIHN1 Y2Nlc3NmdWxseQ0KPiA+ICsgKiBSZXR1cm46IC1FSU5WQUwgUGFyYW1ldGVyIGVycm9yDQo+ID4g KyAqIEhXRF9WSUlGX0NTSTJfTk9UX0NBUFRVUkUNCj4gPiArICogSFdEX1ZJSUZfQ1NJMl9OT1Rf Q0FQVFVSRQ0KPiA+ICsgKiAtIFsxXSAidmNfbWFpbiIgb3IgInZjX3N1YiIgaXMgb3V0IG9mIHJh bmdlDQo+ID4gKyAqIC0gWzJdIG1lbWJlciBvZiAicGFja2V0IiBpcyBpbnZhbGlkDQo+ID4gKyAq Lw0KPiA+ICtzMzIgaHdkX3ZpaWZfY3NpMnJ4X3N0YXJ0KHN0cnVjdCBod2RfdmlpZl9yZXMgKnJl cywgczMyIHZjX21haW4sIHMzMiB2Y19zdWIsDQo+ID4gKwkJCSAgY29uc3Qgc3RydWN0IGh3ZF92 aWlmX2NzaTJyeF9wYWNrZXQgKnBhY2tldCkNCj4gPiArew0KPiA+ICsJdTMyIHZhbCwgaSwgcGl0 Y2gsIGhlaWdodCwgZHQ7DQo+ID4gKwl1MzIgZW5hYmxlX3ZjMCA9IEhXRF9WSUlGX0RJU0FCTEU7 DQo+ID4gKwl1MzIgZW5hYmxlX3ZjMSA9IEhXRF9WSUlGX0RJU0FCTEU7DQo+ID4gKw0KPiA+ICsJ aWYgKHZjX21haW4gPiAzIHx8IHZjX21haW4gPCBIV0RfVklJRl9DU0kyX05PVF9DQVBUVVJFIHx8 IHZjX3N1Yg0KPiA+IDMgfHwNCj4gPiArCSAgICB2Y19zdWIgPCBIV0RfVklJRl9DU0kyX05PVF9D QVBUVVJFKSB7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ Zm9yIChpID0gMDsgaSA8IFZJU0NPTlRJX0NTSTJSWF9QQUNLRVRfVFlQRVNfTlVNOyBpKyspIHsN Cj4gPiArCQlpZiAocGFja2V0LT53b3JkX2NvdW50W2ldID4NCj4gSFdEX1ZJSUZfQ1NJMl9NQVhf V09SRF9DT1VOVCB8fA0KPiA+ICsJCSAgICBwYWNrZXQtPnBhY2tldF9udW1baV0gPg0KPiBIV0Rf VklJRl9DU0kyX01BWF9QQUNLRVRfTlVNKSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwl3cml0ZWwoSFdEX1ZJSUZfSU5QVVRfQ1NJMiwg JnJlcy0+Y2FwdHVyZV9yZWctPnN5cy5JUE9SVE0pOw0KPiA+ICsNCj4gPiArCWlmICh2Y19tYWlu ICE9IEhXRF9WSUlGX0NTSTJfTk9UX0NBUFRVUkUpIHsNCj4gPiArCQl3cml0ZWwoKHUzMil2Y19t YWluLCAmcmVzLT5jYXB0dXJlX3JlZy0+c3lzLlZDSUQwU0VMRUNUKTsNCj4gPiArCQllbmFibGVf dmMwID0gSFdEX1ZJSUZfRU5BQkxFOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKHZjX3N1YiAhPSBIV0Rf VklJRl9DU0kyX05PVF9DQVBUVVJFKSB7DQo+ID4gKwkJd3JpdGVsKCh1MzIpdmNfc3ViLCAmcmVz LT5jYXB0dXJlX3JlZy0+c3lzLlZDSUQxU0VMRUNUKTsNCj4gPiArCQllbmFibGVfdmMxID0gSFdE X1ZJSUZfRU5BQkxFOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIGNvbmZpZ3VyZSBFbWJlZGRl ZCBEYXRhIHRyYW5zZmVyIG9mIE1BSU4gdW5pdCAqLw0KPiA+ICsJaGVpZ2h0ID0NCj4gcGFja2V0 LT5wYWNrZXRfbnVtW1ZJU0NPTlRJX0NTSTJSWF9QQUNLRVRfVFlQRV9FTUJfTUFJTl07DQo+ID4g KwlwaXRjaCA9DQo+IEFMSUdOKHBhY2tldC0+d29yZF9jb3VudFtWSVNDT05USV9DU0kyUlhfUEFD S0VUX1RZUEVfRU1CX01BSU5dLA0KPiA0KTsNCj4gPiArCWNvbmZpZ192ZG1fd3BvcnQocmVzLCBQ T1JUX1NFTF9NQUlOX0VNQkVELCBoZWlnaHQsIHBpdGNoKTsNCj4gPiArDQo+ID4gKwkvKiBjb25m aWd1cmUgTG9uZyBQYWNrZXQgdHJhbnNmZXIgb2YgTUFJTiB1bml0ICovDQo+ID4gKwlkdCA9IHJl YWRsKCZyZXMtPmNhcHR1cmVfcmVnLT5zeXMuSVBPUlRNX09USEVSKTsNCj4gPiArCWlmIChkdCA9 PSBDU0kyX0RUX1lVVjQyMDggfHwgZHQgPT0gQ1NJMl9EVF9ZVVY0MjA4IHx8IGR0ID09DQo+IENT STJfRFRfWVVWNDIwOEMgfHwNCj4gPiArCSAgICBkdCA9PSBDU0kyX0RUX1lVVjQyMDEwQykgew0K PiA+ICsJCXBpdGNoID0NCj4gQUxJR04ocGFja2V0LT53b3JkX2NvdW50W1ZJU0NPTlRJX0NTSTJS WF9QQUNLRVRfVFlQRV9MT05HX01BSU5dLA0KPiA0KSArDQo+ID4gKw0KPiAJQUxJR04ocGFja2V0 LT53b3JkX2NvdW50W1ZJU0NPTlRJX0NTSTJSWF9QQUNLRVRfVFlQRV9MT04NCj4gR19NQUlOXSAq IDJVLCA0KTsNCj4gPiArCQloZWlnaHQgPQ0KPiBwYWNrZXQtPnBhY2tldF9udW1bVklTQ09OVElf Q1NJMlJYX1BBQ0tFVF9UWVBFX0xPTkdfTUFJTl0gPj4NCj4gMVU7DQo+ID4gKwl9IGVsc2Ugew0K PiA+ICsJCXBpdGNoID0NCj4gQUxJR04ocGFja2V0LT53b3JkX2NvdW50W1ZJU0NPTlRJX0NTSTJS WF9QQUNLRVRfVFlQRV9MT05HX01BSU5dLA0KPiA0KTsNCj4gPiArCQloZWlnaHQgPQ0KPiBwYWNr ZXQtPnBhY2tldF9udW1bVklTQ09OVElfQ1NJMlJYX1BBQ0tFVF9UWVBFX0xPTkdfTUFJTl07DQo+ ID4gKwl9DQo+ID4gKwljb25maWdfdmRtX3dwb3J0KHJlcywgUE9SVF9TRUxfTUFJTl9MT05HLCBo ZWlnaHQsIHBpdGNoKTsNCj4gPiArDQo+ID4gKwkvKiBjb25maWd1cmUgRW1iZWRkZWQgRGF0YSB0 cmFuc2ZlciBvZiBTVUIgdW5pdCAqLw0KPiA+ICsJaGVpZ2h0ID0NCj4gcGFja2V0LT5wYWNrZXRf bnVtW1ZJU0NPTlRJX0NTSTJSWF9QQUNLRVRfVFlQRV9FTUJfU1VCXTsNCj4gPiArCXBpdGNoID0N Cj4gQUxJR04ocGFja2V0LT53b3JkX2NvdW50W1ZJU0NPTlRJX0NTSTJSWF9QQUNLRVRfVFlQRV9F TUJfU1VCXSwNCj4gNCk7DQo+ID4gKwljb25maWdfdmRtX3dwb3J0KHJlcywgUE9SVF9TRUxfU1VC X0VNQkVELCBoZWlnaHQsIHBpdGNoKTsNCj4gPiArDQo+ID4gKwkvKiBjb25maWd1cmUgTG9uZyBQ YWNrZXQgdHJhbnNmZXIgb2YgU1VCIHVuaXQgKi8NCj4gPiArCWR0ID0gcmVhZGwoJnJlcy0+Y2Fw dHVyZV9yZWctPnN5cy5JUE9SVFNfT1RIRVIpOw0KPiA+ICsJaWYgKGR0ID09IENTSTJfRFRfWVVW NDIwOCB8fCBkdCA9PSBDU0kyX0RUX1lVVjQyMDEwIHx8IGR0ID09DQo+IENTSTJfRFRfWVVWNDIw OEMgfHwNCj4gPiArCSAgICBkdCA9PSBDU0kyX0RUX1lVVjQyMDEwQykgew0KPiA+ICsJCXBpdGNo ID0NCj4gQUxJR04ocGFja2V0LT53b3JkX2NvdW50W1ZJU0NPTlRJX0NTSTJSWF9QQUNLRVRfVFlQ RV9MT05HX1NVQl0sDQo+IDQpICsNCj4gPiArDQo+IAlBTElHTihwYWNrZXQtPndvcmRfY291bnRb VklTQ09OVElfQ1NJMlJYX1BBQ0tFVF9UWVBFX0xPTg0KPiBHX1NVQl0gKiAyVSwgNCk7DQo+ID4g KwkJaGVpZ2h0ID0NCj4gcGFja2V0LT5wYWNrZXRfbnVtW1ZJU0NPTlRJX0NTSTJSWF9QQUNLRVRf VFlQRV9MT05HX1NVQl0gPj4gMVU7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXBpdGNoID0NCj4g QUxJR04ocGFja2V0LT53b3JkX2NvdW50W1ZJU0NPTlRJX0NTSTJSWF9QQUNLRVRfVFlQRV9MT05H X1NVQl0sDQo+IDQpOw0KPiA+ICsJCWhlaWdodCA9DQo+IHBhY2tldC0+cGFja2V0X251bVtWSVND T05USV9DU0kyUlhfUEFDS0VUX1RZUEVfTE9OR19TVUJdOw0KPiA+ICsJfQ0KPiA+ICsJY29uZmln X3ZkbV93cG9ydChyZXMsIFBPUlRfU0VMX1NVQl9MT05HLCBoZWlnaHQsIHBpdGNoKTsNCj4gPiAr DQo+ID4gKwkvKiBDb250cm9sIFZDIHBvcnQgZW5hYmxlICovDQo+ID4gKwl2YWwgPSBlbmFibGVf dmMwIHwgKGVuYWJsZV92YzEgPDwgNFUpOw0KPiA+ICsJd3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVy ZV9yZWctPnN5cy5WQ1BPUlRFTik7DQo+ID4gKw0KPiA+ICsJaWYgKGVuYWJsZV92YzAgPT0gSFdE X1ZJSUZfRU5BQkxFKSB7DQo+ID4gKwkJLyogVXBkYXRlIGZsYWcgaW5mb3JtYXRpb24gZm9yIHJ1 biBzdGF0dXMgb2YgTUFJTiB1bml0ICovDQo+ID4gKwkJcmVzLT5ydW5fZmxhZ19tYWluID0gdHJ1 ZTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIGh3ZF92aWlmX2NzaTJyeF9zdG9wKCkgLSBTdG9wIENTSS0yIGlucHV0DQo+ ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBPcGVyYXRpb24gY29tcGxldGVzIHN1Y2Nlc3NmdWxs eQ0KPiA+ICsgKiBSZXR1cm46IC1FVElNRURPVVQgRHJpdmVyIHRpbWVvdXQgZXJyb3INCj4gPiAr ICovDQo+ID4gK3MzMiBod2RfdmlpZl9jc2kycnhfc3RvcChzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpy ZXMpDQo+ID4gK3sNCj4gPiArCXUzMiBzdGF0dXNfciwgc3RhdHVzX3csIHN0YXR1c190LCBsMl9z dGF0dXM7DQo+ID4gKwl1NjQgdGltZW91dF9ucywgY3VyX25zOw0KPiA+ICsJYm9vbCBydW5fZmxh ZyA9IHRydWU7DQo+ID4gKwlzMzIgcmV0ID0gMDsNCj4gPiArDQo+ID4gKwkvKiBEaXNhYmxlIGF1 dG8gdHJhbnNtaXNzaW9uIG9mIHJlZ2lzdGVyIGJ1ZmZlciAqLw0KPiA+ICsJd3JpdGVsKDAsICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9DUkdCRl9UUk5fQV9DT05GKTsNCj4gPiArCXdyaXRl bCgwLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDJpc3AuTDJfQ1JHQkZfVFJOX0FfQ09ORik7DQo+IA0K PiBTYW1lIGhlcmUsIHRoaXMgZG9lc24ndCBiZWxvbmcgdG8gdGhlIENTSTJSWC4gU2FtZSBmb3Ig VkRNQUMgcmVnaXN0ZXJzDQo+IGJlbG93LCBhbmQgcG9zc2libHkgc29tZSBvZiB0aGUgU1lTIHJl Z2lzdGVycyAobm90IHN1cmUgYWJvdXQgdGhvc2UpLg0KDQpJJ2xsIG1vdmUgVkRNQUMgcmVnaXN0 ZXIgYWNjZXNzZXMuDQpMZXQgbWUgY2hlY2sgaW4gZGV0YWlsIGZvciBTWVMgcmVnaXN0ZXJzLCBi ZWNhdXNlIHNvbWUgb3BlcmF0aW9ucyBmb3IgQ1NJMiBhbmQgRFBIWSByZWZlcnMgdG8gU1lTIHJl Z2lzdGVycy4NCg0KPiBPdmVyYWxsLCB0aGUgQ1NJMlJYIHNob3VsZCBiZSBpc29sYXRlZCBpbiBh IHN1YmRldiBzZXBhcmF0ZSBmcm9tIHRoZSBJU1ANCj4gc3ViZGV2LCB3aXRoIGEgc3RydWN0IHZp aWZfY3NpMnJ4IHRvIG1vZGVsIGl0LiBJdCBzaG91bGQgb25seSBjb250cm9sDQo+IHRoZSBDU0ky UlguIEknbSBldmVuIHRlbXB0ZWQgdG8gbW92ZSBpdCB0byBhIHNlcGFyYXRlIGRyaXZlciwgYnV0 IHRoYXQNCj4gbWF5YmUgZGlmZmljdWx0IGR1ZSB0byB1c2FnZSBvZiB0aGUgU1lTIHJlZ2lzdGVy cyBieSB0aGUgQ1NJMlJYIDotUw0KDQpJIGZvdW5kIHNvbWUgZHJpdmVycyBpbXBsZW1lbnRpbmcg Q1NJMiByZWNlaXZlciBhcyBhIHNlcGFyYXRlIHBoeS4NCkl0J3MgZGlmZmljdWx0IHRvIGFjaGll dmUgdGhhdCBwYXR0ZXJuIG5vdywgYXMgQ1NJMlJYIGNvbnRyb2xzIGFuZCBvdGhlciBvcGVyYXRp b25zIGFyZSBub3Qgd2VsbCBzZXBhcmF0ZWQuDQpJJ2xsIHRyeSBjbGVhbiB1cCBDU0kyUlggcmVs YXRlZCBjb2RlcyBhbmQgcG9zc2libHkgbWFrZSBhIENTSTJSWCBkZWRpY2F0ZWQgc3ViZGV2Lg0K DQo+ID4gKw0KPiA+ICsJLyogV2FpdCBmb3IgY29tcGxldGlvbiBvZiByZWdpc3RlciBidWZmZXIg dHJhbnNtaXNzaW9uICovDQo+ID4gKwl1ZGVsYXkoSFdEX1ZJSUZfV0FJVF9JU1BfUkVHQkZfVFJO U19DT01QTEVURV9USU1FKTsNCj4gPiArDQo+ID4gKwkvKiBTdG9wIGFsbCBWQ3MsIGxvbmcgcGFj a2V0IGlucHV0IGFuZCBlbWIgZGF0YSBpbnB1dCBvZiBNQUlOIHVuaXQgKi8NCj4gPiArCXdyaXRl bChIV0RfVklJRl9ESVNBQkxFLCAmcmVzLT5jYXB0dXJlX3JlZy0+c3lzLlZDUE9SVEVOKTsNCj4g PiArCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+c3lzLklQ T1JUTV9PVEhFUkVOKTsNCj4gPiArCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+c3lzLklQT1JUTV9FTUJFTik7DQo+ID4gKw0KPiA+ICsJLyogU3RvcCBpbWFn ZSBkYXRhIGlucHV0LCBsb25nIHBhY2tldCBpbnB1dCBhbmQgZW1iIGRhdGEgaW5wdXQgb2YgU1VC DQo+IHVuaXQgKi8NCj4gPiArCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+c3lzLklQT1JUU19PVEhFUkVOKTsNCj4gPiArCXdyaXRlbChIV0RfVklJRl9ESVNB QkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+c3lzLklQT1JUU19FTUJFTik7DQo+ID4gKwl3cml0 ZWwoSFdEX1ZJSUZfRElTQUJMRSwgJnJlcy0+Y2FwdHVyZV9yZWctPnN5cy5JUE9SVFNfSU1HRU4p Ow0KPiA+ICsNCj4gPiArCS8qIFN0b3AgVkRNQUMgZm9yIGFsbCB0YWJsZSBwb3J0cywgaW5wdXQg cG9ydHMgYW5kIHdyaXRlIHBvcnRzICovDQo+ID4gKwl3cml0ZWwoSFdEX1ZJSUZfRElTQUJMRSwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPnZkbS5WRE1fVF9FTkFCTEUpOw0KPiA+ICsJd3JpdGVsKEhX RF9WSUlGX0RJU0FCTEUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT52ZG0uVkRNX1JfRU5BQkxFKTsN Cj4gPiArCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+dmRt LlZETV9XX0VOQUJMRSk7DQo+ID4gKw0KPiA+ICsJLyogU3RvcCBhbGwgZ3JvdXBzKGcwMCwgZzAx IGFuZCBnMDIpIG9mIFZETUFDICovDQo+ID4gKwl3cml0ZWwoMHg3LCAmcmVzLT5jYXB0dXJlX3Jl Zy0+dmRtLlZETV9BQk9SVFNFVCk7DQo+ID4gKw0KPiA+ICsJdGltZW91dF9ucyA9IGt0aW1lX2dl dF9ucygpICsNCj4gSFdEX1ZJSUZfV0FJVF9BQk9SVF9DT01QTEVURV9USU1FICogMTAwMDsNCj4g PiArDQo+ID4gKwlkbyB7DQo+ID4gKwkJLyogR2V0IFZETUFDIHRyYW5zZmVyIHN0YXR1cyAgKi8N Cj4gPiArCQlzdGF0dXNfciA9IHJlYWRsKCZyZXMtPmNhcHR1cmVfcmVnLT52ZG0uVkRNX1JfUlVO KTsNCj4gPiArCQlzdGF0dXNfdyA9IHJlYWRsKCZyZXMtPmNhcHR1cmVfcmVnLT52ZG0uVkRNX1df UlVOKTsNCj4gPiArCQlzdGF0dXNfdCA9IHJlYWRsKCZyZXMtPmNhcHR1cmVfcmVnLT52ZG0uVkRN X1RfUlVOKTsNCj4gPiArDQo+ID4gKwkJbDJfc3RhdHVzID0NCj4gcmVhZGwoJnJlcy0+Y2FwdHVy ZV9yZWctPmwyaXNwLkwyX0JVU19MMl9TVEFUVVMpOw0KPiA+ICsNCj4gPiArCQlpZiAoc3RhdHVz X3IgPT0gMFUgJiYgc3RhdHVzX3cgPT0gMFUgJiYgc3RhdHVzX3QgPT0gMFUgJiYNCj4gbDJfc3Rh dHVzID09IDBVKQ0KPiA+ICsJCQlydW5fZmxhZyA9IGZhbHNlOw0KPiA+ICsNCj4gPiArCQljdXJf bnMgPSBrdGltZV9nZXRfbnMoKTsNCj4gPiArDQo+ID4gKwkJaWYgKGN1cl9ucyA+IHRpbWVvdXRf bnMpIHsNCj4gPiArCQkJcmV0ID0gLUVUSU1FRE9VVDsNCj4gPiArCQkJcnVuX2ZsYWcgPSBmYWxz ZTsNCj4gPiArCQl9DQo+ID4gKwl9IHdoaWxlIChydW5fZmxhZyk7DQo+ID4gKw0KPiA+ICsJaWYg KHJldCA9PSAwKSB7DQo+ID4gKwkJLyogQ2xlYXIgcnVuIGZsYWcgb2YgTUFJTiB1bml0ICovDQo+ ID4gKwkJcmVzLT5ydW5fZmxhZ19tYWluID0gZmFsc2U7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIHJldDsNCj4gPiArfQ0KPiANCj4gW3NuaXBdDQo+IA0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlmX2ludGVybmFsLmgNCj4gYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlmX2ludGVybmFsLmgNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwLi5jOTU0ZTgwNDk0Ng0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2Nv bnRpL2h3ZF92aWlmX2ludGVybmFsLmgNCj4gPiBAQCAtMCwwICsxLDM0MCBAQA0KPiA+ICsvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMi1DbGF1c2UgKi8NCj4gPiAr LyogVG9zaGliYSBWaXNjb250aSBWaWRlbyBDYXB0dXJlIFN1cHBvcnQNCj4gPiArICoNCj4gPiAr ICogKEMpIENvcHlyaWdodCAyMDIyIFRPU0hJQkEgQ09SUE9SQVRJT04NCj4gPiArICogKEMpIENv cHlyaWdodCAyMDIyIFRvc2hpYmEgRWxlY3Ryb25pYyBEZXZpY2VzICYgU3RvcmFnZSBDb3Jwb3Jh dGlvbg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgSFdEX1ZJSUZfSU5URVJOQUxfSA0K PiA+ICsjZGVmaW5lIEhXRF9WSUlGX0lOVEVSTkFMX0gNCj4gPiArDQo+ID4gKyNpbmNsdWRlICJo d2RfdmlpZl9yZWcuaCINCj4gPiArDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfQ1NJMl9NQVhfVkMJ CSAgICAoM1UpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfQ1NJMl9NSU5fRFQJCSAgICAoMHgxMFUp DQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfQ1NJMl9NQVhfRFQJCSAgICAoMHgzZlUpDQo+ID4gKyNk ZWZpbmUgSFdEX1ZJSUZfQ1NJMl9NQVhfV09SRF9DT1VOVAkgICAgKDE2Mzg0VSkNCj4gPiArI2Rl ZmluZSBIV0RfVklJRl9DU0kyX01BWF9QQUNLRVRfTlVNCSAgICAoODE5MlUpDQo+ID4gKyNkZWZp bmUgSFdEX1ZJSUZfRFBIWV9NSU5fREFUQV9SQVRFCSAgICAoODBVKQ0KPiA+ICsjZGVmaW5lIEhX RF9WSUlGX0RQSFlfTUFYX0RBVEFfUkFURQkgICAgKDE1MDBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9W SUlGX0RQSFlfQ0ZHX0NMS18yNU0JICAgICgzMlUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfRFBI WV9UUkFOU0ZFUl9IU19UQUJMRV9OVU0gKDQzVSkNCj4gPiArDQo+ID4gKy8qIG1heGltdW0gaG9y aXpvbnRhbC92ZXJ0aWNhbCBwb3NpdGlvbi9kaW1lbnNpb24gb2YgQ1JPUCB3aXRoIElTUCAqLw0K PiA+ICsjZGVmaW5lIEhXRF9WSUlGX0NST1BfTUFYX1hfSVNQICg4MDYyVSkNCj4gPiArI2RlZmlu ZSBIV0RfVklJRl9DUk9QX01BWF9ZX0lTUCAoMzk2NlUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZf Q1JPUF9NQVhfV19JU1AgKDgxOTBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0NST1BfTUFYX0hf SVNQICg0MDk0VSkNCj4gPiArDQo+ID4gKy8qIG1heGltdW0gaG9yaXpvbnRhbC92ZXJ0aWNhbCBw b3NpdGlvbi9kaW1lbnNpb24gb2YgQ1JPUCB3aXRob3V0IElTUCAqLw0KPiA+ICsjZGVmaW5lIEhX RF9WSUlGX0NST1BfTUFYX1ggKDE5MjBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0NST1BfTUFY X1kgKDE0MDhVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0NST1BfTUlOX1cgKDEyOFUpDQo+ID4g KyNkZWZpbmUgSFdEX1ZJSUZfQ1JPUF9NQVhfVyAoMjA0OFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJ SUZfQ1JPUF9NSU5fSCAoMTI4VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9DUk9QX01BWF9IICgx NTM2VSkNCj4gPiArDQo+ID4gKy8qIHBpeGVsIGNsb2NrOiBba0h6XSAqLw0KPiA+ICsjZGVmaW5l IEhXRF9WSUlGX01JTl9QSVhFTF9DTE9DSyAoMzM3NVUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZf TUFYX1BJWEVMX0NMT0NLICg2MDAwMDBVKQ0KPiA+ICsNCj4gPiArLyogcGljdHVyZSBzaXplOiBb cGl4ZWxdLCBbbnNdICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUlOX0hUT1RBTF9QSVhFTCAo MTQzVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9NSU5fSFRPVEFMX05TRUMgICgyMzlVKQ0KPiA+ ICsjZGVmaW5lIEhXRF9WSUlGX01BWF9IVE9UQUxfUElYRUwgKDY1NTM1VSkNCj4gPiArI2RlZmlu ZSBIV0RfVklJRl9NQVhfSFRPVEFMX05TRUMgICgxMDkyMjVVKQ0KPiA+ICsNCj4gPiArLyogaG9y aXpvbnRhbCBiYWNrIHBvcmNoIHNpemU6IFtzeXN0ZW0gY2xvY2tdICovDQo+ID4gKyNkZWZpbmUg SFdEX1ZJSUZfSEJQX1NZU0NMSyAoMTBVKQ0KPiA+ICsNCj4gPiArLyogYWN0aXZlIHBpY3R1cmUg c2l6ZTogW3BpeGVsXSAqLw0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01JTl9IQUNUSVZFX1BJWEVM X1dPX0wxSVNQICgxMjhVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01BWF9IQUNUSVZFX1BJWEVM X1dPX0wxSVNQICg0MDk2VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9NSU5fSEFDVElWRV9QSVhF TF9XX0wxSVNQICAoNjQwVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9NQVhfSEFDVElWRV9QSVhF TF9XX0wxSVNQICAoMzg0MFUpDQo+ID4gKw0KPiA+ICsvKiBwaWN0dXJlIHZlcnRpY2FsIHNpemU6 IFtsaW5lXSwgW3BhY2tldF0gKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9NSU5fVlRPVEFMX0xJ TkUJICAgKDE0NFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUFYX1ZUT1RBTF9MSU5FCSAgICgx NjM4M1UpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUlOX1ZCUF9MSU5FCQkgICAoNVUpDQo+ID4g KyNkZWZpbmUgSFdEX1ZJSUZfTUFYX1ZCUF9MSU5FCQkgICAoNDA5NVUpDQo+ID4gKyNkZWZpbmUg SFdEX1ZJSUZfTUlOX1ZCUF9QQUNLRVQJCSAgICg1VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9N QVhfVkJQX1BBQ0tFVAkJICAgKDQwOTVVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01JTl9WQUNU SVZFX0xJTkVfV09fTDFJU1AgKDEyOFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUFYX1ZBQ1RJ VkVfTElORV9XT19MMUlTUCAoMjE2MFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUlOX1ZBQ1RJ VkVfTElORV9XX0wxSVNQICAoNDgwVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9NQVhfVkFDVElW RV9MSU5FX1dfTDFJU1AgICgyMTYwVSkNCj4gPiArDQo+ID4gKy8qIGltYWdlIHNvdXJjZSBzZWxl Y3QgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9JTlBVVF9DU0kyICgwVSkNCj4gDQo+IFRoaXMg bWFjcm8gaXMgcmVsYXRlZCB0byBhIGhhcmR3YXJlIHJlZ2lzdGVyLCBhbmQgc2hvdWxkIHRodXMg YmUgbW92ZWQNCj4gdG8gdGhlIGh3ZF92aWlmX3JlZy5oIGZpbGUuIFNhbWUgZm9yIG90aGVyIG1h Y3JvcyBpbiB0aGlzIGZpbGUgYXMNCj4gYXBwbGljYWJsZS4NCg0KSSdsbCBtb3ZlIGl0LiBTYW1l IGZvciBvdGhlciBtYWNyb3MuDQoNCj4gPiArDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfQ1NDX01B WF9PRkZTRVQJICAgICAgICgweDAwMDFGRkZGVSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9DU0Nf TUFYX0NPRUZfVkFMVUUgICAgKDB4MDAwMEZGRkZVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0NT Q19NQVhfQ09FRl9OVU0gICAgICAoOVUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfR0FNTUFfTUFY X1ZTUExJVCAgICAgICg0MDk0VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9NVEJfQ0JfWUdfQ09F Rl9PRkZTRVQgKDE2VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9NVEJfQ1JfWUdfQ09FRl9PRkZT RVQgKDBVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01UQl9DQl9DQl9DT0VGX09GRlNFVCAoMTZV KQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01UQl9DUl9DQl9DT0VGX09GRlNFVCAoMFUpDQo+ID4g KyNkZWZpbmUgSFdEX1ZJSUZfTVRCX0NCX0NSX0NPRUZfT0ZGU0VUICgxNlUpDQo+ID4gKyNkZWZp bmUgSFdEX1ZJSUZfTVRCX0NSX0NSX0NPRUZfT0ZGU0VUICgwVSkNCj4gPiArI2RlZmluZSBIV0Rf VklJRl9NQVhfUElUQ0hfSVNQCSAgICAgICAoMzI3MDRVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlG X01BWF9QSVRDSAkgICAgICAgKDY1NTM2VSkNCj4gPiArDQo+ID4gKy8qIHNpemUgb2YgbWluaW11 bS9tYXhpbXVtIGlucHV0IGltYWdlICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUlOX0lOUFVU X0lNR19XSURUSAkgICgxMjhVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01BWF9JTlBVVF9JTUdf V0lEVEhfSVNQICAoNDA5NlUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUFYX0lOUFVUX0lNR19X SURUSAkgICgyMDQ4VSkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9NSU5fSU5QVVRfSU1HX0hFSUdI VAkgICgxMjhVKQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01BWF9JTlBVVF9JTUdfSEVJR0hUX0lT UCAoMjE2MFUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUFYX0lOUFVUX0lNR19IRUlHSFQJICAo MTUzNlUpDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUFYX0lOUFVUX0xJTkVfU0laRQkgICgxNjM4 NFUpDQo+ID4gKw0KPiA+ICsvKiBzaXplIG9mIG1pbmltdW0vbWF4aW11bSBvdXRwdXQgaW1hZ2Ug Ki8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9NSU5fT1VUUFVUX0lNR19XSURUSAkgICgxMjhVKQ0K PiA+ICsjZGVmaW5lIEhXRF9WSUlGX01BWF9PVVRQVVRfSU1HX1dJRFRIX0lTUCAoNTc2MFUpDQo+ ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUFYX09VVFBVVF9JTUdfV0lEVEhfU1VCICg0MDk2VSkNCj4g PiArDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfTUlOX09VVFBVVF9JTUdfSEVJR0hUCSAgICgxMjhV KQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01BWF9PVVRQVVRfSU1HX0hFSUdIVF9JU1AgKDMyNDBV KQ0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX01BWF9PVVRQVVRfSU1HX0hFSUdIVF9TVUIgKDIxNjBV KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBIV0RfVklJRl9OT19FVkVOVCAoMHgwVSkNCj4gDQo+IEp1 c3QgdXNlIDAgaW4gdGhlIGNvZGUsIGFzIGZvciBIV0RfVklJRl9ESVNBQkxFLg0KDQpJJ2xsIGZp eCBpdC4NCg0KPiA+ICsNCj4gPiArLyogU3lzdGVtIGNsb2NrOiBba0h6XSAqLw0KPiA+ICsjZGVm aW5lIEhXRF9WSUlGX1NZU19DTEsgKDUwMDAwMFVMKQ0KPiANCj4gU2hvdWxkbid0IHRoZSBzeXN0 ZW0gY2xvY2sgcmF0ZSBiZSByZXRyaWV2ZWQgZHluYW1pY2FsbHkgYXQgcnVudGltZQ0KPiAocG9z c2libHkgYXQgcHJvYmUgdGltZSBhbmQgY2FjaGVkKSB3aXRoIGNsa19nZXRfcmF0ZSgpIGluc3Rl YWQgb2YgYmVpbmcNCj4gaGFyZGNvZGVkID8NCg0KQ29ycmVzcG9uZGluZyBjbG9jayBsaW5lIGlz IG5vdCBkZWZpbmVkIHlldCBpbiBjb21tb24gY2xvY2sgZnJhbWV3b3JrIGZvciBWaXNjb250aTUu DQpTaG91bGQgSSBkZWZpbmUgNTAwTUh6IGZpeGVkIGNsb2NrIGluIGEgZGV2aWNlIHRyZWUgYW5k IHJlZmVyIHRvIGl0IGZvciBub3c/DQoNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIHdhaXQgdGlt ZSBmb3IgZm9yY2UgYWJvcnQgdG8gY29tcGxldGUobWF4IDFsaW5lIHRpbWUgPSAxMjI4LjhbdXNd DQo+ID4gKyAqIHdoZW4gd2lkdGggPSA0MDk2LCBSQVcyNCwgODBNYnBzDQo+ID4gKyAqLw0KPiA+ ICsjZGVmaW5lIEhXRF9WSUlGX1dBSVRfQUJPUlRfQ09NUExFVEVfVElNRSAoMTIyOVUpDQo+ID4g Kw0KPiA+ICsvKg0KPiA+ICsgKiBjb21wbGV0ZSB0aW1lIG9mIHJlZ2lzdGVyIGJ1ZmZlciB0cmFu c2Zlci4NCj4gPiArICogYWN0dWFsIHRpbWUgaXMgYWJvdXQgMzB1cyBpbiBjYXNlIG9mIEwxSVNQ DQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX1dBSVRfSVNQX1JFR0JGX1RSTlNfQ09N UExFVEVfVElNRSAoMzlVKQ0KPiA+ICsNCj4gPiArLyogaW50ZXJuYWwgb3BlcmF0aW9uIGxhdGVu Y2llczogW3N5c3RlbSBjbG9ja10qLw0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX1RBQkxFX0xPQURf VElNRSAgICAoMjQwMDBVTCkNCj4gPiArI2RlZmluZSBIV0RfVklJRl9SRUdCVUZfQUNDRVNTX1RJ TUUgKDE1MzYwVUwpDQo+ID4gKw0KPiA+ICsvKiBvZmZzZXQgb2YgVnN5bmMgZGVsYXk6IFtsaW5l XSAqLw0KPiA+ICsjZGVmaW5lIEhXRF9WSUlGX0wxX0RFTEFZX1dfSERSQyAgKDMxVSkNCj4gPiAr I2RlZmluZSBIV0RfVklJRl9MMV9ERUxBWV9XT19IRFJDICgxMVUpDQo+ID4gKw0KPiA+ICsvKiBk YXRhIHdpZHRoIGlzIDMyYml0ICovDQo+ID4gKyNkZWZpbmUgSFdEX1ZJSUZfVkRNX0NGR19QQVJB TSAoMHgwMDAwMDIxMFUpDQo+ID4gKw0KPiA+ICsvKiB2c3luYyBtb2RlIGlzIHB1bHNlICovDQo+ ID4gKyNkZWZpbmUgSFdEX1ZJSUZfRFBHTV9WU1lOQ19QVUxTRSAoMVUpDQo+ID4gKw0KPiA+ICsv KiBWbGF0Y2ggbWFzayBiaXQgZm9yIEwxSVNQIGFuZCBMMklTUCAqLw0KPiA+ICsjZGVmaW5lIEhX RF9WSUlGX0lTUF9WTEFUQ0hfTUFTSyAoMlUpDQo+ID4gKw0KPiA+ICsvKiBSZWdpc3RlciBidWZm ZXIgKi8NCj4gPiArI2RlZmluZSBIV0RfVklJRl9JU1BfTUFYX0NPTlRFWFRfTlVNCSg0VSkNCj4g PiArI2RlZmluZSBIV0RfVklJRl9JU1BfUkVHQlVGX01PREVfQllQQVNTICgwVSkNCj4gPiArI2Rl ZmluZSBIV0RfVklJRl9JU1BfUkVHQlVGX01PREVfQlVGRkVSICgxVSkNCj4gPiArI2RlZmluZSBI V0RfVklJRl9JU1BfUkVHQlVGX1JFQUQJKDFVKQ0KPiANCj4gW3NuaXBdDQo+IA0KPiA+ICsvKioN Cj4gPiArICogc3RydWN0IGh3ZF92aWlmX2wyX3JvaV9wYXRoX2luZm8gLSBMMklTUCBST0kgcGF0 aCBjb250cm9sIGluZm9ybWF0aW9uDQo+ID4gKyAqDQo+ID4gKyAqIEByb2lfbnVtOiB0aGUgbnVt YmVyIG9mIFJPSXMgd2hpY2ggYXJlIHVzZWQuDQo+ID4gKyAqIEBwb3N0X2VuYWJsZV9mbGFnOiBm bGFnIHRvIHNob3cgd2hpY2ggb2YgUE9TVCBpcyBlbmFibGVkLg0KPiA+ICsgKiBAcG9zdF9jcm9w X3g6IENST1AgeCBvZiBlYWNoIEwySVNQIFBPU1QNCj4gPiArICogQHBvc3RfY3JvcF95OiBDUk9Q IHkgb2YgZWFjaCBMMklTUCBQT1NUDQo+ID4gKyAqIEBwb3N0X2Nyb3BfdzogQ1JPUCB3IG9mIGVh Y2ggTDJJU1AgUE9TVA0KPiA+ICsgKiBAcG9zdF9jcm9wX2g6IENST1AgaCBvZiBlYWNoIEwySVNQ IFBPU1QNCj4gPiArICovDQo+ID4gK3N0cnVjdCBod2RfdmlpZl9sMl9yb2lfcGF0aF9pbmZvIHsN Cj4gPiArCXUzMiByb2lfbnVtOw0KPiA+ICsJYm9vbCBwb3N0X2VuYWJsZV9mbGFnW0hXRF9WSUlG X01BWF9QT1NUX05VTV07DQo+ID4gKwl1MzIgcG9zdF9jcm9wX3hbSFdEX1ZJSUZfTUFYX1BPU1Rf TlVNXTsNCj4gPiArCXUzMiBwb3N0X2Nyb3BfeVtIV0RfVklJRl9NQVhfUE9TVF9OVU1dOw0KPiA+ ICsJdTMyIHBvc3RfY3JvcF93W0hXRF9WSUlGX01BWF9QT1NUX05VTV07DQo+ID4gKwl1MzIgcG9z dF9jcm9wX2hbSFdEX1ZJSUZfTUFYX1BPU1RfTlVNXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiBzdHJ1Y3QgaHdkX3ZpaWZfcmVzIC0gZHJpdmVyIGludGVybmFsIHJlc291cmNl IHN0cnVjdHVyZQ0KPiA+ICsgKg0KPiA+ICsgKiBAY2xvY2tfaWQ6IGNsb2NrIElEIG9mIGVhY2gg dW5pdA0KPiA+ICsgKiBAY3NpMl9jbG9ja19pZDogY2xvY2sgSUQgb2YgQ1NJLTIgUlgNCj4gPiAr ICogQGNzaTJfcmVzZXRfaWQ6IHJlc2V0IElEIG9mIENTSS0yIFJYDQo+ID4gKyAqIEBwaXhlbF9j bG9jazogcGl4ZWwgY2xvY2sNCj4gPiArICogQGh0b3RhbF9zaXplOiBob3Jpem9udGFsIHRvdGFs IHNpemUNCj4gPiArICogQGR0X2ltYWdlX21haW5fd19pc3A6IERhdGEgdHlwZSBvZiBpbWFnZSBk YXRhIGZvciBJU1AgcGF0aA0KPiA+ICsgKiBAY3NpMmhvc3RfcmVnOiBwb2ludGVyIHRvIHJlZ2lz dGVyIGFjY2VzcyBzdHJ1Y3R1cmUgb2YgQ1NJLTIgUlggaG9zdA0KPiBjb250cm9sbGVyDQo+ID4g KyAqIEBjYXB0dXJlX3JlZzogcG9pbnRlciB0byByZWdpc3RlciBhY2Nlc3Mgc3RydWN0dXJlIG9m IGNhcHR1cmUgdW5pdA0KPiA+ICsgKiBAbDJfcm9pX3BhdGhfaW5mbzogUk9JIHBhdGggaW5mb3Jt YXRpb24gb2YgTDJJU1ANCj4gPiArICogQHJ1bl9mbGFnX21haW46IHJ1biBmbGFnIG9mIE1BSU4g dW5pdCh0cnVlOiBydW4sIGZhbHNlOiBub3QgcnVuKQ0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGh3 ZF92aWlmX3JlcyB7DQo+ID4gKwkvL3UzMiBjbG9ja19pZDsNCj4gPiArCS8vdTMyIGNzaTJfY2xv Y2tfaWQ7DQo+ID4gKwkvL3UzMiBjc2kyX3Jlc2V0X2lkOw0KPiANCj4gUGxlYXNlIGRyb3AgY29t bWVudGVkLW91dCBjb2RlLg0KDQpJJ2xsIHJlbW92ZSB0aGVtLg0KDQo+ID4gKwl1MzIgcGl4ZWxf Y2xvY2s7DQo+ID4gKwl1MzIgaHRvdGFsX3NpemU7DQo+ID4gKwl1MzIgZHRfaW1hZ2VfbWFpbl93 X2lzcDsNCj4gPiArCXN0cnVjdCBod2RfdmlpZl9jc2kyaG9zdF9yZWcgKmNzaTJob3N0X3JlZzsN Cj4gPiArCXN0cnVjdCBod2RfdmlpZl9jYXB0dXJlX3JlZyAqY2FwdHVyZV9yZWc7DQo+ID4gKwlz dHJ1Y3QgaHdkX3ZpaWZfbDJfcm9pX3BhdGhfaW5mbyBsMl9yb2lfcGF0aF9pbmZvOw0KPiA+ICsJ Ym9vbCBydW5fZmxhZ19tYWluOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0 cnVjdCBod2RfdmlpZl9kcGh5X2hzX2luZm8gLSBkcGh5IGhzIGluZm9ybWF0aW9uDQo+ID4gKyAq DQo+ID4gKyAqIEByYXRlOiBEYXRhIHJhdGUgW01icHNdDQo+ID4gKyAqIEBoc2ZyZXFyYW5nZTog SVAgb3BlcmF0aW5nIGZyZXF1ZW5jeShoc2ZyZXFyYW5nZSkNCj4gPiArICogQG9zY19mcmVxX3Rh cmdldDogRERMIHRhcmdldCBvc2NpbGxhdGlvbiBmcmVxdWVuY3kob3NjX2ZyZXFfdGFyZ2V0KQ0K PiA+ICsgKi8NCj4gPiArc3RydWN0IGh3ZF92aWlmX2RwaHlfaHNfaW5mbyB7DQo+ID4gKwl1MzIg cmF0ZTsNCj4gPiArCXUzMiBoc2ZyZXFyYW5nZTsNCj4gPiArCXUzMiBvc2NfZnJlcV90YXJnZXQ7 DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogSFdEX1ZJSUZfSU5URVJOQUxfSCAqLw0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlm X3JlZy5oDQo+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS9od2RfdmlpZl9yZWcu aA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAuLmI3ZjQz YzVmZTk1DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdmlzY29udGkvaHdkX3ZpaWZfcmVnLmgNCj4gPiBAQCAtMCwwICsxLDI4MDIgQEANCj4gPiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlICovDQo+ ID4gKy8qIFRvc2hpYmEgVmlzY29udGkgVmlkZW8gQ2FwdHVyZSBTdXBwb3J0DQo+ID4gKyAqDQo+ ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMiBUT1NISUJBIENPUlBPUkFUSU9ODQo+ID4gKyAqIChD KSBDb3B5cmlnaHQgMjAyMiBUb3NoaWJhIEVsZWN0cm9uaWMgRGV2aWNlcyAmIFN0b3JhZ2UgQ29y cG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIEhXRF9WSUlGX1JFR19IDQo+ ID4gKyNkZWZpbmUgSFdEX1ZJSUZfUkVHX0gNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1 Y3QgaHdkX3ZpaWZfY3NpMmhvc3RfcmVnIC0gUmVnaXN0ZXJzIGZvciBWSUlGIENTSTJIT1NUIGNv bnRyb2wNCj4gPiArICovDQo+ID4gK3N0cnVjdCBod2RfdmlpZl9jc2kyaG9zdF9yZWcgew0KPiAN Cj4gQXMgbm90ZWQgYnkgU2FrYXJpIGluIGhpcyByZXZpZXcsIGtlcm5lbCBkcml2ZXJzIHVzdWFs bHkgdXNlIG1hY3JvcyBmb3INCj4gcmVnaXN0ZXIgYWRkcmVzc2VzLiBJJ20gbm90IGVudGlyZWx5 IG9wcG9zZWQgdG8gdXNpbmcgc3RydWN0dXJlcywgYnV0IEkNCj4gc2hhcmUgaGlzIGNvbmNlcm5z LiBGdXJ0aGVybW9yZSwgbWFjcm9zIHdvdWxkIGFsbG93IHdyaXRpbmcgY29udmVuaWVuY2UNCj4g d3JhcHBlcnMgYXJvdW5kIHdyaXRlbCgpOg0KPiANCj4gc3RydWN0IHZpaWZfY3NpMnJ4DQo+IHsN Cj4gCS4uLg0KPiAJdm9pZCBfX2lvbWVtICpyZWdzOw0KPiAJLi4uDQo+IH07DQo+IA0KPiBzdGF0 aWMgaW5saW5lIHZvaWQgdmlpZl9jc2kycnhfd3JpdGUoc3RydWN0IHZpaWZfY3NpMnJ4ICpjc2ky cngsIHUzMiByZWcsIHUzMiB2YWwpDQo+IHsNCj4gCXdyaXRlbCh2YWwsIGNzaTJyeC0+cmVncyAr IHJlZyk7DQo+IH0NCj4gDQo+IFNpbWlsYXIgZnVuY3Rpb25zIGNhbiBiZSB3cml0dGVuIGZvciBv dGhlciByZWdpc3RlciBzcGFjZXMuIFRoaXMNCj4gaW1wcm92ZXMgKEkgdGhpbmspIGNvZGUgcmVh ZGFiaWxpdHkgKEkgbWF5IGJlIGJpYXNlZCB0aG91Z2gpLg0KPiANCg0KSSdsbCByZW1vdmUgcmVn aXN0ZXItc3R5bGUgZGVmaW5pdGlvbiBhbmQgaW50cm9kdWNlIG1hY3JvLXN0eWxlIGRlZmluaXRp b24uDQoNCj4gSW4gYW55IGNhc2UsIGdyb3VwaW5nIGFsbCByZWdpc3RlciBkZWZpbml0aW9ucyBp biBhIGZpbGUsIHNlcGFyYXRlIGZyb20NCj4gdGhlIHJlc3Qgb2YgdGhlIGhlYWRlcnMsIGlzIG5p Y2UsIGJ1dCByZWdpc3RlciBiaXRzIHNob3VsZCBhbHNvIGJlDQo+IGRlZmluZWQgaW4gdGhlIHNh bWUgZmlsZSwgYXMgbWFjcm9zLiBGb3IgaW5zdGFuY2UsIGluDQo+IHZpaWZfY3NpMnJ4X2luaXRp YWxpemUoKSB5b3UgaGF2ZQ0KPiANCj4gCS8qIERlZmluZSBlcnJvcnMgdG8gYmUgbWFza2VkICov DQo+IAljc2kycnhfbWFzay5tYXNrWzBdID0gMHgwMDAwMDAwRjsgLypjaGVjayBhbGwgZm9yIFBI WV9GQVRBTCovDQo+IAljc2kycnhfbWFzay5tYXNrWzFdID0gMHgwMDAxMDAwRjsgLypjaGVjayBh bGwgZm9yIFBLVF9GQVRBTCovDQo+IAljc2kycnhfbWFzay5tYXNrWzJdID0gMHgwMDBGMEYwRjsg LypjaGVjayBhbGwgZm9yIEZSQU1FX0ZBVEFMKi8NCj4gCWNzaTJyeF9tYXNrLm1hc2tbM10gPSAw eDAwMEYwMDBGOyAvKmNoZWNrIGFsbCBmb3IgUEhZKi8NCj4gCWNzaTJyeF9tYXNrLm1hc2tbNF0g PSAweDAwMEYwMDBGOyAvKmNoZWNrIGFsbCBmb3IgUEtUKi8NCj4gCWNzaTJyeF9tYXNrLm1hc2tb NV0gPSAweDAwRkYwMEZGOyAvKmNoZWNrIGFsbCBmb3IgTElORSovDQo+IA0KPiAJcmV0dXJuIGh3 ZF92aWlmX2NzaTJyeF9pbml0aWFsaXplKHZpaWZfZGV2LT5od2RfcmVzLCBudW1fbGFuZSwNCj4g SFdEX1ZJSUZfQ1NJMl9EUEhZX0wwTDFMMkwzLA0KPiAJCQkJCSAgZHBoeV9yYXRlLCBIV0RfVklJ Rl9FTkFCTEUsDQo+ICZlcnJfdGFyZ2V0LCAmY3NpMnJ4X21hc2spOw0KPiANCj4gd2hlcmUgY3Np MnJ4X21hc2sgaXMgdGhlbiB3cml0dGVuIHRvIHRoZSBDU0kyUlhfSU5UX01TS18qIHJlZ2lzdGVy cy4NCj4gVGhvc2UgbnVtZXJpY2FsIHZhbHVlcyBzaG91bGQgdXNlIG1hY3JvcyB0aGF0IG5hbWUg dGhlIGJpdHMuIFRoZSBtYWNyb3MNCj4gc2hvdWxkIGJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUg cmVnaXN0ZXIgdGhleSdyZSByZWxhdGVkIHRvIChzb21ldGhpbmcNCj4gbGlrZSBWSUlGX0NTSTJS WF9JTlRfTVNLX1BIWV9GQVRBTF8qIGZvciB0aGUNCj4gQ1NJMlJYX0lOVF9NU0tfUEhZX0ZBVEFM DQo+IHJlZ2lzdGVyIGZvciBpbnN0YW5jZSkuIEkgd291bGQgYWxzbyBwbGFjZSB0aGVtIHJpZ2h0 IGFmdGVyIHRoZQ0KPiBDU0kyUlhfSU5UX01TS19QSFlfRkFUQUwgZmllbGQgYmVsb3csIGluIG9y ZGVyIHRvIGdyb3VwIHJlZ2lzdGVycyBhbmQNCj4gdGhlaXIgYml0cyB0b2dldGhlcjoNCj4gDQo+ IAl1MzIgQ1NJMlJYX0lOVF9NU0tfUEhZX0ZBVEFMOw0KPiAjZGVmaW5lIFZJSUZfQ1NJMlJYX0lO VF9NU0tfUEhZX0ZBVEFMX0ZPTwlCSVQoMCkNCj4gI2RlZmluZSBWSUlGX0NTSTJSWF9JTlRfTVNL X1BIWV9GQVRBTF9CQVIJQklUKDEpDQo+IC4uLg0KPiAJdTMyIENTSTJSWF9JTlRfRk9SQ0VfUEhZ X0ZBVEFMOw0KPiAuLi4NCg0KSSdsbCBwdXQgcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zIHJpZ2h0 IGFmdGVyIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIGRlZmluaW5pdGlvbi4NCg0KPiA+ICsJ dTMyIFJFU0VSVkVEX0FfMTsNCj4gPiArCXUzMiBDU0kyUlhfTkxBTkVTOw0KPiA+ICsJdTMyIENT STJSWF9SRVNFVE47DQo+ID4gKwl1MzIgQ1NJMlJYX0lOVF9TVF9NQUlOOw0KPiA+ICsJdTMyIENT STJSWF9EQVRBX0lEU18xOw0KPiA+ICsJdTMyIENTSTJSWF9EQVRBX0lEU18yOw0KPiA+ICsJdTMy IFJFU0VSVkVEX0JfMVsxMF07DQo+ID4gKwl1MzIgQ1NJMlJYX1BIWV9TSFVURE9XTlo7DQo+ID4g Kwl1MzIgQ1NJMlJYX1BIWV9SU1RaOw0KPiA+ICsJdTMyIENTSTJSWF9QSFlfUlg7DQo+ID4gKwl1 MzIgQ1NJMlJYX1BIWV9TVE9QU1RBVEU7DQo+ID4gKwl1MzIgQ1NJMlJYX1BIWV9URVNUQ1RSTDA7 DQo+ID4gKwl1MzIgQ1NJMlJYX1BIWV9URVNUQ1RSTDE7DQo+ID4gKwl1MzIgUkVTRVJWRURfQl8y WzM0XTsNCj4gPiArCXUzMiBDU0kyUlhfSU5UX1NUX1BIWV9GQVRBTDsNCj4gPiArCXUzMiBDU0ky UlhfSU5UX01TS19QSFlfRkFUQUw7DQo+ID4gKwl1MzIgQ1NJMlJYX0lOVF9GT1JDRV9QSFlfRkFU QUw7DQo+ID4gKwl1MzIgUkVTRVJWRURfQl8zWzFdOw0KPiA+ICsJdTMyIENTSTJSWF9JTlRfU1Rf UEtUX0ZBVEFMOw0KPiA+ICsJdTMyIENTSTJSWF9JTlRfTVNLX1BLVF9GQVRBTDsNCj4gPiArCXUz MiBDU0kyUlhfSU5UX0ZPUkNFX1BLVF9GQVRBTDsNCj4gPiArCXUzMiBSRVNFUlZFRF9CXzRbMV07 DQo+ID4gKwl1MzIgQ1NJMlJYX0lOVF9TVF9GUkFNRV9GQVRBTDsNCj4gPiArCXUzMiBDU0kyUlhf SU5UX01TS19GUkFNRV9GQVRBTDsNCj4gPiArCXUzMiBDU0kyUlhfSU5UX0ZPUkNFX0ZSQU1FX0ZB VEFMOw0KPiA+ICsJdTMyIFJFU0VSVkVEX0JfNVsxXTsNCj4gPiArCXUzMiBDU0kyUlhfSU5UX1NU X1BIWTsNCj4gPiArCXUzMiBDU0kyUlhfSU5UX01TS19QSFk7DQo+ID4gKwl1MzIgQ1NJMlJYX0lO VF9GT1JDRV9QSFk7DQo+ID4gKwl1MzIgUkVTRVJWRURfQl82WzFdOw0KPiA+ICsJdTMyIENTSTJS WF9JTlRfU1RfUEtUOw0KPiA+ICsJdTMyIENTSTJSWF9JTlRfTVNLX1BLVDsNCj4gPiArCXUzMiBD U0kyUlhfSU5UX0ZPUkNFX1BLVDsNCj4gPiArCXUzMiBSRVNFUlZFRF9CXzdbMV07DQo+ID4gKwl1 MzIgQ1NJMlJYX0lOVF9TVF9MSU5FOw0KPiA+ICsJdTMyIENTSTJSWF9JTlRfTVNLX0xJTkU7DQo+ ID4gKwl1MzIgQ1NJMlJYX0lOVF9GT1JDRV9MSU5FOw0KPiA+ICsJdTMyIFJFU0VSVkVEX0JfOFsx MTNdOw0KPiA+ICsJdTMyIFJFU0VSVkVEX0FfMjsNCj4gPiArCXUzMiBSRVNFUlZFRF9BXzM7DQo+ ID4gKwl1MzIgUkVTRVJWRURfQV80Ow0KPiA+ICsJdTMyIFJFU0VSVkVEX0FfNTsNCj4gPiArCXUz MiBSRVNFUlZFRF9BXzY7DQo+IA0KPiBDYW4gdGhpcyBiZSB3cml0dGVuDQo+IA0KPiAJdTMyIFJF U0VSVkVEX0FfMl82WzVdOw0KPiANCj4gPyBUaGVyZSBhcmUgbGFyZ2UgYmxvY2tzIG9mIHJlc2Vy dmVkIHJlZ2lzdGVycyBiZWxvdywgaXQgd291bGQgaGVscA0KPiBzaG9ydGVuaW5nIHRoZSBmaWxl Lg0KPiANCj4gPiArCXUzMiBSRVNFUlZFRF9CXzlbNThdOw0KPiA+ICsJdTMyIFJFU0VSVkVEX0Ff NzsNCj4gPiArfTsNCj4gDQo+IFtzbmlwXQ0KPiANCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBo d2RfdmlpZl9sMWlzcF9yZWcgLSBSZWdpc3RlcnMgZm9yIFZJSUYgTDFJU1AgY29udHJvbA0KPiA+ ICsgKi8NCj4gPiArc3RydWN0IGh3ZF92aWlmX2wxaXNwX3JlZyB7DQo+ID4gKwl1MzIgTDFfU1lT TV9XSURUSDsNCj4gPiArCXUzMiBMMV9TWVNNX0hFSUdIVDsNCj4gPiArCXUzMiBMMV9TWVNNX1NU QVJUX0NPTE9SOw0KPiA+ICsJdTMyIEwxX1NZU01fSU5QVVRfTU9ERTsNCj4gPiArCXUzMiBSRVNF UlZFRF9BXzE7DQo+ID4gKwl1MzIgTDFfU1lTTV9ZQ09FRl9SOw0KPiA+ICsJdTMyIEwxX1NZU01f WUNPRUZfRzsNCj4gPiArCXUzMiBMMV9TWVNNX1lDT0VGX0I7DQo+ID4gKwl1MzIgTDFfU1lTTV9J TlRfU1RBVDsNCj4gPiArCXUzMiBMMV9TWVNNX0lOVF9NQVNLRURfU1RBVDsNCj4gPiArCXUzMiBM MV9TWVNNX0lOVF9NQVNLOw0KPiA+ICsJdTMyIFJFU0VSVkVEX0FfMjsNCj4gPiArCXUzMiBSRVNF UlZFRF9BXzM7DQo+ID4gKwl1MzIgUkVTRVJWRURfQV80Ow0KPiA+ICsJdTMyIFJFU0VSVkVEX0Jf MVsyXTsNCj4gPiArCXUzMiBMMV9TWVNNX0FHX0g7DQo+ID4gKwl1MzIgTDFfU1lTTV9BR19NOw0K PiA+ICsJdTMyIEwxX1NZU01fQUdfTDsNCj4gPiArCXUzMiBMMV9TWVNNX0FHX1BBUkFNX0E7DQo+ ID4gKwl1MzIgTDFfU1lTTV9BR19QQVJBTV9COw0KPiA+ICsJdTMyIEwxX1NZU01fQUdfUEFSQU1f QzsNCj4gPiArCXUzMiBMMV9TWVNNX0FHX1BBUkFNX0Q7DQo+ID4gKwl1MzIgTDFfU1lTTV9BR19T RUxfSE9CQzsNCj4gPiArCXUzMiBMMV9TWVNNX0FHX1NFTF9BQlBDOw0KPiA+ICsJdTMyIEwxX1NZ U01fQUdfU0VMX1JDTlI7DQo+ID4gKwl1MzIgTDFfU1lTTV9BR19TRUxfTFNTQzsNCj4gPiArCXUz MiBMMV9TWVNNX0FHX1NFTF9NUFJPOw0KPiA+ICsJdTMyIEwxX1NZU01fQUdfU0VMX1ZQUk87DQo+ ID4gKwl1MzIgTDFfU1lTTV9BR19DT05UX0hPQkMwMV9FTjsNCj4gPiArCXUzMiBMMV9TWVNNX0FH X0NPTlRfSE9CQzJfRU47DQo+ID4gKwl1MzIgTDFfU1lTTV9BR19DT05UX0FCUEMwMV9FTjsNCj4g PiArCXUzMiBMMV9TWVNNX0FHX0NPTlRfQUJQQzJfRU47DQo+ID4gKwl1MzIgTDFfU1lTTV9BR19D T05UX1JDTlIwMV9FTjsNCj4gPiArCXUzMiBMMV9TWVNNX0FHX0NPTlRfUkNOUjJfRU47DQo+ID4g Kwl1MzIgTDFfU1lTTV9BR19DT05UX0xTU0NfRU47DQo+ID4gKwl1MzIgTDFfU1lTTV9BR19DT05U X01QUk9fRU47DQo+ID4gKwl1MzIgTDFfU1lTTV9BR19DT05UX1ZQUk9fRU47DQo+ID4gKwl1MzIg TDFfU1lTTV9DVFhUOw0KPiA+ICsJdTMyIEwxX1NZU01fTUFOX0NUWFQ7DQo+ID4gKwl1MzIgUkVT RVJWRURfQV81Ow0KPiA+ICsJdTMyIFJFU0VSVkVEX0JfMls3XTsNCj4gPiArCXUzMiBSRVNFUlZF RF9BXzY7DQo+ID4gKwl1MzIgTDFfSERSRV9TUkNQT0lOVDAwOw0KPiA+ICsJdTMyIEwxX0hEUkVf U1JDUE9JTlQwMTsNCj4gPiArCXUzMiBMMV9IRFJFX1NSQ1BPSU5UMDI7DQo+ID4gKwl1MzIgTDFf SERSRV9TUkNQT0lOVDAzOw0KPiA+ICsJdTMyIEwxX0hEUkVfU1JDUE9JTlQwNDsNCj4gPiArCXUz MiBMMV9IRFJFX1NSQ1BPSU5UMDU7DQo+ID4gKwl1MzIgTDFfSERSRV9TUkNQT0lOVDA2Ow0KPiA+ ICsJdTMyIEwxX0hEUkVfU1JDUE9JTlQwNzsNCj4gPiArCXUzMiBMMV9IRFJFX1NSQ1BPSU5UMDg7 DQo+ID4gKwl1MzIgTDFfSERSRV9TUkNQT0lOVDA5Ow0KPiA+ICsJdTMyIEwxX0hEUkVfU1JDUE9J TlQxMDsNCj4gPiArCXUzMiBMMV9IRFJFX1NSQ1BPSU5UMTE7DQo+ID4gKwl1MzIgTDFfSERSRV9T UkNQT0lOVDEyOw0KPiA+ICsJdTMyIEwxX0hEUkVfU1JDUE9JTlQxMzsNCj4gPiArCXUzMiBMMV9I RFJFX1NSQ1BPSU5UMTQ7DQo+ID4gKwl1MzIgTDFfSERSRV9TUkNQT0lOVDE1Ow0KPiANCj4gVGhp cyBhbHNvIHNlZW1zIHRvIGJlIGEgY2FuZGlkYXRlIGZvciBhbiBhcnJheToNCj4gDQo+IAl1MzIg TDFfSERSRV9TUkNQT0lOVFsxNl07DQo+IA0KPiBOb3Qgb25seSB3aWxsIGl0IHNob3J0ZW4gdGhp cyBmaWxlLCBpdCB3aWxsIGFsc28gbWFrZSB0aGUgY29kZSBzaW1wbGVyDQo+IGFzIHlvdSdsbCBi ZSBhYmxlIHRvIHJlcGxhY2UNCj4gDQo+IAl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzBd LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDAwKTsNCj4gCXdy aXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbMV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9IRFJFX1NSQ1BPSU5UMDEpOw0KPiAJd3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFsy XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQwMik7DQo+IAl3 cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzNdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfSERSRV9TUkNQT0lOVDAzKTsNCj4gCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRb NF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1NSQ1BPSU5UMDQpOw0KPiAJ d3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFs1XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0hEUkVfU1JDUE9JTlQwNSk7DQo+IAl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50 WzZdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDA2KTsNCj4g CXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbN10sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5s MWlzcC5MMV9IRFJFX1NSQ1BPSU5UMDcpOw0KPiAJd3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2lu dFs4XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQwOCk7DQo+ IAl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzldLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfSERSRV9TUkNQT0lOVDA5KTsNCj4gCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9p bnRbMTBdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDEwKTsN Cj4gCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbMTFdLA0KPiAmcmVzLT5jYXB0dXJlX3Jl Zy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDExKTsNCj4gCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNf cG9pbnRbMTJdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDEy KTsNCj4gCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbMTNdLA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDEzKTsNCj4gCXdyaXRlbChwYXJhbS0+aGRyZV9z cmNfcG9pbnRbMTRdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lO VDE0KTsNCj4gCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbMTVdLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDE1KTsNCj4gDQo+IHdpdGgNCj4gDQo+IAlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShwYXJhbS0+aGRyZV9zcmNfcG9pbnQpOyArK2kpDQo+ IAkJd3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFtpXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWct PmwxaXNwLkwxX0hEUkVfU1JDUE9JTlRbaV0pOw0KPiANCj4gU2FtZSBpbiBxdWl0ZSBhIGZldyBv dGhlciBsb2NhdGlvbnMuDQoNCkknbGwga2VlcCBpdCBpbiBtaW5kIHdoZW4gSSBkZXNpZ24gbWFj cm8tc3R5bGUgZGVmaW5pdGlvbnMuDQoNCj4gW3NuaXBdDQo+IA0KPiA+ICt9Ow0KPiANCj4gW3Nu aXBdDQo+IA0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvdmlzY29udGlfdmlp Zi5oDQo+IGIvaW5jbHVkZS91YXBpL2xpbnV4L3Zpc2NvbnRpX3ZpaWYuaA0KPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAuLmY5MjI3ODQyNWI3DQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC92aXNjb250aV92aWlmLmgN Cj4gPiBAQCAtMCwwICsxLDE3MjQgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8NCj4gPiArLyogVG9zaGliYSBWaXNj b250aSBWaWRlbyBDYXB0dXJlIFN1cHBvcnQNCj4gPiArICoNCj4gPiArICogKEMpIENvcHlyaWdo dCAyMDIyIFRPU0hJQkEgQ09SUE9SQVRJT04NCj4gPiArICogKEMpIENvcHlyaWdodCAyMDIyIFRv c2hpYmEgRWxlY3Ryb25pYyBEZXZpY2VzICYgU3RvcmFnZSBDb3Jwb3JhdGlvbg0KPiA+ICsgKi8N Cj4gPiArDQo+ID4gKyNpZm5kZWYgX19VQVBJX1ZJU0NPTlRJX1ZJSUZfSF8NCj4gPiArI2RlZmlu ZSBfX1VBUElfVklTQ09OVElfVklJRl9IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L3R5 cGVzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4NCj4gPiArDQo+ID4gKy8q IFZpc2NvbnRpIHNwZWNpZmljIGNvbXBvdW5kIGNvbnRyb2xzICovDQo+ID4gKyNkZWZpbmUgVjRM Ml9DSURfVklTQ09OVElfVklJRl9CQVNFDQo+IChWNEwyX0NJRF9VU0VSX0JBU0UgKyAweDEwMDAp DQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9NQUlOX1NFVF9SQVdQQUNLX01P REUNCj4gKFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfQkFTRSArIDEpDQo+ID4gKyNkZWZpbmUgVjRM Ml9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0lOUFVUX01PREUNCj4gKFY0TDJfQ0lEX1ZJ U0NPTlRJX1ZJSUZfQkFTRSArIDIpDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJ Rl9JU1BfTDFfU0VUX1JHQl9UT19ZX0NPRUYNCj4gKFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfQkFT RSArIDMpDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0FH X01PREUNCj4gKFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfQkFTRSArIDQpDQo+ID4gKyNkZWZpbmUg VjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0FHDQo+IChWNEwyX0NJRF9WSVNDT05U SV9WSUlGX0JBU0UgKyA1KQ0KPiA+ICsjZGVmaW5lIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQ X0wxX1NFVF9IRFJFDQo+IChWNEwyX0NJRF9WSVNDT05USV9WSUlGX0JBU0UgKyA2KQ0KPiA+ICsj ZGVmaW5lIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9JTUdfRVhUUkFDVElPTg0K PiAoVjRMMl9DSURfVklTQ09OVElfVklJRl9CQVNFICsgNykNCj4gPiArI2RlZmluZSBWNEwyX0NJ RF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfRFBDDQo+IChWNEwyX0NJRF9WSVNDT05USV9WSUlG X0JBU0UgKyA4KQ0KPiA+ICsjZGVmaW5lDQo+IFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wx X1NFVF9QUkVTRVRfV0hJVEVfQkFMQU5DRQ0KPiAoVjRMMl9DSURfVklTQ09OVElfVklJRl9CQVNF ICsgOSkNCj4gPiArI2RlZmluZQ0KPiBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRf UkFXX0NPTE9SX05PSVNFX1JFRFVDVElPTg0KPiBcDQo+ID4gKwkoVjRMMl9DSURfVklTQ09OVElf VklJRl9CQVNFICsgMTApDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1Bf TDFfU0VUX0hEUlMNCj4gCSAoVjRMMl9DSURfVklTQ09OVElfVklJRl9CQVNFICsgMTEpDQo+ID4g KyNkZWZpbmUNCj4gVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0JMQUNLX0xFVkVM X0NPUlJFQ1RJT04NCj4gKFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfQkFTRSArIDEyKQ0KPiA+ICsj ZGVmaW5lIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9MU0MNCj4gKFY0TDJfQ0lE X1ZJU0NPTlRJX1ZJSUZfQkFTRSArIDEzKQ0KPiA+ICsjZGVmaW5lIFY0TDJfQ0lEX1ZJU0NPTlRJ X1ZJSUZfSVNQX0wxX1NFVF9NQUlOX1BST0NFU1MNCj4gCSAoVjRMMl9DSURfVklTQ09OVElfVklJ Rl9CQVNFICsgMTQpDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFf U0VUX0FXQg0KPiAoVjRMMl9DSURfVklTQ09OVElfVklJRl9CQVNFICsgMTUpDQo+ID4gKyNkZWZp bmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfTE9DS19BV0JfR0FJTg0KPiAoVjRMMl9D SURfVklTQ09OVElfVklJRl9CQVNFICsgMTYpDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09O VElfVklJRl9JU1BfTDFfU0VUX0hEUkMNCj4gCSAoVjRMMl9DSURfVklTQ09OVElfVklJRl9CQVNF ICsgMTcpDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0hE UkNfTFRNDQo+IChWNEwyX0NJRF9WSVNDT05USV9WSUlGX0JBU0UgKyAxOCkNCj4gPiArI2RlZmlu ZSBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfR0FNTUENCj4gCSAoVjRMMl9DSURf VklTQ09OVElfVklJRl9CQVNFICsgMTkpDQo+ID4gKyNkZWZpbmUNCj4gVjRMMl9DSURfVklTQ09O VElfVklJRl9JU1BfTDFfU0VUX0lNR19RVUFMSVRZX0FESlVTVE1FTlQNCj4gKFY0TDJfQ0lEX1ZJ U0NPTlRJX1ZJSUZfQkFTRSArIDIwKQ0KPiA+ICsjZGVmaW5lIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJ SUZfSVNQX0wxX1NFVF9BVkdfTFVNX0dFTkVSQVRJT04NCj4gCSAoVjRMMl9DSURfVklTQ09OVElf VklJRl9CQVNFICsgMjEpDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1Bf TDJfU0VUX1VORElTVA0KPiAoVjRMMl9DSURfVklTQ09OVElfVklJRl9CQVNFICsgMjIpDQo+ID4g KyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDJfU0VUX1JPSQ0KPiAoVjRMMl9D SURfVklTQ09OVElfVklJRl9CQVNFICsgMjMpDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09O VElfVklJRl9JU1BfTDJfU0VUX0dBTU1BDQo+IAkgKFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfQkFT RSArIDI0KQ0KPiA+ICsjZGVmaW5lIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfQ1NJMlJYX0dFVF9D QUxJQlJBVElPTl9TVEFUVVMNCj4gCSAoVjRMMl9DSURfVklTQ09OVElfVklJRl9CQVNFICsgMjUp DQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfVklTQ09OVElfVklJRl9DU0kyUlhfR0VUX0VSUl9TVEFU VVMNCj4gCSAoVjRMMl9DSURfVklTQ09OVElfVklJRl9CQVNFICsgMjYpDQo+ID4gKyNkZWZpbmUg VjRMMl9DSURfVklTQ09OVElfVklJRl9HRVRfTEFTVF9DQVBUVVJFX1NUQVRVUw0KPiAJIChWNEwy X0NJRF9WSVNDT05USV9WSUlGX0JBU0UgKyAyNykNCj4gPiArI2RlZmluZSBWNEwyX0NJRF9WSVND T05USV9WSUlGX0dFVF9SRVBPUlRFRF9FUlJPUlMNCj4gKFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZf QkFTRSArIDI4KQ0KPiANCj4gRmlyc3Qgb2YgYWxsLCB0aGFuayB5b3UgZm9yIHRha2luZyB0aGUg dGltZSB0byB3cml0ZSBhbGwgdGhlc2UsIGFzIHdlbGwNCj4gYXMgdGhlIGNvbnRyb2wgZG9jdW1l bnRhdGlvbi4NCj4gDQo+IFRoaXMgaXMgYSAqbG90KiBvZiBjb250cm9scywgYW5kIGVhY2ggb2Yg dGhlbSBzdG9yZSBhIHBvdGVudGlhbGx5IGxhcmdlDQo+IHF1YW50aXR5IG9mIGRhdGEuIFVubGVz cyBJJ20gbWlzdGFrZW4sIHRoZSBkcml2ZXIgZG9lc24ndCB1c2UgdGhlDQo+IHJlcXVlc3QgQVBJ LCB3aGljaCBtZWFucyB0aGF0IHRoZXJlJ3Mgbm8gc3luY2hyb25pemF0aW9uIGJldHdlZW4gY29u dHJvbA0KPiB2YWx1ZXMgYW5kIGZyYW1lcy4gSXNuJ3QgdGhhdCBhIHByb2JsZW0gPyBJJ20gd29u ZGVyaW5nIGlmIGEgbWVjaGFuaXNtDQo+IGJhc2VkIG9uIHBhcmFtZXRlcnMgYnVmZmVycyAobGlr ZSB0aGUgcmtpc3AxIGRyaXZlciBmb3IgaW5zdGFuY2UpDQo+IHdvdWxkbid0IGJlIGEgYmV0dGVy IGZpdC4NCg0KR2VuZXJhbGx5LCBWaXNjb250aTUgSVNQcyBjYXB0dXJlIHJlZ2lzdGVyIHZhbHVl cyBhdCBkZWxheWVkLVZzeW5jIGV2ZW50Lg0KQWxzbywgZXZlcnkgZnVuY3Rpb24gd3JpdGluZyB0 byByZWdpc3RlcnMgaXMgZW5jbG9zZWQgYnkgaHdkX3ZpaWZfaXNwX2d1YXJkX3tzdGFydCxlbmR9 KCkgd2hpY2ggZGlzYWJsZSB0aGUgY2FwdHVyZS4NClRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCBh IHNwZWNpYWwgY2FyZSBmb3Igc2V0dGluZyBjb250cm9sIHZhbHVlcy4NClRoZXJlIHNob3VsZCBo YXZlIGJlZW4gYSBkb2N1bWVudCBhYm91dCB0aGF0LiBJJ2xsIGFkZCBpdC4NCg0KVGhlIHByb2Js ZW0gaXMgdGhhdCBhIHJlZ2lzdGVyIHdyaXRlIGp1c3QgYXJvdW5kIGRlbGF5ZWQtVnN5bmMgZXZl bnQgZGlzdHVyYnMgdGhlIGNhcHR1cmUuIElTUHMgcnVuIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24g Zm9yIHRoZSBwcmV2aW91cyBmcmFtZS4NCkkgYXNzdW1lIHRoYXQgaXMgbm90IGEgYmlnIHByb2Js ZW0gYmVjYXVzZSBtb3N0IG9mIHRoZSBJU1AgY29udHJvbCByZXF1ZXN0cyBmcm9tIHVzZXJsYW5k IHdpbGwgYmUgaXNzdWVkIGp1c3QgYWZ0ZXIgZGVsYXllZC1WU3luYyBmb3IgdHlwaWNhbCB1c2Vj YXNlLg0KVGhlIGRyaXZlciBlbnF1ZXVlcyBhIGJ1ZmZlciBhdCBkZWxheWVkLVZTeW5jIGV2ZW50 LCBhbmQgYSB1c2VybGFuZCB3YWl0cyBmb3IgYSBuZXcgYnVmZmVyIHdpdGggcG9sbCgpLg0KSG1t IC4uLiBJIHNob3VsZCBub3QgbWFrZSBhbnkgYXNzdW1wdGlvbiBvbiB0aGUgb3BlcmF0aW9ucyBv ZiB1c2VybGFuZD8NCg0KQXMgZm9yIGludHJvZHVjaW5nIHBhcmFtZXRlciBidWZmZXJzLCBhIHBy b2JsZW0gaXMgaW5jcmVhc2VkIGxhdGVuY3kgb2YgY29uZmlndXJhdGlvbiBjaGFuZ2UuDQpVc2Vy IHJlcXVlc3RzIGFyZSBzdG9yZWQgaW4gcGFyYW1ldGVyIGJ1ZmZlciwgdGhlbiBzZXQgdG8gcmVn aXN0ZXJzIGF0IG5leHQgZGVsYXllZC1WU3luYy4NCkFmdGVyIHRoYXQsIElTUCBsb2FkcyB0aGUg Y29uZmlndXJhdGlvbiBhdCBuZXh0IGRlbGF5ZWQtVlN5bmMuIFRoZXJlJ3MgYWRkaXRpb25hbCBv bmUgZnJhbWUgZm9yIGNvbmZpZ3VyYXRpb24uDQpJIG1pZ2h0IG5lZWQgdG8gdHVybiBvbiBhIGN1 cnJlbnRseSB1bnVzZWQgaW50ZXJydXB0IHRvIGhhbmRsZSB0aGUgcGFyYW1ldGVyIGJ1ZmZlciBl YXJsaWVyLg0KDQo+ID4gKy8qIEVuYWJsZS9EaXNhYmxlIGZsYWcgKi8NCj4gPiArI2RlZmluZSBW SUlGX0RJU0FCTEUgKDBVKQ0KPiA+ICsjZGVmaW5lIFZJSUZfRU5BQkxFICAoMVUpDQo+IA0KPiBO byBuZWVkIGZvciBwYXJlbnRoZXNlcy4NCg0KSSdsbCBmaXggdGhlbS4NCg0KPiBbc25pcF0NCj4g DQo+ID4gKyNlbmRpZiAvKiBfX1VBUElfVklTQ09OVElfVklJRl9IXyAqLw0KPiANCj4gLS0NCj4g UmVnYXJkcywNCj4gDQo+IExhdXJlbnQgUGluY2hhcnQNCg0KUmVnYXJkcywNCg0KWXVqaSBJc2hp a2F3YQ0K