From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130042.outbound.protection.outlook.com [40.107.13.42]) by dpdk.org (Postfix) with ESMTP id AF94B1F28 for ; Mon, 19 Nov 2018 12:20:15 +0100 (CET) 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:X-MS-Exchange-SenderADCheck; bh=3yyPIFcYykEoealKEqgGdFlA7PlvfwZ2Bx2XWp3GKA8=; b=fOLCTf+IIBZih1cP1l5uSXs0nbn4LfYREajKTu3NTFxQUHxR+LFmjiNFqaYvWM22EIlGXtmuWe+RLwZS5i4bTDMxRjdkT8/wsvTiMuTBXRUScz0b40Cyo/pNRtvxObbk/9mvU8WSET82rW5sTOs7ELOxcVskwTrgVDYcPIlCkPA= Received: from DB7PR05MB4426.eurprd05.prod.outlook.com (52.134.109.15) by DB7PR05MB4939.eurprd05.prod.outlook.com (20.176.235.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.20; Mon, 19 Nov 2018 11:20:13 +0000 Received: from DB7PR05MB4426.eurprd05.prod.outlook.com ([fe80::bc22:c2f5:208d:826f]) by DB7PR05MB4426.eurprd05.prod.outlook.com ([fe80::bc22:c2f5:208d:826f%2]) with mapi id 15.20.1294.048; Mon, 19 Nov 2018 11:20:13 +0000 From: Shahaf Shuler To: "Burakov, Anatoly" , "dev@dpdk.org" CC: Olga Shern , Yongseok Koh , "pawelx.wodkowski@intel.com" , "gowrishankar.m@linux.vnet.ibm.com" , "ferruh.yigit@intel.com" , Thomas Monjalon , "arybchenko@solarflare.com" , "shreyansh.jain@nxp.com" Thread-Topic: [RFC] ethdev: introduce DMA memory mapping for external memory Thread-Index: AQHUfAvf4jIdUz85H0GyxZG2DmtVfqVPTGBQgAA0OwCAARQOsIAAF9cAgAYYTHA= Date: Mon, 19 Nov 2018 11:20:13 +0000 Message-ID: References: <6c7243cd-5370-846b-2999-5ae34722f640@intel.com> In-Reply-To: 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; DB7PR05MB4939; 6:nctk9GSC6zl3z8ORTr8ze49De3J1xjtNQlpgXtT8NtgH+IZeF27kmaObkMX5088wKJzfV4Tla2sTrjq6QYOqtVuZhoOuPKMWu5jMh0nAEntPh4/IQSycGQMYnoQfiOF+O5Q/molekWzZhWz8KlmGxdLAF0LAvdPjNxCIakS2t/gCpmTpMr0ZOtzKAnAR1p0BpuQ3kE2UIwQckutCY9un/0gGlfNFaikDhjmfVIsU/wOaNLIy9H75eLetOS8awKGigjxzOyUBaLNygn5mTwndKk+itKFPzmjqxdZT0CJKXj1FWGjbitjPcuLHPp+IytS4azVqe3YElbVytYuQpsi0V+vo7nImXABVKdw/8JmdV45bnHA4WbgakpQ/wj4oJ3DMHPl3eCnT0KKTRk5aJmuVQi5rD6kb4FNUWmN4hRfGfGMNDtepGE+OuI+RfawwuAgWx+yzRtFPGCBTNIwikjm+6w==; 5:HDFSw0PZ6yDjKL/Ct8/Zl7Cy3UUIQdEgIH1WImDhM6Bm2ZhLN+EP1rwAAOe7sKXii2Sl42g+IJ6vfi+6QhVBt1wmHxse8s0eOK0hKM+d/w9qUMVM2A/q7o7BMmXjlxK3CXNQ1FkeMZfE0osF/EHgQONyUjXeBSl97Hw8l7BnJTU=; 7:KvfrIRhZplmp1irZdz3uQJPB3YDc1yM+4d05fZGHsRldir0U51sKJxkybmZnvIT6q35ywsCWIx+hlzczj72NENCbEajKq7Lby63apMU+KRpjk28KroG2gYmYN7nP/SaH44XlYv+pLtfrO7FKsvf+ng== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: cd4403be-cf28-4b04-53b6-08d64e10f9a5 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:DB7PR05MB4939; x-ms-traffictypediagnostic: DB7PR05MB4939: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(45079756050767)(189930954265078)(131327999870524); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231415)(944501410)(4982022)(52105112)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:DB7PR05MB4939; BCL:0; PCL:0; RULEID:; SRVR:DB7PR05MB4939; x-forefront-prvs: 08617F610C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(396003)(39860400002)(136003)(376002)(346002)(189003)(199004)(2906002)(4326008)(66066001)(4744004)(14444005)(86362001)(256004)(9686003)(55016002)(6306002)(478600001)(2501003)(68736007)(53936002)(316002)(6116002)(3846002)(93886005)(110136005)(71190400001)(71200400001)(54906003)(105586002)(446003)(33656002)(7736002)(6436002)(25786009)(76176011)(106356001)(305945005)(5660300001)(486006)(476003)(74316002)(8676002)(99286004)(966005)(11346002)(229853002)(26005)(186003)(45080400002)(81156014)(2900100001)(81166006)(6246003)(7696005)(14454004)(6506007)(53546011)(8936002)(102836004)(97736004); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR05MB4939; H:DB7PR05MB4426.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-microsoft-antispam-message-info: POb7lFYYKG7RGjVJGMmSDut35o5fAl7/Kpvj8vznNn2W394o4YVYYsu+WSz01T6vZXACJv99NQf08l+XzWZceVVfGYTJF4Apyc5ckvz1jm0j+13NBlzfZmgdkqrQMTZAswZuHNryXECCA2w4alLV5B4/9TJniDY1uGFUsFVqOlaLb7dIxOqTMRMLBzl2lyNhFXCd3YzetdWtC3CGLZtBQf7gB4v59KCKiRVxa3E+c3CVudf0/4YB9ZCQP/Gd6YOFmwbhF0LfRxZ/lNKougqj5SaqoGsT1aPF3faRNtS7V5C2Kr8a9dZe2dIUSewQyGOLTrSB9XlTohd3C61+pevx107qMJ3ZSS7xSTTEWb0D1KQ= 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-Network-Message-Id: cd4403be-cf28-4b04-53b6-08d64e10f9a5 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Nov 2018 11:20:13.2902 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR05MB4939 Subject: Re: [dpdk-dev] [RFC] ethdev: introduce DMA memory mapping for external memory 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: Mon, 19 Nov 2018 11:20:16 -0000 VGh1cnNkYXksIE5vdmVtYmVyIDE1LCAyMDE4IDE6MDAgUE0sIEJ1cmFrb3YsIEFuYXRvbHk6DQo+ IFN1YmplY3Q6IFJlOiBbUkZDXSBldGhkZXY6IGludHJvZHVjZSBETUEgbWVtb3J5IG1hcHBpbmcg Zm9yIGV4dGVybmFsDQo+IG1lbW9yeQ0KPiANCj4gT24gMTUtTm92LTE4IDk6NDYgQU0sIFNoYWhh ZiBTaHVsZXIgd3JvdGU6DQo+ID4gV2VkbmVzZGF5LCBOb3ZlbWJlciAxNCwgMjAxOCA3OjA2IFBN LCBCdXJha292LCBBbmF0b2x5Og0KPiA+PiBTdWJqZWN0OiBSZTogW1JGQ10gZXRoZGV2OiBpbnRy b2R1Y2UgRE1BIG1lbW9yeSBtYXBwaW5nIGZvciBleHRlcm5hbA0KPiA+PiBtZW1vcnkNCj4gPj4N Cj4gPj4gT24gMTQtTm92LTE4IDI6NTMgUE0sIFNoYWhhZiBTaHVsZXIgd3JvdGU6DQo+ID4+PiBI aSBBbmF0b2x5LA0KPiA+Pj4NCj4gPj4+IFdlZG5lc2RheSwgTm92ZW1iZXIgMTQsIDIwMTggMTox OSBQTSwgQnVyYWtvdiwgQW5hdG9seToNCj4gPj4+PiBTdWJqZWN0OiBSZTogW1JGQ10gZXRoZGV2 OiBpbnRyb2R1Y2UgRE1BIG1lbW9yeSBtYXBwaW5nIGZvcg0KPiA+Pj4+IGV4dGVybmFsIG1lbW9y eQ0KPiA+Pj4+DQo+ID4+Pj4gSGkgU2hhaGFmLA0KPiA+Pj4+DQo+ID4+Pj4gR3JlYXQgdG8gc2Vl IHN1Y2ggZWZmb3J0ISBGZXcgY29tbWVudHMgYmVsb3cuDQo+ID4+Pj4NCj4gPj4+PiBOb3RlOiBo YWxmd2F5IHRocm91Z2ggd3JpdGluZyBteSBjb21tZW50cyBpIHJlYWxpemVkIHRoYXQgaSBhbQ0K PiA+Pj4+IHN0YXJ0aW5nIHdpdGggYW4gYXNzdW1wdGlvbiB0aGF0IHRoaXMgQVBJIGlzIGEgcmVw bGFjZW1lbnQgZm9yDQo+ID4+Pj4gY3VycmVudCBWRklPIERNQSBtYXBwaW5nIEFQSSdzLiBTbywg aWYgbXkgY29tbWVudHMgc2VlbSBvdXQgb2YgbGVmdA0KPiA+Pj4+IGZpZWxkLCB0aGlzIGlzIHBy b2JhYmx5IHdoeSA6KQ0KPiA+Pj4+DQo+ID4+Pj4gT24gMDQtTm92LTE4IDEyOjQxIFBNLCBTaGFo YWYgU2h1bGVyIHdyb3RlOg0KPiA+Pj4+PiBSZXF1ZXN0IGZvciBjb21tZW50IG9uIHRoZSBoaWdo IGxldmVsIGNoYW5nZXMgcHJlc2VudCBvbiB0aGlzIHBhdGNoLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBU aGUgbmVlZCB0byB1c2UgZXh0ZXJuYWwgbWVtb3J5IChtZW1vcnkgYmVsb25nIHRvIGFwcGxpY2F0 aW9uIGFuZA0KPiA+Pj4+PiBub3QgcGFydCBvZiB0aGUgRFBESyBodWdlcGFnZXMpIGlzIGFsbHJl YWR5IHByZXNlbnQuDQo+ID4+Pj4+IFN0YXJ0aW5nIGZyb20gc3RvcmFnZSBhcHBzIHdoaWNoIHBy ZWZlciB0byBtYW5hZ2UgdGhlaXIgb3duIG1lbW9yeQ0KPiA+Pj4+PiBibG9ja3MgZm9yIGVmZmlj aWVudCB1c2Ugb2YgdGhlIHN0b3JhZ2UgZGV2aWNlLiBDb250aW51ZSB3aXRoIEdQVQ0KPiA+Pj4+ PiBiYXNlZCBhcHBsaWNhdGlvbiB3aGljaCBzdHJpdmVzIHRvIGFjaGlldmUgemVybyBjb3B5IHdo aWxlDQo+ID4+Pj4+IHByb2Nlc3NpbmcgdGhlIHBhY2tldCBwYXlsb2FkIG9uIHRoZSBHUFUgY29y ZS4gQW5kIGZpbmFsbHkgYnkNCj4gPj4+Pj4gdlN3aXRjaC92Um91dGVyIGFwcGxpY2F0aW9uIHdo byBqdXN0IHByZWZlciB0byBoYXZlIGEgZnVsbCBjb250cm9sDQo+ID4+Pj4+IG92ZXIgdGhlIG1l bW9yeSBpbiB1c2UNCj4gPj4+PiAoZS5nLiBWUFApLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBSZWNlbnQg d29ya1sxXSBpbiB0aGUgRFBESyBlbmFibGVkIHRoZSB1c2Ugb2YgZXh0ZXJuYWwgbWVtb3J5LA0K PiA+Pj4+PiBob3dldmVyIGl0IG1vc3RseSBmb2N1cyBvbiBWRklPIGFzIHRoZSBvbmx5IHdheSB0 byBtYXAgbWVtb3J5Lg0KPiA+Pj4+PiBXaGlsZSBWRklPIGlzIGNvbW1vbiwgdGhlcmUgYXJlIG90 aGVyIHZlbmRvcnMgd2hpY2ggdXNlIGRpZmZlcmVudA0KPiA+Pj4+PiB3YXlzIHRvIG1hcCBtZW1v cnkgKGUuZy4gTWVsbGFub3ggYW5kIE5YUFsyXSkuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoZSB3b3Jr IGluIHRoaXMgcGF0Y2ggbW92ZXMgdGhlIERNQSBtYXBwaW5nIHRvIHZlbmRvciBhZ25vc3RpYw0K PiA+Pj4+PiBBUElzIGxvY2F0ZWQgdW5kZXIgZXRoZGV2LiBUaGUgY2hvaWNlIGluIGV0aGRldiB3 YXMgYmVjYXVzZQ0KPiBtZW1vcnkNCj4gPj4+Pj4gbWFwIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdp dGggYSBzcGVjaWZpYyBwb3J0KHMpLiBPdGhlcndpc2UgdGhlDQo+ID4+Pj4+IG1lbW9yeSBpcyBi ZWluZyBtYXBwZWQgbXVsdGlwbGUgdGltZXMgdG8gZGlmZmVyZW50IGZyYW1ld29ya3MgYW5kDQo+ ID4+Pj4+IGVuZHMgdXAgd2l0aCBtZW1vcnkgYmVpbmcgd2FzdGVkIG9uIHJlZHVuZGFudCB0cmFu c2xhdGlvbiB0YWJsZSBpbg0KPiA+Pj4+PiB0aGUgaG9zdCBvciBpbiB0aGUNCj4gPj4+PiBkZXZp Y2UuDQo+ID4+Pj4NCj4gPj4+PiBTbywgYW55dGhpbmcgb3RoZXIgdGhhbiBldGhkZXYgKGUuZy4g Y3J5cHRvZGV2KSB3aWxsIG5vdCBiZSBhYmxlIHRvDQo+ID4+Pj4gbWFwIG1lbW9yeSBmb3IgRE1B Pw0KPiA+Pj4NCj4gPj4+IFRoYXQncyBpcyBhIGZhaXIgcG9pbnQuDQo+ID4+Pg0KPiA+Pj4+DQo+ ID4+Pj4gSSBoYXZlIHRob3VnaHQgYWJvdXQgdGhpcyBmb3Igc29tZSBsZW5ndGggb2YgdGltZSwg YW5kIGkgdGhpbmsgRE1BDQo+ID4+Pj4gbWFwcGluZyBiZWxvbmdzIGluIEVBTCAobW9yZSBzcGVj aWZpY2FsbHksIHNvbWV3aGVyZSBhdCB0aGUgYnVzDQo+ID4+Pj4gbGF5ZXIpLCByYXRoZXIgdGhh biBhdCBkZXZpY2UgbGV2ZWwuDQo+ID4+Pg0KPiA+Pj4gSSBhbSBub3Qgc3VyZSBJIGFncmVlIGhl cmUuIEZvciBleGFtcGxlIHRha2UgSW50ZWwgYW5kIE1lbGxhbm94IGRldmljZXMuDQo+ID4+IEJv dGggYXJlIFBDSSBkZXZpY2VzLCBzbyBob3cgd2lsbCB5b3UgZGlzdGluZ3Vpc2ggd2hpY2ggbWFw cGluZyBBUEkgdG8NCj4gdXNlPw0KPiA+Pj4gQWxzbyBJIHN0aWxsIHRoaW5rIHRoZSBtYXBwaW5n IHNob3VsZCBiZSBpbiBkZXZpY2UgZ3JhbnVsYXJpdHkgYW5kDQo+ID4+PiBub3QNCj4gPj4gYnVz L3N5c3RlbSBncmFudWxhcml0eSwgc2luY2UgaXQgaXMgdmVyeSB0eXBpY2FsIGZvciBhIG1lbW9y eSB0byBiZQ0KPiA+PiB1c2VkIGZvciBETUEgYmUgYSBzcGVjaWZpYyBkZXZpY2UuDQo+ID4+Pg0K PiA+Pj4gTWF5YmUgd2UgY2FuIHNheSB0aGUgRE1BIG1hcHBpbmcgaXMgYSBydGVfZGV2aWNlIGF0 dHJpYnV0ZS4gSXQgaXMNCj4gPj4+IHRoZQ0KPiA+PiBwYXJlbnQgY2xhc3MgZm9yIGFsbCB0aGUg RFBESyBkZXZpY2VzLg0KPiA+Pj4gV2UgbmVlZCB0byBzZWUgdy8gdnBvcnQgcmVwcmVzZW50b3Jz ICh3aGljaCBhbGwgaGFzIHRoZSBzYW1lDQo+IHJ0ZV9kZXZpY2UpLg0KPiA+PiBPbiB0aGF0IGNh c2UgSSBiZWxpZXZlIHRoZSBydGVfZGV2aWNlLm1hcCBjYWxsIGNhbiByZWdpc3RlciB0aGUNCj4g Pj4gbWVtb3J5IHRvIGFsbCBvZiB0aGUgcmVwcmVzZW50b3JzIGFzIHdlbGwgKGlmIG5lZWRlZCku DQo+ID4+Pg0KPiA+Pj4gUGxhY2luZyB0aGlzIGZ1bmN0aW9uYWxpdHkgYXQgZGV2aWNlIGxldmVs IGNvbWVzIHdpdGggbW9yZSB3b3JrDQo+ID4+Pj4gdG8gc3VwcG9ydCBkaWZmZXJlbnQgZGV2aWNl IHR5cGVzIGFuZCBwdXRzIGEgYnVyZGVuIG9uIGRldmljZQ0KPiA+Pj4+IGRyaXZlciBkZXZlbG9w ZXJzIHRvIGltcGxlbWVudCB0aGVpciBvd24gbWFwcGluZyBmdW5jdGlvbnMuDQo+ID4+Pg0KPiA+ Pj4gVGhlIG1hcHBpbmcgZnVuY3Rpb24gY2FuIGJlIHNoYXJlZC4gRm9yIGV4YW1wbGUgd2UgY2Fu IHN0aWxsDQo+ID4+PiBtYWludGFpbiB0aGUNCj4gPj4gdmZpbyBtYXBwaW5nIHNjaGVtZSBhcyBw YXJ0IG9mIGVhbCBhbmQgaGF2ZSBhbGwgdGhlIHJlbGF0ZWQgZHJpdmVyIHRvDQo+ID4+IGNhbGwg dGhpcyBmdW5jdGlvbi4NCj4gPj4+IFRoZSBvbmx5IG92ZXJoZWFkIHdpbGwgYmUgdG8gbWFpbnRh aW4gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgZm9yIHRoZSBkbWENCj4gY2FsbC4NCj4gPj4+IFdpdGgg dGhpcyB3b3JrLCBpbnN0ZWFkIG9mIHRoZSBlYWwgbGF5ZXIgdG8gZ3Vlc3Mgd2hpY2ggdHlwZSBv ZiBETUENCj4gPj4gbWFwcGluZyB0aGUgZGV2aWNlcyBpbiB0aGUgIHN5c3RlbSBuZWVkcyBvciBh bHRlcm5hdGl2ZWx5IGZvcmNlIHRoZW0NCj4gPj4gYWxsIHRvIHdvcmsgdy8gVkZJTywgZWFjaCBk cml2ZXIgd2lsbCBzZWxlY3QgaXRzIG93biBmdW5jdGlvbi4NCj4gPj4+IFRoZSBkcml2ZXIgaXMg dGhlIG9ubHkgb25lIHdoaWNoIGtub3dzIHdoYXQgdHlwZSBvZiBETUEgbWFwcGluZyBpdHMNCj4g Pj4gZGV2aWNlIG5lZWRzLg0KPiA+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEhvd2V2ZXIsIGkgaGF2ZSBu byBmYW1pbGlhcml0eSB3aXRoIGhvdyBNTFgvTlhQIGRldmljZXMgZG8gdGhlaXINCj4gPj4+PiBE TUEgbWFwcGluZywgc28gbWF5YmUgdGhlIGRldmljZS1jZW50cmljIGFwcHJvYWNoIHdvdWxkIGJl IGJldHRlci4NCj4gPj4+PiBXZSBjb3VsZCBwcm92aWRlICJzdGFuZGFyZCIgbWFwcGluZyBmdW5j dGlvbnMgYXQgdGhlIGJ1cyBsZXZlbA0KPiA+Pj4+IChzdWNoIGFzIFZGSU8gbWFwcGluZyBmdW5j dGlvbnMgZm9yIFBDSSBidXMpLCBzbyB0aGF0IHRoaXMgY291bGQNCj4gPj4+PiB3b3VsZCBub3Qg aGF2ZSB0byBiZSByZWltcGxlbWVudGVkIGluIHRoZSBkZXZpY2VzLg0KPiA+Pj4NCj4gPj4+IFll cywgbGlrZSBJIHNhaWQgYWJvdmUsIEkgd2Fzbid0IGludGVuZGluZyB0byByZS1pbXBsZW1lbnQg YWxsIHRoZQ0KPiA+Pj4gbWFwcGluZw0KPiA+PiBmdW5jdGlvbiBhZ2FpbiBvbiBlYWNoIGRyaXZl ci4gWWV0LCBJIGJlbGlldmUgaXQgc2hvdWxkIGJlIHBlciBkZXZpY2UuDQo+ID4+Pg0KPiA+Pj4+ DQo+ID4+Pj4gTW9yZW92ZXIsIGknbSBub3Qgc3VyZSBob3cgdGhpcyBpcyBnb2luZyB0byB3b3Jr IGZvciBWRklPLiBJZiB0aGlzDQo+ID4+Pj4gaXMgdG8gYmUgY2FsbGVkIGZvciBlYWNoIE5JQyB0 aGF0IG5lZWRzIGFjY2VzcyB0byB0aGUgbWVtb3J5LCB0aGVuDQo+ID4+Pj4gd2UnbGwgZW5kIHVw IHdpdGggZG91YmxlIG1hcHBpbmdzIGZvciBhbnkgTklDIHRoYXQgdXNlcyBWRklPLA0KPiA+Pj4+ IHVubGVzcyB5b3Ugd2FudCBlYWNoIE5JQyB0byBiZSBpbiBhIHNlcGFyYXRlIGNvbnRhaW5lci4N Cj4gPj4+DQo+ID4+PiBJIGFtIG5vdCBtdWNoIGZhbWlsaWFyIHcvIFZGSU8gKHlvdSBhcmUgdGhl IGV4cGVydPCfmIopLg0KPiA+Pj4gV2hhdCB3aWxsIGhhcHBlbiBpZiB3ZSBtYXAgdGhlIHNhbWUg bWVtb3J5IHR3aWNlICh1bmRlciBzYW1lDQo+ID4+IGNvbnRhaW5lcik/IFRoZSB0cmFuc2xhdGlv biBvbiB0aGUgSU9NTVUgd2lsbCBiZSBkb3VibGVkPyBUaGUgbWFwDQo+ID4+IHdpbGwgcmV0dXJu IHdpdGggZXJyb3IgdGhhdCB0aGlzIG1lbW9yeSBtYXBwaW5nIGFscmVhZHkgZXhpc3RzPw0KPiA+ Pg0KPiA+PiBUaGUgbGF0dGVyLiBZb3UgY2FuJ3QgbWFwIHRoZSBzYW1lIG1lbW9yeSB0d2ljZSBp biB0aGUgc2FtZSBjb250YWluZXIuDQo+ID4+IFlvdSBjYW4ndCBldmVuIGtlZXAgTklDcyBpbiBz ZXBhcmF0ZSBjb250YWluZXJzIGJlY2F1c2UgdGhlbg0KPiA+PiBzZWNvbmRhcnkgcHJvY2Vzc2Vz IHdvbid0IHdvcmsgd2l0aG91dCBzZXJpb3VzIHJld29yay4NCj4gPj4NCj4gPj4gU28sIGFsbCBW RklPLW1hcHBlZCB0aGluZ3Mgd2lsbCBuZWVkIHRvIHNoYXJlIHRoZSBtYXBwaW5ncy4NCj4gPj4N Cj4gPj4gSXQncyBub3QgYW4gaW5zdXJtb3VudGFibGUgcHJvYmxlbSwgYnV0IGlmIHdlJ3JlIGdv aW5nIHRvIHNoYXJlDQo+ID4+IG1hcHBpbmcgc3RhdHVzIGZvciBWRklPIChpLmUuIHRyYWNrIHdo aWNoIGFyZWEgaXMgYWxyZWFkeSBtYXBwZWQpLA0KPiA+PiB0aGVuIHdoYXQncyBzdG9wcGluZyB1 cyBmcm9tIGRvaW5nIHRoZSBzYW1lIGZvciBvdGhlciBETUEgbWFwcGluZw0KPiBtZWNoYW5pc21z PyBJLmUuDQo+ID4+IGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIG1hcHBpbmdzIGluIGVhY2gg ZHJpdmVyLCBwcm92aWRlIHNvbWUga2luZA0KPiA+PiBvZiBtZWNoYW5pc20gZm9yIGRldmljZXMg dG8gc2hhcmUgdGhlIERNQSBtYXBwaW5nIGNhY2hlcy4gQXBvbG9naWVzDQo+ID4+IGlmIGknbSB0 YWxraW5nIG5vbnNlbnNlIC0gaSdtIGNvbXBsZXRlbHkgdW5mYW1pbGlhciB3aXRoIGhvdyBETUEN Cj4gPj4gbWFwcGluZyB3b3JrcyBmb3IgTUxYL05YUCBkZXZpY2VzIDopDQo+ID4NCj4gPiBVbmZv cnR1bmF0ZWx5IGl0IGNhbm5vdCBiZSBkb25lIGF0IGxlYXN0IHcvIE1lbGxhbm94Lg0KPiA+IElu IE1lbGxhbm94IHRoZSBrZXJuZWwgZHJpdmVyIGlzIHRoZSBvbmUgd2hpY2ggbWFwcyB0aGUgbWVt b3J5LiBUaGUNCj4gbWFwcGluZyByZXR1cm5zIGEga2V5IHdoaWNoIGlkZW50aWZ5IGEgbWVtb3J5 IHJlZ2lvbiB3aGljaCB3YXMganVzdA0KPiByZWdpc3RlcmVkIHRvIHRoZSBkZXZpY2UuDQo+ID4g VGhlcmUgaXMgYSBjb21wbGV0ZSBzZXBhcmF0aW9uIGJldHdlZW4gdGhlIHBvcnRzLCBtZWFuaW5n IG9uZSBwb3J0DQo+IG1hcHBpbmcgY2Fubm90IGJlIHVzZWQgYnkgaW4gdGhlIG90aGVyIHBvcnQs IGV2ZW4gaWYgdGhlIGtleSBpcyBrbm93bi4NCj4gPg0KPiA+IFRoZSBzZXBhcmF0aW9uIGlzIG5v dCBvbmx5IGluIHBvcnRzLCBidXQgYWxzbyBpbiBwcm9jZXNzZXMgKHR3byBwcmltYXJ5IG9uZXMs DQo+IGZvciBzZWNvbmRhcnkgd2UgaGF2ZSBhIHdheSB0byBzaGFyZSkuIElmIHR3byBwcm9jZXNz IHdvcmsgb24gdGhlIHNhbWUNCj4gZGV2aWNlLCB0aGUgbXVzdCByZWdpc3RlciB0aGUgbWVtb3J5 IGluZGVwZW5kZW50bHkuDQo+IA0KPiBBaCwgT0suDQo+IA0KPiBTbywgd2UncmUgcmlnaHQgYmFj ayB0byB3aGVyZSB3ZSBzdGFydGVkLiBSaWdodCBub3csIGV4dGVybmFsIG1lbW9yeQ0KPiBleHBl Y3RzIHRvIGJlaGF2ZSB0aGUgc2FtZSB3YXkgYXMgYWxsIG90aGVyIG1lbW9yeSAtIHlvdSBkb24n dCBuZWVkIHRvDQo+IHBlcmZvcm0gRE1BIG1hcHBpbmcgZm9yIGl0Lg0KPiANCj4gVGhhdCBzYWlk LCBwYXJ0IG9mIHRoZSByZWFzb24gKndoeSogaXQgd2FzIGRvbmUgdGhhdCB3YXkgd2FzIGJlY2F1 c2UgdGhlcmUNCj4gaXMgbm8gd2F5IHRvIHRyaWdnZXIgVkZJTyBETUEgbWFwcGluZyBmb3IgTlhQ IChvciB3YXMgaXQgTUxYPykgZGV2aWNlcy4gSWYNCj4geW91IGxvb2sgYXQgaW5pdGlhbCB2ZXJz aW9ucyBvZiB0aGUgcGF0Y2hzZXQsIHRoZSBETUEgbWFwcGluZyB3YXMgYWN0dWFsbHkNCj4gZG9u ZSBtYW51YWxseS4gVGhlbiwgaSBiZWNhbWUgY29udmluY2VkIHRoYXQgZG9pbmcgdGhpcyBhdXRv bWF0aWNhbGx5IGlzIHRoZQ0KPiB3YXkgdG8gZ28sIGJvdGggYmVjYXVzZSBpdCBlcmFzZXMgdGhl IHVzYWJpbGl0eSBkaWZmZXJlbmNlcyBhcyBmYXIgYXMgbWVtb3J5DQo+IHR5cGVzIGFyZSBjb25j ZXJuZWQsIGFuZCBiZWNhdXNlIGl0IGVuYWJsZXMgd2hhdGV2ZXIgc2VydmljZXMgdGhhdCBhcmUN Cj4gc3Vic2NyaWJpbmcgdG8gbWVtb3J5IGV2ZW50cyB0byByZWNlaXZlIG5vdGlmaWNhdGlvbnMg YWJvdXQgZXh0ZXJuYWwNCj4gbWVtb3J5IGFzIHdlbGwgKGkuZS4gY29uc2lzdGVuY3kpLg0KPiAN Cj4gR2l2ZW4gdGhhdCBpdCdzIHN0aWxsIGFuIGV4cGVyaW1lbnRhbCBBUEksIHdlIGNhbiB0aW5r ZXIgd2l0aCBpdCBhbGwgd2UgbGlrZSwgc28gaXQncw0KPiBub3Qgc2V0IGluIHN0b25lLiBIb3dl dmVyLCBpIHdvdWxkIHJlYWxseSBsaWtlIHRvIGtlZXAgdGhlIGN1cnJlbnQgYXV0b21hZ2ljDQo+ IHRoaW5nLCBiZWNhdXNlIERNQSBtYXBwaW5nIG1heSBub3QgYmUgdGhlIG9ubHkgdXNlciBvZiBt ZW1vcnkgY2FsbGJhY2tzIC0NCj4gdGhleSBjYW4gYmUgdXNlZCBmb3IgZGVidWcgcHVycG9zZXMs IG9yIGZvciBhbnkgb3RoZXIgdGhpbmdzLg0KDQpNZW1vcnkgY2FsbGJhY2tzIGFyZSBnb29kIHRv IGhhdmUgcmVnYXJkbGVzcy4NClRoZSBxdWVzdGlvbiB3ZSBuZWVkIHRvIGFuc3dlciBpcyB3aGV0 aGVyIG9yIG5vdCB3ZSBhcmUgZ29pbmcgdG8gcHJvdmlkZSB0aGUgRE1BIG1hcCBhYnN0cmFjdGlv biBmb3IgZXh0ZXJuYWwgbWVtb3J5LiBTZWUgbW9yZSBiZWxvdy4gDQoNCg0KPiANCj4gPj4+Pj4g Rm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgaG9zdCB3aXRoIE1lbGxhbm94IGFuZCBJbnRlbCBkZXZp Y2VzLg0KPiA+Pj4+PiBNYXBwaW5nIGEgbWVtb3J5IHdpdGhvdXQgc3BlY2lmeWluZyB0byB3aGlj aCBwb3J0IHdpbGwgZW5kIHVwIHdpdGgNCj4gPj4+Pj4gSU9NTVUgcmVnaXN0cmF0aW9uIGFuZCBW ZXJicyAoTWVsbGFub3ggRE1BIG1hcCkgcmVnaXN0cmF0aW9uLg0KPiA+Pj4+PiBBbm90aGVyIGV4 YW1wbGUgY2FuIGJlIHR3byBNZWxsYW5veCBkZXZpY2VzIG9uIHRoZSBzYW1lIGhvc3QuIFRoZQ0K PiA+Pj4+IG1lbW9yeQ0KPiA+Pj4+PiB3aWxsIGJlIG1hcHBlZCBmb3IgYm90aCwgZXZlbiB0aG91 Z2ggYXBwbGljYXRpb24gd2lsbCB1c2UgbWVtcG9vbA0KPiA+Pj4+PiBwZXIgZGV2aWNlLg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBUbyB1c2UgdGhlIHN1Z2dlc3RlZCBBUElzIHRoZSBhcHBsaWNhdGlvbiB3 aWxsIGFsbG9jYXRlIGEgbWVtb3J5DQo+ID4+Pj4+IGJsb2NrIGFuZCB3aWxsIGNhbGwgcnRlX2V0 aF9kbWFfbWFwLiBJdCB3aWxsIG1hcCBpdCB0byBldmVyeSBwb3J0DQo+ID4+Pj4+IHRoYXQgbmVl ZHMgRE1BIGFjY2VzcyB0byB0aGlzIG1lbW9yeS4NCj4gPj4+Pg0KPiA+Pj4+IFRoaXMgYml0IGlz IHVuY2xlYXIgdG8gbWUuIFdoYXQgZG8geW91IG1lYW4gIm1hcCBpdCB0byBldmVyeSBwb3J0DQo+ ID4+Pj4gdGhhdCBuZWVkcyBETUEgYWNjZXNzIHRvIHRoaXMgbWVtb3J5Ij8gSSBkb24ndCBzZWUg aG93IHRoaXMgQVBJDQo+ID4+Pj4gc29sdmVzIHRoZSBhYm92ZSBwcm9ibGVtIG9mIG1hcHBpbmcg dGhlIHNhbWUgbWVtb3J5IHRvIGFsbCBkZXZpY2VzLg0KPiA+Pj4+IEhvdyBkb2VzIGEgZGV2aWNl IGtub3cgd2hpY2ggbWVtb3J5IGl0IHdpbGwgbmVlZD8gRG9lcyB0aGUgdXNlcg0KPiA+Pj4+IHNw ZWNpZmljYWxseSBoYXZlIHRvIGNhbGwgdGhpcyBBUEkgZm9yIGVhY2ggYW5kIGV2ZXJ5IE5JQyB0 aGV5J3JlIHVzaW5nPw0KPiA+Pj4NCj4gPj4+IFllcywgdGhlIHVzZXIgd2lsbCBjYWxsIHRoaXMg QVBJIGZvciBldmVyeSBwb3J0IHdoaWNoIG5lZWRzIHRvIGhhdmUNCj4gPj4+IERNQQ0KPiA+PiBh Y2Nlc3MgdG8gdGhpcyBtZW1vcnkuDQo+ID4+PiBSZW1lbWJlciB3ZSBhcmUgc3BlYWtpbmcgaGVy ZSBvbiBleHRlcm5hbCBtZW1vcnkgdGhlIGFwcGxpY2F0aW9uDQo+ID4+IGFsbG9jYXRlZCBhbmQg d2FudHMgdG8gdXNlIGZvciBzZW5kL3JlY2VpdmUuICBUaGUgZGV2aWNlIGRvZXNuJ3QNCj4gPj4g Z3Vlc3Mgd2hpY2ggbWVtb3J5IGhlIHdpbGwgbmVlZCwgdGhlIHVzZXIgaXMgdGVsbGluZyBpdCB0 byBoaW0gZXhwbGljaXRseS4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiBGb3IgRFBESy1tYW5hZ2Vk IG1lbW9yeSwgZXZlcnl0aGluZyB3aWxsIHN0aWxsIGdldCBtYXBwZWQgdG8gZXZlcnkNCj4gPj4+ PiBkZXZpY2UgYXV0b21hdGljYWxseSwgY29ycmVjdD8NCj4gPj4+DQo+ID4+PiBZZXMsIGV2ZW4g dGhvdWdoIGl0IGlzIG5vdCB0aGUgY2FzZSB0b2RheS4NCj4gPj4NCj4gPj4gV2hhdCBkbyB5b3Ug bWVhbiBpdCBpcyBub3QgdGhlIGNhc2U/IEl0IGlzIHRoZSBjYXNlIHRvZGF5LiBXaGVuDQo+ID4+ IGV4dGVybmFsIG1lbW9yeSBjaHVuayBpcyByZWdpc3RlcmVkIGF0IHRoZSBoZWFwLCBhIG1lbSBl dmVudCBjYWxsYmFjaw0KPiA+PiBpcyB0cmlnZ2VyZWQganVzdCBsaWtlIGZvciByZWd1bGFyIG1l bW9yeSwgYW5kIHRoaXMgY2h1bmsgZG9lcyBnZXQNCj4gPj4gbWFwcGVkIHRvIFZGSU8gYXMgd2Vs bCBhcyBhbnkgb3RoZXIgc3Vic2NyaWJlZCBlbnRpdHkuIEFzIGkgcmVjYWxsLA0KPiA+PiBOWFAg TklDcyBjdXJyZW50bHkgYXJlIHNldCB1cCB0byBpZ25vcmUgZXh0ZXJuYWxseSBhbGxvY2F0ZWQg bWVtb3J5LA0KPiA+PiBidXQgZm9yIHRoZSBnZW5lcmFsIFZGSU8gY2FzZSwgZXZlcnl0aGluZyBp cyBtYXBwZWQgYXV0b21hdGljYWxseS4NCj4gPj4NCj4gPj4+DQo+ID4+PiBJZiBzbywgdGhlbiBz dWNoIGEgbWFudWFsIGFwcHJvYWNoIGZvcg0KPiA+Pj4+IGV4dGVybmFsIG1lbW9yeSB3aWxsIGJl IGJhZCBmb3IgYm90aCB1c2FiaWxpdHkgYW5kIGRyb3AtaW4NCj4gPj4+PiByZXBsYWNlbWVudCBv ZiBpbnRlcm5hbC10by1leHRlcm5hbCBtZW1vcnksIGJlY2F1c2UgaXQgaW50cm9kdWNlcw0KPiA+ Pj4+IGluY29uc2lzdGVuY3kgYmV0d2VlbiB1c2luZyBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgbWVt b3J5LiBGcm9tIG15DQo+ID4+Pj4gcG9pbnQgb2YgdmlldywgZWl0aGVyIHdlIGRvICpldmVyeXRo aW5nKiBtYW51YWxseSAoaS5lLiByZWdpc3Rlcg0KPiA+Pj4+IGFsbCBtZW1vcnkgZm9yIERNQQ0K PiA+Pj4+IGV4cGxpY2l0bHkpIGFuZCB0aGVyZWJ5IGF2b2lkIHRoaXMgcHJvYmxlbSBidXQga2Vl cCB0aGUNCj4gPj4+PiBjb25zaXN0ZW5jeSwgb3Igd2UgZG8gKmV2ZXJ5dGhpbmcqIGF1dG9tYXRp Y2FsbHkgYW5kIGRlYWwgd2l0aA0KPiA+Pj4+IGR1cGxpY2F0aW9uIG9mIG1hcHBpbmdzIHNvbWVo b3cgKHNheSwgYnkgTUxYL05YUCBkcml2ZXJzIHNoYXJpbmcNCj4gPj4+PiB0aGVpciBtYXBwaW5n cyB0aHJvdWdoIGJ1cyBpbnRlcmZhY2UpLg0KPiA+Pj4NCj4gPj4+IEkgdW5kZXJzdGFuZCB5b3Vy IHBvaW50LCBob3dldmVyIEkgYW0gbm90IHN1cmUgZXh0ZXJuYWwgYW5kIGludGVybmFsDQo+ID4+ IG1lbW9yeSAqbXVzdCogYmUgY29uc2lzdC4NCj4gPj4+IFRoZSBEUERLLW1hbmFnZWQgbWVtb3J5 IGlzIHBhcnQgb2YgdGhlIERQREsgc3Vic3lzdGVtcyBhbmQgdGhlDQo+IERQREsNCj4gPj4gbGli cyBhcmUgcHJlcGFyaW5nIGl0IGZvciB0aGUgb3B0aW1hbCB1c2Ugb2YgdGhlIHVuZGVybHlpbmcg ZGV2aWNlcy4NCj4gPj4gVGhlIGV4dGVybmFsIG1lbW9yeSBpcyBkaWZmZXJlbnQsIGl0IGlzIGEg cHJvcHJpZXRhcnkgbWVtb3J5IHRoZQ0KPiA+PiBhcHBsaWNhdGlvbiBhbGxvY2F0ZWQgYW5kIHRo ZSBEUERLIGNhbm5vdCBkbyBhbnl0aGluZyBpbiBhZHZhbmNlIG9uIGl0Lg0KPiA+Pg0KPiA+PiBN eSB2aWV3IGZvciBkZXNpZ25pbmcgZXh0ZXJuYWwgbWVtb3J5IHN1cHBvcnQgd2FzIHRoYXQgaXQg c2hvdWxkDQo+ID4+IGJlaGF2ZSBsaWtlIHJlZ3VsYXIgRFBESyBtZW1vcnkgZm9yIGFsbCBpbnRl bnRzIGFuZCBwdXJwb3NlcywgYW5kIGJlDQo+ID4+IGEgZHJvcC1pbiByZXBsYWNlbWVudCwgc2hv dWxkIHlvdSBjaG9vc2UgdG8gdXNlIGl0LiBJLmUuIHRoZQ0KPiA+PiBhcHBsaWNhdGlvbiBzaG91 bGQgbm90IGNhcmUgd2hldGhlciBpdCB1c2VzIGludGVybmFsIG9yIGV4dGVybmFsDQo+ID4+IG1l bW9yeSAtIGl0IGFsbCBzaXRzIGluIHRoZSBzYW1lIG1hbGxvYyBoZWFwcywgaXQgYWxsIHVzZXMg dGhlIHNhbWUNCj4gPj4gc29ja2V0IElEIG1lY2hhbmlzbXMsIGV0Yy4gLSBmb3IgYWxsIGludGVu dHMgYW5kIHB1cnBvc2VzLCB0aGV5J3JlIG9uZSBhbmQNCj4gdGhlIHNhbWUuDQo+ID4+DQo+ID4+ PiBFdmVuIHRvZGF5IHRoZXJlIGlzIGluY29uc2lzdGVuY3ksIGJlY2F1c2UgaWYgdXNlciB3YW50 cyB0byB1c2UNCj4gPj4+IGV4dGVybmFsDQo+ID4+IG1lbW9yeSBpdCBtdXN0IG1hcCBpdCAocnRl X3ZmaW9fZG1hX21hcCkgd2hpbGUgaGUgZG9lc24ndCBuZWVkIHRvIGRvDQo+ID4+IHRoYXQgZm9y IHRoZSBEUERLLW1hbmFnZWQgbWVtb3J5Lg0KPiA+Pg0KPiA+PiBXZWxsLCBub3cgaSBzZWUgd2hl cmUgeW91ciBjb25mdXNpb24gc3RlbXMgZnJvbSA6KSBZb3UgZGlkbid0IGtub3cNCj4gPj4gYWJv dXQNCj4gPj4gdGhpczoNCj4gPj4NCj4gPj4NCj4gaHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnBy b3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJGZ2l0DQo+ID4+IC5kDQo+IHBk ay5vcmclMkZkcGRrJTJGdHJlZSUyRmxpYiUyRmxpYnJ0ZV9lYWwlMkZjb21tb24lMkZtYWxsb2Nf aGVhcC5jDQo+ID4+DQo+ICUyM24xMTY5JmFtcDtkYXRhPTAyJTdDMDElN0NzaGFoYWZzJTQwbWVs bGFub3guY29tJTdDYTFlYjA2YzVhDQo+ID4+DQo+IGQ3OTRlNGU3MjVkMDhkNjRhNTM3ZjIzJTdD YTY1Mjk3MWM3ZDJlNGQ5YmE2YTRkMTQ5MjU2ZjQ2MWIlN0MwJTcNCj4gPj4NCj4gQzAlN0M2MzY3 NzgxMTk4MjIzNzYyMTEmYW1wO3NkYXRhPWR1TWlzNmZXMkNUbXlScWRPQW1sWmw1Y2V6Q2ZKDQo+ ID4+IGFldW9vNjFRR0lCSUdrJTNEJmFtcDtyZXNlcnZlZD0wDQo+ID4+DQo+ID4+IFRoaXMgd2ls bCB0cmlnZ2VyIGFsbCBtZW0gZXZlbnQgY2FsbGJhY2tzLCBpbmNsdWRpbmcgVkZJTyBETUEgbWFw cGluZw0KPiA+PiBjYWxsYmFjay4NCj4gPg0KPiA+IEkgc2VlLCBzbyBJIGFtIGluZGVlZCBjb25m dXNlZCDwn5iKLg0KPiA+IE9uIHdoaWNoIGNhc2VzIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgY2Fs bCB0aGUgZXhpc3RpbmcgcnRlX3ZmaW9fZG1hX21hcD8NCj4gSWYgdGhlIG1lbW9yeSBpcyBhbHJl YWR5IG1hcHBlZCBhbmQgdGhlIG9ubHkgd2F5IHRvIHdvcmsgd2l0aCBpdCBpcyB0aHJvdWdoDQo+ IHRoZSBydGVfbWFsbG9jIG1lY2hhbmlzbS4NCj4gDQo+IEkgaGF2ZSB0byBiZSBob25lc3QsIEkg ZGlkbid0IGNvbnNpZGVyIHRoaXMgcXVlc3Rpb24gYmVmb3JlIDpEIEkgZ3Vlc3MgdGhlcmUNCj4g Y291bGQgYmUgY2FzZXMgd2hlcmUgdXNpbmcgcnRlX21hbGxvYyBtaWdodCBub3QgYmUgc3VpdGFi bGUgYmVjYXVzZSBpdA0KPiB3YXN0ZXMgc29tZSBtZW1vcnkgb24gbWFsbG9jIGVsZW1lbnRzLCBp LmUuIGlmIHlvdSB3YW50IHRvIHVzZSBOIHBhZ2VzIGFzDQo+IG1lbW9yeSwgeW91J2QgaGF2ZSB0 byBhbGxvY2F0ZSBOKzEgcGFnZXMuIElmIG1lbW9yeSBpcyBhdCBhIHByZW1pdW0sDQo+IG1heWJl IG1hbnVhbCBtYW5hZ2VtZW50IG9mIGl0IHdvdWxkIGJlIGJldHRlciBpbiBzb21lIGNhc2VzLg0K DQpJIGhhZCBzaW1pbGFyIHRob3VnaHRzLCBtb3JlIHJlbGF0ZWQgdG8gdGhlIHVzYWJpbGl0eSBm cm9tIHRoZSB1c2VyIHNpZGUuDQpXaGVuIGFwcGxpY2F0aW9uIGFsbG9jYXRlZCBhbGxvY2F0ZXMg ZXh0ZXJuYWwgbWVtb3J5IGl0IGp1c3Qgd2FudHMgdG8gdXNlIGl0IGZvciBETUEsIGkuZS4gcHV0 IGl0IGFzIHRoZSBtYnVmIGJ1Zl9hZGRyIG9yIHRvIHBvcHVsYXRlIGl0IHcvIGEgbWVtcG9vbC4g DQpJdCBpcyBhbiAib3ZlcmhlYWQiIHRvIGNyZWF0ZSBhIHNvY2tldCBmb3IgdGhpcyBleHRlcm5h bCBtZW1vcnksIHRvIHBvcHVsYXRlIGl0IHcvIHRoZSBtZW1vcnksIGFuZCBsYXRlciBvbiB0byBt YWxsb2MgZnJvbSB0aGlzIHNvY2tldCAob3IgdXNlIHRoZSBzb2NrZXQgaWQgZm9yIHRoZSBtZW1w b29sIGNyZWF0aW9uKS4gDQpOb3QgdG8gbWVudGlvbiB0aGUgZmFjdCB0aGF0IG1heWJlIHRoZSBh cHBsaWNhdGlvbiB3YW50cyB0byBtYW5hZ2UgdGhpcyBtZW1vcnkgZGlmZmVyZW50bHkgdGhhbiBo b3cgcnRlX21hbGxvYyBkb2VzLiANCg0KT24gdGhlIG90aGVyIGhhbmQsIG1hcHBpbmcgbWVtb3J5 IHRvIGRldmljZSBiZWZvcmUgdXNpbmcgaXQgZm9yIGRtYSBpcyBmYXIgbW9yZSBpbnR1aXRpdmUu IA0KDQo+IA0KPiA+DQo+ID4+DQo+ID4+Pg0KPiA+Pj4gSSBndWVzcyB3ZSBjYW4gd2UgY2FuIGFk ZCBhIGZsYWcgb24gdGhlIGRldmljZSBtYXBwaW5nIHdoaWNoIHdpbGwNCj4gPj4+IHNheQ0KPiA+ PiBNQVBfVE9fQUxMX0RFVklDRVMsIHRvIGVhc2UgdGhlIGFwcGxpY2F0aW9uIGxpZmUgaW4gdGhl IHByZXNlbmNlIG9mDQo+ID4+IG11bHRpcGxlIGRldmljZSBpbiB0aGUgaG9zdC4NCj4gPj4+DQo+ ID4+DQo+ID4+DQo+ID4+IC0tDQo+ID4+IFRoYW5rcywNCj4gPj4gQW5hdG9seQ0KPiANCj4gDQo+ IC0tDQo+IFRoYW5rcywNCj4gQW5hdG9seQ0K