From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C9BCDA2EDB for ; Wed, 2 Oct 2019 14:19:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D7EF31BEDA; Wed, 2 Oct 2019 14:19:05 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50058.outbound.protection.outlook.com [40.107.5.58]) by dpdk.org (Postfix) with ESMTP id 7898C1BED8 for ; Wed, 2 Oct 2019 14:19:03 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YOJJnmtRN/+wmBJvxNYgGcgzK5K23mRhQWcrrInahw8bQ9EKoPZSpN1yYDC5ELRf2YM52R9/iBIAUMCJmHuyR+850FhkJnd1XFDAFfYLrkr9H/r2Par1a0Ztvi9Fsj4k/WxzJmhogG62NvUlxrIYA5oEd6/sa3MuhnqB27XVPGcXZ1suKor/kctDaXOIyee3yb0vbnjr2T2bPP15lw+W/ekhMYpwu2u4HHrJKR2YSUKL4gq+RjtucTJgDogpxzVdGMaFexf9ZedKB3R2U2rXnSUlK9pzu5ge1Beu8kUXv3SLBAjmQ/3GaPnPbxY7dWt42otKV6pvqPOXlUweJ5/sQQ== 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=ZXjZfMa+fw2MxiRgX8Ux6m6pf6m7wCz8ZqePFSk4+YQ=; b=iBbIsGBYSA0cbnBWIvrvGH3Ii7b2Atm5V6mV67c1yPW3BWO9V9ajrZlKf8/y9PutMxHEbg2o9o76kc186vRw+opDkVOfBajO26eKke8g9A3ZJlrASwYq2LCdhTXwvkBwbZn0s1TEdypzRpHQCfKmaXjFWKOqjRQVRkneQA3p0QJJrv0bBGV9u8QuLdA7XbgMos5U7IFIcWlR3hAB3NgPQ7jQAxYZgyweTnW2nidMV0ellnE+VOF1zMsMyNhJgDyYD2cM7qRDaCRb/yR6qwChUeBV5wsz1ICGNr4y+fVNz26Omcitv33H8ZqUC/OSg9YZjsl6uQLx3odFa28eNqL8Mg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZXjZfMa+fw2MxiRgX8Ux6m6pf6m7wCz8ZqePFSk4+YQ=; b=jFXkI+u2MRuT71YBqE6K4sNtE4mr3E9NDzBNtVQIRTdZ6eKTZqyDatkl5vAlxrEsnft1fkCQa4oU6gfHNX05uxf3TzP6licnhURX9usc6OwIYky9JwujBv3KaDKZ/ZzPefvvBgtA72rlkpEpWM3uvvCrmRC+FgcPA+V6uE30w4o= Received: from AM4PR05MB3425.eurprd05.prod.outlook.com (10.171.190.15) by AM4PR05MB3250.eurprd05.prod.outlook.com (10.170.126.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.20; Wed, 2 Oct 2019 12:19:02 +0000 Received: from AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::7964:7996:4c67:ade0]) by AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::7964:7996:4c67:ade0%3]) with mapi id 15.20.2305.017; Wed, 2 Oct 2019 12:19:02 +0000 From: Ori Kam To: Andrew Rybchenko , Thomas Monjalon , Ferruh Yigit CC: "dev@dpdk.org" , "jingjing.wu@intel.com" , "stephen@networkplumber.org" Thread-Topic: [dpdk-dev] [PATCH 01/13] ethdev: support setup function for hairpin queue Thread-Index: AQHVdI9BkWYJ+mlzFEWqs6ph9WFTv6dBLuFAgAFl4YCABLQDIA== Date: Wed, 2 Oct 2019 12:19:02 +0000 Message-ID: References: <1569479349-36962-1-git-send-email-orika@mellanox.com> <1569479349-36962-2-git-send-email-orika@mellanox.com> <4c7da322-ea96-9649-b6cc-aad3a21df57a@solarflare.com> <87d7bb44-0537-3927-3276-e15743654268@solarflare.com> In-Reply-To: <87d7bb44-0537-3927-3276-e15743654268@solarflare.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=orika@mellanox.com; x-originating-ip: [185.175.35.255] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c8136842-0b39-4ab7-a17f-08d74732b5f1 x-ms-office365-filtering-ht: Tenant x-ms-traffictypediagnostic: AM4PR05MB3250: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0178184651 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(346002)(136003)(366004)(396003)(39860400002)(13464003)(189003)(51444003)(52314003)(199004)(26005)(52536014)(6246003)(7736002)(110136005)(33656002)(478600001)(8676002)(66446008)(66066001)(54906003)(5660300002)(9686003)(3846002)(305945005)(74316002)(186003)(71200400001)(71190400001)(4326008)(2906002)(102836004)(76116006)(476003)(256004)(486006)(66946007)(66556008)(66476007)(11346002)(6436002)(25786009)(53546011)(6116002)(446003)(30864003)(64756008)(316002)(8936002)(14454004)(229853002)(6506007)(86362001)(81166006)(81156014)(99286004)(7696005)(76176011)(55016002)(14444005); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3250; H:AM4PR05MB3425.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dQYNNiuD8eJv7ICi/Hdpe02C+WTbkjN7SeUN/X978vX6bB5NmxNUcJvQGPkGz6QrMu/2lCyqlx79CrzVnzmFi1t5cVqX9wz3FAc9ZaCC8btOdo/I61u+uHT/moKkB2jd/T+fe6KOsYpLeiGCgIZ52aW7+HgTEBWaqA8YEl+n9cOtv866ZM1h43OZobEfwIv6Jt6g0aegtZad2cHNFMsA0RlU23NScnj7KtEQgYayrfOk5UvQueMyJQ4Ffkloc1dapb8q5wczBupq2uqCmgLNYsSOcQ0DytVcCZDukEHHkVM/b0F+0jZ9n4g+dYn5+N9wSlaFWe6zX71r80SRpNfSxWCoZYQREdGudedovy36u6iMzrfguKSpbVeZ/dZ7+Pc2/Zps8V56LE5HyK09TRISu4yHgy1TrG2ktYKvd5RB9bA= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: c8136842-0b39-4ab7-a17f-08d74732b5f1 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Oct 2019 12:19:02.1523 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2xERvyHSErpKgWu6xEAU22FdXNdadhm8Pr/WCBuasWmgovC3vZ8KeVp05wXHHlzAXmSgIXUz0FPpsEUcYlDfIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3250 Subject: Re: [dpdk-dev] [PATCH 01/13] ethdev: support setup function for hairpin queue X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" SGkgQW5kcmV3LA0KDQpTb3JyeSBpdCB0b29rIG1lIHNvbWUgdGltZSB0byByZXNwb25kZWQsIChJ J20gb24gdmFjYXRpb24g8J+YiikNCkkgdGhpbmsgd2UgYXJlIGluIG1vc3QgY2FzZXMgaW4gYWdy ZWVtZW50LiBUaGUgb25seSBvcGVuIGlzc3VlIGlzIHRoZSANCmNoZWNrcyBzbyBwbGVhc2Ugc2Vl IG15IGNvbW1lbnRzIGJlbG93Lg0KQXMgc29vbiBhcyB3ZSBnZXQgdG8gdW5kZXJzdGFuZGluZyBh Ym91dCB0aGlzIGlzc3VlLCBJIHdpbGwgc3RhcnQgd29ya2luZyBvbiBWMi4NCg0KVGhhbmtzLA0K T3JpDQogDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJldyBSeWJj aGVua28gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+DQo+IFNlbnQ6IFN1bmRheSwgU2VwdGVt YmVyIDI5LCAyMDE5IDM6MTEgUE0NCj4gVG86IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT47 IFRob21hcyBNb25qYWxvbg0KPiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IEZlcnJ1aCBZaWdpdCA8 ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9yZzsgamluZ2ppbmcud3VA aW50ZWwuY29tOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZw0KPiBTdWJqZWN0OiBSZTogW2Rw ZGstZGV2XSBbUEFUQ0ggMDEvMTNdIGV0aGRldjogc3VwcG9ydCBzZXR1cCBmdW5jdGlvbiBmb3IN Cj4gaGFpcnBpbiBxdWV1ZQ0KPiANCj4gSGkgT3JpLA0KPiANCj4gT24gOS8yOC8xOSA2OjE5IFBN LCBPcmkgS2FtIHdyb3RlOg0KPiA+IEhpIEFuZHJldy4NCj4gPiBQU0INCj4gPg0KPiA+PiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBBbmRyZXcgUnliY2hlbmtvIDxhcnli Y2hlbmtvQHNvbGFyZmxhcmUuY29tPg0KPiA+PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDI2 LCAyMDE5IDg6MjQgUE0NCj4gPj4gVG86IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT47IFRo b21hcyBNb25qYWxvbg0KPiA+PiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IEZlcnJ1aCBZaWdpdCA8 ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gPj4gQ2M6IGRldkBkcGRrLm9yZzsgamluZ2ppbmcu d3VAaW50ZWwuY29tOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZw0KPiA+PiBTdWJqZWN0OiBS ZTogW2RwZGstZGV2XSBbUEFUQ0ggMDEvMTNdIGV0aGRldjogc3VwcG9ydCBzZXR1cCBmdW5jdGlv biBmb3INCj4gPj4gaGFpcnBpbiBxdWV1ZQ0KPiA+Pg0KPiA+PiBPbiA5LzI2LzE5IDY6NTggUE0s IE9yaSBLYW0gd3JvdGU6DQo+ID4+PiBIaSBBbmRyZXcsDQo+ID4+PiBUaGFua3MgZm9yIHlvdXIg Y29tbWVudHMgUFNCLg0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+Pj4+IEZyb206IEFuZHJldyBSeWJjaGVua28gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+ DQo+ID4+Pj4gT24gOS8yNi8xOSA5OjI4IEFNLCBPcmkgS2FtIHdyb3RlOg0KPiA+Pj4+PiBUaGlz IGNvbW1pdCBpbnRyb2R1Y2UgdGhlIFJYL1RYIGhhaXJwaW4gc2V0dXAgZnVuY3Rpb24uDQo+ID4+ Pj4+IFJYL1RYIHNob3VsZCBiZSBSeC9UeCBoZXJlIGFuZCBldmVyeXdoZXJlIGJlbG93Lg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBIYWlycGluIGlzIFJYL1RYIHF1ZXVlIHRoYXQgaXMgdXNlZCBieSB0aGUg bmljIGluIG9yZGVyIHRvIG9mZmxvYWQNCj4gPj4+Pj4gd2lyZSB0byB3aXJlIHRyYWZmaWMuDQo+ ID4+Pj4+DQo+ID4+Pj4+IEVhY2ggaGFpcnBpbiBxdWV1ZSBpcyBiaW5kZWQgdG8gb25lIG9yIG1v cmUgcXVldWVzIGZyb20gb3RoZXIgdHlwZS4NCj4gPj4+Pj4gRm9yIGV4YW1wbGUgVFggaGFpcnBp biBxdWV1ZSBzaG91bGQgYmUgYmluZGVkIHRvIGF0IGxlYXN0IDEgUlggaGFpcnBpbg0KPiA+Pj4+ PiBxdWV1ZSBhbmQgdmljZSB2ZXJzYS4NCj4gPj4+PiBIb3cgc2hvdWxkIGFwcGxpY2F0aW9uIGZp bmQgb3V0IHRoYXQgaGFpcnBpbiBxdWV1ZXMgYXJlIHN1cHBvcnRlZD8NCj4gPj4+IEl0IHNob3Vs ZCBiZSBzdGF0ZWQgaW4gdGhlIHJlbGVhc2Ugbm90ZSBvZiB0aGUgRFBESywgd2hlbiBtYW51ZmFj dHVyZQ0KPiBhZGRzDQo+ID4+IHN1cHBvcnQgZm9yIHRoaXMuDQo+ID4+PiBJbiBhZGRpdGlvbiBp ZiB0aGUgYXBwbGljYXRpb24gdHJ5IHRvIHNldCBoYWlycGluIHF1ZXVlIGFuZCBpdCBmYWlscyBp dCBjYW4NCj4gbWVhbg0KPiA+PiBkZXBlbmRpbmcgb24gdGhlDQo+ID4+PiBlcnJvciB0aGF0IHRo ZSBoYWlycGluIGlzIG5vdCBzdXBwb3J0ZWQuDQo+ID4+IEknbSB0YWxraW5nIGFib3V0IGRldl9p bmZvLWxpa2UgaW5mb3JtYXRpb24uIERvY3VtZW50YXRpb24gaXMgbmljZSwgYnV0DQo+ID4+IGl0 IGlzIG5vdA0KPiA+PiB2ZXJ5IHVzZWZ1bCB0byBpbXBsZW1lbnQgYXBwbGljYXRpb24gd2hpY2gg d29ya3Mgd2l0aCBOSUNzIGZyb20NCj4gPj4gZGlmZmVyZW50IHZlbmRvcnMuDQo+ID4+DQo+ID4g V2hhdCBpZiB3ZSBhZGQgZ2V0IGhhaXJwaW4gY2FwYWJpbGl0aWVzIGZ1bmN0aW9uLg0KPiA+IFdl IGNvdWxkIGhhdmUsICB0aGUgbWF4IG51bWJlciBvZiBxdWV1ZXMsIGlmIHRoZSBuaWMgc3VwcG9y dCAxOm4gY29ubmVjdGlvbiwNCj4gPiB3aGljaCBvZmZsb2FkcyBhcmUgc3VwcG9ydGVkIGFuZCBz byBvbi4gU28gYmFzaWNhbGx5IGNyZWF0ZSBhIG5ldyBzZXQgb2YNCj4gY2FwYWJpbGl0aWVzDQo+ ID4gZm9yIGhhaXJwaW4gdGhpcyBJIHRoaW5rIHdpbGwgYWxzbyByZW1vdmUgb3RoZXIgY29uY2Vy biB0aGF0IHlvdSBoYXZlLg0KPiA+IFdoYXQgZG8geW91IHRoaW5rPw0KPiANCj4gWWVzLCBJIHRo aW5rIGFuIEFQSSB0byByZXBvcnQgY2FwYWJpbGl0aWVzIHdvdWxkIGJlIHVzZWZ1bC4NCj4gSXQg c2hvdWxkIGJlIGFsc28gdXNlZCBpbiBzZXR1cCBmdW5jdGlvbnMgaW4gb3JkZXIgdG8gZG8gY2hl Y2tzIG9uDQo+IGdlbmVyaWMgbGV2ZWwgdGhhdCBzZXR1cCByZXF1ZXN0IGlzIE9LIHZzIGNhcHMu DQo+IA0KDQpXaWxsIGJlIGluIG15IG5leHQgdmVyc2lvbi4NCg0KPiA+Pj4+IEhvdyBtYW55Pw0K PiA+Pj4gVGhlcmUgaXMgbm8gbGltaXQgdG8gdGhlIG51bWJlciBvZiBoYWlycGluIHF1ZXVlcyBm cm9tIGFwcGxpY2F0aW9uIGFsbA0KPiBxdWV1ZXMNCj4gPj4gY2FuIGJlIGhhaXJwaW4gcXVldWVz Lg0KPiA+Pg0KPiA+PiBJJ20gcHJldHR5IHN1cmUgdGhhdCBpdCBjb3VsZCBiZSB2ZW5kb3Igc3Bl Y2lmaWMuDQo+ID4+DQo+ID4gUGxlYXNlIHNlZSBteSBhbnN3ZXIgYWJvdmUuDQo+ID4NCj4gPj4+ PiBIb3cgc2hvdWxkIGFwcGxpY2F0aW9uIGZpbmQgb3V0IHdoaWNoIHBvcnRzL3F1ZXVlcyBjb3Vs ZCBiZSB1c2VkIGZvcg0KPiA+Pj4+IHBpbmluZz8NCj4gPj4+IEFsbCBwb3J0cyBhbmQgcXVldWVz IGNhbiBiZSBzdXBwb3J0ZWQsIGlmIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0IGludmFsaWQNCj4g Pj4gY29tYmluYXRpb24sIGZvciBleGFtcGxlDQo+ID4+PiBpbiBjdXJyZW50IE1lbGxhbm94IGlt cGxlbWVudGF0aW9uIGJpbmRpbmcgYmV0d2VlbiB0d28gcG9ydHMgdGhlbiB0aGUNCj4gPj4gc2V0 dXAgZnVuY3Rpb24gd2lsbCAgZmFpbC4NCj4gPj4+IElmIHlvdSB3b3VsZCBsaWtlIEkgY2FuIGFk ZCBjYXBhYmlsaXR5IGZvciB0aGlzLCBidXQgdGhlcmUgYXJlIHRvbyBtYW55DQo+IG9wdGlvbnMu DQo+ID4+IEZvciBleGFtcGxlIG51bWJlcg0KPiA+Pj4gb2YgcXVldWVzLCBiaW5kaW5nIGxpbWl0 YXRpb25zIGFsbCBvZiB0aG9zZSB3aWxsIGJlIHZlcnkgaGFyZCB0byBkZWNsYXJlLg0KPiA+Pj4N Cj4gPj4+DQo+ID4+Pj4gSXMgaGFpci1waW5uaW5nIGRvbWFpbiBvbiBkZXZpY2UgbGV2ZWwgc3Vm ZmljaWVudCB0byBleHBvc2UgbGltaXRhdGlvbnM/DQo+ID4+Pj4NCj4gPj4+IEknbSBzb3JyeSBi dXQgSSBkb27igJl0IHVuZGVyc3RhbmQgeW91ciBxdWVzdGlvbi4NCj4gPj4gSSB3YXMganVzdCB0 cnlpbmcgdG8gaW1hZ2luZSBob3cgd2UgY291bGTCoCBzYXkgdGhhdCB3ZSBjYW4gaGFpcnBpbg0K PiA+PiBvbmUgcG9ydCBSeCBxdWV1ZXMgdG8gYW5vdGhlciBwb3J0IFR4IHF1ZXVlcy4NCj4gPj4N Cj4gPiBMaWtlIEkgc3VnZ2VzdGVkIGFib3ZlIGlmIEkgd2lsbCBhZGQgYSBjYXBhYmlsaXR5IGZ1 bmN0aW9uIHdlIGNvdWxkIGhhdmUNCj4gPiBhIGZpZWxkIHRoYXQgc2F5cyBwb3J0X2Jpbmlkbmcg c3VwcG9ydGVkLCBvciBzb21ldGhpbmcgZWxzZSwgYWxvbmcgdGhpcyBsaW5lLg0KPiANCj4gTm90 IHN1cmUgdGhhdCBJIHVuZGVyc3RhbmQsIGJ1dCBJJ2xsIHRha2UgYSBsb29rIHdoZW4gc3VibWl0 dGVkLg0KPiANCg0KVGhhbmtzLg0KDQo+ID4+Pj4+IFNpZ25lZC1vZmYtYnk6IE9yaSBLYW0gPG9y aWthQG1lbGxhbm94LmNvbT4NCj4gPj4+Pj4gLS0tDQo+ID4+Pj4+ICAgICBsaWIvbGlicnRlX2V0 aGRldi9ydGVfZXRoZGV2LmMgICAgICAgICAgIHwgMjEzDQo+ID4+Pj4+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4gPj4+Pj4gICAgIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhk ZXYuaCAgICAgICAgICAgfCAxNDUgKysrKysrKysrKysrKysrKysrKysrDQo+ID4+Pj4+ICAgICBs aWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2X2NvcmUuaCAgICAgIHwgIDE4ICsrKw0KPiA+Pj4+ PiAgICAgbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldl92ZXJzaW9uLm1hcCB8ICAgNCArDQo+ ID4+Pj4+ICAgICA0IGZpbGVzIGNoYW5nZWQsIDM4MCBpbnNlcnRpb25zKCspDQo+ID4+Pj4+DQo+ ID4+Pj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+ Pj4gYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2LmMgaW5kZXggMzBiMGM3OC4uNDAyMWYz OCAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ ID4+Pj4+ICsrKyBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+Pj4+PiBAQCAt MTcwMSw2ICsxNzAxLDExNSBAQCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKg0KPiA+Pj4+PiAgICAgfQ0K PiA+Pj4+Pg0KPiA+Pj4+PiAgICAgaW50DQo+ID4+Pj4+ICtydGVfZXRoX3J4X2hhaXJwaW5fcXVl dWVfc2V0dXAodWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QNCj4gPj4+Pj4gcnhfcXVldWVfaWQs DQo+ID4+Pj4+ICsJCQkgICAgICAgdWludDE2X3QgbmJfcnhfZGVzYywgdW5zaWduZWQgaW50DQo+ IHNvY2tldF9pZCwNCj4gPj4+Pj4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeGNv bmYgKnJ4X2NvbmYsDQo+ID4+Pj4+ICsJCQkgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9ldGhfaGFp cnBpbl9jb25mDQo+ICpoYWlycGluX2NvbmYpDQo+ID4+Pj4+IEJlbG93IGNvZGUgZHVwbGljYXRl cyBydGVfZXRoX3J4X3F1ZXVlX3NldHVwKCkgYSBsb3QgYW5kIGl0IGlzIHZlcnkgYmFkDQo+ID4+ Pj4+IGZyb20gbWFpbnRlbmFuY2UgcG9pbnQgb2Ygdmlldy4gU2ltaWxhciBwcm9ibGVtIHdpdGgg VHggaGFpcnBpbiBxdWV1ZQ0KPiA+Pj4+PiBzZXR1cC4NCj4gPj4+Pj4NCj4gPj4+IEknbSBhd2Fy ZSBvZiB0aGF0LiBUaGUgcmVhc29ucyBJIGNob29zZSBpdCBhcmU6IChzYW1lIGdvZXMgdG8gVHgp DQo+ID4+PiAxLiB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gYXBwcm9hY2gsIG1lYW5pbmcgdG8gdXNl IHRoZSBjdXJyZW50ICBzZXR1cA0KPiA+PiBmdW5jdGlvbg0KPiA+Pj4gICAgICAgdGhlIGlzc3Vl cyB3aXRoIHRoaXMgYXJlOg0KPiA+Pj4gICAgICAgICogQVBJIGJyZWFrLg0KPiA+Pj4gICAgICAg ICogSXQgd2lsbCBoYXZlIGV4dHJhIHBhcmFtZXRlcnMsIGZvciBleGFtcGxlIG1lbXBvb2wgd2ls bCBub3QgYmUgdXNlZA0KPiA+Pj4gICAgICAgICAgIGZvciBoYWlycGluIGFuZCBoYWlycGluIGNv bmZpZ3VyYXRpb24gd2lsbCBub3QgYmUgdXNlZCBmb3Igbm9ybWFsDQo+IHF1ZXVlLg0KPiA+Pj4g ICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBhIHN0cnVjdCBidXQgYWdhaW4gQVBJIGJy ZWFrIGFuZCBzb21lIGZpZWxkcyBhcmUNCj4gbm90DQo+ID4+IHVzZWQuDQo+ID4+PiAgICAgICAg KiB3ZSBhcmUganVzdCBzdGFydGluZyB3aXRoIHRoZSBoYWlycGluLCBtb3N0IGxpa2VseSB0aGVy ZSB3aWxsIGJlDQo+ID4+IG1vZGlmaWNhdGlvbiBzbw0KPiA+Pj4gICAgICAgICAgICBpdCBpcyBi ZXR0ZXIgdG8gaGF2ZSBhIGRpZmZlcmVudCBmdW5jdGlvbi4NCj4gPj4+ICAgICAgICAqIEZyb20g YXBwbGljYXRpb24gaGUgdW5kZXJ0YW5kIHRoYXQgdGhpcyBpcyBhIGRpZmZlcmVudCBraW5kIG9m IHF1ZXVlLA0KPiA+PiB3aGljaCBzaG91bGRuJ3QgYmUNCj4gPj4+ICAgICAgICAgICAgdXNlZCBi eSB0aGUgYXBwbGljYXRpb24uDQo+ID4+IEl0IGRvZXMgbm90IGV4Y3VzZSB0byBkdXBsaWNhdGUg c28gbXVjaCBjb2RlIGJlbG93LiBJZiB3ZSBoYXZlIHNlcGFyYXRlDQo+ID4+IGRldl9pbmZvLWxp a2UgbGltaXRhdGlvbnMgZm9yIGhhaXJwaW4sIGl0IHdvdWxkIG1ha2Ugc2Vuc2UsIGJ1dCBJIGhv cGUgdGhhdA0KPiA+PiBpdCB3b3VsZCBiZSBzdGlsbCBwb3NzaWJsZSB0byBhdm9pZCBjb2RlIGR1 cGxpY2F0aW9uLg0KPiA+Pg0KPiA+IFdlIGNhbiBzdGFydCB3aXRoIHRoZSBtb3N0IGJhc2ljIGlt cGxlbWVudGF0aW9uLCB3aGljaCB3aWxsIG1lYW4gdGhhdCB0aGUNCj4gZnVuY3Rpb24NCj4gPiB3 aWxsIGFsbW9zdCBiZSBlbXB0eSwgd2hlbiBvdGhlciB2ZW5kb3JzIG9yIE1lbGxhbm94IHdpbGwg cmVxdWlyZSBzb21lDQo+IGFkZGl0aW9uYWwNCj4gPiB0ZXN0IG9yIGNvZGUgdGhleSB3aWxsIGJl IGFibGUgdG8gZGVjaWRlIGlmIHRvIGFkZCBuZXcgY29kZSB0byBoZSBmdW5jdGlvbiwgb3INCj4g PiBleHRyYWN0IHRoZSBzaGFyZWQgY29kZSBmcm9tIHRoZSBzdGFuZGFyZCBmdW5jdGlvbiB0byBh IHNwZWNpZmljIGZ1bmN0aW9uLCBhbmQNCj4gPiB1c2UgdGhpcyBmdW5jdGlvbiBpbiBib3RoIHNl dHVwIGZ1bmN0aW9ucy4NCj4gPiBXaGF0IGRvIHlvdSB0aGluaz8NCj4gDQo+IExldCdzIHRyeSBh bmQgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUuDQo+DQoNClRoYW5rcywgDQoNCiANCj4gW3NuaXBd DQo+IA0KPiA+Pj4+PiBAQCAtMTc2OSw2ICsxNzkzLDYwIEBAIGludCBydGVfZXRoX3J4X3F1ZXVl X3NldHVwKHVpbnQxNl90DQo+IHBvcnRfaWQsDQo+ID4+Pj4gdWludDE2X3QgcnhfcXVldWVfaWQs DQo+ID4+Pj4+ICAgICAJCXN0cnVjdCBydGVfbWVtcG9vbCAqbWJfcG9vbCk7DQo+ID4+Pj4+DQo+ ID4+Pj4+ICAgICAvKioNCj4gPj4+Pj4gKyAqIEB3YXJuaW5nDQo+ID4+Pj4+ICsgKiBAYiBFWFBF UklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQNCj4g cHJpb3INCj4gPj4+Pj4gKyBub3RpY2UNCj4gPj4+Pj4gKyAqDQo+ID4+Pj4+ICsgKiBBbGxvY2F0 ZSBhbmQgc2V0IHVwIGEgaGFpcnBpbiByZWNlaXZlIHF1ZXVlIGZvciBhbiBFdGhlcm5ldCBkZXZp Y2UuDQo+ID4+Pj4+ICsgKg0KPiA+Pj4+PiArICogVGhlIGZ1bmN0aW9uIHNldCB1cCB0aGUgc2Vs ZWN0ZWQgcXVldWUgdG8gYmUgdXNlZCBpbiBoYWlycGluLg0KPiA+Pj4+PiArICoNCj4gPj4+Pj4g KyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4+Pj4+ICsgKiAgIFRoZSBwb3J0IGlkZW50aWZpZXIgb2Yg dGhlIEV0aGVybmV0IGRldmljZS4NCj4gPj4+Pj4gKyAqIEBwYXJhbSByeF9xdWV1ZV9pZA0KPiA+ Pj4+PiArICogICBUaGUgaW5kZXggb2YgdGhlIHJlY2VpdmUgcXVldWUgdG8gc2V0IHVwLg0KPiA+ Pj4+PiArICogICBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzAsIG5iX3J4X3F1ZXVl IC0gMV0gcHJldmlvdXNseQ0KPiA+Pj4+IHN1cHBsaWVkDQo+ID4+Pj4+ICsgKiAgIHRvIHJ0ZV9l dGhfZGV2X2NvbmZpZ3VyZSgpLg0KPiA+Pj4+IElzIGFueSBSeCBxdWV1ZSBtYXkgYmUgc2V0dXAg YXMgaGFpcnBpbiBxdWV1ZT8NCj4gPj4+PiBDYW4gaXQgYmUgc3RpbGwgdXNlZCBmb3IgcmVndWxh ciB0cmFmZmljPw0KPiA+Pj4+DQo+ID4+PiBObyBpZiBhIHF1ZXVlIGlzIHVzZWQgYXMgaGFpcnBp biBpdCBjYW4ndCBiZSB1c2VkIGZvciBub3JtYWwgdHJhZmZpYy4NCj4gPj4+IFRoaXMgaXMgYWxz byB3aHkgSSBsaWtlIHRoZSBpZGVhIG9mIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25zLCBpbiBvcmRl ciB0byBjcmVhdGUNCj4gPj4+IFRoaXMgZGlzdGluY3Rpb24uDQo+ID4+IElmIHNvLCBkbyB3ZSBu ZWVkIGF0IGxlYXN0IGRlYnVnLWxldmVsIGNoZWNrcyBpbiBUeC9SeCBidXJzdCBmdW5jdGlvbnM/ DQo+ID4+IElzIGl0IHJlcXVpcmVkIHRvIHBhdGNoIHJ0ZSBmbG93IFJTUyBhY3Rpb24gdG8gZW5z dXJlIHRoYXQgUnggcXVldWVzIG9mDQo+ID4+IG9ubHkgb25lIGtpbmQgYXJlIHNwZWNpZmllZD8N Cj4gPj4gV2hhdCBhYm91dCBhdHRlbXB0IHRvIGFkZCBSeC9UeCBjYWxsYmFja3MgZm9yIGhhaXJw aW4gcXVldWVzPw0KPiA+Pg0KPiA+IEkgdGhpbmsgdGhlIGNoZWNrcyBzaG91bGQgYmUgZG9uZSBp biBQTUQgbGV2ZWwuIFNpbmNlIGZyb20gaGlnaCBsZXZlbCB0aGV5IGFyZQ0KPiB0aGUNCj4gPiBz YW1lLg0KPiANCj4gU29ycnksIEkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkuIElmIHNvbWV0aGluZyBj b3VsZCBiZSBjaGVja2VkIG9uIGdlbmVyaWMNCj4gbGV2ZWwsDQo+IGl0IHNob3VsZCBiZSBkb25l IHRvIGF2b2lkIGR1cGxpY2F0aW9uIGluIGFsbCBkcml2ZXJzLg0KPiANCg0KVGhlIGlzc3VlIHdp dGggdGhpcyBhcHByb2FjaCBpcyB0aGF0IGF0IHRoZSBldGhkZXYgbGV2ZWwgd2UgZG9uJ3Qga25v dyBhbnl0aGluZyBhYm91dCB0aGUgcXVldWUuDQpUaGlzIHdpbGwgbWVhbiB0aGF0IHdlIHdpbGwg bmVlZCB0byBhZGQgZXh0cmEgZnVuY3Rpb25zIHRvIHF1ZXJ5IHRoZSBxdWV1ZSB0eXBlIGZvciBl YWNoIFBNRC4NCldlIGNvdWxkIGFsc28gYXNzdW1lIHRoYXQgaWYgdG8gZ2V0IHR5cGUgZnVuY3Rp b24gZXhpc3QgaW4gdGhlIHBtZCB0aGVuIHRoZSBxdWV1ZSBpcyBhbHdheXMgc3RhbmRhcmQgcXVl dWUuDQpTbyBteSBzdWdnZXN0aW9uIGlmIHlvdSB3b3VsZCBsaWtlIHRvIG1vdmUgdGhlIGNoZWNr cyBpcyB0byBhZGQgcXVldWUgdHlwZSBlbnVtIGluIHRoZSBldGhkZXYgbGV2ZWwsIGFuZCBhZGQN CmZ1bmN0aW9uIGNhbGwgdG8gcXVlcnkgdGhlIHF1ZXVlIHR5cGUuIFdoYXQgZG8geW91IHRoaW5r Pw0KDQo+ID4gQ2FsbCBiYWNrcyBmb3IgUngvVHggZG9lc24ndCBtYWtlIHNlbnNlLCBzaW5jZSB0 aGUgaWRlYSBpcyB0byBieXBhc3MgdGhlIENQVS4NCj4gDQo+IElmIHNvLCBJIHRoaW5rIHJ0ZV9l dGhfYWRkX3R4X2NhbGxiYWNrKCkgc2hvdWxkIGJlIHBhdGNoZWQgdG8gcmV0dXJuIGFuDQo+IGVy cm9yDQo+IGlmIHNwZWNpZmllZCBxdWV1ZSBpcyBoYWlycGluLiBTYW1lIGZvciBSeC4NCj4gQW55 IG90aGVyIGNhc2VzPw0KPiANCg0KU2FtZSBhbnN3ZXIgYXMgYWJvdmUuDQoNCj4gPj4+Pj4gKyAq IEBwYXJhbSBuYl9yeF9kZXNjDQo+ID4+Pj4+ICsgKiAgIFRoZSBudW1iZXIgb2YgcmVjZWl2ZSBk ZXNjcmlwdG9ycyB0byBhbGxvY2F0ZSBmb3IgdGhlIHJlY2VpdmUgcmluZy4NCj4gPj4+PiBEb2Vz IGl0IHN0aWxsIG1ha2Ugc2Vuc2UgZm9yIGhhaXJwaW4gcXVldWU/DQo+ID4+Pj4NCj4gPj4+IFll cywgc2luY2UgaXQgY2FuIGFmZmVjdCBtZW1vcnkgc2l6ZSB1c2VkIGJ5IHRoZSBkZXZpY2UsIGFu ZCBjYW4gYWZmZWN0DQo+ID4+IHBlcmZvcm1hbmNlLg0KPiA+Pj4+PiArICogQHBhcmFtIHNvY2tl dF9pZA0KPiA+Pj4+PiArICogICBUaGUgKnNvY2tldF9pZCogYXJndW1lbnQgaXMgdGhlIHNvY2tl dCBpZGVudGlmaWVyIGluIGNhc2Ugb2YgTlVNQS4NCj4gPj4+Pj4gKyAqICAgVGhlIHZhbHVlIGNh biBiZSAqU09DS0VUX0lEX0FOWSogaWYgdGhlcmUgaXMgbm8gTlVNQSBjb25zdHJhaW50DQo+ID4+ Pj4gZm9yDQo+ID4+Pj4+ICsgKiAgIHRoZSBETUEgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIHJl Y2VpdmUgZGVzY3JpcHRvcnMgb2YgdGhlIHJpbmcuDQo+ID4+Pj4gSXMgaXQgc3RpbGwgcmVxdWly ZWQgdG8gYmUgcHJvdmlkZWQgZm9yIGhhaXJwaW4gUnggcXVldWU/DQo+ID4+Pj4NCj4gPj4+IFll cywgZm9yIGludGVybmFsIFBNRCBzdHJ1Y3R1cmVzIHRvIGJlIGFsbG9jYXRlZCwgYnV0IHdlIGNh biBpZiBwcmVzc2VkDQo+ID4+IHJlbW92ZSBpdC4NCj4gPj4+Pj4gKyAqIEBwYXJhbSByeF9jb25m DQo+ID4+Pj4+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgdG8g YmUgdXNlZCBmb3IgdGhlIHJlY2VpdmUNCj4gPj4+PiBxdWV1ZS4NCj4gPj4+Pj4gKyAqICAgTlVM TCB2YWx1ZSBpcyBhbGxvd2VkLCBpbiB3aGljaCBjYXNlIGRlZmF1bHQgUlggY29uZmlndXJhdGlv bg0KPiA+Pj4+PiArICogICB3aWxsIGJlIHVzZWQuDQo+ID4+Pj4+ICsgKiAgIFRoZSAqcnhfY29u Ziogc3RydWN0dXJlIGNvbnRhaW5zIGFuICpyeF90aHJlc2gqIHN0cnVjdHVyZSB3aXRoIHRoZQ0K PiA+Pj4+IHZhbHVlcw0KPiA+Pj4+PiArICogICBvZiB0aGUgUHJlZmV0Y2gsIEhvc3QsIGFuZCBX cml0ZS1CYWNrIHRocmVzaG9sZCByZWdpc3RlcnMgb2YgdGhlDQo+ID4+Pj4gcmVjZWl2ZQ0KPiA+ Pj4+PiArICogICByaW5nLg0KPiA+Pj4+PiArICogICBJbiBhZGRpdGlvbiBpdCBjb250YWlucyB0 aGUgaGFyZHdhcmUgb2ZmbG9hZHMgZmVhdHVyZXMgdG8gYWN0aXZhdGUNCj4gdXNpbmcNCj4gPj4+ Pj4gKyAqICAgdGhlIERFVl9SWF9PRkZMT0FEXyogZmxhZ3MuDQo+ID4+Pj4+ICsgKiAgIElmIGFu IG9mZmxvYWRpbmcgc2V0IGluIHJ4X2NvbmYtPm9mZmxvYWRzDQo+ID4+Pj4+ICsgKiAgIGhhc24n dCBiZWVuIHNldCBpbiB0aGUgaW5wdXQgYXJndW1lbnQgZXRoX2NvbmYtPnJ4bW9kZS5vZmZsb2Fk cw0KPiA+Pj4+PiArICogICB0byBydGVfZXRoX2Rldl9jb25maWd1cmUoKSwgaXQgaXMgYSBuZXcg YWRkZWQgb2ZmbG9hZGluZywgaXQgbXVzdCBiZQ0KPiA+Pj4+PiArICogICBwZXItcXVldWUgdHlw ZSBhbmQgaXQgaXMgZW5hYmxlZCBmb3IgdGhlIHF1ZXVlLg0KPiA+Pj4+PiArICogICBObyBuZWVk IHRvIHJlcGVhdCBhbnkgYml0IGluIHJ4X2NvbmYtPm9mZmxvYWRzIHdoaWNoIGhhcyBhbHJlYWR5 DQo+IGJlZW4NCj4gPj4+Pj4gKyAqICAgZW5hYmxlZCBpbiBydGVfZXRoX2Rldl9jb25maWd1cmUo KSBhdCBwb3J0IGxldmVsLiBBbiBvZmZsb2FkaW5nDQo+ID4+Pj4gZW5hYmxlZA0KPiA+Pj4+PiAr ICogICBhdCBwb3J0IGxldmVsIGNhbid0IGJlIGRpc2FibGVkIGF0IHF1ZXVlIGxldmVsLg0KPiA+ Pj4+IFdoaWNoIG9mZmxvYWRzIHN0aWxsIG1ha2Ugc2Vuc2UgaW4gdGhlIGNhc2Ugb2YgaGFpcnBp biBSeCBxdWV1ZT8NCj4gPj4+PiBXaGF0IGFib3V0IHRocmVzaGhvZHMsIGRyb3AgZW5hYmxlPw0K PiA+Pj4+DQo+ID4+PiBEcm9wIGFuZCB0aHJlc2hvbGRzIG1ha2Ugc2Vuc2UsIGZvciBleGFtcGxl IHRoZSBhcHBsaWNhdGlvbiBjYW4gc3RhdGUNCj4gdGhhdCwNCj4gPj4+IGluIGNhc2Ugb2YgYmFj ayBwcmVzc3VyZSB0byBzdGFydCBkcm9wcGluZyBwYWNrZXRzIGluIG9yZGVyIG5vdCB0byBhZmZl Y3QgdGhlDQo+ID4+PiBlbnRpcmUgbmljLg0KPiA+Pj4gcmVnYXJkaW5nIG9mZmxvYWRzIG1haW5s eSB2bGFuIHN0cmlwIG9yIHZsYW4gaW5zZXJ0IGJ1dCB0aG9zZSBjYW4gYWxzbw0KPiA+Pj4gYmUg dXNlZCBpbiBydGVfZmxvdy4NCj4gPj4+IEJ1dCBmdXR1cmUgb2ZmbG9hZHMgbGlrZSBRb1Mgb3Ig b3RoZXIgbWF5YmUgc2hhcmVkLg0KPiA+PiBJJ20gbm90IGEgZmFuIG9mIGRlYWQgcGFyYW1ldGVy cyB3aGljaCBhcmUgYWRkZWQganVzdCB0byB1c2UNCj4gPj4gdGhlIHNhbWUgc3RydWN0dXJlLiBJ dCByYWlzZXMgdG9vIG1hbnkgcXVlc3Rpb25zIG9uIG1haW50ZW5hbmNlLg0KPiA+PiBBbHNvIEkg ZG9uJ3QgbGlrZSBpZGVhIHRvIHNoYXJlIGhhaXJwaW4gYW5kIHJlZ3VsYXIgb2ZmbG9hZHMuDQo+ ID4+IE1heSBiZSBpdCBpcyBPSyB0byBzaGFyZSBuYW1lc3BhY2UgKHN0aWxsIHVuc3VyZSksIGJ1 dCBjYXBhYmlsaXRpZXMNCj4gPj4gYXJlIGRlZmluaXRlbHkgZGlmZmVyZW50IGFuZCBzb21lIHJl Z3VsYXIgb2ZmbG9hZHMgYXJlIHNpbXBseSBub3QNCj4gPj4gYXBwbGljYWJsZSB0byBoYWlycGlu IGNhc2UuDQo+ID4+DQo+ID4gSSBhZ3JlZSB3aXRoIHlvdSBJIHRoaW5rIHRoYXQgbXkgc3VnZ2Vz dGlvbiBhYm92ZSAobmV3IGNhcHMgZm9yIGhhaXJwaW4pDQo+ID4gc29sdmUgdGhpcyBpc3N1ZS4g RG8geW91IGFncmVlPw0KPiA+IEkgd2lsbCByZW1vdmUgdGhlIHJ0ZV9ldGhfdHhjb25mIGFuZCBv bmx5IGhhZSB0aGUgaGFpcnBpbl9jb25mIHdpdGggc29tZQ0KPiBuZXcNCj4gPiBmaWVsZHMsIHNh bWUgZm9yIHRoZSBSeCwgaXMgdGhhdCBPLksuPw0KPiANCj4gSSB0aGluayBpdCB3b3VsZCBiZSBi ZXR0ZXIgdG8ga2VlcCBvbmx5IHVzZWQgcGFyYW1ldGVycy4NCj4gQW55d2F5LCBpdCBpcyBleHBl cmltZW50YWwgQVBJIGFuZCB3ZSBjYW4gYWRkIG1pc3NpbmcgcGFyYW1ldGVycw0KPiB3aGVuIHJl cXVpcmVkLg0KPiANCg0KQWdyZWUuDQoNCj4gW3NuaXBdDQo+IA0KPiBUaGFua3MsDQo+IEFuZHJl dy4NCg==