From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Wiles, Keith" Subject: Re: Beyond DPDK 2.0 Date: Mon, 27 Apr 2015 01:41:11 +0000 Message-ID: References: <26FA93C7ED1EAA44AB77D62FBE1D27BA54D1A917@IRSMSX102.ger.corp.intel.com> <20150424175124.GA30624@mhcomputing.net> <553B9706.1060904@bisdn.de> <20150426215644.GA9021@neilslaptop.think-freely.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "dev-VfR2kkLFssw@public.gmane.org" To: Neil Horman Return-path: In-Reply-To: <20150426215644.GA9021-0o1r3XBGOEbbgkc5XkKeNuvMHUBZFtU3YPYVAmT7z5s@public.gmane.org> Content-Language: en-US Content-ID: <288A3A393822904C9F7DE862E2A67FCA-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" DQoNCk9uIDQvMjYvMTUsIDQ6NTYgUE0sICJOZWlsIEhvcm1hbiIgPG5ob3JtYW5AdHV4ZHJpdmVy LmNvbT4gd3JvdGU6DQoNCj5PbiBTYXQsIEFwciAyNSwgMjAxNSBhdCAwNDowODoyM1BNICswMDAw LCBXaWxlcywgS2VpdGggd3JvdGU6DQo+PiANCj4+IA0KPj4gT24gNC8yNS8xNSwgODozMCBBTSwg Ik1hcmMgU3VuZSIgPG1hcmMuc3VuZUBiaXNkbi5kZT4gd3JvdGU6DQo+PiANCj4+ID4NCj4+ID4N Cj4+ID5PbiAyNC8wNC8xNSAxOTo1MSwgTWF0dGhldyBIYWxsIHdyb3RlOg0KPj4gPj4gT24gRnJp LCBBcHIgMjQsIDIwMTUgYXQgMTI6Mzk6NDdQTSAtMDUwMCwgSmF5IFJvbGV0dGUgd3JvdGU6DQo+ PiA+Pj4gSSBjYW4gdGVsbCB5b3UgdGhhdCBpZiBEUERLIHdlcmUgR1BMLWJhc2VkLCBteSBjb21w YW55IHdvdWxkbid0IGJlDQo+PiA+Pj51c2luZw0KPj4gPj4+IGl0LiBJIHN1c3BlY3Qgd2Ugd291 bGRuJ3QgYmUgdGhlIG9ubHkgb25lcy4uLg0KPj4gPj4+DQo+PiA+Pj4gSmF5DQo+PiA+PiBJIGNv dWxkIHNlY29uZCB0aGlzLCBmcm9tIHRoZSBwYXN0IGVtcGxveWVyIHdoZXJlIEkgdXNlZCBpdC4g UmlnaHQNCj4+bm93DQo+PiA+PkkgYW0NCj4+ID4+IHVzaW5nIGl0IGluIGFuIG9wZW4gc291cmNl IGFwcCwgSSBoYXZlIGEgYml0IG9mIEdQTCBoZXJlIGFuZCB0aGVyZQ0KPj5idXQNCj4+ID4+SSdt DQo+PiA+PiB0cnlpbmcgdG8gZ2V0IHJpZCBvZiBpdCBvciBjb25maW5lIGl0IHRvIHNlcGFyYXRl IGFkZHJlc3Mgc3BhY2VzLA0KPj53aGVyZQ0KPj4gPj5pdA0KPj4gPj4gd29uJ3QgaW1wYWN0IHRo ZSBjb3JlIGNvZGUgd3JpdHRlbiBhcm91bmQgRFBESywgYXMgSSBkb24ndCB3YW50IHRvDQo+PmNh dXNlDQo+PiA+PiBoZWFkYWNoZXMgZm9yIGFueSBkb3duc3RyZWFtIHVzZXJzIEkgYXR0cmFjdCBz b21lZGF5Lg0KPj4gPj4NCj4+ID4+IEhhcmQtY29yZSBHUEwgd291bGQgbm90IGJlIHBvc3NpYmxl IGZvciBtb3N0LiBMR1BMIGNvdWxkIGJlIHBvc3NpYmxlLA0KPj4gPj5idXQgSQ0KPj4gPj4gZG9u J3QgdGhpbmsgaXQgY291bGQgYmUgd29ydGggdGhlIHJlbGljZW5zaW5nIGhlYWRhY2hlIGZvciB0 aGF0IHNtYWxsDQo+PiA+PmNoYW5nZS4NCj4+ID4+DQo+PiA+PiBJbnN0ZWFkIHdlIHNob3VsZCBt YWtlIHRoZSBwYXRjaCBwcm9jZXNzIGFzIGVhc3kgYXMgaHVtYW5seSBwb3NzaWJsZQ0KPj5zbw0K Pj4gPj5wZW9wbGUNCj4+ID4+IGFyZSBlbmNvdXJhZ2VkIHRvIHNlbmQgdXMgdGhlIGZpeGVzIGFu ZCBub3QgY2FydCB0aGVtIGFyb3VuZCB0aGVpcg0KPj4gPj5jb21wYW5pZXMNCj4+ID4+IGNvbnN0 YW50bHkuDQo+PiANCj4+ICsxIGFuZCBiZXNpZGVzIHRoZSBHUEwgb3IgTEdQTCBzaGlwIGhhcyBz YWlsZWQgSU1ITyBhbmQgd2UgY2FuIG5vdCBnbw0KPj5iYWNrLg0KPkFjdHVhbGx5LCBJQU5BTCwg YnV0IEkgdGhpbmsgd2UgY2FuLiAgVGhlIEJTRCBsaWNlbnNlIGFsbG93cyB1cyB0byBmb3JrDQo+ YW5kDQo+cmVsaWNlbnNlIHRoZSBjb2RlIEkgdGhpbmssIHVuZGVyIEdQTCBvciBhbnkgb3RoZXIg bGljZW5zZS4gIEknbSBub3QNCj5hZHZvY2F0aW5nDQo+Zm9yIHRoYXQgbWluZCB5b3UsIGp1c3Qg c3VnZ2VzdGluZyB0aGF0IGl0cyBwb3NzaWJsZSBzaG91bGQgaXQgZXZlciBiZWNvbWUNCj5uZWVk ZWQuDQo+DQo+PiA+DQo+PiA+SSBhZ3JlZS4gTXkgZmVlbGluZyBpcyB0aGF0IGFzIHRoZSBudW1i ZXIgb2YgcGF0Y2hlcyBpbiB0aGUgbWFpbGluZw0KPj5saXN0DQo+PiA+Z3Jvd3MsIGtlZXBpbmcg dHJhY2sgb2YgdGhlbSBnZXRzIG1vcmUgYW5kIG1vcmUgY29tcGxpY2F0ZWQuIFBhdGNod29yaw0K Pj4gPndlYnNpdGUgd2FzIGEgd2F5IHRvIHRyeSB0byBhZGRyZXNzIHRoaXMgaXNzdWUuIEkgdGhp bmsgaXQgd2FzIGFuDQo+PiA+aW1wcm92ZW1lbnQsIGJ1dCB0byBiZSBob25lc3QsIHBhdGNod29y ayBsYWNrcyBhIGxvdCBvZiBmdW5jdGlvbmFsaXR5LA0KPj4gPnN1Y2ggYXMgcHJvcGVybHkgdHJh Y2tpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHBhdGNoIChzdXBlcnNlZGluZw0KPj4gPnRo ZW0gYXV0b21hdGljYWxseSksIGFuZCBpdCBsYWNrcyBzb21lIGZpbHRlcmluZyBjYXBhYmlsaXRp ZXMgZS5nLiBwZXINCj4+ID51c2VyLCBwZXIgdGFnL2xhYmVsIG9yIGxpYnJhcnksIGF1dG9tYXRp Y2FsbHkgdHJhY2sgaWYgaXQgaGFzIGJlZW4NCj4+ID5tZXJnZWQsIGdpdmUgYW4gb3ZlcmFsbCBz dGF0dXMgb2YgdGhlIHBlbmRpbmcgdnMgbWVyZ2VkIHBhdGNoZXMsIHNldA0KPj4gPm1pbGVzdG9u ZXMuLi4gSXMgdGhlcmUgYW55IGFsdGVybmF0aXZlIHRvb2wgb3IgaW1wcm92ZWQgdmVyc2lvbiBm b3INCj4+dGhhdD8NCj4+IA0KPkFncmVlZCwgdGhpcyBoYXMgY29tZSB1cCBiZWZvcmUsIG9mZiBs aXN0IHVuZm9ydHVuYXRlbHkuICBUaGUgdm9sdW1lIG9mDQo+cGF0Y2hlcw0KPnNlZW1zIHRvIGJl IGluY3JlYXNpbmcgYXQgc3VjaCBhIHJhdGUgdGhhdCBhIHNpbmdsZSBtYWludGFpbmVyIGhhcw0K PmRpZmZpY3VsdHkNCj5rZWVwaW5nIHVwLiAgSSBwcm9wb3NlZCB0aGF0IHRoZSB3b3JrbG9hZCBi ZSBzcGxpdCBvdXQgdG8gbXVsdGlwbGUNCj5zdWJ0cmVlcywNCj53aXRoIHByZWZpeGVzIGJlaW5n IGFkZGVkIHRvIHBhdGNoIHN1YmplY3RzIG9uIHRoZSBsaXN0IGZvciBsb2NhbA0KPmZpbHRlcmlu ZyB0bw0KPnN0ZW0gdGhlIHRpZGUuICBTcGVjaWZpY2FsbHkgSSBoYWQgcHJvcG9zZWQgdGhhdCB0 aGUgUE1EJ3MgYmUgc3BsaXQgaW50byBhDQo+c2VwYXJhdGUgc3VidHJlZSwgYnV0IHRoYXQgcmVj ZWl2ZWQgcHVzaGJhY2sgaW4gZmF2b3Igb2YgaGF2aW5nIGVhY2gNCj5saWJyYXJ5DQo+aGF2aW5n IGl0cyBvd24gc2VwYXJhdGUgc3VidHJlZSwgd2l0aCBhIHBpbG90IHByb2dyYW0gYmVpbmcgbWFk ZSBvdXQgb2YNCj50aGUgSTQwZQ0KPmRyaXZlciAod2hpY2ggeW91IG1pZ2h0IG5vdGUgc2VuZHMg cHVsbCByZXF1ZXN0cyB0byB0aGUgbGlzdCBub3cpLiAgSSdkDQo+c3RpbGwNCj5saWtlIHRvIHNl ZSBhbGwgUE1EJ3MgY29tZSB1bmRlciBhIHNpbmdsZSBzdWJ0cmVlLCBidXQgdGhhdHMgbGlrZWx5 IGFuDQo+YXJndW1lbnQNCj5mb3IgbGF0ZXIuDQo+DQo+VGhhdCBzYWlkLCBEbyB5b3UgdGhpbmsg dGhhdCB0aGlzIHBhdGNoIGxhdGVuY3kgaXMgcmVhbGx5IGEgY29udHJpYnV0b3INCj50byBsb3cN Cj5wcm9qZWN0IHBhcnRpY2lwYXRpb24/ICBJdCBkZWZpbmF0ZWx5IGEgcHJvYmxlbSwgYnV0IGl0 IHNlZW1zIHRvIG1lIHRoYXQNCj50aGlzDQo+c29ydCBvZiBpc3N1ZSB3b3VsZCBsZWFkIHRvIHBl b3BsZSB0cnlpbmcgdG8gcGFyY2l0aXBhdGUsIHRoZW4gZ2l2aW5nIHVwDQo+KGkuZS4NCj53ZSB3 b3VsZCBzZWUgMS0yIGVtYWlscyBmcm9tIGFuIGluZGl2aWR1YWwsIHRoZW4gbm90IHNlZSB0aGVt IGFnYWluKS4NCj5JJ2QgbmVlZA0KPnRvIGxvb2sgdGhyb3VnaCB0aGUgbWFpbGluZyBsaXN0IGZv ciBzdWNoIGEgcGF0dGVybiwgYnV0IGFuZWNkb3RhbGx5IEkndmUNCj5ub3QNCj5zZWVuIHRoYXQg aGFwcGVuLiAgVGhlIHByb2JsZW0geW91IGRlc2NyaWJlIGFib3ZlIGlzIGRlZmluYXRlbHkgYQ0K PnByb2JsZW0sIGJ1dA0KPml0cyBvbmUgZm9yIHRob3NlIGluZGl2aWR1YWxzIHdobyBhcmUgcGFy dGljaXBhdGluZywgbm90IGZvciB0aG9zZSB3aG8gYXJlDQo+c2ltcGx5IGNob29zaW5nIG5vdCB0 by4gIEFuZCBJIHRoaW5rIHdlIG5lZWQgdG8gYWRkcmVzcyBib3RoLg0KPg0KPj4gSSBhZ3JlZSBw YXRjaHdvcmsgaGFzIHNvbWUgbGltaXRhdGlvbiwgYnV0IEkgdGhpbmsgdGhlIGJpZ2dlc3QgaXNz dWUgaXMNCj4+IGtlZXBpbmcgdXAgd2l0aCB0aGUgcGF0Y2hlcy4gR2V0dGluZyBwYXRjaGVzIGlu dHJvZHVjZWQgaW50byB0aGUgbWFpbg0KPj5saW5lDQo+PiBpcyB2ZXJ5IHNsb3cuIEEgcGF0Y2gg c3VibWl0dGVkIHRvZGF5IG1heSBub3QgZ2V0IGFwcGxpZWQgZm9yIHdlZWtzIG9yDQo+PiBtb250 aHMsIHRoZW4gd2hlbiBhbm90aGVyIHBlcnNvbiBzdWJtaXRzIGEgcGF0Y2ggaGUgaXMgc3RhcnRp bmcgdG8gcnVuIGENCj4+IHZlcnkgaGlnaCByaXNrIG9mIGhhdmluZyB0byByZWRvIHRoYXQgcGF0 Y2gsIGJlY2F1c2UgYSBwZXJ2aW91cyBwYXRjaA0KPj4gbWFrZXMgaGlzIGZhaWwgd2Vla3MvbW9u dGhzIGxhdGVyLiBJIHdvdWxkIGxvdmUgdG8gc2VlIGEgYmV0dGVyIHRvb2wNCj4+dGhlbg0KPj4g cGF0Y2h3b3JrLCBidXQgdGhlIGJpZ2dlc3QgaXNzdWUgaXMgd2UgaGF2ZSBhIGh1Z2UgYmFja2xv ZyBvZiBwYXRjaGVzLg0KPj4gUGVyc29uYWxseSBJIGFtIG5vdCBzdXJlIGhvdyBUaG9tYXMgb3Ig YW55IGlzIGFibGUgdG8ga2VlcCB1cCB3aXRoIHRoZQ0KPj4gcGF0Y2hlcy4NCj4+IA0KPlRoaXMg aXMgYWJzb2x1dGVseSBhIHByb2JsZW0uICBJJ2QgbGlrZSB0byB0aGluaywgbW9yZSB0aGFuIGEg dG9vbCBsaWtlDQo+cGF0Y2h3b3JrLCBhIHN1YnRyZWUgb3JnYW5pemF0aW9uIHRvIGFsbG93IHNv bWUgbW9kaWN1bSBvZiBwYXJhbGxlbA0KPnJldmlldyBhbmQNCj5pbnRlZ3JhdGlvbiB3b3VsZCBy ZWFsbHkgYmUgYSBiZW5lZml0IGhlcmUuDQpTdWJ0cmVlcyBjb3VsZCB3b3JrLCBidXQgdGhlIHJl YWwgcHJvYmxlbSBJIHRoaW5rIGlzIHRoZSBudW1iZXIgb2YNCmNvbW1pdHRlcnMgbXVzdCBiZSBo aWdoZXIgdGhlbiBvbmUuIFNvbWV0aGluZyBsaWtlIEdpdEh1YiAoYW5kIEkgYXNzdW1lDQpMaW51 eCBGb3VuZGF0aW9uKSBoYXZlIGEgbWV0aG9kIHRvIGFkZCBjb21taXR0ZXJzIHRvIGEgcHJvamVj dC4gSW4gdGhlDQpjYXNlIG9mIEdpdEh1YiB0aGV5IGp1c3QgaGF2ZSB0byBoYXZlIGEgZnJlZSBH aXRIdWIgYWNjb3VudCBhbmQgdGhleSBjYW4NCmJlY29tZSBjb21taXR0ZXJzIG9mIHRoZSBwcm9q ZWN0IGJ1eWluZyB0aGUgb3duZXIgb2YgdGhlIHByb2plY3QgZW5hYmxlcw0KdGhlbS4NCg0KT24g R2l0SHViIHRoZXkgaGF2ZSBwZXJzb25hbCBhY2NvdW50cyBhbmQgb3JnYW5pemF0aW9uIGFjY291 bnRzIEkga25vdw0Kb25seSBhYm91dCB0aGUgcGVyc29uYWwgYWNjb3VudHMsIGJ1dCB0aGV5IGFs bG93IGZvciA1IHByaXZhdGUgcmVwb3MgYW5kDQphbnkgbnVtYmVyIG9mIHB1YmxpYyByZXBvcy4g VGhlIG9yZ2FuaXphdGlvbiBhY2NvdW50IGhhcyBhIGxvdCBvZiBleHRyYQ0KZmVhdHVyZXMgdGhh dCBzZWVtIGJldHRlciBmb3IgYSBEUERLIGNvbW11bml0eSBJTU8gYW5kIHNob3VsZCBiZSB0aGUg b25lDQp3ZSB1c2UgaWYgd2UgZGVjaWRlIGl0IGlzIHRoZSByaWdodCBkaXJlY3Rpb24uIFdlIGNh biBhbHdheXMgZ2l2ZSBpdCBhDQpzaG90IGZvciB3aGlsZSBhbmQga2VlcCB0aGUgZHBkay5vcmcg YW5kIHVzZSBkZXZAZHBkay5vcmcgYW5kIGl0cyByZXBvDQptaXJyb3JlZCBmcm9tIEdpdEh1YiBh cyBhIHRyYW5zaXRpb24gcGhhc2UuIFRoaXMgd2F5IHdlIGNhbiBmYWxsIGJhY2sgdG8NCmRwZGsu b3JnIG9yIG1vdmUgb25lIHRvIHNvbWV0aGluZyBlbHNlIGlmIHdlIGxpa2UuDQoNCmh0dHBzOi8v aGVscC5naXRodWIuY29tL2NhdGVnb3JpZXMvb3JnYW5pemF0aW9ucy8NCg0KVGhlIGRldmVsb3Bl cnMgY291bGQgc3RpbGwgc2VuZCBwYXRjaGVzIHZpYSBlbWFpbCBsaXN0LCBidXQgY3JlYXRpbmcg YQ0KcmVwbyBhbmQgZm9ya2luZyBkcGRrIGlzIGVhc3ksIHRoZW4gc2VuZCBhIHB1bGwgcmVxdWVz dC4NCg0KDQo+DQo+PiBUaGUgb3RoZXIgcHJvYmxlbSBJIHNlZSBpcyBob3cgcGF0Y2hlcyBhcmUg YWdyZWVkIG9uIHRvIGJlIGluY2x1ZGVkIGluDQo+PnRoZQ0KPj4gbWFpbmxpbmUuIFRvZGF5IGl0 IGlzIGp1c3QgYW4gQUNLIG9yIGEgTkFLIG9uIHRoZSBtYWlsaW5nIGxpc3QuIFRoZW4gSQ0KPj5z ZWUNCj4+IHdoYXQgSSB0aGluayB0byBiZSBvbmx5IGEgZmV3IHBlb3BsZSBBQ0tpbmcgb3IgTkFL aW5nIHBhdGNoZXMuIFRoaXMNCj4+IHByb2Nlc3MgaGFzIGEgbG90IG9mIHByb2JsZW1zIGZyb20g YSBwYXRjaCBiZWluZyBpZ25vcmUgZm9yIHNvbWUgcmVhc29uDQo+Pm9yDQo+PiBzb21lb25lIGhh dmluZyBuZWdhdGl2ZSBmZWVkIGJhY2sgb24gdmVyeSBtaW5vciBkZXRhaWwgb3Igbm8gd2F5IHRv DQo+PnB1c2ggYQ0KPj4gcGF0Y2ggZm9yd2FyZCBhIHNpbmdsZSBOQUsgb3IgY29tbWVudC4NCj4+ IA0KPg0KPlNvLCB0aGlzIGlzIGFuIGludGVyZXN0aW5nIGlzc3VlIGluIGlkZWFsIG1lcml0b2Ny YWNpZXMuICBDdXJyZW50bHkNCj5pcy9zaG91bGQgYmUNCj5sb29raW5nIGZvciBBQ0tzL05BSy9z IGZyb20gdGhlIGluZGl2aWR1YWxzIGxpc3RlZCBpbiB0aGUgTUFJTlRBSU5FUg0KPmZpbGVzLCBh bmQNCj50aG9zZSBwZW9wbGUgc2hvdWxkIGJlIHRoZSBkZWZpbml0aXZlIHN1YmplY3QgbWF0dGVy IGV4cGVydHMgb24gdGhlIGNvZGUNCj50aGV5DQo+Y292ZXIuICBBcyBzdWNoLCBJIHdvdWxkIGFn cnVlIHRoYXQgdGhleSBzaG91bGQgYmUgZW50aXRsZWQgdG8gYSBtb2RpY3VtDQo+b2YNCj5zdHls aXN0aWMvdHJpdmlhbCBsZWV3YXkuICBUaGF0IGlzIHRvIHNheSwgaWYgdGhleSBjaG9vc2UgdG8g YmxvY2sgYSBwYXRjaA0KPmFyb3VuZCBhIHZlcnkgbWlub3IgZGV0YWlsLCB0aGVuIGJldHdlZW4g dGhlbSBjaGFuZ2luZyB0aGVpciBwb3NpdGlvbiwNCj5hbmQgdGhlDQo+cGF0Y2ggYXV0aG9yIGNo YW5naW5nIHRoZSBjb2RlLCB0aGUgbGF0dGVyIGlzIGxpa2VseSB0aGUgZWFzaWVyIGNvdXJzZSBv Zg0KPmFjdGlvbiwgZXNwZWNpYWxseSBpZiB0aGUgYXV0aG9yIGNhbid0IG1ha2UgYW4gYXJndW1l bnQgZm9yIHRoZWlyDQo+cG9zaXRpb24uDQo+VGhhdCBzYWlkLCBpZiBzdWNoIHBhdGNoIGJsb2Nr YWdlIGJlY29tZXMgc28gZWdyZWdpb3VzIHRoYXQgaW5kaXZpZHVhbHMNCj5zdG9wDQo+Y29udHJp YnV0aW5nLCB0aGF0IG5lZWRzIHRvIGJlIGtub3duIGFzIHdlbGwuICBJZiB5b3UgYXMgYSBwYXRj aCBhdXRob3I6DQo+DQo+MSkgSGF2ZSB0cmllZCB0byBzdWJtaXQgcGF0Y2hlcw0KPjIpIEhhZCB0 aGVtIGJsb2NrZWQgZm9yIHdoYXQgeW91IGNvbnNpZGVyIHRyaXZpYWwgcmVhc29ucw0KPjMpIFBs YW4gdG8gbm90IGNvbnRyaWJ1dGUgZnVydGhlciBiZWNhdXNlIG9mIHRoaXMNCj40KSBTdGlsbCBy ZWx5IG9uIHRoZSBEUERLIGZvciB5b3VyIHByb2R1Y3QNCj4NCj5QbGVhc2UsIHNheSBzb21ldGhp bmcuICBQZW9wbGUgaW4gY2hhcmdlIG5lZWQgdG8ga25vdyB3aGVuIHRoZXkncmUgcHVzaGluZw0K PmNvbnRyaWJ1dG9ycyBhd2F5Lg0KPg0KPkZXSVcsIEkndmUgdHJpZWQgdG8gZG8gc29tZSBjb3Jy ZWxhdGlvbiBiZXR3ZWVuIHRoZSBnaXQgaGlzdG9yeSBhbmQgdGhlDQo+bWFpbGluZw0KPmxpc3Qu ICBJIG5lZWQgdG8gZG8gbW9yZSBzZWFyY2hlcywgYnV0IEkgaGF2ZSBhIGZlZWxpbmcgdGhhdCBl YXJseSBvbiwgdGhlDQo+bWFqb3JpdHkgb2YgcGVvcGxlIHdobyBzdG9wcGVkIGNvbnRyaWJ1dGlu ZywgZGlkIHNvIGJlY2F1c2UgdGhlaXIgcGF0Y2hlcw0KPndlcmVuJ3QgZXhwcmVzc2VseSBibG9j a2VkLCBidXQgcmF0aGVyIGJlY2F1c2UgdGhleSB3ZXJlIHNpbXBseSBpZ25vcmVkLg0KPk5vIG9u ZQ0KPndvcmtpbmcgb24gRFBESyBib3RoZXJlZCB0byByZXZpZXcgdGhvc2UgcGF0Y2hlcywgYW5k IHNvIHRoZXkgbmV2ZXIgZ290DQo+bWVyZ2VkLg0KPkhvcGVmdWxseSB0aGF0IHByb2JsZW0gaGFz IGJlZW4gYWRkcmVzc2VkIHNvbWV3aGF0IG5vdy4NCj4NCj4+IEkgd291bGQgbGlrZSB0byBzZWUg c29tZSB0eXBlIG9mIGxheWVyaW5nIHByb2Nlc3MgdG8gYWxsb3cgcGF0Y2hlcyB0byBiZQ0KPj4g YXBwbGllZCBpbiBhIHRpbWVseSBtYW5uZXIgYSBmZXcgd2Vla3Mgbm90IG1vbnRocyBvciBjb21w bGV0ZWx5IGlnbm9yZWQuDQo+PiBNYXliZSBzb21lIHR5cGUgb2Ygdm90aW5nIGlzIHJlYXNvbmFi bGUsIGJ1dCB3ZSBuZWVkIHRvIGRvIHNvbWV0aGluZyB0bw0KPj4gdHVybiBhcm91bmQgdGhlIHBh dGNoZXMgaW4gY2xlYW4gcmVhc29uYWJsZSBtYW5uZXIuDQo+PiANCj4+IFRoaW5rIHdlIG5lZWQg c29tZSB0eXBlIG9mIGdyb3VwIG1lZXRpbmcgZXZlcnkgd2VlayB0byBsb29rIGF0IHRoZQ0KPj5w YXRjaGVzDQo+PiBhbmQgZGV0ZXJtaW5pbmcgd2hpY2ggb25lcyBnZXQgYXBwbGllZCwgdGhpcyBn aXZlcyBxdWljayBmZWVkYmFjayB0byB0aGUNCj4+IHN1Ym1pdHRlciBhcyB0byB0aGUgc3RhdHVz IG9mIHRoZSBwYXRjaC4NCj4+IA0KPkkgdGhpbmsgYSBncm91cCBtZWV0aW5nIGlzIGdvaW5nIHRv IGJlIHdheSB0b28gbXVjaCBvdmVyaGVhZCB0byBtYW5hZ2UNCj5wcm9wZXJseS4NCj5Zb3UnbGwg Z2V0IGRpZmZlcmVudCBwZW9wbGUgZXZlcnkgd2VlayB3aXRoIGFnZW5kYSB0aGF0IG1heSBub3Qg bGluZSB1cA0KPndpdGgNCj5jb2RlIHF1YWxpdHksIHdoaWNoIGlzIHJlYWxseSB3aGF0IHRoZSBy ZXZpZXcgaXMgbWVhbnQgdG8gcHJvdmlkZS4gIEkNCj50aGluaw0KDQpJIHdhcyBvbmx5IHN1Z2dl c3RpbmcgdGhlIG1haW50YWluZXJzIGF0dGVuZCB0aGUgbWVldGluZy4gT2YgY291cnNlIHRoZXkN CmhhdmUgdG8gYXR0ZW5kIG9yIGhhdmUgc29tZW9uZSBhdHRlbmQgZm9yIHRoZW0sIGp1c3QgdG8g Z2V0IHRoZSB2b3RpbmcNCmRvbmUuIElmIHlvdSBkbyBub3QgYXR0ZW5kIHRoZW4geW91IGRvIG5v dCBnZXQgdG8gdm90ZSBvciBzb21ldGhpbmcgbGlrZQ0KdGhhdCBpcyByZWFzb25hYmxlLiBOb3Qg dGhhdCB3ZSBzaG91bGQgdHJ5IGFuZCBkZWZpbmUgdGhlIHByb2Nlc3MgaGVyZS4NCg0KPnBlcmhh cHMgYSBiZXR0ZXIgYXBwcm9hY2ggd291bGQgYmUgdG8gcmVxdWlyZSB0aGF0IHRoYXQgY29kZSBv d25lcnMgZnJvbQ0KPnRoZQ0KPm1haW50YWluZXIgZmlsZSBwcm92aWRlIGFuZCBBQ0svTkFLIG9u IHRoZWlyIHBhdGNoZXMgd2l0aGluIDMtNCBkYXlzLCBhbmQNCj5yZXF1aXJlIGEgY29ycmVzcG9u ZGluZyB0cmVlIG1haW50YWluZXIgdG8gYXBwbHkgdGhlIHBhdGNoIHdpdGhpbiA3IG9yDQo+c28u ICBUaGF0DQo+d291bGQgY2FwIG91ciBwYXRjaCBsYXRlbmN5LiAgTGlrZXdpc2UsIGlmIGEgcGF0 Y2ggc2xpcHMgaW4gY3JlYXRpbmcgYQ0KPnJlZ3Jlc3Npb24sIHRoZSBhdXRob3IgbmVlZHMgdG8g YmUgYWxlcnRlZCBhbmQgZ2l2ZW4gYSB0aW1lIHdpbmRvdyBpbg0KPndoaWNoIHRvDQo+Zml4IHRo ZSBwcm9ibGVtIGJlZm9yZSB0aGUgb2ZmZW5kaW5nIHBhdGNoIGlzIHJldmVydGVkIGR1cmluZyB0 aGUgUUUNCj5jeWNsZS4NCj4NCj4NCj4+ID4NCj4+ID5PbiB0aGUgb3RoZXIgc2lkZSwgc2luY2Ug dXNlciBxdWVzdGlvbnMsIGNvbW11bml0eSBkaXNjdXNzaW9ucyBhbmQNCj4+ID5kZXZlbG9wbWVu dCBoYXBwZW5zIGluIHRoZSBzYW1lIG1haWxpbmcgbGlzdCwgdGhpbmdzIGdldCByZWFsbHkNCj4+ ID5jb21wbGljYXRlZCwgc3BlY2lhbGx5IGZvciB1c2VycyBzZWVraW5nIGZvciBoZWxwLiBFdmVu IHRob3VnaCBJIHRoaW5rDQo+PiA+dGhlIGF2ZXJhZ2Ugc2tpbGxzIG9mIHRoZSB1c2VycyBvZiBE UERLIGlzIGdlbmVyYWxseSBoaWdoZXIgdGhhbiBpbg0KPj4gPm90aGVyIHNvZnR3YXJlIHByb2pl Y3RzLCBpZiBEUERLIHdhbnRzIHRvIGF0dHJhY3QgbW9yZSB1c2VycywgaGF2aW5nIGENCj4+ID5i ZXR0ZXIgdXNlciBzdXBwb3J0IGlzIGtleSwgSU1ITy4NCj4+ID4NCj4+ID5TbyBJIHdvdWxkIHNl ZSB3aXRoIGdvb2QgZXllcyBhIHNlcGFyYXRpb24gYmV0d2VlbiwgYXQgbGVhc3QsIGRwZGstdXNl cg0KPj4gPmFuZCBkcGRrLWRldi4NCj4+IA0KPkkgd291bGRuJ3QgYXJndWUgd2l0aCB0aGlzIHNl cGFyYXRpb24sIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFwcHJvYWNoLg0KPg0KPj4gSSBkbyBu b3QgcmVtZW1iZXIgc2VlaW5nIHRvbyBtYW55IHVzZXJzIG9uIHRoZSBsaXN0IGFuZCBtYWtpbmcg YSBsaXN0DQo+Pmp1c3QNCj4+IGZvciB0aGVuIGlzIE9LIGlmIGV2ZXJ5b25lIGlzIGZpbmUgd2l0 aCBhIGxpc3QgdGhhdCBoYXMgdmVyeSBmZXcgZW1haWxzLg0KPj4gPg0KPj4gPklmIHRoZSBudW1i ZXIgb2YgcGF0Y2hlcyBrZWVwcyBncm93aW5nLCBzcGxpdHRpbmcgdGhlICJkZXYiIG1haWxpbmcN Cj4+ID5saXN0cyBpbnRvIGRpZmZlcmVudCBjYXRlZ29yaWVzIChlYWwgYW5kIGNvbW1vbiwgcG1k cywgaGlnaGVyIGxldmVsDQo+PiA+YWJzdHJhY3Rpb25zLi4uKSBjb3VsZCBiZSBhbiBvcHRpb24u IEhvd2V2ZXIsIHRoaXMgbGFzdCBwb2ludCBvcGVucyBhDQo+PiA+bG90IG9mIHF1ZXN0aW9ucyBv biBob3cgdG8gbWluaW1pemUgaW50ZXJmZXJlbmNlIGJldHdlZW4gdGhlIGRpZmZlcmVudA0KPj4g PnBhcnRzIGFuZCBBUEkvQUJJIGNvbXBhdGliaWxpdHkgZHVyaW5nIHRoZSBkZXZlbG9wbWVudC4N Cj4+IA0KPj4gSSBiZWxpZXZlIGlmIHdlIGp1c3QgbWFrZSBzdXJlIHdlIHVzZSB0YWdzIGluIHRo ZSBzdWJqZWN0IGxpbmUgdGhlbiB3ZQ0KPj5jYW4NCj4+IGhhdmUgb3VyIGVtYWlsIGNsaWVudHMg ZG8gdGhlIHNwbGl0dGluZyBvZiB0aGUgZW1haWxzIGluc3RlYWQgb2YgYWRkaW5nDQo+PiBtb3Jl IGVtYWlscyBsaXN0cy4NCj4+IA0KPkFncmVlZA0KPg0KPj4gPg0KPj4gPj4NCj4+ID4+IFBlcmhh cHMgaXQgbWVhbnMgaGF2aW5nIHNvbWUgUmV2aWV3Qm9hcmQgdHlwZSBvZiB0b29scywgYSBjbG9u ZSBpbg0KPj4gPj5HaXRodWIgb3INCj4+ID4+IEJpdGJ1Y2tldCB3aGVyZSB0aGUgbGVzcyBoYXJk Y29yZSBrZXJuZWwtd29ya2Zsb3cgdHlwZXMgY291bGQgc2VuZA0KPj5iYWNrDQo+PiA+PnRoZWly DQo+PiA+PiBzbWFsbCBidWcgZml4ZXMgYSBiaXQgbW9yZSBlYXNpbHksIHRoaXMga2luZCBvZiBz dHVmZi4gR29vZ2xlIGhhcw0KPj5iZWVuDQo+PiA+PmdldHRpbmcNCj4+ID4+IGdvb2QgdXB0YWtl IHNpbmNlIHRoZXkgbW92ZWQgbW9zdCBvZiB0aGVpciBvcGVuIHNvdXJjZSBhY3Jvc3MgdG8NCj4+ R2l0aHViLA0KPj4gPj4gYmVjYXVzZSB0aGUgY29udHJpYnV0aW9uIHdvcmtmbG93IHdhcyBtb3Jl IGNvbnZlbmllbnQgdGhhbiBHb29nbGUNCj4+Q29kZQ0KPj4gPj53YXMuDQo+PiANCj4+IEkgbGlr ZSBHaXRIdWIgaXQgaXMgYSBtdWNoIGJldHRlciBkZXNpZ25lZCB0b29sIHRoZW4gcGF0Y2h3b3Jr LCBwbHVzIGl0DQo+PiBjb3VsZCBnZXQgbW9yZSBleWVzIGFzIGl0IGlzIHZlcnkgd2VsbCBrbm93 IHRvIHRoZSBkZXZlbG9wZXIgY29tbXVuaXR5DQo+PmluDQo+PiBnZW5lcmFsLiBJIGZlZWwgR2l0 SHViIGhhcyBtYW55IGFkdmFudGFnZXMgb3ZlciB0aGUgY3VycmVudCBzeXN0ZW1zIGluDQo+PiBw bGFjZSBidXQsIGl0IGRvZXMgbm90IHNvbHZlIHRoZSBhbGwgcGF0Y2ggaXNzdWVzLg0KPj4gDQo+ R2l0aHViIGlzIGFjdHVhbGx5IGEgYml0IGlycml0YXRpbmcgZm9yIHRoaXMgc29ydCBvZiB0aGlu ZywgYXMgaXQNCj5wcmVzdW1lcyBhIHdlYg0KPmJhc2VkIGludGVyZmFjZSBmb3IgZGlzY3Vzc2lv bi4gIFRoZXkgaGF2ZSBzb21lIG1vZGljdW0gb2YgZW1haWwNCj5mb3J3YXJkaW5nDQo+ZW5hYmxl ZCwgYnV0IGl0IGhhcyBuZXZlciBxdWl0ZSB3b3JrZWQgcmlnaHQsIG9yIGludGVncmF0ZWQgcHJv cGVybHkuDQoNCkVtYWlsIGZvcndhcmRpbmcgaGFzIHNlZW1lZCB0byB3b3JrIGZvciBtZSBhbmQg aW4gb25lIGNhc2UgaXQgdG9vayBhIGJpdA0KdG8gaGF2ZSBHaXRIdWIgc3RvcCBzZW5kaW5nIG1l IGVtYWlscyBvbiBhIHJlcG8gSSBkaWQgbm90IHdhbnQgYW55bW9yZSA6LSkNCj4NCj4+IFRoZSBv bmx5IHdheSB3ZSBjYW4gZ2V0IHBhdGNoIGlzc3VlcyByZXNvbHZlZCBpcyB0byBwdXQgYSBiaXQg bW9yZQ0KPj5wcm9jZXNzDQo+PiBpbiBwbGFjZS4NCj4+ID4NCj4+ID5BbHRob3VnaCBJIGFncmVl LCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwgb24gaG93IGdpdGh1YiBvciBiaXRidWNrZXQgaXMNCj4+ ID51c2VkLiBIYXZpbmcgaXNzdWVzIG9yIGV2ZW4gKGUuZy4gZ2l0aHViKSBwdWxsIHJlcXVlc3Rz ICppbiBhZGRpdGlvbioNCj4+dG8NCj4+ID50aGUgbm9ybWFsIGNvbnRyaWJ1dGlvbiB3b3JrZmxv dyBjYW4gYmUgYSBuaWdodG1hcmUgdG8gZGVhbCB3aXRoLCBpbg0KPj4gPnRlcm1zIG9mIHN5bmNo cm9uaXphdGlvbiBhbmQgcHJldmVudGluZyBkb3VibGUgd29yay4gU28gSSBndWVzcyBzZXR0aW5n DQo+PiA+dXAgYW4gb2ZmaWNpYWwgZ2l0aHViIG9yIGJpdGJ1Y2tldCBtaXJyb3Igd291bGQgYmUg ZmluZSwgdmlhIHNvbWUNCj4+c2ltcGxlDQo+PiA+Y3JvbmpvYiwgYnV0IEkgZ3Vlc3MgaXQgd291 bGQgZW5kLXVwIG5vdCB1c2luZyBQUnMgb3IgaXNzdWVzIGluIGdpdGh1Yg0KPj4gPmxpa2UgdGhl IExpbnV4IGtlcm5lbCBkb2VzLg0KPj4gDQo+MTAwJSBhZ3JlZSwgd2UgY2FuJ3QgYmUgc3BsaXQg YWJvdXQgdGhpcy4gIEFsbG93aW5nIGNvbnRyaWJ1dGlvbnMgZnJvbSBuDQo+Y2hhbm5lbHMganVz dCBtZWFucyBtb3N0IGRldmVsb3BlcnMgd2lsbCBvbmx5IHNlZS9yZXZpZXdzIDEvbnRoIG9mIHRo ZQ0KPnBhdGNoZXMNCj5vZiBpbnRlcmVzdCB0byB0aGVtLg0KDQpJZiB3ZSBzZXR1cCBhIEdpdEh1 YiBvciBzb21lIG90aGVyIHNpdGUsIHdlIHdvdWxkIG5lZWQgdG8gbWFrZSBHaXRodWIgdGhlDQpw cmltYXJ5IHNpdGUgdG8gcmVtb3ZlIHRoaXMgdHlwZSBvZiBwcm9ibGVtIElNTy4NCj4NCj4+IEZy b20gd2hhdCBJIGNhbiB0ZWxsIEdpdEh1YiBzZWVtcyB0byBiZSBhIGJldHRlciBzb2x1dGlvbiBm b3IgYSBmcmVlDQo+Pm9wZW4NCj4+IGVudmlyb25tZW50LiBCaXRidWNrZXQgSSBoYXZlIG5ldmVy IHVzZWQgYW5kIEdpdEh1YiBzZWVtcyBtb3JlIHBvcHVsYXINCj4+IGZyb20gb25lIGFydGljbGUg SSByZWFkLg0KPj4gDQo+PiANCj4+aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS93ZWJocD9zb3VyY2Vp ZD1jaHJvbWUtaW5zdGFudCZpb249MSZlc3B2PTImaWU9VVRGLQ0KPj44Iw0KPj4gcT1iaXRidWNr ZXQlMjB2cyUyMGdpdGh1Yg0KPj4gDQo+PiANCj4+ID5CdHcsIGlzIHRoaXMgZ2l0aHViIG9yZ2Fu aXphdGlvbiBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgSW50ZWwgb3Igc29tZQ0KPj4gPm90aGVyIGNv bXBhbnkgb2YgdGhlIGNvbW11bml0eT8NCj4+ID4NCj4+ID5odHRwczovL2dpdGh1Yi5jb20vZHBk aw0KPj4gPg0KDQpJIHdhcyBob3Bpbmcgc29tZW9uZSB3b3VsZCBvd24gdXAgdG8gdGhlIEdpdEh1 YiBkcGRrIHNpdGUuDQoNCj4+ID5NYXJjDQo+PiANCj4+IElmIHdlIGNhbiB1c2VkIHRoZSBhYm92 ZSB0aGF0IHdvdWxkIGJlIGdyZWF0LCBidXQgYSBuYW1lIGxpa2UNCj4+IMWSZHBkay1jb21tdW5p dHnCuSBvciBzb21ldGhpbmcgY291bGQgd29yayB0b28uDQo+PiANCj4+IFdlIGNhbiBob3N0IHRo ZSB3ZWIgc2l0ZSBoZXJlIGFuZCBoYXZlIG1hbnkgc3ViLXByb2plY3RzIGxpa2UNCj4+UGt0Z2Vu LURQREsNCj4+IDotKSB1bmRlciB0aGUgc2FtZSBwYWdlLiBOb3QgdG8gc2F5IGFueXRoaW5nIGJh ZCBhYm91dCBvdXIgY3VycmVudCB3ZWINCj4+IHBhZ2VzIGFzIEkgZmluZCBpdCBkaWZmaWN1bHQg dG8gdXNlIHNvbWV0aW1lcyBhbmQgZmluZCB0aGluZ3MgbGlrZQ0KPj4gcGF0Y2h3b3JrIGxpbmsu IE1haW50YWluaW5nIGEgd2ViIHNpdGUgaXMgYSBmdWxsIHRpbWUgam9iIGFuZCBHaXRIdWINCj4+ ZG9lcw0KPj4gbWFpbnRhaW4gdGhlIHNpdGUsIHBsdXMgd2UgY2FuIGNvbGxhYm9yYXRlIG9uIGhv c3Qgd2ViIHBhZ2Ugb24gdGhlDQo+PkdpdEh1Yg0KPj4gc2l0ZSBlYXNpZXIuDQo+PiANCj4+IE1v dmluZyB0byB0aGUgTGludXggRm91bmRhdGlvbiBpcyBhbiBvcHRpb24gYXMgd2VsbCBhcyBpdCBp cyB2ZXJ5IHdlbGwNCj4+IGtub3cgYW5kIGhhcyBzb21lIG5pY2Ugd2F5cyB0byBnZXQgeW91ciBw cm9qZWN0IHByb21vdGVkLiBJdCBkb2VzIGhhdmUgYQ0KPj4gZmV3IGRyYXdiYWNrcyBpbiBwcm9j ZXNzIGhhbmRsaW5nIGFuZCBjb3N0IHRvIHN0YXRlIGEgZmV3LiBUaGUgcHJvY2Vzcw0KPj4gbW9k ZWwgaXMgYWxsIHJlYWR5IGRlZmluZWQsIHdoaWNoIGlzIGdvb2QgYW5kIGJhZCBpdCBqdXN0IGRl cGVuZHMgb24NCj4+eW91cg0KPj4gbmVlZHMgSU1PLg0KPj4gDQo+PiBSZWdhcmRzLA0KPj4gKytL ZWl0aA0KPj4gDQo+PiA+DQo+PiA+Pg0KPj4gPj4gTWF0dGhldy4NCj4+ID4NCj4+IA0KPj4gDQoN Cg==