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 72806A0524; Tue, 13 Apr 2021 09:12:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5F479160BA3; Tue, 13 Apr 2021 09:12:48 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2087.outbound.protection.outlook.com [40.107.236.87]) by mails.dpdk.org (Postfix) with ESMTP id 0F619160BA2 for ; Tue, 13 Apr 2021 09:12:47 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ane7G71oXJ3p+v3kPJkWiDaJWVziO3CimRj74UibkzWlJonLBhLfy3qgzcQBLulpv2GlGMDVZtICotXZ+jhHX/vtFuAf2tAiDz7d9hsR9Y4h6Pd9E51ib+7w2/tkcE+2JqOVOIfTizo7cx9RhHtEaGMFTZXfoNl0idJjnFUegDoyOBd1UqeBXhePnXdIbU4vafMMtfBXnWkZN+pWu8wRRRQZjn4lldr7iliLJLQ6BgWrRQsDe1uN/3l/eyejVoOd8rtxf4ry3O5VoA8jobnXaEnMQu5tCGk5LroDVasq6OqJqYRN3jlXD29As5ajiG0/ckWcZ3RQwTmbt1XuLKpgpw== 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-SenderADCheck; bh=X2aliutAmRvUJPq5WZDr2pNrbn/RmwyahAAj5Mi1P+M=; b=U2Lp0zwGYCMOt0R6kI9Uhm2Kv3DiZZBLubJ8Ev0F2Rxz5yjNxZKsEA6RAtQH3AISsChK0/yDu+2JjUW1ZrdyLbbG0DzKYIs7GQd8evtuY12qNOQeNjpomgx4TxUiGXaL2c8JfSKXMaPMS/zQyGq6d/dg2QNA7MhNGASymdUA7zNYKq+G/qoVEhDMxTCWYCHimGKVtASECIQxUC7X4PC2Ki3WnTQN7KjaDOVkWzUcYytrv/kdgNr6wP3yEqRpov+TvGWphMMwkgoNyqqsmnPuVaf3AD5NjK/tV4QxPExKvzblbqGgB25kmgpT9G3EO0zMBs1jAXxcWz3hvzYj53pqdQ== 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=X2aliutAmRvUJPq5WZDr2pNrbn/RmwyahAAj5Mi1P+M=; b=r0Kxg90N0YptnamzNSXG82it8UxOec5uJhwIKNiyejMmTviDSiV3uivrE7LSVU3rx5apVlNumyAdm0LJe092Zj4jz5TyecT6cJS1AotGZs7t6wa1QzltCsSLo5fYidrX6DrCLzkpoHw5QQfcc07ZG9BI6nn8IXRfPezNj6Tx1TVTYl8B7F/FPnmnnsAStjKxhz1w5N44fbcWxcle9Kxpq/r8d+EcW48Tg8HlrHLRqavdyU1lSxW94Vq5H8IepiLVrL71iIvSOXi1YnPaL8kv/2/r8VkUsQU7BaBcbE/PsbxTxqf9SmQiBXEvFEBvvmcTxCbSQSrW9ALMA4lyi47j5Q== Received: from BYAPR12MB4983.namprd12.prod.outlook.com (2603:10b6:a03:102::18) by BYAPR12MB2647.namprd12.prod.outlook.com (2603:10b6:a03:6f::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Tue, 13 Apr 2021 07:12:45 +0000 Received: from BYAPR12MB4983.namprd12.prod.outlook.com ([fe80::ccbc:b99c:71e:f761]) by BYAPR12MB4983.namprd12.prod.outlook.com ([fe80::ccbc:b99c:71e:f761%7]) with mapi id 15.20.4020.022; Tue, 13 Apr 2021 07:12:45 +0000 From: Ori Kam To: Ferruh Yigit , Gregory Etelson CC: "ajit.khaparde@broadcom.com" , "andrew.rybchenko@oktetlabs.ru" , "dev@dpdk.org" , "jerinj@marvell.com" , "olivier.matz@6wind.com" , NBU-Contact-Thomas Monjalon , Slava Ovsiienko Thread-Topic: [PATCH v2 1/2] ethdev: add packet integrity checks Thread-Index: AQHXL8Jt8SEPwVVv3kSzW/YVMb8mUKqxP2/wgABJE4CAAHOBEA== Date: Tue, 13 Apr 2021 07:12:45 +0000 Message-ID: References: <1617645874-105139-1-git-send-email-orika@nvidia.com> <20210411173414.12568-1-getelson@nvidia.com> <20210411173414.12568-2-getelson@nvidia.com> <527c07fc-8c12-3e8a-cc3c-f6e345ee1c1f@intel.com> <253782ca-bdbf-5212-cdac-c9bb41de3290@intel.com> In-Reply-To: <253782ca-bdbf-5212-cdac-c9bb41de3290@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [147.236.145.126] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b0928997-15de-43ab-4bb4-08d8fe4b894b x-ms-traffictypediagnostic: BYAPR12MB2647: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gNkgomWgEsm8oKOcKKwGtywRNbXt6uvcCtZw4SkwE4b05/8ep7SLepZW9DEa2mEYqY8LoS3WvBsRwhmayvpTMzH0+LIADwjDKDYQZKS/wxHSL1wpfwMTT/nRjZrM9tW7GGRXgu9Aa8BjOyP1jEfyjIsHD7eHYpWP3BlsmyDm1/WDokKgda+UeI8FwAZU6mkyo0xQBwqO1rCvZFZCYNXzhhVnwguEuuRYcKmUroUmuEdR7R2/3UkDunkaGAVWpNFTvkxLHZQ9YqnUEYsSPSYy6QijnxWZnKJFjE13o0vyHi4bZrhd2reVDiBQJ2tif6hgYLduP+b2NlX+eQaLMDzympuxy1k5+XtsbTgeaDgdIfcFL4Um3swRBSj2dN+UZkCO7m4tWWzIx6BWuWAtWaICQqhwUP3eFH+/7fRqeY7nYx85UOInZ5XBIQUplJL8OYOSTShaHLbZ9aT2dgRXB1vvop93HATarvJMoKbwfNQaKPuCkGDh9OfVLtJenKdqGx9+aoULJIe4yTC2IWvq2j1Bi3vL8U6AbNBgqDIULW2wPRH+SFvq8/j9dHQDmvefggpA7b5Ys7yQXWRyOZcpqJJVDdGh6dAJUlqJ6B5sSivZW3Y= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR12MB4983.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(396003)(39860400002)(346002)(136003)(83380400001)(110136005)(86362001)(30864003)(2906002)(122000001)(55016002)(54906003)(478600001)(316002)(4326008)(8676002)(9686003)(64756008)(6636002)(186003)(66946007)(7696005)(53546011)(26005)(5660300002)(66446008)(33656002)(8936002)(38100700002)(66476007)(76116006)(107886003)(6506007)(66556008)(52536014)(71200400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?UUlsY0dzaUNEU3FRK2JuSHlnL2EwamdKT0pMaGRxVjQrUnhpZy9MR0x5ZjU5?= =?utf-8?B?ZFFCSW1YOEJoako0WURnVCtyNG0wdzJwSlVhaDFoNXA2UkdXamV4c0hFanhn?= =?utf-8?B?eGZXbjFaRkZCanVoTTRqOUJFdm1lTkY0ZUo5OGtoWU90cjB3NEZMVFJmMTd5?= =?utf-8?B?d215c0liSkpmOGMxcWhRY2Q5WFA1Q0d2Q2FIU2hJWkFRemJEbnJmcElBWm5Y?= =?utf-8?B?UXdCUVIvb2tMbzhJNGhiWTBGVVVvRGxEazdzVGpxR2VkUXNCU1ZROG5FYWlw?= =?utf-8?B?ZFZ1SFFlejdSTkFiU2QrNmV0NjB3czRkWVhMMjc0ajdlWW9jc3dHbmFrNTZR?= =?utf-8?B?RWJQdVRKajhWZmVtTnhiekV5Q3VLRncrQVRZYU5UYi80MHJWd0ltTzlNL3lX?= =?utf-8?B?eW5qWW9tQkU1aHVCMW1HUkN3cStGUFRJMjgwdVF5Z1hmdFBXMmVmWW1oOFpN?= =?utf-8?B?YitOdHU4WXRZc21WWDNFUjRvRzdQT2IxYVlTOW94bjFoSk10OFU1RzNmcUpP?= =?utf-8?B?dmlVbDBCUndjelZWM3VkSWFsa1J2QTBOdllXc2txcDkxSDdTQzNEZ3RjUCt0?= =?utf-8?B?N3VSbEZ4Mm83UUg5ampYZ0l5N0p2Z2duczBHbE5TU0FuZUxDU2M1ellkOElv?= =?utf-8?B?VW9GNSsvTnpVNGZpNjdoTWF5dHpMeG03V3lKb1RBbDAySGhoT3AyQU5UeFBQ?= =?utf-8?B?QTB2WDVLRHg4OUROY2J0Qk9RWlVFeE5vT3FxQ3B6RDVIcmF1b04rUmFMMHNm?= =?utf-8?B?QmlUWktiemZNQUI2TXJjTE9jSm4xRGlaVnI3V2RMREJGYUQzTnpXRy81ODRO?= =?utf-8?B?REdmSFhnSnNaRFlGQXFhK0oyNDlDZzZJQlN5MEtiUXVvKzhNRGh0UlFPamlJ?= =?utf-8?B?M3JCVnBzRWh1WUxkekwwaExzN21sVDdTR2xHeU9TeG1aVEFLUTlvOUhPQ1Np?= =?utf-8?B?a2orNHNzZ2dQdFVUYW9aMldid0x0RHQ1Y2hQRlBMenhVZERhTmdUWjZFbHlx?= =?utf-8?B?L0oxM3NlYlpBcWNsUXdmdVhKbnBrQVUyQ1JTSjlJano3SmhtZmg0ZW1rR1p3?= =?utf-8?B?MTJ6WVA1eUVocEhSNWJFL1YvaFZqSm43dERRZzIyeHB3RUhwSmhMUk50SFJ3?= =?utf-8?B?amduNitTT1ZHUWFNbHN2UjZuOWwrQ1paajhZbE4vZHEvV1gyMERZaGVGbDR2?= =?utf-8?B?NUpyRXJhR2NFK3ZrVjM2NHo0NXUyaUlRM0M0a3ZMbEZZRHdTZURLNWY3QjBM?= =?utf-8?B?ZXgxQ3Q3TjhCb3U4Tnc4ZXdMWlJCR01paEhBeEY3S21oVFBRNzJTYkZ0NXZz?= =?utf-8?B?b1d2MjhBUVhtc0hIQldVeWFVVnBQVjZPQ05oRG1zREswZEhDK2ZTOGpFWVBC?= =?utf-8?B?VWlpTDNQR1RVN0pZVVlHeEJqQ29td2RaSXJJcGpDTkpMOXlHQi92TmhxSCty?= =?utf-8?B?UlhyZnYrMXZ3d3NSWEdUKzhoMkN1dkMzTnM5WVc2MTBzcFlZUDJCd1V5dCtB?= =?utf-8?B?M3JLeHI3T0Z6bkVlZTlnQ2k2SmFRc2d3eXpUREhqV3h5TjZmOS9jbTNxRVFZ?= =?utf-8?B?akVYRjVhUjNJcTNjUzNxRWk3cHAxWlZFUldBNHk4SExlNDVuUDkzSmVWNkNL?= =?utf-8?B?ZjdpZFBGcTN0YndsWk5LdE5vaG1PWjNkd1VWdHkvcytjZlZEMEFNa2U3YmNk?= =?utf-8?B?eTdORmJwemdFVE04c0x2Nlp0ZFJmS2xHZ3o1Wkx1L0l6VnYwMHVyVldObVBT?= =?utf-8?Q?JfLSj7FbCt14F6Am4PDfA9rQYwmwuuTRmbUGB7c?= 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: BYAPR12MB4983.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b0928997-15de-43ab-4bb4-08d8fe4b894b X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Apr 2021 07:12:45.0891 (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: ndecCnPi5FPNOZvgPIX+VUamk160wjNEwkoWHGVwJXKV2XfoGOmEvfw5aNjKdu/zZxAjxU6Xt+1OQ5x3TLkLFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB2647 Subject: Re: [dpdk-dev] [PATCH v2 1/2] ethdev: add packet integrity checks 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 Sender: "dev" SGkgRmVycnVoLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEZlcnJ1 aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2 MiAxLzJdIGV0aGRldjogYWRkIHBhY2tldCBpbnRlZ3JpdHkgY2hlY2tzDQo+IA0KPiBPbiA0LzEy LzIwMjEgODoyNiBQTSwgT3JpIEthbSB3cm90ZToNCj4gPiBIaSBGZXJydWgsDQo+ID4NCj4gPj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogRmVycnVoIFlpZ2l0IDxmZXJy dWgueWlnaXRAaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDEvMl0gZXRo ZGV2OiBhZGQgcGFja2V0IGludGVncml0eSBjaGVja3MNCj4gPj4NCj4gPj4gT24gNC8xMS8yMDIx IDY6MzQgUE0sIEdyZWdvcnkgRXRlbHNvbiB3cm90ZToNCj4gPj4+IEZyb206IE9yaSBLYW0gPG9y aWthQG52aWRpYS5jb20+DQo+ID4+Pg0KPiA+Pj4gQ3VycmVudGx5LCBEUERLIGFwcGxpY2F0aW9u IGNhbiBvZmZsb2FkIHRoZSBjaGVja3N1bSBjaGVjaywNCj4gPj4+IGFuZCByZXBvcnQgaXQgaW4g dGhlIG1idWYuDQo+ID4+Pg0KPiA+Pj4gSG93ZXZlciwgYXMgbW9yZSBhbmQgbW9yZSBhcHBsaWNh dGlvbnMgYXJlIG9mZmxvYWRpbmcgc29tZSBvciBhbGwNCj4gPj4+IGxvZ2ljIGFuZCBhY3Rpb24g dG8gdGhlIEhXLCB0aGVyZSBpcyBhIG5lZWQgdG8gY2hlY2sgdGhlIHBhY2tldA0KPiA+Pj4gaW50 ZWdyaXR5IHNvIHRoZSByaWdodCBkZWNpc2lvbiBjYW4gYmUgdGFrZW4uDQo+ID4+Pg0KPiA+Pj4g VGhlIGFwcGxpY2F0aW9uIGxvZ2ljIGNhbiBiZSBwb3NpdGl2ZSBtZWFuaW5nIGlmIHRoZSBwYWNr ZXQgaXMNCj4gPj4+IHZhbGlkIGp1bXAgLyBkbyAgYWN0aW9ucywgb3IgbmVnYXRpdmUgaWYgcGFj a2V0IGlzIG5vdCB2YWxpZA0KPiA+Pj4ganVtcCB0byBTVyAvIGRvIGFjdGlvbnMgKGxpa2UgZHJv cCkgIGEsIGFuZCBhZGQgZGVmYXVsdCBmbG93DQo+ID4+PiAobWF0Y2ggYWxsIGluIGxvdyBwcmlv cml0eSkgdGhhdCB3aWxsIGRpcmVjdCB0aGUgbWlzcyBwYWNrZXQNCj4gPj4+IHRvIHRoZSBtaXNz IHBhdGguDQo+ID4+Pg0KPiA+Pj4gU2luY2UgY3VycmVubHR5IHJ0ZV9mbG93IHdvcmtzIGluIHBv c2l0aXZlIHdheSB0aGUgYXNzdW10aW9uIGlzDQo+ID4+PiB0aGF0IHRoZSBwb3N0aXZlIHdheSB3 aWxsIGJlIHRoZSBjb21tb24gd2F5IGluIHRoaXMgY2FzZSBhbHNvLg0KPiA+Pj4NCj4gPj4+IFdo ZW4gdGhpbmtpbmcgd2hhdCBpcyB0aGUgYmVzdCBBUEkgdG8gaW1wbGVtZW50IHN1Y2ggZmVhdHVy ZSwNCj4gPj4+IHdlIG5lZWQgdG8gY29uc2lkdXJlIHRoZSBmb2xsb3dpbmcgKGluIG5vIHNwZWNp ZmljIG9yZGVyKToNCj4gPj4+IDEuIEFQSSBicmVha2FnZS4NCj4gPj4+IDIuIFNpbXBsaWNpdHku DQo+ID4+PiAzLiBQZXJmb3JtYW5jZS4NCj4gPj4+IDQuIEhXIGNhcGFiaWxpdGllcy4NCj4gPj4+ IDUuIHJ0ZV9mbG93IGxpbWl0YXRpb24uDQo+ID4+PiA2LiBGbGV4YWJpbGl0eS4NCj4gPj4+DQo+ ID4+PiBGaXJzdCBvcHRpb246IEFkZCBpbnRlZ3JpdHkgZmxhZ3MgdG8gZWFjaCBvZiB0aGUgaXRl bXMuDQo+ID4+PiBGb3IgZXhhbXBsZSBhZGQgY2hlY2tzdW1fb2sgdG8gaXB2NCBpdGVtLg0KPiA+ Pj4NCj4gPj4+IFByb3M6DQo+ID4+PiAxLiBObyBuZXcgcnRlX2Zsb3cgaXRlbS4NCj4gPj4+IDIu IFNpbXBsZSBpbiB0aGUgd2F5IHRoYXQgb24gZWFjaCBpdGVtIHRoZSBhcHAgY2FuIHNlZQ0KPiA+ Pj4gd2hhdCBjaGVja3MgYXJlIGF2YWlsYWJsZS4NCj4gPj4+DQo+ID4+PiBDb25zOg0KPiA+Pj4g MS4gQVBJIGJyZWFrYWdlLg0KPiA+Pj4gMi4gaW5jcmVhc2UgbnVtYmVyIG9mIGZsb3dzLCBzaW5j ZSBhcHAgY2FuJ3QgYWRkIGdsb2JhbCBydWxlIGFuZA0KPiA+Pj4gICAgICBtdXN0IGhhdmUgZGVk aWNhdGVkIGZsb3cgZm9yIGVhY2ggb2YgdGhlIGZsb3cgY29tYmluYXRpb25zLCBmb3INCj4gZXhh bXBsZQ0KPiA+Pj4gICAgICBtYXRjaGluZyBvbiBpY21wIHRyYWZmaWMgb3IgVURQL1RDUCAgdHJh ZmZpYyB3aXRoIElQdjQgLyBJUHY2IHdpbGwNCj4gPj4+ICAgICAgcmVzdWx0IGluIDUgZmxvd3Mu DQo+ID4+Pg0KPiA+Pj4gU2Vjb25kIG9wdGlvbjogZGVkaWNhdGVkIGl0ZW0NCj4gPj4+DQo+ID4+ PiBQcm9zOg0KPiA+Pj4gMS4gTm8gQVBJIGJyZWFrYWdlLCBhbmQgdGhlcmUgd2lsbCBiZSBubyBm b3Igc29tZSB0aW1lIGR1ZSB0byBoYXZpbmcNCj4gPj4+ICAgICAgZXh0cmEgc3BhY2UuIChieSB1 c2luZyBiaXRzKQ0KPiA+Pj4gMi4gSnVzdCBvbmUgZmxvdyB0byBzdXBwb3J0IHRoZSBpY21wIG9y IFVEUC9UQ1AgdHJhZmZpYyB3aXRoIElQdjQgLw0KPiA+Pj4gICAgICBJUHY2Lg0KPiA+Pj4gMy4g U2ltcGxpY2l0eSBhcHBsaWNhdGlvbiBjYW4ganVzdCBsb29rIGF0IG9uZSBwbGFjZSB0byBzZWUg YWxsIHBvc3NpYmxlDQo+ID4+PiAgICAgIGNoZWNrcy4NCj4gPj4+IDQuIEFsbG93IGZ1dHVyZSBz dXBwb3J0IGZvciBtb3JlIHRlc3RzLg0KPiA+Pj4NCj4gPj4+IENvbnM6DQo+ID4+PiAxLiBOZXcg aXRlbSwgdGhhdCBob2xkcyBudW1iZXIgb2YgZmllbGRzIGZyb20gZGlmZmVyZW50IGl0ZW1zLg0K PiA+Pj4NCj4gPj4+IEZvciBzdGFydGVyIHRoZSBmb2xsb3dpbmcgYml0cyBhcmUgc3VnZ2VzdGVk Og0KPiA+Pj4gMS4gcGFja2V0X29rIC0gbWVhbnMgdGhhdCBhbGwgSFcgY2hlY2tzIGRlcGVuZGlu ZyBvbiBwYWNrZXQgbGF5ZXIgaGF2ZQ0KPiA+Pj4gICAgICBwYXNzZWQuIFRoaXMgbWF5IG1lYW4g dGhhdCBpbiBzb21lIEhXIHN1Y2ggZmxvdyBzaG91bGQgYmUgc3BsaXRlZCB0bw0KPiA+Pj4gICAg ICBudW1iZXIgb2YgZmxvd3Mgb3IgZmFpbC4NCj4gPj4+IDIuIGwyX29rIC0gYWxsIGNoZWNrIGZs b3IgbGF5ZXIgMiBoYXZlIHBhc3NlZC4NCj4gPj4+IDMuIGwzX29rIC0gYWxsIGNoZWNrIGZsb3Ig bGF5ZXIgMiBoYXZlIHBhc3NlZC4gSWYgcGFja2V0IGRvZW5zJ3QgaGF2ZQ0KPiA+Pj4gICAgICBs MyBsYXllciB0aGlzIGNoZWNrIHNob3VkbCBmYWlsLg0KPiA+Pj4gNC4gbDRfb2sgLSBhbGwgY2hl Y2sgZmxvciBsYXllciAyIGhhdmUgcGFzc2VkLiBJZiBwYWNrZXQgZG9lc24ndA0KPiA+Pj4gICAg ICBoYXZlIGw0IGxheWVyIHRoaXMgY2hlY2sgc2hvdWxkIGZhaWwuDQo+ID4+PiA1LiBsMl9jcmNf b2sgLSB0aGUgbGF5ZXIgMiBjcmMgaXMgTy5LLiBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBjcmMg d2lsbA0KPiA+Pj4gICAgICBiZSBPLksuIGJ1dCB0aGUgbDNfb2sgd2lsbCBiZSAwLiBpdCBpcyBu b3QgcG9zc2libGUgdGhhdCBsMl9jcmNfb2sgd2lsbA0KPiA+Pj4gICAgICBiZSAwIGFuZCB0aGUg bDNfb2sgd2lsbCBiZSAwLg0KPiA+Pj4gNi4gaXB2NF9jc3VtX29rIC0gSVB2NCBjaGVja3N1bSBp cyBPLksuDQo+ID4+PiA3LiBsNF9jc3VtX29rIC0gbGF5ZXIgNCBjaGVja3N1bSBpcyBPLksuDQo+ ID4+PiA4LiBsM19sZW5fT0sgLSBjaGVjayB0aGF0IHRoZSByZXBvcnRlZCBsYXllciAzIGxlbiBp cyBzbWFsbGVyIHRoYW4gdGhlDQo+ID4+PiAgICAgIHBhY2tldCBsZW4uDQo+ID4+Pg0KPiA+Pj4g RXhhbXBsZSBvZiB1c2FnZToNCj4gPj4+IDEuIGNoZWNrIHBhY2tldHMgZnJvbSBhbGwgcG9zc2li bGUgbGF5ZXJzIGZvciBpbnRlZ3JpdHkuDQo+ID4+PiAgICAgIGZsb3cgY3JlYXRlIGludGVncml0 eSBzcGVjIHBhY2tldF9vayA9IDEgbWFzayBwYWNrZXRfb2sgPSAxIC4uLi4uDQo+ID4+Pg0KPiA+ Pj4gMi4gQ2hlY2sgb25seSBwYWNrZXQgd2l0aCBsYXllciA0IChVRFAgLyBUQ1ApDQo+ID4+PiAg ICAgIGZsb3cgY3JlYXRlIGludGVncml0eSBzcGVjIGwzX29rID0gMSwgbDRfb2sgPSAxIG1hc2sg bDNfb2sgPSAxIGw0X29rID0gMQ0KPiA+Pj4NCj4gPj4NCj4gPj4gSGkgT3JpLA0KPiA+Pg0KPiA+ PiBJcyB0aGUgaW50ZW50aW9uIG9mIHRoZSBBUEkganVzdCBmaWx0ZXJpbmcsIGxpa2UgYXBwbHkg c29tZSBhY3Rpb24gdG8gdGhlDQo+ID4+IHBhY2tldHMgYmFzZWQgb24gdGhlaXIgaW50ZWdyYXRp b24gc3RhdHVzLiBMaWtlIGRyb3AgcGFja2V0cyB0aGVpciBsMl9jcmMNCj4gPj4gY2hlY2tzdW0g ZmFpbGVkPyBIZXJlIGNvbmZpZ3VyYXRpb24gaXMgZG9uZSBieSBleGlzdGluZyBvZmZsb2FkIEFQ SXMuDQo+ID4+DQo+ID4+IE9yIGlzIHRoZSBpbnRlbnRpb24gdG8gY29uZmlndXJlIHRoZSBpbnRl Z3JhdGlvbiBjaGVjayBvbiBOSUMsIGxpa2UgdG8gc2F5DQo+ID4+IGVuYWJsZSBsYXllciAyIGNo ZWNrcywgYW5kIGRvIHRoZSBhY3Rpb24gYmFzZWQgb24gaW50ZWdyYXRpb24gY2hlY2sgc3RhdHVz Lg0KPiA+Pg0KPiA+IElmIEkgdW5kZXJzdGFuZCB5b3VyIHF1ZXN0aW9uIHRoZSBmaXJzdCBjYXNl IGlzIHRoZSBvbmUgdGhhdCB0aGlzIHBhdGNoIGlzDQo+IHRhcmdldGluZy4NCj4gPiBtZWFuaW5n IGJhc2VkIG9uIHRob3NlIGJpdHMgcm91dGUvYXBwbHkgYWN0aW9ucyB0byB0aGUgcGFja2V0IHdo aWxlIHN0aWxsIGluDQo+IHRoZQ0KPiA+IEhXLg0KPiA+DQo+ID4gVGhpcyBpcyBub3QgZGVzaWdu IHRvIGVuYWJsZSB0aGUgcXVldWUgc3RhdHVzIGJpdHMuDQo+ID4gSW4gdGhlIHVzZSBjYXNlIHN1 Z2dlc3Rpb24gYnkgdGhpcyBwYXRjaCwganVzdCBsaWtlIHlvdSBzYWlkIHRoZSBhcHANCj4gPiBj YW4gZGVjaWRlIHRvIGRyb3AgdGhlIHBhY2tldCBiZWZvcmUgYXJyaXZpbmcgdG8gdGhlIHF1ZXVl LCBhcHBsaWNhdGlvbiBtYXkNCj4gYWxzbw0KPiA+IHVzZSB0aGUgbWFyayArIHF1ZXVlIGFjdGlv biB0byBtYXJrIHRvIHRoZSBTVyB3aGF0IGlzIHRoZSBpc3N1ZSB3aXRoIHRoaXMNCj4gcGFja2V0 Lg0KPiA+DQo+ID4gSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB5b3VyIGNvbW1lbnQgYWJvdXQg ImhlcmUgY29uZmlndXJhdGlvbiBpcyBkb25lIGJ5DQo+IGV4aXN0aW5nDQo+ID4gb2ZmbG9hZCBB UEkiIGRvIHlvdSBtZWFuIGxpa2UgdGhlIGRyb3AgLyAganVtcCB0byB0YWJsZSAvIGFueSBvdGhl ciBydGVfZmxvdw0KPiBhY3Rpb24/DQo+ID4NCj4gPg0KPiANCj4gSSBhbSBhc2tpbmcgYmVjYXVz ZSBkaWZmZXJlbmNlIGJldHdlZW4gZGV2aWNlIGNvbmZpZ3VyYXRpb24gYW5kIHBhY2tldA0KPiBm aWx0ZXJpbmcNCj4gc2VlbXMgZ2V0dGluZyBtb3JlIGJsdXJyZWQgaW4gdGhlIGZsb3cgQVBJLg0K PiANCj4gQ3VycmVudGx5IEw0IGNoZWNrc3VtIG9mZmxvYWQgaXMgcmVxdWVzdGVkIGJ5IGFwcGxp Y2F0aW9uIHZpYSBzZXR0aW5nDQo+ICdERVZfUlhfT0ZGTE9BRF9UQ1BfQ0tTVU0nIChVRFAvU0NU UC8uLi4pIG9mZmxvYWQgZmxhZ3MuIFRoaXMgaXMgdGhlIHdheQ0KPiB0bw0KPiBjb25maWd1cmUg SFcuDQo+IA0KPiBJcyB0aGUgaW50ZW50aW9uIG9mIHRoaXMgcGF0Y2ggZG9pbmcgcGFja2V0IGZp bHRlcmluZyBhZnRlciBkZXZpY2UgY29uZmlndXJlZA0KPiB3aXRoIGFib3ZlIG9mZmxvYWQgQVBJ Pw0KPiANCj4gT3IgaXMgdGhlIGludGVudGlvbiBIVyB0byBiZSBjb25maWd1cmVkIHZpYSBmbG93 IEFQSSwgbGlrZSBpZiAibDRfb2sgPSAxIiBpcyBzZXQNCj4gaW4gdGhlIHJ1bGUsIHdpbGwgaXQg ZW5hYmxlIEw0IGNoZWNrcyBmaXJzdCBhbmQgZG8gdGhlIGZpbHRlcmluZyBsYXRlcj8NCj4NCj4g SWYgbm90IHdoYXQgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gaW50ZWdyYXRpb24gY2hl Y2tzIGFyZSBub3QgZW5hYmxlZA0KPiB3aGVuIHRoZSBydWxlIGlzIGNyZWF0ZWQ/DQo+IA0KDQpM ZXQgbWUgdHJ5IHRvIGV4cGxhaW4gaXQgaW4gYSBkaWZmZXJlbnQgd2F5Og0KV2hlbiBhcHBsaWNh dGlvbiBlbmFibGVzICdERVZfUlhfT0ZGTE9BRF9UQ1BfQ0tTVU0nIChVRFAvU0NUUC8uLi4pIG9m ZmxvYWQgZmxhZ3MNCkl0IG9ubHkgbWVhbnMgdGhhdCB0aGUgSFcgd2lsbCByZXBvcnQgdGhlIGNo ZWNrc3VtIGluIHRoZSBtYnVmLg0KTGV0cyBjYWxsIHRoaXMgbW9kZSBSWCBxdWV1ZSBvZmZsb2Fk Lg0KDQpOb3cgSSdtIGludHJvZHVjaW5nIHJ0ZV9mbG93IG9mZmxvYWQsDQpUaGlzIG1lYW5zIHRo YXQgdGhlIGFwcGxpY2F0aW9uIGNhbiBjcmVhdGUgcnRlX2Zsb3cgdGhhdCBtYXRjaGVzIHRob3Nl DQpiaXRzIGFuZCBiYXNlZCBvbiB0aGF0IHRha2UgZGlmZmVyZW50IGFjdGlvbnMgdGhhdCBhcmUg ZGVmaW5lZCBieSB0aGUgcnRlX2Zsb3cuDQpFeGFtcGxlIGZvciBzdWNoIGEgZmxvdw0KRmxvdyBj cmVhdGUgMCBpbmdyZXNzIHBhdHRlcm4gaW50ZWdyaXR5IHNwZWMgcGFja2V0X29rID0gMCBtYXNr IHBhY2tldF9vayA9IDEgLyBlbmQgYWN0aW9ucyBjb3VudCAvIGRyb3AgLyBlbmQNCg0KT2ZmbG9h ZGluZyBzdWNoIGEgZmxvdyB3aWxsIHJlc3VsdCB0aGF0IGFsbCBpbnZhbGlkIHBhY2tldHMgd2ls bCBiZSBjb3VudGVkIGFuZCBkcm9wcGVkLCBpbiB0aGUgSFcNCnNvIGV2ZW4gaWYgdGhlIFJYIHF1 ZXVlIG9mZmxvYWQgd2FzIGVuYWJsZWQsIG5vIGludmFsaWQgcGFja2V0cyB3aWxsIGFycml2ZSB0 byB0aGUgYXBwbGljYXRpb24uDQogDQpJbiBvdGhlciBjYXNlIGxldHMgYXNzdW1lIHRoYXQgdGhl IGFwcGxpY2F0aW9uIHdhbnRzIGFsbCB2YWxpZCBwYWNrZXRzIHRvIGp1bXAgdG8gdGhlIG5leHQg Z3JvdXAsDQphbmQgYWxsIHRoZSByZXNldCBvZiB0aGUgcGFja2V0cyB3aWxsIGdvIHRvIFNXLiAo d2UgY2FuIGFzc3VtZSB0aGF0IGxhdGVyIGluIHRoZSBwaXBlbGluZSBhbHNvIHZhbGlkIHBhY2tl dHMNCndpbGwgYXJyaXZlIHRvIHRoZSBhcHBsaWNhdGlvbikNCkZsb3cgY3JlYXRlIDAgaW5ncmVz cyBwYXR0ZXJuIGludGVncml0eSBzcGVjIHBhY2tldF9vayA9IDEgbWFzayBwYWNrZXRfb2sgPSAx IC8gZW5kIGFjdGlvbnMgIGp1bXAgZ3JvdXAgMSAvIGVuZA0KRmxvdyBjcmVhdGUgMCBwcmlvcml0 eSAxIHBhdHRlcm4gZXRoIC8gZW5kIGFjdGlvbnMgcnNzIC8gZW5kDQoNCkluIHRoaXMgY2FzZSBp ZiB0aGUgYXBwbGljYXRpb24gZW5hYmxlZCB0aGUgUlggb2ZmbG9hZCB0aGVuIGlmIHRoZSBhcHBs aWNhdGlvbiB3aWxsIHJlY2VpdmUgaW52YWxpZCBwYWNrZXQNCmFsc28gdGhlIGZsYWcgaW4gdGhl IG1idWYgd2lsbCBiZSBzZXQuDQoNCkFzIHlvdSBjYW4gc2VlIHRob3NlIHR3byBvZmZsb2FkcyBt b2RlIGFyZSBjb21wbGVtZW50YXJ5IHRvIGVhY2ggb3RoZXIgYW5kIG9uZSBkb2Vzbid0IGZvcmNl IHRoZSBvdGhlciBvbmUgaW4gYW55IA0Kd2F5Lg0KDQpJIGhvcGUgdGhpcyBpcyBjbGVhcmVyLg0K DQoNCj4gPj4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IE9yaSBLYW0gPG9yaWthQG52aWRpYS5jb20+ DQo+ID4+PiAtLS0NCj4gPj4+IHYyOiBmaXggY29tcGlsYXRpb24gZXJyb3INCj4gPj4+IC0tLQ0K PiA+Pj4gICAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdCB8IDE5ICsrKysrKysr KysrKw0KPiA+Pj4gICAgbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaCAgICAgICB8IDQ3DQo+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+Pj4gICAgMiBmaWxlcyBjaGFuZ2Vk LCA2NiBpbnNlcnRpb25zKCspDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMv cHJvZ19ndWlkZS9ydGVfZmxvdy5yc3QNCj4gPj4gYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRl X2Zsb3cucnN0DQo+ID4+PiBpbmRleCBlMWI5M2VjZWRmLi44N2VmNTkxNDA1IDEwMDY0NA0KPiA+ Pj4gLS0tIGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdA0KPiA+Pj4gKysrIGIv ZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdA0KPiA+Pj4gQEAgLTEzOTgsNiArMTM5 OCwyNSBAQCBNYXRjaGVzIGEgZUNQUkkgaGVhZGVyLg0KPiA+Pj4gICAgLSBgYGhkcmBgOiBlQ1BS SSBoZWFkZXIgZGVmaW5pdGlvbiAoYGBydGVfZWNwcmkuaGBgKS4NCj4gPj4+ICAgIC0gRGVmYXVs dCBgYG1hc2tgYCBtYXRjaGVzIG5vdGhpbmcsIGZvciBhbGwgZUNQUkkgbWVzc2FnZXMuDQo+ID4+ Pg0KPiA+Pj4gK0l0ZW06IGBgUEFDS0VUX0lOVEVHUklUWV9DSEVDS1NgYA0KPiA+Pj4gK15eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXg0KPiA+Pj4gKw0KPiA+Pj4gK01hdGNoZXMgcGFj a2V0IGludGVncml0eS4NCj4gPj4+ICsNCj4gPj4+ICstIGBgbGV2ZWxgYDogdGhlIGVuY2Fwc3Vs YXRpb24gbGV2ZWwgdGhhdCBzaG91bGQgYmUgY2hlY2tlZC4gbGV2ZWwgMCBtZWFucw0KPiB0aGUN Cj4gPj4+ICsgIGRlZmF1bHQgUE1EIG1vZGUgKENhbiBiZSBpbm5lciBtb3N0IC8gb3V0ZXJtb3N0 KS4gdmFsdWUgb2YgMSBtZWFucw0KPiA+PiBvdXRlcm1vc3QNCj4gPj4+ICsgIGFuZCBoaWdoZXIg dmFsdWUgbWVhbnMgaW5uZXIgaGVhZGVyLiBTZWUgYWxzbyBSU1MgbGV2ZWwuDQo+ID4+PiArLSBg YHBhY2tldF9va2BgOiBBbGwgSFcgcGFja2V0IGludGVncml0eSBjaGVja3MgaGF2ZSBwYXNzZWQg YmFzZWQgb24gdGhlDQo+ID4+IG1heA0KPiA+Pj4gKyAgbGF5ZXIgb2YgdGhlIHBhY2tldC4NCj4g Pj4+ICsgIGxheWVyIG9mIHRoZSBwYWNrZXQuDQo+ID4+PiArLSBgYGwyX29rYGA6IGFsbCBsYXll ciAyIEhXIGludGVncml0eSBjaGVja3MgcGFzc2VkLg0KPiA+Pj4gKy0gYGBsM19va2BgOiBhbGwg bGF5ZXIgMyBIVyBpbnRlZ3JpdHkgY2hlY2tzIHBhc3NlZC4NCj4gPj4+ICstIGBgbDRfb2tgYDog YWxsIGxheWVyIDMgSFcgaW50ZWdyaXR5IGNoZWNrcyBwYXNzZWQuDQo+ID4+DQo+ID4+IHMvbGF5 ZXIgMy8gbGF5ZXIgNC8NCj4gPj4NCj4gPiBXaWxsIGZpeC4NCj4gPg0KPiA+Pj4gKy0gYGBsMl9j cmNfb2tgYDogbGF5ZXIgMiBjcmMgY2hlY2sgcGFzc2VkLg0KPiA+Pj4gKy0gYGBpcHY0X2NzdW1f b2tgYDogaXB2NCBjaGVja3N1bSBjaGVjayBwYXNzZWQuDQo+ID4+PiArLSBgYGw0X2NzdW1fb2tg YDogbGF5ZXIgNCBjaGVja3N1bSBjaGVjayBwYXNzZWQuDQo+ID4+PiArLSBgYGwzX2xlbl9va2Bg OiB0aGUgbGF5ZXIgMyBsZW4gaXMgc21hbGxlciB0aGFuIHRoZSBwYWNrZXQgbGVuLg0KPiA+Pj4g Kw0KPiA+Pj4gICAgQWN0aW9ucw0KPiA+Pj4gICAgfn5+fn5+fg0KPiA+Pj4NCj4gPj4+IGRpZmYg LS1naXQgYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxvdy5oIGIvbGliL2xpYnJ0ZV9ldGhkZXYv cnRlX2Zsb3cuaA0KPiA+Pj4gaW5kZXggNmNjNTcxMzZhYy4uNzc0NzFhZjJjNCAxMDA2NDQNCj4g Pj4+IC0tLSBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93LmgNCj4gPj4+ICsrKyBiL2xpYi9s aWJydGVfZXRoZGV2L3J0ZV9mbG93LmgNCj4gPj4+IEBAIC01NTEsNiArNTUxLDE1IEBAIGVudW0g cnRlX2Zsb3dfaXRlbV90eXBlIHsNCj4gPj4+ICAgIAkgKiBTZWUgc3RydWN0IHJ0ZV9mbG93X2l0 ZW1fZ2VuZXZlX29wdA0KPiA+Pj4gICAgCSAqLw0KPiA+Pj4gICAgCVJURV9GTE9XX0lURU1fVFlQ RV9HRU5FVkVfT1BULA0KPiA+Pj4gKw0KPiA+Pj4gKwkvKioNCj4gPj4+ICsJICogW01FVEFdDQo+ ID4+PiArCSAqDQo+ID4+PiArCSAqIE1hdGNoZXMgb24gcGFja2V0IGludGVncml0eS4NCj4gPj4+ ICsJICoNCj4gPj4+ICsJICogU2VlIHN0cnVjdCBydGVfZmxvd19pdGVtX2ludGVncml0eS4NCj4g Pj4+ICsJICovDQo+ID4+PiArCVJURV9GTE9XX0lURU1fVFlQRV9JTlRFR1JJVFksDQo+ID4+PiAg ICB9Ow0KPiA+Pj4NCj4gPj4+ICAgIC8qKg0KPiA+Pj4gQEAgLTE2ODUsNiArMTY5NCw0NCBAQCBy dGVfZmxvd19pdGVtX2dlbmV2ZV9vcHRfbWFzayA9IHsNCj4gPj4+ICAgIH07DQo+ID4+PiAgICAj ZW5kaWYNCj4gPj4+DQo+ID4+PiArX19leHRlbnNpb25fXw0KPiA+Pj4gK3N0cnVjdCBydGVfZmxv d19pdGVtX2ludGVncml0eSB7DQo+ID4+PiArCXVpbnQzMl90IGxldmVsOw0KPiA+Pj4gKwkvKio8 IFBhY2tldCBlbmNhcHN1bGF0aW9uIGxldmVsIHRoZSBpdGVtIHNob3VsZCBhcHBseSB0by4NCj4g Pj4+ICsJICogQHNlZSBydGVfZmxvd19hY3Rpb25fcnNzDQo+ID4+PiArCSAqLw0KPiA+Pj4gKwl1 bmlvbiB7DQo+ID4+PiArCQlzdHJ1Y3Qgew0KPiA+Pj4gKwkJCXVpbnQ2NF90IHBhY2tldF9vazox Ow0KPiA+Pj4gKwkJCS8qKiBUaGUgcGFja2V0IGlzIHZhbGlkIGFmdGVyIHBhc3NpbmcgYWxsIEhX IGNoZWNrcy4gKi8NCj4gPj4+ICsJCQl1aW50NjRfdCBsMl9vazoxOw0KPiA+Pj4gKwkJCS8qKjwg TDIgbGF5ZXIgaXMgdmFsaWQgYWZ0ZXIgcGFzc2luZyBhbGwgSFcgY2hlY2tzLiAqLw0KPiA+Pj4g KwkJCXVpbnQ2NF90IGwzX29rOjE7DQo+ID4+PiArCQkJLyoqPCBMMyBsYXllciBpcyB2YWxpZCBh ZnRlciBwYXNzaW5nIGFsbCBIVyBjaGVja3MuICovDQo+ID4+PiArCQkJdWludDY0X3QgbDRfb2s6 MTsNCj4gPj4+ICsJCQkvKio8IEw0IGxheWVyIGlzIHZhbGlkIGFmdGVyIHBhc3NpbmcgYWxsIEhX IGNoZWNrcy4gKi8NCj4gPj4+ICsJCQl1aW50NjRfdCBsMl9jcmNfb2s6MTsNCj4gPj4+ICsJCQkv Kio8IEwyIGxheWVyIGNoZWNrc3VtIGlzIHZhbGlkLiAqLw0KPiA+Pj4gKwkJCXVpbnQ2NF90IGlw djRfY3N1bV9vazoxOw0KPiA+Pj4gKwkJCS8qKjwgTDMgbGF5ZXIgY2hlY2tzdW0gaXMgdmFsaWQu ICovDQo+ID4+PiArCQkJdWludDY0X3QgbDRfY3N1bV9vazoxOw0KPiA+Pj4gKwkJCS8qKjwgTDQg bGF5ZXIgY2hlY2tzdW0gaXMgdmFsaWQuICovDQo+ID4+PiArCQkJdWludDY0X3QgbDNfbGVuX29r OjE7DQo+ID4+PiArCQkJLyoqPCBUaGUgbDMgbGVuIGlzIHNtYWxsZXIgdGhhbiB0aGUgcGFja2V0 IGxlbi4gKi8NCj4gPj4NCj4gPj4gcGFja2V0IGxlbj8NCj4gPj4NCj4gPiBEbyB5b3UgbWVhbiBy ZXBsYWNlIHRoZSBsM19sZW5fb2sgd2l0aCBwYWNrZXQgbGVuPw0KPiANCj4gbm8sIEkgd2FzIHRy eWluZyB0byBhc2sgd2hhdCBpcyAicGFja2V0IGxlbiIgaGVyZT8gZnJhbWUgbGVuZ3RoLCBvciBt YnVmIGJ1ZmZlcg0KPiBsZW5ndGgsIG9yIHNvbWV0aGluZyBlbHNlPw0KPiANCkZyYW1lIGxlbmd0 aC4NCg0KPiA+IE15IG9ubHkgaXNzdWUgaXMgdGhhdCB0aGUgY2hlY2sgaXMgY29tcGFyaW5nIHRo ZSBsMyBsZW4gdG8gdGhlIHBhY2tldCBsZW4uDQo+ID4NCj4gPiBJZiB5b3Ugc3RpbGwgdGhpbmsg aXQgaXMgYmV0dGVyIHRvIGNhbGwgaXQgcGFja2V0IGxlbiwgSSdtIGFsc28gTy5LIHdpdGggaXQu DQo+ID4NCj4gPj4+ICsJCQl1aW50NjRfdCByZXNlcnZlZDo1NjsNCj4gPj4+ICsJCX07DQo+ID4+ PiArCQl1aW50NjRfdCAgdmFsdWU7DQo+ID4+PiArCX07DQo+ID4+PiArfTsNCj4gPj4+ICsNCj4g Pj4+ICsjaWZuZGVmIF9fY3BsdXNwbHVzDQo+ID4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBydGVf Zmxvd19pdGVtX2ludGVncml0eQ0KPiA+Pj4gK3J0ZV9mbG93X2l0ZW1faW50ZWdyaXR5X21hc2sg PSB7DQo+ID4+PiArCS5sZXZlbCA9IDAsDQo+ID4+PiArCS52YWx1ZSA9IDAsDQo+ID4+PiArfTsN Cj4gPj4+ICsjZW5kaWYNCj4gPj4+ICsNCj4gPj4+ICAgIC8qKg0KPiA+Pj4gICAgICogTWF0Y2hp bmcgcGF0dGVybiBpdGVtIGRlZmluaXRpb24uDQo+ID4+PiAgICAgKg0KPiA+Pj4NCj4gPg0KDQo=