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 79AED43A14; Wed, 31 Jan 2024 03:47:48 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4D45F40EF0; Wed, 31 Jan 2024 03:47:48 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2054.outbound.protection.outlook.com [40.107.243.54]) by mails.dpdk.org (Postfix) with ESMTP id 3EF8F40E96 for ; Wed, 31 Jan 2024 03:47:47 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HHdYsyEugni2zKUizpr4acdYfVvV1wMuW3PXsXxi2NSlYNziMEiiFvlJ17aJOmEw0eumxp4iZoDB8nSDPIN7iY1mqyjZB3iHjFDCR2w0CIHPU01OD0P+noVRfI7uE81HOrH/0Sc13sF2LQs7WOURleD8Fh1N9fcL9uzImeL7W1swwXsvu89qV6OWDTLhLedglwqj3+4ccun69Tjqa0lA0UqJr6MBE24C3S6xH1svjcCOjfLGXmr+MCX3zlc7v4sGtgfogjXp7OnKwAxyL+oVWiLA4y+9H1RWx6/mC0CHNZ+3y99lUIV1+meLU9MTLUwt/w66kskr9039s5Txc6zZvg== 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=pKaXEL3Yky2kmYzXN2Q8VMHAJyvY/otR5+dKFAXiPVI=; b=fuU+4txKswlg/kaFBNTjXDAxbgFI4UTT/gdGkJV659/qL59LWKCg6fL8gRGgc7KY9Sq+gee1aa4hypBJg7uuXmZavgW5fZ/KUYJrGXCkaGllo5EV0+68hFp6BiK3MHkoGtjJ/sc/j5Yc++0TwjWDAXK7ekr/jllLpTJThIpm/9DDusrTUiiFZbsLusFlwlhcBzfLuzat1cmIT8vxjVULq1u6UCrUq62ZQodOUszORBxdxygMHZvRAj1YUlv0AN7N60/0BMKBuFwWgCd3dNcc4hGrwzirhf9hGuKZbiSzXS0z5f4D6p59RycP6L21lYKFT1N1HE4AYURLaJ031VFfjA== 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=pKaXEL3Yky2kmYzXN2Q8VMHAJyvY/otR5+dKFAXiPVI=; b=PbyMVKFiOmsaEakB9hLlT0u+juhSo3gLGZonvlXobO0d/2DRIGU6+8R8PpujDTLBd0XjabzB4seEQXVrulICNkE73ShXiDrDPdYBdy+Q0YkbVCncuOgHoVVH5IOKlJxvPInj1Ax42mV7qH+C6Hf/B6eGr5jxXZVLoGfZxPPelCduFYTAXMXU/IGcDXkiz4Ivy1w70jeH05a0wT+3LWaYW2dH51uO+mEstNKkHTcgs8HuSFRWt9vIfnTu5Nogdww+t47S93RHy64GMRoTDrtFCKuFLQ/PhjUNdT9LTMy28f4pbeg5DyyAboTzCAtL1I1d6MNLAOJ+8BCxwQocKiYFSw== Received: from CO6PR12MB5396.namprd12.prod.outlook.com (2603:10b6:303:139::8) by SA1PR12MB7344.namprd12.prod.outlook.com (2603:10b6:806:2b7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.22; Wed, 31 Jan 2024 02:47:44 +0000 Received: from CO6PR12MB5396.namprd12.prod.outlook.com ([fe80::df56:6290:5b5a:e018]) by CO6PR12MB5396.namprd12.prod.outlook.com ([fe80::df56:6290:5b5a:e018%7]) with mapi id 15.20.7228.029; Wed, 31 Jan 2024 02:47:44 +0000 From: Suanming Mou To: Ferruh Yigit , Ori Kam , Aman Singh , Yuying Zhang , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Andrew Rybchenko CC: "dev@dpdk.org" Subject: RE: [PATCH v3 2/3] ethdev: add compare item Thread-Topic: [PATCH v3 2/3] ethdev: add compare item Thread-Index: AQHaR5M6HLl02DS4jUG3S0at2KQ6/7DytboAgACXKLA= Date: Wed, 31 Jan 2024 02:47:43 +0000 Message-ID: References: <20231219013337.531548-1-suanmingm@nvidia.com> <20240115091318.1053433-1-suanmingm@nvidia.com> <20240115091318.1053433-3-suanmingm@nvidia.com> <2594409d-5c8d-4347-b724-eece2b775376@amd.com> In-Reply-To: <2594409d-5c8d-4347-b724-eece2b775376@amd.com> 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: CO6PR12MB5396:EE_|SA1PR12MB7344:EE_ x-ms-office365-filtering-correlation-id: ef8bb058-0185-4983-8f03-08dc2206fffb 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: 4oi9ACYG8fLxQ1n4UfbTJlnEf0282e5uiYNnYzAwRq+4buw0mwtg7u4RlWRar4vQXSx7ZJTYtUtv9PveTgm3l399Jo2yZ1u8BWN8hpEJOtIfCBaIk5+0Gj4OSRxM9MRGOqTVZyjp2bME3jMwNmFfuWDWYT+cyml3mywSm811kVWez6oY2GFlUZ5mYjCXoR86nJq0a2ofD3jlTqy5ztDcGqYHrIyK6/bwmqCKwZBFsLGVRZQzdeoWH/Jb7EUeToZ8pJnhZnR6ky3choVLRmD9zVZhL780cAGW3i7hLy5WavvD9Pin17Jt+6H1kIp79zs5tN/M1ECeHO9js3juxtinkrl0xHS1sGKKLPhhEWCZaHAH30da6GNNFf5fiJBmTwhaWt1xGnZ1UudVp+6/mJJYDs7fOU4Znk0/ZFACen4+l1VuyUFC61iIsGteALlbhaesXBcmVUWbtjTxm/eBqO1YgCp3v10rNkHpn94PUlFAUh7mNB90cY4tPqsQ8PREfHlOlFhazN+n/klwKCqai86pjjcT+pSmrkFOpsoP7cNfzw5us5+DcNVRlsXqooUKRdfZMwBrgEpnY2+h/pGPpYZG3JqGphtB7OUStqzmeQ8m7qFGP6RShDjDk3d2hniHXgYe2owTHAdZmSvpfDS8U3lf8CgXsyYuTzXRTXrK62Sf8Bx7vElRxgHS1ul2h0j2fH+X x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO6PR12MB5396.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(136003)(346002)(396003)(376002)(366004)(230922051799003)(230273577357003)(230173577357003)(64100799003)(451199024)(186009)(1800799012)(110136005)(478600001)(76116006)(8676002)(8936002)(55016003)(71200400001)(83380400001)(38100700002)(122000001)(53546011)(6506007)(7696005)(26005)(66446008)(64756008)(66946007)(4326008)(316002)(9686003)(5660300002)(33656002)(38070700009)(2906002)(86362001)(52536014)(41300700001)(66476007)(66556008)(21314003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?M1hBYTBXUy82cUpzbHhrZFlaWTZQZlNiNjd0WTVLbm5qbDUzOFViNWR6T2NC?= =?utf-8?B?UnJEcEtiMXlueGhDOG9WdGRtajhRczgzN1NkdTRtZk1hd0hzOHZXUm9Ub2gz?= =?utf-8?B?V3JBK3NEWFc4TUtFWjFOYk5nVmFqUFVteGI5elI3Mk91ZmpPU0t6V1E1MXdD?= =?utf-8?B?WEl6ME45SjVUTXAwamNDMFhVVHRhRVF6eitMcE5rN1NDaVZzM2NpeWlWS0xS?= =?utf-8?B?eXcvemlhWlViM0RXbXRpdFdOMEJ3b1pYMi90SGRDZHhmZWJJM3p3VmQvTWV0?= =?utf-8?B?TDE2dS9yb3Q2cVdBUkRrY2FmbkI5N21zb2l4TnhidGtzTFJpdjZGWVhtYk1S?= =?utf-8?B?QkszYzJNSEpBcmtKeEhZTzhyUE90dFhybVd2UGlwSk8wdHE5eTZqdkZBSjFu?= =?utf-8?B?K09iWWVVL0J6OEsvL1VNYkVSZVd4MGhBaDZlNmtsUXVuc3hHS2ZYK3BqWlQ2?= =?utf-8?B?bkdqeHBmbytETHk0b0hkemVGYWU1WUNERktydUR3cFpxOTJuL0lZSFdtcHFO?= =?utf-8?B?NHU4cGRaRWYvZ0RhaU9CR2R6bXk0a1RDY1lwa3JrWW1Ub3JFblpOM09GL0E3?= =?utf-8?B?UU1Fanh6WnVvdTR4VzhxcERsckZNSVFRUEM4TDRQQXRxQmczL1lRUnlYNCtv?= =?utf-8?B?Wk9rVlFCV2dHVXBJLzFXaUdCMDRyc1hUbkRZbjFhdnM2Y255V29qazkraEt1?= =?utf-8?B?eWR4Ty95L1pmMjczWjU3TzdoZ2lnWmZwek5FK0h1TGIzZmlUcUVmaHZaOUhh?= =?utf-8?B?eDhMTXh6ZUROK09EaUhuS1dzb2k1ckNwdGJ3VmFQWGlUS2pBUHpDMW1tS1RR?= =?utf-8?B?cXpENWZJZGtsSG1IMVBlZzBZMHhhRmJob1Q5a0Y3NjhrK0xPZEptUmc1cTZn?= =?utf-8?B?UnRTblVnOVBFR3dmais2cXFaaWVtQ3lNVzdLOHNrZGszRVIzeXFqdXIzY3JS?= =?utf-8?B?bFhuTkEyWVI3NU9BdGFQNHVneVJ5L3U0RVpYZ2g1SW9vOWVUeEZDYjdsKzVa?= =?utf-8?B?OFNQUmtRTzR1M0xyK085NmRUZk5wNVhhMkxiNHZWcGora2ZnbHZTaGNtUG9V?= =?utf-8?B?bEhkYU5VYTQ1MHdTOXZvdEppY0JzT3pjdlJmRHEzNUgweWVPSEt6WW5neU9n?= =?utf-8?B?SDhDakZZc0tOSnVYSlBXSVVGa2hOOWtzRlpWU1FTN1Yzd0RhcWo4ZURFMzdv?= =?utf-8?B?VElJQUdkQlNRd0IrQUZBNnlpd2lVMTluMWpHR3E3NmdvU2dPWmhHRlRHSnVT?= =?utf-8?B?VWRnbXBULzhHakY3Rk8zRi9ha2xZTUw3WkVGZS9vNkpjSHY4RmJ6amZudUVm?= =?utf-8?B?MGFqNmJhSjdDQ1N4b2d2WUZZeW14QXRiLzRadmcydkR6enU3akRab2hWRXF4?= =?utf-8?B?ZVNuMFRSQlFOWll4N1hreWNVeExVUDNOcWhXdEZqUDJPNUw4SGhlcjNSemho?= =?utf-8?B?Qi90NytyRTV2YlM4Y2xnOE04SVgrM0FYY3UybUZXckNyUFBaekhPUlVSL2k4?= =?utf-8?B?Q241QUlhd1VBR3B1S0hSa2pieCtMUkJxSkREVjFxUXVGN2dNR0RFMC9YVE0z?= =?utf-8?B?U1kvbHJtc1pRRGVyOHU5MVNnTGRJUlYxVDZMUDBNcWpLeHBlcHFZWE5mSTZ4?= =?utf-8?B?eTNYZWxyV0ZHR3ZsSDh1eHZHciszUHZoUGRWUU5xMWI5ZkRJQ3Eyb3hZT3BH?= =?utf-8?B?WU1SdklmMjhKMXhjeUJRTkxZK1ZoNitqQjhGMnUwNkI3Z1F1ekZrb1U2dStl?= =?utf-8?B?bXpKZDk3L0MwbFpHV2JKSDF2OEJwT1Z1Y1BBOWgxR0NrdmJrNVdBQlk3QnNQ?= =?utf-8?B?dVB1V0ZReGo4MWdmMlhUQmx4ZUdFaU5xRnZ4QmF2MDNRa29vWHRYdE9CcWEy?= =?utf-8?B?SjJYZ3RvTjFIbjN4RGpwZVkxZEZCYzdEZ2hDNjVRRnJweFVQVktyNk5BbkNK?= =?utf-8?B?SWxManNMSDdRTjQ0elcrR0tzcTVudFJFeFpvL0RSVk04Tkl6WUsyc094V0JZ?= =?utf-8?B?MC9iUnU3QVhlZkIzbnY3V1dOVEg3QkZjYWc3Wk5ieFNJT2VsR1I0ZWZQN2Yv?= =?utf-8?B?TkExbVBRdmZYWEtPTEY1UmkvZW8rcGVKc0I3ZzRUeTN4SHY4aEVGVStlOUNE?= =?utf-8?Q?+b9zdCCBY9VftpKpFGgl5rl3Z?= 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: CO6PR12MB5396.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef8bb058-0185-4983-8f03-08dc2206fffb X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jan 2024 02:47:43.8984 (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: vDN61NZm96N7rhjxKdf2KgTv40yXNNGIY/epyTd6wJkf0EVCD/Yy+U1SJvvfGPldXnj6cLXIBsVhAJcXVUvYOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7344 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 SGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRmVycnVoIFlpZ2l0 IDxmZXJydWgueWlnaXRAYW1kLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBKYW51YXJ5IDMxLCAy MDI0IDE6MzQgQU0NCj4gVG86IFN1YW5taW5nIE1vdSA8c3Vhbm1pbmdtQG52aWRpYS5jb20+OyBP cmkgS2FtIDxvcmlrYUBudmlkaWEuY29tPjsNCj4gQW1hbiBTaW5naCA8YW1hbi5kZWVwLnNpbmdo QGludGVsLmNvbT47IFl1eWluZyBaaGFuZw0KPiA8eXV5aW5nLnpoYW5nQGludGVsLmNvbT47IE5C VS1Db250YWN0LVRob21hcyBNb25qYWxvbiAoRVhURVJOQUwpDQo+IDx0aG9tYXNAbW9uamFsb24u bmV0PjsgQW5kcmV3IFJ5YmNoZW5rbw0KPiA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+ DQo+IENjOiBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAyLzNdIGV0aGRl djogYWRkIGNvbXBhcmUgaXRlbQ0KPiANCj4gT24gMS8xNS8yMDI0IDk6MTMgQU0sIFN1YW5taW5n IE1vdSB3cm90ZToNCj4gPiBUaGUgbmV3IGl0ZW0gdHlwZSBpcyBhZGRlZCBmb3IgdGhlIGNhc2Ug dXNlciB3YW50cyB0byBtYXRjaCB0cmFmZmljDQo+ID4gYmFzZWQgb24gcGFja2V0IGZpZWxkIGNv bXBhcmUgcmVzdWx0IHdpdGggb3RoZXIgZmllbGRzIG9yIGltbWVkaWF0ZQ0KPiA+IHZhbHVlLg0K PiA+DQo+ID4gZS5nLiB0YWtlIGFkdmFudGFnZSB0aGUgY29tcGFyZSBpdGVtIHVzZXIgd2lsbCBi ZSBhYmxlIHRvIGFjY3VtdWxhdGUgYQ0KPiA+IElQdjQvVENQIHBhY2tldCdzIFRDUCBkYXRhX29m ZnNldCBhbmQgSVB2NCBJSEwgZmllbGQgdG8gYSB0YWcNCj4gPiByZWdpc3RlciwgdGhlbiBjb21w YXJlIHRoZSB0YWcgcmVnaXN0ZXIgd2l0aCBJUHY0IGhlYWRlciB0b3RhbCBsZW5ndGgNCj4gPiB0 byB1bmRlcnN0YW5kIHRoZSBwYWNrZXQgaGFzIHBheWxvYWQgb3Igbm90Lg0KPiA+DQo+IA0KPiBh Y2ssIGFib3ZlIHNhbXBsZSBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZC4NCj4gDQo+IFRo aXMgcGF0Y2ggaXMgYWRkaW5nIHRlc3RwbWQgY29tbWFuZHMsIGNhbiB5b3UgcGxlYXNlIHByb3Zp ZGUgc29tZSBzYW1wbGUNCj4gY29tbWFuZHMgaW4gY29tbWl0IGxvZz8NCj4gVGhlIG1vcmUgc2Ft cGxlcyBhcmUgYmV0dGVyLCBhcyBmYXIgYXMgSSByZW1lbWJlciB0aGVyZSB3YXMgYSB0ZXN0cG1k DQo+IGRvY3VtZW50YXRpb24gdGhhdCBkb2N1bWVudHMgdGhlIHNhbXBsZSB1c2FnZXMsIGNhbiB5 b3UgcGxlYXNlIGNoZWNrIGZvciBpdD8NCg0KWWVzLCBJIHRoaW5rIHdlIGhhdmUgc29tZXRoaW5n IHRvIGRvIGluICJ0ZXN0cG1kX2Z1bmNzLnJzdCIsIHdpbGwgdXBkYXRlLg0KDQo+IA0KPiA+IFRo ZSBzdXBwb3J0ZWQgb3BlcmF0aW9ucyBjYW4gYmUgYXMgYmVsb3c6DQo+ID4gIC0gUlRFX0ZMT1df SVRFTV9DT01QQVJFX0VRIChlcXVhbCkNCj4gPiAgLSBSVEVfRkxPV19JVEVNX0NPTVBBUkVfTkUg KG5vdCBlcXVhbCkNCj4gPiAgLSBSVEVfRkxPV19JVEVNX0NPTVBBUkVfTFQgKGxlc3MgdGhhbikN Cj4gPiAgLSBSVEVfRkxPV19JVEVNX0NPTVBBUkVfTEUgKGxlc3MgdGhhbiBvciBlcXVhbCkNCj4g PiAgLSBSVEVfRkxPV19JVEVNX0NPTVBBUkVfR1QgKGdyZWF0IHRoYW4pDQo+ID4gIC0gUlRFX0ZM T1dfSVRFTV9DT01QQVJFX0dFIChncmVhdCB0aGFuIG9yIGVxdWFsKQ0KPiA+DQo+ID4gU2lnbmVk LW9mZi1ieTogU3Vhbm1pbmcgTW91IDxzdWFubWluZ21AbnZpZGlhLmNvbT4NCj4gPiBBY2tlZC1i eTogT3JpIEthbSA8b3Jpa2FAbnZpZGlhLmNvbT4NCj4gPiBBY2tlZC1ieTogQW5kcmV3IFJ5YmNo ZW5rbyA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+IA0KPiA8Li4uPg0KPiANCj4g Pg0KPiA+IC1zdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbW9kaWZ5X2ZpZWxkX2lkc1tdID0gew0K PiA+ICtzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgZmxvd19maWVsZF9pZHNbXSA9IHsNCj4gPg0K PiANCj4gSSB3b25kZXIgaWYgdGhpcyByZW5hbWUgc2hvdWxkIGJlIGluIHByZXZpb3VzIHBhdGNo LCBhcyBpdCBkb2VzIHRoZSBsb2dpY2FsIGNoYW5nZQ0KPiBvZiB0aGUgbW9kaWZ5IGFjdGlvbiBz cGVjaWZpYyBmaWVsZHMgdG8gbW9yZSBnZW5lcmljIGZpZWxkcy4NCg0KQWdyZWUsIHdpbGwgYWRq dXN0Lg0KDQo+IA0KPiA8Li4uPg0KPiANCj4gPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9yZWxf bm90ZXMvcmVsZWFzZV8yNF8wMy5yc3QNCj4gPiBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVh c2VfMjRfMDMucnN0DQo+ID4gaW5kZXggYTY5MWU3OTRmNC4uOGM4YzY2MTIxOCAxMDA2NDQNCj4g PiAtLS0gYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzI0XzAzLnJzdA0KPiA+ICsrKyBi L2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjRfMDMucnN0DQo+ID4gQEAgLTU1LDYgKzU1 LDExIEBAIE5ldyBGZWF0dXJlcw0KPiA+ICAgICAgIEFsc28sIG1ha2Ugc3VyZSB0byBzdGFydCB0 aGUgYWN0dWFsIHRleHQgYXQgdGhlIG1hcmdpbi4NCj4gPiAgICAgICA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4NCj4gPiArKiAqKkFk ZGVkIGNvbXBhcmUgZmxvdyBtYXRjaGluZyBjcml0ZXJpYS4qKg0KPiA+ICsNCj4gPiArICBBZGRl ZCBgYFJURV9GTE9XX0lURU1fVFlQRV9DT01QQVJFYGAgdG8gYWxsb3cgbWF0Y2hpbmcgb24gY29t cGFyZQ0KPiA+ICsgcmVzdWx0IGJldHdlZW4gdGhlIHBhY2tldCBmaWVsZHMgb3IgdmFsdWUuDQo+ ID4gKw0KPiA+ICAqICoqVXBkYXRlZCBOVklESUEgbWx4NSBkcml2ZXIuKioNCj4gPg0KPiA+ICAg ICogQWRkZWQgc3VwcG9ydCBmb3IgYWNjdW11bGF0aW5nIGZyb20gc3JjIGZpZWxkIHRvIGRzdCBm aWVsZC4NCj4gPg0KPiANCj4gSSBndWVzcyB5b3UgYXJlIHJlYmFzaW5nIG9uIHNvbWUgaW50ZXJu YWwgcmVwbywgYmVjYXVzZSBhYm92ZSBOVklESUEgbm90ZQ0KPiBkb2Vzbid0IGV4aXN0IGluIHVw c3RyZWFtIHJlcG8uIENhbiB5b3UgcGxlYXNlIHJlYmFzZSBvbiBsYXRlc3QgbmV4dC1uZXQsIHRo aXMgYWxzbw0KPiBoZWxwcyB0byByZXNvbHZlIGNvbmZsaWN0IHdpdGggcmFuZG9tIGFjdGlvbiBp biB1cHN0cmVhbSByZXBvLg0KDQpXaWxsIHJlYmFzZSBhbmQgdXBkYXRlLg0KDQo+IA0KPiA8Li4u Pg0KPiANCj4gPiArLyoqDQo+ID4gKyAqIEZpZWxkIElEcyBmb3IgcGFja2V0IGZpZWxkLg0KPiA+ ICsgKi8NCj4gPiArZW51bSBydGVfZmxvd19maWVsZF9pZCB7DQo+ID4gKwlSVEVfRkxPV19GSUVM RF9TVEFSVCA9IDAsCS8qKjwgU3RhcnQgb2YgYSBwYWNrZXQuICovDQo+ID4gKwlSVEVfRkxPV19G SUVMRF9NQUNfRFNULAkJLyoqPCBEZXN0aW5hdGlvbiBNQUMgQWRkcmVzcy4NCj4gKi8NCj4gPiAr CVJURV9GTE9XX0ZJRUxEX01BQ19TUkMsCQkvKio8IFNvdXJjZSBNQUMgQWRkcmVzcy4gKi8NCj4g PiArCVJURV9GTE9XX0ZJRUxEX1ZMQU5fVFlQRSwJLyoqPCBWTEFOIFRhZyBJZGVudGlmaWVyLiAq Lw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfVkxBTl9JRCwJCS8qKjwgVkxBTiBJZGVudGlmaWVyLiAq Lw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfTUFDX1RZUEUsCS8qKjwgRXRoZXJUeXBlLiAqLw0KPiA+ ICsJUlRFX0ZMT1dfRklFTERfSVBWNF9EU0NQLAkvKio8IElQdjQgRFNDUC4gKi8NCj4gPiArCVJU RV9GTE9XX0ZJRUxEX0lQVjRfVFRMLAkvKio8IElQdjQgVGltZSBUbyBMaXZlLiAqLw0KPiA+ICsJ UlRFX0ZMT1dfRklFTERfSVBWNF9TUkMsCS8qKjwgSVB2NCBTb3VyY2UgQWRkcmVzcy4gKi8NCj4g PiArCVJURV9GTE9XX0ZJRUxEX0lQVjRfRFNULAkvKio8IElQdjQgRGVzdGluYXRpb24gQWRkcmVz cy4gKi8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX0lQVjZfRFNDUCwJLyoqPCBJUHY2IERTQ1AuICov DQo+ID4gKwlSVEVfRkxPV19GSUVMRF9JUFY2X0hPUExJTUlULAkvKio8IElQdjYgSG9wIExpbWl0 LiAqLw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfSVBWNl9TUkMsCS8qKjwgSVB2NiBTb3VyY2UgQWRk cmVzcy4gKi8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX0lQVjZfRFNULAkvKio8IElQdjYgRGVzdGlu YXRpb24gQWRkcmVzcy4gKi8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX1RDUF9QT1JUX1NSQywJLyoq PCBUQ1AgU291cmNlIFBvcnQgTnVtYmVyLg0KPiAqLw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfVENQ X1BPUlRfRFNULAkvKio8IFRDUCBEZXN0aW5hdGlvbiBQb3J0DQo+IE51bWJlci4gKi8NCj4gPiAr CVJURV9GTE9XX0ZJRUxEX1RDUF9TRVFfTlVNLAkvKio8IFRDUCBTZXF1ZW5jZSBOdW1iZXIuICov DQo+ID4gKwlSVEVfRkxPV19GSUVMRF9UQ1BfQUNLX05VTSwJLyoqPCBUQ1AgQWNrbm93bGVkZ21l bnQNCj4gTnVtYmVyLiAqLw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfVENQX0ZMQUdTLAkvKio8IFRD UCBGbGFncy4gKi8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX1VEUF9QT1JUX1NSQywJLyoqPCBVRFAg U291cmNlIFBvcnQgTnVtYmVyLg0KPiAqLw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfVURQX1BPUlRf RFNULAkvKio8IFVEUCBEZXN0aW5hdGlvbiBQb3J0DQo+IE51bWJlci4gKi8NCj4gPiArCVJURV9G TE9XX0ZJRUxEX1ZYTEFOX1ZOSSwJLyoqPCBWWExBTiBOZXR3b3JrIElkZW50aWZpZXIuICovDQo+ ID4gKwlSVEVfRkxPV19GSUVMRF9HRU5FVkVfVk5JLAkvKio8IEdFTkVWRSBOZXR3b3JrDQo+IElk ZW50aWZpZXIuICovDQo+ID4gKwlSVEVfRkxPV19GSUVMRF9HVFBfVEVJRCwJLyoqPCBHVFAgVHVu bmVsIEVuZHBvaW50IElkZW50aWZpZXIuICovDQo+ID4gKwlSVEVfRkxPV19GSUVMRF9UQUcsCQkv Kio8IFRhZyB2YWx1ZS4gKi8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX01BUkssCQkvKio8IE1hcmsg dmFsdWUuICovDQo+ID4gKwlSVEVfRkxPV19GSUVMRF9NRVRBLAkJLyoqPCBNZXRhZGF0YSB2YWx1 ZS4gKi8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX1BPSU5URVIsCQkvKio8IE1lbW9yeSBwb2ludGVy LiAqLw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfVkFMVUUsCQkvKio8IEltbWVkaWF0ZSB2YWx1ZS4g Ki8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX0lQVjRfRUNOLAkvKio8IElQdjQgRUNOLiAqLw0KPiA+ ICsJUlRFX0ZMT1dfRklFTERfSVBWNl9FQ04sCS8qKjwgSVB2NiBFQ04uICovDQo+ID4gKwlSVEVf RkxPV19GSUVMRF9HVFBfUFNDX1FGSSwJLyoqPCBHVFAgUUZJLiAqLw0KPiA+ICsJUlRFX0ZMT1df RklFTERfTUVURVJfQ09MT1IsCS8qKjwgTWV0ZXIgY29sb3IgbWFya2VyLiAqLw0KPiA+ICsJUlRF X0ZMT1dfRklFTERfSVBWNl9QUk9UTywJLyoqPCBJUHY2IG5leHQgaGVhZGVyLiAqLw0KPiA+ICsJ UlRFX0ZMT1dfRklFTERfRkxFWF9JVEVNLAkvKio8IEZsZXggaXRlbS4gKi8NCj4gPiArCVJURV9G TE9XX0ZJRUxEX0hBU0hfUkVTVUxULAkvKio8IEhhc2ggcmVzdWx0LiAqLw0KPiA+ICsJUlRFX0ZM T1dfRklFTERfR0VORVZFX09QVF9UWVBFLAkvKio8IEdFTkVWRSBvcHRpb24gdHlwZS4gKi8NCj4g PiArCVJURV9GTE9XX0ZJRUxEX0dFTkVWRV9PUFRfQ0xBU1MsLyoqPCBHRU5FVkUgb3B0aW9uIGNs YXNzLiAqLw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfR0VORVZFX09QVF9EQVRBLAkvKio8IEdFTkVW RSBvcHRpb24gZGF0YS4gKi8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX01QTFMsCQkvKio8IE1QTFMg aGVhZGVyLiAqLw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfVENQX0RBVEFfT0ZGU0VULAkvKio8IFRD UCBkYXRhIG9mZnNldC4gKi8NCj4gPiArCVJURV9GTE9XX0ZJRUxEX0lQVjRfSUhMLAkvKio8IElQ djQgSUhMLiAqLw0KPiA+ICsJUlRFX0ZMT1dfRklFTERfSVBWNF9UT1RBTF9MRU4sCS8qKjwgSVB2 NCB0b3RhbCBsZW5ndGguICovDQo+ID4gKwlSVEVfRkxPV19GSUVMRF9JUFY2X1BBWUxPQURfTEVO CS8qKjwgSVB2NiBwYXlsb2FkIGxlbmd0aC4gKi8NCj4gPiArfTsNCj4gPiArDQo+IA0KPiArMSB0 byBtb3ZlIHRoZSBzdHJ1Y3RzIHRvIGtlZXAgdGhlIHByb3BlciBvcmRlciwgYnV0IG5vdCBzdXJl IGlmIGl0IGlzDQo+IGJldHRlciB0byBkbyB0aGlzIGluIHByZXZpb3VzIHBhdGNoIG9yIHRoaXMg b25lLg0KDQpUaGUgcHJldmlvdXMgcGF0Y2ggaXMganVzdCBmb3IgcmVuYW1pbmcsIEkgYXNzdW1l IG1vdmluZyB0aGUgc3RydWN0IGlzIHRvbyBtdWNoIGluIHByZXZpb3VzIHBhdGNoLCB3aGF0IGRv IHlvdSB0aGluaz8NCg0KPiANCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBi IEVYUEVSSU1FTlRBTDogdGhpcyBzdHJ1Y3R1cmUgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5v dGljZQ0KPiA+ICsgKg0KPiA+ICsgKiBGaWVsZCBkZXNjcmlwdGlvbiBmb3IgcGFja2V0IGZpZWxk Lg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9mbG93X2ZpZWxkX2RhdGEgew0KPiA+ICsJZW51 bSBydGVfZmxvd19maWVsZF9pZCBmaWVsZDsgLyoqPCBGaWVsZCBvciBtZW1vcnkgdHlwZSBJRC4g Ki8NCj4gPiArCXVuaW9uIHsNCj4gPiArCQlzdHJ1Y3Qgew0KPiA+ICsJCQkvKiogRW5jYXBzdWxh dGlvbiBsZXZlbCBhbmQgdGFnIGluZGV4IG9yIGZsZXggaXRlbQ0KPiBoYW5kbGUuICovDQo+ID4g KwkJCXVuaW9uIHsNCj4gPiArCQkJCXN0cnVjdCB7DQo+ID4gKwkJCQkJLyoqDQo+ID4gKwkJCQkJ ICogUGFja2V0IGVuY2Fwc3VsYXRpb24gbGV2ZWwgY29udGFpbmluZw0KPiA+ICsJCQkJCSAqIHRo ZSBmaWVsZCB0byBtb2RpZnkuDQo+ID4gKwkJCQkJICoNCj4gPiArCQkJCQkgKiAtIEBwIDAgcmVx dWVzdHMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuDQo+ID4gKwkJCQkJICogICBEZXBlbmRpbmcgb24g dGhlIHBhY2tldCB0eXBlLCBpdA0KPiA+ICsJCQkJCSAqICAgY2FuIG1lYW4gb3V0ZXJtb3N0LCBp bm5lcm1vc3Qgb3INCj4gPiArCQkJCQkgKiAgIGFueXRoaW5nIGluIGJldHdlZW4uDQo+ID4gKwkJ CQkJICoNCj4gPiArCQkJCQkgKiAgIEl0IGJhc2ljYWxseSBzdGFuZHMgZm9yIHRoZQ0KPiA+ICsJ CQkJCSAqICAgaW5uZXJtb3N0IGVuY2Fwc3VsYXRpb24gbGV2ZWwuDQo+ID4gKwkJCQkJICogICBN b2RpZmljYXRpb24gY2FuIGJlIHBlcmZvcm1lZA0KPiA+ICsJCQkJCSAqICAgYWNjb3JkaW5nIHRv IFBNRCBhbmQgZGV2aWNlDQo+ID4gKwkJCQkJICogICBjYXBhYmlsaXRpZXMuDQo+ID4gKwkJCQkJ ICoNCj4gPiArCQkJCQkgKiAtIEBwIDEgcmVxdWVzdHMgbW9kaWZpY2F0aW9uIHRvIGJlDQo+ID4g KwkJCQkJICogICBwZXJmb3JtZWQgb24gdGhlIG91dGVybW9zdCBwYWNrZXQNCj4gPiArCQkJCQkg KiAgIGVuY2Fwc3VsYXRpb24gbGV2ZWwuDQo+ID4gKwkJCQkJICoNCj4gPiArCQkJCQkgKiAtIEBw IDIgYW5kIHN1YnNlcXVlbnQgdmFsdWVzDQo+IHJlcXVlc3QNCj4gPiArCQkJCQkgKiAgIG1vZGlm aWNhdGlvbiB0byBiZSBwZXJmb3JtZWQgb24NCj4gPiArCQkJCQkgKiAgIHRoZSBzcGVjaWZpZWQg aW5uZXIgcGFja2V0DQo+ID4gKwkJCQkJICogICBlbmNhcHN1bGF0aW9uIGxldmVsLCBmcm9tDQo+ ID4gKwkJCQkJICogICBvdXRlcm1vc3QgdG8gaW5uZXJtb3N0IChsb3dlciB0bw0KPiA+ICsJCQkJ CSAqICAgaGlnaGVyIHZhbHVlcykuDQo+ID4gKwkJCQkJICoNCj4gPiArCQkJCQkgKiBWYWx1ZXMg b3RoZXIgdGhhbiBAcCAwIGFyZSBub3QNCj4gPiArCQkJCQkgKiBuZWNlc3NhcmlseSBzdXBwb3J0 ZWQuDQo+ID4gKwkJCQkJICoNCj4gPiArCQkJCQkgKiBAbm90ZSB0aGF0IGZvciBNUExTIGZpZWxk LA0KPiA+ICsJCQkJCSAqIGVuY2Fwc3VsYXRpb24gbGV2ZWwgYWxzbyBpbmNsdWRlDQo+ID4gKwkJ CQkJICogdHVubmVsIHNpbmNlIE1QTFMgbWF5IGFwcGVhciBpbg0KPiA+ICsJCQkJCSAqIG91dGVy LCBpbm5lciBvciB0dW5uZWwuDQo+ID4gKwkJCQkJICovDQo+ID4gKwkJCQkJdWludDhfdCBsZXZl bDsNCj4gPiArCQkJCQl1bmlvbiB7DQo+ID4gKwkJCQkJCS8qKg0KPiA+ICsJCQkJCQkgKiBUYWcg aW5kZXggYXJyYXkgaW5zaWRlDQo+ID4gKwkJCQkJCSAqIGVuY2Fwc3VsYXRpb24gbGV2ZWwuDQo+ ID4gKwkJCQkJCSAqIFVzZWQgZm9yIFZMQU4sIE1QTFMgb3IgVEFHDQo+IHR5cGVzLg0KPiA+ICsJ CQkJCQkgKi8NCj4gPiArCQkJCQkJdWludDhfdCB0YWdfaW5kZXg7DQo+ID4gKwkJCQkJCS8qKg0K PiA+ICsJCQkJCQkgKiBHZW5ldmUgb3B0aW9uIGlkZW50aWZpZXIuDQo+ID4gKwkJCQkJCSAqIFJl bGV2YW50IG9ubHkgZm9yDQo+ID4gKwkJCQkJCSAqDQo+IFJURV9GTE9XX0ZJRUxEX0dFTkVWRV9P UFRfWFhYWA0KPiA+ICsJCQkJCQkgKiBtb2RpZmljYXRpb24gdHlwZS4NCj4gPiArCQkJCQkJICov DQo+ID4gKwkJCQkJCXN0cnVjdCB7DQo+ID4gKwkJCQkJCQkvKioNCj4gPiArCQkJCQkJCSAqIEdl bmV2ZSBvcHRpb24gdHlwZS4NCj4gPiArCQkJCQkJCSAqLw0KPiA+ICsJCQkJCQkJdWludDhfdCB0 eXBlOw0KPiA+ICsJCQkJCQkJLyoqDQo+ID4gKwkJCQkJCQkgKiBHZW5ldmUgb3B0aW9uIGNsYXNz Lg0KPiA+ICsJCQkJCQkJICovDQo+ID4gKwkJCQkJCQlydGVfYmUxNl90IGNsYXNzX2lkOw0KPiA+ ICsJCQkJCQl9Ow0KPiA+ICsJCQkJCX07DQo+ID4gKwkJCQl9Ow0KPiA+ICsJCQkJc3RydWN0IHJ0 ZV9mbG93X2l0ZW1fZmxleF9oYW5kbGUgKmZsZXhfaGFuZGxlOw0KPiA+ICsJCQl9Ow0KPiA+ICsJ CQkvKiogTnVtYmVyIG9mIGJpdHMgdG8gc2tpcCBmcm9tIGEgZmllbGQuICovDQo+ID4gKwkJCXVp bnQzMl90IG9mZnNldDsNCj4gPiArCQl9Ow0KPiA+ICsJCS8qKg0KPiA+ICsJCSAqIEltbWVkaWF0 ZSB2YWx1ZSBmb3IgUlRFX0ZMT1dfRklFTERfVkFMVUUsIHByZXNlbnRlZCBpbg0KPiB0aGUNCj4g PiArCQkgKiBzYW1lIGJ5dGUgb3JkZXIgYW5kIGxlbmd0aCBhcyBpbiByZWxldmFudCBydGVfZmxv d19pdGVtX3h4eC4NCj4gPiArCQkgKiBUaGUgaW1tZWRpYXRlIHNvdXJjZSBiaXRmaWVsZCBvZmZz ZXQgaXMgaW5oZXJpdGVkIGZyb20NCj4gPiArCQkgKiB0aGUgZGVzdGluYXRpb24ncyBvbmUuDQo+ ID4gKwkJICovDQo+ID4gKwkJdWludDhfdCB2YWx1ZVsxNl07DQo+ID4gKwkJLyoqDQo+ID4gKwkJ ICogTWVtb3J5IGFkZHJlc3MgZm9yIFJURV9GTE9XX0ZJRUxEX1BPSU5URVIsIG1lbW9yeQ0KPiBs YXlvdXQNCj4gPiArCQkgKiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgZm9yIHJlbGV2YW50IGZpZWxk IGluIHRoZQ0KPiA+ICsJCSAqIHJ0ZV9mbG93X2l0ZW1feHh4IHN0cnVjdHVyZS4NCj4gPiArCQkg Ki8NCj4gPiArCQl2b2lkICpwdmFsdWU7DQo+ID4gKwl9Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPg0K PiANCj4gSSBhbSBhd2FyZSB0aGF0IHlvdSBhcmUganVzdCBtb3ZpbmcgdGhlIGFib3ZlIHN0cnVj dCwgYnV0IGl0IGlzIG5lc3RlZCB0b28gbXVjaA0KPiB3aGljaCBpcyBtYWtpbmcgaXQgaGFyZCB0 byByZWFkLg0KPiANCj4gQXMgeW91IGFyZSB0b3VjaGluZyBpdCwgY2FuIHdlIGV4dHJhY3Qgc29t ZSBzdHJ1Y3RzIGFuZCBtYWtlIHRoaXMgc3RydWN0IGxlc3MNCj4gbmVzdGVkLCB3aGF0IGRvIHlv dSB0aGluaz8NCj4gT2YgY291cnNlIGl0IG5lZWRzIHRvIGJlIGRvbmUgaW4gc2VwYXJhdGUgcGF0 Y2gsIGFzIGEgcHJlcGVyYXRpb24vY2xlYW4tdXAgcGF0Y2gNCj4gYmVmb3JlIG1vdmluZyBpdCBh cm91bmQuDQoNCkFncmVlIHRoZSBzdHJ1Y3QgbWF5YmUgYSBiaXQgbmVzdGVkLiBCdXQgbm90IHN1 cmUgaG93IGl0IHdhcyBkaXNjdXNzZWQgYmVmb3JlIGR1cmluZyB0aGUgbGFzdCBuZXcgbWVtYmVy IHdhcyBhZGRlZC4uLiBAT3JpLCBEbyB5b3UgaGF2ZSBhbnkgaWRlYSBhYm91dCB0aGlzPw0KDQpB bmQgaWYgaXQgaXMgcmVhbGx5IGV4cGVjdGVkLCBJIGJlbGlldmUgYW5vdGhlciBuZXcgdGhyZWFk IGlzIHdvcnRoIGZvciB0aGF0IGNoYW5nZSwgIGJldHRlciBub3QgYmUgaW4gdGhhdCBzZXJpZXMu DQpOZWVkIHRvIGRpc2N1c3MgdGhlIG5ldyBzdHJ1Y3QgbmFtZSBhbmQgb3RoZXIgc3R1ZmYuIFdo YXQgZG8geW91IHRoaW5rPyANCg0KPiANCj4gPC4uLj4NCj4gDQo+ID4gKy8qKg0KPiA+ICsgKg0K PiA+ICsgKiBSVEVfRkxPV19JVEVNX1RZUEVfQ09NUEFSRQ0KPiA+ICsgKg0KPiA+ICsgKiBNYXRj aGVzIHRoZSBwYWNrZXQgd2l0aCBjb21wYXJlIHJlc3VsdC4NCj4gPiArICoNCj4gPiArICogVGhl IG9wZXJhdGlvbiBtZWFucyBhIGNvbXBhcmUgd2l0aCBiIHJlc3VsdC4NCj4gPiArICovDQo+ID4g K3N0cnVjdCBydGVfZmxvd19pdGVtX2NvbXBhcmUgew0KPiA+ICsJZW51bSBydGVfZmxvd19pdGVt X2NvbXBhcmVfb3Agb3BlcmF0aW9uOyAvKiBUaGUgY29tcGFyZSBvcGVyYXRpb24uDQo+ICovDQo+ ID4gKwlzdHJ1Y3QgcnRlX2Zsb3dfZmllbGRfZGF0YSBhOwkJIC8qIEZpZWxkIGJlIGNvbXBhcmVk LiAgKi8NCj4gPiArCXN0cnVjdCBydGVfZmxvd19maWVsZF9kYXRhIGI7CQkgLyogRmllbGQgYXMg Y29tcGFyYXRvci4gKi8NCj4gPg0KPiANCj4gVmFyaWFibGUgbmFtZXMgJ2EnIGFuZCAnYicgYXJl IG5vdCBkZXNjcmlwdGl2ZSBhbHRob3VnaCBpdCBtYXkgYmUgT0sgc2luY2UgdGhlcmUgaXMNCj4g bm8gc2lnbmlmaWNhbmNlIHRvIHRoZSB2YWx1ZXMsIGJ1dCBvdGhlciBvcHRpb24gY2FuIGJlICdm aXJzdCcgYW5kICdzZWNvbmQnLCBidXQNCj4gb3ZlcmFsbCBub3Qgc3Ryb25nIG9waW5pb24uDQoN ClllcywgdGhhbmtzIGZvciB0aGUgc3VnZ2VzdGlvbiwgaW4gZmFjdCB3ZSBhbHNvIGRpc2N1c3Nl ZCBhYm91dCB0aGUgbmFtZSBhIGxvdCwgZmluYWxseSB3ZSBjaG9vc2UgdGhlIHdpZGVseSB1c2Vk ICdhJyBhbmQgJ2InDQoNClRoYW5rcw0KDQo=