From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 15E7C5FEB for ; Mon, 20 Apr 2015 15:19:25 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP; 20 Apr 2015 06:19:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,609,1422950400"; d="scan'208";a="716284139" Received: from orsmsx108.amr.corp.intel.com ([10.22.240.6]) by orsmga002.jf.intel.com with ESMTP; 20 Apr 2015 06:19:26 -0700 Received: from orsmsx112.amr.corp.intel.com (10.22.240.13) by ORSMSX108.amr.corp.intel.com (10.22.240.6) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 20 Apr 2015 06:19:24 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by ORSMSX112.amr.corp.intel.com (10.22.240.13) with Microsoft SMTP Server (TLS) id 14.3.224.2; Mon, 20 Apr 2015 06:19:24 -0700 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.111]) by fmsmsx111.amr.corp.intel.com ([169.254.12.17]) with mapi id 14.03.0224.002; Mon, 20 Apr 2015 06:19:23 -0700 From: "Wiles, Keith" To: Marc Sune , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [RFC PATCH 0/4] pktdev Thread-Index: AQHQeSGOY2k7fEOqoka6ZDQfPgLfO51SAZ6A//+9MwCABDEcAIAAGJEA Date: Mon, 20 Apr 2015 13:19:23 +0000 Message-ID: References: <1428954274-26944-1-git-send-email-keith.wiles@intel.com> <1429283804-28087-1-git-send-email-bruce.richardson@intel.com> <553155C7.3000106@bisdn.de> <5534A1EE.4060905@bisdn.de> In-Reply-To: <5534A1EE.4060905@bisdn.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.14.220] Content-Type: text/plain; charset="euc-kr" Content-ID: <08D72C5C37290C458D92E05A3FC737DA@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC PATCH 0/4] pktdev X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Apr 2015 13:19:27 -0000 DQoNCkZyb206IE1hcmMgU3VuZSA8bWFyYy5zdW5lQGJpc2RuLmRlPG1haWx0bzptYXJjLnN1bmVA YmlzZG4uZGU+Pg0KRGF0ZTogTW9uZGF5LCBBcHJpbCAyMCwgMjAxNSBhdCAxOjUxIEFNDQpUbzog S2VpdGggV2lsZXMgPGtlaXRoLndpbGVzQGludGVsLmNvbTxtYWlsdG86a2VpdGgud2lsZXNAaW50 ZWwuY29tPj4sICJkZXZAZHBkay5vcmc8bWFpbHRvOmRldkBkcGRrLm9yZz4iIDxkZXZAZHBkay5v cmc8bWFpbHRvOmRldkBkcGRrLm9yZz4+DQpTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUkZDIFBB VENIIDAvNF0gcGt0ZGV2DQoNCg0KDQpPbiAxNy8wNC8xNSAyMTo1MCwgV2lsZXMsIEtlaXRoIHdy b3RlOg0KDQpIaSBNYXJjIGFuZCBCcnVjZSwNCg0KSGkgS2VpdGgsIEJydWNlLA0KDQoNCk9uIDQv MTcvMTUsIDE6NDkgUE0sICJNYXJjIFN1bmUiIDxtYXJjLnN1bmVAYmlzZG4uZGU+PG1haWx0bzpt YXJjLnN1bmVAYmlzZG4uZGU+IHdyb3RlOg0KDQoNCg0KT24gMTcvMDQvMTUgMTc6MTYsIEJydWNl IFJpY2hhcmRzb24gd3JvdGU6DQoNCg0KSGkgYWxsLA0KDQp0byBjb250aW51ZSB0aGlzIGRpc2N1 c3Npb24gYSBiaXQgbW9yZSwgaGVyZSBpcyBteSwgc2xpZ2h0bHkgZGlmZmVyZW50LA0Kc2xhbnQN Cm9uIHdoYXQgYSBwa3RkZXYgYWJzdHJhY3Rpb24gbWF5IGxvb2sgbGlrZS4NCg0KVGhlIHByaW1h cnkgb2JqZWN0aXZlIEkgaGFkIGluIG1pbmQgd2hlbiBkcmFmdGluZyB0aGlzIGlzIHRvIHByb3Zp ZGUgdGhlDQptaW5pbWFsIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJlICplYXNpbHkqIHVzZWQgYXMg YSBjb21tb24gZGV2aWNlDQphYnN0cmFjdGlvbiBmb3INCmV4aXN0aW5nIChhbmQgZnV0dXJlKSBk ZXZpY2UgdHlwZXMgdG8gYmUgcGFzc2VkIHRvIGRhdGFwbGFuZSBjb2RlLiBUaGUNCnBhdGNoc2V0 DQpkZW1vbnN0cmF0ZXMgdGhpcyBieSBkZWZpbmluZyBhIG1pbmltYWwgaW50ZXJmYWNlIGZvciBw a3RkZXYgLSBzaW5jZSBJDQpmaXJtbHkNCmJlbGlldmUgdGhlIGludGVyZmFjZSBzaG91bGQgYmUg YXMgc21hbGwgYXMgcG9zc2libGUgLSBhbmQgdGhlbiBzaG93aW5nDQpob3cgdGhhdA0KY29tbW9u IGludGVyZmFjZSBjYW4gYmUgdXNlZCB0byB1bmlmeSByaW5ncyBhbmQgZXRoZGV2cyB1bmRlciBh IGNvbW1vbg0KQVBJIGZvciB0aGUNCmRhdGFwYXRoLiBJIGJlbGlldmUgYW55IGF0dGVtcHQgdG8g dW5pZnkgdGhpbmdzIG11Y2ggYmV5b25kIHRoaXMgdG8gdGhlDQpjb250cm9sDQpwbGFuZSBvciBz ZXR1cCBwaGFzZSBpcyBub3Qgd29ydGggZG9pbmcgLSBhdCBsZWFzdCBub3QgaW5pdGlhbGx5IC0g YXMgYXQNCmluaXQgdGltZSB0aGUgY29kZSBhbHdheXMgbmVlZHMgdG8gYmUgYXdhcmUgb2YgdGhl IHVuZGVybHlpbmcgcmVzb3VyY2UNCnR5cGUgaW4NCm9yZGVyIHRvIGNvbmZpZ3VyZSBpdCBwcm9w ZXJseSBmb3IgZGF0YXBsYW5lIHVzZS4NCg0KVGhlIG92ZXJhbGwgb2JqZWN0aXZlIEkgbG9vayB0 byBhY2hpZXZlIGlzIGlsbHVzdHJhdGVkIGJ5IHRoZSBmaW5hbA0KcGF0Y2ggaW4NCnRoZSBzZXJp ZXMsIHdoaWNoIGlzIGEgc2FtcGxlIGFwcCB3aGVyZSB0aGUgc2FtZSBjb2RlIGlzIHVzZWQgZm9y IGFsbA0KY29yZXMsDQppcnJlc3BlY3RpdmUgb2YgdGhlIHVuZGVybHlpbmcgZGV2aWNlIHR5cGUu DQoNClRvIGdldCB0byB0aGF0IHBvaW50LCBwYXRjaCAxIGRlZmluZXMgdGhlIG1pbmltYWwgQVBJ IC0ganVzdCBSWCBhbmQgVFguDQpUaGUgLmMNCmZpbGUgaW4gdGhlIGxpYnJhcnkgaXMgZW1wdHkg Zm9yIHNpbXBsaWNpdHksIHRob3VnaCBJIHdvdWxkIHNlZSBzb21lDQpmdW5jdGlvbmFsaXR5IG1v dmluZyB0aGVyZSB3aGVuL2lmIGl0IG1ha2VzIHNlbnNlIGUuZy4gdGhlIGNhbGxiYWNrDQpzdXBw b3J0DQpmcm9tIGV0aGRldiwgYXMgaXMgZG9uZSBpbiBLZWl0aCdzIHBhdGNoc2V0Lg0KUGF0Y2gg MiB0aGVuIG1ha2VzIHZlcnkgbWluaW1hbCBjaGFuZ2VzIHRvIGV0aGRldiB0byBhbGxvdyBldGhk ZXZzIHRvDQpiZSB1c2VkDQphcyBwa3RkZXZzLCBhbmQgdG8gbWFrZSB1c2Ugb2YgdGhlIHBrdGRl diBmdW5jdGlvbnMgd2hlbiBhcHByb3ByaWF0ZQ0KUGF0Y2ggMyB3YXMsIGZvciBtZSwgdGhlIGtl eSB0ZXN0IGZvciB0aGlzIGltcGxlbWVudGF0aW9uIC0gaG93IGhhcmQNCndhcyBpdCB0bw0KbWFr ZSBhbiBydGVfcmluZyB1c2FibGUgYXMgYSBwa3RkZXYgdG9vLiBUd28gc2luZ2xlLWxpbmUgZnVu Y3Rpb25zIGZvcg0KUlgvVFgNCmFuZCBhIHNlcGFyYXRlICJjb252ZXJ0ZXIiIGZ1bmN0aW9uIHBy b3ZlZCB0byBiZSBhbGwgdGhhdCB3YXMgbmVjZXNzYXJ5DQpoZXJlIC0NCmFuZCBJIGJlbGlldmUg c2ltcGxlciBzb2x1dGlvbnMgbWF5IGJlIHBvc3NpYmxlIHRvbywgYXMgdGhlIGV4dHJhDQpzdHJ1 Y3R1cmVzDQphbGxvY2F0ZWQgb24gY29udmVyc2lvbiBjb3VsZCBiZSBtZXJnZWQgaW50byB0aGUg cnRlX3Jpbmcgc3RydWN0dXJlDQppdHNlbGYgYW5kDQppbml0aWFsaXplZCBvbiByaW5nIGNyZWF0 aW9uIGlmIHdlIHByZWZlciB0aGF0IG9wdGlvbi4gSXQgaXMNCmhvcGVkL3ByZXN1bWVkIHRoYXQN CndyYXBwaW5nIG90aGVyIHN0cnVjdHVyZXMsIHN1Y2ggYXMgS05JLCBtYXkgcHJvdmUgdG8gYmUg anVzdCBhcyBlYXNpbHkNCmRvbmUuDQpbTm90IGF0dGVtcHRlZCB5ZXQgLSBsZWZ0IGFzIGFuIGV4 ZXJjaXNlIGZvciB0aGUgcmVhZGVyIDotKV0uDQoNCk5vdywgaW4gdGVybXMgb2YgcGt0ZGV2IHZz IGV0aGRldiwgdGhlcmUgaXMgbm90aGluZyBpbiB0aGlzIHByb3Bvc2FsDQp0aGF0DQpjYW5ub3Qg YWxzbyBiZSBkb25lIHVzaW5nIGV0aGRldiBBRkFJSy4gSG93ZXZlciwgcGt0ZGV2IGFzIG91dGxp bmVkIGhlcmUNCnNob3VsZCBtYWtlIHRoZSBwcm9jZXNzIGZhciBlYXNpZXIgdGhhbiB0cnlpbmcg dG8gY3JlYXRlIGEgZnVsbCBQTUQgZm9yDQpzb21ldGhpbmcuDQpBbGwgTklDIHNwZWNpZmljIGZ1 bmN0aW9ucywgaW5jbHVkaW5nIHRoaW5ncyBsaWtlIHN0b3Avc3RhcnQsIGFyZQ0Kc3RyaXBwZWQg b3V0LA0KYXMgdGhleSBkb24ndCBtYWtlIHNlbnNlIGZvciBhbiBydGVfcmluZyBvciBvdGhlciBz b2Z0d2FyZSBvYmplY3RzLg0KQWxzbywgdGhlIG90aGVyIHRoaW5nIHRoaXMgcHJvdmlkZXMgaXMg dGhhdCB3ZSBjYW4gbW92ZSBhd2F5IGZyb20ganVzdA0KdXNpbmcNCnBvcnQgaWRzLiBJbnN0ZWFk IGluIHRoZSBzYW1lIHdheSBhcyB3ZSBub3cgcmVmZXJlbmNlDQpyaW5ncy9tZW1wb29scy9LTklz IGV0Yw0KdmlhIHBvaW50ZXIsIHdlIGNhbiBkbyB0aGUgc2FtZSB3aXRoIGV0aGVybmV0IHBvcnRz IGFzIHBrdGRldnMgb24gdGhlDQpkYXRhIHBhdGguDQpUaGVyZSB3YXMgZGlzY3Vzc2lvbiBwcmV2 aW91c2x5IG9uIG1vdmluZyBiZXlvbmQgOC1iaXQgcG9ydCBpZHMuIElmIHdlDQpsb29rIHRvDQp1 c2UgZXRoZGV2IGFzIGEgY29tbW9uIGFic3RyYWN0aW9uLCBJIGZlZWwgdGhhdCBjaGFuZ2Ugd2ls bCBzb29uIGhhdmUNCnRvIGJlIG1hZGUNCmNhdXNpbmcgYSBsYXJnZSBhbW91bnQgb2YgY29kZSBj aHVybi4NCg0KDQpIaSBSaWNoYXJkLA0KDQpGaXJzdCB0aGFuayB5b3UgYm90aCBmb3IgdGFraW5n IHRoZSB0aW1lIHRvIGxvb2sgYXQgdGhpcy4gSSBkaWQgbm90IG5vdA0KcmVwbHkgdG8gS2VpdGgg YmVjYXVzZSB5b3UgUmljaGFyZCBzdW1tYXJpemVkIG1vc3Qgb2YgbXkgY29uY2VybnMuDQoNCkkg aGFkIGEgYnJpZWYgbG9vayB0byB0aGlzIHNlY29uZCBwcm9wb3NhbC4gSXQgaXMgbW9yZSBhbGln bmVkIHRvIHdoYXQgSQ0KaGFkIGluIG1pbmQuIEJ1dCBzdGlsbCBJIGZlZWwgaXQgaXMgc2xpZ2h0 bHkgdG9vIGNvbXBsaWNhdGVkLiBJIGRvbid0DQpsaWtlIG11Y2ggdGhlIG5lY2Vzc2FyeSAoaW4g eW91ciBhcHByb2FjaCkgTUFDUk8tbGlrZSBwa3RfZGV2X2RhdGENCnN0cnVjdC4gSXQgaXMgYWxz byBzbGlnaHRseSBpbmNvbnZlbmllbnQgdGhhdCB0aGUgdXNlciBoYXMgdG8gZG86DQoNCisgICAg ICAgc3RydWN0IHJ0ZV9wa3RfZGV2ICppbiA9IHJ0ZV9ldGhfZ2V0X2RldigwKTsNCg0KKyAgICAg ICAgICAgICAgIHN0cnVjdCBydGVfcGt0X2RldiAqb3V0ID0gcnRlX3JpbmdfZ2V0X2RldigNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRlX3JpbmdfY3JlYXRlKG5hbWUsIDQwOTYs IHJ0ZV9zb2NrZXRfaWQoKSwgMCkpOw0KDQoNCg0KV2hhdCBhYm91dCBzb21ldGhpbmcgbGlrZSAo fnBzZXVkby1jb2RlKToNCg0KcnRlX3BrdF9kZXZfZGF0YS5oOg0KDQogICBlbnVtIHJ0ZV9wa3Rf ZGV2X3R5cGV7DQogICAgICAgIFJURV9QS1RfREVWX0VUSCwNCiAgICAgICAgUlRFX1BLVF9ERVZf UklORywNCiAgICAgICAgUlRFX1BLVF9ERVZfS05JLA0KICAgICAgICAvL0tlZXAgYWRkaW5nIGFz IG1vcmUgUE1EcyBhcmUgc3VwcG9ydGVkDQogICB9Ow0KDQoNCiAgIC8vVGhpcyBzdHJ1Y3QgbWF5 IGJlIHJlZHVuZGFudCBpZiB0aGVyZSBpcyBub3RoaW5nIG1vcmUNCiAgIHN0cnVjdCBydGVfcGt0 X2Rldl9kYXRhew0KICAgICAgICBlbnVtIHJ0ZV9wa3RfZGV2X3R5cGU7DQogICAgICAgIC8vUGxh Y2Vob2xkZXIsIG1heWJlIHdlIG5lZWQgbW9yZS4uLg0KICAgfTsNCg0KICAgLy9NYWtlIFJYL1RY IHBrdGRldiBBUElzIG1vcmUgcmVhZGFibGUsIGJ1dCBub3QgcmVhbGx5IG5lZWRlZA0KICAgdHlw ZWRlZiB2b2lkIHBrdF9kZXZfdDsNCg0KKEluIGFsbCBQTURzIGFuZCBlLmcuIEtOSSBhbmQgUklO R3MpOg0KDQogc3RydWN0IHJ0ZV9ldGhfZGV2IHsNCiAgICBzdHJ1Y3QgcnRlX3BrdF9kZXZfZGF0 YSBwa3RfZGV2Oy8vDQo8KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KICAgIGV0 aF9yeF9idXJzdF90IHJ4X3BrdF9idXJzdDsgLyoqPCBQb2ludGVyIHRvIFBNRCByZWNlaXZlIGZ1 bmN0aW9uLiAqLw0KICAgIGV0aF90eF9idXJzdF90IHR4X3BrdF9idXJzdDsgLyoqPCBQb2ludGVy IHRvIFBNRCB0cmFuc21pdCBmdW5jdGlvbi4NCiovDQogICAgc3RydWN0IHJ0ZV9ldGhfZGV2X2Rh dGEgKmRhdGE7ICAvKio8IFBvaW50ZXIgdG8gZGV2aWNlIGRhdGEgKi8NCiAgICAvLi4uDQoNCnJ0 ZV9wa3RfZGV2Lmg6DQoNCiAgICAgICNpbmNsdWRlIDxydGVfZXRoZGV2Lmg+DQogICAgICAvL0lu Y2x1ZGUgUE1EIChhbmQgbm9uLVBNRCkgVFgvUlggaGVhZGVycy4uLg0KDQogICBzdGF0aWMgaW5s aW5lIHVpbnQxNl90DQogICBydGVfcGt0X3R4X2J1cnN0KHBrdF9kZXZfdCogZGV2LCB1aW50MTZf dCBxdWV1ZV9pZCwNCiAgICAgICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKip0eF9wa3RzLCB1aW50 MTZfdCBuYl9wa3RzKQ0KICAgew0KICAgICAgICBzd2l0Y2ggKCgoc3RydWN0IHJ0ZV9wa3RfZGV2 X2RhdGEqKWRldiktPnR5cGUpew0KICAgICAgICAgICAgY2FzZSAgUlRFX1BLVF9ERVZfRVRIOg0K ICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZXRoX2RldiogZXRoX2RldiA9IChzdHJ1Y3QNCnJ0 ZV9ldGhfZGV2Kilwa3RfZGV2Ow0KICAgICAgICAgICAgICAgIHJ0ZV9wa3RfdHhfYnVyc3QoZXRo X2RldiwgcXVldWVfaWQsIHR4X3BrdHMsIG5iX3BrdHMpOw0KICAgICAgICAgICAgICAgIGJyZWFr Ow0KICAgICAgICAgICAgY2FzZSBSVEVfUEtUX0RFVl9SSU5HOg0KICAgICAgICAgICAgICAgIC8v Li4uDQogICAgICAgIH0NCiAgIH0NCg0KICAgLy8uLi4NCg0KDQpJIGRvIG5vdCBzZWUgdGhlIGZ1 bmN0aW9uYWwgZGlmZmVyZW50IGZyb20gbXkgcHJvcG9zYWwgb3RoZXIgdGhlbiBhIGJpdA0KbW9y ZSBzZWFyY2gvcmVwbGFjZSwgd2hpY2ggZG9lcyBlZmZlY3Qgc29tZSBvZiB0aGUgUE1EqfZzLiBU aGUgY2hhbmdlcyB0bw0KdGhlIFBNRCBpcyBqdXN0IHRvIHVzZSB0aGUgbWFjcm9zIGFzIHdlIG5v dyBoYXZlIGEgbmVzdGVkIHN0cnVjdHVyZS4NCg0KSSB0aGluayB3aGF0IEkgYW0gcHJvcG9zaW5n IGlzIGRpZmZlcmVudC4gU2VlIGJlbG93Lg0KDQoNClRoZSBuZXN0aW5nIGFuZCBtb3ZlbWVudCBz b21lIHN0cnVjdHVyZXMgYW5kIGNvZGUgdG8gYSBjb21tb24gbG9jYXRpb24gaXMNCnRvIHByb3Zp ZGUgYSBiZXR0ZXIgd2F5IHRvIGFkZCBvdGhlciBkZXZpY2VzLiBNb3ZpbmcgY29kZSBpbnRvIGEg Y29tbW9uDQpzZXQgb2Ygc3RydWN0dXJlcyBhbmQgQVBJcyBzaG91bGQgb25seSBpbXByb3ZlIHRo ZSBjb2RlIGFzIHdlIGdldCBtb3JlDQpkZXZpY2VzIGFkZGVkIHRvIERQREsuIFRoZSBiYXNpYyBm bG93IGFuZCBkZXNpZ24gaXMgdGhlIHNhbWUuDQoNCkluIHlvdXIgcHJvcG9zYWwgeW91IGFyZSBt b3ZpZyBUWC9SWCBxdWV1ZXMgYXMgd2VsbCBhcyBzb21lIHNoYXJlZCBzdHVmZiBhbmQsIG1vc3Qg aW1wb3J0YW50bHksIHlvdSBhcmUgdXNpbmcgZnVuY3Rpb24gcG9pbnRlcnMgdG8gZXhlY3V0ZSB0 aGUgUlgvVFggcm91dGluZXMuDQoNCldoYXQgSSB3YXMgcHJvcG9zaW5nIGlzIHRvIHRyeSB0byBh ZGQgdGhlIG1pbmltdW0gY29tbW9uIHNoYXJlZCBzdGF0ZSBpbiBvcmRlciB0byBwcm9wZXJseSBk ZW11bHRpcGxleCB0aGUgUlgvVFggY2FsbCBhbmQgaGF2ZSBhIGNvbW1vbiBzZXQgb2YgYWJzdHJh Y3QgY2FsbHMgKHRoZSBwa3RfZGV2IHR5cGUpLiBJbiBhIHdheSwgSSB3YXMgcHJvcG9zaW5nIHRv IGRlbGliZXJhdGVseSBub3QgaGF2ZSBhIHNoYXJlZCBzdHJ1Y3QgcnRlX2Rldl9kYXRhIGJlY2F1 c2UgSSB0aGluayB0aGUgaW50ZXJuYWxzIG9mIHRoZSAicGt0X2RldiIgY2FuIGJlIHZlcnkgZGlm ZmVyZW50IGFjcm9zcyBkZXZpY2VzIChlLmcuIHF1ZXVlcyBpbiBrbmkgdnMgZXRoIHBvcnQgdnMu IGNyeXB0bz8pLiBJIHRyZWF0IHRoZSBwa3RfZGV2IGFzIGEgImJsYWNrIGJveCIgdGhhdCBjb25m b3JtcyB0byBUWC9SWCBBUEksIGxlYXZpbmcgdGhlIGRldmVsb3BlciBvZiB0aGF0IGRldmljZSB0 byBkZWZpbmUgaXRzIGludGVybmFsIHN0cnVjdHVyZXMgYXMgaXQgYmV0dGVyIHN1aXRlcyB0aGUg bmVlZHMuIEkgb25seSB1c2UgZWFjaCBvZiB0aGUgc3BlY2lmaWMgZGV2aWNlIHR5cGUgVFgvUlgg QVBJcyAoZXh0ZXJuYWwgdG8gdXMsIHBrdF9kZXYgbGlicmFyeSkgaW4gcnRlX3BrdF9kZXYuaC4g VGhpcyBhbHNvIHNpbXBsaWZpZXMgdGhlIHJlZmFjdG9yIHJlcXVpcmVkIHRvIGV2ZW50dWFsbHkg aW50ZWdyYXRlIHRoZSBydGVfcGt0X2RldiBsaWJyYXJ5IGFuZCBidWlsZHMgaXQgIm9uIHRvcCIg b2YgdGhlIGV4aXN0aW5nIEFQSXMuDQoNClRoZSBvdGhlciBpbXBvcnRhbnQgZGlmZmVyZW5jZSB3 aXRoIGJvdGgsIEJydWNlIGFuZCB5b3VyIGFwcHJvYWNoLCBhbmQgbWluZSBpcyB0aGUgdXNlIG9m IGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBSWC9UWC4gSSBkb24ndCB1c2UgdGhlbSwgd2hpY2ggbWFr ZXMgdGhlIGVudGlyZSBhYnN0cmFjdGVkIFRYL1JYIChpbmNsdWRpbmcgdGhlIGZpbmFsIFJYL1RY IHJvdXRpbmVzIGl0c2VsZikgZnVuY3Rpb25zIGJlICJpbmxpbmFibGUiLg0KDQpCdHcsIEkgZm9y Z290IHRvIGFkZCBzb21ldGhpbmcgYmFzaWMgaW4gdGhlIHByZXZpb3VzIHBzZXVkby1jb2RlLiBU aGUgZGlmZmVyZW50IHR5cGVzIGhhdmUgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBhY2Nv cmRpbmcgdG8gY29tcGlsZWQtaW4gRFBESyBsaWJzOg0KDQpydGVfcGt0X2Rldi5oOg0KDQogICAg I2luY2x1ZGUgPHJ0ZV9jb25maWcuaD4NCg0KICAgIC8vRXRoIGRldmljZXMNCiAgICAjaWZkZWYg UlRFX0xJQlJURV9FVEhFUg0KICAgICNpbmNsdWRlIDxydGVfZXRoZGV2Lmg+DQogICAgI2VuZGlm DQoNCiAgICAvL0tOSQ0KICAgICNpZmRlZiBSVEVfTElCUlRFX0tOSQ0KICAgICNpbmNsdWRlIDxy dGVfa25pLmg+DQogICAgI2VuZGlmDQoNCiAgICAvLy4uLg0KICAgIC8vSW5jbHVkZSBQTUQgKGFu ZCBub24tUE1EKSBUWC9SWCBoZWFkZXJzLi4uDQoNCiAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QN CiAgIHJ0ZV9wa3RfdHhfYnVyc3QocGt0X2Rldl90KiBkZXYsIHVpbnQxNl90IHF1ZXVlX2lkLA0K ICAgICAgICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqKnR4X3BrdHMsIHVpbnQxNl90IG5iX3BrdHMp DQogICB7DQogICAgICAgIHN3aXRjaCAoKChzdHJ1Y3QgcnRlX3BrdF9kZXZfZGF0YSopZGV2KS0+ dHlwZSl7DQogICAgICAgICAgICAjaWZkZWYgUlRFX0xJQlJURV9FVEhFUg0KICAgICAgICAgICAg Y2FzZSAgUlRFX1BLVF9ERVZfRVRIOg0KICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZXRoX2Rl diogZXRoX2RldiA9IChzdHJ1Y3QgcnRlX2V0aF9kZXYqKXBrdF9kZXY7DQogICAgICAgICAgICAg ICAgcnRlX3BrdF90eF9idXJzdChldGhfZGV2LCBxdWV1ZV9pZCwgdHhfcGt0cywgbmJfcGt0cyk7 DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAjZW5kaWYNCg0KICAgICAgICAg ICAgI2lmZGVmIFJURV9MSUJSVEVfS05JDQogICAgICAgICAgICBjYXNlIFJURV9QS1RfREVWX0tO SToNCiAgICAgICAgICAgICAgICAvLy4uLg0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAg ICAgICAgI2VuZGlmDQoNCiAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAg IC8vQ29ycnVwdGVkIHR5cGUgb3IgdW5zdXBwb3J0ZWQgKHdpdGhvdXQgY29tcGlsZWQgc3VwcG9y dCkNCiAgICAgICAgICAgICAgICAgICAgLy9JZ25vcmUgb3IgZmFpbChmYXRhbCBlcnJvcik/DQog ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICB9DQoNCiAgIC8vLi4uDQoN ClRoaXMgYWRkcyBhIHN3aXRjaCBpbnRvIHRoZSBwZXJmb3JtYW5jZSBwYXRoLCBub3QgYSBncmVh dCBzb2x1dGlvbiBJTU8uDQoNCg0KRnJvbSBydGVfY29tbW9uX2RldmljZS5oIChmb3JtYXQgc2Ny ZXdlZCB3aXRoIGN1dC9wYXN0ZSBhbmQgbm90IGFsbCBvZiB0aGUNCmNvZGUpDQoNCg0Kc3RydWN0 IHJ0ZV9kZXZfZGF0YSB7DQogICAgICAgIGNoYXIgbmFtZVtSVEVfREVWX05BTUVfTUFYX0xFTl07 IC8qKjwgVW5pcXVlIGlkZW50aWZpZXIgbmFtZSAqLw0KDQogICAgICAgIHZvaWQgICAgKipyeF9x dWV1ZXM7ICAgICAgICAgICAgLyoqPCBBcnJheSBvZiBwb2ludGVycyB0byBSWCBxdWV1ZXMuICov DQogICAgICAgIHZvaWQgICAgKip0eF9xdWV1ZXM7ICAgICAgICAgICAgLyoqPCBBcnJheSBvZiBw b2ludGVycyB0byBUWCBxdWV1ZXMuICovDQoNCiAgICAgICAgdWludDE2X3QgbmJfcnhfcXVldWVz OyAgICAgICAgICAvKio8IE51bWJlciBvZiBSWCBxdWV1ZXMuICovDQogICAgICAgIHVpbnQxNl90 IG5iX3R4X3F1ZXVlczsgICAgICAgICAgLyoqPCBOdW1iZXIgb2YgVFggcXVldWVzLiAqLw0KDQog ICAgICAgIHVpbnQxNl90IG10dTsgICAgICAgICAgICAgICAgICAgLyoqPCBNYXhpbXVtIFRyYW5z bWlzc2lvbiBVbml0LiAqLw0KICAgICAgICB1aW50OF90ICB1bml0X2lkOyAgICAgICAgICAgICAg IC8qKjwgVW5pdC9Qb3J0IElEIGZvciB0aGlzIGluc3RhbmNlICovDQogICAgICAgIHVpbnQ4X3Qg IF9wYWQwOyAgICAgICAgICAgICAgICAgLyogYWxpZ25tZW50IGZpbGxlciAqLw0KDQogICAgICAg IHZvaWQgICAgKmRldl9wcml2YXRlOyAgICAgICAgICAgLyoqPCBQTUQtc3BlY2lmaWMgcHJpdmF0 ZSBkYXRhICovDQogICAgICAgIHVpbnQ2NF90IHJ4X21idWZfYWxsb2NfZmFpbGVkOyAgLyoqPCBS WCByaW5nIG1idWYgYWxsb2NhdGlvbiBmYWlsdXJlcy4gKi8NCiAgICAgICAgdWludDMyX3QgbWlu X3J4X2J1Zl9zaXplOyAgICAgICAvKio8IENvbW1vbiByeCBidWZmZXIgc2l6ZSBoYW5kbGVkIGJ5 IGFsbA0KcXVldWVzICovDQp9Ow0KDQpzdHJ1Y3QgcnRlX2Rldl9pbmZvIHsNCiAgICAgICAgc3Ry dWN0IHJ0ZV9wY2lfZGV2aWNlICAgKnBjaV9kZXY7ICAgLyoqPCBEZXZpY2UgUENJIGluZm9ybWF0 aW9uLiAqLw0KICAgICAgICBjb25zdCBjaGFyICAgICAgKmRyaXZlcl9uYW1lOyAgICAgICAgICAg LyoqPCBEZXZpY2UgRHJpdmVyIG5hbWUuICovDQogICAgICAgIHVuc2lnbmVkIGludCAgICBpZl9p bmRleDsgICAgICAgICAgICAgICAvKio8IEluZGV4IHRvIGJvdW5kIGhvc3QgaW50ZXJmYWNlLCBv ciAwDQppZiBub25lLiAqLw0KICAgICAgICAvKiBVc2UgaWZfaW5kZXh0b25hbWUoKSB0byB0cmFu c2xhdGUgaW50byBhbiBpbnRlcmZhY2UgbmFtZS4gKi8NCiAgICAgICAgdW5zaWduZWQgaW50ICAg IF9wYWQwOw0KfTsNCg0KDQoNCnN0cnVjdCBydGVfZGV2IHsNCiAgICAgICAgZGV2X3J4X2J1cnN0 X3QgICAgICAgICAgcnhfcGt0X2J1cnN0OyAgIC8qKjwgUG9pbnRlciB0byBQTUQgcmVjZWl2ZQ0K ZnVuY3Rpb24uICovDQogICAgICAgIGRldl90eF9idXJzdF90ICAgICAgICAgIHR4X3BrdF9idXJz dDsgICAvKio8IFBvaW50ZXIgdG8gUE1EIHRyYW5zbWl0DQpmdW5jdGlvbi4gKi8NCiAgICAgICAg dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhOyAgICAgICAgICAv Kio8IFBvaW50ZXIgdG8gZGV2aWNlIGRhdGEgKi8NCiAgICAgICAgc3RydWN0IHJ0ZV9kZXZfZ2xv YmFsICAgKmdibF9kYXRhOyAgICAgIC8qKjwgUG9pbnRlciB0byBkZXZpY2UgZ2xvYmFsIGRhdGEN CiovDQogICAgICAgIGNvbnN0IHN0cnVjdCBydGVfZGV2X2RydiAqZHJpdmVyOyAgICAgICAvKio8 IERyaXZlciBmb3IgdGhpcyBkZXZpY2UgKi8NCiAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpkZXZfb3BzOyAgICAgICAvKio8IEZ1bmN0aW9ucyBleHBvcnRl ZCBieSBQTUQgKi8NCiAgICAgICAgc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICAgKnBjaV9kZXY7ICAg ICAgIC8qKjwgUENJIGluZm8uIHN1cHBsaWVkIGJ5DQpwcm9iaW5nICovDQogICAgICAgIHN0cnVj dCBydGVfZGV2X2luZm8gICAgICAgICAgICAgKmRldl9pbmZvOyAgICAgICAgICAgICAgLyoqPCBQ b2ludGVyIHRvIHRoZSBkZXZpY2UgaW5mbw0Kc3RydWN0dXJlICovDQoNCiAgICAgICAgLyoqIFVz ZXIgYXBwbGljYXRpb24gY2FsbGJhY2sgZm9yIGludGVycnVwdHMgaWYgcHJlc2VudCAqLw0KICAg ICAgICBzdHJ1Y3QgcnRlX2Rldl9jYl9saXN0ICBsaW5rX2ludHJfY2JzOw0KICAgICAgICAvKioN CiAgICAgICAgKiBVc2VyLXN1cHBsaWVkIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSByeF9idXJzdCB0 byBwb3N0LXByb2Nlc3MNCiAgICAgICAgKiByZWNlaXZlZCBwYWNrZXRzIGJlZm9yZSBwYXNzaW5n IHRoZW0gdG8gdGhlIHVzZXINCiAgICAgICAgKi8NCiAgICAgICAgc3RydWN0IHJ0ZV9kZXZfcnh0 eF9jYWxsYmFjayAqKnBvc3RfcnhfYnVyc3RfY2JzOw0KICAgICAgICAvKioNCiAgICAgICAgKiBV c2VyLXN1cHBsaWVkIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0eF9idXJzdCB0byBwcmUtcHJvY2Vz cw0KICAgICAgICAqIHJlY2VpdmVkIHBhY2tldHMgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byB0aGUg ZHJpdmVyIGZvciB0cmFuc21pc3Npb24uDQogICAgICAgICovDQogICAgICAgIHN0cnVjdCBydGVf ZGV2X3J4dHhfY2FsbGJhY2sgKipwcmVfdHhfYnVyc3RfY2JzOw0KDQpXaGF0IGlzIHRoZSBpbmRl bmRlZCB1c2Ugb2YgdGhlc2UgY2FsbGJhY2tzIGFuZCB3aGF0IGlzIHRoZSBiZW5lZml0PyBJZiB0 aGUgdXNlciBpcyBzdXBwbHlpbmcgdGhlIGNhbGxiYWNrLCB3aHkgbm90IHB1dHRpbmcgaXQgZGly ZWN0bHkgYWZ0ZXIgdGhlIFJYIGFuZCBiZWZvcmUgdGhlIFRYIGNhbGwgaW4gdXNlcidzIGNvZGUg KGFueXdheSk/DQoNCkp1c3QgbW92aW5nIHRoZSBjYWxsYmFjayByb3V0aW5lcyBuZXh0IHRvIHRo ZSBSeC9UeCByb3V0aW5lIHBvaW50ZXJzIGRvZXMgbm90IG1ha2UgYSBsb3Qgb2YgZGlmZmVyZW50 IGluIHRoaXMgc3RydWN0dXJlLCByaWdodD8NCg0KDQoNCiAgICAgICAgZW51bSBydGVfZGV2X3R5 cGUgICAgICAgICAgICAgICBkZXZfdHlwZTsgICAgICAgLyoqPCBGbGFnIGluZGljYXRpbmcgdGhl IGRldmljZSB0eXBlICovDQogICAgICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgIGF0dGFjaGVk OyAgICAgICAgLyoqPCBGbGFnIGluZGljYXRpbmcgdGhlIHBvcnQgaXMNCmF0dGFjaGVkICovDQp9 Ow0KDQpGcm9tIHJ0ZV9ldGhkZXYuaA0KDQpzdHJ1Y3QgcnRlX2V0aF9kZXZfaW5mbyB7DQogICAg ICAgIHN0cnVjdCBydGVfZGV2X2luZm8gICAgIGRpOyAgICAgLyoqPCBDb21tb24gZGV2aWNlIGlu Zm9ybWF0aW9uICovDQoNCiAgICAgICAgLyogUmVzdCBvZiBzdHJ1Y3R1cmUgaXMgZm9yIHByaXZh dGUgZGV2aWNlIGRhdGEgKi8NCiAgICAgICAgdWludDMyX3QgbWluX3J4X2J1ZnNpemU7IC8qKjwg TWluaW11bSBzaXplIG9mIFJYIGJ1ZmZlci4gKi8NCiAgICAgICAgdWludDMyX3QgbWF4X3J4X3Br dGxlbjsgLyoqPCBNYXhpbXVtIGNvbmZpZ3VyYWJsZSBsZW5ndGggb2YgUlggcGt0LiAqLw0KICAg ICAgICB1aW50MTZfdCBtYXhfcnhfcXVldWVzOyAvKio8IE1heGltdW0gbnVtYmVyIG9mIFJYIHF1 ZXVlcy4gKi8NCiAgICAgICAgdWludDE2X3QgbWF4X3R4X3F1ZXVlczsgLyoqPCBNYXhpbXVtIG51 bWJlciBvZiBUWCBxdWV1ZXMuICovDQogICAgICAgIHVpbnQzMl90IG1heF9tYWNfYWRkcnM7IC8q KjwgTWF4aW11bSBudW1iZXIgb2YgTUFDIGFkZHJlc3Nlcy4gKi8NCiAgICAgICAgdWludDMyX3Qg bWF4X2hhc2hfbWFjX2FkZHJzOw0KICAgICAgICAvKiogTWF4aW11bSBudW1iZXIgb2YgaGFzaCBN QUMgYWRkcmVzc2VzIGZvciBNVEEgYW5kIFVUQS4gKi8NCiAgICAgICAgdWludDE2X3QgbWF4X3Zm czsgLyoqPCBNYXhpbXVtIG51bWJlciBvZiBWRnMuICovDQogICAgICAgIHVpbnQxNl90IG1heF92 bWRxX3Bvb2xzOyAvKio8IE1heGltdW0gbnVtYmVyIG9mIFZNRHEgcG9vbHMuICovDQogICAgICAg IHVpbnQzMl90IHJ4X29mZmxvYWRfY2FwYTsgLyoqPCBEZXZpY2UgUlggb2ZmbG9hZCBjYXBhYmls aXRpZXMuICovDQogICAgICAgIHVpbnQzMl90IHR4X29mZmxvYWRfY2FwYTsgLyoqPCBEZXZpY2Ug VFggb2ZmbG9hZCBjYXBhYmlsaXRpZXMuICovDQogICAgICAgIHVpbnQxNl90IHJldGFfc2l6ZTsN CiAgICAgICAgLyoqPCBEZXZpY2UgcmVkaXJlY3Rpb24gdGFibGUgc2l6ZSwgdGhlIHRvdGFsIG51 bWJlciBvZiBlbnRyaWVzLiAqLw0KICAgICAgICAvKiogQml0IG1hc2sgb2YgUlNTIG9mZmxvYWRz LCB0aGUgYml0IG9mZnNldCBhbHNvIG1lYW5zIGZsb3cgdHlwZSAqLw0KICAgICAgICB1aW50NjRf dCBmbG93X3R5cGVfcnNzX29mZmxvYWRzOw0KICAgICAgICBzdHJ1Y3QgcnRlX2V0aF9yeGNvbmYg ZGVmYXVsdF9yeGNvbmY7IC8qKjwgRGVmYXVsdCBSWCBjb25maWd1cmF0aW9uICovDQogICAgICAg IHN0cnVjdCBydGVfZXRoX3R4Y29uZiBkZWZhdWx0X3R4Y29uZjsgLyoqPCBEZWZhdWx0IFRYIGNv bmZpZ3VyYXRpb24gKi8NCiAgICAgICAgdWludDE2X3Qgdm1kcV9xdWV1ZV9iYXNlOyAvKio8IEZp cnN0IHF1ZXVlIElEIGZvciBWTURRIHBvb2xzLiAqLw0KICAgICAgICB1aW50MTZfdCB2bWRxX3F1 ZXVlX251bTsgLyoqPCBRdWV1ZSBudW1iZXIgZm9yIFZNRFEgcG9vbHMuICovDQogICAgICAgIHVp bnQxNl90IHZtZHFfcG9vbF9iYXNlOyAvKio8IEZpcnN0IElEIG9mIFZNRFEgcG9vbHMuICovDQp9 Ow0KDQpzdHJ1Y3QgcnRlX2V0aF9kZXZfZGF0YSB7DQogICAgICAgIHN0cnVjdCBydGVfZGV2X2Rh dGEgICAgICAgICAgICAgZGQ7ICAgICAgICAgICAgICAgICAgICAgLyoqPCBDb21tb24gZGV2aWNl IGRhdGEgKi8NCg0KICAgICAgICAvKiBSZXN0IG9mIHRoZSBzdHJ1Y3R1cmUgaXMgcHJpdmF0ZSBk YXRhICovDQogICAgICAgIHN0cnVjdCBydGVfZXRoX2Rldl9zcmlvdiBzcmlvdjsgICAgLyoqPCBT UklPViBkYXRhICovDQoNCiAgICAgICAgc3RydWN0IHJ0ZV9ldGhfbGluayBkZXZfbGluazsNCiAg ICAgICAgLyoqPCBMaW5rLWxldmVsIGluZm9ybWF0aW9uICYgc3RhdHVzICovDQoNCiAgICAgICAg c3RydWN0IHJ0ZV9ldGhfY29uZiBkZXZfY29uZjsgICAvKio8IENvbmZpZ3VyYXRpb24gYXBwbGll ZCB0byBkZXZpY2UuICovDQogICAgICAgIHN0cnVjdCBldGhlcl9hZGRyKiBtYWNfYWRkcnM7ICAg LyoqPCBEZXZpY2UgRXRoZXJuZXQgTGluayBhZGRyZXNzLiAqLw0KICAgICAgICB1aW50NjRfdCBt YWNfcG9vbF9zZWxbRVRIX05VTV9SRUNFSVZFX01BQ19BRERSXTsNCiAgICAgICAgLyoqIGJpdG1h cCBhcnJheSBvZiBhc3NvY2lhdGluZyBFdGhlcm5ldCBNQUMgYWRkcmVzc2VzIHRvIHBvb2xzICov DQogICAgICAgIHN0cnVjdCBldGhlcl9hZGRyKiBoYXNoX21hY19hZGRyczsNCg0KICAgICAgICAv KiogRGV2aWNlIEV0aGVybmV0IE1BQyBhZGRyZXNzZXMgb2YgaGFzaCBmaWx0ZXJpbmcuICovDQog ICAgICAgIHVpbnQ4X3QgcHJvbWlzY3VvdXMgIDogMSwgICAvKio8IFJYIHByb21pc2N1b3VzIG1v ZGUgT04oMSkgLyBPRkYoMCkuICovDQogICAgICAgICAgICAgICAgc2NhdHRlcmVkX3J4IDogMSwg ICAgICAgLyoqPCBSWCBvZiBzY2F0dGVyZWQgcGFja2V0cyBpcyBPTigxKSAvIE9GRigwKSAqLw0K ICAgICAgICAgICAgICAgIGFsbF9tdWx0aWNhc3Q6IDEsICAgLyoqPCBSWCBhbGwgbXVsdGljYXN0 IG1vZGUgT04oMSkgLyBPRkYoMCkuICovDQogICAgICAgICAgICAgICAgZGV2X3N0YXJ0ZWQgIDog MTsgICAvKio8IERldmljZSBzdGF0ZTogU1RBUlRFRCgxKSAvIFNUT1BQRUQoMCkuICovDQp9Ow0K DQpJbiB0aGUgY2FzZSBvZiBydGVfZXRoZGV2LmggdGhlIHJ0ZV9ldGhfZGV2IHR1cm5zIGludG8g YSBtYWNybyAnI2RlZmluZQ0KcnRlX2V0aF9kZXYgcnRlX2RldicsIGluIG90aGVyIGRldmljZXMg dGhleSBtYXkgaGF2ZSBhIHJ0ZV94eXpfZGV2DQpzdHJ1Y3R1cmUgcnRlX2RldiBhcyB0aGUgZmly c3QgbWVtYmVyIGFuZCB0aGVuIHByaXZhdGUgbWVtYmVycy4gQWxzbyBsYXRlcg0KaWYgd2UgZmlu ZCBzb21ldGhpbmcgcHJpdmF0ZSB0byBldGhkZXYgdGhlbiBhIHN0cnVjdHVyZSBjYW4gYmUgY3Jl YXRlZC4NCg0KDQpNb3N0IG9mIHRoZSBjb2RlIGNoYW5nZXMgb3V0c2lkZSBvZiB0aGVzZSBjaGFu Z2VzIGFyZSBiZWNhdXNlIHVzaW5nIGENCm1hY3JvIHRvIGZpeCB0aGUgY29kZSB3YXMgZWFzaWVy LiBSZXdyaXRpbmcgdGhlIGZ1bmN0aW9ucyB0byB1c2UgcmVhbA0KdmFyaWFibGVzIGluc3RlYWQg b2YgY2FzdGluZyB2b2lkIHBvaW50ZXIgY291bGQgeWllbGQgd2l0aG91dCB0aGUgbWFjcm9zLg0K Tm90IHN1cmUgYXMgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBpbiByZXdyaXRpbmcgc29tZSBvZiB0 aGVzZSBmdW5jdGlvbnMgdG8NCmVsaW1pbmF0ZSB0aGUgbWFjcm9zLg0KDQpUaGlzIGlzIHRoZSBo ZWFydCBvZiB3aGF0IEkgYW0gcHJvcG9zaW5nIGFuZCBpdCBqdXN0IHNvIGhhcHBlbnMgdG8gYWxs b3cNCkJydWNlqfYgaWRlYXMgYXMgd2VsbC4gSSBoYXZlIGFub3RoZXIgcGF0Y2ggSSBoYXZlIG5v dCBzZW50IHRoYXQgaW5jbHVkZXMNCkJydWNlqfZzIGlkZWFzIHVzaW5nIG15IHN1Z2dlc3Rpb25z Lg0KDQpCZWluZyBhYmxlIHRvIHVzZSBhIHNpbmdsZSBBUEkgZm9yIGFsbCBkZXZpY2VzIGRvZXMg aGF2ZSBpdHMgYmVuZWZpdHMgSU1PLA0KYnV0IEkgd2FudCB0byBjbGVhbnVwIGV0aGRldiB0byBh bGxvdyBmb3Igb3RoZXIgZGV2aWNlcyB0byBiZSBhZGRlZCB0byB0aGUNCnN5c3RlbS4NCg0KQXQg c29tZSBwb2ludCAod2hlbiB0aGUgY3J5cHRvZGV2IGlzIGRvbmUpIEkgd2FudCB0byBhZGQgaXQg dG8gdGhpcw0KZnJhbWV3b3JrLCBwbHVzIGFkZCBtb3JlIEFQSXMgZm9yIGNyeXB0byBzaW1pbGFy IHRvIExpbnV4IENyeXB0byBBUEkgb3INCnNvbWV0aGluZyB3ZSBjYW4gYWdyZWUgaXMgYSByZWFz b25hYmxlIHNldCBvZiBBUElzIGZvciBEUERLLg0KDQpJIGN1cnJlbnRseSBkb24ndCBzZWUgdGhl IGJlbmVmaXQgb2YgYWJzdHJhY3RpbmcgYmV5b25kIHRoZSBSWC9UWCBmdW5jdGlvbnMsIGFuZCBJ IHNlZSBtb3JlIGNvbnMgdGhhbiBwcm9zLiBEb2luZyBzbyB3ZSB3aWxsIGFsc28gbWFrZSBsaWJy dGVfcGt0X2RldiBzb3J0IG9mIG1hbmRhdG9yeSwgZXZlbiBpZiB5b3UgYXJlIG5vdCB1c2luZyBp dCBvdXIgYWJzdHJhY3RlZCBSWC9UWCBmdW5jdGlvbnMgYXQgYWxsLg0KDQpJIGRvIG5vdCBzZWUg d2h5IHdlIHdvdWxkIG5vdCBwdWxsIHRoZXNlIGNvbW1vbiBpdGVtcyBvdXQuIENhbiB5b3UgbGlz dCB5b3VyIGNvbnMgYXMgSSBkbyBub3Qgc2VlIHlvdXIgcG9pbnQgaGVyZS4NCg0KDQpyZWdhcmRz DQptYXJjDQoNCg0KDQpSZWdhcmRzLA0KDQorK0tlaXRoDQoNCg0KTWF5YmUgaXQgaXMgb3ZlcnNp bXBsaWZpZWQ/IFdpdGggdGhpcyBhcHByb2FjaCB0b3VnaCwgd2Ugd291bGQgYmFyZWx5DQp0b3Vj aCB0aGUgUE1EcyBhbmQgdGhlIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGJ1aWx0IG9uIHRvcCBvZiB0 aGUgZXhpc3RpbmcNClBNRHMuDQoNClRob3VnaHRzPw0KTWFyYw0KDQoNCg0KDQpCcnVjZSBSaWNo YXJkc29uICg0KToNCiAgIEFkZCBleGFtcGxlIHBrdGRldiBpbXBsZW1lbnRhdGlvbg0KICAgTWFr ZSBldGhkZXYgZXhwbGljaXRseSBhIHN1YmNsYXNzIG9mIHBrdGRldg0KICAgYWRkIHN1cHBvcnQg Zm9yIGEgcmluZyB0byBiZSBhIHBrdGRldg0KICAgZXhhbXBsZSBhcHAgc2hvd2luZyBwa3RkZXZz IHVzZWQgaW4gYSBjaGFpbg0KDQogIGNvbmZpZy9jb21tb25fYnNkYXBwICAgICAgICAgICB8ICAg NSArDQogIGNvbmZpZy9jb21tb25fbGludXhhcHAgICAgICAgICB8ICAgNSArDQogIGV4YW1wbGVz L3BrdGRldi9NYWtlZmlsZSAgICAgICB8ICA1NyArKysrKysrKysrKw0KICBleGFtcGxlcy9wa3Rk ZXYvYmFzaWNmd2QuYyAgICAgfCAyMjINCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQogIGxpYi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgMSArDQogIGxp Yi9saWJydGVfZXRoZXIvcnRlX2V0aGRldi5oICB8ICAyNiArKy0tLQ0KICBsaWIvbGlicnRlX3Br dGRldi9NYWtlZmlsZSAgICAgfCAgNTYgKysrKysrKysrKysNCiAgbGliL2xpYnJ0ZV9wa3RkZXYv cnRlX3BrdGRldi5jIHwgIDM1ICsrKysrKysNCiAgbGliL2xpYnJ0ZV9wa3RkZXYvcnRlX3BrdGRl di5oIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrDQogIGxpYi9saWJydGVfcmluZy9y dGVfcmluZy5jICAgICB8ICA0MSArKysrKysrKw0KICBsaWIvbGlicnRlX3JpbmcvcnRlX3Jpbmcu aCAgICAgfCAgIDMgKw0KICAxMSBmaWxlcyBjaGFuZ2VkLCA1ODIgaW5zZXJ0aW9ucygrKSwgMTMg ZGVsZXRpb25zKC0pDQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBleGFtcGxlcy9wa3RkZXYvTWFrZWZp bGUNCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL3BrdGRldi9iYXNpY2Z3ZC5jDQogIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3BrdGRldi9NYWtlZmlsZQ0KICBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliL2xpYnJ0ZV9wa3RkZXYvcnRlX3BrdGRldi5jDQogIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWIvbGlicnRlX3BrdGRldi9ydGVfcGt0ZGV2LmgNCg0KDQoNCg==