From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v3 6/8] drm/i915/display/icl: Enable master-slaves in trans port sync mode in correct order Date: Tue, 20 Aug 2019 14:12:20 -0700 Message-ID: <20190820211219.GB25055@intel.com> References: <20190624210850.17223-1-manasi.d.navare@intel.com> <20190624210850.17223-7-manasi.d.navare@intel.com> <69adb455-acb5-9bb9-37f2-06d4538425d4@linux.intel.com> <20190731232415.GA10872@intel.com> <0dacf4c6-2abf-adde-2ac6-c6a5b352ed84@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id BA8B66E88C for ; Tue, 20 Aug 2019 21:10:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <0dacf4c6-2abf-adde-2ac6-c6a5b352ed84@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGkgTWFhcnRlbiwKCkZvciB0aGlzIHBhdGNoLCB5b3Ugd2FudCBtZSB0byBtb2RpZnkgaXQgc3Vj aCB0aGF0IGlmIChzbGF2ZSAmJiBuZWVkc19tb2Rlc2V0KSB0aGVuCmRvbnQgZG8gYW55dGhpbmcg c2luY2UgdGhlIHNsYXZlIHVwZGF0ZSBjcnRjIGFuZCBwaXBlIGFuIGRwbGFuZSB1cGRhdGVzIHdp bGwgaGFwcGVuIHdpdGggbWFzdGVyLgoKU28gaWYobWFzdGVyICYmIG5lZWRzX21vZGVzZXQpIHsK b2J0YWluIHNsYXZlcyBmcm9tIHNsYXZlX21hc2sKb2J0YWluIGNvcnJlc3BvbmRpbmcgc2xhdmUg Y3J0YyBzdGF0ZQpOb3cgdXBkYXRlIGNydGMgYW5kIGxpbmsgdHJhaW4gZm9yIHNsYXZlcyBmaXJz dAp0aGVuIG1hc3Rlcgp0aGVuIHVwc3RhZSBwbGFuZXMsIHBpcGVfc3RhcnQsIHBpcGVfZW5kCn0K CklzIHRoaXMgaXMgdGhlIGNvcnJlY3QgbG9naWMgdGhhdCBhZGRyZXNzZXMgeW91ciByZXZpZXcg Y29tbWVudHMgYW5kIGFsaWducwp3aXRoIHRoZSA4SyAycDFwIGFwcHJvYWNoPwoKTWFuYXNpCgoK Ck9uIFRodSwgQXVnIDAxLCAyMDE5IGF0IDA1OjA3OjQ4UE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hv cnN0IHdyb3RlOgo+IE9wIDAxLTA4LTIwMTkgb20gMDE6MjQgc2NocmVlZiBNYW5hc2kgTmF2YXJl Ogo+ID4gVGhhbmtzIE1hYXJ0ZW4gZm9yIHlvdXIgcmV2aWV3IGNvbW1lbnRzLCBwbGVhc2Ugc2Vl IG15IHJlc3BvbnNlcy9xdWVzdGlvbnMgYmVsb3c6Cj4gPgo+ID4gT24gVHVlLCBKdWwgMzAsIDIw MTkgYXQgMTI6NTM6MzBQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4gPj4gT3Ag MjQtMDYtMjAxOSBvbSAyMzowOCBzY2hyZWVmIE1hbmFzaSBOYXZhcmU6Cj4gPj4+IEFzIHBlciB0 aGUgZGlzcGxheSBlbmFibGUgc2VxdWVuY2UsIHdlIG5lZWQgdG8gZm9sbG93IHRoZSBlbmFibGUg c2VxdWVuY2UKPiA+Pj4gZm9yIHNsYXZlcyBmaXJzdCB3aXRoIERQX1RQX0NUTCBzZXQgdG8gSWRs ZSBhbmQgY29uZmlndXJlIHRoZSB0cmFuc2NvZGVyCj4gPj4+IHBvcnQgc3luYyByZWdpc3RlciB0 byBzZWxlY3QgdGhlIGNvcmVyc3BvbmRpbmcgbWFzdGVyLCB0aGVuIGZvbGxvdyB0aGUKPiA+Pj4g ZW5hYmxlIHNlcXVlbmNlIGZvciBtYXN0ZXIgbGVhdmluZyBEUF9UUF9DVEwgdG8gaWRsZS4KPiA+ Pj4gQXQgdGhpcyBwb2ludCB0aGUgdHJhbnNjb2RlciBwb3J0IHN5bmMgbW9kZSBpcyBjb25maWd1 cmVkIGFuZCBlbmFibGVkCj4gPj4+IGFuZCB0aGUgVmJsYW5rcyBvZiBib3RoIHBvcnRzIGFyZSBz eW5jaHJvbml6ZWQgc28gdGhlbiBzZXQgRFBfVFBfQ1RMCj4gPj4+IGZvciB0aGUgc2xhdmUgYW5k IG1hc3RlciB0byBOb3JtYWwgYW5kIGRvIHBvc3QgY3J0YyBlbmFibGUgdXBkYXRlcy4KPiA+Pj4K PiA+Pj4gdjI6Cj4gPj4+ICogQ3JlYXRlIGEgaWNsX3VwZGF0ZV9jcnRjcyBob29rIChNYWFydGVu LCBEYW52ZXQpCj4gPj4+ICogVGhpcyBzZXF1ZW5jZSBvbmx5IGZvciBDUlRDcyBpbiB0cmFucyBw b3J0IHN5bmMgbW9kZSAoTWFhcnRlbikKPiA+Pj4KPiA+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPj4+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4+PiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+Pj4gQ2M6IE1hdHQgUm9wZXIgPG1hdHRo ZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gPj4+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUg PG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPj4+IC0tLQo+ID4+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyAgICAgfCAgIDMgKy0KPiA+Pj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIHwgMjE3ICsrKysrKysrKysrKysr KysrKy0KPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5o IHwgICA0ICsKPiA+Pj4gIDMgZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k ZGkuYwo+ID4+PiBpbmRleCA3OTI1YTE3NmY5MDAuLmJjZWI3ZTRiMTg3NyAxMDA2NDQKPiA+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwo+ID4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gPj4+IEBAIC0zMTU0 LDcgKzMxNTQsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+Pj4gIAkJCQkJICAgICAgdHJ1ZSk7Cj4gPj4+ICAJ aW50ZWxfZHBfc2lua19zZXRfZmVjX3JlYWR5KGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPiA+Pj4g IAlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKPiA+Pj4gLQlpZiAocG9ydCAh PSBQT1JUX0EgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ID4+PiArCWlmICgocG9ydCAh PSBQT1JUX0EgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSAmJgo+ID4+PiArCSAgICAhaXNf dHJhbnNfcG9ydF9zeW5jX21vZGUoY3J0Y19zdGF0ZSkpCj4gPj4+ICAJCWludGVsX2RwX3N0b3Bf bGlua190cmFpbihpbnRlbF9kcCk7Cj4gPj4+ICAKPiA+Pj4gIAlpbnRlbF9kZGlfZW5hYmxlX2Zl YyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMKPiA+Pj4gaW5kZXggNzE1NmIxYjRjNmM1Li5mODhkM2E5Mjll MzYgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCj4gPj4+IEBAIC01MjAsNiArNTIwLDI2IEBAIG5lZWRzX21vZGVzZXQoY29uc3Qg c3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+Pj4gIAlyZXR1cm4gZHJtX2F0b21pY19j cnRjX25lZWRzX21vZGVzZXQoc3RhdGUpOwo+ID4+PiAgfQo+ID4+PiAgCj4gPj4+ICtib29sCj4g Pj4+ICtpc190cmFuc19wb3J0X3N5bmNfbW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqc3RhdGUpCj4gPj4+ICt7Cj4gPj4+ICsJcmV0dXJuIChzdGF0ZS0+bWFzdGVyX3RyYW5zY29k ZXIgIT0gSU5WQUxJRF9UUkFOU0NPREVSIHx8Cj4gPj4+ICsJCXN0YXRlLT5zeW5jX21vZGVfc2xh dmVzX21hc2spOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgYm9vbAo+ID4+PiAraXNf dHJhbnNfcG9ydF9zeW5jX3NsYXZlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0 ZSkKPiA+Pj4gK3sKPiA+Pj4gKwlyZXR1cm4gc3RhdGUtPm1hc3Rlcl90cmFuc2NvZGVyICE9IElO VkFMSURfVFJBTlNDT0RFUjsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiArc3RhdGljIGJvb2wKPiA+ Pj4gK2lzX3RyYW5zX3BvcnRfc3luY19tYXN0ZXIoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnN0YXRlKQo+ID4+PiArewo+ID4+PiArCXJldHVybiAoc3RhdGUtPm1hc3Rlcl90cmFuc2Nv ZGVyID09IElOVkFMSURfVFJBTlNDT0RFUiAmJgo+ID4+PiArCQlzdGF0ZS0+c3luY19tb2RlX3Ns YXZlc19tYXNrKTsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAgLyoKPiA+Pj4gICAqIFBsYXRmb3Jt IHNwZWNpZmljIGhlbHBlcnMgdG8gY2FsY3VsYXRlIHRoZSBwb3J0IFBMTCBsb29wYmFjay0gKGNs b2NrLm0pLAo+ID4+PiAgICogYW5kIHBvc3QtZGl2aWRlciAoY2xvY2sucCkgdmFsdWVzLCBwcmUt IChjbG9jay52Y28pIGFuZCBwb3N0LWRpdmlkZWQgZmFzdAo+ID4+PiBAQCAtMTM5NDQsOSArMTM5 NjQsMjAwIEBAIHN0YXRpYyB2b2lkIHNrbF9jb21taXRfbW9kZXNldF9lbmFibGVzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+Pj4gIAkJCXByb2dyZXNzID0gdHJ1ZTsKPiA+Pj4g IAkJfQo+ID4+PiAgCX0gd2hpbGUgKHByb2dyZXNzKTsKPiA+Pj4gK30KPiA+Pj4gIAo+ID4+PiAr c3RhdGljIHZvaWQgaWNsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ID4+PiArewo+ID4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gPj4+ICsJc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ID4+ PiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YzsKPiA+Pj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAq bmV3X2NydGNfc3RhdGU7Cj4gPj4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZTsK PiA+Pj4gKwl1bnNpZ25lZCBpbnQgdXBkYXRlZCA9IDA7Cj4gPj4+ICsJYm9vbCBwcm9ncmVzczsK PiA+Pj4gKwllbnVtIHBpcGUgcGlwZTsKPiA+Pj4gKwlpbnQgaTsKPiA+Pj4gKwl1OCBod19lbmFi bGVkX3NsaWNlcyA9IGRldl9wcml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzOwo+ID4+ PiArCXU4IHJlcXVpcmVkX3NsaWNlcyA9IGludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFi bGVkX3NsaWNlczsKPiA+Pj4gKwlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBlbnRyaWVzW0k5MTVfTUFY X1BJUEVTXSA9IHt9Owo+ID4+IEFkZCBvbGRfZW50cmllcyBhcyB3ZWxsLCBtZXJnZSBtYXN0ZXIg KyBzbGF2ZQo+ID4gSSBkaWRudCB1bmRlcnN0YW5kIHdoYXQgeW91IG1lYW50IGJ5IG1lcmdlIG1h c3RlcitzbGF2ZXM/IFlvdSBtZWFuIGFkZCBhbHNvIHRoZSAKPiA+IG1hc3RlciBhbmQgc2xhdmUg dGhhdCBhcmUgYWxyZWFkeSBlbmFibGVkPwo+IAo+IEluc3RlYWQgb2YgMiBzZXBhcmF0ZSBhbGxv Y2F0aW9ucywgb25seSBoYXZlIGEgc2luZ2xlIGFsbG9jYXRpb24gdGhhdCBjb250YWlucyB0aGUg c2xhdmUgYW5kIG1hc3Rlcgo+IGRkYiBkdXJpbmcgbW9kZXNldC9mYXN0c2V0Lgo+IAo+IFRoaXMg d2lsbCBhbGxvdyBpdCB0byBiZSB1cGRhdGVkIGFzIGEgc2luZ2xlIGNydGMuIFRoaXMgaXMgdXNl ZnVsIGZvciBtb2Rlc2V0IGVuYWJsZS9kaXNhYmxlIGFzIGEgc2luZ2xlIHNlcXVlbmNlLCBhbmQg Y291bGQKPiBwb3RlbnRpYWxseWJlIHVzZWZ1bCBmb3Igbm9ybWFsIHBhZ2UgZmxpcHMgYXMgd2Vs bCB0byByZWR1Y2UgdGVhcmluZy4KPiAKPiA+Pj4gKwo+ID4+PiArCWZvcl9lYWNoX29sZG5ld19j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUs IGkpCj4gPj4+ICsJCS8qIGlnbm9yZSBhbGxvY2F0aW9ucyBmb3IgY3J0YydzIHRoYXQgaGF2ZSBi ZWVuIHR1cm5lZCBvZmYuICovCj4gPj4+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ ID4+PiArCQkJZW50cmllc1tpXSA9IHRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUp LT53bS5za2wuZGRiOwo+ID4+IENhbiBiZSBjaGFuZ2VkIHRvOiBpZiAobmV3X2NydGNfc3RhdGUt PmFjdGl2ZSAmJiAhbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkpID8KPiA+IFdlIG5lZWQg IW5lZWRzX21vZGVzZXQoKSBhbHNvPyBUaGF0IHdhcyBub3QgaW50aWFsbHkgdGhlcmUgaW4gdGhl IG9yaWdpbmFsIHNrbF91cGRhdGVfY3J0Y3MoKSwgCj4gPiBzbyB3aHkgZG8gd2UgbmVlZCBpdCBo ZXJlPwo+IAo+IEl0J3Mgbm90IHJlYWxseSBuZWVkZWQsIGEgbWlub3Igb3B0aW1pemF0aW9uLgo+ IAo+IElmIG5lZWRzX21vZGVzZXQgaXMgdHJ1ZSwgd2UgY2FuIGJlIGd1YXJhbnRlZWQgdGhhdCB3 ZSBhcmUgYWx3YXlzIGVuYWJsaW5nLCBzbyB0aGUgaW5pdGlhbCBEREIgYWxsb2NhdGlvbiBpcyBh bHdheXMgemVyby4KPiAKPiA+Cj4gPj4gU21hbGwgcmVmaW5lbWVudCB0byB0aGUgYWxnb3JpdGht IGluIGdlbmVyYWwsIEkgZGlzbGlrZSB0aGUgY3VycmVudCBoYW5kbGluZy4KPiA+Pgo+ID4+IFdo YXQgSSB3b3VsZCBkbzoKPiA+PiAtIE1ha2UgYSBuZXdfZW50cmllcyBhcnJheSBhcyB3ZWxsLCB0 aGF0IGNvbnRhaW5zIChmb3IgdGhlIG1hc3RlciBjcnRjLCBkdXJpbmcgbW9kZXNldCBvbmx5KSBt YXN0ZXJfZGRiLmJlZ2luICsgc2xhdmVfZGRiLmVuZCwKPiA+PiAgIGFuZCBub3RoaW5nIGZvciB0 aGUgc2xhdmUgZGRiIGluIHRoYXQgY2FzZSwgdGhlIGRkYiBhbGxvY2F0aW9uIGZvciBhbGwgb3Ro ZXIgY2FzZXMgaW5jbHVkaW5nIG1hc3Rlci9zbGF2ZSBub24tbW9kZXNldCBzaG91bGQgYmUgdGhl IGRlZmF1bHQgd20uc2tsLmRkYi4KPiA+PiAgIFVzZSBpdCBmb3IgY29tcGFyaW5nIGluc3RlYWQg b2YgdGhlIG9uZSBmcm9tIGNydGNfc3RhdGUuIFRoaXMgd2F5IHdlIGtub3cgd2UgY2FuIGFsd2F5 cyBlbmFibGUgYm90aCBhdCB0aGUgc2FtZSB0aW1lLgo+ID4gU28gaW4gdGhlIHRoZSBjYXNlIG9m IG1vZGVzZXQgb24gbWFzdGVyIG9yIHNsYXZlLCB3ZSBzaGQgY3JlYXRlIGFub3RoZXIgZW50cmll cyBzaW1pbGFyIHRvIGRlZmF1bHQgb25lIGFuZCBoYXZlIHRoZSBhbGxvY2F0aW9ucyBmb3IgbWFz dGVyICsgc2xhdmUgYW5kIG1ha2Ugc3VyZSB0aGF0IGRvZXNudCBvdmVybGFwIHdpdGggdGhlIGFs cmVhZHkgYWN0aXZlIGNydGMgYWxsb2NhdGlvbnM/Cj4gVGhhdCdzIHRoZSBpZGVhLiA6KQo+ID4K PiA+PiAtIElnbm9yZSB0aGUgc2xhdmUgY3J0YyB3aGVuIG5lZWRzX21vZGVzZXQoKSBpcyB0cnVl LCBjYWxsZWQgZnJvbSBtYXN0ZXIgaW5zdGVhZC4KPiA+PiAtIElmIGEgbW9kZXNldCBoYXBwZW5z IG9uIG1hc3RlciBjcnRjLCBkbyB0aGUgc3BlY2lhbCBlbmFibGluZyBkYW5jZSBvbiBib3RoIGlu IGEgc2VwYXJhdGUgZnVuY3Rpb24uCj4gPiBTbyB5b3UgYXJlIHNheWluZyB0aGF0IGlmIGl0IGlz IHNsYXZlIGNydGMgYW5kIG5lZWRzX21vZGVzZXQganVzdCBza2lwIGFuZCBkb250IGRvIGFueXRo aW5nLAo+ID4gQnV0IGluIGNhc2Ugb2YgbWFzdGVyIGNydGMgbW9kZXNldCwgdGhhdHMgd2hlcmUg d2Ugd2lsbCBuZWVkIHRoZXNlIGFkZGl0aW9uYWwgNCBsb29wcyBhbmQgdGhhdHMgd2hlcmUgd2Ug YWNjZXNzIHRoZSBzbGF2ZSBjcnRjcyBmcm9tIHRoZSBzbGF2ZV9zeW5jX21hc2sgYW5kIHRoZW4g ZG8gdGhlIGNvcnJlY3QgZW5hYmxpbmcgc2VxdWVuY2UgZXRjPwo+ID4gIAo+ID4+IC0gQWxzbyBl bnN1cmUgdGhhdCB0aGUgc2xhdmUgY3J0YyBpcyBtYXJrZWQgYXMgdXBkYXRlZCwgYW5kIHVwZGF0 ZSBib3RoIGVudHJpZXMgdG8gY29ycmVjdCB2YWx1ZXMgaW4gdGhlIGVudHJpZXMgYWdhaW4uCj4g PiBUaGlzIGFnYWluIEkgYW0gbm90IDEwMCUgY2xlYXIgb24gaG93IHRvIGltcGxlbWVudCBtaWdo dCBuZWVkIHRvIGRpc2N1c3Mgb24gSVJDCj4gPgo+ID4+IFlvdSBzaG91bGQgYmUgYWJsZSB0byBn ZXQgdGhlIHNsYXZlIGNydGMgd2l0aCBpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXZfcHJpdiwg aW50ZWxfY3J0Yy0+cGlwZSArIDEpOwo+ID4gQnV0IHRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlciBj b3VsZCBiZSBtdWx0aXBsZSBzbGF2ZXMgbm90IGp1c3QgMSBhbmQgSU1PIGFjY2Vzc2luZyB0aGUg c2xhdmVzIGR1cmluZyB0aGUgbWFzdGVyIG1vZGVzZXQgaXMgbW9yZSBjb21wbGljYXRlZAo+ID4g d2hlcmUgYXMgdGhlIGN1cnJlbnQgbG9naWMgdGFrZXMgY2FyZSBvZiBoYW5kbGluZyB0aGUgY29y cmVjdCBlbmFibGluZyBzZXF1ZW5jZSBmb3IgYW55IG51bWJlciBvZiBzbGF2ZXMgYW5kIG1hc3Rl ciBhbmQgbW9kZXNldHMKPiA+IGluIGFueSBvcmRlci4KPiA+IFdpbGwgc3RpbGwgaGF2ZSB0byBj aGVjayBmb3IgcHJvcGVyIGRkYiBhbGxvY2F0aW9ucyBhbmQgZW5zdXJlIG5vIG92ZXJsYXAuCj4g Pgo+IFllYWggYnV0IHdpdGggdGhlIGRkYiBhbGxvY2F0aW9ucyB5b3UgbWFrZSBzdXJlIHRoYXQg d2UgY2FuIGFsd2F5cyB1c2UgdGhlIGNvcnJlY3Qgb3JkZXIuIEJlY2F1c2UgdGhlIG1hc3RlciAr IHNsYXZlIGRkYiBhcmUgc2VxdWVudGlhbCwgaWYgYW4gYWxsb2NhdGlvbiB0aGF0IGVuY29tcGFz c2VzIGJvdGggZG9lc24ndCBvdmVybGFwLCB3ZSBrbm93IGZvciBzdXJlIHdlIGNhbiBqdXN0IGRv IGJvdGguIDopwqAKPiAKPiB+TWFhcnRlbgo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZng=