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 3BCC9A00C3; Tue, 20 Sep 2022 15:59:21 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D112540DFB; Tue, 20 Sep 2022 15:59:20 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2085.outbound.protection.outlook.com [40.107.220.85]) by mails.dpdk.org (Postfix) with ESMTP id 0645D4069B for ; Tue, 20 Sep 2022 15:59:18 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N+yM6xzqvIp9pKkeXWKivcV1qp73RIqEyu+WTKymmKU/2kdS+5ukODkPjoWMQPtlCVdn6WZWoOxnuBb0Aox7nyDRP6LUWq9AdJr96jS2P5IsHQAYWAtSqykpTzX3eaKScRKND8f5M0n1T/m9aalWLYxtwVqosDGp1yRhqgEjhISRfTcqO/hp/zcYrcVLFGjm+nOnHcWDzKnlF6aHgl39U9oc9QDfVO9yVkek99vnt/xAW/uvU/d38eXCADtCWa2dEL1RgUJB+KhIrQbLTuZCwyNeLLb09uJDhQOirVdNiMrFc6JYXp0ROgYahlqnGFp4dDy1S3ycE+faA6ItpvgcLg== 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=QTePT1oF9lzMnwEoYasVj9KLk8OW2pGZJLjoKpw/Le8=; b=IXzLWPX7CQM2sNo5cVIAjv8VO2COiPE4exnXxRe/A4IE2VxkCA8xTwaHermP41/qsfZcIEDiJVS3UCsRUuGyLc69j2L4D/ris6QLd+oxmF/6mgAszbMWRWUEfA9E3sHfQjEeOvmtAHeNtO6+osa6fwEvRpp3U8b4aJxFdReYgSaINr8bVq8UZz2To8YkJ5se8qOrJhVfwVrnEpbu3HZMvlr75IQt3Bg2RFsKWNNgbcbmrn6zBihzx+yeRGWj1auKaP5Ce2awVb4Z8WY5ejdE7e2nts8VgsAaIYgqqH3+j3J0qWbqb7MfFBaCS4uy95WzkucWY0wqVv9nu2rTq78x5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QTePT1oF9lzMnwEoYasVj9KLk8OW2pGZJLjoKpw/Le8=; b=BG0RkSlU1JaLGIs0L0sUbv5uF26N3RjSF5SG7tX6EEbJqJG6a+m43LDBGNygEGXm3Frjo6iEl6V/HWJK9hogn9YWWyvrCFqnCLmCMeloKwFLf01yYW7cpc36WfmuSV6401LyB1mRDA0ggO94G8XvHJKfwglzOarY3o+t+W8AHJ1RFDufP3k/hOMt8/jwdFS9NgVmbHamcXVp1YR62Ba4V3giK83UdukWJgLcoMYTpqPsByr7WzZE4kZelTrFQ2Dd1/HNQjmISI/SS0+e4aw1070nbXEBnIdnFqTlod9/Tu+tGZnR7j6Ulf641tayddtKbEgiKoNdfbwXtP/zUlSIQQ== Received: from MW2PR12MB4666.namprd12.prod.outlook.com (2603:10b6:302:13::22) by SJ0PR12MB5609.namprd12.prod.outlook.com (2603:10b6:a03:42c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.18; Tue, 20 Sep 2022 13:59:15 +0000 Received: from MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::9847:f2a5:c4f:ec52]) by MW2PR12MB4666.namprd12.prod.outlook.com ([fe80::9847:f2a5:c4f:ec52%5]) with mapi id 15.20.5632.021; Tue, 20 Sep 2022 13:59:15 +0000 From: Ori Kam To: Ivan Malov CC: "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Rongwei Liu , Matan Azrad , Slava Ovsiienko , Aman Singh , Yuying Zhang , Andrew Rybchenko , "dev@dpdk.org" , Raslan Darawsheh Subject: RE: [PATCH v1] ethdev: add direction info when creating the transfer table Thread-Topic: [PATCH v1] ethdev: add direction info when creating the transfer table Thread-Index: AQHYwmNBlMPGSxWFbECmDbi50+NQZa3cDLOAgAFdCwCAAAzvgIAA9vIAgAAlywCAAC4vAIAAU/oAgACiMQCAAHInAIAAEUWAgAAkdICAAATEgIAHt1DAgAA9WICAAAyHcA== Date: Tue, 20 Sep 2022 13:59:15 +0000 Message-ID: References: <20220907024020.2474860-1-rongweil@nvidia.com> <297a487e-b5d-4928-e96-c80b2603dd8@oktetlabs.ru> <2834724.SvYEEZNnvj@thomas> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW2PR12MB4666:EE_|SJ0PR12MB5609:EE_ x-ms-office365-filtering-correlation-id: 2b23f527-d3dc-4f17-e34e-08da9b104dc6 x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: aqLJszwKAAoP/nQHiJGbkQuD4xVKJmSkL0qqNaHZIbKK9UhB08t/Ap+w+dPiu9sEL+dTK0EtHVkSZqjVjZR6SK8ANKHvUWG37DeP1WBiNotcUFJHPkXRZOm/g7pFZgRzJap03KpcobobQJgT3l0ousLJ/MFFlinlp0InZ/j4mPtMSYmkA5MQcEnCzNkvGEVt6e0YMlSFxZHq5T07MUrw+y/vde71QQ7puQzs36u030YhUoaG/zloEX2lr9ENdLoPas493v3ZchqzkOC2DOwcwV/+5BaXoY+dJZTntwHmt1jSKxYvaYiud7zKtaaS/GYmr3Jon6GHKqoLcIoUVIuY3XMN/Ubk2Pgd5jwhVEONmKKG2w8/MxrI1+JPQCVBGv6+z8mI60lFveJuk0uwrKVcg+ywAaGp8128sbnXqwarxxfzvL4WH1FKCk+NfQ6ADOGa24by30Jy/LIccG1k87SUYv766pGbuXiJoPusHZynM6o8Mgk1h/6Ud/eh/Gjweu5I2ahXzd1Fzg9AFP7eIiGWv2Y1nEFHnIabfzPvj+scIRjQUgbyHy+jpgzjAuC6RwT1SeFwqCU+LKLzdwD4tEtvXlU0TYvv3djCbKmaX9/qTEOqlFg8NNFuHyQfC2wopi/C3X2EvndXIV1e3inp/ldIYevUaHQsi/aiWP3toIoMOTwSyrI7KTCEOj+neWlePseoeQsKU9iAg0v5fS68nEG3P5UCew8BnTedJIyWjHDtw1EDcOdOh4j4YDg0jzE50/H91tIJPK9IK7hKTPs7hWq1hA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR12MB4666.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(366004)(396003)(136003)(346002)(376002)(39860400002)(451199015)(86362001)(7696005)(6506007)(107886003)(52536014)(38070700005)(8936002)(66446008)(41300700001)(64756008)(26005)(4326008)(66476007)(186003)(66556008)(478600001)(76116006)(54906003)(71200400001)(66946007)(33656002)(6916009)(316002)(2906002)(83380400001)(122000001)(5660300002)(38100700002)(55016003)(9686003)(30864003)(8676002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?S1JNU2Z0MXcyZFJTUnVqM2x5NHV4TFhzTG1SMEh0eVFGSGZaM28raGQ4MHJP?= =?utf-8?B?c2hqWi84VjJrUjdyeGtpemZNZ1UvNzBUbFhqUEJKVXliVGNUWXlrbW9XRWxV?= =?utf-8?B?UUkzaGVjUjdKcEZ5eW1ka0l2d3NqTk02N1BhWmVrZG5yNk1ncWU3cjFVZEM4?= =?utf-8?B?UkhaS3hRa082Q2xoVWtkNXlKdUJiOEFNZWR2UWs1bjU1SzJXUGo2bHVHa0JK?= =?utf-8?B?NTYrWjd0OFp6ajZOUVdRdmtKT2dLTXBFa3NZY3hhOXlNdlJBV3hCSXA2T0FK?= =?utf-8?B?cUlobHB3Q0FvS2VJNlB2U3Z0NVkxMHNEMXF1MHg0cy9OL2V1eFJFZ0tqakxD?= =?utf-8?B?b3JSTDcvZktPWExIRCtySHZQaFRDby9iNFUrdm5BNjAvTklPbFRER2xVb0ho?= =?utf-8?B?RW5Qd2Q2NmhJV1VSdGFwRHFpRUwwQS9HOW40YndHaGZOZDdpOU9xeGMycDBr?= =?utf-8?B?SHRMWmxWZUdhbGlvK1hOeVVYeDQ5eWRXbHJWTDJhc1lGdlNsZW5xSktJU0gy?= =?utf-8?B?RGZJeG50dkFGUjFMZDIwdlBPUHhwbFBiemVqYnBOWkRWV3R3aEcyNDNXWTJ1?= =?utf-8?B?UHpqaFdzK0VWZGdJT2pCVVdXWkVDOXVxV1dsUmNIMnAvV0s1dENyOElzdTZu?= =?utf-8?B?bG9kMUhhSUUwcFVpRXZsc2FpeUhXTDd6T0JmT3FXZG1yUERJckNHR2drUDF4?= =?utf-8?B?alFZMUNGd0lib3ZqdXFDd09paU1pa0ViMlJ4UUdYYVVEVW0yWU5NOFFuTFZp?= =?utf-8?B?azNIWEVwQXNLMzlQUTRyZGNTYVkwd0hSa3VrNmJ5eTZ4bjlWbzhNMTZaaXZC?= =?utf-8?B?YlZaNFkxVEl0RVRrNmtUMEhvUDVKVEc5b3VRUWVEU0pvNDhJVm1DdTdKRytN?= =?utf-8?B?ekgxSDhIOG5odXZMVy9pdDRYR3lvejRkRUpFeTJOWUhyQjdIdGx6YU94cjVU?= =?utf-8?B?ZTIxMS9LUWU5MEM5eHFTaTA2ZGg1aGI0VE9hQkJhbzJuZXFXQ2RnWWIyTnhB?= =?utf-8?B?Y0IrMmNrak90dm5RMWdweHFvWFJPQStIRmtSd3FTUDRlRi9EUjFkRGJVaXJV?= =?utf-8?B?d0hRbXV3a1BHNjRRNmNTVGFHU1RFZStqaGtuT2VrSDBreEQzOW1pTTFiaVRX?= =?utf-8?B?aWZ4UG9NeW0vdVBCQXhqOWpUWmpzMHEvdjBIUGl6dmJiNDN0c1FmVUUxUVUz?= =?utf-8?B?STA5b3h0dGVJQUdkU3ZjUXVzdDEwMDVBdlBCalZTaGRVTkpJUElJLzMwRTNK?= =?utf-8?B?cjc5LzRPbVpQQ1dDNFo2V3pRZ0RML3JRNlo3cGpaZXdFdXVPbU1LUnNaVXIw?= =?utf-8?B?NjZEdU5WS1N3QjZmWXZrMzBpaC9FcjZvMVp3eW90YXhhWjdBSXVKV0haOXRM?= =?utf-8?B?RFZ6RnNVREhvcDZsZWQ3NkJ1bUFNL3Exc05wK1hTMEhXMUZHaFBvTVl5dVRY?= =?utf-8?B?QVd2UnR3eEFSRTd6VCtXRjVMeFVuNWtKaEVIa2JHYmtqbWxCNDIvTHcvUjZH?= =?utf-8?B?dmRsNmdTbHRNOG1nODZqL3dHMHhGZG9UR0VHMXdIQ3hNWmVTRFcwN2ptSC80?= =?utf-8?B?eFFrUHVkaU1LNmoyT2FQWlRIZEx6SDVZNXRPcnRiYndOa1hhbmt4WlNWTlR3?= =?utf-8?B?QVJjODJBaitIdmVDS09GS0NyUlpobDA2YjVjVS90bStXaldUUFJrclRCMW9R?= =?utf-8?B?Qnk0UnBFNE9TSkRmbWFhQUdYaUFoUVRzVmR0NWs3NmY4ekFKSGxTc1RISkt0?= =?utf-8?B?R0RLZmdOUWlxajhzK2VXR3lmbThPeEN2RU4vZzJrcm8rMjh0aG94K1NTQjhn?= =?utf-8?B?dEtaME5LVTdQVjJBck5EUWEwVlRqTzBRUytGSU4rQUh1MFphUHdPZi80QTB1?= =?utf-8?B?NitxMzBiYlkxMVlDajB2MTNCL0UzU29MNkoxWTdxT0JuSzBaNlJLVnJQbXJJ?= =?utf-8?B?Zmtld3Z3MXFCUFZ2WjIxOTJFMEZ3bWF0ekE3Ky9pU2FhaXNUWHMzRUZrcllk?= =?utf-8?B?czBLNFMrcGE3KzBZeEUxYnlpK01XaXdzQitXYU8yckdnRWtWZmkzUmU1NWxW?= =?utf-8?B?Tk9kb0xFU0Q5ZkE3Y0Q1UlNxSkVZbW5EV2Vxb0k2ZFA2eUdoZlEwTGhVWWxr?= =?utf-8?Q?LNIU=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR12MB4666.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b23f527-d3dc-4f17-e34e-08da9b104dc6 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2022 13:59:15.2539 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: P1vlGv2+gpxyTsSi5wxTZrS2d1WmrUUAuCvbclyVeZnQX4uPqx847bRuduB9gwyf+5f4yw1ubysK/0kULnIQFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5609 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 SGkgSXZhbiwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJdmFuIE1h bG92IDxpdmFuLm1hbG92QG9rdGV0bGFicy5ydT4NCj4gU2VudDogVHVlc2RheSwgMjAgU2VwdGVt YmVyIDIwMjIgMTU6NDYNCj4gDQo+IEhpIE9yaSwNCj4gDQo+IE9uIFR1ZSwgMjAgU2VwIDIwMjIs IE9yaSBLYW0gd3JvdGU6DQo+IA0KPiA+IEhpIEl2YW4sIFRob21hcyBhbmQgUm9uZ3dlaQ0KPiA+ DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFRob21hcyBNb25q YWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD4NCj4gPj4gU2VudDogVGh1cnNkYXksIDE1IFNlcHRl bWJlciAyMDIyIDE0OjE2DQo+ID4+DQo+ID4+IDE1LzA5LzIwMjIgMTI6NTksIEl2YW4gTWFsb3Y6 DQo+ID4+PiBIaSBSb25nd2VpLA0KPiA+Pj4NCj4gPj4+IEluIHRoaXMgcmVwbHksIEkgZG8gbm90 IGluY2x1ZGUgdGhlIHByZXZpb3VzIG1haWwgYmVjYXVzZSB0aGUgYW1vdW50DQo+ID4+PiBvZiBp bmxpbmUgY29tbWVudGFyeSBoYXMgZ29uZSBoYXl3aXJlIG92ZXIgdGhlIHBhc3QgY291cGxlIG9m IGRheXMuDQo+ID4+PiBMZXQncyByZS1pdGVyYXRlLg0KPiA+Pj4NCj4gPj4+IEJ1dCBiZWZvcmUg SSBnZXQgdG8gdGhhdCwgSSdkIGxpa2UgdG8gb2ZmZXIgYSBmcmVzaCBwZXJzcGVjdGl2ZToNCj4g Pj4+DQo+ID4+PiBQZXJoYXBzLCBpZiB3ZSBhbGwgYWdyZWUgdGhhdCB0ZXJtICJ2cG9ydCIgbWVh bnMgYW4gZW5kcG9pbnQgd2hpY2gNCj4gPj4+IGNhbiBzdGFuZCBmb3IgYW55ICJwb3J0IiBleGNl cHQgZm9yIHBoeXNpY2FsIG9uZSwgdGhlbiBpdCBzaG91bGQNCj4gPj4+IGJlIHBvc3NpYmxlIHRv IHVzZSB0ZXJtIEFOWV9WUE9SVFMgcmF0aGVyIHRoYW4gQU5ZX0dVRVNUX1BPUlRTLg0KPiA+Pg0K PiA+PiBUaGUgb3Bwb3NpdGUgb2YgInBoeXNpY2FsIiBpcyAidmlydHVhbCIgaW5kZWVkLg0KPiA+ Pg0KPiA+Pj4gQnV0IHRoYXQncyB0cmlja3ksIG9mIGNvdXJzZS4gSSBkb24ndCBoYXZlIGEgd2F5 IHdpdGggbmFtaW5nLA0KPiA+Pj4gc28gbW9yZSBvcGluaW9ucyBhcmUgd2VsY29tZSBhbmQgdmVy eS12ZXJ5IGRlc2lyYWJsZSBoZXJlLg0KPiA+Pj4NCj4gPj4+IFNvOg0KPiA+Pj4NCj4gPj4+IDEp IERvIHlvdSBhZ3JlZSB0aGF0LCBpbiB5b3VyIHByb3Bvc2FsLCB0aGUgbmV3ICJ3aXJlX29yaWci IC8gInZmX29yaWciDQo+ID4+PiAgICAgcHJpbWl0aXZlcyBhcmUgaW4gZmFjdCB5ZXQgYW5vdGhl ciBtYXRjaCBjcml0ZXJpYT8NCj4gPj4+DQo+ID4+PiAgICAgLi4NCj4gPj4+DQo+ID4+PiAgICAg VG8gbWUsIGl0IGxvb2tzIHNvLiBJZiB0aGV5IGFyZSBtYXRjaCBjcml0ZXJpYSwgdGhlbiB0aGV5 IGJlbG9uZw0KPiA+Pj4gICAgIGluIG1hdGNoIHBhdHRlcm4sIHRoYXQgaXMsIHRoZXkgc2hvdWxk IGJlIGV4cHJlc3NlZCBhcyBuZXcgaXRlbXMuDQo+ID4+Pg0KPiA+Pj4gICAgIEZvciAidHJhbnNm ZXIiIHJ1bGVzLCB0aGUgKmV4aXN0aW5nKiBhdHRyaWJ1dGVzIGFyZTogImdyb3VwIg0KPiA+Pj4g ICAgIGFuZCAicHJpb3JpdHkiLiBBcyB5b3UgbWF5IG5vdGUsIHRoZXNlIGFyZSBjbGVhcmx5IG5v dCBtYXRjaA0KPiA+Pj4gICAgIGNyaXRlcmlhLiBUaGV5IGNvbnRyb2wgdGhlIGxvb2stdXAgb3Jk ZXIuIFNvLCB0byB0aGlzIGRheSwNCj4gPj4+ICAgICB0aGVyZSdyZSBubyBtYXRjaCBjcml0ZXJp YSBpbiBEUERLIGV4cHJlc3NlZCBhcyBhdHRyaWJ1dGVzLg0KPiA+Pj4NCj4gPj4+ICAgICBJZiB0 aGVzZSAid2lyZV9vcmlnIiAvICJ2Zl9vcmlnIiBhcmUgZ29pbmcgdG8gYmUgaW50cm9kdWNlZA0K PiA+Pj4gICAgIGFzIGF0dHJpYnV0ZXMsIHRoYXQgc2hvdWxkIGJlIGJhY2tlZCB3aXRoIHN0cm9u ZyBtb3RpdmF0aW9uLg0KPiA+Pg0KPiA+PiBJIHByZWZlciB3ZSBrZWVwIG1hdGNoaW5nIGluIGEg c2luZ2xlIHBsYWNlLCBub3QgaW4gYXR0cmlidXRlcy4NCj4gPj4NCj4gPg0KPiA+IEkgdGhpbmsg d2UgYXJlIHRhbGtpbmcgYWJvdXQgdHdvIGRpZmZlcmVudCBmZWF0dXJlcy4NCj4gPiBGZWF0dXJl IDE6DQo+ID4gQWxsb3cgbWF0Y2hpbmcgb24gYWxsIHZwb3J0cyB0aGF0IGFyZSBub3Qgd2lyZQ0K PiA+IEZlYXR1cmUgMjoNCj4gPiBTYXZlIGFsbG9jYXRpb24gc3BhY2UgYW5kIGFsbG93IGZhc3Qg aW5zZXJ0aW9uLg0KPiA+IEluIHRoaXMgY2FzZSwgdGhlIG1hdGNoaW5nIGlzIG5vdCBvbiBhbGwg dnBvcnRzIGl0IGNhbiBiZSBqdXN0IHBhcnQgb2YgdGhlIHZwb3J0cw0KPiA+IGJ1dCBpdCB3aWxs IG5ldmVyIGJlIHRoZSB3aXJlIHBvcnQuDQo+ID4gRm9yIGV4YW1wbGU6DQo+ID4gcG9ydCAwIC0g d2lyZQ0KPiA+IHBvcnRzIDEsMiwzLDQsNSAgLSB2cG9ydHMNCj4gPiB0aGUgYXBwbGljYXRpb24g d2FudCB0byBpbnNldCBvbmx5IHRob3NlIHJ1bGVzOg0KPiA+IHJlcHJlc2VudGVkX3BvcnQocG9y dF9pZD0yKSAvIGV0aCAvIGlwdjQgKHNyYz09eHgpDQo+ID4gcmVwcmVzZW50ZWRfcG9ydChwb3J0 X2lkPTQpIC8gZXRoIC8gaXB2NCAoc3JjPT14eCkNCj4gPiByZXByZXNlbnRlZF9wb3J0KHBvcnRf aWQ9NCkgLyBldGggLyBpcHY0IChzcmM9PXl5KQ0KPiA+DQo+ID4gRm9yIGZlYXR1cmUgMSBJIGZ1 bGx5IGFncmVlIHdpdGggeW91IEl2YW4sIHRoaXMgc2hvdWxkIGJlIGFkZGVkIGFzIGFuIGl0ZW0u DQo+IA0KPiBUaGFuayB5b3UuDQo+IA0KPiA+IEZvciBmZWF0dXJlIDIgSSB0aGluayBSb25nd2Vp J3Mgc3VnZ2VzdGlvbiBpcyB0aGUgYmV0dGVyIG9wdGlvbi4NCj4gPiBJZiBJIHVuZGVyc3RhbmQg Y29ycmVjdGx5IHRoZSBpZGVhIGlzIHRvIGdpdmUgaGludCB0byB0aGUgUE1EIG9uIHdoZXJlIHRv DQo+IGFsbG9jYXRlIG1lbW9yeQ0KPiA+IGFuZCBob3cgdG8gaW5zZXJ0IHRoZSBydWxlcyBtb3N0 IG9wdGltYWxseS4gU2luY2UgdGhpcyBpcyBzaGFyZWQgZm9yIGFsbCBydWxlcyBpdA0KPiBtYWtl cyBtb3JlIHNlbnNlDQo+ID4gdG8gYWRkIGl0IGFzIGFuIGF0dHJpYnV0ZSwganVzdCBsaWtlIHdl IGRvbuKAmXQgaGF2ZSBhbiBpbmdyZXNzIGl0ZW0gKG1heWJlIHdlDQo+IHNob3VsZD8pDQo+IA0K PiBCdXQgaXNuJ3QgcGF0dGVybiB0ZW1wbGF0ZSBhbHNvIHN1cHBvc2VkIHRvIGJlIHNoYXJlZCBm b3IgYWxsIHJ1bGVzDQo+IGluIHRoZSB0YWJsZT8gSS5lLiwgdGhlIHVzZXIgY3JlYXRlcyBhbiBh c3luYyBmbG93IHRhYmxlIGFuZCBzdWJtaXRzDQo+IGEgZmxvdyAic2hhcGUiICh3aGljaCBjb25z aXN0cyBvZiBhdHRycywgcGF0dGVybiB0ZW1wbGF0ZSBhbmQgYWN0aW9uDQo+IHRlbXBsYXRlKS4g U28gd2h5IHNob3VsZCAiZ2l2aW5nIGEgaGludCIgdmlhIGFuIGl0ZW0gdGVtcGxhdGUgYmUNCj4g Y29uc2lkZXJlZCB3b3JzZSB0aGFuIGRvaWcgc28gdmlhIGFuIGF0dHJpYnV0ZT8NCj4gDQoNClRo ZSBzYW1lIGl0ZW0gdGVtcGxhdGUgbWF5YmUgdXNlZCBlbHNld2hlcmUsIGZvciBleGFtcGxlLCB0 aGUgZm9sbG93aW5nDQpwYXR0ZXJuICBldGggLyBpcHY0KHNyYywgZHN0KSAvIHVkcChzcG9ydCwg ZHBvcnQpLCBjYW4gYmUgdXNlZCBvbiBudW1iZXIgb2YgZGlmZmVyZW50DQp0YWJsZXMuDQpJIHRo aW5rIHRoYXQgdGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHVzIGlzIHRoYXQgZnJvbSBteSBw b2ludCBvZiB2aWV3IHRoaXMgdmFsdWUgaXMganVzdA0Kd2hlcmUgdG8gYWxsb2NhdGUgcmVzb3Vy Y2VzIC8gaG93IHRvIGJldHRlciBpbnNlcnQgdGhlIHJ1bGUuIEl0IGlzIG5vdCByZWxhdGVkIHRv IG1hdGNoaW5nLg0KRnJvbSBOdmlkaWEgdmlld3BvaW50IHdlIG5lZWQgdGhpcyBpbmZvcm1hdGlv biBzbyB3ZSBjYW4gYWxsb2NhdGUgdGhlIHJlc291cmNlIGF0IHRoZSBjb3JyZWN0DQpwbGFjZSBh bmQgYXZvaWQgaW5zZXJ0aW5nIGR1cGxpY2F0aW9uIG9mIHJ1bGVzLg0KSSBhZ3JlZSB0aGF0IGJ5 IHVzaW5nIHRoZSBpdGVtIHdlIGNhbiBnZXQgdGhlIHNhbWUgcmVzdWx0cywgYnV0IGl0IGlzIGlu Y29ycmVjdCBzaW5jZSB3ZSBhcmUgbm90IG1hdGNoaW5nIG9uIGl0Lg0KUGFydCBvZiB0aGUgaWRl YSBvZiB0ZW1wbGF0ZSBBUEkgaXMgdG8gZ2l2ZSBhcyBtYW55IGhpbnRzIGFzIHBvc3NpYmxlIHRv IHRoZSBQTUQgc28gdGhlIGluc2VydGlvbiB3aWxsIGJlIG9wdGltaXplZC4NCg0KDQo+IEFzIGZv ciAiaW5ncmVzcyIgaXRlbSwgLSBubywgb25lIHNob3VsZCBub3QgYWRkIHN1Y2guIFdlIGhhdmUg aGFkDQo+IG1hbnkgZGlzY3Vzc2lvbnMgY29uY2VybmluZyB0aGlzIGJpdCBpbiB0aGUgcGFzdC4g SW5ncmVzcy9lZ3Jlc3MNCj4gYXJlIG5vbi10cmFuc2ZlciB0ZXJtcy4gVGhleSBiZWxvbmcgaW4g dGhlIHNjb3BlIG9mIHZOSUMgLyBldGhkZXYNCj4gZmlsdGVyaW5nLCBub3QgdG8gZW1iZWRkZWQg c3dpdGNoIHJ1bGVzLg0KPiANCj4gSW4gbXkgb3BpbmlvbiwgaW4gdGhlIGVtYmVkZGVkIHN3aXRj aCwgb25lIHNob3VsZCBlaXRoZXIgcG9pbnQgdG8NCj4gc29tZSBwcmVjaXNlIHN3aXRjaCBwb3J0 cyAodXNpbmcgUkVQUkVTRU5UT1IgLyBSRVBSRVNFTlRFRCBpdGVtcykNCj4gb3IgdXNlIGFub3Ro ZXIga2luZCBvZiBpdGVtIHRvIHJlZmVyIHRvIGEgInN1cGVyIHNldCIgb2YgcG9ydHMNCj4gd2hp Y2ggaGF2ZSBzb21ldGhpbmcgaW4gY29tbW9uICgiYWxsIHdpcmUgcG9ydHMiLCAiYWxsIE5PTi13 aXJlIHBvcnRzIikuDQo+IA0KDQpCdXQgdGhpcyBpcyBteSBwb2ludCB3ZSBkb24ndCB3YW50IGFs bCB3aXJlIHBvcnRzIG9yIGFsbCBOT04td2lyZSBwb3J0cywgd2UganVzdCBrbm93IHRoYXQgaW4g dGhpcyB0YWJsZQ0Kd2Ugd2lsbCBoYXZlIG9ubHkgbm9uLXdpcmUgLyB3aXJlIHBvcnRzLg0KDQo+ ID4NCj4gPiBJdmFuIHdlIGhhdmUgdGhlIGl0ZW0gUlRFX0ZMT1dfSVRFTV9UWVBFX1BGIGFuZA0K PiBSVEVfRkxPV19JVEVNX1RZUEVfVkYgd2hpY2ggYXJlIGRlcHJlY2F0ZWQsDQo+ID4gU28gZG8g eW91IHdhbnQgdG8gdW4tZGVwcmVjYXRlIHRoZW0/DQo+IA0KPiBOby4gVGhlc2UgaXRlbXMgYXJl IGRlcHJlY2F0ZWQgYmVjYXVzZToNCj4gDQo+IGEpIHRoZWlyIG5hbWVzIHN1Z2dlc3QgdGhhdCBh cHBsaWNhdGlvbiBrbm93cyB3aGV0aGVyIGFuIGV0aGRldg0KPiAgICAgc2l0cyBvbiB0b3Agb2Yg YSBQRiBvciB0aGF0IHRoZSBhcHBsaWNhdGlvbiBoYXMgc29tZQ0KPiAgICAga25vd2xlZGdlIG9m IGV4aXN0ZW5jZSBvZiBwYXJ0aWN1bGFyIFZGcywgYnV0IGluDQo+ICAgICByZWFsaXR5IGFwcGxp Y2F0aW9ucyBzaG91bGQgbm90IGJlIHdvcnJpZWQgb2YNCj4gICAgIHRoZSB1bmRlcmx5aW5nIGZ1 bmN0aW9uIHR5cGUgPSB0byB0aGVtLCBhbGwNCj4gICAgIGV0aGRldnMgYXJlIGp1c3QgcmVwcmVz ZW50b3JzIG9mIHNvbWV0aGluZywNCj4gICAgIGFuZCBpZiB0aGUgYXBwbGljYXRpb24gbmVlZHMg dG8gcmVmZXIgdG8NCj4gICAgIFZGcyAob3Igb3RoZXIgUEZzLCAtIGRvZXNuJ3QgbWF0dGVyKSwg aXQNCj4gICAgIHNob3VsZCBkbyB0aGF0IHZpYSBSRVBSRVNFTlRPUiBpdGVtczsNCj4gDQo+IGIp IHN1Y2ggaXRlbXMgd291bGQgZHVwbGljYXRlIFJFUFJFU0VOVE9SIC8gUkVQUkVTRU5URUQuDQo+ IA0KQWdyZWUgd2l0aCBldmVyeXRoaW5nIHlvdSBzYXkuIA0KDQo+ID4NCj4gPiBUbyBzdW1tYXJp emUsIGlmIFBNRCBjYW4gdXNlIHN1Y2ggYW4gaGludCBkdXJpbmcgcnVsZSBjcmVhdGlvbiBhbmQg c2F2ZQ0KPiBtZW1vcnksIEkgdm90ZQ0KPiA+IHRvIGFsbG93IGl0Lg0KPiA+IGlmIHRoZSBpZGVh IGlzIHRvIG1hdGNoIG9uIGFsbCB2cG9ydHMgdGhlbiBpdCBzaG91bGQgYmUgYW4gaXRlbS4NCj4g DQo+IEJ1dCBzdWNoIGEgaGludCB3b3VsZCBlZmZlY3RpdmVseSBiZSBhIG1hdGNoIGNyaXRlcmlv biwgdG9vLCByaWdodD8NCj4gU28sIGluIGZhY3QgaXQncyBhIGNvbWJpbmVkIHVzZSBjYXNlOiBh IG1hdGNoIGNyaXRlcmlvbiB3aGljaCBpcw0KPiBmbGV4aWJsZSBlbm91Z2ggdG8gYmUgYSAiaGlu dCIgPSBpLmUuIHRoZSBQTUQgY2FuIHNlZSBpdCB3aGVuDQo+IHByb2Nlc3NpbmcgdGhlIHBhdHRl cm4gKnRlbXBsYXRlKiBhbmQgdHJlYXQgaXQgYXMgYSBoaW50Lg0KPg0KDQpZZXMsIGJ1dCBpdCBp cyBhbiBpbXBsaWNpdCBtYXRjaCwganVzdCBsaWtlIHNheWluZyBpbmdyZXNzLiBFZ3Jlc3MgaXQg aGFzIG1lYW5pbmcgYWJvdmUgdGhlDQptYXRjaGluZy4gSW4gYWRkaXRpb24sIHRoZXJlIGlzIG5v IHJlYXNvbiB0byBhZGQgZXh0cmEgaXRlbSBmb3IgZWFjaCBydWxlIHdlIGNyZWF0ZSwganVzdA0K dG8gZW5hYmxlIHNvbWV0aGluZyB0aGF0IGlzIGZpeGVkIGR1cmluZyB0aGUgdGFibGUgY3JlYXRp b24uDQpFeHRyYSBpdGVtIGluIHBhdHRlcm4gdGVtcGxhdGUgbWVhbnMgZXh0cmEgaXRlbSBmb3Ig ZWFjaCBydWxlLg0KSSBrbm93IHdlIGNhbiBhdm9pZCB0aGlzIGFuZCBvcHRpbWl6ZSB0aGUgY29k ZSBidXQgd2h5IGFkZCBzb21ldGhpbmcgdGhhdCBubyBvbmUgbmVlZHMNCmFmdGVyIHRhYmxlIGNy ZWF0aW9uPw0KDQogDQo+ID4NCj4gPj4NCj4gPj4+IDIpIEZyb20geW91ciB2aWV3cG9pbnQsIHdo eSBpdGVtcyAiQU5ZX1BIWVNfUE9SVFMiIGFuZA0KPiA+PiAiQU5ZX1ZQT1JUUyINCj4gPj4+ICAg ICB3b24ndCBkbz8gT3IsIHdoaWNoIHByb2JsZW1zIGRvIHlvdSB0aGluayB0aGV5IG1heSBpbmZs aWN0Pw0KPiA+Pj4NCj4gPj4+ICAgICAuLg0KPiA+Pj4NCj4gPj4+ICAgICBQcmV2aW91c2x5LCB5 b3UgZXhwbGFpbmVkIHdoeSBSRVBSRVNFTlRFRF9QT1JUIHdvdWxkIG5vdA0KPiA+Pj4gICAgIGZp dCB5b3VyIG5lZWRzLiBBbmQgSSB1bmRlcnN0YW5kIHlvdXIgcG9pbnQ6IHRvIGFzeW5jIEFQSSwN Cj4gPj4+ICAgICB0d28gcGF0dGVybiB0ZW1wbGF0ZXMgd2hpY2ggYm90aCBoYXZlIGl0ZW0gUkVQ UkVTRU5URURfUE9SVA0KPiA+Pj4gICAgIGluIHRoZW0gY2Fubm90IGJlIGNsZWFybHkgZGlzdGlu Z3Vpc2hlZCBhbmQgYXJlIGluIGZhY3QgdGhlDQo+ID4+PiAgICAgc2FtZSBzZXQgb2YgY3JpdGVy aWEgKHByb3ZpZGVkIHRoYXQgYWxsIG90aGVyIGl0ZW1zIGFyZSBhbHNvDQo+ID4+PiAgICAgdGhl IHNhbWUgYW5kIGhhdmUgdGhlIHNhbWUgbWFza3MpLiBUZW1wbGF0ZXMgYXJlLCB3ZWxsLA0KPiA+ Pj4gICAgIHRlbXBsYXRlcyAob3Igc2hhcGVzKSBvZiB0aGUgcnVsZXMgdG8gY29tZSBsYXRlciBh bmQNCj4gPj4+ICAgICBkbyBub3QgaW5jbHVkZSBleGFjdCAic3BlYyIgZm9yIHRoZSAiZXRoZGV2 X2lkIi4NCj4gPj4+ICAgICBHb3QgaXQuDQo+ID4+Pg0KPiA+Pj4gICAgIEJ1dCB0aGF0J3Mgbm90 IGdvaW5nIHRvIGJlIHRoZSBjYXNlIHdpdGggaXRlbXMgQU5ZX1BIWVNfUE9SVFMgYW5kDQo+ID4+ PiAgICAgQU5ZX1ZQT1JUUywgaXMgaXQ/IEluIG9uZSBhc3luYyB0YWJsZSB0ZW1wbGF0ZSwgdGhl IHVzZXIgc3VibWl0cw0KPiA+Pj4gICAgIGl0ZW0gQU5ZX1BIWVNfUE9SVFMgKGluc3RlYWQgb2Yg dGFibGUgYXR0cmlidXRlICJ3aXJlX29yaWciKS4NCj4gPj4+ICAgICBJbiBhbm90aGVyIHRlbXBs YXRlLCB0aGUgdXNlciBzdWJtaXRzIGl0ZW0gQU5ZX1ZQT1JUUyB0bw0KPiA+Pj4gICAgIHN0YXRl IHRoYXQgdGhleSB3YW50IHRvIG1hdGNoIG9ubHkgdHJhZmZpYyB0cmFuc21pdHRlZA0KPiA+Pj4g ICAgIHNvZnR3YXJlIGVuZHBvaW50cyAoRFBESyBldGhkZXZzLCBndWVzdCBWRnMsIGV0Yy4pDQo+ ID4+PiAgICAgY29ubmVjdGVkIHRvIHRoZSBzd2l0Y2guDQo+ID4+Pg0KPiA+Pj4gICAgIEluIHRo aXMgZXhhbXBsZSwgdGhlIFBNRCB3aWxsIGNsZWFybHkgc2VlIHRoYXQgdGhlIHR3byB0ZW1wbGF0 ZXMNCj4gPj4+ICAgICBkaWZmZXIuIFNvIGl0IHdpbGwgYmUgYWJsZSB0byBhbGxvY2F0ZSBzZXBh cmF0ZSByZXNvdXJjZXMsIGVhY2gNCj4gPj4+ICAgICBvbmUgImN1dHRpbmcgb25lIGhhbGYgb2Yg dHJhZmZpYyIgKGFzIHBlciB5b3VyIGNvbmNlcHQpLg0KPiA+Pj4NCj4gPj4+IDMpIEluIHlvdXIg bW9zdCByZWNlbnQgcmVzcG9uc2UsIHlvdSBzdWdnZXN0ZWQgdGhhdCBvbmUgbWlnaHQgaGF2ZQ0K PiA+Pj4gICAgIGhhZCB0aGUgYXR0cmlidXRlcyBvY2N1cGllZCBmb3Igc29tZSBvdGhlciBwdXJw b3Nlcy4gVG8gbWUsDQo+ID4+PiAgICAgdGhleSdyZSBub3QuIE5laXRoZXIgbWUgbm9yIG15IGNs b3Nlc3QgY29sbGVhZ3VlcyBoYXZlDQo+ID4+PiAgICAgYW55IHBsYW5zIG9uIHRoZW0uIFdoZW4g SSBhZHZvY2F0ZSB1c2luZyBpdGVtIGFwcHJvYWNoDQo+ID4+PiAgICAgb3ZlciB0aGUgYXR0cmli dXRlIGFwcHJvYWNoLCBJIGRvIHRoaXMgdG8gZW5zdXJlDQo+ID4+PiAgICAgYSkgY2xhcml0eSBv ZiB0aGUgQVBJIGNvbnRyYWN0IGFuZCBiKSByb2J1c3RuZXNzLg0KPiA+DQo+ID4gSWYgc29tZXRo aW5nIGlzIHNoYXJlZCBmb3IgYWxsIHJ1bGVzIGluIHRoZSBzYW1lIHRhYmxlLCBpdCBzaG91bGQg YmUgYSB0YWJsZQ0KPiA+IHByb3BlcnR5Lg0KPiANCj4gQnV0IHRoZSB3aG9sZSBwYXR0ZXJuICp0 ZW1wbGF0ZSogaXMgYWxzbyBhIHRhYmxlIHByb3BlcnR5LCBpc24ndCBpdD8NCj4gDQoNCkxpa2Ug SSBzYWlkIGFib3ZlIHRoZSBwYXR0ZXJuIHRlbXBsYXRlIGNhbiBiZSB1c2VkIGluIGFsbCBkb21h aW5zIHRoYXQgaXMgd2h5DQp0aGVyZSBpcyBhIHNwbGl0IGJldHdlZW4gdGFibGUgYW5kIHBhdHRl ciwgaW4gYWRkaXRpb24gdG8gdGhhdCBlYWNoIHRhYmxlIG1heSBoYXZlDQpudW1iZXIgb2YgcGF0 dGVybiB0ZW1wbGF0ZXMuDQoNCj4gPg0KPiA+Pj4NCj4gPj4+IDQpIEFsc28sIGluIHlvdXIgcmVz cG9uc2UsIHlvdSBzdWdnZXN0ZWQgdGhhdCBJIG1pZ2h0IGhhdmUNCj4gPj4+ICAgICBjb25mdXNl ZCBpdGVtIG1hc2sgYW5kIHNwZWMuIFRoYXQgaXMgbm90IHRoZSBjYXNlLg0KPiA+Pj4gICAgIElm IHdlIGFncmVlLCB0aGF0IHN3aXRjaCBkb21haW4gSUQgaXMgdW5uZWVkZWQgaW4NCj4gPj4+ICAg ICB0aGUgbmV3IGl0ZW1zLCB0aGVuIHRoZXNlIGl0ZW1zIHdpbGwgaGF2ZSBubw0KPiA+Pj4gICAg IGZpZWxkcyBpbiB0aGVtIChsaWtlIGl0ZW0gUEYgaGFkIG5vdCBoYWQgYW55DQo+ID4+PiAgICAg YmVmb3JlIGl0IHdhcyBkZXByZWNhdGVkKS4NCj4gPj4+DQo+ID4+PiAgICAgTm8gZmllbGRzIGlu IG5ldyBpdGVtcyA9PiBubyBmaWVsZCBtYXNrcy4NCj4gPj4+ICAgICBTbyB3aGF0J3MgdGhlIHBy b2JsZW0gdGhlbj8NCj4gPj4+DQo+ID4+PiA1KSBXaXRoIHJlZ2FyZCB0byBvdXIgdGFsayBhYm91 dCBpZGVudGlmeWluZyB0aGUgcmVsYXRpb25zaGlwDQo+ID4+PiAgICAgYmV0d2VlbiBldGhkZXZz IGFuZCBzd2l0Y2ggZG9tYWlucywgeW91IHNhaWQgdGhhdCB0aGUgdXNlcg0KPiA+Pj4gICAgIGNv dWxkIGtub3cgdGhlIGRpZmZlcmVuY2UgZnJvbSB0aGUgdmVyeSBiZWdpbm5pbmc6DQo+ID4+PiAg ICAgL3N5c2ZzLyAuLi4uIC9QRl9CREYvc3Jpb3ZfbnVtDQo+ID4+Pg0KPiA+Pj4gICAgIFRoYXQg aXMgdHJ1ZSBmb3IgdGhlIHVzZXIgd2hvIHN0YXJ0cyB0aGUgYXBwbGljYXRpb24sIGJ1dA0KPiA+ Pj4gICAgIHRoaXMga25vd2xlZGdlIGlzIGhhcmQgdG8gb2J0YWluIGZyb20gdGhlIGFwcGxpY2F0 aW9uDQo+ID4+PiAgICAgcGVyc3BlY3RpdmUgPSBpdCdzIGhhcmQgdG8gYXV0b21hdGUuDQo+ID4+ Pg0KPiA+Pj4gICAgIFRoaXMgaXMgd2h5IGV0aGRldnMgYXJlIGFibGUgdG8gYWR2ZXJ0aXNlIHRo ZWlyIGRvbWFpbiBJRHMuDQo+ID4+PiAgICAgQW5kLCBhcyBJIGV4cGxhaW5lZCwgbG9va2luZyBh dCBkb21haW4gSUQgdG8gdW5kZXJzdGFuZA0KPiA+Pg0KPiA+PiBuYW1lbHkgcnRlX2V0aF9kZXZf aW5mby5zd2l0Y2hfaW5mby5kb21haW5faWQNCj4gPj4NCj4gPj4+ICAgICBwb3J0IHJlbGF0aW9u c2hpcCBpcyB2YWxpZCwgd2hpbHN0IGxvb2tpbmcgYXQgcHJveHkgSURzDQo+ID4+PiAgICAgdG8g YWNoaWV2ZSB0aGUgc2FtZSBnb2FsIGlzIG5vdC4gUHJveHkgcG9ydCBJRHMgb25seQ0KPiA+Pj4g ICAgIHNlcnZlIHRoZSBwdXJwb3NlIG9mIGZpbmRpbmcgYW4gZW50cnkgcG9pbnQgZm9yDQo+ID4+ PiAgICAgbWFuYWdpbmcgZmxvd3MuIFRoYXQgaGFzIHNsaWdodGx5IGRpZmZlcmVudA0KPiA+Pj4g ICAgIG1lYW5pbmcsIGJ1dCB0aGlzIHN1YnRsZSBkaWZmZXJlbmNlIGlzIGltcG9ydGFudC4NCj4g Pj4NCj4gPj4gVGhlcmUgaXMgYWxzbyBhIGNvbmNlcHQgb2Ygc2libGluZyBwb3J0cw0KPiA+PiB0 byBnZXQgYWxsIHBvcnRzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBoYXJkd2FyZS4NCj4gPj4NCj4g Pj4NCj4gPj4+IDYpIEFzIGZvciB0aGUgY29uZnVzaW9uIG92ZXIgdGhlIGRpZmZlcmVuY2UgYmV0 d2VlbiBmaXhpbmcNCj4gPj4+ICAgICBidWdzIGFuZCBtYWtpbmcgdGhlIGNvZGUgcm9idXN0IGJ5 IGV4dHJhIGNoZWNrczoNCj4gPj4+DQo+ID4+PiAgICAgWWVzLCBJIGFncmVlIHRoYXQgdGhlIHBy b2dyYW1tZXIgd2hvIHdyaXRlcyB0aGUNCj4gPj4+ICAgICBhcHBsaWNhdGlvbiBtdXN0IGJlIGlu dGVsbGlnZW50IGVub3VnaCB0byB1c2UNCj4gPj4+ICAgICBmbG93IHByaW1pdGl2ZXMgdGhlIHBy b3BlciB3YXkuIFllcywgdGhlIHVzZXINCj4gPj4+ICAgICB3aG8gc3RhcnRzIHRoZSBhcHBsaWNh dGlvbiBhbHNvIHNob3VsZCB0aHJlYWQNCj4gPj4+ICAgICBjYXJlZnVsbHkuIEJ1dCB0aGF0IGRv ZXMgbm90IHByZXZlbnQgc29tZQ0KPiA+Pj4gICAgIG1pc3Rha2VzIGluIG90aGVyIHBhcnRzIG9m IGNvZGUgZnJvbQ0KPiA+Pj4gICAgIGNvcnJ1cHRpbmcgdmFyaW91cyBjaHVua3Mgb2YgbWVtb3J5 LA0KPiA+Pj4gICAgIGluY2x1ZGluZywgZm9yIGV4YW1wbGUsIGZsb3cgYXR0cnMuDQo+ID4+Pg0K PiA+Pj4gICAgIFlvdSBzYXkgdGhhdCBzdWNoIG1pc3Rha2VzIGhhdmUgdG8gYmUgImp1c3QgZml4 ZWQiDQo+ID4+PiAgICAgYXMgYW55IG90aGVyIGJ1Z3MuIFJpZ2h0LiBCdXQgaG93IG11Y2ggdGlt ZSB3aWxsDQo+ID4+PiAgICAgdGhlIHByb2dyYW1tZXIgc3BlbmQgdG8gaWRlbnRpZnkgdGhlIGJ1 Z3M/DQo+ID4+Pg0KPiA+Pj4gICAgIElmIHRoZSBQTURzIGRvIGFsbCB0aGUgY2hlY2tzIChhcyB3 aXRoIGF0dHJpYnV0ZXMpLA0KPiA+Pj4gICAgIHRoZSBoeXBvdGhldGljYWwgYnVnIHdpbGwgbWFu aWZlc3QgaXRzZWxmIG11Y2gNCj4gPj4+ICAgICBlYXJsaWVyLiBUaGF0IHdpbGwgc2ltcGxpZnkg ZGVidWdnaW5nIGJ5IGEgbG90Li4uDQo+ID4+Pg0KPiA+Pj4gICAgIFNvLCBteSBwb2ludCBpcyB0 aGF0IGl0J3Mgc3RpbGwgYmV0dGVyIHRvIGVuc3VyZQ0KPiA+Pj4gICAgIHRoYXQgbmV3IGZsb3cg cHJpbWl0aXZlcyBoYXZlIGFsbCBuZWNlc3NhcnkNCj4gPj4+ICAgICBjaGVja3MgaW4gcGxhY2Uu IEZvciBhdHRyaWJ1dGVzLCBpdCBpcw0KPiA+Pj4gICAgIHJlcXVpcmVkIHRvIGFkZCB0aGVtIHNl cGFyYXRlbHkuDQo+ID4+DQo+ID4+IElmIGZsb3cgaW5zZXJ0aW9uIGlzIGRvbmUgaW4gYSBmYXN0 IHBhdGgsDQo+ID4+IHN1Y2ggY2hlY2tzIG1heSBiZSBza2lwcGVkLg0KPiA+DQo+ID4gVGhlIGlk ZWEgaXMgdGhhdCBhbGwgcnVsZXMgaW4gdGhpcyB0YWJsZSB3aWxsIHNoYXJlIHRoZSBzYW1lIGNv bmZpZ3VyYXRpb24sDQo+ID4gdGhlcmUgaXMgbm8gcmVhc29uIHRvIHNheSBldmVyeXRoaW5nIGFn YWluIGZvciBlYWNoIHJ1bGUuIFRoaXMgaXMgd2h5DQo+ID4gdGhlIHJ1bGUgYXR0cmlidXRlcyB3 ZXJlIG1vdmVkIHRvIHRoZSB0YWJsZSBzdHJ1Y3QgYW5kIG5vdCBwZXIgcnVsZS4NCj4gPg0KPiA+ Pg0KPiA+Pj4gICAgIEZvciBpdGVtcywgYXMgSSBleHBsYWluZWQsIGl0IG1pZ2h0IG5vdCBiZSBu ZWNlc3NhcnkNCj4gPj4+ICAgICBpbiB0aGUgbWFqb3JpdHkgb2YgY2FzZXMgc2ltcGx5IGJlY2F1 c2Ugb2YgdGhlDQo+ID4+PiAgICAgc3dpdGNoIChpdGVtLT50eXBlKSB7IGNhc2UgfSBzdHJ1Y3R1 cmUuDQo+ID4+Pg0KPiA+Pj4gU28sIHRoZXNlIGFyZSBzb21lIG9mIG15IHBvaW50cyB0byBleHBs YWluIHdoeSB0aGUNCj4gPj4+IGF0dHJpYnV0ZSBhcHByb2FjaCBpcyB1bnRlbmFibGUuIFRvIG1l LCBhdHRyaWJ1dGVzDQo+ID4+PiBhcmUgc29tZXRoaW5nIGdsb2JhbCwgd2hpY2ggZGVtYW5kcyBj aGVja3MgaW4gYWxsDQo+ID4+PiBmbG93LWNhcGFibGUgUE1Ecy4gSXRlbXMgc2VlbSBiZXR0ZXIg YmVjYXVzZSB0aGV5DQo+ID4+PiBhcmUgZG9uJ3QgY2FyZXMgdG8gYWxsIFBNRHMgd2hpY2ggYXJl IHVuYXdhcmUgb2YNCj4gPj4+IHRoZSBhc3luYyBjb25jZXB0LiBTbywgZXZlbiBpZiBzb21lb25l IGRvZXMgbm90DQo+ID4+PiBpbXBsZW1lbnQgdGhlIGFzeW5jIGNvbmNlcHQgb3IgZG9lcyBub3Qg bGlrZQ0KPiA+Pj4gdGhlIG5ldyBpdGVtIG5hbWVzLCB0aGV5IGNhbiB0dXJuIGEgYmxpbmQNCj4g Pj4+IGV5ZSB0byB0aGlzIC0gd2l0aCBhdHRyaWJ1dGVzLCB0aGF5IGNhbid0Lg0KPiA+Pj4NCj4g Pg0KPiA+IEdvb2QgcG9pbnQsDQo+ID4gTWF5YmUgd2Ugc2hvdWxkIGFkZCBoaW50cyBpbiB0aGUg YXR0cmlidXRlLA0KPiA+IGZvciBleGFtcGxlLCBoaW50X29ubHlfd2lyZSBpbiB0aGlzIGNhc2Ug aXQgd2lsbCBiZSBjbGVhciB0aGF0DQo+ID4gUE1EIG1heSBpZ25vcmUgdGhpcywgYW5kIGl0IHNo b3VsZCBiZSBmdWxseSBkb2N1bWVudGVkIHRoYXQgdGhpcyBpcyBub3QgYQ0KPiBtYW5kYXRvcnkg ZmllbGQuDQo+ID4gV2hhdCBkbyB5b3UgdGhpbms/DQo+IA0KPiBUaGVvcmV0aWNhbGx5LCBtYWtp bmcgdGVybWlub2xvZ3kgc29mdGVyIChsaWtlIHdpdGggdGhlIHdvcmQgImhpbnQiKQ0KPiBjb3Vs ZCBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIHZlbmRvcnMgd2hvIG1heSBmaW5kIHRoZSBuZXcgZmVh dHVyZQ0KPiBjb25mdXNpbmcgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4gQnV0IGlmLCBpbiByZWFs aXR5LCB0aGlzIGhpbnQNCj4gaXMgaW5kZWVkIGFub3RoZXIgbWF0Y2ggY3JpdGVyaW9uIChzZWUg bXkgY29tbWVudHMgYWJvdmUpLCB0aGVuDQo+IGluIG5vIGV2ZW50IHNoYWxsIHRoZSBwcmVmaXgg ImhpbnQiIGJlIGFuIGV4Y3VzZSBmb3IgdGhpcw0KPiBjcml0ZXJpb24gbm90IGJlaW5nIGV4cHJl c3NlZCBhcyBhIHBhdHRlcm4gaXRlbS4NCj4gDQoNClBsZWFzZSBzZWUgbXkgcmVzcG9uc2UgYWJv dmUuIFRoaXMgaXMgdGhlIHBvaW50IGl0IGlzIG11Y2ggbW9yZSB0aGFuIG1hdGNoaW5nLg0KDQo+ IFBsZWFzZSBoZWFyIG1lIG91dDogSSBkb24ndCBtZWFuIHRvIHNvdW5kIGFycm9nYW50LCAtIGp1 c3QgdHJ5aW5nDQo+IHRvIHVuZGVyc3RhbmQgd2h5IGV4cHJlc3NpbmcgdGhlIG5ldyBiaXQgYXMg YW4gaXRlbSBjYW4ndCBiZQ0KPiBlZmZpY2llbnQgZW5vdWdoIGZvciB0aGUgYXN5bmMgZmxvdyBh cHByb2FjaC4NCj4NCg0KSSBkb24ndCB0aGluayB5b3UgYXJlIGFycm9nYW50LCBhbmQgSSBob3Bl IHRoYXQgeW91IHNlZSB0aGF0IEkgZG8gdW5kZXJzdGFuZCB5b3VyIGNvbW1lbnRzLg0Kc2F5aW5n IHRoYXQgSSBob3BlIEkgZXhwbGFpbmVkIHdoeSBJIHRoaW5rIGl0IGlzIGJldHRlciB0byBoYXZl IGl0IGFzIGEgdGFibGUgYXR0cmlidXRlIGFuZCBub3QgYXMgYW4NCml0ZW0uIChXZSBhcmUgbm90 IG1hdGNoaW5nIG9uIGl0LCB0aGlzIGhlbHBzIHRoZSBQTUQgYWxsb2NhdGUgdGhlIHRhYmxlIGF0 IHRoZSBiZXN0IGxvY2F0aW9uIGFuZCBhdm9pZA0KZHVwbGljYXRpb24gb2YgcnVsZXMpICANCg0K SWYgeW91IHdpc2gsIHdlIGNhbiBoYXZlIGEgc2hvcnQgcGhvbmUgY2FsbCBhbmQgZGlzY3VzcyB0 aGlzLg0KDQpCZXN0LA0KT3JpDQoNCiANCj4gPg0KPiA+Pj4gVGhhbmsgeW91Lg0KPiA+Pg0KPiA+ Pg0KPiA+DQo+ID4NCj4gDQo+IEl2YW4NCg==