From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Verma, Shally" Subject: Re: [RFC v1] doc compression API for DPDK Date: Wed, 20 Dec 2017 07:15:00 +0000 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "Athreya, Narayana Prasad" , "Gupta, Ashish" , "Sahu, Sunila" , "pablo.de.lara.guarch@intel.com" , "Challa, Mahipal" , "Jain, Deepak K" , Hemant Agrawal , Roy Pledge , Youri Querry , Ahmed Mansour To: "fiona.trahe@intel.com" , "dev@dpdk.org" Return-path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0042.outbound.protection.outlook.com [104.47.41.42]) by dpdk.org (Postfix) with ESMTP id 9EF8929AC for ; Wed, 20 Dec 2017 08:15:05 +0100 (CET) Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgRmlvbmENCg0KUGxlYXNlIHJlZmVyIHRvIG15IGNvbW1lbnRzIGJlbG93IHdpdGggbXkgdW5k ZXJzdGFuZGluZyBvbiB0d28gbWFqb3IgcG9pbnRzIE9VVF9PRl9TUEFDRSBhbmQgU3RhdGVmdWwg RGVzaWduLg0KSWYgeW91IGJlbGlldmUgd2Ugc3RpbGwgbmVlZCBhIG1lZXRpbmcgdG8gY29udmVy Z2Ugb24gc2FtZSBwbGVhc2Ugc2hhcmUgbWVldGluZyBkZXRhaWxzIHRvIG1lLg0KDQoNCj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVHJhaGUsIEZpb25hIFttYWlsdG86Zmlv bmEudHJhaGVAaW50ZWwuY29tXQ0KPiBTZW50OiAxNSBEZWNlbWJlciAyMDE3IDIzOjExDQo+IFRv OiBWZXJtYSwgU2hhbGx5IDxTaGFsbHkuVmVybWFAY2F2aXVtLmNvbT47IGRldkBkcGRrLm9yZw0K PiBDYzogQXRocmV5YSwgTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNh dml1bS5jb20+Ow0KPiBDaGFsbGEsIE1haGlwYWwgPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+ OyBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNv bT47IEd1cHRhLCBBc2hpc2gNCj4gPEFzaGlzaC5HdXB0YUBjYXZpdW0uY29tPjsgU2FodSwgU3Vu aWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsNCj4gVHJhaGUsIEZpb25hIDxmaW9uYS50cmFo ZUBpbnRlbC5jb20+OyBKYWluLCBEZWVwYWsgSw0KPiA8ZGVlcGFrLmsuamFpbkBpbnRlbC5jb20+ DQo+IFN1YmplY3Q6IFJFOiBbUkZDIHYxXSBkb2MgY29tcHJlc3Npb24gQVBJIGZvciBEUERLDQo+ IA0KPiBIaSBTaGFsbHksDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+IEZyb206IFZlcm1hLCBTaGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0N Cj4gPiBTZW50OiBUaHVyc2RheSwgRGVjZW1iZXIgNywgMjAxNyA1OjQzIEFNDQo+ID4gVG86IFRy YWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4gQ2M6 IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0u Y29tPjsNCj4gQ2hhbGxhLCBNYWhpcGFsDQo+ID4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+ OyBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNv bT47IEd1cHRhLCBBc2hpc2gNCj4gPiA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBTYWh1LCBT dW5pbGEgPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtSRkMgdjFd IGRvYyBjb21wcmVzc2lvbiBBUEkgZm9yIERQREsNCj4gDQo+IC8vc25pcC4uLi4NCj4gDQo+ID4g PiA+ID4gPiBQbGVhc2Ugbm90ZSBhbnkgdGltZSBvdXRwdXQgYnVmZmVyIHJhbiBvdXQgb2Ygc3Bh Y2UgZHVyaW5nIHdyaXRlDQo+IHRoZW4NCj4gPiA+ID4gPiBvcGVyYXRpb24gd2lsbCB0dXJuIOKA nFN0YXRlZnVs4oCdLsKgIFNlZQ0KPiA+ID4gPiA+ID4gbW9yZSBvbiBTdGF0ZWZ1bCB1bmRlciBy ZXNwZWN0aXZlIHNlY3Rpb24uDQo+ID4gPiA+ID4gW0Zpb25hXSBMZXQncyBjb21lIGJhY2sgdG8g dGhpcyBsYXRlci4gQW4gYWx0ZXJuYXRpdmUgaXMgdGhhdA0KPiA+ID4gT1VUX09GX1NQQUNFIGlz DQo+ID4gPiA+ID4gcmV0dXJuZWQgYW5kIHRoZSAgYXBwbGljYXRpb24NCj4gPiA+ID4gPiBtdXN0 IHRyZWF0IGFzIGEgZmFpbCBhbmQgcmVzdWJtaXQgdGhlIG9wZXJhdGlvbiB3aXRoIGEgbGFyZ2Vy DQo+IGRlc3RpbmF0aW9uDQo+ID4gPiA+ID4gYnVmZmVyLg0KPiA+ID4gPg0KPiA+ID4gPiBbU2hh bGx5XSBUaGVuIEkgcHJvcG9zZSB0byBhZGQgYSBmZWF0dXJlIGZsYWcNCj4gPiA+ICJGRl9TVVBQ T1JUX09VVF9PRl9TUEFDRSIgcGVyIHhmb3JtIHR5cGUgZm9yIGZsZXhpYmxlDQo+ID4gPiA+IFBN RCBkZXNpZ24uDQo+ID4gPiA+IEFzIHRoZXJlJ3JlIGRldmljZXMgd2hpY2ggdHJlYXQgaXQgYXMg ZXJyb3Igb24gY29tcHJlc3Npb24gYnV0IG5vdCBvbg0KPiA+ID4gZGVjb21wcmVzc2lvbi4NCj4g PiA+ID4gSWYgaXQgaXMgbm90IHN1cHBvcnRlZCwgdGhlbiBpdCBzaG91bGQgYmUgdHJlYXRlZCBh cyBmYWlsdXJlIGNvbmRpdGlvbiBhbmQNCj4gYXBwDQo+ID4gPiBjYW4gcmVzdWJtaXQgb3BlcmF0 aW9uLg0KPiA+ID4gPiBpZiBzdXBwb3J0ZWQsIGJlaGF2aW91ciAqVG8tYmUtRGVmaW5lZCogdW5k ZXIgc3RhdGVmdWwuDQo+ID4gPiBbRmlvbmFdIENhbiB5b3UgZXhwbGFpbiAndHVybiBzdGF0ZWZ1 bCcgc29tZSBtb3JlPw0KPiA+ID4gSWYgY29tcHJlc3NvciBydW5zIG91dCBvZiBzcGFjZSBkdXJp bmcgc3RhdGVsZXNzIG9wZXJhdGlvbiwgZWl0aGVyIGNvbXANCj4gb3INCj4gPiA+IGRlY29tcCwg YW5kIHR1cm5zIHN0YXRlZnVsLCBob3cgd291bGQgdGhlIGFwcCBrbm93PyBBbmQgd2hhdCB3b3Vs ZA0KPiBiZSBpbg0KPiA+ID4gc3RhdHVzLCBjb25zdW1lZCBhbmQgcHJvZHVjZWQ/DQo+ID4gPiBD b3VsZCBpdCByZXR1cm4gT1VUX09GX1NQQUNFLCBhbmQgaWYgYm90aCBjb25zdW1lZCBhbmQgcHJv ZHVjZWQgPT0gMA0KPiA+DQo+ID4gW1NoYWxseV0gSWYgY29uc3VtZWQgPSBwcm9kdWNlZCA9PSAw LCB0aGVuIGl0J3Mgbm90IE9VVF9PRl9TUEFDRQ0KPiBjb25kaXRpb24uDQo+ID4NCj4gPiA+IHRo ZW4gdGhlIHdob2xlIG9wIG11c3QgYmUgcmVzdWJtaXR0ZWQgd2l0aCBhIGJpZ2dlciBvdXRwdXQg YnVmZmVyLiBCdXQNCj4gaWYNCj4gPiA+IGNvbnN1bWVkIGFuZCBwcm9kdWNlZCA+IDAgdGhlbiBh cHAgY291bGQgdGFrZSB0aGUgb3V0cHV0IGFuZCBzdWJtaXQNCj4gbmV4dA0KPiA+ID4gb3ANCj4g PiA+IGNvbnRpbnVpbmcgZnJvbSBjb25zdW1lZCsxLg0KPiA+ID4NCj4gPg0KPiA+IFtTaGFsbHld IGNvbnN1bWVkIGFuZCBwcm9kdWNlZCB3aWxsICphbHdheXMqIGJlID4gMCBpbiBjYXNlIG9mDQo+ IE9VVF9PRl9TUEFDRS4NCj4gPiBPVVRfT0ZfU1BBQ0UgbWVhbnMgb3V0cHV0IGJ1ZmZlciBleGhh dXN0ZWQgd2hpbGUgd3JpdGluZyBkYXRhIGludG8gaXQNCj4gYW5kIFBNRCBtYXkgaGF2ZSBtb3Jl IHRvDQo+ID4gd3JpdGUgdG8gaXQuIFNvIGluIHN1Y2ggY2FzZSwgUE1EIHNob3VsZCBzZXQNCj4g PiBQcm9kdWNlZCA9IGNvbXBsZXRlIGxlbmd0aCBvZiBvdXRwdXQgYnVmZmVyDQo+ID4gU3RhdHVz ID0gT1VUX09GX1NQQUNFDQo+ID4gY29uc3VtZSwgZm9sbG93aW5nIHBvc3NpYmlsaXRpZXMgaGVy ZToNCj4gPiAxLiBjb25zdW1lZCA9IGNvbXBsZXRlIGxlbmd0aCBvZiBzcmMgbWJ1ZiBtZWFucyBQ TUQgaGFzIHJlYWQgZnVsbCBpbnB1dCwNCj4gT1INCj4gPiAyLiBjb25zdW1lZCA9IHBhcnRpYWwg bGVuZ3RoIG9mIHNyYyBtYnVmIG1lYW5zIFBNRCBoYXMgcmVhZCBwYXJ0aWFsIGlucHV0DQo+ID4N Cj4gPiBPbiBzZWVpbmcgdGhpcyBzdGF0dXMsIGFwcCBzaG91bGQgY29uc3VtZSBvdXRwdXQgYW5k IHJlLWVucXVldWUgc2FtZQ0KPiBvcCB3aXRoIGVtcHR5IG91dHB1dCBidWZmZXIgYW5kDQo+ID4g c3JjID0gY29uc3VtZWQrMS4NCj4gW0Zpb25hXSBBcyB0aGlzIHdhcyBhIHN0YXRlbGVzcyBvcCwg dGhlIFBNRCBjYW5ub3QgYmUgZXhwZWN0ZWQgdG8gaGF2ZQ0KPiBzdG9yZWQgdGhlIGhpc3Rvcnkg YW5kIHN0YXRlIGFuZCBzbw0KPiBjYW5ub3QgYmUgZXhwZWN0ZWQgdG8gY29udGludWUgZnJvbSBj b25zdW1lZCsxLiBUaGlzIHdvdWxkIGJlIHN0YXRlZnVsDQo+IGJlaGF2aW91ci4NCg0KW1NoYWxs eV0gRXhhY3RseS4NCg0KPiBCdXQgaXQgc2VlbXMgeW91IGFyZSBzYXlpbmcgdGhhdCBldmVuIG9u IGluIHRoaXMgc3RhdGVsZXNzIGNhc2UgeW91J2QgbGlrZSB0aGUNCj4gUE1EcyB3aG8gY2FuIHN0 b3JlIHN0YXRlDQo+IHRvIGhhdmUgdGhlIG9wdGlvbiBvZiBjb252ZXJ0aW5nIHRvIHN0YXRlZnVs LiBTbw0KPiBhIFBNRCB3aGljaCBjYW4gc3VwcG9ydCB0aGlzIGNvdWxkIHJldHVybiBPVVRfT0Zf U1BBQ0Ugd2l0aA0KPiBwcm9kdWNlZC9jb25zdW1lZCBhcyB5b3UgZGVzY3JpYmUgYWJvdmUuDQo+ IGEgUE1EIHdoaWNoIGNhbid0IHN1cHBvcnQgaXQgc2hvdWxkIHJldHVybiBhbiBlcnJvci4NCj4g VGhlIGFwcGwgY2FuIGNvbnRpbnVlIG9uIGZyb20gY29uc3VtZWQrMSBpbiB0aGUgZm9ybWVyIGNh c2UgYW5kIHJlc3VibWl0DQo+IHRoZSBmdWxsIHJlcXVlc3QNCj4gd2l0aCBhIGJpZ2dlciBidWZm ZXIgaW4gdGhlIGxhdHRlciBjYXNlLg0KPiBJcyB0aGlzIHRoZSBiZWhhdmlvdXIgeW91J3JlIGxv b2tpbmcgZm9yPw0KPiBJZiBzbyB0aGUgZXJyb3IgY291bGQgYmUgc29tZXRoaW5nIGxpa2UgTkVF RF9CSUdHRVJfRFNUX0JVRj8NCj4gSG93ZXZlciwgd291bGRuJ3QgT1VUX09GX1NQQUNFIHdpdGgg cHJvZHVjZWQ9Y29uc3VtZWQ9MCBjb252ZXkgdGhlDQo+IHNhbWUgaW5mb3JtYXRpb24gb24gdGhl IEFQST8NCj4gSXQgbWF5IGNvcnJlc3BvbmQgdG8gYW4gZXJyb3Igb24gdGhlIHVuZGVybHlpbmcg UE1ELCBidXQgd291bGQgaXQgYmUgc2ltcGxlcg0KPiBvbiB0aGUgY29tcHJlc3NkZXYgQVBJDQo+ IA0KPiANCj4gPiBQbGVhc2Ugbm90ZSBhcyBwZXIgY3VycmVudCBwcm9wb3NhbCwgYXBwIHNob3Vs ZCBjYWxsDQo+IHJ0ZV9jb21wZGV2X2VucXVldWVfc3RyZWFtKCkgdmVyc2lvbiBvZiBBUEkgaWYg aXQNCj4gPiBkb2Vzbid0IGtub3cgb3V0cHV0IHNpemUgYmVmb3JlaGFuZC4NCj4gW0Zpb25hXSBU cnVlLiBCdXQgYWJvdmUgaXMgb25seSB0cnlpbmcgdG8gZGVzY3JpYmUgYmVoYXZpb3VyIGluIHRo ZSBzdGF0ZWxlc3MNCj4gZXJyb3IgY2FzZS4NCg0KW1NoYWxseV0gT2suIE5vdyBJIGdvdCBwb2lu dCBvZiBjb25mdXNpb24gd2l0aCB0ZXJtICd0dXJucyBzdGF0ZWZ1bCcgaGVyZS4gTm8gaXQncyBu b3QgbGlrZSBzdGF0ZWxlc3MgdG8gc3RhdGVmdWwgY29udmVyc2lvbi4gDQpTdGF0ZWxlc3Mgb3Bl cmF0aW9uIGlzIHN0YXRlbGVzcyBvbmx5IGFuZCBpbiBzdGF0ZWxlc3Mgd2UgZG9uJ3QgZXhwZWN0 IE9VVF9PRl9TUEFDRSBlcnJvci4gU28sIG5vdyBJIGFsc28gdW5kZXJzdGFuZCB3aGF0IHlvdSdy ZSB0cnlpbmcgdG8gaW1wbHkgd2l0aCBwcm9kdWNlZD1jb25zdW1lZD0wLg0KDQpTbywgbGV0IG1l IHN1bW1hcmlzZSByZWRlZmluaXRpb24gb2YgT1VUX09GX1NQQUNFIGJhc2VkIG9uIFJGQyB2Mzog DQogDQpJbnRlcnByZXRpbmcgT1VUX09GX1NQQUNFIGNvbmRpdGlvbjoNCn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+DQpBLiBTdGF0ZWxlc3MgT3BlcmF0aW9uczoNCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkEuMSBJZiBvcGVyYXRpb24gaXMgc3RhdGVsZXNzIGku ZS4gcnRlX2NvbXBfb3AuIG9wX3R5cGUgPT0gUlRFX0NPTVBfT1BfU1RBVEVMRVNTLCBhbmQgUE1E IHJ1bnMgb3V0IG9mIGJ1ZmZlciBkdXJpbmcgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbiB0 aGVuIGl0IGlzIGFuIGVycm9yIGNvbmRpdGlvbiBmb3IgUE1ELiANCkl0IHdpbGwgcmVzZXQgaXRz ZWxmIGFuZCByZXR1cm4gd2l0aCBwcm9kdWNlZD1jb25zdW1lZD0wIHdpdGggc3RhdHVzIE9VVF9P Rl9TUEFDRS4gT24gc2VlaW5nIHRoaXMsIGFwcGxpY2F0aW9uIHNob3VsZCByZXN1Ym1pdCBmdWxs IHJlcXVlc3Qgd2l0aCBiaWdnZXIgb3V0cHV0IGJ1ZmZlciBzaXplLg0KDQpCLiBTdGF0ZWZ1bCBP cGVyYXRpb25zOg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQi4xIElmIG9wZXJh dGlvbiBpcyBzdGF0ZWZ1bCBpLmUuIHJ0ZV9jb21wX29wLm9wX3R5cGUgPT0gUlRFX0NPTVBfT1Bf U1RBVEVGVUwsICBhbmQgUE1EIHJ1bnMgb3V0IG9mIGJ1ZmZlciBkdXJpbmcgY29tcHJlc3Npb24g b3IgZGVjb21wcmVzc2lvbiwgdGhlbiBQTUQgd2lsbCB1cGRhdGUgDQpwcm9kdWNlZD1jb25zdW1l ZCAoYXMgbWVudGlvbmVkIGFib3ZlKSBhbmQgYXBwIHNob3VsZCByZXN1Ym1pdCBvcCB3aXRoIGlu cHV0IGZyb20gY29uc3VtZWQrMSBhbmQgb3V0cHV0IGJ1ZmZlciB3aXRoIGZyZWUgc3BhY2UuDQpQ bGVhc2Ugbm90ZSBmb3Igc3VjaCBjYXNlLCBhcHBsaWNhdGlvbiBzaG91bGQgYWxsb2NhdGUgc3Ry ZWFtIHZpYSBjYWxsIHRvIHJ0ZV9jb21wX3N0cmVhbV9jcmVhdGUoKSBhbmQgYXR0YWNoIGl0IHRv IG9wIGFuZCBwYXNzIGl0IGFsb25nIGV2ZXJ5IHRpbWUgcGVuZGluZyBvcCBpcyBlbnF1ZXVlZCB1 bnRpbCBvcCBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlIHdpdGggc3RhdHVzIHNldCB0byBTVUNDRVNT L0ZBSUxVUkUuDQoNCg0KPiANCj4gLy9zbmlwLi4uLi4NCj4gDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gRC4yLjEuMiBTdGF0ZWZ1bCBvcGVyYXRpb24gc3RhdGUgbWFpbnRlbmFuY2UNCj4gPiA+ ID4gPiA+IMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiA+ID4gVGhpcyBzZWN0aW9uIHN0YXJ0cyB3aXRoIGRlc2Ny aXB0aW9uIG9mIG91ciB1bmRlcnN0YW5kaW5nIGFib3V0DQo+ID4gPiA+ID4gY29tcHJlc3Npb24g QVBJIHN1cHBvcnQgZm9yIHN0YXRlZnVsLg0KPiA+ID4gPiA+ID4gRGVwZW5kaW5nIHVwb24gdW5k ZXJzdGFuZGluZyBidWlsZCB1cG9uIHRoZXNlIGNvbmNlcHRzLCB3ZSB3aWxsDQo+ID4gPiBpZGVu dGlmeQ0KPiA+ID4gPiA+IHJlcXVpcmVkIGRhdGEgc3RydWN0dXJlL3BhcmFtDQo+ID4gPiA+ID4g PiB0byBtYWludGFpbiBpbi1wcm9ncmVzcyBvcGVyYXRpb24gY29udGV4dCBieSBQTUQuDQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gRm9yIHN0YXRlZnVsIGNvbXByZXNzaW9uLCBiYXRjaCBvZiBk ZXBlbmRlbnQgcGFja2V0cyBzdGFydHMgYXQgYQ0KPiBwYWNrZXQNCj4gPiA+ID4gPiBoYXZpbmcN Cj4gPiA+ID4gPiA+IFJURV9OT19GTFVTSC9SVEVfU1lOQ19GTFVTSCBmbHVzaCB2YWx1ZSBhbmQg ZW5kIGF0IHBhY2tldA0KPiBoYXZpbmcNCj4gPiA+ID4gPiBSVEVfRlVMTF9GTFVTSC9GSU5BTF9G TFVTSC4NCj4gPiA+ID4gPiA+IGkuZS4gYXJyYXkgb2Ygb3BlcmF0aW9ucyB3aWxsIGNhcnJ5IHN0 cnVjdHVyZSBsaWtlIHRoaXM6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gLQ0KPiA+ID4gPiA+ID4gfG9wMS5ub19mbHVzaCB8IG9wMi5ub19m bHVzaCB8IG9wMy5ub19mbHVzaCB8IG9wNC5mdWxsX2ZsdXNofA0KPiA+ID4gPiA+ID4gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLQ0KPiA+ID4gPiA+ID4NCj4gPiA+IFtGaW9uYV0gSSB0 aGluayBpdCBuZWVkcyB0byBiZSBtb3JlIGNvbnN0cmFpbmVkIHRoYW4geW91ciBleGFtcGxlcw0K PiBiZWxvdy4NCj4gPiA+IE9ubHkgMSBvcGVyYXRpb24gZnJvbSBhIHN0cmVhbSBjYW4gYmUgaW4g YSBidXJzdC4gQXMgZWFjaCBvcGVyYXRpb24NCj4gPiA+IGluIGEgc3RhdGVmdWwgc3RyZWFtIG11 c3QgY29tcGxldGUsIGFzIG5leHQgb3BlcmF0aW9uIG5lZWRzIHN0YXRlIGFuZA0KPiA+ID4gaGlz dG9yeQ0KPiA+ID4gb2YgcHJldmlvdXMgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlIGJlZm9yZSBp dCBjYW4gYmUgcHJvY2Vzc2VkLg0KPiA+ID4gQW5kIGlmIG9uZSBmYWlsZWQsIGUuZy4gZHVlIHRv IE9VVF9PRl9TUEFDRSwgdGhpcyBzaG91bGQgYWZmZWN0DQo+ID4gPiB0aGUgZm9sbG93aW5nIG9w ZXJhdGlvbiBpbiB0aGUgc2FtZSBzdHJlYW0uDQo+ID4gPiBXb3JzdCBjYXNlIHRoaXMgbWVhbnMg YnVyc3RzIG9mIDEuIEJ1cnN0IGNhbiBiZSA+MSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUNCj4gPiA+ IGluZGVwZW5kZW50IHN0cmVhbXMgd2l0aCBhdmFpbGFibGUgZGF0YSBmb3IgcHJvY2Vzc2luZy4g T3IgaWYgdGhlcmUgaXMNCj4gPiA+IGRhdGEgYXZhaWxhYmxlIHdoaWNoIGNhbiBiZSBzdGF0ZWxl c3NseSBwcm9jZXNzZWQuDQo+ID4gPg0KPiA+ID4gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGJ1ZmZl cnMgYXZhaWxhYmxlIGZyb20gYSBzdHJlYW0gLCB0aGVuIGluc3RlYWQgdGhleQ0KPiBjYW4NCj4g PiA+IGJlIGxpbmtlZCB0b2dldGhlciBpbiBhbiBtYnVmIGNoYWluIHNlbnQgaW4gYSBzaW5nbGUg b3BlcmF0aW9uLg0KPiA+ID4NCj4gPiA+IFRvIGhhbmRsZSB0aGUgc2VxdWVuY2VzIGJlbG93IHdv dWxkIG1lYW4gdGhlIFBNRA0KPiA+ID4gd291bGQgbmVlZCB0byBzdG9yZSBvcHMgc2VuZGluZyBv bmUgYXQgYSB0aW1lIHRvIGJlIHByb2Nlc3NlZC4NCj4gPiA+DQo+ID4gPiBBcyB0aGlzIGlzIHNp Z25pZmljYW50bHkgZGlmZmVyZW50IGZyb20gd2hhdCB5b3UgZGVzY3JpYmUgYmVsb3csIEknbGwg d2FpdCBmb3INCj4gPiA+IGZ1cnRoZXIgZmVlZGJhY2sNCj4gPiA+IGJlZm9yZSBjb250aW51aW5n Lg0KPiA+DQo+ID4gW1NoYWxseV0gSSBjb25jdXIgd2l0aCB5b3VyIHRob3VnaHRzLiBBbmQgdGhl c2UncmUgYXJlIG5vdCBzaWduaWZpY2FudGx5DQo+IGRpZmZlcmVudCBmcm9tIHRoZSBjb25jZXB0 DQo+ID4gcHJlc2VudGVkIGJlbG93Lg0KPiA+DQo+ID4gWWVzIGFzIHlvdSBtZW50aW9uZWQsIGV2 ZW4gZm9yIGJ1cnN0X3NpemU+MSBQTUQgd2lsbCBoYXZlIHRvIHNlcmlhbGl6ZQ0KPiBlYWNoIG9w IGludGVybmFsbHkgaS5lLg0KPiA+IEl0IGhhcyB0byB3YWl0IGZvciBwcmV2aW91cyB0byBmaW5p c2ggYmVmb3JlIHB1dHRpbmcgbmV4dCBmb3IgcHJvY2Vzc2luZyB3aGljaA0KPiBpcw0KPiA+IGFz IGdvb2QgYXMgYXBwbGljYXRpb24gbWFraW5nIHNlcmlhbGlzZWQgY2FsbCBwYXNzaW5nIG9uZSBv cCBhdC1hLXRpbWUgb3IgaWYNCj4gPiBzdHJlYW0gY29uc2lzdHMgb2YgbXVsdGlwbGUgYnVmZmVy cywgbWFraW5nIHRoZWlyIHNjYXR0ZXItZ2F0aGVyIGxpc3QgYW5kDQo+ID4gdGhlbiBlbnF1ZXVl IGl0IGFzIG9uZSBvcCBhdCBhIHRpbWUgd2hpY2ggaXMgbW9yZSBlZmZpY2llbnQgYW5kIGlkZWFs IHVzYWdlLg0KPiA+IEhvd2V2ZXIgaW4gb3JkZXIgdG8gYWxsb3cgZXh0ZW5zaWJpbGl0eSwgSSBk aWRuJ3QgbWVudGlvbiBsaW1pdGF0aW9uIG9uDQo+IGJ1cnN0X3NpemUuDQo+ID4gQmVjYXVzZSBJ ZiBQTUQgZG9lc24ndCBzdXBwb3J0IGJ1cnN0X3NpemUgPiAxIGl0IGNhbiBhbHdheXMgcmV0dXJu DQo+IG5iX2VucXVldWVkID0gMSwgaW4gd2hpY2ggY2FzZQ0KPiA+IGFwcCBjYW4gZW5xdWV1ZSBu ZXh0IGhvd2V2ZXIgd2l0aCBjb25kaXRpb24gaXQgc2hvdWxkIHdhaXQgZm9yIHByZXZpb3VzDQo+ IHRvIGNvbXBsZXRlDQo+ID4gYmVmb3JlIG1ha2luZyBuZXh0IGVucXVldWUgY2FsbC4NCj4gPg0K PiA+IFNvLCBpZiB3ZSB0YWtlIHNpbXBsZSBleGFtcGxlIHRvIGNvbXByZXNzIDJrIG9mIGRhdGEg d2l0aCBzcmMgbWJ1ZiBzaXplID0NCj4gMWsuDQo+ID4gVGhlbiB3aXRoIGJ1cnN0X3NpemU9MSwg ZXhwZWN0ZWQgY2FsbCBmbG93IHdvdWxkIGJlKHRoaXMgaXMganVzdCBvbmUgZmxvdywNCj4gb3Ro ZXIgdmFyaWF0aW9ucyBhcmUgYWxzbyBwb3NzaWJsZQ0KPiA+IHN1Y2hhcyBtYWtpbmcgY2hhaW4g b2YgMWsgYnVmZmVycyBhbmQgcGFzcyB3aG9sZSBkYXRhIGluIG9uZSBnbyk6DQo+ID4NCj4gPiAx LiBmaWxsIDFzdCAxayBjaHVuayBvZiBkYXRhIGluIG9wLm1zcmMNCj4gPiAyLmVucXVldWVfc3Ry ZWFtICguLi4sIHxvcC5mbHVzaCA9IG5vX2ZsdXNofCwgMSwgcHRyX3N0cmVhbSk7DQo+ID4gMy5k ZXF1ZXVlX2J1cnN0KHxvcHwsMSk7DQo+ID4gNC5yZWZpbGwgbmV4dCAxayBjaHVuayBpbiBvcC5t c3JjDQo+ID4gNS5lbnF1ZXVlX3N0cmVhbSguLi4sfG9wLmZsdXNoID0gZnVsbF9mbHVzaHwsIDEg LCBwdHJfc3RyZWFtKTsNCj4gPiA2LmRlcXVldWVfYnVyc3QofG9wfCwgMSk7DQo+ID4gNy5lbmQN Cj4gPg0KPiA+IFNvLCBJIGRvbuKAmXQgc2VlIG11Y2ggb2YgYSBjaGFuZ2UgaW4gQVBJIGNhbGwg ZmxvdyBmcm9tIGhlcmUgdG8gZGVzaWduDQo+IHByZXNlbnRlZCBiZWxvdyBleGNlcHQgbmJfb3Bz ID0gMSBpbg0KPiA+IGVhY2ggY2FsbC4NCj4gPiBIb3dldmVyIEkgYW0gYXNzdW1pbmcgdGhhdCBv cCBzdHJ1Y3R1cmUgd291bGQgc3RpbGwgYmUgc2FtZSBmb3Igc3RhdGVmdWwNCj4gcHJvY2Vzc2lu ZyBpLmUuIGl0IHdvdWxkIHN0YXJ0IHdpdGgNCj4gPiBvcC5mbHVzaCB2YWx1ZSA9IE5PL1NZTkNf RkxVU0ggYW5kIGVuZCBhdCBvcCB3aXRoIGZsdXNoIHZhbHVlID0gRlVMTA0KPiBGTFVTSC4NCj4g PiBBcmUgd2Ugb24gc2FtZSBwYWdlIGhlcmU/DQo+ID4NCj4gPiBUaGFua3MNCj4gPiBTaGFsbHkN Cj4gDQo+IFtGaW9uYV0gV2Ugc3RpbGwgaGF2ZSBhIGRpZmZlcmVudCB1bmRlcnN0YW5kaW5nIG9m IHRoZSBzdGF0ZWZ1bCBmbG93IG5lZWRlZA0KPiBvbiB0aGUgQVBJLg0KPiBJ4oCZbGwgdHJ5IHRv IGNsYXJpZnkgYW5kIG1heWJlIHdlIGNhbiBzZXQgdXAgYSBtZWV0aW5nIHRvIGRpc2N1c3MuDQo+ IE15IGFzc3VtcHRpb25zIGZpcnN0Og0KPiDigKIJT3JkZXIgb2Ygb3BzIG9uIGEgcXAgbXVzdCBi ZSBtYWludGFpbmVkIOKAkyBvcHMgc2hvdWxkIGJlIGRlcXVldWVkDQo+IGluIHNhbWUgc2VxdWVu Y2UgdGhleSBhcmUgZW5xdWV1ZWQuDQo+IOKAoglPcHMgZnJvbSBtYW55IHN0cmVhbXMgY2FuIGJl IGVucXVldWVkIG9uIHNhbWUgcXAuDQo+IOKAoglPcHMgZnJvbSBhIHFwIG1heSBiZSBmYW5uZWQg b3V0IHRvIGF2YWlsYWJsZSBodyBvciBzdyBlbmdpbmVzIGFuZA0KPiBwcm9jZXNzZWQgaW4gcGFy YWxsZWwsIHNvIGVhY2ggb3AgbXVzdCBiZSBpbmRlcGVuZGVudC4NCj4g4oCiCVN0YXRlbGVzcyBh bmQgc3RhdGVmdWwgb3BzIGNhbiBiZSBlbnF1ZXVlZCBvbiB0aGUgc2FtZSBxcA0KPiANCj4gU3Vi bWl0dGluZyBhIGJ1cnN0IG9mIHN0YXRlbGVzcyBvcHMgdG8gYSBxcCBpcyBubyBwcm9ibGVtLg0K PiBTdWJtaXR0aW5nIG1vcmUgdGhhbiAxIG9wIGF0IGEgdGltZSBmcm9tIHRoZSBzYW1lIHN0YXRl ZnVsIHN0cmVhbSB0byBhIHFwIGlzDQo+IGEgcHJvYmxlbS4NCj4gRXhhbXBsZToNCj4gQXBwbCBz dWJtaXRzIDIgb3BzIGluIHNhbWUgc3RyZWFtIGluIGEgYnVyc3QsIGVhY2ggaGFzIHNyYyBhbmQg ZGVzdCBtYnVmcywNCj4gaW5wdXQgbGVuZ3RoL29mZnNldCBhbmQNCj4gcmVxdWlyZXMgY2hlY2tz dW0gdG8gYmUgY2FsY3VsYXRlZC4NCj4gVGhlIGZpcnN0IG9wIG11c3QgYmUgcHJvY2Vzc2VkIHRv IGNvbXBsZXRpb24gYmVmb3JlIHRoZSBzZWNvbmQgY2FuIGJlDQo+IHN0YXJ0ZWQgYXMgaXQgbmVl ZHMgdGhlIGhpc3RvcnkgYW5kIHRoZSBjaGVja3N1bSBzbyBmYXIuDQo+IElmIGVhY2ggZGVzdCBt YnVmIGlzIGJpZyBlbm91Z2ggc28gbm8gb3ZlcmZsb3csIGVhY2ggZGVzdCBtYnVmIHdpbGwgYmUN Cj4gcGFydGlhbGx5IGZpbGxlZC4gVGhpcyBpcyBwcm9iYWJseSBub3QNCj4gd2hhdOKAmXMgZGVz aXJlZCwgYW5kIHdpbGwgZm9yY2UgYW4gZXh0cmEgY29weSB0byBtYWtlIHRoZSBvdXRwdXQgZGF0 YQ0KPiBjb250aWd1b3VzLg0KPiBJZiB0aGUgZGVzdCBtYnVmIGluIHRoZSBmaXJzdCBvcCBpcyB0 b28gc21hbGwsIHRoZW4gZG9lcyB0aGUgUE1EIGFsbG9jIG1vcmUNCj4gbWVtb3J5IGluIHRoZSBk ZXN0IG1idWY/DQo+IE9yIGFsbG9jIGFub3RoZXIgbWJ1Zj8gT3IgZmFpbCBhbmQgdGhlIHdob2xl IGJ1cnN0IG11c3QgYmUgcmVzdWJtaXR0ZWQ/DQo+IE9yIHN0b3JlIHRoZSAybmQgb3AsIHdhaXQs IG9uIHNlZWluZyB0aGUgT1VUX09GX1NQQUNFIG9uIHRoZSAxc3Qgb3AsDQo+IG92ZXJ3cml0ZSB0 aGUgc3JjLCBkZXN0LCBsZW4gZXRjIG9mIHRoZSAybmQgb3ANCj4gdG8gaW5jbHVkZSB0aGUgdW5w cm9jZXNzZWQgcGFydCBvZiB0aGUgMXN0IG9wPw0KPiBJbiB0aGUgbWVhbnRpbWUsIGFyZSBhbGwg b3RoZXIgb3BzIG9uIHRoZSBxcCBibG9ja2VkIGJlaGluZCB0aGVzZT8NCj4gRm9yIGh3IGFjY2Vs ZXJhdG9ycyBpdOKAmXMgd29yc2UsIGFzIFBNRCB3b3VsZCBub3JtYWxseSByZXR1cm4gb25jZSBv cHMgYXJlDQo+IG9mZmxvYWRlZCBhbmQgdGhlIGRlcXVldWUgd291bGQNCj4gcGFzcyBwcm9jZXNz ZWQgb3BzIHN0cmFpZ2h0IGJhY2sgdG8gdGhlIGFwcGwuIEluc3RlYWQsIHRoZSBlbnF1ZXVlIHdv dWxkDQo+IG5lZWQgdG8ga2ljayBvZmYgYSB0aHJlYWQgdG8NCj4gZGVxdWV1ZSBvcHMgYW5kIGZp bHRlciB0byBmaW5kIHRoZSBzdGF0ZWZ1bCBvbmUsIHN0b3JpbmcgdGhlIG90aGVycyB0aWwgdGhl IG5leHQNCj4gYXBwbGljYXRpb24gZGVxdWV1ZSBpcyBjYWxsZWQuDQo+IA0KPiBBYm92ZSBzY2Vu YXJpb3MgZG9u4oCZdCBsZW5kIHRoZW1zZWx2ZXMgdG8gYWNjZWxlcmF0aW5nIGEgcGFja2V0IHBy b2Nlc3NpbmcNCj4gd29ya2xvYWQuDQo+IEl0IHB1c2hlcyBhIHdvcmtsb2FkIGRvd24gdG8gYWxs IFBNRHMgd2hpY2ggSSBiZWxpZXZlIGJlbG9uZ3MgYWJvdmUgdGhpcyBBUEkNCj4gYXMNCj4gdGhh dCB3b3JrIGlzIG5vdCBhYm91dCBvZmZsb2FkaW5nIHRoZSBjb21wdXRlIGludGVuc2l2ZSBjb21w cmVzc2lvbiB3b3JrDQo+IGJ1dA0KPiBhYm91dCB0aGUgc2VxdWVuY2luZyBvZiBkYXRhIGFuZCBz byBpcyBiZXR0ZXIgY29kZWQgb25jZSwgYWJvdmUgdGhlIEFQSSBpbg0KPiBhbiBhcHBsaWNhdGlv biBsYXllcg0KPiBjb21tb24gdG8gYWxsIFBNRHMuIChTZWUgTm90ZTEgaW4gaHR0cDovL2RwZGsu b3JnL21sL2FyY2hpdmVzL2Rldi8yMDE3LQ0KPiBPY3RvYmVyLzA3ODk0NC5odG1sICkNCj4gSWYg YW4gYXBwbGljYXRpb24gaGFzIHNldmVyYWwgcGFja2V0cyB3aXRoIGRhdGEgZnJvbSBhIHN0cmVh bSB0aGF0IGl0IG5lZWRzIHRvDQo+IChkZSljb21wcmVzcyBzdGF0ZWZ1bGx5LA0KPiB3aGF0IGl0 IHByb2JhYmx5IHdhbnRzIGlzIGZvciB0aGUgb3V0cHV0IGRhdGEgdG8gZmlsbCBlYWNoIG91dHB1 dCBidWZmZXINCj4gY29tcGxldGVseSBiZWZvcmUgd3JpdGluZyB0byB0aGUgbmV4dCBidWZmZXIu DQo+IENoYWluaW5nIHRoZSBzcmMgbWJ1ZnMgaW4gdGhlc2UgcGt0cyBpbnRvIG9uZSBjaGFpbiBh bmQgc2VuZGluZyBhcyBvbmUgb3ANCj4gYWxsb3dzIHRoZSBvdXRwdXQNCj4gZGF0YSB0byBiZSBw YWNrZWQgaW50byBhIGRlc3QgbWJ1ZiBvciBtYnVmIGNoYWluLg0KPiBJIHRoaW5rIHdoYXTigJlz IG5lZWRlZCBpcyBhIGxheWVyIGFib3ZlIHRoZSBBUEkgdG8gYWNjdW11bGF0ZSBpbmNvbWluZw0K PiBwYWNrZXRzIHdoaWxlIHdhaXRpbmcgZm9yIHRoZQ0KPiBwcmV2aW91cyBzZXQgb2YgcGFja2V0 cyB0byBiZSBjb21wcmVzc2VkLiBGb3J3YXJkaW5nIHRvIHRoZSBQTUQgdG8gcXVldWUNCj4gdGhl cmUgaXMgbm90IHRoZSByaWdodCBwbGFjZQ0KPiB0byBidWZmZXIgdGhlbSBhcyB0aGUgcXVldWUg c2hvdWxkIGJlIHBlciBzdHJlYW0gcmF0aGVyIHRoYW4gb24gdGhlDQo+IGFjY2VsZXJhdG9yIGVu Z2luZeKAmXMgcXVldWUNCj4gd2hpY2ggaGFzIGxvdHMgb2Ygb3RoZXIgaW5kZXBlbmRlbnQgcGFj a2V0cy4NCj4gDQoNCltTaGFsbHldIE9rLiBJIGJlbGlldmUgSSBnZXQgaXQuICANCkluIGdlbmVy YWwgSSBhZ3JlZSB0byB0aGlzIHByb3Bvc2FsLiBIb3dldmVyIGhhdmUgY29uY2VybiBvbiAxIHBv aW50IGhlcmUgaS5lLiBvcmRlciBtYWludGVuYW5jZS4gUGxlYXNlIHNlZSBmdXJ0aGVyIGZvciBt b3JlIGV4cGxhbmF0aW9uLg0KDQo+IA0KPiBQcm9wb3NhbDoNCj4g4oCiIE9wcyBmcm9tIGEgcXAg bWF5IGJlIGZhbm5lZCBvdXQgdG8gYXZhaWxhYmxlIGh3IG9yIHN3IGVuZ2luZXMgYW5kDQo+ICAg ICBwcm9jZXNzZWQgaW4gcGFyYWxsZWwsIHNvIGVhY2ggb3AgbXVzdCBiZSBpbmRlcGVuZGVudC4N CltTaGFsbHldIFBvc3NpYmxlIG9ubHkgaWYgIFBNRCBzdXBwb3J0IGNvbWJpbmF0aW9uIG9mIFNX IGFuZCBIVyBwcm9jZXNzaW5nLiBSaWdodD8NCg0KPiDigKIgT3JkZXIgb2Ygb3BzIG9uIGEgcXAg bXVzdCBiZSBtYWludGFpbmVkIOKAkyBvcHMgc2hvdWxkIGJlIGRlcXVldWVkIGluDQo+IHNhbWUg c2VxdWVuY2UgdGhleSBhcmUgZW5xdWV1ZWQuDQpbU2hhbGx5XSBJZiBlYWNoIG9wIGlzIGluZGVw ZW5kZW50IHRoZW4gd2h5IGRvIHdlIG5lZWQgdG8gbWFpbnRhaW4gb3JkZXJpbmcuIFNpbmNlIHRo ZXkncmUgaW5kZXBlbmRlbnQgYW5kIHRodXMgY2FuIGJlIHByb2Nlc3NlZCBpbiBwYXJhbGxlbCBz byB0aGV5IGNhbiB3ZWxsIGJlIHF1aXRlIG91dC1vZi1vcmRlciBhbmQgYXZhaWxhYmxlIGZvciBk ZXF1ZXVlIGFzIHNvb24gYXMgY29tcGxldGVkLg0KU2VyaWFsaXppbmcgdGhlbSB3aWxsIGxpbWl0 IEhXIHRocm91Z2hwdXQgY2FwYWJpbGl0eS4gQW5kIEkgY2FuIGVudmlzaW9uIHNvbWUgYXBwIG1h eSBub3QgY2FyZSBhYm91dCBvcmRlcmluZyBqdXN0IGNvbXBsZXRpb24uIA0KU28gSSB3b3VsZCBz dWdnZXN0IGlmIGFwcGxpY2F0aW9uIG5lZWQgb3JkZXJpbmcgc2hvdWxkIHRhZyBlYWNoIG9wIHdp dGggc29tZSBpZCBvciBzZXJpYWwgbnVtYmVyIGluIG9wIHVzZXJfZGF0YSBhcmVhIHRvIGlkZW50 aWZ5IGVucXVldWUgb3JkZXIgT1Igd2UgbWF5IGFkZCBmbGFnIGluIGVucXVldWVfYnVyc3QoKSBB UEkgdG8gZW5mb3JjZSBzZXJpYWxpemVkIGRlcXVldWluZywgaWYgdGhhdCdzIGhhcmQgcmVxdWly ZW1lbnQgb2YgYW55Lg0KDQo+IOKAoiBTdGF0ZWxlc3MgYW5kIHN0YXRlZnVsIG9wcyBjYW4gYmUg ZW5xdWV1ZWQgb24gdGhlIHNhbWUgcXANCj4g4oCiIFN0YXRlbGVzcyBhbmQgc3RhdGVmdWwgb3Bz IGNhbiBiZSBlbnF1ZXVlZCBpbiB0aGUgc2FtZSBidXJzdA0KPiDigKIgT25seSAxIG9wIGF0IGEg dGltZSBtYXkgYmUgZW5xdWV1ZWQgdG8gdGhlIHFwIGZyb20gYW55IHN0YXRlZnVsIHN0cmVhbS4N Cj4g4oCiIEEgYnVyc3QgY2FuIGhhdmUgbXVsdGlwbGUgc3RhdGVmdWwgb3BzLCBidXQgZWFjaCBt dXN0IGJlIGZyb20gYSBkaWZmZXJlbnQNCj4gc3RyZWFtLg0KPiDigKIgQWxsIG9wcyB3aWxsIGhh dmUgYSBzZXNzaW9uIGF0dGFjaGVkIOKAkyB0aGlzIHdpbGwgb25seSBjb250YWluIGltbXV0YWJs ZSBkYXRhDQo+IHdoaWNoDQo+ICAgIGNhbiBiZSB1c2VkIGJ5IG1hbnkgb3BzLCBkZXZpY2VzIGFu ZCBvciBkcml2ZXJzIGF0IHRoZSBzYW1lIHRpbWUuDQo+IOKAoiBBbGwgc3RhdGVmdWwgb3BzIHdp bGwgaGF2ZSBhIHN0cmVhbSBhdHRhY2hlZCBmb3IgbWFpbnRhaW5pbmcgc3RhdGUgYW5kDQo+ICAg IGhpc3RvcnksIHRoaXMgY2FuIG9ubHkgYmUgdXNlZCBieSBvbmUgb3AgYXQgYSB0aW1lLg0KW1No YWxseV0gU28sIHlvdSBtZWFuOg0KDQpBIHNpbmdsZSBlbnF1ZV9idXJzdCgpICpjYW4qIGNhcnJ5 IG11bHRpcGxlIHN0cmVhbXMuIEkuRS4gVGhpcyBpcyBhbGxvd2VkIGJvdGggaW4gYnVyc3Qgb3Ig aW4gcXAgKHNheSwgd2hlbiBtdWx0aXBsZSB0aHJlYWRzIGNhbGwgZW5xdWVfYnVyc3QoKSBvbiBz YW1lIHFwKQ0KICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K ICAgICAgICAgICAgICBlbnF1ZV9idXJzdCAofG9wMS5ub19mbHVzaCB8IG9wMi5ub19mbHVzaCB8 IG9wMy5mbHVzaF9maW5hbCB8IG9wNC5ub19mbHVzaCB8IG9wNS5ub19mbHVzaCB8KQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpXaGVyZSwNCkFsbCBvcDEsIG9wMi4uLm9wNSBiZWxv bmdzIHRvIGFsbCAqZGlmZmVyZW50KiBzdHJlYW1zLiBPcDMgY2FuIGJlIHN0YXRlbGVzcy9zdGF0 ZWZ1bCBkZXBlbmRpbmcgdXBvbiBvcF90eXBlIHZhbHVlIGFuZCBlYWNoIGNhbiBoYXZlICpzYW1l IG9yIGRpZmZlcmVudCogc2Vzc2lvbnMuDQoNCklmIEkgdW5kZXJzdGFuZCB0aGlzIHJpZ2h0LCB0 aGVuIHllcyBpdCBsb29rcyBnb29kIHRvIG1lLiBIb3dldmVyIHRoaXMgYWxzbyBicmluZyBvbmUg bWlub3IgcG9pbnQgZm9yIGRpc2N1c3Npb24gYnV0IEkgd291bGQgd2FpdCB0byBpbml0aWF0ZSB0 aGF0IHVudGlsIHdlIGNsb3NlIG9uIGN1cnJlbnQgb3BlbiBwb2ludHMuDQoNClRoYW5rcw0KU2hh bGx5DQo+IA0KPiANCj4gQ29kZSBhcnRlZmFjdHM6DQo+IA0KPiBlbnVtIHJ0ZV9jb21wX29wX3R5 cGUgew0KPiAgICAgUlRFX0NPTVBfT1BfU1RBVEVMRVNTLA0KPiAgICAgUlRFX0NPTVBfT1BfU1RB VEVGVUwNCj4gfQ0KPiANCj4gQWRkIGZvbGxvd2luZyB0byBydGVfY29tcF9vcDoNCj4gICAgIGVu dW0gcnRlX2NvbXBfb3BfdHlwZSBvcF90eXBlOw0KPiAgICAgdm9pZCAqIHN0cmVhbV9wcml2YXRl Ow0KPiAgICAgLyogbG9jYXRpb24gd2hlcmUgUE1EIG1haW50YWlucyBzdHJlYW0gc3RhdGUg4oCT IG9ubHkgcmVxdWlyZWQgaWYgb3BfdHlwZSBpcw0KPiBTVEFURUZVTCwgZWxzZSBzZXQgdG8gTlVM TCAqLw0KPiANCj4gQXMgc2l6ZSBvZiBzdHJlYW0gZGF0YSB3aWxsIHZhcnkgZGVwZW5kaW5nIG9u IFBNRCwgZWFjaCBQTUQgb3IgZGV2aWNlDQo+IHNob3VsZCBhbGxvY2F0ZSAmIG1hbmFnZSBpdHMg b3duIG1lbXBvb2wuIEFzc29jaWF0ZWQgQVBJcyBhcmU6DQo+IHJ0ZV9jb21wX3N0cmVhbV9jcmVh dGUodWludDhfdCBkZXZfaWQsIHJ0ZV9jb21wX3Nlc3Npb24gKnNlc3MsIHZvaWQgKioNCj4gc3Ry ZWFtKTsNCj4gLyogVGhpcyBzaG91bGQgYWxsb2MgYSBzdHJlYW0gZnJvbSB0aGUgZGV2aWNl4oCZ cyBtZW1wb29sIGFuZCBpbml0aWFsaXNlIGl0LiBUaGlzDQo+IGhhbmRsZSB3aWxsIGJlIHBhc3Nl ZCB0byB0aGUgUE1EIHdpdGggZXZlcnkgb3AgaW4gdGhlIHN0cmVhbS4gUS4gU2hvdWxkDQo+IHFw X2lkIGFsc28gYmUgYWRkZWQsIHdpdGggY29uc3RyYWludCB0aGF0IGFsbCBvcHMgaW4gdGhlIHNh bWUgc3RyZWFtIHNob3VsZA0KPiBiZSBzZW50IHRvIHRoZSBzYW1lIHFwPyAgKi8NCj4gcnRlX2Nv bXBfc3RyZWFtX2ZyZWUodWludDhfdCBkZXZfaWQsIHZvaWQgKiBzdHJlYW0pOw0KPiAvKiBUaGlz IHNob3VsZCBjbGVhciB0aGUgc3RyZWFtIGFuZCByZXR1cm4gaXQgdG8gdGhlIGRldmljZeKAmXMg bWVtcG9vbCAqLw0KPiANCj4gQWxsIG9wcyBhcmUgZW5xdWV1ZWQvZGVxdWV1ZWQgdG8gZGV2aWNl ICYgcXAgdXNpbmcgc2FtZQ0KPiBydGVfY29tcHJlc3NkZXZfZW5xdWV1ZV9idXJzdCgpL+KApmRl cXVldWVfYnVyc3Q7DQo+IA0KPiBSZSBmbHVzaCBmbGFncywgc3RhdGVmdWwgc3RyZWFtIHdvdWxk IHN0YXJ0IHdpdGggb3AuZmx1c2ggPSBOT05FIG9yIFNZTkMgYW5kDQo+IGVuZCB3aXRoIEZVTEwg b3IgRklOQUwNCj4gU1RBVEVMRVNTIG9wcyB3b3VsZCBqdXN0IHVzZSBlaXRoZXIgRlVMTCBvciBG SU5BTA0KPiANCj4gDQo+IExldCBtZSBrbm93IGlmIHlvdSB3YW50IHRvIHNldCB1cCBhIG1lZXRp bmcgLSBpdCBtaWdodCBiZSBhIG1vcmUgZWZmZWN0aXZlDQo+IHdheSB0bw0KPiBhcnJpdmUgYXQg YW4gQVBJIHRoYXQgd29ya3MgZm9yIGFsbCBQTURzLg0KPiANCj4gSSdsbCBzZW5kIG91dCBhIHYz IHRvZGF5IHdpdGggYWJvdmUgcGx1cyB1cGRhdGVzIGJhc2VkIG9uIGFsbCB0aGUgb3RoZXINCj4g ZmVlZGJhY2suDQo+IA0KPiBSZWdhcmRzLA0KPiBGaW9uYQ0KDQo=