From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak Singh Rawat Subject: RE: [PATCH v2 2/2] drm/selftest: Add drm damage helper selftest Date: Sat, 20 Oct 2018 13:27:48 +0000 Message-ID: References: <20181016204609.1555-1-drawat@vmware.com> <20181016204609.1555-2-drawat@vmware.com> <20181017064034.GG31561@phenom.ffwll.local> <20181019092129.GA1828@e114479-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM04-SN1-obe.outbound.protection.outlook.com (mail-eopbgr700052.outbound.protection.outlook.com [40.107.70.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id 011526E16A for ; Sat, 20 Oct 2018 13:27:55 +0000 (UTC) In-Reply-To: <20181019092129.GA1828@e114479-lin.cambridge.arm.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Alexandru-Cosmin Gheorghe Cc: Daniel Vetter , "nd@arm.com" , linux-graphics-maintainer , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org DQo+IEhpIERlZXBhaywNCj4gDQo+IFNvbWV0aGluZyB0byBjb25zaWRlciwgd2l0aCB0aGlzIGFw cHJvYWNoIHdlIGtpbmQgb2YgYnJlYWsgdGhlDQo+IGZvbGxvd2luZyBiZWhhdmlvdXI6DQo+ICJP bmx5IHRlc3RzIGVuYWJsZWQgYXMgbW9kdWxlIHBhcmFtZXRlcnMgYXJlIHJ1biwgaWYgbm8gdGVz dCBpcw0KPiBleHBsaWNpdGx5IGVuYWJsZWQgdGhlbiBhbGwgb2YgdGhlbSBhcmUgcnVuIg0KPiAN Cj4gV2hhdCBJIHRoaW5rIHdlIHNob3VsZCBkbyBpcyBoYXZlIGp1c3Qgb25lIGhlYWRlciB3aGVy ZSB3ZSBwdXQgdGhlDQo+IHNlbGZ0ZXN0KGNoZWNrX3BsYW5lX3N0YXRlLCBpZ3RfY2hlY2tfcGxh bmVfc3RhdGVhKQ0KPiAuLi4NCj4gc2VsZnRlc3QoZGFtYWdlX2l0ZXJfbm9fZGFtYWdlLCBpZ3Rf ZGFtYWdlX2l0ZXJfbm9fZGFtYWdlKQ0KPiAuLi4NCj4gY2FsbCBpdCBkcm1fbW9kZXNldF9zZWxm dGVzdHMuaA0KPiANCj4gQW5kIHNlcGFyYXRlIGp1c3QgdGhlIGltcGxlbWVudGF0aW9ucyBpbiBk aWZmZXJlbnQgc291cmNlIGZpbGVzLg0KPiANCj4gVGhlbiB3ZSBjb3VsZCBjYWxsIHJ1bl9zZWxm dGVzdHMganVzdCBvbmNlIGZyb20gdGVzdF9kcm1fbW9kZXNldF9pbml0Lg0KPiANCj4gRG9lcyB0 aGlzIG1ha2VzIHNlbnNlIHRvIHlvdT8NCj4gDQoNCkhpIEFsZXhhbmRydSwNCg0KVGhhbmtzIGZv ciB0aGUgcmV2aWV3LiBZZXMgdGhpcyBkb2VzIG1ha2Ugc2Vuc2UgdG8gbWUuIEkgd2lsbCBjaGFu Z2UgdGhpcw0Kb25lIHRvIGhhdmUgcnVuX3NlbGZ0ZXN0cyBvbiBvbmUgc2luZ2xlIGhlYWRlciwg c2luZ2xlIHBhdGNoIDAxIGlzIGFscmVhZHkNCm1lcmdlZCB0byBkcm0tbWljcy4gDQoNCg0KPiA+ ID4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4NCj4gPiA+ID4g Q2M6IGFsZXhhbmRydS1jb3NtaW4uZ2hlb3JnaGVAYXJtLmNvbQ0KPiA+ID4gPiBTaWduZWQtb2Zm LWJ5OiBEZWVwYWsgUmF3YXQgPGRyYXdhdEB2bXdhcmUuY29tPg0KPiA+ID4gPiBSZXZpZXdlZC1i eTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4NCj4gPiA+ID4gUmV2aWV3 ZWQtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4NCj4gPiA+DQo+ ID4gPiBJIGd1ZXNzIHRoaXMgbmVlZHMgeW91ciBlbnRpcmUgZGFtYWdlIHNlcmllcyB0byBtYWtl IHNlbnNlLCByaWdodD8NCj4gPg0KPiA+IEFoIHllcyBzb3JyeS4gQWx0aG91Z2ggdGhpcyBwYXRj aCBpcyBzYW1lIGFzIHdoYXQgSSBzZW50IGVhcmxpZXINCj4gPiBleGNlcHQgbGlua2luZyB3aXRo IHRlc3QtZHJtX21vZGVzZXQua28NCj4gPg0KPiA+ID4NCj4gPiA+IEFub3RoZXIgcXVlc3Rpb246 IERvZXMgYW55b25lIGZyb20gdm13Z2Z4IHdhbnQgZHJtLW1pc2MgY29tbWl0IHJpZ2h0cw0KPiBm b3INCj4gPiA+IHB1c2hpbmcgc3R1ZmYgbGlrZSB0aGlzPw0KPiA+DQo+ID4gSGkgRGFuaWVsLCBU aGFua3MgZm9yIHRoZSBzdWdnZXN0aW9uLiBJIGFtIG5vdCBzdXJlIGFib3V0IGVsaWdpYmlsaXR5 IGNyaXRlcmlhIGZvcg0KPiA+IGNvbW1pdCByaWdodHMgYnV0IEkgdGhpbmsgSSB3aWxsIHdhaXQg dW50aWwgZHJtLW1pY3MgaXMgbW92ZWQgdG8gZ2l0bGFiIGFuZCBJIGhhdmUNCj4gPiBtb3JlIGV4 cGVyaWVuY2Ugd29ya2luZyB3aXRoIG9wZW4tc291cmNlLiBCZXNpZGUgbWUgVGhvbWFzIHdvcmtz IG9uDQo+ID4gdm13Z2Z4LCBJIGFtIG5vdCBzdXJlIGlmIGhlIGFscmVhZHkgaGF2ZSBjb21taXQg cmlnaHRzLg0KPiA+DQo+ID4gPiAtRGFuaWVsDQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL3NlbGZ0ZXN0cy9NYWtlZmlsZSAgICAgICAgICAgIHwgICAzICstDQo+ID4gPiA+ ICAuLi4vc2VsZnRlc3RzL2RybV9kYW1hZ2VfaGVscGVyX3NlbGZ0ZXN0cy5oICAgfCAgMjIgKw0K PiA+ID4gPiAgLi4uL2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fZGFtYWdlX2hlbHBlci5jICAgIHwg ODI4DQo+ICsrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiAgLi4uL2RybS9zZWxmdGVzdHMvdGVz dC1kcm1fbW9kZXNldF9jb21tb24uYyAgIHwgIDEwICstDQo+ID4gPiA+ICAuLi4vZHJtL3NlbGZ0 ZXN0cy90ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5oICAgfCAgIDEgKw0KPiA+ID4gPiAgNSBmaWxl cyBjaGFuZ2VkLCA4NjIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gPiA+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9kcm1fZGFt YWdlX2hlbHBlcl9zZWxmdGVzdHMuaA0KPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC0NCj4gZHJtX2RhbWFnZV9oZWxwZXIuYw0KPiA+ID4g Pg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9NYWtlZmls ZQ0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL01ha2VmaWxlDQo+ID4gPiA+IGlu ZGV4IDdlNjU4MTkyMWRhMC4uYzZlNjNlZDEyZjAyIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL01ha2VmaWxlDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9zZWxmdGVzdHMvTWFrZWZpbGUNCj4gPiA+ID4gQEAgLTEsMyArMSw0IEBADQo+ID4gPiA+ IC10ZXN0LWRybV9tb2Rlc2V0LXkgOj0gdGVzdC1kcm1fbW9kZXNldF9jb21tb24ubyB0ZXN0LQ0K PiA+ID4gZHJtX3BsYW5lX2hlbHBlci5vDQo+ID4gPiA+ICt0ZXN0LWRybV9tb2Rlc2V0LXkgOj0g dGVzdC1kcm1fbW9kZXNldF9jb21tb24ubyB0ZXN0LQ0KPiA+ID4gZHJtX3BsYW5lX2hlbHBlci5v IFwNCj4gPiA+ID4gKwkJICAgICAgdGVzdC1kcm1fZGFtYWdlX2hlbHBlci5vDQo+ID4gPiA+DQo+ ID4gPiA+ICBvYmotJChDT05GSUdfRFJNX0RFQlVHX1NFTEZURVNUKSArPSB0ZXN0LWRybV9tbS5v IHRlc3QtDQo+ID4gPiBkcm1fbW9kZXNldC5vDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vc2VsZnRlc3RzL2RybV9kYW1hZ2VfaGVscGVyX3NlbGZ0ZXN0cy5oDQo+ID4gPiBi L2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX2RhbWFnZV9oZWxwZXJfc2VsZnRlc3RzLmgN Cj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAw Li4zYTFjYmUwNWJlZjANCj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9kYW1hZ2VfaGVscGVyX3NlbGZ0ZXN0cy5oDQo+ID4g PiA+IEBAIC0wLDAgKzEsMjIgQEANCj4gPiA+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wICovDQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9ub19kYW1hZ2UsIGln dF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2UpDQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9u b19kYW1hZ2VfZnJhY3Rpb25hbF9zcmMsDQo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdl X2ZyYWN0aW9uYWxfc3JjKQ0KPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfbm9fZGFtYWdl X3NyY19tb3ZlZCwNCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfc3JjX21vdmVkKQ0K PiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX2ZyYWN0aW9uYWxfc3JjX21v dmVkLA0KPiA+ID4gaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9mcmFjdGlvbmFsX3NyY19tb3Zl ZCkNCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX25vX2RhbWFnZV9ub3RfdmlzaWJsZSwN Cj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm90X3Zpc2libGUpDQo+ID4gPiA+ICtz ZWxmdGVzdChkYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm9fY3J0YywNCj4gPiA+IGlndF9kYW1hZ2Vf aXRlcl9ub19kYW1hZ2Vfbm9fY3J0YykNCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX25v X2RhbWFnZV9ub19mYiwNCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm9fZmIpDQo+ ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9zaW1wbGVfZGFtYWdlLCBpZ3RfZGFtYWdlX2l0 ZXJfc2ltcGxlX2RhbWFnZSkNCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX3NpbmdsZV9k YW1hZ2UsIGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlKQ0KPiA+ID4gPiArc2VsZnRlc3Qo ZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3Rfc3JjLA0KPiA+ID4gaWd0X2RhbWFn ZV9pdGVyX3NpbmdsZV9kYW1hZ2VfaW50ZXJzZWN0X3NyYykNCj4gPiA+ID4gK3NlbGZ0ZXN0KGRh bWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfb3V0c2lkZV9zcmMsDQo+ID4gPiBpZ3RfZGFtYWdlX2l0 ZXJfc2luZ2xlX2RhbWFnZV9vdXRzaWRlX3NyYykNCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9p dGVyX3NpbmdsZV9kYW1hZ2VfZnJhY3Rpb25hbF9zcmMsDQo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJf c2luZ2xlX2RhbWFnZV9mcmFjdGlvbmFsX3NyYykNCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9p dGVyX3NpbmdsZV9kYW1hZ2VfaW50ZXJzZWN0X2ZyYWN0aW9uYWxfc3JjLA0KPiA+ID4gaWd0X2Rh bWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2VfaW50ZXJzZWN0X2ZyYWN0aW9uYWxfc3JjKQ0KPiA+ID4g PiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9vdXRzaWRlX2ZyYWN0aW9uYWxf c3JjLA0KPiA+ID4gaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfb3V0c2lkZV9mcmFjdGlv bmFsX3NyYykNCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfc3Jj X21vdmVkLA0KPiA+ID4gaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfc3JjX21vdmVkKQ0K PiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9mcmFjdGlvbmFsX3Ny Y19tb3ZlZCwNCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX2ZyYWN0aW9uYWxf c3JjX21vdmVkKQ0KPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlLCBpZ3RfZGFt YWdlX2l0ZXJfZGFtYWdlKQ0KPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlX29u ZV9pbnRlcnNlY3QsDQo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9pbnRlcnNlY3Qp DQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9kYW1hZ2Vfb25lX291dHNpZGUsDQo+ID4g PiBpZ3RfZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9vdXRzaWRlKQ0KPiA+ID4gPiArc2VsZnRlc3Qo ZGFtYWdlX2l0ZXJfZGFtYWdlX3NyY19tb3ZlZCwNCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9kYW1h Z2Vfc3JjX21vdmVkKQ0KPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlX25vdF92 aXNpYmxlLA0KPiA+ID4gaWd0X2RhbWFnZV9pdGVyX2RhbWFnZV9ub3RfdmlzaWJsZSkNCj4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fZGFtYWdl X2hlbHBlci5jDQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fZGFt YWdlX2hlbHBlci5jDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4 IDAwMDAwMDAwMDAwMC4uOWNlYzc3NzhlNWIyDQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9kYW1hZ2VfaGVscGVy LmMNCj4gPiA+ID4gQEAgLTAsMCArMSw4MjggQEANCj4gPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gPiA+ICsvKg0KPiA+ID4gPiArICogVGVzdCBjYXNlIGZv ciBkcm1fZGFtYWdlX2hlbHBlciBmdW5jdGlvbnMNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsjZGVmaW5lIHByX2ZtdChmbXQpICJkcm1fZGFtYWdlX2hlbHBlcjogIiBmbXQNCj4g PiA+ID4gKw0KPiA+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fZGFtYWdlX2hlbHBlci5oPg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsjaW5jbHVkZSAidGVzdC1kcm1fbW9kZXNldF9jb21tb24uaCINCj4g PiA+ID4gKw0KPiA+ID4gPiArI2RlZmluZSBURVNUUyAiZHJtX2RhbWFnZV9oZWxwZXJfc2VsZnRl c3RzLmgiDQo+ID4gPiA+ICsjaW5jbHVkZSAiZHJtX3NlbGZ0ZXN0LmgiDQo+ID4gPiA+ICsNCj4g PiA+ID4gK3N0YXRpYyB2b2lkIHNldF9wbGFuZV9zcmMoc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq c3RhdGUsIGludCB4MSwgaW50IHkxLCBpbnQNCj4geDIsDQo+ID4gPiA+ICsJCQkgIGludCB5MikN Cj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdGF0ZS0+c3JjLngxID0geDE7DQo+ID4gPiA+ICsJc3Rh dGUtPnNyYy55MSA9IHkxOw0KPiA+ID4gPiArCXN0YXRlLT5zcmMueDIgPSB4MjsNCj4gPiA+ID4g KwlzdGF0ZS0+c3JjLnkyID0geTI7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0 YXRpYyB2b2lkIHNldF9kYW1hZ2VfY2xpcChzdHJ1Y3QgZHJtX21vZGVfcmVjdCAqciwgaW50IHgx LCBpbnQgeTEsIGludA0KPiB4MiwNCj4gPiA+ID4gKwkJCSAgICBpbnQgeTIpDQo+ID4gPiA+ICt7 DQo+ID4gPiA+ICsJci0+eDEgPSB4MTsNCj4gPiA+ID4gKwlyLT55MSA9IHkxOw0KPiA+ID4gPiAr CXItPngyID0geDI7DQo+ID4gPiA+ICsJci0+eTIgPSB5MjsNCj4gPiA+ID4gK30NCj4gPiA+ID4g Kw0KPiA+ID4gPiArc3RhdGljIHZvaWQgc2V0X2RhbWFnZV9ibG9iKHN0cnVjdCBkcm1fcHJvcGVy dHlfYmxvYiAqZGFtYWdlX2Jsb2IsDQo+ID4gPiA+ICsJCQkgICAgc3RydWN0IGRybV9tb2RlX3Jl Y3QgKnIsIHVpbnQzMl90IHNpemUpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJZGFtYWdlX2Jsb2It Pmxlbmd0aCA9IHNpemU7DQo+ID4gPiA+ICsJZGFtYWdlX2Jsb2ItPmRhdGEgPSByOw0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9pZCBzZXRfcGxhbmVfZGFtYWdlKHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLA0KPiA+ID4gPiArCQkJICAgICBzdHJ1Y3QgZHJt X3Byb3BlcnR5X2Jsb2IgKmRhbWFnZV9ibG9iKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0YXRl LT5mYl9kYW1hZ2VfY2xpcHMgPSBkYW1hZ2VfYmxvYjsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIGJvb2wgY2hlY2tfZGFtYWdlX2NsaXAoc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqc3RhdGUsIHN0cnVjdA0KPiA+ID4gZHJtX3JlY3QgKnIsDQo+ID4gPiA+ICsJCQkgICAg ICBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJ LyoNCj4gPiA+ID4gKwkgKiBSb3VuZCBkb3duIHgxL3kxIGFuZCByb3VuZCB1cCB4Mi95Mi4gVGhp cyBpcyBiZWNhdXNlIGRhbWFnZSBpcyBub3QNCj4gPiA+IGluDQo+ID4gPiA+ICsJICogMTYuMTYg Zml4ZWQgcG9pbnQgc28gdG8gY2F0Y2ggYWxsIHBpeGVscy4NCj4gPiA+ID4gKwkgKi8NCj4gPiA+ ID4gKwlpbnQgc3JjX3gxID0gc3RhdGUtPnNyYy54MSA+PiAxNjsNCj4gPiA+ID4gKwlpbnQgc3Jj X3kxID0gc3RhdGUtPnNyYy55MSA+PiAxNjsNCj4gPiA+ID4gKwlpbnQgc3JjX3gyID0gKHN0YXRl LT5zcmMueDIgPj4gMTYpICsgISEoc3RhdGUtPnNyYy54MiAmIDB4RkZGRik7DQo+ID4gPiA+ICsJ aW50IHNyY195MiA9IChzdGF0ZS0+c3JjLnkyID4+IDE2KSArICEhKHN0YXRlLT5zcmMueTIgJiAw eEZGRkYpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJaWYgKHgxID49IHgyIHx8IHkxID49IHkyKSB7 DQo+ID4gPiA+ICsJCXByX2VycigiQ2Fubm90IGhhdmUgZGFtYWdlIGNsaXAgd2l0aCBubyBkaW1l bnRpb24uXG4iKTsNCj4gPiA+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ID4gPiArCX0NCj4gPiA+ ID4gKw0KPiA+ID4gPiArCWlmICh4MSA8IHNyY194MSB8fCB5MSA8IHNyY195MSB8fCB4MiA+IHNy Y194MiB8fCB5MiA+IHNyY195Mikgew0KPiA+ID4gPiArCQlwcl9lcnIoIkRhbWFnZSBjYW5ub3Qg YmUgb3V0c2lkZSByb3VuZGVkIHBsYW5lIHNyYy5cbiIpOw0KPiA+ID4gPiArCQlyZXR1cm4gZmFs c2U7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJaWYgKHItPngxICE9IHgxIHx8 IHItPnkxICE9IHkxIHx8IHItPngyICE9IHgyIHx8IHItPnkyICE9IHkyKSB7DQo+ID4gPiA+ICsJ CXByX2VycigiRGFtYWdlID0gJWQgJWQgJWQgJWRcbiIsIHItPngxLCByLT55MSwgci0+eDIsIHIt PnkyKTsNCj4gPiA+ID4gKwkJcmV0dXJuIGZhbHNlOw0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0K PiA+ID4gPiArCXJldHVybiB0cnVlOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtz dGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Uodm9pZCAqaWdub3JlZCkNCj4gPiA+ ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRl cjsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsNCj4gPiA+ID4g KwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsNCj4gPiA+ID4gKwl1aW50MzJfdCBudW1faGl0cyA9IDA7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gew0KPiA+ ID4gPiArCQkud2lkdGggPSAyMDQ4LA0KPiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OA0KPiA+ID4g PiArCX07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRl ID0gew0KPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsDQo+ID4gPiA+ICsJCS5mYiA9 ICZmYiwNCj4gPiA+ID4gKwkJLnZpc2libGUgPSB0cnVlLA0KPiA+ID4gPiArCX07DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKwkvKiBQbGFuZSBzcmMgc2FtZSBhcyBmYiBzaXplLiAqLw0KPiA+ID4gPiAr CXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgZmIud2lkdGggPDwgMTYsIGZiLmhlaWdo dCA8PCAxNik7DQo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIGZiLndpZHRo IDw8IDE2LCBmYi5oZWlnaHQgPDwgMTYpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2Rh bWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7DQo+ID4gPiA+ICsJZHJt X2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQ0KPiA+ID4gPiArCQlu dW1faGl0cysrOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJRkFJTChudW1faGl0cyAhPSAxLCAiU2hv dWxkIHJldHVybiBwbGFuZSBzcmMgYXMgZGFtYWdlLiIpOw0KPiA+ID4gPiArCUZBSUxfT04oIWNo ZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDAsIDAsIDIwNDgsIDIwNDgpKTsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2VfZnJhY3Rpb25hbF9zcmModm9p ZCAqaWdub3JlZCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxw ZXJfZGFtYWdlX2l0ZXIgaXRlcjsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9s ZF9zdGF0ZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsNCj4gPiA+ID4gKwl1aW50 MzJfdCBudW1faGl0cyA9IDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyIGZiID0gew0KPiA+ID4gPiArCQkud2lkdGggPSAyMDQ4LA0KPiA+ID4gPiArCQkuaGVp Z2h0ID0gMjA0OA0KPiA+ID4gPiArCX07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlIHN0YXRlID0gew0KPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIs DQo+ID4gPiA+ICsJCS5mYiA9ICZmYiwNCj4gPiA+ID4gKwkJLnZpc2libGUgPSB0cnVlLA0KPiA+ ID4gPiArCX07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkvKiBQbGFuZSBzcmMgaGFzIGZyYWN0aW9u YWwgcGFydC4gKi8NCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4M2ZmZmUs IDB4M2ZmZmUsDQo+ID4gPiA+ICsJCSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4M2Zm ZmUgKyAoNzY4IDw8IDE2KSk7DQo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4M2Zm ZmUsIDB4M2ZmZmUsDQo+ID4gPiA+ICsJCSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4 M2ZmZmUgKyAoNzY4IDw8IDE2KSk7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdl X2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsNCj4gPiA+ID4gKwlkcm1fYXRv bWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApDQo+ID4gPiA+ICsJCW51bV9o aXRzKys7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQg cmV0dXJuIHJvdW5kZWQgb2ZmIHBsYW5lIHNyYyBhcyBkYW1hZ2UuIik7DQo+ID4gPiA+ICsJRkFJ TF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMywgMywgMTAyOCwgNzcyKSk7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX3NyY19tb3ZlZCh2 b2lkICppZ25vcmVkKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hl bHBlcl9kYW1hZ2VfaXRlciBpdGVyOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg b2xkX3N0YXRlOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOw0KPiA+ID4gPiArCXVp bnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsDQo+ID4gPiA+ICsJCS5o ZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ID4gPiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BU UiwNCj4gPiA+ID4gKwkJLmZiID0gJmZiLA0KPiA+ID4gPiArCQkudmlzaWJsZSA9IHRydWUsDQo+ ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCS8qIFBsYW5lIHNyYyBtb3ZlZCBzaW5j ZSBvbGQgcGxhbmUgc3RhdGUuICovDQo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRl LCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOw0KPiA+ID4gPiArCXNldF9wbGFuZV9zcmMo JnN0YXRlLCAxMCA8PCAxNiwgMTAgPDwgMTYsDQo+ID4gPiA+ICsJCSAgICAgICgxMCArIDEwMjQp IDw8IDE2LCAoMTAgKyA3NjgpIDw8IDE2KTsNCj4gPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9k YW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUpOw0KPiA+ID4gPiArCWRy bV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkNCj4gPiA+ID4gKwkJ bnVtX2hpdHMrKzsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNo b3VsZCByZXR1cm4gcGxhbmUgc3JjIGFzIGRhbWFnZS4iKTsNCj4gPiA+ID4gKwlGQUlMX09OKCFj aGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAxMCwgMTAsIDEwMzQsIDc3OCkpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9mcmFjdGlvbmFsX3NyY19t b3ZlZCh2b2lkDQo+ICppZ25vcmVkKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCBkcm1f YXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgb2xkX3N0YXRlOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOw0KPiA+ ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsDQo+ID4g PiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ID4gPiA+ICsJCS5jcnRjID0gWkVS T19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0gJmZiLA0KPiA+ID4gPiArCQkudmlzaWJsZSA9 IHRydWUsDQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCS8qIFBsYW5lIHNyYyBo YXMgZnJhY3Rpb25hbCBwYXJ0IGFuZCBpdCBtb3ZlZCBzaW5jZSBvbGQgcGxhbmUgc3RhdGUuICov DQo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAweDNmZmZlLCAweDNmZmZlLA0K PiA+ID4gPiArCQkgICAgICAweDNmZmZlICsgKDEwMjQgPDwgMTYpLCAweDNmZmZlICsgKDc2OCA8 PCAxNikpOw0KPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAweDQwMDAyLCAweDQwMDAy LA0KPiA+ID4gPiArCQkgICAgICAweDQwMDAyICsgKDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2 OCA8PCAxNikpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQo Jml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFj aF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQ0KPiA+ID4gPiArCQludW1faGl0cysrOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsJRkFJTChudW1faGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiBwbGFu ZSBzcmMgYXMgZGFtYWdlLiIpOw0KPiA+ID4gPiArCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlw KCZzdGF0ZSwgJmNsaXAsIDQsIDQsIDEwMjksIDc3MykpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJ cmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0 X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub3RfdmlzaWJsZSh2b2lkICppZ25vcmVkKQ0KPiA+ID4g PiArew0KPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVy Ow0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOw0KPiA+ID4gPiAr CXN0cnVjdCBkcm1fcmVjdCBjbGlwOw0KPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4g PiA+ICsJCS53aWR0aCA9IDIwNDgsDQo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUg PSB7DQo+ID4gPiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0g JmZiLA0KPiA+ID4gPiArCQkudmlzaWJsZSA9IGZhbHNlLA0KPiA+ID4gPiArCX07DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYs IDc2OCA8PCAxNik7DQo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQg PDwgMTYsIDc2OCA8PCAxNik7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0 ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsNCj4gPiA+ID4gKwlkcm1fYXRvbWlj X2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApDQo+ID4gPiA+ICsJCW51bV9oaXRz Kys7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDAsICJTaG91bGQgaGF2 ZSBubyBkYW1hZ2UuIik7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ID4g K30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFt YWdlX25vX2NydGModm9pZCAqaWdub3JlZCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsN Cj4gPiA+ID4gKwl1aW50MzJfdCBudW1faGl0cyA9IDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gew0KPiA+ID4gPiArCQkud2lkdGggPSAyMDQ4LA0K PiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OA0KPiA+ID4gPiArCX07DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gew0KPiA+ID4gPiArCQkuY3J0YyA9 IDAsDQo+ID4gPiA+ICsJCS5mYiA9ICZmYiwNCj4gPiA+ID4gKwl9Ow0KPiA+ID4gPiArDQo+ID4g PiA+ICsJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwg MTYpOw0KPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3 NjggPDwgMTYpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQo Jml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFj aF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQ0KPiA+ID4gPiArCQludW1faGl0cysrOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsJRkFJTChudW1faGl0cyAhPSAwLCAiU2hvdWxkIGhhdmUgbm8gZGFt YWdlLiIpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ID4g PiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19m Yih2b2lkICppZ25vcmVkKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWlj X2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgb2xkX3N0YXRlOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOw0KPiA+ID4gPiAr CXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ID4gPiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwN Cj4gPiA+ID4gKwkJLmZiID0gMCwNCj4gPiA+ID4gKwl9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsJ c2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOw0K PiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwg MTYpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIs ICZvbGRfc3RhdGUsICZzdGF0ZSk7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFjaF9wbGFu ZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQ0KPiA+ID4gPiArCQludW1faGl0cysrOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsJRkFJTChudW1faGl0cyAhPSAwLCAiU2hvdWxkIGhhdmUgbm8gZGFtYWdlLiIp Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3NpbXBsZV9kYW1hZ2Uodm9pZCAq aWdub3JlZCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXIgaXRlcjsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9z dGF0ZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7DQo+ ID4gPiA+ICsJc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlOw0KPiA+ID4gPiArCXN0cnVjdCBk cm1fcmVjdCBjbGlwOw0KPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ICsJCS53 aWR0aCA9IDIwNDgsDQo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJfTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ID4g PiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0gJmZiLA0KPiA+ ID4gPiArCQkudmlzaWJsZSA9IHRydWUsDQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2 KTsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4 IDw8IDE2KTsNCj4gPiA+ID4gKwkvKiBEYW1hZ2Ugc2V0IHRvIHBsYW5lIHNyYyAqLw0KPiA+ID4g PiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAwLCAwLCAxMDI0LCA3NjgpOw0KPiA+ID4gPiAr CXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihkYW1hZ2UpKTsN Cj4gPiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsNCj4gPiA+ ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRl LCAmc3RhdGUpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZp dGVyLCAmY2xpcCkNCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr CUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gZGFtYWdlIHdoZW4gc2V0LiIpOw0K PiA+ID4gPiArCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDAsIDAs IDEwMjQsIDc2OCkpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiA+ICt9 DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9k YW1hZ2Uodm9pZCAqaWdub3JlZCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0 b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlIG9sZF9zdGF0ZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFt YWdlX2Jsb2I7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlOw0KPiA+ID4g PiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOw0KPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0g MDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsDQo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4g PiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3Rh dGUgPSB7DQo+ID4gPiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZi ID0gJmZiLA0KPiA+ID4gPiArCQkudmlzaWJsZSA9IHRydWUsDQo+ID4gPiA+ICsJfTsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAx NiwgNzY4IDw8IDE2KTsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAy NCA8PCAxNiwgNzY4IDw8IDE2KTsNCj4gPiA+ID4gKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZSwg MjU2LCAxOTIsIDc2OCwgNTc2KTsNCj4gPiA+ID4gKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9i bG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7DQo+ID4gPiA+ICsJc2V0X3BsYW5lX2RhbWFn ZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFt YWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsNCj4gPiA+ID4gKwlkcm1f YXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApDQo+ID4gPiA+ICsJCW51 bV9oaXRzKys7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91 bGQgcmV0dXJuIGRhbWFnZSB3aGVuIHNldC4iKTsNCj4gPiA+ID4gKwlGQUlMX09OKCFjaGVja19k YW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAyNTYsIDE5MiwgNzY4LCA1NzYpKTsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtz dGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX2ludGVyc2VjdF9zcmModm9p ZCAqaWdub3JlZCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxw ZXJfZGFtYWdlX2l0ZXIgaXRlcjsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9s ZF9zdGF0ZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7 DQo+ID4gPiA+ICsJc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlOw0KPiA+ID4gPiArCXN0cnVj dCBkcm1fcmVjdCBjbGlwOw0KPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ICsJ CS53aWR0aCA9IDIwNDgsDQo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJfTsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ ID4gPiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0gJmZiLA0K PiA+ID4gPiArCQkudmlzaWJsZSA9IHRydWUsDQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8 IDE2KTsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwg NzY4IDw8IDE2KTsNCj4gPiA+ID4gKwkvKiBEYW1hZ2UgaW50ZXJzZWN0IHdpdGggcGxhbmUgc3Jj LiAqLw0KPiA+ID4gPiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAyNTYsIDE5MiwgMTM2MCwg NzY4KTsNCj4gPiA+ID4gKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBz aXplb2YoZGFtYWdlKSk7DQo+ID4gPiA+ICsJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1h Z2VfYmxvYik7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgm aXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsNCj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNo X3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApDQo+ID4gPiA+ICsJCW51bV9oaXRzKys7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIGRhbWFn ZSBjbGlwcGVkIHRvIHNyYy4iKTsNCj4gPiA+ID4gKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xp cCgmc3RhdGUsICZjbGlwLCAyNTYsIDE5MiwgMTAyNCwgNzY4KSk7DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKwlyZXR1cm4gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGlu dCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9vdXRzaWRlX3NyYyh2b2lkICppZ25vcmVk KQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2Vf aXRlciBpdGVyOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOw0K PiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsNCj4gPiA+ID4g KwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9yZWN0 IGNsaXA7DQo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAwOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsNCj4gPiA+ID4gKwkJLndpZHRoID0g MjA0OCwNCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIwNDgNCj4gPiA+ID4gKwl9Ow0KPiA+ID4gPiAr DQo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsNCj4gPiA+ID4gKwkJ LmNydGMgPSBaRVJPX1NJWkVfUFRSLA0KPiA+ID4gPiArCQkuZmIgPSAmZmIsDQo+ID4gPiA+ICsJ CS52aXNpYmxlID0gdHJ1ZSwNCj4gPiA+ID4gKwl9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsJc2V0 X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOw0KPiA+ ID4gPiArCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYp Ow0KPiA+ID4gPiArCS8qIERhbWFnZSBjbGlwIG91dHNpZGUgcGxhbmUgc3JjICovDQo+ID4gPiA+ ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDEzNjAsIDEzNjAsIDEzODAsIDEzODApOw0KPiA+ ID4gPiArCXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihkYW1h Z2UpKTsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsN Cj4gPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xk X3N0YXRlLCAmc3RhdGUpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFt YWdlKCZpdGVyLCAmY2xpcCkNCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArCUZBSUwobnVtX2hpdHMgIT0gMCwgIlNob3VsZCBoYXZlIG5vIGRhbWFnZS4iKTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4g PiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX2ZyYWN0aW9uYWxf c3JjKHZvaWQgKmlnbm9yZWQpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9hdG9t aWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9z dGF0ZSBvbGRfc3RhdGU7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFn ZV9ibG9iOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsNCj4gPiA+ID4g KwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsNCj4gPiA+ID4gKwl1aW50MzJfdCBudW1faGl0cyA9IDA7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gew0KPiA+ ID4gPiArCQkud2lkdGggPSAyMDQ4LA0KPiA+ID4gPiArCQkuaGVpZ2h0ID0gMjA0OA0KPiA+ID4g PiArCX07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRl ID0gew0KPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsDQo+ID4gPiA+ICsJCS5mYiA9 ICZmYiwNCj4gPiA+ID4gKwkJLnZpc2libGUgPSB0cnVlLA0KPiA+ID4gPiArCX07DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKwkvKiBQbGFuZSBzcmMgaGFzIGZyYWN0aW9uYWwgcGFydC4gKi8NCj4gPiA+ ID4gKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsDQo+ID4gPiA+ ICsJCSAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2KSk7 DQo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsDQo+ID4g PiA+ICsJCSAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2 KSk7DQo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDEwLCAxMCwgMjU2LCAzMzAp Ow0KPiA+ID4gPiArCXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVv ZihkYW1hZ2UpKTsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9i bG9iKTsNCj4gPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVy LCAmb2xkX3N0YXRlLCAmc3RhdGUpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hfcGxh bmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkNCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gZGFtYWdlIHdo ZW4gc2V0LiIpOw0KPiA+ID4gPiArCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwg JmNsaXAsIDEwLCAxMCwgMjU2LCAzMzApKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiAw Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2Vf aXRlcl9zaW5nbGVfZGFtYWdlX2ludGVyc2VjdF9mcmFjdGlvbmFsX3NyYyh2b2lkDQo+ID4gPiAq aWdub3JlZCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXIgaXRlcjsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9z dGF0ZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7DQo+ ID4gPiA+ICsJc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlOw0KPiA+ID4gPiArCXN0cnVjdCBk cm1fcmVjdCBjbGlwOw0KPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ICsJCS53 aWR0aCA9IDIwNDgsDQo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJfTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ID4g PiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0gJmZiLA0KPiA+ ID4gPiArCQkudmlzaWJsZSA9IHRydWUsDQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArCS8qIFBsYW5lIHNyYyBoYXMgZnJhY3Rpb25hbCBwYXJ0LiAqLw0KPiA+ID4gPiArCXNldF9w bGFuZV9zcmMoJm9sZF9zdGF0ZSwgMHg0MDAwMiwgMHg0MDAwMiwNCj4gPiA+ID4gKwkJICAgICAg MHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsNCj4gPiA+ID4g KwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMHg0MDAwMiwgMHg0MDAwMiwNCj4gPiA+ID4gKwkJICAg ICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsNCj4gPiA+ ID4gKwkvKiBEYW1hZ2UgaW50ZXJzZWN0IHdpdGggcGxhbmUgc3JjLiAqLw0KPiA+ID4gPiArCXNl dF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAxMCwgMSwgMTM2MCwgMzMwKTsNCj4gPiA+ID4gKwlzZXRf ZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7DQo+ID4g PiA+ICsJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7DQo+ID4gPiA+ICsJ ZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0 YXRlKTsNCj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwg JmNsaXApDQo+ID4gPiA+ICsJCW51bV9oaXRzKys7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlGQUlM KG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIGRhbWFnZSBjbGlwcGVkIHRvIHJvdW5kZWQg b2ZmIHNyYy4iKTsNCj4gPiA+ID4gKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUs ICZjbGlwLCAxMCwgNCwgMTAyOSwgMzMwKSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlyZXR1cm4g MDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGludCBpZ3RfZGFtYWdl X2l0ZXJfc2luZ2xlX2RhbWFnZV9vdXRzaWRlX2ZyYWN0aW9uYWxfc3JjKHZvaWQNCj4gPiA+ICpp Z25vcmVkKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9k YW1hZ2VfaXRlciBpdGVyOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0 YXRlOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsNCj4g PiA+ID4gKwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7DQo+ID4gPiA+ICsJc3RydWN0IGRy bV9yZWN0IGNsaXA7DQo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAwOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsNCj4gPiA+ID4gKwkJLndp ZHRoID0gMjA0OCwNCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIwNDgNCj4gPiA+ID4gKwl9Ow0KPiA+ ID4gPiArDQo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsNCj4gPiA+ ID4gKwkJLmNydGMgPSBaRVJPX1NJWkVfUFRSLA0KPiA+ID4gPiArCQkuZmIgPSAmZmIsDQo+ID4g PiA+ICsJCS52aXNpYmxlID0gdHJ1ZSwNCj4gPiA+ID4gKwl9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ ICsJLyogUGxhbmUgc3JjIGhhcyBmcmFjdGlvbmFsIHBhcnQuICovDQo+ID4gPiA+ICsJc2V0X3Bs YW5lX3NyYygmb2xkX3N0YXRlLCAweDQwMDAyLCAweDQwMDAyLA0KPiA+ID4gPiArCQkgICAgICAw eDQwMDAyICsgKDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2OCA8PCAxNikpOw0KPiA+ID4gPiAr CXNldF9wbGFuZV9zcmMoJnN0YXRlLCAweDQwMDAyLCAweDQwMDAyLA0KPiA+ID4gPiArCQkgICAg ICAweDQwMDAyICsgKDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2OCA8PCAxNikpOw0KPiA+ID4g PiArCS8qIERhbWFnZSBjbGlwIG91dHNpZGUgcGxhbmUgc3JjICovDQo+ID4gPiA+ICsJc2V0X2Rh bWFnZV9jbGlwKCZkYW1hZ2UsIDEzNjAsIDEzNjAsIDEzODAsIDEzODApOw0KPiA+ID4gPiArCXNl dF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihkYW1hZ2UpKTsNCj4g PiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsNCj4gPiA+ID4g Kwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAm c3RhdGUpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVy LCAmY2xpcCkNCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCUZB SUwobnVtX2hpdHMgIT0gMCwgIlNob3VsZCBoYXZlIG5vIGRhbWFnZS4iKTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0 aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX3NyY19tb3ZlZCh2b2lkICppZ25v cmVkKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1h Z2VfaXRlciBpdGVyOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRl Ow0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsNCj4gPiA+ ID4gKwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9y ZWN0IGNsaXA7DQo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAwOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsNCj4gPiA+ID4gKwkJLndpZHRo ID0gMjA0OCwNCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIwNDgNCj4gPiA+ID4gKwl9Ow0KPiA+ID4g PiArDQo+ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsNCj4gPiA+ID4g KwkJLmNydGMgPSBaRVJPX1NJWkVfUFRSLA0KPiA+ID4gPiArCQkuZmIgPSAmZmIsDQo+ID4gPiA+ ICsJCS52aXNpYmxlID0gdHJ1ZSwNCj4gPiA+ID4gKwl9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsJ LyogUGxhbmUgc3JjIG1vdmVkIHNpbmNlIG9sZCBwbGFuZSBzdGF0ZS4gKi8NCj4gPiA+ID4gKwlz ZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7DQo+ ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDEwIDw8IDE2LCAxMCA8PCAxNiwNCj4gPiA+ ID4gKwkJICAgICAgKDEwICsgMTAyNCkgPDwgMTYsICgxMCArIDc2OCkgPDwgMTYpOw0KPiA+ID4g PiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAyMCwgMzAsIDI1NiwgMjU2KTsNCj4gPiA+ID4g KwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7 DQo+ID4gPiA+ICsJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7DQo+ID4g PiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0 ZSwgJnN0YXRlKTsNCj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgm aXRlciwgJmNsaXApDQo+ID4gPiA+ICsJCW51bV9oaXRzKys7DQo+ID4gPiA+ICsNCj4gPiA+ID4g KwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIHBsYW5lIHNyYyBhcyBkYW1hZ2Uu Iik7DQo+ID4gPiA+ICsJRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwg MTAsIDEwLCAxMDM0LCA3NzgpKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9z aW5nbGVfZGFtYWdlX2ZyYWN0aW9uYWxfc3JjX21vdmVkKHZvaWQNCj4gPiA+ICppZ25vcmVkKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRl ciBpdGVyOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOw0KPiA+ ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsNCj4gPiA+ID4gKwlz dHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9yZWN0IGNs aXA7DQo+ID4gPiA+ICsJdWludDMyX3QgbnVtX2hpdHMgPSAwOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsNCj4gPiA+ID4gKwkJLndpZHRoID0gMjA0 OCwNCj4gPiA+ID4gKwkJLmhlaWdodCA9IDIwNDgNCj4gPiA+ID4gKwl9Ow0KPiA+ID4gPiArDQo+ ID4gPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsNCj4gPiA+ID4gKwkJLmNy dGMgPSBaRVJPX1NJWkVfUFRSLA0KPiA+ID4gPiArCQkuZmIgPSAmZmIsDQo+ID4gPiA+ICsJCS52 aXNpYmxlID0gdHJ1ZSwNCj4gPiA+ID4gKwl9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsJLyogUGxh bmUgc3JjIHdpdGggZnJhY3Rpb25hbCBwYXJ0IG1vdmVkIHNpbmNlIG9sZCBwbGFuZSBzdGF0ZS4g Ki8NCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4M2ZmZmUsIDB4M2ZmZmUs DQo+ID4gPiA+ICsJCSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAoNzY4 IDw8IDE2KSk7DQo+ID4gPiA+ICsJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4NDAwMDIsIDB4NDAw MDIsDQo+ID4gPiA+ICsJCSAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAo NzY4IDw8IDE2KSk7DQo+ID4gPiA+ICsJLyogRGFtYWdlIGludGVyc2VjdCB3aXRoIHBsYW5lIHNy Yy4gKi8NCj4gPiA+ID4gKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZSwgMjAsIDMwLCAxMzYwLCAy NTYpOw0KPiA+ID4gPiArCXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNp emVvZihkYW1hZ2UpKTsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFn ZV9ibG9iKTsNCj4gPiA+ID4gKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZp dGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUpOw0KPiA+ID4gPiArCWRybV9hdG9taWNfZm9yX2VhY2hf cGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkNCj4gPiA+ID4gKwkJbnVtX2hpdHMrKzsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gcm91bmRl ZCBvZmYgcGxhbmUgc3JjIGFzIGRhbWFnZS4iKTsNCj4gPiA+ID4gKwlGQUlMX09OKCFjaGVja19k YW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCA0LCA0LCAxMDI5LCA3NzMpKTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0 aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Uodm9pZCAqaWdub3JlZCkNCj4gPiA+ID4gK3sN Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsNCj4g PiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsNCj4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9t b2RlX3JlY3QgZGFtYWdlWzJdOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOw0KPiA+ ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsDQo+ID4g PiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ID4gPiA+ICsJCS5jcnRjID0gWkVS T19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0gJmZiLA0KPiA+ID4gPiArCQkudmlzaWJsZSA9 IHRydWUsDQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXNldF9wbGFuZV9zcmMo Jm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsNCj4gPiA+ID4gKwlzZXRf cGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsNCj4gPiA+ID4g KwkvKiAyIGRhbWFnZSBjbGlwcy4gKi8NCj4gPiA+ID4gKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFn ZVswXSwgMjAsIDMwLCAyMDAsIDE4MCk7DQo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1h Z2VbMV0sIDI0MCwgMjAwLCAyODAsIDI1MCk7DQo+ID4gPiA+ICsJc2V0X2RhbWFnZV9ibG9iKCZk YW1hZ2VfYmxvYiwgJmRhbWFnZVswXSwgc2l6ZW9mKGRhbWFnZSkpOw0KPiA+ID4gPiArCXNldF9w bGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOw0KPiA+ID4gPiArCWRybV9hdG9taWNf aGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7DQo+ID4g PiA+ICsJZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKSB7DQo+ ID4gPiA+ICsJCWlmIChudW1faGl0cyA9PSAwKQ0KPiA+ID4gPiArCQkJRkFJTF9PTighY2hlY2tf ZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMjAsIDMwLA0KPiA+ID4gMjAwLCAxODApKTsNCj4g PiA+ID4gKwkJaWYgKG51bV9oaXRzID09IDEpDQo+ID4gPiA+ICsJCQlGQUlMX09OKCFjaGVja19k YW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAyNDAsIDIwMCwNCj4gPiA+IDI4MCwgMjUwKSk7DQo+ ID4gPiA+ICsJCW51bV9oaXRzKys7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJ RkFJTChudW1faGl0cyAhPSAyLCAiU2hvdWxkIHJldHVybiBkYW1hZ2Ugd2hlbiBzZXQuIik7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ ID4gPiArc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9pbnRlcnNlY3Qodm9p ZCAqaWdub3JlZCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxw ZXJfZGFtYWdlX2l0ZXIgaXRlcjsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9s ZF9zdGF0ZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7 DQo+ID4gPiA+ICsJc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlWzJdOw0KPiA+ID4gPiArCXN0 cnVjdCBkcm1fcmVjdCBjbGlwOw0KPiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4g PiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ ICsJCS53aWR0aCA9IDIwNDgsDQo+ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJ fTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7 DQo+ID4gPiA+ICsJCS5jcnRjID0gWkVST19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0gJmZi LA0KPiA+ID4gPiArCQkudmlzaWJsZSA9IHRydWUsDQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0K PiA+ID4gPiArCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMHg0MDAwMiwgMHg0MDAwMiwNCj4g PiA+ID4gKwkJICAgICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwg MTYpKTsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMHg0MDAwMiwgMHg0MDAwMiwN Cj4gPiA+ID4gKwkJICAgICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3Njgg PDwgMTYpKTsNCj4gPiA+ID4gKwkvKiAyIGRhbWFnZSBjbGlwcywgb25lIGludGVyc2VjdCBwbGFu ZSBzcmMuICovDQo+ID4gPiA+ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2VbMF0sIDIwLCAzMCwg MjAwLCAxODApOw0KPiA+ID4gPiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlWzFdLCAyLCAyLCAx MzYwLCAxMzYwKTsNCj4gPiA+ID4gKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFt YWdlWzBdLCBzaXplb2YoZGFtYWdlKSk7DQo+ID4gPiA+ICsJc2V0X3BsYW5lX2RhbWFnZSgmc3Rh dGUsICZkYW1hZ2VfYmxvYik7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0 ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsNCj4gPiA+ID4gKwlkcm1fYXRvbWlj X2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApIHsNCj4gPiA+ID4gKwkJaWYgKG51 bV9oaXRzID09IDApDQo+ID4gPiA+ICsJCQlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3Rh dGUsICZjbGlwLCAyMCwgMzAsDQo+ID4gPiAyMDAsIDE4MCkpOw0KPiA+ID4gPiArCQlpZiAobnVt X2hpdHMgPT0gMSkNCj4gPiA+ID4gKwkJCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0 ZSwgJmNsaXAsIDQsIDQsIDEwMjksDQo+ID4gPiA3NzMpKTsNCj4gPiA+ID4gKwkJbnVtX2hpdHMr KzsNCj4gPiA+ID4gKwl9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDIs ICJTaG91bGQgcmV0dXJuIGRhbWFnZSB3aGVuIHNldC4iKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr CXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IGln dF9kYW1hZ2VfaXRlcl9kYW1hZ2Vfb25lX291dHNpZGUodm9pZCAqaWdub3JlZCkNCj4gPiA+ID4g K3sNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsN Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsNCj4gPiA+ID4gKwlz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7DQo+ID4gPiA+ICsJc3RydWN0IGRy bV9tb2RlX3JlY3QgZGFtYWdlWzJdOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOw0K PiA+ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsDQo+ ID4gPiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ID4gPiA+ICsJCS5jcnRjID0g WkVST19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0gJmZiLA0KPiA+ID4gPiArCQkudmlzaWJs ZSA9IHRydWUsDQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXNldF9wbGFuZV9z cmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsNCj4gPiA+ID4gKwlz ZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsNCj4gPiA+ ID4gKwkvKiAyIGRhbWFnZSBjbGlwcywgb25lIG91dHNpZGUgcGxhbmUgc3JjLiAqLw0KPiA+ID4g PiArCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlWzBdLCAxMzYwLCAxMzYwLCAxMzgwLCAxMzgwKTsN Cj4gPiA+ID4gKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVsxXSwgMjQwLCAyMDAsIDI4MCwgMjUw KTsNCj4gPiA+ID4gKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlWzBdLCBz aXplb2YoZGFtYWdlKSk7DQo+ID4gPiA+ICsJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1h Z2VfYmxvYik7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgm aXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsNCj4gPiA+ID4gKwlkcm1fYXRvbWljX2Zvcl9lYWNo X3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApDQo+ID4gPiA+ICsJCW51bV9oaXRzKys7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIGRhbWFn ZSB3aGVuIHNldC4iKTsNCj4gPiA+ID4gKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3Rh dGUsICZjbGlwLCAyNDAsIDIwMCwgMjgwLCAyNTApKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJl dHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9k YW1hZ2VfaXRlcl9kYW1hZ2Vfc3JjX21vdmVkKHZvaWQgKmlnbm9yZWQpDQo+ID4gPiA+ICt7DQo+ ID4gPiA+ICsJc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7DQo+ID4g PiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7DQo+ID4gPiA+ICsJc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fbW9k ZV9yZWN0IGRhbWFnZVsyXTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsNCj4gPiA+ ID4gKwl1aW50MzJfdCBudW1faGl0cyA9IDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyIGZiID0gew0KPiA+ID4gPiArCQkud2lkdGggPSAyMDQ4LA0KPiA+ID4g PiArCQkuaGVpZ2h0ID0gMjA0OA0KPiA+ID4gPiArCX07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gew0KPiA+ID4gPiArCQkuY3J0YyA9IFpFUk9f U0laRV9QVFIsDQo+ID4gPiA+ICsJCS5mYiA9ICZmYiwNCj4gPiA+ID4gKwkJLnZpc2libGUgPSB0 cnVlLA0KPiA+ID4gPiArCX07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3JjKCZv bGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsDQo+ID4gPiA+ICsJCSAgICAgIDB4NDAwMDIgKyAo MTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2KSk7DQo+ID4gPiA+ICsJc2V0X3BsYW5l X3NyYygmc3RhdGUsIDB4M2ZmZmUsIDB4M2ZmZmUsDQo+ID4gPiA+ICsJCSAgICAgIDB4M2ZmZmUg KyAoMTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAoNzY4IDw8IDE2KSk7DQo+ID4gPiA+ICsJLyogMiBk YW1hZ2UgY2xpcHMsIG9uZSBvdXRzaWRlIHBsYW5lIHNyYy4gKi8NCj4gPiA+ID4gKwlzZXRfZGFt YWdlX2NsaXAoJmRhbWFnZVswXSwgMTM2MCwgMTM2MCwgMTM4MCwgMTM4MCk7DQo+ID4gPiA+ICsJ c2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2VbMV0sIDI0MCwgMjAwLCAyODAsIDI1MCk7DQo+ID4gPiA+ ICsJc2V0X2RhbWFnZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZVswXSwgc2l6ZW9mKGRhbWFn ZSkpOw0KPiA+ID4gPiArCXNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOw0K PiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRf c3RhdGUsICZzdGF0ZSk7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1h Z2UoJml0ZXIsICZjbGlwKQ0KPiA+ID4gPiArCQludW1faGl0cysrOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsJRkFJTChudW1faGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiByb3VuZCBvZmYgcGxhbmUg c3JjIGFzIGRhbWFnZS4iKTsNCj4gPiA+ID4gKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgm c3RhdGUsICZjbGlwLCAzLCAzLCAxMDI4LCA3NzIpKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJl dHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9k YW1hZ2VfaXRlcl9kYW1hZ2Vfbm90X3Zpc2libGUodm9pZCAqaWdub3JlZCkNCj4gPiA+ID4gK3sN Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsNCj4g PiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsNCj4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9t b2RlX3JlY3QgZGFtYWdlWzJdOw0KPiA+ID4gPiArCXN0cnVjdCBkcm1fcmVjdCBjbGlwOw0KPiA+ ID4gPiArCXVpbnQzMl90IG51bV9oaXRzID0gMDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7DQo+ID4gPiA+ICsJCS53aWR0aCA9IDIwNDgsDQo+ID4g PiA+ICsJCS5oZWlnaHQgPSAyMDQ4DQo+ID4gPiA+ICsJfTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr CXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7DQo+ID4gPiA+ICsJCS5jcnRjID0gWkVS T19TSVpFX1BUUiwNCj4gPiA+ID4gKwkJLmZiID0gJmZiLA0KPiA+ID4gPiArCQkudmlzaWJsZSA9 IGZhbHNlLA0KPiA+ID4gPiArCX07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlzZXRfcGxhbmVfc3Jj KCZvbGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsDQo+ID4gPiA+ICsJCSAgICAgIDB4NDAwMDIg KyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2KSk7DQo+ID4gPiA+ICsJc2V0X3Bs YW5lX3NyYygmc3RhdGUsIDB4M2ZmZmUsIDB4M2ZmZmUsDQo+ID4gPiA+ICsJCSAgICAgIDB4M2Zm ZmUgKyAoMTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAoNzY4IDw8IDE2KSk7DQo+ID4gPiA+ICsJLyog MiBkYW1hZ2UgY2xpcHMsIG9uZSBvdXRzaWRlIHBsYW5lIHNyYy4gKi8NCj4gPiA+ID4gKwlzZXRf ZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMTM2MCwgMTM2MCwgMTM4MCwgMTM4MCk7DQo+ID4gPiA+ ICsJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2VbMV0sIDI0MCwgMjAwLCAyODAsIDI1MCk7DQo+ID4g PiA+ICsJc2V0X2RhbWFnZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZVswXSwgc2l6ZW9mKGRh bWFnZSkpOw0KPiA+ID4gPiArCXNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2Ip Ow0KPiA+ID4gPiArCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZv bGRfc3RhdGUsICZzdGF0ZSk7DQo+ID4gPiA+ICsJZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9k YW1hZ2UoJml0ZXIsICZjbGlwKQ0KPiA+ID4gPiArCQludW1faGl0cysrOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsJRkFJTChudW1faGl0cyAhPSAwLCAiU2hvdWxkIG5vdCByZXR1cm4gYW55IGRhbWFn ZS4iKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICsjaW5jbHVkZSAiZHJtX3NlbGZ0ZXN0LmMiDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qKg0KPiA+ID4gPiArICogdGVzdF9kcm1fZGFtYWdlX2hlbHBlciAtIFJ1biBkcm0gZGFt YWdlIGhlbHBlciBzZWxmdGVzdHMuDQo+ID4gPiA+ICsgKi8NCj4gPiA+ID4gK2ludCB0ZXN0X2Ry bV9kYW1hZ2VfaGVscGVyKHZvaWQpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJaW50IGVycjsNCj4g PiA+ID4gKw0KPiA+ID4gPiArCWVyciA9IHJ1bl9zZWxmdGVzdHMoc2VsZnRlc3RzLCBBUlJBWV9T SVpFKHNlbGZ0ZXN0cyksIE5VTEwpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0dXJuIGVyciA+ IDAgPyAwIDogZXJyOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5jDQo+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uYw0KPiA+ID4gPiBp bmRleCBmYWQ1MjA5MDQzZjEuLjQzYTlhYjUyMmE2NiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5jDQo+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24u Yw0KPiA+ID4gPiBAQCAtOSw3ICs5LDE1IEBADQo+ID4gPiA+DQo+ID4gPiA+ICBzdGF0aWMgaW50 IF9faW5pdCB0ZXN0X2RybV9tb2Rlc2V0X2luaXQodm9pZCkNCj4gPiA+ID4gIHsNCj4gPiA+ID4g LQlyZXR1cm4gdGVzdF9kcm1fcGxhbmVfaGVscGVyKCk7DQo+ID4gPiA+ICsJaW50IHJldCA9IDAs IGVycjsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWlmICgoZXJyID0gdGVzdF9kcm1fcGxhbmVfaGVs cGVyKCkpKQ0KPiA+ID4gPiArCQlyZXQgPSBlcnI7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlpZiAo KGVyciA9IHRlc3RfZHJtX2RhbWFnZV9oZWxwZXIoKSkpDQo+ID4gPiA+ICsJCXJldCA9IGVycjsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiByZXQ7DQo+ID4gPiA+ICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICBzdGF0aWMgdm9pZCBfX2V4aXQgdGVzdF9kcm1fbW9kZXNldF9leGl0KHZvaWQpDQo+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21v ZGVzZXRfY29tbW9uLmgNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRy bV9tb2Rlc2V0X2NvbW1vbi5oDQo+ID4gPiA+IGluZGV4IGJkZWJhMjY0NjYxZi4uNWZhOGZiMDdl MGU5IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3Qt ZHJtX21vZGVzZXRfY29tbW9uLmgNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0 ZXN0cy90ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5oDQo+ID4gPiA+IEBAIC0xNCw1ICsxNCw2IEBA DQo+ID4gPiA+ICAjZGVmaW5lIEZBSUxfT04oeCkgRkFJTCgoeCksICIlcyIsICJGQUlMX09OKCIg X19zdHJpbmdpZnkoeCkgIilcbiIpDQo+ID4gPiA+DQo+ID4gPiA+ICBpbnQgdGVzdF9kcm1fcGxh bmVfaGVscGVyKHZvaWQpOw0KPiA+ID4gPiAraW50IHRlc3RfZHJtX2RhbWFnZV9oZWxwZXIodm9p ZCk7DQo+ID4gPiA+DQo+ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4gLS0NCj4gPiA+ID4gMi4xNy4x DQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gLS0NCj4gPiA+IERhbmllbCBWZXR0ZXINCj4gPiA+IFNv ZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ID4NCj4gaHR0cHM6Ly9uYTAx LnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRmJsb2cu ZmZ3bGwuDQo+ID4gPg0KPiBjaCZhbXA7ZGF0YT0wMiU3QzAxJTdDZHJhd2F0JTQwdm13YXJlLmNv bSU3QzI2ZmZjNGI0ZWQwYjRkYTE3ZGENCj4gPiA+DQo+IDUwOGQ2MzNmYjczYTQlN0NiMzkxMzhj YTNjZWU0YjRhYTRkNmNkODNkOWRkNjJmMCU3QzElN0MwJTdDNjM2NzUNCj4gPiA+DQo+IDM1NTI0 MjA5NDI2MzImYW1wO3NkYXRhPXJxNjhjMmRPc3NTTnAyQjFnQzZ2ZXJEWW9JdG02bVNHUFM0b0l3 SnpKYQ0KPiA+ID4gYyUzRCZhbXA7cmVzZXJ2ZWQ9MA0KPiA+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdA0K PiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gPg0KPiBodHRwczovL25hMDEu c2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxpc3Rz LmZyZWVkDQo+IGVza3RvcC5vcmclMkZtYWlsbWFuJTJGbGlzdGluZm8lMkZkcmktDQo+IGRldmVs JmFtcDtkYXRhPTAyJTdDMDElN0NkcmF3YXQlNDB2bXdhcmUuY29tJTdDNWJmNWZhYjkwNDVkNDIy MTINCj4gNzkzMDhkNjM1YTQ0NzEwJTdDYjM5MTM4Y2EzY2VlNGI0YWE0ZDZjZDgzZDlkZDYyZjAl N0MxJTdDMCU3QzYzDQo+IDY3NTUzNzcwMzI3NzU1OTEmYW1wO3NkYXRhPXpvZzJBelJWS2RqOHlu blUlMkY5c2JNN0c0akpLMWc2V3pqVDA4DQo+IEJya1N3cGclM0QmYW1wO3Jlc2VydmVkPTANCj4g DQo+IC0tDQo+IENoZWVycywNCj4gQWxleCBHDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fDQo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBodHRwczovL25hMDEuc2FmZWxpbmtzLnByb3Rl Y3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxpc3RzLmZyZWVkDQo+IGVza3Rv cC5vcmclMkZtYWlsbWFuJTJGbGlzdGluZm8lMkZkcmktDQo+IGRldmVsJmFtcDtkYXRhPTAyJTdD MDElN0NkcmF3YXQlNDB2bXdhcmUuY29tJTdDNWJmNWZhYjkwNDVkNDIyMTINCj4gNzkzMDhkNjM1 YTQ0NzEwJTdDYjM5MTM4Y2EzY2VlNGI0YWE0ZDZjZDgzZDlkZDYyZjAlN0MxJTdDMCU3QzYzDQo+ IDY3NTUzNzcwMzI3NzU1OTEmYW1wO3NkYXRhPXpvZzJBelJWS2RqOHlublUlMkY5c2JNN0c0akpL MWc2V3pqVDA4DQo+IEJya1N3cGclM0QmYW1wO3Jlc2VydmVkPTANCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=