From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id C41117E18 for ; Wed, 19 Nov 2014 12:41:20 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP; 19 Nov 2014 03:51:36 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.97,862,1389772800"; d="scan'208";a="418617732" Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66]) by FMSMGA003.fm.intel.com with ESMTP; 19 Nov 2014 03:42:13 -0800 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.144]) by IRSMSX152.ger.corp.intel.com ([169.254.6.56]) with mapi id 14.03.0195.001; Wed, 19 Nov 2014 11:50:42 +0000 From: "Ananyev, Konstantin" To: "Richardson, Bruce" , Neil Horman Thread-Topic: [dpdk-dev] [PATCH v4 3/5] hash: add fallback to software CRC32 implementation Thread-Index: AQHQA1fLrS7rq4mgVUGDH8gDetYIBpxmqiWAgAA+kgCAANRLAIAAFcQAgAABNYCAAAJvYA== Date: Wed, 19 Nov 2014 11:50:40 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258213B6C4D@IRSMSX105.ger.corp.intel.com> References: <20141118144138.GB32375@hmsreliant.think-freely.org> <546B607B.9030808@sts.kz> <20141118160005.GC32375@hmsreliant.think-freely.org> <546B7E2D.7050705@sts.kz> <20141118174619.GE32375@hmsreliant.think-freely.org> <20141118175226.GC5840@bricha3-MOBL3> <20141118213624.GF32375@hmsreliant.think-freely.org> <20141119101614.GA6532@bricha3-MOBL3> <20141119113408.GA10004@hmsreliant.think-freely.org> <20141119113827.GB2604@bricha3-MOBL3> In-Reply-To: <20141119113827.GB2604@bricha3-MOBL3> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v4 3/5] hash: add fallback to software CRC32 implementation 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: Wed, 19 Nov 2014 11:41:21 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IFttYWlsdG86ZGV2 LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBCcnVjZSBSaWNoYXJkc29uDQo+IFNlbnQ6 IFdlZG5lc2RheSwgTm92ZW1iZXIgMTksIDIwMTQgMTE6MzggQU0NCj4gVG86IE5laWwgSG9ybWFu DQo+IENjOiBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHY0 IDMvNV0gaGFzaDogYWRkIGZhbGxiYWNrIHRvIHNvZnR3YXJlIENSQzMyIGltcGxlbWVudGF0aW9u DQo+IA0KPiBPbiBXZWQsIE5vdiAxOSwgMjAxNCBhdCAwNjozNDowOEFNIC0wNTAwLCBOZWlsIEhv cm1hbiB3cm90ZToNCj4gPiBPbiBXZWQsIE5vdiAxOSwgMjAxNCBhdCAxMDoxNjoxNEFNICswMDAw LCBCcnVjZSBSaWNoYXJkc29uIHdyb3RlOg0KPiA+ID4gT24gVHVlLCBOb3YgMTgsIDIwMTQgYXQg MDQ6MzY6MjRQTSAtMDUwMCwgTmVpbCBIb3JtYW4gd3JvdGU6DQo+ID4gPiA+IE9uIFR1ZSwgTm92 IDE4LCAyMDE0IGF0IDA1OjUyOjI3UE0gKzAwMDAsIEJydWNlIFJpY2hhcmRzb24gd3JvdGU6DQo+ ID4gPiA+ID4gT24gVHVlLCBOb3YgMTgsIDIwMTQgYXQgMTI6NDY6MTlQTSAtMDUwMCwgTmVpbCBI b3JtYW4gd3JvdGU6DQo+ID4gPiA+ID4gPiBPbiBUdWUsIE5vdiAxOCwgMjAxNCBhdCAxMToxMzox N1BNICswNjAwLCBZZXJkZW4gWmh1bWFiZWtvdiB3cm90ZToNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gMTguMTEuMjAxNCAyMjowMCwgTmVpbCBIb3JtYW4g0L/QuNGI0LXRgjoNCj4gPiA+ ID4gPiA+ID4gPiBPbiBUdWUsIE5vdiAxOCwgMjAxNCBhdCAwOTowNjozNVBNICswNjAwLCBZZXJk ZW4gWmh1bWFiZWtvdiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPj4gMTguMTEuMjAxNCAyMDo0MSwg TmVpbCBIb3JtYW4g0L/QuNGI0LXRgjoNCj4gPiA+ID4gPiA+ID4gPj4+IE9uIFR1ZSwgTm92IDE4 LCAyMDE0IGF0IDA4OjAzOjQwUE0gKzA2MDAsIFllcmRlbiBaaHVtYWJla292IHdyb3RlOg0KPiA+ ID4gPiA+ID4gPiA+Pj4+ICAvKioNCj4gPiA+ID4gPiA+ID4gPj4+PiAgICogVXNlIHNpbmdsZSBj cmMzMiBpbnN0cnVjdGlvbiB0byBwZXJmb3JtIGEgaGFzaCBvbiBhIDQgYnl0ZSB2YWx1ZS4NCj4g PiA+ID4gPiA+ID4gPj4+PiArICogRmFsbCBiYWNrIHRvIHNvZnR3YXJlIGNyYzMyIGltcGxlbWVu dGF0aW9uIGluIGNhc2UgU1NFNC4yIGlzDQo+ID4gPiA+ID4gPiA+ID4+Pj4gKyAqIG5vdCBzdXBw b3J0ZWQNCj4gPiA+ID4gPiA+ID4gPj4+PiAgICoNCj4gPiA+ID4gPiA+ID4gPj4+PiAgICogQHBh cmFtIGRhdGENCj4gPiA+ID4gPiA+ID4gPj4+PiAgICogICBEYXRhIHRvIHBlcmZvcm0gaGFzaCBv bi4NCj4gPiA+ID4gPiA+ID4gPj4+PiBAQCAtMzc2LDExICs0MTMsMTggQEAgY3JjMzJjXzJ3b3Jk cyh1aW50NjRfdCBkYXRhLCB1aW50MzJfdCBpbml0X3ZhbCkNCj4gPiA+ID4gPiA+ID4gPj4+PiAg c3RhdGljIGlubGluZSB1aW50MzJfdA0KPiA+ID4gPiA+ID4gPiA+Pj4+ICBydGVfaGFzaF9jcmNf NGJ5dGUodWludDMyX3QgZGF0YSwgdWludDMyX3QgaW5pdF92YWwpDQo+ID4gPiA+ID4gPiA+ID4+ Pj4gIHsNCj4gPiA+ID4gPiA+ID4gPj4+PiAtCXJldHVybiBfbW1fY3JjMzJfdTMyKGluaXRfdmFs LCBkYXRhKTsNCj4gPiA+ID4gPiA+ID4gPj4+PiArI2lmZGVmIFJURV9NQUNISU5FX0NQVUZMQUdf U1NFNF8yDQo+ID4gPiA+ID4gPiA+ID4+Pj4gKwlpZiAobGlrZWx5KGNyYzMyX2FsZyA9PSBDUkMz Ml9TU0U0MikpDQo+ID4gPiA+ID4gPiA+ID4+Pj4gKwkJcmV0dXJuIF9tbV9jcmMzMl91MzIoaW5p dF92YWwsIGRhdGEpOw0KPiA+ID4gPiA+ID4gPiA+Pj4+ICsjZW5kaWYNCj4gPiA+ID4gPiA+ID4g Pj4+IHlvdSBkb24ndCByZWFsbHkgbmVlZCB0aGVzZSBpZmRlZnMgaGVyZSBhbnltb3JlIGdpdmVu IHRoYXQgeW91IGhhdmUgYQ0KPiA+ID4gPiA+ID4gPiA+Pj4gY29uc3RydWN0b3IgdG8gZG8gdGhl IGFsZ29yaXRobSBzZWxlY3Rpb24uICBJbiBmYWN0IHlvdSBuZWVkIHRvIHJlbW92ZSB0aGVtLCBp bg0KPiA+ID4gPiA+ID4gPiA+Pj4gdGhlIGV2ZW50IHlvdSBidWlsZCBvbiBhIHN5c3RlbSB0aGF0 IGRvZXNuJ3Qgc3VwcG9ydCBTU0U0MiwgYnV0IHJ1biBvbiBhIHN5c3RlbQ0KPiA+ID4gPiA+ID4g PiA+Pj4gdGhhdCBkb2VzLg0KPiA+ID4gPiA+ID4gPiA+PiBPcmlnaW5hbGx5LCBJIHRob3VnaHQg c28gYXMgd2VsbC4gSSB3cm90ZSB0aGUgY29kZSB3aXRob3V0IHRoZXNlIGlmZGVmcywNCj4gPiA+ ID4gPiA+ID4gPj4gYnV0IGl0IGRpZG4ndCBjb21waWxlIG9uIG15IG1hY2hpbmUgd2hpY2ggZG9l c24ndCBzdXBwb3J0IFNTRTQuMi4gRXJyb3INCj4gPiA+ID4gPiA+ID4gPj4gd2FzIHRyaWdnZXJl ZCBieSBubW1pbnRyaW4uaCB3aGljaCBoYXMgYSBjaGVjayBmb3IgcmVzcGVjdGl2ZSBHQ0MNCj4g PiA+ID4gPiA+ID4gPj4gZXh0ZW5zaW9uLiBTbyBJIHRoaW5rIHRoZXNlIGlmZGVmcyBhcmUgaW5k ZWVkIHJlcXVpcmVkLg0KPiA+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPiA+IFlvdSBuZWVk IHRvIGVkaXQgdGhlIG1ha2VmaWxlIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGdldHMgcGFzc2VkIHRo ZSBvcHRpb24NCj4gPiA+ID4gPiA+ID4gPiAtbXNzZTQyLiAgVGhhdCB3YXkgaXQgd2lsbCBrbm93 IHRvIGVtaXQgc3NlNDIgaW5zdHJ1Y3Rpb25zLiBJdCB3aWxsIGFsc28gYWxsb3cNCj4gPiA+ID4g PiA+ID4gPiB5b3UgdG8gcmVtb3ZlIHRoZSBpZmRlZiBmcm9tIHRoZSBpbmNsdWRlIGZpbGUNCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSW4gdGhpcyBjYXNlLCBJIGd1ZXNzIHRoZXJlIGFy ZSB0d28gb3B0aW9uczoNCj4gPiA+ID4gPiA+ID4gMSkgbW9kaWZ5IGFsbCBtYWtlZmlsZXMgd2hp Y2ggdXNlIGxpYnJ0ZV9oYXNoDQo+ID4gPiA+ID4gPiA+IDIpIG1vdmUgYWxsIGZ1bmN0aW9uIGJv ZGllcyBmcm9tIHJ0ZV9oYXNoX2NyYy5oIHRvIHNlcGFyYXRlIG1vZHVsZSwNCj4gPiA+ID4gPiA+ ID4gbGVhdmluZyBwcm90b3R5cGUgZGVmaW5pdGlvbnMgdGhlcmUgb25seS4NCj4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gRXZlcnlib2R5J3MgdXAgZm9yIHRoZSBzZWNvbmQgb3B0aW9uPyA6 KQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQ3J1ZCwgeW91J3JlIHJpZ2h0LCBJIGRpZG4n dCB0aGluayBhYm91dCB0aGUgaGVhZGVyIGluY2x1c2lvbiBpc3N1ZS4gIElzIGl0DQo+ID4gPiA+ ID4gPiB3b3J0aCBhZGRpbmcgdGhlIGp1bXAgdG8gZW5hYmxlIHRoZSBkeW5hbWljIGhhc2ggc2Vs ZWN0aW9uPw0KPiA+ID4gPiA+ID4gTmVpbA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gTWF5YmUgZm9y IGNhc2VzIHdoZXJlIFNTRTQuMiBpcyBub3QgY3VycmVudGx5IGF2YWlsYWJsZSwgaS5lLiBmb3Ig Z2VuZXJpYyBidWlsZHMuDQo+ID4gPiA+ID4gRm9yIGJ1aWxkcyB3aGVyZSB3ZSBoYXZlIGhhcmR3 YXJlIHN1cHBvcnQgY29uZmlybWVkIGF0IGNvbXBpbGUgdGltZSwganVzdCB1c2UNCj4gPiA+ID4g PiB0aGUgZnVuY3Rpb24gZnJvbSB0aGUgaGVhZGVyIGZpbGUuDQo+ID4gPiA+ID4gRG9lcyB0aGF0 IG1ha2Ugc2Vuc2U/DQo+ID4gPiA+ID4NCj4gPiA+ID4gSSdtIG5vdCBjZXJ0YWluIG9mIHRoYXQs IGFzIEkgZG9uJ3QgdGhpbmsgYW55dGhpbmcgY2FuIGJlICdjb25maXJtZWQnIGF0IGNvbXBpbGUN Cj4gPiA+ID4gdGltZS4gIEkuZS4ganVzdCBiZWNhdXNlIHlvdSBoYXZlIHNzZTQyIGF0IGNvbXBp bGUgdGltZSBkb2Vzbid0IGd1YXJhbnRlZSB5b3UNCj4gPiA+ID4gaGF2ZSBpdCBhdCBydW4gdGlt ZSB3aXRoIGEgRFNPLiAgSWYgeW91IGhhdmUgdGhlc2UgYXMgbWFjcm9zLCB5b3UgbmVlZCB0byBl bmFibGUNCj4gPiA+ID4gc3NlNDIgd2hlcmVldmVyIHlvdSBpbmNsdWRlIHRoZSBmaWxlIHNvIHRo YXQgdGhlIGludHJpbnNpYyB3b3JrcyBwcm9wZXJseS4NCj4gPiA+DQo+ID4gPiBXZWxsLCBpZiB5 b3UgY29tcGlsZSB3aXRoIHNzZTQyIGF0IGNvbXBpbGUgdGltZSwgdGhlIGNvbXBpbGVyIGlzIGZy ZWUgdG8gaW5zZXJ0DQo+ID4gPiBzc2U0IGluc3RydWN0aW9ucyBhdCBhbnkgcGxhY2UgaXQgZmVl bHMgbGlrZSwgaXJyZXNwZWN0aXZlIG9mIHdoZXRoZXIgb3Igbm90IHlvdQ0KPiA+ID4gdXNlIFNT RTQgaW50cmluc2ljcywgc28gSSB3b3VsZCBuZXZlciBleHBlY3Qgc3VjaCBhIERTTyB0byB3b3Jr IG9uIGEgc3lzdGVtDQo+ID4gPiB3aXRob3V0IFNTRTQyIHN1cHBvcnQuDQo+ID4gPg0KPiA+ID4g Pg0KPiA+ID4gPiBhbiBhbHRlcm5hdGUgb3B0aW9uIHdvdWxkIGJlIHRvIG5vdCB1c2UgdGhlIGlu dHJpbnNpYywgYW5kIGNyYWZ0IHNvbWUgZXhwbGljaXQNCj4gPiA+ID4gX19hc21fXyBzdGF0ZW1l bnQgdGhhdCBleGVjdXRlcyB0aGUgcmlnaHQgc3NlNDIgaW5zdHJ1Y3Rpb25zLiAgVGhhdCB3YXkg dGhlIGFzbQ0KPiA+ID4gPiBpcyBkaXJlY3RseSBlbWl0dGVkLCB3aXRob3V0IHJlcXVpcmluZyB0 aGUgLW1zc2U0MiBmbGFnIGF0IGFsbCwgYW5kIGl0IHdpbGwganVzdA0KPiA+ID4gPiB3b3JrIGlu IGFsbCB0aGUgZmlsZXMgdGhhdCBjYWxsIGl0Lg0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+IEkgcmVh bGx5IGRvbid0IGxpa2UgdGhhdCBhcHByb2FjaC4gSSB0aGluayB1c2luZyBpbnRyaW5zaWNzIGlz IG11Y2ggbW9yZQ0KPiA+ID4gbWFpbnRhaW5hYmxlLg0KPiA+ID4NCj4gPiBJIGdyYW50IHlvdSB0 aGF0IHVzaW5nIGFuIGludHJpbnNpYyBpcyBlYXNpZXIgdG8gcmVhZCwgYnV0IGlmIHRoZSBjb2Rl IGRvZXNuJ3QNCj4gPiBjb21waWxlIHdoZW4gdXNpbmcgdGhlIGludHJpbnNpYyB1bmxlc3MgeW91 IGhhdmUgc3NlNDIgdHVybmVkIG9uLCBJJ20gbm90IHN1cmUNCj4gPiB3aGF0IGNob2ljZSB3ZSBo YXZlLiAgYW5kIGlubGluZSBhc20gaXNuJ3QgdGhhdCBoYXJkIHRvIG1haW50YWluLiAgV2UncmUg dGFsa2luZw0KPiA+IGFib3V0IHRocmVlIGxpbmVzIG9mIGNvZGU6DQo+ID4gYXNtKA0KPiA+ICAi bW92ICAgICVbMV0sJWVheA0KPiA+ICBtb3YgICAgJVsyXSwlZWR4DQo+ID4gIGNyYzMybCAlZWR4 LCVlYXgiOg0KPiA+ICBbZWR4XSAiciIgKGNyYykgLypvdXRwdXQqLw0KPiA+ICA6DQo+ID4gIFsx XSAiciIgKGNyYyksIC8qIGlucHV0ICovDQo+ID4gIFsyXSAiciIgKHZhbCkNCj4gPiAgOg0KPiA+ ICBbZWF4XSAiciIgLyogY2xvYmJlciAqLw0KPiA+ICkNCj4gPg0KPiA+IEkgZG9uJ3QgaGF2ZSB0 aGUgc3ludGF4IHF1aXRlIHJpZ2h0LCBidXQgaXRzIHByZXR0eSBlYXN5IHRvIHJlYWQgdGhlIGlu dGVudC4NCj4gPiBJdHMgbm90IGxpa2Ugd2UgZG9udCBoYXZlIHByZWNpZGVuY2UgZm9yIHRoaXMs IHRoZSBhdG9taWMgaW50ZXJmYWNlIGFuZCBzZXZlcmFsDQo+ID4gcG1kcyBkbyB0aGlzIGZyZXF1 ZW50bHkuDQo+ID4NCj4gPiBOZWlsDQo+IA0KPiBGYWlyIHBvaW50LiBJZiBldmVyeW9uZSBlbHNl IGlzIGhhcHB5IGVub3VnaCB3aXRoIGl0LCBJJ20gb2sgdG9vLg0KDQpBcyBJIHJlbWVtYmVyIHdp dGggZ2NjICYgaWNjIGl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdGh0IHlvdSdkIGxpa2UgdG8g Y29tcGlsZSB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24NCmZvciBkaWZmZXJlbnQgdGFyZ2V0Lg0K RnJvbSBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL0Z1bmN0aW9uLUF0dHJpYnV0 ZXMuaHRtbDoNCiJ0YXJnZXQNClRoZSB0YXJnZXQgYXR0cmlidXRlIGlzIHVzZWQgdG8gc3BlY2lm eSB0aGF0IGEgZnVuY3Rpb24gaXMgdG8gYmUgY29tcGlsZWQgd2l0aCBkaWZmZXJlbnQgdGFyZ2V0 IG9wdGlvbnMgdGhhbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gVGhpcyBjYW4gYmUg dXNlZCBmb3IgaW5zdGFuY2UgdG8gaGF2ZSBmdW5jdGlvbnMgY29tcGlsZWQgd2l0aCBhIGRpZmZl cmVudCBJU0EgKGluc3RydWN0aW9uIHNldCBhcmNoaXRlY3R1cmUpIHRoYW4gdGhlIGRlZmF1bHQu IFlvdSBjYW4gYWxzbyB1c2UgdGhlIOKAmCNwcmFnbWEgR0NDIHRhcmdldOKAmSBwcmFnbWEgdG8g c2V0IG1vcmUgdGhhbiBvbmUgZnVuY3Rpb24gdG8gYmUgY29tcGlsZWQgd2l0aCBzcGVjaWZpYyB0 YXJnZXQgb3B0aW9ucy4gU2VlIEZ1bmN0aW9uIFNwZWNpZmljIE9wdGlvbiBQcmFnbWFzLCBmb3Ig ZGV0YWlscyBhYm91dCB0aGUg4oCYI3ByYWdtYSBHQ0MgdGFyZ2V04oCZIHByYWdtYS4NCkZvciBp bnN0YW5jZSBvbiBhIDM4NiwgeW91IGNvdWxkIGNvbXBpbGUgb25lIGZ1bmN0aW9uIHdpdGggdGFy Z2V0KCJzc2U0LjEsYXJjaD1jb3JlMiIpIGFuZCBhbm90aGVyIHdpdGggdGFyZ2V0KCJzc2U0YSxh cmNoPWFtZGZhbTEwIikuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjb21waWxpbmcgdGhlIGZpcnN0 IGZ1bmN0aW9uIHdpdGggLW1zc2U0LjEgYW5kIC1tYXJjaD1jb3JlMiBvcHRpb25zLCBhbmQgdGhl IHNlY29uZCBmdW5jdGlvbiB3aXRoIC1tc3NlNGEgYW5kIC1tYXJjaD1hbWRmYW0xMCBvcHRpb25z LiBJdCBpcyB1cCB0byB0aGUgdXNlciB0byBtYWtlIHN1cmUgdGhhdCBhIGZ1bmN0aW9uIGlzIG9u bHkgaW52b2tlZCBvbiBhIG1hY2hpbmUgdGhhdCBzdXBwb3J0cyB0aGUgcGFydGljdWxhciBJU0Eg aXQgaXMgY29tcGlsZWQgZm9yIChmb3IgZXhhbXBsZSBieSB1c2luZyBjcHVpZCBvbiAzODYgdG8g ZGV0ZXJtaW5lIHdoYXQgZmVhdHVyZSBiaXRzIGFuZCBhcmNoaXRlY3R1cmUgZmFtaWx5IGFyZSB1 c2VkKS4NCg0KICAgICAgICAgIGludCBjb3JlMl9mdW5jICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgo X190YXJnZXRfXyAoImFyY2g9Y29yZTIiKSkpOw0KICAgICAgICAgIGludCBzc2UzX2Z1bmMgKHZv aWQpIF9fYXR0cmlidXRlX18gKChfX3RhcmdldF9fICgic3NlMyIpKSk7DQpZb3UgY2FuIGVpdGhl ciB1c2UgbXVsdGlwbGUgc3RyaW5ncyB0byBzcGVjaWZ5IG11bHRpcGxlIG9wdGlvbnMsIG9yIHNl cGFyYXRlIHRoZSBvcHRpb25zIHdpdGggYSBjb21tYSAo4oCYLOKAmSkuDQoNClRoZSB0YXJnZXQg YXR0cmlidXRlIGlzIHByZXNlbnRseSBpbXBsZW1lbnRlZCBmb3IgaTM4Ni94ODZfNjQsIFBvd2Vy UEMsIGFuZCBOaW9zIElJIHRhcmdldHMgb25seS4gVGhlIG9wdGlvbnMgc3VwcG9ydGVkIGFyZSBz cGVjaWZpYyB0byBlYWNoIHRhcmdldC4NCg0KT24gdGhlIDM4NiwgdGhlIGZvbGxvd2luZyBvcHRp b25zIGFyZSBhbGxvd2VkOg0KLi4uDQog4oCYc3NlNC4y4oCZDQrigJhuby1zc2U0LjLigJkiDQoN CldvdWxkbid0IHRoYXQgc3VpdCB5b3VyIHB1cnBvc2VzPw0KUHJvYmFibHkgeW91IGNhbiBldmVu IGtlZXAgeW91ciBmdW5jdGlvbiBpbmxpbmUgd2l0aCB0aGF0IGFwcHJvYWNoLg0KDQpLb25zdGFu dGluDQoNCg0KPiANCj4gL0JydWNlDQo=