From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomi Valkeinen Subject: Re: [PATCH] drm/bridge: tc358767: Expose test mode functionality via debugfs Date: Tue, 27 Aug 2019 08:46:13 +0300 Message-ID: <3cc666bd-36f7-c1ca-e369-ee88cd06332c@ti.com> References: <20190826182524.5064-1-andrew.smirnov@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from fllv0015.ext.ti.com (fllv0015.ext.ti.com [198.47.19.141]) by gabe.freedesktop.org (Postfix) with ESMTPS id E3D8989BAB for ; Tue, 27 Aug 2019 05:46:22 +0000 (UTC) In-Reply-To: <20190826182524.5064-1-andrew.smirnov@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrey Smirnov , dri-devel@lists.freedesktop.org Cc: Cory Tusar , linux-kernel@vger.kernel.org, Laurent Pinchart , Chris Healy List-Id: dri-devel@lists.freedesktop.org SGksCgpPbiAyNi8wOC8yMDE5IDIxOjI1LCBBbmRyZXkgU21pcm5vdiB3cm90ZToKPiBQcmVzZW50 bHksIHRoZSBkcml2ZXIgY29kZSBhcnRpZmljaWFsbHkgbGltaXRzIHRlc3QgcGF0dGVybiBtb2Rl IHRvIGEKPiBzaW5nbGUgcGF0dGVybiB3aXRoIGZpeGVkIGNvbG9yIHNlbGVjdGlvbi4gSXQgYmVp bmcgYSBrZXJuZWwgbW9kdWxlCj4gcGFyYW1ldGVyIG1ha2VzIHN3aXRjaGluZyAidGVzdCBwYXR0 ZXIiIDwtPiAicHJvcGVyIG91dHB1dCIgbW9kZXMKPiBvbi10aGUtZmx5IGNsdW5reSBhbmQgb3V0 cmlnaHQgaW1wb3NzaWJsZSBpZiB0aGUgZHJpdmVyIGlzIGJ1aWx0IGludG8KPiB0aGUga2VybmVs Lgo+IAo+IFRvIGltcHJvdmUgdGhlIHNpdHVhdGlvbiBhIGJpdCwgY29udmVydCBjdXJyZW50IHRl c3QgcGF0dGVybiBjb2RlIHRvCj4gdXNlIGRlYnVnZnMgaW5zdGVhZCBieSBleHBvc2luZyAiVGVz dEN0bCIgcmVnaXN0ZXIuIFRoaXMgd2F5IG9sZAo+ICJ0Y190ZXN0X3BhdHRlcm49MSIgZnVuY3Rp b25hbGl0eSBjYW4gYmUgZW11bGF0ZWQgdmlhOgo+IAo+ICAgICAgZWNobyAtbiAweDc4MTQ2MzEy ID4gdHN0Y3RsCj4gCj4gYW5kIHN3aXRjaCBiYWNrIHRvIHJlZ3VsYXIgbW9kZSBjYW4gYmUgZG9u ZSB3aXRoOgo+IAo+ICAgICAgZWNobyAtbiAweDc4MTQ2MzEwID4gdHN0Y3RsCgpJdCBtaWdodCBi ZSB3b3J0aCBleHBsYWluaW5nIHRoZSBmb3JtYXQgaW4gdGhlIGNvbW1pdCBtc2cgb3IgaW4gYSAK Y29tbWVudCBpbiB0aGUgZHJpdmVyLgoKPiBOb3RlIHRoYXQgc3dpdGNoaW5nIHRvIGFueSBvZiB0 aGUgdGVzdCBwYXR0ZXJucywgd2lsbCBOT1QgdHJpZ2dlciBsaW5rCj4gcmUtZXN0YWJsaXNobWVu dCB3aGVyZWFzIHN3aXRjaGluZyB0byBub3JtYWwgb3BlcmF0aW9uIFdJTEwuIFRoaXMgaXMKPiBk b25lIHNvOgo+IAo+IGEpIHdlIGNhbiBpc29sYXRlIGFuZCB2ZXJpZnkgKGUpRFAgbGluayBmdW5j dGlvbmFsaXR5IGJ5IHN3aXRjaGluZyB0bwo+ICAgICBvbmUgb2YgdGhlIHRlc3QgcGF0dGVycwo+ IAo+IGIpIHRyaWdnZXIgYSBsaW5rIHJlLWVzdGFibGlzaG1lbnQgYnkgc3dpdGNoaW5nIGJhY2sg dG8gbm9ybWFsIG1vZGUKPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgU21pcm5vdiA8YW5kcmV3 LnNtaXJub3ZAZ21haWwuY29tPgo+IENjOiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcu Y29tPgo+IENjOiBMYXVyZW50IFBpbmNoYXJ0IDxMYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2Fy ZC5jb20+Cj4gQ2M6IFRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkB0aS5jb20+Cj4gQ2M6 IENvcnkgVHVzYXIgPGNvcnkudHVzYXJAemlpLmFlcm8+Cj4gQ2M6IENocmlzIEhlYWx5IDxjcGhl YWx5QGdtYWlsLmNvbT4KPiBDYzogTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+ Cj4gQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBDYzogbGludXgta2VybmVs QHZnZXIua2VybmVsLm9yZwo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2 Ny5jIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5n ZWQsIDEwMSBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2Ny5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS90YzM1ODc2Ny5jCj4gaW5kZXggNjMwOGQ5M2FkOTFkLi43YTc5NWI2MTNlZDAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90YzM1ODc2Ny5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS90YzM1ODc2Ny5jCj4gQEAgLTE3LDYgKzE3LDcgQEAKPiAgIAo+ICAgI2lu Y2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4g ICAjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L2ky Yy5oPgo+IEBAIC0yMjIsMTEgKzIyMywxMCBAQAo+ICAgI2RlZmluZSBDT0xPUl9CCQkJR0VOTUFT SygxNSwgOCkKPiAgICNkZWZpbmUgRU5JMkNGSUxURVIJCUJJVCg0KQo+ICAgI2RlZmluZSBDT0xP Ul9CQVJfTU9ERQkJR0VOTUFTSygxLCAwKQo+ICsjZGVmaW5lIENPTE9SX0JBUl9NT0RFX05PUk1B TAkwCj4gICAjZGVmaW5lIENPTE9SX0JBUl9NT0RFX0JBUlMJMgo+IC0jZGVmaW5lIFBMTF9EQkcJ CQkweDBhMDQKPiAgIAo+IC1zdGF0aWMgYm9vbCB0Y190ZXN0X3BhdHRlcm47Cj4gLW1vZHVsZV9w YXJhbV9uYW1lZCh0ZXN0LCB0Y190ZXN0X3BhdHRlcm4sIGJvb2wsIDA2NDQpOwo+ICsjZGVmaW5l IFBMTF9EQkcJCQkweDBhMDQKPiAgIAo+ICAgc3RydWN0IHRjX2VkcF9saW5rIHsKPiAgIAlzdHJ1 Y3QgZHJtX2RwX2xpbmsJYmFzZTsKPiBAQCAtNzg5LDE2ICs3ODksNiBAQCBzdGF0aWMgaW50IHRj X3NldF92aWRlb19tb2RlKHN0cnVjdCB0Y19kYXRhICp0YywKPiAgIAlpZiAocmV0KQo+ICAgCQly ZXR1cm4gcmV0Owo+ICAgCj4gLQkvKiBUZXN0IHBhdHRlcm4gc2V0dGluZ3MgKi8KPiAtCXJldCA9 IHJlZ21hcF93cml0ZSh0Yy0+cmVnbWFwLCBUU1RDVEwsCj4gLQkJCSAgIEZJRUxEX1BSRVAoQ09M T1JfUiwgMTIwKSB8Cj4gLQkJCSAgIEZJRUxEX1BSRVAoQ09MT1JfRywgMjApIHwKPiAtCQkJICAg RklFTERfUFJFUChDT0xPUl9CLCA5OSkgfAo+IC0JCQkgICBFTkkyQ0ZJTFRFUiB8Cj4gLQkJCSAg IEZJRUxEX1BSRVAoQ09MT1JfQkFSX01PREUsIENPTE9SX0JBUl9NT0RFX0JBUlMpKTsKPiAtCWlm IChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gICAJLyogRFAgTWFpbiBTdHJlYW0gQXR0cmli dXRlcyAqLwo+ICAgCXZpZF9zeW5jX2RseSA9IGhzeW5jX2xlbiArIGxlZnRfbWFyZ2luICsgbW9k ZS0+aGRpc3BsYXk7Cj4gICAJcmV0ID0gcmVnbWFwX3dyaXRlKHRjLT5yZWdtYXAsIERQMF9WSURT WU5DREVMQVksCj4gQEAgLTExNTAsMTQgKzExNDAsNiBAQCBzdGF0aWMgaW50IHRjX3N0cmVhbV9l bmFibGUoc3RydWN0IHRjX2RhdGEgKnRjKQo+ICAgCj4gICAJZGV2X2RiZyh0Yy0+ZGV2LCAiZW5h YmxlIHZpZGVvIHN0cmVhbVxuIik7Cj4gICAKPiAtCS8qIFBYTCBQTEwgc2V0dXAgKi8KPiAtCWlm ICh0Y190ZXN0X3BhdHRlcm4pIHsKPiAtCQlyZXQgPSB0Y19weGxfcGxsX2VuKHRjLCBjbGtfZ2V0 X3JhdGUodGMtPnJlZmNsayksCj4gLQkJCQkgICAgMTAwMCAqIHRjLT5tb2RlLmNsb2NrKTsKPiAt CQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAgIAlyZXQgPSB0Y19zZXRf dmlkZW9fbW9kZSh0YywgJnRjLT5tb2RlKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0 Owo+IEBAIC0xMTg2LDEyICsxMTY4LDggQEAgc3RhdGljIGludCB0Y19zdHJlYW1fZW5hYmxlKHN0 cnVjdCB0Y19kYXRhICp0YykKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCS8q IFNldCBpbnB1dCBpbnRlcmZhY2UgKi8KPiAtCXZhbHVlID0gRFAwX0FVRFNSQ19OT19JTlBVVDsK PiAtCWlmICh0Y190ZXN0X3BhdHRlcm4pCj4gLQkJdmFsdWUgfD0gRFAwX1ZJRFNSQ19DT0xPUl9C QVI7Cj4gLQllbHNlCj4gLQkJdmFsdWUgfD0gRFAwX1ZJRFNSQ19EUElfUlg7Cj4gLQlyZXQgPSBy ZWdtYXBfd3JpdGUodGMtPnJlZ21hcCwgU1lTQ1RSTCwgdmFsdWUpOwo+ICsJcmV0ID0gcmVnbWFw X3dyaXRlKHRjLT5yZWdtYXAsIFNZU0NUUkwsCj4gKwkJCSAgIERQMF9BVURTUkNfTk9fSU5QVVQg fCBEUDBfVklEU1JDX0RQSV9SWCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAg IAo+IEBAIC0xMjIwLDM5ICsxMTk4LDQ0IEBAIHN0YXRpYyB2b2lkIHRjX2JyaWRnZV9wcmVfZW5h YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gICAJZHJtX3BhbmVsX3ByZXBhcmUodGMt PnBhbmVsKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCB0Y19icmlkZ2VfZW5hYmxlKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3N0YXRpYyBpbnQgX190Y19icmlkZ2VfZW5hYmxlKHN0 cnVjdCB0Y19kYXRhICp0YykKPiAgIHsKPiAtCXN0cnVjdCB0Y19kYXRhICp0YyA9IGJyaWRnZV90 b190YyhicmlkZ2UpOwo+ICAgCWludCByZXQ7Cj4gICAKPiAgIAlyZXQgPSB0Y19nZXRfZGlzcGxh eV9wcm9wcyh0Yyk7Cj4gICAJaWYgKHJldCA8IDApIHsKPiAgIAkJZGV2X2Vycih0Yy0+ZGV2LCAi ZmFpbGVkIHRvIHJlYWQgZGlzcGxheSBwcm9wczogJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuOwo+ ICsJCXJldHVybiByZXQ7Cj4gICAJfQo+ICAgCj4gICAJcmV0ID0gdGNfbWFpbl9saW5rX2VuYWJs ZSh0Yyk7Cj4gICAJaWYgKHJldCA8IDApIHsKPiAgIAkJZGV2X2Vycih0Yy0+ZGV2LCAibWFpbiBs aW5rIGVuYWJsZSBlcnJvcjogJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuOwo+ICsJCXJldHVybiBy ZXQ7Cj4gICAJfQo+ICAgCj4gICAJcmV0ID0gdGNfc3RyZWFtX2VuYWJsZSh0Yyk7Cj4gICAJaWYg KHJldCA8IDApIHsKPiAgIAkJZGV2X2Vycih0Yy0+ZGV2LCAibWFpbiBsaW5rIHN0cmVhbSBzdGFy dCBlcnJvcjogJWRcbiIsIHJldCk7Cj4gICAJCXRjX21haW5fbGlua19kaXNhYmxlKHRjKTsKPiAt CQlyZXR1cm47Cj4gICAJfQo+ICAgCj4gLQlkcm1fcGFuZWxfZW5hYmxlKHRjLT5wYW5lbCk7Cj4g KwlyZXR1cm4gcmV0Owo+ICAgfQoKTWF5YmUgaXQncyBqdXN0IG1lLCBidXQgSSByYXRoZXIgaGF2 ZSB0aGUgbGFzdCBpZigpIGJsb2NrIGRvIGEgInJldHVybiAKcmV0IjsgYW5kIGhhdmUgInJldHVy biAwOyIgYXQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gdG8ga2VlcCBhbGwgdGhlIGlmIApibG9j a3MgY29uc2lzdGVudC4KCj4gICAKPiAtc3RhdGljIHZvaWQgdGNfYnJpZGdlX2Rpc2FibGUoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiArc3RhdGljIHZvaWQgdGNfYnJpZGdlX2VuYWJsZShz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ICAgewo+ICAgCXN0cnVjdCB0Y19kYXRhICp0YyA9 IGJyaWRnZV90b190YyhicmlkZ2UpOwo+IC0JaW50IHJldDsKPiAgIAo+IC0JZHJtX3BhbmVsX2Rp c2FibGUodGMtPnBhbmVsKTsKPiArCWlmIChfX3RjX2JyaWRnZV9lbmFibGUodGMpIDwgMCkKPiAr CQlyZXR1cm47Cj4gKwo+ICsJZHJtX3BhbmVsX2VuYWJsZSh0Yy0+cGFuZWwpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IF9fdGNfYnJpZGdlX2Rpc2FibGUoc3RydWN0IHRjX2RhdGEgKnRjKQo+ICt7 Cj4gKwlpbnQgcmV0Owo+ICAgCj4gICAJcmV0ID0gdGNfc3RyZWFtX2Rpc2FibGUodGMpOwo+ICAg CWlmIChyZXQgPCAwKQo+IEBAIC0xMjYxLDYgKzEyNDQsMTYgQEAgc3RhdGljIHZvaWQgdGNfYnJp ZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAgIAlyZXQgPSB0Y19tYWlu X2xpbmtfZGlzYWJsZSh0Yyk7Cj4gICAJaWYgKHJldCA8IDApCj4gICAJCWRldl9lcnIodGMtPmRl diwgIm1haW4gbGluayBkaXNhYmxlIGVycm9yOiAlZFxuIiwgcmV0KTsKPiArCj4gKwlyZXR1cm4g cmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0Y19icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlKQo+ICt7Cj4gKwlzdHJ1Y3QgdGNfZGF0YSAqdGMgPSBicmlkZ2VfdG9f dGMoYnJpZGdlKTsKPiArCj4gKwlkcm1fcGFuZWxfZGlzYWJsZSh0Yy0+cGFuZWwpOwo+ICsJX190 Y19icmlkZ2VfZGlzYWJsZSh0Yyk7Cj4gICB9CgpNYXliZSBoYXZlIHRoaXMgZW5hYmxlL2Rpc2Fi bGUgY2hhbmdlIGFzIGEgc2VwYXJhdGUgcGF0Y2g/Cgo+ICAgCj4gICBzdGF0aWMgdm9pZCB0Y19i cmlkZ2VfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gQEAgLTEzNzIs NiArMTM2NSw3NyBAQCBzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyB0Y19jb25uZWN0 b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZQo+ICAgCQlyZXR1cm4gY29ubmVj dG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gICB9Cj4gICAKPiArc3RhdGljIGludCB0Y190c3Rj dGxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gK3sKPiArCXN0cnVjdCB0Y19kYXRhICp0YyA9 IGRhdGE7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChGSUVMRF9HRVQoQ09MT1JfQkFSX01PREUs IHZhbCkgPT0gQ09MT1JfQkFSX01PREVfTk9STUFMKSB7Cj4gKwkJcmV0ID0gcmVnbWFwX3dyaXRl KHRjLT5yZWdtYXAsIFNZU0NUUkwsIERQMF9WSURTUkNfRFBJX1JYKTsKPiArCQlpZiAocmV0KSB7 Cj4gKwkJCWRldl9lcnIodGMtPmRldiwKPiArCQkJCSJmYWlsZWQgdG8gc2VsZWN0IGRwaSB2aWRl byBzdHJlYW1cbiIpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCj4gKwkJcmV0ID0gcmVn bWFwX3dyaXRlKHRjLT5yZWdtYXAsIFRTVENUTCwgdmFsIHwgRU5JMkNGSUxURVIpOwo+ICsJCWlm IChyZXQpIHsKPiArCQkJZGV2X2Vycih0Yy0+ZGV2LCAiZmFpbGVkIHRvIHNldCBUU1RDVExcbiIp Owo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCj4gKwkJcmV0ID0gdGNfcHhsX3BsbF9kaXMo dGMpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJZGV2X2Vycih0Yy0+ZGV2LCAiZmFpbGVkIHRvIGRp c2FibGUgUExMXG4iKTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCS8qCj4gKwkJ ICogUmUtZXN0YWJsaXNoIERQIGxpbmsKPiArCQkgKi8KPiArCQlyZXQgPSBfX3RjX2JyaWRnZV9k aXNhYmxlKHRjKTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiArCQlyZXQg PSBfX3RjX2JyaWRnZV9lbmFibGUodGMpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7 Cj4gKwl9IGVsc2Ugewo+ICsJCXJldCA9IHRjX3B4bF9wbGxfZW4odGMsIGNsa19nZXRfcmF0ZSh0 Yy0+cmVmY2xrKSwKPiArCQkJCSAgICAxMDAwICogdGMtPm1vZGUuY2xvY2spOwo+ICsJCWlmIChy ZXQpIHsKPiArCQkJZGV2X2Vycih0Yy0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBQTExcbiIpOwo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCj4gKwkJcmV0ID0gcmVnbWFwX3dyaXRlKHRjLT5y ZWdtYXAsIFRTVENUTCwgdmFsIHwgRU5JMkNGSUxURVIpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJ ZGV2X2Vycih0Yy0+ZGV2LCAiZmFpbGVkIHRvIHNldCBUU1RDVExcbiIpOwo+ICsJCQlyZXR1cm4g cmV0Owo+ICsJCX0KPiArCj4gKwkJcmV0ID0gcmVnbWFwX3dyaXRlKHRjLT5yZWdtYXAsIFNZU0NU UkwsIERQMF9WSURTUkNfQ09MT1JfQkFSKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCWRldl9lcnIo dGMtPmRldiwgImZhaWxlZCB0byBjb2xvciBiYXIgdmlkZW8gc3RyZWFtXG4iKTsKPiArCQkJcmV0 dXJuIHJldDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK0RFRklO RV9TSU1QTEVfQVRUUklCVVRFKHRjX3RzdGN0bF9mb3BzLCBOVUxMLCB0Y190c3RjdGxfc2V0LCAi JWxsdVxuIik7Cj4gKwo+ICtzdGF0aWMgaW50IHRjX2xhdGVfcmVnaXN0ZXIoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJaWYgKGNvbm5lY3Rvci0+ZGVidWdmc19lbnRy eSkKPiArCQlkZWJ1Z2ZzX2NyZWF0ZV9maWxlX3Vuc2FmZSgidHN0Y3RsIiwgMDY0NCwKPiArCQkJ CQkgICBjb25uZWN0b3ItPmRlYnVnZnNfZW50cnksCj4gKwkJCQkJICAgY29ubmVjdG9yX3RvX3Rj KGNvbm5lY3RvciksCj4gKwkJCQkJICAgJnRjX3RzdGN0bF9mb3BzKTsKPiArCXJldHVybiAwOwo+ ICt9CgpJIHZlcnkgcmVjZW50bHkgd2FudGVkIHRvIGFkZCBxdWljayBkZWJ1Z2ZzIGZ1bmN0aW9u YWxpdHkgdG8gYSBicmlkZ2UgCnRvbywgYnV0IGFzIHRoZXJlIGRpZG4ndCBzZWVtIGFuIGVhc3kg d2F5IHRvIGRvIGl0LCBJIGp1c3QgbGF6aWx5IGFkZGVkIAp0aGUgZGVidWdmcyBmaWxlcyB0byB0 aGUgZGVidWdmcyByb290Li4uCgpJJ20gbm90IHN1cmUgaWYgYWRkaW5nIGJyaWRnZSdzIGRlYnVn ZnMgZmlsZXMgdG8gY29ubmVjdG9yJ3MgZGlyZWN0b3J5IAppcyBhIGdvb2QgaWRlYS4gV2hhdCBp ZiB3ZSBoYXZlIHR3byBicmlkZ2VzLCBib3RoIGhhdmUgdGhlIHNhbWUgZGVidWdmcyAKZmlsZT8g T3IgZXZlbiBpZiB0aGVyZSdzIG5vIGNvbmZsaWN0LCB0aGVyZSdzIGFsc28gbm8gd2F5IHRvIGtu b3cgd2hpY2ggCmJyaWRnZSBhIHBhcnRpY3VsYXIgZGVidWdmcyBmaWxlIGJlbG9uZ3MgdG8uCgpN YXliZSB3ZSBuZWVkIHNvbWUgRFJNIGluZnJhc3RydWN0dXJlIGZvciBicmlkZ2UgZGVidWdmcz8K CiAgVG9taQoKLS0gClRleGFzIEluc3RydW1lbnRzIEZpbmxhbmQgT3ksIFBvcmtrYWxhbmthdHUg MjIsIDAwMTgwIEhlbHNpbmtpLgpZLXR1bm51cy9CdXNpbmVzcyBJRDogMDYxNTUyMS00LiBLb3Rp cGFpa2thL0RvbWljaWxlOiBIZWxzaW5raQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWw=