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: Thu, 1 Aug 2019 16:51:08 -0700 Message-ID: <20190801235107.GA3060@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 mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id A31CA6E842 for ; Thu, 1 Aug 2019 23:49:32 +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 T24gVGh1LCBBdWcgMDEsIDIwMTkgYXQgMDU6MDc6NDhQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMDEtMDgtMjAxOSBvbSAwMToyNCBzY2hyZWVmIE1hbmFzaSBOYXZhcmU6 Cj4gPiBUaGFua3MgTWFhcnRlbiBmb3IgeW91ciByZXZpZXcgY29tbWVudHMsIHBsZWFzZSBzZWUg bXkgcmVzcG9uc2VzL3F1ZXN0aW9ucyBiZWxvdzoKPiA+Cj4gPiBPbiBUdWUsIEp1bCAzMCwgMjAx OSBhdCAxMjo1MzozMFBNICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToKPiA+PiBPcCAy NC0wNi0yMDE5IG9tIDIzOjA4IHNjaHJlZWYgTWFuYXNpIE5hdmFyZToKPiA+Pj4gQXMgcGVyIHRo ZSBkaXNwbGF5IGVuYWJsZSBzZXF1ZW5jZSwgd2UgbmVlZCB0byBmb2xsb3cgdGhlIGVuYWJsZSBz ZXF1ZW5jZQo+ID4+PiBmb3Igc2xhdmVzIGZpcnN0IHdpdGggRFBfVFBfQ1RMIHNldCB0byBJZGxl IGFuZCBjb25maWd1cmUgdGhlIHRyYW5zY29kZXIKPiA+Pj4gcG9ydCBzeW5jIHJlZ2lzdGVyIHRv IHNlbGVjdCB0aGUgY29yZXJzcG9uZGluZyBtYXN0ZXIsIHRoZW4gZm9sbG93IHRoZQo+ID4+PiBl bmFibGUgc2VxdWVuY2UgZm9yIG1hc3RlciBsZWF2aW5nIERQX1RQX0NUTCB0byBpZGxlLgo+ID4+ PiBBdCB0aGlzIHBvaW50IHRoZSB0cmFuc2NvZGVyIHBvcnQgc3luYyBtb2RlIGlzIGNvbmZpZ3Vy ZWQgYW5kIGVuYWJsZWQKPiA+Pj4gYW5kIHRoZSBWYmxhbmtzIG9mIGJvdGggcG9ydHMgYXJlIHN5 bmNocm9uaXplZCBzbyB0aGVuIHNldCBEUF9UUF9DVEwKPiA+Pj4gZm9yIHRoZSBzbGF2ZSBhbmQg bWFzdGVyIHRvIE5vcm1hbCBhbmQgZG8gcG9zdCBjcnRjIGVuYWJsZSB1cGRhdGVzLgo+ID4+Pgo+ ID4+PiB2MjoKPiA+Pj4gKiBDcmVhdGUgYSBpY2xfdXBkYXRlX2NydGNzIGhvb2sgKE1hYXJ0ZW4s IERhbnZldCkKPiA+Pj4gKiBUaGlzIHNlcXVlbmNlIG9ubHkgZm9yIENSVENzIGluIHRyYW5zIHBv cnQgc3luYyBtb2RlIChNYWFydGVuKQo+ID4+Pgo+ID4+PiBDYzogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4KPiA+Pj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPj4+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+PiBDYzogTWF0dCBSb3BlciA8bWF0dGhl dy5kLnJvcGVyQGludGVsLmNvbT4KPiA+Pj4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8 bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+Pj4gLS0tCj4gPj4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jICAgICB8ICAgMyArLQo+ID4+PiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgfCAyMTcgKysrKysrKysrKysrKysr KysrLQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5Lmgg fCAgIDQgKwo+ID4+PiAgMyBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rk aS5jCj4gPj4+IGluZGV4IDc5MjVhMTc2ZjkwMC4uYmNlYjdlNGIxODc3IDEwMDY0NAo+ID4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiA+Pj4gQEAgLTMxNTQs NyArMzE1NCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4+PiAgCQkJCQkgICAgICB0cnVlKTsKPiA+Pj4gIAlp bnRlbF9kcF9zaW5rX3NldF9mZWNfcmVhZHkoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+ID4+PiAg CWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4+PiAtCWlmIChwb3J0ICE9 IFBPUlRfQSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPj4+ICsJaWYgKChwb3J0ICE9 IFBPUlRfQSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpICYmCj4gPj4+ICsJICAgICFpc190 cmFuc19wb3J0X3N5bmNfbW9kZShjcnRjX3N0YXRlKSkKPiA+Pj4gIAkJaW50ZWxfZHBfc3RvcF9s aW5rX3RyYWluKGludGVsX2RwKTsKPiA+Pj4gIAo+ID4+PiAgCWludGVsX2RkaV9lbmFibGVfZmVj KGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYwo+ID4+PiBpbmRleCA3MTU2YjFiNGM2YzUuLmY4OGQzYTkyOWUz NiAxMDA2NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMKPiA+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMKPiA+Pj4gQEAgLTUyMCw2ICs1MjAsMjYgQEAgbmVlZHNfbW9kZXNldChjb25zdCBz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4+PiAgCXJldHVybiBkcm1fYXRvbWljX2Ny dGNfbmVlZHNfbW9kZXNldChzdGF0ZSk7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4gK2Jvb2wKPiA+ Pj4gK2lzX3RyYW5zX3BvcnRfc3luY19tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpzdGF0ZSkKPiA+Pj4gK3sKPiA+Pj4gKwlyZXR1cm4gKHN0YXRlLT5tYXN0ZXJfdHJhbnNjb2Rl ciAhPSBJTlZBTElEX1RSQU5TQ09ERVIgfHwKPiA+Pj4gKwkJc3RhdGUtPnN5bmNfbW9kZV9zbGF2 ZXNfbWFzayk7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gK3N0YXRpYyBib29sCj4gPj4+ICtpc190 cmFuc19wb3J0X3N5bmNfc2xhdmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRl KQo+ID4+PiArewo+ID4+PiArCXJldHVybiBzdGF0ZS0+bWFzdGVyX3RyYW5zY29kZXIgIT0gSU5W QUxJRF9UUkFOU0NPREVSOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgYm9vbAo+ID4+ PiAraXNfdHJhbnNfcG9ydF9zeW5jX21hc3Rlcihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqc3RhdGUpCj4gPj4+ICt7Cj4gPj4+ICsJcmV0dXJuIChzdGF0ZS0+bWFzdGVyX3RyYW5zY29k ZXIgPT0gSU5WQUxJRF9UUkFOU0NPREVSICYmCj4gPj4+ICsJCXN0YXRlLT5zeW5jX21vZGVfc2xh dmVzX21hc2spOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICAvKgo+ID4+PiAgICogUGxhdGZvcm0g c3BlY2lmaWMgaGVscGVycyB0byBjYWxjdWxhdGUgdGhlIHBvcnQgUExMIGxvb3BiYWNrLSAoY2xv Y2subSksCj4gPj4+ICAgKiBhbmQgcG9zdC1kaXZpZGVyIChjbG9jay5wKSB2YWx1ZXMsIHByZS0g KGNsb2NrLnZjbykgYW5kIHBvc3QtZGl2aWRlZCBmYXN0Cj4gPj4+IEBAIC0xMzk0NCw5ICsxMzk2 NCwyMDAgQEAgc3RhdGljIHZvaWQgc2tsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4+PiAgCQkJcHJvZ3Jlc3MgPSB0cnVlOwo+ID4+PiAg CQl9Cj4gPj4+ICAJfSB3aGlsZSAocHJvZ3Jlc3MpOwo+ID4+PiArfQo+ID4+PiAgCj4gPj4+ICtz dGF0aWMgdm9pZCBpY2xfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4gPj4+ICt7Cj4gPj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPj4+ ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjOwo+ID4+PiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpu ZXdfY3J0Y19zdGF0ZTsKPiA+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+ ID4+PiArCXVuc2lnbmVkIGludCB1cGRhdGVkID0gMDsKPiA+Pj4gKwlib29sIHByb2dyZXNzOwo+ ID4+PiArCWVudW0gcGlwZSBwaXBlOwo+ID4+PiArCWludCBpOwo+ID4+PiArCXU4IGh3X2VuYWJs ZWRfc2xpY2VzID0gZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXM7Cj4gPj4+ ICsJdTggcmVxdWlyZWRfc2xpY2VzID0gaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGRiLmVuYWJs ZWRfc2xpY2VzOwo+ID4+PiArCXN0cnVjdCBza2xfZGRiX2VudHJ5IGVudHJpZXNbSTkxNV9NQVhf UElQRVNdID0ge307Cj4gPj4gQWRkIG9sZF9lbnRyaWVzIGFzIHdlbGwsIG1lcmdlIG1hc3RlciAr IHNsYXZlCj4gPiBJIGRpZG50IHVuZGVyc3RhbmQgd2hhdCB5b3UgbWVhbnQgYnkgbWVyZ2UgbWFz dGVyK3NsYXZlcz8gWW91IG1lYW4gYWRkIGFsc28gdGhlIAo+ID4gbWFzdGVyIGFuZCBzbGF2ZSB0 aGF0IGFyZSBhbHJlYWR5IGVuYWJsZWQ/Cj4gCj4gSW5zdGVhZCBvZiAyIHNlcGFyYXRlIGFsbG9j YXRpb25zLCBvbmx5IGhhdmUgYSBzaW5nbGUgYWxsb2NhdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBz bGF2ZSBhbmQgbWFzdGVyCj4gZGRiIGR1cmluZyBtb2Rlc2V0L2Zhc3RzZXQuCgpTbyBJIHdpbGwg Y2FsbCB0aGlzIG1hc3Rlcl9zbGF2ZV9lbnRyaWVzW0k5MTVfTUFYX1BJUEVTXSBhbmQgaGF2ZSBh IHNlcGFyYXRlIGZvciBsb29wIGZvcgpkZGIgYWxsb2NhdGlvbnMgb2YgdGhlIG1hc3RlciBhbmQg c2xhdmVzIHRoYXQgaW52b2x2ZWQgaW4gdGhlIGN1cnJlbnQgbW9kZXNldCBjb3JyZWN0PwoKaWYg KG5ld19jcnRjX3N0YXRlLT5hY3RpdmUgJiYgbmVlZHNfbW9kZXNldCgpICYmIG1hc3Rlcl9vcl9z bGF2ZSkKCUFkZCB0byBtYXN0ZXJfc2xhdmVfZW50cmllcwoKU291bmRzIGdvb2Q/CgpOb3cgdGhp cyBjYWxsIGlmIChza2xfZGRiX2FsbG9jYXRpb25fb3ZlcmxhcHMoJmNzdGF0ZS0+d20uc2tsLmRk YikpIHdpbGwgaGF2ZSB0byBiZSBkb25lIGZvciBpZiggaXNfdHJhbnNfcG9ydF9zeW5jX21vZGUo Y3N0YXRlKSkKTm93IHRoZSBvdmVybGFwIHdpbGwgY2hlY2sgaWYgZWFjaCBub24gbW9kZXNldCBj cnRjIGVudHJpZXMgb3ZlcmxhcCB3aXRoIG1hc3RlcitzbGF2ZSB0b2dldGhlciwgaWYgdGhleSBk byBqdXN0IGNvbnRpbnVlIGlmIG5vdCB0aGVuCndlIGNhbGwgYWxsIHRoZSA0IGZvciBsb29wcyBh cyBpcyBjb3JyZWN0PyBUaGF0IHNob3VsZCBmaXggdGhlIGFsbG9jYXRpb25zIGlzc3VlPwoKdXBk YXRlZCBhbmQgZW50cmllcyBzaG91bGQgdGhlbiBhZGQgbWFzayBhbmQgZW50cmllcyBmb3IgYm90 aCBtYXN0ZXIgK3NsYXZlIGNvcnJlY3Q/CgpBbHNvIHRoZSBsYXN0IHBhcnQgb2YgdGhlIGxvb3Ag d2hlcmUgd2Ugd2FpdCBmb3IgYSB2YmxhbmsgaXMgbm90IGNsZWFyLCBkbyB3ZSBuZWVkIHRoYXQg YXQgYWxsPwoKTWFuYXNpCgo+IAo+IFRoaXMgd2lsbCBhbGxvdyBpdCB0byBiZSB1cGRhdGVkIGFz IGEgc2luZ2xlIGNydGMuIFRoaXMgaXMgdXNlZnVsIGZvciBtb2Rlc2V0IGVuYWJsZS9kaXNhYmxl IGFzIGEgc2luZ2xlIHNlcXVlbmNlLCBhbmQgY291bGQKPiBwb3RlbnRpYWxseWJlIHVzZWZ1bCBm b3Igbm9ybWFsIHBhZ2UgZmxpcHMgYXMgd2VsbCB0byByZWR1Y2UgdGVhcmluZy4KPiAKPiA+Pj4g Kwo+ID4+PiArCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRf Y3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpCj4gPj4+ICsJCS8qIGlnbm9yZSBhbGxvY2F0 aW9ucyBmb3IgY3J0YydzIHRoYXQgaGF2ZSBiZWVuIHR1cm5lZCBvZmYuICovCj4gPj4+ICsJCWlm IChuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ID4+PiArCQkJZW50cmllc1tpXSA9IHRvX2ludGVs X2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpLT53bS5za2wuZGRiOwo+ID4+IENhbiBiZSBjaGFu Z2VkIHRvOiBpZiAobmV3X2NydGNfc3RhdGUtPmFjdGl2ZSAmJiAhbmVlZHNfbW9kZXNldChuZXdf Y3J0Y19zdGF0ZSkpID8KPiA+IFdlIG5lZWQgIW5lZWRzX21vZGVzZXQoKSBhbHNvPyBUaGF0IHdh cyBub3QgaW50aWFsbHkgdGhlcmUgaW4gdGhlIG9yaWdpbmFsIHNrbF91cGRhdGVfY3J0Y3MoKSwg Cj4gPiBzbyB3aHkgZG8gd2UgbmVlZCBpdCBoZXJlPwo+IAo+IEl0J3Mgbm90IHJlYWxseSBuZWVk ZWQsIGEgbWlub3Igb3B0aW1pemF0aW9uLgo+IAo+IElmIG5lZWRzX21vZGVzZXQgaXMgdHJ1ZSwg d2UgY2FuIGJlIGd1YXJhbnRlZWQgdGhhdCB3ZSBhcmUgYWx3YXlzIGVuYWJsaW5nLCBzbyB0aGUg aW5pdGlhbCBEREIgYWxsb2NhdGlvbiBpcyBhbHdheXMgemVyby4KPiAKPiA+Cj4gPj4gU21hbGwg cmVmaW5lbWVudCB0byB0aGUgYWxnb3JpdGhtIGluIGdlbmVyYWwsIEkgZGlzbGlrZSB0aGUgY3Vy cmVudCBoYW5kbGluZy4KPiA+Pgo+ID4+IFdoYXQgSSB3b3VsZCBkbzoKPiA+PiAtIE1ha2UgYSBu ZXdfZW50cmllcyBhcnJheSBhcyB3ZWxsLCB0aGF0IGNvbnRhaW5zIChmb3IgdGhlIG1hc3RlciBj cnRjLCBkdXJpbmcgbW9kZXNldCBvbmx5KSBtYXN0ZXJfZGRiLmJlZ2luICsgc2xhdmVfZGRiLmVu ZCwKPiA+PiAgIGFuZCBub3RoaW5nIGZvciB0aGUgc2xhdmUgZGRiIGluIHRoYXQgY2FzZSwgdGhl IGRkYiBhbGxvY2F0aW9uIGZvciBhbGwgb3RoZXIgY2FzZXMgaW5jbHVkaW5nIG1hc3Rlci9zbGF2 ZSBub24tbW9kZXNldCBzaG91bGQgYmUgdGhlIGRlZmF1bHQgd20uc2tsLmRkYi4KPiA+PiAgIFVz ZSBpdCBmb3IgY29tcGFyaW5nIGluc3RlYWQgb2YgdGhlIG9uZSBmcm9tIGNydGNfc3RhdGUuIFRo aXMgd2F5IHdlIGtub3cgd2UgY2FuIGFsd2F5cyBlbmFibGUgYm90aCBhdCB0aGUgc2FtZSB0aW1l Lgo+ID4gU28gaW4gdGhlIHRoZSBjYXNlIG9mIG1vZGVzZXQgb24gbWFzdGVyIG9yIHNsYXZlLCB3 ZSBzaGQgY3JlYXRlIGFub3RoZXIgZW50cmllcyBzaW1pbGFyIHRvIGRlZmF1bHQgb25lIGFuZCBo YXZlIHRoZSBhbGxvY2F0aW9ucyBmb3IgbWFzdGVyICsgc2xhdmUgYW5kIG1ha2Ugc3VyZSB0aGF0 IGRvZXNudCBvdmVybGFwIHdpdGggdGhlIGFscmVhZHkgYWN0aXZlIGNydGMgYWxsb2NhdGlvbnM/ Cj4gVGhhdCdzIHRoZSBpZGVhLiA6KQo+ID4KPiA+PiAtIElnbm9yZSB0aGUgc2xhdmUgY3J0YyB3 aGVuIG5lZWRzX21vZGVzZXQoKSBpcyB0cnVlLCBjYWxsZWQgZnJvbSBtYXN0ZXIgaW5zdGVhZC4K PiA+PiAtIElmIGEgbW9kZXNldCBoYXBwZW5zIG9uIG1hc3RlciBjcnRjLCBkbyB0aGUgc3BlY2lh bCBlbmFibGluZyBkYW5jZSBvbiBib3RoIGluIGEgc2VwYXJhdGUgZnVuY3Rpb24uCj4gPiBTbyB5 b3UgYXJlIHNheWluZyB0aGF0IGlmIGl0IGlzIHNsYXZlIGNydGMgYW5kIG5lZWRzX21vZGVzZXQg anVzdCBza2lwIGFuZCBkb250IGRvIGFueXRoaW5nLAo+ID4gQnV0IGluIGNhc2Ugb2YgbWFzdGVy IGNydGMgbW9kZXNldCwgdGhhdHMgd2hlcmUgd2Ugd2lsbCBuZWVkIHRoZXNlIGFkZGl0aW9uYWwg NCBsb29wcyBhbmQgdGhhdHMgd2hlcmUgd2UgYWNjZXNzIHRoZSBzbGF2ZSBjcnRjcyBmcm9tIHRo ZSBzbGF2ZV9zeW5jX21hc2sgYW5kIHRoZW4gZG8gdGhlIGNvcnJlY3QgZW5hYmxpbmcgc2VxdWVu Y2UgZXRjPwo+ID4gIAo+ID4+IC0gQWxzbyBlbnN1cmUgdGhhdCB0aGUgc2xhdmUgY3J0YyBpcyBt YXJrZWQgYXMgdXBkYXRlZCwgYW5kIHVwZGF0ZSBib3RoIGVudHJpZXMgdG8gY29ycmVjdCB2YWx1 ZXMgaW4gdGhlIGVudHJpZXMgYWdhaW4uCj4gPiBUaGlzIGFnYWluIEkgYW0gbm90IDEwMCUgY2xl YXIgb24gaG93IHRvIGltcGxlbWVudCBtaWdodCBuZWVkIHRvIGRpc2N1c3Mgb24gSVJDCj4gPgo+ ID4+IFlvdSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhlIHNsYXZlIGNydGMgd2l0aCBpbnRlbF9n ZXRfY3J0Y19mb3JfcGlwZShkZXZfcHJpdiwgaW50ZWxfY3J0Yy0+cGlwZSArIDEpOwo+ID4gQnV0 IHRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlciBjb3VsZCBiZSBtdWx0aXBsZSBzbGF2ZXMgbm90IGp1 c3QgMSBhbmQgSU1PIGFjY2Vzc2luZyB0aGUgc2xhdmVzIGR1cmluZyB0aGUgbWFzdGVyIG1vZGVz ZXQgaXMgbW9yZSBjb21wbGljYXRlZAo+ID4gd2hlcmUgYXMgdGhlIGN1cnJlbnQgbG9naWMgdGFr ZXMgY2FyZSBvZiBoYW5kbGluZyB0aGUgY29ycmVjdCBlbmFibGluZyBzZXF1ZW5jZSBmb3IgYW55 IG51bWJlciBvZiBzbGF2ZXMgYW5kIG1hc3RlciBhbmQgbW9kZXNldHMKPiA+IGluIGFueSBvcmRl ci4KPiA+IFdpbGwgc3RpbGwgaGF2ZSB0byBjaGVjayBmb3IgcHJvcGVyIGRkYiBhbGxvY2F0aW9u cyBhbmQgZW5zdXJlIG5vIG92ZXJsYXAuCj4gPgo+IFllYWggYnV0IHdpdGggdGhlIGRkYiBhbGxv Y2F0aW9ucyB5b3UgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGFsd2F5cyB1c2UgdGhlIGNvcnJlY3Qg b3JkZXIuIEJlY2F1c2UgdGhlIG1hc3RlciArIHNsYXZlIGRkYiBhcmUgc2VxdWVudGlhbCwgaWYg YW4gYWxsb2NhdGlvbiB0aGF0IGVuY29tcGFzc2VzIGJvdGggZG9lc24ndCBvdmVybGFwLCB3ZSBr bm93IGZvciBzdXJlIHdlIGNhbiBqdXN0IGRvIGJvdGguIDopwqAKPiAKPiB+TWFhcnRlbgo+IApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=