From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915: GPIO for CHT generic MIPI Date: Thu, 25 Feb 2016 17:37:22 +0200 Message-ID: <20160225153722.GK15993@intel.com> References: <1456321426-28074-1-git-send-email-m.deepak@intel.com> <1456321426-28074-2-git-send-email-m.deepak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id A7F9C6E8E0 for ; Thu, 25 Feb 2016 15:37:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1456321426-28074-2-git-send-email-m.deepak@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Deepak M Cc: Jani Nikula , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMjQsIDIwMTYgYXQgMDc6MTM6NDZQTSArMDUzMCwgRGVlcGFrIE0gd3JvdGU6 Cj4gRnJvbTogWW9nZXNoIE1vaGFuIE1hcmltdXRodSA8eW9nZXNoLm1vaGFuLm1hcmltdXRodUBp bnRlbC5jb20+Cj4gCj4gVGhlIEdQSU8gY29uZmlndXJhdGlvbiBhbmQgcmVnaXN0ZXIgb2Zmc2V0 cyBhcmUgZGlmZmVyZW50IGZyb20KPiBiYXl0cmFpbCBmb3IgY2hlcnJ5dHJhaWwuIFBvcnQgdGhl IGdwaW8gcHJvZ3JhbW1pbmcgYWNjb3JkaW5nbHkKPiBmb3IgY2hlcnJ5dHJhaWwgaW4gdGhpcyBw YXRjaC4KPiAKPiB2MjogUmVtb3ZpbmcgdGhlIGR1cGxpY2F0aW9uIG9mIHBhcnNpbmcKPiAKPiB2 MzogTW92ZWQgdGhlIG1hY3JvIGRlZiB0byBwYW5lbF92YnQuYyBmaWxlCj4gCj4gQ2M6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IEphbmkgTmlr dWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogWW9nZXNoIE1vaGFu IE1hcmltdXRodSA8eW9nZXNoLm1vaGFuLm1hcmltdXRodUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9m Zi1ieTogRGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpX3BhbmVsX3ZidC5jIHwgMTIzICsrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3Bh bmVsX3ZidC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BhbmVsX3ZidC5jCj4g aW5kZXggNzk0YmQxZi4uNmI5YTFmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kc2lfcGFuZWxfdmJ0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kc2lfcGFuZWxfdmJ0LmMKPiBAQCAtNTgsNiArNTgsMjggQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgdmJ0X3BhbmVsICp0b192YnRfcGFuZWwoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gIAo+ ICAjZGVmaW5lIE5TX0tIWl9SQVRJTyAxMDAwMDAwCj4gIAo+ICsjZGVmaW5lIENIVl9JT1NGX1BP UlRfR1BJT19OICAgICAgICAgICAgICAgICAweDEzCj4gKyNkZWZpbmUgQ0hWX0lPU0ZfUE9SVF9H UElPX1NFICAgICAgICAgICAgICAgIDB4NDgKPiArI2RlZmluZSBDSFZfSU9TRl9QT1JUX0dQSU9f U1cgICAgICAgICAgICAgICAgMHhCMgo+ICsjZGVmaW5lIENIVl9JT1NGX1BPUlRfR1BJT19FICAg ICAgICAgICAgICAgICAweEE4CgpUaGVzZSBzaG91bGQgaGF2ZSByZW1haW5lZCB3aGVyZSB0aGUg b3RoZXIgcG9ydHMgd2VyZSBkZWZpbmVkLgoKPiArI2RlZmluZSBDSFZfTUFYX0dQSU9fTlVNX04g ICAgICAgICAgICAgICAgICAgNzIKPiArI2RlZmluZSBDSFZfTUFYX0dQSU9fTlVNX1NFICAgICAg ICAgICAgICAgICAgOTkKPiArI2RlZmluZSBDSFZfTUFYX0dQSU9fTlVNX1NXICAgICAgICAgICAg ICAgICAgMTk3Cj4gKyNkZWZpbmUgQ0hWX01JTl9HUElPX05VTV9TRSAgICAgICAgICAgICAgICAg IDczCj4gKyNkZWZpbmUgQ0hWX01JTl9HUElPX05VTV9TVyAgICAgICAgICAgICAgICAgIDEwMAo+ ICsjZGVmaW5lIENIVl9NSU5fR1BJT19OVU1fRSAgICAgICAgICAgICAgICAgICAxOTgKCkkgbmV2 ZXIgZ290IGFueSBleHBsYW5hdGlvbiB3aGVyZSB0aGUgYmxvY2sgc2l6ZXMgY2FtZSBmcm9tIG9u IFZMVi4KSUlSQyB3aGVuIEkgY2hlY2tlZCB0aGVtIGFnYWluc3QgY29uZmlnZGIgdGhleSBkaWRu J3QgbWF0Y2ggdGhlIGFjdHVhbApudW1iZXIgb2YgcGlucyBpbiB0aGUgaGFyZHdhcmUgYmxvY2su IEFuZCB0aGUgc2FtZSBzdG9yeSBjb250aW51ZXMgaGVyZS4KRWcuIGlmIEkgY2hlY2sgY29uZmln ZmIgdGhlIG51bWJlciBvZiBwaW5zIGluIGVhY2ggYmxvY2sgaXM6Ck4gNTksIFNFIDU1LCBTVyA1 NiwgRSAyNC4KClNvIEkgY2FuJ3QgcmV2aWV3IHRoaXMgdW50aWwgc29tZW9uZSBleHBsYWlucyB3 aGVyZSB0aGlzIHN0dWZmIGNvbWVzCmZyb20uIEFuZCB0aGVyZSBzaG91bGQgcHJvYmFibHkgYmUg YSBjb21tZW50IG5leHQgdG8gdGhlIGRlZmluZXMgdG8KcmVtaW5kIHRoZSBuZXh0IGd1eSB3aG8g Z2V0cyB0b3RhbGx5IGNvbmZ1c2VkIGJ5IHRoaXMuCgpBbHNvIEkgZG9uJ3QgbGlrZSB0aGUgZmFj dCB0aGF0IFZMViBhbmQgQ0hWIGFyZSBub3cgaW1wbGVtZW50ZWQgaW4gdHdvCnRvdGFsbHkgZGlm ZmVyZW50IHdheXMuIENhbiB5b3UgZWxpbWluYXRlIHRoZSBtYXNzaXZlIGdwaW8gdGFibGUgZnJv bQp0aGUgVkxWIGNvZGUgdG8gbWFrZSBpdCBtb3JlIHNpbWlsYXIgdG8gdGhpcz8KCj4gKwo+ICsj ZGVmaW5lIENIVl9QQURfRk1MWV9CQVNFICAgICAgICAgICAgICAgICAgICAweDQ0MDAKPiArI2Rl ZmluZSBDSFZfUEFEX0ZNTFlfU0laRSAgICAgICAgICAgICAgICAgICAgMHg0MDAKPiArI2RlZmlu ZSBDSFZfUEFEX0NGR18wXzFfUkVHX1NJWkUgICAgICAgICAgICAgMHg4Cj4gKyNkZWZpbmUgQ0hW X1BBRF9DRkdfUkVHX1NJWkUgICAgICAgICAgICAgICAgIDB4NAo+ICsjZGVmaW5lIENIVl9WQlRf TUFYX1BJTlNfUEVSX0ZNTFkgICAgICAgICAgICAxNQoKSSB0YWtlIGl0IHRoaXMgbWFnaWMgMTUg bXVzdCBiZSBzcGVjaWZpZWQgaW4gc29tZSBWQlQgc3BlYyBvciBzb21ldGhpbmc/IAoKPiArCj4g KyNkZWZpbmUgQ0hWX0dQSU9fQ0ZHX1VOTE9DSyAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAw MAo+ICsjZGVmaW5lIENIVl9HUElPX0NGR19ISVogICAgICAgICAgICAgICAgICAgICAgIDB4MDAw MDgxMDAKClRoYXQncyBub3QgcmVhbGx5IGhpLXogaXMgaXQ/IEl0J3MgR1BPIG1vZGUgYWN0dWFs bHkgdy8gdHhzdGF0ZT0wLgpJIHdvdWxkIHN1Z2dlc3QgYWRkaW5nIHNlcGFyYXRlIGRlZmluZXMg Zm9yIGVhY2ggYml0IHNvIGl0J3MKZWFzaWVyIHRvIHNlZSB3aGF0IGlzIHJlYWxseSBzZXQgYW5k IHdoYXQgaXNuJ3QuCgo+ICsjZGVmaW5lIENIVl9HUElPX0NGR19UWF9TVEFURV9TSElGVCAgICAg ICAgICAgIDEKCkNvdWxkIGJlIHNvbWV0aGluZyBsaWtlCiNkZWZpbmUgQ0hWX0dQSU9fQ0ZHMF9U WF9TVEFURShzdGF0ZSkgKChzdGF0ZSkgPDwgMSkKCj4gKwo+ICsKPiAgI2RlZmluZSBWTFZfSFZf RERJMF9IUERfR1BJT05DXzBfUENPTkYwICAgICAgICAgICAgIDB4NDEzMAo+ICAjZGVmaW5lIFZM Vl9IVl9EREkwX0hQRF9HUElPTkNfMF9QQUQgICAgICAgICAgICAgICAgMHg0MTM4Cj4gICNkZWZp bmUgVkxWX0hWX0RESTBfRERDX1NEQV9HUElPTkNfMV9QQ09ORjAgICAgICAgICAweDQxMjAKPiBA QCAtNjg1LDM0ICs3MDcsMTMgQEAgc3RhdGljIGNvbnN0IHU4ICptaXBpX2V4ZWNfZGVsYXkoc3Ry dWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCBjb25zdCB1OCAqZGF0YSkKPiAgCXJldHVybiBkYXRh Owo+ICB9Cj4gIAo+IC1zdGF0aWMgY29uc3QgdTggKm1pcGlfZXhlY19ncGlvKHN0cnVjdCBpbnRl bF9kc2kgKmludGVsX2RzaSwgY29uc3QgdTggKmRhdGEpCj4gK3ZvaWQgdmx2X3Byb2dyYW1fZ3Bp byhzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHU4IGdwaW8sIHU4IGFjdGlvbikKPiAgewo+ IC0JdTggZ3BpbywgYWN0aW9uOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2Rz aS0+YmFzZS5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAl1MTYgZnVuY3Rpb24sIHBhZDsKPiAgCXUzMiB2YWw7Cj4g IAl1OCBwb3J0Owo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RzaS0+YmFzZS5i YXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gLQo+IC0JRFJNX0RFQlVHX0RSSVZFUigiTUlQSTogZXhlY3V0aW5nIGdwaW8g ZWxlbWVudFxuIik7Cj4gLQo+IC0JaWYgKGRldl9wcml2LT52YnQuZHNpLnNlcV92ZXJzaW9uID49 IDMpCj4gLQkJZGF0YSsrOwo+IC0KPiAtCWdwaW8gPSAqZGF0YSsrOwo+IC0KPiAtCS8qIHB1bGwg dXAvZG93biAqLwo+IC0JYWN0aW9uID0gKmRhdGErKyAmIDE7Cj4gLQo+IC0JaWYgKGdwaW8gPj0g QVJSQVlfU0laRShndGFibGUpKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygidW5rbm93biBncGlvICV1 XG4iLCBncGlvKTsKPiAtCQlnb3RvIG91dDsKPiAtCX0KPiAtCj4gLQlpZiAoIUlTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiR1BJTyBlbGVtZW50IG5vdCBzdXBw b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxuIik7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gIAo+ICAJ aWYgKGRldl9wcml2LT52YnQuZHNpLnNlcV92ZXJzaW9uID49IDMpIHsKPiAgCQlpZiAoZ3BpbyA8 PSBJT1NGX01BWF9HUElPX05VTV9OQykgewo+IEBAIC03MjgsNyArNzI5LDcgQEAgc3RhdGljIGNv bnN0IHU4ICptaXBpX2V4ZWNfZ3BpbyhzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIGNvbnN0 IHU4ICpkYXRhKQo+ICAJCQlwb3J0ID0gSU9TRl9QT1JUX0dQSU9fU1VTOwo+ICAJCX0gZWxzZSB7 Cj4gIAkJCURSTV9FUlJPUigiR1BJTyBudW1iZXIgaXMgbm90IHByZXNlbnQgaW4gdGhlIHRhYmxl XG4iKTsKPiAtCQkJZ290byBvdXQ7Cj4gKwkJCXJldHVybjsKPiAgCQl9Cj4gIAl9IGVsc2Ugewo+ ICAJCXBvcnQgPSBJT1NGX1BPUlRfR1BJT19OQzsKPiBAQCAtNzUwLDYgKzc1MSw3OCBAQCBzdGF0 aWMgY29uc3QgdTggKm1pcGlfZXhlY19ncGlvKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwg Y29uc3QgdTggKmRhdGEpCj4gIAkvKiBwdWxsIHVwL2Rvd24gKi8KPiAgCXZsdl9pb3NmX3NiX3dy aXRlKGRldl9wcml2LCBwb3J0LCBwYWQsIHZhbCk7Cj4gIAltdXRleF91bmxvY2soJmRldl9wcml2 LT5zYl9sb2NrKTsKPiArfQo+ICsKPiArdm9pZCBjaHZfcHJvZ3JhbV9ncGlvKHN0cnVjdCBpbnRl bF9kc2kgKmludGVsX2RzaSwgdTggZ3BpbywgdTggYWN0aW9uKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gaW50ZWxfZHNpLT5iYXNlLmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXUxNiBmdW5jdGlv biwgcGFkOwo+ICsJdTE2IGZhbWlseV9udW07Cj4gKwl1OCBibG9jazsKPiArCj4gKwlpZiAoZGV2 X3ByaXYtPnZidC5kc2kuc2VxX3ZlcnNpb24gPj0gMykgewo+ICsJCWlmIChncGlvIDw9IENIVl9N QVhfR1BJT19OVU1fTikgewo+ICsJCQlibG9jayA9IENIVl9JT1NGX1BPUlRfR1BJT19OOwo+ICsJ CQlEUk1fREVCVUdfRFJJVkVSKCJHUElPIGlzIGluIHRoZSBub3J0aCBCbG9ja1xuIik7Cj4gKwkJ fSBlbHNlIGlmIChncGlvIDw9IENIVl9NQVhfR1BJT19OVU1fU0UpIHsKPiArCQkJYmxvY2sgPSBD SFZfSU9TRl9QT1JUX0dQSU9fU0U7Cj4gKwkJCWdwaW8gPSBncGlvIC0gQ0hWX01JTl9HUElPX05V TV9TRTsKPiArCQkJRFJNX0RFQlVHX0RSSVZFUigiR1BJTyBpcyBpbiB0aGUgc291dGggZWFzdCBC bG9ja1xuIik7Cj4gKwkJfSBlbHNlIGlmIChncGlvIDw9IENIVl9NQVhfR1BJT19OVU1fU1cpIHsK PiArCQkJYmxvY2sgPSBDSFZfSU9TRl9QT1JUX0dQSU9fU1c7Cj4gKwkJCWdwaW8gPSBncGlvIC0g Q0hWX01JTl9HUElPX05VTV9TVzsKPiArCQkJRFJNX0RFQlVHX0RSSVZFUigiR1BJTyBpcyBpbiB0 aGUgc291dGggd2VzdCBCbG9ja1xuIik7Cj4gKwkJfSBlbHNlIHsKPiArCQkJYmxvY2sgPSBDSFZf SU9TRl9QT1JUX0dQSU9fRTsKPiArCQkJZ3BpbyA9IGdwaW8gLSBDSFZfTUlOX0dQSU9fTlVNX0U7 Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIkdQSU8gaXMgaW4gdGhlIGVhc3QgQmxvY2tcbiIpOwo+ ICsJCX0KPiArCX0gZWxzZQo+ICsJCWJsb2NrID0gSU9TRl9QT1JUX0dQSU9fTkM7Cj4gKwo+ICsJ ZmFtaWx5X251bSA9ICBncGlvIC8gQ0hWX1ZCVF9NQVhfUElOU19QRVJfRk1MWTsKPiArCWdwaW8g PSBncGlvIC0gKGZhbWlseV9udW0gKiBDSFZfVkJUX01BWF9QSU5TX1BFUl9GTUxZKTsKCldyaXRp bmcgdGhpcyBzZWNvbmQgcGFydCB3aXRoICUgbWlnaHQgbWFrZSBpdCBhIGJpdCBtb3JlIG9idmlv dXMuCgo+ICsJcGFkID0gQ0hWX1BBRF9GTUxZX0JBU0UgKyAoZmFtaWx5X251bSAqIENIVl9QQURf Rk1MWV9TSVpFKSArCj4gKwkJKCgodTE2KWdwaW8pICogQ0hWX1BBRF9DRkdfMF8xX1JFR19TSVpF KTsKClRoYXQgY291bGQgYmUgYmFrZWQgaW50byBhIG5lYXQgcGFyYW1ldHJpemVkIGRlZmluZSBl Zy4KI2RlZmluZSBDSFZfR1BJT19QQURfQ0ZHMChmYW1pbHksIGdwaW8pICgweDQ0MDAgKyAoZmFt aWx5KSAqIDB4NDAwICsgKGdwaW8pICogOCkKCj4gKwlmdW5jdGlvbiA9IHBhZCArIENIVl9QQURf Q0ZHX1JFR19TSVpFOwoKZGl0dG8KI2RlZmluZSBDSFZfR1BJT19QQURfQ0ZHMShmYW1pbHksIGdw aW8pIC4uLgoKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZf aW9zZl9zYl93cml0ZShkZXZfcHJpdiwgYmxvY2ssIGZ1bmN0aW9uLAo+ICsJCQlDSFZfR1BJT19D RkdfVU5MT0NLKTsKCklzIGl0IE9LIHRvIGNsZWFyIGFsbCB0aGUgYml0cyB0aGF0IGRlZmF1bHQg dG8gMT8gcGFya21vZGUsaHlzY3RsIGV0Yy4KCj4gKwl2bHZfaW9zZl9zYl93cml0ZShkZXZfcHJp diwgYmxvY2ssIHBhZCwgQ0hWX0dQSU9fQ0ZHX0hJWiB8Cj4gKwkJCShhY3Rpb24gPDwgQ0hWX0dQ SU9fQ0ZHX1RYX1NUQVRFX1NISUZUKSk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9s b2NrKTsKPiArCj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCB1OCAqbWlwaV9leGVjX2dwaW8oc3Ry dWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCBjb25zdCB1OCAqZGF0YSkKPiArewo+ICsJdTggZ3Bp bywgYWN0aW9uOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RzaS0+YmFzZS5i YXNlLmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiTUlQSTogZXhlY3V0aW5nIGdwaW8g ZWxlbWVudFxuIik7Cj4gKwo+ICsJaWYgKGRldl9wcml2LT52YnQuZHNpLnNlcV92ZXJzaW9uID49 IDMpCj4gKwkJZGF0YSsrOwo+ICsKPiArCWdwaW8gPSAqZGF0YSsrOwo+ICsKPiArCS8qIHB1bGwg dXAvZG93biAqLwo+ICsJYWN0aW9uID0gKmRhdGErKyAmIDE7Cj4gKwo+ICsJaWYgKGdwaW8gPj0g QVJSQVlfU0laRShndGFibGUpKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygidW5rbm93biBncGlvICV1 XG4iLCBncGlvKTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQo+ICsJCXZsdl9wcm9ncmFtX2dwaW8oaW50ZWxfZHNpLCBncGlvLCBhY3Rpb24pOwo+ ICsJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICsJCWNodl9wcm9ncmFtX2dwaW8oaW50 ZWxfZHNpLCBncGlvLCBhY3Rpb24pOwo+ICsJZWxzZQo+ICsJCURSTV9FUlJPUigiR1BJTyBwcm9n cmFtbWluZyBtaXNzaW5nIGZvciB0aGlzIHBsYXRmb3JtLlxuIik7Cj4gIAo+ICBvdXQ6Cj4gIAly ZXR1cm4gZGF0YTsKPiAtLSAKPiAxLjkuMQoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==