From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bn0107.outbound.protection.outlook.com [157.56.110.107]) by dpdk.org (Postfix) with ESMTP id 8AD7E5A69 for ; Mon, 25 Jan 2016 23:51:04 +0100 (CET) Received: from BY2PR07MB057.namprd07.prod.outlook.com (10.255.240.149) by BY2PR07MB057.namprd07.prod.outlook.com (10.255.240.149) with Microsoft SMTP Server (TLS) id 15.1.365.19; Mon, 25 Jan 2016 22:51:02 +0000 Received: from BY2PR07MB057.namprd07.prod.outlook.com ([169.254.11.152]) by BY2PR07MB057.namprd07.prod.outlook.com ([169.254.11.152]) with mapi id 15.01.0365.024; Mon, 25 Jan 2016 22:51:02 +0000 From: Alain Gautherot To: Sergio Gonzalez Monroy Thread-Topic: [dpdk-users] Using DPDK for contiguous physical memory allocation Thread-Index: AdFXs8IboG1gyaOuSxWKRzvG0vqHRAAC8IoAAADC7+A= Date: Mon, 25 Jan 2016 22:51:01 +0000 Message-ID: References: <56A6A138.3040305@intel.com> In-Reply-To: <56A6A138.3040305@intel.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=alain@edicogenome.com; x-originating-ip: [70.167.8.242] x-microsoft-exchange-diagnostics: 1; BY2PR07MB057; 5:mFIuQ2RqUL2s/CaRmgK+L2l3BK5X/Em31Fc44LXRhATqWhb1aiJqs6CrEC6t+qWXda7XzRCAxGvofN6bXsXmST/BKsoh9+LFiI3/ZChqT7lPUsciTAWtNagCVOLd2KUID7psnVPTh4H1jK5PUe0fNw==; 24:FbRd+hn1pObmVh/L9955OGU/Y+8nN4JjiH2ivibttVYIfEAp8C1ezWlV0bj+hra1iJxdQ4cTqbxXq2Or/jV+ub8s/87FRmviQwTbJwbk/TM= x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR07MB057; x-ms-office365-filtering-correlation-id: baf48d7e-0af1-4fd5-1f3a-08d325d9ffee x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(10201501046)(3002001); SRVR:BY2PR07MB057; BCL:0; PCL:0; RULEID:; SRVR:BY2PR07MB057; x-forefront-prvs: 083289FD26 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(979002)(6009001)(377454003)(189002)(164054003)(24454002)(13464003)(199003)(24434003)(479174004)(10400500002)(4326007)(87936001)(122556002)(2906002)(19580405001)(575784001)(92566002)(86362001)(5890100001)(40100003)(3280700002)(15395725005)(5004730100002)(110136002)(1220700001)(2900100001)(1096002)(76576001)(11100500001)(102836003)(74316001)(15975445007)(5001960100002)(2950100001)(54356999)(3846002)(1720100001)(81156007)(19580395003)(66066001)(33656002)(97736004)(5008740100001)(76176999)(6116002)(101416001)(99286002)(106356001)(105586002)(586003)(50986999)(5003600100002)(5002640100001)(189998001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR07MB057; H:BY2PR07MB057.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: edicogenome.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:23 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: edicogenome.com X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jan 2016 22:51:01.9270 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 715cf729-d8ae-46d7-a6f6-5d36941a1b6c X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR07MB057 Cc: "users@dpdk.org" Subject: Re: [dpdk-users] Using DPDK for contiguous physical memory allocation X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2016 22:51:05 -0000 U2VyZ2lvLA0KDQpZZXMsIEkgbWFkZSB0aGF0IGNoYW5nZSBhbmQgYW0gbm93IHVzaW5nIHRoZSBm b2xsb3dpbmc6DQogICAgc2l6ZV90ICAgaTsNCiAgICBmb3IgKGkgPSAxOyBpIDw9IDIwMDsgKytp KSB7DQogICAgICBzaXplX3QgIGFsbG9jc2l6ZSA9IChpIDw8IDMwKSAvIDEwVTsNCg0KICAgICAg cHJpbnRmKCIgIEFsbG9jYXRpbmcgJTMuMWZHQjogIiwgKChmbG9hdCApaSkvMTAuMGYpOw0KICAg ICAgZmZsdXNoKHN0ZG91dCk7DQogICAgICB2b2lkKiAgcHRyID0gcnRlX21hbGxvYyhOVUxMLCBh bGxvY3NpemUsIDBVKTsNCiAgICAgIGlmIChwdHIgIT0gTlVMTCkgew0KICAgICAgICBwcmludGYo IlBBU1NcbiIpOw0KICAgICAgICBydGVfZnJlZShwdHIpOw0KICAgICAgfSBlbHNlIHsNCiAgICAg ICAgcHJpbnRmKCJmYWlsXG4iKTsNCiAgICAgIH0NCiAgICB9DQogICAgcHJpbnRmKCJEb25lXG4i KTsNCg0KDQpUaGF0IHNlZW1zIHRvIGJlIHJ1bm5pbmcgZmluZSBub3cgd2l0aCBEUERLIDIuMi4w ICh3YXMgbm90IHdpdGggMi4wLjApLg0KDQpUaGFua3MsDQpBbGFpbg0KDQotLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KRnJvbTogU2VyZ2lvIEdvbnphbGV6IE1vbnJveSBbbWFpbHRvOnNlcmdp by5nb256YWxlei5tb25yb3lAaW50ZWwuY29tXSANClNlbnQ6IE1vbmRheSwgSmFudWFyeSAyNSwg MjAxNiAyOjI3IFBNDQpUbzogQWxhaW4gR2F1dGhlcm90IDxhbGFpbkBlZGljb2dlbm9tZS5jb20+ DQpDYzogdXNlcnNAZHBkay5vcmcNClN1YmplY3Q6IFJlOiBbZHBkay11c2Vyc10gVXNpbmcgRFBE SyBmb3IgY29udGlndW91cyBwaHlzaWNhbCBtZW1vcnkgYWxsb2NhdGlvbg0KDQpIaSBBbGFpbiwN Cg0KT24gMjUvMDEvMjAxNiAyMTowMiwgQWxhaW4gR2F1dGhlcm90IHdyb3RlOg0KPiBbcmVzZW5k IHdpdGggZW5jbG9zZWQgbG9nIGluc3RlYWQgb2YgYXR0YWNobWVudF0NCj4NCj4gSGVsbG8gU2Vy Z2lvLA0KPg0KPiBJJ20gcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQNCj4NCj4gICAJJCAu L2J1aWxkL2hlbGxvd29ybGQgLWMgZmZmIC1uIDENCj4NCj4gQW5kIGdldCB0aGUgYXR0YWNoZWQg bG9nIChob3BlIGl0IGdvZXMgdGhyb3VnaCkuIFVzaW5nICItbiAyIiAoSSdtIG5vdCBzdXJlIGhv dyBtYW55IGNoYW5uZWxzKSBnaXZlcyB0aGUgc2FtZSBTSUdTRUdWIGVycm9yLg0KPg0KPiBIZXJl J3MgdGhlIGNvbmZpZ3VyYXRpb246DQo+DQo+ICQgbnVtYWN0bCAtSA0KPiAJYXZhaWxhYmxlOiAx IG5vZGVzICgwKQ0KPiAJbm9kZSAwIGNwdXM6IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTENCj4g CW5vZGUgMCBzaXplOiA2NTQzMSBNQg0KPiAJbm9kZSAwIGZyZWU6IDYyMDQwIE1CDQo+IAlub2Rl IGRpc3RhbmNlczoNCj4gCW5vZGUgICAwDQo+IAkJMDogIDEwDQo+DQo+ICQgY2F0IC9wcm9jL21l bWluZm8NCj4gCU1lbVRvdGFsOiAgICAgICA2NTg2NzM2MCBrQg0KPiAJTWVtRnJlZTogICAgICAg IDYzNTI5Mjc2IGtCDQo+IAlCdWZmZXJzOiAgICAgICAgICAgOTM5OTYga0INCj4gCUNhY2hlZDog ICAgICAgICAgIDU2MjE2MCBrQg0KPiAJU3dhcENhY2hlZDogICAgICAgICAgICAwIGtCDQo+IAlB Y3RpdmU6ICAgICAgICAgICAzMTQ4MTYga0INCj4gCUluYWN0aXZlOiAgICAgICAgIDQ4Mzc1MiBr Qg0KPiAJQWN0aXZlKGFub24pOiAgICAgMTQ0MzcyIGtCDQo+IAlJbmFjdGl2ZShhbm9uKTogICAg ICAgMjgga0INCj4gCUFjdGl2ZShmaWxlKTogICAgIDE3MDQ0NCBrQg0KPiAJSW5hY3RpdmUoZmls ZSk6ICAgNDgzNzI0IGtCDQo+IAlVbmV2aWN0YWJsZTogICAgICAgICAgIDAga0INCj4gCU1sb2Nr ZWQ6ICAgICAgICAgICAgICAgMCBrQg0KPiAJU3dhcFRvdGFsOiAgICAgICAgICAgICAwIGtCDQo+ IAlTd2FwRnJlZTogICAgICAgICAgICAgIDAga0INCj4gCURpcnR5OiAgICAgICAgICAgICAgICAx MiBrQg0KPiAJV3JpdGViYWNrOiAgICAgICAgICAgICAwIGtCDQo+IAlBbm9uUGFnZXM6ICAgICAg ICAxNDQxODQga0INCj4gCU1hcHBlZDogICAgICAgICAgICA0OTAwNCBrQg0KPiAJU2htZW06ICAg ICAgICAgICAgICAgMjgwIGtCDQo+IAlTbGFiOiAgICAgICAgICAgICAgNzc1NzIga0INCj4gCVNS ZWNsYWltYWJsZTogICAgICAzMTU4MCBrQg0KPiAJU1VucmVjbGFpbTogICAgICAgIDQ1OTkyIGtC DQo+IAlLZXJuZWxTdGFjazogICAgICAgIDI5MDQga0INCj4gCVBhZ2VUYWJsZXM6ICAgICAgICAg Nzc0NCBrQg0KPiAJTkZTX1Vuc3RhYmxlOiAgICAgICAgICAwIGtCDQo+IAlCb3VuY2U6ICAgICAg ICAgICAgICAgIDAga0INCj4gCVdyaXRlYmFja1RtcDogICAgICAgICAgMCBrQg0KPiAJQ29tbWl0 TGltaXQ6ICAgIDMyNDIxNjgwIGtCDQo+IAlDb21taXR0ZWRfQVM6ICAgICAzODMzMTYga0INCj4g CVZtYWxsb2NUb3RhbDogICAzNDM1OTczODM2NyBrQg0KPiAJVm1hbGxvY1VzZWQ6ICAgICAgMzc4 OTkyIGtCDQo+IAlWbWFsbG9jQ2h1bms6ICAgMzQzNTkzNTI3MzYga0INCj4gCUhhcmR3YXJlQ29y cnVwdGVkOiAgICAgMCBrQg0KPiAJQW5vbkh1Z2VQYWdlczogICAgIDczNzI4IGtCDQo+IAlIdWdl UGEJZ2VzX1RvdGFsOiAgICAgNTAwDQo+IAlIdWdlUGFnZXNfRnJlZTogICAgICAgIDkNCj4gCUh1 Z2VQYWdlc19Sc3ZkOiAgICAgICAgOQ0KPiAJSHVnZVBhZ2VzX1N1cnA6ICAgICAgICAwDQo+IAlI dWdlcGFnZXNpemU6ICAgICAgIDIwNDgga0INCj4gCURpcmVjdE1hcDRrOiAgICAgICAgNDA5NiBr Qg0KPiAJRGlyZWN0TWFwMk06ICAgICAyMDI3NTIwIGtCDQo+IAlEaXJlY3RNYXAxRzogICAgNjUw MTE3MTIga0INCj4NCj4NCj4gTG9nOg0KPiAJRUFMOiBEZXRlY3RlZCBsY29yZSAwIGFzIGNvcmUg MCBvbiBzb2NrZXQgMA0KPiAJRUFMOiBEZXRlY3RlZCBsY29yZSAxIGFzIGNvcmUgMSBvbiBzb2Nr ZXQgMA0KPiAJRUFMOiBEZXRlY3RlZCBsY29yZSAyIGFzIGNvcmUgMiBvbiBzb2NrZXQgMA0KPiAJ RUFMOiBEZXRlY3RlZCBsY29yZSAzIGFzIGNvcmUgMyBvbiBzb2NrZXQgMA0KPiAJRUFMOiBEZXRl Y3RlZCBsY29yZSA0IGFzIGNvcmUgNCBvbiBzb2NrZXQgMA0KPiAJRUFMOiBEZXRlY3RlZCBsY29y ZSA1IGFzIGNvcmUgNSBvbiBzb2NrZXQgMA0KPiAJRUFMOiBEZXRlY3RlZCBsY29yZSA2IGFzIGNv cmUgMCBvbiBzb2NrZXQgMA0KPiAJRUFMOiBEZXRlY3RlZCBsY29yZSA3IGFzIGNvcmUgMSBvbiBz b2NrZXQgMA0KPiAJRUFMOiBEZXRlY3RlZCBsY29yZSA4IGFzIGNvcmUgMiBvbiBzb2NrZXQgMA0K PiAJRUFMOiBEZXRlY3RlZCBsY29yZSA5IGFzIGNvcmUgMyBvbiBzb2NrZXQgMA0KPiAJRUFMOiBE ZXRlY3RlZCBsY29yZSAxMCBhcyBjb3JlIDQgb24gc29ja2V0IDANCj4gCUVBTDogRGV0ZWN0ZWQg bGNvcmUgMTEgYXMgY29yZSA1IG9uIHNvY2tldCAwDQo+IAlFQUw6IFN1cHBvcnQgbWF4aW11bSAx MjggbG9naWNhbCBjb3JlKHMpIGJ5IGNvbmZpZ3VyYXRpb24uDQo+IAlFQUw6IERldGVjdGVkIDEy IGxjb3JlKHMpDQo+IAlFQUw6IFNldHRpbmcgdXAgbWVtb3J5Li4uDQo+IAlFQUw6IEFzayBhIHZp cnR1YWwgYXJlYSBvZiAweDIwMDAwMCBieXRlcw0KPiAJRUFMOiBWaXJ0dWFsIGFyZWEgZm91bmQg YXQgMHg3ZmQyNmM4MDAwMDAgKHNpemUgPSAweDIwMDAwMCkNCj4gCUVBTDogQXNrIGEgdmlydHVh bCBhcmVhIG9mIDB4MzU4MDAwMDAgYnl0ZXMNCj4gCUVBTDogVmlydHVhbCBhcmVhIGZvdW5kIGF0 IDB4N2ZkMjM2ZTAwMDAwIChzaXplID0gMHgzNTgwMDAwMCkNCj4gCUVBTDogUmVxdWVzdGluZyA0 MjkgcGFnZXMgb2Ygc2l6ZSAyTUIgZnJvbSBzb2NrZXQgMA0KPiAJRUFMOiBUU0MgZnJlcXVlbmN5 IGlzIH4yNDAwMDAxIEtIeg0KPiAJRUFMOiBNYXN0ZXIgbGNvcmUgMCBpcyByZWFkeSAodGlkPTZj ZDQwODgwO2NwdXNldD1bMF0pDQo+IAlQTUQ6IEVOSUNQTUQgdHJhY2U6IHJ0ZV9lbmljX3BtZF9p bml0DQo+IAlFQUw6IGxjb3JlIDYgaXMgcmVhZHkgKHRpZD0zMzFmNzcwMDtjcHVzZXQ9WzZdKQ0K PiAJRUFMOiBsY29yZSA1IGlzIHJlYWR5ICh0aWQ9MzNiZjg3MDA7Y3B1c2V0PVs1XSkNCj4gCUVB TDogbGNvcmUgOSBpcyByZWFkeSAodGlkPTMxM2Y0NzAwO2NwdXNldD1bOV0pDQo+IAlFQUw6IGxj b3JlIDExIGlzIHJlYWR5ICh0aWQ9MmZmZjI3MDA7Y3B1c2V0PVsxMV0pDQo+IAlFQUw6IGxjb3Jl IDQgaXMgcmVhZHkgKHRpZD0zNDVmOTcwMDtjcHVzZXQ9WzRdKQ0KPiAJRUFMOiBsY29yZSA4IGlz IHJlYWR5ICh0aWQ9MzFkZjU3MDA7Y3B1c2V0PVs4XSkNCj4gCUVBTDogbGNvcmUgMSBpcyByZWFk eSAodGlkPTM2M2ZjNzAwO2NwdXNldD1bMV0pDQo+IAlFQUw6IGxjb3JlIDEwIGlzIHJlYWR5ICh0 aWQ9MzA5ZjM3MDA7Y3B1c2V0PVsxMF0pDQo+IAlFQUw6IGxjb3JlIDMgaXMgcmVhZHkgKHRpZD0z NGZmYTcwMDtjcHVzZXQ9WzNdKQ0KPiAJRUFMOiBsY29yZSAyIGlzIHJlYWR5ICh0aWQ9MzU5ZmI3 MDA7Y3B1c2V0PVsyXSkNCj4gCUVBTDogbGNvcmUgNyBpcyByZWFkeSAodGlkPTMyN2Y2NzAwO2Nw dXNldD1bN10pDQo+IAlFQUw6IFBDSSBkZXZpY2UgMDAwMDowMTowMC4wIG9uIE5VTUEgc29ja2V0 IDANCj4gCUVBTDogICBwcm9iZSBkcml2ZXI6IDgwODY6MTUyMSBydGVfaWdiX3BtZA0KPiAJRUFM OiAgIE5vdCBtYW5hZ2VkIGJ5IGEgc3VwcG9ydGVkIGtlcm5lbCBkcml2ZXIsIHNraXBwZWQNCj4g CUVBTDogUENJIGRldmljZSAwMDAwOjAxOjAwLjEgb24gTlVNQSBzb2NrZXQgMA0KPiAJRUFMOiAg IHByb2JlIGRyaXZlcjogODA4NjoxNTIxIHJ0ZV9pZ2JfcG1kDQo+IAlFQUw6ICAgTm90IG1hbmFn ZWQgYnkgYSBzdXBwb3J0ZWQga2VybmVsIGRyaXZlciwgc2tpcHBlZA0KPiAJRUFMOiBQQ0kgZGV2 aWNlIDAwMDA6MDM6MDAuMCBvbiBOVU1BIHNvY2tldCAwDQo+IAlFQUw6ICAgcHJvYmUgZHJpdmVy OiA4MDg2OjEwZmIgcnRlX2l4Z2JlX3BtZA0KPiAJRUFMOiAgIE5vdCBtYW5hZ2VkIGJ5IGEgc3Vw cG9ydGVkIGtlcm5lbCBkcml2ZXIsIHNraXBwZWQNCj4gCUVBTDogUENJIGRldmljZSAwMDAwOjAz OjAwLjEgb24gTlVNQSBzb2NrZXQgMA0KPiAJRUFMOiAgIHByb2JlIGRyaXZlcjogODA4NjoxMGZi IHJ0ZV9peGdiZV9wbWQNCj4gCUVBTDogICBOb3QgbWFuYWdlZCBieSBhIHN1cHBvcnRlZCBrZXJu ZWwgZHJpdmVyLCBza2lwcGVkDQo+IAkgIEFsbG9jYXRpbmcgMC4xR0I6IFBBU1MNCj4gCSAgQWxs b2NhdGluZyAwLjJHQjogUEFTUw0KPiAJICBBbGxvY2F0aW5nIDAuM0dCOiBQQVNTDQo+IAkgIEFs bG9jYXRpbmcgMC40R0I6IGZhaWwNCj4gCSAgQWxsb2NhdGluZyAwLjVHQjogZmFpbA0KPiAJICBB bGxvY2F0aW5nIDAuNkdCOiBmYWlsDQo+IAkgIEFsbG9jYXRpbmcgMC43R0I6IGZhaWwNCj4gCSAg QWxsb2NhdGluZyAwLjhHQjogZmFpbA0KPiAJICBBbGxvY2F0aW5nIDAuOUdCOiBmYWlsDQo+IAkg IEFsbG9jYXRpbmcgMS4wR0I6IGZhaWwNCj4gCSAgQWxsb2NhdGluZyAxLjFHQjogZmFpbA0KPiAJ ICBBbGxvY2F0aW5nIDEuMkdCOiBmYWlsDQo+IAkgIEFsbG9jYXRpbmcgMS4zR0I6IGZhaWwNCj4g CSAgQWxsb2NhdGluZyAxLjRHQjogZmFpbA0KPiAJICBBbGxvY2F0aW5nIDEuNUdCOiBmYWlsDQo+ IAkgIEFsbG9jYXRpbmcgMS42R0I6IGZhaWwNCj4gCSAgQWxsb2NhdGluZyAxLjdHQjogZmFpbA0K PiAJICBBbGxvY2F0aW5nIDEuOEdCOiBmYWlsDQo+IAkgIEFsbG9jYXRpbmcgMS45R0I6IGZhaWwN Cj4gCSAgQWxsb2NhdGluZyAyLjBHQjogZmFpbA0KPiAJICBBbGxvY2F0aW5nIDIuMUdCOiBmYWls DQo+IAkgIEFsbG9jYXRpbmcgMi4yR0I6DQo+DQo+IFRoYW5rcywNCj4gQWxhaW4NCj4NCj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU2VyZ2lvIEdvbnphbGV6IE1vbnJveSBb bWFpbHRvOnNlcmdpby5nb256YWxlei5tb25yb3lAaW50ZWwuY29tXQ0KPiBTZW50OiBNb25kYXks IEphbnVhcnkgMjUsIDIwMTYgNTo1MCBBTQ0KPiBUbzogQWxhaW4gR2F1dGhlcm90IDxhbGFpbkBl ZGljb2dlbm9tZS5jb20+OyB1c2Vyc0BkcGRrLm9yZw0KPiBTdWJqZWN0OiBSZTogW2RwZGstdXNl cnNdIFVzaW5nIERQREsgZm9yIGNvbnRpZ3VvdXMgcGh5c2ljYWwgbWVtb3J5IA0KPiBhbGxvY2F0 aW9uDQo+DQo+IE9uIDIzLzAxLzIwMTYgMDA6MjAsIEFsYWluIEdhdXRoZXJvdCB3cm90ZToNCj4+ IEhlbGxvLA0KPj4NCj4+IEkgY2FtZSBhY3Jvc3MgRFBESyBpbiBhIHRocmVhZCBAIGh0dHA6Ly9z dGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDQwMTkxMi9saW51eC1jb250aWd1b3VzLXBoeXNp Y2FsLW1lbW9yeS1mcm9tLXVzZXJzcGFjZSAoYm90dG9tIHJlcGx5IGZyb20gbXJzbWl0aCkgYW5k IHdhbnRlZCB0byBzZWUgaWYgSSBjYW4gdXNlIHJ0ZV9tYWxsb2MoKSB0byBhbGxvY2F0ZSBsYXJn ZSBibG9ja3Mgb2YgY29udGlndW91cyBwaHlzaWNhbCBtZW1vcnkgKDE2R0Igb3IgZXZlbiAzMkdC IGF0IHNvbWUgcG9pbnQpLg0KPj4NCj4+IFRoZSBwbGF0Zm9ybSBJJ20gd29ya2luZyBvbiBoYXMg YW4gRlBHQSB0aGF0IHNoYXJlcyBob3N0IG1lbW9yeSB3aXRoIHRoZSB4ODZfNjQgY29yZXMgdmlh IGEgUVBJIGxpbmsuDQo+PiBUaGUgRlBHQSBjcnVuY2hlcyBkYXRhIGRpcmVjdGx5IGZyb20gaG9z dCBtZW1vcnkgYW5kIHVzZXMgcGh5c2ljYWwgYWRkcmVzc2VzIChtb3N0bHkgYSBRUEkgbGltaXRh dGlvbiwgYnV0IGl0IGlzIGFsc28gZGljdGF0ZWQgYnkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlv bnMgYW5kIHRoZSBhYmlsaXR5IHRvIG1ha2UgdGhlIGJlc3QgcG9zc2libGUgdXNlIG9mIG11bHRp cGxlIG1lbW9yeSBjb250cm9sbGVycykuDQo+PiBUaGUgZGF0YSBzaGFyZWQgaXMgMTZHQiBvciB1 cCB0byAzMkdCIGFuZCBjb3VsZCBiZSBwcm92aWRlZCBhcyBtdWx0aXBsZSBkZXNjcmlwdG9ycyB0 byB0aGUgRlBHQSwgYnV0IHRoYXQgc3RpbGwgbWVhbnMgdGhhdCBlYWNoIGRlc2NyaXB0b3IgaXMg aW4gdGhlIG9yZGVyIG9mIHNldmVyYWwgR0J5dGVzIGVhY2guDQo+PiBJIHVuZGVyc3RhbmQgdGhh dCBhbGxvY2F0aW9uIG1heSBmYWlsLCBidXQgaXMgb2sgZm9yIG5vdywgc2luY2UgSSdtIHN0aWxs IGluIHRoZSBwcm9vZi1vZi1jb25jZXB0IHN0YWdlLCB0cnlpbmcgdG8gcnVsZSB0aGluZ3Mgb3V0 Lg0KPj4NCj4+IE15IHNhbXBsZSBhcHBsaWNhdGlvbiBhdHRlbXB0cyB0byBhbGxvY2F0ZSBtZW1v cnkgYnkgY2h1bmtzIG9mIDEwME1CIGxpa2Ugc286DQo+Pg0KPj4gaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQ0KPj4gew0KPj4gICAgIGludCByZXQ7DQo+Pg0KPj4gICAgIHJldCA9IHJ0 ZV9lYWxfaW5pdChhcmdjLCBhcmd2KTsNCj4+ICAgICBpZiAocmV0IDwgMCkgew0KPj4gICAgICAg cnRlX3BhbmljKCJDYW5ub3QgaW5pdCBFQUxcbiIpOw0KPj4gICAgIH0NCj4+DQo+PiAgICAgaW50 ICBpOw0KDQpJIGdldCB3YXJuaW5nIHdpdGggdGhpcyBjb2RlLiBJdCB3YXJucyBvZiB1bmRlZmlu ZWQgYmVoYXZpb3IgYmVjYXVzZSBvZiBzaWduZWQgaW50ZWdlciBvdmVyZmxvdy4NCkNvdWxkIHlv dSBjaGFuZ2UgdGhlIGFib3ZlICdpbnQgaScgdG8gJ3NpemVfdCBpJyBhbmQgcnVuIGl0IGFnYWlu Pw0KDQpTZXJnaW8NCj4+ICAgICBmb3IgKGkgPSAxOyBpIDw9IDEwMDsgKytpKSB7DQo+PiAgICAg ICBzaXplX3QgIGFsbG9jc2l6ZSA9IGkgKiAxMDAqMTAwMCoxMDAwOw0KPj4NCj4+ICAgICAgIHBy aW50ZigiICBBbGxvY2F0aW5nICUzLjFmR0I6ICIsICgoZmxvYXQgKWkpLzEwLjBmKTsNCj4+ICAg ICAgIGZmbHVzaChzdGRvdXQpOw0KPj4gICAgICAgdm9pZCogIHB0ciA9IHJ0ZV9tYWxsb2MoTlVM TCwgYWxsb2NzaXplLCAwVSk7DQo+PiAgICAgICBpZiAocHRyICE9IE5VTEwpIHsNCj4+ICAgICAg ICAgcHJpbnRmKCJQQVNTXG4iKTsNCj4+ICAgICAgICAgcnRlX2ZyZWUocHRyKTsNCj4+ICAgICAg IH0gZWxzZSB7DQo+PiAgICAgICAgIHByaW50ZigiZmFpbFxuIik7DQo+PiAgICAgICB9DQo+PiAg ICAgfQ0KPj4NCj4+ICAgICBwcmludGYoIkRvbmVcbiIpOw0KPj4gICAgIHJldHVybiAwOw0KPj4g fQ0KPj4NCj4+IEkgZ2V0IGEgY29uc2lzdGVudCBjcmFzaCBAIHRoZSAyLjJHQiBtYXJrOg0KPj4g KGdkYikgciAtYyBmIC1uIDQNCj4+IC4uLg0KPj4gRUFMOiBQQ0kgZGV2aWNlIDAwMDA6MDY6MDAu MSBvbiBOVU1BIHNvY2tldCAwDQo+PiBFQUw6ICAgcHJvYmUgZHJpdmVyOiA4MDg2OjE1MjEgcnRl X2lnYl9wbWQNCj4+IEVBTDogICBOb3QgbWFuYWdlZCBieSBhIHN1cHBvcnRlZCBrZXJuZWwgZHJp dmVyLCBza2lwcGVkDQo+PiAgICAgQWxsb2NhdGluZyAwLjFHQjogZmFpbA0KPj4gICAgIEFsbG9j YXRpbmcgMC4yR0I6IGZhaWwNCj4+ICAgICAuLi4NCj4+ICAgICBBbGxvY2F0aW5nIDIuMEdCOiBm YWlsDQo+PiAgICAgQWxsb2NhdGluZyAyLjFHQjogZmFpbA0KPj4gICAgIEFsbG9jYXRpbmcgMi4y R0I6DQo+PiBQcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1 bHQuDQo+PiAweDAwMDAwMDAwMDA0YzY3NzAgaW4gbWFsbG9jX2VsZW1faW5pdCAoZWxlbT0weDgw MDA3MGVhYTg4MCwgaGVhcD0weDdmZmZmN2ZlNTYxYywgbXo9MHg3ZmZmZjdmYjJjMWMsIHNpemU9 MjIwMDAwMDA2NCkNCj4+ICAgICAgIGF0IC9ob21lL2FsYWluZy9JTlRFTC9kcGRrLTIuMC4wL2xp Yi9saWJydGVfbWFsbG9jL21hbGxvY19lbGVtLmM6NjENCj4+IDYxICAgICAgICAgICAgICBlbGVt LT5oZWFwID0gaGVhcDsNCj4+IE1pc3Npbmcgc2VwYXJhdGUgZGVidWdpbmZvcywgdXNlOiBkZWJ1 Z2luZm8taW5zdGFsbCANCj4+IGdsaWJjLTIuMTItMS4xNDkuZWw2XzYuNS54ODZfNjQNCj4+IChn ZGIpIGJ0DQo+PiAuLi4NCj4+ICMwICAweDAwMDAwMDAwMDA0YzY3NzAgaW4gbWFsbG9jX2VsZW1f aW5pdCAoZWxlbT0weDgwMDA3MGVhYTg4MCwgaGVhcD0weDdmZmZmN2ZlNTYxYywgbXo9MHg3ZmZm ZjdmYjJjMWMsIHNpemU9MjIwMDAwMDA2NCkNCj4+ICAgICAgIGF0IA0KPj4gL2hvbWUvYWxhaW5n L0lOVEVML2RwZGstMi4wLjAvbGliL2xpYnJ0ZV9tYWxsb2MvbWFsbG9jX2VsZW0uYzo2MQ0KPj4g IzEgIDB4MDAwMDAwMDAwMDRjNjk0ZSBpbiBzcGxpdF9lbGVtIChlbGVtPTB4N2ZmZmYzZTAwMDAw LCANCj4+IHNwbGl0X3B0PTB4ODAwMDcwZWFhODgwKSBhdCANCj4+IC9ob21lL2FsYWluZy9JTlRF TC9kcGRrLTIuMC4wL2xpYi9saWJydGVfbWFsbG9jL21hbGxvY19lbGVtLmM6MTIxDQo+PiAjMiAg MHgwMDAwMDAwMDAwNGM2YmRhIGluIG1hbGxvY19lbGVtX2FsbG9jIChlbGVtPTB4N2ZmZmYzZTAw MDAwLCBzaXplPTE4NDQ2NzQ0MDcxNjE0NTg0MzIwLCBhbGlnbj02NCkNCj4+ICAgICAgIGF0IA0K Pj4gL2hvbWUvYWxhaW5nL0lOVEVML2RwZGstMi4wLjAvbGliL2xpYnJ0ZV9tYWxsb2MvbWFsbG9j X2VsZW0uYzoyMjMNCj4+ICMzICAweDAwMDAwMDAwMDA0YzczNmUgaW4gbWFsbG9jX2hlYXBfYWxs b2MgKGhlYXA9MHg3ZmZmZjdmZTU2MWMsIHR5cGU9MHgwLCBzaXplPTE4NDQ2NzQ0MDcxNjE0NTg0 MzIwLCBhbGlnbj02NCkNCj4+ICAgICAgIGF0IA0KPj4gL2hvbWUvYWxhaW5nL0lOVEVML2RwZGst Mi4wLjAvbGliL2xpYnJ0ZV9tYWxsb2MvbWFsbG9jX2hlYXAuYzoxNjcNCj4+ICM0ICAweDAwMDAw MDAwMDA0YzBhYTEgaW4gcnRlX21hbGxvY19zb2NrZXQgKHR5cGU9MHgwLCBzaXplPTE4NDQ2NzQ0 MDcxNjE0NTg0MzIwLCBhbGlnbj0wLCBzb2NrZXRfYXJnPS0xKQ0KPj4gICAgICAgYXQgDQo+PiAv aG9tZS9hbGFpbmcvSU5URUwvZHBkay0yLjAuMC9saWIvbGlicnRlX21hbGxvYy9ydGVfbWFsbG9j LmM6ODkNCj4+ICM1ICAweDAwMDAwMDAwMDA0YzBiNWIgaW4gcnRlX21hbGxvYyAodHlwZT0weDAs IA0KPj4gc2l6ZT0xODQ0Njc0NDA3MTYxNDU4NDMyMCwgYWxpZ249MCkgYXQgDQo+PiAvaG9tZS9h bGFpbmcvSU5URUwvZHBkay0yLjAuMC9saWIvbGlicnRlX21hbGxvYy9ydGVfbWFsbG9jLmM6MTE1 DQo+PiAjNiAgMHgwMDAwMDAwMDAwNDFjYTZlIGluIG1haW4gKGFyZ2M9NSwgYXJndj0weDdmZmZm ZmZmZGQ0OCkgYXQgDQo+PiAvaG9tZS9hbGFpbmcvSU5URUwvZHBkay0yLjAuMC9leGFtcGxlcy9o dWdlcGh5bWVtL21haW4uYzo2Ng0KPj4NCj4+DQo+PiBIYXMgYW55Ym9keSBzZWVuIHN1Y2ggYW4g aXNzdWU/DQo+PiBDb3VsZCBJIGJlIG1pc3VzaW5nIFJURSBzb21laG93Pw0KPj4NCj4gV2hhdCBv cHRpb25zIGFyZSB5b3UgcnVubmluZyB5b3VyIERQREsgYXBwIHdpdGg/DQo+DQo+IENhbiB5b3Ug YWxzbyBwcm92aWRlIHRoZSBmdWxsIGluaXRpYWxpemF0aW9uIGxvZyBhbmQgaHVnZXBhZ2UgaW5m bz8NCj4NCj4gU2VyZ2lvDQo+PiBUaGFua3MgZm9yIHlvdXIgdGltZSwNCj4+IEFsYWluDQo+Pg0K Pj4NCj4+IC0tDQo+PiBBbGFpbiBHYXV0aGVyb3QNCj4+IEVkaWNvIEdlbm9tZQ0KPj4NCj4gLS0t LS0tLS0tLS0tLS0gbmV4dCBwYXJ0IC0tLS0tLS0tLS0tLS0tIEFuIGVtYmVkZGVkIGFuZCANCj4g Y2hhcnNldC11bnNwZWNpZmllZCB0ZXh0IHdhcyBzY3J1YmJlZC4uLg0KPiBOYW1lOiBkcGRrX2xv Zy50eHQNCj4gVVJMOiANCj4gPGh0dHA6Ly9kcGRrLm9yZy9tbC9hcmNoaXZlcy91c2Vycy9hdHRh Y2htZW50cy8yMDE2MDEyNS8zZmEwYjA1Yy9hdHRhYw0KPiBobWVudC50eHQ+DQoNCg==