From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 1/2] drm/i915/ddi: Get AUX power domain for DP main link too Date: Thu, 21 Jun 2018 21:18:55 +0300 Message-ID: <20180621181855.GB20559@ideak-desk.fi.intel.com> References: <20180621155830.11311-1-imre.deak@intel.com> <20180621173715.GS20518@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id A58CF6E0FB for ; Thu, 21 Jun 2018 18:19:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180621173715.GS20518@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, Dhinakaran Pandiyan , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMjEsIDIwMTggYXQgMDg6Mzc6MTVQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgSnVuIDIxLCAyMDE4IGF0IDA2OjU4OjI5UE0gKzAzMDAsIEltcmUg RGVhayB3cm90ZToKPiA+IFNvIGZhciB3ZSBnb3QgYW4gQVVYIHBvd2VyIGRvbWFpbiByZWZlcmVu Y2Ugb25seSBmb3IgdGhlIGR1cmF0aW9uIG9mIERQCj4gPiBBVVggdHJhbnNmZXJzLiBIb3dldmVy LCB0aGUgZm9sbG93aW5ncyBzdWdnZXN0IHRoYXQgd2UgYWxzbyBuZWVkIHRoZXNlCj4gPiBmb3Ig bWFpbiBsaW5rIGZ1bmN0aW9uYWxpdHk6Cj4gPiAtIFRoZSBzcGVjaWZpY2F0aW9uIGRvZXNuJ3Qg c3RhdGUgd2hldGhlciBpdCdzIG5lZWRlZCBvciBub3QgZm9yIG1haW4KPiA+ICAgbGluayBmdW5j dGlvbmFsaXR5LCBidXQgc3VnZ2VzdHMgdGhhdCB0aGVzZSBwb3dlciB3ZWxscyBuZWVkIHRvIGJl Cj4gPiAgIGVuYWJsZWQgYWxyZWFkeSBkdXJpbmcgZGlzcGxheSBjb3JlIGluaXRpYWxpemF0aW9u IChTZXF1ZW5jZXMgdG8KPiA+ICAgSW5pdGlhbGl6ZSBEaXNwbGF5KS4KPiA+IC0gRm9yIFBTUiB3 ZSBuZWVkIHRvIGtlZXAgdGhlIEFVWCBwb3dlciB3ZWxsIGVuYWJsZWQuCj4gPiAtIE9uIElDTCBj b21ibyBQSFkgcG9ydHMgKG5vbi1UQykgdGhlIEFVWCBwb3dlciB3ZWxsIGlzIG5lZWRlZCBmb3IK PiA+ICAgbGluayB0cmFpbmluZyB0b286IHdoaWxlIHRoZSBwb3J0IGlzIGVuYWJsZWQgd2l0aCBh IERQIGxpbmsgdHJhaW5pbmcKPiA+ICAgdGVzdCBwYXR0ZXJuIHRyeWluZyB0byB0b2dnbGUgdGhl IEFVWCBwb3dlciB3ZWxsIHdpbGwgdGltZSBvdXQuCj4gPiAtIE9uIElDTCBNRyBQSFkgcG9ydHMg KFRDKSB0aGUgQVVYIHBvd2VyIHdlbGwgaXMgbmVlZGVkIGFsc28gZm9yIG1haW4KPiA+ICAgbGlu ayBmdW5jdGlvbmFsaXR5IChib3RoIGluIERQIGFuZCBIRE1JIG1vZGVzKS4KPiA+IC0gV2luZG93 cyBlbmFibGVzIHRoZXNlIHBvd2VyIHdlbGxzIGJvdGggZm9yIG1haW4gYW5kIEFVWCBsYW5lCj4g PiAgIGZ1bmN0aW9uYWxpdHkuCj4gPiAKPiA+IEJhc2VkIG9uIHRoZSBhYm92ZSB0YWtlIGFuIEFV WCBwb3dlciByZWZlcmVuY2UgZm9yIG1haW4gbGluawo+ID4gZnVuY3Rpb25hbGl0eSB0b28uIFRo aXMgbWFrZXMgYSBkaWZmZXJlbmNlIG9ubHkgb24gR0VOMTArIChHTEsrKQo+ID4gcGxhdGZvcm1z LCB3aGVyZSB3ZSBoYXZlIHNlcGFyYXRlIHBvcnQgc3BlY2lmaWMgQVVYIHBvd2VyIHdlbGxzLgo+ ID4gCj4gPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiA+IENjOiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVs LmNvbT4KPiA+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+ IFNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+IC0tLQo+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICB8IDMzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyB8IDEyICsrKysrKysrKysrLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oICAgICB8ICAzICsrLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IGlu ZGV4IDA0NGZlMWZiOTg3Mi4uYjA5Y2I2OTY5YmJiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jCj4gPiBAQCAtMTk4MywxNSArMTk4MywzNiBAQCBib29sIGludGVsX2RkaV9nZXRf aHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCXJldHVybiByZXQ7 Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB1NjQgaW50ZWxfZGRpX2dldF9wb3dlcl9kb21haW5z KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gK3N0YXRpYyB1NjQgaW50ZWxfZGRp X2dldF9wb3dlcl9kb21haW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gKwkJ CQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiAgewo+ID4g IAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydCgm ZW5jb2Rlci0+YmFzZSk7Cj4gPiAgCWVudW0gcGlwZSBwaXBlOwo+ID4gKwl1NjQgZG9tYWluczsK PiA+ICAKPiA+IC0JaWYgKGludGVsX2RkaV9nZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUpKQo+ ID4gLQkJcmV0dXJuIEJJVF9VTEwoZGlnX3BvcnQtPmRkaV9pb19wb3dlcl9kb21haW4pOwo+ID4g KwlpZiAoIWludGVsX2RkaV9nZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUpKQo+ID4gKwkJcmV0 dXJuIDA7Cj4gPiAgCj4gPiAtCXJldHVybiAwOwo+ID4gKwlkb21haW5zID0gQklUX1VMTChkaWdf cG9ydC0+ZGRpX2lvX3Bvd2VyX2RvbWFpbik7Cj4gPiArCWlmICghY3J0Y19zdGF0ZSkKPiA+ICsJ CXJldHVybiBkb21haW5zOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBUT0RPOiBBZGQgc3VwcG9y dCBmb3IgTVNUIGVuY29kZXJzLiBBdG0sIHRoZSBmb2xsb3dpbmcgc2hvdWxkIG5ldmVyCj4gPiAr CSAqIGhhcHBlbiBzaW5jZSB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgZm9yIHRo ZSBwcmltYXJ5Cj4gPiArCSAqIGVuY29kZXIgd2hpY2ggZG9lc24ndCBoYXZlIGl0cyBvd24gcGlw ZS9jcnRjX3N0YXRlLgo+ID4gKwkgKi8KPiA+ICsJaWYgKFdBUk5fT04oaW50ZWxfY3J0Y19oYXNf dHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFBfTVNUKSkpCj4gPiArCQlyZXR1cm4gZG9t YWluczsKPiA+ICsKPiA+ICsJLyogQVVYIHBvd2VyIGlzIG9ubHkgbmVlZGVkIGZvciAoZSlEUCBt b2RlLCBub3QgZm9yIEhETUkuICovCj4gPiArCWlmICghaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj X3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpIHsKPiA+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPSAmZGlnX3BvcnQtPmRwOwo+ID4gKwo+ID4gKwkJZG9tYWlucyB8PSBCSVRfVUxMKGlu dGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gZG9t YWluczsKPiA+ICB9Cj4gPiAgCj4gPiAgdm9pZCBpbnRlbF9kZGlfZW5hYmxlX3BpcGVfY2xvY2so Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiBAQCAtMjYzMSw2 ICsyNjUyLDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCj4gPiAgCVdBUk5fT04oaXNfbXN0ICYmIChwb3J0 ID09IFBPUlRfQSB8fCBwb3J0ID09IFBPUlRfRSkpOwo+ID4gIAo+ID4gKwlpbnRlbF9kaXNwbGF5 X3Bvd2VyX2dldChkZXZfcHJpdiwgaW50ZWxfZHAtPmF1eF9wb3dlcl9kb21haW4pOwo+ID4gKwo+ ID4gIAlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAsIGNydGNfc3RhdGUtPnBvcnRf Y2xvY2ssCj4gPiAgCQkJCSBjcnRjX3N0YXRlLT5sYW5lX2NvdW50LCBpc19tc3QpOwo+ID4gIAo+ ID4gQEAgLTI3NzUsNiArMjc5OCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wb3N0X2Rpc2Fi bGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCWludGVsX2Rpc3BsYXlf cG93ZXJfcHV0KGRldl9wcml2LCBkaWdfcG9ydC0+ZGRpX2lvX3Bvd2VyX2RvbWFpbik7Cj4gPiAg Cj4gPiAgCWludGVsX2RkaV9jbGtfZGlzYWJsZShlbmNvZGVyKTsKPiA+ICsKPiA+ICsJaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGludGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluKTsK PiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZV9oZG1p KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4gaW5kZXggMmM4ZmVmM2VkZTU0Li5kOWZlZmNlYzRiMWEgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTE1Njc2LDExICsxNTY3 NiwyMSBAQCBnZXRfZW5jb2Rlcl9wb3dlcl9kb21haW5zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiA+ICAJZm9yX2VhY2hfaW50ZWxfZW5jb2RlcigmZGV2X3ByaXYtPmRybSwg ZW5jb2Rlcikgewo+ID4gIAkJdTY0IGdldF9kb21haW5zOwo+ID4gIAkJZW51bSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbiBkb21haW47Cj4gPiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKPiA+ICAKPiA+ICAJCWlmICghZW5jb2Rlci0+Z2V0X3Bvd2VyX2RvbWFpbnMp Cj4gPiAgCQkJY29udGludWU7Cj4gPiAgCj4gPiAtCQlnZXRfZG9tYWlucyA9IGVuY29kZXItPmdl dF9wb3dlcl9kb21haW5zKGVuY29kZXIpOwo+ID4gKwkJLyoKPiA+ICsJCSAqIEluIGNhc2Ugb2Yg YSBkYW5nbGluZyBlbmNvZGVyIHdpdGhvdXQgYSBjcnRjIHdlIHN0aWxsIG5lZWQKPiA+ICsJCSAq IHRvIGdldCBwb3dlciBkb21haW4gcmVmcy4gU3VjaCBlbmNvZGVycyB3aWxsIGJlIGRpc2FibGVk Cj4gPiArCQkgKiBkcm9wcGluZyB0aGVzZSByZWZlcmVuY2VzLgo+ID4gKwkJICovCj4gPiArCQlj cnRjX3N0YXRlID0gZW5jb2Rlci0+YmFzZS5jcnRjID8KPiA+ICsJCQkgICAgIHRvX2ludGVsX2Ny dGNfc3RhdGUoZW5jb2Rlci0+YmFzZS5jcnRjLT5zdGF0ZSkgOgo+ID4gKwkJCSAgICAgTlVMTDsK PiAKPiBBY3R1YWxseSBJIHRoaW5rIHdlIGNhbiBqdXN0IGRyb3AgdGhpcyBOVUxMIGNydGMgc3Rh dGUgY2FzZS4gSWYgdGhlCj4gZW5jb2RlciBpcyBhY3RpdmUgaXQgd2lsbCBoYXZlIGEgY3J0YyBh c3NpZ25lZCwgYW5kIG9ubHkgdGhlbiBkbyB3ZQo+IGFjdHVhbGx5IHNodXQgaXQgZG93biBpZiB0 aGUgY29ubmVjdG9yL2NydGMgaXMgbm90IGFjdGl2ZS4gU28gaWYgd2Ugd2UKPiBldmVyIGRpZCBn ZXQgaW50byBhIHNpdHVhdGlvbiB3aGVyZSB3ZSBkaWRuJ3QgaGF2ZSB0aGUgY3J0YyB3ZSdkCj4g bGVhayB0aGUgcG93ZXIgcmVmZXJlbmNlcy4gQWxzbyB3ZSBuZWVkIHRoZSBjcnRjIHN0YXRlIHRv IHNodXQgZG93bgo+IHRoZSBlbmNvZGVyLgoKRXJyLCB0aGFua3MgZm9yIGNhdGNoaW5nIHRoYXQu IENvbmZ1c2VkIG15c2VsZiByZWFkaW5nCmludGVsX3Nhbml0aXplX2VuY29kZXIoKSwgdGhpbmtp bmcgdGhhdCB3ZSdsbCBkaXNhYmxlIHRoZXJlIGVuY29kZXJzCndpdGhvdXQgYSBjcnRjLCBidXQg dGhhdCdzIG5vdCB0aGUgY2FzZSBhcyB5b3UgcG9pbnRlZCBvdXQuIFNpbmNlCmVuY29kZXItPmJh c2UuY3J0YyBjYW4gYmUgTlVMTCBmb3IgTVNUIEkgd2lsbCBzdGlsbCBrZWVwIHRoZSBhYm92ZSBh bmQKcmVseSBvbiBpbnRlbF9kZGlfZ2V0X2h3X3N0YXRlKCkgdG8gc2tpcCB0YWtpbmcgcG93ZXIg cmVmcyBmb3IgdGhhdApjYXNlLiBXaWxsIHVwZGF0ZSB0aGUgY29tbWVudCBhY2Nyb2RpbmdseS4K Cj4gVGhlIGVudGlyZSBzYW5pdGl6ZV9lbmNvZGVyKCkgdGhpbmcgaXMgYSBiaXQgd29ua3kuIElu IGNhc2Ugd2UgaGF2ZSBhbgo+IGFjdGl2ZSBlbmNvZGVyIHdpdGhvdXQgYSBjb25uZWN0b3IgaXQg d29uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcuIEkKPiBzdXBwb3NlIHRoYXQgY291bGQgYXQgbGVh c3QgaGFwcGVuIHdpdGggc2R2by4gV2l0aCBkZGkgaXQgd291bGQgcmVxdWlyZWQKPiB0aGUgcG9y dCB0byBiZSBlbmFibGVkIHdpdGggdGhlIHdyb25nIG1vZGUgd2hpY2ggSSBzdXBwb3NlIGlzIGEK PiBzbGlnaHRseSBsZXNzIHJlYWxpc3RpYyBvcHRpb24uCj4gCj4gQW5vdGhlciBjYXNlIHdoZW4g d2Ugd291bGRuJ3QgZG8gYW55dGhpbmcgaXMgaWYgdGhlIHBvcnQgaXMgZW5hYmxlZAo+IHdpdGhv dXQgYW55IHRyYW5zY29kZXIgaGF2aW5nIHNlbGVjdGVkIGl0LiBUaGF0IGNvdWxkIGhhcHBlbiB3 aXRoCj4gQ1BUL1BQVCBEUCBvciBEREkuIE90aGVyIHBvcnQgdHlwZXMgaGF2ZSB0aGUgcGlwZSBz ZWxlY3QgYml0cyBvbiB0aGUKPiBwb3J0IHNvIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGdldCBpbnRv IHRoYXQgc2l0dWF0aW9uLgo+IAo+IFNpbmNlIHdlIGRvbid0IHNlZW0gdG8gaGF2ZSBhbnkgbXlz dGVyaW91cyBidWcgcmVwb3J0cyBhYm91dCBwb3J0cyBiZWluZwo+IHdvbmt5IG1heWJlIHRoZXNl IHRoaW5ncyBqdXN0IGRvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4gT3IgZXZlcnl0aGluZwo+IGp1 c3QgaGFwcGVucyB0byB3b3JrIG91dCBieSBhY2NpZW50IGV2ZW4gaWYgZG9uJ3Qgc2h1dCB0aGlu Z3MgZG93bgo+IGNsZWFubHkuCj4gCj4gPiArCj4gPiArCQlnZXRfZG9tYWlucyA9IGVuY29kZXIt PmdldF9wb3dlcl9kb21haW5zKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ID4gIAkJZm9yX2VhY2hf cG93ZXJfZG9tYWluKGRvbWFpbiwgZ2V0X2RvbWFpbnMpCj4gPiAgCQkJaW50ZWxfZGlzcGxheV9w b3dlcl9nZXQoZGV2X3ByaXYsIGRvbWFpbik7Cj4gPiAgCX0KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gPiBpbmRleCAwYzNhYzBlYWZkZTAuLjcxNzQ0MjlkOTMwYSAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTI1NCw3ICsyNTQsOCBAQCBzdHJ1Y3QgaW50 ZWxfZW5jb2RlciB7Cj4gPiAgCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnKTsKPiA+ICAJLyogUmV0dXJucyBhIG1hc2sgb2YgcG93ZXIgZG9tYWlucyB0aGF0IG5lZWQg dG8gYmUgcmVmZXJlbmNlZCBhcyBwYXJ0Cj4gPiAgCSAqIG9mIHRoZSBoYXJkd2FyZSBzdGF0ZSBy ZWFkb3V0IGNvZGUuICovCj4gPiAtCXU2NCAoKmdldF9wb3dlcl9kb21haW5zKShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2Rlcik7Cj4gPiArCXU2NCAoKmdldF9wb3dlcl9kb21haW5zKShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKTsKPiA+ICAJLyoKPiA+ICAJICogQ2FsbGVkIGR1cmluZyBzeXN0ZW0g c3VzcGVuZCBhZnRlciBhbGwgcGVuZGluZyByZXF1ZXN0cyBmb3IgdGhlCj4gPiAgCSAqIGVuY29k ZXIgYXJlIGZsdXNoZWQgKGZvciBleGFtcGxlIGZvciBEUCBBVVggdHJhbnNhY3Rpb25zKSBhbmQK PiA+IC0tIAo+ID4gMi4xMy4yCj4gCj4gLS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==