From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 619016E071 for ; Sat, 22 Sep 2018 23:34:15 +0000 (UTC) Message-ID: <34585a8ffd6902ca1e6e706377fc5aa22f2409c8.camel@intel.com> From: Dhinakaran Pandiyan Date: Sat, 22 Sep 2018 16:34:10 -0700 In-Reply-To: <20180914235702.27428-1-tarun.vyas@intel.com> References: <20180914235702.27428-1-tarun.vyas@intel.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v3] tools: Add a simple tool to read/write/decode dpcd registers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: dhinakaran.pandiyan@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Tarun Vyas , igt-dev@lists.freedesktop.org Cc: rodrigo.vivi@intel.com List-ID: T24gRnJpLCAyMDE4LTA5LTE0IGF0IDE2OjU3IC0wNzAwLCBUYXJ1biBWeWFzIHdyb3RlOgo+IFRo aXMgdG9vbCBzZXJ2ZXMgYXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgY29uc3RydWN0cyBwcm92aWRl ZCBieSB0aGUKPiBkcm1fZHBjZF9hdXhfZGV2IGtlcm5lbCBtb2R1bGUgYnkgd29ya2luZyBvbiB0 aGUgL2Rldi9kcm1fZHBfYXV4W25dCj4gZGV2aWNlcyBjcmVhdGVkIGJ5IHRoZSBrZXJuZWwgbW9k dWxlLgo+IEl0IHN1cHBvcnRzIHJlYWRpbmcgYW5kIHdyaXRpbmcgZHBjZCByZWdpc3RlcnMgb24g dGhlIGNvbm5lY3RlZCBhdXgKPiBjaGFubmVscy4KPiBJbiB0aGUgZm9sbG93LXVwIHBhdGNoLCBz dXBwb3J0IGZvciBkZWNvZGluZyB0aGVzZSByZWdpc3RlcnMgd2lsbCBiZQo+IGFkZGVkIHRvIGZh Y2lsYXRlIGRlYnVnZ2luZyBwYW5lbCByZWxhdGVkIGlzc3Vlcy4KPiAKPiB2MjogKEZpeGVzIGJ5 IFJvZHJpZ28gYnV0IG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB5ZXQpOgo+ICAgICAtIEluZGVudGF0 aW9ucywgVHlwbywgTWlzc2VkIHNwYWNlcwo+ICAgICAtIFJlbW92aW5nIG1lbnRpb25pbmcgdG8g ZGVjb2RlIGFuZCBzcGVjIHRoYXQgaXMgbm90IGltcGxlbWVudGVkCj4geWV0Lgo+ICAgICAtIEFk ZCBNYWtlZmlsZS5zb3VyY2VzIGJhY2sKPiAgICAgLSBNaXNzZWQgcy9wcmludGYvaWd0X3dhcm4K PiAKPiB2MzoKPiAgICAgLSBBZGRyZXMgREsncyByZXZpZXcgY29tbWVudHMgZnJvbSB2MiBhYm92 ZS4KPiAgICAgLSBTcXVhc2ggUm9kcmlnbydzIGZpbGUgaGFuZGxpbmcgdW5pZmljYXRpb24gcGF0 Y2guCj4gICAgIC0gTWFrZSBjb3VudCwgb2Zmc2V0IGFuZCBkZXZpY2UgaWQgb3B0aW9uYWwuCj4g Cj4gU3VnZ2VzdGVkLWJ5OiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFu QGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBUYXJ1biBWeWFzIDx0YXJ1bi52eWFzQGludGVs LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5j b20+Cj4gLS0tCj4gIHRvb2xzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEgKwo+ICB0b29scy9kcGNk X3JlZy5jICAgICAgIHwgMjEzCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ICB0b29scy9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKPiAgMyBmaWxl cyBjaGFuZ2VkLCAyMTUgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMv ZHBjZF9yZWcuYwo+IAo+IGRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5zb3VyY2VzIGIvdG9v bHMvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IGFiZDIzYTBmLi41MDcwNmY0MSAxMDA2NDQKPiAt LS0gYS90b29scy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdG9vbHMvTWFrZWZpbGUuc291cmNl cwo+IEBAIC03LDYgKzcsNyBAQCBub2luc3RfUFJPR1JBTVMgPQkJXAo+ICAKPiAgdG9vbHNfcHJv Z19saXN0cyA9CQlcCj4gIAlpZ3Rfc3RhdHMJCVwKPiArCWRwY2RfcmVnCQlcCj4gIAlpbnRlbF9h dWRpb19kdW1wCVwKPiAgCWludGVsX3JlZwkJXAo+ICAJaW50ZWxfYmFja2xpZ2h0CQlcCj4gZGlm ZiAtLWdpdCBhL3Rvb2xzL2RwY2RfcmVnLmMgYi90b29scy9kcGNkX3JlZy5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uY2Q5ZmVkNGYKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvdG9vbHMvZHBjZF9yZWcuYwo+IEBAIC0wLDAgKzEsMjEzIEBACj4gKy8qCj4gKyAqIENv cHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4gb2J0YWlu aW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZQo+ICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+IGxpbWl0YXRpb24K PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsCj4gc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPiB0aGUKPiArICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKPiBjb25k aXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4gdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4gcG9ydGlvbnMg b2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPiBFWFBSRVNTIE9SCj4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YKPiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTwo+IEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTCj4gT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4gQVJJU0lORyBGUk9NLAo+ICsgKiBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4g REVBTElOR1MgSU4gVEhFCj4gKyAqIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBEUENEIHJlZ2lzdGVy IHJlYWQvd3JpdGUgdG9vbAo+ICsgKiBUaGlzIHRvb2wgd3JhcHMgYXJvdW5kIERSTV9EUF9BVVhf REVWIG1vZHVsZSB0byBwcm92aWRlIERQQ0QKPiByZWdpc3RlciByZWFkCj4gKyAqIGFuZCB3cml0 ZSwgc28gQ09ORklHX0RSTV9EUF9BVVhfREVWIG5lZWRzIHRvIGJlIHNldC4KPiArICovCj4gKwo+ ICsjaW5jbHVkZSAiaWd0X2NvcmUuaCIKPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRl IDxmY250bC5oPgo+ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4gKwo+ICsjZGVmaW5lIE1BWF9PRkZT RVQJMHhmMDJmZgo+ICsKPiArY29uc3QgY2hhciBhdXhfZGV2W10gPSAiL2Rldi9kcm1fZHBfYXV4 IjsKPiArCj4gK3N0YXRpYyB2b2lkIHByaW50X3VzYWdlKGNoYXIgKnRvb2wsIGludCBleGl0X2Nv ZGUpCj4gK3sKPiArCXByaW50ZigiRFBDRCByZWdpc3RlciByZWFkIGFuZCB3cml0ZSB0b29sXG5c biIpOwo+ICsJcHJpbnRmKCJUaGlzIHRvb2wgcmVxdWlyZXMgQ09ORklHX0RSTV9EUF9BVVhfQ0hB UkRFVlxuIgo+ICsJCSAidG8gYmUgc2V0IGluIHRoZSBrZXJuZWwgY29uZmlnLlxuXG4iKTsKPiAr CXByaW50ZigiVXNhZ2U6ICVzIFtPUFRJT04gLi4uXSBDT01NQU5EXG5cbiIsIHRvb2wpOwo+ICsJ cHJpbnRmKCJDT01NQU5EIGlzIG9uZSBvZjpcbiIpOwo+ICsJcHJpbnRmKCIgIHJlYWQ6CQlSZWFk IFtjb3VudF0gYnl0ZXMgZHBjZCByZWcKPiBhdCBhbiBvZmZzZXRcbiIpOwo+ICsJcHJpbnRmKCIg IHdyaXRlOglXcml0ZSBhIGRwY2QgcmVnIGF0IGFuIG9mZnNldFxuXG4iKTsKPiArCXByaW50Zigi T3B0aW9ucyBmb3IgdGhlIGFib3ZlIENPTU1BTkRTIGFyZVxuIik7Cj4gKwlwcmludGYoIiAtLWRl dmljZT1ERVZJRAkJQXV4IGRldmljZSBpZCwgYXMKPiBsaXN0ZWQgaW4gL2Rldi9kcm1fZHBfYXV4 X2RldltuXS4iCj4gKwkJCQkJIkRlZmF1bHRzIHRvIDBcbiIpOwo+ICsJcHJpbnRmKCIgLS1vZmZz ZXQ9UkVHX0FERFIJRFBDRCByZWdpc3RlciBvZmZzZXQgaW4KPiBoZXguIERlZmF1bHRzIHRvIDB4 MDBcbiIpOwo+ICsJcHJpbnRmKCIgLS1jb3VudD1CWVRFUwkJRm9yIHJlYWRzLCBzcGVjaWZ5Cj4g bnVtYmVyIG9mIGJ5dGVzIHRvIGJlIHJlYWQgZnJvbSIKPiArCQkJCQkidGhlIG9mZnNldC4gRGVm YXVsdHMgdG8KPiAxXG4iKTsKPiArCXByaW50ZigiIC0tdmFsCQkJRm9yIHdyaXRlcywgc3BlY2lm eSBhCj4gaGV4IHZhbHVlIHRvIGJlIHdyaXR0ZW5cblxuIik7Cj4gKwo+ICsJcHJpbnRmKCIgLS1o ZWxwOiBwcmludCB0aGUgdXNhZ2VcbiIpOwo+ICsKPiArCWV4aXQoZXhpdF9jb2RlKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBkcGNkX3JlYWQoaW50IGZkLCBjb25zdCB1aW50MzJfdCBvZmZzZXQs IHNpemVfdCBjb3VudCkKPiArewo+ICsJaW50IHJldCwgaTsKPiArCXZvaWQgKmJ1ZiA9IGNhbGxv Yyhjb3VudCwgc2l6ZW9mKHVpbnQ4X3QpKTsKPiArCj4gKwlpZiAoIWJ1Zikgewo+ICsJCWZwcmlu dGYoc3RkZXJyLCAiQ2FuJ3QgYWxsb2NhdGUgcmVhZCBidWZmZXJcbiIpOwo+ICsJCXJldHVybiBF Tk9NRU07Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gcHJlYWQoZmQsIGJ1ZiwgY291bnQsIG9mZnNldCk7 Cj4gKwlpZiAocmV0ICE9IGNvdW50KSB7Cj4gKwkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8g cmVhZCAtICVzXG4iLAo+IHN0cmVycm9yKGVycm5vKSk7Cj4gKwkJcmV0ID0gZXJybm87Cj4gKwkJ Z290byBvdXQ7Cj4gKwl9IGVsc2UKPiArCQlyZXQgPSBFWElUX1NVQ0NFU1M7Cj4gKwo+ICsJcHJp bnRmKCJSZWFkICV6dSBieXRlKHMpIHN0YXJ0aW5nIGF0IG9mZnNldCAleFxuXG4iLCBjb3VudCwK PiBvZmZzZXQpOwo+ICsJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCj4gKwkJcHJpbnRmKCIg JTAyeCIsICooKCh1aW50OF90ICopKGJ1ZikpICsgaSkpOwo+ICsJcHJpbnRmKCJcbiIpOwo+ICsK PiArb3V0Ogo+ICsJZnJlZShidWYpOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGlj IGludCBkcGNkX3dyaXRlKGludCBmZCwgY29uc3QgdWludDMyX3Qgb2Zmc2V0LCBjb25zdCB1aW50 OF90Cj4gdmFsKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHB3cml0ZShmZCwgKGNv bnN0IHZvaWQgKikmdmFsLCBzaXplb2YodWludDhfdCksCj4gb2Zmc2V0KTsKPiArCWlmIChyZXQg PCAwKSB7Cj4gKwkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gd3JpdGUgLSAlc1xuIiwKPiBz dHJlcnJvcihlcnJubykpOwo+ICsJCXJldHVybiBlcnJubzsKPiArCX0gZWxzZQo+ICsJCXJldHVy biBFWElUX1NVQ0NFU1M7Cj4gK30KPiArCj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKPiArewo+ICsJY2hhciBkZXZfbmFtZVsyMF07Cj4gKwlpbnQgcmV0LCBkZXZpZCwgZmQsIHZm bGFnID0gMDsKPiArCXVpbnQzMl90IG9mZnNldDsKPiArCXVpbnQ4X3QgdmFsOwo+ICsJc2l6ZV90 IGNvdW50Owo+ICsJaW50IGZpbGVfb3AgPSBPX1JET05MWTsKPiArCj4gKwllbnVtIGNvbW1hbmQg ewo+ICsJCUlOViA9IC0xLAo+ICsJCVJFQUQgPSAyLAo+ICsJCVdSSVRFLAo+ICsJfSBjbWQgPSBJ TlY7Cj4gKwo+ICsJc3RydWN0IG9wdGlvbiBsb25nb3B0c1tdID0gewo+ICsJCXsgImNvdW50IiwJ cmVxdWlyZWRfYXJndW1lbnQsCU5VTEwsCQo+IAknYycgfSwKPiArCQl7ICJkZXZpY2UiLAlyZXF1 aXJlZF9hcmd1bWVudCwJTlVMTCwJCj4gCSdkJyB9LAo+ICsJCXsgImhlbHAiLAlub19hcmd1bWVu dCwJCU5VTEwsCQo+IAknaCcgfSwKPiArCQl7ICJvZmZzZXQiLAlyZXF1aXJlZF9hcmd1bWVudCwJ TlVMTCwJCj4gCSdvJyB9LAo+ICsJCXsgInZhbHVlIiwJcmVxdWlyZWRfYXJndW1lbnQsCSZ2Zmxh ZywJCj4gCSd2JyB9LAo+ICsJCXsgMCB9Cj4gKwl9Owo+ICsKPiArCWRldmlkID0gMCwgY291bnQg PSAxLCBvZmZzZXQgPSAweDA7Cj4gKwo+ICsJd2hpbGUgKChyZXQgPSBnZXRvcHRfbG9uZyhhcmdj LCBhcmd2LCAiLTpjOmQ6aDpvOiIsCj4gbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSkgewo+ICsJCXN3 aXRjaCAocmV0KSB7Cj4gKwkJY2FzZSAnYyc6Cj4gKwkJCWNvdW50ID0gc3RydG91bChvcHRhcmcs IE5VTEwsIDEwKTsKPiArCQkJaWYgKGNvdW50ID09IFVMT05HX01BWCkgewo+ICsJCQkJZnByaW50 ZihzdGRlcnIsICJDb3VudCBhcmd1bWVudCB0b28KPiBiaWdcbiIpOwo+ICsJCQkJZXhpdChFUkFO R0UpOwo+ICsJCQl9Cj4gKwkJCWJyZWFrOwo+ICsJCWNhc2UgJ2QnOgo+ICsJCQlkZXZpZCA9IHN0 cnRvdWwob3B0YXJnLCBOVUxMLCAxMCk7Cj4gKwkJCWlmIChkZXZpZCA9PSBVTE9OR19NQVgpIHsK PiArCQkJCWZwcmludGYoc3RkZXJyLCAiRGV2aWQgYXJndW1lbnQgdG9vCj4gYmlnXG4iKTsKPiAr CQkJCWV4aXQoRVJBTkdFKTsKPiArCQkJfQo+ICsJCQlicmVhazsKPiArCQljYXNlICdoJzoKPiAr CQkJcHJpbnRfdXNhZ2UoYXJndlswXSwgRVhJVF9TVUNDRVNTKTsKPiArCQkJYnJlYWs7Cj4gKwkJ Y2FzZSAnbyc6Cj4gKwkJCW9mZnNldCA9IHN0cnRvdWwob3B0YXJnLCBOVUxMLCAxNik7Cj4gKwkJ CWlmIChvZmZzZXQgPiBNQVhfT0ZGU0VUKSB7Cj4gKwkJCQlmcHJpbnRmKHN0ZGVyciwgIk9mZnNl dCBzaG91bGQgYmUgPD0KPiAweGYwMmZmXG4iKTsKPiArCQkJCWV4aXQoRVJBTkdFKTsKPiArCQkJ fQo+ICsJCQlicmVhazsKPiArCQljYXNlIDA6Cj4gKwkJCWlmICh2ZmxhZyA9PSAndicgJiYgb3B0 YXJnKQo+ICsJCQkJdmFsID0gKHVpbnQ4X3QpIHN0cnRvdWwob3B0YXJnLAo+IE5VTEwsIDE2KTsK PiArCQkJYnJlYWs7Cj4gKwkJLyogQ29tbWFuZCBwYXJzaW5nICovCj4gKwkJY2FzZSAxOgo+ICsJ CQlpZiAoc3RyY21wKG9wdGFyZywgInJlYWQiKSA9PSAwKSB7Cj4gKwkJCQljbWQgPSBSRUFEOwo+ ICsJCQl9IGVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICJ3cml0ZSIpID09IDApIHsKPiArCQkJCWNt ZCA9IFdSSVRFOwo+ICsJCQkJZmlsZV9vcCA9IE9fV1JPTkxZOwo+ICsJCQl9Cj4gKwkJCWJyZWFr Owo+ICsJCWNhc2UgJzonOgo+ICsJCQlmcHJpbnRmKHN0ZGVyciwgIlRoZSAtJWMgb3B0aW9uIG9m ICVzCj4gcmVxdWlyZXMgYW4gYXJndW1lbnRcbiIsCj4gKwkJCQkgb3B0b3B0LCBhcmd2WzBdKTsK PiArCQkJcHJpbnRfdXNhZ2UoYXJndlswXSwgRVhJVF9GQUlMVVJFKTsKPiArCQljYXNlICc/JzoK PiArCQlkZWZhdWx0Ogo+ICsJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIC0gb3B0aW9uICVjIGlzCj4g aW52YWxpZFxuIiwgYXJndlswXSwKPiArCQkJCSBvcHRvcHQpOwo+ICsJCQlwcmludF91c2FnZShh cmd2WzBdLCBFWElUX0ZBSUxVUkUpOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoKGNvdW50ICsg b2Zmc2V0KSA+IChNQVhfT0ZGU0VUICsgMSkpIHsKPiArCQlmcHJpbnRmKHN0ZGVyciwgIk91dCBv ZiBib3VuZHMuIENvdW50ICsgT2Zmc2V0IDw9Cj4gMHhmMDMwMFxuIik7Cj4gKwkJZXhpdChFUkFO R0UpOwo+ICsJfQo+ICsKPiArCWlmICgoY21kID09IFdSSVRFKSAmJiAodmZsYWcgIT0gJ3YnKSkg ewo+ICsJCWZwcmludGYoc3RkZXJyLCAiV3JpdGUgdmFsdWUgaXMgbWlzc2luZ1xuIik7Cj4gKwkJ cHJpbnRfdXNhZ2UoYXJndlswXSwgRVhJVF9GQUlMVVJFKTsKPiArCX0KPiArCkFub3RoZXIgY2hh bmdlIHlvdSBtaWdodCB3YW50IHRvIGNvbnNpZGVyIGlzIHdyYXAgYWxsIHRoZSBwYXJzaW5nIGNv ZGUKYWJvdmUgaW4gYSBmdW5jdGlvbiBhbmQgbWFrZSBpdCBmaWxsIGEKCnN0cnVjdCBkYXRhIHsK CWludCBkZXZpZDsKCWVudW0gY29tbWFuZCBjb21tYW5kOwoJaW50IG9mZnNldDsKCWludCBjb3Vu dDsKCXVpbnQ4X3Qgd3ZhbDsKfTsKCmFuZCByZXR1cm4gZXJyb3Igb3IgMCBmcm9tIHRoZXJlLiBZ b3UgY291bGQgdXNlIGFuIHVuaW9uIGZvciBjb3VudCBhbmQKdmFsIGFzIHRoZWlyIHVzZSBpcyBt dXR1YWxseSBleGNsdXNpdmUuCgpyZXQgPSBwYXJzZV9vcHRpb25zKCZkYXRhKTsKaWYgKHJldCkg ewoJcHJpbnRfdXNhZ2UoKQoJZXhpdChyZXQpCn0KCj4gKwltZW1zZXQoZGV2X25hbWUsICdcMCcs IDIwKTsKPiArCXNucHJpbnRmKGRldl9uYW1lLCBzdHJsZW4oYXV4X2RldikgKyAzLCAiJXMlZCIs IGF1eF9kZXYsCj4gZGV2aWQpOwo+ICsKPiArCWZkID0gb3BlbihkZXZfbmFtZSwgZmlsZV9vcCk7 Cj4gKwlpZiAoZmQgPCAwKSB7Cj4gKwkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gb3BlbiAl cyBhdXggZGV2aWNlIC0KPiBlcnJvcjogJXNcbiIsIGRldl9uYW1lLAo+ICsJCQlzdHJlcnJvcihl cnJubykpOwo+ICsJCXJldHVybiBlcnJubzsKPiArCX0KPiArCj4gKwlzd2l0Y2ggKGNtZCkgewo+ ICsJY2FzZSBSRUFEOgo+ICsJCXJldCA9IGRwY2RfcmVhZChmZCwgb2Zmc2V0LCBjb3VudCk7Cj4g KwkJYnJlYWs7Cj4gKwljYXNlIFdSSVRFOgo+ICsJCXJldCA9IGRwY2Rfd3JpdGUoZmQsIG9mZnNl dCwgdmFsKTsKPiArCQlicmVhazsKPiArCWNhc2UgSU5WOgo+ICsJZGVmYXVsdDoKPiArCQlmcHJp bnRmKHN0ZGVyciwgIlBsZWFzZSBzcGVjaWZ5IGEgY29tbWFuZDoKPiByZWFkL3dyaXRlLiBTZWUg dXNhZ2VcbiIpOwo+ICsJCWNsb3NlKGZkKTsKPiArCQlwcmludF91c2FnZShhcmd2WzBdLCBFWElU X0ZBSUxVUkUpOwo+ICsJfQo+ICsJY2xvc2UoZmQpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30K PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbWVzb24uYnVpbGQgYi90b29scy9tZXNvbi5idWlsZAo+IGlu ZGV4IGU0NTE3ZDY2Li43OWYzNmFhOSAxMDA2NDQKPiAtLS0gYS90b29scy9tZXNvbi5idWlsZAo+ ICsrKyBiL3Rvb2xzL21lc29uLmJ1aWxkCj4gQEAgLTM2LDYgKzM2LDcgQEAgdG9vbHNfcHJvZ3Mg PSBbCj4gIAknaW50ZWxfd2F0ZXJtYXJrJywKPiAgCSdpbnRlbF9nZW1faW5mbycsCj4gIAknaW50 ZWxfZ3Z0Z190ZXN0JywKPiArCSdkcGNkX3JlZycsCj4gIF0KPiAgdG9vbF9kZXBzID0gaWd0X2Rl cHMKPiAgCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmln dC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=