From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 94FE710E085 for ; Mon, 14 Nov 2022 09:00:27 +0000 (UTC) From: "Hogander, Jouni" To: "igt-dev@lists.freedesktop.org" , "B, Jeevan" Date: Mon, 14 Nov 2022 09:00:20 +0000 Message-ID: <9587b4d40abd9b6364bb4bea590494ac2150a114.camel@intel.com> References: <20221111162409.15242-1-jeevan.b@intel.com> In-Reply-To: <20221111162409.15242-1-jeevan.b@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <1D91D289B4C402439F863BE6EDBC3AB7@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/i915/kms_psr2_su: Cleanup List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: T24gRnJpLCAyMDIyLTExLTExIGF0IDIxOjU0ICswNTMwLCBKZWV2YW4gQiB3cm90ZToKPiBGcm9t OiBCaGFudXByYWthc2ggTW9kZW0gPGJoYW51cHJha2FzaC5tb2RlbUBpbnRlbC5jb20+Cj4gCj4g U2FuaXRpemUgdGhlIHN5c3RlbSBzdGF0ZSBiZWZvcmUgc3RhcnRpbmcgdGhlIHN1YnRlc3QuCgpJ IHRoaW5rIHRoaXMgcGF0Y2ggaXMgZG9pbmcgbXVjaCBtb3JlIHRoYW4gd2hhdCBpcyBpbiB5b3Vy IGNvbW1pdAptZXNzYWdlLiBQbGVhc2UgZXhwbGFpbiB3aGF0IHRoaXMgcGF0Y2ggaXMgYWN0dWFs bHkgZG9pbmcgaW4gY29tbWl0Cm1lc3NhZ2UuIEFsc28gaWYgeW91IGhhdmUgc29tZSBzcGVjaWZp YyByZWFzb24gZm9yIHRoYXQgeW91IGNvdWxkCm1lbnRpb24gdGhhdCB0b28uCj4gCj4gU2lnbmVk LW9mZi1ieTogSmVldmFuIELCoDxqZWV2YW4uYkBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog QmhhbnVwcmFrYXNoIE1vZGVtIDxiaGFudXByYWthc2gubW9kZW1AaW50ZWwuY29tPgo+IC0tLQo+ IMKgdGVzdHMvaTkxNS9rbXNfcHNyMl9zdS5jIHwgMTEyICsrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiAtLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyks IDY4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2ttc19wc3IyX3N1 LmMgYi90ZXN0cy9pOTE1L2ttc19wc3IyX3N1LmMKPiBpbmRleCA4NGRjMzBjMy4uNzg1ZGZmMzAg MTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9rbXNfcHNyMl9zdS5jCj4gKysrIGIvdGVzdHMvaTkx NS9rbXNfcHNyMl9zdS5jCj4gQEAgLTkyLDQxICs5MiwyMCBAQCB0eXBlZGVmIHN0cnVjdCB7Cj4g wqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IHNjcmVlbl9jaGFuZ2VzOwo+IMKgfSBkYXRhX3Q7Cj4g wqAKPiAtc3RhdGljIHZvaWQgc2V0dXBfb3V0cHV0KGRhdGFfdCAqZGF0YSkKPiAtewo+IC3CoMKg wqDCoMKgwqDCoGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiAtwqDC oMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiAtwqDCoMKgwqDCoMKgwqBlbnVtIHBp cGUgcGlwZTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291 dHB1dChkaXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZHJtTW9kZUNvbm5lY3RvclB0ciBjID0gb3V0cHV0LT5jb25maWcuY29ubmVjdG9yOwo+ IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGMtPmNvbm5lY3Rvcl90eXBl ICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS0+b3V0cHV0ID0gb3V0cHV0Owo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLT5tb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRw dXQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+IC3CoMKg wqDCoMKgwqDCoH0KPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgZGlzcGxheV9pbml0KGRhdGFfdCAq ZGF0YSkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEtPmRp c3BsYXksIGRhdGEtPmRybV9mZCk7Cj4gLcKgwqDCoMKgwqDCoMKgc2V0dXBfb3V0cHV0KGRhdGEp Owo+IC19Cj4gLQo+IMKgc3RhdGljIHZvaWQgZGlzcGxheV9maW5pKGRhdGFfdCAqZGF0YSkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS0+ZGlzcGxheSk7Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgcHJlcGFyZShkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRf dCAqb3V0cHV0KQo+ICtzdGF0aWMgdm9pZCBwcmVwYXJlKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBl IHBpcGUsIGlndF9vdXRwdXRfdAo+ICpvdXRwdXQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGln dF9wbGFuZV90ICpwcmltYXJ5Owo+ICvCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSAmZGF0YS0+ZGlzcGxheTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVz ZXQoZGlzcGxheSk7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQs IHBpcGUpOwo+IMKgCj4gK8KgwqDCoMKgwqDCoMKgZGF0YS0+bW9kZSA9IGlndF9vdXRwdXRfZ2V0 X21vZGUob3V0cHV0KTsKPiDCoMKgwqDCoMKgwqDCoMKgLyogYWxsIGdyZWVuIGZyYW1lICovCj4g wqDCoMKgwqDCoMKgwqDCoGlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLAo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhLT5t b2RlLT5oZGlzcGxheSwgZGF0YS0+bW9kZS0KPiA+dmRpc3BsYXksCj4gQEAgLTI0MywxMyArMjIy LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bihkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdAo+ICpvdXRw dXQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiTm8gbWF0Y2hp bmcgc2VsZWN0aXZlIHVwZGF0ZSBibG9ja3MgcmVhZCBmcm9tCj4gZGVidWdmc1xuIik7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIHZvaWQgY2xlYW51cChkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAq b3V0cHV0KQo+ICtzdGF0aWMgdm9pZCBjbGVhbnVwKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBp cGUsIGlndF9vdXRwdXRfdAo+ICpvdXRwdXQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9w bGFuZV90ICpwcmltYXJ5Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHByaW1hcnkgPSBpZ3Rfb3V0 cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X3BsYW5lX3Nl dF9mYihwcmltYXJ5LCBOVUxMKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3NldF9waXBl KG91dHB1dCwgcGlwZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X2NvbW1pdDIoJmRh dGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChk YXRhLT5vcCA9PSBQQUdFX0ZMSVApCj4gQEAgLTI2MiwxOCArMjQyLDE3IEBAIHN0YXRpYyB2b2lk IGNsZWFudXAoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QKPiAqb3V0cHV0KQo+IMKgCj4gwqBz dGF0aWMgaW50IGNoZWNrX3BzcjJfc3VwcG9ydChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBl KQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoGludCBzdGF0dXM7Cj4gK8KgwqDCoMKgwqDCoMKgYm9v bCBzdGF0dXMgPSBmYWxzZTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfdCAqb3V0 cHV0Owo+IC3CoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlz cGxheTsKPiArwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGRhdGEtPm91dHB1 dDsKPiArwqDCoMKgwqDCoMKgwqBkcm1Nb2RlQ29ubmVjdG9yUHRyIGMgPSBkYXRhLT5vdXRwdXQt PmNvbmZpZy5jb25uZWN0b3I7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9yZXNl dChkaXNwbGF5KTsKPiAtwqDCoMKgwqDCoMKgwqBvdXRwdXQgPSBkYXRhLT5vdXRwdXQ7Cj4gLcKg wqDCoMKgwqDCoMKgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ICvCoMKgwqDC oMKgwqDCoGlmIChjLT5jb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc3RhdHVzOwo+IMKgCj4gLcKg wqDCoMKgwqDCoMKgcHJlcGFyZShkYXRhLCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoHByZXBh cmUoZGF0YSwgcGlwZSwgb3V0cHV0KTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RhdHVzID0gcHNyX3dh aXRfZW50cnkoZGF0YS0+ZGVidWdmc19mZCwgUFNSX01PREVfMik7Cj4gLcKgwqDCoMKgwqDCoMKg Y2xlYW51cChkYXRhLCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoGNsZWFudXAoZGF0YSwgcGlw ZSwgb3V0cHV0KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc3RhdHVzOwo+IMKgfQo+ IEBAIC0yODIsMTAgKzI2MSw3IEBAIGlndF9tYWluCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGRh dGFfdCBkYXRhID0ge307Cj4gwqDCoMKgwqDCoMKgwqDCoGVudW0gcGlwZSBwaXBlOwo+IC3CoMKg wqDCoMKgwqDCoGludCByLCBpOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfdCAqb3V0cHV0 c1tJR1RfTUFYX1BJUEVTICogSUdUX01BWF9QSVBFU107Cj4gLcKgwqDCoMKgwqDCoMKgaW50IHBp cGVzW0lHVF9NQVhfUElQRVMgKiBJR1RfTUFYX1BJUEVTXTsKPiAtwqDCoMKgwqDCoMKgwqBpbnQg bl9waXBlcyA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IHI7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgaWd0X2ZpeHR1cmUgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGl0aW1lcnNwZWMgaW50ZXJ2YWw7Cj4gQEAgLTMwMSw3ICsyNzcsOCBAQCBpZ3RfbWFpbgo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmVfZihpbnRlbF9kaXNwbGF5 X3ZlcihpbnRlbF9nZXRfZHJtX2RldmlkKGQKPiBhdGEuZHJtX2ZkKSkgPCAxMywKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJSZWdp c3RlcnMgdXNlZCBieSB0aGlzIHRlc3QgZG8gbm90Cj4gd29yayBvbiBkaXNwbGF5IDEzXG4iKTsK PiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkaXNwbGF5X2luaXQoJmRhdGEp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9yZXF1aXJlKCZk YXRhLmRpc3BsYXksIGRhdGEuZHJtX2ZkKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFRlc3QgaWYgUFNSMiBjYW4gYmUgZW5hYmxl ZCAqLwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmVfZihwc3Jf ZW5hYmxlKGRhdGEuZHJtX2ZkLAo+IEBAIC0zMjAsNDMgKzI5Nyw0MiBAQCBpZ3RfbWFpbgo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50ZXJ2YWwuaXRfaW50ZXJ2YWwudHZfc2Vj ID0KPiBpbnRlcnZhbC5pdF92YWx1ZS50dl9zZWM7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByID0gdGltZXJmZF9zZXR0aW1lKGRhdGEuY2hhbmdlX3NjcmVlbl90aW1lcmZkLCAw LAo+ICZpbnRlcnZhbCwgTlVMTCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3RfcmVxdWlyZV9mKHIgIT0gLTEsICJFcnJvciBzZXR0aW5nIHRpbWVyZmRcbiIpOwo+IC0KPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291 dHB1dCgmZGF0YS5kaXNwbGF5LCBwaXBlLAo+IGRhdGEub3V0cHV0KSB7Cj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY2hlY2tfcHNyMl9zdXBwb3J0 KCZkYXRhLCBwaXBlKSkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBpcGVzW25fcGlwZXNdID0gcGlwZTsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBv dXRwdXRzW25fcGlwZXNdID0gZGF0YS5vdXRwdXQ7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbl9waXBlcysrOwo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqBmb3IgKGRhdGEub3AgPSBQQUdFX0ZMSVA7IGRhdGEub3AgPCBMQVNUOyBkYXRhLm9w KyspIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHVpbnQzMl90ICpm b3JtYXQgPSBmb3JtYXRzW2RhdGEub3BdOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZ3RfZml4dHVyZSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoZGF0YS5vcCA9PSBGUk9OVEJVRkZFUiAmJgo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gaW50ZWxfZGlzcGxheV92ZXIo aW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLmRybV9mZCkpID49IDEyKSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKiBGSVhNRTogRGlzcGxheSAxMisgcGxhdGZvcm1zIG5vdwo+IGhhdmUgUFNSMgo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIHNlbGVjdGl2ZSBmZXRjaCBlbmFibGVkIGJ5IGRlZmF1bHQKPiBidXQgd2UKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiBzdGlsbCBjYW4ndCBwcm9wZXJseSBoYW5kbGUKPiBmcm9udGJ1ZmZlcgo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IHJlbmRlcmluZywgc28gcmlnaHQgaXQgZG9lcyBmdWxsCj4gZnJhbWUKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBmZXRj aGVzIGF0IGV2ZXJ5IGZyb250YnVmZmVyCj4gcmVuZGVyaW5nLgo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFNvIGl0IGlz IGV4cGVjdGVkIHRoYXQgdGhpcyB0ZXN0Cj4gd2lsbCBmYWlsCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogaW4gZGlzcGxh eSAxMisgcGxhdGZvcm0gZm9yIG5vdy4KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfaW5mbygiUFNS MiBzZWxlY3RpdmUgZmV0Y2ggaXMKPiBkb2luZyBmdWxsIGZyYW1lIGZldGNoZXMgZm9yIGZyb250 YnVmZmVyIHJlbmRlcmluZ1xuIik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUg KCpmb3JtYXQgIT0gRFJNX0ZPUk1BVF9JTlZBTElEKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5mb3JtYXQgPSAqZm9ybWF0Kys7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rlc2NyaWJl KCJUZXN0IHRoYXQgc2VsZWN0aXZlIHVwZGF0ZQo+IHdvcmtzIHdoZW4gc2NyZWVuIGNoYW5nZXMi KTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rf c3VidGVzdF93aXRoX2R5bmFtaWNfZigiJXMtJXMiLAo+IG9wX3N0cihkYXRhLm9wKSwgaWd0X2Zv cm1hdF9zdHIoZGF0YS5mb3JtYXQpKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IG5fcGlwZXM7 IGkrKykgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZHluYW1pY19mKCJwaXBlLSVzLSVz IiwKPiBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlc1tpXSksCj4gLQo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9uYW1lCj4gKG91 dHB1dHNbaV0pKSB7Cj4gLQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3Rfb3V0cHV0X3NldF9waXBlKG91dAo+IHB1dHNbaV0sIHBpcGVzW2ldKTsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChkYXRhLm9wID09Cj4gRlJPTlRCVUZGRVIg JiYKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IGludGVs X2Rpc3BsYXlfdmVyKGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQpKSA+PSAxMikgewo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8q Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogRklYTUU6Cj4gRGlzcGxheSAxMisgcGxhdGZvcm1zIG5vdyBoYXZlIFBTUjIKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzZWxlY3Rp dmUKPiBmZXRjaCBlbmFibGVkIGJ5IGRlZmF1bHQgYnV0IHdlCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogc3RpbGwKPiBjYW4ndCBwcm9w ZXJseSBoYW5kbGUgZnJvbnRidWZmZXIKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiByZW5kZXJpbmcsCj4gc28gcmlnaHQgaXQgZG9lcyBm dWxsIGZyYW1lCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogZmV0Y2hlcyBhdAo+IGV2ZXJ5IGZyb250YnVmZmVyIHJlbmRlcmluZy4KPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBT byBpdCBpcwo+IGV4cGVjdGVkIHRoYXQgdGhpcyB0ZXN0IHdpbGwgZmFpbAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGluIGRpc3BsYXkK PiAxMisgcGxhdGZvcm0gZm9yIG5vdy4KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiAtCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfc2tpcCgiUFNSMgo+IHNlbGVjdGl2ZSBm ZXRjaCBpcyBkb2luZyBmdWxsIGZyYW1lIGZldGNoZXMgZm9yIGZyb250YnVmZmVyCj4gcmVuZGVy aW5nXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9waXBlKCZkYXRhLmRpc3BsYXksIHBpcGUpIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUKPiAoJmRh dGEuZGlzcGxheSwgcGlwZSwgZGF0YS5vdXRwdXQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmCj4gKCFjaGVja19wc3IyX3N1cHBvcnQoJmRhdGEsIHBpcGUpKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNv bnRpbnVlOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9k eW5hbWljX2YoInBpcGUtCj4gJXMtJXMiLCBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWd0X28KPiB1dHB1dF9uYW1lKGRhdGEub3V0cHV0KSkgewo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHByZXBhcmUoJmRhdGEK PiAsIHBpcGUsIGRhdGEub3V0cHV0KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW4oJmRhdGEsCj4gZGF0YS5vdXRwdXQpOwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsZWFudXAo JmRhdGEKPiAsIHBpcGUsIGRhdGEub3V0cHV0KTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBw cmVwYXJlKCZkYXRhLAo+IG91dHB1dHNbaV0pOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcnVuKCZkYXRhLAo+IG91dHB1dHNbaV0pOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xlYW51cCgmZGF0YSwKPiBvdXRwdXRzW2ldKTsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KCg==