From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.bootlin.com (mail.bootlin.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 956426EE02 for ; Thu, 13 Dec 2018 14:39:38 +0000 (UTC) Message-ID: <395af7e275b42e42f1c66050e46b3132d2c48490.camel@bootlin.com> From: Paul Kocialkowski Date: Thu, 13 Dec 2018 15:39:36 +0100 In-Reply-To: <93099f191da513f931778ce4818e2f6bd0791026.camel@redhat.com> References: <20181206141132.23349-1-paul.kocialkowski@bootlin.com> <20181206141132.23349-10-paul.kocialkowski@bootlin.com> <93099f191da513f931778ce4818e2f6bd0791026.camel@redhat.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 9/9] chamelium: Add a CRC-based display test for randomized planes 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: Lyude Paul , igt-dev@lists.freedesktop.org Cc: Petri Latvala , Eben Upton , Boris Brezillon , Thomas Petazzoni List-ID: SGksCgpUaGFua3MgZm9yIHRoZSByZXZpZXchCgpPbiBUaHUsIDIwMTgtMTItMDYgYXQgMTc6NTIg LTA1MDAsIEx5dWRlIFBhdWwgd3JvdGU6Cj4gSSBhZ3JlZSB3aXRoIE1heGltZSwgdGhpcyBkZWZp bml0ZWx5IHNob3VsZCBiZSBzcGxpdCB1cCBpbnRvIHNvbWUgbW9yZQo+IGZ1bmN0aW9ucy4gU29t ZSBvdGhlciBjb21tZW50cyBiZWxvdyBiZWxvdwo+IAo+IE9uIFRodSwgMjAxOC0xMi0wNiBhdCAx NToxMSArMDEwMCwgUGF1bCBLb2NpYWxrb3dza2kgd3JvdGU6Cj4gPiBUaGlzIGludHJvZHVjZXMg YSBuZXcgdGVzdCBmb3IgdGhlIENoYW1lbGl1bSwgdGhhdCBzZXRzIHVwIHBsYW5lcwo+ID4gd2l0 aCByYW5kb21pemVkIHByb3BlcnRpZXMgc3VjaCBhcyB0aGUgZm9ybWF0LCBkaW1lbnNpb25zLCBw b3NpdGlvbiwKPiA+IGluLWZyYW1lYnVmZmVyIG9mZnNldHMgYW5kIHN0cmlkZS4gVGhlIENoYW1l bGl1bSBjYXB0dXJlIGlzIGNoZWNrZWQKPiA+IGFnYWluc3QgdGhlIHJlZmVyZW5jZSBnZW5lcmF0 ZWQgYnkgY2Fpcm8gd2l0aCBhIENSQy4KPiA+IAo+ID4gVGhpcyB0ZXN0IGFsc28gaW5jbHVkZXMg dGVzdGluZyBmb3Igc29tZSBWQzQtc3BlY2lmaWMgZmVhdHVyZXMsIHN1Y2ggYXMKPiA+IFQtdGls ZWQgbW9kZSAoaW4gWFIyNCBmb3JtYXQpLCBiYW5kd2lkdGggbGltaXRhdGlvbiBhbmQgdW5kZXJy dW4KPiA+ICh0aGF0IHJlcXVpcmUga2VybmVsLXNpZGUgcGF0Y2hlcyB0aGF0IGFyZSBjdXJyZW50 bHkgdW5kZXIgcmV2aWV3KS4KPiA+IAo+ID4gU2luY2UgdGhpcyB0ZXN0IGRvZXMgbm90IHNoYXJl IG11Y2ggd2l0aCBwcmV2aW91cyBDUkMtYmFzZWQgZGlzcGxheQo+ID4gdGVzdHMgKGVzcGVjaWFs bHkgcmVnYXJkaW5nIEtNUyBjb25maWd1cmF0aW9uKSwgbW9zdCBvZiB0aGUgY29kZSBpcwo+ID4g bm90IHNoYXJlZCB3aXRoIG90aGVyIHRlc3RzLgo+ID4gCj4gPiBUaGlzIHRlc3QgY2FuIGJlIGRl cml2ZWQgd2l0aCByZXByb2R1Y2libGUgcHJvcGVydGllcyBmb3IgcmVncmVzc2lvbgo+ID4gdGVz dGluZyBpbiB0aGUgZnV0dXJlLiBGb3Igbm93LCBpdCBzZXJ2ZXMgYXMgYSBraW5kIG9mIGZ1enpp bmcgdGVzdC4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwu a29jaWFsa293c2tpQGJvb3RsaW4uY29tPgo+ID4gLS0tCj4gPiAgdGVzdHMva21zX2NoYW1lbGl1 bS5jIHwgMzMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4g IDEgZmlsZSBjaGFuZ2VkLCAzMzEgaW5zZXJ0aW9ucygrKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEv dGVzdHMva21zX2NoYW1lbGl1bS5jIGIvdGVzdHMva21zX2NoYW1lbGl1bS5jCj4gPiBpbmRleCA3 ZDk1YThiYy4uYTQ5NzczMDkgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9rbXNfY2hhbWVsaXVtLmMK PiA+ICsrKyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwo+ID4gQEAgLTI2LDYgKzI2LDggQEAKPiA+ IAo+ID4gICNpbmNsdWRlICJjb25maWcuaCIKPiA+ICAjaW5jbHVkZSAiaWd0LmgiCj4gPiArI2lu Y2x1ZGUgImlndF9zeXNmcy5oIgo+ID4gKyNpbmNsdWRlICJpZ3RfdmM0LmgiCj4gPiAKPiA+ICAj aW5jbHVkZSA8ZmNudGwuaD4KPiA+ICAjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gPiBAQCAtNzAzLDYg KzcwNSwzMzAgQEAgdGVzdF9kaXNwbGF5X2ZyYW1lX2R1bXAoZGF0YV90ICpkYXRhLCBzdHJ1Y3QK PiA+IGNoYW1lbGl1bV9wb3J0ICpwb3J0KQo+ID4gIAlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25u ZWN0b3IpOwo+ID4gIH0KPiA+IAo+ID4gK3N0YXRpYyB1aW50MzJfdCByYW5kb21fcGxhbmVfZm9y bWF0c1tdID0gewo+ID4gKwlEUk1fRk9STUFUX0FCR1I4ODg4LAo+ID4gKwlEUk1fRk9STUFUX0FS R0IxNTU1LAo+ID4gKwlEUk1fRk9STUFUX0FSR0I4ODg4LAo+ID4gKwlEUk1fRk9STUFUX1JHQjU2 NSwKPiA+ICsJRFJNX0ZPUk1BVF9CR1I1NjUsCj4gPiArCURSTV9GT1JNQVRfUkdCODg4LAo+ID4g KwlEUk1fRk9STUFUX0JHUjg4OCwKPiA+ICsJRFJNX0ZPUk1BVF9YQkdSODg4OCwKPiA+ICsJRFJN X0ZPUk1BVF9YUkdCMTU1NSwKPiA+ICsJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiA+ICt9Owo+ID4g Kwo+ID4gK3N0YXRpYyB2b2lkIHRlc3RfZGlzcGxheV9wbGFuZXNfcmFuZG9tKGRhdGFfdCAqZGF0 YSwKPiA+ICsJCQkJICAgICAgIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKPiA+ICsJCQkJ ICAgICAgIGVudW0gY2hhbWVsaXVtX2NoZWNrIGNoZWNrKQo+ID4gK3sKPiA+ICsJaWd0X291dHB1 dF90ICpvdXRwdXQ7Cj4gPiArCWlndF9waXBlX3QgKnBpcGU7Cj4gPiArCWRybU1vZGVNb2RlSW5m byAqbW9kZTsKPiA+ICsJaWd0X3BsYW5lX3QgKnByaW1hcnlfcGxhbmU7Cj4gPiArCXN0cnVjdCBp Z3RfZmIgcHJpbWFyeV9mYjsKPiA+ICsJc3RydWN0IGlndF9mYiByZXN1bHRfZmI7Cj4gPiArCXN0 cnVjdCBpZ3RfZmIgKm92ZXJsYXlfZmJzOwo+ID4gKwlpZ3RfY3JjX3QgKmNyYzsKPiA+ICsJaWd0 X2NyY190ICpleHBlY3RlZF9jcmM7Cj4gPiArCXN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjX2FzeW5j X2RhdGEgKmZiX2NyYzsKPiA+ICsJdW5zaWduZWQgaW50IG92ZXJsYXlfcGxhbmVzX21heCA9IDA7 Cj4gPiArCXVuc2lnbmVkIGludCBvdmVybGF5X3BsYW5lc19jb3VudDsKPiA+ICsJdW5zaWduZWQg aW50IG92ZXJsYXlfcGxhbmVzX2luZGV4Owo+ID4gKwlib29sIGJhbmR3aWR0aF9leGNlZWRlZCA9 IGZhbHNlOwo+ID4gKwlib29sIHVuZGVycnVuX2RldGVjdGVkID0gZmFsc2U7Cj4gPiArCWNhaXJv X3N1cmZhY2VfdCAqcmVzdWx0X3N1cmZhY2U7Cj4gPiArCWNhaXJvX3N1cmZhY2VfdCAqcHJpbWFy eV9zdXJmYWNlOwo+ID4gKwljYWlyb19zdXJmYWNlX3QgKm92ZXJsYXlfc3VyZmFjZTsKPiA+ICsJ Y2Fpcm9fdCAqY3I7Cj4gPiArCWludCBjYXB0dXJlZF9mcmFtZV9jb3VudDsKPiA+ICsJdW5zaWdu ZWQgaW50IGk7Cj4gPiArCWNoYXIgKnVuZGVycnVuOwo+ID4gKwlpbnQgZmJfaWQ7Cj4gPiArCWlu dCBkZWJ1Z2ZzOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlpZ3RfYXNzZXJ0KGNoZWNrID09 IENIQU1FTElVTV9DSEVDS19DUkMpOwo+ID4gKwo+ID4gKwlzcmFuZCh0aW1lKE5VTEwpKTsKPiA+ ICsKPiA+ICsJcmVzZXRfc3RhdGUoZGF0YSwgcG9ydCk7Cj4gPiArCj4gPiArCS8qIEZpbmQgdGhl IGNvbm5lY3RvciBhbmQgcGlwZS4gKi8KPiA+ICsJb3V0cHV0ID0gcHJlcGFyZV9vdXRwdXQoZGF0 YSwgcG9ydCk7Cj4gPiArCWlndF9hc3NlcnQob3V0cHV0KTsKPiBEbyB3ZSBhY3R1YWxseSBuZWVk IHRoaXM/IFdlJ3JlIG5vdCBydW5uaW5nIGlndF9hc3NlcnQgb24gdGhlIHByZXBhcmVfb3V0cHV0 KCkKPiBmdW5jdGlvbiBmb3IgYW55IG9mIHRoZSBvdGhlciB0ZXN0cy4KClRoaXMgY2FuIGluZGVl ZCBiZSBkcm9wcGVkLiBMb29raW5nIGF0IHByZXBhcmVfb3V0cHV0LCBhIGZldyB0aGluZ3MKd291 bGQgZmFpbCBiZWZvcmUgdGhlIHJldHVybnMgTlVMTCBhbnl3YXkuCgo+ID4gKwo+ID4gKwlpZiAo aXNfdmM0X2RldmljZShkYXRhLT5kcm1fZmQpKSB7Cj4gPiArCQlkZWJ1Z2ZzID0gaWd0X2RlYnVn ZnNfZGlyKGRhdGEtPmRybV9mZCk7Cj4gPiArCQlpZ3RfYXNzZXJ0KGRlYnVnZnMgPj0gMCk7Cj4g PiArCX0KPiA+ICsKPiA+ICsJcGlwZSA9ICZkYXRhLT5kaXNwbGF5LnBpcGVzW291dHB1dC0+cGVu ZGluZ19waXBlXTsKPiA+ICsKPiA+ICsJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0 KTsKPiA+ICsJaWd0X2Fzc2VydChtb2RlKTsKPiBUaGlzIGFzc2VydCBkb2Vzbid0IGxvb2sgbGlr ZSBpdCdzIG5lZWRlZCBlaXRoZXIKClRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxM IGFueXdheSwgc28geW91J3JlIHRvdGFsbHkgcmlnaHQgOikKCj4gPiArCj4gPiArCS8qIEdldCBh IGZyYW1lYnVmZmVyIGZvciB0aGUgcHJpbWFyeSBwbGFuZS4gKi8KPiA+ICsJcHJpbWFyeV9wbGFu ZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LAo+ID4gRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7Cj4gPiArCWlndF9hc3NlcnQocHJpbWFyeV9wbGFuZSk7Cj4gPiArCj4gPiArCWZi X2lkID0gY2hhbWVsaXVtX2dldF9wYXR0ZXJuX2ZiKGRhdGEsIG1vZGUtPmhkaXNwbGF5LCBtb2Rl LT52ZGlzcGxheSwKPiA+ICsJCQkJCSBEUk1fRk9STUFUX1hSR0I4ODg4LCA2NCwKPiA+ICZwcmlt YXJ5X2ZiKTsKPiA+ICsJaWd0X2Fzc2VydChmYl9pZCA+IDApOwo+ID4gKwo+ID4gKwlpZ3RfcGxh bmVfc2V0X2ZiKHByaW1hcnlfcGxhbmUsICZwcmltYXJ5X2ZiKTsKPiA+ICsKPiA+ICsJcHJpbWFy eV9zdXJmYWNlID0gaWd0X2dldF9jYWlyb19zdXJmYWNlKGRhdGEtPmRybV9mZCwgJnByaW1hcnlf ZmIpOwo+ID4gKwo+ID4gKwkvKiBHZXQgYSBmcmFtZWJ1ZmZlciBmb3IgdGhlIGNhaXJvIGNvbXBv c2l0aW9uIHJlc3VsdC4gKi8KPiA+ICsJZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9m ZCwgbW9kZS0+aGRpc3BsYXksCj4gPiArCQkJICAgICAgbW9kZS0+dmRpc3BsYXksIERSTV9GT1JN QVRfWFJHQjg4ODgsCj4gPiArCQkJICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwgJnJl c3VsdF9mYik7Cj4gPiArCWlndF9hc3NlcnQoZmJfaWQgPiAwKTsKPiA+ICsKPiA+ICsJLyogSW5p dGlhbGl6ZSBjYWlybyB3aXRoIHRoZSByZXN1bHQgc3VyZmFjZSBhcyB0YXJnZXQuICovCj4gPiAr CXJlc3VsdF9zdXJmYWNlID0gaWd0X2dldF9jYWlyb19zdXJmYWNlKGRhdGEtPmRybV9mZCwgJnJl c3VsdF9mYik7Cj4gPiArCj4gPiArCWNyID0gY2Fpcm9fY3JlYXRlKHJlc3VsdF9zdXJmYWNlKTsK PiA+ICsKPiA+ICsJLyogQmxlbmQgdGhlIHByaW1hcnkgc3VyZmFjZS4gKi8KPiA+ICsJY2Fpcm9f c2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBwcmltYXJ5X3N1cmZhY2UsIDAsIDApOwo+ID4gKwljYWly b19zdXJmYWNlX2Rlc3Ryb3kocHJpbWFyeV9zdXJmYWNlKTsKPiA+ICsJY2Fpcm9fcGFpbnQoY3Ip Owo+ID4gKwo+ID4gKwljYWlyb19kZXN0cm95KGNyKTsKPiA+ICsKPiA+ICsJLyogQ291bnQgYXZh aWxhYmxlIG92ZXJsYXkgcGxhbmVzLiAqLwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgcGlwZS0+bl9w bGFuZXM7IGkrKykgewo+ID4gKwkJaWd0X3BsYW5lX3QgKnBsYW5lID0gJnBpcGUtPnBsYW5lc1tp XTsKPiA+ICsKPiA+ICsJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZ KQo+ID4gKwkJCW92ZXJsYXlfcGxhbmVzX21heCsrOwo+ID4gKwl9Cj4gV2h5IG5vdCBhZGQgYSBo ZWxwZXIgZm9yIHRoaXMgaW4gYSBzZXBlcmF0ZSBwYXRjaD8gVGhpcyBzZWVtcyBxdWl0ZQo+IHVz ZWZ1bAoKWWVzLCBkZWZpbnRpZWx5IQoKPiA+ICsKPiA+ICsJLyogTGltaXQgdGhlIG51bWJlciBv ZiBwbGFuZXMgdG8gYSByZWFzb25hYmxlIHNjZW5lLiAqLwo+ID4gKwlpZiAob3ZlcmxheV9wbGFu ZXNfbWF4ID4gNCkKPiA+ICsJCW92ZXJsYXlfcGxhbmVzX21heCA9IDQ7Cj4gPiArCj4gPiArCW92 ZXJsYXlfcGxhbmVzX2NvdW50ID0gKHJhbmQoKSAlIG92ZXJsYXlfcGxhbmVzX21heCkgKyAxOwo+ ID4gKwlpZ3RfZGVidWcoIlVzaW5nICVkIG92ZXJsYXkgcGxhbmVzXG4iLCBvdmVybGF5X3BsYW5l c19jb3VudCk7Cj4gPiArCj4gPiArCW92ZXJsYXlfZmJzID0gY2FsbG9jKHNpemVvZihzdHJ1Y3Qg aWd0X2ZiKSwgb3ZlcmxheV9wbGFuZXNfY291bnQpOwo+IGlndF9hc3NlcnQob3ZlcmxheV9mYnMp Cj4gPiArCj4gPiArCWZvciAoaSA9IDAsIG92ZXJsYXlfcGxhbmVzX2luZGV4ID0gMDsKPiA+ICsJ ICAgICBpIDwgcGlwZS0+bl9wbGFuZXMgJiYgb3ZlcmxheV9wbGFuZXNfaW5kZXggPAo+ID4gb3Zl cmxheV9wbGFuZXNfY291bnQ7Cj4gPiArCSAgICAgaSsrKSB7Cj4gPiArCQlzdHJ1Y3QgaWd0X2Zi ICpvdmVybGF5X2ZiID0KPiA+ICZvdmVybGF5X2Zic1tvdmVybGF5X3BsYW5lc19pbmRleF07Cj4g PiArCQlpZ3RfcGxhbmVfdCAqcGxhbmUgPSAmcGlwZS0+cGxhbmVzW2ldOwo+ID4gKwkJc3RydWN0 IGlndF9mYiBwYXR0ZXJuX2ZiOwo+ID4gKwkJdWludDMyX3Qgb3ZlcmxheV9mYl93LCBvdmVybGF5 X2ZiX2g7Cj4gPiArCQlpbnQzMl90IG92ZXJsYXlfY3J0Y194LCBvdmVybGF5X2NydGNfeTsKPiA+ ICsJCXVpbnQzMl90IG92ZXJsYXlfY3J0Y193LCBvdmVybGF5X2NydGNfaDsKPiA+ICsJCXVpbnQz Ml90IG92ZXJsYXlfc3JjX3gsIG92ZXJsYXlfc3JjX3k7Cj4gPiArCQl1aW50MzJfdCBvdmVybGF5 X3NyY193LCBvdmVybGF5X3NyY19oOwo+ID4gKwkJaW50IG92ZXJsYXlfc3VyZmFjZV94LCBvdmVy bGF5X3N1cmZhY2VfeTsKPiA+ICsJCXVuc2lnbmVkIGludCBpbmRleDsKPiA+ICsJCXVuc2lnbmVk IGludCBzdHJpZGVfbWluOwo+ID4gKwkJdW5zaWduZWQgaW50IHN0cmlkZTsKPiA+ICsJCWJvb2wg dmM0X3RfdGlsZWQ7Cj4gPiArCQl1aW50MzJfdCBmb3JtYXQ7Cj4gPiArCj4gPiArCQlpZiAocGxh bmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkKPiA+ICsJCQljb250aW51ZTsKPiBX ZSBjb3VsZCBhbHNvIGFkZCBhIGhlbHBlciBmb3IgbG9vcGluZyB0aHJvdWdoIHBsYW5lcyBvZiBz cGVjaWZpYyB0eXBlcywKPiBzaW5jZSB3ZSBzZWVtIHRvIGRvIHRoYXQgbXVsdGlwbGUgdGltZXMg aGVyZSBhbmQgd2lsbCBwcm9iYWJseSBkbyBpdCBpbgo+IGZ1dHVyZSB0ZXN0cyBhdCBzb21lIHBv aXQKClRoYXQgd291bGQgZGVmaW5pdGVseSBtYWtlIHNlbnNlLCBJJ2xsIGNyYWZ0IHNvbWV0aGlu ZyBpbiB0aGF0CmRpcmVjdGlvbiBpbiB0aGUgbmV4dCByZXZpc2lvbi4KCj4gPiArCj4gPiArCQkv KiBSYW5kb21pemUgd2lkdGggYW5kIGhlaWdodCBpbiB0aGUgbW9kZSBkaW1lbnNpb25zIHJhbmdl LiAqLwo+ID4gKwkJb3ZlcmxheV9mYl93ID0gKHJhbmQoKSAlIG1vZGUtPmhkaXNwbGF5KSArIDE7 Cj4gPiArCQlvdmVybGF5X2ZiX2ggPSAocmFuZCgpICUgbW9kZS0+dmRpc3BsYXkpICsgMTsKPiA+ ICsKPiA+ICsJCS8qCj4gPiArCQkgKiBSYW5kb21pemUgc291cmNlIG9mZnNldCwgYnV0IGtlZXAg YXQgbGVhc3QgaGFsZiBvZiB0aGUKPiA+ICsJCSAqIG9yaWdpbmFsIHNpemUuCj4gPiArCQkgKi8K PiA+ICsJCW92ZXJsYXlfc3JjX3ggPSByYW5kKCkgJSAob3ZlcmxheV9mYl93IC8gMik7Cj4gPiAr CQlvdmVybGF5X3NyY195ID0gcmFuZCgpICUgKG92ZXJsYXlfZmJfaCAvIDIpOwo+ID4gKwo+ID4g KwkJLyoKPiA+ICsJCSAqIFRoZSBvbi1jcnRjIHNpemUgZG9lcyBub3QgaW5jbHVkZSB0aGUgc291 cmNlIG9mZnNldCwgc28gaXQKPiA+ICsJCSAqIG5lZWRzIHRvIGJlIHN1YnRyYWN0ZWQgdG8gYXZv aWQgc2NhbGluZy4KPiA+ICsJCSAqLwo+ID4gKwkJb3ZlcmxheV9jcnRjX3cgPSBvdmVybGF5X2Zi X3cgLSBvdmVybGF5X3NyY194Owo+ID4gKwkJb3ZlcmxheV9jcnRjX2ggPSBvdmVybGF5X2ZiX2gg LSBvdmVybGF5X3NyY195Owo+ID4gKwo+ID4gKwkJLyogU2FtZSBnb2VzIGZvciB0aGUgZnJhbWVi dWZmZXIgc291cmNlIHNpemUuICovCj4gPiArCQlvdmVybGF5X3NyY193ID0gb3ZlcmxheV9jcnRj X3c7Cj4gPiArCQlvdmVybGF5X3NyY19oID0gb3ZlcmxheV9jcnRjX2g7Cj4gPiArCj4gPiArCQkv Kgo+ID4gKwkJICogUmFuZG9taXplIHRoZSBvbi1jcnRjIHBvc2l0aW9uIGFuZCBhbGxvdyB0aGUg cGxhbmUgdG8gZ28KPiA+ICsJCSAqIG9mZi1kaXNwbGF5IGJ5IHVwIHRvIGhhbGYgb2YgaXRzIHdp ZHRoIGFuZCBoZWlnaHQuCj4gPiArCQkgKi8KPiA+ICsJCW92ZXJsYXlfY3J0Y194ID0gKHJhbmQo KSAlIG1vZGUtPmhkaXNwbGF5KSAtIG92ZXJsYXlfY3J0Y193IC8KPiA+IDI7Cj4gPiArCQlvdmVy bGF5X2NydGNfeSA9IChyYW5kKCkgJSBtb2RlLT52ZGlzcGxheSkgLSBvdmVybGF5X2NydGNfaCAv Cj4gPiAyOwo+ID4gKwo+ID4gKwkJaWd0X2RlYnVnKCJQbGFuZSAlZDogb24tY3J0YyBzaXplICVk eCVkXG4iLAo+ID4gKwkJCSAgb3ZlcmxheV9wbGFuZXNfaW5kZXgsIG92ZXJsYXlfY3J0Y193LAo+ ID4gb3ZlcmxheV9jcnRjX2gpOwo+ID4gKwkJaWd0X2RlYnVnKCJQbGFuZSAlZDogb24tY3J0YyBw b3NpdGlvbiAlZHglZFxuIiwKPiA+ICsJCQkgIG92ZXJsYXlfcGxhbmVzX2luZGV4LCBvdmVybGF5 X2NydGNfeCwKPiA+IG92ZXJsYXlfY3J0Y195KTsKPiA+ICsJCWlndF9kZWJ1ZygiUGxhbmUgJWQ6 IGluLWZyYW1lYnVmZmVyIHBvc2l0aW9uICVkeCVkXG4iLAo+ID4gKwkJCSAgb3ZlcmxheV9wbGFu ZXNfaW5kZXgsIG92ZXJsYXlfc3JjX3gsIG92ZXJsYXlfc3JjX3kpOwo+ID4gKwo+ID4gKwkJLyog R2V0IGEgcGF0dGVybiBmcmFtZWJ1ZmZlciBmb3IgdGhlIG92ZXJsYXkgcGxhbmUuICovCj4gPiAr CQlmYl9pZCA9IGNoYW1lbGl1bV9nZXRfcGF0dGVybl9mYihkYXRhLCBvdmVybGF5X2ZiX3csCj4g PiArCQkJCQkJIG92ZXJsYXlfZmJfaCwKPiA+ICsJCQkJCQkgRFJNX0ZPUk1BVF9YUkdCODg4OCwK PiA+ICsJCQkJCQkgMzIsICZwYXR0ZXJuX2ZiKTsKPiA+ICsJCWlndF9hc3NlcnQoZmJfaWQgPiAw KTsKPiA+ICsKPiA+ICsJCS8qIFJhbmRvbWl6ZSB0aGUgdXNlIG9mIHRpbGVkIG1vZGUgd2l0aCBh IDEvNCBwcm9iYWJpbGl0eS4gKi8KPiA+ICsJCWluZGV4ID0gcmFuZCgpICUgNDsKPiA+ICsKPiA+ ICsJCWlmIChpc192YzRfZGV2aWNlKGRhdGEtPmRybV9mZCkgJiYgaW5kZXggPT0gMCkgewo+ID4g KwkJCWZvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODg7Cj4gPiArCQkJdmM0X3RfdGlsZWQgPSB0 cnVlOwo+ID4gKwo+ID4gKwkJCWlndF9kZWJ1ZygiUGxhbmUgJWQ6IFZDNCBULXRpbGVkICVzIGZv cm1hdFxuIiwKPiA+ICsJCQkJICBvdmVybGF5X3BsYW5lc19pbmRleCwKPiA+IGlndF9mb3JtYXRf c3RyKGZvcm1hdCkpOwo+ID4gKwkJfSBlbHNlIHsKPiA+ICsJCQkvKiBSYW5kb21pemUgdGhlIGZv cm1hdCB0byB0ZXN0LiAqLwo+ID4gKwkJCWluZGV4ID0gcmFuZCgpICUgQVJSQVlfU0laRShyYW5k b21fcGxhbmVfZm9ybWF0cyk7Cj4gPiArCQkJZm9ybWF0ID0gcmFuZG9tX3BsYW5lX2Zvcm1hdHNb aW5kZXhdOwo+ID4gKwkJCXZjNF90X3RpbGVkID0gZmFsc2U7Cj4gPiArCj4gPiArCQkJaWd0X2Rl YnVnKCJQbGFuZSAlZDogJXMgZm9ybWF0XG4iLAo+ID4gb3ZlcmxheV9wbGFuZXNfaW5kZXgsCj4g PiArCQkJCSAgaWd0X2Zvcm1hdF9zdHIoZm9ybWF0KSk7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQkv KiBDb252ZXJ0IHRoZSBwYXR0ZXJuIHRvIHRoZSB0ZXN0IGZvcm1hdCBpZiBuZWVkZWQuICovCj4g PiArCQlpZiAodmM0X3RfdGlsZWQpIHsKPiA+ICsJCQlmYl9pZCA9IGlndF92YzRfZmJfdF90aWxl ZF9jb252ZXJ0KG92ZXJsYXlfZmIsCj4gPiArCQkJCQkJCSAgICZwYXR0ZXJuX2ZiKTsKPiA+ICsJ CQlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7Cj4gPiArCQl9IGVsc2Ugewo+ID4gKwkJCXN0cmlkZV9t aW4gPSBvdmVybGF5X2ZiX3cgKgo+ID4gKwkJCQkgICAgIGlndF9mb3JtYXRfcGxhbmVfYnBwKGZv cm1hdCwgMCkgLyA4Owo+ID4gKwo+ID4gKwkJCS8qIFJhbmRvbWl6ZSB0aGUgc3RyaWRlIHdpdGgg YXQgbW9zdCB0d2ljZSB0aGUKPiA+IG1pbmltdW0uICovCj4gPiArCQkJc3RyaWRlID0gKHJhbmQo KSAlIHN0cmlkZV9taW4pICsgc3RyaWRlX21pbjsKPiA+ICsKPiA+ICsJCQkvKiBQaXhtYW4gcmVx dWlyZXMgdGhlIHN0cmlkZSB0byBiZSBhbGlnbmVkIHRvIDMyLWJ5dGUKPiA+IHdvcmRzLiAqLwo+ ID4gKwkJCXN0cmlkZSA9IEFMSUdOKHN0cmlkZSwgc2l6ZW9mKHVpbnQzMl90KSk7Cj4gPiArCj4g PiArCQkJaWd0X2RlYnVnKCJQbGFuZSAlZDogdXNpbmcgc3RyaWRlICVkXG4iLAo+ID4gb3Zlcmxh eV9wbGFuZXNfaW5kZXgsIHN0cmlkZSk7Cj4gPiArCj4gPiArCQkJZmJfaWQgPSBpZ3RfZmJfY29u dmVydF93aXRoX3N0cmlkZShvdmVybGF5X2ZiLAo+ID4gKwkJCQkJCQkgICAmcGF0dGVybl9mYiwK PiA+ICsJCQkJCQkJICAgZm9ybWF0LCBzdHJpZGUpOwo+ID4gKwkJCWlndF9hc3NlcnQoZmJfaWQp Owo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgb3ZlcmxheV9m Yik7Cj4gPiArCj4gPiArCQlvdmVybGF5X3N1cmZhY2UgPSBpZ3RfZ2V0X2NhaXJvX3N1cmZhY2Uo ZGF0YS0+ZHJtX2ZkLAo+ID4gKwkJCQkJCQkmcGF0dGVybl9mYik7Cj4gPiArCj4gPiArCQkvKiBC bGVuZCB0aGUgb3ZlcmxheSBzdXJmYWNlLiAqLwo+ID4gKwkJb3ZlcmxheV9zdXJmYWNlX3ggPSBv dmVybGF5X2NydGNfeCAtIChpbnQpIG92ZXJsYXlfc3JjX3g7Cj4gPiArCQlvdmVybGF5X3N1cmZh Y2VfeSA9IG92ZXJsYXlfY3J0Y195IC0gKGludCkgb3ZlcmxheV9zcmNfeTsKPiA+ICsKPiA+ICsJ CWNyID0gY2Fpcm9fY3JlYXRlKHJlc3VsdF9zdXJmYWNlKTsKPiA+ICsKPiA+ICsJCWNhaXJvX3Nl dF9zb3VyY2Vfc3VyZmFjZShjciwgb3ZlcmxheV9zdXJmYWNlLAo+ID4gb3ZlcmxheV9zdXJmYWNl X3gsCj4gPiArCQkJCQkgb3ZlcmxheV9zdXJmYWNlX3kpOwo+ID4gKwkJY2Fpcm9fc3VyZmFjZV9k ZXN0cm95KG92ZXJsYXlfc3VyZmFjZSk7Cj4gPiArCj4gPiArCQkvKiBDbGlwIHRoZSBzdXJmYWNl IHRvIGEgcmVjdGFuZ2xlLiAqLwo+ID4gKwkJY2Fpcm9fcmVjdGFuZ2xlKGNyLCBvdmVybGF5X2Ny dGNfeCwgb3ZlcmxheV9jcnRjX3ksCj4gPiArCQkJCW92ZXJsYXlfY3J0Y193LCBvdmVybGF5X2Ny dGNfaCk7Cj4gPiArCQljYWlyb19jbGlwKGNyKTsKPiA+ICsKPiA+ICsJCWNhaXJvX3BhaW50KGNy KTsKPiA+ICsKPiA+ICsJCWNhaXJvX2Rlc3Ryb3koY3IpOwo+ID4gKwo+ID4gKwkJLyogQ29uZmln dXJlIHRoZSBwbGFuZSB3aXRoIGZyYW1lYnVmZmVyIHNvdXJjZSBjb29yZGluYXRlcy4gKi8KPiA+ ICsJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIG92ZXJsYXlfY3J0Y194LCBvdmVybGF5 X2NydGNfeSk7Cj4gPiArCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIG92ZXJsYXlfY3J0Y193 LCBvdmVybGF5X2NydGNfaCk7Cj4gPiArCj4gPiArCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKG92ZXJs YXlfZmIsIHBsYW5lLCBvdmVybGF5X3NyY194LAo+ID4gKwkJCQkgICAgb3ZlcmxheV9zcmNfeSk7 Cj4gPiArCQlpZ3RfZmJfc2V0X3NpemUob3ZlcmxheV9mYiwgcGxhbmUsIG92ZXJsYXlfc3JjX3cs Cj4gPiArCQkJCW92ZXJsYXlfc3JjX2gpOwo+ID4gKwo+ID4gKwkJaWd0X3JlbW92ZV9mYihkYXRh LT5kcm1fZmQsICZwYXR0ZXJuX2ZiKTsKPiA+ICsKPiA+ICsJCW92ZXJsYXlfcGxhbmVzX2luZGV4 Kys7Cj4gPiArCX0KPiA+ICsKPiA+ICsJY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHJlc3VsdF9zdXJm YWNlKTsKPiA+ICsKPiA+ICsJZmJfY3JjID0gY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5 bmNfc3RhcnQoZGF0YS0+ZHJtX2ZkLAo+ID4gKwkJCQkJCQkmcmVzdWx0X2ZiKTsKPiA+ICsKPiA+ ICsJaWYgKGlzX3ZjNF9kZXZpY2UoZGF0YS0+ZHJtX2ZkKSkgewo+ID4gKwkJcmV0ID0gaWd0X2Rp c3BsYXlfdHJ5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ID4gKwkJ YmFuZHdpZHRoX2V4Y2VlZGVkID0gKHJldCA8IDAgJiYgZXJybm8gPT0gRU5PU1BDKTsKPiA+ICsK PiA+ICsJCWlndF9kZWJ1ZygiQmFuZHdpZHRoIGxpbWl0YXRpb24gZXhlZWRlZDogJXNcbiIsCj4g PiArCQkJICBiYW5kd2lkdGhfZXhjZWVkZWQgPyAiWWVzIiA6ICJObyIpOwo+ID4gKwo+ID4gKwkJ aWd0X2Fzc2VydCghYmFuZHdpZHRoX2V4Y2VlZGVkKTsKPiA+ICsJfQo+IFdoeSBkb2VzIHRoaXMg bmVlZCB0byBiZSBoYW5kbGVkIHNlcGFyYXRlbHkgZm9yIFZDNCBkZXZpY2VzPyBXZSBhbHJlYWR5 Cj4gcHJpbnQgdGhlIHJldHVybiBjb2RlIGZyb20gYSBmYWlsZWQgYXRvbWljIGNvbW1pdCBpbnRv IHRoZSBkZWJ1Z2dpbmcKPiBvdXRwdXQsIGFuZCBJJ2QgYXNzdW1lIGFueW9uZSBsb29raW5nIGF0 IHRoZSBvdXRwdXQgZnJvbSB0aGUgZmFpbHVyZSBvZgo+IG9uZSBvZiB0aGVzZSB0ZXN0cyBwcm9i YWJseSBrbm93cyB3aGF0IHRoYXQgbWVhbnMuIEFkZGl0aW9uYWxseSwgaWYgd2UKPiB3YW50ZWQg dG8gcHJpbnQgZGVidWdnaW5nIG1lc3NhZ2VzIGZvciBiYW5kd2lkdGggbGltaXRhdGlvbnMgYmVp bmcKPiBleGNlZWRlZCBmb3IgYXRvbWljIGNvbW1pdHMgb24gdmM0LCBzZWVtcyBsaWtlIGl0IHdv dWxkIHByb2JhYmx5IGJlCj4gYmV0dGVyIHRvIGp1c3QgYWRkIHRoYXQgY29kZSB0byBpZ3RfZGlz cGxheV90cnlfY29tbWl0MigpCgpZb3UncmUgcmlnaHQsIGFmdGVyIGFsbCB0aGUgZm9sbG93aW5n IGNhbGwgd2lsbCBwcm9kdWNlIG1vcmUgb3IgbGVzcwp0aGUgc2FtZSByZXN1bHQgYW5kIHRoZXJl IGlzIG5vdGhpbmcgcmVhbGx5IHNwZWNpZmljIHRvIHRoZSBWQzQgdGhlcmUuCkknbGwgZHJvcCBp dCBpbiB0aGUgZnV0dXJlLgoKPiA+ICsKPiA+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gPiArCj4gPiArCWNoYW1lbGl1bV9jYXB0dXJlKGRh dGEtPmNoYW1lbGl1bSwgcG9ydCwgMCwgMCwgMCwgMCwgMSk7Cj4gPiArCWNyYyA9IGNoYW1lbGl1 bV9yZWFkX2NhcHR1cmVkX2NyY3MoZGF0YS0+Y2hhbWVsaXVtLAo+ID4gKwkJCQkJICAgJmNhcHR1 cmVkX2ZyYW1lX2NvdW50KTsKPiA+ICsKPiA+ICsJaWd0X2Fzc2VydChjYXB0dXJlZF9mcmFtZV9j b3VudCA9PSAxKTsKPiA+ICsKPiA+ICsJaWYgKGlzX3ZjNF9kZXZpY2UoZGF0YS0+ZHJtX2ZkKSkg ewo+ID4gKwkJdW5kZXJydW4gPSBpZ3Rfc3lzZnNfZ2V0KGRlYnVnZnMsICJ1bmRlcnJ1biIpOwo+ ID4gKwkJaWd0X2Fzc2VydCh1bmRlcnJ1bik7Cj4gPiArCj4gPiArCQl1bmRlcnJ1bl9kZXRlY3Rl ZCA9ICh1bmRlcnJ1blswXSA9PSAnWScpOwo+ID4gKwkJZnJlZSh1bmRlcnJ1bik7Cj4gPiArCj4g PiArCQlpZ3RfZGVidWcoIlVuZGVycnVuIGRldGVjdGVkOiAlc1xuIiwKPiA+ICsJCQkgIHVuZGVy cnVuX2RldGVjdGVkID8gIlllcyIgOiAiTm8iKTsKPiA+ICsKPiA+ICsJCWlndF9hc3NlcnQoIXVu ZGVycnVuX2RldGVjdGVkKTsKPiA+ICsKPiA+ICsJCWNsb3NlKGRlYnVnZnMpOwo+ID4gKwl9Cj4g VGhpcyB3aWxsIGRlZmluaXRlbHkgYmUgdXNlZCBhZ2FpbiBpbiB0aGUgZnV0dXJlLCB0aGlzIHNo b3VsZCBhbHNvIGdvCj4gaW50byBhIGhlbHBlciBmb3IgdmM0LgoKU2luY2Ugd2UncmUgaGF2aW5n IHByb2JsZW1zIHdpdGggdW5kZXJydW4gdGVzdGluZyBhbmQgdGhlIENoYW1lbGl1bSwgSQp0aGlu ayBJJ2xsIGRyb3AgdGhhdCBwYXJ0IGZvciBub3cgYW5kIG1heWJlIHJlLWludHJvZHVjZSBpdCBh cyBhIHZjNApoZWxwZXIgKGl0J3Mgc3BlY2lmaWMgdG8gdGhlIHZjNCBkcml2ZXIgaW4gdGhlIGxh dGVzdCBpdGVyYXRpb24pIGxhdGVyLgoKPiA+ICsKPiA+ICsJZXhwZWN0ZWRfY3JjID0gY2hhbWVs aXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5bmNfZmluaXNoKGZiX2NyYyk7Cj4gPiArCj4gPiArCWNo YW1lbGl1bV9hc3NlcnRfY3JjX2VxX29yX2R1bXAoZGF0YS0+Y2hhbWVsaXVtLAo+ID4gKwkJCQkJ ZXhwZWN0ZWRfY3JjLCBjcmMsCj4gPiArCQkJCQkmcmVzdWx0X2ZiLCBpKTsKPiA+ICsKPiA+ICsJ aWd0X2RlYnVnKCJyZWZlcmVuY2UgQ1JDOiAlc1xuIiwgaWd0X2NyY190b19zdHJpbmcoZXhwZWN0 ZWRfY3JjKSk7Cj4gPiArCWlndF9kZWJ1ZygiY2FsY3VsYXRlZCBDUkM6ICVzXG4iLCBpZ3RfY3Jj X3RvX3N0cmluZyhjcmMpKTsKPiBXaHkgbm90IGp1c3QgYWRkIHRoaXMgZGVidWdnaW5nIG91dHB1 dCB0bwo+IGNoYW1lbGl1bV9hc3NlcnRfY3JjX2VxX29yX2R1bXAoKT8KClllcywgbGV0J3MgZG8g dGhhdC4KCj4gPiArCj4gPiArCWZyZWUoZXhwZWN0ZWRfY3JjKTsKPiA+ICsJZnJlZShjcmMpOwo+ ID4gKwo+ID4gKwlmb3IgKGkgPSAwLCBvdmVybGF5X3BsYW5lc19pbmRleCA9IDA7Cj4gPiArCSAg ICAgaSA8IHBpcGUtPm5fcGxhbmVzICYmIG92ZXJsYXlfcGxhbmVzX2luZGV4IDwKPiA+IG92ZXJs YXlfcGxhbmVzX2NvdW50Owo+ID4gKwkgICAgIGkrKykgewo+ID4gKwkJaWd0X3BsYW5lX3QgKnBs YW5lID0gJnBpcGUtPnBsYW5lc1tpXTsKPiA+ICsJCXN0cnVjdCBpZ3RfZmIgKm92ZXJsYXlfZmIg PQo+ID4gJm92ZXJsYXlfZmJzW292ZXJsYXlfcGxhbmVzX2luZGV4XTsKPiA+ICsKPiA+ICsJCWlm IChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKQo+ID4gKwkJCWNvbnRpbnVl Owo+ID4gKwo+ID4gKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsIG92ZXJsYXlfZmIpOwo+ ID4gKwo+ID4gKwkJb3ZlcmxheV9wbGFuZXNfaW5kZXgrKzsKPiA+ICsJfQo+ID4gKwo+ID4gKwlm cmVlKG92ZXJsYXlfZmJzKTsKPiA+ICsKPiA+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQs ICZwcmltYXJ5X2ZiKTsKPiA+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZyZXN1bHRf ZmIpOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZAo+ID4gIHRlc3RfaHBkX3dpdGhvdXRf ZGRjKGRhdGFfdCAqZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0KQo+ID4gIHsKPiA+ IEBAIC05ODEsNiArMTMwNywxMSBAQCBpZ3RfbWFpbgo+ID4gIAkJCXRlc3RfZGlzcGxheV9vbmVf bW9kZSgmZGF0YSwgcG9ydCwgRFJNX0ZPUk1BVF9OVjEyLAo+ID4gIAkJCQkJICAgICAgQ0hBTUVM SVVNX0NIRUNLX0FOQUxPRywgMSk7Cj4gPiAKPiA+ICsJCWNvbm5lY3Rvcl9zdWJ0ZXN0KCJoZG1p LWNyYy1wbGFuZXMtcmFuZG9tIiwgSERNSUEpCj4gPiArCQkJdGVzdF9kaXNwbGF5X3BsYW5lc19y YW5kb20oJmRhdGEsIHBvcnQsCj4gPiArCQkJCQkJICAgQ0hBTUVMSVVNX0NIRUNLX0NSQyk7Cj4g PiArCj4gPiArCj4gPiAgCQljb25uZWN0b3Jfc3VidGVzdCgiaGRtaS1mcmFtZS1kdW1wIiwgSERN SUEpCj4gPiAgCQkJdGVzdF9kaXNwbGF5X2ZyYW1lX2R1bXAoJmRhdGEsIHBvcnQpOwo+ID4gIAl9 CgpDaGVlcnMsCgpQYXVsCgotLSAKUGF1bCBLb2NpYWxrb3dza2ksIEJvb3RsaW4gKGZvcm1lcmx5 IEZyZWUgRWxlY3Ryb25zKQpFbWJlZGRlZCBMaW51eCBhbmQga2VybmVsIGVuZ2luZWVyaW5nCmh0 dHBzOi8vYm9vdGxpbi5jb20KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRl dgo=