From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-eopbgr740074.outbound.protection.outlook.com [40.107.74.74]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2E3066E132 for ; Thu, 11 Jul 2019 17:34:13 +0000 (UTC) From: "Kazlauskas, Nicholas" Date: Thu, 11 Jul 2019 17:34:10 +0000 Message-ID: <53156a76-e632-660c-c0df-a9a8d7a3dab7@amd.com> References: <20190527171924.19493-1-nicholas.kazlauskas@amd.com> <933a82fd-730a-70f3-6d70-01053bf696a4@amd.com> <5a71efb3-98db-6fdf-d438-d1f748c56d13@amd.com> In-Reply-To: Content-Language: en-US Content-ID: <0F16691F97795C4B8334AAAAE6E0B32C@namprd12.prod.outlook.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/amdgpu: Add color tests for amdgpu List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Vetter Cc: "igt-dev@lists.freedesktop.org" List-ID: T24gNy8xMS8xOSAxOjMwIFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0KPiBPbiBUaHUsIEp1bCAx MSwgMjAxOSBhdCA3OjE5IFBNIEthemxhdXNrYXMsIE5pY2hvbGFzDQo+IDxOaWNob2xhcy5LYXps YXVza2FzQGFtZC5jb20+IHdyb3RlOg0KPj4NCj4+IE9uIDcvMTEvMTkgMToxNSBQTSwgRGFuaWVs IFZldHRlciB3cm90ZToNCj4+PiBPbiBXZWQsIE1heSAyOSwgMjAxOSBhdCA4OjQzIFBNIExpLCBT dW4gcGVuZyAoTGVvKSA8U3VucGVuZy5MaUBhbWQuY29tPiB3cm90ZToNCj4+Pj4NCj4+Pj4NCj4+ Pj4NCj4+Pj4gT24gMjAxOS0wNS0yNyAxOjE5IHAubS4sIE5pY2hvbGFzIEthemxhdXNrYXMgd3Jv dGU6DQo+Pj4+PiBUaGUgRFJNIGNvbG9yIG1hbmFnZW1lbnQgcGlwZWxpbmUgZG9lc24ndCBkaXJl Y3RseSBtYXAgdG8gQU1EIGhhcmR3YXJlDQo+Pj4+PiBzbyBjcmVhdGl2ZSBzb2x1dGlvbnMgdG8g aW1wbGVtZW50aW5nIENSVEMgcmVnYW1tYSwgQ1RNIGFuZCBnYW1tYSB3ZXJlDQo+Pj4+PiBuZWVk ZWQgZm9yIGJvdGggRENFIGFuZCBEQ04uIEEgZmV3IG1pc3Rha2VzIHdlcmUgbWFkZSBpbiB0aGUg cHJvY2Vzcw0KPj4+Pj4gdGhhdCB3ZXJlbid0IGNhdWdodCBieSBrbXNfY29sb3JAIHRlc3RzOg0K Pj4+Pj4NCj4+Pj4+IC0gQ2FuJ3QgZ2V0IGxpbmVhciBkZWdhbW1hIG91dHB1dCB3aXRob3V0IHNl dHRpbmcgYSBjdXN0b20gZGVnYW1tYQ0KPj4+Pj4gLSBDYW4ndCBzcGVjaWZ5IGEgbm9uLWxpbmVh ciBkZWdhbW1hIHRoYXQgcHJvZHVjZXMgY29ycmVjdCBvdXRwdXQNCj4+Pj4+IC0gQ2FuJ3Qgc3Bl Y2lmeSBhIGNvcnJlY3QgZ2FtbWEgd2hlbiBhIGxpbmVhciBkZWdhbW1hIGlzIHVzZWQNCj4+Pj4+ DQo+Pj4+PiBUaGVzZSBhcmUgY2F1c2VkIGJ5IHVzaW5nIGltcGxpY2l0IHNSR0IgZGVnYW1tYSB0 aGVuIHNSR0IgZ2FtbWEgd2hlbiBubw0KPj4+Pj4gbWF0cmljZXMgYXJlIHNldC4gVGhpcyBwcm9k dWNlcyB2aXN1YWxseSBjb3JyZWN0IG91dHB1dCB3aGVuIHVzaW5nIGENCj4+Pj4+IENUTSB3aXRo IG5vIG1hdHJpY2VzIHNldCwgYnV0IGl0J3MgYWxzbyB0ZWNobmljYWxseSB0aGUgaW5jb3JyZWN0 DQo+Pj4+PiBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBEUk0gQVBJIGRvY3VtZW50YXRpb24uDQo+ Pj4+Pg0KPj4+Pj4gVGhlc2UgdGVzdHMgaGVscCB2ZXJpZnkgdGhhdCBBTURHUFUgZm9sbG93cyB0 aGUgRFJNIHNwZWMgd2hlbiBpdCBjb21lcw0KPj4+Pj4gdG8gc2V0dGluZyBsaW5lYXIvYnlwYXNz IGdhbW1hIGFuZCByZWdhbW1hIExVVC4NCj4+Pj4+DQo+Pj4+PiBUaGUgZXhpc3Rpbmcga21zX2Nv bG9yQCB0ZXN0cyBhcmUgd3JpdHRlbiBjb3JyZWN0bHkgYWxyZWFkeSwgc28NCj4+Pj4+IGFueXRo aW5nIHRoYXQgbG9va3Mgc2hhcmVkIGluIHRoZXNlIGlzIHJlYWxseSBqdXN0IHRvIHZlcmlmeSB0 aGF0IHdlJ3JlDQo+Pj4+PiBubyBsb25nZXIgZG9pbmcgYW55IHN0cmFuZ2UgdGVzdCBzcGVjaWZp YyB3b3JrYXJvdW5kcyBvdXRzaWRlIG9mIHRoZQ0KPj4+Pj4gc3BlYyBvciBkb2N1bWVudGF0aW9u Lg0KPj4+Pj4NCj4+Pj4+IENjOiBMZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNvbT4NCj4+Pj4+IENj OiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4NCj4+Pj4+IFNpZ25lZC1v ZmYtYnk6IE5pY2hvbGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNAYW1kLmNvbT4N Cj4+Pj4NCj4+Pj4gTEdUTSwgdGhhbmtzIGZvciB0aGUgdGVzdCENCj4+Pj4NCj4+Pj4gUmV2aWV3 ZWQtYnk6IExlbyBMaSA8c3VucGVuZy5saUBhbWQuY29tPg0KPj4+DQo+Pj4gYnR3IHdoeSBpcyB0 aGlzIG5vdCBhIG5ldyBzdWJ0ZXN0IGZvciBrbXNfY29sb3I/IEZyb20gYSBxdWljayBsb29rDQo+ Pj4gaXQncyBhbGwgZ2VuZXJpYy4gVGhlIHNwZWNpZmljIHRlc3RzY2FzZSBmb3IgYW1kcGdwdSAo bGlrZQ0KPj4+IGFtZF9ieXBhc3MuYykgYWxsIG1ha2Ugc2Vuc2UsIHNpbmNlIHRoZXkgdXNlIHNw ZWNpZmljIGNyYyB0YXAgcG9pbnRzDQo+Pj4gYW5kIGNoZWNrIGh3IGltcGxlbWVudGF0aW9uIGRl dGFpbHMuIEJ1dCB0aGlzIGxvb2tzIGxpa2UgYSBnZW5lcmljDQo+Pj4gaXNzdWUgd2l0aCB0aGUg Y29sb3IgY29ycmVjdGlvbiBrbXMgc3BlYyAuLi4gQWxzbyBhZGRpbmcgSGFycnkuDQo+Pj4gLURh bmllbA0KPj4NCj4+IFRoZSB0ZXN0X2NydGNfbHV0X2FjY3VyYWN5IHRlc3QgaXMgc3BlY2lmaWMg dG8gb3VyIERDTiBoYXJkd2FyZSBpbiB0ZXJtcw0KPj4gb2Ygd2hhdCB3ZSBleHBlY3QgYW5kIHRo YXQgaXQgcmVxdWlyZXMgYSBpbmRlcGVuZGVudCBwZXIgY2hhbm5lbCBDUkMuDQo+Pg0KPj4gVGhl IG90aGVyIHR3byB0ZXN0cyBjb3VsZCBwcm9iYWJseSBiZSBhZGRlZCB0byBrbXNfY29sb3Igd2l0 aCB0aGUNCj4+IGV4cGVjdGF0aW9uIHRoYXQgYSBsaW5lYXIgTFVUIGlzIGdvaW5nIHRvIGJlIHRo ZSBzYW1lIGFzIG5vdCBzZXR0aW5nIGFueQ0KPj4gTFVUIGF0IGFsbCBvbiB0aGUgaGFyZHdhcmUu DQo+Pg0KPj4gSSBkb24ndCB0aGluayB0aGVyZSdzIGFueSBpc3N1ZSBoZXJlIHdpdGggdGhlIGtt cyBzcGVjLCBpdCdzIGNsZWFybHkNCj4+IGRlZmluZWQgLSB3ZSB3ZXJlIHByZXZpb3VzbHkgYnJl YWtpbmcgdGhlIHNwZWMgYnkgbm90IGFjdHVhbGx5IHVzaW5nDQo+PiBieXBhc3MgZm9yIGEgTlVM TCBMVVQuDQo+IA0KPiBJIG1lYW46IHlvdSBmb3VuZCBhIGdhcCBiZXR3ZWVuIHRoZSBzcGVjIGFu ZCB0aGUga21zX2NvbG9yIHRlc3QNCj4gY292ZXJhZ2UuIEkgdGhpbmsgaXQncyB3b3J0aCBmaXhp bmcgdGhpcywgc2luY2UgaWYgeW91IGhpdCB0aGlzIG9uZSwNCj4gdGhlbiBwcm9iYWJseSBzb21l b25lIGVsc2UgaGl0cyB0aGlzIHRvbyB3aXRoIHRoZWlyIGh3L2RyaXZlciBjb21iby4NCj4gQW5k IHRoZSBsb25nIHRlcm0gZ29hbCB3aXRoIGlndCBpcyB0aGF0IGF0IGxlYXN0IGZvciBrbXMsIGl0 IHdvdWxkIGJlDQo+IGEgY29uZm9ybWFuY2UgdGVzdCBzdWl0ZS4gV291bGQgYmUgZ3JlYXQgaWYg eW91IGNvdWxkIHBvcnQgdGhlc2UgdHdvDQo+IHRlc3RzIHRvIGttc19jb2xvciAodGhlIG9uZSB0 aGF0IG1ha2VzIHNwZWNpZmljIGFzc3VtcHRpb25zIGFib3V0IERDTg0KPiBodyBvYnZpb3VzbHkg Y2FuJ3QgYmUgcG9ydGVkKS4gQW5kIHllYWggdGhlIGFzc3VtcHRpb24sIGF0IGxlYXN0IGZvcg0K PiBSR0IgZm9ybWF0cyBpcyB0aGF0ICJubyBnYW1tIiA9PSAibGluZWFyIGdhbW1hIiwgYW5kIGhh dmluZyBhIHRlc3RjYXNlDQo+IGZvciB0aGlzIGV4cGxpY2l0bHkgc291bmRzIGxpa2UgYSBncmVh dCBpZGVhLg0KPiAtRGFuaWVsDQoNCkkgdGhpbmsgdGhhdCdzIGZhaXIgdGhlbi4gSSdsbCB0cnkg YW5kIG1ha2Ugc29tZSBwYXRjaGVzIHRvIHB1bGwgdGhlc2UgDQpvdXQgaW50byBrbXNfY29sb3Ig d2hlbiBJIGdldCBhIGNoYW5jZSB0aGVuLCB0aGFua3MhDQoNCk5pY2hvbGFzIEthemxhdXNrYXMN Cg0KPiANCj4+IE5pY2hvbGFzIEthemxhdXNrYXMNCj4+DQo+Pj4NCj4+Pj4NCj4+Pj4+IC0tLQ0K Pj4+Pj4gICAgIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICB8ICAgMSArDQo+Pj4+PiAgICAgdGVz dHMvYW1kZ3B1L2FtZF9jb2xvci5jIHwgNDA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKw0KPj4+Pj4gICAgIHRlc3RzL2FtZGdwdS9tZXNvbi5idWlsZCB8ICAgMSArDQo+ Pj4+PiAgICAgMyBmaWxlcyBjaGFuZ2VkLCA0MDcgaW5zZXJ0aW9ucygrKQ0KPj4+Pj4gICAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9hbWRncHUvYW1kX2NvbG9yLmMNCj4+Pj4+DQo+Pj4+PiBk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMNCj4+Pj4+IGluZGV4IDJkNWM5MjllLi5lZjNjMDNmMiAxMDA2NDQNCj4+Pj4+IC0tLSBhL3Rl c3RzL01ha2VmaWxlLnNvdXJjZXMNCj4+Pj4+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMN Cj4+Pj4+IEBAIC02LDYgKzYsNyBAQCBOT1VWRUFVX1RFU1RTID0gXA0KPj4+Pj4NCj4+Pj4+ICAg ICBBTURHUFVfVEVTVFMgPSBcDQo+Pj4+PiAgICAgICAgIGFtZGdwdS9hbWRfYmFzaWMgXA0KPj4+ Pj4gKyAgICAgYW1kZ3B1L2FtZF9jb2xvciBcDQo+Pj4+PiAgICAgICAgIGFtZGdwdS9hbWRfY3Nf bm9wIFwNCj4+Pj4+ICAgICAgICAgYW1kZ3B1L2FtZF9wcmltZSBcDQo+Pj4+PiAgICAgICAgIGFt ZGdwdS9hbWRfYWJtIFwNCj4+Pj4+IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvYW1kX2NvbG9y LmMgYi90ZXN0cy9hbWRncHUvYW1kX2NvbG9yLmMNCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+Pj4+PiBpbmRleCAwMDAwMDAwMC4uMGJiZWU0M2QNCj4+Pj4+IC0tLSAvZGV2L251bGwNCj4+ Pj4+ICsrKyBiL3Rlc3RzL2FtZGdwdS9hbWRfY29sb3IuYw0KPj4+Pj4gQEAgLTAsMCArMSw0MDUg QEANCj4+Pj4+ICsvKg0KPj4+Pj4gKyAqIENvcHlyaWdodCAyMDE5IEFkdmFuY2VkIE1pY3JvIERl dmljZXMsIEluYy4NCj4+Pj4+ICsgKg0KPj4+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhDQo+Pj4+PiAr ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwNCj4+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uDQo+Pj4+PiAr ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsDQo+Pj4+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlDQo+Pj4+PiArICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoNCj4+Pj4+ICsgKg0KPj4+Pj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQo+Pj4+PiAr ICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+ Pj4+PiArICoNCj4+Pj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KPj4+Pj4gKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLA0KPj4+Pj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTA0KPj4+Pj4gKyAqIFRIRSBDT1BZUklH SFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUg0KPj4+Pj4gKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPj4+Pj4gKyAqIEFSSVNJTkcgRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUg0KPj4+ Pj4gKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4+Pj4+ICsgKi8NCj4+Pj4+ ICsNCj4+Pj4+ICsjaW5jbHVkZSAiaWd0LmgiDQo+Pj4+PiArDQo+Pj4+PiArLyogKERlKWdhbW1h IExVVC4gKi8NCj4+Pj4+ICt0eXBlZGVmIHN0cnVjdCBsdXQgew0KPj4+Pj4gKyAgICAgc3RydWN0 IGRybV9jb2xvcl9sdXQgKmRhdGE7DQo+Pj4+PiArICAgICB1aW50MzJfdCBzaXplOw0KPj4+Pj4g K30gbHV0X3Q7DQo+Pj4+PiArDQo+Pj4+PiArLyogUkdCIGNvbG9yLiAqLw0KPj4+Pj4gK3R5cGVk ZWYgc3RydWN0IGNvbG9yIHsNCj4+Pj4+ICsgICAgIGRvdWJsZSByOw0KPj4+Pj4gKyAgICAgZG91 YmxlIGc7DQo+Pj4+PiArICAgICBkb3VibGUgYjsNCj4+Pj4+ICt9IGNvbG9yX3Q7DQo+Pj4+PiAr DQo+Pj4+PiArLyogQ29tbW9uIHRlc3QgZGF0YS4gKi8NCj4+Pj4+ICt0eXBlZGVmIHN0cnVjdCBk YXRhIHsNCj4+Pj4+ICsgICAgIGlndF9kaXNwbGF5X3QgZGlzcGxheTsNCj4+Pj4+ICsgICAgIGln dF9wbGFuZV90ICpwcmltYXJ5Ow0KPj4+Pj4gKyAgICAgaWd0X291dHB1dF90ICpvdXRwdXQ7DQo+ Pj4+PiArICAgICBpZ3RfcGlwZV90ICpwaXBlOw0KPj4+Pj4gKyAgICAgaWd0X3BpcGVfY3JjX3Qg KnBpcGVfY3JjOw0KPj4+Pj4gKyAgICAgZHJtTW9kZU1vZGVJbmZvICptb2RlOw0KPj4+Pj4gKyAg ICAgZW51bSBwaXBlIHBpcGVfaWQ7DQo+Pj4+PiArICAgICBpbnQgZmQ7DQo+Pj4+PiArICAgICBp bnQgdzsNCj4+Pj4+ICsgICAgIGludCBoOw0KPj4+Pj4gKyAgICAgdWludDMyX3QgcmVnYW1tYV9s dXRfc2l6ZTsNCj4+Pj4+ICsgICAgIHVpbnQzMl90IGRlZ2FtbWFfbHV0X3NpemU7DQo+Pj4+PiAr fSBkYXRhX3Q7DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIHZvaWQgbHV0X2luaXQobHV0X3QgKmx1 dCwgdWludDMyX3Qgc2l6ZSkNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBpZ3RfYXNzZXJ0KHNpemUg PiAwKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGx1dC0+c2l6ZSA9IHNpemU7DQo+Pj4+PiArICAg ICBsdXQtPmRhdGEgPSBtYWxsb2Moc2l6ZSAqIHNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCkp Ow0KPj4+Pj4gKyAgICAgaWd0X2Fzc2VydChsdXQpOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ ICsvKiBHZW5lcmF0ZXMgdGhlIGxpbmVhciBnYW1tYSBMVVQuICovDQo+Pj4+PiArc3RhdGljIHZv aWQgbHV0X2dlbl9saW5lYXIobHV0X3QgKmx1dCwgdWludDE2X3QgbWFzaykNCj4+Pj4+ICt7DQo+ Pj4+PiArICAgICB1aW50MzJfdCBuID0gbHV0LT5zaXplIC0gMTsNCj4+Pj4+ICsgICAgIHVpbnQz Ml90IGk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgbHV0LT5zaXplOyAr K2kpIHsNCj4+Pj4+ICsgICAgICAgICAgICAgdWludDMyX3QgdiA9IChpICogMHhmZmZmIC8gbikg JiBtYXNrOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgICAgICAgICBsdXQtPmRhdGFbaV0ucmVkID0g djsNCj4+Pj4+ICsgICAgICAgICAgICAgbHV0LT5kYXRhW2ldLmJsdWUgPSB2Ow0KPj4+Pj4gKyAg ICAgICAgICAgICBsdXQtPmRhdGFbaV0uZ3JlZW4gPSB2Ow0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4g K30NCj4+Pj4+ICsNCj4+Pj4+ICsvKiBHZW5lcmF0ZXMgdGhlIHNSR0IgZGVnYW1tYSBMVVQuICov DQo+Pj4+PiArc3RhdGljIHZvaWQgbHV0X2dlbl9kZWdhbW1hX3NyZ2IobHV0X3QgKmx1dCwgdWlu dDE2X3QgbWFzaykNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBkb3VibGUgcmFuZ2UgPSBsdXQtPnNp emUgLSAxOw0KPj4+Pj4gKyAgICAgdWludDMyX3QgaTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGZv ciAoaSA9IDA7IGkgPCBsdXQtPnNpemU7ICsraSkgew0KPj4+Pj4gKyAgICAgICAgICAgICBkb3Vi bGUgdSwgY29lZmY7DQo+Pj4+PiArICAgICAgICAgICAgIHVpbnQzMl90IHY7DQo+Pj4+PiArDQo+ Pj4+PiArICAgICAgICAgICAgIHUgPSBpIC8gcmFuZ2U7DQo+Pj4+PiArICAgICAgICAgICAgIGNv ZWZmID0gdSA8PSAwLjA0MDQ0OTkzNiA/ICh1IC8gMTIuOTIpDQo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IChwb3coKHUgKyAwLjA1NSkgLyAxLjA1NSwgMi40 KSk7DQo+Pj4+PiArICAgICAgICAgICAgIHYgPSAodWludDMyX3QpKGNvZWZmICogMHhmZmZmKSAm IG1hc2s7DQo+Pj4+PiArDQo+Pj4+PiArICAgICAgICAgICAgIGx1dC0+ZGF0YVtpXS5yZWQgPSB2 Ow0KPj4+Pj4gKyAgICAgICAgICAgICBsdXQtPmRhdGFbaV0uYmx1ZSA9IHY7DQo+Pj4+PiArICAg ICAgICAgICAgIGx1dC0+ZGF0YVtpXS5ncmVlbiA9IHY7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiAr fQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qIEdlbmVyYXRlcyB0aGUgc1JHQiBnYW1tYSBMVVQuICovDQo+ Pj4+PiArc3RhdGljIHZvaWQgbHV0X2dlbl9yZWdhbW1hX3NyZ2IobHV0X3QgKmx1dCwgdWludDE2 X3QgbWFzaykNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBkb3VibGUgcmFuZ2UgPSBsdXQtPnNpemUg LSAxOw0KPj4+Pj4gKyAgICAgdWludDMyX3QgaTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGZvciAo aSA9IDA7IGkgPCBsdXQtPnNpemU7ICsraSkgew0KPj4+Pj4gKyAgICAgICAgICAgICBkb3VibGUg dSwgY29lZmY7DQo+Pj4+PiArICAgICAgICAgICAgIHVpbnQzMl90IHY7DQo+Pj4+PiArDQo+Pj4+ PiArICAgICAgICAgICAgIHUgPSBpIC8gcmFuZ2U7DQo+Pj4+PiArICAgICAgICAgICAgIGNvZWZm ID0gdSA8PSAwLjAwMzEzMDgwID8gKDEyLjkyICogdSkNCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOiAoMS4wNTUgKiBwb3codSwgMS4wIC8gMi40KSAtIDAuMDU1 KTsNCj4+Pj4+ICsgICAgICAgICAgICAgdiA9ICh1aW50MzJfdCkoY29lZmYgKiAweGZmZmYpICYg bWFzazsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgICAgICAgICAgbHV0LT5kYXRhW2ldLnJlZCA9IHY7 DQo+Pj4+PiArICAgICAgICAgICAgIGx1dC0+ZGF0YVtpXS5ibHVlID0gdjsNCj4+Pj4+ICsgICAg ICAgICAgICAgbHV0LT5kYXRhW2ldLmdyZWVuID0gdjsNCj4+Pj4+ICsgICAgIH0NCj4+Pj4+ICt9 DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIHZvaWQgbHV0X2ZyZWUobHV0X3QgKmx1dCkNCj4+Pj4+ ICt7DQo+Pj4+PiArICAgICBpZiAobHV0LT5kYXRhKSB7DQo+Pj4+PiArICAgICAgICAgICAgIGZy ZWUobHV0LT5kYXRhKTsNCj4+Pj4+ICsgICAgICAgICAgICAgbHV0LT5kYXRhID0gTlVMTDsNCj4+ Pj4+ICsgICAgIH0NCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGx1dC0+c2l6ZSA9IDA7DQo+Pj4+PiAr fQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qIEZpbGxzIGEgRkIgd2l0aCB0aGUgc29saWQgY29sb3IgZ2l2 ZW4uICovDQo+Pj4+PiArc3RhdGljIHZvaWQgZHJhd19jb2xvcihpZ3RfZmJfdCAqZmIsIGRvdWJs ZSByLCBkb3VibGUgZywgZG91YmxlIGIpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgY2Fpcm9fdCAq Y3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChmYi0+ZmQsIGZiKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAg IGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsNCj4+Pj4+ICsg ICAgIGlndF9wYWludF9jb2xvcihjciwgMCwgMCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCByLCBn LCBiKTsNCj4+Pj4+ICsgICAgIGlndF9wdXRfY2Fpcm9fY3R4KGZiLT5mZCwgZmIsIGNyKTsNCj4+ Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArLyogR2VuZXJhdGVzIHRoZSBnYW1tYSB0ZXN0IHBhdHRl cm4uICovDQo+Pj4+PiArc3RhdGljIHZvaWQgZHJhd19nYW1tYV90ZXN0KGlndF9mYl90ICpmYikN Cj4+Pj4+ICt7DQo+Pj4+PiArICAgICBjYWlyb190ICpjciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZi LT5mZCwgZmIpOw0KPj4+Pj4gKyAgICAgaW50IGdoID0gZmItPmhlaWdodCAvIDQ7DQo+Pj4+PiAr DQo+Pj4+PiArICAgICBpZ3RfcGFpbnRfY29sb3JfZ3JhZGllbnQoY3IsIDAsIDAsIGZiLT53aWR0 aCwgZ2gsIDEsIDEsIDEpOw0KPj4+Pj4gKyAgICAgaWd0X3BhaW50X2NvbG9yX2dyYWRpZW50KGNy LCAwLCBnaCwgZmItPndpZHRoLCBnaCwgMSwgMCwgMCk7DQo+Pj4+PiArICAgICBpZ3RfcGFpbnRf Y29sb3JfZ3JhZGllbnQoY3IsIDAsIGdoICogMiwgZmItPndpZHRoLCBnaCwgMCwgMSwgMCk7DQo+ Pj4+PiArICAgICBpZ3RfcGFpbnRfY29sb3JfZ3JhZGllbnQoY3IsIDAsIGdoICogMywgZmItPndp ZHRoLCBnaCwgMCwgMCwgMSk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZ3RfcHV0X2NhaXJvX2N0 eChmYi0+ZmQsIGZiLCBjcik7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qIFNldHMgdGhl IGRlZ2FtbWEgTFVULiAqLw0KPj4+Pj4gK3N0YXRpYyB2b2lkIHNldF9kZWdhbW1hX2x1dChkYXRh X3QgKmRhdGEsIGx1dF90IGNvbnN0ICpsdXQpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgc2l6ZV90 IHNpemUgPSBsdXQgPyBzaXplb2YobHV0LT5kYXRhWzBdKSAqIGx1dC0+c2l6ZSA6IDA7DQo+Pj4+ PiArICAgICBjb25zdCB2b2lkICpwdHIgPSBsdXQgPyBsdXQtPmRhdGEgOiBOVUxMOw0KPj4+Pj4g Kw0KPj4+Pj4gKyAgICAgaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9ibG9iKGRhdGEtPnBpcGUs IElHVF9DUlRDX0RFR0FNTUFfTFVULCBwdHIsDQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZSk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qIFNldHMg dGhlIHJlZ2FtbWEgTFVULiAqLw0KPj4+Pj4gK3N0YXRpYyB2b2lkIHNldF9yZWdhbW1hX2x1dChk YXRhX3QgKmRhdGEsIGx1dF90IGNvbnN0ICpsdXQpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgc2l6 ZV90IHNpemUgPSBsdXQgPyBzaXplb2YobHV0LT5kYXRhWzBdKSAqIGx1dC0+c2l6ZSA6IDA7DQo+ Pj4+PiArICAgICBjb25zdCB2b2lkICpwdHIgPSBsdXQgPyBsdXQtPmRhdGEgOiBOVUxMOw0KPj4+ Pj4gKw0KPj4+Pj4gKyAgICAgaWd0X3BpcGVfb2JqX3JlcGxhY2VfcHJvcF9ibG9iKGRhdGEtPnBp cGUsIElHVF9DUlRDX0dBTU1BX0xVVCwgcHRyLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemUpOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICsvKiBDb21t b24gdGVzdCBzZXR1cC4gKi8NCj4+Pj4+ICtzdGF0aWMgdm9pZCB0ZXN0X2luaXQoZGF0YV90ICpk YXRhKQ0KPj4+Pj4gK3sNCj4+Pj4+ICsgICAgIGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0 YS0+ZGlzcGxheTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIC8qIEl0IGRvZXNuJ3QgbWF0dGVyIHdo aWNoIHBpcGUgd2UgY2hvb3NlIG9uIGFtZHBndS4gKi8NCj4+Pj4+ICsgICAgIGRhdGEtPnBpcGVf aWQgPSBQSVBFX0E7DQo+Pj4+PiArICAgICBkYXRhLT5waXBlID0gJmRhdGEtPmRpc3BsYXkucGlw ZXNbZGF0YS0+cGlwZV9pZF07DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZ3RfZGlzcGxheV9yZXNl dChkaXNwbGF5KTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGRhdGEtPm91dHB1dCA9IGlndF9nZXRf c2luZ2xlX291dHB1dF9mb3JfcGlwZShkaXNwbGF5LCBkYXRhLT5waXBlX2lkKTsNCj4+Pj4+ICsg ICAgIGlndF9yZXF1aXJlKGRhdGEtPm91dHB1dCk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBkYXRh LT5tb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShkYXRhLT5vdXRwdXQpOw0KPj4+Pj4gKyAgICAg aWd0X2Fzc2VydChkYXRhLT5tb2RlKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGRhdGEtPnByaW1h cnkgPQ0KPj4+Pj4gKyAgICAgICAgICAgICBpZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShkYXRhLT5w aXBlLCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGRhdGEt PnBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5mZCwgZGF0YS0+cGlwZV9pZCwNCj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFTF9QSVBFX0NS Q19TT1VSQ0VfQVVUTyk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZ3Rfb3V0cHV0X3NldF9waXBl KGRhdGEtPm91dHB1dCwgZGF0YS0+cGlwZV9pZCk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBkYXRh LT5kZWdhbW1hX2x1dF9zaXplID0NCj4+Pj4+ICsgICAgICAgICAgICAgaWd0X3BpcGVfb2JqX2dl dF9wcm9wKGRhdGEtPnBpcGUsIElHVF9DUlRDX0RFR0FNTUFfTFVUX1NJWkUpOw0KPj4+Pj4gKyAg ICAgaWd0X2Fzc2VydF9sdCgwLCBkYXRhLT5kZWdhbW1hX2x1dF9zaXplKTsNCj4+Pj4+ICsNCj4+ Pj4+ICsgICAgIGRhdGEtPnJlZ2FtbWFfbHV0X3NpemUgPQ0KPj4+Pj4gKyAgICAgICAgICAgICBp Z3RfcGlwZV9vYmpfZ2V0X3Byb3AoZGF0YS0+cGlwZSwgSUdUX0NSVENfR0FNTUFfTFVUX1NJWkUp Ow0KPj4+Pj4gKyAgICAgaWd0X2Fzc2VydF9sdCgwLCBkYXRhLT5yZWdhbW1hX2x1dF9zaXplKTsN Cj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGRhdGEtPncgPSBkYXRhLT5tb2RlLT5oZGlzcGxheTsNCj4+ Pj4+ICsgICAgIGRhdGEtPmggPSBkYXRhLT5tb2RlLT52ZGlzcGxheTsNCj4+Pj4+ICt9DQo+Pj4+ PiArDQo+Pj4+PiArLyogQ29tbW9uIHRlc3QgY2xlYW51cC4gKi8NCj4+Pj4+ICtzdGF0aWMgdm9p ZCB0ZXN0X2ZpbmkoZGF0YV90ICpkYXRhKQ0KPj4+Pj4gK3sNCj4+Pj4+ICsgICAgIGlndF9waXBl X2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsNCj4+Pj4+ICsgICAgIGlndF9kaXNwbGF5X3Jlc2V0 KCZkYXRhLT5kaXNwbGF5KTsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsg KiBPbGRlciB2ZXJzaW9ucyBvZiBhbWRncHUgd291bGQgcHV0IHRoZSBwaXBlIGludG8gYnlwYXNz IG1vZGUgZm9yIGRlZ2FtbWENCj4+Pj4+ICsgKiB3aGVuIHBhc3NlZCBhIGxpbmVhciBzUkdCIG1h dHJpeCBidXQgd291bGQgc3RpbGwgdXNlIGFuIHNSR0IgcmVnYW1tYQ0KPj4+Pj4gKyAqIG1hdHJp eCBpZiBub3QgcGFzc2VkIGFueS4gVGhlIHdob2xlIHBpcGUgc2hvdWxkIGJlIGluIGxpbmVhciBi eXBhc3MgbW9kZQ0KPj4+Pj4gKyAqIHdoZW4gYWxsIHRoZSBtYXRyaWNlcyBhcmUgTlVMTCAtIENS Q3MgZm9yIGEgbGluZWFyIGRlZ2FtbWEgbWF0cml4IGFuZA0KPj4+Pj4gKyAqIGEgTlVMTCBvbmUg c2hvdWxkIG1hdGNoLg0KPj4+Pj4gKyAqLw0KPj4+Pj4gK3N0YXRpYyB2b2lkIHRlc3RfY3J0Y19s aW5lYXJfZGVnYW1tYShkYXRhX3QgKmRhdGEpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Ow0KPj4+Pj4gKyAgICAgaWd0X2NyY190 IHJlZl9jcmMsIG5ld19jcmM7DQo+Pj4+PiArICAgICBpZ3RfZmJfdCBhZmI7DQo+Pj4+PiArICAg ICBsdXRfdCBsdXRfbGluZWFyOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgdGVzdF9pbml0KGRhdGEp Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgbHV0X2luaXQoJmx1dF9saW5lYXIsIGRhdGEtPmRlZ2Ft bWFfbHV0X3NpemUpOw0KPj4+Pj4gKyAgICAgbHV0X2dlbl9saW5lYXIoJmx1dF9saW5lYXIsIDB4 ZmZmZik7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmZkLCBkYXRh LT53LCBkYXRhLT5oLCBEUk1fRk9STUFUX1hSR0I4ODg4LCAwLCAmYWZiKTsNCj4+Pj4+ICsgICAg IGRyYXdfZ2FtbWFfdGVzdCgmYWZiKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIC8qIERyYXcgdGhl IHJlZmVyZW5jZSBpbWFnZS4gKi8NCj4+Pj4+ICsgICAgIGlndF9wbGFuZV9zZXRfZmIoZGF0YS0+ cHJpbWFyeSwgJmFmYik7DQo+Pj4+PiArICAgICBzZXRfcmVnYW1tYV9sdXQoZGF0YSwgTlVMTCk7 DQo+Pj4+PiArICAgICBzZXRfZGVnYW1tYV9sdXQoZGF0YSwgTlVMTCk7DQo+Pj4+PiArICAgICBp Z3RfZGlzcGxheV9jb21taXRfYXRvbWljKGRpc3BsYXksIERSTV9NT0RFX0FUT01JQ19BTExPV19N T0RFU0VULCBOVUxMKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGlndF9waXBlX2NyY19jb2xsZWN0 X2NyYyhkYXRhLT5waXBlX2NyYywgJnJlZl9jcmMpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgLyog QXBwbHkgYSBsaW5lYXIgZGVnYW1tYS4gVGhlIHJlc3VsdCBzaG91bGQgcmVtYWluIHRoZSBzYW1l LiAqLw0KPj4+Pj4gKyAgICAgc2V0X2RlZ2FtbWFfbHV0KGRhdGEsICZsdXRfbGluZWFyKTsNCj4+ Pj4+ICsgICAgIGlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgMCwgTlVMTCk7DQo+ Pj4+PiArDQo+Pj4+PiArICAgICBpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9j cmMsICZuZXdfY3JjKTsNCj4+Pj4+ICsgICAgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3Jj LCAmbmV3X2NyYyk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICB0ZXN0X2ZpbmkoZGF0YSk7DQo+Pj4+ PiArICAgICBpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmZkLCAmYWZiKTsNCj4+Pj4+ICsgICAgIGx1dF9m cmVlKCZsdXRfbGluZWFyKTsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsg KiBPbGRlciB2ZXJzaW9ucyBvZiBhbWRncHUgd291bGQgYXBwbHkgdGhlIENSVEMgcmVnYW1tYSBv biB0b3Agb2YgYSBjdXN0b20NCj4+Pj4+ICsgKiBzUkdCIHJlZ2FtbWEgbWF0cml4IHdpdGggaW5j b3JyZWN0IGNhbGN1bGF0aW9ucyBvciByb3VuZGluZyBlcnJvcnMuDQo+Pj4+PiArICogSWYgd2Ug cHV0IHRoZSBwaXBlIGludG8gYnlwYXNzIG9yIHVzZSB0aGUgaGFyZHdhcmUgZGVmaW5lZCBzUkdC IHJlZ2FtbWENCj4+Pj4+ICsgKiBvbiB0aGUgcGxhbmUgdGhlbiB3ZSBjYW4gYW5kIHNob3VsZCBn ZXQgdGhlIGNvcnJlY3QgQ1JUQyB3aGVuIHBhc3NpbmcgYQ0KPj4+Pj4gKyAqIGxpbmVyIHJlZ2Ft bWEgbWF0cml4IHRvIERSTS4NCj4+Pj4+ICsgKi8NCj4+Pj4+ICtzdGF0aWMgdm9pZCB0ZXN0X2Ny dGNfbGluZWFyX3JlZ2FtbWEoZGF0YV90ICpkYXRhKQ0KPj4+Pj4gK3sNCj4+Pj4+ICsgICAgIGln dF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsNCj4+Pj4+ICsgICAgIGlndF9j cmNfdCByZWZfY3JjLCBuZXdfY3JjOw0KPj4+Pj4gKyAgICAgaWd0X2ZiX3QgYWZiOw0KPj4+Pj4g KyAgICAgbHV0X3QgbHV0X2xpbmVhcjsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHRlc3RfaW5pdChk YXRhKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGx1dF9pbml0KCZsdXRfbGluZWFyLCBkYXRhLT5y ZWdhbW1hX2x1dF9zaXplKTsNCj4+Pj4+ICsgICAgIGx1dF9nZW5fbGluZWFyKCZsdXRfbGluZWFy LCAweGZmZmYpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgaWd0X2NyZWF0ZV9mYihkYXRhLT5mZCwg ZGF0YS0+dywgZGF0YS0+aCwgRFJNX0ZPUk1BVF9YUkdCODg4OCwgMCwgJmFmYik7DQo+Pj4+PiAr ICAgICBkcmF3X2dhbW1hX3Rlc3QoJmFmYik7DQo+Pj4+PiArDQo+Pj4+PiArICAgICAvKiBEcmF3 IHRoZSByZWZlcmVuY2UgaW1hZ2UuICovDQo+Pj4+PiArICAgICBpZ3RfcGxhbmVfc2V0X2ZiKGRh dGEtPnByaW1hcnksICZhZmIpOw0KPj4+Pj4gKyAgICAgc2V0X3JlZ2FtbWFfbHV0KGRhdGEsIE5V TEwpOw0KPj4+Pj4gKyAgICAgc2V0X2RlZ2FtbWFfbHV0KGRhdGEsIE5VTEwpOw0KPj4+Pj4gKyAg ICAgaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfQUxM T1dfTU9ERVNFVCwgTlVMTCk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZ3RfcGlwZV9jcmNfY29s bGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAg IC8qIEFwcGx5IGEgbGluZWFyIGRlZ2FtbWEuIFRoZSByZXN1bHQgc2hvdWxkIHJlbWFpbiB0aGUg c2FtZS4gKi8NCj4+Pj4+ICsgICAgIHNldF9yZWdhbW1hX2x1dChkYXRhLCAmbHV0X2xpbmVhcik7 DQo+Pj4+PiArICAgICBpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKGRpc3BsYXksIDAsIE5VTEwp Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBp cGVfY3JjLCAmbmV3X2NyYyk7DQo+Pj4+PiArICAgICBpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmcmVm X2NyYywgJm5ld19jcmMpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgdGVzdF9maW5pKGRhdGEpOw0K Pj4+Pj4gKyAgICAgaWd0X3JlbW92ZV9mYihkYXRhLT5mZCwgJmFmYik7DQo+Pj4+PiArICAgICBs dXRfZnJlZSgmbHV0X2xpbmVhcik7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qDQo+Pj4+ PiArICogVGVzdHMgTFVUIGFjY3VyYWN5LiBDUlRDIHJlZ2FtbWEgYW5kIENSVEMgZGVnYW1tYSBz aG91bGQgcHJvZHVjZSBhIHZpc3VhbGx5DQo+Pj4+PiArICogY29ycmVjdCBpbWFnZSB3aGVuIHVz ZWQuIEhhcmR3YXJlIGxpbWl0YXRpb25zIG9uIGRlZ2FtbWEgcHJldmVudCB0aGlzIGZyb20NCj4+ Pj4+ICsgKiBiZWluZyBDUkMgbGV2ZWwgYWNjdXJhdGUgYWNyb3NzIGEgZnVsbCB0ZXN0IGdyYWRp ZW50IGJ1dCBtb3N0IHZhbHVlcyBzaG91bGQNCj4+Pj4+ICsgKiBzdGlsbCBtYXRjaC4NCj4+Pj4+ ICsgKg0KPj4+Pj4gKyAqIFRoaXMgdGVzdCBjYW4ndCBwYXNzIG9uIERDRSBiZWNhdXNlIGl0IGRv ZXNuJ3Qgc3VwcG9ydCBub24tbGluZWFyIGRlZ2FtbWEuDQo+Pj4+PiArICovDQo+Pj4+PiArc3Rh dGljIHZvaWQgdGVzdF9jcnRjX2x1dF9hY2N1cmFjeShkYXRhX3QgKmRhdGEpDQo+Pj4+PiArew0K Pj4+Pj4gKyAgICAgLyoNCj4+Pj4+ICsgICAgICAqIENoYW5uZWxzIGFyZSBpbmRlcGVuZGVudCwg c28gd2UgY2FuIHZlcmlmeSBtdWx0aXBsZSBjb2xvcnMgYXQgdGhlDQo+Pj4+PiArICAgICAgKiBz YW1lIHRpbWUgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLg0KPj4+Pj4gKyAgICAgICovDQo+Pj4+ PiArICAgICBzdGF0aWMgY29uc3QgY29sb3JfdCBjb2xvcnNbXSA9IHsNCj4+Pj4+ICsgICAgICAg ICAgICAgeyAxLjAwLCAxLjAwLCAxLjAwIH0sDQo+Pj4+PiArICAgICAgICAgICAgIHsgMC45MCwg MC44NSwgMC43NSB9LCAvKiAwLjk1IGZhaWxzICovDQo+Pj4+PiArICAgICAgICAgICAgIHsgMC43 MCwgMC42NSwgMC42MCB9LA0KPj4+Pj4gKyAgICAgICAgICAgICB7IDAuNTUsIDAuNTAsIDAuNDUg fSwNCj4+Pj4+ICsgICAgICAgICAgICAgeyAwLjQwLCAwLjM1LCAwLjMwIH0sDQo+Pj4+PiArICAg ICAgICAgICAgIHsgMC4yNSwgMC4yMCwgMC4xNSB9LA0KPj4+Pj4gKyAgICAgICAgICAgICB7IDAu MTAsIDAuMDQsIDAuMDIgfSwgLyogMC4wNSBmYWlscyAqLw0KPj4+Pj4gKyAgICAgICAgICAgICB7 IDAuMDAsIDAuMDAsIDAuMDAgfSwNCj4+Pj4+ICsgICAgIH07DQo+Pj4+PiArICAgICBpZ3RfZGlz cGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7DQo+Pj4+PiArICAgICBpZ3RfY3JjX3Qg cmVmX2NyYywgbmV3X2NyYzsNCj4+Pj4+ICsgICAgIGlndF9mYl90IGFmYjsNCj4+Pj4+ICsgICAg IGx1dF90IGx1dF9kZWdhbW1hLCBsdXRfcmVnYW1tYTsNCj4+Pj4+ICsgICAgIGludCBpLCB3LCBo Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgdGVzdF9pbml0KGRhdGEpOw0KPj4+Pj4gKw0KPj4+Pj4g KyAgICAgbHV0X2luaXQoJmx1dF9kZWdhbW1hLCBkYXRhLT5kZWdhbW1hX2x1dF9zaXplKTsNCj4+ Pj4+ICsgICAgIGx1dF9nZW5fZGVnYW1tYV9zcmdiKCZsdXRfZGVnYW1tYSwgMHhmZmZmKTsNCj4+ Pj4+ICsNCj4+Pj4+ICsgICAgIGx1dF9pbml0KCZsdXRfcmVnYW1tYSwgZGF0YS0+cmVnYW1tYV9s dXRfc2l6ZSk7DQo+Pj4+PiArICAgICBsdXRfZ2VuX3JlZ2FtbWFfc3JnYigmbHV0X3JlZ2FtbWEs IDB4ZmZmZik7DQo+Pj4+PiArDQo+Pj4+PiArICAgICAvKiBEb24ndCBkcmF3IGFjcm9zcyB0aGUg d2hvbGUgc2NyZWVuIHRvIGltcHJvdmUgcGVyZi4gKi8NCj4+Pj4+ICsgICAgIHcgPSA2NDsNCj4+ Pj4+ICsgICAgIGggPSA2NDsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGlndF9jcmVhdGVfZmIoZGF0 YS0+ZmQsIHcsIGgsIERSTV9GT1JNQVRfWFJHQjg4ODgsIDAsICZhZmIpOw0KPj4+Pj4gKyAgICAg aWd0X3BsYW5lX3NldF9mYihkYXRhLT5wcmltYXJ5LCAmYWZiKTsNCj4+Pj4+ICsgICAgIGlndF9k aXNwbGF5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVT RVQsIE5VTEwpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgLyogVGVzdCBjb2xvcnMuICovDQo+Pj4+ PiArICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2xvcnMpOyArK2kpIHsNCj4+Pj4+ ICsgICAgICAgICAgICAgY29sb3JfdCBjb2wgPSBjb2xvcnNbaV07DQo+Pj4+PiArDQo+Pj4+PiAr ICAgICAgICAgICAgIGlndF9pbmZvKCJUZXN0aW5nIGNvbG9yICglLjJmLCAlLjJmLCAlLjJmKSAu Li5cbiIsIGNvbC5yLCBjb2wuZywNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgY29sLmIp Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgICAgICAgICBkcmF3X2NvbG9yKCZhZmIsIGNvbC5yLCBj b2wuZywgY29sLmIpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgICAgICAgICBzZXRfcmVnYW1tYV9s dXQoZGF0YSwgTlVMTCk7DQo+Pj4+PiArICAgICAgICAgICAgIHNldF9kZWdhbW1hX2x1dChkYXRh LCBOVUxMKTsNCj4+Pj4+ICsgICAgICAgICAgICAgaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhk aXNwbGF5LCAwLCBOVUxMKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgICAgICAgICAgaWd0X3BpcGVf Y3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmcmVmX2NyYyk7DQo+Pj4+PiArDQo+Pj4+ PiArICAgICAgICAgICAgIHNldF9kZWdhbW1hX2x1dChkYXRhLCAmbHV0X2RlZ2FtbWEpOw0KPj4+ Pj4gKyAgICAgICAgICAgICBzZXRfcmVnYW1tYV9sdXQoZGF0YSwgJmx1dF9yZWdhbW1hKTsNCj4+ Pj4+ICsgICAgICAgICAgICAgaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCAwLCBO VUxMKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgICAgICAgICAgaWd0X3BpcGVfY3JjX2NvbGxlY3Rf Y3JjKGRhdGEtPnBpcGVfY3JjLCAmbmV3X2NyYyk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICAgICAg ICAgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZWZfY3JjLCAmbmV3X2NyYyk7DQo+Pj4+PiArICAg ICB9DQo+Pj4+PiArDQo+Pj4+PiArICAgICB0ZXN0X2ZpbmkoZGF0YSk7DQo+Pj4+PiArICAgICBp Z3RfcmVtb3ZlX2ZiKGRhdGEtPmZkLCAmYWZiKTsNCj4+Pj4+ICsgICAgIGx1dF9mcmVlKCZsdXRf cmVnYW1tYSk7DQo+Pj4+PiArICAgICBsdXRfZnJlZSgmbHV0X2RlZ2FtbWEpOw0KPj4+Pj4gK30N Cj4+Pj4+ICsNCj4+Pj4+ICtpZ3RfbWFpbg0KPj4+Pj4gK3sNCj4+Pj4+ICsgICAgIGRhdGFfdCBk YXRhOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOw0KPj4+ Pj4gKw0KPj4+Pj4gKyAgICAgbWVtc2V0KCZkYXRhLCAwLCBzaXplb2YoZGF0YSkpOw0KPj4+Pj4g Kw0KPj4+Pj4gKyAgICAgaWd0X2ZpeHR1cmUNCj4+Pj4+ICsgICAgIHsNCj4+Pj4+ICsgICAgICAg ICAgICAgZGF0YS5mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FNREdQVSk7DQo+ Pj4+PiArDQo+Pj4+PiArICAgICAgICAgICAgIGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUo KTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgICAgICAgICAgaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZGF0 YS5kaXNwbGF5LCBkYXRhLmZkKTsNCj4+Pj4+ICsgICAgICAgICAgICAgaWd0X3JlcXVpcmUoZGF0 YS5kaXNwbGF5LmlzX2F0b21pYyk7DQo+Pj4+PiArICAgICAgICAgICAgIGlndF9kaXNwbGF5X3Jl cXVpcmVfb3V0cHV0KCZkYXRhLmRpc3BsYXkpOw0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4gKw0KPj4+ Pj4gKyAgICAgaWd0X3N1YnRlc3QoImNydGMtbGluZWFyLWRlZ2FtbWEiKSB0ZXN0X2NydGNfbGlu ZWFyX2RlZ2FtbWEoJmRhdGEpOw0KPj4+Pj4gKyAgICAgaWd0X3N1YnRlc3QoImNydGMtbGluZWFy LXJlZ2FtbWEiKSB0ZXN0X2NydGNfbGluZWFyX3JlZ2FtbWEoJmRhdGEpOw0KPj4+Pj4gKyAgICAg aWd0X3N1YnRlc3QoImNydGMtbHV0LWFjY3VyYWN5IikgdGVzdF9jcnRjX2x1dF9hY2N1cmFjeSgm ZGF0YSk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZ3RfZml4dHVyZQ0KPj4+Pj4gKyAgICAgew0K Pj4+Pj4gKyAgICAgICAgICAgICBpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOw0KPj4+ Pj4gKyAgICAgfQ0KPj4+Pj4gK30NCj4+Pj4+IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvbWVz b24uYnVpbGQgYi90ZXN0cy9hbWRncHUvbWVzb24uYnVpbGQNCj4+Pj4+IGluZGV4IDFhZmVjZTg2 Li40MjA4NjM3NCAxMDA2NDQNCj4+Pj4+IC0tLSBhL3Rlc3RzL2FtZGdwdS9tZXNvbi5idWlsZA0K Pj4+Pj4gKysrIGIvdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkDQo+Pj4+PiBAQCAtNCw2ICs0LDcg QEAgYW1kZ3B1X2RlcHMgPSB0ZXN0X2RlcHMNCj4+Pj4+ICAgICBpZiBsaWJkcm1fYW1kZ3B1LmZv dW5kKCkNCj4+Pj4+ICAgICAgICAgYW1kZ3B1X3Byb2dzICs9IFsgJ2FtZF9hYm0nLA0KPj4+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAnYW1kX2Jhc2ljJywNCj4+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICdhbWRfY29sb3InLA0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAnYW1kX2NzX25vcCcsDQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbWRfcHJp bWUnLA0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgXQ0KPj4+Pj4NCj4+Pj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+Pj4gaWd0LWRldiBt YWlsaW5nIGxpc3QNCj4+Pj4gaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+Pj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2DQo+Pj4N Cj4+Pg0KPj4+DQo+Pg0KPiANCj4gDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldg==