From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00051.outbound.protection.outlook.com [40.107.0.51]) by dpdk.org (Postfix) with ESMTP id AD71623A for ; Sun, 23 Jul 2017 10:17:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=NlGnOh7VBraBv46DxbT13G25WxvXBNRULE/gO+P311A=; b=vrHmXHrkpXAX8vLKW/7sQjulm1z5UWKN7AdPAT1k6MSImZIC7zoerIpZFMKq3CjD3Wpty8Ddah/18iCcBFeFOHiETaXV26ORtFTC2bt8nSrkOa0M7ee5p/q/ddFNNy+JbAnaJB7TH6Eor3QLlPcaGTLFX1yCT4LctA1DUDfuGrI= Received: from VI1PR05MB3149.eurprd05.prod.outlook.com (10.170.237.142) by DB6PR0501MB2037.eurprd05.prod.outlook.com (10.168.9.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10; Sun, 23 Jul 2017 08:17:54 +0000 Received: from VI1PR05MB3149.eurprd05.prod.outlook.com ([fe80::48b5:a81d:6b63:b78e]) by VI1PR05MB3149.eurprd05.prod.outlook.com ([fe80::48b5:a81d:6b63:b78e%13]) with mapi id 15.01.1282.017; Sun, 23 Jul 2017 08:17:53 +0000 From: Shahaf Shuler To: Sagi Grimberg , =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: "dev@dpdk.org" , Yongseok Koh , "Roy Shterman" , Alexander Solganik , Leon Romanovsky Thread-Topic: Question on mlx5 PMD txq memory registration Thread-Index: AQHS/wDDey9LiwbwREKsJyEAOfqiVaJYgfgAgAIuloCAAhE5gIAAAuWAgAAAR0CAACW2gIAELCrg Date: Sun, 23 Jul 2017 08:17:53 +0000 Message-ID: References: <75d08202-1882-7660-924c-b6dbb4455b88@grimberg.me> <20170717210222.j4dwxiujqdlqhlp2@shalom> <85c0b1d9-bbf3-c6ab-727f-f508c5e5f584@grimberg.me> <20170720135548.qlkjnmzthd2vep5e@shalom> <957f84fe-199a-e016-c21c-ab54a732e561@grimberg.me> <67476089-ba6e-905c-0fdd-3a1551de97d4@grimberg.me> In-Reply-To: <67476089-ba6e-905c-0fdd-3a1551de97d4@grimberg.me> 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=shahafs@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB6PR0501MB2037; 7:eqQkc6jwy5x5rPPN06NxDzsoZiwoaWqWrneHPjjH/11KfHcpBX3Pq//Ip7iAkBz8FDdwRHA5+8ldnvL5eKhbfgxznOijyQu4gc2Ho2haB6JGI4f0Rt+rDUS1kWvvC7BjYi/RFzncIwxVj5E280fPRenREv+EFz61MqJjFDll70hojf9gc6AJN0C/7LH2qpJOoINip8GLa7E7KsBq7bqIFkNOVOyEyZV6EahJPN21MiJNLL7zJa8YusvDF+AohwKZ02JpYBR3zxM+tnCAslWLZk+bMhd7zI47r9d2ixxekXa9nl8p8HRRRPVpaK2WQjQIbLGcMo5a1mT+krbMuAtQuwsWz7fiVGDTbMsSAbqNFplkjMl28HtCau/CObTBxoyWNOykYumiGPV2IZh9AWNr8ttBvuUVBxn36IdQBQq7Q8qpHtPb0AGY1fIbDxXMTVfvQOaQWS/KW2XtQIy1b7flIkzKUzEbKnNg3LmOZ738Rep9yooZWMVMxlI6HvFm4UHEONf30/83Cbf1FmKE8382X4lk8iGezWsWZuSA0v58pBSsJNuJAPXg/FDUYt9jJR5i3UZyY+a1NyQa3sHi5FoDdhPl07lbE0q3ilxi/gIxoK6DcKkiMC6TRphV8plVk+ymIh1pSKwAiaF6QUlnsS62NxHRNN74ZcjeD7+6/MAVtZTivjf27G/2HpELMDGLwJ94h5cKpse6jAcG6HGvzwZwfbC4KBodrDycg6ApmQ5uuPhAMaGofNYEnEgDCO43ZghW1RaNLgwkWlAilnE0eevB7FJurR3a1YZ3gpSyqPtPB+E= x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-office365-filtering-correlation-id: 00b2aae9-14e3-4147-db79-08d4d1a35131 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(48565401081)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DB6PR0501MB2037; x-ms-traffictypediagnostic: DB6PR0501MB2037: x-exchange-antispam-report-test: UriScan:(158342451672863)(192374486261705)(788757137089); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0501MB2037; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0501MB2037; x-forefront-prvs: 0377802854 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(39400400002)(39850400002)(39840400002)(39860400002)(39410400002)(39450400003)(377454003)(189002)(199003)(51444003)(189998001)(5660300001)(3846002)(81166006)(5250100002)(2906002)(305945005)(93886004)(8936002)(2900100001)(6116002)(86362001)(2950100002)(54906002)(99286003)(55016002)(8676002)(81156014)(6436002)(7696004)(102836003)(25786009)(74316002)(68736007)(97736004)(106356001)(38730400002)(478600001)(9686003)(105586002)(229853002)(66066001)(53936002)(6506006)(6246003)(107886003)(7736002)(4326008)(561944003)(33656002)(14454004)(3280700002)(50986999)(3660700001)(76176999)(54356999)(101416001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2037; H:VI1PR05MB3149.eurprd05.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jul 2017 08:17:53.7068 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2037 Subject: Re: [dpdk-dev] Question on mlx5 PMD txq memory registration 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: , X-List-Received-Date: Sun, 23 Jul 2017 08:17:57 -0000 VGh1cnNkYXksIEp1bHkgMjAsIDIwMTcgNzoyMiBQTSwgU2FnaSBHcmltYmVyZzoNCj4gPj4gQXMg SSBzYWlkLCB0aGVyZSBhcmUgcHJpbWl0aXZlcyB3aGljaCBhcmUgZGVzaWduZWQgdG8gaGFuZGxl IGZyZXF1ZW50DQo+ID4+IHJlYWRzIGFuZCByYXJlIG11dGF0aW9ucy4NCj4gPg0KPiA+IEV2ZW4g d2l0aCBzdWNoIHByaW1pdGl2ZXMsIHJhcmVseSBsb2NrIGlzIG1vcmUgdGhhbiBuZXZlciBsb2Nr Lg0KPiANCj4gWW91IGRvIHJlYWxpemUgdGhhdCB0aGUgY2FjaGUgbXV0YXRpb24gaW52b2x2ZXMg aWJ2X2RlcmVnX21yKCkgcmlnaHQ/DQo+IEFueSBsb2NraW5nIHNjaGVtZSBmb3IgbXV0YXRpb24g aXMgbmVnbGlnaWJsZSBjb21wYXJlZCB0byB0aGF0LCBhbmQNCj4gcmN1X3JlYWRfbG9jayBpcyBw cmFjdGljYWxseSBmcmVlLg0KDQpUaGUgZml4IGZvciB0aGUgaXNzdWUgeW91IHByZXNlbnRlZCBp bmNsdWRlcyBub3QgdG8gZGVyZWcgTVIgb24gZGF0YXBhdGguIE1SIHdpbGwgYmUgZGVyZWdpc3Rl cmVkIG9ubHkgb24gZGV2aWNlIGNsb3NlLg0KTVJzIHJlcGxhY2Ugb24gY2FjaGUgY2FuIHN0aWxs IGhhcHBlbiwgYnV0IGl0IHdvbid0IGludm9sdmUgYW55IGRlLXJlZ2lzdHJhdGlvbi4gDQoNCj4g DQo+ID4+PiBJdCBpcyBvbmUgcG9zc2liaWxpdHkgZGlzY3Vzc2VkIGFsc28gd2l0aCBNZWxsYW5v eCBndXlzLCB0aGUgcG9pbnQNCj4gPj4+IGlzIHRoaXMgYnJlYWtzIHRoZSBzZWN1cml0eSBwb2lu dCBvZiB2aWV3IHdoaWNoIGlzIGFsc28gYW4gaW1wb3J0YW50IHN0dWZmLg0KPiA+Pg0KPiA+PiBX aGF0IHNlY3VyaXR5IGFzcGVjdD8gVGhlIGVudGlyZSBkcGRrIG1vZGVsIGJ1aWxkcyBvbiB0b3Ag b2YgcGh5c2ljYWwNCj4gPj4gYWRkcmVzc2VzIGF3YXJlbmVzcyBydW5uaW5nIHVuZGVyIHJvb3Qg cGVybWlzc2lvbnMuDQo+ID4+IEknbSBub3Qgc2F5aW5nDQo+ID4+IGV4cG9zaW5nIGl0IHRvIHRo ZSBhcHBsaWNhdGlvbiBub3IgZ3JhbnRpbmcgcmVtb3RlIHBlcm1pc3Npb25zIHRvIHRoZQ0KPiA+ PiBwaHlzaWNhbCBzcGFjZS4NCj4gPj4NCj4gPj4gbWx4NV9wbWQgaXMgYSBuZXR3b3JrIGRyaXZl ciwgYW5kIGFzIGEgZHJpdmVyLCBpdCBzaG91bGQgYWxsb3dlZCB0bw0KPiA+PiB1c2UgdGhlIGRl dmljZSBkbWEgbGtleSBhcyBpdCBzZWVzIGZpdC4gSSBob25lc3RseSB0aGluayBpdHMgcHJldHR5 DQo+ID4+IG11Y2ggbWFuZGF0b3J5IGNvbnNpZGVyaW5nIHRoZSB3b3JrLWFyb3VuZHMgbWx4NV9w bWQgdHJpZXMgdG8gZG8NCj4gPj4gKHdoaWNoIHdlIGFncmVlZCBhcmUgYnJva2VuKS4NCj4gPg0K PiA+IFRydWUsIFRoZXJlIGFyZSBtYW55IFBNRHMgd2hpY2ggY2FuIHdvcmsgb25seSB3aXRoIHBo eXNpY2FsIG1lbW9yeS4NCj4gPiBIb3dldmVyIE1lbGxhbm94IE5JQ3MgaGF2ZSB0aGUgb3B0aW9u IHRvIHdvcmsgd2l0aCB2aXJ0dWFsIG9uZSB0aHVzDQo+IHByb3ZpZGUgbW9yZSBzZWN1cml0eS4N Cj4gDQo+IEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgc2VjdXJpdHkgYXJndW1lbnQuIEl0cyBjb21w bGV0ZWx5IHByaXZhdGUgdG8gdGhlDQo+IGRyaXZlci4gYW55dGhpbmcgdW5kZXIgbGlicnRlIGlz IGVxdWl2YWxlbnQgdG8gYW4gT1Mgd3J0IG5ldHdvcmtpbmcsIHNvIEkgZmFpbCB0bw0KPiBzZWUg d2hhdCBpcyB0aGUgc2VjdXJpdHkgZmVhdHVyZSB5b3VyIHRhbGtpbmcgYWJvdXQuDQoNCllvdSBh cmUgY29ycmVjdCB0aGF0IGFzIGEgcm9vdCB5b3UgYXJlIGFibGUgdG8gZG8gd2hhdGV2ZXIgeW91 IHdhbnQgb24gdGhlIHNlcnZlci4NClRoZSBzZWN1cml0eSBJIHJlZmVyIHRvIGlzIHRvIHByb3Rl Y3QgYWdhaW5zdCBiYWRseSB3cml0dGVuIGNvZGUuDQoNClRoZSBmYWN0IHRoZSBQTUQgb25seSBy ZWdpc3RlcnMgdGhlIG1lbXBvb2xzLCBhbmQgdXNlIHRoZSBkZXZpY2UgZW5naW5lIHRvIHRyYW5z bGF0ZSB0aGUgVkEsIHByb3ZpZGUgc29tZSBwcm90ZWN0aW9uLg0KRm9yIGV4YW1wbGUsIG9uZSBE UERLIHByb2Nlc3Mgd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgdGhlIG1lbW9yeSBvZiBvdGhl ciBEUERLIHByb2Nlc3MgKmJ5IG1pc3Rha2UqLg0KDQpJIGFtIG5vdCBzYXlpbmcgdXNpbmcgdGhl IHJlc2VydmVkIGxrZXkgaXMgbm90IGEgZ29vZCBzdWdnZXN0aW9uLCBhbmQgd2UgcGxhbiB0byB0 ZXN0IGl0cyB2YWx1ZS4NCkFsbCBJIGFtIHNheWluZyBpcyB0aGVyZSBhcmUgbWF5YmUgb3RoZXIg b3B0aW9uIHRvIHByb3ZpZGUgdGhlIHNhbWUgcGVyZm9ybWFuY2Ugd2l0aCB0aGUgZXh0cmEgcHJv dGVjdGlvbiBtZW50aW9uZWQgYWJvdmUuDQpPbmUgb2YgdGhlbSBjYW4gYmUgdG8gdXNlIGluZGly ZWN0IGtleXMuIE9uZSBpbmRpcmVjdCBrZXkgdG8gcmVwcmVzZW50IDY0YiBtZW1vcnkgYXJlYSwg YW5kIG90aGVyIHJlZ3VsYXIga2V5cyBmb3IgdGhlIGh1Z2VwYWdlcy4NClRoZSByZXN0IG9mIHRo ZSBtZW1vcnkgYXJlYSBjYW4gYmUgZmlsbGVkIHdpdGgga2V5cyBwb2ludGluZyB0byAvZGV2L251 bGwuIA0KDQo+IA0KPiA+IFRoZSBmYWN0IHJ1bm5pbmcgdW5kZXIgcm9vdCBkb2Vzbid0IG1lYW4g eW91IGhhdmUgcHJpdmlsZWdlcyB0byBhY2Nlc3MNCj4gZXZlcnkgcGh5c2ljYWwgcGFnZSBvbiB0 aGUgc2VydmVyIChldmVuIGlmIHlvdSB0cnkgdmVyeSBoYXJkIHRvIGJlIGF3YXJlKS4NCj4gDQo+ IEJ1dCBkcGRrIGNvcmUgbWJ1ZnMgc3RydWN0cyBhcmUgYnVpbHQgdGhpcyB3YXkuDQo+IA0KPiA+ IFRoZSBpc3N1ZSBoZXJlLCBBRkFJVSwgaXMgcGVyZm9ybWFuY2UuDQo+ID4gV2UgYXJlIG5vdyBs b29raW5nIGludG8gd2F5cyB0byBwcm92aWRlIHRoZSBzYW1lIHBlcmZvcm1hbmNlIGFzIGlmIGl0 IHdhcw0KPiBvbmx5IGEgc2luZ2xlIGxrZXksIHdoaWxlIHByZXNlcnZpbmcgdGhlIHNlY3VyaXR5 IGZlYXR1cmUuDQo+IA0KPiBIbW0sIFdoYXQgZXhhY3RseSBkbyB5b3UgaGF2ZSBpbiBtaW5kPw0K PiANCj4gSSdtIGhvcGluZyB0aGF0IHlvdSBhcmUgbm90IHJlZmVycmluZyB0byBPRFAuIElmIHlv dSBhcmUsIEkgdGhpbmsgdGhhdCBsYXRlbmN5DQo+IHVucHJlZGljdGFiaWxpdHkgd291bGQgYmUg YSBodWdlIG5vbi1zdGFydGVyLCBwYWdlLWZhdWx0cyBhcmUgd2F5IHRvbw0KPiBleHBlbnNpdmUg Zm9yIGRwZGsgdXNlcnMuDQoNCk5vIE9EUCA6KS4gDQpBcyBhbGwgcmVsZXZhbnQgRFBESyBtZW1v cnkgaXMgb24gdG9wIG9mIGh1Z2VwYWdlcywgdGhlcmUgaXMgbm8gcmVhc29uIHRvIGF2b2lkIHJl Z2lzdHJhdGlvbiBhbmQgcGlubmluZyAgaW4gYWR2YW5jZS4gDQoNCj4gDQo+IEFnYWluLCBwZXJz b25hbGx5LCBJIGRvbid0IHRoaW5rIHRoYXQgdXNpbmcgdmlydHVhbCBtZW1vcnkgcmVnaXN0cmF0 aW9uIGFyZSB2ZXJ5DQo+IHVzZWZ1bCBmb3IgYSBuZXR3b3JrIGRyaXZlciwgSXQncyBhIGRyaXZl ciwgbm90IGFuIGFwcGxpY2F0aW9uLg0KPiANCj4gPj4+IElmIHRoaXMgaXMgYWRkZWQgaW4gdGhl IGZ1dHVyZSBpdCB3aWxsIGNlcnRhaW5seSBiZSBhcyBhbiBvcHRpb24sDQo+ID4+PiB0aGlzIHdh eSBib3RoIHdpbGwgYmUgcG9zc2libGUsIHRoZSBhcHBsaWNhdGlvbiBjb3VsZCB0aGVuIGNob29z ZQ0KPiA+Pj4gYWJvdXQgc2VjdXJpdHkgdnMgcGVyZm9ybWFuY2UuDQo+ID4+DQo+ID4+IFdoeSBz aG91bGQgdGhlIGFwcGxpY2F0aW9uIGV2ZW4gYmUgYXdhcmUgb2YgdGhhdD8gRG9lcyBhbnkgb3Ro ZXINCj4gPj4gZHJpdmVyIGV4cG9zZSB0aGUgdXNlciBob3cgaXQgbWFwcyBwa3QgbWJ1ZnMgdG8g dGhlIE5JQz8gSnVzdCBsaWtlDQo+ID4+IHRoZSBNUiBoYW5kbGluZywgaXRzIDEwMCUgaW50ZXJu YWwgdG8gbWx4NSBhbmQgbm8gcmVhc29uIHdoeSB0aGUgdXNlcg0KPiA+PiBzaG91bGQgZXZlciBi ZSBleHBvc2VkIHRvIGFueSBvZiB0aGVzZSBkZXRhaWxzLg0KPiA+DQo+ID4gT3RoZXIgb3B0aW9u IGlzIHRoZSByZXNlcnZlZCBsa2V5IGFzIHlvdSBzdWdnZXN0ZWQsIGJ1dCBpdCB3aWxsIGxvc2Ug dGhlDQo+IHNlY3VyaXR5IGd1YXJhbnRlZXMuDQo+IA0KPiBPSywgb2J2aW91c2x5IEknbSBtaXNz aW5nIHNvbWV0aGluZy4gQ2FuIHlvdSBhcnRpY3VsYXRlIHdoYXQgZG8geW91IG1lYW4NCj4gYnkg InNlY3VyaXR5IGd1YXJhbnRlZXMiPw0KPiANCj4gPiBMaWtlIGV2ZXJ5IHBlcmZvcm1hbmNlIG9w dGltaXphdGlvbiBpdCBzaG91bGQgYmUgdGhlIGFwcGxpY2F0aW9uIGRlY2lzaW9uLg0KPiANCj4g SSB0ZW5kIHRvIGRpc2FncmVlIHdpdGggeW91IG9uIHRoaXMuIFRoZSBhcHBsaWNhdGlvbiBtdXN0 IG5ldmVyIGJlIGF3YXJlIG9mDQo+IHRoZSBuaXR0eSBkZXRhaWxzIG9mIHRoZSB1bmRlcmx5aW5n IGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gSW4gZmFjdCwgcHJvcGFnYXRpbmcNCj4gdGhpcyBpbmZv cm1hdGlvbiB0byB0aGUgYXBwbGljYXRpb24gc291bmRzIGxpa2UgYSBsYXllcmluZyB2aW9sYXRp b24uDQo+IA0KPiA+IEluIGZhY3QsIHRoZXJlIGFyZSBzb21lIGRpc2N1c3Npb25zIG9uIHRoZSBN TCBvZiBleHBvc2luZyB0aGUgb3B0aW9uDQo+ID4gdG8gdXNlIHZhIGluc3RlYWQgb2YgcGEuIFsx XQ0KPiANCj4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBjb3JyZWN0IHByb3Bvc2FsIHdh cyB0byBoaWRlIHRoaXMga25vd2xlZGdlDQo+IGZyb20gdGhlIHVzZXIuIEFsc28gdGhlIHVzZS1j YXNlIGlzIG5vdCBzZWN1cml0eSAod2hpY2ggSSdtIG5vdCBldmVuIHN1cmUNCj4gd2hhdCBpdCBt ZWFucyB5ZXQpLg0KPiANCj4gPj4+IFRoaXMgaXMgYWxzbyBhIGluIHByb2dyZXNzIGluIFBNRCBw YXJ0LCBpdCBzaG91bGQgYmUgcGFydCBvZiB0aGUNCj4gPj4+IG5leHQgRFBESyByZWxlYXNlLg0K PiA+Pg0KPiA+PiBUaGF0IGlzICp2ZXJ5KiBnb29kIHRvIGhlYXIhIENhbiB5b3UgZ3V5cyBzaGFy ZSBhIGJyYW5jaD8gSSdtIHdpbGxpbmcNCj4gPj4gdG8gdGFrZSBpdCBmb3IgdGVzdGluZy4NCj4g Pg0KPiA+IFRoZSBicmFuY2ggaXMgc3RpbGwgcHJlLW1hdHVyZS4gSXQgbWF5IGJlIGdvb2QgZW5v dWdoIGZvciBleHRlcm5hbCB0ZXN0aW5nIGluDQo+IGFib3V0IHR3byB3ZWVrcy4NCj4gPiBDb250 YWN0IG1lIGRpcmVjdGx5IGFuZCBJIHdpbGwgcHJvdmlkZSBpdCB0byB5b3UuDQo+IA0KPiBBd2Vz b21lIQ0KPiANCj4gVGhhbmtzLg0K