From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id DB01C10E405 for ; Tue, 15 Nov 2022 14:32:24 +0000 (UTC) From: "Hogander, Jouni" To: "igt-dev@lists.freedesktop.org" , "Gupta, Nidhi1" Date: Tue, 15 Nov 2022 14:32:20 +0000 Message-ID: <1b847eb774d11a227fe93cbff46d2bc241c9b19f.camel@intel.com> References: <1668517250-4514-1-git-send-email-nidhi1.gupta@intel.com> <1668517250-4514-2-git-send-email-nidhi1.gupta@intel.com> In-Reply-To: <1668517250-4514-2-git-send-email-nidhi1.gupta@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <0DDA945E6A4F154AB2D7190C70863C2C@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH 1/3] tests/i915/i915_pm_backlight: Add new subtest to validate dual panel backlight List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: SGVsbG8sCgpTdGlsbCBjb3VwbGUgb2YgY29tbWVudCBpbmxpbmUgYmVsb3cuCgpPbiBUdWUsIDIw MjItMTEtMTUgYXQgMTg6MzAgKzA1MzAsIE5pZGhpIEd1cHRhIHdyb3RlOgo+IFNpbmNlIGRyaXZl ciBjYW4gbm93IHN1cHBvcnQgbXVsdGlwbGUgZURQcyBhbmQgRGVidWdmcyBzdHJ1Y3R1cmUgZm9y Cj4gYmFja2xpZ2h0IGNoYW5nZWQgcGVyIGNvbm5lY3RvciB0aGUgdGVzdCBzaG91bGQgdGhlbiBp dGVyYXRlIHRocm91Z2gKPiBhbGwgZURQIGNvbm5lY3RvcnMuCj4gCj4gU2lnbmVkLW9mZi1ieTog TmlkaGkgR3VwdGEgPG5pZGhpMS5ndXB0YUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQmhh bnVwcmFrYXNoIE1vZGVtIDxiaGFudXByYWthc2gubW9kZW1AaW50ZWwuY29tPgo+IC0tLQo+IMKg dGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jIHwgMjAyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0KPiAtLS0tLS0tLS0tCj4gwqAxIGZpbGUgY2hhbmdlZCwgMTQyIGluc2VydGlv bnMoKyksIDYwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2k5MTVf cG1fYmFja2xpZ2h0LmMKPiBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+IGluZGV4 IGNhZmFlN2YuLmE0ODJlMmEgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2ts aWdodC5jCj4gKysrIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jCj4gQEAgLTM0LDI5 ICszNCwzNCBAQAo+IMKgI2luY2x1ZGUgPGVycm5vLmg+Cj4gwqAjaW5jbHVkZSA8dW5pc3RkLmg+ Cj4gwqAjaW5jbHVkZSA8dGltZS5oPgo+ICsjaW5jbHVkZSAiaWd0X2RldmljZS5oIgo+ICsjaW5j bHVkZSAiaWd0X2RldmljZV9zY2FuLmgiCj4gwqAKPiDCoHN0cnVjdCBjb250ZXh0IHsKPiDCoMKg wqDCoMKgwqDCoMKgaW50IG1heDsKPiArwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1 dDsKPiArwqDCoMKgwqDCoMKgwqBjaGFyIHBhdGhbUEFUSF9NQVhdOwo+IMKgfTsKPiDCoAo+IC0K PiDCoCNkZWZpbmUgVE9MRVJBTkNFIDUgLyogcGVyY2VudCAqLwo+IC0jZGVmaW5lIEJBQ0tMSUdI VF9QQVRIICIvc3lzL2NsYXNzL2JhY2tsaWdodC9pbnRlbF9iYWNrbGlnaHQiCj4gKyNkZWZpbmUg QkFDS0xJR0hUX1BBVEggIi9zeXMvY2xhc3MvYmFja2xpZ2h0Igo+IMKgCj4gwqAjZGVmaW5lIEZB REVTVEVQUyAxMAo+IMKgI2RlZmluZSBGQURFU1BFRUQgMTAwIC8qIG1pbGxpc2Vjb25kcyBiZXR3 ZWVuIHN0ZXBzICovCj4gwqAKPiArI2RlZmluZSBOVU1fRURQX09VVFBVVFMgMgo+ICsKPiDCoElH VF9URVNUX0RFU0NSSVBUSU9OKCJCYXNpYyBiYWNrbGlnaHQgc3lzZnMgdGVzdCIpOwo+IMKgCj4g LXN0YXRpYyBpbnQgYmFja2xpZ2h0X3JlYWQoaW50ICpyZXN1bHQsIGNvbnN0IGNoYXIgKmZuYW1l KQo+ICtzdGF0aWMgaW50IGJhY2tsaWdodF9yZWFkKGludCAqcmVzdWx0LCBjb25zdCBjaGFyICpm bmFtZSwgc3RydWN0Cj4gY29udGV4dCAqY29udGV4dCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKg aW50IGZkOwo+IMKgwqDCoMKgwqDCoMKgwqBjaGFyIGZ1bGxbUEFUSF9NQVhdOwo+IMKgwqDCoMKg wqDCoMKgwqBjaGFyIGRzdFs2NF07Cj4gwqDCoMKgwqDCoMKgwqDCoGludCByLCBlOwo+IMKgCj4g LcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydChzbnByaW50ZihmdWxsLCBQQVRIX01BWCwgIiVzLyVz IiwgQkFDS0xJR0hUX1BBVEgsCj4gZm5hbWUpIDwgUEFUSF9NQVgpOwo+IC0KPiArwqDCoMKgwqDC oMKgwqBpZ3RfYXNzZXJ0KHNucHJpbnRmKGZ1bGwsIFBBVEhfTUFYLCAiJXMvJXMvJXMiLAo+IEJB Q0tMSUdIVF9QQVRILCBjb250ZXh0LT5wYXRoLCBmbmFtZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8IFBBVEhfTUFYKTsKPiDCoMKgwqDC oMKgwqDCoMKgZmQgPSBvcGVuKGZ1bGwsIE9fUkRPTkxZKTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYg KGZkID09IC0xKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1lcnJu bzsKPiBAQCAtNzMsMTQgKzc4LDE1IEBAIHN0YXRpYyBpbnQgYmFja2xpZ2h0X3JlYWQoaW50ICpy ZXN1bHQsIGNvbnN0IGNoYXIKPiAqZm5hbWUpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBlcnJu bzsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGJhY2tsaWdodF93cml0ZShpbnQgdmFsdWUsIGNv bnN0IGNoYXIgKmZuYW1lKQo+ICtzdGF0aWMgaW50IGJhY2tsaWdodF93cml0ZShpbnQgdmFsdWUs IGNvbnN0IGNoYXIgKmZuYW1lLCBzdHJ1Y3QKPiBjb250ZXh0ICpjb250ZXh0KQo+IMKgewo+IMKg wqDCoMKgwqDCoMKgwqBpbnQgZmQ7Cj4gwqDCoMKgwqDCoMKgwqDCoGNoYXIgZnVsbFtQQVRIX01B WF07Cj4gwqDCoMKgwqDCoMKgwqDCoGNoYXIgc3JjWzY0XTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50 IGxlbjsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoc25wcmludGYoZnVsbCwgUEFU SF9NQVgsICIlcy8lcyIsIEJBQ0tMSUdIVF9QQVRILAo+IGZuYW1lKSA8IFBBVEhfTUFYKTsKPiAr wqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KHNucHJpbnRmKGZ1bGwsIFBBVEhfTUFYLCAiJXMvJXMv JXMiLAo+IEJBQ0tMSUdIVF9QQVRILCBjb250ZXh0LT5wYXRoLCBmbmFtZSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA8IFBBVEhfTUFYKTsKPiDCoMKgwqDCoMKgwqDCoMKg ZmQgPSBvcGVuKGZ1bGwsIE9fV1JPTkxZKTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGZkID09IC0x KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1lcnJubzsKPiBAQCAt MTAwLDEyICsxMDYsMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9hbmRfdmVyaWZ5KHN0cnVjdCBjb250 ZXh0Cj4gKmNvbnRleHQsIGludCB2YWwpCj4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGludCB0b2xl cmFuY2UgPSB2YWwgKiBUT0xFUkFOQ0UgLyAxMDA7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCByZXN1 bHQ7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKGJhY2tsaWdodF93cml0ZSh2 YWwsICJicmlnaHRuZXNzIiksIDApOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEoYmFj a2xpZ2h0X3JlYWQoJnJlc3VsdCwgImJyaWdodG5lc3MiKSwgMCk7Cj4gK8KgwqDCoMKgwqDCoMKg aWd0X2Fzc2VydF9lcShiYWNrbGlnaHRfd3JpdGUodmFsLCAiYnJpZ2h0bmVzcyIsIGNvbnRleHQp LAo+IDApOwo+ICvCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEoYmFja2xpZ2h0X3JlYWQoJnJl c3VsdCwgImJyaWdodG5lc3MiLCBjb250ZXh0KSwKPiAwKTsKPiDCoMKgwqDCoMKgwqDCoMKgLyog Q2hlY2sgdGhhdCB0aGUgZXhhY3QgdmFsdWUgc3RpY2tzICovCj4gwqDCoMKgwqDCoMKgwqDCoGln dF9hc3NlcnRfZXEocmVzdWx0LCB2YWwpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2Vy dF9lcShiYWNrbGlnaHRfcmVhZCgmcmVzdWx0LCAiYWN0dWFsX2JyaWdodG5lc3MiKSwKPiAwKTsK PiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKGJhY2tsaWdodF9yZWFkKCZyZXN1bHQsICJh Y3R1YWxfYnJpZ2h0bmVzcyIsCj4gY29udGV4dCksIDApOwo+IMKgwqDCoMKgwqDCoMKgwqAvKiBT b21lIHJvdW5kaW5nIG1heSBoYXBwZW4gZGVwZW5kaW5nIG9uIGh3ICovCj4gwqDCoMKgwqDCoMKg wqDCoGlndF9hc3NlcnRfZihyZXN1bHQgPj0gbWF4KDAsIHZhbCAtIHRvbGVyYW5jZSkgJiYKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc3VsdCA8PSBtaW4oY29u dGV4dC0+bWF4LCB2YWwgKyB0b2xlcmFuY2UpLAo+IEBAIC0xMjQsMTYgKzEzMCwxNiBAQCBzdGF0 aWMgdm9pZCB0ZXN0X2JhZF9icmlnaHRuZXNzKHN0cnVjdCBjb250ZXh0Cj4gKmNvbnRleHQpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCB2YWw7Cj4gwqDCoMKgwqDCoMKgwqDCoC8qIEZpcnN0 IHdyaXRlIHNvbWUgc2FuZSB2YWx1ZSAqLwo+IC3CoMKgwqDCoMKgwqDCoGJhY2tsaWdodF93cml0 ZShjb250ZXh0LT5tYXggLyAyLCAiYnJpZ2h0bmVzcyIpOwo+ICvCoMKgwqDCoMKgwqDCoGJhY2ts aWdodF93cml0ZShjb250ZXh0LT5tYXggLyAyLCAiYnJpZ2h0bmVzcyIsIGNvbnRleHQpOwo+IMKg wqDCoMKgwqDCoMKgwqAvKiBXcml0aW5nIGludmFsaWQgdmFsdWVzIHNob3VsZCBmYWlsIGFuZCBu b3QgY2hhbmdlIHRoZQo+IHZhbHVlICovCj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9sdChi YWNrbGlnaHRfd3JpdGUoLTEsICJicmlnaHRuZXNzIiksIDApOwo+IC3CoMKgwqDCoMKgwqDCoGJh Y2tsaWdodF9yZWFkKCZ2YWwsICJicmlnaHRuZXNzIik7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fz c2VydF9sdChiYWNrbGlnaHRfd3JpdGUoLTEsICJicmlnaHRuZXNzIiwgY29udGV4dCksIDApOwo+ ICvCoMKgwqDCoMKgwqDCoGJhY2tsaWdodF9yZWFkKCZ2YWwsICJicmlnaHRuZXNzIiwgY29udGV4 dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEodmFsLCBjb250ZXh0LT5tYXggLyAy KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2x0KGJhY2tsaWdodF93cml0ZShjb250ZXh0 LT5tYXggKyAxLAo+ICJicmlnaHRuZXNzIiksIDApOwo+IC3CoMKgwqDCoMKgwqDCoGJhY2tsaWdo dF9yZWFkKCZ2YWwsICJicmlnaHRuZXNzIik7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9s dChiYWNrbGlnaHRfd3JpdGUoY29udGV4dC0+bWF4ICsgMSwgImJyaWdodG5lc3MiLAo+IGNvbnRl eHQpLCAwKTsKPiArwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0bmVz cyIsIGNvbnRleHQpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKHZhbCwgY29udGV4 dC0+bWF4IC8gMik7Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9sdChiYWNrbGlnaHRfd3Jp dGUoSU5UX01BWCwgImJyaWdodG5lc3MiKSwgMCk7Cj4gLcKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0 X3JlYWQoJnZhbCwgImJyaWdodG5lc3MiKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2x0 KGJhY2tsaWdodF93cml0ZShJTlRfTUFYLCAiYnJpZ2h0bmVzcyIsCj4gY29udGV4dCksIDApOwo+ ICvCoMKgwqDCoMKgwqDCoGJhY2tsaWdodF9yZWFkKCZ2YWwsICJicmlnaHRuZXNzIiwgY29udGV4 dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEodmFsLCBjb250ZXh0LT5tYXggLyAy KTsKPiDCoH0KPiDCoAo+IEBAIC0xNzksMjEgKzE4NSw1NyBAQCB0ZXN0X2ZhZGVfd2l0aF9zdXNw ZW5kKHN0cnVjdCBjb250ZXh0ICpjb250ZXh0LAo+IGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+IMKg wqDCoMKgwqDCoMKgwqB0ZXN0X2ZhZGUoY29udGV4dCk7Cj4gwqB9Cj4gwqAKPiArc3RhdGljIHZv aWQgdGVzdF9jbGVhbnVwKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGlndF9vdXRwdXRfdAo+ICpv dXRwdXQpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwg UElQRV9OT05FKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXks IGRpc3BsYXktPmlzX2F0b21pYyA/Cj4gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOwo+ ICvCoMKgwqDCoMKgwqDCoGlndF9wbV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50 KCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHRlc3Rfc2V0dXAoaWd0X2Rpc3BsYXlfdCBkaXNw bGF5LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKPiArewo+ICvCoMKgwqDCoMKgwqDCoGlndF9wbGFu ZV90ICpwcmltYXJ5Owo+ICvCoMKgwqDCoMKgwqDCoGRybU1vZGVNb2RlSW5mbyAqbW9kZTsKPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWd0X2ZiIGZiOwo+ICvCoMKgwqDCoMKgwqDCoGVudW0gcGlw ZSBwaXBlOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9yZXNldCgmZGlzcGxheSk7 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGZvcl9lYWNoX3BpcGUoJmRpc3BsYXksIHBpcGUpIHsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpZ3RfcGlwZV9jb25uZWN0b3JfdmFs aWQocGlwZSwgb3V0cHV0KSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNvbnRpbnVlOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBtb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+ICsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRpc3BsYXku ZHJtX2ZkLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5 LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIERSTV9GT1JNQVRfTU9EX0xJTkVBUiwgJmZiKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LAo+IERS TV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZmYik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9jb21taXQyKCZkaXNwbGF5LCBkaXNwbGF5LmlzX2F0b21p YyA/Cj4gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZ3RfcG1fZW5hYmxlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArwqDCoMKgwqDC oMKgwqB9Cj4gK30KPiArCj4gwqBpZ3RfbWFpbgo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoHN0cnVj dCBjb250ZXh0IGNvbnRleHQgPSB7MH07Cj4gLcKgwqDCoMKgwqDCoMKgaW50IG9sZDsKPiArwqDC oMKgwqDCoMKgwqBpbnQgb2xkW05VTV9FRFBfT1VUUFVUU10sIGZkOwo+ICvCoMKgwqDCoMKgwqDC oGludCBpID0gMDsKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+IMKg wqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgaWd0X2ZiIGZiOwo+ICvCoMKgwqDCoMKgwqDCoGNoYXIgZmlsZV9wYXRoX25bUEFUSF9NQVhd ID0gIiI7Cj4gK8KgwqDCoMKgwqDCoMKgYm9vbCBkdWFsX2VkcCA9IGZhbHNlOwo+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBjb250ZXh0IGNvbnRleHRzW05VTV9FRFBfT1VUUFVUU107Cj4gwqAKPiDC oMKgwqDCoMKgwqDCoMKgaWd0X2ZpeHR1cmUgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBlbnVtIHBpcGUgcGlwZTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJv b2wgZm91bmQgPSBmYWxzZTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIg ZnVsbF9uYW1lWzMyXSA9IHt9Owo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hh ciAqbmFtZTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtTW9kZU1vZGVJbmZv ICptb2RlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfcGxhbmVfdCAqcHJp bWFyeTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyoKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIEJhY2tsaWdodCB0ZXN0cyByZXF1aXJlcyB0aGUg b3V0cHV0IHRvIGJlIGVuYWJsZWQsCj4gQEAgLTIwMiw1NiArMjQ0LDk2IEBAIGlndF9tYWluCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBrbXN0ZXN0X3NldF92dF9ncmFwaGljc19t b2RlKCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9yZXF1 aXJlKCZkaXNwbGF5LAo+IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpKTsKPiDCoAo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBHZXQgdGhlIG1heCB2YWx1ZSBhbmQgc2tp cCB0aGUgd2hvbGUgdGVzdCBpZiBzeXNmcwo+IGludGVyZmFjZSBub3QgYXZhaWxhYmxlICovCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9za2lwX29uKGJhY2tsaWdodF9yZWFk KCZvbGQsICJicmlnaHRuZXNzIikpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3RfYXNzZXJ0KGJhY2tsaWdodF9yZWFkKCZjb250ZXh0Lm1heCwKPiAibWF4X2JyaWdodG5lc3Mi KSA+IC0xKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVj dGVkX291dHB1dCgmZGlzcGxheSwgb3V0cHV0KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3V0cHV0LT5jb25maWcuY29ubmVjdG9yLT5jb25u ZWN0b3JfdHlwZQo+ICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7 Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogc2hvdWxkIGJlIC4uLy4u L2NhcmRYLSRvdXRwdXQgKi8KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Fz c2VydF9sdCgxMiwgcmVhZGxpbmsoQkFDS0xJR0hUX1BBVEggIi9kZXZpY2UiLAo+IGZ1bGxfbmFt ZSwgc2l6ZW9mKGZ1bGxfbmFtZSkgLSAxKSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG5hbWUgPSBiYXNlbmFtZShmdWxsX25hbWUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGZvdW5kKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNucHJpbnRmKGZpbGVf cGF0aF9uLCBQQVRIX01BWCwKPiAiJXMvY2FyZCVpLSVzLWJhY2tsaWdodC9icmlnaHRuZXNzIiwK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJBQ0tMSUdIVF9QQVRILAo+IGlndF9kZXZpY2VfZ2V0 X2NhcmRfaW5kZXgoZGlzcGxheS5kcm1fZmQpLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0 X291dHB1dF9uYW1lKG91dHB1dCkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNucHJpbnRmKGZpbGVfcGF0aF9uLCBQQVRIX01B WCwKPiAiJXMvaW50ZWxfYmFja2xpZ2h0L2JyaWdodG5lc3MiLAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQkFDS0xJR0hUX1BBVEgpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9vdXRwdXQoJmRpc3BsYXksIHBpcGUsCj4gb3V0 cHV0KSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoc3RyY21wKG5hbWUgKyA2LCBvdXRwdXQtPm5hbWUpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmQgPSBvcGVuKGZpbGVfcGF0aF9uLCBPX1JET05M WSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo ZmQgPT0gLTEpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm91bmQgPSB0cnVlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfcmVx dWlyZV9mKGZvdW5kLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiQ291bGQgbm90IG1hcCBiYWNrbGlnaHQgZm9yIFwiJXNcIiB0bwo+ IGNvbm5lY3RlZCBvdXRwdXRcbiIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5hbWUpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGZv dW5kKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHNucHJpbnRmKGNvbnRleHRzW2ldLnBhdGgsIFBBVEhfTUFYLAo+ICJjYXJk JWktJXMtYmFja2xpZ2h0IiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gaWd0X2RldmljZV9n ZXRfY2FyZF9pbmRleChkaXNwbGF5LmRybV9mZCksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp Z3Rfb3V0cHV0X25hbWUob3V0cHV0KSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc25wcmludGYoY29udGV4dHNbaV0ucGF0aCwg UEFUSF9NQVgsCj4gImludGVsX2JhY2tsaWdodCIpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsb3NlKGZkKTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBzaG91bGQgYmUgLi4vLi4vY2Fy ZFgtJG91dHB1dCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc25wcmludGYoZmlsZV9wYXRoX24sIFBBVEhfTUFYLAo+ICIlcy8lcy9kZXZpY2UiLCBC QUNLTElHSFRfUEFUSCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGV4dHNbaV0ucGF0aCk7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2x0KDE2LCByZWFk bGluayhmaWxlX3BhdGhfbiwKPiBmdWxsX25hbWUsIHNpemVvZihmdWxsX25hbWUpIC0gMSkpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmFtZSA9IGJh c2VuYW1lKGZ1bGxfbmFtZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KGJhY2tsaWdodF9yZWFkKCZjb250ZXh0c1tpXS5tYXgsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibWF4X2JyaWdodG5lc3MiLAo+ ICZjb250ZXh0c1tpXSkgPiAtMSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFzdHJjbXAobmFtZSArIDYsIG91dHB1dC0+bmFtZSkpIHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjb250ZXh0c1tpKytdLm91dHB1dCA9IG91dHB1dDsKPiArCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGZv dW5kKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkdWFsX2VkcCA9IHRydWU7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxz ZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3VuZCA9IHRydWU7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmVf Zihmb3VuZCwgIk5vIHZhbGlkIG91dHB1dCBmb3VuZC5cbiIpOwo+ICvCoMKgwqDCoMKgwqDCoH0K PiDCoAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfY3JlYXRlX3BhdHRlcm5f ZmIoZGlzcGxheS5kcm1fZmQsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtb2RlLT5oZGlzcGxheSwgbW9k ZS0+dmRpc3BsYXksCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX1hSR0I4ODg4LAo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRFJNX0ZPUk1BVF9NT0RfTElORUFSLCAmZmIpOwo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShv dXRwdXQsCj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmZiKTsKPiArwqDCoMKgwqDCoMKg wqBpZ3Rfc3VidGVzdCgiYmFzaWMtYnJpZ2h0bmVzcyIpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IChkdWFsX2VkcCA/IDIgOiAxKTsgaSsrKSB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVw KGRpc3BsYXksICZjb250ZXh0cy0+b3V0cHV0W2ldKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfYnJpZ2h0bmVzcygmY29udGV4dHNbaV0pOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVh bnVwKCZkaXNwbGF5LCBvdXRwdXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gK8KgwqDCoMKgwqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlndF9kaXNwbGF5X2NvbW1pdDIoJmRpc3BsYXksIGRpc3BsYXkuaXNfYXRvbWljID8KPiBDT01N SVRfQVRPTUlDIDogQ09NTUlUX0xFR0FDWSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlndF9wbV9lbmFibGVfc2F0YV9saW5rX3Bvd2VyX21hbmFnZW1lbnQoKTsKPiArwqDCoMKg wqDCoMKgwqBpZ3Rfc3VidGVzdCgiYmFkLWJyaWdodG5lc3MiKSB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCAoZHVhbF9lZHAgPyAyIDogMSk7IGkrKykg ewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9z ZXR1cChkaXNwbGF5LCAmY29udGV4dHMtPm91dHB1dFtpXSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2JhZF9icmlnaHRuZXNzKCZjb250ZXh0 c1tpXSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0 ZXN0X2NsZWFudXAoJmRpc3BsYXksIG91dHB1dCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0 KCJmYWRlIikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBp IDwgKGR1YWxfZWRwID8gMiA6IDEpOyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoZGlzcGxheSwgJmNvbnRleHRzLT5vdXRw dXRbaV0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dGVzdF9mYWRlKCZjb250ZXh0c1tpXSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRpc3BsYXksIG91dHB1dCk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKg wqDCoMKgaWd0X3N1YnRlc3QoImZhZGVfd2l0aF9kcG1zIikgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgKGR1YWxfZWRwID8gMiA6IDEpOyBpKyspIHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0 dXAoZGlzcGxheSwgJmNvbnRleHRzLT5vdXRwdXRbaV0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9mYWRlX3dpdGhfZHBtcygmY29udGV4dHNb aV0sIG91dHB1dCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB0ZXN0X2NsZWFudXAoJmRpc3BsYXksIG91dHB1dCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X3N1 YnRlc3QoImZhZGVfd2l0aF9zdXNwZW5kIikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBmb3IgKGkgPSAwOyBpIDwgKGR1YWxfZWRwID8gMiA6IDEpOyBpKyspIHsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoZGlzcGxh eSwgJmNvbnRleHRzLT5vdXRwdXRbaV0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9mYWRlX3dpdGhfc3VzcGVuZCgmY29udGV4dHNbaV0sIG91 dHB1dCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0 ZXN0X2NsZWFudXAoJmRpc3BsYXksIG91dHB1dCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWd0 X3N1YnRlc3QoImJhc2ljLWJyaWdodG5lc3MiKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB0ZXN0X2JyaWdodG5lc3MoJmNvbnRleHQpOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9zdWJ0 ZXN0KCJiYWQtYnJpZ2h0bmVzcyIpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRl c3RfYmFkX2JyaWdodG5lc3MoJmNvbnRleHQpOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0 KCJmYWRlIikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9mYWRlKCZjb250 ZXh0KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiZmFkZV93aXRoX2RwbXMiKQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2ZhZGVfd2l0aF9kcG1zKCZjb250ZXh0 LCBvdXRwdXQpOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0KCJmYWRlX3dpdGhfc3VzcGVu ZCIpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfZmFkZV93aXRoX3N1c3Bl bmQoJmNvbnRleHQsIG91dHB1dCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2ZpeHR1cmUg ewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogUmVzdG9yZSBvbGQgYnJpZ2h0 bmVzcyAqLwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiYWNrbGlnaHRfd3JpdGUo b2xkLCAiYnJpZ2h0bmVzcyIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3Ig KGludCBqID0gMDsgaiA8IChkdWFsX2VkcCA/IDIgOiAxKTsgaisrKQoKWW91IGNvdWxkIHVzZSAi aSIgaGVyZS4KCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBiYWNrbGlnaHRfd3JpdGUob2xkW2pdLCAiYnJpZ2h0bmVzcyIsCj4gJmNvbnRleHRzW2pdKTsK CllvdSBoYXZlbid0IHJlYWQgb3JpZ2luYWwgYmFja2xpZ2h0IHZhbHVlcyBpbnRvIG9sZFtqXS4g UGxlYXNlIGFkZCB0aGlzCmludG8gbG9vcCB3aGVyZSB5b3UgYXJlIGluaXRpYWxpemluZyBjb250 ZXh0IGFycmF5LiBNYXliZSBvbGQgY291bGQgYmUKYWxzbyBwYXJ0IG9mIGNvbnRleHQ/Cgo+IMKg Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9maW5pKCZkaXNw bGF5KTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlbW92ZV9mYihkaXNw bGF5LmRybV9mZCwgJmZiKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9w bV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KCk7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjbG9zZShkaXNwbGF5LmRybV9mZCk7Cj4gwqDCoMKgwqDCoMKgwqDC oH0KCg==