From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: Re: [Intel-gfx] [PATCH v3 2/7] drm: Add panel orientation quirks Date: Mon, 30 Oct 2017 11:52:04 +0100 Message-ID: <8d2c94b6-df13-e3b1-4320-b5f49c4723b7@redhat.com> References: <20171023071425.5090-1-hdegoede@redhat.com> <20171023071425.5090-3-hdegoede@redhat.com> <20171030093911.oaabfvsw3auuw4s6@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171030093911.oaabfvsw3auuw4s6@phenom.ffwll.local> 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: Daniel Vetter Cc: linux-fbdev@vger.kernel.org, Bartlomiej Zolnierkiewicz , intel-gfx , Daniel Drake , Hans de Goede , dri-devel@lists.freedesktop.org, Bastien Nocera , Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org SGksCgpPbiAzMC0xMC0xNyAxMDozOSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBNb24sIE9j dCAyMywgMjAxNyBhdCAwOToxNDoyMEFNICswMjAwLCBIYW5zIGRlIEdvZWRlIHdyb3RlOgo+PiBT b21lIHg4NiBjbGFtc2hlbGwgZGVzaWduIGRldmljZXMgdXNlIHBvcnRyYWl0IHRhYmxldCBzY3Jl ZW5zIGFuZCBhIGRpc3BsYXkKPj4gZW5naW5lIHdoaWNoIGNhbm5vdCByb3RhdGUgaW4gaGFyZHdh cmUsIHNvIHRoZSBmaXJtd2FyZSBqdXN0IGxlYXZlcyB0aGluZ3MKPj4gYXMgaXMgYW5kIHdlIGNh bm5vdCBmaWd1cmUgb3V0IHRoYXQgdGhlIGRpc3BsYXkgaXMgb3JpZW50ZWQgbm9uIHVwcmlnaHQK Pj4gZnJvbSB0aGUgaGFyZHdhcmUuCj4+Cj4+IFNvIGF0IGxlYXN0IG9uIHg4Niwgd2UgbmVlZCBh IHF1aXJrIHRhYmxlIGZvciB0aGlzLiBUaGlzIGNvbW1pdCBhZGRzIGEgRE1JCj4+IGJhc2VkIHF1 aXJrIHRhYmxlIHdoaWNoIGlzIGluaXRpYWxseSBwb3B1bGF0ZWQgd2l0aCA1IHN1Y2ggZGV2aWNl czogQXN1cwo+PiBUMTAwSEEsIEdQRCBQb2NrZXQsIEdQRCB3aW4sIEkuVC5Xb3JrcyBUVzg5MSBh bmQgdGhlIFZJT1MgTFRIMTcuCj4+Cj4+IFRoaXMgcXVpcmsgdGFibGUgd2lsbCBiZSB1c2VkIGJ5 IHRoZSBkcm0gY29kZSB0byBsZXQgdXNlcnNwYWNlIGtub3cgdGhhdAo+PiB0aGUgZGlzcGxheSBp cyBub3QgbW91bnRlZCB1cHJpZ2h0IGluc2lkZSB0aGUgZGV2aWNlJ3MgY2FzZSB0aHJvdWdoIGEg bmV3Cj4+IHBhbmVsIG9yaWVudGF0aW9uIGRybS1jb25uZWN0b3IgcHJvcGVydHksIGFzIHdlbGwg YXMgdG8gdGVsbCBmYmNvbiB0bwo+PiByb3RhdGUgdGhlIGNvbnNvbGUgc28gdGhhdCBpdCBzaG93 cyB0aGUgcmlnaHQgd2F5IHVwLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBIYW5zIGRlIEdvZWRlIDxo ZGVnb2VkZUByZWRoYXQuY29tPgo+IAo+IEZvdW5kIGEgZmV3IG9yZ2FuaXphdGlvbmFsIGJpa2Vz aGVkcyBiZWxvdywgYnV0IG1ha2VzIHNlbnNlIEkgdGhpbmsuCj4gCj4+IC0tLQo+PiAgIGRyaXZl cnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwo+PiAgIGRy aXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+PiAg IGRyaXZlcnMvZ3B1L2RybS9kcm1fcGFuZWxfb3JpZW50YXRpb25fcXVpcmtzLmMgfCAxNTcgKysr KysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGluY2x1ZGUvZHJtL2RybV91dGlscy5oICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMTggKysrCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5z ZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3Bh bmVsX29yaWVudGF0aW9uX3F1aXJrcy5jCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv ZHJtL2RybV91dGlscy5oCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4+IGluZGV4IDRkOWYyMTgzMTc0MS4uOWQwMDVh Yzk4YzJiIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+PiBAQCAtMjYsNiArMjYsOSBAQCBjb25maWcgRFJNX01J UElfRFNJCj4+ICAgCWJvb2wKPj4gICAJZGVwZW5kcyBvbiBEUk0KPj4gICAKPj4gK2NvbmZpZyBE Uk1fUEFORUxfT1JJRU5UQVRJT05fUVVJUktTCj4+ICsJdHJpc3RhdGUKPiAKPiBXaHkgYSBjb25m aWcgb3B0aW9uPyBXZSBkb24ndCBtYWtlIHRoZSBlZGlkIHF1aXJrcyBvcHRpb25hbCBlaXRoZXIg Li4uCgpZb3Ugc3VnZ2VzdGVkIHRoaXMgeW91cnNlbGYgd2hpbGUgZGlzY3Vzc2luZyB2Miwgc2lu Y2UgYXQgdGhlIGVuZCBvZiB0aGUKc2VyaWVzIHRoaXMgaXMgZ29pbmcgdG8gYmUgcmVxdWlyZWQg YnkgYm90aCBmYmNvbiBhbmQgdGhlIGRybSBzZXJpZXMsIHNvCndlIG1heSB3YW50IHRvIGJ1aWxk IGl0IGV2ZW4gaWYgdGhlIGRybSBzdWJzeXMgaXMgb3RoZXJ3aXNlIG5vdCB1c2VkLgoKPj4gKwo+ PiAgIGNvbmZpZyBEUk1fRFBfQVVYX0NIQVJERVYKPj4gICAJYm9vbCAiRFJNIERQIEFVWCBJbnRl cmZhY2UiCj4+ICAgCWRlcGVuZHMgb24gRFJNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPj4gaW5kZXggYTNmZGM1YTY4 ZGZmLi5mZmI2MjE4MTliYmYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPj4gQEAgLTQ2LDYgKzQ2LDcgQEAg b2JqLSQoQ09ORklHX0RSTV9ERUJVR19NTV9TRUxGVEVTVCkgKz0gc2VsZnRlc3RzLwo+PiAgIAo+ PiAgIG9iai0kKENPTkZJR19EUk0pCSs9IGRybS5vCj4+ICAgb2JqLSQoQ09ORklHX0RSTV9NSVBJ X0RTSSkgKz0gZHJtX21pcGlfZHNpLm8KPj4gK29iai0kKENPTkZJR19EUk1fUEFORUxfT1JJRU5U QVRJT05fUVVJUktTKSArPSBkcm1fcGFuZWxfb3JpZW50YXRpb25fcXVpcmtzLm8KPiAKPiBTaW5j ZSBpdCdzIGEga21zIHRoaW5nLCBwcm9iYWJseSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGRybV9r bXNfaGVscGVyLmtvCj4gbW9kdWxlLiBUaGVyZSdzIHBhbmxlcy9icmlkZ2VzIHdoaWNoIGFsc28g c2hvdWxkIGJlIHRoZXJlIGJ1dCBhcmVuJ3QsIGJ1dAo+IHRob3NlIGFyZW4ndCB0aGUgYmVzdCBl eGFtcGxlcy4KClNlZSBteSByZXBseSBhYm92ZSB3aHkgdGhpcyBjYW5ub3QgYmUgZG9uZS4KCj4+ ICAgb2JqLSQoQ09ORklHX0RSTV9BUk0pCSs9IGFybS8KPj4gICBvYmotJChDT05GSUdfRFJNX1RU TSkJKz0gdHRtLwo+PiAgIG9iai0kKENPTkZJR19EUk1fVERGWCkJKz0gdGRmeC8KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGFuZWxfb3JpZW50YXRpb25fcXVpcmtzLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX3BhbmVsX29yaWVudGF0aW9uX3F1aXJrcy5jCj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uY2VhNGQ3MWY0OTc4Cj4+IC0tLSAv ZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wYW5lbF9vcmllbnRhdGlvbl9x dWlya3MuYwo+PiBAQCAtMCwwICsxLDE1NyBAQAo+PiArLyoKPj4gKyAqICBkcm1fcGFuZWxfb3Jp ZW50YXRpb25fcXVpcmtzLmMgLS0gUXVpcmtzIGZvciBub24tbm9ybWFsIHBhbmVsIG9yaWVudGF0 aW9uCj4+ICsgKgo+PiArICoJQ29weXJpZ2h0IChDKSAyMDE3IEhhbnMgZGUgR29lZGUgPGhkZWdv ZWRlQHJlZGhhdC5jb20+Cj4+ICsgKgo+PiArICogIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4+ICsgKiAg TGljZW5zZS4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0 aGlzIGFyY2hpdmUgZm9yCj4+ICsgKiAgbW9yZSBkZXRhaWxzLgo+PiArICovCj4+ICsKPj4gKyNp bmNsdWRlIDxsaW51eC9kbWkuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ PiArCj4+ICsjaWZkZWYgQ09ORklHX0RNSQo+PiArCj4+ICsvKgo+PiArICogU29tZSB4ODYgY2xh bXNoZWxsIGRlc2lnbiBkZXZpY2VzIHVzZSBwb3J0cmFpdCB0YWJsZXQgc2NyZWVucyBhbmQgYSBk aXNwbGF5Cj4+ICsgKiBlbmdpbmUgd2hpY2ggY2Fubm90IHJvdGF0ZSBpbiBoYXJkd2FyZSwgc28g d2UgbmVlZCB0byByb3RhdGUgdGhlIGZiY29uIHRvCj4+ICsgKiBjb21wZW5zYXRlLiBVbmZvcnR1 bmF0ZWx5IHRoZXNlIChjaGVhcCkgZGV2aWNlcyBhbHNvIHR5cGljYWxseSBoYXZlIHF1aXRlCj4+ ICsgKiBnZW5lcmljIERNSSBkYXRhLCBzbyB3ZSBtYXRjaCBvbiBhIGNvbWJpbmF0aW9uIG9mIERN SSBkYXRhLCBzY3JlZW4gcmVzb2x1dGlvbgo+PiArICogYW5kIGEgbGlzdCBvZiBrbm93biBCSU9T IGRhdGVzIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcy4KPj4gKyAqLwo+PiArCj4+ICtzdHJ1Y3Qg ZHJtX2RtaV9wYW5lbF9vcmllbnRhdGlvbl9kYXRhIHsKPj4gKwlpbnQgd2lkdGg7Cj4+ICsJaW50 IGhlaWdodDsKPj4gKwljb25zdCBjaGFyICogY29uc3QgKmJpb3NfZGF0ZXM7Cj4+ICsJaW50IG9y aWVudGF0aW9uOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZG1pX3Bh bmVsX29yaWVudGF0aW9uX2RhdGEgYXN1c190MTAwaGEgPSB7Cj4+ICsJLndpZHRoID0gODAwLAo+ PiArCS5oZWlnaHQgPSAxMjgwLAo+PiArCS5vcmllbnRhdGlvbiA9IERSTV9NT0RFX1BBTkVMX09S SUVOVEFUSU9OX0xFRlRfVVAsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9kbWlfcGFuZWxfb3JpZW50YXRpb25fZGF0YSBncGRfcG9ja2V0ID0gewo+PiArCS53aWR0aCA9 IDEyMDAsCj4+ICsJLmhlaWdodCA9IDE5MjAsCj4+ICsJLmJpb3NfZGF0ZXMgPSAoY29uc3QgY2hh ciAqIGNvbnN0IFtdKXsgIjA1LzI2LzIwMTciLCAiMDYvMjgvMjAxNyIsCj4+ICsJCSIwNy8wNS8y MDE3IiwgIjA4LzA3LzIwMTciLCBOVUxMIH0sCj4+ICsJLm9yaWVudGF0aW9uID0gRFJNX01PREVf UEFORUxfT1JJRU5UQVRJT05fUklHSFRfVVAsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9kbWlfcGFuZWxfb3JpZW50YXRpb25fZGF0YSBncGRfd2luID0gewo+PiArCS53 aWR0aCA9IDcyMCwKPj4gKwkuaGVpZ2h0ID0gMTI4MCwKPj4gKwkuYmlvc19kYXRlcyA9IChjb25z dCBjaGFyICogY29uc3QgW10pewo+PiArCQkiMTAvMjUvMjAxNiIsICIxMS8xOC8yMDE2IiwgIjEy LzIzLzIwMTYiLCAiMTIvMjYvMjAxNiIsCj4+ICsJCSIwMi8yMS8yMDE3IiwgIjAzLzIwLzIwMTci LCAiMDUvMjUvMjAxNyIsIE5VTEwgfSwKPj4gKwkub3JpZW50YXRpb24gPSBEUk1fTU9ERV9QQU5F TF9PUklFTlRBVElPTl9SSUdIVF9VUCwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2RtaV9wYW5lbF9vcmllbnRhdGlvbl9kYXRhIGl0d29ya3NfdHc4OTEgPSB7Cj4+ICsJ LndpZHRoID0gODAwLAo+PiArCS5oZWlnaHQgPSAxMjgwLAo+PiArCS5iaW9zX2RhdGVzID0gKGNv bnN0IGNoYXIgKiBjb25zdCBbXSl7ICIxMC8xNi8yMDE1IiwgTlVMTCB9LAo+PiArCS5vcmllbnRh dGlvbiA9IERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX1JJR0hUX1VQLAo+PiArfTsKPj4gKwo+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZG1pX3BhbmVsX29yaWVudGF0aW9uX2RhdGEgdmlv c19sdGgxNyA9IHsKPj4gKwkud2lkdGggPSA4MDAsCj4+ICsJLmhlaWdodCA9IDEyODAsCj4+ICsJ Lm9yaWVudGF0aW9uID0gRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fUklHSFRfVVAsCj4+ICt9 Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgb3JpZW50YXRpb25f ZGF0YVtdID0gewo+PiArCXsJLyogQXN1cyBUMTAwSEEgKi8KPj4gKwkJLm1hdGNoZXMgPSB7Cj4+ ICsJCSAgRE1JX0VYQUNUX01BVENIKERNSV9TWVNfVkVORE9SLCAiQVNVU1RlSyBDT01QVVRFUiBJ TkMuIiksCj4+ICsJCSAgRE1JX0VYQUNUX01BVENIKERNSV9QUk9EVUNUX05BTUUsICJUMTAwSEFO IiksCj4+ICsJCX0sCj4+ICsJCS5kcml2ZXJfZGF0YSA9ICh2b2lkICopJmFzdXNfdDEwMGhhLAo+ PiArCX0sIHsJLyoKPj4gKwkJICogR1BEIFBvY2tldCwgbm90ZSB0aGF0IHRoZSB0aGUgRE1JIGRh dGEgaXMgbGVzcyBnZW5lcmljIHRoZW4KPj4gKwkJICogaXQgc2VlbXMsIGRldmljZXMgd2l0aCBh IGJvYXJkLXZlbmRvciBvZiAiQU1JIENvcnBvcmF0aW9uIgo+PiArCQkgKiBhcmUgcXVpdGUgcmFy ZSwgYXMgYXJlIGRldmljZXMgd2hpY2ggaGF2ZSBib3RoIGJvYXJkLSAqYW5kKgo+PiArCQkgKiBw cm9kdWN0LWlkIHNldCB0byAiRGVmYXVsdCBTdHJpbmciCj4+ICsJCSAqLwo+PiArCQkubWF0Y2hl cyA9IHsKPj4gKwkJICBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX1ZFTkRPUiwgIkFNSSBDb3Jw b3JhdGlvbiIpLAo+PiArCQkgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwgIkRlZmF1 bHQgc3RyaW5nIiksCj4+ICsJCSAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9TRVJJQUwsICJE ZWZhdWx0IHN0cmluZyIpLAo+PiArCQkgIERNSV9FWEFDVF9NQVRDSChETUlfUFJPRFVDVF9OQU1F LCAiRGVmYXVsdCBzdHJpbmciKSwKPj4gKwkJfSwKPj4gKwkJLmRyaXZlcl9kYXRhID0gKHZvaWQg KikmZ3BkX3BvY2tldCwKPj4gKwl9LCB7CS8qIEdQRCBXaW4gKHNhbWUgbm90ZSBvbiBETUkgbWF0 Y2ggYXMgR1BEIFBvY2tldCkgKi8KPj4gKwkJLm1hdGNoZXMgPSB7Cj4+ICsJCSAgRE1JX0VYQUNU X01BVENIKERNSV9CT0FSRF9WRU5ET1IsICJBTUkgQ29ycG9yYXRpb24iKSwKPj4gKwkJICBETUlf RVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJEZWZhdWx0IHN0cmluZyIpLAo+PiArCQkgIERN SV9FWEFDVF9NQVRDSChETUlfQk9BUkRfU0VSSUFMLCAiRGVmYXVsdCBzdHJpbmciKSwKPj4gKwkJ ICBETUlfRVhBQ1RfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIkRlZmF1bHQgc3RyaW5nIiksCj4+ ICsJCX0sCj4+ICsJCS5kcml2ZXJfZGF0YSA9ICh2b2lkICopJmdwZF93aW4sCj4+ICsJfSwgewkv KiBJLlQuV29ya3MgVFc4OTEgKi8KPj4gKwkJLm1hdGNoZXMgPSB7Cj4+ICsJCSAgRE1JX0VYQUNU X01BVENIKERNSV9TWVNfVkVORE9SLCAiVG8gYmUgZmlsbGVkIGJ5IE8uRS5NLiIpLAo+PiArCQkg IERNSV9FWEFDVF9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAiVFc4OTEiKSwKPj4gKwkJICBETUlf RVhBQ1RfTUFUQ0goRE1JX0JPQVJEX1ZFTkRPUiwgIlRvIGJlIGZpbGxlZCBieSBPLkUuTS4iKSwK Pj4gKwkJICBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJUVzg5MSIpLAo+PiArCQl9 LAo+PiArCQkuZHJpdmVyX2RhdGEgPSAodm9pZCAqKSZpdHdvcmtzX3R3ODkxLAo+PiArCX0sIHsJ LyogVklPUyBMVEgxNyAqLwo+PiArCQkubWF0Y2hlcyA9IHsKPj4gKwkJICBETUlfRVhBQ1RfTUFU Q0goRE1JX1NZU19WRU5ET1IsICJWSU9TIiksCj4+ICsJCSAgRE1JX0VYQUNUX01BVENIKERNSV9Q Uk9EVUNUX05BTUUsICJMVEgxNyIpLAo+PiArCQkgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRf VkVORE9SLCAiVklPUyIpLAo+PiArCQkgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwg IkxUSDE3IiksCj4+ICsJCX0sCj4+ICsJCS5kcml2ZXJfZGF0YSA9ICh2b2lkICopJnZpb3NfbHRo MTcsCj4+ICsJfSwKPj4gKwl7fQo+PiArfTsKPj4gKwo+PiAraW50IGRybV9nZXRfcGFuZWxfb3Jp ZW50YXRpb25fcXVpcmsoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQo+PiArewo+PiArCWNvbnN0IHN0 cnVjdCBkbWlfc3lzdGVtX2lkICptYXRjaDsKPj4gKwljb25zdCBzdHJ1Y3QgZHJtX2RtaV9wYW5l bF9vcmllbnRhdGlvbl9kYXRhICpkYXRhOwo+PiArCWNvbnN0IGNoYXIgKmJpb3NfZGF0ZTsKPj4g KwlpbnQgaTsKPj4gKwo+PiArCWZvciAobWF0Y2ggPSBkbWlfZmlyc3RfbWF0Y2gob3JpZW50YXRp b25fZGF0YSk7Cj4+ICsJICAgICBtYXRjaDsKPj4gKwkgICAgIG1hdGNoID0gZG1pX2ZpcnN0X21h dGNoKG1hdGNoICsgMSkpIHsKPj4gKwkJZGF0YSA9IG1hdGNoLT5kcml2ZXJfZGF0YTsKPj4gKwo+ PiArCQlpZiAoZGF0YS0+d2lkdGggIT0gd2lkdGggfHwKPj4gKwkJICAgIGRhdGEtPmhlaWdodCAh PSBoZWlnaHQpCj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiArCQlpZiAoIWRhdGEtPmJpb3NfZGF0 ZXMpCj4+ICsJCQlyZXR1cm4gZGF0YS0+b3JpZW50YXRpb247Cj4+ICsKPj4gKwkJYmlvc19kYXRl ID0gZG1pX2dldF9zeXN0ZW1faW5mbyhETUlfQklPU19EQVRFKTsKPj4gKwkJaWYgKCFiaW9zX2Rh dGUpCj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiArCQlmb3IgKGkgPSAwOyBkYXRhLT5iaW9zX2Rh dGVzW2ldOyBpKyspIHsKPj4gKwkJCWlmICghc3RyY21wKGRhdGEtPmJpb3NfZGF0ZXNbaV0sIGJp b3NfZGF0ZSkpCj4+ICsJCQkJcmV0dXJuIGRhdGEtPm9yaWVudGF0aW9uOwo+PiArCQl9Cj4+ICsJ fQo+PiArCj4+ICsJcmV0dXJuIERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX1VOS05PV047Cj4+ ICt9Cj4+ICtFWFBPUlRfU1lNQk9MKGRybV9nZXRfcGFuZWxfb3JpZW50YXRpb25fcXVpcmspOwo+ IAo+IENhbid0IHdlIGludGVncmF0ZSB0aGlzIGludG8gZHJtX2FkZF9kaXNwbGF5X2luZm8gc28g dGhhdCBpdCBqdXN0IGdldHMKPiBhdXRvLWFkZGVkIHdoZXJldmVyIHdlIG5lZWQgaXQ/IE1heWJl IHRoZXJlJ3MgZ29pbmcgdG8gYmUgT0YgYW5kIEVESUQgd2F5cwo+IG9zIHNwZWNpZnlpbmcgdGhp cyBpbiB0aGUgZnV0dXJlIC4uLgoKZHJtX2FkZF9kaXNwbGF5X2luZm8oKSBvbmx5IGdldHMgY2Fs bGVkIGZyb20gZHJtX2FkZF9lZGlkX21vZGVzKCkgYW5kCmRzaSBwYW5lbHMsIHdoaWNoIGFyZSBh Y3R1YWxseSB0aGUgb25seSBwYW5lbHMgSSd2ZSBzby1mYXIgc2VlbiBtb3VudGVkCm5vbi11cHJp Z2h0IGRvbid0IGhhdmUgZWRpZCBpbmZvLgoKTm90ZSB0aGF0IHRoZSBxdWlya3MgYXJlIGFscmVh ZHkgYXV0b21hdGljYWxseSB1c2VkIGluCmRybV9jb25uZWN0b3JfaW5pdF9wYW5lbF9vcmllbnRh dGlvbl9wcm9wZXJ0eSgpIHdoaWNoIHRoZSAzdGggcGF0Y2g6CiJkcm06IEFkZCBzdXBwb3J0IGZv ciBhIHBhbmVsLW9yaWVudGF0aW9uIGNvbm5lY3RvciBwcm9wZXJ0eSIKYWRkcywgc28gZHJpdmVy cyBkb24ndCBuZWVkIHRvIGNhbGwgdGhlIHF1aXJrIGNvZGUgdGhlbXNlbHZlcy4KClJlZ2FyZHMs CgpIYW5zCgoKPiAtRGFuaWVsCj4gCj4+ICsKPj4gKyNlbHNlCj4+ICsKPj4gKy8qIFRoZXJlIGFy ZSBubyBxdWlya3MgZm9yIG5vbiB4ODYgZGV2aWNlcyB5ZXQgKi8KPj4gK2ludCBkcm1fZ2V0X3Bh bmVsX29yaWVudGF0aW9uX3F1aXJrKGludCB3aWR0aCwgaW50IGhlaWdodCkKPj4gK3sKPj4gKwly ZXR1cm4gRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fVU5LTk9XTjsKPj4gK30KPj4gK0VYUE9S VF9TWU1CT0woZHJtX2dldF9wYW5lbF9vcmllbnRhdGlvbl9xdWlyayk7Cj4+ICsKPj4gKyNlbmRp Zgo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3V0aWxzLmggYi9pbmNsdWRlL2RybS9k cm1fdXRpbHMuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAu LmNlYTM2MmFlYWZmZQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV91 dGlscy5oCj4+IEBAIC0wLDAgKzEsMTggQEAKPj4gKy8qCj4+ICsgKiBGdW5jdGlvbiBwcm90b3R5 cGVzIGZvciBtaXNjLiBkcm0gdXRpbGl0eSBmdW5jdGlvbnMuCj4+ICsgKiBTcGVjaWZpY2FsbHkg dGhpcyBmaWxlIGlzIGZvciBmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgd2hpY2gK Pj4gKyAqIG1heSBhbHNvIGJlIHVzZWQgb3V0c2lkZSBvZiBkcm0gY29kZSAoZS5nLiBpbiBmYmRl diBkcml2ZXJzKS4KPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSGFucyBkZSBHb2Vk ZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KPj4gKyAqCj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+PiArICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIgYXMKPj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u Lgo+PiArICovCj4+ICsKPj4gKyNpZm5kZWYgX19EUk1fVVRJTFNfSF9fCj4+ICsjZGVmaW5lIF9f RFJNX1VUSUxTX0hfXwo+PiArCj4+ICtpbnQgZHJtX2dldF9wYW5lbF9vcmllbnRhdGlvbl9xdWly ayhpbnQgd2lkdGgsIGludCBoZWlnaHQpOwo+PiArCj4+ICsjZW5kaWYKPj4gLS0gCj4+IDIuMTQu Mgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==