From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4BF39A0542; Wed, 7 Sep 2022 04:26:28 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E5679400D6; Wed, 7 Sep 2022 04:26:27 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2132.outbound.protection.outlook.com [40.107.94.132]) by mails.dpdk.org (Postfix) with ESMTP id 8FA7940042 for ; Wed, 7 Sep 2022 04:26:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z3miUpHb6G2WNJsEZC+gDPBr7EOYhnegqhY8olajTM+O+PtCQNAjxdWTEXiifeFRX8ooQvHgobDlsB4htiDS1G9czzXsapQWG2VnPqnamlbyJk/m3ytYSPTi2+0HNiYi/ducdLxoQAEn3xvU5XfK5FnfzoOPKG+l9eOHCa6piLm9aQMVYKpEyN43kq9nzDxsV3M9a8cl8cb3jaFPsNq6QtMLjsCXOuXx7dBXb08ramDpUph0qDOR74WuLTtCmCOzy+ZRf5pRM8bDDpFm6aDyBVr180qlBzsnIA+vY34wqYbyvlYBnmKA9CfviSuoxq4p8XeHNGfC5lsEaJO8NLPdfQ== 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=hbsG+Yvgp+h0IsNzJ+TzwzOW1n+xxp9lgMFSP2I98lI=; b=obf9a5p893qbXlfwyrERQs8yjmxyIWOxX6vjk6odm3Vtju7yk+c206rsSJqwmi4wksxAf6XCk1kgXhgxx3cspaq0gUYTHh3i2cHu4AzXhRIJB90/p9C/GpdqWiTncgOKm/LQKWLZFq6xYY3Z+YYH1ad3c+4yIGTcWgGPZAPot3ElqOLLQOheo0nIfAD7momFchNpwtqCfoO0yW00gpaOXknwY4U9Shd04kDP3AgV5AxpahMbLmeOeJ52MpyfnS1KjB8neSbVFq2OAPakV9DIEupq3L78z0I2/TgTt1M0sITMfA9PWU1uMfcshgGTD4E86IYmnAaSE+L+fF2GpgzuUQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hbsG+Yvgp+h0IsNzJ+TzwzOW1n+xxp9lgMFSP2I98lI=; b=ORqZg89F0Yllua8i0xq6N7Jr81oHiV+FNVBAlJ38m5y1wyTkMfmnGcaj0J6CwpANjH/3/n0Payrw6AgVn0qQHK2vWX42wshjYGNrXREnshs1aKXOPd4IE8Lc/12aCHTDdgm3tWg7tAqy5ozfEfrctwdAPa042IaCNj51yEKhKMM= Received: from PH7PR21MB3263.namprd21.prod.outlook.com (2603:10b6:510:1db::16) by IA1PR21MB3424.namprd21.prod.outlook.com (2603:10b6:208:3e3::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.2; Wed, 7 Sep 2022 02:26:23 +0000 Received: from PH7PR21MB3263.namprd21.prod.outlook.com ([fe80::c42c:5004:23c1:bcac]) by PH7PR21MB3263.namprd21.prod.outlook.com ([fe80::c42c:5004:23c1:bcac%8]) with mapi id 15.20.5632.002; Wed, 7 Sep 2022 02:26:23 +0000 From: Long Li To: "lihuisong (C)" , Ferruh Yigit CC: "dev@dpdk.org" , Ajay Sharma , Stephen Hemminger Subject: RE: [Patch v6 01/18] net/mana: add basic driver, build environment and doc Thread-Topic: [Patch v6 01/18] net/mana: add basic driver, build environment and doc Thread-Index: AQHYvMMcd2wwHX4AIUyVWI99rwIFwq3IOaSAgAETaGCAByfnAIACxD7AgAANAoCAAAHf4A== Date: Wed, 7 Sep 2022 02:26:22 +0000 Message-ID: References: <1661899911-13086-1-git-send-email-longli@linuxonhyperv.com> <1661899911-13086-2-git-send-email-longli@linuxonhyperv.com> <020abf35-2bb0-795c-fc2f-c970f12c875c@huawei.com> <849ec1cc-3774-6aa0-65a9-7461a483169d@huawei.com> <6a33d5a2-7b5a-d143-2979-451a60e413ae@huawei.com> In-Reply-To: <6a33d5a2-7b5a-d143-2979-451a60e413ae@huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR21MB3263:EE_|IA1PR21MB3424:EE_ x-ms-office365-filtering-correlation-id: 860c0944-e17e-4ef7-2a79-08da90785b5a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mSoWh/2yVvvZSNzBBeuBoBn4UhoXoysqlcCmZfYM1H2cecRzU3mS0dOFD2W+gyZMcz4WraGrj7+J/GTYo9Rf7AUSbDSfUYSGaGxF5D3aypXF1+4vqqgclvj8kOKRFFu+TyGlpBvSLtkeNGMcnLaIB2suhC1+qQPi1qO3jIKpAoyM3nMwC1XWrypJNZxvCFw97Cxjv5eH/rxDhEonW1Kcuj+GQys2d6NKQsvGfRycu1GgCevDqfwi9eJPKtmjCKERJV2jQyIzBVxoJrf5xfB+SMBQxjwqdeYkFvcQqnTgllN9X2fPtbuLDmfyurNrkCLg9zX/HXCmCHX0hlbNL9BFhUSCOtTL82d3CpcOaQ1HyMs0kdrB50p2AaUL6zIQivRtSjIK4W69WV8kDW0iDoJG3IPqgjq9rjVOulkJVXhV2g9YeXZFFE8YIUvZsrhgQaGC0Owz0WMpeG5wvYCtiAgjepfHoe9y0kDI/V7GJXEcjIrRvltOY6uBeh5fdFd+7l5MiZe6GSuUhbHAH1ZuvuPrX4GP2Eq1KT1nczqnJEJ9SNb2ipv6JH/9jAa7hF12udYLE/uHXfUpiNvxxSPWYhp+E6KYG5SukHrZIm21faVyr7Gbr4CWSji4Kkmk/Yy4wgLaCqlopxOEJGqntttbpfjhhumMedCjSutPd77V+AhlAfJrwbFH4+ABovez7GADRjdaiJ37zmYyjG97O1VAKulyZpdECkggGu0KANeXNUOXulvpt2wigOHtXIXLZ8cL77vSfzINOhc2Ni2nuOwPJ+WvlgZp30PKYf3Oouk6JZAdgEEI94HCwuSxObi13gYORF78 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH7PR21MB3263.namprd21.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(376002)(39860400002)(396003)(366004)(136003)(346002)(451199009)(33656002)(82950400001)(82960400001)(38070700005)(122000001)(54906003)(38100700002)(66476007)(66446008)(66946007)(64756008)(66556008)(76116006)(10290500003)(4326008)(110136005)(8676002)(316002)(55016003)(8936002)(8990500004)(52536014)(5660300002)(2906002)(9686003)(26005)(83380400001)(71200400001)(186003)(478600001)(107886003)(6506007)(7696005)(86362001)(41300700001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WjJBOWYzbWhvNWl1Z2Y1ZXdJN2YvcmZjQzVDd2xNdElNckhLRFFzblNSM0lq?= =?utf-8?B?R2hOdjV0MG9XQ1ZaTnNNaFFoVzhYd2RrNHdid2Q4Z0RTUm9WWm9BejZINjhC?= =?utf-8?B?M3A4azVzN3VjSk00Sk1NWGRiSmpEUUZ2UWFwRTkzSmVuYS9US0luMHRIeVM3?= =?utf-8?B?dGlDYzlwWVVvWmQrM21xWCtZODlkQmlaMmhyd05ydnBUZkF4aExqSGJycW5Q?= =?utf-8?B?a21rdWdGWXR4YVBsWjFBcUlPeVllTjRmbmZCVXZVMWxBRlEyK01aMWdBd2hp?= =?utf-8?B?bnpmc25aUCtIUDUxbnJ1MHF4ZlJRSjFzbDhKUm1oVHB4MExnTk9ZdldKWEQ4?= =?utf-8?B?Q0ZzcmljZFRuclpKVU84Vk1zeTViRUlzVlZSaTVBMFhYbTRKa2RZbC93a3kw?= =?utf-8?B?cmthSnUzR1JURWRHT3N2NU01QWVzMEdXSVc4ZklJb2dxRnZtRGo3Yk9iS2d3?= =?utf-8?B?RTg3S1pMUFZMejRUMVExbkdmRmZmVTNnK0kxVFVrRlRFS2w1UjE2ckNGdktP?= =?utf-8?B?U3YwTHY2ZitDM2pXc3FlV1NBdGJnWkU3Wlh3eUZabmUvTkd0N1ZuVG9qZVJK?= =?utf-8?B?MWJMNXRPWW1yaForVGR2cm1vVTM3WFBQWDkzWnc4T0FzTklHZVVQclpKVVdi?= =?utf-8?B?ZTRtS3NIZnByR3c2TWp5bDgxc0tBblQ3U2hyTXFZWVM3NHFoOWtpUjNNYU0z?= =?utf-8?B?cHZmbFM4eW5HVHhFc1RNd0I5QzhUZXk5Y2lBVklaNUg1OUpjK3p4OGR0Q210?= =?utf-8?B?N1BJL0owekZlVlpzek4xakZQVkVDdXFuRWtCdG9GUkZHanNWVjBtOWRzeWlv?= =?utf-8?B?TDhlVXpYVk9VQlM4a3pYdHRmV3kvQWthNWtGTzlOUk5RSE5rb21xcmkxODhH?= =?utf-8?B?c1Noa2lTbWk1dFFBcE91cUNPeXBuOVYxZFhLMkxqaEpRZ0l0endKQzVwa0xl?= =?utf-8?B?YmZObnNxZXhVYTF6SUtLK1NqYmJUUk1mNlFEcHZDeTdIbWRvbHRpaklWYlBq?= =?utf-8?B?TmpLckwyVUVIMThkN25LQzlKS3N4M3NlSTFMUk5SWlBibHJTRnpXUVVLSElF?= =?utf-8?B?WTFnRmRZZC9lZzdJWGx0Ynd5WWtNRXhpV3VrOHVDZGRuaFhQQTdkRmY4SXZn?= =?utf-8?B?a1hqOWFiTWFnL004SE84VFlHWE8wVnVKOVgzNTRhdVdpVC9DTHFINXgrTGo2?= =?utf-8?B?ckt2SDJEZWhhbG5KYUJBNzFRRWk2dHZzaE84eE9nc2t5cHhJVlRCd003Skd3?= =?utf-8?B?NDRvSUNlTCtPMXFyemZHTEo2cDh3OGl2N0NJNlhPOGQ0OTVEMGZGUXlZWTRy?= =?utf-8?B?VjU0QTY1dXpGQjZQMGxlMTdqUWhxcEkzRm5neUFLWEJsQlZ5Mm1GUDFUV3dt?= =?utf-8?B?S2RENnRGRzZKUzE1RU9ORXpHRFo2VndLbzVlUyszczFtMVZYc3MvUTV2KzdJ?= =?utf-8?B?cnE5OXJSdUdhSmRNZGxJUkhZTHFmYXYrb1llR2dMaExtQi8xNTlLQyttdi81?= =?utf-8?B?UkN2ZG1IS1d6VXdUTEVIYWlncEFya0NGZEpYZVZmTk93cU54NEgvaTdReWc1?= =?utf-8?B?OVgrQll3Q1dlZVpoQ3BRY3RaL09DbWo4V2ZDaC8vVlJaeWZWNVY3Tkw1WWNa?= =?utf-8?B?c1pwR0tqUDc2NWJhQVpaVW1DcW1jRTV6QWlJa09pby9EUy9CL0JEWHc1emN6?= =?utf-8?B?YWxmYnpRMVYrMmpURHdoSVZsWUR3bHN5dnpiT2tQRFhBUGNGc3RsOXJCaXNk?= =?utf-8?B?amNlOUtYRnhCb2NuMFlCTC9vcTRDVytBa1M1b09oZml3TFFlZzFwalJQaHg4?= =?utf-8?B?MTFwT0o5Q3FNcjRTMmZRU1hnM1IrL2k5NTltY1Nrc3paenhMclhEUnZTVzVx?= =?utf-8?B?YTRoZ0dPY05jYlIwNHVyQUFpYXhyNHpxQ3kvamNjUk5yVURCNUViNTRDT3NG?= =?utf-8?B?RmdzbUFZcnNsNHZTVlpONGNaT1p5cmNZSmEwemEwamFxdmZsTFZFbmExQlor?= =?utf-8?B?K1ZIb1YrMzNxUklwOWVuNnpmQzhMcVVMK1JrS0dkNEo4Ryt3Y2t3eUZJU3pM?= =?utf-8?B?K1BZYjJTMU96WHhpdUZ2R01OVDVrR2Rma0xJUkhiYTdweHk5NXovcXhhY1E4?= =?utf-8?Q?olMLkVeMu1WY7QwiTeT0FHt9C?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR21MB3424 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBTdWJqZWN0OiBSZTogW1BhdGNoIHY2IDAxLzE4XSBuZXQvbWFuYTogYWRkIGJhc2ljIGRyaXZl ciwgYnVpbGQgZW52aXJvbm1lbnQNCj4gYW5kIGRvYw0KPiANCj4gDQo+IOWcqCAyMDIyLzkvNyA5 OjM2LCBMb25nIExpIOWGmemBkzoNCj4gPj4gU3ViamVjdDogUmU6IFtQYXRjaCB2NiAwMS8xOF0g bmV0L21hbmE6IGFkZCBiYXNpYyBkcml2ZXIsIGJ1aWxkDQo+ID4+IGVudmlyb25tZW50IGFuZCBk b2MNCj4gPj4NCj4gPj4NCj4gPj4g5ZyoIDIwMjIvOS8xIDI6MDUsIExvbmcgTGkg5YaZ6YGTOg0K PiA+Pj4+IFN1YmplY3Q6IFJlOiBbUGF0Y2ggdjYgMDEvMThdIG5ldC9tYW5hOiBhZGQgYmFzaWMg ZHJpdmVyLCBidWlsZA0KPiA+Pj4+IGVudmlyb25tZW50IGFuZCBkb2MNCj4gPj4+Pg0KPiA+Pj4+ DQo+ID4+Pj4g5ZyoIDIwMjIvOC8zMSA2OjUxLCBsb25nbGlAbGludXhvbmh5cGVydi5jb20g5YaZ 6YGTOg0KPiA+Pj4+PiBGcm9tOiBMb25nIExpIDxsb25nbGlAbWljcm9zb2Z0LmNvbT4NCj4gPj4+ Pj4NCj4gPj4+Pj4gTUFOQSBpcyBhIFBDSSBkZXZpY2UuIEl0IHVzZXMgSUIgdmVyYnMgdG8gYWNj ZXNzIGhhcmR3YXJlIHRocm91Z2gNCj4gPj4+Pj4gdGhlIGtlcm5lbCBSRE1BIGxheWVyLiBUaGlz IHBhdGNoIGludHJvZHVjZXMgYnVpbGQgZW52aXJvbm1lbnQgYW5kDQo+ID4+Pj4+IGJhc2ljIGRl dmljZSBwcm9iZSBmdW5jdGlvbnMuDQo+ID4+Pj4+DQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IExv bmcgTGkgPGxvbmdsaUBtaWNyb3NvZnQuY29tPg0KPiA+Pj4+PiAtLS0NCj4gPj4+Pj4gQ2hhbmdl IGxvZzoNCj4gPj4+Pj4gdjI6DQo+ID4+Pj4+IEZpeCB0eXBvcy4NCj4gPj4+Pj4gTWFrZSB0aGUg ZHJpdmVyIGJ1aWxkIG9ubHkgb24geDg2LTY0IGFuZCBMaW51eC4NCj4gPj4+Pj4gUmVtb3ZlIHVu dXNlZCBoZWFkZXIgZmlsZXMuDQo+ID4+Pj4+IENoYW5nZSBwb3J0IGRlZmluaXRpb24gdG8gdWlu dDE2X3Qgb3IgdWludDhfdCAoZm9yIElCKS4NCj4gPj4+Pj4gVXNlIGdldGxpbmUoKSBpbiBwbGFj ZSBvZiBmZ2V0cygpIHRvIHJlYWQgYW5kIHRydW5jYXRlIGEgbGluZS4NCj4gPj4+Pj4gdjM6DQo+ ID4+Pj4+IEFkZCBtZXNvbiBidWlsZCBjaGVjayBmb3IgcmVxdWlyZWQgZnVuY3Rpb25zIGZyb20g UkRNQSBkaXJlY3QgdmVyYg0KPiA+Pj4+PiBoZWFkZXIgZmlsZQ0KPiA+Pj4+PiB2NDoNCj4gPj4+ Pj4gUmVtb3ZlIGV4dHJhICJcbiIgaW4gbG9nZ2luZyBjb2RlLg0KPiA+Pj4+PiBVc2UgInIiIGlu IHBsYWNlIG9mICJyYiIgaW4gZm9wZW4oKSB0byByZWFkIHRleHQgZmlsZXMuDQo+ID4+Pj4+DQo+ ID4+Pj4+IFtzbmlwXQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICtzdGF0aWMgaW50IG1hbmFfcGNpX3By b2JlX21hYyhzdHJ1Y3QgcnRlX3BjaV9kcml2ZXIgKnBjaV9kcnYNCj4gPj4+PiBfX3J0ZV91bnVz ZWQsDQo+ID4+Pj4+ICsJCQkgICAgICBzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXYsDQo+ ID4+Pj4+ICsJCQkgICAgICBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgKm1hY19hZGRyKSB7DQo+ID4+ Pj4+ICsJc3RydWN0IGlidl9kZXZpY2UgKippYnZfbGlzdDsNCj4gPj4+Pj4gKwlpbnQgaWJ2X2lk eDsNCj4gPj4+Pj4gKwlzdHJ1Y3QgaWJ2X2NvbnRleHQgKmN0eDsNCj4gPj4+Pj4gKwlzdHJ1Y3Qg aWJ2X2RldmljZV9hdHRyX2V4IGRldl9hdHRyOw0KPiA+Pj4+PiArCWludCBudW1fZGV2aWNlczsN Cj4gPj4+Pj4gKwlpbnQgcmV0ID0gMDsNCj4gPj4+Pj4gKwl1aW50OF90IHBvcnQ7DQo+ID4+Pj4+ ICsJc3RydWN0IG1hbmFfcHJpdiAqcHJpdiA9IE5VTEw7DQo+ID4+Pj4+ICsJc3RydWN0IHJ0ZV9l dGhfZGV2ICpldGhfZGV2ID0gTlVMTDsNCj4gPj4+Pj4gKwlib29sIGZvdW5kX3BvcnQ7DQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKwlpYnZfbGlzdCA9IGlidl9nZXRfZGV2aWNlX2xpc3QoJm51bV9kZXZp Y2VzKTsNCj4gPj4+Pj4gKwlmb3IgKGlidl9pZHggPSAwOyBpYnZfaWR4IDwgbnVtX2RldmljZXM7 IGlidl9pZHgrKykgew0KPiA+Pj4+PiArCQlzdHJ1Y3QgaWJ2X2RldmljZSAqaWJkZXYgPSBpYnZf bGlzdFtpYnZfaWR4XTsNCj4gPj4+Pj4gKwkJc3RydWN0IHJ0ZV9wY2lfYWRkciBwY2lfYWRkcjsN Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArCQlEUlZfTE9HKElORk8sICJQcm9iZSBkZXZpY2UgbmFtZSAl cw0KPiBkZXZfbmFtZSAlcw0KPiA+Pj4+IGliZGV2X3BhdGggJXMiLA0KPiA+Pj4+PiArCQkJaWJk ZXYtPm5hbWUsIGliZGV2LT5kZXZfbmFtZSwgaWJkZXYtDQo+ID4+Pj4+IGliZGV2X3BhdGgpOw0K PiA+Pj4+PiArDQo+ID4+Pj4+ICsJCWlmIChtYW5hX2lidl9kZXZpY2VfdG9fcGNpX2FkZHIoaWJk ZXYsICZwY2lfYWRkcikpDQo+ID4+Pj4+ICsJCQljb250aW51ZTsNCj4gPj4+Pj4gKw0KPiA+Pj4+ PiArCQkvKiBJZ25vcmUgaWYgdGhpcyBJQiBkZXZpY2UgaXMgbm90IHRoaXMgUENJIGRldmljZSAq Lw0KPiA+Pj4+PiArCQlpZiAocGNpX2Rldi0+YWRkci5kb21haW4gIT0gcGNpX2FkZHIuZG9tYWlu IHx8DQo+ID4+Pj4+ICsJCSAgICBwY2lfZGV2LT5hZGRyLmJ1cyAhPSBwY2lfYWRkci5idXMgfHwN Cj4gPj4+Pj4gKwkJICAgIHBjaV9kZXYtPmFkZHIuZGV2aWQgIT0gcGNpX2FkZHIuZGV2aWQgfHwN Cj4gPj4+Pj4gKwkJICAgIHBjaV9kZXYtPmFkZHIuZnVuY3Rpb24gIT0gcGNpX2FkZHIuZnVuY3Rp b24pDQo+ID4+Pj4+ICsJCQljb250aW51ZTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCQljdHggPSBp YnZfb3Blbl9kZXZpY2UoaWJkZXYpOw0KPiA+Pj4+PiArCQlpZiAoIWN0eCkgew0KPiA+Pj4+PiAr CQkJRFJWX0xPRyhFUlIsICJGYWlsZWQgdG8gb3BlbiBJQiBkZXZpY2UgJXMiLA0KPiA+Pj4+PiAr CQkJCWliZGV2LT5uYW1lKTsNCj4gPj4+Pj4gKwkJCWNvbnRpbnVlOw0KPiA+Pj4+PiArCQl9DQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKwkJcmV0ID0gaWJ2X3F1ZXJ5X2RldmljZV9leChjdHgsIE5VTEws ICZkZXZfYXR0cik7DQo+ID4+Pj4+ICsJCURSVl9MT0coSU5GTywNCj4gImRldl9hdHRyLm9yaWdf YXR0ci5waHlzX3BvcnRfY250ICV1IiwNCj4gPj4+Pj4gKwkJCWRldl9hdHRyLm9yaWdfYXR0ci5w aHlzX3BvcnRfY250KTsNCj4gPj4+Pj4gKwkJZm91bmRfcG9ydCA9IGZhbHNlOw0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsJCWZvciAocG9ydCA9IDE7IHBvcnQgPD0NCj4gZGV2X2F0dHIub3JpZ19hdHRy LnBoeXNfcG9ydF9jbnQ7DQo+ID4+Pj4+ICsJCSAgICAgcG9ydCsrKSB7DQo+ID4+Pj4+ICsJCQlz dHJ1Y3QgaWJ2X3BhcmVudF9kb21haW5faW5pdF9hdHRyIGF0dHIgPSB7fTsNCj4gPj4+Pj4gKwkJ CXN0cnVjdCBydGVfZXRoZXJfYWRkciBhZGRyOw0KPiA+Pj4+PiArCQkJY2hhciBhZGRyZXNzWzY0 XTsNCj4gPj4+Pj4gKwkJCWNoYXIgbmFtZVtSVEVfRVRIX05BTUVfTUFYX0xFTl07DQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gKwkJCXJldCA9IGdldF9wb3J0X21hYyhpYmRldiwgcG9ydCwgJmFkZHIpOw0K PiA+Pj4+PiArCQkJaWYgKHJldCkNCj4gPj4+Pj4gKwkJCQljb250aW51ZTsNCj4gPj4+Pj4gKw0K PiA+Pj4+PiArCQkJaWYgKG1hY19hZGRyDQo+ICYmICFydGVfaXNfc2FtZV9ldGhlcl9hZGRyKCZh ZGRyLA0KPiA+Pj4+IG1hY19hZGRyKSkNCj4gPj4+Pj4gKwkJCQljb250aW51ZTsNCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArCQkJcnRlX2V0aGVyX2Zvcm1hdF9hZGRyKGFkZHJlc3MsDQo+IHNpemVvZihh ZGRyZXNzKSwNCj4gPj4+PiAmYWRkcik7DQo+ID4+Pj4+ICsJCQlEUlZfTE9HKElORk8sICJkZXZp Y2UgbG9jYXRlZCBwb3J0ICV1DQo+IGFkZHJlc3MNCj4gPj4+PiAlcyIsDQo+ID4+Pj4+ICsJCQkJ cG9ydCwgYWRkcmVzcyk7DQo+ID4+Pj4+ICsJCQlmb3VuZF9wb3J0ID0gdHJ1ZTsNCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArCQkJcHJpdiA9IHJ0ZV96bWFsbG9jX3NvY2tldChOVUxMLCBzaXplb2YoKnBy aXYpLA0KPiA+Pj4+PiArDQo+IFJURV9DQUNIRV9MSU5FX1NJWkUsDQo+ID4+Pj4+ICsJCQkJCQkg IFNPQ0tFVF9JRF9BTlkpOw0KPiA+Pj4+PiArCQkJaWYgKCFwcml2KSB7DQo+ID4+Pj4+ICsJCQkJ cmV0ID0gLUVOT01FTTsNCj4gPj4+Pj4gKwkJCQlnb3RvIGZhaWxlZDsNCj4gPj4+Pj4gKwkJCX0N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArCQkJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiJXNf cG9ydCVkIiwNCj4gPj4+Pj4gKwkJCQkgcGNpX2Rldi0+ZGV2aWNlLm5hbWUsIHBvcnQpOw0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsJCQlpZiAocnRlX2VhbF9wcm9jZXNzX3R5cGUoKSA9PQ0KPiA+Pj4+ IFJURV9QUk9DX1NFQ09OREFSWSkgew0KPiA+Pj4+PiArCQkJCWludCBmZDsNCj4gPj4+Pj4gKw0K PiA+Pj4+PiArCQkJCWV0aF9kZXYgPQ0KPiA+Pj4+IHJ0ZV9ldGhfZGV2X2F0dGFjaF9zZWNvbmRh cnkobmFtZSk7DQo+ID4+Pj4+ICsJCQkJaWYgKCFldGhfZGV2KSB7DQo+ID4+Pj4+ICsJCQkJCURS Vl9MT0coRVJSLCAiQ2FuJ3QgYXR0YWNoDQo+IHRvIGRldg0KPiA+Pj4+ICVzIiwNCj4gPj4+Pj4g KwkJCQkJCW5hbWUpOw0KPiA+Pj4+PiArCQkJCQlyZXQgPSAtRU5PTUVNOw0KPiA+Pj4+PiArCQkJ CQlnb3RvIGZhaWxlZDsNCj4gPj4+Pj4gKwkJCQl9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwkJCQll dGhfZGV2LT5kZXZpY2UgPSAmcGNpX2Rldi0+ZGV2aWNlOw0KPiA+Pj4+PiArCQkJCWV0aF9kZXYt PmRldl9vcHMgPQ0KPiAmbWFuYV9kZXZfc2VjX29wczsNCj4gPj4+Pj4gKwkJCQlyZXQgPSBtYW5h X3Byb2NfcHJpdl9pbml0KGV0aF9kZXYpOw0KPiA+Pj4+PiArCQkJCWlmIChyZXQpDQo+ID4+Pj4+ ICsJCQkJCWdvdG8gZmFpbGVkOw0KPiA+Pj4+PiArCQkJCXByaXYtPnByb2Nlc3NfcHJpdiA9IGV0 aF9kZXYtDQo+ID4+Pj4+IHByb2Nlc3NfcHJpdmF0ZTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCQkJ CS8qIEdldCB0aGUgSUIgRkQgZnJvbSB0aGUgcHJpbWFyeQ0KPiBwcm9jZXNzICovDQo+ID4+Pj4+ ICsJCQkJZmQgPQ0KPiA+Pj4+IG1hbmFfbXBfcmVxX3ZlcmJzX2NtZF9mZChldGhfZGV2KTsNCj4g Pj4+Pj4gKwkJCQlpZiAoZmQgPCAwKSB7DQo+ID4+Pj4+ICsJCQkJCURSVl9MT0coRVJSLCAiRmFp bGVkIHRvIGdldA0KPiBGRCAlZCIsDQo+ID4+Pj4gZmQpOw0KPiA+Pj4+PiArCQkJCQlyZXQgPSAt RU5PREVWOw0KPiA+Pj4+PiArCQkJCQlnb3RvIGZhaWxlZDsNCj4gPj4+Pj4gKwkJCQl9DQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKwkJCQlyZXQgPQ0KPiA+Pj4+IG1hbmFfbWFwX2Rvb3JiZWxsX3NlY29u ZGFyeShldGhfZGV2LCBmZCk7DQo+ID4+Pj4+ICsJCQkJaWYgKHJldCkgew0KPiA+Pj4+PiArCQkJ CQlEUlZfTE9HKEVSUiwgIkZhaWxlZA0KPiBzZWNvbmRhcnkNCj4gPj4+PiBtYXAgJWQiLA0KPiA+ Pj4+PiArCQkJCQkJZmQpOw0KPiA+Pj4+PiArCQkJCQlnb3RvIGZhaWxlZDsNCj4gPj4+Pj4gKwkJ CQl9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwkJCQkvKiBmZCBpcyBubyBub3QgdXNlZCBhZnRlciBt YXBwaW5nDQo+IGRvb3JiZWxsICovDQo+ID4+Pj4+ICsJCQkJY2xvc2UoZmQpOw0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsNCj4gCXJ0ZV9zcGlubG9ja19sb2NrKCZtYW5hX3NoYXJlZF9kYXRhLQ0KPiA+ Pj4+PiBsb2NrKTsNCj4gPj4+Pj4gKwkJCQltYW5hX3NoYXJlZF9kYXRhLQ0KPiA+c2Vjb25kYXJ5 X2NudCsrOw0KPiA+Pj4+PiArCQkJCW1hbmFfbG9jYWxfZGF0YS5zZWNvbmRhcnlfY250Kys7DQo+ ID4+Pj4+ICsNCj4gCXJ0ZV9zcGlubG9ja191bmxvY2soJm1hbmFfc2hhcmVkX2RhdGEtDQo+ID4+ Pj4+IGxvY2spOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJCQkJcnRlX2V0aF9jb3B5X3BjaV9pbmZv KGV0aF9kZXYsDQo+IHBjaV9kZXYpOw0KPiA+Pj4+PiArDQo+IAlydGVfZXRoX2Rldl9wcm9iaW5n X2ZpbmlzaChldGhfZGV2KTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCQkJCS8qIEltcG9zc2libGUg dG8gaGF2ZSBtb3JlIHRoYW4gb25lDQo+IHBvcnQNCj4gPj4+Pj4gKwkJCQkgKiBtYXRjaGluZyBh IE1BQyBhZGRyZXNzDQo+ID4+Pj4+ICsJCQkJICovDQo+ID4+Pj4+ICsJCQkJY29udGludWU7DQo+ ID4+Pj4+ICsJCQl9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwkJCWV0aF9kZXYgPSBydGVfZXRoX2Rl dl9hbGxvY2F0ZShuYW1lKTsNCj4gPj4+Pj4gKwkJCWlmICghZXRoX2Rldikgew0KPiA+Pj4+PiAr CQkJCXJldCA9IC1FTk9NRU07DQo+ID4+Pj4+ICsJCQkJZ290byBmYWlsZWQ7DQo+ID4+Pj4+ICsJ CQl9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwkJCWV0aF9kZXYtPmRhdGEtPm1hY19hZGRycyA9DQo+ ID4+Pj4+ICsJCQkJcnRlX2NhbGxvYygibWFuYV9tYWMiLCAxLA0KPiA+Pj4+PiArCQkJCQkgICBz aXplb2Yoc3RydWN0DQo+IHJ0ZV9ldGhlcl9hZGRyKSwgMCk7DQo+ID4+Pj4+ICsJCQlpZiAoIWV0 aF9kZXYtPmRhdGEtPm1hY19hZGRycykgew0KPiA+Pj4+PiArCQkJCXJldCA9IC1FTk9NRU07DQo+ ID4+Pj4+ICsJCQkJZ290byBmYWlsZWQ7DQo+ID4+Pj4+ICsJCQl9DQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKwkJCXJ0ZV9ldGhlcl9hZGRyX2NvcHkoJmFkZHIsIGV0aF9kZXYtDQo+ID5kYXRhLQ0KPiA+ Pj4+PiBtYWNfYWRkcnMpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJCQlwcml2LT5pYl9wZCA9IGli dl9hbGxvY19wZChjdHgpOw0KPiA+Pj4+PiArCQkJaWYgKCFwcml2LT5pYl9wZCkgew0KPiA+Pj4+ PiArCQkJCURSVl9MT0coRVJSLCAiaWJ2X2FsbG9jX3BkIGZhaWxlZA0KPiBwb3J0ICVkIiwNCj4g Pj4+PiBwb3J0KTsNCj4gPj4+Pj4gKwkJCQlyZXQgPSAtRU5PTUVNOw0KPiA+Pj4+PiArCQkJCWdv dG8gZmFpbGVkOw0KPiA+Pj4+PiArCQkJfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJCQkvKiBDcmVh dGUgYSBwYXJlbnQgZG9tYWluIHdpdGggdGhlIHBvcnQNCj4gbnVtYmVyICovDQo+ID4+Pj4+ICsJ CQlhdHRyLnBkID0gcHJpdi0+aWJfcGQ7DQo+ID4+Pj4+ICsJCQlhdHRyLmNvbXBfbWFzayA9DQo+ ID4+Pj4gSUJWX1BBUkVOVF9ET01BSU5fSU5JVF9BVFRSX1BEX0NPTlRFWFQ7DQo+ID4+Pj4+ICsJ CQlhdHRyLnBkX2NvbnRleHQgPSAodm9pZCAqKSh1aW50NjRfdClwb3J0Ow0KPiA+Pj4+PiArCQkJ cHJpdi0+aWJfcGFyZW50X3BkID0NCj4gaWJ2X2FsbG9jX3BhcmVudF9kb21haW4oY3R4LA0KPiA+ Pj4+ICZhdHRyKTsNCj4gPj4+Pj4gKwkJCWlmICghcHJpdi0+aWJfcGFyZW50X3BkKSB7DQo+ID4+ Pj4+ICsJCQkJRFJWX0xPRyhFUlIsDQo+ID4+Pj4+ICsJCQkJCSJpYnZfYWxsb2NfcGFyZW50X2Rv bWFpbg0KPiBmYWlsZWQgcG9ydA0KPiA+Pj4+ICVkIiwNCj4gPj4+Pj4gKwkJCQkJcG9ydCk7DQo+ ID4+Pj4+ICsJCQkJcmV0ID0gLUVOT01FTTsNCj4gPj4+Pj4gKwkJCQlnb3RvIGZhaWxlZDsNCj4g Pj4+Pj4gKwkJCX0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCQkJcHJpdi0+aWJfY3R4ID0gY3R4Ow0K PiA+Pj4+PiArCQkJcHJpdi0+cG9ydF9pZCA9IGV0aF9kZXYtPmRhdGEtPnBvcnRfaWQ7DQo+ID4+ Pj4+ICsJCQlwcml2LT5kZXZfcG9ydCA9IHBvcnQ7DQo+ID4+Pj4+ICsJCQlldGhfZGV2LT5kYXRh LT5kZXZfcHJpdmF0ZSA9IHByaXY7DQo+ID4+Pj4+ICsJCQlwcml2LT5kZXZfZGF0YSA9IGV0aF9k ZXYtPmRhdGE7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKwkJCXByaXYtPm1heF9yeF9xdWV1ZXMgPQ0K PiBkZXZfYXR0ci5vcmlnX2F0dHIubWF4X3FwOw0KPiA+Pj4+PiArCQkJcHJpdi0+bWF4X3R4X3F1 ZXVlcyA9DQo+IGRldl9hdHRyLm9yaWdfYXR0ci5tYXhfcXA7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4g KwkJCXByaXYtPm1heF9yeF9kZXNjID0NCj4gPj4+Pj4gKw0KPiAJUlRFX01JTihkZXZfYXR0ci5v cmlnX2F0dHIubWF4X3FwX3dyLA0KPiA+Pj4+PiArCQkJCQlkZXZfYXR0ci5vcmlnX2F0dHIubWF4 X2NxZSk7DQo+ID4+Pj4+ICsJCQlwcml2LT5tYXhfdHhfZGVzYyA9DQo+ID4+Pj4+ICsNCj4gCVJU RV9NSU4oZGV2X2F0dHIub3JpZ19hdHRyLm1heF9xcF93ciwNCj4gPj4+Pj4gKwkJCQkJZGV2X2F0 dHIub3JpZ19hdHRyLm1heF9jcWUpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJCQlwcml2LT5tYXhf c2VuZF9zZ2UgPQ0KPiBkZXZfYXR0ci5vcmlnX2F0dHIubWF4X3NnZTsNCj4gPj4+Pj4gKwkJCXBy aXYtPm1heF9yZWN2X3NnZSA9DQo+IGRldl9hdHRyLm9yaWdfYXR0ci5tYXhfc2dlOw0KPiA+Pj4+ PiArDQo+ID4+Pj4+ICsJCQlwcml2LT5tYXhfbXIgPSBkZXZfYXR0ci5vcmlnX2F0dHIubWF4X21y Ow0KPiA+Pj4+PiArCQkJcHJpdi0+bWF4X21yX3NpemUgPQ0KPiA+Pj4+IGRldl9hdHRyLm9yaWdf YXR0ci5tYXhfbXJfc2l6ZTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArCQkJRFJWX0xPRyhJTkZPLCAi ZGV2ICVzIG1heCBxdWV1ZXMgJWQNCj4gZGVzYyAlZA0KPiA+Pj4+IHNnZSAlZCIsDQo+ID4+Pj4+ ICsJCQkJbmFtZSwgcHJpdi0+bWF4X3J4X3F1ZXVlcywgcHJpdi0NCj4gPj4+Pj4gbWF4X3J4X2Rl c2MsDQo+ID4+Pj4+ICsJCQkJcHJpdi0+bWF4X3NlbmRfc2dlKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+ PiArCQkJcnRlX3NwaW5sb2NrX2xvY2soJm1hbmFfc2hhcmVkX2RhdGEtDQo+ID5sb2NrKTsNCj4g Pj4+Pj4gKwkJCW1hbmFfc2hhcmVkX2RhdGEtPnByaW1hcnlfY250Kys7DQo+ID4+Pj4+ICsJCQly dGVfc3BpbmxvY2tfdW5sb2NrKCZtYW5hX3NoYXJlZF9kYXRhLQ0KPiA+bG9jayk7DQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gKwkJCWV0aF9kZXYtPmRhdGEtPmRldl9mbGFncyB8PQ0KPiA+Pj4+IFJURV9F VEhfREVWX0lOVFJfUk1WOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJCQlldGhfZGV2LT5kZXZpY2Ug PSAmcGNpX2Rldi0+ZGV2aWNlOw0KPiA+Pj4+PiArCQkJZXRoX2Rldi0+ZGF0YS0+ZGV2X2ZsYWdz IHw9DQo+ID4+Pj4+ICsNCj4gCVJURV9FVEhfREVWX0FVVE9GSUxMX1FVRVVFX1hTVEFUUzsNCj4g Pj4+Pj4gKw0KPiA+Pj4+IFBsZWFzZSBkbyBub3QgdXNlIHRoZSB0ZW1wb3JhcnkgbWFjcm8uIFBs ZWFzZSByZXZpZXcgdGhpcyBwYXRjaDoNCj4gPj4+Pg0KPiA+Pj4+IGYzMGU2OWI0MWY5NCAoImV0 aGRldjogYWRkIGRldmljZSBmbGFnIHRvIGJ5cGFzcyBhdXRvLWZpbGxlZCBxdWV1ZQ0KPiA+Pj4+ IHhzdGF0cyIpDQo+ID4+Pj4NCj4gPj4+PiBUaGlzIHBhdGNoIHJlcXVpcmVzIHRoYXQgcGVyIHF1 ZXVlIHN0YXRpc3RpY3MgYXJlIGZpbGxlZCBpbg0KPiA+Pj4+IC54c3RhdHNfZ2V0KCkgYnkgUE1E Lg0KPiA+Pj4gVGhhbmtzIGZvciBwb2ludGluZyB0aGlzIG91dC4NCj4gPj4+DQo+ID4+PiBJdCBz ZWVtcyBzb21lIFBNRHMgYXJlIHN0aWxsIGRlcGVuZGluZyBvbiB0aGlzIGZsYWcgZm9yIHhzdGF0 cy4NCj4gPj4+DQo+ID4+PiBNQU5BIGRvZXNuJ3QgaW1wbGVtZW50IHhzdGF0c19nZXQoKSBjdXJy ZW50bHksIHRoaXMgZmxhZyBpcyB1c2VmdWwuDQo+ID4+PiBJcyBpdA0KPiA+PiBva2F5IHRvIGtl ZXAgdXNpbmcgdGhpcyBmbGFnIGJlZm9yZSBpdCdzIGZpbmFsbHkgdGhlIHRpbWUgdG8gcmVtb3Zl DQo+ID4+IGl0IGZyb20gYWxsIFBNRHMsIG9yIHdoZW4gTUFOQSBpbXBsZW1lbnRzIHhzdGF0cz8N Cj4gPj4gWWVzLCB5b3VyIHhzdGF0cyBkb2Vzbid0IGltcGxlbWVudCBub3cuIFBlciBxdWV1ZSBz dGF0cyBzaG91bGQgYmUNCj4gPj4gZmlsbGVkIGluIHhzdGF0cyBBUEksIGFuZCB0aGUgc3RhdHMg QVBJIGNhbm5vdCBzZWUgcGVyIHF1ZXVlIHN0YXRzLA0KPiA+PiBzbyBzdGF0cyBBUEkgaW4gZHJp dmVyIHNob3VsZG4ndCBmaWxsIGl0KHN1Z2dlc3QgdGhhdCBkZWxldGUgaXQgZnJvbSBwYXRjaA0K PiAxNy8xOCkuDQo+ID4+DQo+ID4+IEkgZ3Vlc3MgdGhpcyBmbGFnIGNhbiBiZSByZW1vdmVkIGlm IFBNRCBkb2VzIG5vdCBzdXBwb3J0IHhzdGF0cy4NCj4gPj4+DQo+ID4gSSBkb24ndCB1bmRlcnN0 YW5kIHlvdXIgc3VnZ2VzdGlvbi4gQW4gYXBwbGljYXRpb24gY2FuIGNhbGwNCj4gcnRlX2V0aF9z dGF0c19nZXQoKSB0byBnZXQgcG9ydCBzdGF0cywgYW5kIHRoaXMgd2lsbCBjYWxsIGludG8gc3Rh dHNfZ2V0KCkgaW4gdGhlDQo+IGRyaXZlciwgYXMgaW1wbGVtZW50ZWQgaW4gcGF0Y2ggMTcvMTgu DQo+ID4NCj4gPiBXaGVuIGZsYWcgUlRFX0VUSF9ERVZfQVVUT0ZJTExfUVVFVUVfWFNUQVRTICBp cyBzZXQsIGFuIGFwcGxpY2F0aW9uDQo+IGNhbiBhbHNvIHVzZSBydGVfZXRoX3hzdGF0c19nZXQo KSB0byBnZXQgcG9ydCBzdGF0cyBldmVuIHRoZSBkcml2ZXIgZG9lc24ndA0KPiBpbXBsZW1lbnQg eHN0YXRzX2dldCgpLg0KPiANCj4gSSB0aGluayBuZXcgUE1EIHNob3VsZCBmb2xsb3cgdGhlIGFu bm91bmNlZCBzd2l0Y2ggRmVycnVoIG1lbnRpb25lZCwNCj4gb3RoZXJ3aXNlLCB0aGUgc3dpdGNo IHdpbGwgbmV2ZXIgYmUgY29tcGxldGVkLg0KDQpJIHNlZSBub3cgSSB1bmRlcnN0YW5kIG1vcmUu IEkgcHJlZmVyIHRvIGtlZXAgcGF0Y2ggMTcvMTgsIG9yIGFuIGFwcGxpY2F0aW9uIGNhbGxpbmcg cnRlX2V0aF9zdGF0c19nZXQoKSB3aWxsIGZhaWwuIChiZWZvcmUgdGhlIHN3aXRjaCBoYXBwZW5z KQ0KDQo+IA0KPiBTdWdnZXN0IHRoYXQgbWFuYSBkcml2ZXIgY2FuIGltcGxlbWVudCBhIHNpbXBs ZSB4c3RhdHNfZ2V0KCkgdG8gZmlsbCBwZXINCj4gcXVldWUgc3RhdHMgaWYgeW91IHdhbnQgdG8g c3VwcG9ydCBwZXIgcXVldWUgc3RhdHMuDQo+IA0KPiBARmVycnVoLCB3aGF0IGRvIHlvdSB0aGlu az8NCg==