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 EFC19C54EAA for ; Thu, 26 Jan 2023 00:45:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236399AbjAZApA (ORCPT ); Wed, 25 Jan 2023 19:45:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236435AbjAZAo6 (ORCPT ); Wed, 25 Jan 2023 19:44:58 -0500 Received: from mo-csw.securemx.jp (mo-csw1516.securemx.jp [210.130.202.155]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1392D5DC0D; Wed, 25 Jan 2023 16:44:37 -0800 (PST) Received: by mo-csw.securemx.jp (mx-mo-csw1516) id 30Q0hrsM012266; Thu, 26 Jan 2023 09:43:53 +0900 X-Iguazu-Qid: 34tMQ0sdm9edDIbgsm X-Iguazu-QSIG: v=2; s=0; t=1674693832; q=34tMQ0sdm9edDIbgsm; m=IwcwScFieZzNJq3WOByAoMXQrY4ltGreQue52FL/gJA= Received: from imx12-a.toshiba.co.jp ([38.106.60.135]) by relay.securemx.jp (mx-mr1511) id 30Q0hoqS001978 (version=TLSv1.2 cipher=AES128-GCM-SHA256 bits=128 verify=NOT); Thu, 26 Jan 2023 09:43:50 +0900 X-SA-MID: 49753249 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XDEKYK+wXi8EyzEyFmWVVavdPSyxpuMiNqCLsynfjHKohdtG5/RFhnIMNABzT5CkHHQWXCsdpnjKLkEmkhSF44LJPZ73FQgzcjKtNAQRlPPsmA7MNdMwKDz16ikOfis/OPpDyKgi/E70xIsDGOReivYhPQGycZ48vs/7c9GIXdsl7swlLJm/NqqmIxEZWN9bQ6eoVTDaqQoRGMFA/y21wbUSMvmrDNQXwqQtNXhlt8gxDH6TFQfkwF0fQH9Nuj0NJpakyX5IRy7zcsYIiCUD1Rnq6yR/pbj8Sdw41275ty06/m1rzIjfQyOaPfdt2d1nMZ/gqJ+7rzxwBB7G4DPnRQ== 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=hdeEl8yDYm2p5moLNTKz6oPfHiB0Z+Xe/ZSdotTeuL8=; b=iDqlmUOjbLQPiXsQXG4FXAs6lIg2RP2MtKbL0FmR/N31FKjHAuFbabpamE8tbI5hd1UZypef7zEhIqEgkJge4d9+/QHA85HCUfK1LRKj9shblnoOuCdJz5tf6plUGvvnrhxudD2QSEqDk2RUbjQIdkXjWX6t+ly7/bO/GWUtmzXRRaJ+Ira6p7ca7eWutJzekUYr1LFmBprYUhWwz7o3KdwEagKK5V3AwjryQyrmXxyc6/ZnSAIrcVjCNwZQz5F0+MnVOZi/SRvvmEcTUKesRsfunoh7srFdxQjU5A8mh+X3jIMjFMc0ewvwAl8BGb5zNu1GqmgzWKlmF2y9TeNdWw== 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 4/6] media: platform: visconti: Add Toshiba Visconti Video Input Interface driver v4l2 controls handler Thread-Topic: [PATCH v5 4/6] media: platform: visconti: Add Toshiba Visconti Video Input Interface driver v4l2 controls handler Thread-Index: AQHZJWPyWvms7kPPhkqGZVdtRfuKl66igHOAgA1w6tA= Date: Thu, 26 Jan 2023 00:38:37 +0000 X-TSB-HOP2: ON Message-ID: References: <20230111022433.25950-1-yuji2.ishikawa@toshiba.co.jp> <20230111022433.25950-5-yuji2.ishikawa@toshiba.co.jp> <741cc02e-9d72-db59-171a-14bbd7925c7c@xs4all.nl> In-Reply-To: <741cc02e-9d72-db59-171a-14bbd7925c7c@xs4all.nl> 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_|OS3PR01MB5718:EE_ x-ms-office365-filtering-correlation-id: 069f32cf-f160-4740-11d7-08daff35aa06 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: HGGNVmfly4nV0/So3Mp5jTlTovKzZk9ADVVikn3CjIzQgR0XLRPRgW+lEDw2XtreZUgVh0iVFAtLjwNZI0+SxUqXGLwdrpzwWBoZot7a/QywFpWxhzfKG3bD0ZFWPcwvT0HRGy3koSRI7WgGV/OVCOSUqR9/bEQBIopoiPv5Pq0Fq2WVR59exgTBHB3dpas+BKJnifQVwllxXIlNx66p8jfMd+gqCc5F3TvHkZKP8LThU7PAltDVAofzQLG+SZY94IuhLclaKhN/dcry0bGhi34Jt/IdBmrh8LehwoNmOUJvGhZhzs4NvxNhx7G/NO9udYsV2HAki6Kgtbls2bMTc3pl0K37iWoiyp8pt7abJLeG2c8WlcRrxZmL2xUdl83RyPbPsx7YbcwQfcRwCZRThjuFfHfTSAU3+uV7JaMTyFnwfZ7xucpgRPGVaRgCpUc8ubdlmTOQYRD1nzccISWf88abJEd3vIs3R/bfe7LlobDcchsBFPvO2gfJhdpSJQJcgIkoWrq2F/PkcI3L3NhXzqf7HDI4DfaobPBBSo5yBU2Fdt8dk4cOPeHsLgNv23yQvhxvbaGzljl04LSig2XG7wdaKmDoUR/0LYakgcMJ8kQWUWsQfOG2CqWYB+EevOVmV95l5vokgqIladBCm5I0BASlF017Mu++4q3nKHE9AO5108KStmwCaA8yds3vqNWkdzgGiJxSUeU1Q1uBpSZSL9lSN7sjZqc5dNTdg4LIBCc= 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)(396003)(366004)(136003)(346002)(376002)(39860400002)(451199018)(122000001)(38100700002)(33656002)(8676002)(54906003)(316002)(478600001)(64756008)(38070700005)(71200400001)(66476007)(41300700001)(7696005)(66446008)(4326008)(76116006)(110136005)(66556008)(53546011)(6506007)(52536014)(2906002)(86362001)(66946007)(186003)(83380400001)(30864003)(9686003)(26005)(8936002)(5660300002)(7416002)(55016003)(165384002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZVNMdjQxeEtSWlVRamVOVFFRNWZrRUVwNUhRSDk4VHZ5dkZ2cUVyNnJQY1VR?= =?utf-8?B?bzlld0pSNkpGaUVTalZ5ZVhXRDBrSlJtSEdwcDBtd3FKRWdoY1dnOTlvMHhX?= =?utf-8?B?Q3ppSzZyYklxL2dXZlM5U2VjVFNvS0d2MVEyaHl5R0lMTnMwR01lS1NrdEd3?= =?utf-8?B?NjluTmdWQ3lPa1VIQkt4eGdiSlZvYmVMcFpkUENJdm9rKzNlUmphOWpiYXpC?= =?utf-8?B?VmhDL1B0M2pURGVSWjVmWmlHYmUvZUdxU3dyZkxwUitvRVVUNDVuL05MeGdF?= =?utf-8?B?TDY0YzUwb1hxcjRWSWdVRFlxYVBHYUk1NXhBL0FQQUgwWHMwRURmQkVjL1pI?= =?utf-8?B?MnJVUFR6YUhrQkpsQTdCQThxV0w2V1dpZlBpdDRGcGxIRkNoR2xBc0lneSs5?= =?utf-8?B?TXFaVWxnb0NQd01GWmhUd3RTNC9ZczZuTDdqbTRRQURoUjhrK1JJMm0xTnpO?= =?utf-8?B?TmJLQjMvTGtwUThQRlN0clJmb2RyQ3U0ZFFWM2Q0a29yWUZGOEdaakhzM2ZB?= =?utf-8?B?WmJZd3ZVdFg4d3dYUlRwMHl5cTdGNnlEc0UvWlFpeHFEVkNURHk4ZW41ZEMw?= =?utf-8?B?aTAzUStZekdoWnBSNi9VN2dib3p2aVZWK2k1NlgySVliQ0d3OHhCenRmRHQr?= =?utf-8?B?TnhaZGt3cTNZL0dCL082T3loL3dnZUlpWGNDQmNwRGY2OEFIa1JTbW9DenNa?= =?utf-8?B?N281b0thVDdIOE05MEt0bWptWE40bDUrczhJYlltSTg4OFVFRjVEQUhQTXA4?= =?utf-8?B?MHhIMUgvL3lEZ1RuUzNoSXBCZWVPeDMvNXdJMTZXVG1iOFRMSnUvcmZZM3k1?= =?utf-8?B?dHlNVDNwUlAycWplQU05RUFhRWxKSWVxdjd3OEcycEFOcGViOS9WcW4wdFBQ?= =?utf-8?B?V2xOeHBERXRiUHJyMDdLbUN5MzhaS25sTnNoemxiMlZqd2NNbzQ5eXhVL29O?= =?utf-8?B?WWZiZGVMVFNFSnQ3eHFURlQ4UWIxUCtnb2dsYjdGbHQ5L1puWmtmTEZ1UVFJ?= =?utf-8?B?OEd6dlQ5TkVGeVpnc3pSakF3Zlp3ekMrMndDTmhWVUhRS2swTS90b1Y2aVRz?= =?utf-8?B?aG03MWhMcjdNMk9uUTRVanozeWJTc0l6Q3VpRUtOVmpVcWd4UXdHalF2aDhq?= =?utf-8?B?TVRoQ2NVSCs1MXZiVXBVZmdIQ2dYZ3F4VFA3ZzZKMEQzVjdqTHdKWjRYdE9k?= =?utf-8?B?ZEh4d1FtUDZXNHZQQ3FYWm40SE5RSW9NcXloem9kZHdlNS9TakpEL0hiQUtw?= =?utf-8?B?V2liS3RWSjF2eVR5RVZoL0xiSExxZmxxMzdXT3R2WUhneWlmTHdONGdPTU41?= =?utf-8?B?Rmd2QXJlTTh5WmV6aklIUFNtTXZlTURQWFpibXpVcVoxalFjZDdpYjVpbmd1?= =?utf-8?B?ZVNFZGRXbE1odHk4MlpLMWRzTm1CblcyVDE3Sk96bUk0K1RiQnRjS1lMQTFx?= =?utf-8?B?QmZqN1dpaWdrTUduaGllY1MyWFVVMHk4cW01WnNScnhwQ251QmR5OHhwbzN0?= =?utf-8?B?TXJhSU9JUG5HSjMrTVBZTmErSkZuMXpZSjluNXE3Y1B4RFZ3Z2QwNXM4SEhT?= =?utf-8?B?dmk1VzNLNDh0Z3J3ZW0xYUFpeFdWQldHVVVWL1V5cGUwNm5oUGhZTlQ5RTl6?= =?utf-8?B?N1pFS1kzQy92L3VuRUFmWkNyRUNpQ0R1NlNsTGg0Z3dsVDRNd0M3dlQyd0dw?= =?utf-8?B?Vmx5K1p6WHJiVDhFNGVVODg4dmtDcHdHalQyTHVTZUJTblFCenN3ck5JL0xI?= =?utf-8?B?RGN3c0VZWmgrSG5BSXRRWDh5UnF5K1MwZVFyQ3I1U0FDMHNROVNON0x5dTNH?= =?utf-8?B?RGZRck1Nb0FIZ1VMaFNaRmY2RURaazRMeklrTk1DSHZMMEc1UkV3bHZ5bEh4?= =?utf-8?B?QnQ0T1JralliUy96UlZ1c0JqaWNHSXAvS0Q5VGxNK1M0cU0yRGRTMHQxNUhh?= =?utf-8?B?UEpRNGovemNmZFZ6aFhSNkdRZWI2RDk0K2p1bllBcTF1ZDMwaEZ3RXVHS29m?= =?utf-8?B?S3Voa2ZER2ttM0dBbzNzY2JrdkxDc2F6SEZ2S3hneUZZSmN3c1NzUE56TmZJ?= =?utf-8?B?Q3hmOHhiQ3p1VUY1eW5CUG05MU1uNUJLdkhxcU1wSU1zWnZHUk9LYVRwV0RV?= =?utf-8?B?TjZabXE4N2o5d05EVW4xVXgxd2JWc2tiMmpNTWRaZllnam1IaUo1d2ZuWlFh?= =?utf-8?B?UkE9PQ==?= 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: 069f32cf-f160-4740-11d7-08daff35aa06 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jan 2023 00:38:37.6751 (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: Xlh6kBEAoaJvkHpPcnDaylf/I0rqJOvqIEEfeqSny8UMe02zKk8Sx7RBg9Z59V4gRbkyYlYokGB3wsPfMkk+rri8kM68I0BBYxPBmS2i8lU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB5718 X-OriginatorOrg: toshiba.co.jp Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGVsbG8gSGFucywNCg0KVGhhbmsgeW91IGZvciB5b3VyIGNvbW1lbnRzLg0KDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxs Lm5sPg0KPiBTZW50OiBUdWVzZGF5LCBKYW51YXJ5IDE3LCAyMDIzIDg6MjAgUE0NCj4gVG86IGlz aGlrYXdhIHl1amko55+z5bedIOaCoOWPuCDil4vvvLLvvKTvvKPilqHvvKHvvKnvvLTvvKPil4vv vKXvvKHplospDQo+IDx5dWppMi5pc2hpa2F3YUB0b3NoaWJhLmNvLmpwPjsgTGF1cmVudCBQaW5j aGFydA0KPiA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPjsgTWF1cm8gQ2FydmFs aG8gQ2hlaGFiDQo+IDxtY2hlaGFiQGtlcm5lbC5vcmc+OyBpd2FtYXRzdSBub2J1aGlybyjlsqnm nb4g5L+h5rSLIOKWoe+8s++8t++8o+KXr++8oe+8o++8tCkNCj4gPG5vYnVoaXJvMS5pd2FtYXRz dUB0b3NoaWJhLmNvLmpwPjsgUm9iIEhlcnJpbmcgPHJvYmgrZHRAa2VybmVsLm9yZz47DQo+IEty enlzenRvZiBLb3psb3dza2kgPGtyenlzenRvZi5rb3psb3dza2krZHRAbGluYXJvLm9yZz47IFJh ZmFlbCBKIC4gV3lzb2NraQ0KPiA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+OyBNYXJrIEJy b3duIDxicm9vbmllQGtlcm5lbC5vcmc+DQo+IENjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v cmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsNCj4gbGludXgta2VybmVs QHZnZXIua2VybmVsLm9yZzsgZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDog UmU6IFtQQVRDSCB2NSA0LzZdIG1lZGlhOiBwbGF0Zm9ybTogdmlzY29udGk6IEFkZCBUb3NoaWJh IFZpc2NvbnRpDQo+IFZpZGVvIElucHV0IEludGVyZmFjZSBkcml2ZXIgdjRsMiBjb250cm9scyBo YW5kbGVyDQo+IA0KPiBTb21lIHJldmlldyBjb21tZW50cyBiZWxvdzoNCj4gDQo+IE9uIDExLzAx LzIwMjMgMDM6MjQsIFl1amkgSXNoaWthd2Egd3JvdGU6DQo+ID4gQWRkIHN1cHBvcnQgdG8gSW1h Z2UgU2lnbmFsIFByb2Nlc3NvcnMgb2YgVmlzY29udGkncyBWaWRlbyBJbnB1dCBJbnRlcmZhY2Uu DQo+ID4gVGhpcyBwYXRjaCBhZGRzIHZlbmRvciBzcGVjaWZpYyBjb21wb3VuZCBjb250cm9scw0K PiA+IHRvIGNvbmZpZ3VyZSB0aGUgaW1hZ2Ugc2lnbmFsIHByb2Nlc3Nvci4NCj4gPg0KPiA+IFNp Z25lZC1vZmYtYnk6IFl1amkgSXNoaWthd2EgPHl1amkyLmlzaGlrYXdhQHRvc2hpYmEuY28uanA+ DQo+ID4gLS0tDQo+ID4gQ2hhbmdlbG9nIHYyOg0KPiA+IC0gUmVzZW5kIHYxIGJlY2F1c2UgYSBw YXRjaCBleGNlZWRzIHNpemUgbGltaXQuDQo+ID4NCj4gPiBDaGFuZ2Vsb2cgdjM6DQo+ID4gLSBB ZGFwdGVkIHRvIG1lZGlhIGNvbnRyb2wgZnJhbWV3b3JrDQo+ID4gLSBJbnRyb2R1Y2VkIElTUCBz dWJkZXZpY2UsIGNhcHR1cmUgZGV2aWNlDQo+ID4gLSBSZW1vdmUgcHJpdmF0ZSBJT0NUTHMgYW5k IGFkZCB2ZW5kb3Igc3BlY2lmaWMgVjRMMiBjb250cm9scw0KPiA+IC0gQ2hhbmdlIGZ1bmN0aW9u IG5hbWUgYXZvaWRpbmcgY2FtZWxjYXNlIGFuZCB1cHBlcmNhc2UgbGV0dGVycw0KPiA+DQo+ID4g Q2hhbmdlbG9nIHY0Og0KPiA+IC0gU3BsaXQgcGF0Y2hlcyBiZWNhdXNlIHRoZSB2MyBwYXRjaCBl eGNlZWRzIHNpemUgbGltaXQNCj4gPiAtIFN0b3AgdXNpbmcgSUQgbnVtYmVyIHRvIGlkZW50aWZ5 IGRyaXZlciBpbnN0YW5jZToNCj4gPiAgIC0gVXNlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBzdHJ1 Y3R1cmUgdG8gaG9sZCBIVyBzcGVjaWZpYyBjb250ZXh0LA0KPiA+ICAgICBpbnN0ZWFkIG9mIHN0 YXRpYyBvbmUuDQo+ID4gICAtIENhbGwgSFcgbGF5ZXIgZnVuY3Rpb25zIHdpdGggdGhlIGNvbnRl eHQgc3RydWN0dXJlIGluc3RlYWQgb2YgSUQgbnVtYmVyDQo+ID4NCj4gPiBDaGFuZ2Vsb2cgdjU6 DQo+ID4gLSBubyBjaGFuZ2UNCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92 aXNjb250aS9NYWtlZmlsZSAgICAgIHwgICAgNCArLQ0KPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0v dmlzY29udGkvaHdkX3ZpaWZfbDFpc3AuYyAgfCAyNjc0DQo+ICsrKysrKysrKysrKysrKysrDQo+ ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS92aWlmX2NvbnRyb2xzLmMgICB8IDExNTMg KysrKysrKw0KPiA+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL3ZpaWZfaXNwLmMg ICAgfCAgICAyICsNCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAzODMxIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRm b3JtL3Zpc2NvbnRpL2h3ZF92aWlmX2wxaXNwLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlzY29udGkvdmlpZl9jb250cm9scy5jDQo+ID4NCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS9NYWtlZmlsZQ0KPiBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlzY29udGkvTWFrZWZpbGUNCj4gPiBpbmRleCBkN2Ey M2MxZjRlOC4uMTNjZjcwY2UzMDkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS92aXNjb250aS9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v dmlzY29udGkvTWFrZWZpbGUNCj4gPiBAQCAtMyw3ICszLDcgQEANCj4gPiAgIyBNYWtlZmlsZSBm b3IgdGhlIFZpc2NvbnRpIHZpZGVvIGlucHV0IGRldmljZSBkcml2ZXINCj4gPiAgIw0KPiA+DQo+ ID4gLXZpc2NvbnRpLXZpaWYtb2JqcyA9IHZpaWYubyB2aWlmX2NhcHR1cmUubyB2aWlmX2lzcC5v DQo+ID4gLXZpc2NvbnRpLXZpaWYtb2JqcyArPSBod2RfdmlpZl9jc2kycngubyBod2RfdmlpZi5v DQo+ID4gK3Zpc2NvbnRpLXZpaWYtb2JqcyA9IHZpaWYubyB2aWlmX2NhcHR1cmUubyB2aWlmX2Nv bnRyb2xzLm8gdmlpZl9pc3Aubw0KPiA+ICt2aXNjb250aS12aWlmLW9ianMgKz0gaHdkX3ZpaWZf Y3NpMnJ4Lm8gaHdkX3ZpaWYubyBod2RfdmlpZl9sMWlzcC5vDQo+ID4NCj4gPiAgb2JqLSQoQ09O RklHX1ZJREVPX1ZJU0NPTlRJX1ZJSUYpICs9IHZpc2NvbnRpLXZpaWYubw0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlmX2wxaXNwLmMNCj4g Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2NvbnRpL2h3ZF92aWlmX2wxaXNwLmMNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwLi44ODJlZWE5MjIwNQ0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zpc2Nv bnRpL2h3ZF92aWlmX2wxaXNwLmMNCj4gPiBAQCAtMCwwICsxLDI2NzQgQEANCj4gPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTItQ2xhdXNlDQo+ID4gKy8qIFRv c2hpYmEgVmlzY29udGkgVmlkZW8gQ2FwdHVyZSBTdXBwb3J0DQo+ID4gKyAqDQo+ID4gKyAqIChD KSBDb3B5cmlnaHQgMjAyMiBUT1NISUJBIENPUlBPUkFUSU9ODQo+ID4gKyAqIChDKSBDb3B5cmln aHQgMjAyMiBUb3NoaWJhIEVsZWN0cm9uaWMgRGV2aWNlcyAmIFN0b3JhZ2UgQ29ycG9yYXRpb24N Cj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4NCj4gPiArI2luY2x1 ZGUgImh3ZF92aWlmLmgiDQo+ID4gKyNpbmNsdWRlICJod2RfdmlpZl9pbnRlcm5hbC5oIg0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIGh3ZF92aWlmX2wxX3NldF9pbnB1dF9tb2RlKCkgLSBDb25m aWd1cmUgTDFJU1AgaW5wdXQgbW9kZS4NCj4gPiArICoNCj4gPiArICogQG1vZGU6IEwxSVNQIHBy ZXByb2Nlc3NpbmcgbW9kZSBAcmVmIGh3ZF92aWlmX2wxX2lucHV0X21vZGUNCj4gPiArICogQGRl cHRoOiBpbnB1dCBjb2xvciBkZXB0aCAoZXZlbiBvbmx5KQ0KPiA+ICsgKiAtIFs4Li4yNF0gaW4g Y2FzZSBvZiBtb2RlID0gI0hXRF9WSUlGX0wxX0lOUFVUX0hEUiBvcg0KPiAjSFdEX1ZJSUZfTDFf SU5QVVRfSERSX0lNR19DT1JSRUNUDQo+ID4gKyAqIC0gWzguLjE0XSBpbiBjYXNlIG9mIG1vZGUg PSAjSFdEX1ZJSUZfTDFfSU5QVVRfUFdMIG9yDQo+ICNIV0RfVklJRl9MMV9JTlBVVF9QV0xfSU1H X0NPUlJFQ1QNCj4gPiArICogLSBbOC4uMTJdIGluIGNhc2Ugb2YgbW9kZSA9ICNIV0RfVklJRl9M MV9JTlBVVF9TRFINCj4gPiArICogQHJhd19jb2xvcl9maWx0ZXI6IFJBVyBjb2xvciBmaWx0ZXIg YXJyYXkgQHJlZg0KPiBod2RfdmlpZl9sMV9yYXdfY29sb3JfZmlsdGVyX21vZGUNCj4gPiArICog QGludGVycG9sYXRpb25fb3JkZXI6IGludGVycG9sYXRpb24gb3JkZXIgZm9yIGlucHV0IGltYWdl DQo+ID4gKyAqIFJldHVybjogMCBvcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseQ0KPiA+ ICsgKiBSZXR1cm46IC1FSU5WQUwgUGFyYW1ldGVyIGVycm9yDQo+ID4gKyAqIC0gIm1vZGUiIGlz IG91dCBvZiByYW5nZQ0KPiA+ICsgKiAtICJkZXB0aCIgaXMgb3V0IG9mIHJhbmdlDQo+ID4gKyAq IC0gInJhd19jb2xvcl9maWx0ZXIiIGlzIG91dCBvZiByYW5nZQ0KPiA+ICsgKiAtICJpbnRlcnBv bGF0aW9uX29yZGVyIiBpcyBOVUxMIGluIGNhc2Ugb2YgIm1vZGUiID09DQo+ICNIV0RfVklJRl9M MV9JTlBVVF9TRFINCj4gPiArICogLSAiaW50ZXJwb2xhdGlvbl9vcmRlciIgaXMgbm90IE5VTEwg aW4gY2FzZSBvZiAibW9kZSIgIT0NCj4gI0hXRF9WSUlGX0wxX0lOUFVUX1NEUg0KPiA+ICsgKg0K PiA+ICsgKiBOb3RlIHRoYXQgaWYgJ21vZGUnIGlzIG5vdCBIV0RfVklJRl9MMV9JTlBVVF9TRFIs IE5VTEwgc2hhbGwgYmUgc2V0IHRvDQo+ICdpbnRlcnBvbGF0aW9uX29yZGVyJy4NCj4gPiArICov DQo+ID4gK3MzMiBod2RfdmlpZl9sMV9zZXRfaW5wdXRfbW9kZShzdHJ1Y3QgaHdkX3ZpaWZfcmVz ICpyZXMsIHUzMiBtb2RlLCB1MzINCj4gZGVwdGgsIHUzMiByYXdfY29sb3JfZmlsdGVyKQ0KPiA+ ICt7DQo+ID4gKwl1MzIgZGVwdGhfbWF4Ow0KPiA+ICsNCj4gPiArCWlmIChtb2RlID49IEhXRF9W SUlGX0wxX0lOUFVUX01PREVfTlVNIHx8IG1vZGUgPT0NCj4gSFdEX1ZJSUZfTDFfSU5QVVRfU0RS KQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWlmIChtb2RlID09IEhXRF9W SUlGX0wxX0lOUFVUX1BXTCB8fCBtb2RlID09DQo+IEhXRF9WSUlGX0wxX0lOUFVUX1BXTF9JTUdf Q09SUkVDVCkNCj4gPiArCQlkZXB0aF9tYXggPSBIV0RfVklJRl9MMV9JTlBVVF9ERVBUSF9QV0xf TUFYOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCWRlcHRoX21heCA9IEhXRF9WSUlGX0wxX0lOUFVUX0RF UFRIX01BWDsNCj4gPiArDQo+ID4gKwlpZiAoZGVwdGggPCBIV0RfVklJRl9MMV9JTlBVVF9ERVBU SF9NSU4gfHwgZGVwdGggPiBkZXB0aF9tYXggfHwNCj4gKChkZXB0aCAlIDJVKSAhPSAwVSkgfHwN Cj4gPiArCSAgICByYXdfY29sb3JfZmlsdGVyID49IEhXRF9WSUlGX0wxX1JBV19NT0RFX05VTSkg ew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXdyaXRlbCht b2RlLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfU1lTTV9JTlBVVF9NT0RFKTsNCj4gPiAr CXdyaXRlbChkZXB0aCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0lCVUZfREVQVEgpOw0K PiA+ICsJd3JpdGVsKHJhd19jb2xvcl9maWx0ZXIsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9TWVNNX1NUQVJUX0NPTE9SKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGh3ZF92aWlmX2wxX3NldF9yZ2JfdG9feV9jb2VmKCkg LSBDb25maWd1cmUgTDFJU1AgUkdCIGNvZWZmaWNpZW50cyB0bw0KPiBjYWxjdWxhdGUgWS4NCj4g PiArICoNCj4gPiArICogQGNvZWZfcjogUiBjb2VmZmljaWVudCB0byBjYWxjdWxhdGUgWSBbMjU2 Li42NTAyNF0gYWNjdXJhY3k6IDEvNjU1MzYNCj4gPiArICogQGNvZWZfZzogRyBjb2VmZmljaWVu dCB0byBjYWxjdWxhdGUgWSBbMjU2Li42NTAyNF0gYWNjdXJhY3k6IDEvNjU1MzYNCj4gPiArICog QGNvZWZfYjogQiBjb2VmZmljaWVudCB0byBjYWxjdWxhdGUgWSBbMjU2Li42NTAyNF0gYWNjdXJh Y3k6IDEvNjU1MzYNCj4gPiArICogUmV0dXJuOiAwIG9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vz c2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZBTCBQYXJhbWV0ZXIgZXJyb3INCj4gPiArICog LSAiY29lZl9yIiBpcyBvdXQgb2YgcmFuZ2UNCj4gPiArICogLSAiY29lZl9nIiBpcyBvdXQgb2Yg cmFuZ2UNCj4gPiArICogLSAiY29lZl9iIiBpcyBvdXQgb2YgcmFuZ2UNCj4gPiArICoNCj4gPiAr ICogTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRoYXQgY29lZl9yL2cvYiBoYXMgcm91bmRpbmcg ZXJyb3Igd2hlbiB0aGUgdmFsdWUNCj4gaXMgc2V0IHRvIEhXIHJlZ2lzdGVyDQo+ID4gKyAqLw0K PiA+ICtzMzIgaHdkX3ZpaWZfbDFfc2V0X3JnYl90b195X2NvZWYoc3RydWN0IGh3ZF92aWlmX3Jl cyAqcmVzLCB1MTYgY29lZl9yLCB1MTYNCj4gY29lZl9nLCB1MTYgY29lZl9iKQ0KPiA+ICt7DQo+ ID4gKwlpZiAoY29lZl9yIDwgSFdEX1ZJSUZfTDFfQ09FRl9NSU4gfHwgY29lZl9yID4NCj4gSFdE X1ZJSUZfTDFfQ09FRl9NQVggfHwNCj4gPiArCSAgICBjb2VmX2cgPCBIV0RfVklJRl9MMV9DT0VG X01JTiB8fCBjb2VmX2cgPg0KPiBIV0RfVklJRl9MMV9DT0VGX01BWCB8fA0KPiA+ICsJICAgIGNv ZWZfYiA8IEhXRF9WSUlGX0wxX0NPRUZfTUlOIHx8IGNvZWZfYiA+DQo+IEhXRF9WSUlGX0wxX0NP RUZfTUFYKSB7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ d3JpdGVsKCh1MzIpY29lZl9yLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfU1lTTV9ZQ09F Rl9SKTsNCj4gPiArCXdyaXRlbCgodTMyKWNvZWZfZywgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX1NZU01fWUNPRUZfRyk7DQo+ID4gKwl3cml0ZWwoKHUzMiljb2VmX2IsICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9TWVNNX1lDT0VGX0IpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDFfc2V0X2FnX21vZGUo KSAtIENvbmZpZ3VyZSBMMUlTUCBBRyBtb2RlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW06IHBv aW50ZXIgdG8gc3RydWN0IGh3ZF92aWlmX2wxX2FnX21vZGUNCj4gPiArICogUmV0dXJuOiAwIG9w ZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZBTCBQ YXJhbWV0ZXIgZXJyb3INCj4gPiArICogLSAicGFyYW0iIGlzIE5VTEwNCj4gPiArICogLSBlYWNo IG1lbWJlciBvZiAicGFyYW0iIGlzIGludmFsaWQNCj4gPiArICovDQo+ID4gK3MzMiBod2Rfdmlp Zl9sMV9zZXRfYWdfbW9kZShzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpyZXMsIGNvbnN0IHN0cnVjdA0K PiB2aWlmX2wxX2FnX21vZGVfY29uZmlnICpwYXJhbSkNCj4gPiArew0KPiA+ICsJdTMyIHZhbDsN Cj4gPiArDQo+ID4gKwlpZiAoIXBhcmFtIHx8IHBhcmFtLT5zeXNtX2FnX3BzZWxfaG9iY19oaWdo ID49DQo+IEhXRF9WSUlGX0wxX0FHX0lEX05VTSB8fA0KPiA+ICsJICAgIHBhcmFtLT5zeXNtX2Fn X3BzZWxfaG9iY19taWRkbGVfbGVkID49DQo+IEhXRF9WSUlGX0wxX0FHX0lEX05VTSB8fA0KPiA+ ICsJICAgIHBhcmFtLT5zeXNtX2FnX3BzZWxfaG9iY19sb3cgPj0gSFdEX1ZJSUZfTDFfQUdfSURf TlVNDQo+IHx8DQo+ID4gKwkgICAgcGFyYW0tPnN5c21fYWdfcHNlbF9hYnBjX2hpZ2ggPj0gSFdE X1ZJSUZfTDFfQUdfSURfTlVNDQo+IHx8DQo+ID4gKwkgICAgcGFyYW0tPnN5c21fYWdfcHNlbF9h YnBjX21pZGRsZV9sZWQgPj0NCj4gSFdEX1ZJSUZfTDFfQUdfSURfTlVNIHx8DQo+ID4gKwkgICAg cGFyYW0tPnN5c21fYWdfcHNlbF9hYnBjX2xvdyA+PSBIV0RfVklJRl9MMV9BR19JRF9OVU0NCj4g fHwNCj4gPiArCSAgICBwYXJhbS0+c3lzbV9hZ19wc2VsX3JjbnJfaGlnaCA+PSBIV0RfVklJRl9M MV9BR19JRF9OVU0NCj4gfHwNCj4gPiArCSAgICBwYXJhbS0+c3lzbV9hZ19wc2VsX3JjbnJfbWlk ZGxlX2xlZCA+PQ0KPiBIV0RfVklJRl9MMV9BR19JRF9OVU0gfHwNCj4gPiArCSAgICBwYXJhbS0+ c3lzbV9hZ19wc2VsX3JjbnJfbG93ID49IEhXRF9WSUlGX0wxX0FHX0lEX05VTSB8fA0KPiA+ICsJ ICAgIHBhcmFtLT5zeXNtX2FnX3NzZWxfbHNzYyA+PQ0KPiBIV0RfVklJRl9MMV9TRU5TSVRJVklU WV9JTUFHRV9OVU0gfHwNCj4gPiArCSAgICBwYXJhbS0+c3lzbV9hZ19wc2VsX2xzc2MgPj0gSFdE X1ZJSUZfTDFfQUdfSURfTlVNIHx8DQo+ID4gKwkgICAgcGFyYW0tPnN5c21fYWdfc3NlbF9tcHJv ID49DQo+IEhXRF9WSUlGX0wxX1NFTlNJVElWSVRZX0lNQUdFX05VTSB8fA0KPiA+ICsJICAgIHBh cmFtLT5zeXNtX2FnX3BzZWxfbXBybyA+PSBIV0RfVklJRl9MMV9BR19JRF9OVU0gfHwNCj4gPiAr CSAgICBwYXJhbS0+c3lzbV9hZ19zc2VsX3Zwcm8gPj0NCj4gSFdEX1ZJSUZfTDFfU0VOU0lUSVZJ VFlfSU1BR0VfTlVNIHx8DQo+ID4gKwkgICAgcGFyYW0tPnN5c21fYWdfcHNlbF92cHJvID49IEhX RF9WSUlGX0wxX0FHX0lEX05VTSB8fA0KPiA+ICsJICAgIChwYXJhbS0+c3lzbV9hZ19jb250X2hv YmNfZW5faGlnaCAhPSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCSAgICAgcGFyYW0tPnN5c21f YWdfY29udF9ob2JjX2VuX2hpZ2ggIT0gSFdEX1ZJSUZfRElTQUJMRSkgfHwNCj4gPiArCSAgICAo cGFyYW0tPnN5c21fYWdfY29udF9ob2JjX2VuX21pZGRsZV9sZWQgIT0NCj4gSFdEX1ZJSUZfRU5B QkxFICYmDQo+ID4gKwkgICAgIHBhcmFtLT5zeXNtX2FnX2NvbnRfaG9iY19lbl9taWRkbGVfbGVk ICE9DQo+IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkgICAgKHBhcmFtLT5zeXNtX2FnX2Nv bnRfaG9iY19lbl9sb3cgIT0gSFdEX1ZJSUZfRU5BQkxFICYmDQo+ID4gKwkgICAgIHBhcmFtLT5z eXNtX2FnX2NvbnRfaG9iY19lbl9sb3cgIT0gSFdEX1ZJSUZfRElTQUJMRSkgfHwNCj4gPiArCSAg ICAocGFyYW0tPnN5c21fYWdfY29udF9yY25yX2VuX2hpZ2ggIT0gSFdEX1ZJSUZfRU5BQkxFICYm DQo+ID4gKwkgICAgIHBhcmFtLT5zeXNtX2FnX2NvbnRfcmNucl9lbl9oaWdoICE9IEhXRF9WSUlG X0RJU0FCTEUpIHx8DQo+ID4gKwkgICAgKHBhcmFtLT5zeXNtX2FnX2NvbnRfcmNucl9lbl9taWRk bGVfbGVkICE9DQo+IEhXRF9WSUlGX0VOQUJMRSAmJg0KPiA+ICsJICAgICBwYXJhbS0+c3lzbV9h Z19jb250X3JjbnJfZW5fbWlkZGxlX2xlZCAhPQ0KPiBIV0RfVklJRl9ESVNBQkxFKSB8fA0KPiA+ ICsJICAgIChwYXJhbS0+c3lzbV9hZ19jb250X3JjbnJfZW5fbG93ICE9IEhXRF9WSUlGX0VOQUJM RSAmJg0KPiA+ICsJICAgICBwYXJhbS0+c3lzbV9hZ19jb250X3JjbnJfZW5fbG93ICE9IEhXRF9W SUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkgICAgKHBhcmFtLT5zeXNtX2FnX2NvbnRfbHNzY19lbiAh PSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCSAgICAgcGFyYW0tPnN5c21fYWdfY29udF9sc3Nj X2VuICE9IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkgICAgKHBhcmFtLT5zeXNtX2FnX2Nv bnRfbXByb19lbiAhPSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCSAgICAgcGFyYW0tPnN5c21f YWdfY29udF9tcHJvX2VuICE9IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkgICAgKHBhcmFt LT5zeXNtX2FnX2NvbnRfdnByb19lbiAhPSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCSAgICAg cGFyYW0tPnN5c21fYWdfY29udF92cHJvX2VuICE9IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4g KwkgICAgKHBhcmFtLT5zeXNtX2FnX2NvbnRfYWJwY19lbl9taWRkbGVfbGVkICE9DQo+IEhXRF9W SUlGX0VOQUJMRSAmJg0KPiA+ICsJICAgICBwYXJhbS0+c3lzbV9hZ19jb250X2FicGNfZW5fbWlk ZGxlX2xlZCAhPQ0KPiBIV0RfVklJRl9ESVNBQkxFKSB8fA0KPiA+ICsJICAgIChwYXJhbS0+c3lz bV9hZ19jb250X2FicGNfZW5faGlnaCAhPSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCSAgICAg cGFyYW0tPnN5c21fYWdfY29udF9hYnBjX2VuX2hpZ2ggIT0gSFdEX1ZJSUZfRElTQUJMRSkgfHwN Cj4gPiArCSAgICAocGFyYW0tPnN5c21fYWdfY29udF9hYnBjX2VuX2xvdyAhPSBIV0RfVklJRl9F TkFCTEUgJiYNCj4gPiArCSAgICAgcGFyYW0tPnN5c21fYWdfY29udF9hYnBjX2VuX2xvdyAhPSBI V0RfVklJRl9ESVNBQkxFKSkgew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiAN Cj4gWW91IHNob3VsZCBzcGxpdCBvZmYgdGhlIHZhbGlkYXRpb24gY29kZSBpbnRvIGEgc2VwYXJh dGUgZnVuY3Rpb24NCj4gKGUuZy4gaHdkX3ZpaWZfbDFfdHJ5X2FnX21vZGUpIGFuZCBhZGQgc3Vw cG9ydCBmb3IgdGhlIHRyeV9jdHJsIG9wDQo+IHdoZXJlIHlvdSBjYWxsIHRoZXNlICd0cnknIGZ1 bmN0aW9ucy4NCj4NCj4gVGhlIGFkdmFudGFnZSBpcyB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNl IFZJRElPQ19UUllfRVhUX0NUUkxTIHRvDQo+IGNoZWNrIGlmIHRoZSBjb250cm9scyBhcmUgdmFs aWQsIGl0J3MgcmVhbGx5IHdoZXJlIHRoZSBjaGVja3Mgc2hvdWxkDQo+IGJlIGRvbmUuDQoNClRo YXQncyBuaWNlLiANCkknbGwgc3BsaXQgb2ZmIHRoZSB2YWxpZGF0aW9uIGNvZGUuDQoNCj4gPiAr DQo+ID4gKwkvKiBTWVNNX0FHX1BBUkFNICovDQo+ID4gKwl2YWwgPSAoKHUzMilwYXJhbS0+c3lz bV9hZ19ncmFkWzBdIDw8IDE2VSkgfA0KPiAoKHUzMilwYXJhbS0+c3lzbV9hZ19vZnN0WzBdKTsN Cj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX0FHX1BB UkFNX0EpOw0KPiA+ICsJdmFsID0gKCh1MzIpcGFyYW0tPnN5c21fYWdfZ3JhZFsxXSA8PCAxNlUp IHwNCj4gKCh1MzIpcGFyYW0tPnN5c21fYWdfb2ZzdFsxXSk7DQo+ID4gKwl3cml0ZWwodmFsLCAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfU1lTTV9BR19QQVJBTV9CKTsNCj4gPiArCXZhbCA9 ICgodTMyKXBhcmFtLT5zeXNtX2FnX2dyYWRbMl0gPDwgMTZVKSB8DQo+ICgodTMyKXBhcmFtLT5z eXNtX2FnX29mc3RbMl0pOw0KPiA+ICsJd3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX1NZU01fQUdfUEFSQU1fQyk7DQo+ID4gKwl2YWwgPSAoKHUzMilwYXJhbS0+c3lzbV9h Z19ncmFkWzNdIDw8IDE2VSkgfA0KPiAoKHUzMilwYXJhbS0+c3lzbV9hZ19vZnN0WzNdKTsNCj4g PiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX0FHX1BBUkFN X0QpOw0KPiA+ICsNCj4gPiArCS8qIFNZU01fQUdfU0VMICovDQo+ID4gKwl2YWwgPSAoKHUzMilw YXJhbS0+c3lzbV9hZ19wc2VsX2hvYmNfaGlnaCA8PCA2VSkgfA0KPiA+ICsJICAgICAgKCh1MzIp cGFyYW0tPnN5c21fYWdfcHNlbF9ob2JjX21pZGRsZV9sZWQgPDwgNFUpIHwNCj4gPiArCSAgICAg ICgodTMyKXBhcmFtLT5zeXNtX2FnX3BzZWxfaG9iY19sb3cgPDwgMlUpOw0KPiA+ICsJd3JpdGVs KHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1NZU01fQUdfU0VMX0hPQkMpOw0KPiA+ ICsNCj4gPiArCXZhbCA9ICgodTMyKXBhcmFtLT5zeXNtX2FnX3BzZWxfYWJwY19oaWdoIDw8IDZV KSB8DQo+ID4gKwkgICAgICAoKHUzMilwYXJhbS0+c3lzbV9hZ19wc2VsX2FicGNfbWlkZGxlX2xl ZCA8PCA0VSkgfA0KPiA+ICsJICAgICAgKCh1MzIpcGFyYW0tPnN5c21fYWdfcHNlbF9hYnBjX2xv dyA8PCAyVSk7DQo+ID4gKwl3cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf U1lTTV9BR19TRUxfQUJQQyk7DQo+ID4gKw0KPiA+ICsJdmFsID0gKCh1MzIpcGFyYW0tPnN5c21f YWdfcHNlbF9yY25yX2hpZ2ggPDwgNlUpIHwNCj4gPiArCSAgICAgICgodTMyKXBhcmFtLT5zeXNt X2FnX3BzZWxfcmNucl9taWRkbGVfbGVkIDw8IDRVKSB8DQo+ID4gKwkgICAgICAoKHUzMilwYXJh bS0+c3lzbV9hZ19wc2VsX3JjbnJfbG93IDw8IDJVKTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX0FHX1NFTF9SQ05SKTsNCj4gPiArDQo+ID4gKwl2 YWwgPSAoKHUzMilwYXJhbS0+c3lzbV9hZ19zc2VsX2xzc2MgPDwgMlUpIHwNCj4gKCh1MzIpcGFy YW0tPnN5c21fYWdfcHNlbF9sc3NjKTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9TWVNNX0FHX1NFTF9MU1NDKTsNCj4gPiArDQo+ID4gKwl2YWwgPSAoKHUz MilwYXJhbS0+c3lzbV9hZ19zc2VsX21wcm8gPDwgMlUpIHwNCj4gKCh1MzIpcGFyYW0tPnN5c21f YWdfcHNlbF9tcHJvKTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9TWVNNX0FHX1NFTF9NUFJPKTsNCj4gPiArDQo+ID4gKwl2YWwgPSAoKHUzMilwYXJhbS0+ c3lzbV9hZ19zc2VsX3Zwcm8gPDwgMlUpIHwNCj4gKCh1MzIpcGFyYW0tPnN5c21fYWdfcHNlbF92 cHJvKTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNN X0FHX1NFTF9WUFJPKTsNCj4gPiArDQo+ID4gKwkvKiBTWVNNX0FHX0NPTlQgKi8NCj4gPiArCXZh bCA9IChwYXJhbS0+c3lzbV9hZ19jb250X2hvYmNfZW5fbWlkZGxlX2xlZCA8PCAyNFUpIHwNCj4g PiArCSAgICAgICgodTMyKShwYXJhbS0+c3lzbV9hZ19jb250X2hvYmNfdGVzdF9taWRkbGVfbGVk KSA8PCAxNlUpIHwNCj4gPiArCSAgICAgIChwYXJhbS0+c3lzbV9hZ19jb250X2hvYmNfZW5faGln aCA8PCA4VSkgfA0KPiAodTMyKXBhcmFtLT5zeXNtX2FnX2NvbnRfaG9iY190ZXN0X2hpZ2g7DQo+ ID4gKwl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfU1lTTV9BR19D T05UX0hPQkMwMV9FTik7DQo+ID4gKwl2YWwgPSAocGFyYW0tPnN5c21fYWdfY29udF9ob2JjX2Vu X2xvdyA8PCA4VSkgfA0KPiAodTMyKXBhcmFtLT5zeXNtX2FnX2NvbnRfaG9iY190ZXN0X2xvdzsN Cj4gPiArCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX0FH X0NPTlRfSE9CQzJfRU4pOw0KPiA+ICsNCj4gPiArCXZhbCA9IChwYXJhbS0+c3lzbV9hZ19jb250 X2FicGNfZW5fbWlkZGxlX2xlZCA8PCAyNFUpIHwNCj4gPiArCSAgICAgICgodTMyKShwYXJhbS0+ c3lzbV9hZ19jb250X2FicGNfdGVzdF9taWRkbGVfbGVkKSA8PCAxNlUpIHwNCj4gPiArCSAgICAg IChwYXJhbS0+c3lzbV9hZ19jb250X2FicGNfZW5faGlnaCA8PCA4VSkgfA0KPiAodTMyKXBhcmFt LT5zeXNtX2FnX2NvbnRfYWJwY190ZXN0X2hpZ2g7DQo+ID4gKwl3cml0ZWwodmFsLA0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfU1lTTV9BR19DT05UX0FCUEMwMV9FTik7DQo+ID4gKwl2 YWwgPSAocGFyYW0tPnN5c21fYWdfY29udF9hYnBjX2VuX2xvdyA8PCA4VSkgfA0KPiAodTMyKXBh cmFtLT5zeXNtX2FnX2NvbnRfYWJwY190ZXN0X2xvdzsNCj4gPiArCXdyaXRlbCh2YWwsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX0FHX0NPTlRfQUJQQzJfRU4pOw0KPiA+ICsN Cj4gPiArCXZhbCA9IChwYXJhbS0+c3lzbV9hZ19jb250X3JjbnJfZW5fbWlkZGxlX2xlZCA8PCAy NFUpIHwNCj4gPiArCSAgICAgICgodTMyKShwYXJhbS0+c3lzbV9hZ19jb250X3JjbnJfdGVzdF9t aWRkbGVfbGVkKSA8PCAxNlUpIHwNCj4gPiArCSAgICAgIChwYXJhbS0+c3lzbV9hZ19jb250X3Jj bnJfZW5faGlnaCA8PCA4VSkgfA0KPiAodTMyKXBhcmFtLT5zeXNtX2FnX2NvbnRfcmNucl90ZXN0 X2hpZ2g7DQo+ID4gKwl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf U1lTTV9BR19DT05UX1JDTlIwMV9FTik7DQo+ID4gKwl2YWwgPSAocGFyYW0tPnN5c21fYWdfY29u dF9yY25yX2VuX2xvdyA8PCA4VSkgfA0KPiAodTMyKXBhcmFtLT5zeXNtX2FnX2NvbnRfcmNucl90 ZXN0X2xvdzsNCj4gPiArCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9TWVNNX0FHX0NPTlRfUkNOUjJfRU4pOw0KPiA+ICsNCj4gPiArCXZhbCA9IChwYXJhbS0+c3lz bV9hZ19jb250X2xzc2NfZW4gPDwgOFUpIHwNCj4gKHUzMilwYXJhbS0+c3lzbV9hZ19jb250X2xz c2NfdGVzdDsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9T WVNNX0FHX0NPTlRfTFNTQ19FTik7DQo+ID4gKw0KPiA+ICsJdmFsID0gKHBhcmFtLT5zeXNtX2Fn X2NvbnRfbXByb19lbiA8PCA4VSkgfA0KPiAodTMyKXBhcmFtLT5zeXNtX2FnX2NvbnRfbXByb190 ZXN0Ow0KPiA+ICsJd3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1NZU01f QUdfQ09OVF9NUFJPX0VOKTsNCj4gPiArDQo+ID4gKwl2YWwgPSAocGFyYW0tPnN5c21fYWdfY29u dF92cHJvX2VuIDw8IDhVKSB8DQo+ICh1MzIpcGFyYW0tPnN5c21fYWdfY29udF92cHJvX3Rlc3Q7 DQo+ID4gKwl3cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfU1lTTV9BR19D T05UX1ZQUk9fRU4pOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDFfc2V0X2FnKCkgLSBDb25maWd1cmUgTDFJU1AgYW5h bG9nIGdhaW4uDQo+ID4gKyAqDQo+ID4gKyAqIEBnYWluX2g6IGFuYWxvZyBnYWluIHZhbHVlIGZv ciBoaWdoIHNlbnNpdGl2aXR5IGltYWdlIFswLi42NTUzNV0NCj4gPiArICogQGdhaW5fbTogYW5h bG9nIGdhaW4gdmFsdWUgZm9yIG1pZGRsZSBzZW5zaXRpdml0eSBvciBsZWQgaW1hZ2UgWzAuLjY1 NTM1XQ0KPiA+ICsgKiBAZ2Fpbl9sOiBhbmFsb2cgZ2FpbiB2YWx1ZSBmb3IgbG93IHNlbnNpdGl2 aXR5IGltYWdlIFswLi42NTUzNV0NCj4gPiArICogUmV0dXJuOiAwIG9wZXJhdGlvbiBjb21wbGV0 ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqLw0KPiA+ICtzMzIgaHdkX3ZpaWZfbDFfc2V0X2FnKHN0 cnVjdCBod2RfdmlpZl9yZXMgKnJlcywgdTE2IGdhaW5faCwgdTE2IGdhaW5fbSwNCj4gdTE2IGdh aW5fbCkNCj4gPiArew0KPiA+ICsJd3JpdGVsKCh1MzIpZ2Fpbl9oLCAmcmVzLT5jYXB0dXJlX3Jl Zy0+bDFpc3AuTDFfU1lTTV9BR19IKTsNCj4gPiArCXdyaXRlbCgodTMyKWdhaW5fbSwgJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1NZU01fQUdfTSk7DQo+ID4gKwl3cml0ZWwoKHUzMilnYWlu X2wsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX0FHX0wpOw0KPiA+ICsNCj4gPiAr CXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDFf c2V0X2hkcmUoKSAtIENvbmZpZ3VyZSBMMUlTUCBIRFIgZXh0ZW5zaW9uIHBhcmFtZXRlcnMuDQo+ ID4gKyAqDQo+ID4gKyAqIEBwYXJhbTogcG9pbnRlciB0byBzdHJ1Y3QgaHdkX3ZpaWZfbDFfaGRy ZQ0KPiA+ICsgKiBSZXR1cm46IDAgb3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkNCj4g PiArICogUmV0dXJuOiAtRUlOVkFMIFBhcmFtZXRlciBlcnJvcg0KPiA+ICsgKiAtICJwYXJhbSIg aXMgTlVMTA0KPiA+ICsgKiAtIGVhY2ggbWVtYmVyIG9mICJwYXJhbSIgaXMgaW52YWxpZA0KPiA+ ICsgKi8NCj4gPiArczMyIGh3ZF92aWlmX2wxX3NldF9oZHJlKHN0cnVjdCBod2RfdmlpZl9yZXMg KnJlcywgY29uc3Qgc3RydWN0DQo+IHZpaWZfbDFfaGRyZV9jb25maWcgKnBhcmFtKQ0KPiA+ICt7 DQo+ID4gKwl1MzIgaWR4Ow0KPiA+ICsNCj4gPiArCWlmICghcGFyYW0pDQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJZm9yIChpZHggPSAwOyBpZHggPCAxNlU7IGlkeCsrKSB7 DQo+ID4gKwkJaWYgKHBhcmFtLT5oZHJlX3NyY19wb2ludFtpZHhdID4NCj4gSFdEX1ZJSUZfTDFf SERSRV9NQVhfS05FRVBPSU5UX1ZBTCkNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJZm9yIChpZHggPSAwOyBpZHggPCAxN1U7IGlkeCsrKSB7DQo+ID4gKwkJ aWYgKHBhcmFtLT5oZHJlX2RzdF9iYXNlW2lkeF0gPg0KPiBIV0RfVklJRl9MMV9IRFJFX01BWF9I RFJFX1NJR19WQUwgfHwNCj4gPiArCQkgICAgcGFyYW0tPmhkcmVfcmF0aW9baWR4XSA+PQ0KPiBI V0RfVklJRl9MMV9IRFJFX01BWF9PVVRfUElYRUxfUkFUSU8pIHsNCj4gPiArCQkJcmV0dXJuIC1F SU5WQUw7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChwYXJhbS0+aGRyZV9k c3RfbWF4X3ZhbCA+DQo+IEhXRF9WSUlGX0wxX0hEUkVfTUFYX09VVF9QSVhFTF9WQUwpDQo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3NyY19w b2ludFswXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQwMCk7 DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzFdLA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDAxKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRy ZV9zcmNfcG9pbnRbMl0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1NSQ1BP SU5UMDIpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFszXSwNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQwMyk7DQo+ID4gKwl3cml0ZWwocGFy YW0tPmhkcmVfc3JjX3BvaW50WzRdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERS RV9TUkNQT0lOVDA0KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbNV0sDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1NSQ1BPSU5UMDUpOw0KPiA+ICsJd3Jp dGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFs2XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0hEUkVfU1JDUE9JTlQwNik7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50 WzddLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNQT0lOVDA3KTsNCj4g PiArCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbOF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9IRFJFX1NSQ1BPSU5UMDgpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3Ny Y19wb2ludFs5XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQw OSk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzEwXSwNCj4gJnJlcy0+Y2Fw dHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQxMCk7DQo+ID4gKwl3cml0ZWwocGFyYW0t PmhkcmVfc3JjX3BvaW50WzExXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVf U1JDUE9JTlQxMSk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzEyXSwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQxMik7DQo+ID4gKwl3cml0 ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzEzXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0hEUkVfU1JDUE9JTlQxMyk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50 WzE0XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQxNCk7DQo+ ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzE1XSwNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPmwxaXNwLkwxX0hEUkVfU1JDUE9JTlQxNSk7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKDAsICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1NSQ0JBU0UwMCk7DQo+ID4gKwl3cml0ZWwo cGFyYW0tPmhkcmVfc3JjX3BvaW50WzBdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf SERSRV9TUkNCQVNFMDEpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFsxXSwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDQkFTRTAyKTsNCj4gPiArCXdy aXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbMl0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9IRFJFX1NSQ0JBU0UwMyk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50 WzNdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNCQVNFMDQpOw0KPiA+ ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFs0XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWct PmwxaXNwLkwxX0hEUkVfU1JDQkFTRTA1KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNf cG9pbnRbNV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1NSQ0JBU0UwNik7 DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3BvaW50WzZdLA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfSERSRV9TUkNCQVNFMDcpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJl X3NyY19wb2ludFs3XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDQkFT RTA4KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbOF0sDQo+ICZyZXMtPmNh cHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1NSQ0JBU0UwOSk7DQo+ID4gKwl3cml0ZWwocGFyYW0t PmhkcmVfc3JjX3BvaW50WzldLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9T UkNCQVNFMTApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFsxMF0sDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1NSQ0JBU0UxMSk7DQo+ID4gKwl3cml0ZWwo cGFyYW0tPmhkcmVfc3JjX3BvaW50WzExXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X0hEUkVfU1JDQkFTRTEyKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbMTJd LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9TUkNCQVNFMTMpOw0KPiA+ICsJ d3JpdGVsKHBhcmFtLT5oZHJlX3NyY19wb2ludFsxM10sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5s MWlzcC5MMV9IRFJFX1NSQ0JBU0UxNCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfc3JjX3Bv aW50WzE0XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfU1JDQkFTRTE1KTsN Cj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9zcmNfcG9pbnRbMTVdLA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfSERSRV9TUkNCQVNFMTYpOw0KPiA+ICsNCj4gPiArCXdyaXRlbChwYXJh bS0+aGRyZV9kc3RfYmFzZVswXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVf RFNUQkFTRTAwKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9kc3RfYmFzZVsxXSwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfRFNUQkFTRTAxKTsNCj4gPiArCXdyaXRlbChw YXJhbS0+aGRyZV9kc3RfYmFzZVsyXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hE UkVfRFNUQkFTRTAyKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9kc3RfYmFzZVszXSwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfRFNUQkFTRTAzKTsNCj4gPiArCXdyaXRl bChwYXJhbS0+aGRyZV9kc3RfYmFzZVs0XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X0hEUkVfRFNUQkFTRTA0KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9kc3RfYmFzZVs1XSwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfRFNUQkFTRTA1KTsNCj4gPiArCXdy aXRlbChwYXJhbS0+aGRyZV9kc3RfYmFzZVs2XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0hEUkVfRFNUQkFTRTA2KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9kc3RfYmFzZVs3 XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfRFNUQkFTRTA3KTsNCj4gPiAr CXdyaXRlbChwYXJhbS0+aGRyZV9kc3RfYmFzZVs4XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0hEUkVfRFNUQkFTRTA4KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9kc3RfYmFz ZVs5XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfRFNUQkFTRTA5KTsNCj4g PiArCXdyaXRlbChwYXJhbS0+aGRyZV9kc3RfYmFzZVsxMF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9IRFJFX0RTVEJBU0UxMCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfZHN0 X2Jhc2VbMTFdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9EU1RCQVNFMTEp Ow0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX2RzdF9iYXNlWzEyXSwNCj4gJnJlcy0+Y2FwdHVy ZV9yZWctPmwxaXNwLkwxX0hEUkVfRFNUQkFTRTEyKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRy ZV9kc3RfYmFzZVsxM10sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX0RTVEJB U0UxMyk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfZHN0X2Jhc2VbMTRdLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9EU1RCQVNFMTQpOw0KPiA+ICsJd3JpdGVsKHBhcmFt LT5oZHJlX2RzdF9iYXNlWzE1XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVf RFNUQkFTRTE1KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9kc3RfYmFzZVsxNl0sDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX0RTVEJBU0UxNik7DQo+ID4gKw0KPiA+ICsJ d3JpdGVsKHBhcmFtLT5oZHJlX3JhdGlvWzBdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfSERSRV9SQVRJTzAwKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9yYXRpb1sxXSwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfUkFUSU8wMSk7DQo+ID4gKwl3cml0ZWwo cGFyYW0tPmhkcmVfcmF0aW9bMl0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJF X1JBVElPMDIpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3JhdGlvWzNdLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9SQVRJTzAzKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+ aGRyZV9yYXRpb1s0XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfUkFUSU8w NCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfcmF0aW9bNV0sDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9IRFJFX1JBVElPMDUpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3Jh dGlvWzZdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9SQVRJTzA2KTsNCj4g PiArCXdyaXRlbChwYXJhbS0+aGRyZV9yYXRpb1s3XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0hEUkVfUkFUSU8wNyk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfcmF0aW9bOF0s DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1JBVElPMDgpOw0KPiA+ICsJd3Jp dGVsKHBhcmFtLT5oZHJlX3JhdGlvWzldLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf SERSRV9SQVRJTzA5KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9yYXRpb1sxMF0sDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1JBVElPMTApOw0KPiA+ICsJd3JpdGVsKHBh cmFtLT5oZHJlX3JhdGlvWzExXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVf UkFUSU8xMSk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVfcmF0aW9bMTJdLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9SQVRJTzEyKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+ aGRyZV9yYXRpb1sxM10sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJFX1JBVElP MTMpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJlX3JhdGlvWzE0XSwNCj4gJnJlcy0+Y2FwdHVy ZV9yZWctPmwxaXNwLkwxX0hEUkVfUkFUSU8xNCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmVf cmF0aW9bMTVdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSRV9SQVRJTzE1KTsN Cj4gPiArCXdyaXRlbChwYXJhbS0+aGRyZV9yYXRpb1sxNl0sDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9IRFJFX1JBVElPMTYpOw0KPiA+ICsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRy ZV9kc3RfbWF4X3ZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkVfRFNUTUFY VkFMKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIGh3ZF92aWlmX2wxX3NldF9pbWdfZXh0cmFjdGlvbigpIC0gQ29uZmlndXJlIEwxSVNQ IGltYWdlIGV4dHJhY3Rpb24NCj4gcGFyYW1ldGVycy4NCj4gPiArICoNCj4gPiArICogQGlucHV0 X2JsYWNrX2dyOiBibGFjayBsZXZlbCBvZiBHciBpbnB1dCBwaXhlbCBbMHgwLi4weGZmZmZmZl0N Cj4gPiArICogQGlucHV0X2JsYWNrX3I6IGJsYWNrIGxldmVsIG9mIFIgaW5wdXQgcGl4ZWwgWzB4 MC4uMHhmZmZmZmZdDQo+ID4gKyAqIEBpbnB1dF9ibGFja19iOiBibGFjayBsZXZlbCBvZiBCIGlu cHV0IHBpeGVsIFsweDAuLjB4ZmZmZmZmXQ0KPiA+ICsgKiBAaW5wdXRfYmxhY2tfZ2I6IGJsYWNr IGxldmVsIG9mIEdiIGlucHV0IHBpeGVsIFsweDAuLjB4ZmZmZmZmXQ0KPiA+ICsgKiBSZXR1cm46 IDAgb3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkNCj4gPiArICogUmV0dXJuOiAtRUlO VkFMIFBhcmFtZXRlciBlcnJvcg0KPiA+ICsgKiAtICJpbnB1dF9ibGFja19nciIgaXMgb3V0IG9m IHJhbmdlDQo+ID4gKyAqIC0gImlucHV0X2JsYWNrX3IiIGlzIG91dCBvZiByYW5nZQ0KPiA+ICsg KiAtICJpbnB1dF9ibGFja19iIiBpcyBvdXQgb2YgcmFuZ2UNCj4gPiArICogLSAiaW5wdXRfYmxh Y2tfZ2IiIGlzIG91dCBvZiByYW5nZQ0KPiA+ICsgKi8NCj4gPiArczMyIGh3ZF92aWlmX2wxX3Nl dF9pbWdfZXh0cmFjdGlvbihzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpyZXMsIHUzMg0KPiBpbnB1dF9i bGFja19nciwgdTMyIGlucHV0X2JsYWNrX3IsDQo+ID4gKwkJCQkgICB1MzIgaW5wdXRfYmxhY2tf YiwgdTMyIGlucHV0X2JsYWNrX2diKQ0KPiA+ICt7DQo+ID4gKwlpZiAoaW5wdXRfYmxhY2tfZ3Ig Pg0KPiBIV0RfVklJRl9MMV9JTUdfRVhUUkFDVF9NQVhfQkxBQ0tfTEVWRUxfVkFMIHx8DQo+ID4g KwkgICAgaW5wdXRfYmxhY2tfciA+DQo+IEhXRF9WSUlGX0wxX0lNR19FWFRSQUNUX01BWF9CTEFD S19MRVZFTF9WQUwgfHwNCj4gPiArCSAgICBpbnB1dF9ibGFja19iID4NCj4gSFdEX1ZJSUZfTDFf SU1HX0VYVFJBQ1RfTUFYX0JMQUNLX0xFVkVMX1ZBTCB8fA0KPiA+ICsJICAgIGlucHV0X2JsYWNr X2diID4NCj4gSFdEX1ZJSUZfTDFfSU1HX0VYVFJBQ1RfTUFYX0JMQUNLX0xFVkVMX1ZBTCkgew0K PiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXdyaXRlbChpbnB1 dF9ibGFja19nciwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1NMSUNfU1JDQkxBQ0tM RVZFTF9HUik7DQo+ID4gKwl3cml0ZWwoaW5wdXRfYmxhY2tfciwNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPmwxaXNwLkwxX1NMSUNfU1JDQkxBQ0tMRVZFTF9SKTsNCj4gPiArCXdyaXRlbChpbnB1dF9i bGFja19iLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfU0xJQ19TUkNCTEFDS0xFVkVM X0IpOw0KPiA+ICsJd3JpdGVsKGlucHV0X2JsYWNrX2diLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfU0xJQ19TUkNCTEFDS0xFVkVMX0dCKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGh3ZF92aWlmX2wxX3NldF9kcGMoKSAt IENvbmZpZ3VyZSBMMUlTUCBkZWZlY3QgcGl4ZWwgY29ycmVjdGlvbg0KPiBwYXJhbWV0ZXJzLg0K PiA+ICsgKg0KPiA+ICsgKiBAcGFyYW1faDogcG9pbnRlciB0byBkZWZlY3QgcGl4ZWwgY29ycmVj dGlvbiBwYXJhbWV0ZXJzIGZvciBoaWdoDQo+IHNlbnNpdGl2aXR5IGltYWdlDQo+ID4gKyAqIEBw YXJhbV9tOiBwb2ludGVyIHRvIGRlZmVjdCBwaXhlbCBjb3JyZWN0aW9uIHBhcmFtZXRlcnMgZm9y IG1pZGRsZQ0KPiBzZW5zaXRpdml0eSBvciBsZWQgaW1hZ2UNCj4gPiArICogQHBhcmFtX2w6IHBv aW50ZXIgdG8gZGVmZWN0IHBpeGVsIGNvcnJlY3Rpb24gcGFyYW1ldGVycyBmb3IgbG93IHNlbnNp dGl2aXR5DQo+IGltYWdlDQo+ID4gKyAqIFJldHVybjogMCBvcGVyYXRpb24gY29tcGxldGVkIHN1 Y2Nlc3NmdWxseQ0KPiA+ICsgKiBSZXR1cm46IC1FSU5WQUwgUGFyYW1ldGVyIGVycm9yDQo+ID4g KyAqIC0gInBhcmFtX2giLCAicGFyYW1fbSIgYW5kICJwYXJhbV9sIiBhcmUgTlVMTA0KPiA+ICsg KiAtIGVhY2ggbWVtYmVyIG9mICJwYXJhbV9oIiBpcyBpbnZhbGlkDQo+ID4gKyAqIC0gZWFjaCBt ZW1iZXIgb2YgInBhcmFtX20iIGlzIGludmFsaWQNCj4gPiArICogLSBlYWNoIG1lbWJlciBvZiAi cGFyYW1fbCIgaXMgaW52YWxpZA0KPiA+ICsgKi8NCj4gPiArczMyIGh3ZF92aWlmX2wxX3NldF9k cGMoc3RydWN0IGh3ZF92aWlmX3JlcyAqcmVzLCBjb25zdCBzdHJ1Y3QgdmlpZl9sMV9kcGMNCj4g KnBhcmFtX2gsDQo+ID4gKwkJCWNvbnN0IHN0cnVjdCB2aWlmX2wxX2RwYyAqcGFyYW1fbSwgY29u c3Qgc3RydWN0DQo+IHZpaWZfbDFfZHBjICpwYXJhbV9sKQ0KPiA+ICt7DQo+ID4gKwljb25zdCBz dHJ1Y3QgdmlpZl9sMV9kcGMgKnBhcmFtOw0KPiA+ICsJdTMyIGlkeDsNCj4gPiArCXUzMiB2YWw7 DQo+ID4gKw0KPiA+ICsJaWYgKCFwYXJhbV9oICYmICFwYXJhbV9tICYmICFwYXJhbV9sKQ0KPiA+ ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWZvciAoaWR4ID0gMFU7IGlkeCA8IDNV OyBpZHgrKykgew0KPiA+ICsJCWlmIChpZHggPT0gMFUpDQo+ID4gKwkJCXBhcmFtID0gcGFyYW1f aDsNCj4gPiArCQllbHNlIGlmIChpZHggPT0gMVUpDQo+ID4gKwkJCXBhcmFtID0gcGFyYW1fbTsN Cj4gPiArCQllbHNlDQo+ID4gKwkJCXBhcmFtID0gcGFyYW1fbDsNCj4gPiArDQo+ID4gKwkJaWYg KCFwYXJhbSkNCj4gPiArCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCWlmICgocGFyYW0tPmFi cGNfc3RhX2VuICE9IEhXRF9WSUlGX0VOQUJMRSAmJg0KPiA+ICsJCSAgICAgcGFyYW0tPmFicGNf c3RhX2VuICE9IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkJICAgIChwYXJhbS0+YWJwY19k eW5fZW4gIT0gSFdEX1ZJSUZfRU5BQkxFICYmDQo+ID4gKwkJICAgICBwYXJhbS0+YWJwY19keW5f ZW4gIT0gSFdEX1ZJSUZfRElTQUJMRSkpIHsNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4g KwkJfQ0KPiA+ICsNCj4gPiArCQlpZiAocGFyYW0tPmFicGNfZHluX2VuICE9IEhXRF9WSUlGX0VO QUJMRSkNCj4gPiArCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCWlmICgocGFyYW0tPmFicGNf ZHluX21vZGUgIT0gSFdEX1ZJSUZfTDFfRFBDXzFQSVhFTA0KPiAmJg0KPiA+ICsJCSAgICAgcGFy YW0tPmFicGNfZHluX21vZGUgIT0NCj4gSFdEX1ZJSUZfTDFfRFBDXzJQSVhFTCkgfHwNCj4gPiAr CQkgICAgcGFyYW0tPmFicGNfcmF0aW9fbGltaXQgPg0KPiBIV0RfVklJRl9MMV9EUENfTUFYX1JB VElPX0xJTUlUX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YWJwY19kYXJrX2xpbWl0ID4NCj4g SFdEX1ZJSUZfTDFfRFBDX01BWF9SQVRJT19MSU1JVF9WQUwgfHwNCj4gPiArCQkgICAgcGFyYW0t PmFicGNfc25fY29lZl93X2FnX21pbiA8DQo+IEhXRF9WSUlGX0wxX0RQQ19NSU5fTFVNQV9BREpf VkFMIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hYnBjX3NuX2NvZWZfd19hZ19taW4gPg0KPiBIV0Rf VklJRl9MMV9EUENfTUFYX0xVTUFfQURKX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YWJwY19z bl9jb2VmX3dfYWdfbWlkIDwNCj4gSFdEX1ZJSUZfTDFfRFBDX01JTl9MVU1BX0FESl9WQUwgfHwN Cj4gPiArCQkgICAgcGFyYW0tPmFicGNfc25fY29lZl93X2FnX21pZCA+DQo+IEhXRF9WSUlGX0wx X0RQQ19NQVhfTFVNQV9BREpfVkFMIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hYnBjX3NuX2NvZWZf d19hZ19tYXggPA0KPiBIV0RfVklJRl9MMV9EUENfTUlOX0xVTUFfQURKX1ZBTCB8fA0KPiA+ICsJ CSAgICBwYXJhbS0+YWJwY19zbl9jb2VmX3dfYWdfbWF4ID4NCj4gSFdEX1ZJSUZfTDFfRFBDX01B WF9MVU1BX0FESl9WQUwgfHwNCj4gPiArCQkgICAgcGFyYW0tPmFicGNfc25fY29lZl9iX2FnX21p biA8DQo+IEhXRF9WSUlGX0wxX0RQQ19NSU5fTFVNQV9BREpfVkFMIHx8DQo+ID4gKwkJICAgIHBh cmFtLT5hYnBjX3NuX2NvZWZfYl9hZ19taW4gPg0KPiBIV0RfVklJRl9MMV9EUENfTUFYX0xVTUFf QURKX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YWJwY19zbl9jb2VmX2JfYWdfbWlkIDwNCj4g SFdEX1ZJSUZfTDFfRFBDX01JTl9MVU1BX0FESl9WQUwgfHwNCj4gPiArCQkgICAgcGFyYW0tPmFi cGNfc25fY29lZl9iX2FnX21pZCA+DQo+IEhXRF9WSUlGX0wxX0RQQ19NQVhfTFVNQV9BREpfVkFM IHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hYnBjX3NuX2NvZWZfYl9hZ19tYXggPA0KPiBIV0RfVklJ Rl9MMV9EUENfTUlOX0xVTUFfQURKX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YWJwY19zbl9j b2VmX2JfYWdfbWF4ID4NCj4gSFdEX1ZJSUZfTDFfRFBDX01BWF9MVU1BX0FESl9WQUwgfHwNCj4g PiArCQkgICAgcGFyYW0tPmFicGNfc25fY29lZl93X3RoX21pbiA+PQ0KPiBwYXJhbS0+YWJwY19z bl9jb2VmX3dfdGhfbWF4IHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hYnBjX3NuX2NvZWZfYl90aF9t aW4gPj0NCj4gcGFyYW0tPmFicGNfc25fY29lZl9iX3RoX21heCkgew0KPiA+ICsJCQlyZXR1cm4g LUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdmFsID0gMDsNCj4gPiAr CWlmIChwYXJhbV9oKQ0KPiA+ICsJCXZhbCB8PSBwYXJhbV9oLT5hYnBjX3N0YV9lbiA8PCAyNFU7 DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtX20pDQo+ID4gKwkJdmFsIHw9IHBhcmFtX20tPmFicGNf c3RhX2VuIDw8IDE2VTsNCj4gPiArDQo+ID4gKwlpZiAocGFyYW1fbCkNCj4gPiArCQl2YWwgfD0g cGFyYW1fbC0+YWJwY19zdGFfZW4gPDwgOFU7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKHZhbCwgJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMwMTJfU1RBX0VOKTsNCj4gPiArDQo+ID4gKwl2 YWwgPSAwOw0KPiA+ICsJaWYgKHBhcmFtX2gpDQo+ID4gKwkJdmFsIHw9IHBhcmFtX2gtPmFicGNf ZHluX2VuIDw8IDI0VTsNCj4gPiArDQo+ID4gKwlpZiAocGFyYW1fbSkNCj4gPiArCQl2YWwgfD0g cGFyYW1fbS0+YWJwY19keW5fZW4gPDwgMTZVOw0KPiA+ICsNCj4gPiArCWlmIChwYXJhbV9sKQ0K PiA+ICsJCXZhbCB8PSBwYXJhbV9sLT5hYnBjX2R5bl9lbiA8PCA4VTsNCj4gPiArDQo+ID4gKwl3 cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzAxMl9EWU5fRU4pOw0K PiA+ICsNCj4gPiArCXZhbCA9IDA7DQo+ID4gKwlpZiAocGFyYW1faCkNCj4gPiArCQl2YWwgfD0g cGFyYW1faC0+YWJwY19keW5fbW9kZSA8PCAyNFU7DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtX20p DQo+ID4gKwkJdmFsIHw9IHBhcmFtX20tPmFicGNfZHluX21vZGUgPDwgMTZVOw0KPiA+ICsNCj4g PiArCWlmIChwYXJhbV9sKQ0KPiA+ICsJCXZhbCB8PSBwYXJhbV9sLT5hYnBjX2R5bl9tb2RlIDw8 IDhVOw0KPiA+ICsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9BQlBDMDEyX0RZTl9NT0RFKTsNCj4gPiArDQo+ID4gKwlpZiAocGFyYW1faCkgew0KPiA+ICsJ CXdyaXRlbChwYXJhbV9oLT5hYnBjX3JhdGlvX2xpbWl0LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfQUJQQzBfUkFUSU9fTElNSVQpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9oLT5hYnBj X2RhcmtfbGltaXQsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BQlBDMF9EQVJLX0xJ TUlUKTsNCj4gPiArCQl3cml0ZWwocGFyYW1faC0+YWJwY19zbl9jb2VmX3dfYWdfbWluLA0KPiA+ ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMwX1NOX0NPRUZfV19BR19NSU4p Ow0KPiA+ICsJCXdyaXRlbChwYXJhbV9oLT5hYnBjX3NuX2NvZWZfd19hZ19taWQsDQo+ID4gKw0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzBfU05fQ09FRl9XX0FHX01JRCk7DQo+ ID4gKwkJd3JpdGVsKHBhcmFtX2gtPmFicGNfc25fY29lZl93X2FnX21heCwNCj4gPiArDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BQlBDMF9TTl9DT0VGX1dfQUdfTUFYKTsNCj4gPiAr CQl3cml0ZWwocGFyYW1faC0+YWJwY19zbl9jb2VmX2JfYWdfbWluLA0KPiA+ICsNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMwX1NOX0NPRUZfQl9BR19NSU4pOw0KPiA+ICsJCXdy aXRlbChwYXJhbV9oLT5hYnBjX3NuX2NvZWZfYl9hZ19taWQsDQo+ID4gKw0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzBfU05fQ09FRl9CX0FHX01JRCk7DQo+ID4gKwkJd3JpdGVs KHBhcmFtX2gtPmFicGNfc25fY29lZl9iX2FnX21heCwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9BQlBDMF9TTl9DT0VGX0JfQUdfTUFYKTsNCj4gPiArCQl3cml0ZWwoKHUz MilwYXJhbV9oLT5hYnBjX3NuX2NvZWZfd190aF9taW4sDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfQUJQQzBfU05fQ09FRl9XX1RIX01JTik7DQo+ID4gKwkJd3JpdGVsKCh1 MzIpcGFyYW1faC0+YWJwY19zbl9jb2VmX3dfdGhfbWF4LA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVy ZV9yZWctPmwxaXNwLkwxX0FCUEMwX1NOX0NPRUZfV19USF9NQVgpOw0KPiA+ICsJCXdyaXRlbCgo dTMyKXBhcmFtX2gtPmFicGNfc25fY29lZl9iX3RoX21pbiwNCj4gPiArDQo+ICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9BQlBDMF9TTl9DT0VGX0JfVEhfTUlOKTsNCj4gPiArCQl3cml0ZWwo KHUzMilwYXJhbV9oLT5hYnBjX3NuX2NvZWZfYl90aF9tYXgsDQo+ID4gKw0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzBfU05fQ09FRl9CX1RIX01BWCk7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJaWYgKHBhcmFtX20pIHsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+YWJwY19yYXRp b19saW1pdCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMxX1JBVElPX0xJTUlU KTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+YWJwY19kYXJrX2xpbWl0LA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzFfREFSS19MSU1JVCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFt X20tPmFicGNfc25fY29lZl93X2FnX21pbiwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5s MWlzcC5MMV9BQlBDMV9TTl9DT0VGX1dfQUdfTUlOKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+ YWJwY19zbl9jb2VmX3dfYWdfbWlkLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0FCUEMxX1NOX0NPRUZfV19BR19NSUQpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5hYnBj X3NuX2NvZWZfd19hZ19tYXgsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf QUJQQzFfU05fQ09FRl9XX0FHX01BWCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX20tPmFicGNfc25f Y29lZl9iX2FnX21pbiwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BQlBD MV9TTl9DT0VGX0JfQUdfTUlOKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+YWJwY19zbl9jb2Vm X2JfYWdfbWlkLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMxX1NO X0NPRUZfQl9BR19NSUQpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5hYnBjX3NuX2NvZWZfYl9h Z19tYXgsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzFfU05fQ09F Rl9CX0FHX01BWCk7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW1fbS0+YWJwY19zbl9jb2VmX3df dGhfbWluLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMxX1NOX0NP RUZfV19USF9NSU4pOw0KPiA+ICsJCXdyaXRlbCgodTMyKXBhcmFtX20tPmFicGNfc25fY29lZl93 X3RoX21heCwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BQlBDMV9TTl9D T0VGX1dfVEhfTUFYKTsNCj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbV9tLT5hYnBjX3NuX2NvZWZf Yl90aF9taW4sDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzFfU05f Q09FRl9CX1RIX01JTik7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW1fbS0+YWJwY19zbl9jb2Vm X2JfdGhfbWF4LA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMxX1NO X0NPRUZfQl9USF9NQVgpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChwYXJhbV9sKSB7DQo+ ID4gKwkJd3JpdGVsKHBhcmFtX2wtPmFicGNfcmF0aW9fbGltaXQsDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9BQlBDMl9SQVRJT19MSU1JVCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2wt PmFicGNfZGFya19saW1pdCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMyX0RB UktfTElNSVQpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9sLT5hYnBjX3NuX2NvZWZfd19hZ19taW4s DQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzJfU05fQ09FRl9XX0FH X01JTik7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2wtPmFicGNfc25fY29lZl93X2FnX21pZCwNCj4g PiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BQlBDMl9TTl9DT0VGX1dfQUdfTUlE KTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+YWJwY19zbl9jb2VmX3dfYWdfbWF4LA0KPiA+ICsN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMyX1NOX0NPRUZfV19BR19NQVgpOw0K PiA+ICsJCXdyaXRlbChwYXJhbV9sLT5hYnBjX3NuX2NvZWZfYl9hZ19taW4sDQo+ID4gKw0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzJfU05fQ09FRl9CX0FHX01JTik7DQo+ID4g KwkJd3JpdGVsKHBhcmFtX2wtPmFicGNfc25fY29lZl9iX2FnX21pZCwNCj4gPiArDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BQlBDMl9TTl9DT0VGX0JfQUdfTUlEKTsNCj4gPiArCQl3 cml0ZWwocGFyYW1fbC0+YWJwY19zbl9jb2VmX2JfYWdfbWF4LA0KPiA+ICsNCj4gJnJlcy0+Y2Fw dHVyZV9yZWctPmwxaXNwLkwxX0FCUEMyX1NOX0NPRUZfQl9BR19NQVgpOw0KPiA+ICsJCXdyaXRl bCgodTMyKXBhcmFtX2wtPmFicGNfc25fY29lZl93X3RoX21pbiwNCj4gPiArDQo+ICZyZXMtPmNh cHR1cmVfcmVnLT5sMWlzcC5MMV9BQlBDMl9TTl9DT0VGX1dfVEhfTUlOKTsNCj4gPiArCQl3cml0 ZWwoKHUzMilwYXJhbV9sLT5hYnBjX3NuX2NvZWZfd190aF9tYXgsDQo+ID4gKw0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfQUJQQzJfU05fQ09FRl9XX1RIX01BWCk7DQo+ID4gKwkJd3Jp dGVsKCh1MzIpcGFyYW1fbC0+YWJwY19zbl9jb2VmX2JfdGhfbWluLA0KPiA+ICsNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FCUEMyX1NOX0NPRUZfQl9USF9NSU4pOw0KPiA+ICsJCXdy aXRlbCgodTMyKXBhcmFtX2wtPmFicGNfc25fY29lZl9iX3RoX21heCwNCj4gPiArDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BQlBDMl9TTl9DT0VGX0JfVEhfTUFYKTsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAq IGh3ZF92aWlmX2wxX3NldF9kcGNfdGFibGVfdHJhbnNtaXNzaW9uKCkgLQ0KPiA+ICsgKiAgQ29u ZmlndXJlIEwxSVNQIHRyYW5zZmVycmluZyBkZWZlY3QgcGl4ZWwgY29ycmVjdGlvbiB0YWJsZS4N Cj4gPiArICoNCj4gPiArICogQHRhYmxlX2g6IGRlZmVjdCBwaXhlbCBjb3JyZWN0aW9uIHRhYmxl IGZvciBoaWdoIHNlbnNpdGl2aXR5IGltYWdlKHBoeXNpY2FsDQo+IGFkZHJlc3MpDQo+ID4gKyAq IEB0YWJsZV9tOiBkZWZlY3QgcGl4ZWwgY29ycmVjdGlvbiB0YWJsZSBmb3IgbWlkZGxlIHNlbnNp dGl2aXR5IG9yIGxlZA0KPiBpbWFnZShwaHlzaWNhbCBhZGRyZXNzKQ0KPiA+ICsgKiBAdGFibGVf bDogZGVmZWN0IHBpeGVsIGNvcnJlY3Rpb24gdGFibGUgZm9yIGxvdyBzZW5zaXRpdml0eSBpbWFn ZShwaHlzaWNhbA0KPiBhZGRyZXNzKQ0KPiA+ICsgKiBSZXR1cm46IDAgb3BlcmF0aW9uIGNvbXBs ZXRlZCBzdWNjZXNzZnVsbHkNCj4gPiArICogUmV0dXJuOiAtRUlOVkFMIFBhcmFtZXRlciBlcnJv cg0KPiA+ICsgKiAtICJ0YWJsZV9oIiwgInRhYmxlX20iIG9yICJ0YWJsZV9sIiBpcyBub3QgOGJ5 dGUgYWxpZ25tZW50DQo+ID4gKyAqDQo+ID4gKyAqIE5vdGUgdGhhdCB3aGVuIDAgaXMgc2V0IHRv IHRhYmxlIGFkZHJlc3MsIHRhYmxlIHRyYW5zZmVyIG9mIHRoZSB0YWJsZSBpcw0KPiBkaXNhYmxl ZC4NCj4gPiArICovDQo+ID4gK3MzMiBod2RfdmlpZl9sMV9zZXRfZHBjX3RhYmxlX3RyYW5zbWlz c2lvbihzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpyZXMsDQo+IHVpbnRwdHJfdCB0YWJsZV9oLA0KPiA+ ICsJCQkJCSAgIHVpbnRwdHJfdCB0YWJsZV9tLCB1aW50cHRyX3QNCj4gdGFibGVfbCkNCj4gPiAr ew0KPiA+ICsJdTMyIHZhbCA9IDB4MFU7DQo+ID4gKw0KPiA+ICsJaWYgKCgodGFibGVfaCAlIEhX RF9WSUlGX0wxX1ZETV9BTElHTikgIT0gMFUpIHx8DQo+ID4gKwkgICAgKCh0YWJsZV9tICUgSFdE X1ZJSUZfTDFfVkRNX0FMSUdOKSAhPSAwVSkgfHwNCj4gPiArCSAgICAoKHRhYmxlX2wgJSBIV0Rf VklJRl9MMV9WRE1fQUxJR04pICE9IDBVKSkgew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFZETSBjb21tb24gc2V0dGluZ3MgKi8NCj4gPiArDQo+ID4g Kwl3cml0ZWwoSFdEX1ZJSUZfTDFfVkRNX0NGR19QQVJBTSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWct PnZkbS50X2dyb3VwWzBdLlZETV9UX0NGRyk7DQo+ID4gKwl3cml0ZWwoSFdEX1ZJSUZfTDFfVkRN X1NSQU1fQkFTRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPnZkbS50X2dyb3VwWzBdLlZETV9UX1NS QU1fQkFTRSk7DQo+ID4gKwl3cml0ZWwoSFdEX1ZJSUZfTDFfVkRNX1NSQU1fU0laRSwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPnZkbS50X2dyb3VwWzBdLlZETV9UX1NSQU1fU0laRSk7DQo+ID4gKw0K PiA+ICsJaWYgKHRhYmxlX2ggIT0gMFUpIHsNCj4gPiArCQl3cml0ZWwoKHUzMil0YWJsZV9oLA0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+dmRtLnRfcG9ydFswXS5WRE1fVF9TVEFEUik7DQo+ID4gKwkJ d3JpdGVsKEhXRF9WSUlGX0wxX1ZETV9EUENfVEFCTEVfU0laRSwNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPnZkbS50X3BvcnRbMF0uVkRNX1RfU0laRSk7DQo+ID4gKwkJdmFsIHw9IDB4MVU7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJaWYgKHRhYmxlX20gIT0gMFUpIHsNCj4gPiArCQl3cml0ZWwoKHUz Mil0YWJsZV9tLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+dmRtLnRfcG9ydFsxXS5WRE1fVF9TVEFE Uik7DQo+ID4gKwkJd3JpdGVsKEhXRF9WSUlGX0wxX1ZETV9EUENfVEFCTEVfU0laRSwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPnZkbS50X3BvcnRbMV0uVkRNX1RfU0laRSk7DQo+ID4gKwkJdmFsIHw9 IDB4MlU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHRhYmxlX2wgIT0gMFUpIHsNCj4gPiAr CQl3cml0ZWwoKHUzMil0YWJsZV9sLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+dmRtLnRfcG9ydFsy XS5WRE1fVF9TVEFEUik7DQo+ID4gKwkJd3JpdGVsKEhXRF9WSUlGX0wxX1ZETV9EUENfVEFCTEVf U0laRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPnZkbS50X3BvcnRbMl0uVkRNX1RfU0laRSk7DQo+ ID4gKwkJdmFsIHw9IDB4NFU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdmFsIHw9IChyZWFkbCgm cmVzLT5jYXB0dXJlX3JlZy0+dmRtLlZETV9UX0VOQUJMRSkgJg0KPiAweGZmZmZmZmY4VSk7DQo+ ID4gKwl3cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+dmRtLlZETV9UX0VOQUJMRSk7DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBo d2RfdmlpZl9sMV9zZXRfcHJlc2V0X3doaXRlX2JhbGFuY2UoKSAtIENvbmZpZ3VyZSBMMUlTUCBw cmVzZXQgd2hpdGUNCj4gYmFsYW5jZSBwYXJhbWV0ZXJzLg0KPiA+ICsgKg0KPiA+ICsgKiBAZHN0 bWF4dmFsOiBtYXhpbXVtIG91dHB1dCBwaXhlbCB2YWx1ZSBbMC4uNDA5NV0NCj4gPiArICogQHBh cmFtX2g6IHBvaW50ZXIgdG8gcHJlc2V0IHdoaXRlIGJhbGFuY2UgcGFyYW1ldGVycyBmb3IgaGln aCBzZW5zaXRpdml0eQ0KPiBpbWFnZQ0KPiA+ICsgKiBAcGFyYW1fbTogcG9pbnRlciB0byBwcmVz ZXQgd2hpdGUgYmFsYW5jZSBwYXJhbWV0ZXJzIGZvciBtaWRkbGUNCj4gc2Vuc2l0aXZpdHkgb3Ig bGVkIGltYWdlDQo+ID4gKyAqIEBwYXJhbV9sOiBwb2ludGVyIHRvIHByZXNldCB3aGl0ZSBiYWxh bmNlIHBhcmFtZXRlcnMgZm9yIGxvdyBzZW5zaXRpdml0eQ0KPiBpbWFnZQ0KPiA+ICsgKiBSZXR1 cm46IDAgb3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkNCj4gPiArICogUmV0dXJuOiAt RUlOVkFMIFBhcmFtZXRlciBlcnJvcg0KPiA+ICsgKiAtICJkc3RtYXh2YWwiIGlzIG91dCBvZiBy YW5nZQ0KPiA+ICsgKiAtICJwYXJhbV9oIiwgInBhcmFtX20iLCBhbmQgInBhcmFtX2wiIGFyZSBO VUxMDQo+ID4gKyAqIC0gZWFjaCBwYXJhbWV0ZXIgb2YgInBhcmFtX2giIGlzIG91dCBvZiByYW5n ZQ0KPiA+ICsgKiAtIGVhY2ggcGFyYW1ldGVyIG9mICJwYXJhbV9tIiBpcyBvdXQgb2YgcmFuZ2UN Cj4gPiArICogLSBlYWNoIHBhcmFtZXRlciBvZiAicGFyYW1fbCIgaXMgb3V0IG9mIHJhbmdlDQo+ ID4gKyAqIE5vdGUgdGhhdCB3aGVuIE5VTEwgaXMgc2V0IHRvICJwYXJhbV97aC9tL2x9IiwgdGhl IGNvcnJlc3BvbmRpbmcNCj4gcGFyYW1ldGVycyBhcmUgbm90IHNldCB0byBIVy4NCj4gPiArICov DQo+ID4gK3MzMiBod2RfdmlpZl9sMV9zZXRfcHJlc2V0X3doaXRlX2JhbGFuY2Uoc3RydWN0IGh3 ZF92aWlmX3JlcyAqcmVzLCB1MzINCj4gZHN0bWF4dmFsLA0KPiA+ICsJCQkJCSBjb25zdCBzdHJ1 Y3QgdmlpZl9sMV9wcmVzZXRfd2INCj4gKnBhcmFtX2gsDQo+ID4gKwkJCQkJIGNvbnN0IHN0cnVj dCB2aWlmX2wxX3ByZXNldF93Yg0KPiAqcGFyYW1fbSwNCj4gPiArCQkJCQkgY29uc3Qgc3RydWN0 IHZpaWZfbDFfcHJlc2V0X3diDQo+ICpwYXJhbV9sKQ0KPiA+ICt7DQo+ID4gKwlpZiAoZHN0bWF4 dmFsID4gSFdEX1ZJSUZfTDFfUFdIQl9NQVhfT1VUX1BJWEVMX1ZBTCB8fA0KPiAoIXBhcmFtX2gg JiYgIXBhcmFtX20gJiYgIXBhcmFtX2wpKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsN Cj4gPiArCWlmIChwYXJhbV9oKSB7DQo+ID4gKwkJaWYgKHBhcmFtX2gtPmdhaW5fZ3IgPj0NCj4g SFdEX1ZJSUZfTDFfUFdIQl9NQVhfR0FJTl9WQUwgfHwNCj4gPiArCQkgICAgcGFyYW1faC0+Z2Fp bl9yID49DQo+IEhXRF9WSUlGX0wxX1BXSEJfTUFYX0dBSU5fVkFMIHx8DQo+ID4gKwkJICAgIHBh cmFtX2gtPmdhaW5fYiA+PQ0KPiBIV0RfVklJRl9MMV9QV0hCX01BWF9HQUlOX1ZBTCB8fA0KPiA+ ICsJCSAgICBwYXJhbV9oLT5nYWluX2diID49DQo+IEhXRF9WSUlGX0wxX1BXSEJfTUFYX0dBSU5f VkFMKSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlpZiAocGFyYW1fbSkgew0KPiA+ICsJCWlmIChwYXJhbV9tLT5nYWluX2dyID49DQo+ IEhXRF9WSUlGX0wxX1BXSEJfTUFYX0dBSU5fVkFMIHx8DQo+ID4gKwkJICAgIHBhcmFtX20tPmdh aW5fciA+PQ0KPiBIV0RfVklJRl9MMV9QV0hCX01BWF9HQUlOX1ZBTCB8fA0KPiA+ICsJCSAgICBw YXJhbV9tLT5nYWluX2IgPj0NCj4gSFdEX1ZJSUZfTDFfUFdIQl9NQVhfR0FJTl9WQUwgfHwNCj4g PiArCQkgICAgcGFyYW1fbS0+Z2Fpbl9nYiA+PQ0KPiBIV0RfVklJRl9MMV9QV0hCX01BWF9HQUlO X1ZBTCkgew0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJaWYgKHBhcmFtX2wpIHsNCj4gPiArCQlpZiAocGFyYW1fbC0+Z2Fpbl9nciA+PQ0K PiBIV0RfVklJRl9MMV9QV0hCX01BWF9HQUlOX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbV9sLT5n YWluX3IgPj0NCj4gSFdEX1ZJSUZfTDFfUFdIQl9NQVhfR0FJTl9WQUwgfHwNCj4gPiArCQkgICAg cGFyYW1fbC0+Z2Fpbl9iID49DQo+IEhXRF9WSUlGX0wxX1BXSEJfTUFYX0dBSU5fVkFMIHx8DQo+ ID4gKwkJICAgIHBhcmFtX2wtPmdhaW5fZ2IgPj0NCj4gSFdEX1ZJSUZfTDFfUFdIQl9NQVhfR0FJ Tl9WQUwpIHsNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCXdyaXRlbChkc3RtYXh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9Q V0hCX0RTVE1BWFZBTCk7DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtX2gpIHsNCj4gPiArCQl3cml0 ZWwocGFyYW1faC0+Z2Fpbl9nciwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1BXSEJf SF9HUik7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2gtPmdhaW5fciwNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPmwxaXNwLkwxX1BXSEJfSFIpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9oLT5nYWluX2IsDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9QV0hCX0hCKTsNCj4gPiArCQl3cml0ZWwocGFy YW1faC0+Z2Fpbl9nYiwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1BXSEJfSF9HQik7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtX20pIHsNCj4gPiArCQl3cml0ZWwocGFy YW1fbS0+Z2Fpbl9nciwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1BXSEJfTV9HUik7 DQo+ID4gKwkJd3JpdGVsKHBhcmFtX20tPmdhaW5fciwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX1BXSEJfTVIpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5nYWluX2IsDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9QV0hCX01CKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+ Z2Fpbl9nYiwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1BXSEJfTV9HQik7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtX2wpIHsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+ Z2Fpbl9nciwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1BXSEJfTF9HUik7DQo+ID4g KwkJd3JpdGVsKHBhcmFtX2wtPmdhaW5fciwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X1BXSEJfTFIpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9sLT5nYWluX2IsDQo+ICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9QV0hCX0xCKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+Z2Fpbl9n YiwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1BXSEJfTF9HQik7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBo d2RfdmlpZl9sMV9zZXRfcmF3X2NvbG9yX25vaXNlX3JlZHVjdGlvbigpIC0NCj4gPiArICogIENv bmZpZ3VyZSBMMUlTUCByYXcgY29sb3Igbm9pc2UgcmVkdWN0aW9uIHBhcmFtZXRlcnMuDQo+ID4g KyAqDQo+ID4gKyAqIEBwYXJhbV9oOiBwb2ludGVyIHRvIHJhdyBjb2xvciBub2lzZSByZWR1Y3Rp b24gcGFyYW1ldGVycyBmb3IgaGlnaA0KPiBzZW5zaXRpdml0eSBpbWFnZQ0KPiA+ICsgKiBAcGFy YW1fbTogcG9pbnRlciB0byByYXcgY29sb3Igbm9pc2UgcmVkdWN0aW9uIHBhcmFtZXRlcnMgZm9y IG1pZGRsZQ0KPiBzZW5zaXRpdml0eSBvciBsZWQgaW1hZ2UNCj4gPiArICogQHBhcmFtX2w6IHBv aW50ZXIgdG8gcmF3IGNvbG9yIG5vaXNlIHJlZHVjdGlvbiBwYXJhbWV0ZXJzIGZvciBsb3cNCj4g c2Vuc2l0aXZpdHkgaW1hZ2UNCj4gPiArICogUmV0dXJuOiAwIG9wZXJhdGlvbiBjb21wbGV0ZWQg c3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZBTCBQYXJhbWV0ZXIgZXJyb3INCj4g PiArICogLSAicGFyYW1faCIsICJwYXJhbV9tIiwgYW5kICJwYXJhbV9sIiBhcmUgTlVMTA0KPiA+ ICsgKiAtIGVhY2ggcGFyYW1ldGVyIG9mICJwYXJhbV9oIiBpcyBvdXQgb2YgcmFuZ2UNCj4gPiAr ICogLSBlYWNoIHBhcmFtZXRlciBvZiAicGFyYW1fbSIgaXMgb3V0IG9mIHJhbmdlDQo+ID4gKyAq IC0gZWFjaCBwYXJhbWV0ZXIgb2YgInBhcmFtX2wiIGlzIG91dCBvZiByYW5nZQ0KPiA+ICsgKiBO b3RlIHRoYXQgd2hlbiBOVUxMIGlzIHNldCB0byAicGFyYW1fe2gvbS9sfSIsIHRoZSBjb3JyZXNw b25kaW5nDQo+IHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQgdG8gSFcuDQo+ID4gKyAqLw0KPiA+ICtz MzIgaHdkX3ZpaWZfbDFfc2V0X3Jhd19jb2xvcl9ub2lzZV9yZWR1Y3Rpb24oDQo+ID4gKwlzdHJ1 Y3QgaHdkX3ZpaWZfcmVzICpyZXMsIGNvbnN0IHN0cnVjdCB2aWlmX2wxX3Jhd19jb2xvcl9ub2lz ZV9yZWR1Y3Rpb24NCj4gKnBhcmFtX2gsDQo+ID4gKwljb25zdCBzdHJ1Y3QgdmlpZl9sMV9yYXdf Y29sb3Jfbm9pc2VfcmVkdWN0aW9uICpwYXJhbV9tLA0KPiA+ICsJY29uc3Qgc3RydWN0IHZpaWZf bDFfcmF3X2NvbG9yX25vaXNlX3JlZHVjdGlvbiAqcGFyYW1fbCkNCj4gPiArew0KPiA+ICsJY29u c3Qgc3RydWN0IHZpaWZfbDFfcmF3X2NvbG9yX25vaXNlX3JlZHVjdGlvbiAqcGFyYW07DQo+ID4g Kwl1MzIgaWR4Ow0KPiA+ICsNCj4gPiArCWlmICghcGFyYW1faCAmJiAhcGFyYW1fbSAmJiAhcGFy YW1fbCkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwlmb3IgKGlkeCA9IDA7 IGlkeCA8IDNVOyBpZHgrKykgew0KPiA+ICsJCWlmIChpZHggPT0gMFUpDQo+ID4gKwkJCXBhcmFt ID0gcGFyYW1faDsNCj4gPiArCQllbHNlIGlmIChpZHggPT0gMVUpDQo+ID4gKwkJCXBhcmFtID0g cGFyYW1fbTsNCj4gPiArCQllbHNlDQo+ID4gKwkJCXBhcmFtID0gcGFyYW1fbDsNCj4gPiArDQo+ ID4gKwkJaWYgKCFwYXJhbSkNCj4gPiArCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCWlmIChw YXJhbS0+cmNucl9zdyAhPSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gcGFyYW0tPnJjbnJfc3cgIT0g SFdEX1ZJSUZfRElTQUJMRSkNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJ CWlmIChwYXJhbS0+cmNucl9jbmZfZGFya19hZzAgPg0KPiBIV0RfVklJRl9MMV9SQ05SX01BWF9E QVJLX0FESlVTVE1FTlRfVkFMIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5yY25yX2NuZl9kYXJrX2Fn MSA+DQo+IEhXRF9WSUlGX0wxX1JDTlJfTUFYX0RBUktfQURKVVNUTUVOVF9WQUwgfHwNCj4gPiAr CQkgICAgcGFyYW0tPnJjbnJfY25mX2RhcmtfYWcyID4NCj4gSFdEX1ZJSUZfTDFfUkNOUl9NQVhf REFSS19BREpVU1RNRU5UX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9jbmZfcmF0aW9f YWcwID4NCj4gSFdEX1ZJSUZfTDFfUkNOUl9NQVhfTFVNQV9MSU5LQUdFX0FESlVTVE1FTlRfVkFM IHx8DQo+ID4gKwkJICAgIHBhcmFtLT5yY25yX2NuZl9yYXRpb19hZzEgPg0KPiBIV0RfVklJRl9M MV9SQ05SX01BWF9MVU1BX0xJTktBR0VfQURKVVNUTUVOVF9WQUwgfHwNCj4gPiArCQkgICAgcGFy YW0tPnJjbnJfY25mX3JhdGlvX2FnMiA+DQo+IEhXRF9WSUlGX0wxX1JDTlJfTUFYX0xVTUFfTElO S0FHRV9BREpVU1RNRU5UX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9jbmZfY2xpcF9n YWluX3IgPg0KPiBIV0RfVklJRl9MMV9SQ05SX01BWF9BREpVU1RNRU5UX0dBSU5fVkFMIHx8DQo+ ID4gKwkJICAgIHBhcmFtLT5yY25yX2NuZl9jbGlwX2dhaW5fZyA+DQo+IEhXRF9WSUlGX0wxX1JD TlJfTUFYX0FESlVTVE1FTlRfR0FJTl9WQUwgfHwNCj4gPiArCQkgICAgcGFyYW0tPnJjbnJfY25m X2NsaXBfZ2Fpbl9iID4NCj4gSFdEX1ZJSUZfTDFfUkNOUl9NQVhfQURKVVNUTUVOVF9HQUlOX1ZB TCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9hMWxfZGFya19hZzAgPg0KPiBIV0RfVklJRl9M MV9SQ05SX01BWF9EQVJLX0FESlVTVE1FTlRfVkFMIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5yY25y X2ExbF9kYXJrX2FnMSA+DQo+IEhXRF9WSUlGX0wxX1JDTlJfTUFYX0RBUktfQURKVVNUTUVOVF9W QUwgfHwNCj4gPiArCQkgICAgcGFyYW0tPnJjbnJfYTFsX2RhcmtfYWcyID4NCj4gSFdEX1ZJSUZf TDFfUkNOUl9NQVhfREFSS19BREpVU1RNRU5UX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNu cl9hMWxfcmF0aW9fYWcwID4NCj4gSFdEX1ZJSUZfTDFfUkNOUl9NQVhfTFVNQV9MSU5LQUdFX0FE SlVTVE1FTlRfVkFMIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5yY25yX2ExbF9yYXRpb19hZzEgPg0K PiBIV0RfVklJRl9MMV9SQ05SX01BWF9MVU1BX0xJTktBR0VfQURKVVNUTUVOVF9WQUwgfHwNCj4g PiArCQkgICAgcGFyYW0tPnJjbnJfYTFsX3JhdGlvX2FnMiA+DQo+IEhXRF9WSUlGX0wxX1JDTlJf TUFYX0xVTUFfTElOS0FHRV9BREpVU1RNRU5UX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNu cl9pbmZfemVyb19jbGlwID4NCj4gSFdEX1ZJSUZfTDFfUkNOUl9NQVhfWkVST19DTElQX1ZBTCB8 fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9tZXJnZV9kMmJsZW5kX2FnMCA+DQo+IEhXRF9WSUlG X0wxX1JDTlJfTUFYX0JMRU5EX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9tZXJnZV9k MmJsZW5kX2FnMSA+DQo+IEhXRF9WSUlGX0wxX1JDTlJfTUFYX0JMRU5EX1ZBTCB8fA0KPiA+ICsJ CSAgICBwYXJhbS0+cmNucl9tZXJnZV9kMmJsZW5kX2FnMiA+DQo+IEhXRF9WSUlGX0wxX1JDTlJf TUFYX0JMRU5EX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9tZXJnZV9ibGFjayA+DQo+ IEhXRF9WSUlGX0wxX1JDTlJfTUFYX0JMQUNLX0xFVkVMX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJh bS0+cmNucl9tZXJnZV9taW5kaXYgPA0KPiBIV0RfVklJRl9MMV9SQ05SX01JTl8wRElWX0dVQVJE X1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9tZXJnZV9taW5kaXYgPg0KPiBIV0RfVklJ Rl9MMV9SQ05SX01BWF8wRElWX0dVQVJEX1ZBTCkgew0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCXN3aXRjaCAocGFyYW0tPnJjbnJfaHJ5X3R5cGUpIHsN Cj4gPiArCQljYXNlIEhXRF9WSUlGX0wxX1JDTlJfTE9XX1JFU09MVVRJT046DQo+ID4gKwkJY2Fz ZSBIV0RfVklJRl9MMV9SQ05SX01JRERMRV9SRVNPTFVUSU9OOg0KPiA+ICsJCWNhc2UgSFdEX1ZJ SUZfTDFfUkNOUl9ISUdIX1JFU09MVVRJT046DQo+ID4gKwkJY2FzZSBIV0RfVklJRl9MMV9SQ05S X1VMVFJBX0hJR0hfUkVTT0xVVElPTjoNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJZGVmYXVsdDoN Cj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQlpZiAocGFy YW0tPnJjbnJfYW5mX2JsZW5kX2FnMCAhPQ0KPiBIV0RfVklJRl9MMV9NU0ZfQkxFTkRfUkFUSU9f MF9ESVZfNjQgJiYNCj4gPiArCQkgICAgcGFyYW0tPnJjbnJfYW5mX2JsZW5kX2FnMCAhPQ0KPiBI V0RfVklJRl9MMV9NU0ZfQkxFTkRfUkFUSU9fMV9ESVZfNjQgJiYNCj4gPiArCQkgICAgcGFyYW0t PnJjbnJfYW5mX2JsZW5kX2FnMCAhPQ0KPiBIV0RfVklJRl9MMV9NU0ZfQkxFTkRfUkFUSU9fMl9E SVZfNjQpIHsNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJfQ0KPiA+ICsJCWlmIChw YXJhbS0+cmNucl9hbmZfYmxlbmRfYWcxICE9DQo+IEhXRF9WSUlGX0wxX01TRl9CTEVORF9SQVRJ T18wX0RJVl82NCAmJg0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9hbmZfYmxlbmRfYWcxICE9DQo+ IEhXRF9WSUlGX0wxX01TRl9CTEVORF9SQVRJT18xX0RJVl82NCAmJg0KPiA+ICsJCSAgICBwYXJh bS0+cmNucl9hbmZfYmxlbmRfYWcxICE9DQo+IEhXRF9WSUlGX0wxX01TRl9CTEVORF9SQVRJT18y X0RJVl82NCkgew0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKwkJaWYg KHBhcmFtLT5yY25yX2FuZl9ibGVuZF9hZzIgIT0NCj4gSFdEX1ZJSUZfTDFfTVNGX0JMRU5EX1JB VElPXzBfRElWXzY0ICYmDQo+ID4gKwkJICAgIHBhcmFtLT5yY25yX2FuZl9ibGVuZF9hZzIgIT0N Cj4gSFdEX1ZJSUZfTDFfTVNGX0JMRU5EX1JBVElPXzFfRElWXzY0ICYmDQo+ID4gKwkJICAgIHBh cmFtLT5yY25yX2FuZl9ibGVuZF9hZzIgIT0NCj4gSFdEX1ZJSUZfTDFfTVNGX0JMRU5EX1JBVElP XzJfRElWXzY0KSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArDQo+ ID4gKwkJaWYgKHBhcmFtLT5yY25yX2xwZl90aHJlc2hvbGQgPj0NCj4gSFdEX1ZJSUZfTDFfUkNO Ul9NQVhfQ0FMQ19NU0ZfTk9JU0VfTVVMVElfVkFMIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5yY25y X21lcmdlX2hsYmxlbmRfYWcwID4NCj4gSFdEX1ZJSUZfTDFfUkNOUl9NQVhfR0VOX0xVTUFfU0lH X0JMRU5EX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+cmNucl9tZXJnZV9obGJsZW5kX2FnMSA+ DQo+IEhXRF9WSUlGX0wxX1JDTlJfTUFYX0dFTl9MVU1BX1NJR19CTEVORF9WQUwgfHwNCj4gPiAr CQkgICAgcGFyYW0tPnJjbnJfbWVyZ2VfaGxibGVuZF9hZzIgPg0KPiBIV0RfVklJRl9MMV9SQ05S X01BWF9HRU5fTFVNQV9TSUdfQkxFTkRfVkFMIHx8DQo+ID4gKwkJICAgIChwYXJhbS0+cmNucl9n bnJfc3cgIT0gSFdEX1ZJSUZfRElTQUJMRSAmJg0KPiA+ICsJCSAgICAgcGFyYW0tPnJjbnJfZ25y X3N3ICE9IEhXRF9WSUlGX0VOQUJMRSkpIHsNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4g KwkJfQ0KPiA+ICsNCj4gPiArCQlpZiAocGFyYW0tPnJjbnJfZ25yX3N3ID09IEhXRF9WSUlGX0VO QUJMRSkgew0KPiA+ICsJCQlpZiAocGFyYW0tPnJjbnJfZ25yX3JhdGlvID4NCj4gSFdEX1ZJSUZf TDFfUkNOUl9NQVhfVVBfTElNSVRfR1JHQl9TRU5TX1JBVElPKQ0KPiA+ICsJCQkJcmV0dXJuIC1F SU5WQUw7DQo+ID4gKwkJCWlmIChwYXJhbS0+cmNucl9nbnJfd2lkZV9lbiAhPSBIV0RfVklJRl9E SVNBQkxFDQo+ICYmDQo+ID4gKwkJCSAgICBwYXJhbS0+cmNucl9nbnJfd2lkZV9lbiAhPQ0KPiBI V0RfVklJRl9FTkFCTEUpIHsNCj4gPiArCQkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCQl9DQo+ ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChwYXJhbV9oKSB7DQo+ID4gKwkJd3Jp dGVsKHBhcmFtX2gtPnJjbnJfc3csDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05S MF9TVyk7DQo+ID4gKw0KPiA+ICsJCXdyaXRlbChwYXJhbV9oLT5yY25yX2NuZl9kYXJrX2FnMCwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIwX0NORl9EQVJLX0FHMCk7DQo+ID4g KwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfY25mX2RhcmtfYWcxLA0KPiAmcmVzLT5jYXB0dXJlX3Jl Zy0+bDFpc3AuTDFfUkNOUjBfQ05GX0RBUktfQUcxKTsNCj4gPiArCQl3cml0ZWwocGFyYW1faC0+ cmNucl9jbmZfZGFya19hZzIsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMF9D TkZfREFSS19BRzIpOw0KPiA+ICsNCj4gPiArCQl3cml0ZWwocGFyYW1faC0+cmNucl9jbmZfcmF0 aW9fYWcwLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIwX0NORl9S QVRJT19BRzApOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9oLT5yY25yX2NuZl9yYXRpb19hZzEsDQo+ ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjBfQ05GX1JBVElPX0FHMSk7 DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfY25mX3JhdGlvX2FnMiwNCj4gPiArDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMF9DTkZfUkFUSU9fQUcyKTsNCj4gPiArDQo+ ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfY25mX2NsaXBfZ2Fpbl9yLA0KPiA+ICsNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIwX0NORl9DTElQX0dBSU5fUik7DQo+ID4gKwkJ d3JpdGVsKHBhcmFtX2gtPnJjbnJfY25mX2NsaXBfZ2Fpbl9nLA0KPiA+ICsNCj4gJnJlcy0+Y2Fw dHVyZV9yZWctPmwxaXNwLkwxX1JDTlIwX0NORl9DTElQX0dBSU5fRyk7DQo+ID4gKwkJd3JpdGVs KHBhcmFtX2gtPnJjbnJfY25mX2NsaXBfZ2Fpbl9iLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPmwxaXNwLkwxX1JDTlIwX0NORl9DTElQX0dBSU5fQik7DQo+ID4gKw0KPiA+ICsJCXdyaXRl bChwYXJhbV9oLT5yY25yX2ExbF9kYXJrX2FnMCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX1JDTlIwX0ExTF9EQVJLX0FHMCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfYTFs X2RhcmtfYWcxLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjBfQTFMX0RBUktf QUcxKTsNCj4gPiArCQl3cml0ZWwocGFyYW1faC0+cmNucl9hMWxfZGFya19hZzIsDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMF9BMUxfREFSS19BRzIpOw0KPiA+ICsNCj4gPiAr CQl3cml0ZWwocGFyYW1faC0+cmNucl9hMWxfcmF0aW9fYWcwLA0KPiA+ICsNCj4gJnJlcy0+Y2Fw dHVyZV9yZWctPmwxaXNwLkwxX1JDTlIwX0ExTF9SQVRJT19BRzApOw0KPiA+ICsJCXdyaXRlbChw YXJhbV9oLT5yY25yX2ExbF9yYXRpb19hZzEsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfUkNOUjBfQTFMX1JBVElPX0FHMSk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJj bnJfYTFsX3JhdGlvX2FnMiwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9S Q05SMF9BMUxfUkFUSU9fQUcyKTsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJf aW5mX3plcm9fY2xpcCwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05S MF9JTkZfWkVST19DTElQKTsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfbWVy Z2VfZDJibGVuZF9hZzAsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNO UjBfTUVSR0VfRDJCTEVORF9BRzApOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9oLT5yY25yX21lcmdl X2QyYmxlbmRfYWcxLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIw X01FUkdFX0QyQkxFTkRfQUcxKTsNCj4gPiArCQl3cml0ZWwocGFyYW1faC0+cmNucl9tZXJnZV9k MmJsZW5kX2FnMiwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMF9N RVJHRV9EMkJMRU5EX0FHMik7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfbWVyZ2VfYmxh Y2ssDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMF9NRVJHRV9CTEFDSyk7DQo+ ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfbWVyZ2VfbWluZGl2LA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfUkNOUjBfTUVSR0VfTUlORElWKTsNCj4gPiArDQo+ID4gKwkJd3JpdGVs KHBhcmFtX2gtPnJjbnJfaHJ5X3R5cGUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9S Q05SMF9IUllfVFlQRSk7DQo+ID4gKw0KPiA+ICsJCXdyaXRlbChwYXJhbV9oLT5yY25yX2FuZl9i bGVuZF9hZzAsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjBfQU5G X0JMRU5EX0FHMCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfYW5mX2JsZW5kX2FnMSwN Cj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMF9BTkZfQkxFTkRfQUcx KTsNCj4gPiArCQl3cml0ZWwocGFyYW1faC0+cmNucl9hbmZfYmxlbmRfYWcyLA0KPiA+ICsNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIwX0FORl9CTEVORF9BRzIpOw0KPiA+ICsN Cj4gPiArCQl3cml0ZWwocGFyYW1faC0+cmNucl9scGZfdGhyZXNob2xkLA0KPiA+ICsNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIwX0xQRl9USFJFU0hPTEQpOw0KPiA+ICsNCj4g PiArCQl3cml0ZWwocGFyYW1faC0+cmNucl9tZXJnZV9obGJsZW5kX2FnMCwNCj4gPiArDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMF9NRVJHRV9ITEJMRU5EX0FHMCk7DQo+ID4g KwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfbWVyZ2VfaGxibGVuZF9hZzEsDQo+ID4gKw0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjBfTUVSR0VfSExCTEVORF9BRzEpOw0KPiA+ICsJ CXdyaXRlbChwYXJhbV9oLT5yY25yX21lcmdlX2hsYmxlbmRfYWcyLA0KPiA+ICsNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIwX01FUkdFX0hMQkxFTkRfQUcyKTsNCj4gPiArDQo+ ID4gKwkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfZ25yX3N3LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfUkNOUjBfR05SX1NXKTsNCj4gPiArDQo+ID4gKwkJaWYgKHBhcmFtX2gtPnJjbnJf Z25yX3N3ID09IEhXRF9WSUlGX0VOQUJMRSkgew0KPiA+ICsJCQl3cml0ZWwocGFyYW1faC0+cmNu cl9nbnJfcmF0aW8sDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjBf R05SX1JBVElPKTsNCj4gPiArCQkJd3JpdGVsKHBhcmFtX2gtPnJjbnJfZ25yX3dpZGVfZW4sDQo+ ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjBfR05SX1dJREVfRU4pOw0K PiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAocGFyYW1fbSkgew0KPiA+ICsJCXdy aXRlbChwYXJhbV9tLT5yY25yX3N3LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNO UjFfU1cpOw0KPiA+ICsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+cmNucl9jbmZfZGFya19hZzAs DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMV9DTkZfREFSS19BRzApOw0KPiA+ ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX2NuZl9kYXJrX2FnMSwNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPmwxaXNwLkwxX1JDTlIxX0NORl9EQVJLX0FHMSk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX20t PnJjbnJfY25mX2RhcmtfYWcyLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjFf Q05GX0RBUktfQUcyKTsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKHBhcmFtX20tPnJjbnJfY25mX3Jh dGlvX2FnMCwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMV9DTkZf UkFUSU9fQUcwKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+cmNucl9jbmZfcmF0aW9fYWcxLA0K PiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIxX0NORl9SQVRJT19BRzEp Ow0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX2NuZl9yYXRpb19hZzIsDQo+ID4gKw0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjFfQ05GX1JBVElPX0FHMik7DQo+ID4gKw0K PiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX2NuZl9jbGlwX2dhaW5fciwNCj4gPiArDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMV9DTkZfQ0xJUF9HQUlOX1IpOw0KPiA+ICsJ CXdyaXRlbChwYXJhbV9tLT5yY25yX2NuZl9jbGlwX2dhaW5fZywNCj4gPiArDQo+ICZyZXMtPmNh cHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMV9DTkZfQ0xJUF9HQUlOX0cpOw0KPiA+ICsJCXdyaXRl bChwYXJhbV9tLT5yY25yX2NuZl9jbGlwX2dhaW5fYiwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9SQ05SMV9DTkZfQ0xJUF9HQUlOX0IpOw0KPiA+ICsNCj4gPiArCQl3cml0 ZWwocGFyYW1fbS0+cmNucl9hMWxfZGFya19hZzAsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9SQ05SMV9BMUxfREFSS19BRzApOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX2Ex bF9kYXJrX2FnMSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIxX0ExTF9EQVJL X0FHMSk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX20tPnJjbnJfYTFsX2RhcmtfYWcyLA0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjFfQTFMX0RBUktfQUcyKTsNCj4gPiArDQo+ID4g KwkJd3JpdGVsKHBhcmFtX20tPnJjbnJfYTFsX3JhdGlvX2FnMCwNCj4gPiArDQo+ICZyZXMtPmNh cHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMV9BMUxfUkFUSU9fQUcwKTsNCj4gPiArCQl3cml0ZWwo cGFyYW1fbS0+cmNucl9hMWxfcmF0aW9fYWcxLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWct PmwxaXNwLkwxX1JDTlIxX0ExTF9SQVRJT19BRzEpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5y Y25yX2ExbF9yYXRpb19hZzIsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf UkNOUjFfQTFMX1JBVElPX0FHMik7DQo+ID4gKw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25y X2luZl96ZXJvX2NsaXAsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNO UjFfSU5GX1pFUk9fQ0xJUCk7DQo+ID4gKw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX21l cmdlX2QyYmxlbmRfYWcwLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JD TlIxX01FUkdFX0QyQkxFTkRfQUcwKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+cmNucl9tZXJn ZV9kMmJsZW5kX2FnMSwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05S MV9NRVJHRV9EMkJMRU5EX0FHMSk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX20tPnJjbnJfbWVyZ2Vf ZDJibGVuZF9hZzIsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjFf TUVSR0VfRDJCTEVORF9BRzIpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX21lcmdlX2Js YWNrLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjFfTUVSR0VfQkxBQ0spOw0K PiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX21lcmdlX21pbmRpdiwNCj4gJnJlcy0+Y2FwdHVy ZV9yZWctPmwxaXNwLkwxX1JDTlIxX01FUkdFX01JTkRJVik7DQo+ID4gKw0KPiA+ICsJCXdyaXRl bChwYXJhbV9tLT5yY25yX2hyeV90eXBlLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf UkNOUjFfSFJZX1RZUEUpOw0KPiA+ICsNCj4gPiArCQl3cml0ZWwocGFyYW1fbS0+cmNucl9hbmZf YmxlbmRfYWcwLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIxX0FO Rl9CTEVORF9BRzApOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX2FuZl9ibGVuZF9hZzEs DQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjFfQU5GX0JMRU5EX0FH MSk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX20tPnJjbnJfYW5mX2JsZW5kX2FnMiwNCj4gPiArDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMV9BTkZfQkxFTkRfQUcyKTsNCj4gPiAr DQo+ID4gKwkJd3JpdGVsKHBhcmFtX20tPnJjbnJfbHBmX3RocmVzaG9sZCwNCj4gPiArDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMV9MUEZfVEhSRVNIT0xEKTsNCj4gPiArDQo+ ID4gKwkJd3JpdGVsKHBhcmFtX20tPnJjbnJfbWVyZ2VfaGxibGVuZF9hZzAsDQo+ID4gKw0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjFfTUVSR0VfSExCTEVORF9BRzApOw0KPiA+ ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX21lcmdlX2hsYmxlbmRfYWcxLA0KPiA+ICsNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIxX01FUkdFX0hMQkxFTkRfQUcxKTsNCj4gPiAr CQl3cml0ZWwocGFyYW1fbS0+cmNucl9tZXJnZV9obGJsZW5kX2FnMiwNCj4gPiArDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMV9NRVJHRV9ITEJMRU5EX0FHMik7DQo+ID4gKw0K PiA+ICsJCXdyaXRlbChwYXJhbV9tLT5yY25yX2ducl9zdywNCj4gJnJlcy0+Y2FwdHVyZV9yZWct PmwxaXNwLkwxX1JDTlIxX0dOUl9TVyk7DQo+ID4gKw0KPiA+ICsJCWlmIChwYXJhbV9tLT5yY25y X2ducl9zdyA9PSBIV0RfVklJRl9FTkFCTEUpIHsNCj4gPiArCQkJd3JpdGVsKHBhcmFtX20tPnJj bnJfZ25yX3JhdGlvLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIx X0dOUl9SQVRJTyk7DQo+ID4gKwkJCXdyaXRlbChwYXJhbV9tLT5yY25yX2ducl93aWRlX2VuLA0K PiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIxX0dOUl9XSURFX0VOKTsN Cj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtX2wpIHsNCj4gPiArCQl3 cml0ZWwocGFyYW1fbC0+cmNucl9zdywNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JD TlIyX1NXKTsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKHBhcmFtX2wtPnJjbnJfY25mX2RhcmtfYWcw LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjJfQ05GX0RBUktfQUcwKTsNCj4g PiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9jbmZfZGFya19hZzEsDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9SQ05SMl9DTkZfREFSS19BRzEpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9s LT5yY25yX2NuZl9kYXJrX2FnMiwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIy X0NORl9EQVJLX0FHMik7DQo+ID4gKw0KPiA+ICsJCXdyaXRlbChwYXJhbV9sLT5yY25yX2NuZl9y YXRpb19hZzAsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjJfQ05G X1JBVElPX0FHMCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2wtPnJjbnJfY25mX3JhdGlvX2FnMSwN Cj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMl9DTkZfUkFUSU9fQUcx KTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9jbmZfcmF0aW9fYWcyLA0KPiA+ICsNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIyX0NORl9SQVRJT19BRzIpOw0KPiA+ICsN Cj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9jbmZfY2xpcF9nYWluX3IsDQo+ID4gKw0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjJfQ05GX0NMSVBfR0FJTl9SKTsNCj4gPiAr CQl3cml0ZWwocGFyYW1fbC0+cmNucl9jbmZfY2xpcF9nYWluX2csDQo+ID4gKw0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjJfQ05GX0NMSVBfR0FJTl9HKTsNCj4gPiArCQl3cml0 ZWwocGFyYW1fbC0+cmNucl9jbmZfY2xpcF9nYWluX2IsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfUkNOUjJfQ05GX0NMSVBfR0FJTl9CKTsNCj4gPiArDQo+ID4gKwkJd3Jp dGVsKHBhcmFtX2wtPnJjbnJfYTFsX2RhcmtfYWcwLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfUkNOUjJfQTFMX0RBUktfQUcwKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9h MWxfZGFya19hZzEsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMl9BMUxfREFS S19BRzEpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9sLT5yY25yX2ExbF9kYXJrX2FnMiwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIyX0ExTF9EQVJLX0FHMik7DQo+ID4gKw0KPiA+ ICsJCXdyaXRlbChwYXJhbV9sLT5yY25yX2ExbF9yYXRpb19hZzAsDQo+ID4gKw0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjJfQTFMX1JBVElPX0FHMCk7DQo+ID4gKwkJd3JpdGVs KHBhcmFtX2wtPnJjbnJfYTFsX3JhdGlvX2FnMSwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9SQ05SMl9BMUxfUkFUSU9fQUcxKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+ cmNucl9hMWxfcmF0aW9fYWcyLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X1JDTlIyX0ExTF9SQVRJT19BRzIpOw0KPiA+ICsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNu cl9pbmZfemVyb19jbGlwLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JD TlIyX0lORl9aRVJPX0NMSVApOw0KPiA+ICsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9t ZXJnZV9kMmJsZW5kX2FnMCwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9S Q05SMl9NRVJHRV9EMkJMRU5EX0FHMCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtX2wtPnJjbnJfbWVy Z2VfZDJibGVuZF9hZzEsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNO UjJfTUVSR0VfRDJCTEVORF9BRzEpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9sLT5yY25yX21lcmdl X2QyYmxlbmRfYWcyLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIy X01FUkdFX0QyQkxFTkRfQUcyKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9tZXJnZV9i bGFjaywNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIyX01FUkdFX0JMQUNLKTsN Cj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9tZXJnZV9taW5kaXYsDQo+ICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9SQ05SMl9NRVJHRV9NSU5ESVYpOw0KPiA+ICsNCj4gPiArCQl3cml0 ZWwocGFyYW1fbC0+cmNucl9ocnlfdHlwZSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X1JDTlIyX0hSWV9UWVBFKTsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKHBhcmFtX2wtPnJjbnJfYW5m X2JsZW5kX2FnMCwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMl9B TkZfQkxFTkRfQUcwKTsNCj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9hbmZfYmxlbmRfYWcx LA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIyX0FORl9CTEVORF9B RzEpOw0KPiA+ICsJCXdyaXRlbChwYXJhbV9sLT5yY25yX2FuZl9ibGVuZF9hZzIsDQo+ID4gKw0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjJfQU5GX0JMRU5EX0FHMik7DQo+ID4g Kw0KPiA+ICsJCXdyaXRlbChwYXJhbV9sLT5yY25yX2xwZl90aHJlc2hvbGQsDQo+ID4gKw0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjJfTFBGX1RIUkVTSE9MRCk7DQo+ID4gKw0K PiA+ICsJCXdyaXRlbChwYXJhbV9sLT5yY25yX21lcmdlX2hsYmxlbmRfYWcwLA0KPiA+ICsNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1JDTlIyX01FUkdFX0hMQkxFTkRfQUcwKTsNCj4g PiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9tZXJnZV9obGJsZW5kX2FnMSwNCj4gPiArDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMl9NRVJHRV9ITEJMRU5EX0FHMSk7DQo+ID4g KwkJd3JpdGVsKHBhcmFtX2wtPnJjbnJfbWVyZ2VfaGxibGVuZF9hZzIsDQo+ID4gKw0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfUkNOUjJfTUVSR0VfSExCTEVORF9BRzIpOw0KPiA+ICsN Cj4gPiArCQl3cml0ZWwocGFyYW1fbC0+cmNucl9nbnJfc3csDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9SQ05SMl9HTlJfU1cpOw0KPiA+ICsNCj4gPiArCQlpZiAocGFyYW1fbC0+cmNu cl9nbnJfc3cgPT0gSFdEX1ZJSUZfRU5BQkxFKSB7DQo+ID4gKwkJCXdyaXRlbChwYXJhbV9sLT5y Y25yX2ducl9yYXRpbywNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05S Ml9HTlJfUkFUSU8pOw0KPiA+ICsJCQl3cml0ZWwocGFyYW1fbC0+cmNucl9nbnJfd2lkZV9lbiwN Cj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9SQ05SMl9HTlJfV0lERV9FTik7 DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDFfc2V0X2hkcnMoKSAtIENvbmZpZ3VyZSBM MUlTUCBIRFIgc3ludGhlc2lzIHBhcmFtZXRlcnMuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbTog cG9pbnRlciB0byBIRFIgc3ludGhlc2lzIHBhcmFtZXRlcnMNCj4gPiArICogUmV0dXJuOiAwIG9w ZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZBTCBQ YXJhbWV0ZXIgZXJyb3INCj4gPiArICogLSAicGFyYW0iIGlzIE5VTEwNCj4gPiArICogLSBlYWNo IHBhcmFtZXRlciBvZiAicGFyYW0iIGlzIG91dCBvZiByYW5nZQ0KPiA+ICsgKi8NCj4gPiArczMy IGh3ZF92aWlmX2wxX3NldF9oZHJzKHN0cnVjdCBod2RfdmlpZl9yZXMgKnJlcywgY29uc3Qgc3Ry dWN0DQo+IHZpaWZfbDFfaGRyc19jb25maWcgKnBhcmFtKQ0KPiA+ICt7DQo+ID4gKwlpZiAoIXBh cmFtIHx8DQo+ID4gKwkgICAgKHBhcmFtLT5oZHJzX2hkcl9tb2RlICE9DQo+IEhXRF9WSUlGX0wx X0hEUlNfTk9UX1VTRV9NSURETEVfU0VOU19JTUFHRSAmJg0KPiA+ICsJICAgICBwYXJhbS0+aGRy c19oZHJfbW9kZSAhPQ0KPiBIV0RfVklJRl9MMV9IRFJTX1VTRV9NSURETEVfU0VOU19JTUFHRSkg fHwNCj4gPiArCSAgICBwYXJhbS0+aGRyc19oZHJfcmF0aW9fbSA8DQo+IEhXRF9WSUlGX0wxX0hE UlNfTUlOX0JMRU5EX1JBVElPIHx8DQo+ID4gKwkgICAgcGFyYW0tPmhkcnNfaGRyX3JhdGlvX20g Pg0KPiBIV0RfVklJRl9MMV9IRFJTX01BWF9CTEVORF9SQVRJTyB8fA0KPiA+ICsJICAgIHBhcmFt LT5oZHJzX2hkcl9yYXRpb19sIDwNCj4gSFdEX1ZJSUZfTDFfSERSU19NSU5fQkxFTkRfUkFUSU8g fHwNCj4gPiArCSAgICBwYXJhbS0+aGRyc19oZHJfcmF0aW9fbCA+DQo+IEhXRF9WSUlGX0wxX0hE UlNfTUFYX0JMRU5EX1JBVElPIHx8DQo+ID4gKwkgICAgcGFyYW0tPmhkcnNfaGRyX3JhdGlvX2Ug PA0KPiBIV0RfVklJRl9MMV9IRFJTX01JTl9CTEVORF9SQVRJTyB8fA0KPiA+ICsJICAgIHBhcmFt LT5oZHJzX2hkcl9yYXRpb19lID4NCj4gSFdEX1ZJSUZfTDFfSERSU19NQVhfQkxFTkRfUkFUSU8g fHwNCj4gPiArCSAgICBwYXJhbS0+aGRyc19kZ19oID49DQo+IEhXRF9WSUlGX0wxX0hEUlNfTUFY X0RJR0lUQUxfR0FJTl9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+aGRyc19kZ19tID49DQo+IEhX RF9WSUlGX0wxX0hEUlNfTUFYX0RJR0lUQUxfR0FJTl9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+ aGRyc19kZ19sID49DQo+IEhXRF9WSUlGX0wxX0hEUlNfTUFYX0RJR0lUQUxfR0FJTl9WQUwgfHwN Cj4gPiArCSAgICBwYXJhbS0+aGRyc19kZ19lID49DQo+IEhXRF9WSUlGX0wxX0hEUlNfTUFYX0RJ R0lUQUxfR0FJTl9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+aGRyc19ibGVuZGVuZF9oID4NCj4g SFdEX1ZJSUZfTDFfSERSU19NQVhfQkxFTkRfUElYX1ZBTCB8fA0KPiA+ICsJICAgIHBhcmFtLT5o ZHJzX2JsZW5kZW5kX20gPg0KPiBIV0RfVklJRl9MMV9IRFJTX01BWF9CTEVORF9QSVhfVkFMIHx8 DQo+ID4gKwkgICAgcGFyYW0tPmhkcnNfYmxlbmRlbmRfZSA+DQo+IEhXRF9WSUlGX0wxX0hEUlNf TUFYX0JMRU5EX1BJWF9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+aGRyc19ibGVuZGJlZ19oID4N Cj4gSFdEX1ZJSUZfTDFfSERSU19NQVhfQkxFTkRfUElYX1ZBTCB8fA0KPiA+ICsJICAgIHBhcmFt LT5oZHJzX2JsZW5kYmVnX20gPg0KPiBIV0RfVklJRl9MMV9IRFJTX01BWF9CTEVORF9QSVhfVkFM IHx8DQo+ID4gKwkgICAgcGFyYW0tPmhkcnNfYmxlbmRiZWdfZSA+DQo+IEhXRF9WSUlGX0wxX0hE UlNfTUFYX0JMRU5EX1BJWF9WQUwgfHwNCj4gPiArCSAgICAocGFyYW0tPmhkcnNfbGVkX21vZGVf b24gIT0gSFdEX1ZJSUZfRU5BQkxFICYmDQo+ID4gKwkgICAgIHBhcmFtLT5oZHJzX2xlZF9tb2Rl X29uICE9IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkgICAgcGFyYW0tPmhkcnNfZHN0X21h eF92YWwgPg0KPiBIV0RfVklJRl9MMV9IRFJTX01BWF9EU1RfTUFYX1ZBTCkgew0KPiA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyc19o ZHJfbW9kZSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUlNfSERSTU9ERSk7DQo+ ID4gKw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJzX2hkcl9yYXRpb19tLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfSERSU19IRFJSQVRJT19NKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+ aGRyc19oZHJfcmF0aW9fbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUlNfSERS UkFUSU9fTCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcnNfaGRyX3JhdGlvX2UsDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJTX0hEUlJBVElPX0UpOw0KPiA+ICsNCj4gPiArCXdy aXRlbChwYXJhbS0+aGRyc19kZ19oLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERS U19ER19IKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyc19kZ19tLA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfSERSU19ER19NKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyc19kZ19s LCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSU19ER19MKTsNCj4gPiArCXdyaXRlbChw YXJhbS0+aGRyc19kZ19lLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSU19ER19FKTsN Cj4gPiArDQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcnNfYmxlbmRlbmRfaCwNCj4gJnJlcy0+Y2Fw dHVyZV9yZWctPmwxaXNwLkwxX0hEUlNfQkxFTkRFTkRfSCk7DQo+ID4gKwl3cml0ZWwocGFyYW0t PmhkcnNfYmxlbmRlbmRfbSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUlNfQkxF TkRFTkRfTSk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcnNfYmxlbmRlbmRfZSwNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUlNfQkxFTkRFTkRfRSk7DQo+ID4gKw0KPiA+ICsJd3Jp dGVsKHBhcmFtLT5oZHJzX2JsZW5kYmVnX2gsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9IRFJTX0JMRU5EQkVHX0gpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJzX2JsZW5kYmVnX20s DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJTX0JMRU5EQkVHX00pOw0KPiA+ICsJ d3JpdGVsKHBhcmFtLT5oZHJzX2JsZW5kYmVnX2UsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9IRFJTX0JMRU5EQkVHX0UpOw0KPiA+ICsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyc19s ZWRfbW9kZV9vbiwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUlNfTEVETU9ERV9P Tik7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcnNfZHN0X21heF92YWwsDQo+ICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9IRFJTX0RTVE1BWFZBTCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBod2RfdmlpZl9sMV9zZXRfYmxhY2tf bGV2ZWxfY29ycmVjdGlvbigpIC0gQ29uZmlndXJlIEwxSVNQIGJsYWNrIGxldmVsDQo+IGNvcnJl Y3Rpb24gcGFyYW1ldGVycy4NCj4gPiArICoNCj4gPiArICogQHBhcmFtOiBwb2ludGVyIHRvIGJs YWNrIGxldmVsIGNvcnJlY3Rpb24gcGFyYW1ldGVycw0KPiA+ICsgKiBSZXR1cm46IDAgb3BlcmF0 aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkNCj4gPiArICogUmV0dXJuOiAtRUlOVkFMIFBhcmFt ZXRlciBlcnJvcg0KPiA+ICsgKiAtICJwYXJhbSIgaXMgTlVMTA0KPiA+ICsgKiAtIGVhY2ggcGFy YW1ldGVyIG9mICJwYXJhbSIgaXMgb3V0IG9mIHJhbmdlDQo+ID4gKyAqLw0KPiA+ICtzMzIgaHdk X3ZpaWZfbDFfc2V0X2JsYWNrX2xldmVsX2NvcnJlY3Rpb24oDQo+ID4gKwlzdHJ1Y3QgaHdkX3Zp aWZfcmVzICpyZXMsIGNvbnN0IHN0cnVjdA0KPiB2aWlmX2wxX2JsYWNrX2xldmVsX2NvcnJlY3Rp b25fY29uZmlnICpwYXJhbSkNCj4gPiArew0KPiA+ICsJaWYgKCFwYXJhbSB8fCBwYXJhbS0+c3Jj YmxhY2tsZXZlbF9nciA+DQo+IEhXRF9WSUlGX0wxX0JMQUNLX0xFVkVMX01BWF9WQUwgfHwNCj4g PiArCSAgICBwYXJhbS0+c3JjYmxhY2tsZXZlbF9yID4NCj4gSFdEX1ZJSUZfTDFfQkxBQ0tfTEVW RUxfTUFYX1ZBTCB8fA0KPiA+ICsJICAgIHBhcmFtLT5zcmNibGFja2xldmVsX2IgPg0KPiBIV0Rf VklJRl9MMV9CTEFDS19MRVZFTF9NQVhfVkFMIHx8DQo+ID4gKwkgICAgcGFyYW0tPnNyY2JsYWNr bGV2ZWxfZ2IgPg0KPiBIV0RfVklJRl9MMV9CTEFDS19MRVZFTF9NQVhfVkFMIHx8DQo+ID4gKwkg ICAgcGFyYW0tPm11bHZhbF9nciA+PQ0KPiBIV0RfVklJRl9MMV9CTEFDS19MRVZFTF9NQVhfR0FJ Tl9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+bXVsdmFsX3IgPj0NCj4gSFdEX1ZJSUZfTDFfQkxB Q0tfTEVWRUxfTUFYX0dBSU5fVkFMIHx8DQo+ID4gKwkgICAgcGFyYW0tPm11bHZhbF9iID49DQo+ IEhXRF9WSUlGX0wxX0JMQUNLX0xFVkVMX01BWF9HQUlOX1ZBTCB8fA0KPiA+ICsJICAgIHBhcmFt LT5tdWx2YWxfZ2IgPj0NCj4gSFdEX1ZJSUZfTDFfQkxBQ0tfTEVWRUxfTUFYX0dBSU5fVkFMIHx8 DQo+ID4gKwkgICAgcGFyYW0tPmRzdG1heHZhbCA+DQo+IEhXRF9WSUlGX0wxX0JMQUNLX0xFVkVM X01BWF9EU1RfVkFMKSB7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0K PiA+ICsJd3JpdGVsKHBhcmFtLT5zcmNibGFja2xldmVsX2dyLA0KPiAmcmVzLT5jYXB0dXJlX3Jl Zy0+bDFpc3AuTDFfQkxWQ19TUkNCTEFDS0xFVkVMX0dSKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+ c3JjYmxhY2tsZXZlbF9yLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQkxWQ19TUkNC TEFDS0xFVkVMX1IpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5zcmNibGFja2xldmVsX2IsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9CTFZDX1NSQ0JMQUNLTEVWRUxfQik7DQo+ID4gKwl3 cml0ZWwocGFyYW0tPnNyY2JsYWNrbGV2ZWxfZ2IsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9CTFZDX1NSQ0JMQUNLTEVWRUxHQik7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5t dWx2YWxfZ3IsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9CTFZDX01VTFRWQUxfR1Ip Ow0KPiA+ICsJd3JpdGVsKHBhcmFtLT5tdWx2YWxfciwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0JMVkNfTVVMVFZBTF9SKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+bXVsdmFsX2IsDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9CTFZDX01VTFRWQUxfQik7DQo+ID4gKwl3cml0 ZWwocGFyYW0tPm11bHZhbF9nYiwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0JMVkNf TVVMVFZBTF9HQik7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5kc3RtYXh2YWwsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9CTFZDX0RTVE1BWFZBTCk7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBod2RfdmlpZl9sMV9z ZXRfbHNjKCkgLSBDb25maWd1cmUgTDFJU1AgbGVucyBzaGFkaW5nIGNvcnJlY3Rpb24NCj4gcGFy YW1ldGVycy4NCj4gPiArICoNCj4gPiArICogQHBhcmFtOiBwb2ludGVyIHRvIGxlbnMgc2hhZGlu ZyBjb3JyZWN0aW9uIHBhcmFtZXRlcnMNCj4gPiArICogUmV0dXJuOiAwIG9wZXJhdGlvbiBjb21w bGV0ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZBTCBQYXJhbWV0ZXIgZXJy b3INCj4gPiArICogLSBlYWNoIHBhcmFtZXRlciBvZiAicGFyYW0iIGlzIG91dCBvZiByYW5nZQ0K PiA+ICsgKiBAbm90ZSB3aGVuIE5VTEwgaXMgc2V0IHRvICJwYXJhbSINCj4gPiArICovDQo+ID4g K3MzMiBod2RfdmlpZl9sMV9zZXRfbHNjKHN0cnVjdCBod2RfdmlpZl9yZXMgKnJlcywgY29uc3Qg c3RydWN0IGh3ZF92aWlmX2wxX2xzYw0KPiAqcGFyYW0pDQo+ID4gK3sNCj4gPiArCXUzMiBzeXNt X3dpZHRoLCBzeXNtX2hlaWdodDsNCj4gPiArCXUzMiBncmlkX2hfc2l6ZSA9IDBVOw0KPiA+ICsJ dTMyIGdyaWRfdl9zaXplID0gMFU7DQo+ID4gKwlzMzIgcmV0ID0gMDsNCj4gPiArCXUzMiBpZHg7 DQo+ID4gKwl1MzIgdmFsOw0KPiA+ICsJdTMyIHRtcDsNCj4gPiArDQo+ID4gKwlpZiAoIXBhcmFt KSB7DQo+ID4gKwkJd3JpdGVsKEhXRF9WSUlGX0RJU0FCTEUsDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9MU1NDX0VOKTsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwlzeXNtX3dpZHRoID0gcmVhZGwoJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1NZU01f V0lEVEgpOw0KPiA+ICsJc3lzbV9oZWlnaHQgPSByZWFkbCgmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfU1lTTV9IRUlHSFQpOw0KPiA+ICsNCj4gPiArCWlmIChwYXJhbS0+bHNzY19wYXJhYm9s YV9wYXJhbSkgew0KPiA+ICsJCWlmIChwYXJhbS0+bHNzY19wYXJhYm9sYV9wYXJhbS0+bHNzY19w YXJhX2hfY2VudGVyID49DQo+IHN5c21fd2lkdGggfHwNCj4gPiArCQkgICAgcGFyYW0tPmxzc2Nf cGFyYWJvbGFfcGFyYW0tPmxzc2NfcGFyYV92X2NlbnRlciA+PQ0KPiBzeXNtX2hlaWdodCB8fA0K PiA+ICsJCSAgICBwYXJhbS0+bHNzY19wYXJhYm9sYV9wYXJhbS0+bHNzY19wYXJhX2hfZ2FpbiA+ PQ0KPiBIV0RfVklJRl9MU0NfTUFYX0dBSU4gfHwNCj4gPiArCQkgICAgcGFyYW0tPmxzc2NfcGFy YWJvbGFfcGFyYW0tPmxzc2NfcGFyYV92X2dhaW4gPj0NCj4gSFdEX1ZJSUZfTFNDX01BWF9HQUlO KSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJc3dp dGNoIChwYXJhbS0+bHNzY19wYXJhYm9sYV9wYXJhbS0+bHNzY19wYXJhX21nc2VsMikgew0KPiA+ ICsJCWNhc2UgSFdEX1ZJSUZfTDFfUEFSQV9DT0VGX0dBSU5fT05FX0VJR0hUSDoNCj4gPiArCQlj YXNlIEhXRF9WSUlGX0wxX1BBUkFfQ09FRl9HQUlOX09ORV9GT1VSVEg6DQo+ID4gKwkJY2FzZSBI V0RfVklJRl9MMV9QQVJBX0NPRUZfR0FJTl9PTkVfU0VDT05EOg0KPiA+ICsJCWNhc2UgSFdEX1ZJ SUZfTDFfUEFSQV9DT0VGX0dBSU5fT05FX0ZJUlNUOg0KPiA+ICsJCQlicmVhazsNCj4gPiArCQlk ZWZhdWx0Og0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJ CXN3aXRjaCAocGFyYW0tPmxzc2NfcGFyYWJvbGFfcGFyYW0tPmxzc2NfcGFyYV9tZ3NlbDQpIHsN Cj4gPiArCQljYXNlIEhXRF9WSUlGX0wxX1BBUkFfQ09FRl9HQUlOX09ORV9FSUdIVEg6DQo+ID4g KwkJY2FzZSBIV0RfVklJRl9MMV9QQVJBX0NPRUZfR0FJTl9PTkVfRk9VUlRIOg0KPiA+ICsJCWNh c2UgSFdEX1ZJSUZfTDFfUEFSQV9DT0VGX0dBSU5fT05FX1NFQ09ORDoNCj4gPiArCQljYXNlIEhX RF9WSUlGX0wxX1BBUkFfQ09FRl9HQUlOX09ORV9GSVJTVDoNCj4gPiArCQkJYnJlYWs7DQo+ID4g KwkJZGVmYXVsdDoNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJfQ0KPiA+ICsNCj4g PiArCQlmb3IgKGlkeCA9IDBVOyBpZHggPCA4VTsgaWR4KyspIHsNCj4gPiArCQkJY29uc3Qgc3Ry dWN0IHZpaWZfbDFfbHNjX3BhcmFib2xhX2FnX3BhcmFtDQo+ICphZ19wYXJhbTsNCj4gPiArDQo+ ID4gKwkJCXN3aXRjaCAoaWR4KSB7DQo+ID4gKwkJCWNhc2UgMFU6DQo+ID4gKwkJCQlhZ19wYXJh bSA9DQo+ICZwYXJhbS0+bHNzY19wYXJhYm9sYV9wYXJhbS0+cl8yZDsNCj4gPiArCQkJCWJyZWFr Ow0KPiA+ICsJCQljYXNlIDFVOg0KPiA+ICsJCQkJYWdfcGFyYW0gPQ0KPiAmcGFyYW0tPmxzc2Nf cGFyYWJvbGFfcGFyYW0tPnJfNGQ7DQo+ID4gKwkJCQlicmVhazsNCj4gPiArCQkJY2FzZSAyVToN Cj4gPiArCQkJCWFnX3BhcmFtID0NCj4gJnBhcmFtLT5sc3NjX3BhcmFib2xhX3BhcmFtLT5ncl8y ZDsNCj4gPiArCQkJCWJyZWFrOw0KPiA+ICsJCQljYXNlIDNVOg0KPiA+ICsJCQkJYWdfcGFyYW0g PQ0KPiAmcGFyYW0tPmxzc2NfcGFyYWJvbGFfcGFyYW0tPmdyXzRkOw0KPiA+ICsJCQkJYnJlYWs7 DQo+ID4gKwkJCWNhc2UgNFU6DQo+ID4gKwkJCQlhZ19wYXJhbSA9DQo+ICZwYXJhbS0+bHNzY19w YXJhYm9sYV9wYXJhbS0+Z2JfMmQ7DQo+ID4gKwkJCQlicmVhazsNCj4gPiArCQkJY2FzZSA1VToN Cj4gPiArCQkJCWFnX3BhcmFtID0NCj4gJnBhcmFtLT5sc3NjX3BhcmFib2xhX3BhcmFtLT5nYl80 ZDsNCj4gPiArCQkJCWJyZWFrOw0KPiA+ICsJCQljYXNlIDZVOg0KPiA+ICsJCQkJYWdfcGFyYW0g PQ0KPiAmcGFyYW0tPmxzc2NfcGFyYWJvbGFfcGFyYW0tPmJfMmQ7DQo+ID4gKwkJCQlicmVhazsN Cj4gPiArCQkJZGVmYXVsdDoNCj4gPiArCQkJCWFnX3BhcmFtID0NCj4gJnBhcmFtLT5sc3NjX3Bh cmFib2xhX3BhcmFtLT5iXzRkOw0KPiA+ICsJCQkJYnJlYWs7DQo+ID4gKwkJCX0NCj4gPiArDQo+ ID4gKwkJCWlmICghYWdfcGFyYW0gfHwgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZfaF9sX21heCA8 DQo+IEhXRF9WSUlGX0xTQ19NSU5fR0FJTiB8fA0KPiA+ICsJCQkgICAgYWdfcGFyYW0tPmxzc2Nf cGFyYWNvZWZfaF9sX21heCA+PQ0KPiBIV0RfVklJRl9MU0NfTUFYX0dBSU4gfHwNCj4gPiArCQkJ ICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFjb2VmX2hfbF9taW4gPA0KPiBIV0RfVklJRl9MU0NfTUlO X0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFjb2VmX2hfbF9taW4gPj0N Cj4gSFdEX1ZJSUZfTFNDX01BWF9HQUlOIHx8DQo+ID4gKwkJCSAgICBhZ19wYXJhbS0+bHNzY19w YXJhY29lZl9oX2xfbWluID4NCj4gYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZfaF9sX21heCB8fA0K PiA+ICsJCQkgICAgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZfaF9yX21heCA8DQo+IEhXRF9WSUlG X0xTQ19NSU5fR0FJTiB8fA0KPiA+ICsJCQkgICAgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZfaF9y X21heCA+PQ0KPiBIV0RfVklJRl9MU0NfTUFYX0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFt LT5sc3NjX3BhcmFjb2VmX2hfcl9taW4gPA0KPiBIV0RfVklJRl9MU0NfTUlOX0dBSU4gfHwNCj4g PiArCQkJICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFjb2VmX2hfcl9taW4gPj0NCj4gSFdEX1ZJSUZf TFNDX01BWF9HQUlOIHx8DQo+ID4gKwkJCSAgICBhZ19wYXJhbS0+bHNzY19wYXJhY29lZl9oX3Jf bWluID4NCj4gYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZfaF9yX21heCB8fA0KPiA+ICsJCQkgICAg YWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZfdl91X21heCA8DQo+IEhXRF9WSUlGX0xTQ19NSU5fR0FJ TiB8fA0KPiA+ICsJCQkgICAgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZfdl91X21heCA+PQ0KPiBI V0RfVklJRl9MU0NfTUFYX0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFj b2VmX3ZfdV9taW4gPA0KPiBIV0RfVklJRl9MU0NfTUlOX0dBSU4gfHwNCj4gPiArCQkJICAgIGFn X3BhcmFtLT5sc3NjX3BhcmFjb2VmX3ZfdV9taW4gPj0NCj4gSFdEX1ZJSUZfTFNDX01BWF9HQUlO IHx8DQo+ID4gKwkJCSAgICBhZ19wYXJhbS0+bHNzY19wYXJhY29lZl92X3VfbWluID4NCj4gYWdf cGFyYW0tPmxzc2NfcGFyYWNvZWZfdl91X21heCB8fA0KPiA+ICsJCQkgICAgYWdfcGFyYW0tPmxz c2NfcGFyYWNvZWZfdl9kX21heCA8DQo+IEhXRF9WSUlGX0xTQ19NSU5fR0FJTiB8fA0KPiA+ICsJ CQkgICAgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZfdl9kX21heCA+PQ0KPiBIV0RfVklJRl9MU0Nf TUFYX0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFjb2VmX3ZfZF9taW4g PA0KPiBIV0RfVklJRl9MU0NfTUlOX0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFtLT5sc3Nj X3BhcmFjb2VmX3ZfZF9taW4gPj0NCj4gSFdEX1ZJSUZfTFNDX01BWF9HQUlOIHx8DQo+ID4gKwkJ CSAgICBhZ19wYXJhbS0+bHNzY19wYXJhY29lZl92X2RfbWluID4NCj4gYWdfcGFyYW0tPmxzc2Nf cGFyYWNvZWZfdl9kX21heCB8fA0KPiA+ICsJCQkgICAgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZf aHZfbHVfbWF4IDwNCj4gSFdEX1ZJSUZfTFNDX01JTl9HQUlOIHx8DQo+ID4gKwkJCSAgICBhZ19w YXJhbS0+bHNzY19wYXJhY29lZl9odl9sdV9tYXggPj0NCj4gSFdEX1ZJSUZfTFNDX01BWF9HQUlO IHx8DQo+ID4gKwkJCSAgICBhZ19wYXJhbS0+bHNzY19wYXJhY29lZl9odl9sdV9taW4gPA0KPiBI V0RfVklJRl9MU0NfTUlOX0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFj b2VmX2h2X2x1X21pbiA+PQ0KPiBIV0RfVklJRl9MU0NfTUFYX0dBSU4gfHwNCj4gPiArCQkJICAg IGFnX3BhcmFtLT5sc3NjX3BhcmFjb2VmX2h2X2x1X21pbiA+DQo+IGFnX3BhcmFtLT5sc3NjX3Bh cmFjb2VmX2h2X2x1X21heCB8fA0KPiA+ICsJCQkgICAgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZf aHZfcnVfbWF4IDwNCj4gSFdEX1ZJSUZfTFNDX01JTl9HQUlOIHx8DQo+ID4gKwkJCSAgICBhZ19w YXJhbS0+bHNzY19wYXJhY29lZl9odl9ydV9tYXggPj0NCj4gSFdEX1ZJSUZfTFNDX01BWF9HQUlO IHx8DQo+ID4gKwkJCSAgICBhZ19wYXJhbS0+bHNzY19wYXJhY29lZl9odl9ydV9taW4gPA0KPiBI V0RfVklJRl9MU0NfTUlOX0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFj b2VmX2h2X3J1X21pbiA+PQ0KPiBIV0RfVklJRl9MU0NfTUFYX0dBSU4gfHwNCj4gPiArCQkJICAg IGFnX3BhcmFtLT5sc3NjX3BhcmFjb2VmX2h2X3J1X21pbiA+DQo+IGFnX3BhcmFtLT5sc3NjX3Bh cmFjb2VmX2h2X3J1X21heCB8fA0KPiA+ICsJCQkgICAgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZf aHZfbGRfbWF4IDwNCj4gSFdEX1ZJSUZfTFNDX01JTl9HQUlOIHx8DQo+ID4gKwkJCSAgICBhZ19w YXJhbS0+bHNzY19wYXJhY29lZl9odl9sZF9tYXggPj0NCj4gSFdEX1ZJSUZfTFNDX01BWF9HQUlO IHx8DQo+ID4gKwkJCSAgICBhZ19wYXJhbS0+bHNzY19wYXJhY29lZl9odl9sZF9taW4gPA0KPiBI V0RfVklJRl9MU0NfTUlOX0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFj b2VmX2h2X2xkX21pbiA+PQ0KPiBIV0RfVklJRl9MU0NfTUFYX0dBSU4gfHwNCj4gPiArCQkJICAg IGFnX3BhcmFtLT5sc3NjX3BhcmFjb2VmX2h2X2xkX21pbiA+DQo+IGFnX3BhcmFtLT5sc3NjX3Bh cmFjb2VmX2h2X2xkX21heCB8fA0KPiA+ICsJCQkgICAgYWdfcGFyYW0tPmxzc2NfcGFyYWNvZWZf aHZfcmRfbWF4IDwNCj4gSFdEX1ZJSUZfTFNDX01JTl9HQUlOIHx8DQo+ID4gKwkJCSAgICBhZ19w YXJhbS0+bHNzY19wYXJhY29lZl9odl9yZF9tYXggPj0NCj4gSFdEX1ZJSUZfTFNDX01BWF9HQUlO IHx8DQo+ID4gKwkJCSAgICBhZ19wYXJhbS0+bHNzY19wYXJhY29lZl9odl9yZF9taW4gPA0KPiBI V0RfVklJRl9MU0NfTUlOX0dBSU4gfHwNCj4gPiArCQkJICAgIGFnX3BhcmFtLT5sc3NjX3BhcmFj b2VmX2h2X3JkX21pbiA+PQ0KPiBIV0RfVklJRl9MU0NfTUFYX0dBSU4gfHwNCj4gPiArCQkJICAg IGFnX3BhcmFtLT5sc3NjX3BhcmFjb2VmX2h2X3JkX21pbiA+DQo+IGFnX3BhcmFtLT5sc3NjX3Bh cmFjb2VmX2h2X3JkX21heCkgew0KPiA+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJCX0N Cj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtLT5sc3NjX2dyaWRfcGFy YW0pIHsNCj4gPiArCQlzd2l0Y2ggKHBhcmFtLT5sc3NjX2dyaWRfcGFyYW0tPmxzc2NfZ3JpZF9o X3NpemUpIHsNCj4gPiArCQljYXNlIDMyVToNCj4gPiArCQkJZ3JpZF9oX3NpemUgPSA1VTsNCj4g PiArCQkJYnJlYWs7DQo+ID4gKwkJY2FzZSA2NFU6DQo+ID4gKwkJCWdyaWRfaF9zaXplID0gNlU7 DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWNhc2UgMTI4VToNCj4gPiArCQkJZ3JpZF9oX3NpemUg PSA3VTsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJY2FzZSAyNTZVOg0KPiA+ICsJCQlncmlkX2hf c2l6ZSA9IDhVOw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQljYXNlIDUxMlU6DQo+ID4gKwkJCWdy aWRfaF9zaXplID0gOVU7DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWRlZmF1bHQ6DQo+ID4gKwkJ CXJldCA9IC1FSU5WQUw7DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJ aWYgKHJldCAhPSAwKQ0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCQlzd2l0Y2gg KHBhcmFtLT5sc3NjX2dyaWRfcGFyYW0tPmxzc2NfZ3JpZF92X3NpemUpIHsNCj4gPiArCQljYXNl IDMyVToNCj4gPiArCQkJZ3JpZF92X3NpemUgPSA1VTsNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJ Y2FzZSA2NFU6DQo+ID4gKwkJCWdyaWRfdl9zaXplID0gNlU7DQo+ID4gKwkJCWJyZWFrOw0KPiA+ ICsJCWNhc2UgMTI4VToNCj4gPiArCQkJZ3JpZF92X3NpemUgPSA3VTsNCj4gPiArCQkJYnJlYWs7 DQo+ID4gKwkJY2FzZSAyNTZVOg0KPiA+ICsJCQlncmlkX3Zfc2l6ZSA9IDhVOw0KPiA+ICsJCQli cmVhazsNCj4gPiArCQljYXNlIDUxMlU6DQo+ID4gKwkJCWdyaWRfdl9zaXplID0gOVU7DQo+ID4g KwkJCWJyZWFrOw0KPiA+ICsJCWRlZmF1bHQ6DQo+ID4gKwkJCXJldCA9IC1FSU5WQUw7DQo+ID4g KwkJCWJyZWFrOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJaWYgKHJldCAhPSAwKQ0KPiA+ICsJ CQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCQlpZiAocGFyYW0tPmxzc2NfZ3JpZF9wYXJhbS0+ bHNzY19ncmlkX2hfY2VudGVyIDwNCj4gSFdEX1ZJSUZfTFNDX0dSSURfTUlOX0NPT1JESU5BVEUg fHwNCj4gPiArCQkgICAgcGFyYW0tPmxzc2NfZ3JpZF9wYXJhbS0+bHNzY19ncmlkX2hfY2VudGVy ID4NCj4gPiArCQkJICAgIHBhcmFtLT5sc3NjX2dyaWRfcGFyYW0tPmxzc2NfZ3JpZF9oX3NpemUp IHsNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQlpZiAo c3lzbV93aWR0aCA+DQo+IChwYXJhbS0+bHNzY19ncmlkX3BhcmFtLT5sc3NjX2dyaWRfaF9jZW50 ZXIgKw0KPiA+ICsNCj4gKHBhcmFtLT5sc3NjX2dyaWRfcGFyYW0tPmxzc2NfZ3JpZF9oX3NpemUg KiAzMVUpKSkgew0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ ICsJCWlmIChwYXJhbS0+bHNzY19ncmlkX3BhcmFtLT5sc3NjX2dyaWRfdl9jZW50ZXIgPA0KPiBI V0RfVklJRl9MU0NfR1JJRF9NSU5fQ09PUkRJTkFURSB8fA0KPiA+ICsJCSAgICBwYXJhbS0+bHNz Y19ncmlkX3BhcmFtLT5sc3NjX2dyaWRfdl9jZW50ZXIgPg0KPiA+ICsJCQkgICAgcGFyYW0tPmxz c2NfZ3JpZF9wYXJhbS0+bHNzY19ncmlkX3Zfc2l6ZSkgew0KPiA+ICsJCQlyZXR1cm4gLUVJTlZB TDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWlmIChzeXNtX2hlaWdodCA+DQo+IChwYXJhbS0+ bHNzY19ncmlkX3BhcmFtLT5sc3NjX2dyaWRfdl9jZW50ZXIgKw0KPiA+ICsNCj4gKHBhcmFtLT5s c3NjX2dyaWRfcGFyYW0tPmxzc2NfZ3JpZF92X3NpemUgKiAyM1UpKSkgew0KPiA+ICsJCQlyZXR1 cm4gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCWlmIChwYXJhbS0+bHNzY19ncmlk X3BhcmFtLT5sc3NjX2dyaWRfbWdzZWwgIT0NCj4gSFdEX1ZJSUZfTDFfR1JJRF9DT0VGX0dBSU5f WDEgJiYNCj4gPiArCQkgICAgcGFyYW0tPmxzc2NfZ3JpZF9wYXJhbS0+bHNzY19ncmlkX21nc2Vs ICE9DQo+IEhXRF9WSUlGX0wxX0dSSURfQ09FRl9HQUlOX1gyKSB7DQo+ID4gKwkJCXJldHVybiAt RUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAocGFyYW0tPmxzc2Nf cHdoYl9yX2dhaW5fbWF4ID49DQo+IEhXRF9WSUlGX0xTQ19QV0JfTUFYX0NPRUZfVkFMIHx8DQo+ ID4gKwkgICAgcGFyYW0tPmxzc2NfcHdoYl9yX2dhaW5fbWluID49DQo+IEhXRF9WSUlGX0xTQ19Q V0JfTUFYX0NPRUZfVkFMIHx8DQo+ID4gKwkgICAgcGFyYW0tPmxzc2NfcHdoYl9yX2dhaW5fbWlu ID4gcGFyYW0tPmxzc2NfcHdoYl9yX2dhaW5fbWF4DQo+IHx8DQo+ID4gKwkgICAgcGFyYW0tPmxz c2NfcHdoYl9ncl9nYWluX21heCA+PQ0KPiBIV0RfVklJRl9MU0NfUFdCX01BWF9DT0VGX1ZBTCB8 fA0KPiA+ICsJICAgIHBhcmFtLT5sc3NjX3B3aGJfZ3JfZ2Fpbl9taW4gPj0NCj4gSFdEX1ZJSUZf TFNDX1BXQl9NQVhfQ09FRl9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+bHNzY19wd2hiX2dyX2dh aW5fbWluID4NCj4gcGFyYW0tPmxzc2NfcHdoYl9ncl9nYWluX21heCB8fA0KPiA+ICsJICAgIHBh cmFtLT5sc3NjX3B3aGJfZ2JfZ2Fpbl9tYXggPj0NCj4gSFdEX1ZJSUZfTFNDX1BXQl9NQVhfQ09F Rl9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+bHNzY19wd2hiX2diX2dhaW5fbWluID49DQo+IEhX RF9WSUlGX0xTQ19QV0JfTUFYX0NPRUZfVkFMIHx8DQo+ID4gKwkgICAgcGFyYW0tPmxzc2NfcHdo Yl9nYl9nYWluX21pbiA+DQo+IHBhcmFtLT5sc3NjX3B3aGJfZ2JfZ2Fpbl9tYXggfHwNCj4gPiAr CSAgICBwYXJhbS0+bHNzY19wd2hiX2JfZ2Fpbl9tYXggPj0NCj4gSFdEX1ZJSUZfTFNDX1BXQl9N QVhfQ09FRl9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+bHNzY19wd2hiX2JfZ2Fpbl9taW4gPj0N Cj4gSFdEX1ZJSUZfTFNDX1BXQl9NQVhfQ09FRl9WQUwgfHwNCj4gPiArCSAgICBwYXJhbS0+bHNz Y19wd2hiX2JfZ2Fpbl9taW4gPg0KPiBwYXJhbS0+bHNzY19wd2hiX2JfZ2Fpbl9tYXgpIHsNCj4g PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBwYXJhYm9sYSBz aGFkaW5nICovDQo+ID4gKwlpZiAocGFyYW0tPmxzc2NfcGFyYWJvbGFfcGFyYW0pIHsNCj4gPiAr CQlzdHJ1Y3QgdmlpZl9sMV9sc2NfcGFyYWJvbGFfYWdfcGFyYW0gKnJfMmQ7DQo+ID4gKwkJc3Ry dWN0IHZpaWZfbDFfbHNjX3BhcmFib2xhX2FnX3BhcmFtICpyXzRkOw0KPiA+ICsJCXN0cnVjdCB2 aWlmX2wxX2xzY19wYXJhYm9sYV9hZ19wYXJhbSAqZ3JfMmQ7DQo+ID4gKwkJc3RydWN0IHZpaWZf bDFfbHNjX3BhcmFib2xhX2FnX3BhcmFtICpncl80ZDsNCj4gPiArCQlzdHJ1Y3QgdmlpZl9sMV9s c2NfcGFyYWJvbGFfYWdfcGFyYW0gKmdiXzJkOw0KPiA+ICsJCXN0cnVjdCB2aWlmX2wxX2xzY19w YXJhYm9sYV9hZ19wYXJhbSAqZ2JfNGQ7DQo+ID4gKwkJc3RydWN0IHZpaWZfbDFfbHNjX3BhcmFi b2xhX2FnX3BhcmFtICpiXzJkOw0KPiA+ICsJCXN0cnVjdCB2aWlmX2wxX2xzY19wYXJhYm9sYV9h Z19wYXJhbSAqYl80ZDsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKEhXRF9WSUlGX0VOQUJMRSwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9FTik7DQo+ID4gKw0KPiA+ICsJ CXdyaXRlbChwYXJhbS0+bHNzY19wYXJhYm9sYV9wYXJhbS0+bHNzY19wYXJhX2hfY2VudGVyLA0K PiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9IX0NFTlRFUik7 DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5sc3NjX3BhcmFib2xhX3BhcmFtLT5sc3NjX3BhcmFfdl9j ZW50ZXIsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX1Zf Q0VOVEVSKTsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5sc3NjX3BhcmFib2xhX3BhcmFt LT5sc3NjX3BhcmFfaF9nYWluLA0KPiA+ICsJCSAgICAgICAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfTFNTQ19QQVJBX0hfR0FJTik7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5sc3NjX3BhcmFi b2xhX3BhcmFtLT5sc3NjX3BhcmFfdl9nYWluLA0KPiA+ICsJCSAgICAgICAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX1ZfR0FJTik7DQo+ID4gKw0KPiA+ICsJCXdyaXRlbChw YXJhbS0+bHNzY19wYXJhYm9sYV9wYXJhbS0+bHNzY19wYXJhX21nc2VsMiwNCj4gPiArCQkgICAg ICAgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9NR1NFTDIpOw0KPiA+ICsJ CXdyaXRlbChwYXJhbS0+bHNzY19wYXJhYm9sYV9wYXJhbS0+bHNzY19wYXJhX21nc2VsNCwNCj4g PiArCQkgICAgICAgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9NR1NFTDQp Ow0KPiA+ICsNCj4gPiArCQkvKiBSIDJEICovDQo+ID4gKwkJcl8yZCA9ICZwYXJhbS0+bHNzY19w YXJhYm9sYV9wYXJhbS0+cl8yZDsNCj4gPiArCQl0bXAgPSAodTMyKXJfMmQtPmxzc2NfcGFyYWNv ZWZfaF9sX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMiko cl8yZC0+bHNzY19wYXJhY29lZl9oX2xfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVs KHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9SX0NPRUZfMkRf SF9MKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilyXzJkLT5sc3NjX3BhcmFjb2VmX2hfcl9t YXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKHJfMmQtPmxz c2NfcGFyYWNvZWZfaF9yX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfUl9DT0VGXzJEX0hfUik7DQo+ ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpcl8yZC0+bHNzY19wYXJhY29lZl92X3VfbWF4ICYgMHgx ZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShyXzJkLT5sc3NjX3BhcmFj b2VmX3ZfdV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX1JfQ09FRl8yRF9WX1UpOw0KPiA+ICsNCj4g PiArCQl0bXAgPSAodTMyKXJfMmQtPmxzc2NfcGFyYWNvZWZfdl9kX21heCAmIDB4MWZmZlU7DQo+ ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikocl8yZC0+bHNzY19wYXJhY29lZl92X2Rf bWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9SX0NPRUZfMkRfVl9EKTsNCj4gPiArDQo+ID4gKwkJdG1w ID0gKHUzMilyXzJkLT5sc3NjX3BhcmFjb2VmX2h2X2x1X21heCAmIDB4MWZmZlU7DQo+ID4gKwkJ dmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikocl8yZC0+bHNzY19wYXJhY29lZl9odl9sdV9taW4g Jg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfTFNTQ19QQVJBX1JfQ09FRl8yRF9IVl9MVSk7DQo+ID4gKw0KPiA+ICsJCXRtcCA9 ICh1MzIpcl8yZC0+bHNzY19wYXJhY29lZl9odl9ydV9tYXggJiAweDFmZmZVOw0KPiA+ICsJCXZh bCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKHJfMmQtPmxzc2NfcGFyYWNvZWZfaHZfcnVfbWluICYN Cj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0xTU0NfUEFSQV9SX0NPRUZfMkRfSFZfUlUpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAo dTMyKXJfMmQtPmxzc2NfcGFyYWNvZWZfaHZfbGRfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwg PSAodG1wIDw8IDE2VSkgfCAodTMyKShyXzJkLT5sc3NjX3BhcmFjb2VmX2h2X2xkX21pbiAmDQo+ IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9MU1NDX1BBUkFfUl9DT0VGXzJEX0hWX0xEKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUz MilyXzJkLT5sc3NjX3BhcmFjb2VmX2h2X3JkX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0g KHRtcCA8PCAxNlUpIHwgKHUzMikocl8yZC0+bHNzY19wYXJhY29lZl9odl9yZF9taW4gJg0KPiAw eDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfTFNTQ19QQVJBX1JfQ09FRl8yRF9IVl9SRCk7DQo+ID4gKw0KPiA+ICsJCS8qIFIgNEQgKi8N Cj4gPiArCQlyXzRkID0gJnBhcmFtLT5sc3NjX3BhcmFib2xhX3BhcmFtLT5yXzRkOw0KPiA+ICsJ CXRtcCA9ICh1MzIpcl80ZC0+bHNzY19wYXJhY29lZl9oX2xfbWF4ICYgMHgxZmZmVTsNCj4gPiAr CQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShyXzRkLT5sc3NjX3BhcmFjb2VmX2hfbF9taW4g Jg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfTFNTQ19QQVJBX1JfQ09FRl80RF9IX0wpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAo dTMyKXJfNGQtPmxzc2NfcGFyYWNvZWZfaF9yX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0g KHRtcCA8PCAxNlUpIHwgKHUzMikocl80ZC0+bHNzY19wYXJhY29lZl9oX3JfbWluICYNCj4gMHgx ZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X0xTU0NfUEFSQV9SX0NPRUZfNERfSF9SKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilyXzRk LT5sc3NjX3BhcmFjb2VmX3ZfdV9tYXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwg MTZVKSB8ICh1MzIpKHJfNGQtPmxzc2NfcGFyYWNvZWZfdl91X21pbiAmDQo+IDB4MWZmZlUpOw0K PiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BB UkFfUl9DT0VGXzREX1ZfVSk7DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpcl80ZC0+bHNzY19w YXJhY29lZl92X2RfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAo dTMyKShyXzRkLT5sc3NjX3BhcmFjb2VmX3ZfZF9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3 cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX1JfQ09F Rl80RF9WX0QpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKXJfNGQtPmxzc2NfcGFyYWNvZWZf aHZfbHVfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShy XzRkLT5sc3NjX3BhcmFjb2VmX2h2X2x1X21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRl bCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfUl9DT0VGXzRE X0hWX0xVKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilyXzRkLT5sc3NjX3BhcmFjb2VmX2h2 X3J1X21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikocl80 ZC0+bHNzY19wYXJhY29lZl9odl9ydV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwo dmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX1JfQ09FRl80RF9I Vl9SVSk7DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpcl80ZC0+bHNzY19wYXJhY29lZl9odl9s ZF9tYXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKHJfNGQt Pmxzc2NfcGFyYWNvZWZfaHZfbGRfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZh bCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9SX0NPRUZfNERfSFZf TEQpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKXJfNGQtPmxzc2NfcGFyYWNvZWZfaHZfcmRf bWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShyXzRkLT5s c3NjX3BhcmFjb2VmX2h2X3JkX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWws DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfUl9DT0VGXzREX0hWX1JE KTsNCj4gPiArDQo+ID4gKwkJLyogR1IgMkQgKi8NCj4gPiArCQlncl8yZCA9ICZwYXJhbS0+bHNz Y19wYXJhYm9sYV9wYXJhbS0+Z3JfMmQ7DQo+ID4gKwkJdG1wID0gKHUzMilncl8yZC0+bHNzY19w YXJhY29lZl9oX2xfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAo dTMyKShncl8yZC0+bHNzY19wYXJhY29lZl9oX2xfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJ d3JpdGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HUl9D T0VGXzJEX0hfTCk7DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ3JfMmQtPmxzc2NfcGFyYWNv ZWZfaF9yX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMiko Z3JfMmQtPmxzc2NfcGFyYWNvZWZfaF9yX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRl bCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR1JfQ09FRl8y RF9IX1IpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWdyXzJkLT5sc3NjX3BhcmFjb2VmX3Zf dV9tYXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdyXzJk LT5sc3NjX3BhcmFjb2VmX3ZfdV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFs LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dSX0NPRUZfMkRfVl9V KTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilncl8yZC0+bHNzY19wYXJhY29lZl92X2RfbWF4 ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShncl8yZC0+bHNz Y19wYXJhY29lZl92X2RfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HUl9DT0VGXzJEX1ZfRCk7DQo+ ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ3JfMmQtPmxzc2NfcGFyYWNvZWZfaHZfbHVfbWF4ICYg MHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShncl8yZC0+bHNzY19w YXJhY29lZl9odl9sdV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dSX0NPRUZfMkRfSFZfTFUpOw0K PiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWdyXzJkLT5sc3NjX3BhcmFjb2VmX2h2X3J1X21heCAm IDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoZ3JfMmQtPmxzc2Nf cGFyYWNvZWZfaHZfcnVfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HUl9DT0VGXzJEX0hWX1JVKTsN Cj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilncl8yZC0+bHNzY19wYXJhY29lZl9odl9sZF9tYXgg JiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdyXzJkLT5sc3Nj X3BhcmFjb2VmX2h2X2xkX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR1JfQ09FRl8yRF9IVl9MRCk7 DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ3JfMmQtPmxzc2NfcGFyYWNvZWZfaHZfcmRfbWF4 ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShncl8yZC0+bHNz Y19wYXJhY29lZl9odl9yZF9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dSX0NPRUZfMkRfSFZfUkQp Ow0KPiA+ICsNCj4gPiArCQkvKiBHUiA0RCAqLw0KPiA+ICsJCWdyXzRkID0gJnBhcmFtLT5sc3Nj X3BhcmFib2xhX3BhcmFtLT5ncl80ZDsNCj4gPiArCQl0bXAgPSAodTMyKWdyXzRkLT5sc3NjX3Bh cmFjb2VmX2hfbF9tYXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1 MzIpKGdyXzRkLT5sc3NjX3BhcmFjb2VmX2hfbF9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3 cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dSX0NP RUZfNERfSF9MKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilncl80ZC0+bHNzY19wYXJhY29l Zl9oX3JfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShn cl80ZC0+bHNzY19wYXJhY29lZl9oX3JfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVs KHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HUl9DT0VGXzRE X0hfUik7DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ3JfNGQtPmxzc2NfcGFyYWNvZWZfdl91 X21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoZ3JfNGQt Pmxzc2NfcGFyYWNvZWZfdl91X21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWws DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR1JfQ09FRl80RF9WX1Up Ow0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWdyXzRkLT5sc3NjX3BhcmFjb2VmX3ZfZF9tYXgg JiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdyXzRkLT5sc3Nj X3BhcmFjb2VmX3ZfZF9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dSX0NPRUZfNERfVl9EKTsNCj4g PiArDQo+ID4gKwkJdG1wID0gKHUzMilncl80ZC0+bHNzY19wYXJhY29lZl9odl9sdV9tYXggJiAw eDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdyXzRkLT5sc3NjX3Bh cmFjb2VmX2h2X2x1X21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR1JfQ09FRl80RF9IVl9MVSk7DQo+ ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ3JfNGQtPmxzc2NfcGFyYWNvZWZfaHZfcnVfbWF4ICYg MHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShncl80ZC0+bHNzY19w YXJhY29lZl9odl9ydV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dSX0NPRUZfNERfSFZfUlUpOw0K PiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWdyXzRkLT5sc3NjX3BhcmFjb2VmX2h2X2xkX21heCAm IDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoZ3JfNGQtPmxzc2Nf cGFyYWNvZWZfaHZfbGRfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HUl9DT0VGXzREX0hWX0xEKTsN Cj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilncl80ZC0+bHNzY19wYXJhY29lZl9odl9yZF9tYXgg JiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdyXzRkLT5sc3Nj X3BhcmFjb2VmX2h2X3JkX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR1JfQ09FRl80RF9IVl9SRCk7 DQo+ID4gKw0KPiA+ICsJCS8qIEdCIDJEICovDQo+ID4gKwkJZ2JfMmQgPSAmcGFyYW0tPmxzc2Nf cGFyYWJvbGFfcGFyYW0tPmdiXzJkOw0KPiA+ICsJCXRtcCA9ICh1MzIpZ2JfMmQtPmxzc2NfcGFy YWNvZWZfaF9sX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUz MikoZ2JfMmQtPmxzc2NfcGFyYWNvZWZfaF9sX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdy aXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR0JfQ09F Rl8yRF9IX0wpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWdiXzJkLT5sc3NjX3BhcmFjb2Vm X2hfcl9tYXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdi XzJkLT5sc3NjX3BhcmFjb2VmX2hfcl9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwo dmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dCX0NPRUZfMkRf SF9SKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilnYl8yZC0+bHNzY19wYXJhY29lZl92X3Vf bWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShnYl8yZC0+ bHNzY19wYXJhY29lZl92X3VfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HQl9DT0VGXzJEX1ZfVSk7 DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ2JfMmQtPmxzc2NfcGFyYWNvZWZfdl9kX21heCAm IDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoZ2JfMmQtPmxzc2Nf cGFyYWNvZWZfdl9kX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR0JfQ09FRl8yRF9WX0QpOw0KPiA+ ICsNCj4gPiArCQl0bXAgPSAodTMyKWdiXzJkLT5sc3NjX3BhcmFjb2VmX2h2X2x1X21heCAmIDB4 MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoZ2JfMmQtPmxzc2NfcGFy YWNvZWZfaHZfbHVfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HQl9DT0VGXzJEX0hWX0xVKTsNCj4g PiArDQo+ID4gKwkJdG1wID0gKHUzMilnYl8yZC0+bHNzY19wYXJhY29lZl9odl9ydV9tYXggJiAw eDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdiXzJkLT5sc3NjX3Bh cmFjb2VmX2h2X3J1X21pbg0KPiAmIDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR0JfQ09FRl8yRF9IVl9SVSk7DQo+ ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ2JfMmQtPmxzc2NfcGFyYWNvZWZfaHZfbGRfbWF4ICYg MHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShnYl8yZC0+bHNzY19w YXJhY29lZl9odl9sZF9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dCX0NPRUZfMkRfSFZfTEQpOw0K PiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWdiXzJkLT5sc3NjX3BhcmFjb2VmX2h2X3JkX21heCAm IDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoZ2JfMmQtPmxzc2Nf cGFyYWNvZWZfaHZfcmRfbWluDQo+ICYgMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HQl9DT0VGXzJEX0hWX1JEKTsN Cj4gPiArDQo+ID4gKwkJLyogR0IgNEQgKi8NCj4gPiArCQlnYl80ZCA9ICZwYXJhbS0+bHNzY19w YXJhYm9sYV9wYXJhbS0+Z2JfNGQ7DQo+ID4gKwkJdG1wID0gKHUzMilnYl80ZC0+bHNzY19wYXJh Y29lZl9oX2xfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMy KShnYl80ZC0+bHNzY19wYXJhY29lZl9oX2xfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3Jp dGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HQl9DT0VG XzREX0hfTCk7DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ2JfNGQtPmxzc2NfcGFyYWNvZWZf aF9yX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoZ2Jf NGQtPmxzc2NfcGFyYWNvZWZfaF9yX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2 YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR0JfQ09FRl80RF9I X1IpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWdiXzRkLT5sc3NjX3BhcmFjb2VmX3ZfdV9t YXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdiXzRkLT5s c3NjX3BhcmFjb2VmX3ZfdV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dCX0NPRUZfNERfVl9VKTsN Cj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMilnYl80ZC0+bHNzY19wYXJhY29lZl92X2RfbWF4ICYg MHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShnYl80ZC0+bHNzY19w YXJhY29lZl92X2RfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HQl9DT0VGXzREX1ZfRCk7DQo+ID4g Kw0KPiA+ICsJCXRtcCA9ICh1MzIpZ2JfNGQtPmxzc2NfcGFyYWNvZWZfaHZfbHVfbWF4ICYgMHgx ZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShnYl80ZC0+bHNzY19wYXJh Y29lZl9odl9sdV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dCX0NPRUZfNERfSFZfTFUpOw0KPiA+ ICsNCj4gPiArCQl0bXAgPSAodTMyKWdiXzRkLT5sc3NjX3BhcmFjb2VmX2h2X3J1X21heCAmIDB4 MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoZ2JfNGQtPmxzc2NfcGFy YWNvZWZfaHZfcnVfbWluDQo+ICYgMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9HQl9DT0VGXzREX0hWX1JVKTsNCj4g PiArDQo+ID4gKwkJdG1wID0gKHUzMilnYl80ZC0+bHNzY19wYXJhY29lZl9odl9sZF9tYXggJiAw eDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGdiXzRkLT5sc3NjX3Bh cmFjb2VmX2h2X2xkX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfR0JfQ09FRl80RF9IVl9MRCk7DQo+ ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpZ2JfNGQtPmxzc2NfcGFyYWNvZWZfaHZfcmRfbWF4ICYg MHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShnYl80ZC0+bHNzY19w YXJhY29lZl9odl9yZF9taW4NCj4gJiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0dCX0NPRUZfNERfSFZfUkQpOw0K PiA+ICsNCj4gPiArCQkvKiBCIDJEICovDQo+ID4gKwkJYl8yZCA9ICZwYXJhbS0+bHNzY19wYXJh Ym9sYV9wYXJhbS0+Yl8yZDsNCj4gPiArCQl0bXAgPSAodTMyKWJfMmQtPmxzc2NfcGFyYWNvZWZf aF9sX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoYl8y ZC0+bHNzY19wYXJhY29lZl9oX2xfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZh bCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9CX0NPRUZfMkRfSF9M KTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMiliXzJkLT5sc3NjX3BhcmFjb2VmX2hfcl9tYXgg JiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGJfMmQtPmxzc2Nf cGFyYWNvZWZfaF9yX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfQl9DT0VGXzJEX0hfUik7DQo+ID4g Kw0KPiA+ICsJCXRtcCA9ICh1MzIpYl8yZC0+bHNzY19wYXJhY29lZl92X3VfbWF4ICYgMHgxZmZm VTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShiXzJkLT5sc3NjX3BhcmFjb2Vm X3ZfdV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0JfQ09FRl8yRF9WX1UpOw0KPiA+ICsNCj4gPiAr CQl0bXAgPSAodTMyKWJfMmQtPmxzc2NfcGFyYWNvZWZfdl9kX21heCAmIDB4MWZmZlU7DQo+ID4g KwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoYl8yZC0+bHNzY19wYXJhY29lZl92X2RfbWlu ICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWct PmwxaXNwLkwxX0xTU0NfUEFSQV9CX0NPRUZfMkRfVl9EKTsNCj4gPiArDQo+ID4gKwkJdG1wID0g KHUzMiliXzJkLT5sc3NjX3BhcmFjb2VmX2h2X2x1X21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFs ID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoYl8yZC0+bHNzY19wYXJhY29lZl9odl9sdV9taW4gJg0K PiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfTFNTQ19QQVJBX0JfQ09FRl8yRF9IVl9MVSk7DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1 MzIpYl8yZC0+bHNzY19wYXJhY29lZl9odl9ydV9tYXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9 ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGJfMmQtPmxzc2NfcGFyYWNvZWZfaHZfcnVfbWluICYNCj4g MHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0xTU0NfUEFSQV9CX0NPRUZfMkRfSFZfUlUpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMy KWJfMmQtPmxzc2NfcGFyYWNvZWZfaHZfbGRfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAo dG1wIDw8IDE2VSkgfCAodTMyKShiXzJkLT5sc3NjX3BhcmFjb2VmX2h2X2xkX21pbiAmDQo+IDB4 MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9MU1NDX1BBUkFfQl9DT0VGXzJEX0hWX0xEKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMili XzJkLT5sc3NjX3BhcmFjb2VmX2h2X3JkX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRt cCA8PCAxNlUpIHwgKHUzMikoYl8yZC0+bHNzY19wYXJhY29lZl9odl9yZF9taW4gJg0KPiAweDFm ZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf TFNTQ19QQVJBX0JfQ09FRl8yRF9IVl9SRCk7DQo+ID4gKw0KPiA+ICsJCS8qIEIgNEQgKi8NCj4g PiArCQliXzRkID0gJnBhcmFtLT5sc3NjX3BhcmFib2xhX3BhcmFtLT5iXzRkOw0KPiA+ICsJCXRt cCA9ICh1MzIpYl80ZC0+bHNzY19wYXJhY29lZl9oX2xfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2 YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShiXzRkLT5sc3NjX3BhcmFjb2VmX2hfbF9taW4gJg0K PiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfTFNTQ19QQVJBX0JfQ09FRl80RF9IX0wpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMy KWJfNGQtPmxzc2NfcGFyYWNvZWZfaF9yX21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRt cCA8PCAxNlUpIHwgKHUzMikoYl80ZC0+bHNzY19wYXJhY29lZl9oX3JfbWluICYNCj4gMHgxZmZm VSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xT U0NfUEFSQV9CX0NPRUZfNERfSF9SKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMiliXzRkLT5s c3NjX3BhcmFjb2VmX3ZfdV9tYXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZV KSB8ICh1MzIpKGJfNGQtPmxzc2NfcGFyYWNvZWZfdl91X21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFf Ql9DT0VGXzREX1ZfVSk7DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpYl80ZC0+bHNzY19wYXJh Y29lZl92X2RfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMy KShiXzRkLT5sc3NjX3BhcmFjb2VmX3ZfZF9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0 ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0JfQ09FRl80 RF9WX0QpOw0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWJfNGQtPmxzc2NfcGFyYWNvZWZfaHZf bHVfbWF4ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShiXzRk LT5sc3NjX3BhcmFjb2VmX2h2X2x1X21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2 YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfQl9DT0VGXzREX0hW X0xVKTsNCj4gPiArDQo+ID4gKwkJdG1wID0gKHUzMiliXzRkLT5sc3NjX3BhcmFjb2VmX2h2X3J1 X21heCAmIDB4MWZmZlU7DQo+ID4gKwkJdmFsID0gKHRtcCA8PCAxNlUpIHwgKHUzMikoYl80ZC0+ bHNzY19wYXJhY29lZl9odl9ydV9taW4gJg0KPiAweDFmZmZVKTsNCj4gPiArCQl3cml0ZWwodmFs LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0JfQ09FRl80RF9IVl9S VSk7DQo+ID4gKw0KPiA+ICsJCXRtcCA9ICh1MzIpYl80ZC0+bHNzY19wYXJhY29lZl9odl9sZF9t YXggJiAweDFmZmZVOw0KPiA+ICsJCXZhbCA9ICh0bXAgPDwgMTZVKSB8ICh1MzIpKGJfNGQtPmxz c2NfcGFyYWNvZWZfaHZfbGRfbWluICYNCj4gMHgxZmZmVSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfUEFSQV9CX0NPRUZfNERfSFZfTEQp Ow0KPiA+ICsNCj4gPiArCQl0bXAgPSAodTMyKWJfNGQtPmxzc2NfcGFyYWNvZWZfaHZfcmRfbWF4 ICYgMHgxZmZmVTsNCj4gPiArCQl2YWwgPSAodG1wIDw8IDE2VSkgfCAodTMyKShiXzRkLT5sc3Nj X3BhcmFjb2VmX2h2X3JkX21pbiAmDQo+IDB4MWZmZlUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BBUkFfQl9DT0VGXzREX0hWX1JEKTsN Cj4gPiArDQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QQVJBX0VOKTsNCj4gPiArCX0NCj4g PiArDQo+ID4gKwkvKiBncmlkIHNoYWRpbmcgKi8NCj4gPiArCWlmIChwYXJhbS0+bHNzY19ncmlk X3BhcmFtKSB7DQo+ID4gKwkJd3JpdGVsKEhXRF9WSUlGX0VOQUJMRSwNCj4gJnJlcy0+Y2FwdHVy ZV9yZWctPmwxaXNwLkwxX0xTU0NfR1JJRF9FTik7DQo+ID4gKwkJd3JpdGVsKGdyaWRfaF9zaXpl LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19HUklEX0hfU0laRSk7DQo+ID4g KwkJd3JpdGVsKGdyaWRfdl9zaXplLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNT Q19HUklEX1ZfU0laRSk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5sc3NjX2dyaWRfcGFyYW0tPmxz c2NfZ3JpZF9oX2NlbnRlciwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9M U1NDX0dSSURfSF9DRU5URVIpOw0KPiA+ICsJCXdyaXRlbChwYXJhbS0+bHNzY19ncmlkX3BhcmFt LT5sc3NjX2dyaWRfdl9jZW50ZXIsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfTFNTQ19HUklEX1ZfQ0VOVEVSKTsNCj4gPiArCQl3cml0ZWwocGFyYW0tPmxzc2NfZ3JpZF9w YXJhbS0+bHNzY19ncmlkX21nc2VsLA0KPiA+ICsJCSAgICAgICAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfTFNTQ19HUklEX01HU0VMKTsNCj4gPiArDQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJ CXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf TFNTQ19HUklEX0VOKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBwcmVzZXQgd2hpdGUgYmFs YW5jZSAqLw0KPiA+ICsJdmFsID0gKHBhcmFtLT5sc3NjX3B3aGJfcl9nYWluX21heCA8PCAxNlUp IHwNCj4gKHBhcmFtLT5sc3NjX3B3aGJfcl9nYWluX21pbik7DQo+ID4gKwl3cml0ZWwodmFsLCAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNTQ19QV0hCX1JfR0FJTik7DQo+ID4gKw0KPiA+ ICsJdmFsID0gKHBhcmFtLT5sc3NjX3B3aGJfZ3JfZ2Fpbl9tYXggPDwgMTZVKSB8DQo+IChwYXJh bS0+bHNzY19wd2hiX2dyX2dhaW5fbWluKTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9MU1NDX1BXSEJfR1JfR0FJTik7DQo+ID4gKw0KPiA+ICsJdmFsID0g KHBhcmFtLT5sc3NjX3B3aGJfZ2JfZ2Fpbl9tYXggPDwgMTZVKSB8DQo+IChwYXJhbS0+bHNzY19w d2hiX2diX2dhaW5fbWluKTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5s MWlzcC5MMV9MU1NDX1BXSEJfR0JfR0FJTik7DQo+ID4gKw0KPiA+ICsJdmFsID0gKHBhcmFtLT5s c3NjX3B3aGJfYl9nYWluX21heCA8PCAxNlUpIHwNCj4gKHBhcmFtLT5sc3NjX3B3aGJfYl9nYWlu X21pbik7DQo+ID4gKwl3cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTFNT Q19QV0hCX0JfR0FJTik7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlGX0VOQUJMRSwgJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0xTU0NfRU4pOw0KPiA+ICsNCj4gPiArCXJldHVybiAw Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDFfc2V0X2xzY190 YWJsZV90cmFuc21pc3Npb24oKSAtIENvbmZpZ3VyZSBMMUlTUCB0cmFuc2ZlcnJpbmcNCj4gbGVu cyBzaGFkaW5nIGdyaWQgdGFibGUuDQo+ID4gKyAqDQo+ID4gKyAqIEB0YWJsZV9ncjogZ3JpZCBz aGFkaW5nIHRhYmxlIGZvciBHcihwaHlzaWNhbCBhZGRyZXNzKQ0KPiA+ICsgKiBAdGFibGVfcjog Z3JpZCBzaGFkaW5nIHRhYmxlIGZvciBSKHBoeXNpY2FsIGFkZHJlc3MpDQo+ID4gKyAqIEB0YWJs ZV9iOiBncmlkIHNoYWRpbmcgdGFibGUgZm9yIEIocGh5c2ljYWwgYWRkcmVzcykNCj4gPiArICog QHRhYmxlX2diOiBncmlkIHNoYWRpbmcgdGFibGUgZm9yIEdiKHBoeXNpY2FsIGFkZHJlc3MpDQo+ ID4gKyAqIFJldHVybjogMCBvcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseQ0KPiA+ICsg KiBSZXR1cm46IC1FSU5WQUwgUGFyYW1ldGVyIGVycm9yDQo+ID4gKyAqIC0gInRhYmxlX2giLCAi dGFibGVfbSIgb3IgInRhYmxlX2wiIGlzIG5vdCA4Ynl0ZSBhbGlnbm1lbnQNCj4gPiArICoNCj4g PiArICogTm90ZSB0aGF0IHdoZW4gMCBpcyBzZXQgdG8gdGFibGUgYWRkcmVzcywgdGFibGUgdHJh bnNmZXIgb2YgdGhlIHRhYmxlIGlzDQo+IGRpc2FibGVkLg0KPiA+ICsgKi8NCj4gPiArczMyIGh3 ZF92aWlmX2wxX3NldF9sc2NfdGFibGVfdHJhbnNtaXNzaW9uKHN0cnVjdCBod2RfdmlpZl9yZXMg KnJlcywNCj4gdWludHB0cl90IHRhYmxlX2dyLA0KPiA+ICsJCQkJCSAgIHVpbnRwdHJfdCB0YWJs ZV9yLCB1aW50cHRyX3QgdGFibGVfYiwNCj4gdWludHB0cl90IHRhYmxlX2diKQ0KPiA+ICt7DQo+ ID4gKwl1MzIgdmFsID0gMHgwVTsNCj4gPiArDQo+ID4gKwlpZiAoKCh0YWJsZV9nciAlIEhXRF9W SUlGX0wxX1ZETV9BTElHTikgIT0gMFUpIHx8DQo+ID4gKwkgICAgKCh0YWJsZV9yICUgSFdEX1ZJ SUZfTDFfVkRNX0FMSUdOKSAhPSAwVSkgfHwNCj4gPiArCSAgICAoKHRhYmxlX2IgJSBIV0RfVklJ Rl9MMV9WRE1fQUxJR04pICE9IDBVKSB8fA0KPiA+ICsJICAgICgodGFibGVfZ2IgJSBIV0RfVklJ Rl9MMV9WRE1fQUxJR04pICE9IDBVKSkgew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJ fQ0KPiA+ICsJLyogVkRNIGNvbW1vbiBzZXR0aW5ncyAqLw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlG X0wxX1ZETV9DRkdfUEFSQU0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT52ZG0udF9ncm91cFswXS5W RE1fVF9DRkcpOw0KPiA+ICsJd3JpdGVsKEhXRF9WSUlGX0wxX1ZETV9TUkFNX0JBU0UsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT52ZG0udF9ncm91cFswXS5WRE1fVF9TUkFNX0JBU0UpOw0KPiA+ICsJ d3JpdGVsKEhXRF9WSUlGX0wxX1ZETV9TUkFNX1NJWkUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT52 ZG0udF9ncm91cFswXS5WRE1fVF9TUkFNX1NJWkUpOw0KPiA+ICsNCj4gPiArCWlmICh0YWJsZV9n ciAhPSAwVSkgew0KPiA+ICsJCXdyaXRlbCgodTMyKXRhYmxlX2dyLA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+dmRtLnRfcG9ydFs0XS5WRE1fVF9TVEFEUik7DQo+ID4gKwkJd3JpdGVsKEhXRF9WSUlG X0wxX1ZETV9MU0NfVEFCTEVfU0laRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPnZkbS50X3BvcnRb NF0uVkRNX1RfU0laRSk7DQo+ID4gKwkJdmFsIHw9IDB4MTBVOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCWlmICh0YWJsZV9yICE9IDBVKSB7DQo+ID4gKwkJd3JpdGVsKCh1MzIpdGFibGVfciwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPnZkbS50X3BvcnRbNV0uVkRNX1RfU1RBRFIpOw0KPiA+ICsJCXdy aXRlbChIV0RfVklJRl9MMV9WRE1fTFNDX1RBQkxFX1NJWkUsDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT52ZG0udF9wb3J0WzVdLlZETV9UX1NJWkUpOw0KPiA+ICsJCXZhbCB8PSAweDIwVTsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwlpZiAodGFibGVfYiAhPSAwVSkgew0KPiA+ICsJCXdyaXRlbCgodTMy KXRhYmxlX2IsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT52ZG0udF9wb3J0WzZdLlZETV9UX1NUQURS KTsNCj4gPiArCQl3cml0ZWwoSFdEX1ZJSUZfTDFfVkRNX0xTQ19UQUJMRV9TSVpFLA0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+dmRtLnRfcG9ydFs2XS5WRE1fVF9TSVpFKTsNCj4gPiArCQl2YWwgfD0g MHg0MFU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHRhYmxlX2diICE9IDBVKSB7DQo+ID4g KwkJd3JpdGVsKCh1MzIpdGFibGVfZ2IsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT52ZG0udF9wb3J0 WzddLlZETV9UX1NUQURSKTsNCj4gPiArCQl3cml0ZWwoSFdEX1ZJSUZfTDFfVkRNX0xTQ19UQUJM RV9TSVpFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+dmRtLnRfcG9ydFs3XS5WRE1fVF9TSVpFKTsN Cj4gPiArCQl2YWwgfD0gMHg4MFU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJdmFsIHw9IChyZWFk bCgmcmVzLT5jYXB0dXJlX3JlZy0+dmRtLlZETV9UX0VOQUJMRSkgJg0KPiAweGZmZmZmZjBmVSk7 DQo+ID4gKwl3cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+dmRtLlZETV9UX0VOQUJMRSk7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg KiBod2RfdmlpZl9sMV9zZXRfbWFpbl9wcm9jZXNzKCkgLSBDb25maWd1cmUgTDFJU1AgbWFpbiBw cm9jZXNzLg0KPiA+ICsgKg0KPiA+ICsgKiBAZGVtb3NhaWNfbW9kZTogZGVtb3NhaWMgbW9kZSBA cmVmIGh3ZF92aWlmX2wxX2RlbW9zYWljDQo+ID4gKyAqIEBkYW1wX2xzYnNlbDogb3V0cHV0IHBp eGVsIGNsaXAgcmFuZ2UgZm9yIGF1dG8gd2hpdGUgYmFsYW5jZSBbMC4uMTVdDQo+ID4gKyAqIEBj b2xvcl9tYXRyaXg6IHBvaW50ZXIgdG8gY29sb3IgbWF0cml4IGNvcnJlY3Rpb24gcGFyYW1ldGVy cw0KPiA+ICsgKiBAZHN0X21heHZhbDogb3V0cHV0IHBpeGVsIG1heGltdW0gdmFsdWUgWzB4MC4u MHhmZmZmZmZdDQo+ID4gKyAqIFJldHVybjogMCBvcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3Nm dWxseQ0KPiA+ICsgKiBSZXR1cm46IC1FSU5WQUwgUGFyYW1ldGVyIGVycm9yDQo+ID4gKyAqIG1h aW4gcHJvY2VzcyBtZWFucyBkaWdpdGFsIGFtcCwgZGVtb3NhaWMsIGFuZCBjb2xvciBtYXRyaXgg Y29ycmVjdGlvbg0KPiA+ICsgKiAgICAgICAgICAgICBOVUxMIG1lYW5zIGRpc2FibGluZyBjb2xv ciBtYXRyaXggY29ycmVjdGlvbg0KPiA+ICsgKiAtICJkZW1vc2FpY19tb2RlIiBpcyBuZWl0aGVy IEhXRF9WSUlGX0wxX0RFTU9TQUlDX0FDUEkgbm9yDQo+IEhXRF9WSUlGX0wxX0RFTU9TQUlDX0RN Rw0KPiA+ICsgKiAtICJkYW1wX2xzYnNlbCIgaXMgb3V0IG9mIHJhbmdlDQo+ID4gKyAqIC0gZWFj aCBwYXJhbWV0ZXIgb2YgImNvbG9yX21hdHJpeCIgaXMgb3V0IG9mIHJhbmdlDQo+ID4gKyAqIC0g ImRzdF9tYXh2YWwiIGlzIG91dCBvZiByYW5nZQ0KPiA+ICsgKi8NCj4gPiArczMyIGh3ZF92aWlm X2wxX3NldF9tYWluX3Byb2Nlc3Moc3RydWN0IGh3ZF92aWlmX3JlcyAqcmVzLCB1MzINCj4gZGVt b3NhaWNfbW9kZSwgdTMyIGRhbXBfbHNic2VsLA0KPiA+ICsJCQkJIGNvbnN0IHN0cnVjdCB2aWlm X2wxX2NvbG9yX21hdHJpeF9jb3JyZWN0aW9uDQo+ICpjb2xvcl9tYXRyaXgsDQo+ID4gKwkJCQkg dTMyIGRzdF9tYXh2YWwpDQo+ID4gK3sNCj4gPiArCXUzMiB2YWw7DQo+ID4gKw0KPiA+ICsJaWYg KGRlbW9zYWljX21vZGUgIT0gSFdEX1ZJSUZfTDFfREVNT1NBSUNfQUNQSSAmJg0KPiA+ICsJICAg IGRlbW9zYWljX21vZGUgIT0gSFdEX1ZJSUZfTDFfREVNT1NBSUNfRE1HKSB7DQo+ID4gKwkJcmV0 dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGRhbXBfbHNic2VsID4gSFdE X1ZJSUZfREFNUF9NQVhfTFNCU0VMKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4g PiArCWlmIChjb2xvcl9tYXRyaXgpIHsNCj4gPiArCQlpZiAoY29sb3JfbWF0cml4LT5jb2VmX3Jt Z19taW4gPg0KPiBjb2xvcl9tYXRyaXgtPmNvZWZfcm1nX21heCB8fA0KPiA+ICsJCSAgICBjb2xv cl9tYXRyaXgtPmNvZWZfcm1iX21pbiA+DQo+IGNvbG9yX21hdHJpeC0+Y29lZl9ybWJfbWF4IHx8 DQo+ID4gKwkJICAgIGNvbG9yX21hdHJpeC0+Y29lZl9nbXJfbWluID4NCj4gY29sb3JfbWF0cml4 LT5jb2VmX2dtcl9tYXggfHwNCj4gPiArCQkgICAgY29sb3JfbWF0cml4LT5jb2VmX2dtYl9taW4g Pg0KPiBjb2xvcl9tYXRyaXgtPmNvZWZfZ21iX21heCB8fA0KPiA+ICsJCSAgICBjb2xvcl9tYXRy aXgtPmNvZWZfYm1yX21pbiA+DQo+IGNvbG9yX21hdHJpeC0+Y29lZl9ibXJfbWF4IHx8DQo+ID4g KwkJICAgIGNvbG9yX21hdHJpeC0+Y29lZl9ibWdfbWluID4NCj4gY29sb3JfbWF0cml4LT5jb2Vm X2JtZ19tYXggfHwNCj4gPiArCQkgICAgKHUzMiljb2xvcl9tYXRyaXgtPmRzdF9taW52YWwgPiBk c3RfbWF4dmFsKQ0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlpZiAoZHN0X21heHZhbCA+IEhXRF9WSUlGX01BSU5fUFJPQ0VTU19NQVhfT1VUX1BJWEVMX1ZB TCkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwl2YWwgPSBkYW1wX2xzYnNl bCA8PCA0VTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9N UFJPX0NPTkYpOw0KPiA+ICsNCj4gPiArCXdyaXRlbChkZW1vc2FpY19tb2RlLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfTVBST19MQ1NfTU9ERSk7DQo+ID4gKw0KPiA+ICsJaWYgKGNv bG9yX21hdHJpeCkgew0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9FTkFCTEUsDQo+ICZyZXMtPmNh cHR1cmVfcmVnLT5sMWlzcC5MMV9NUFJPX1NXKTsNCj4gPiArDQo+ID4gKwkJdmFsID0gKHUzMilj b2xvcl9tYXRyaXgtPmNvZWZfcm1nX21pbiAmIDB4ZmZmZlU7DQo+ID4gKwkJd3JpdGVsKHZhbCwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX01QUk9fTE0wX1JNR19NSU4pOw0KPiA+ICsN Cj4gPiArCQl2YWwgPSAodTMyKWNvbG9yX21hdHJpeC0+Y29lZl9ybWdfbWF4ICYgMHhmZmZmVTsN Cj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTVBST19M TTBfUk1HX01BWCk7DQo+ID4gKw0KPiA+ICsJCXZhbCA9ICh1MzIpY29sb3JfbWF0cml4LT5jb2Vm X3JtYl9taW4gJiAweGZmZmZVOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9NUFJPX0xNMF9STUJfTUlOKTsNCj4gPiArDQo+ID4gKwkJdmFsID0gKHUz Miljb2xvcl9tYXRyaXgtPmNvZWZfcm1iX21heCAmIDB4ZmZmZlU7DQo+ID4gKwkJd3JpdGVsKHZh bCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX01QUk9fTE0wX1JNQl9NQVgpOw0KPiA+ ICsNCj4gPiArCQl2YWwgPSAodTMyKWNvbG9yX21hdHJpeC0+Y29lZl9nbXJfbWluICYgMHhmZmZm VTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfTVBS T19MTTBfR01SX01JTik7DQo+ID4gKw0KPiA+ICsJCXZhbCA9ICh1MzIpY29sb3JfbWF0cml4LT5j b2VmX2dtcl9tYXggJiAweGZmZmZVOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9NUFJPX0xNMF9HTVJfTUFYKTsNCj4gPiArDQo+ID4gKwkJdmFsID0g KHUzMiljb2xvcl9tYXRyaXgtPmNvZWZfZ21iX21pbiAmIDB4ZmZmZlU7DQo+ID4gKwkJd3JpdGVs KHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX01QUk9fTE0wX0dNQl9NSU4pOw0K PiA+ICsNCj4gPiArCQl2YWwgPSAodTMyKWNvbG9yX21hdHJpeC0+Y29lZl9nbWJfbWF4ICYgMHhm ZmZmVTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf TVBST19MTTBfR01CX01BWCk7DQo+ID4gKw0KPiA+ICsJCXZhbCA9ICh1MzIpY29sb3JfbWF0cml4 LT5jb2VmX2Jtcl9taW4gJiAweGZmZmZVOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNh cHR1cmVfcmVnLT5sMWlzcC5MMV9NUFJPX0xNMF9CTVJfTUlOKTsNCj4gPiArDQo+ID4gKwkJdmFs ID0gKHUzMiljb2xvcl9tYXRyaXgtPmNvZWZfYm1yX21heCAmIDB4ZmZmZlU7DQo+ID4gKwkJd3Jp dGVsKHZhbCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX01QUk9fTE0wX0JNUl9NQVgp Ow0KPiA+ICsNCj4gPiArCQl2YWwgPSAodTMyKWNvbG9yX21hdHJpeC0+Y29lZl9ibWdfbWluICYg MHhmZmZmVTsNCj4gPiArCQl3cml0ZWwodmFsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfTVBST19MTTBfQk1HX01JTik7DQo+ID4gKw0KPiA+ICsJCXZhbCA9ICh1MzIpY29sb3JfbWF0 cml4LT5jb2VmX2JtZ19tYXggJiAweGZmZmZVOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9NUFJPX0xNMF9CTUdfTUFYKTsNCj4gPiArDQo+ID4gKwkJ d3JpdGVsKCh1MzIpY29sb3JfbWF0cml4LT5kc3RfbWludmFsLA0KPiAmcmVzLT5jYXB0dXJlX3Jl Zy0+bDFpc3AuTDFfTVBST19EU1RfTUlOVkFMKTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJd3Jp dGVsKEhXRF9WSUlGX0RJU0FCTEUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9NUFJP X1NXKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwl3cml0ZWwoZHN0X21heHZhbCwNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX01QUk9fRFNUX01BWFZBTCk7DQo+ID4gKw0KPiA+ICsJcmV0 dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBod2RfdmlpZl9sMV9zZXRf YXdiKCkgLSBDb25maWd1cmUgTDFJU1AgYXV0byB3aGl0ZSBiYWxhbmNlIHBhcmFtZXRlcnMuDQo+ ID4gKyAqDQo+ID4gKyAqIEBwYXJhbTogcG9pbnRlciB0byBhdXRvIHdoaXRlIGJhbGFuY2UgcGFy YW1ldGVyczsgTlVMTCBtZWFucyBkaXNhYmxpbmcNCj4gYXV0byB3aGl0ZSBiYWxhbmNlDQo+ID4g KyAqIEBhd2hiX3dibXJnOiBSIGdhaW4gb2Ygd2hpdGUgYmFsYW5jZSBhZGp1c3RtZW50IFsweDQw Li4weDNGRl0NCj4gYWNjdXJhY3k6IDEvMjU2DQo+ID4gKyAqIEBhd2hiX3dibWdnOiBHIGdhaW4g b2Ygd2hpdGUgYmFsYW5jZSBhZGp1c3RtZW50IFsweDQwLi4weDNGRl0NCj4gYWNjdXJhY3k6IDEv MjU2DQo+ID4gKyAqIEBhd2hiX3dibWJnOiBCIGdhaW4gb2Ygd2hpdGUgYmFsYW5jZSBhZGp1c3Rt ZW50IFsweDQwLi4weDNGRl0NCj4gYWNjdXJhY3k6IDEvMjU2DQo+ID4gKyAqIFJldHVybjogMCBv cGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseQ0KPiA+ICsgKiBSZXR1cm46IC1FSU5WQUwN Cj4gPiArICogLSBlYWNoIHBhcmFtZXRlciBvZiAicGFyYW0iIGlzIG91dCBvZiByYW5nZQ0KPiA+ ICsgKiAtIGF3aGJfd2JtKmcgaXMgb3V0IG9mIHJhbmdlDQo+ID4gKyAqLw0KPiA+ICtzMzIgaHdk X3ZpaWZfbDFfc2V0X2F3YihzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpyZXMsIGNvbnN0IHN0cnVjdCB2 aWlmX2wxX2F3Yg0KPiAqcGFyYW0sIHUzMiBhd2hiX3dibXJnLA0KPiA+ICsJCQl1MzIgYXdoYl93 Ym1nZywgdTMyIGF3aGJfd2JtYmcpDQo+ID4gK3sNCj4gPiArCXUzMiB2YWwsIHlnYXRlX2RhdGE7 DQo+ID4gKw0KPiA+ICsJaWYgKGF3aGJfd2JtcmcgPCBIV0RfVklJRl9BV0JfTUlOX0dBSU4gfHwg YXdoYl93Ym1yZyA+PQ0KPiBIV0RfVklJRl9BV0JfTUFYX0dBSU4gfHwNCj4gPiArCSAgICBhd2hi X3dibWdnIDwgSFdEX1ZJSUZfQVdCX01JTl9HQUlOIHx8IGF3aGJfd2JtZ2cgPj0NCj4gSFdEX1ZJ SUZfQVdCX01BWF9HQUlOIHx8DQo+ID4gKwkgICAgYXdoYl93Ym1iZyA8IEhXRF9WSUlGX0FXQl9N SU5fR0FJTiB8fCBhd2hiX3dibWJnID49DQo+IEhXRF9WSUlGX0FXQl9NQVhfR0FJTikgew0KPiA+ ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChwYXJhbSkgew0K PiA+ICsJCWlmIChwYXJhbS0+YXdoYl95Z2F0ZV9zZWwgIT0gSFdEX1ZJSUZfRU5BQkxFICYmDQo+ ID4gKwkJICAgIHBhcmFtLT5hd2hiX3lnYXRlX3NlbCAhPSBIV0RfVklJRl9ESVNBQkxFKSB7DQo+ ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJaWYgKHBhcmFt LT5hd2hiX3lnYXRlX2RhdGEgIT0gNjRVICYmDQo+IHBhcmFtLT5hd2hiX3lnYXRlX2RhdGEgIT0g MTI4VSAmJg0KPiA+ICsJCSAgICBwYXJhbS0+YXdoYl95Z2F0ZV9kYXRhICE9IDI1NlUgJiYNCj4g cGFyYW0tPmF3aGJfeWdhdGVfZGF0YSAhPSA1MTJVKSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFM Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJaWYgKHBhcmFtLT5hd2hiX2NncmFuZ2UgIT0NCj4g SFdEX1ZJSUZfTDFfQVdCX09ORV9TRUNPTkQgJiYNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfY2dy YW5nZSAhPSBIV0RfVklJRl9MMV9BV0JfWDEgJiYNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfY2dy YW5nZSAhPSBIV0RfVklJRl9MMV9BV0JfWDIgJiYNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfY2dy YW5nZSAhPSBIV0RfVklJRl9MMV9BV0JfWDQpIHsNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQlpZiAocGFyYW0tPmF3aGJfeWdhdGVzdyAhPSBIV0RfVklJ Rl9FTkFCTEUgJiYNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfeWdhdGVzdyAhPSBIV0RfVklJRl9E SVNBQkxFKSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4g KwkJaWYgKHBhcmFtLT5hd2hiX2hleHN3ICE9IEhXRF9WSUlGX0VOQUJMRSAmJg0KPiBwYXJhbS0+ YXdoYl9oZXhzdyAhPSBIV0RfVklJRl9ESVNBQkxFKQ0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiArDQo+ID4gKwkJaWYgKHBhcmFtLT5hd2hiX2FyZWFtb2RlICE9DQo+IEhXRF9WSUlGX0wx X0FXQl9BUkVBX01PREUwICYmDQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX2FyZWFtb2RlICE9DQo+ IEhXRF9WSUlGX0wxX0FXQl9BUkVBX01PREUxICYmDQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX2Fy ZWFtb2RlICE9DQo+IEhXRF9WSUlGX0wxX0FXQl9BUkVBX01PREUyICYmDQo+ID4gKwkJICAgIHBh cmFtLT5hd2hiX2FyZWFtb2RlICE9DQo+IEhXRF9WSUlGX0wxX0FXQl9BUkVBX01PREUzKSB7DQo+ ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJdmFsID0gcmVh ZGwoJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1NZU01fV0lEVEgpOw0KPiA+ICsJCWlmIChw YXJhbS0+YXdoYl9hcmVhX2hzaXplIDwgMVUgfHwNCj4gKHBhcmFtLT5hd2hiX2FyZWFfaHNpemUg PiAoKHZhbCAtIDhVKSAvIDhVKSkgfHwNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfYXJlYV9ob2Zz ID4gKHZhbCAtIDlVKSkgew0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCQl9DQo+ID4g Kw0KPiA+ICsJCXZhbCA9IHJlYWRsKCZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX0hF SUdIVCk7DQo+ID4gKwkJaWYgKHBhcmFtLT5hd2hiX2FyZWFfdnNpemUgPCAxVSB8fA0KPiAocGFy YW0tPmF3aGJfYXJlYV92c2l6ZSA+ICgodmFsIC0gNFUpIC8gOFUpKSB8fA0KPiA+ICsJCSAgICBw YXJhbS0+YXdoYl9hcmVhX3ZvZnMgPiAodmFsIC0gNVUpKSB7DQo+ID4gKwkJCXJldHVybiAtRUlO VkFMOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJaWYgKChwYXJhbS0+YXdoYl9zcV9zd1swXSAh PSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCQkgICAgIHBhcmFtLT5hd2hiX3NxX3N3WzBdICE9 IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkJICAgIChwYXJhbS0+YXdoYl9zcV9zd1sxXSAh PSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCQkgICAgIHBhcmFtLT5hd2hiX3NxX3N3WzFdICE9 IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkJICAgIChwYXJhbS0+YXdoYl9zcV9zd1syXSAh PSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCQkgICAgIHBhcmFtLT5hd2hiX3NxX3N3WzJdICE9 IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkJICAgIChwYXJhbS0+YXdoYl9zcV9wb2xbMF0g IT0gSFdEX1ZJSUZfRU5BQkxFICYmDQo+ID4gKwkJICAgICBwYXJhbS0+YXdoYl9zcV9wb2xbMF0g IT0gSFdEX1ZJSUZfRElTQUJMRSkgfHwNCj4gPiArCQkgICAgKHBhcmFtLT5hd2hiX3NxX3BvbFsx XSAhPSBIV0RfVklJRl9FTkFCTEUgJiYNCj4gPiArCQkgICAgIHBhcmFtLT5hd2hiX3NxX3BvbFsx XSAhPSBIV0RfVklJRl9ESVNBQkxFKSB8fA0KPiA+ICsJCSAgICAocGFyYW0tPmF3aGJfc3FfcG9s WzJdICE9IEhXRF9WSUlGX0VOQUJMRSAmJg0KPiA+ICsJCSAgICAgcGFyYW0tPmF3aGJfc3FfcG9s WzJdICE9IEhXRF9WSUlGX0RJU0FCTEUpKSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ ICsJCX0NCj4gPiArDQo+ID4gKwkJaWYgKHBhcmFtLT5hd2hiX2J5Y3V0MHAgPg0KPiBIV0RfVklJ Rl9BV0JfVU5TSUdORURfR0FURV9VUFBFUiB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YXdoYl9ieWN1 dDBuID4NCj4gSFdEX1ZJSUZfQVdCX1VOU0lHTkVEX0dBVEVfVVBQRVIgfHwNCj4gPiArCQkgICAg cGFyYW0tPmF3aGJfcnljdXQwcCA+DQo+IEhXRF9WSUlGX0FXQl9VTlNJR05FRF9HQVRFX1VQUEVS IHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX3J5Y3V0MG4gPg0KPiBIV0RfVklJRl9BV0JfVU5T SUdORURfR0FURV9VUFBFUiB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YXdoYl9yYmN1dDBoIDwgSFdE X1ZJSUZfQVdCX0dBVEVfTE9XRVINCj4gfHwNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfcmJjdXQw aCA+IEhXRF9WSUlGX0FXQl9HQVRFX1VQUEVSDQo+IHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hi X3JiY3V0MGwgPCBIV0RfVklJRl9BV0JfR0FURV9MT1dFUg0KPiB8fA0KPiA+ICsJCSAgICBwYXJh bS0+YXdoYl9yYmN1dDBsID4gSFdEX1ZJSUZfQVdCX0dBVEVfVVBQRVINCj4gfHwNCj4gPiArCQkg ICAgcGFyYW0tPmF3aGJfYnljdXRfaFswXSA8DQo+IEhXRF9WSUlGX0FXQl9HQVRFX0xPV0VSIHx8 DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX2J5Y3V0X2hbMF0gPg0KPiBIV0RfVklJRl9BV0JfR0FU RV9VUFBFUiB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YXdoYl9ieWN1dF9oWzFdIDwNCj4gSFdEX1ZJ SUZfQVdCX0dBVEVfTE9XRVIgfHwNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfYnljdXRfaFsxXSA+ DQo+IEhXRF9WSUlGX0FXQl9HQVRFX1VQUEVSIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX2J5 Y3V0X2hbMl0gPA0KPiBIV0RfVklJRl9BV0JfR0FURV9MT1dFUiB8fA0KPiA+ICsJCSAgICBwYXJh bS0+YXdoYl9ieWN1dF9oWzJdID4NCj4gSFdEX1ZJSUZfQVdCX0dBVEVfVVBQRVIgfHwNCj4gPiAr CQkgICAgcGFyYW0tPmF3aGJfYnljdXRfbFswXSA+DQo+IEhXRF9WSUlGX0FXQl9VTlNJR05FRF9H QVRFX1VQUEVSIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX2J5Y3V0X2xbMV0gPg0KPiBIV0Rf VklJRl9BV0JfVU5TSUdORURfR0FURV9VUFBFUiB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YXdoYl9i eWN1dF9sWzJdID4NCj4gSFdEX1ZJSUZfQVdCX1VOU0lHTkVEX0dBVEVfVVBQRVIgfHwNCj4gPiAr CQkgICAgcGFyYW0tPmF3aGJfcnljdXRfaFswXSA8DQo+IEhXRF9WSUlGX0FXQl9HQVRFX0xPV0VS IHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX3J5Y3V0X2hbMF0gPg0KPiBIV0RfVklJRl9BV0Jf R0FURV9VUFBFUiB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YXdoYl9yeWN1dF9oWzFdIDwNCj4gSFdE X1ZJSUZfQVdCX0dBVEVfTE9XRVIgfHwNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfcnljdXRfaFsx XSA+DQo+IEhXRF9WSUlGX0FXQl9HQVRFX1VQUEVSIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hi X3J5Y3V0X2hbMl0gPA0KPiBIV0RfVklJRl9BV0JfR0FURV9MT1dFUiB8fA0KPiA+ICsJCSAgICBw YXJhbS0+YXdoYl9yeWN1dF9oWzJdID4NCj4gSFdEX1ZJSUZfQVdCX0dBVEVfVVBQRVIgfHwNCj4g PiArCQkgICAgcGFyYW0tPmF3aGJfcnljdXRfbFswXSA+DQo+IEhXRF9WSUlGX0FXQl9VTlNJR05F RF9HQVRFX1VQUEVSIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX3J5Y3V0X2xbMV0gPg0KPiBI V0RfVklJRl9BV0JfVU5TSUdORURfR0FURV9VUFBFUiB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YXdo Yl9yeWN1dF9sWzJdID4NCj4gSFdEX1ZJSUZfQVdCX1VOU0lHTkVEX0dBVEVfVVBQRVIgfHwNCj4g PiArCQkgICAgcGFyYW0tPmF3aGJfYXdic2Z0dSA8IEhXRF9WSUlGX0FXQl9HQVRFX0xPV0VSDQo+ IHx8DQo+ID4gKwkJICAgIHBhcmFtLT5hd2hiX2F3YnNmdHUgPiBIV0RfVklJRl9BV0JfR0FURV9V UFBFUg0KPiB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YXdoYl9hd2JzZnR2IDwgSFdEX1ZJSUZfQVdC X0dBVEVfTE9XRVINCj4gfHwNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfYXdic2Z0diA+IEhXRF9W SUlGX0FXQl9HQVRFX1VQUEVSDQo+IHx8DQo+ID4gKwkJICAgIChwYXJhbS0+YXdoYl9hd2JodWVj b3IgIT0gSFdEX1ZJSUZfRU5BQkxFICYmDQo+ID4gKwkJICAgICBwYXJhbS0+YXdoYl9hd2JodWVj b3IgIT0gSFdEX1ZJSUZfRElTQUJMRSkpIHsNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4g KwkJfQ0KPiA+ICsNCj4gPiArCQlpZiAocGFyYW0tPmF3aGJfYXdic3BkID4NCj4gSFdEX1ZJSUZf QVdCX01BWF9VVl9DT05WRVJHRU5DRV9TUEVFRCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+YXdoYl9h d2J1bHYgPg0KPiBIV0RfVklJRl9BV0JfTUFYX1VWX0NPTlZFUkdFTkNFX0xFVkVMIHx8DQo+ID4g KwkJICAgIHBhcmFtLT5hd2hiX2F3YnZsdiA+DQo+IEhXRF9WSUlGX0FXQl9NQVhfVVZfQ09OVkVS R0VOQ0VfTEVWRUwgfHwNCj4gPiArCQkgICAgcGFyYW0tPmF3aGJfYXdib25kb3QgPg0KPiBIV0Rf VklJRl9BV0JfSU5URUdSQVRJT05fU1RPUF9USCkgew0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCXN3aXRjaCAocGFyYW0tPmF3aGJfYXdiZnp0aW0pIHsN Cj4gPiArCQljYXNlIEhXRF9WSUlGX0wxX0FXQl9SRVNUQVJUX05POg0KPiA+ICsJCWNhc2UgSFdE X1ZJSUZfTDFfQVdCX1JFU1RBUlRfMTI4RlJBTUU6DQo+ID4gKwkJY2FzZSBIV0RfVklJRl9MMV9B V0JfUkVTVEFSVF82NEZSQU1FOg0KPiA+ICsJCWNhc2UgSFdEX1ZJSUZfTDFfQVdCX1JFU1RBUlRf MzJGUkFNRToNCj4gPiArCQljYXNlIEhXRF9WSUlGX0wxX0FXQl9SRVNUQVJUXzE2RlJBTUU6DQo+ ID4gKwkJY2FzZSBIV0RfVklJRl9MMV9BV0JfUkVTVEFSVF84RlJBTUU6DQo+ID4gKwkJY2FzZSBI V0RfVklJRl9MMV9BV0JfUkVTVEFSVF80RlJBTUU6DQo+ID4gKwkJY2FzZSBIV0RfVklJRl9MMV9B V0JfUkVTVEFSVF8yRlJBTUU6DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWRlZmF1bHQ6DQo+ID4g KwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwl3cml0 ZWwoYXdoYl93Ym1yZywgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FXSEJfV0JNUkcpOw0K PiA+ICsJd3JpdGVsKGF3aGJfd2JtZ2csICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BV0hC X1dCTUdHKTsNCj4gPiArCXdyaXRlbChhd2hiX3dibWJnLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfQVdIQl9XQk1CRyk7DQo+ID4gKw0KPiA+ICsJdmFsID0gcmVhZGwoJnJlcy0+Y2FwdHVy ZV9yZWctPmwxaXNwLkwxX0FXSEJfU1cpICYgMHhmZmZmZmY3ZlU7DQo+ID4gKw0KPiA+ICsJaWYg KHBhcmFtKSB7DQo+ID4gKwkJdmFsIHw9IChIV0RfVklJRl9FTkFCTEUgPDwgN1UpOw0KPiA+ICsJ CXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BV0hCX1NXKTsNCj4gPiAr DQo+ID4gKwkJaWYgKHBhcmFtLT5hd2hiX3lnYXRlX2RhdGEgPT0gNjRVKQ0KPiA+ICsJCQl5Z2F0 ZV9kYXRhID0gMFU7DQo+ID4gKwkJZWxzZSBpZiAocGFyYW0tPmF3aGJfeWdhdGVfZGF0YSA9PSAx MjhVKQ0KPiA+ICsJCQl5Z2F0ZV9kYXRhID0gMVU7DQo+ID4gKwkJZWxzZSBpZiAocGFyYW0tPmF3 aGJfeWdhdGVfZGF0YSA9PSAyNTZVKQ0KPiA+ICsJCQl5Z2F0ZV9kYXRhID0gMlU7DQo+ID4gKwkJ ZWxzZQ0KPiA+ICsJCQl5Z2F0ZV9kYXRhID0gM1U7DQo+ID4gKw0KPiA+ICsJCXZhbCA9IChwYXJh bS0+YXdoYl95Z2F0ZV9zZWwgPDwgN1UpIHwgKHlnYXRlX2RhdGEgPDwgNVUpIHwNCj4gKHBhcmFt LT5hd2hiX2NncmFuZ2UpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9BV0hCX0dBVEVfQ09ORjApOw0KPiA+ICsNCj4gPiArCQl2YWwgPSAocGFyYW0t PmF3aGJfeWdhdGVzdyA8PCA1VSkgfCAocGFyYW0tPmF3aGJfaGV4c3cNCj4gPDwgNFUpIHwNCj4g PiArCQkgICAgICAocGFyYW0tPmF3aGJfYXJlYW1vZGUpOw0KPiA+ICsJCXdyaXRlbCh2YWwsDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BV0hCX0dBVEVfQ09ORjEpOw0KPiA+ICsNCj4g PiArCQl3cml0ZWwocGFyYW0tPmF3aGJfYXJlYV9oc2l6ZSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWct PmwxaXNwLkwxX0FXSEJfQVJFQV9IU0laRSk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5hd2hiX2Fy ZWFfdnNpemUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BV0hCX0FSRUFfVlNJWkUp Ow0KPiA+ICsJCXdyaXRlbChwYXJhbS0+YXdoYl9hcmVhX2hvZnMsDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9BV0hCX0FSRUFfSE9GUyk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5hd2hi X2FyZWFfdm9mcywNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FXSEJfQVJFQV9WT0ZT KTsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5hd2hiX2FyZWFfbWFza2gsDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BV0hCX0FSRUFfTUFTS0gpOw0KPiA+ICsJCXdyaXRlbChw YXJhbS0+YXdoYl9hcmVhX21hc2tsLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdI Ql9BUkVBX01BU0tMKTsNCj4gPiArDQo+ID4gKwkJdmFsID0gKHBhcmFtLT5hd2hiX3NxX3N3WzBd IDw8IDdVKSB8DQo+IChwYXJhbS0+YXdoYl9zcV9wb2xbMF0gPDwgNlUpIHwNCj4gPiArCQkgICAg ICAocGFyYW0tPmF3aGJfc3Ffc3dbMV0gPDwgNVUpIHwNCj4gKHBhcmFtLT5hd2hiX3NxX3BvbFsx XSA8PCA0VSkgfA0KPiA+ICsJCSAgICAgIChwYXJhbS0+YXdoYl9zcV9zd1syXSA8PCAzVSkgfA0K PiAocGFyYW0tPmF3aGJfc3FfcG9sWzJdIDw8IDJVKTsNCj4gPiArCQl3cml0ZWwodmFsLCAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9TUV9DT05GKTsNCj4gPiArDQo+ID4gKwkJd3Jp dGVsKCh1MzIpcGFyYW0tPmF3aGJfeWdhdGVoLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfQVdIQl9ZR0FURUgpOw0KPiA+ICsJCXdyaXRlbCgodTMyKXBhcmFtLT5hd2hiX3lnYXRlbCwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FXSEJfWUdBVEVMKTsNCj4gPiArDQo+ID4g KwkJd3JpdGVsKHBhcmFtLT5hd2hiX2J5Y3V0MHAsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9BV0hCX0JZQ1VUMFApOw0KPiA+ICsJCXdyaXRlbChwYXJhbS0+YXdoYl9ieWN1dDBuLA0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9CWUNVVDBOKTsNCj4gPiArCQl3cml0 ZWwocGFyYW0tPmF3aGJfcnljdXQwcCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FX SEJfUllDVVQwUCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5hd2hiX3J5Y3V0MG4sDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BV0hCX1JZQ1VUME4pOw0KPiA+ICsNCj4gPiArCQl2YWwg PSAodTMyKXBhcmFtLT5hd2hiX3JiY3V0MGggJiAweGZmVTsNCj4gPiArCQl3cml0ZWwodmFsLCAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9SQkNVVDBIKTsNCj4gPiArCQl2YWwgPSAo dTMyKXBhcmFtLT5hd2hiX3JiY3V0MGwgJiAweGZmVTsNCj4gPiArCQl3cml0ZWwodmFsLCAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9SQkNVVDBMKTsNCj4gPiArDQo+ID4gKwkJdmFs ID0gKHUzMilwYXJhbS0+YXdoYl9ieWN1dF9oWzBdICYgMHhmZlU7DQo+ID4gKwkJd3JpdGVsKHZh bCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FXSEJfQllDVVQxSCk7DQo+ID4gKwkJd3Jp dGVsKHBhcmFtLT5hd2hiX2J5Y3V0X2xbMF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9BV0hCX0JZQ1VUMUwpOw0KPiA+ICsJCXZhbCA9ICh1MzIpcGFyYW0tPmF3aGJfYnljdXRfaFsx XSAmIDB4ZmZVOw0KPiA+ICsJCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9BV0hCX0JZQ1VUMkgpOw0KPiA+ICsJCXdyaXRlbChwYXJhbS0+YXdoYl9ieWN1dF9sWzFdLA0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9CWUNVVDJMKTsNCj4gPiArCQl2YWwg PSAodTMyKXBhcmFtLT5hd2hiX2J5Y3V0X2hbMl0gJiAweGZmVTsNCj4gPiArCQl3cml0ZWwodmFs LCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9CWUNVVDNIKTsNCj4gPiArCQl3cml0 ZWwocGFyYW0tPmF3aGJfYnljdXRfbFsyXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X0FXSEJfQllDVVQzTCk7DQo+ID4gKw0KPiA+ICsJCXZhbCA9ICh1MzIpcGFyYW0tPmF3aGJfcnlj dXRfaFswXSAmIDB4ZmZVOw0KPiA+ICsJCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5s MWlzcC5MMV9BV0hCX1JZQ1VUMUgpOw0KPiA+ICsJCXdyaXRlbChwYXJhbS0+YXdoYl9yeWN1dF9s WzBdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9SWUNVVDFMKTsNCj4gPiAr CQl2YWwgPSAodTMyKXBhcmFtLT5hd2hiX3J5Y3V0X2hbMV0gJiAweGZmVTsNCj4gPiArCQl3cml0 ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9SWUNVVDJIKTsNCj4gPiAr CQl3cml0ZWwocGFyYW0tPmF3aGJfcnljdXRfbFsxXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0FXSEJfUllDVVQyTCk7DQo+ID4gKwkJdmFsID0gKHUzMilwYXJhbS0+YXdoYl9yeWN1 dF9oWzJdICYgMHhmZlU7DQo+ID4gKwkJd3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0FXSEJfUllDVVQzSCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5hd2hiX3J5Y3V0X2xb Ml0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BV0hCX1JZQ1VUM0wpOw0KPiA+ICsN Cj4gPiArCQl2YWwgPSAodTMyKXBhcmFtLT5hd2hiX2F3YnNmdHUgJiAweGZmVTsNCj4gPiArCQl3 cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9BV0JTRlRVKTsNCj4g PiArCQl2YWwgPSAodTMyKXBhcmFtLT5hd2hiX2F3YnNmdHYgJiAweGZmVTsNCj4gPiArCQl3cml0 ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9BV0JTRlRWKTsNCj4gPiAr DQo+ID4gKwkJdmFsID0gKHBhcmFtLT5hd2hiX2F3Ymh1ZWNvciA8PCA0VSkgfA0KPiAocGFyYW0t PmF3aGJfYXdic3BkKTsNCj4gPiArCQl3cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfQVdIQl9BV0JTUEQpOw0KPiA+ICsNCj4gPiArCQl3cml0ZWwocGFyYW0tPmF3aGJfYXdi dWx2LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9BV0JVTFYpOw0KPiA+ICsJ CXdyaXRlbChwYXJhbS0+YXdoYl9hd2J2bHYsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9BV0hCX0FXQlZMVik7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPmF3aGJfYXdid2FpdCwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FXSEJfQVdCV0FJVCk7DQo+ID4gKw0KPiA+ ICsJCXdyaXRlbChwYXJhbS0+YXdoYl9hd2JvbmRvdCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0FXSEJfQVdCT05ET1QpOw0KPiA+ICsJCXdyaXRlbChwYXJhbS0+YXdoYl9hd2JmenRp bSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FXSEJfQVdCRlpUSU0pOw0KPiA+ICsN Cj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbS0+YXdoYl93YmdybWF4LA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfQVdIQl9XQkdSTUFYKTsNCj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbS0+ YXdoYl93YmdibWF4LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9XQkdCTUFY KTsNCj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbS0+YXdoYl93YmdybWluLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9XQkdSTUlOKTsNCj4gPiArCQl3cml0ZWwoKHUzMilwYXJh bS0+YXdoYl93YmdibWluLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQVdIQl9XQkdC TUlOKTsNCj4gPiArDQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCS8qIGRpc2FibGUgYXdiICovDQo+ ID4gKwkJd3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FXSEJfU1cpOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogaHdkX3ZpaWZfbDFfbG9ja19hd2JfZ2FpbigpIC0gQ29uZmlndXJlIEwxSVNQIGxv Y2sgYXV0byB3aGl0ZSBiYWxhbmNlDQo+IGdhaW4uDQo+ID4gKyAqDQo+ID4gKyAqIEBlbmFibGU6 IGVuYWJsZS9kaXNhYmxlIGxvY2sgQVdCIGdhaW4NCj4gPiArICogUmV0dXJuOiAwIG9wZXJhdGlv biBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZBTCBQYXJhbWV0 ZXIgZXJyb3INCj4gPiArICogLSAiZW5hYmxlIiBpcyBuZWl0aGVyIEhXRF9WSUlGX0VOQUJMRSBu b3IgSFdEX1ZJSUZfRElTQUJMRQ0KPiA+ICsgKi8NCj4gPiArczMyIGh3ZF92aWlmX2wxX2xvY2tf YXdiX2dhaW4oc3RydWN0IGh3ZF92aWlmX3JlcyAqcmVzLCB1MzIgZW5hYmxlKQ0KPiA+ICt7DQo+ ID4gKwl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCWlmIChlbmFibGUgIT0gSFdEX1ZJSUZfRU5BQkxF ICYmIGVuYWJsZSAhPSBIV0RfVklJRl9ESVNBQkxFKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0K PiA+ICsNCj4gPiArCXZhbCA9IHJlYWRsKCZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BV0hC X1NXKSAmIDB4ZmZmZmZmZGZVOw0KPiA+ICsJdmFsIHw9IChlbmFibGUgPDwgNVUpOw0KPiA+ICsJ d3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FXSEJfU1cpOw0KPiA+ICsN Cj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX3Zp aWZfbDFfc2V0X2hkcmMoKSAtIENvbmZpZ3VyZSBMMUlTUCBIRFIgY29tcHJlc3Npb24gcGFyYW1l dGVycy4NCj4gPiArICoNCj4gPiArICogQHBhcmFtOiBwb2ludGVyIHRvIEhEUiBjb21wcmVzc2lv biBwYXJhbWV0ZXJzDQo+ID4gKyAqIEBoZHJjX3Rocl9zZnRfYW10OiBzaGlmdCB2YWx1ZSBpbiBj YXNlIG9mIHRocm91Z2ggbW9kZSBbMC4uOF0NCj4gPiArICogUmV0dXJuOiAwIG9wZXJhdGlvbiBj b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZBTCBQYXJhbWV0ZXIg ZXJyb3INCj4gPiArICogLSBlYWNoIHBhcmFtZXRlciBvZiAicGFyYW0iIGlzIG91dCBvZiByYW5n ZQ0KPiA+ICsgKiAtIGhkcmNfdGhyX3NmdF9hbXQgaXMgb3V0IG9mIHJhbmdlIHdoZW4gcGFyYW0g aXMgTlVMTA0KPiA+ICsgKiAtIGhkcmNfdGhyX3NmdF9hbXQgaXMgbm90IDAgd2hlbiBwYXJhbSBp cyBub3QgTlVMTA0KPiA+ICsgKi8NCj4gPiArczMyIGh3ZF92aWlmX2wxX3NldF9oZHJjKHN0cnVj dCBod2RfdmlpZl9yZXMgKnJlcywgY29uc3Qgc3RydWN0IHZpaWZfbDFfaGRyYw0KPiAqcGFyYW0s DQo+ID4gKwkJCSB1MzIgaGRyY190aHJfc2Z0X2FtdCkNCj4gPiArew0KPiA+ICsJdTMyIHZhbCwg c3dfZGVsYXkxOw0KPiA+ICsNCj4gPiArCWlmICghcGFyYW0pIHsNCj4gPiArCQlpZiAoaGRyY190 aHJfc2Z0X2FtdCA+DQo+IEhXRF9WSUlGX0wxX0hEUkNfTUFYX1RIUk9VR0hfU0hJRlRfVkFMKQ0K PiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwkJd3JpdGVsKGhkcmNfdGhyX3Nm dF9hbXQsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1RIUl9TRlRfQU1UKTsN Cj4gPiArCQl3cml0ZWwoSFdEX1ZJSUZfRElTQUJMRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0hEUkNfRU4pOw0KPiA+ICsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlpZiAoaGRyY190aHJfc2Z0X2FtdCAhPSAwVSB8fCBwYXJhbS0+aGRyY19yYXRpbyA8 DQo+IEhXRF9WSUlGX0wxX0hEUkNfTUlOX0lOUFVUX0RBVEFfV0lEVEggfHwNCj4gPiArCSAgICBw YXJhbS0+aGRyY19yYXRpbyA+DQo+IEhXRF9WSUlGX0wxX0hEUkNfTUFYX0lOUFVUX0RBVEFfV0lE VEggfHwNCj4gPiArCSAgICBwYXJhbS0+aGRyY19wdF9yYXRpbyA+IEhXRF9WSUlGX0wxX0hEUkNf TUFYX1BUX1NMT1BFIHx8DQo+ID4gKwkgICAgcGFyYW0tPmhkcmNfcHRfYmxlbmQgPg0KPiBIV0Rf VklJRl9MMV9IRFJDX01BWF9CTEVORF9SQVRJTyB8fA0KPiA+ICsJICAgIHBhcmFtLT5oZHJjX3B0 X2JsZW5kMiA+DQo+IEhXRF9WSUlGX0wxX0hEUkNfTUFYX0JMRU5EX1JBVElPIHx8DQo+ID4gKwkg ICAgKHBhcmFtLT5oZHJjX3B0X2JsZW5kICsgcGFyYW0tPmhkcmNfcHRfYmxlbmQyKSA+DQo+IEhX RF9WSUlGX0wxX0hEUkNfTUFYX0JMRU5EX1JBVElPIHx8DQo+ID4gKwkgICAgKHBhcmFtLT5oZHJj X3RuX3R5cGUgIT0gSFdEX1ZJSUZfTDFfSERSQ19UT05FX1VTRVIgJiYNCj4gPiArCSAgICAgcGFy YW0tPmhkcmNfdG5fdHlwZSAhPSBIV0RfVklJRl9MMV9IRFJDX1RPTkVfUFJFU0VUKQ0KPiB8fA0K PiA+ICsJICAgIHBhcmFtLT5oZHJjX2Zscl92YWwgPiBIV0RfVklJRl9MMV9IRFJDX01BWF9GTEFS RV9WQUwgfHwNCj4gPiArCSAgICAocGFyYW0tPmhkcmNfZmxyX2FkcCAhPSBIV0RfVklJRl9FTkFC TEUgJiYNCj4gcGFyYW0tPmhkcmNfZmxyX2FkcCAhPSBIV0RfVklJRl9ESVNBQkxFKSB8fA0KPiA+ ICsJICAgIChwYXJhbS0+aGRyY195YnJfb2ZmICE9IEhXRF9WSUlGX0VOQUJMRSAmJg0KPiBwYXJh bS0+aGRyY195YnJfb2ZmICE9IEhXRF9WSUlGX0RJU0FCTEUpIHx8DQo+ID4gKwkgICAgcGFyYW0t PmhkcmNfb3JneV9ibGVuZCA+DQo+IEhXRF9WSUlGX0wxX0hEUkNfTUFYX0JMRU5EX0xVTUEpIHsN Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwl3cml0ZWwoKHBh cmFtLT5oZHJjX3JhdGlvIC0gSFdEX1ZJSUZfTDFfSERSQ19SQVRJT19PRkZTRVQpLA0KPiA+ICsJ ICAgICAgICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1JBVElPKTsNCj4gPiArCXdy aXRlbChwYXJhbS0+aGRyY19wdF9yYXRpbywNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X0hEUkNfUFRfUkFUSU8pOw0KPiA+ICsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyY19wdF9ibGVu ZCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkNfUFRfQkxFTkQpOw0KPiA+ICsJ d3JpdGVsKHBhcmFtLT5oZHJjX3B0X2JsZW5kMiwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0hEUkNfUFRfQkxFTkQyKTsNCj4gPiArDQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfcHRf c2F0LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSQ19QVF9TQVQpOw0KPiA+ICsJ d3JpdGVsKHBhcmFtLT5oZHJjX3RuX3R5cGUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9IRFJDX1ROX1RZUEUpOw0KPiA+ICsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyY191dG5fdGJs WzBdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSQ19VVE5fVEJMMCk7DQo+ID4g Kwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFsxXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0hEUkNfVVROX1RCTDEpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJjX3V0bl90Ymxb Ml0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwyKTsNCj4gPiAr CXdyaXRlbChwYXJhbS0+aGRyY191dG5fdGJsWzNdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfSERSQ19VVE5fVEJMMyk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFs0 XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkNfVVROX1RCTDQpOw0KPiA+ICsJ d3JpdGVsKHBhcmFtLT5oZHJjX3V0bl90YmxbNV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9IRFJDX1VUTl9UQkw1KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyY191dG5fdGJsWzZd LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSQ19VVE5fVEJMNik7DQo+ID4gKwl3 cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFs3XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0hEUkNfVVROX1RCTDcpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJjX3V0bl90YmxbOF0s DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkw4KTsNCj4gPiArCXdy aXRlbChwYXJhbS0+aGRyY191dG5fdGJsWzldLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfSERSQ19VVE5fVEJMOSk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFsxMF0s DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwxMCk7DQo+ID4gKwl3 cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFsxMV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9IRFJDX1VUTl9UQkwxMSk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFsx Ml0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwxMik7DQo+ID4g Kwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFsxM10sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5s MWlzcC5MMV9IRFJDX1VUTl9UQkwxMyk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3Ri bFsxNF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwxNCk7DQo+ ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFsxNV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwxNSk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfdXRu X3RibFsxNl0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwxNik7 DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFsxN10sDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwxNyk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNf dXRuX3RibFsxOF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwx OCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmhkcmNfdXRuX3RibFsxOV0sDQo+ICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1VUTl9UQkwxOSk7DQo+ID4gKw0KPiA+ICsJd3JpdGVsKHBh cmFtLT5oZHJjX2Zscl92YWwsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX0ZM Ul9WQUwpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5oZHJjX2Zscl9hZHAsDQo+ICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9IRFJDX0ZMUl9BRFApOw0KPiA+ICsNCj4gPiArCXdyaXRlbChwYXJh bS0+aGRyY195YnJfb2ZmLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSQ19ZQlJf T0ZGKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+aGRyY19vcmd5X2JsZW5kLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfSERSQ19PUkdZX0JMRU5EKTsNCj4gPiArDQo+ID4gKwl2YWwgPSAo KHJlYWRsKCZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX0hFSUdIVCkpICUgNjRVKSAv DQo+IDJVOw0KPiA+ICsJd3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hE UkNfTUFSX1RPUCk7DQo+ID4gKwl2YWwgPSAoKHJlYWRsKCZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9TWVNNX1dJRFRIKSkgJSA2NFUpIC8NCj4gMlU7DQo+ID4gKwl3cml0ZWwodmFsLCAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSQ19NQVJfTEVGVCk7DQo+ID4gKw0KPiA+ICsJd3Jp dGVsKEhXRF9WSUlGX0VOQUJMRSwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkNfRU4p Ow0KPiA+ICsNCj4gPiArCS8qIHVwZGF0ZSBvZiBzd19kZWxheTEgbXVzdCBiZSBkb25lIHdoZW4g TUFJTiB1bml0IGlzIE5PVCBydW5uaW5nLg0KPiAqLw0KPiA+ICsJaWYgKCFyZXMtPnJ1bl9mbGFn X21haW4pIHsNCj4gPiArCQlzd19kZWxheTEgPSAodTMyKSgoSFdEX1ZJSUZfUkVHQlVGX0FDQ0VT U19USU1FICoNCj4gKHU2NClyZXMtPnBpeGVsX2Nsb2NrKSAvDQo+ID4gKwkJCQkgICgodTY0KXJl cy0+aHRvdGFsX3NpemUgKg0KPiBIV0RfVklJRl9TWVNfQ0xLKSkgKw0KPiA+ICsJCQkgICAgSFdE X1ZJSUZfTDFfREVMQVlfV19IRFJDICsgMVU7DQo+ID4gKwkJdmFsID0gcmVhZGwoJnJlcy0+Y2Fw dHVyZV9yZWctPnN5cy5JTlRfTTFfTElORSkgJiAweGZmZmZVOw0KPiA+ICsJCXZhbCB8PSAoc3df ZGVsYXkxIDw8IDE2VSk7DQo+ID4gKwkJd3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPnN5 cy5JTlRfTTFfTElORSk7DQo+ID4gKwkJLyogTTJfTElORSBpcyB0aGUgc2FtZSBjb25kaXRpb24g YXMgTTFfTElORSAqLw0KPiA+ICsJCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5zeXMu SU5UX00yX0xJTkUpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDFfc2V0X2hkcmNfbHRtKCkgLSBDb25m aWd1cmUgTDFJU1AgSERSIGNvbXByZXNzaW9uIGxvY2FsIHRvbmUNCj4gbWFwcGluZyBwYXJhbWV0 ZXJzLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW06IHBvaW50ZXIgdG8gSERSIGNvbXByZXNzaW9u IGxvY2FsIHRvbmUgbWFwcGluZyBwYXJhbWV0ZXJzDQo+ID4gKyAqIFJldHVybjogMCBvcGVyYXRp b24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseQ0KPiA+ICsgKiBSZXR1cm46IC1FSU5WQUwNCj4gPiAr ICogLSAicGFyYW0iIGlzIE5VTEwNCj4gPiArICogLSBlYWNoIHBhcmFtZXRlciBvZiAicGFyYW0i IGlzIG91dCBvZiByYW5nZQ0KPiA+ICsgKi8NCj4gPiArczMyIGh3ZF92aWlmX2wxX3NldF9oZHJj X2x0bShzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpyZXMsIGNvbnN0IHN0cnVjdA0KPiB2aWlmX2wxX2hk cmNfbHRtX2NvbmZpZyAqcGFyYW0pDQo+ID4gK3sNCj4gPiArCXUzMiB2YWw7DQo+ID4gKwl1MzIg aWR4Ow0KPiA+ICsNCj4gPiArCWlmICghcGFyYW0gfHwgcGFyYW0tPnRucF9tYXggPj0NCj4gSFdE X1ZJSUZfTDFfSERSQ19NQVhfTFRNX1RPTkVfQkxFTkRfUkFUSU8gfHwNCj4gPiArCSAgICBwYXJh bS0+dG5wX21hZyA+PQ0KPiBIV0RfVklJRl9MMV9IRFJDX01BWF9MVE1fTUFHTklGSUNBVElPTikg ew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXZhbCA9ICh1 MzIpcGFyYW0tPnRucF9maWxbMF07DQo+ID4gKwlmb3IgKGlkeCA9IDE7IGlkeCA8IDVVOyBpZHgr KykNCj4gPiArCQl2YWwgKz0gKHUzMilwYXJhbS0+dG5wX2ZpbFtpZHhdICogMlU7DQo+ID4gKw0K PiA+ICsJaWYgKHZhbCAhPSAxMDI0VSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ ID4gKwl3cml0ZWwocGFyYW0tPnRucF9tYXgsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9IRFJDX1ROUF9NQVgpOw0KPiA+ICsNCj4gPiArCXdyaXRlbChwYXJhbS0+dG5wX21hZywNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0hEUkNfVE5QX01BRyk7DQo+ID4gKw0KPiA+ICsJ d3JpdGVsKCh1MzIpcGFyYW0tPnRucF9maWxbMF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9IRFJDX1ROUF9GSUwwKTsNCj4gPiArCXdyaXRlbCgodTMyKXBhcmFtLT50bnBfZmlsWzFd LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfSERSQ19UTlBfRklMMSk7DQo+ID4gKwl3 cml0ZWwoKHUzMilwYXJhbS0+dG5wX2ZpbFsyXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0hEUkNfVE5QX0ZJTDIpOw0KPiA+ICsJd3JpdGVsKCh1MzIpcGFyYW0tPnRucF9maWxbM10s DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9IRFJDX1ROUF9GSUwzKTsNCj4gPiArCXdy aXRlbCgodTMyKXBhcmFtLT50bnBfZmlsWzRdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfSERSQ19UTlBfRklMNCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiBod2RfdmlpZl9sMV9zZXRfZ2FtbWEoKSAtIENvbmZpZ3VyZSBM MUlTUCBnYW1tYSBjb3JyZWN0aW9uDQo+IHBhcmFtZXRlcnMuDQo+ID4gKyAqDQo+ID4gKyAqIEBw YXJhbTogcG9pbnRlciB0byBnYW1tYSBjb3JyZWN0aW9uIHBhcmFtZXRlcnMNCj4gPiArICogUmV0 dXJuOiAwIG9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjog LUVJTlZBTCBQYXJhbWV0ZXIgZXJyb3INCj4gPiArICogLSBlYWNoIHBhcmFtZXRlciBvZiAicGFy YW0iIGlzIG91dCBvZiByYW5nZQ0KPiA+ICsgKi8NCj4gPiArczMyIGh3ZF92aWlmX2wxX3NldF9n YW1tYShzdHJ1Y3QgaHdkX3ZpaWZfcmVzICpyZXMsIGNvbnN0IHN0cnVjdA0KPiB2aWlmX2wxX2dh bW1hICpwYXJhbSkNCj4gPiArew0KPiA+ICsJdTMyIGlkeDsNCj4gPiArDQo+ID4gKwlpZiAoIXBh cmFtKSB7DQo+ID4gKwkJd3JpdGVsKEhXRF9WSUlGX0RJU0FCTEUsDQo+ICZyZXMtPmNhcHR1cmVf cmVnLT5sMWlzcC5MMV9WUFJPX1BHQ19TVyk7DQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJZm9yIChpZHggPSAwOyBpZHggPCA0NFU7IGlkeCsrKSB7DQo+ID4gKwkJaWYg KHBhcmFtLT5nYW1fcFtpZHhdID4gSFdEX1ZJSUZfTDFfR0FNTUFfTUFYX1ZBTCkNCj4gPiArCQkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1f cFswXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fR0FNMDFQKTsNCj4gPiAr CXdyaXRlbChwYXJhbS0+Z2FtX3BbMV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9W UFJPX0dBTTAyUCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmdhbV9wWzJdLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU0wM1ApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1f cFszXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fR0FNMDRQKTsNCj4gPiAr CXdyaXRlbChwYXJhbS0+Z2FtX3BbNF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9W UFJPX0dBTTA1UCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmdhbV9wWzVdLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU0wNlApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1f cFs2XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fR0FNMDdQKTsNCj4gPiAr CXdyaXRlbChwYXJhbS0+Z2FtX3BbN10sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9W UFJPX0dBTTA4UCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmdhbV9wWzhdLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU0wOVApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1f cFs5XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fR0FNMTBQKTsNCj4gPiAr CXdyaXRlbChwYXJhbS0+Z2FtX3BbMTBdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf VlBST19HQU0xMVApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1fcFsxMV0sDQo+ICZyZXMtPmNh cHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTEyUCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmdh bV9wWzEyXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fR0FNMTNQKTsNCj4g PiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMTNdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfVlBST19HQU0xNFApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1fcFsxNF0sDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTE1UCk7DQo+ID4gKwl3cml0ZWwocGFyYW0t PmdhbV9wWzE1XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fR0FNMTZQKTsN Cj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMTZdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFp c3AuTDFfVlBST19HQU0xN1ApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1fcFsxN10sDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTE4UCk7DQo+ID4gKwl3cml0ZWwocGFy YW0tPmdhbV9wWzE4XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fR0FNMTlQ KTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMTldLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfVlBST19HQU0yMFApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1fcFsyMF0sDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTIxUCk7DQo+ID4gKwl3cml0ZWwo cGFyYW0tPmdhbV9wWzIxXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fR0FN MjJQKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMjJdLA0KPiAmcmVzLT5jYXB0dXJlX3Jl Zy0+bDFpc3AuTDFfVlBST19HQU0yM1ApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1fcFsyM10s DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTI0UCk7DQo+ID4gKwl3cml0 ZWwocGFyYW0tPmdhbV9wWzI0XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9f R0FNMjVQKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMjVdLA0KPiAmcmVzLT5jYXB0dXJl X3JlZy0+bDFpc3AuTDFfVlBST19HQU0yNlApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1fcFsy Nl0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTI3UCk7DQo+ID4gKwl3 cml0ZWwocGFyYW0tPmdhbV9wWzI3XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQ Uk9fR0FNMjhQKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMjhdLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU0yOVApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5nYW1f cFsyOV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTMwUCk7DQo+ID4g Kwl3cml0ZWwocGFyYW0tPmdhbV9wWzMwXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X1ZQUk9fR0FNMzFQKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMzFdLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU0zMlApOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5n YW1fcFszMl0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTMzUCk7DQo+ ID4gKwl3cml0ZWwocGFyYW0tPmdhbV9wWzMzXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX1ZQUk9fR0FNMzRQKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMzRdLA0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU0zNVApOw0KPiA+ICsJd3JpdGVsKHBhcmFt LT5nYW1fcFszNV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTM2UCk7 DQo+ID4gKwl3cml0ZWwocGFyYW0tPmdhbV9wWzM2XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX1ZQUk9fR0FNMzdQKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbMzddLA0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU0zOFApOw0KPiA+ICsJd3JpdGVsKHBh cmFtLT5nYW1fcFszOF0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dBTTM5 UCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmdhbV9wWzM5XSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWct PmwxaXNwLkwxX1ZQUk9fR0FNNDBQKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbNDBdLA0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU00MVApOw0KPiA+ICsJd3JpdGVs KHBhcmFtLT5nYW1fcFs0MV0sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0dB TTQyUCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmdhbV9wWzQyXSwNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPmwxaXNwLkwxX1ZQUk9fR0FNNDNQKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+Z2FtX3BbNDNd LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19HQU00NFApOw0KPiA+ICsJd3Jp dGVsKHBhcmFtLT5ibGthZGosICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0JMS0FE Sik7DQo+ID4gKwl3cml0ZWwoSFdEX1ZJSUZfRU5BQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfVlBST19QR0NfU1cpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDFfc2V0X2ltZ19xdWFsaXR5X2FkanVz dG1lbnQoKSAtIENvbmZpZ3VyZSBMMUlTUCBpbWFnZSBxdWFsaXR5DQo+IGFkanVzdG1lbnQuDQo+ ID4gKyAqDQo+ID4gKyAqIEBwYXJhbTogcG9pbnRlciB0byBpbWFnZSBxdWFsaXR5IGFkanVzdG1l bnQgcGFyYW1ldGVyczsgTlVMTCBtZWFucw0KPiBkaXNhYmxpbmcNCj4gPiArICogUmV0dXJuOiAw IG9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5DQo+ID4gKyAqIFJldHVybjogLUVJTlZB TCBQYXJhbWV0ZXIgZXJyb3INCj4gPiArICogLSBlYWNoIHBhcmFtZXRlciBvZiAicGFyYW0iIGlz IG91dCBvZiByYW5nZQ0KPiA+ICsgKi8NCj4gPiArczMyIGh3ZF92aWlmX2wxX3NldF9pbWdfcXVh bGl0eV9hZGp1c3RtZW50KHN0cnVjdCBod2RfdmlpZl9yZXMgKnJlcywNCj4gPiArCQkJCQkgICBj b25zdCBzdHJ1Y3QNCj4gaHdkX3ZpaWZfbDFfaW1nX3F1YWxpdHlfYWRqdXN0bWVudCAqcGFyYW0p DQo+ID4gK3sNCj4gPiArCXUzMiB2YWw7DQo+ID4gKw0KPiA+ICsJaWYgKCFwYXJhbSkgew0KPiA+ ICsJCS8qIGRpc2FibGUgYWxsIGZlYXR1cmVzIHdoZW4gcGFyYW0gaXMgYWJzZW50ICovDQo+ID4g KwkJd3JpdGVsKEhXRF9WSUlGX0RJU0FCTEUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9WUFJPX1lVVkNfU1cpOw0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19CUklHSFRfU1cpOw0KPiA+ICsJCXdyaXRlbChI V0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19MQ05U X1NXKTsNCj4gPiArCQl3cml0ZWwoSFdEX1ZJSUZfRElTQUJMRSwNCj4gJnJlcy0+Y2FwdHVyZV9y ZWctPmwxaXNwLkwxX1ZQUk9fTkxDTlRfU1cpOw0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9ESVNB QkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19ZTlJfU1cpOw0KPiA+ICsJ CXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf VlBST19FVEVfU1cpOw0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19DU1VQX1VWU1VQX1NXKTsNCj4gPiArCQl3cml0ZWwo SFdEX1ZJSUZfRElTQUJMRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ1NV UF9DT1JJTkdfU1cpOw0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19FREdFX1NVUF9TVyk7DQo+ID4gKwkJd3JpdGVsKDEw MjRVLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19DQl9HQUlOKTsNCj4gPiArCQl3 cml0ZWwoMTAyNFUsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NSX0dBSU4pOw0K PiA+ICsJCXdyaXRlbCgxMDI0VSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9f Q0JSX01HQUlOX01JTik7DQo+ID4gKwkJd3JpdGVsKDBVLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfVlBST19DQl9QX0dBSU5fTUFYKTsNCj4gPiArCQl3cml0ZWwoMFUsDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NCX01fR0FJTl9NQVgpOw0KPiA+ICsJCXdyaXRl bCgwVSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ1JfUF9HQUlOX01BWCk7 DQo+ID4gKwkJd3JpdGVsKDBVLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19D Ul9NX0dBSU5fTUFYKTsNCj4gPiArCQl3cml0ZWwoSFdEX1ZJSUZfRElTQUJMRSwNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ05SX1NXKTsNCj4gPiArDQo+ID4gKwkJcmV0dXJu IDA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtLT5sdW1fbm9pc2VfcmVkdWN0aW9u KSB7DQo+ID4gKwkJaWYgKHBhcmFtLT5sdW1fbm9pc2VfcmVkdWN0aW9uLT5nYWluX21pbiA+DQo+ IHBhcmFtLT5sdW1fbm9pc2VfcmVkdWN0aW9uLT5nYWluX21heCB8fA0KPiA+ICsJCSAgICBwYXJh bS0+bHVtX25vaXNlX3JlZHVjdGlvbi0+bGltX21pbiA+DQo+IHBhcmFtLT5sdW1fbm9pc2VfcmVk dWN0aW9uLT5saW1fbWF4KSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCX0NCj4g PiArCX0NCj4gPiArDQo+ID4gKwlpZiAocGFyYW0tPmVkZ2VfZW5oYW5jZW1lbnQpIHsNCj4gPiAr CQlpZiAocGFyYW0tPmVkZ2VfZW5oYW5jZW1lbnQtPmdhaW5fbWluID4NCj4gcGFyYW0tPmVkZ2Vf ZW5oYW5jZW1lbnQtPmdhaW5fbWF4IHx8DQo+ID4gKwkJICAgIHBhcmFtLT5lZGdlX2VuaGFuY2Vt ZW50LT5saW1fbWluID4NCj4gcGFyYW0tPmVkZ2VfZW5oYW5jZW1lbnQtPmxpbV9tYXggfHwNCj4g PiArCQkgICAgcGFyYW0tPmVkZ2VfZW5oYW5jZW1lbnQtPmNvcmluZ19taW4gPg0KPiBwYXJhbS0+ ZWRnZV9lbmhhbmNlbWVudC0+Y29yaW5nX21heCkgew0KPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKHBhcmFtLT51dl9zdXBwcmVzc2lv bikgew0KPiA+ICsJCWlmIChwYXJhbS0+dXZfc3VwcHJlc3Npb24tPmJrX21wID49DQo+IEhXRF9W SUlGX0wxX1NVUFBSRVNTSU9OX01BWF9WQUwgfHwNCj4gPiArCQkgICAgcGFyYW0tPnV2X3N1cHBy ZXNzaW9uLT5ibGFjayA+PQ0KPiBIV0RfVklJRl9MMV9TVVBQUkVTU0lPTl9NQVhfVkFMIHx8DQo+ ID4gKwkJICAgIHBhcmFtLT51dl9zdXBwcmVzc2lvbi0+d2hfbXAgPj0NCj4gSFdEX1ZJSUZfTDFf U1VQUFJFU1NJT05fTUFYX1ZBTCB8fA0KPiA+ICsJCSAgICBwYXJhbS0+dXZfc3VwcHJlc3Npb24t PndoaXRlID49DQo+IEhXRF9WSUlGX0wxX1NVUFBSRVNTSU9OX01BWF9WQUwgfHwNCj4gPiArCQkg ICAgcGFyYW0tPnV2X3N1cHByZXNzaW9uLT5ia19zbHYgPj0NCj4gcGFyYW0tPnV2X3N1cHByZXNz aW9uLT53aF9zbHYpDQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCWlmIChwYXJhbS0+Y29yaW5nX3N1cHByZXNzaW9uKSB7DQo+ID4gKwkJaWYgKHBhcmFtLT5j b3Jpbmdfc3VwcHJlc3Npb24tPmdhaW5fbWluID4NCj4gcGFyYW0tPmNvcmluZ19zdXBwcmVzc2lv bi0+Z2Fpbl9tYXggfHwNCj4gPiArCQkgICAgcGFyYW0tPmNvcmluZ19zdXBwcmVzc2lvbi0+bHZf bWluID4NCj4gcGFyYW0tPmNvcmluZ19zdXBwcmVzc2lvbi0+bHZfbWF4KQ0KPiA+ICsJCQlyZXR1 cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAocGFyYW0tPmVkZ2Vfc3VwcHJl c3Npb24pIHsNCj4gPiArCQlpZiAocGFyYW0tPmVkZ2Vfc3VwcHJlc3Npb24tPmxpbSA+DQo+IEhX RF9WSUlGX0wxX0VER0VfU1VQUFJFU1NJT05fTUFYX0xJTUlUKQ0KPiA+ICsJCQlyZXR1cm4gLUVJ TlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAocGFyYW0tPmNvbG9yX2xldmVsKSB7DQo+ ID4gKwkJaWYgKHBhcmFtLT5jb2xvcl9sZXZlbC0+Y2JfZ2FpbiA+PQ0KPiBIV0RfVklJRl9MMV9D T0xPUl9MRVZFTF9NQVhfR0FJTiB8fA0KPiA+ICsJCSAgICBwYXJhbS0+Y29sb3JfbGV2ZWwtPmNy X2dhaW4gPj0NCj4gSFdEX1ZJSUZfTDFfQ09MT1JfTEVWRUxfTUFYX0dBSU4gfHwNCj4gPiArCQkg ICAgcGFyYW0tPmNvbG9yX2xldmVsLT5jYnJfbWdhaW5fbWluID49DQo+IEhXRF9WSUlGX0wxX0NP TE9SX0xFVkVMX01BWF9HQUlOIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5jb2xvcl9sZXZlbC0+Y2Jw X2dhaW5fbWF4ID49DQo+IEhXRF9WSUlGX0wxX0NPTE9SX0xFVkVMX01BWF9HQUlOIHx8DQo+ID4g KwkJICAgIHBhcmFtLT5jb2xvcl9sZXZlbC0+Y2JtX2dhaW5fbWF4ID49DQo+IEhXRF9WSUlGX0wx X0NPTE9SX0xFVkVMX01BWF9HQUlOIHx8DQo+ID4gKwkJICAgIHBhcmFtLT5jb2xvcl9sZXZlbC0+ Y3JwX2dhaW5fbWF4ID49DQo+IEhXRF9WSUlGX0wxX0NPTE9SX0xFVkVMX01BWF9HQUlOIHx8DQo+ ID4gKwkJICAgIHBhcmFtLT5jb2xvcl9sZXZlbC0+Y3JtX2dhaW5fbWF4ID49DQo+IEhXRF9WSUlG X0wxX0NPTE9SX0xFVkVMX01BWF9HQUlOKSB7DQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAocGFyYW0tPmNvbG9yX25vaXNlX3JlZHVj dGlvbl9lbmFibGUgIT0gSFdEX1ZJSUZfRU5BQkxFICYmDQo+ID4gKwkgICAgcGFyYW0tPmNvbG9y X25vaXNlX3JlZHVjdGlvbl9lbmFibGUgIT0gSFdEX1ZJSUZfRElTQUJMRSkgew0KPiA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFJHQiB0byBZVVYgKi8NCj4g PiArCXdyaXRlbChIV0RfVklJRl9FTkFCTEUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5M MV9WUFJPX1lVVkNfU1cpOw0KPiA+ICsJd3JpdGVsKCh1MzIpcGFyYW0tPmNvZWZfY2IsDQo+ICZy ZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NCX01BVCk7DQo+ID4gKwl3cml0ZWwoKHUz MilwYXJhbS0+Y29lZl9jciwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ1Jf TUFUKTsNCj4gPiArDQo+ID4gKwkvKiBicmlnaHRuZXNzICovDQo+ID4gKwl2YWwgPSAodTMyKXBh cmFtLT5icmlnaHRuZXNzICYgMHhmZmZmVTsNCj4gPiArCWlmICh2YWwgIT0gMFUpIHsNCj4gPiAr CQl3cml0ZWwoSFdEX1ZJSUZfRU5BQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf VlBST19CUklHSFRfU1cpOw0KPiA+ICsJCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5s MWlzcC5MMV9WUFJPX0JSSUdIVCk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXdyaXRlbChIV0Rf VklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19CUklHSFRf U1cpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIGxpbmVhciBjb250cmFzdCAqLw0KPiA+ICsJ aWYgKCh1MzIpcGFyYW0tPmxpbmVhcl9jb250cmFzdCAhPSAxMjhVKSB7DQo+ID4gKwkJd3JpdGVs KEhXRF9WSUlGX0VOQUJMRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fTENO VF9TVyk7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPmxpbmVhcl9jb250cmFzdCwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fTENPTlRfTEVWKTsNCj4gPiArCX0gZWxzZSB7 DQo+ID4gKwkJd3JpdGVsKEhXRF9WSUlGX0RJU0FCTEUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5s MWlzcC5MMV9WUFJPX0xDTlRfU1cpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIG5vbmxpbmVh ciBjb250cmFzdCAqLw0KPiA+ICsJaWYgKHBhcmFtLT5ub25saW5lYXJfY29udHJhc3QpIHsNCj4g PiArCQl3cml0ZWwoSFdEX1ZJSUZfRU5BQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfVlBST19OTENOVF9TVyk7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPm5vbmxpbmVhcl9j b250cmFzdC0+YmxrX2tuZWUsDQo+ID4gKwkJICAgICAgICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlz cC5MMV9WUFJPX0JMS19LTkVFKTsNCj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbS0+bm9ubGluZWFy X2NvbnRyYXN0LT53aHRfa25lZSwNCj4gPiArCQkgICAgICAgJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX1ZQUk9fV0hUX0tORUUpOw0KPiA+ICsNCj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbS0+ bm9ubGluZWFyX2NvbnRyYXN0LT5ibGtfY29udFswXSwNCj4gPiArCQkgICAgICAgJnJlcy0+Y2Fw dHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQkxLX0NPTlQwKTsNCj4gPiArCQl3cml0ZWwoKHUzMilw YXJhbS0+bm9ubGluZWFyX2NvbnRyYXN0LT5ibGtfY29udFsxXSwNCj4gPiArCQkgICAgICAgJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQkxLX0NPTlQxKTsNCj4gPiArCQl3cml0ZWwo KHUzMilwYXJhbS0+bm9ubGluZWFyX2NvbnRyYXN0LT5ibGtfY29udFsyXSwNCj4gPiArCQkgICAg ICAgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQkxLX0NPTlQyKTsNCj4gPiArDQo+ ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPm5vbmxpbmVhcl9jb250cmFzdC0+d2h0X2NvbnRbMF0s DQo+ID4gKwkJICAgICAgICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX1dIVF9DT05U MCk7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPm5vbmxpbmVhcl9jb250cmFzdC0+d2h0X2Nv bnRbMV0sDQo+ID4gKwkJICAgICAgICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX1dI VF9DT05UMSk7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPm5vbmxpbmVhcl9jb250cmFzdC0+ d2h0X2NvbnRbMl0sDQo+ID4gKwkJICAgICAgICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9W UFJPX1dIVF9DT05UMik7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9E SVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19OTENOVF9TVyk7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogbHVtaW5hbmNlIG5vaXNlIHJlZHVjdGlvbiAqLw0KPiA+ ICsJaWYgKHBhcmFtLT5sdW1fbm9pc2VfcmVkdWN0aW9uKSB7DQo+ID4gKwkJd3JpdGVsKEhXRF9W SUlGX0VOQUJMRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fWU5SX1NXKTsN Cj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbS0+bHVtX25vaXNlX3JlZHVjdGlvbi0+Z2Fpbl9taW4s DQo+ID4gKwkJICAgICAgICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX1lOUl9HQUlO X01JTik7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPmx1bV9ub2lzZV9yZWR1Y3Rpb24tPmdh aW5fbWF4LA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fWU5SX0dB SU5fTUFYKTsNCj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbS0+bHVtX25vaXNlX3JlZHVjdGlvbi0+ bGltX21pbiwNCj4gPiArCQkgICAgICAgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9f WU5SX0xJTV9NSU4pOw0KPiA+ICsJCXdyaXRlbCgodTMyKXBhcmFtLT5sdW1fbm9pc2VfcmVkdWN0 aW9uLT5saW1fbWF4LA0KPiA+ICsJCSAgICAgICAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf VlBST19ZTlJfTElNX01BWCk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXdyaXRlbChIV0RfVklJ Rl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19ZTlJfU1cpOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIGVkZ2UgZW5oYW5jZW1lbnQgKi8NCj4gPiArCWlmIChw YXJhbS0+ZWRnZV9lbmhhbmNlbWVudCkgew0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9FTkFCTEUs DQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0VURV9TVyk7DQo+ID4gKwkJd3Jp dGVsKCh1MzIpcGFyYW0tPmVkZ2VfZW5oYW5jZW1lbnQtPmdhaW5fbWluLA0KPiA+ICsJCSAgICAg ICAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19FVEVfR0FJTl9NSU4pOw0KPiA+ICsJ CXdyaXRlbCgodTMyKXBhcmFtLT5lZGdlX2VuaGFuY2VtZW50LT5nYWluX21heCwNCj4gPiArDQo+ ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0VURV9HQUlOX01BWCk7DQo+ID4gKwkJ d3JpdGVsKCh1MzIpcGFyYW0tPmVkZ2VfZW5oYW5jZW1lbnQtPmxpbV9taW4sDQo+ID4gKwkJICAg ICAgICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0VURV9MSU1fTUlOKTsNCj4gPiAr CQl3cml0ZWwoKHUzMilwYXJhbS0+ZWRnZV9lbmhhbmNlbWVudC0+bGltX21heCwNCj4gPiArCQkg ICAgICAgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fRVRFX0xJTV9NQVgpOw0KPiA+ ICsJCXdyaXRlbCgodTMyKXBhcmFtLT5lZGdlX2VuaGFuY2VtZW50LT5jb3JpbmdfbWluLA0KPiA+ ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fRVRFX0NPUklOR19NSU4pOw0K PiA+ICsJCXdyaXRlbCgodTMyKXBhcmFtLT5lZGdlX2VuaGFuY2VtZW50LT5jb3JpbmdfbWF4LA0K PiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fRVRFX0NPUklOR19NQVgp Ow0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQl3cml0ZWwoSFdEX1ZJSUZfRElTQUJMRSwNCj4gJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fRVRFX1NXKTsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwkvKiBVViBzdXBwcmVzc2lvbiAqLw0KPiA+ICsJaWYgKHBhcmFtLT51dl9zdXBwcmVzc2lv bikgew0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9FTkFCTEUsDQo+ICZyZXMtPmNhcHR1cmVfcmVn LT5sMWlzcC5MMV9WUFJPX0NTVVBfVVZTVVBfU1cpOw0KPiA+ICsJCXdyaXRlbCgodTMyKXBhcmFt LT51dl9zdXBwcmVzc2lvbi0+Ymtfc2x2LA0KPiA+ICsJCSAgICAgICAmcmVzLT5jYXB0dXJlX3Jl Zy0+bDFpc3AuTDFfVlBST19DU1VQX0JLX1NMVik7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT51dl9z dXBwcmVzc2lvbi0+YmtfbXAsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NT VVBfQktfTVApOw0KPiA+ICsJCXdyaXRlbChwYXJhbS0+dXZfc3VwcHJlc3Npb24tPmJsYWNrLA0K PiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19DU1VQX0JMQUNLKTsNCj4gPiArDQo+ ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPnV2X3N1cHByZXNzaW9uLT53aF9zbHYsDQo+ID4gKwkJ ICAgICAgICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NTVVBfV0hfU0xWKTsNCj4g PiArCQl3cml0ZWwocGFyYW0tPnV2X3N1cHByZXNzaW9uLT53aF9tcCwNCj4gJnJlcy0+Y2FwdHVy ZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ1NVUF9XSF9NUCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT51 dl9zdXBwcmVzc2lvbi0+d2hpdGUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJP X0NTVVBfV0hJVEUpOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQl3cml0ZWwoSFdEX1ZJSUZfRElT QUJMRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ1NVUF9VVlNVUF9TVyk7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogY29yaW5nIHN1cHByZXNzaW9uICovDQo+ID4gKwlp ZiAocGFyYW0tPmNvcmluZ19zdXBwcmVzc2lvbikgew0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9F TkFCTEUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NTVVBfQ09SSU5HX1NX KTsNCj4gPiArCQl3cml0ZWwoKHUzMilwYXJhbS0+Y29yaW5nX3N1cHByZXNzaW9uLT5sdl9taW4s DQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19DU1VQX0NPUklOR19M Vl9NSU4pOw0KPiA+ICsJCXdyaXRlbCgodTMyKXBhcmFtLT5jb3Jpbmdfc3VwcHJlc3Npb24tPmx2 X21heCwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NTVVBfQ09S SU5HX0xWX01BWCk7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPmNvcmluZ19zdXBwcmVzc2lv bi0+Z2Fpbl9taW4sDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19D U1VQX0NPUklOR19HQUlOX01JTik7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPmNvcmluZ19z dXBwcmVzc2lvbi0+Z2Fpbl9tYXgsDQo+ID4gKw0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfVlBST19DU1VQX0NPUklOR19HQUlOX01BWCk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXdy aXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBS T19DU1VQX0NPUklOR19TVyk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogZWRnZSBzdXBwcmVz c2lvbiAqLw0KPiA+ICsJaWYgKHBhcmFtLT5lZGdlX3N1cHByZXNzaW9uKSB7DQo+ID4gKwkJd3Jp dGVsKEhXRF9WSUlGX0VOQUJMRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9f RURHRV9TVVBfU1cpOw0KPiA+ICsJCXdyaXRlbCgodTMyKXBhcmFtLT5lZGdlX3N1cHByZXNzaW9u LT5nYWluLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fRURHRV9T VVBfR0FJTik7DQo+ID4gKwkJd3JpdGVsKCh1MzIpcGFyYW0tPmVkZ2Vfc3VwcHJlc3Npb24tPmxp bSwNCj4gPiArDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0VER0VfU1VQX0xJ TSk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXdyaXRlbChIV0RfVklJRl9ESVNBQkxFLA0KPiAm cmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19FREdFX1NVUF9TVyk7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJLyogY29sb3IgbGV2ZWwgKi8NCj4gPiArCWlmIChwYXJhbS0+Y29sb3JfbGV2 ZWwpIHsNCj4gPiArCQl3cml0ZWwocGFyYW0tPmNvbG9yX2xldmVsLT5jYl9nYWluLA0KPiAmcmVz LT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19DQl9HQUlOKTsNCj4gPiArCQl3cml0ZWwocGFy YW0tPmNvbG9yX2xldmVsLT5jcl9nYWluLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf VlBST19DUl9HQUlOKTsNCj4gPiArCQl3cml0ZWwocGFyYW0tPmNvbG9yX2xldmVsLT5jYnJfbWdh aW5fbWluLA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ0JSX01H QUlOX01JTik7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5jb2xvcl9sZXZlbC0+Y2JwX2dhaW5fbWF4 LA0KPiA+ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ0JfUF9HQUlOX01B WCk7DQo+ID4gKwkJd3JpdGVsKHBhcmFtLT5jb2xvcl9sZXZlbC0+Y2JtX2dhaW5fbWF4LA0KPiA+ ICsNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ0JfTV9HQUlOX01BWCk7DQo+ ID4gKwkJd3JpdGVsKHBhcmFtLT5jb2xvcl9sZXZlbC0+Y3JwX2dhaW5fbWF4LA0KPiA+ICsNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ1JfUF9HQUlOX01BWCk7DQo+ID4gKwkJ d3JpdGVsKHBhcmFtLT5jb2xvcl9sZXZlbC0+Y3JtX2dhaW5fbWF4LA0KPiA+ICsNCj4gJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ1JfTV9HQUlOX01BWCk7DQo+ID4gKwl9IGVsc2Ug ew0KPiA+ICsJCS8qIGRpc2FibGUgKi8NCj4gPiArCQl3cml0ZWwoMTAyNFUsICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NCX0dBSU4pOw0KPiA+ICsJCXdyaXRlbCgxMDI0VSwgJnJl cy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX1ZQUk9fQ1JfR0FJTik7DQo+ID4gKwkJd3JpdGVsKDEw MjRVLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19DQlJfTUdBSU5fTUlOKTsN Cj4gPiArCQl3cml0ZWwoMFUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NC X1BfR0FJTl9NQVgpOw0KPiA+ICsJCXdyaXRlbCgwVSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX1ZQUk9fQ0JfTV9HQUlOX01BWCk7DQo+ID4gKwkJd3JpdGVsKDBVLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfVlBST19DUl9QX0dBSU5fTUFYKTsNCj4gPiArCQl3cml0ZWwo MFUsDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9WUFJPX0NSX01fR0FJTl9NQVgpOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIGNvbG9yIG5vaXNlIHJlZHVjdGlvbiAqLw0KPiA+ICsJ d3JpdGVsKHBhcmFtLT5jb2xvcl9ub2lzZV9yZWR1Y3Rpb25fZW5hYmxlLA0KPiAmcmVzLT5jYXB0 dXJlX3JlZy0+bDFpc3AuTDFfVlBST19DTlJfU1cpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogaHdkX3ZpaWZfbDFfc2V0X2F2Z19sdW1f Z2VuZXJhdGlvbigpIC0gQ29uZmlndXJlIEwxSVNQIGF2ZXJhZ2UNCj4gbHVtaW5hbmNlIGdlbmVy YXRpb24gcGFyYW1ldGVycy4NCj4gPiArICoNCj4gPiArICogQHBhcmFtOiBwb2ludGVyIHRvIGF1 dG8gZXhwb3N1cmUgcGFyYW1ldGVycw0KPiA+ICsgKiBSZXR1cm46IDAgb3BlcmF0aW9uIGNvbXBs ZXRlZCBzdWNjZXNzZnVsbHkNCj4gPiArICogUmV0dXJuOiAtRUlOVkFMIFBhcmFtZXRlciBlcnJv cg0KPiA+ICsgKiAtIGVhY2ggcGFyYW1ldGVyIG9mICJwYXJhbSIgaXMgb3V0IG9mIHJhbmdlDQo+ ID4gKyAqLw0KPiA+ICtzMzIgaHdkX3ZpaWZfbDFfc2V0X2F2Z19sdW1fZ2VuZXJhdGlvbihzdHJ1 Y3QgaHdkX3ZpaWZfcmVzICpyZXMsDQo+ID4gKwkJCQkgICAgICAgY29uc3Qgc3RydWN0DQo+IHZp aWZfbDFfYXZnX2x1bV9nZW5lcmF0aW9uX2NvbmZpZyAqcGFyYW0pDQo+ID4gK3sNCj4gPiArCXUz MiBpZHgsIGo7DQo+ID4gKwl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCWlmICghcGFyYW0pIHsNCj4g PiArCQl3cml0ZWwoSFdEX1ZJSUZfRElTQUJMRSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNw LkwxX0FFWFBfT04pOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXZh bCA9IHJlYWRsKCZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9TWVNNX1dJRFRIKTsNCj4gPiAr CWlmIChwYXJhbS0+YWV4cF9zdGFydF94ID4gKHZhbCAtIDFVKSkNCj4gPiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gPiArDQo+ID4gKwlpZiAocGFyYW0tPmFleHBfYmxvY2tfd2lkdGggPA0KPiBIV0Rf VklJRl9MMV9BRVhQX01JTl9CTE9DS19XSURUSCB8fA0KPiA+ICsJICAgIHBhcmFtLT5hZXhwX2Js b2NrX3dpZHRoID4gdmFsKSB7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4g KwlpZiAocGFyYW0tPmFleHBfYmxvY2tfd2lkdGggJSA2NFUpDQo+ID4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gKw0KPiA+ICsJdmFsID0gcmVhZGwoJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwx X1NZU01fSEVJR0hUKTsNCj4gPiArCWlmIChwYXJhbS0+YWV4cF9zdGFydF95ID4gKHZhbCAtIDFV KSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwlpZiAocGFyYW0tPmFleHBf YmxvY2tfaGVpZ2h0IDwNCj4gSFdEX1ZJSUZfTDFfQUVYUF9NSU5fQkxPQ0tfSEVJR0hUIHx8DQo+ ID4gKwkgICAgcGFyYW0tPmFleHBfYmxvY2tfaGVpZ2h0ID4gdmFsKSB7DQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gKwlpZiAocGFyYW0tPmFleHBfYmxvY2tfaGVpZ2h0ICUg NjRVKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWZvciAoaWR4ID0gMDsg aWR4IDwgOFU7IGlkeCsrKSB7DQo+ID4gKwkJZm9yIChqID0gMDsgaiA8IDhVOyBqKyspIHsNCj4g PiArCQkJaWYgKHBhcmFtLT5hZXhwX3dlaWdodFtpZHhdW2pdID4NCj4gSFdEX1ZJSUZfTDFfQUVY UF9NQVhfV0VJR0hUKQ0KPiA+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJfQ0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCWlmIChwYXJhbS0+YWV4cF9zYXR1cl9yYXRpbyA+IEhXRF9WSUlGX0wx X0FFWFBfTUFYX0JMT0NLX1RIDQo+IHx8DQo+ID4gKwkgICAgcGFyYW0tPmFleHBfYmxhY2tfcmF0 aW8gPg0KPiBIV0RfVklJRl9MMV9BRVhQX01BWF9CTE9DS19USCB8fA0KPiA+ICsJICAgIHBhcmFt LT5hZXhwX3NhdHVyX2xldmVsID4NCj4gSFdEX1ZJSUZfTDFfQUVYUF9NQVhfU0FUVVJBVElPTl9Q SVhFTF9USCkgew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CWZvciAoaWR4ID0gMDsgaWR4IDwgNFU7IGlkeCsrKSB7DQo+ID4gKwkJaWYgKHBhcmFtLT5hZXhw X2F2ZTRsaW5lc3lbaWR4XSA+ICh2YWwgLSA0VSkpDQo+ID4gKwkJCXJldHVybiAtRUlOVkFMOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXdyaXRlbChIV0RfVklJRl9FTkFCTEUsICZyZXMtPmNhcHR1 cmVfcmVnLT5sMWlzcC5MMV9BRVhQX09OKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+YWV4cF9zdGFy dF94LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUVYUF9TVEFSVF9YKTsNCj4gPiAr CXdyaXRlbChwYXJhbS0+YWV4cF9zdGFydF95LA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3Au TDFfQUVYUF9TVEFSVF9ZKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+YWV4cF9ibG9ja193aWR0aCwN Cj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FFWFBfQkxPQ0tfV0lEVEgpOw0KPiA+ICsJ d3JpdGVsKHBhcmFtLT5hZXhwX2Jsb2NrX2hlaWdodCwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwx aXNwLkwxX0FFWFBfQkxPQ0tfSEVJR0hUKTsNCj4gPiArDQo+ID4gKwl2YWwgPSAocGFyYW0tPmFl eHBfd2VpZ2h0WzBdWzBdIDw8IDE0VSkgfA0KPiAocGFyYW0tPmFleHBfd2VpZ2h0WzBdWzFdIDw8 IDEyVSkgfA0KPiA+ICsJICAgICAgKHBhcmFtLT5hZXhwX3dlaWdodFswXVsyXSA8PCAxMFUpIHwN Cj4gKHBhcmFtLT5hZXhwX3dlaWdodFswXVszXSA8PCA4VSkgfA0KPiA+ICsJICAgICAgKHBhcmFt LT5hZXhwX3dlaWdodFswXVs0XSA8PCA2VSkgfA0KPiAocGFyYW0tPmFleHBfd2VpZ2h0WzBdWzVd IDw8IDRVKSB8DQo+ID4gKwkgICAgICAocGFyYW0tPmFleHBfd2VpZ2h0WzBdWzZdIDw8IDJVKSB8 DQo+IChwYXJhbS0+YWV4cF93ZWlnaHRbMF1bN10pOw0KPiA+ICsJd3JpdGVsKHZhbCwgJnJlcy0+ Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FFWFBfV0VJR0hUXzApOw0KPiA+ICsNCj4gPiArCXZhbCA9 IChwYXJhbS0+YWV4cF93ZWlnaHRbMV1bMF0gPDwgMTRVKSB8DQo+IChwYXJhbS0+YWV4cF93ZWln aHRbMV1bMV0gPDwgMTJVKSB8DQo+ID4gKwkgICAgICAocGFyYW0tPmFleHBfd2VpZ2h0WzFdWzJd IDw8IDEwVSkgfA0KPiAocGFyYW0tPmFleHBfd2VpZ2h0WzFdWzNdIDw8IDhVKSB8DQo+ID4gKwkg ICAgICAocGFyYW0tPmFleHBfd2VpZ2h0WzFdWzRdIDw8IDZVKSB8DQo+IChwYXJhbS0+YWV4cF93 ZWlnaHRbMV1bNV0gPDwgNFUpIHwNCj4gPiArCSAgICAgIChwYXJhbS0+YWV4cF93ZWlnaHRbMV1b Nl0gPDwgMlUpIHwNCj4gKHBhcmFtLT5hZXhwX3dlaWdodFsxXVs3XSk7DQo+ID4gKwl3cml0ZWwo dmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUVYUF9XRUlHSFRfMSk7DQo+ID4gKw0K PiA+ICsJdmFsID0gKHBhcmFtLT5hZXhwX3dlaWdodFsyXVswXSA8PCAxNFUpIHwNCj4gKHBhcmFt LT5hZXhwX3dlaWdodFsyXVsxXSA8PCAxMlUpIHwNCj4gPiArCSAgICAgIChwYXJhbS0+YWV4cF93 ZWlnaHRbMl1bMl0gPDwgMTBVKSB8DQo+IChwYXJhbS0+YWV4cF93ZWlnaHRbMl1bM10gPDwgOFUp IHwNCj4gPiArCSAgICAgIChwYXJhbS0+YWV4cF93ZWlnaHRbMl1bNF0gPDwgNlUpIHwNCj4gKHBh cmFtLT5hZXhwX3dlaWdodFsyXVs1XSA8PCA0VSkgfA0KPiA+ICsJICAgICAgKHBhcmFtLT5hZXhw X3dlaWdodFsyXVs2XSA8PCAyVSkgfA0KPiAocGFyYW0tPmFleHBfd2VpZ2h0WzJdWzddKTsNCj4g PiArCXdyaXRlbCh2YWwsICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BRVhQX1dFSUdIVF8y KTsNCj4gPiArDQo+ID4gKwl2YWwgPSAocGFyYW0tPmFleHBfd2VpZ2h0WzNdWzBdIDw8IDE0VSkg fA0KPiAocGFyYW0tPmFleHBfd2VpZ2h0WzNdWzFdIDw8IDEyVSkgfA0KPiA+ICsJICAgICAgKHBh cmFtLT5hZXhwX3dlaWdodFszXVsyXSA8PCAxMFUpIHwNCj4gKHBhcmFtLT5hZXhwX3dlaWdodFsz XVszXSA8PCA4VSkgfA0KPiA+ICsJICAgICAgKHBhcmFtLT5hZXhwX3dlaWdodFszXVs0XSA8PCA2 VSkgfA0KPiAocGFyYW0tPmFleHBfd2VpZ2h0WzNdWzVdIDw8IDRVKSB8DQo+ID4gKwkgICAgICAo cGFyYW0tPmFleHBfd2VpZ2h0WzNdWzZdIDw8IDJVKSB8DQo+IChwYXJhbS0+YWV4cF93ZWlnaHRb M11bN10pOw0KPiA+ICsJd3JpdGVsKHZhbCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FF WFBfV0VJR0hUXzMpOw0KPiA+ICsNCj4gPiArCXZhbCA9IChwYXJhbS0+YWV4cF93ZWlnaHRbNF1b MF0gPDwgMTRVKSB8DQo+IChwYXJhbS0+YWV4cF93ZWlnaHRbNF1bMV0gPDwgMTJVKSB8DQo+ID4g KwkgICAgICAocGFyYW0tPmFleHBfd2VpZ2h0WzRdWzJdIDw8IDEwVSkgfA0KPiAocGFyYW0tPmFl eHBfd2VpZ2h0WzRdWzNdIDw8IDhVKSB8DQo+ID4gKwkgICAgICAocGFyYW0tPmFleHBfd2VpZ2h0 WzRdWzRdIDw8IDZVKSB8DQo+IChwYXJhbS0+YWV4cF93ZWlnaHRbNF1bNV0gPDwgNFUpIHwNCj4g PiArCSAgICAgIChwYXJhbS0+YWV4cF93ZWlnaHRbNF1bNl0gPDwgMlUpIHwNCj4gKHBhcmFtLT5h ZXhwX3dlaWdodFs0XVs3XSk7DQo+ID4gKwl3cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+ bDFpc3AuTDFfQUVYUF9XRUlHSFRfNCk7DQo+ID4gKw0KPiA+ICsJdmFsID0gKHBhcmFtLT5hZXhw X3dlaWdodFs1XVswXSA8PCAxNFUpIHwNCj4gKHBhcmFtLT5hZXhwX3dlaWdodFs1XVsxXSA8PCAx MlUpIHwNCj4gPiArCSAgICAgIChwYXJhbS0+YWV4cF93ZWlnaHRbNV1bMl0gPDwgMTBVKSB8DQo+ IChwYXJhbS0+YWV4cF93ZWlnaHRbNV1bM10gPDwgOFUpIHwNCj4gPiArCSAgICAgIChwYXJhbS0+ YWV4cF93ZWlnaHRbNV1bNF0gPDwgNlUpIHwNCj4gKHBhcmFtLT5hZXhwX3dlaWdodFs1XVs1XSA8 PCA0VSkgfA0KPiA+ICsJICAgICAgKHBhcmFtLT5hZXhwX3dlaWdodFs1XVs2XSA8PCAyVSkgfA0K PiAocGFyYW0tPmFleHBfd2VpZ2h0WzVdWzddKTsNCj4gPiArCXdyaXRlbCh2YWwsICZyZXMtPmNh cHR1cmVfcmVnLT5sMWlzcC5MMV9BRVhQX1dFSUdIVF81KTsNCj4gPiArDQo+ID4gKwl2YWwgPSAo cGFyYW0tPmFleHBfd2VpZ2h0WzZdWzBdIDw8IDE0VSkgfA0KPiAocGFyYW0tPmFleHBfd2VpZ2h0 WzZdWzFdIDw8IDEyVSkgfA0KPiA+ICsJICAgICAgKHBhcmFtLT5hZXhwX3dlaWdodFs2XVsyXSA8 PCAxMFUpIHwNCj4gKHBhcmFtLT5hZXhwX3dlaWdodFs2XVszXSA8PCA4VSkgfA0KPiA+ICsJICAg ICAgKHBhcmFtLT5hZXhwX3dlaWdodFs2XVs0XSA8PCA2VSkgfA0KPiAocGFyYW0tPmFleHBfd2Vp Z2h0WzZdWzVdIDw8IDRVKSB8DQo+ID4gKwkgICAgICAocGFyYW0tPmFleHBfd2VpZ2h0WzZdWzZd IDw8IDJVKSB8DQo+IChwYXJhbS0+YWV4cF93ZWlnaHRbNl1bN10pOw0KPiA+ICsJd3JpdGVsKHZh bCwgJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FFWFBfV0VJR0hUXzYpOw0KPiA+ICsNCj4g PiArCXZhbCA9IChwYXJhbS0+YWV4cF93ZWlnaHRbN11bMF0gPDwgMTRVKSB8DQo+IChwYXJhbS0+ YWV4cF93ZWlnaHRbN11bMV0gPDwgMTJVKSB8DQo+ID4gKwkgICAgICAocGFyYW0tPmFleHBfd2Vp Z2h0WzddWzJdIDw8IDEwVSkgfA0KPiAocGFyYW0tPmFleHBfd2VpZ2h0WzddWzNdIDw8IDhVKSB8 DQo+ID4gKwkgICAgICAocGFyYW0tPmFleHBfd2VpZ2h0WzddWzRdIDw8IDZVKSB8DQo+IChwYXJh bS0+YWV4cF93ZWlnaHRbN11bNV0gPDwgNFUpIHwNCj4gPiArCSAgICAgIChwYXJhbS0+YWV4cF93 ZWlnaHRbN11bNl0gPDwgMlUpIHwNCj4gKHBhcmFtLT5hZXhwX3dlaWdodFs3XVs3XSk7DQo+ID4g Kwl3cml0ZWwodmFsLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQUVYUF9XRUlHSFRfNyk7 DQo+ID4gKw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5hZXhwX3NhdHVyX3JhdGlvLA0KPiAmcmVzLT5j YXB0dXJlX3JlZy0+bDFpc3AuTDFfQUVYUF9TQVRVUl9SQVRJTyk7DQo+ID4gKwl3cml0ZWwocGFy YW0tPmFleHBfYmxhY2tfcmF0aW8sDQo+ICZyZXMtPmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BRVhQ X0JMQUNLX1JBVElPKTsNCj4gPiArCXdyaXRlbChwYXJhbS0+YWV4cF9zYXR1cl9sZXZlbCwNCj4g JnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FFWFBfU0FUVVJfTEVWRUwpOw0KPiA+ICsNCj4g PiArCXdyaXRlbChwYXJhbS0+YWV4cF9hdmU0bGluZXN5WzBdLA0KPiAmcmVzLT5jYXB0dXJlX3Jl Zy0+bDFpc3AuTDFfQUVYUF9BVkU0TElORVNZMCk7DQo+ID4gKwl3cml0ZWwocGFyYW0tPmFleHBf YXZlNGxpbmVzeVsxXSwNCj4gJnJlcy0+Y2FwdHVyZV9yZWctPmwxaXNwLkwxX0FFWFBfQVZFNExJ TkVTWTEpOw0KPiA+ICsJd3JpdGVsKHBhcmFtLT5hZXhwX2F2ZTRsaW5lc3lbMl0sDQo+ICZyZXMt PmNhcHR1cmVfcmVnLT5sMWlzcC5MMV9BRVhQX0FWRTRMSU5FU1kyKTsNCj4gPiArCXdyaXRlbChw YXJhbS0+YWV4cF9hdmU0bGluZXN5WzNdLA0KPiAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFf QUVYUF9BVkU0TElORVNZMyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiBod2RfdmlpZl9sMV9zZXRfaXJxX21hc2soKSAtIFNldCBMMUlT UCBpbnRlcnJ1cHRpb24gbWFzay4NCj4gPiArICoNCj4gPiArICogQG1hc2s6IG1hc2sgc2V0dGlu Zw0KPiA+ICsgKiBSZXR1cm46IE5vbmUNCj4gPiArICovDQo+ID4gK3ZvaWQgaHdkX3ZpaWZfbDFf c2V0X2lycV9tYXNrKHN0cnVjdCBod2RfdmlpZl9yZXMgKnJlcywgdTMyIG1hc2spDQo+ID4gK3sN Cj4gPiArCXdyaXRlbChtYXNrLCAmcmVzLT5jYXB0dXJlX3JlZy0+bDFpc3AuTDFfQ1JHQkZfSVNQ X0lOVF9NQVNLKTsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL3Zpc2NvbnRpL3ZpaWZfY29udHJvbHMuYw0KPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v dmlzY29udGkvdmlpZl9jb250cm9scy5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwMC4uMjc5M2ZiMGE4MDcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS92aWlmX2NvbnRyb2xzLmMNCj4gPiBA QCAtMCwwICsxLDExNTMgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgT1IgQlNELTItQ2xhdXNlDQo+ID4gKy8qIFRvc2hpYmEgVmlzY29udGkgVmlkZW8gQ2FwdHVy ZSBTdXBwb3J0DQo+ID4gKyAqDQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMiBUT1NISUJBIENP UlBPUkFUSU9ODQo+ID4gKyAqIChDKSBDb3B5cmlnaHQgMjAyMiBUb3NoaWJhIEVsZWN0cm9uaWMg RGV2aWNlcyAmIFN0b3JhZ2UgQ29ycG9yYXRpb24NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4N Cj4gPiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItY29tbW9uLmg+DQo+ID4gKyNpbmNsdWRlIDxtZWRp YS92NGwyLXN1YmRldi5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgInZpaWYuaCINCj4gPiArDQo+ ID4gK3N0YXRpYyBpbnQgdmlpZl9tYWluX3NldF9yYXdwYWNrX21vZGUoc3RydWN0IHZpaWZfZGV2 aWNlICp2aWlmX2RldiwgdTMyDQo+ICpyYXdwYWNrKQ0KPiA+ICt7DQo+ID4gKwlpZiAodmIyX2lz X3N0cmVhbWluZygmdmlpZl9kZXYtPmNhcF9kZXYwLnZiMl92cSkpDQo+ID4gKwkJcmV0dXJuIC1F QlVTWTsNCj4gPiArDQo+ID4gKwlpZiAoKnJhd3BhY2sgPT0gVklJRl9SQVdQQUNLX0RJU0FCTEUp IHsNCj4gPiArCQl2aWlmX2Rldi0+cmF3cGFja19tb2RlID0gSFdEX1ZJSUZfUkFXUEFDS19ESVNB QkxFOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKCpyYXdwYWNrID09IFZJ SUZfUkFXUEFDS19NU0JGSVJTVCkgew0KPiA+ICsJCXZpaWZfZGV2LT5yYXdwYWNrX21vZGUgPSBI V0RfVklJRl9SQVdQQUNLX01TQkZJUlNUOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ ICsJaWYgKCpyYXdwYWNrID09IFZJSUZfUkFXUEFDS19MU0JGSVJTVCkgew0KPiA+ICsJCXZpaWZf ZGV2LT5yYXdwYWNrX21vZGUgPSBIV0RfVklJRl9SQVdQQUNLX0xTQkZJUlNUOw0KPiA+ICsJCXJl dHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAtRUlOVkFMOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpaWZfbDFfc2V0X2lucHV0X21vZGUoc3RydWN0IHZpaWZf ZGV2aWNlICp2aWlmX2RldiwNCj4gPiArCQkJCSAgc3RydWN0IHZpaWZfbDFfaW5wdXRfbW9kZV9j b25maWcNCj4gKmlucHV0X21vZGUpDQo+ID4gK3sNCj4gPiArCXUzMiBtb2RlLCByYXdfY29sb3Jf ZmlsdGVyOw0KPiA+ICsJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsNCj4gPiArCWludCByZXQ7DQo+ ID4gKw0KPiA+ICsJLyogU0RSIGlucHV0IGlzIG5vdCBzdXBwb3J0ZWQgKi8NCj4gPiArCWlmIChp bnB1dF9tb2RlLT5tb2RlID09IFZJSUZfTDFfSU5QVVRfSERSKQ0KPiA+ICsJCW1vZGUgPSBIV0Rf VklJRl9MMV9JTlBVVF9IRFI7DQo+ID4gKwllbHNlIGlmIChpbnB1dF9tb2RlLT5tb2RlID09IFZJ SUZfTDFfSU5QVVRfUFdMKQ0KPiA+ICsJCW1vZGUgPSBIV0RfVklJRl9MMV9JTlBVVF9QV0w7DQo+ ID4gKwllbHNlIGlmIChpbnB1dF9tb2RlLT5tb2RlID09IFZJSUZfTDFfSU5QVVRfSERSX0lNR19D T1JSRUNUKQ0KPiA+ICsJCW1vZGUgPSBIV0RfVklJRl9MMV9JTlBVVF9IRFJfSU1HX0NPUlJFQ1Q7 DQo+ID4gKwllbHNlIGlmIChpbnB1dF9tb2RlLT5tb2RlID09IFZJSUZfTDFfSU5QVVRfUFdMX0lN R19DT1JSRUNUKQ0KPiA+ICsJCW1vZGUgPSBIV0RfVklJRl9MMV9JTlBVVF9QV0xfSU1HX0NPUlJF Q1Q7DQo+ID4gKwllbHNlDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJaWYg KGlucHV0X21vZGUtPnJhd19jb2xvcl9maWx0ZXIgPT0gVklJRl9MMV9SQVdfR1JfUl9CX0dCKQ0K PiA+ICsJCXJhd19jb2xvcl9maWx0ZXIgPSBIV0RfVklJRl9MMV9SQVdfR1JfUl9CX0dCOw0KPiA+ ICsJZWxzZSBpZiAoaW5wdXRfbW9kZS0+cmF3X2NvbG9yX2ZpbHRlciA9PSBWSUlGX0wxX1JBV19S X0dSX0dCX0IpDQo+ID4gKwkJcmF3X2NvbG9yX2ZpbHRlciA9IEhXRF9WSUlGX0wxX1JBV19SX0dS X0dCX0I7DQo+ID4gKwllbHNlIGlmIChpbnB1dF9tb2RlLT5yYXdfY29sb3JfZmlsdGVyID09IFZJ SUZfTDFfUkFXX0JfR0JfR1JfUikNCj4gPiArCQlyYXdfY29sb3JfZmlsdGVyID0gSFdEX1ZJSUZf TDFfUkFXX0JfR0JfR1JfUjsNCj4gPiArCWVsc2UgaWYgKGlucHV0X21vZGUtPnJhd19jb2xvcl9m aWx0ZXIgPT0gVklJRl9MMV9SQVdfR0JfQl9SX0dSKQ0KPiA+ICsJCXJhd19jb2xvcl9maWx0ZXIg PSBIV0RfVklJRl9MMV9SQVdfR0JfQl9SX0dSOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXJldHVybiAt RUlOVkFMOw0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ2aWlmX2Rldi0+bG9jaywg aXJxZmxhZ3MpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX3N0YXJ0KHZpaWZfZGV2LT5od2Rf cmVzKTsNCj4gPiArCXJldCA9IGh3ZF92aWlmX2wxX3NldF9pbnB1dF9tb2RlKHZpaWZfZGV2LT5o d2RfcmVzLCBtb2RlLA0KPiBpbnB1dF9tb2RlLT5kZXB0aCwNCj4gPiArCQkJCQkgcmF3X2NvbG9y X2ZpbHRlcik7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZfZGV2LT5od2RfcmVz KTsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFn cyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludCB2aWlmX2wxX3NldF9yZ2JfdG9feV9jb2VmKHN0cnVjdCB2aWlmX2RldmljZSAqdmlpZl9k ZXYsDQo+ID4gKwkJCQkgICAgIHN0cnVjdCB2aWlmX2wxX3JnYl90b195X2NvZWZfY29uZmlnDQo+ ICpsMV9yZ2JfdG9feV9jb2VmKQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsJdW5zaWdu ZWQgbG9uZyBpcnFmbGFnczsNCj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdmlpZl9k ZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArCWh3ZF92aWlmX2lzcF9ndWFyZF9zdGFydCh2aWlm X2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwlyZXQgPSBod2RfdmlpZl9sMV9zZXRfcmdiX3RvX3lfY29l Zih2aWlmX2Rldi0+aHdkX3JlcywNCj4gbDFfcmdiX3RvX3lfY29lZi0+Y29lZl9yLA0KPiA+ICsJ CQkJCSAgICBsMV9yZ2JfdG9feV9jb2VmLT5jb2VmX2csDQo+IGwxX3JnYl90b195X2NvZWYtPmNv ZWZfYik7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZfZGV2LT5od2RfcmVzKTsN Cj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlu dCB2aWlmX2wxX3NldF9hZ19tb2RlKHN0cnVjdCB2aWlmX2RldmljZSAqdmlpZl9kZXYsDQo+ID4g KwkJCSAgICAgICBzdHJ1Y3QgdmlpZl9sMV9hZ19tb2RlX2NvbmZpZyAqbDFfYWdfbW9kZSkNCj4g PiArew0KPiA+ICsJaW50IHJldDsNCj4gPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+ID4g Kw0KPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfc3RhcnQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJ cmV0ID0gaHdkX3ZpaWZfbDFfc2V0X2FnX21vZGUodmlpZl9kZXYtPmh3ZF9yZXMsIGwxX2FnX21v ZGUpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX2VuZCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0K PiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQg dmlpZl9sMV9zZXRfYWcoc3RydWN0IHZpaWZfZGV2aWNlICp2aWlmX2Rldiwgc3RydWN0IHZpaWZf bDFfYWdfY29uZmlnDQo+ICpsMV9hZykNCj4gPiArew0KPiA+ICsJdW5zaWduZWQgbG9uZyBpcnFm bGFnczsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnZp aWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfc3RhcnQo dmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJcmV0ID0gaHdkX3ZpaWZfbDFfc2V0X2FnKHZpaWZf ZGV2LT5od2RfcmVzLCBsMV9hZy0+Z2Fpbl9oLA0KPiBsMV9hZy0+Z2Fpbl9tLCBsMV9hZy0+Z2Fp bl9sKTsNCj4gPiArCWh3ZF92aWlmX2lzcF9ndWFyZF9lbmQodmlpZl9kZXYtPmh3ZF9yZXMpOw0K PiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmlpZl9kZXYtPmxvY2ssIGlycWZsYWdzKTsN Cj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 IHZpaWZfbDFfc2V0X2hkcmUoc3RydWN0IHZpaWZfZGV2aWNlICp2aWlmX2Rldiwgc3RydWN0DQo+ IHZpaWZfbDFfaGRyZV9jb25maWcgKmwxX2hkcmUpDQo+ID4gK3sNCj4gPiArCXVuc2lnbmVkIGxv bmcgaXJxZmxhZ3M7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFz YXZlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJk X3N0YXJ0KHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXJldCA9IGh3ZF92aWlmX2wxX3NldF9o ZHJlKHZpaWZfZGV2LT5od2RfcmVzLCBsMV9oZHJlKTsNCj4gPiArCWh3ZF92aWlmX2lzcF9ndWFy ZF9lbmQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm dmlpZl9kZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpaWZfbDFfc2V0X2ltZ19leHRyYWN0aW9uKHN0 cnVjdCB2aWlmX2RldmljZSAqdmlpZl9kZXYsDQo+ID4gKwkJCQkgICAgICBzdHJ1Y3QgdmlpZl9s MV9pbWdfZXh0cmFjdGlvbl9jb25maWcNCj4gKmltZ19leHRyYWN0KQ0KPiA+ICt7DQo+ID4gKwl1 bnNpZ25lZCBsb25nIGlycWZsYWdzOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlzcGlu X2xvY2tfaXJxc2F2ZSgmdmlpZl9kZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArCWh3ZF92aWlm X2lzcF9ndWFyZF9zdGFydCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwlyZXQgPSBod2Rfdmlp Zl9sMV9zZXRfaW1nX2V4dHJhY3Rpb24odmlpZl9kZXYtPmh3ZF9yZXMsDQo+IGltZ19leHRyYWN0 LT5pbnB1dF9ibGFja19nciwNCj4gPiArCQkJCQkgICAgIGltZ19leHRyYWN0LT5pbnB1dF9ibGFj a19yLA0KPiBpbWdfZXh0cmFjdC0+aW5wdXRfYmxhY2tfYiwNCj4gPiArCQkJCQkgICAgIGltZ19l eHRyYWN0LT5pbnB1dF9ibGFja19nYik7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZp aWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2 LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArI2RlZmluZSBWSVNDT05USV9WSUlGX0RQQ19UQUJMRV9TSVpFIDgxOTINCj4gPiAr c3RhdGljIGludCB2aWlmX2wxX3NldF9kcGMoc3RydWN0IHZpaWZfZGV2aWNlICp2aWlmX2Rldiwg c3RydWN0IHZpaWZfbDFfZHBjX2NvbmZpZw0KPiAqbDFfZHBjKQ0KPiA+ICt7DQo+ID4gKwl1aW50 cHRyX3QgdGFibGVfaF9wYWRkciA9IDA7DQo+ID4gKwl1aW50cHRyX3QgdGFibGVfbV9wYWRkciA9 IDA7DQo+ID4gKwl1aW50cHRyX3QgdGFibGVfbF9wYWRkciA9IDA7DQo+ID4gKwl1bnNpZ25lZCBs b25nIGlycWZsYWdzOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlpZiAobDFfZHBjLT50 YWJsZV9oX2FkZHIpIHsNCj4gPiArCQlpZiAoY29weV9mcm9tX3VzZXIodmlpZl9kZXYtPnRhYmxl X3ZhZGRyLT5kcGNfdGFibGVfaCwNCj4gPiArCQkJCSAgIHU2NF90b191c2VyX3B0cihsMV9kcGMt PnRhYmxlX2hfYWRkciksDQo+ID4gKwkJCQkgICBWSVNDT05USV9WSUlGX0RQQ19UQUJMRV9TSVpF KSkNCj4gPiArCQkJcmV0dXJuIC1FRkFVTFQ7DQo+IA0KPiBOQUNLIQ0KPiANCj4gSSB0aG91Z2h0 IHRob3NlIGFkZHJlc3NlcyBpbiBhIHN0cnVjdCB3ZXJlIGlmZnkuIFRoaXMgaXMgbm90IHN1cHBv cnRlZCwgaXQNCj4gYmFzaWNhbGx5IGJ5cGFzc2VzIHRoZSB3aG9sZSBjb250cm9sIGZyYW1ld29y ay4NCg0KSSB1bmRlcnN0YW5kLiANCg0KPiBUaGUgd2F5IHRvIGRvIHRoaXMgaXMgdG8gY3JlYXRl IHNlcGFyYXRlIGFycmF5IGNvbnRyb2xzIGZvciB0aGVzZSB0YWJsZXMuDQo+IEFuZCB0YWJsZV9o X2FkZHIgYmVjb21lcyBhIHNpbXBsZSAwIG9yIDEgdmFsdWUsIGluZGljYXRpbmcgd2hldGhlciB0 byB1c2UNCj4gdGhlIHRhYmxlIHNldCBieSB0aGF0IGNvbnRyb2wuIEZvciBzbWFsbCBhcnJheXMg aXQgaXMgYWxzbyBhbiBvcHRpb24gdG8NCj4gZW1iZWQgdGhlbSBpbiB0aGUgY29udHJvbCBzdHJ1 Y3R1cmUuDQoNCkFzIEkgd3JvdGUgaW4gcmVwbHkgZm9yIHBhdGNoIDIvNiwgSSB0aG91Z2h0IGVt YmVkZGluZyBpcyB0aGUgb25seSBzb2x1dGlvbi4NClRoYW5rIHlvdSBmb3IgZ2l2aW5nIGFub3Ro ZXIgcGxhbjogYWRkaW5nIGNvbnRyb2xzIGZvciB0YWJsZXMuDQpXaGVuIEkgdXNlIGluZGl2aWR1 YWwgY29udHJvbHMgZm9yIHRhYmxlcywgYXJlIHRoZXJlIHNvbWUgb3JkZXJpbmdzIGJldHdlZW4g Y29udHJvbHM/DQogLS0gc3VjaCB0aGF0IGNvbnRyb2wgRFBDX1RBQkxFX3tILE0sTH0gc2hvdWxk IGJlIGNvbmZpZ3VyZWQgYmVmb3JlIFNFVF9EUEMNCg0KPiBBcmUgdGhlc2UgbCwgaCBhbmQgbSB0 YWJsZXMgaW5kZXBlbmRlbnQgZnJvbSBvbmUgYW5vdGhlcj8gSS5lLiBpcyBpdCBwb3NzaWJsZQ0K PiB0byBzZXQgbCBidXQgbm90IGggYW5kIG0/IEkgc3VzcGVjdCBpdCBpcyBhbGwgb3Igbm90aGlu ZywgYW5kIGluIHRoYXQgY2FzZSB5b3UNCj4gbmVlZCBvbmx5IGEgc2luZ2xlIGNvbnRyb2wgdG8g c2V0IGFsbCB0aHJlZSB0YWJsZXMgKGEgdHdvIGRpbWVuc2lvbmFsIGFycmF5KS4NCg0KVGhlc2Ug dGhyZWUgdGFibGVzIGNhbiBiZSBzZXR1cCBpbmRpdmlkdWFsbHkuDQoNCj4gQW55d2F5LCB0aGUg c2FtZSBpc3N1ZSBhcHBsaWVzIHRvIGFsbCB0aGUgY29udHJvbHMgd2VyZSB5b3UgcGFzcyBhZGRy ZXNzZXMgZm9yDQo+IHRhYmxlcywgdGhhdCBhbGwgbmVlZHMgdG8gY2hhbmdlLg0KDQpBbGwgcmln aHQuIFRoZXNlIGNvbnRyb2xzIG11c3QgYmUgZml4ZWQuDQoNCj4gPiArCQl0YWJsZV9oX3BhZGRy ID0NCj4gKHVpbnRwdHJfdCl2aWlmX2Rldi0+dGFibGVfcGFkZHItPmRwY190YWJsZV9oOw0KPiA+ ICsJfQ0KPiA+ICsJaWYgKGwxX2RwYy0+dGFibGVfbV9hZGRyKSB7DQo+ID4gKwkJaWYgKGNvcHlf ZnJvbV91c2VyKHZpaWZfZGV2LT50YWJsZV92YWRkci0+ZHBjX3RhYmxlX20sDQo+ID4gKwkJCQkg ICB1NjRfdG9fdXNlcl9wdHIobDFfZHBjLT50YWJsZV9tX2FkZHIpLA0KPiA+ICsJCQkJICAgVklT Q09OVElfVklJRl9EUENfVEFCTEVfU0laRSkpDQo+ID4gKwkJCXJldHVybiAtRUZBVUxUOw0KPiA+ ICsJCXRhYmxlX21fcGFkZHIgPQ0KPiAodWludHB0cl90KXZpaWZfZGV2LT50YWJsZV9wYWRkci0+ ZHBjX3RhYmxlX207DQo+ID4gKwl9DQo+ID4gKwlpZiAobDFfZHBjLT50YWJsZV9sX2FkZHIpIHsN Cj4gPiArCQlpZiAoY29weV9mcm9tX3VzZXIodmlpZl9kZXYtPnRhYmxlX3ZhZGRyLT5kcGNfdGFi bGVfbCwNCj4gPiArCQkJCSAgIHU2NF90b191c2VyX3B0cihsMV9kcGMtPnRhYmxlX2xfYWRkciks DQo+ID4gKwkJCQkgICBWSVNDT05USV9WSUlGX0RQQ19UQUJMRV9TSVpFKSkNCj4gPiArCQkJcmV0 dXJuIC1FRkFVTFQ7DQo+ID4gKwkJdGFibGVfbF9wYWRkciA9ICh1aW50cHRyX3QpdmlpZl9kZXYt PnRhYmxlX3BhZGRyLT5kcGNfdGFibGVfbDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlzcGluX2xv Y2tfaXJxc2F2ZSgmdmlpZl9kZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArCWh3ZF92aWlmX2lz cF9ndWFyZF9zdGFydCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwlyZXQgPSBod2RfdmlpZl9s MV9zZXRfZHBjX3RhYmxlX3RyYW5zbWlzc2lvbih2aWlmX2Rldi0+aHdkX3JlcywNCj4gdGFibGVf aF9wYWRkciwNCj4gPiArCQkJCQkJICAgICB0YWJsZV9tX3BhZGRyLA0KPiB0YWJsZV9sX3BhZGRy KTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJZ290byBlcnI7DQo+ID4gKw0KPiA+ICsJcmV0ID0g aHdkX3ZpaWZfbDFfc2V0X2RwYyh2aWlmX2Rldi0+aHdkX3JlcywgJmwxX2RwYy0+cGFyYW1faCwN Cj4gJmwxX2RwYy0+cGFyYW1fbSwNCj4gPiArCQkJCSAgJmwxX2RwYy0+cGFyYW1fbCk7DQo+ID4g Kw0KPiA+ICtlcnI6DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZfZGV2LT5od2Rf cmVzKTsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFm bGFncyk7DQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 DQo+ID4gK3ZpaWZfbDFfc2V0X3ByZXNldF93aGl0ZV9iYWxhbmNlKHN0cnVjdCB2aWlmX2Rldmlj ZSAqdmlpZl9kZXYsDQo+ID4gKwkJCQkgc3RydWN0IHZpaWZfbDFfcHJlc2V0X3doaXRlX2JhbGFu Y2VfY29uZmlnDQo+ICpsMV9wcmVzZXRfd2IpDQo+ID4gK3sNCj4gPiArCXVuc2lnbmVkIGxvbmcg aXJxZmxhZ3M7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFzYXZl KCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX3N0 YXJ0KHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXJldCA9IGh3ZF92aWlmX2wxX3NldF9wcmVz ZXRfd2hpdGVfYmFsYW5jZSh2aWlmX2Rldi0+aHdkX3JlcywNCj4gbDFfcHJlc2V0X3diLT5kc3Rt YXh2YWwsDQo+ID4gKwkJCQkJCSAgICZsMV9wcmVzZXRfd2ItPnBhcmFtX2gsDQo+ICZsMV9wcmVz ZXRfd2ItPnBhcmFtX20sDQo+ID4gKw0KPiAmbDFfcHJlc2V0X3diLT5wYXJhbV9sKTsNCj4gPiAr CWh3ZF92aWlmX2lzcF9ndWFyZF9lbmQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmdmlpZl9kZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArDQo+ID4g KwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK3ZpaWZf bDFfc2V0X3Jhd19jb2xvcl9ub2lzZV9yZWR1Y3Rpb24oc3RydWN0IHZpaWZfZGV2aWNlICp2aWlm X2RldiwNCj4gPiArCQkJCSAgICAgIHN0cnVjdA0KPiB2aWlmX2wxX3Jhd19jb2xvcl9ub2lzZV9y ZWR1Y3Rpb25fY29uZmlnICpyYXdfY29sb3IpDQo+ID4gK3sNCj4gPiArCXVuc2lnbmVkIGxvbmcg aXJxZmxhZ3M7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFzYXZl KCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX3N0 YXJ0KHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXJldCA9IGh3ZF92aWlmX2wxX3NldF9yYXdf Y29sb3Jfbm9pc2VfcmVkdWN0aW9uKHZpaWZfZGV2LT5od2RfcmVzLA0KPiAmcmF3X2NvbG9yLT5w YXJhbV9oLA0KPiA+ICsNCj4gCSZyYXdfY29sb3ItPnBhcmFtX20sICZyYXdfY29sb3ItPnBhcmFt X2wpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX2VuZCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0K PiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQg dmlpZl9sMV9zZXRfaGRycyhzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LCBzdHJ1Y3QNCj4g dmlpZl9sMV9oZHJzX2NvbmZpZyAqaGRycykNCj4gPiArew0KPiA+ICsJdW5zaWduZWQgbG9uZyBp cnFmbGFnczsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUo JnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfc3Rh cnQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJcmV0ID0gaHdkX3ZpaWZfbDFfc2V0X2hkcnMo dmlpZl9kZXYtPmh3ZF9yZXMsIGhkcnMpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX2VuZCh2 aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2aWlmX2Rl di0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgdmlpZl9sMV9zZXRfYmxhY2tfbGV2ZWxfY29ycmVjdGlvbihz dHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LA0KPiA+ICsJCQkJCSAgICAgIHN0cnVjdA0KPiB2 aWlmX2wxX2JsYWNrX2xldmVsX2NvcnJlY3Rpb25fY29uZmlnICpibGMpDQo+ID4gK3sNCj4gPiAr CXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXNw aW5fbG9ja19pcnFzYXZlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsJaHdkX3Zp aWZfaXNwX2d1YXJkX3N0YXJ0KHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXJldCA9IGh3ZF92 aWlmX2wxX3NldF9ibGFja19sZXZlbF9jb3JyZWN0aW9uKHZpaWZfZGV2LT5od2RfcmVzLCBibGMp Ow0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX2VuZCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4g KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgVklTQ09O VElfVklJRl9MU0NfVEFCTEVfQllURVMgMTUzNg0KPiA+ICsNCj4gPiArc3RhdGljIGludCB2aWlm X2wxX3NldF9sc2Moc3RydWN0IHZpaWZfZGV2aWNlICp2aWlmX2Rldiwgc3RydWN0IHZpaWZfbDFf bHNjX2NvbmZpZw0KPiAqbDFfbHNjKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgdmlpZl9sMV9sc2Nf cGFyYWJvbGFfcGFyYW0gbHNjX3BhcmE7DQo+ID4gKwlzdHJ1Y3QgdmlpZl9sMV9sc2NfZ3JpZF9w YXJhbSBsc2NfZ3JpZDsNCj4gPiArCXN0cnVjdCBod2RfdmlpZl9sMV9sc2MgaHdkX3BhcmFtczsN Cj4gPiArCXN0cnVjdCB2aWlmX2wxX2xzYyBsc2NfcGFyYW1zOw0KPiA+ICsJdWludHB0cl90IHRh YmxlX2dyX3BhZGRyID0gMDsNCj4gPiArCXVpbnRwdHJfdCB0YWJsZV9nYl9wYWRkciA9IDA7DQo+ ID4gKwl1aW50cHRyX3QgdGFibGVfcl9wYWRkciA9IDA7DQo+ID4gKwl1aW50cHRyX3QgdGFibGVf Yl9wYWRkciA9IDA7DQo+ID4gKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOw0KPiA+ICsJaW50IHJl dDsNCj4gPiArDQo+ID4gKwlpZiAoIWwxX2xzYy0+cGFyYW1fYWRkcikgew0KPiA+ICsJCXNwaW5f bG9ja19pcnFzYXZlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsJCWh3ZF92aWlm X2lzcF9ndWFyZF9zdGFydCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwkJcmV0ID0gaHdkX3Zp aWZfbDFfc2V0X2xzYyh2aWlmX2Rldi0+aHdkX3JlcywgTlVMTCk7DQo+ID4gKwkJaHdkX3ZpaWZf aXNwX2d1YXJkX2VuZCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmdmlpZl9kZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArCQlyZXR1cm4gcmV0Ow0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChsMV9sc2MtPnRhYmxlX2dyX2FkZHIpIHsNCj4gPiAr CQlpZiAoY29weV9mcm9tX3VzZXIodmlpZl9kZXYtPnRhYmxlX3ZhZGRyLT5sc2NfdGFibGVfZ3Is DQo+ID4gKwkJCQkgICB1NjRfdG9fdXNlcl9wdHIobDFfbHNjLT50YWJsZV9ncl9hZGRyKSwNCj4g PiArCQkJCSAgIFZJU0NPTlRJX1ZJSUZfTFNDX1RBQkxFX0JZVEVTKSkNCj4gPiArCQkJcmV0dXJu IC1FRkFVTFQ7DQo+ID4gKwkJdGFibGVfZ3JfcGFkZHIgPQ0KPiAodWludHB0cl90KXZpaWZfZGV2 LT50YWJsZV9wYWRkci0+bHNjX3RhYmxlX2dyOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKGwxX2xzYy0+ dGFibGVfcl9hZGRyKSB7DQo+ID4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKHZpaWZfZGV2LT50YWJs ZV92YWRkci0+bHNjX3RhYmxlX3IsDQo+ID4gKwkJCQkgICB1NjRfdG9fdXNlcl9wdHIobDFfbHNj LT50YWJsZV9yX2FkZHIpLA0KPiA+ICsJCQkJICAgVklTQ09OVElfVklJRl9MU0NfVEFCTEVfQllU RVMpKQ0KPiA+ICsJCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArCQl0YWJsZV9yX3BhZGRyID0gKHVp bnRwdHJfdCl2aWlmX2Rldi0+dGFibGVfcGFkZHItPmxzY190YWJsZV9yOw0KPiA+ICsJfQ0KPiA+ ICsJaWYgKGwxX2xzYy0+dGFibGVfYl9hZGRyKSB7DQo+ID4gKwkJaWYgKGNvcHlfZnJvbV91c2Vy KHZpaWZfZGV2LT50YWJsZV92YWRkci0+bHNjX3RhYmxlX2IsDQo+ID4gKwkJCQkgICB1NjRfdG9f dXNlcl9wdHIobDFfbHNjLT50YWJsZV9iX2FkZHIpLA0KPiA+ICsJCQkJICAgVklTQ09OVElfVklJ Rl9MU0NfVEFCTEVfQllURVMpKQ0KPiA+ICsJCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArCQl0YWJs ZV9iX3BhZGRyID0NCj4gKHVpbnRwdHJfdCl2aWlmX2Rldi0+dGFibGVfcGFkZHItPmxzY190YWJs ZV9iOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKGwxX2xzYy0+dGFibGVfZ2JfYWRkcikgew0KPiA+ICsJ CWlmIChjb3B5X2Zyb21fdXNlcih2aWlmX2Rldi0+dGFibGVfdmFkZHItPmxzY190YWJsZV9nYiwN Cj4gPiArCQkJCSAgIHU2NF90b191c2VyX3B0cihsMV9sc2MtPnRhYmxlX2diX2FkZHIpLA0KPiA+ ICsJCQkJICAgVklTQ09OVElfVklJRl9MU0NfVEFCTEVfQllURVMpKQ0KPiA+ICsJCQlyZXR1cm4g LUVGQVVMVDsNCj4gPiArCQl0YWJsZV9nYl9wYWRkciA9DQo+ICh1aW50cHRyX3QpdmlpZl9kZXYt PnRhYmxlX3BhZGRyLT5sc2NfdGFibGVfZ2I7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGNv cHlfZnJvbV91c2VyKCZsc2NfcGFyYW1zLA0KPiB1NjRfdG9fdXNlcl9wdHIobDFfbHNjLT5wYXJh bV9hZGRyKSwNCj4gPiArCQkJICAgc2l6ZW9mKHN0cnVjdCB2aWlmX2wxX2xzYykpKQ0KPiA+ICsJ CXJldHVybiAtRUZBVUxUOw0KPiA+ICsNCj4gPiArCWh3ZF9wYXJhbXMubHNzY19wYXJhYm9sYV9w YXJhbSA9IE5VTEw7DQo+ID4gKwlod2RfcGFyYW1zLmxzc2NfZ3JpZF9wYXJhbSA9IE5VTEw7DQo+ ID4gKw0KPiA+ICsJaWYgKGxzY19wYXJhbXMubHNzY19wYXJhYm9sYV9wYXJhbV9hZGRyKSB7DQo+ ID4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZsc2NfcGFyYSwNCj4gdTY0X3RvX3VzZXJfcHRyKGxz Y19wYXJhbXMubHNzY19wYXJhYm9sYV9wYXJhbV9hZGRyKSwNCj4gPiArCQkJCSAgIHNpemVvZihz dHJ1Y3QgdmlpZl9sMV9sc2NfcGFyYWJvbGFfcGFyYW0pKSkNCj4gPiArCQkJcmV0dXJuIC1FRkFV TFQ7DQo+ID4gKwkJaHdkX3BhcmFtcy5sc3NjX3BhcmFib2xhX3BhcmFtID0gJmxzY19wYXJhOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChsc2NfcGFyYW1zLmxzc2NfZ3JpZF9wYXJhbV9hZGRy KSB7DQo+ID4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZsc2NfZ3JpZCwNCj4gdTY0X3RvX3VzZXJf cHRyKGxzY19wYXJhbXMubHNzY19ncmlkX3BhcmFtX2FkZHIpLA0KPiA+ICsJCQkJICAgc2l6ZW9m KHN0cnVjdCB2aWlmX2wxX2xzY19ncmlkX3BhcmFtKSkpDQo+ID4gKwkJCXJldHVybiAtRUZBVUxU Ow0KPiA+ICsJCWh3ZF9wYXJhbXMubHNzY19ncmlkX3BhcmFtID0gJmxzY19ncmlkOw0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCWh3ZF9wYXJhbXMubHNzY19wd2hiX3JfZ2Fpbl9tYXggPQ0KPiBsc2Nf cGFyYW1zLmxzc2NfcHdoYl9yX2dhaW5fbWF4Ow0KPiA+ICsJaHdkX3BhcmFtcy5sc3NjX3B3aGJf cl9nYWluX21pbiA9DQo+IGxzY19wYXJhbXMubHNzY19wd2hiX3JfZ2Fpbl9taW47DQo+ID4gKwlo d2RfcGFyYW1zLmxzc2NfcHdoYl9ncl9nYWluX21heCA9DQo+IGxzY19wYXJhbXMubHNzY19wd2hi X2dyX2dhaW5fbWF4Ow0KPiA+ICsJaHdkX3BhcmFtcy5sc3NjX3B3aGJfZ3JfZ2Fpbl9taW4gPQ0K PiBsc2NfcGFyYW1zLmxzc2NfcHdoYl9ncl9nYWluX21pbjsNCj4gPiArCWh3ZF9wYXJhbXMubHNz Y19wd2hiX2diX2dhaW5fbWF4ID0NCj4gbHNjX3BhcmFtcy5sc3NjX3B3aGJfZ2JfZ2Fpbl9tYXg7 DQo+ID4gKwlod2RfcGFyYW1zLmxzc2NfcHdoYl9nYl9nYWluX21pbiA9DQo+IGxzY19wYXJhbXMu bHNzY19wd2hiX2diX2dhaW5fbWluOw0KPiA+ICsJaHdkX3BhcmFtcy5sc3NjX3B3aGJfYl9nYWlu X21heCA9DQo+IGxzY19wYXJhbXMubHNzY19wd2hiX2JfZ2Fpbl9tYXg7DQo+ID4gKwlod2RfcGFy YW1zLmxzc2NfcHdoYl9iX2dhaW5fbWluID0NCj4gbHNjX3BhcmFtcy5sc3NjX3B3aGJfYl9nYWlu X21pbjsNCj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdmlpZl9kZXYtPmxvY2ssIGly cWZsYWdzKTsNCj4gPiArCWh3ZF92aWlmX2lzcF9ndWFyZF9zdGFydCh2aWlmX2Rldi0+aHdkX3Jl cyk7DQo+ID4gKwlyZXQgPSBod2RfdmlpZl9sMV9zZXRfbHNjX3RhYmxlX3RyYW5zbWlzc2lvbih2 aWlmX2Rldi0+aHdkX3JlcywNCj4gdGFibGVfZ3JfcGFkZHIsDQo+ID4gKwkJCQkJCSAgICAgdGFi bGVfcl9wYWRkciwNCj4gdGFibGVfYl9wYWRkciwgdGFibGVfZ2JfcGFkZHIpOw0KPiA+ICsJaWYg KHJldCkNCj4gPiArCQlnb3RvIGVycjsNCj4gPiArDQo+ID4gKwlyZXQgPSBod2RfdmlpZl9sMV9z ZXRfbHNjKHZpaWZfZGV2LT5od2RfcmVzLCAmaHdkX3BhcmFtcyk7DQo+ID4gK2VycjoNCj4gPiAr CWh3ZF92aWlmX2lzcF9ndWFyZF9lbmQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmdmlpZl9kZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArDQo+ID4g KwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpaWZfbDFfc2V0 X21haW5fcHJvY2VzcyhzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LA0KPiA+ICsJCQkJICAg IHN0cnVjdCB2aWlmX2wxX21haW5fcHJvY2Vzc19jb25maWcgKm1wcm8pDQo+ID4gK3sNCj4gPiAr CXN0cnVjdCB2aWlmX2wxX2NvbG9yX21hdHJpeF9jb3JyZWN0aW9uIGNvbG9yX21hdHJpeDsNCj4g PiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiAr CWlmIChtcHJvLT5wYXJhbV9hZGRyKSB7DQo+ID4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZjb2xv cl9tYXRyaXgsDQo+IHU2NF90b191c2VyX3B0cihtcHJvLT5wYXJhbV9hZGRyKSwNCj4gPiArCQkJ CSAgIHNpemVvZihzdHJ1Y3QNCj4gdmlpZl9sMV9jb2xvcl9tYXRyaXhfY29ycmVjdGlvbikpKQ0K PiA+ICsJCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlzcGluX2xvY2tf aXJxc2F2ZSgmdmlpZl9kZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArCWh3ZF92aWlmX2lzcF9n dWFyZF9zdGFydCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwlyZXQgPSBod2RfdmlpZl9sMV9z ZXRfbWFpbl9wcm9jZXNzKHZpaWZfZGV2LT5od2RfcmVzLA0KPiBtcHJvLT5kZW1vc2FpY19tb2Rl LA0KPiA+ICsJCQkJCSAgIG1wcm8tPmRhbXBfbHNic2VsLA0KPiA+ICsJCQkJCSAgIG1wcm8tPnBh cmFtX2FkZHIgPw0KPiAmY29sb3JfbWF0cml4IDogTlVMTCwNCj4gPiArCQkJCQkgICBtcHJvLT5k c3RfbWF4dmFsKTsNCj4gPiArCWh3ZF92aWlmX2lzcF9ndWFyZF9lbmQodmlpZl9kZXYtPmh3ZF9y ZXMpOw0KPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmlpZl9kZXYtPmxvY2ssIGlycWZs YWdzKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgaW50IHZpaWZfbDFfc2V0X2F3YihzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LCBzdHJ1 Y3QNCj4gdmlpZl9sMV9hd2JfY29uZmlnICpsMV9hd2IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCB2 aWlmX2wxX2F3YiBwYXJhbTsNCj4gPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+ID4gKwlp bnQgcmV0Ow0KPiA+ICsNCj4gPiArCWlmIChsMV9hd2ItPnBhcmFtX2FkZHIpIHsNCj4gPiArCQlp ZiAoY29weV9mcm9tX3VzZXIoJnBhcmFtLA0KPiB1NjRfdG9fdXNlcl9wdHIobDFfYXdiLT5wYXJh bV9hZGRyKSwNCj4gPiArCQkJCSAgIHNpemVvZihzdHJ1Y3QgdmlpZl9sMV9hd2IpKSkNCj4gPiAr CQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJc3Bpbl9sb2NrX2lycXNh dmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRf c3RhcnQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJcmV0ID0gaHdkX3ZpaWZfbDFfc2V0X2F3 Yih2aWlmX2Rldi0+aHdkX3JlcywgbDFfYXdiLT5wYXJhbV9hZGRyID8NCj4gJnBhcmFtIDogTlVM TCwNCj4gPiArCQkJCSAgbDFfYXdiLT5hd2hiX3dibXJnLA0KPiBsMV9hd2ItPmF3aGJfd2JtZ2cs IGwxX2F3Yi0+YXdoYl93Ym1iZyk7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZf ZGV2LT5od2RfcmVzKTsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5s b2NrLCBpcnFmbGFncyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCB2aWlmX2wxX2xvY2tfYXdiX2dhaW4oc3RydWN0IHZpaWZfZGV2aWNl ICp2aWlmX2RldiwgdTMyICplbmFibGUpDQo+ID4gK3sNCj4gPiArCXVuc2lnbmVkIGxvbmcgaXJx ZmxhZ3M7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ2 aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX3N0YXJ0 KHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXJldCA9IGh3ZF92aWlmX2wxX2xvY2tfYXdiX2dh aW4odmlpZl9kZXYtPmh3ZF9yZXMsICplbmFibGUpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJk X2VuZCh2aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2 aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgdmlpZl9sMV9zZXRfaGRyYyhzdHJ1Y3QgdmlpZl9k ZXZpY2UgKnZpaWZfZGV2LCBzdHJ1Y3QNCj4gdmlpZl9sMV9oZHJjX2NvbmZpZyAqaGRyYykNCj4g PiArew0KPiA+ICsJc3RydWN0IHZpaWZfbDFfaGRyYyBwYXJhbTsNCj4gPiArCXVuc2lnbmVkIGxv bmcgaXJxZmxhZ3M7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCWlmIChoZHJjLT5wYXJh bV9hZGRyKSB7DQo+ID4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZwYXJhbSwNCj4gdTY0X3RvX3Vz ZXJfcHRyKGhkcmMtPnBhcmFtX2FkZHIpLA0KPiA+ICsJCQkJICAgc2l6ZW9mKHN0cnVjdCB2aWlm X2wxX2hkcmMpKSkNCj4gPiArCQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwlo d2RfdmlpZl9pc3BfZ3VhcmRfc3RhcnQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJcmV0ID0g aHdkX3ZpaWZfbDFfc2V0X2hkcmModmlpZl9kZXYtPmh3ZF9yZXMsIGhkcmMtPnBhcmFtX2FkZHIg Pw0KPiAmcGFyYW0gOiBOVUxMLA0KPiA+ICsJCQkJICAgaGRyYy0+aGRyY190aHJfc2Z0X2FtdCk7 DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiAr CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB2aWlm X2wxX3NldF9oZHJjX2x0bShzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LA0KPiA+ICsJCQkJ c3RydWN0IHZpaWZfbDFfaGRyY19sdG1fY29uZmlnICpsMV9oZHJjX2x0bSkNCj4gPiArew0KPiA+ ICsJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJ c3Bpbl9sb2NrX2lycXNhdmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwlod2Rf dmlpZl9pc3BfZ3VhcmRfc3RhcnQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJcmV0ID0gaHdk X3ZpaWZfbDFfc2V0X2hkcmNfbHRtKHZpaWZfZGV2LT5od2RfcmVzLCBsMV9oZHJjX2x0bSk7DQo+ ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKw0K PiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB2aWlmX2wx X3NldF9nYW1tYShzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LCBzdHJ1Y3QNCj4gdmlpZl9s MV9nYW1tYV9jb25maWcgKmwxX2dhbW1hKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgdmlpZl9sMV9n YW1tYSBwYXJhbTsNCj4gPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+ID4gKwlpbnQgcmV0 Ow0KPiA+ICsNCj4gPiArCWlmIChsMV9nYW1tYS0+cGFyYW1fYWRkcikgew0KPiA+ICsJCWlmIChj b3B5X2Zyb21fdXNlcigmcGFyYW0sDQo+IHU2NF90b191c2VyX3B0cihsMV9nYW1tYS0+cGFyYW1f YWRkciksDQo+ID4gKwkJCQkgICBzaXplb2Yoc3RydWN0IHZpaWZfbDFfZ2FtbWEpKSkNCj4gPiAr CQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJc3Bpbl9sb2NrX2lycXNh dmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRf c3RhcnQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJcmV0ID0gaHdkX3ZpaWZfbDFfc2V0X2dh bW1hKHZpaWZfZGV2LT5od2RfcmVzLA0KPiBsMV9nYW1tYS0+cGFyYW1fYWRkciA/ICZwYXJhbSA6 IE5VTEwpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX2VuZCh2aWlmX2Rldi0+aHdkX3Jlcyk7 DQo+ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3Mp Ow0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQNCj4gPiArdmlpZl9sMV9zZXRfaW1nX3F1YWxpdHlfYWRqdXN0bWVudChzdHJ1Y3QgdmlpZl9k ZXZpY2UgKnZpaWZfZGV2LA0KPiA+ICsJCQkJICAgc3RydWN0DQo+IHZpaWZfbDFfaW1nX3F1YWxp dHlfYWRqdXN0bWVudF9jb25maWcgKmltZ19xdWFsaXR5KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qg aHdkX3ZpaWZfbDFfaW1nX3F1YWxpdHlfYWRqdXN0bWVudCBod2RfaW1nX3F1YWxpdHk7DQo+ID4g KwlzdHJ1Y3QgdmlpZl9sMV9sdW1fbm9pc2VfcmVkdWN0aW9uIGx1bV9ub2lzZTsNCj4gPiArCXN0 cnVjdCB2aWlmX2wxX25vbmxpbmVhcl9jb250cmFzdCBub25saW5lYXI7DQo+ID4gKwlzdHJ1Y3Qg dmlpZl9sMV9jb3Jpbmdfc3VwcHJlc3Npb24gY29yaW5nOw0KPiA+ICsJc3RydWN0IHZpaWZfbDFf ZWRnZV9lbmhhbmNlbWVudCBlZGdlX2VuaDsNCj4gPiArCXN0cnVjdCB2aWlmX2wxX2VkZ2Vfc3Vw cHJlc3Npb24gZWRnZV9zdXA7DQo+ID4gKwlzdHJ1Y3QgdmlpZl9sMV91dl9zdXBwcmVzc2lvbiB1 djsNCj4gPiArCXN0cnVjdCB2aWlmX2wxX2NvbG9yX2xldmVsIGNvbG9yOw0KPiA+ICsJdW5zaWdu ZWQgbG9uZyBpcnFmbGFnczsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJaHdkX2ltZ19x dWFsaXR5LmNvZWZfY2IgPSBpbWdfcXVhbGl0eS0+Y29lZl9jYjsNCj4gPiArCWh3ZF9pbWdfcXVh bGl0eS5jb2VmX2NyID0gaW1nX3F1YWxpdHktPmNvZWZfY3I7DQo+ID4gKwlod2RfaW1nX3F1YWxp dHkuYnJpZ2h0bmVzcyA9IGltZ19xdWFsaXR5LT5icmlnaHRuZXNzOw0KPiA+ICsJaHdkX2ltZ19x dWFsaXR5LmxpbmVhcl9jb250cmFzdCA9IGltZ19xdWFsaXR5LT5saW5lYXJfY29udHJhc3Q7DQo+ ID4gKwlod2RfaW1nX3F1YWxpdHkuY29sb3Jfbm9pc2VfcmVkdWN0aW9uX2VuYWJsZSA9DQo+IGlt Z19xdWFsaXR5LT5jb2xvcl9ub2lzZV9yZWR1Y3Rpb25fZW5hYmxlOw0KPiA+ICsNCj4gPiArCWlm IChpbWdfcXVhbGl0eS0+bm9ubGluZWFyX2NvbnRyYXN0X2FkZHIpIHsNCj4gPiArCQlpZiAoY29w eV9mcm9tX3VzZXIoJm5vbmxpbmVhciwNCj4gPiArDQo+IHU2NF90b191c2VyX3B0cihpbWdfcXVh bGl0eS0+bm9ubGluZWFyX2NvbnRyYXN0X2FkZHIpLA0KPiA+ICsJCQkJICAgc2l6ZW9mKHN0cnVj dCB2aWlmX2wxX25vbmxpbmVhcl9jb250cmFzdCkpKQ0KPiA+ICsJCQlyZXR1cm4gLUVGQVVMVDsN Cj4gPiArCQlod2RfaW1nX3F1YWxpdHkubm9ubGluZWFyX2NvbnRyYXN0ID0gJm5vbmxpbmVhcjsN Cj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJaHdkX2ltZ19xdWFsaXR5Lm5vbmxpbmVhcl9jb250cmFz dCA9IE5VTEw7DQo+ID4gKwl9DQo+ID4gKwlpZiAoaW1nX3F1YWxpdHktPmx1bV9ub2lzZV9yZWR1 Y3Rpb25fYWRkcikgew0KPiA+ICsJCWlmIChjb3B5X2Zyb21fdXNlcigmbHVtX25vaXNlLA0KPiA+ ICsNCj4gdTY0X3RvX3VzZXJfcHRyKGltZ19xdWFsaXR5LT5sdW1fbm9pc2VfcmVkdWN0aW9uX2Fk ZHIpLA0KPiA+ICsJCQkJICAgc2l6ZW9mKHN0cnVjdCB2aWlmX2wxX2x1bV9ub2lzZV9yZWR1Y3Rp b24pKSkNCj4gPiArCQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwkJaHdkX2ltZ19xdWFsaXR5Lmx1 bV9ub2lzZV9yZWR1Y3Rpb24gPSAmbHVtX25vaXNlOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlo d2RfaW1nX3F1YWxpdHkubHVtX25vaXNlX3JlZHVjdGlvbiA9IE5VTEw7DQo+ID4gKwl9DQo+ID4g KwlpZiAoaW1nX3F1YWxpdHktPmVkZ2VfZW5oYW5jZW1lbnRfYWRkcikgew0KPiA+ICsJCWlmIChj b3B5X2Zyb21fdXNlcigmZWRnZV9lbmgsDQo+IHU2NF90b191c2VyX3B0cihpbWdfcXVhbGl0eS0+ ZWRnZV9lbmhhbmNlbWVudF9hZGRyKSwNCj4gPiArCQkJCSAgIHNpemVvZihzdHJ1Y3QgdmlpZl9s MV9lZGdlX2VuaGFuY2VtZW50KSkpDQo+ID4gKwkJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsJCWh3 ZF9pbWdfcXVhbGl0eS5lZGdlX2VuaGFuY2VtZW50ID0gJmVkZ2VfZW5oOw0KPiA+ICsJfSBlbHNl IHsNCj4gPiArCQlod2RfaW1nX3F1YWxpdHkuZWRnZV9lbmhhbmNlbWVudCA9IE5VTEw7DQo+ID4g Kwl9DQo+ID4gKwlpZiAoaW1nX3F1YWxpdHktPnV2X3N1cHByZXNzaW9uX2FkZHIpIHsNCj4gPiAr CQlpZiAoY29weV9mcm9tX3VzZXIoJnV2LA0KPiB1NjRfdG9fdXNlcl9wdHIoaW1nX3F1YWxpdHkt PnV2X3N1cHByZXNzaW9uX2FkZHIpLA0KPiA+ICsJCQkJICAgc2l6ZW9mKHN0cnVjdCB2aWlmX2wx X3V2X3N1cHByZXNzaW9uKSkpDQo+ID4gKwkJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsJCWh3ZF9p bWdfcXVhbGl0eS51dl9zdXBwcmVzc2lvbiA9ICZ1djsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJ aHdkX2ltZ19xdWFsaXR5LnV2X3N1cHByZXNzaW9uID0gTlVMTDsNCj4gPiArCX0NCj4gPiArCWlm IChpbWdfcXVhbGl0eS0+Y29yaW5nX3N1cHByZXNzaW9uX2FkZHIpIHsNCj4gPiArCQlpZiAoY29w eV9mcm9tX3VzZXIoJmNvcmluZywNCj4gdTY0X3RvX3VzZXJfcHRyKGltZ19xdWFsaXR5LT5jb3Jp bmdfc3VwcHJlc3Npb25fYWRkciksDQo+ID4gKwkJCQkgICBzaXplb2Yoc3RydWN0IHZpaWZfbDFf Y29yaW5nX3N1cHByZXNzaW9uKSkpDQo+ID4gKwkJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsJCWh3 ZF9pbWdfcXVhbGl0eS5jb3Jpbmdfc3VwcHJlc3Npb24gPSAmY29yaW5nOw0KPiA+ICsJfSBlbHNl IHsNCj4gPiArCQlod2RfaW1nX3F1YWxpdHkuY29yaW5nX3N1cHByZXNzaW9uID0gTlVMTDsNCj4g PiArCX0NCj4gPiArCWlmIChpbWdfcXVhbGl0eS0+ZWRnZV9zdXBwcmVzc2lvbl9hZGRyKSB7DQo+ ID4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZlZGdlX3N1cCwNCj4gdTY0X3RvX3VzZXJfcHRyKGlt Z19xdWFsaXR5LT5lZGdlX3N1cHByZXNzaW9uX2FkZHIpLA0KPiA+ICsJCQkJICAgc2l6ZW9mKHN0 cnVjdCB2aWlmX2wxX2VkZ2Vfc3VwcHJlc3Npb24pKSkNCj4gPiArCQkJcmV0dXJuIC1FRkFVTFQ7 DQo+ID4gKwkJaHdkX2ltZ19xdWFsaXR5LmVkZ2Vfc3VwcHJlc3Npb24gPSAmZWRnZV9zdXA7DQo+ ID4gKwl9IGVsc2Ugew0KPiA+ICsJCWh3ZF9pbWdfcXVhbGl0eS5lZGdlX3N1cHByZXNzaW9uID0g TlVMTDsNCj4gPiArCX0NCj4gPiArCWlmIChpbWdfcXVhbGl0eS0+Y29sb3JfbGV2ZWxfYWRkcikg ew0KPiA+ICsJCWlmIChjb3B5X2Zyb21fdXNlcigmY29sb3IsDQo+IHU2NF90b191c2VyX3B0cihp bWdfcXVhbGl0eS0+Y29sb3JfbGV2ZWxfYWRkciksDQo+ID4gKwkJCQkgICBzaXplb2Yoc3RydWN0 IHZpaWZfbDFfY29sb3JfbGV2ZWwpKSkNCj4gPiArCQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwkJ aHdkX2ltZ19xdWFsaXR5LmNvbG9yX2xldmVsID0gJmNvbG9yOw0KPiA+ICsJfSBlbHNlIHsNCj4g PiArCQlod2RfaW1nX3F1YWxpdHkuY29sb3JfbGV2ZWwgPSBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX3N0YXJ0KHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXJl dCA9IGh3ZF92aWlmX2wxX3NldF9pbWdfcXVhbGl0eV9hZGp1c3RtZW50KHZpaWZfZGV2LT5od2Rf cmVzLA0KPiAmaHdkX2ltZ19xdWFsaXR5KTsNCj4gPiArCWh3ZF92aWlmX2lzcF9ndWFyZF9lbmQo dmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmlpZl9k ZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpaWZfbDFfc2V0X2F2Z19sdW1fZ2VuZXJhdGlvbihzdHJ1 Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LA0KPiA+ICsJCQkJCSAgc3RydWN0DQo+IHZpaWZfbDFf YXZnX2x1bV9nZW5lcmF0aW9uX2NvbmZpZyAqbDFfYXZnX2x1bSkNCj4gPiArew0KPiA+ICsJdW5z aWduZWQgbG9uZyBpcnFmbGFnczsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJc3Bpbl9s b2NrX2lycXNhdmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwlod2RfdmlpZl9p c3BfZ3VhcmRfc3RhcnQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJcmV0ID0gaHdkX3ZpaWZf bDFfc2V0X2F2Z19sdW1fZ2VuZXJhdGlvbih2aWlmX2Rldi0+aHdkX3JlcywNCj4gbDFfYXZnX2x1 bSk7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZfZGV2LT5od2RfcmVzKTsNCj4g PiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArI2RlZmluZSBWSVND T05USV9WSUlGX0RQQ19UQUJMRV9TSVpFX01JTiAxMDI0DQo+ID4gKyNkZWZpbmUgVklTQ09OVElf VklJRl9EUENfVEFCTEVfU0laRV9NQVggODE5Mg0KPiA+ICtzdGF0aWMgaW50IHZpaWZfbDJfc2V0 X3VuZGlzdChzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LCBzdHJ1Y3QNCj4gdmlpZl9sMl91 bmRpc3RfY29uZmlnICp1bmRpc3QpDQo+ID4gK3sNCj4gPiArCXVpbnRwdHJfdCB0YWJsZV93cml0 ZV9nX3BhZGRyID0gMDsNCj4gPiArCXVpbnRwdHJfdCB0YWJsZV9yZWFkX2JfcGFkZHIgPSAwOw0K PiA+ICsJdWludHB0cl90IHRhYmxlX3JlYWRfZ19wYWRkciA9IDA7DQo+ID4gKwl1aW50cHRyX3Qg dGFibGVfcmVhZF9yX3BhZGRyID0gMDsNCj4gPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+ ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCWlmICgodW5kaXN0LT5zaXplICYmIHVuZGlzdC0+ c2l6ZSA8DQo+IFZJU0NPTlRJX1ZJSUZfRFBDX1RBQkxFX1NJWkVfTUlOKSB8fA0KPiA+ICsJICAg IHVuZGlzdC0+c2l6ZSA+IFZJU0NPTlRJX1ZJSUZfRFBDX1RBQkxFX1NJWkVfTUFYKQ0KPiA+ICsJ CXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWlmICh1bmRpc3QtPndyaXRlX2dfYWRkcikg ew0KPiA+ICsJCWlmIChjb3B5X2Zyb21fdXNlcih2aWlmX2Rldi0+dGFibGVfdmFkZHItPnVuZGlz dF93cml0ZV9nLA0KPiA+ICsJCQkJICAgdTY0X3RvX3VzZXJfcHRyKHVuZGlzdC0+d3JpdGVfZ19h ZGRyKSwNCj4gdW5kaXN0LT5zaXplKSkNCj4gPiArCQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwkJ dGFibGVfd3JpdGVfZ19wYWRkciA9DQo+ICh1aW50cHRyX3QpdmlpZl9kZXYtPnRhYmxlX3BhZGRy LT51bmRpc3Rfd3JpdGVfZzsNCj4gPiArCX0NCj4gPiArCWlmICh1bmRpc3QtPnJlYWRfYl9hZGRy KSB7DQo+ID4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKHZpaWZfZGV2LT50YWJsZV92YWRkci0+dW5k aXN0X3JlYWRfYiwNCj4gPiArCQkJCSAgIHU2NF90b191c2VyX3B0cih1bmRpc3QtPnJlYWRfYl9h ZGRyKSwNCj4gdW5kaXN0LT5zaXplKSkNCj4gPiArCQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwkJ dGFibGVfcmVhZF9iX3BhZGRyID0NCj4gKHVpbnRwdHJfdCl2aWlmX2Rldi0+dGFibGVfcGFkZHIt PnVuZGlzdF9yZWFkX2I7DQo+ID4gKwl9DQo+ID4gKwlpZiAodW5kaXN0LT5yZWFkX2dfYWRkcikg ew0KPiA+ICsJCWlmIChjb3B5X2Zyb21fdXNlcih2aWlmX2Rldi0+dGFibGVfdmFkZHItPnVuZGlz dF9yZWFkX2csDQo+ID4gKwkJCQkgICB1NjRfdG9fdXNlcl9wdHIodW5kaXN0LT5yZWFkX2dfYWRk ciksDQo+IHVuZGlzdC0+c2l6ZSkpDQo+ID4gKwkJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsJCXRh YmxlX3JlYWRfZ19wYWRkciA9DQo+ICh1aW50cHRyX3QpdmlpZl9kZXYtPnRhYmxlX3BhZGRyLT51 bmRpc3RfcmVhZF9nOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKHVuZGlzdC0+cmVhZF9yX2FkZHIpIHsN Cj4gPiArCQlpZiAoY29weV9mcm9tX3VzZXIodmlpZl9kZXYtPnRhYmxlX3ZhZGRyLT51bmRpc3Rf cmVhZF9yLA0KPiA+ICsJCQkJICAgdTY0X3RvX3VzZXJfcHRyKHVuZGlzdC0+cmVhZF9yX2FkZHIp LA0KPiB1bmRpc3QtPnNpemUpKQ0KPiA+ICsJCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArCQl0YWJs ZV9yZWFkX3JfcGFkZHIgPQ0KPiAodWludHB0cl90KXZpaWZfZGV2LT50YWJsZV9wYWRkci0+dW5k aXN0X3JlYWRfcjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdmlp Zl9kZXYtPmxvY2ssIGlycWZsYWdzKTsNCj4gPiArCWh3ZF92aWlmX2lzcF9ndWFyZF9zdGFydCh2 aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwlyZXQgPSBod2RfdmlpZl9sMl9zZXRfdW5kaXN0X3Rh YmxlX3RyYW5zbWlzc2lvbih2aWlmX2Rldi0+aHdkX3JlcywNCj4gdGFibGVfd3JpdGVfZ19wYWRk ciwNCj4gPiArCQkJCQkJCXRhYmxlX3JlYWRfYl9wYWRkciwNCj4gdGFibGVfcmVhZF9nX3BhZGRy LA0KPiA+ICsJCQkJCQkJdGFibGVfcmVhZF9yX3BhZGRyLA0KPiB1bmRpc3QtPnNpemUpOw0KPiA+ ICsJaWYgKHJldCkgew0KPiA+ICsJCWRldl9lcnIodmlpZl9kZXYtPmRldiwgImwyX3NldF91bmRp c3RfdGFibGVfdHJhbnNtaXNzaW9uDQo+IGVycm9yLiAlZFxuIiwgcmV0KTsNCj4gPiArCQlnb3Rv IGVycjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXQgPSBod2RfdmlpZl9sMl9zZXRfdW5kaXN0 KHZpaWZfZGV2LT5od2RfcmVzLCAmdW5kaXN0LT5wYXJhbSk7DQo+ID4gKw0KPiA+ICtlcnI6DQo+ ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwly ZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpaWZfbDJfc2V0X3Jv aShzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LCBzdHJ1Y3QgdmlpZl9sMl9yb2lfY29uZmln DQo+ICpyb2kpDQo+ID4gK3sNCj4gPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+ID4gKwlp bnQgcmV0Ow0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZ2aWlmX2Rldi0+bG9jaywg aXJxZmxhZ3MpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX3N0YXJ0KHZpaWZfZGV2LT5od2Rf cmVzKTsNCj4gPiArCXJldCA9IGh3ZF92aWlmX2wyX3NldF9yb2kodmlpZl9kZXYtPmh3ZF9yZXMs IHJvaSk7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3VhcmRfZW5kKHZpaWZfZGV2LT5od2RfcmVzKTsN Cj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7 DQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHZpaWZf bDJfc2V0X3JvaV93cmFwKHN0cnVjdCB2aWlmX2RldmljZSAqdmlpZl9kZXYsIHN0cnVjdA0KPiB2 aWlmX2wyX3JvaV9jb25maWcgKnJvaSkNCj4gPiArew0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ ID4gKwlyZXQgPSB2aWlmX2wyX3NldF9yb2kodmlpZl9kZXYsIHJvaSk7DQo+ID4gKwlpZiAoIXJl dCkNCj4gPiArCQl2aXNjb250aV92aWlmX2lzcF9zZXRfY29tcG9zZV9yZWN0KHZpaWZfZGV2LCBy b2kpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZp bmUgVklTQ09OVElfVklJRl9HQU5NTUFfVEFCTEVfU0laRSA1MTINCj4gPiArc3RhdGljIGludCB2 aWlmX2wyX3NldF9nYW1tYShzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LCBzdHJ1Y3QNCj4g dmlpZl9sMl9nYW1tYV9jb25maWcgKmwyX2dhbW1hKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaHdk X3ZpaWZfbDJfZ2FtbWFfdGFibGUgaHdkX3RhYmxlID0geyAwIH07DQo+ID4gKwlpbnQgcGF0aGlk ID0gbDJfZ2FtbWEtPnBhdGhpZDsNCj4gPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+ID4g KwlpbnQgcG9zdGlkOw0KPiA+ICsJaW50IHJldDsNCj4gPiArCXUzMiBpOw0KPiA+ICsNCj4gPiAr CWlmIChwYXRoaWQgPT0gQ0FQVFVSRV9QQVRIX01BSU5fUE9TVDApDQo+ID4gKwkJcG9zdGlkID0g VklJRl9MMklTUF9QT1NUXzA7DQo+ID4gKwllbHNlIGlmIChwYXRoaWQgPT0gQ0FQVFVSRV9QQVRI X01BSU5fUE9TVDEpDQo+ID4gKwkJcG9zdGlkID0gVklJRl9MMklTUF9QT1NUXzE7DQo+ID4gKwll bHNlDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8 IDY7IGkrKykgew0KPiA+ICsJCWlmIChsMl9nYW1tYS0+dGFibGVfYWRkcltpXSkgew0KPiA+ICsJ CQlpZg0KPiAoY29weV9mcm9tX3VzZXIodmlpZl9kZXYtPnRhYmxlX3ZhZGRyLT5sMl9nYW1tYV90 YWJsZVtwYXRoaWRdW2ldLA0KPiA+ICsNCj4gdTY0X3RvX3VzZXJfcHRyKGwyX2dhbW1hLT50YWJs ZV9hZGRyW2ldKSwNCj4gPiArDQo+IFZJU0NPTlRJX1ZJSUZfR0FOTU1BX1RBQkxFX1NJWkUpKQ0K PiA+ICsJCQkJcmV0dXJuIC1FRkFVTFQ7DQo+ID4gKwkJCWh3ZF90YWJsZS50YWJsZVtpXSA9DQo+ ID4gKw0KPiAJKHVpbnRwdHJfdCl2aWlmX2Rldi0+dGFibGVfcGFkZHItPmwyX2dhbW1hX3RhYmxl W3BhdGhpZF1baV07DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19p cnFzYXZlKCZ2aWlmX2Rldi0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1 YXJkX3N0YXJ0KHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXJldCA9IGh3ZF92aWlmX2wyX3Nl dF9nYW1tYV90YWJsZV90cmFuc21pc3Npb24odmlpZl9kZXYtPmh3ZF9yZXMsDQo+IHBvc3RpZCwg Jmh3ZF90YWJsZSk7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCWdvdG8gZXJyOw0KPiA+ICsNCj4g PiArCXJldCA9IGh3ZF92aWlmX2wyX3NldF9nYW1tYSh2aWlmX2Rldi0+aHdkX3JlcywgcG9zdGlk LA0KPiBsMl9nYW1tYS0+ZW5hYmxlLCBsMl9nYW1tYS0+dnNwbGl0LA0KPiA+ICsJCQkJICAgIGwy X2dhbW1hLT5tb2RlKTsNCj4gPiArZXJyOg0KPiA+ICsJaHdkX3ZpaWZfaXNwX2d1YXJkX2VuZCh2 aWlmX2Rldi0+aHdkX3Jlcyk7DQo+ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2aWlmX2Rl di0+bG9jaywgaXJxZmxhZ3MpOw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIGludA0KPiA+ICt2aWlmX2NzaTJyeF9nZXRfY2FsaWJyYXRpb25fc3RhdHVzKHN0 cnVjdCB2aWlmX2RldmljZSAqdmlpZl9kZXYsDQo+ID4gKwkJCQkgICBzdHJ1Y3QgdmlpZl9jc2ky cnhfZHBoeV9jYWxpYnJhdGlvbl9zdGF0dXMNCj4gKmNhbGlicmF0aW9uX3N0YXR1cykNCj4gPiAr ew0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlpZiAoIXZiMl9pc19zdHJlYW1pbmcoJnZp aWZfZGV2LT5jYXBfZGV2MC52YjJfdnEpKQ0KPiA+ICsJCXJldHVybiAtRUlPOw0KPiANCj4gRUlP IGlzIGRlZmluaXRlbHkgdGhlIHdyb25nIGVycm9yIGNvZGUgc2luY2UgdGhhdCBpbmRpY2F0ZXMg YSBIVyBpc3N1ZSwgYW5kDQo+IHRoYXQncyBub3QgdGhlIGNhc2UuIERvIHlvdSBuZWVkIHRvIHJl dHVybiBhbiBlcnJvciBoZXJlPyBJcyB0aGVyZSBhIHJlYXNvbmFibGUNCj4gY2FsaWJyYXRpb24g c3RhdHVzIHRoYXQgeW91IGNhbiByZXR1cm4gaW5zdGVhZD8NCj4gDQo+IFByZXN1bWFibHkgaWYg aXQgaXMgbm90IHN0cmVhbWluZywgdGhlbiB0aGF0IG1lYW5zICd1bmNhbGlicmF0ZWQnLCBzbyBw ZXJoYXBzDQo+IHJldHVybmluZyBhbiAndW5jYWxpYnJhdGVkJyBzdGF0dXMgaGVyZSBtYWtlcyB0 aGUgbW9yZSBzZW5zZS4NCg0KU3RhdHVzIGNvZGUgZm9yIGVhY2ggbWVtYmVyIG9mIGNvbnRyb2wg c3RydWN0IGlzIGVpdGhlciBvZjogTk9UX0RPTkUsIFNVQ0NFU1Mgb3IgRkFJTC4NCk5PVF9ET05F IChvciBuZXdseSBpbnRyb2R1Y2VkIFVOQ0FMSUJSQVRFRCkgY2FuIGJlIHNldCBpbnN0ZWFkIG9m IHJldHVybmluZyAtRUlPLg0KDQoNCj4gQWxzbywgSSBzdXNwZWN0IHlvdSBhY3R1YWxseSBtZWFu IHZiMl9zdGFydF9zdHJlYW1pbmdfY2FsbGVkKCkgaGVyZS4gSSBhc3N1bWUNCj4gdGhhdCB0aGUg Y2FsaWJyYXRpb24gc3RlcCBoYXBwZW5zIGluIHN0YXJ0X3N0cmVhbWluZygpIHdoaWNoIGNhbiBi ZSBjYWxsZWQgbGF0ZXINCj4gdGhhbiBWSURJT0NfU1RSRUFNT04gKHdoaWNoIGlzIHRoZSBpb2N0 bCB0aGF0IHNldHMgJ2lzIHN0cmVhbWluZycgdG8gdHJ1ZSkuDQoNCkknbGwgdXNlIHZiMl9zdGFy dF9zdHJlYW1pbmdfY2FsbGVkLg0KDQo+ID4gKw0KPiA+ICsJcmV0ID0gaHdkX3ZpaWZfY3NpMnJ4 X2dldF9jYWxpYnJhdGlvbl9zdGF0dXModmlpZl9kZXYtPmh3ZF9yZXMsDQo+IGNhbGlicmF0aW9u X3N0YXR1cyk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludCB2aWlmX2NzaTJyeF9nZXRfZXJyX3N0YXR1cyhzdHJ1Y3QgdmlpZl9kZXZpY2Ug KnZpaWZfZGV2LA0KPiA+ICsJCQkJICAgICAgc3RydWN0IHZpaWZfY3NpMnJ4X2Vycl9zdGF0dXMg KmNzaV9lcnIpDQo+ID4gK3sNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJaWYgKCF2YjJf aXNfc3RyZWFtaW5nKCZ2aWlmX2Rldi0+Y2FwX2RldjAudmIyX3ZxKSkNCj4gPiArCQlyZXR1cm4g LUVJTzsNCj4gPiArDQo+ID4gKwlyZXQgPSBod2RfdmlpZl9jc2kycnhfZ2V0X2Vycl9zdGF0dXMo dmlpZl9kZXYtPmh3ZF9yZXMsDQo+ICZjc2lfZXJyLT5lcnJfcGh5X2ZhdGFsLA0KPiA+ICsJCQkJ CSAgICAgJmNzaV9lcnItPmVycl9wa3RfZmF0YWwsDQo+ICZjc2lfZXJyLT5lcnJfZnJhbWVfZmF0 YWwsDQo+ID4gKwkJCQkJICAgICAmY3NpX2Vyci0+ZXJyX3BoeSwNCj4gJmNzaV9lcnItPmVycl9w a3QsDQo+ID4gKwkJCQkJICAgICAmY3NpX2Vyci0+ZXJyX2xpbmUpOw0KPiA+ICsNCj4gPiArCXJl dHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgdmlpZl9pc3BfZ2V0X2xh c3RfY2FwdHVyZV9zdGF0dXMoc3RydWN0IHZpaWZfZGV2aWNlICp2aWlmX2RldiwNCj4gPiArCQkJ CQkgICAgc3RydWN0IHZpaWZfaXNwX2NhcHR1cmVfc3RhdHVzDQo+ICpzdGF0dXMpDQo+ID4gK3sN Cj4gPiArCXN0cnVjdCBod2RfdmlpZl9sMV9pbmZvIGwxX2luZm87DQo+ID4gKwl1bnNpZ25lZCBs b25nIGlycWZsYWdzOw0KPiA+ICsJaW50IGksIGo7DQo+ID4gKw0KPiA+ICsJc3Bpbl9sb2NrX2ly cXNhdmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKwlod2RfdmlpZl9pc3BfZ3Vh cmRfc3RhcnQodmlpZl9kZXYtPmh3ZF9yZXMpOw0KPiA+ICsJaHdkX3ZpaWZfaXNwX2dldF9pbmZv KHZpaWZfZGV2LT5od2RfcmVzLCAmbDFfaW5mbywgTlVMTCk7DQo+ID4gKwlod2RfdmlpZl9pc3Bf Z3VhcmRfZW5kKHZpaWZfZGV2LT5od2RfcmVzKTsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnZpaWZfZGV2LT5sb2NrLCBpcnFmbGFncyk7DQo+ID4gKw0KPiA+ICsJc3RhdHVzLT5sMV9p bmZvLmF2Z19sdW1fd2VpZ2h0ID0gbDFfaW5mby5hdmdfbHVtX3dlaWdodDsNCj4gPiArCWZvciAo aSA9IDA7IGkgPCA4OyBpKyspIHsNCj4gPiArCQlmb3IgKGogPSAwOyBqIDwgODsgaisrKQ0KPiA+ ICsJCQlzdGF0dXMtPmwxX2luZm8uYXZnX2x1bV9ibG9ja1tpXVtqXSA9DQo+IGwxX2luZm8uYXZn X2x1bV9ibG9ja1tpXVtqXTsNCj4gPiArCX0NCj4gPiArCWZvciAoaSA9IDA7IGkgPCA0OyBpKysp DQo+ID4gKwkJc3RhdHVzLT5sMV9pbmZvLmF2Z19sdW1fZm91cl9saW5lX2x1bVtpXSA9DQo+IGwx X2luZm8uYXZnX2x1bV9mb3VyX2xpbmVfbHVtW2ldOw0KPiA+ICsNCj4gPiArCXN0YXR1cy0+bDFf aW5mby5hdmdfc2F0dXJfcGl4bnVtID0gbDFfaW5mby5hdmdfc2F0dXJfcGl4bnVtOw0KPiA+ICsJ c3RhdHVzLT5sMV9pbmZvLmF2Z19ibGFja19waXhudW0gPSBsMV9pbmZvLmF2Z19ibGFja19waXhu dW07DQo+ID4gKwlzdGF0dXMtPmwxX2luZm8uYXdiX2F2ZV91ID0gbDFfaW5mby5hd2JfYXZlX3U7 DQo+ID4gKwlzdGF0dXMtPmwxX2luZm8uYXdiX2F2ZV92ID0gbDFfaW5mby5hd2JfYXZlX3Y7DQo+ ID4gKwlzdGF0dXMtPmwxX2luZm8uYXdiX2FjY3VtdWxhdGVkX3BpeGVsID0NCj4gbDFfaW5mby5h d2JfYWNjdW11bGF0ZWRfcGl4ZWw7DQo+ID4gKwlzdGF0dXMtPmwxX2luZm8uYXdiX2dhaW5fciA9 IGwxX2luZm8uYXdiX2dhaW5fcjsNCj4gPiArCXN0YXR1cy0+bDFfaW5mby5hd2JfZ2Fpbl9nID0g bDFfaW5mby5hd2JfZ2Fpbl9nOw0KPiA+ICsJc3RhdHVzLT5sMV9pbmZvLmF3Yl9nYWluX2IgPSBs MV9pbmZvLmF3Yl9nYWluX2I7DQo+ID4gKwlzdGF0dXMtPmwxX2luZm8uYXdiX3N0YXR1c191ID0g bDFfaW5mby5hd2Jfc3RhdHVzX3U7DQo+ID4gKwlzdGF0dXMtPmwxX2luZm8uYXdiX3N0YXR1c192 ID0gbDFfaW5mby5hd2Jfc3RhdHVzX3Y7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgdmlpZl9pc3BfZ2V0X3JlcG9ydGVkX2Vycm9ycyhzdHJ1 Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2LA0KPiA+ICsJCQkJCXN0cnVjdCB2aWlmX3JlcG9ydGVk X2Vycm9ycyAqc3RhdHVzKQ0KPiA+ICt7DQo+ID4gKwlzdGF0dXMtPm1haW4gPSB2aWlmX2Rldi0+ cmVwb3J0ZWRfZXJyX21haW47DQo+ID4gKwlzdGF0dXMtPnN1YiA9IHZpaWZfZGV2LT5yZXBvcnRl ZF9lcnJfc3ViOw0KPiA+ICsJc3RhdHVzLT5jc2kycnggPSB2aWlmX2Rldi0+cmVwb3J0ZWRfZXJy X2NzaTJyeDsNCj4gPiArCXZpaWZfZGV2LT5yZXBvcnRlZF9lcnJfbWFpbiA9IDA7DQo+ID4gKwl2 aWlmX2Rldi0+cmVwb3J0ZWRfZXJyX3N1YiA9IDA7DQo+ID4gKwl2aWlmX2Rldi0+cmVwb3J0ZWRf ZXJyX2NzaTJyeCA9IDA7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qID09PT09IHY0bDIgc3ViZGV2aWNlIGNvbnRyb2wgaGFuZGxlcnMgPT09PT0gKi8NCj4g PiArI2RlZmluZSBDT01QT1VORF9UWVBFX1NBTVBMRTAxIDB4MDI4MA0KPiA+ICsNCj4gPiArc3Rh dGljIGludCB2aXNjb250aV92aWlmX2lzcF9zZXRfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJs KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgdmlpZl9kZXZpY2UgKnZpaWZfZGV2ID0gY3RybC0+cHJp djsNCj4gPiArDQo+ID4gKwlwcl9pbmZvKCJpc3Bfc2V0X2N0cmw6ICVzIiwgY3RybC0+bmFtZSk7 DQo+ID4gKwlpZiAocG1fcnVudGltZV9zdGF0dXNfc3VzcGVuZGVkKHZpaWZfZGV2LT5kZXYpKSB7 DQo+ID4gKwkJcHJfaW5mbygid2FybmluZzogdmlzY29udGkgdmlpZiBIVyBpcyBub3QgcG93ZXJl ZCIpOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXN3aXRjaCAoY3Ry bC0+aWQpIHsNCj4gPiArCWNhc2UgVjRMMl9DSURfVklTQ09OVElfVklJRl9NQUlOX1NFVF9SQVdQ QUNLX01PREU6DQo+ID4gKwkJcmV0dXJuIHZpaWZfbWFpbl9zZXRfcmF3cGFja19tb2RlKHZpaWZf ZGV2LCBjdHJsLT5wX25ldy5wKTsNCj4gPiArCWNhc2UgVjRMMl9DSURfVklTQ09OVElfVklJRl9J U1BfTDFfU0VUX0lOUFVUX01PREU6DQo+ID4gKwkJcmV0dXJuIHZpaWZfbDFfc2V0X2lucHV0X21v ZGUodmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2FzZSBWNEwyX0NJRF9WSVNDT05U SV9WSUlGX0lTUF9MMV9TRVRfUkdCX1RPX1lfQ09FRjoNCj4gPiArCQlyZXR1cm4gdmlpZl9sMV9z ZXRfcmdiX3RvX3lfY29lZih2aWlmX2RldiwgY3RybC0+cF9uZXcucCk7DQo+ID4gKwljYXNlIFY0 TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9BR19NT0RFOg0KPiA+ICsJCXJldHVybiB2 aWlmX2wxX3NldF9hZ19tb2RlKHZpaWZfZGV2LCBjdHJsLT5wX25ldy5wKTsNCj4gPiArCWNhc2Ug VjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0FHOg0KPiA+ICsJCXJldHVybiB2aWlm X2wxX3NldF9hZyh2aWlmX2RldiwgY3RybC0+cF9uZXcucCk7DQo+ID4gKwljYXNlIFY0TDJfQ0lE X1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9IRFJFOg0KPiA+ICsJCXJldHVybiB2aWlmX2wxX3Nl dF9oZHJlKHZpaWZfZGV2LCBjdHJsLT5wX25ldy5wKTsNCj4gPiArCWNhc2UgVjRMMl9DSURfVklT Q09OVElfVklJRl9JU1BfTDFfU0VUX0lNR19FWFRSQUNUSU9OOg0KPiA+ICsJCXJldHVybiB2aWlm X2wxX3NldF9pbWdfZXh0cmFjdGlvbih2aWlmX2RldiwgY3RybC0+cF9uZXcucCk7DQo+ID4gKwlj YXNlIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9EUEM6DQo+ID4gKwkJcmV0dXJu IHZpaWZfbDFfc2V0X2RwYyh2aWlmX2RldiwgY3RybC0+cF9uZXcucCk7DQo+ID4gKwljYXNlDQo+ IFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9QUkVTRVRfV0hJVEVfQkFMQU5DRToN Cj4gPiArCQlyZXR1cm4gdmlpZl9sMV9zZXRfcHJlc2V0X3doaXRlX2JhbGFuY2UodmlpZl9kZXYs DQo+IGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2FzZQ0KPiBWNEwyX0NJRF9WSVNDT05USV9WSUlG X0lTUF9MMV9TRVRfUkFXX0NPTE9SX05PSVNFX1JFRFVDVElPTjoNCj4gPiArCQlyZXR1cm4gdmlp Zl9sMV9zZXRfcmF3X2NvbG9yX25vaXNlX3JlZHVjdGlvbih2aWlmX2RldiwNCj4gY3RybC0+cF9u ZXcucCk7DQo+ID4gKwljYXNlIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9IRFJT Og0KPiA+ICsJCXJldHVybiB2aWlmX2wxX3NldF9oZHJzKHZpaWZfZGV2LCBjdHJsLT5wX25ldy5w KTsNCj4gPiArCWNhc2UNCj4gVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0JMQUNL X0xFVkVMX0NPUlJFQ1RJT046DQo+ID4gKwkJcmV0dXJuIHZpaWZfbDFfc2V0X2JsYWNrX2xldmVs X2NvcnJlY3Rpb24odmlpZl9kZXYsDQo+IGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2FzZSBWNEwy X0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfTFNDOg0KPiA+ICsJCXJldHVybiB2aWlmX2wx X3NldF9sc2ModmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2FzZSBWNEwyX0NJRF9W SVNDT05USV9WSUlGX0lTUF9MMV9TRVRfTUFJTl9QUk9DRVNTOg0KPiA+ICsJCXJldHVybiB2aWlm X2wxX3NldF9tYWluX3Byb2Nlc3ModmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2Fz ZSBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfQVdCOg0KPiA+ICsJCXJldHVybiB2 aWlmX2wxX3NldF9hd2IodmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2FzZSBWNEwy X0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9MT0NLX0FXQl9HQUlOOg0KPiA+ICsJCXJldHVybiB2 aWlmX2wxX2xvY2tfYXdiX2dhaW4odmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2Fz ZSBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfSERSQzoNCj4gPiArCQlyZXR1cm4g dmlpZl9sMV9zZXRfaGRyYyh2aWlmX2RldiwgY3RybC0+cF9uZXcucCk7DQo+ID4gKwljYXNlIFY0 TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9IRFJDX0xUTToNCj4gPiArCQlyZXR1cm4g dmlpZl9sMV9zZXRfaGRyY19sdG0odmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2Fz ZSBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfR0FNTUE6DQo+ID4gKwkJcmV0dXJu IHZpaWZfbDFfc2V0X2dhbW1hKHZpaWZfZGV2LCBjdHJsLT5wX25ldy5wKTsNCj4gPiArCWNhc2UN Cj4gVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0lNR19RVUFMSVRZX0FESlVTVE1F TlQ6DQo+ID4gKwkJcmV0dXJuIHZpaWZfbDFfc2V0X2ltZ19xdWFsaXR5X2FkanVzdG1lbnQodmlp Zl9kZXYsDQo+IGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJY2FzZQ0KPiBWNEwyX0NJRF9WSVNDT05U SV9WSUlGX0lTUF9MMV9TRVRfQVZHX0xVTV9HRU5FUkFUSU9OOg0KPiA+ICsJCXJldHVybiB2aWlm X2wxX3NldF9hdmdfbHVtX2dlbmVyYXRpb24odmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ ICsJY2FzZSBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMl9TRVRfVU5ESVNUOg0KPiA+ICsJ CXJldHVybiB2aWlmX2wyX3NldF91bmRpc3QodmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ ICsJY2FzZSBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMl9TRVRfUk9JOg0KPiA+ICsJCXJl dHVybiB2aWlmX2wyX3NldF9yb2lfd3JhcCh2aWlmX2RldiwgY3RybC0+cF9uZXcucCk7DQo+ID4g KwljYXNlIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wyX1NFVF9HQU1NQToNCj4gPiArCQly ZXR1cm4gdmlpZl9sMl9zZXRfZ2FtbWEodmlpZl9kZXYsIGN0cmwtPnBfbmV3LnApOw0KPiA+ICsJ ZGVmYXVsdDoNCj4gPiArCQlwcl9pbmZvKCJ1bmtub3duX2N0cmw6IGlkPSUwOFggdmFsPSVkIiwg Y3RybC0+aWQsIGN0cmwtPnZhbCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKwlyZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCB2aXNjb250aV92aWlmX2lzcF9n ZXRfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qgdmlp Zl9kZXZpY2UgKnZpaWZfZGV2ID0gY3RybC0+cHJpdjsNCj4gPiArDQo+ID4gKwlwcl9pbmZvKCJp c3BfZ2V0X2N0cmw6ICVzIiwgY3RybC0+bmFtZSk7DQo+ID4gKwlpZiAocG1fcnVudGltZV9zdGF0 dXNfc3VzcGVuZGVkKHZpaWZfZGV2LT5kZXYpKSB7DQo+ID4gKwkJcHJfaW5mbygid2FybmluZzog dmlzY29udGkgdmlpZiBIVyBpcyBub3QgcG93ZXJlZCIpOw0KPiA+ICsJCXJldHVybiAwOw0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiArCXN3aXRjaCAoY3RybC0+aWQpIHsNCj4gPiArCWNhc2UgVjRMMl9D SURfVklTQ09OVElfVklJRl9DU0kyUlhfR0VUX0NBTElCUkFUSU9OX1NUQVRVUzoNCj4gPiArCQly ZXR1cm4gdmlpZl9jc2kycnhfZ2V0X2NhbGlicmF0aW9uX3N0YXR1cyh2aWlmX2RldiwNCj4gY3Ry bC0+cF9uZXcucCk7DQo+ID4gKwljYXNlIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfQ1NJMlJYX0dF VF9FUlJfU1RBVFVTOg0KPiA+ICsJCXJldHVybiB2aWlmX2NzaTJyeF9nZXRfZXJyX3N0YXR1cyh2 aWlmX2RldiwgY3RybC0+cF9uZXcucCk7DQo+ID4gKwljYXNlIFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJ SUZfR0VUX0xBU1RfQ0FQVFVSRV9TVEFUVVM6DQo+ID4gKwkJcmV0dXJuIHZpaWZfaXNwX2dldF9s YXN0X2NhcHR1cmVfc3RhdHVzKHZpaWZfZGV2LA0KPiBjdHJsLT5wX25ldy5wKTsNCj4gPiArCWNh c2UgVjRMMl9DSURfVklTQ09OVElfVklJRl9HRVRfUkVQT1JURURfRVJST1JTOg0KPiA+ICsJCXJl dHVybiB2aWlmX2lzcF9nZXRfcmVwb3J0ZWRfZXJyb3JzKHZpaWZfZGV2LCBjdHJsLT5wX25ldy5w KTsNCj4gDQo+IE15IHF1ZXN0aW9uIGZvciB0aGVzZSBmb3VyIGNvbnRyb2xzIGlzOiBhcmUgdGhl c2UgcmVhbGx5IHZvbGF0aWxlIGNvbnRyb2xzPw0KPiBBIHZvbGF0aWxlIGNvbnRyb2wgbWVhbnMg dGhhdCB0aGUgaGFyZHdhcmUgY2FuIGNoYW5nZSB0aGUgcmVnaXN0ZXJzIGF0IGFueQ0KPiB0aW1l IHdpdGhvdXQgdGVsbGluZyB0aGUgQ1BVIGFib3V0IGl0IHZpYSBhbiBpbnRlcnJ1cHQgb3Igc29t ZSBzaW1pbGFyDQo+IG1lY2hhbmlzbS4NCj4gDQo+IElmIHRoZXJlICppcyogc3VjaCBhIG1lY2hh bmlzbSwgdGhlbiBpdCBpcyBub3QgYSB2b2xhdGlsZSBjb250cm9sLCBpbnN0ZWFkIHRoZQ0KPiBk cml2ZXIgaGFzIHRvIHVwZGF0ZSB0aGUgY29udHJvbCB2YWx1ZSB3aGVuZXZlciB0aGUgSFcgaW5m b3JtcyBpdCBhYm91dCB0aGUNCj4gbmV3IHZhbHVlLg0KPiANCj4gSSBjYW4ndCB0ZWxsLCBzbyB0 aGF0J3Mgd2h5IEkgYXNrIGhlcmUgdG8gZG91YmxlIGNoZWNrLg0KPiANCg0KSSBxdWlja2x5IGNo ZWNrZWQgSFcgYW5kIGZvdW5kIC4uLg0KDQoqIENTSTJSWF9HRVRfQ0FMSUJSQVRJT05fU1RBVFVT OiBObyBpbnRlcnJ1cHQgbWVjaGFuaXNtDQoqIENTSTJSWF9HRVRfRVJSX1NUQVRVUzogQW4gaW50 ZXJydXB0IGhhbmRsZXIgY2FuIGJlIHVzZWQNCiogR0VUX0xBU1RfQ0FQVFVSRV9TVEFUVVM6IGlu Zm9ybWF0aW9uIGNhbiBiZSB1cGRhdGVkIGF0IFZzeW5jIGludGVycnVwdA0KKiBHRVRfTEFTVF9F UlJPUjogQW4gaW50ZXJydXB0IGhhbmRsZXIgY2FuIGJlIHVzZWQNCg0KSSdsbCB0cnkgYnVpbGRp bmcgY29udHJvbCB2YWx1ZXMgd2hpbGUgcnVubmluZyBpbnRlcnJ1cHQgc2VydmljZXMuDQpEbyBJ IGhhdmUgdG8gZG8gR19FWFRfQ1RSTFMgZm9sbG93ZWQgYnkgU19FWFRfQ1RSTFMgaWYgSSB3YW50 IFJlYWQtVG8tQ2xlYXIgb3BlcmF0aW9uPw0KQ3VycmVudGx5LCBHRVRfTEFTVF9FUlJPUiBjb250 cm9sIHJlcG9ydHMgYWNjdW1lcmF0ZWQgZXJyb3JzIHNpbmNlIGxhc3QgcmVhZC4NCg0KPiA+ICsJ ZGVmYXVsdDoNCj4gPiArCQlwcl9pbmZvKCJ1bmtub3duX2N0cmw6IGlkPSUwOFggdmFsPSVkIiwg Y3RybC0+aWQsIGN0cmwtPnZhbCk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKwlyZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogPT09PT0gcmVnaXN0ZXIgdjRsMiBzdWJkZXZp Y2UgY29udHJvbHMgPT09PT0gKi8NCj4gPiArc3RhdGljIGJvb2wgdmlzY29udGlfdmlpZl9pc3Bf Y3VzdG9tX2N0cmxfZXF1YWwoY29uc3Qgc3RydWN0IHY0bDJfY3RybCAqY3RybCwNCj4gPiArCQkJ CQkJdW5pb24gdjRsMl9jdHJsX3B0ciBwdHIxLA0KPiB1bmlvbiB2NGwyX2N0cmxfcHRyIHB0cjIp DQo+ID4gK3sNCj4gPiArCXJldHVybiAhbWVtY21wKHB0cjEucF9jb25zdCwgcHRyMi5wX2NvbnN0 LCBjdHJsLT5lbGVtX3NpemUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCB2aXNj b250aV92aWlmX2lzcF9jdXN0b21fY3RybF9pbml0KGNvbnN0IHN0cnVjdCB2NGwyX2N0cmwgKmN0 cmwsIHUzMg0KPiBpZHgsDQo+ID4gKwkJCQkJICAgICAgIHVuaW9uIHY0bDJfY3RybF9wdHIgcHRy KQ0KPiA+ICt7DQo+ID4gKwlpZiAoY3RybC0+cF9kZWYucF9jb25zdCkNCj4gPiArCQltZW1jcHko cHRyLnAsIGN0cmwtPnBfZGVmLnBfY29uc3QsIGN0cmwtPmVsZW1fc2l6ZSk7DQo+ID4gKwllbHNl DQo+ID4gKwkJbWVtc2V0KHB0ci5wLCAwLCBjdHJsLT5lbGVtX3NpemUpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgdm9pZCB2aXNjb250aV92aWlmX2lzcF9jdXN0b21fY3RybF9sb2coY29u c3Qgc3RydWN0IHY0bDJfY3RybCAqY3RybCkNCj4gPiArew0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgaW50IHZpc2NvbnRpX3ZpaWZfaXNwX2N1c3RvbV9jdHJsX3ZhbGlkYXRlKGNvbnN0IHN0 cnVjdCB2NGwyX2N0cmwgKmN0cmwsDQo+ID4gKwkJCQkJCSAgdW5pb24gdjRsMl9jdHJsX3B0ciBw dHIpDQo+ID4gK3sNCj4gPiArCXByX2luZm8oInN0ZF92YWxpZGF0ZTogJXMiLCBjdHJsLT5uYW1l KTsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHY0bDJfY3RybF90eXBlX29wcyBjdXN0b21fdHlwZV9vcHMgPSB7DQo+ID4gKwkuZXF1YWwg PSB2aXNjb250aV92aWlmX2lzcF9jdXN0b21fY3RybF9lcXVhbCwNCj4gPiArCS5pbml0ID0gdmlz Y29udGlfdmlpZl9pc3BfY3VzdG9tX2N0cmxfaW5pdCwNCj4gPiArCS5sb2cgPSB2aXNjb250aV92 aWlmX2lzcF9jdXN0b21fY3RybF9sb2csDQo+ID4gKwkudmFsaWRhdGUgPSB2aXNjb250aV92aWlm X2lzcF9jdXN0b21fY3RybF92YWxpZGF0ZSwNCj4gPiArfTsNCj4gDQo+IFRoaXMgaXMgbm90IG5l ZWRlZCwgaXQncyBub3QgZG9pbmcgYW55dGhpbmcgdGhhdCB0aGUgY29udHJvbCBmcmFtZXdvcmsg YWxyZWFkeQ0KPiBkb2VzIGJ5IGRlZmF1bHQuDQoNCkknbGwgcmVtb3ZlIGl0Lg0KDQo+ID4gKw0K PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgdmlzY29udGlfdmlpZl9pc3Bf Y3RybF9vcHMgPSB7DQo+ID4gKwkuZ192b2xhdGlsZV9jdHJsID0gdmlzY29udGlfdmlpZl9pc3Bf Z2V0X2N0cmwsDQo+ID4gKwkuc19jdHJsID0gdmlzY29udGlfdmlpZl9pc3Bfc2V0X2N0cmwsDQo+ IA0KPiBBcyBtZW50aW9uZWQgYWJvdmUsIHlvdSBzaG91bGQgYWRkIGEgdHJ5X2N0cmwgY2FsbGJh Y2sgYXMgd2VsbCB0byBkbyB0aGUNCj4gdmFsaWRhdGlvbi4gTm90ZSB0aGF0IGlmIHRoZXJlIGlz IGEgdHJ5X2N0cmwgY2FsbGJhY2ssIHRoZW4gc2V0X2N0cmwgZG9lc24ndA0KPiBuZWVkIHRvIGRv IHRoZSB2YWxpZGF0aW9uIGFueW1vcmUgc2luY2UgdHJ5X2N0cmwgd2lsbCBiZSBjYWxsZWQgYmVm b3JlIHNldF9jdHJsLg0KDQpJJ2xsIGltcGxlbWVudCB0cnlfY3RybCBjYWxsYmFjayByZXVzaW5n IHZhbGlkYXRpb24gcm91dGluZXMuDQoNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIC0tLS0tIGNv bnRyb2wgaGFuZGxlciAtLS0tLSAqLw0KPiA+ICsjZGVmaW5lIENUUkxfQ09ORklHX0RFRkFVTFRf RU5UUlkNCj4gXA0KPiA+ICsJLm9wcyA9ICZ2aXNjb250aV92aWlmX2lzcF9jdHJsX29wcywgLnR5 cGVfb3BzID0gJmN1c3RvbV90eXBlX29wcywgXA0KPiA+ICsJLnR5cGUgPSBDT01QT1VORF9UWVBF X1NBTVBMRTAxLCAuZmxhZ3MgPQ0KPiBWNEwyX0NUUkxfRkxBR19FWEVDVVRFX09OX1dSSVRFDQo+ IA0KPiBXaHkgaXMgVjRMMl9DVFJMX0ZMQUdfRVhFQ1VURV9PTl9XUklURSBuZWVkZWQ/DQoNCkN1 cnJlbnRseSwgdGhpcyBkcml2ZXIgYWNjZXB0cyBpbmRpdmlkdWFsIHNfY3RybCBjYWxscyBhbmQg Y29uZmlndXJlIEhXIHJlZ2lzdGVycyB3aGlsZSBydW5uaW5nLA0KaW5zdGVhZCBvZiBzZXR0aW5n IGFsbCB0aGUgY2FjaGVkIGNvbnRyb2wgdmFsdWVzIGF0IHN0YXJ0aW5nIHN0cmVhbWluZy4NClRo ZXJlZm9yZSwgVjRMMl9DVFJMX0ZMQUdfRVhFQ1VURV9PTl9XUklURSBpcyBuZWVkZWQgdG8gbGV0 IGEgbWVjaGFuaXNtIGtpY2sgYSBjYWxsYmFjayANCmV2ZW4gaWYgYSBnaXZlbiBjb250cm9sIHZh bHVlIGlzIGlkZW50aWNhbCB0byB0aGUgcHJldmlvdXMgdmFsdWUuDQoNCkFzIGluIHJlc3BvbnNl IHRvIHBhdGNoIDIvNiwgSSB3aWxsIHRyeSBhZGQgaW5pdGlhbCB2YWx1ZSB0byBlYWNoIGNvbnRy b2wuDQpBZnRlciB0aGF0LCBJJ2xsIHRyeSBhZGQgSFcgc2V0dXAgcm91dGluZSBhdCBzdGFydGlu ZyBzdHJlYW1pbmcNCnNvIHRoYXQgRVhFQ1VURV9PTl9XUklURSBmbGFncyBhcmUgcmVtb3ZlZC4N Cg0KPiA+ICsNCj4gPiArI2RlZmluZSBDVFJMX0NPTkZJR19SRE9OTFlfRU5UUlkNCj4gXA0KPiA+ ICsJLm9wcyA9ICZ2aXNjb250aV92aWlmX2lzcF9jdHJsX29wcywgLnR5cGVfb3BzID0gJmN1c3Rv bV90eXBlX29wcywgXA0KPiA+ICsJLnR5cGUgPSBDT01QT1VORF9UWVBFX1NBTVBMRTAxLCAuZmxh Z3MgPQ0KPiBWNEwyX0NUUkxfRkxBR19WT0xBVElMRQ0KPiANCj4gU2hvdWxkbid0IHRoZSBSRUFE X09OTFkgZmxhZyBiZSBzZXQgYXMgd2VsbD8NCg0KSSdsbCBhZGQgUkVBRF9PTkxZIGZsYWcuDQoN Cj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2NvbmZpZyB2aXNjb250 aV92aWlmX2lzcF9jdHJsX2NvbmZpZ1tdID0gew0KPiA+ICsJew0KPiA+ICsJCUNUUkxfQ09ORklH X0RFRkFVTFRfRU5UUlksDQo+ID4gKwkJLmlkID0NCj4gVjRMMl9DSURfVklTQ09OVElfVklJRl9N QUlOX1NFVF9SQVdQQUNLX01PREUsDQo+ID4gKwkJLm5hbWUgPSAicmF3cGFja19tb2RlIiwNCj4g DQo+IFRoZXNlIHN0cmluZ3MgYXBwZWFyIGFzIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIGFuZCBh cmUgc3VwcG9zZWQgdG8gYmUNCj4gaHVtYW4gcmVhZGFibGUuIFNvIEkgd291bGQgd3JpdGUgdGhp cyBhczogIlJhd3BhY2sgTW9kZSIsIGFuZCAoZm9yIHRoZQ0KPiBuZXh0IGNvbnRyb2wpOiAiTDEg SW5wdXQgTW9kZSIsIGV0Yy4NCg0KSSdsbCBjaGFuZ2UgbmFtZSBmaWVsZCB0byBodW1hbiByZWFk YWJsZSBmb3JtYXQuDQogDQo+ID4gKwkJLnBfZGVmID0geyAucF9jb25zdCA9IE5VTEwgfSwNCj4g PiArCQkuZWxlbV9zaXplID0gc2l6ZW9mKHUzMiksDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJ CUNUUkxfQ09ORklHX0RFRkFVTFRfRU5UUlksDQo+ID4gKwkJLmlkID0gVjRMMl9DSURfVklTQ09O VElfVklJRl9JU1BfTDFfU0VUX0lOUFVUX01PREUsDQo+ID4gKwkJLm5hbWUgPSAibDFfaW5wdXRf bW9kZSIsDQo+ID4gKwkJLnBfZGVmID0geyAucF9jb25zdCA9IE5VTEwgfSwNCj4gDQo+IEp1c3Qg ZHJvcCB0aGlzLCBubyBuZWVkIHRvIGluaXRpYWxpemUgZmllbGRzIHRvIDAuDQoNCkknbGwgZHJv cCB0aGVzZSBpbml0aWFsaXphdGlvbnMuDQogDQo+ID4gKwkJLmVsZW1fc2l6ZSA9IHNpemVvZihz dHJ1Y3QgdmlpZl9sMV9pbnB1dF9tb2RlX2NvbmZpZyksDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ ICsJCUNUUkxfQ09ORklHX0RFRkFVTFRfRU5UUlksDQo+ID4gKwkJLmlkID0NCj4gVjRMMl9DSURf VklTQ09OVElfVklJRl9JU1BfTDFfU0VUX1JHQl9UT19ZX0NPRUYsDQo+ID4gKwkJLm5hbWUgPSAi bDFfcmdiX3RvX3lfY29lZiIsDQo+ID4gKwkJLnBfZGVmID0geyAucF9jb25zdCA9IE5VTEwgfSwN Cj4gPiArCQkuZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2aWlmX2wxX3JnYl90b195X2NvZWZf Y29uZmlnKSwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJQ1RSTF9DT05GSUdfREVGQVVMVF9F TlRSWSwNCj4gPiArCQkuaWQgPSBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfQUdf TU9ERSwNCj4gPiArCQkubmFtZSA9ICJsMV9hZ19tb2RlIiwNCj4gPiArCQkucF9kZWYgPSB7IC5w X2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHZpaWZf bDFfYWdfbW9kZV9jb25maWcpLA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQlDVFJMX0NPTkZJ R19ERUZBVUxUX0VOVFJZLA0KPiA+ICsJCS5pZCA9IFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQ X0wxX1NFVF9BRywNCj4gPiArCQkubmFtZSA9ICJsMV9hZyIsDQo+ID4gKwkJLnBfZGVmID0geyAu cF9jb25zdCA9IE5VTEwgfSwNCj4gPiArCQkuZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2aWlm X2wxX2FnX2NvbmZpZyksDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCUNUUkxfQ09ORklHX0RF RkFVTFRfRU5UUlksDQo+ID4gKwkJLmlkID0gVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFf U0VUX0hEUkUsDQo+ID4gKwkJLm5hbWUgPSAibDFfaGRyZSIsDQo+ID4gKwkJLnBfZGVmID0geyAu cF9jb25zdCA9IE5VTEwgfSwNCj4gPiArCQkuZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2aWlm X2wxX2hkcmVfY29uZmlnKSwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJQ1RSTF9DT05GSUdf REVGQVVMVF9FTlRSWSwNCj4gPiArCQkuaWQgPQ0KPiBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lT UF9MMV9TRVRfSU1HX0VYVFJBQ1RJT04sDQo+ID4gKwkJLm5hbWUgPSAibDFfaW1nX2V4dHJhY3Rp b24iLA0KPiA+ICsJCS5wX2RlZiA9IHsgLnBfY29uc3QgPSBOVUxMIH0sDQo+ID4gKwkJLmVsZW1f c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdmlpZl9sMV9pbWdfZXh0cmFjdGlvbl9jb25maWcpLA0KPiA+ ICsJfSwNCj4gPiArCXsNCj4gPiArCQlDVFJMX0NPTkZJR19ERUZBVUxUX0VOVFJZLA0KPiA+ICsJ CS5pZCA9IFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9EUEMsDQo+ID4gKwkJLm5h bWUgPSAibDFfZHBjIiwNCj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ ICsJCS5lbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHZpaWZfbDFfZHBjX2NvbmZpZyksDQo+ID4g Kwl9LA0KPiA+ICsJew0KPiA+ICsJCUNUUkxfQ09ORklHX0RFRkFVTFRfRU5UUlksDQo+ID4gKwkJ LmlkID0NCj4gVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX1BSRVNFVF9XSElURV9C QUxBTkNFLA0KPiA+ICsJCS5uYW1lID0gImwxX3ByZXNldF93aGl0ZV9iYWxhbmNlIiwNCj4gPiAr CQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVtX3NpemUgPSBzaXpl b2Yoc3RydWN0IHZpaWZfbDFfcHJlc2V0X3doaXRlX2JhbGFuY2VfY29uZmlnKSwNCj4gPiArCX0s DQo+ID4gKwl7DQo+ID4gKwkJQ1RSTF9DT05GSUdfREVGQVVMVF9FTlRSWSwNCj4gPiArCQkuaWQg PQ0KPiBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfUkFXX0NPTE9SX05PSVNFX1JF RFVDVElPTiwNCj4gPiArCQkubmFtZSA9ICJsMV9yYXdfY29sb3Jfbm9pc2VfcmVkdWN0aW9uIiwN Cj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVtX3NpemUg PSBzaXplb2Yoc3RydWN0DQo+IHZpaWZfbDFfcmF3X2NvbG9yX25vaXNlX3JlZHVjdGlvbl9jb25m aWcpLA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQlDVFJMX0NPTkZJR19ERUZBVUxUX0VOVFJZ LA0KPiA+ICsJCS5pZCA9IFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9IRFJTLA0K PiA+ICsJCS5uYW1lID0gImwxX3NldF9oZHJzIiwNCj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0 ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHZpaWZfbDFfaGRy c19jb25maWcpLA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQlDVFJMX0NPTkZJR19ERUZBVUxU X0VOVFJZLA0KPiA+ICsJCS5pZCA9DQo+IFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NF VF9CTEFDS19MRVZFTF9DT1JSRUNUSU9OLA0KPiA+ICsJCS5uYW1lID0gImwxX2JsYWNrX2xldmVs X2NvcnJlY3Rpb24iLA0KPiA+ICsJCS5wX2RlZiA9IHsgLnBfY29uc3QgPSBOVUxMIH0sDQo+ID4g KwkJLmVsZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QNCj4gdmlpZl9sMV9ibGFja19sZXZlbF9jb3Jy ZWN0aW9uX2NvbmZpZyksDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCUNUUkxfQ09ORklHX0RF RkFVTFRfRU5UUlksDQo+ID4gKwkJLmlkID0gVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFf U0VUX0xTQywNCj4gPiArCQkubmFtZSA9ICJsMV9sc2MiLA0KPiA+ICsJCS5wX2RlZiA9IHsgLnBf Y29uc3QgPSBOVUxMIH0sDQo+ID4gKwkJLmVsZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdmlpZl9s MV9sc2NfY29uZmlnKSwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJQ1RSTF9DT05GSUdfREVG QVVMVF9FTlRSWSwNCj4gPiArCQkuaWQgPQ0KPiBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9M MV9TRVRfTUFJTl9QUk9DRVNTLA0KPiA+ICsJCS5uYW1lID0gImwxX21haW5fcHJvY2VzcyIsDQo+ ID4gKwkJLnBfZGVmID0geyAucF9jb25zdCA9IE5VTEwgfSwNCj4gPiArCQkuZWxlbV9zaXplID0g c2l6ZW9mKHN0cnVjdCB2aWlmX2wxX21haW5fcHJvY2Vzc19jb25maWcpLA0KPiA+ICsJfSwNCj4g PiArCXsNCj4gPiArCQlDVFJMX0NPTkZJR19ERUZBVUxUX0VOVFJZLA0KPiA+ICsJCS5pZCA9IFY0 TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9BV0IsDQo+ID4gKwkJLm5hbWUgPSAibDFf YXdiIiwNCj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVt X3NpemUgPSBzaXplb2Yoc3RydWN0IHZpaWZfbDFfYXdiX2NvbmZpZyksDQo+ID4gKwl9LA0KPiA+ ICsJew0KPiA+ICsJCUNUUkxfQ09ORklHX0RFRkFVTFRfRU5UUlksDQo+ID4gKwkJLmlkID0gVjRM Ml9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfTE9DS19BV0JfR0FJTiwNCj4gPiArCQkubmFtZSA9 ICJsMV9sb2NrX2F3Yl9nYWluIiwNCj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9 LA0KPiA+ICsJCS5lbGVtX3NpemUgPSBzaXplb2YodTMyKSwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ ID4gKwkJQ1RSTF9DT05GSUdfREVGQVVMVF9FTlRSWSwNCj4gPiArCQkuaWQgPSBWNEwyX0NJRF9W SVNDT05USV9WSUlGX0lTUF9MMV9TRVRfSERSQywNCj4gPiArCQkubmFtZSA9ICJsMV9oZHJjIiwN Cj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVtX3NpemUg PSBzaXplb2Yoc3RydWN0IHZpaWZfbDFfaGRyY19jb25maWcpLA0KPiA+ICsJfSwNCj4gPiArCXsN Cj4gPiArCQlDVFJMX0NPTkZJR19ERUZBVUxUX0VOVFJZLA0KPiA+ICsJCS5pZCA9IFY0TDJfQ0lE X1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9IRFJDX0xUTSwNCj4gPiArCQkubmFtZSA9ICJsMV9o ZHJjX2x0bSIsDQo+ID4gKwkJLnBfZGVmID0geyAucF9jb25zdCA9IE5VTEwgfSwNCj4gPiArCQku ZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2aWlmX2wxX2hkcmNfbHRtX2NvbmZpZyksDQo+ID4g Kwl9LA0KPiA+ICsJew0KPiA+ICsJCUNUUkxfQ09ORklHX0RFRkFVTFRfRU5UUlksDQo+ID4gKwkJ LmlkID0gVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDFfU0VUX0dBTU1BLA0KPiA+ICsJCS5u YW1lID0gImwxX2dhbW1hIiwNCj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0K PiA+ICsJCS5lbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHZpaWZfbDFfZ2FtbWFfY29uZmlnKSwN Cj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJQ1RSTF9DT05GSUdfREVGQVVMVF9FTlRSWSwNCj4g PiArCQkuaWQgPQ0KPiBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMV9TRVRfSU1HX1FVQUxJ VFlfQURKVVNUTUVOVCwNCj4gPiArCQkubmFtZSA9ICJsMV9pbWdfcXVhbGl0eV9hZGp1c3RtZW50 IiwNCj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVtX3Np emUgPSBzaXplb2Yoc3RydWN0DQo+IHZpaWZfbDFfaW1nX3F1YWxpdHlfYWRqdXN0bWVudF9jb25m aWcpLA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQlDVFJMX0NPTkZJR19ERUZBVUxUX0VOVFJZ LA0KPiA+ICsJCS5pZCA9DQo+IFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wxX1NFVF9BVkdf TFVNX0dFTkVSQVRJT04sDQo+ID4gKwkJLm5hbWUgPSAibDFfYXZnX2x1bSIsDQo+ID4gKwkJLnBf ZGVmID0geyAucF9jb25zdCA9IE5VTEwgfSwNCj4gPiArCQkuZWxlbV9zaXplID0gc2l6ZW9mKHN0 cnVjdCB2aWlmX2wxX2F2Z19sdW1fZ2VuZXJhdGlvbl9jb25maWcpLA0KPiA+ICsJfSwNCj4gPiAr CXsNCj4gPiArCQlDVFJMX0NPTkZJR19ERUZBVUxUX0VOVFJZLA0KPiA+ICsJCS5pZCA9IFY0TDJf Q0lEX1ZJU0NPTlRJX1ZJSUZfSVNQX0wyX1NFVF9VTkRJU1QsDQo+ID4gKwkJLm5hbWUgPSAibDJf dW5kaXN0IiwNCj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5l bGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHZpaWZfbDJfdW5kaXN0X2NvbmZpZyksDQo+ID4gKwl9 LA0KPiA+ICsJew0KPiA+ICsJCUNUUkxfQ09ORklHX0RFRkFVTFRfRU5UUlksDQo+ID4gKwkJLmlk ID0gVjRMMl9DSURfVklTQ09OVElfVklJRl9JU1BfTDJfU0VUX1JPSSwNCj4gPiArCQkubmFtZSA9 ICJsMl9yb2kiLA0KPiA+ICsJCS5wX2RlZiA9IHsgLnBfY29uc3QgPSBOVUxMIH0sDQo+ID4gKwkJ LmVsZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdmlpZl9sMl9yb2lfY29uZmlnKSwNCj4gPiArCX0s DQo+ID4gKwl7DQo+ID4gKwkJQ1RSTF9DT05GSUdfREVGQVVMVF9FTlRSWSwNCj4gPiArCQkuaWQg PSBWNEwyX0NJRF9WSVNDT05USV9WSUlGX0lTUF9MMl9TRVRfR0FNTUEsDQo+ID4gKwkJLm5hbWUg PSAibDJfZ2FtbWEiLA0KPiA+ICsJCS5wX2RlZiA9IHsgLnBfY29uc3QgPSBOVUxMIH0sDQo+ID4g KwkJLmVsZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdmlpZl9sMl9nYW1tYV9jb25maWcpLA0KPiA+ ICsJfSwNCj4gPiArCXsNCj4gPiArCQlDVFJMX0NPTkZJR19SRE9OTFlfRU5UUlksDQo+ID4gKwkJ LmlkID0NCj4gVjRMMl9DSURfVklTQ09OVElfVklJRl9DU0kyUlhfR0VUX0NBTElCUkFUSU9OX1NU QVRVUywNCj4gPiArCQkubmFtZSA9ICJjc2kycnhfY2FsaWJyYXRpb25fc3RhdHVzIiwNCj4gPiAr CQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVtX3NpemUgPSBzaXpl b2Yoc3RydWN0IHZpaWZfY3NpMnJ4X2RwaHlfY2FsaWJyYXRpb25fc3RhdHVzKSwNCj4gPiArCX0s DQo+ID4gKwl7DQo+ID4gKwkJQ1RSTF9DT05GSUdfUkRPTkxZX0VOVFJZLA0KPiA+ICsJCS5pZCA9 IFY0TDJfQ0lEX1ZJU0NPTlRJX1ZJSUZfQ1NJMlJYX0dFVF9FUlJfU1RBVFVTLA0KPiA+ICsJCS5u YW1lID0gImNzaTJyeF9lcnJfc3RhdHVzIiwNCj4gPiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0g TlVMTCB9LA0KPiA+ICsJCS5lbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHZpaWZfY3NpMnJ4X2Vy cl9zdGF0dXMpLA0KPiA+ICsJfSwNCj4gPiArCXsNCj4gPiArCQlDVFJMX0NPTkZJR19SRE9OTFlf RU5UUlksDQo+ID4gKwkJLmlkID0NCj4gVjRMMl9DSURfVklTQ09OVElfVklJRl9HRVRfTEFTVF9D QVBUVVJFX1NUQVRVUywNCj4gPiArCQkubmFtZSA9ICJsYXN0X2NhcHR1cmVfc3RhdHVzIiwNCj4g PiArCQkucF9kZWYgPSB7IC5wX2NvbnN0ID0gTlVMTCB9LA0KPiA+ICsJCS5lbGVtX3NpemUgPSBz aXplb2Yoc3RydWN0IHZpaWZfaXNwX2NhcHR1cmVfc3RhdHVzKSwNCj4gPiArCX0sDQo+ID4gKwl7 DQo+ID4gKwkJQ1RSTF9DT05GSUdfUkRPTkxZX0VOVFJZLA0KPiA+ICsJCS5pZCA9IFY0TDJfQ0lE X1ZJU0NPTlRJX1ZJSUZfR0VUX1JFUE9SVEVEX0VSUk9SUywNCj4gPiArCQkubmFtZSA9ICJyZXBv cnRlZCBlcnJvcnMiLA0KPiA+ICsJCS5wX2RlZiA9IHsgLnBfY29uc3QgPSBOVUxMIH0sDQo+ID4g KwkJLmVsZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdmlpZl9yZXBvcnRlZF9lcnJvcnMpLA0KPiA+ ICsJfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK2ludCB2aXNjb250aV92aWlmX2lzcF9pbml0X2Nv bnRyb2xzKHN0cnVjdCB2aWlmX2RldmljZSAqdmlpZl9kZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVj dCB2NGwyX2N0cmxfaGFuZGxlciAqY3RybF9oYW5kbGVyID0NCj4gJnZpaWZfZGV2LT5pc3Bfc3Vi ZGV2LmN0cmxfaGFuZGxlcjsNCj4gPiArCWludCByZXQ7DQo+ID4gKwlpbnQgaTsNCj4gPiArDQo+ ID4gKwlyZXQgPSB2NGwyX2N0cmxfaGFuZGxlcl9pbml0KGN0cmxfaGFuZGxlciwgMTApOw0KPiAN Cj4gUmVwbGFjZSAxMCBieSBBUlJBWV9TSVpFKHZpc2NvbnRpX3ZpaWZfaXNwX2N0cmxfY29uZmln KSwgdGhhdCB3YXkgdGhlDQo+IGNvbnRyb2wgaGFuZGxlciBoYXMgdGhlIHJpZ2h0IGhpbnQgYWJv dXQgdGhlIG51bWJlciBvZiBjb250cm9scy4NCg0KSSdsbCBmaXggaXQuDQoNCj4gPiArCWlmIChy ZXQpIHsNCj4gPiArCQlkZXZfZXJyKHZpaWZfZGV2LT5kZXYsICJmYWlsZWQgb24gdjRsMl9jdHJs X2hhbmRsZXJfaW5pdCIpOw0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodmlzY29udGlfdmlpZl9pc3BfY3RybF9jb25m aWcpOyBpKyspIHsNCj4gPiArCQlzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsOw0KPiA+ICsNCj4gPiAr CQljdHJsID0gdjRsMl9jdHJsX25ld19jdXN0b20oY3RybF9oYW5kbGVyLA0KPiAmdmlzY29udGlf dmlpZl9pc3BfY3RybF9jb25maWdbaV0sDQo+ID4gKwkJCQkJICAgIHZpaWZfZGV2KTsNCj4gPiAr CQlpZiAoIWN0cmwpIHsNCj4gPiArCQkJZGV2X2Vycih2aWlmX2Rldi0+ZGV2LCAiZmFpbGVkIHRv IGFkZCBjdHJsIGNyb3A6ICVkIiwNCj4gY3RybF9oYW5kbGVyLT5lcnJvcik7DQo+ID4gKwkJCXJl dHVybiBjdHJsX2hhbmRsZXItPmVycm9yOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4g Kwl2aWlmX2Rldi0+aXNwX3N1YmRldi5zZC5jdHJsX2hhbmRsZXIgPQ0KPiAmdmlpZl9kZXYtPmlz cF9zdWJkZXYuY3RybF9oYW5kbGVyOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS92aWlmX2lzcC5jDQo+IGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92aXNjb250aS92aWlmX2lzcC5jDQo+ID4gaW5kZXggOTMx NGU2ZTg2NjEuLjlhZWI4YmNhYjliIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vdmlzY29udGkvdmlpZl9pc3AuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdmlzY29udGkvdmlpZl9pc3AuYw0KPiA+IEBAIC04MTgsNiArODE4LDggQEAgaW50IHZpc2Nv bnRpX3ZpaWZfaXNwX3JlZ2lzdGVyKHN0cnVjdCB2aWlmX2RldmljZQ0KPiAqdmlpZl9kZXYpDQo+ ID4NCj4gPiAgCW11dGV4X2luaXQoJnZpaWZfZGV2LT5pc3Bfc3ViZGV2Lm9wc19sb2NrKTsNCj4g Pg0KPiA+ICsJdmlzY29udGlfdmlpZl9pc3BfaW5pdF9jb250cm9scyh2aWlmX2Rldik7DQo+ID4g Kw0KPiA+ICAJcmV0ID0gbWVkaWFfZW50aXR5X3BhZHNfaW5pdCgmc2QtPmVudGl0eSwgNCwgcGFk cyk7DQo+ID4gIAlpZiAocmV0KSB7DQo+ID4gIAkJZGV2X2Vycih2aWlmX2Rldi0+ZGV2LCAiRmFp bGVkIG9uIG1lZGlhX2VudGl0eV9wYWRzX2luaXRcbiIpOw0KPiANCj4gUmVnYXJkcywNCj4gDQo+ IAlIYW5zDQoNClJlZ2FyZHMsDQpZdWppIElzaGlrYXdhDQo=