From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2] drm/i915: Don't enable IPS when pixel rate exceeds 95% of cdclk Date: Thu, 18 Sep 2014 14:56:22 +0300 Message-ID: <87wq916t21.fsf@intel.com> References: <20140911110325.GI28332@nuc-i3427.alporthouse.com> <1410530517-5114-1-git-send-email-ville.syrjala@linux.intel.com> <20140912154233.GK16043@nuc-i3427.alporthouse.com> <20140912154942.GD12416@intel.com> <8738btcpqy.fsf@intel.com> <20140917144357.GM12416@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 64FE489F2A for ; Thu, 18 Sep 2014 04:56:26 -0700 (PDT) In-Reply-To: <20140917144357.GM12416@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 =?utf-8?B?U3lyasOkbMOk?= , Paulo Zanoni Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAxNyBTZXAgMjAxNCwgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4gT24gV2VkLCBTZXAgMTcsIDIwMTQgYXQgMTE6MTA6NDhBTSAt MDMwMCwgUGF1bG8gWmFub25pIHdyb3RlOgo+PiAyMDE0LTA5LTE3IDExOjA1IEdNVC0wMzowMCBQ YXVsbyBaYW5vbmkgPHByemFub25pQGdtYWlsLmNvbT46Cj4+ID4gMjAxNC0wOS0xNSA0OjIyIEdN VC0wMzowMCBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPjoKPj4gPj4g T24gRnJpLCAxMiBTZXAgMjAxNCwgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4+ID4+PiBPbiBGcmksIFNlcCAxMiwgMjAxNCBhdCAwNDo0Mjoz M1BNICswMTAwLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+ID4+Pj4gT24gRnJpLCBTZXAgMTIsIDIw MTQgYXQgMDU6MDE6NTdQTSArMDMwMCwgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3Jv dGU6Cj4+ID4+Pj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgo+PiA+Pj4+ID4KPj4gPj4+PiA+IEJzcGVjIHNheXMgd2Ugc2hvdWxkbid0IGVu YWJsZSBJUFMgb24gQkRXIHdoZW4gdGhlIHBpcGUgcGl4ZWwgcmF0ZQo+PiA+Pj4+ID4gZXhjZWVk cyA5NSUgb2YgdGhlIGNvcmUgZGlzcGxheSBjbG9jay4gQXBwYXJlbnRseSB0aGlzIGNhbiBjYXVz ZQo+PiA+Pj4+ID4gdW5kZXJydW5zLgo+PiA+Pj4+ID4KPj4gPj4+PiA+IFRoZXJlJ3Mgbm8gc2lt aWxhciByZXN0cmljdGlvbiBsaXN0ZWQgZm9yIEhTVywgc28gbGVhdmUgdGhhdCBvbmUgYWxvbmUK Pj4gPj4+PiA+IGZvciBub3cuCj4+ID4+Pj4gPgo+PiA+Pj4+ID4gdjI6IEFkZCBwaXBlX2NvbmZp Z19zdXBwb3J0c19pcHMoKSAoQ2hyaXMpCj4+ID4+Pj4gPgo+PiA+Pj4+ID4gVGVzdGVkLWJ5OiBU aW1vIEFhbHRvbmVuIDx0amFhbHRvbkB1YnVudHUuY29tPgo+PiA+Pj4+ID4gQnVnemlsbGE6IGh0 dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNDk3Cj4+ID4+Pj4g PiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+PiA+Pj4+ID4gLS0tCj4+ID4+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIHwgMjEgKysrKysrKysrKysrKysrKysrKy0tCj4+ID4+Pj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDEgKwo+PiA+Pj4+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDE2ICsrKysrKystLS0tLS0tLS0KPj4gPj4+ PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQo+ PiA+Pj4+ID4KPj4gPj4+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gPj4+ PiA+IGluZGV4IDk2NWViM2MuLjc4MDkxNzcgMTAwNjQ0Cj4+ID4+Pj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gPj4+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiA+Pj4+ID4gQEAgLTUyNDEsMTIgKzUyNDEsMjkg QEAgcmV0cnk6Cj4+ID4+Pj4gPiAgICByZXR1cm4gc2V0dXBfb2sgPyAwIDogLUVJTlZBTDsKPj4g Pj4+PiA+ICB9Cj4+ID4+Pj4gPgo+PiA+Pj4+ID4gK3N0YXRpYyBib29sIHBpcGVfY29uZmlnX3N1 cHBvcnRzX2lwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ID4+Pj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX2NvbmZpZyAq cGlwZV9jb25maWcpCj4+ID4+Pj4gPiArewo+PiA+Pj4+ID4gKyAgaWYgKHBpcGVfY29uZmlnLT5w aXBlX2JwcCA+IDI0KQo+PiA+Pj4+ID4gKyAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ID4+Pj4g PiArCj4+ID4+Pj4gPiArICAvKiBIU1cgY2FuIGhhbmRsZSBwaXhlbCByYXRlIHVwIHRvIGNkY2xr PyAqLwo+PiA+Pj4+ID4gKyAgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYtPmRldikpCj4+ID4+Pj4K Pj4gPj4+PiBUaGlzIG9ubHkgbmVlZHMgSVNfSEFTV0VMTChkZXZfcHJpdikKPj4gPj4+Cj4+ID4+ PiBvbGQgaGFiaXRzLi4uCj4+ID4+Cj4+ID4+IFRoYW5rcyB0byB5b3VyIG9sZCBoYWJpdHMgSSBk aWRuJ3QgaGF2ZSB0byBtYWtlIGFueSBjaGFuZ2VzIHdoZW4gcHVzaGluZwo+PiA+PiB0aGlzIHRv IGRybS1pbnRlbC1maXhlcyB3aGljaCBpcyBzdGlsbCBvbGQgaGFiaXQgbGFuZC4gVGhhbmtzIGZv ciB0aGUKPj4gPj4gcGF0Y2ggYW5kIHJldmlldy4KPj4gCj4+IEFuZCBhbm90aGVyIGRldGFpbDog ZXZlbiBpZiB0aGUgcmVnaXN0ZXIgcmVhZCB3b3JrZWQsIHdlJ2QgaGF2ZQo+PiBwcmludGVkIGEg YmFkIHZhbHVlIHNpbmNlIHRoZSBjZGNsb2NrIGlzIGRpc2FibGVkIGF0IHRoZSBtb21lbnQgd2Ug cnVuCj4+IHRoZSBmdW5jdGlvbiwgc28gd2UnZCByZXR1cm4gdGhlIEZDTEsgZnJlcXVlbmN5LiBT byBtYXliZSB3ZSBuZWVkIHRvCj4+IGNhY2hlIHRoZSB2YWx1ZSBvZiB0aGUgImNkY2xrIHVuZGVy IG5vcm1hbCBkaXNwbGF5IG9wZXJhdGlvbiIgYW5kCj4+IHJldXNlIGl0IGhlcmUuCj4KPiBZZWFo LiBXZSBhbHJlYWR5IGRvIHRoYXQgb24gVkxWL0NIViB0byBzb21lIGV4dGVudC4gV2Ugc2hvdWxk IGp1c3QgZG8KPiBpdCBmb3IgYWxsIHBsYXRmb3Jtcy4gQWx0aG91Z2ggZm9yIHRoaXMgY2FzZSB3 aGF0IHdlJ2QgbmVlZCB0byBkbyBpcwo+IHByZWNhbGN1bGF0ZSB0aGUgb3B0aW1hbCBjZGNsayBk dXJpbmcgY29tcHV0ZV9jb25maWcgcGhhc2UgYW5kIHVzZQo+IHRoYXQgdmFsdWUgZm9yIHRoZXNl IGNoZWNrcywgYW5kIHRoZW4gZHVyaW5nIGdsb2JhbF9yZXNvdXJjZXMgd2UKPiBhY3R1YWxseSBj aGFuZ2UgdGhlIGNkY2xrIHRvIG1hdGNoIHRoZSBwcmVjb21wdXRlZCB2YWx1ZS4KPgo+IEFsc28g aWYgc29tZW9uZSB0YWtlcyB0aGlzIG9uIHRoZXkgY291bGQgYWxzbyB1bmlmeSB0aGUgZGRpIGNk Y2xrCj4gY29kZSB0byBsb29rIG1vcmUgbGlrZSB0aGUgb3RoZXIgcGxhdGZvcm1zLCBhbmQgcGVy aGFwcyBldmVuIGltcGxlbWVudAo+IHN1cHBvcnQgZm9yIGNoYW5naW5nIHRoZSBjZGNsayBmcmVx dWVuY3kgb24gSFNXL0JEVyA7KQoKSSd2ZSBkcm9wcGVkIHRoZSBjb21taXQgZnJvbSBkcm0taW50 ZWwtZml4ZXMgYW5kIHJlb3BlbmVkIHRoZSBidWcuIFdlCm5lZWQgc29tZW9uZSh0bSkgdG8gbG9v ayBhdCB0aGlzIG5vdy4KCkJSLApKYW5pLgoKCgo+Cj4+IAo+PiA+Cj4+ID4gVGhpcyBwYXRjaGVz IGNhdXNlcyBhIHJlZ3Jlc3Npb24gb24gaWd0L3BtX3JwbS9ydGU6Cj4+ID4KPj4gPiBbICAgNDQu ODcxNjYyXSBbZHJtOmludGVsX2RwX2NvbXB1dGVfY29uZmlnXSBEUCBsaW5rIGJ3IHJlcXVpcmVk Cj4+ID4gNjUwMzU4IGF2YWlsYWJsZSAxNzI4MDAwCj4+ID4gWyAgIDQ0Ljg3MTY2Nl0gLS0tLS0t LS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tCj4+ID4gWyAgIDQ0Ljg3MTY5MV0gV0FSTklO RzogQ1BVOiAwIFBJRDogMTc0NSBhdAo+PiA+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vu Y29yZS5jOjQ3Cj4+ID4gYXNzZXJ0X2RldmljZV9ub3Rfc3VzcGVuZGVkLmlzcmEuOCsweDQzLzB4 NTAgW2k5MTVdKCkKPj4gPiBbICAgNDQuODcxNjkyXSBEZXZpY2Ugc3VzcGVuZGVkCj4+ID4gWyAg IDQ0Ljg3MTY5NF0gTW9kdWxlcyBsaW5rZWQgaW46IGhpZF9tdWx0aXRvdWNoIGhpZF9zZW5zb3Jf aHViCj4+ID4gc25kX2hkYV9jb2RlY19oZG1pIGludGVsX3JhcGwgeDg2X3BrZ190ZW1wX3RoZXJt YWwgaW50ZWxfcG93ZXJjbGFtcAo+PiA+IGVmaXZhcnMgc25kX2hkYV9pbnRlbCBidHVzYiBzbmRf aGRhX2NvbnRyb2xsZXIgc25kX2hkYV9jb2RlYyBzbmRfaHdkZXAKPj4gPiBpd2xtdm0gc25kX3Bj bV9vc3Mgc25kX21peGVyX29zcyBpd2x3aWZpIG1laV9tZSBtZWkgc25kX3BjbSBzbmRfdGltZXIK Pj4gPiBpbnQzNDAzX3RoZXJtYWwgaTJjX2Rlc2lnbndhcmVfcGxhdGZvcm0gaTJjX2Rlc2lnbndh cmVfY29yZSBhY3BpX3BhZAo+PiA+IGZ1c2UgbmxzX3V0ZjggbmxzX2NwNDM3IHZmYXQgZmF0IGk5 MTUgc2RoY2lfcGNpIGRybV9rbXNfaGVscGVyIGUxMDAwZQo+PiA+IGRybSBzZGhjaV9hY3BpIHNk aGNpCj4+ID4gWyAgIDQ0Ljg3MTcyNl0gQ1BVOiAwIFBJRDogMTc0NSBDb21tOiBwbV9ycG0gTm90 IHRhaW50ZWQKPj4gPiAzLjE3LjAtcmM1LjE0MDkxNzEwMTlweisgIzExMjAKPj4gPiBbICAgNDQu ODcxNzI4XSBIYXJkd2FyZSBuYW1lOiBJbnRlbCBDb3Jwb3JhdGlvbiBCcm9hZHdlbGwgQ2xpZW50 Cj4+ID4gcGxhdGZvcm0vV2lsc29uIEJlYWNoIFNEUywgQklPUyBCRFctRTJSMS44NkMuMDA3Mi5S MDMuMTQwNTA3MjEyNwo+PiA+IDA1LzA3LzIwMTQKPj4gPiBbICAgNDQuODcxNzMwXSAgMDAwMDAw MDAwMDAwMDAwOSBmZmZmODgwMGFhNzYzYTkwIGZmZmZmZmZmODE2ZWM4MDMKPj4gPiBmZmZmODgw MGFhNzYzYWQ4Cj4+ID4gWyAgIDQ0Ljg3MTczNV0gIGZmZmY4ODAwYWE3NjNhYzggZmZmZmZmZmY4 MTA3YTBjOCBmZmZmODgwMjNlYzIwMDY4Cj4+ID4gMDAwMDAwMDAwMDEzMDA0MAo+PiA+IFsgICA0 NC44NzE3MzldICBmZmZmODgwMjNmMTJiM2Q4IDAwMDAwMDAwMDAxMzAwNDAgZmZmZjg4MDIzZWMy MDAwMAo+PiA+IGZmZmY4ODAwYWE3NjNiMjgKPj4gPiBbICAgNDQuODcxNzQzXSBDYWxsIFRyYWNl Ogo+PiA+IFsgICA0NC44NzE3NDldICBbPGZmZmZmZmZmODE2ZWM4MDM+XSBkdW1wX3N0YWNrKzB4 NGQvMHg2Ngo+PiA+IFsgICA0NC44NzE3NTRdICBbPGZmZmZmZmZmODEwN2EwYzg+XSB3YXJuX3Ns b3dwYXRoX2NvbW1vbisweDc4LzB4YTAKPj4gPiBbICAgNDQuODcxNzU4XSAgWzxmZmZmZmZmZjgx MDdhMTM3Pl0gd2Fybl9zbG93cGF0aF9mbXQrMHg0Ny8weDUwCj4+ID4gWyAgIDQ0Ljg3MTc4M10g IFs8ZmZmZmZmZmZhMDE1YTFmND5dID8KPj4gPiBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZysweDI3 NC8weDYwMCBbaTkxNV0KPj4gPiBbICAgNDQuODcxODAzXSAgWzxmZmZmZmZmZmEwMTIyY2YzPl0K Pj4gPiBhc3NlcnRfZGV2aWNlX25vdF9zdXNwZW5kZWQuaXNyYS44KzB4NDMvMHg1MCBbaTkxNV0K Pj4gPiBbICAgNDQuODcxODIyXSAgWzxmZmZmZmZmZmEwMTI1YTIwPl0gZ2VuNl9yZWFkMzIrMHgz MC8weDE1MCBbaTkxNV0KPj4gPiBbICAgNDQuODcxODQ0XSAgWzxmZmZmZmZmZmEwMTU0NjM2Pl0g aW50ZWxfZGRpX2dldF9jZGNsa19mcmVxKzB4ZDYvMHgxNDAgW2k5MTVdCj4+ID4gWyAgIDQ0Ljg3 MTg2NV0gIFs8ZmZmZmZmZmZhMDEzOWE5Mj5dIF9faW50ZWxfc2V0X21vZGUrMHgxNjcyLzB4MTc1 MCBbaTkxNV0KPj4gPiBbICAgNDQuODcxODg2XSAgWzxmZmZmZmZmZmEwMTQxOGUxPl0gaW50ZWxf c2V0X21vZGUrMHgxMS8weDMwIFtpOTE1XQo+PiA+IFsgICA0NC44NzE5MDZdICBbPGZmZmZmZmZm YTAxNDI5ZWQ+XSBpbnRlbF9jcnRjX3NldF9jb25maWcrMHhhOWQvMHhlYjAgW2k5MTVdCj4+ID4g WyAgIDQ0Ljg3MTkyM10gIFs8ZmZmZmZmZmZhMDAyNjI4Mz5dCj4+ID4gZHJtX21vZGVfc2V0X2Nv bmZpZ19pbnRlcm5hbCsweDYzLzB4MTAwIFtkcm1dCj4+ID4gWyAgIDQ0Ljg3MTkzOF0gIFs8ZmZm ZmZmZmZhMDAyYTdlMz5dIGRybV9tb2RlX3NldGNydGMrMHgyODMvMHg1ODAgW2RybV0KPj4gPiBb ICAgNDQuODcxOTQ4XSAgWzxmZmZmZmZmZmEwMDFjODFmPl0gZHJtX2lvY3RsKzB4MWRmLzB4NmEw IFtkcm1dCj4+ID4gWyAgIDQ0Ljg3MTk1NF0gIFs8ZmZmZmZmZmY4MTFlMDdiMD5dIGRvX3Zmc19p b2N0bCsweDJlMC8weDRlMAo+PiA+IFsgICA0NC44NzE5NTddICBbPGZmZmZmZmZmODE2ZjZhZjc+ XSA/IHN5c3JldF9jaGVjaysweDFiLzB4NTYKPj4gPiBbICAgNDQuODcxOTYyXSAgWzxmZmZmZmZm ZjgxMGJmYjBkPl0gPyB0cmFjZV9oYXJkaXJxc19vbl9jYWxsZXIrMHgxNWQvMHgyMDAKPj4gPiBb ICAgNDQuODcxOTY2XSAgWzxmZmZmZmZmZjgxMWUwYTMxPl0gU3lTX2lvY3RsKzB4ODEvMHhhMAo+ PiA+IFsgICA0NC44NzE5NjldICBbPGZmZmZmZmZmODE2ZjZhZDI+XSBzeXN0ZW1fY2FsbF9mYXN0 cGF0aCsweDE2LzB4MWIKPj4gPiBbICAgNDQuODcxOTcyXSAtLS1bIGVuZCB0cmFjZSA5MWJmODky MGEyYzZiODI0IF0tLS0KPj4gPiBbICAgNDQuODcxOTc1XSAtLS0tLS0tLS0tLS1bIGN1dCBoZXJl IF0tLS0tLS0tLS0tLS0KPj4gPiBbICAgNDQuODcxOTk0XSBXQVJOSU5HOiBDUFU6IDAgUElEOiAx NzQ1IGF0Cj4+ID4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmM6NTI4Cj4+ID4g aHN3X3VuY2xhaW1lZF9yZWdfZGVidWcrMHg2ZC8weDgwIFtpOTE1XSgpCj4+ID4gWyAgIDQ0Ljg3 MTk5Nl0gVW5jbGFpbWVkIHJlZ2lzdGVyIGRldGVjdGVkIGJlZm9yZSByZWFkaW5nIHJlZ2lzdGVy IDB4MTMwMDQwCj4+ID4gWyAgIDQ0Ljg3MTk5N10gTW9kdWxlcyBsaW5rZWQgaW46IGhpZF9tdWx0 aXRvdWNoIGhpZF9zZW5zb3JfaHViCj4+ID4gc25kX2hkYV9jb2RlY19oZG1pIGludGVsX3JhcGwg eDg2X3BrZ190ZW1wX3RoZXJtYWwgaW50ZWxfcG93ZXJjbGFtcAo+PiA+IGVmaXZhcnMgc25kX2hk YV9pbnRlbCBidHVzYiBzbmRfaGRhX2NvbnRyb2xsZXIgc25kX2hkYV9jb2RlYyBzbmRfaHdkZXAK Pj4gPiBpd2xtdm0gc25kX3BjbV9vc3Mgc25kX21peGVyX29zcyBpd2x3aWZpIG1laV9tZSBtZWkg c25kX3BjbSBzbmRfdGltZXIKPj4gPiBpbnQzNDAzX3RoZXJtYWwgaTJjX2Rlc2lnbndhcmVfcGxh dGZvcm0gaTJjX2Rlc2lnbndhcmVfY29yZSBhY3BpX3BhZAo+PiA+IGZ1c2UgbmxzX3V0Zjggbmxz X2NwNDM3IHZmYXQgZmF0IGk5MTUgc2RoY2lfcGNpIGRybV9rbXNfaGVscGVyIGUxMDAwZQo+PiA+ IGRybSBzZGhjaV9hY3BpIHNkaGNpCj4+ID4gWyAgIDQ0Ljg3MjAyNV0gQ1BVOiAwIFBJRDogMTc0 NSBDb21tOiBwbV9ycG0gVGFpbnRlZDogRyAgICAgICAgVwo+PiA+IDMuMTcuMC1yYzUuMTQwOTE3 MTAxOXB6KyAjMTEyMAo+PiA+IFsgICA0NC44NzIwMjZdIEhhcmR3YXJlIG5hbWU6IEludGVsIENv cnBvcmF0aW9uIEJyb2Fkd2VsbCBDbGllbnQKPj4gPiBwbGF0Zm9ybS9XaWxzb24gQmVhY2ggU0RT LCBCSU9TIEJEVy1FMlIxLjg2Qy4wMDcyLlIwMy4xNDA1MDcyMTI3Cj4+ID4gMDUvMDcvMjAxNAo+ PiA+IFsgICA0NC44NzIwMjhdICAwMDAwMDAwMDAwMDAwMDA5IGZmZmY4ODAwYWE3NjNhODggZmZm ZmZmZmY4MTZlYzgwMwo+PiA+IGZmZmY4ODAwYWE3NjNhZDAKPj4gPiBbICAgNDQuODcyMDMyXSAg ZmZmZjg4MDBhYTc2M2FjMCBmZmZmZmZmZjgxMDdhMGM4IGZmZmY4ODAyM2VjMjAwMDAKPj4gPiAw MDAwMDAwMDAwMTMwMDQwCj4+ID4gWyAgIDQ0Ljg3MjAzNV0gIGZmZmY4ODAyM2YxMmIzZDggMDAw MDAwMDAwMDEzMDA0MCBmZmZmODgwMjNlYzIwMDAwCj4+ID4gZmZmZjg4MDBhYTc2M2IyMAo+PiA+ IFsgICA0NC44NzIwMzldIENhbGwgVHJhY2U6Cj4+ID4gWyAgIDQ0Ljg3MjA0Ml0gIFs8ZmZmZmZm ZmY4MTZlYzgwMz5dIGR1bXBfc3RhY2srMHg0ZC8weDY2Cj4+ID4gWyAgIDQ0Ljg3MjA0Nl0gIFs8 ZmZmZmZmZmY4MTA3YTBjOD5dIHdhcm5fc2xvd3BhdGhfY29tbW9uKzB4NzgvMHhhMAo+PiA+IFsg ICA0NC44NzIwNDldICBbPGZmZmZmZmZmODEwN2ExMzc+XSB3YXJuX3Nsb3dwYXRoX2ZtdCsweDQ3 LzB4NTAKPj4gPiBbICAgNDQuODcyMDY4XSAgWzxmZmZmZmZmZmEwMTIyYmJkPl0gaHN3X3VuY2xh aW1lZF9yZWdfZGVidWcrMHg2ZC8weDgwIFtpOTE1XQo+PiA+IFsgICA0NC44NzIwODddICBbPGZm ZmZmZmZmYTAxMjVhNDE+XSBnZW42X3JlYWQzMisweDUxLzB4MTUwIFtpOTE1XQo+PiA+IFsgICA0 NC44NzIxMDldICBbPGZmZmZmZmZmYTAxNTQ2MzY+XSBpbnRlbF9kZGlfZ2V0X2NkY2xrX2ZyZXEr MHhkNi8weDE0MCBbaTkxNV0KPj4gPiBbICAgNDQuODcyMTI5XSAgWzxmZmZmZmZmZmEwMTM5YTky Pl0gX19pbnRlbF9zZXRfbW9kZSsweDE2NzIvMHgxNzUwIFtpOTE1XQo+PiA+IFsgICA0NC44NzIx NDldICBbPGZmZmZmZmZmYTAxNDE4ZTE+XSBpbnRlbF9zZXRfbW9kZSsweDExLzB4MzAgW2k5MTVd Cj4+ID4gWyAgIDQ0Ljg3MjE2OF0gIFs8ZmZmZmZmZmZhMDE0MjllZD5dIGludGVsX2NydGNfc2V0 X2NvbmZpZysweGE5ZC8weGViMCBbaTkxNV0KPj4gPiBbICAgNDQuODcyMTgyXSAgWzxmZmZmZmZm ZmEwMDI2MjgzPl0KPj4gPiBkcm1fbW9kZV9zZXRfY29uZmlnX2ludGVybmFsKzB4NjMvMHgxMDAg W2RybV0KPj4gPiBbICAgNDQuODcyMTk2XSAgWzxmZmZmZmZmZmEwMDJhN2UzPl0gZHJtX21vZGVf c2V0Y3J0YysweDI4My8weDU4MCBbZHJtXQo+PiA+IFsgICA0NC44NzIyMDVdICBbPGZmZmZmZmZm YTAwMWM4MWY+XSBkcm1faW9jdGwrMHgxZGYvMHg2YTAgW2RybV0KPj4gPiBbICAgNDQuODcyMjEw XSAgWzxmZmZmZmZmZjgxMWUwN2IwPl0gZG9fdmZzX2lvY3RsKzB4MmUwLzB4NGUwCj4+ID4gWyAg IDQ0Ljg3MjIxM10gIFs8ZmZmZmZmZmY4MTZmNmFmNz5dID8gc3lzcmV0X2NoZWNrKzB4MWIvMHg1 Ngo+PiA+IFsgICA0NC44NzIyMThdICBbPGZmZmZmZmZmODEwYmZiMGQ+XSA/IHRyYWNlX2hhcmRp cnFzX29uX2NhbGxlcisweDE1ZC8weDIwMAo+PiA+IFsgICA0NC44NzIyMjFdICBbPGZmZmZmZmZm ODExZTBhMzE+XSBTeVNfaW9jdGwrMHg4MS8weGEwCj4+ID4gWyAgIDQ0Ljg3MjIyNF0gIFs8ZmZm ZmZmZmY4MTZmNmFkMj5dIHN5c3RlbV9jYWxsX2Zhc3RwYXRoKzB4MTYvMHgxYgo+PiA+IFsgICA0 NC44NzIyMjZdIC0tLVsgZW5kIHRyYWNlIDkxYmY4OTIwYTJjNmI4MjUgXS0tLQo+PiA+IFsgICA0 NC44NzIyMjhdIC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+PiA+IFsgICA0 NC44NzIyNDZdIFdBUk5JTkc6IENQVTogMCBQSUQ6IDE3NDUgYXQKPj4gPiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91bmNvcmUuYzo1MjgKPj4gPiBoc3dfdW5jbGFpbWVkX3JlZ19kZWJ1Zysw eDZkLzB4ODAgW2k5MTVdKCkKPj4gPiBbICAgNDQuODcyMjQ4XSBVbmNsYWltZWQgcmVnaXN0ZXIg ZGV0ZWN0ZWQgYWZ0ZXIgcmVhZGluZyByZWdpc3RlciAweDEzMDA0MAo+PiA+IFsgICA0NC44NzIy NDldIE1vZHVsZXMgbGlua2VkIGluOiBoaWRfbXVsdGl0b3VjaCBoaWRfc2Vuc29yX2h1Ygo+PiA+ IHNuZF9oZGFfY29kZWNfaGRtaSBpbnRlbF9yYXBsIHg4Nl9wa2dfdGVtcF90aGVybWFsIGludGVs X3Bvd2VyY2xhbXAKPj4gPiBlZml2YXJzIHNuZF9oZGFfaW50ZWwgYnR1c2Igc25kX2hkYV9jb250 cm9sbGVyIHNuZF9oZGFfY29kZWMgc25kX2h3ZGVwCj4+ID4gaXdsbXZtIHNuZF9wY21fb3NzIHNu ZF9taXhlcl9vc3MgaXdsd2lmaSBtZWlfbWUgbWVpIHNuZF9wY20gc25kX3RpbWVyCj4+ID4gaW50 MzQwM190aGVybWFsIGkyY19kZXNpZ253YXJlX3BsYXRmb3JtIGkyY19kZXNpZ253YXJlX2NvcmUg YWNwaV9wYWQKPj4gPiBmdXNlIG5sc191dGY4IG5sc19jcDQzNyB2ZmF0IGZhdCBpOTE1IHNkaGNp X3BjaSBkcm1fa21zX2hlbHBlciBlMTAwMGUKPj4gPiBkcm0gc2RoY2lfYWNwaSBzZGhjaQo+PiA+ IFsgICA0NC44NzIyNzZdIENQVTogMCBQSUQ6IDE3NDUgQ29tbTogcG1fcnBtIFRhaW50ZWQ6IEcg ICAgICAgIFcKPj4gPiAzLjE3LjAtcmM1LjE0MDkxNzEwMTlweisgIzExMjAKPj4gPiBbICAgNDQu ODcyMjc3XSBIYXJkd2FyZSBuYW1lOiBJbnRlbCBDb3Jwb3JhdGlvbiBCcm9hZHdlbGwgQ2xpZW50 Cj4+ID4gcGxhdGZvcm0vV2lsc29uIEJlYWNoIFNEUywgQklPUyBCRFctRTJSMS44NkMuMDA3Mi5S MDMuMTQwNTA3MjEyNwo+PiA+IDA1LzA3LzIwMTQKPj4gPiBbICAgNDQuODcyMjc5XSAgMDAwMDAw MDAwMDAwMDAwOSBmZmZmODgwMGFhNzYzYTg4IGZmZmZmZmZmODE2ZWM4MDMKPj4gPiBmZmZmODgw MGFhNzYzYWQwCj4+ID4gWyAgIDQ0Ljg3MjI4Ml0gIGZmZmY4ODAwYWE3NjNhYzAgZmZmZmZmZmY4 MTA3YTBjOCBmZmZmODgwMjNlYzIwMDAwCj4+ID4gMDAwMDAwMDAwMDEzMDA0MAo+PiA+IFsgICA0 NC44NzIyODZdICAwMDAwMDAwMGZmZmZmZmZmIDAwMDAwMDAwMDAxMzAwNDAgZmZmZjg4MDIzZWMy MDAwMAo+PiA+IGZmZmY4ODAwYWE3NjNiMjAKPj4gPiBbICAgNDQuODcyMjg5XSBDYWxsIFRyYWNl Ogo+PiA+IFsgICA0NC44NzIyOTNdICBbPGZmZmZmZmZmODE2ZWM4MDM+XSBkdW1wX3N0YWNrKzB4 NGQvMHg2Ngo+PiA+IFsgICA0NC44NzIyOTZdICBbPGZmZmZmZmZmODEwN2EwYzg+XSB3YXJuX3Ns b3dwYXRoX2NvbW1vbisweDc4LzB4YTAKPj4gPiBbICAgNDQuODcyMjk5XSAgWzxmZmZmZmZmZjgx MDdhMTM3Pl0gd2Fybl9zbG93cGF0aF9mbXQrMHg0Ny8weDUwCj4+ID4gWyAgIDQ0Ljg3MjMxOF0g IFs8ZmZmZmZmZmZhMDEyMmJiZD5dIGhzd191bmNsYWltZWRfcmVnX2RlYnVnKzB4NmQvMHg4MCBb aTkxNV0KPj4gPiBbICAgNDQuODcyMzM1XSAgWzxmZmZmZmZmZmEwMTI1YTdlPl0gZ2VuNl9yZWFk MzIrMHg4ZS8weDE1MCBbaTkxNV0KPj4gPiBbICAgNDQuODcyMzU2XSAgWzxmZmZmZmZmZmEwMTU0 NjM2Pl0gaW50ZWxfZGRpX2dldF9jZGNsa19mcmVxKzB4ZDYvMHgxNDAgW2k5MTVdCj4+ID4gWyAg IDQ0Ljg3MjM3Nl0gIFs8ZmZmZmZmZmZhMDEzOWE5Mj5dIF9faW50ZWxfc2V0X21vZGUrMHgxNjcy LzB4MTc1MCBbaTkxNV0KPj4gPiBbICAgNDQuODcyMzk2XSAgWzxmZmZmZmZmZmEwMTQxOGUxPl0g aW50ZWxfc2V0X21vZGUrMHgxMS8weDMwIFtpOTE1XQo+PiA+IFsgICA0NC44NzI0MTZdICBbPGZm ZmZmZmZmYTAxNDI5ZWQ+XSBpbnRlbF9jcnRjX3NldF9jb25maWcrMHhhOWQvMHhlYjAgW2k5MTVd Cj4+ID4gWyAgIDQ0Ljg3MjQyOV0gIFs8ZmZmZmZmZmZhMDAyNjI4Mz5dCj4+ID4gZHJtX21vZGVf c2V0X2NvbmZpZ19pbnRlcm5hbCsweDYzLzB4MTAwIFtkcm1dCj4+ID4gWyAgIDQ0Ljg3MjQ0M10g IFs8ZmZmZmZmZmZhMDAyYTdlMz5dIGRybV9tb2RlX3NldGNydGMrMHgyODMvMHg1ODAgW2RybV0K Pj4gPiBbICAgNDQuODcyNDUzXSAgWzxmZmZmZmZmZmEwMDFjODFmPl0gZHJtX2lvY3RsKzB4MWRm LzB4NmEwIFtkcm1dCj4+ID4gWyAgIDQ0Ljg3MjQ1OF0gIFs8ZmZmZmZmZmY4MTFlMDdiMD5dIGRv X3Zmc19pb2N0bCsweDJlMC8weDRlMAo+PiA+IFsgICA0NC44NzI0NjFdICBbPGZmZmZmZmZmODE2 ZjZhZjc+XSA/IHN5c3JldF9jaGVjaysweDFiLzB4NTYKPj4gPiBbICAgNDQuODcyNDY1XSAgWzxm ZmZmZmZmZjgxMGJmYjBkPl0gPyB0cmFjZV9oYXJkaXJxc19vbl9jYWxsZXIrMHgxNWQvMHgyMDAK Pj4gPiBbICAgNDQuODcyNDY4XSAgWzxmZmZmZmZmZjgxMWUwYTMxPl0gU3lTX2lvY3RsKzB4ODEv MHhhMAo+PiA+IFsgICA0NC44NzI0NzFdICBbPGZmZmZmZmZmODE2ZjZhZDI+XSBzeXN0ZW1fY2Fs bF9mYXN0cGF0aCsweDE2LzB4MWIKPj4gPiBbICAgNDQuODcyNDczXSAtLS1bIGVuZCB0cmFjZSA5 MWJmODkyMGEyYzZiODI2IF0tLS0KPj4gPiBbICAgNDQuODcyNTEyXSBbZHJtOmludGVsX21vZGVz ZXRfcGlwZV9jb25maWddIHBsYW5lIGJwcDogMjQsIHBpcGUKPj4gPiBicHA6IDE4LCBkaXRoZXJp bmc6IDEKPj4gPgo+PiA+Pgo+PiA+PiBCUiwKPj4gPj4gSmFuaS4KPj4gPj4KPj4gPj4KPj4gPj4+ Cj4+ID4+Pj4KPj4gPj4+PiA+ICsgICAgICAgICAgcmV0dXJuIHRydWU7Cj4+ID4+Pj4gPiArCj4+ ID4+Pj4gPiArICByZXR1cm4gaWxrX3BpcGVfcGl4ZWxfcmF0ZShwaXBlX2NvbmZpZykgPD0KPj4g Pj4+PiA+ICsgICAgICAgICAgaW50ZWxfZGRpX2dldF9jZGNsa19mcmVxKGRldl9wcml2KSAqIDk1 IC8gMTAwOwo+PiA+Pj4+Cj4+ID4+Pj4gT3RoZXJ3aXNlCj4+ID4+Pj4gQWNrZWQtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiA+Pj4+IC1DaHJpcwo+PiA+Pj4+ Cj4+ID4+Pj4gLS0KPj4gPj4+PiBDaHJpcyBXaWxzb24sIEludGVsIE9wZW4gU291cmNlIFRlY2hu b2xvZ3kgQ2VudHJlCj4+ID4+Pgo+PiA+Pj4gLS0KPj4gPj4+IFZpbGxlIFN5cmrDpGzDpAo+PiA+ Pj4gSW50ZWwgT1RDCj4+ID4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+PiA+Pj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiA+Pj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiA+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+PiA+Pgo+PiA+PiAtLQo+PiA+PiBKYW5pIE5p a3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKPj4gPj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gPj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+PiA+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ID4+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPj4g Pgo+PiA+Cj4+ID4KPj4gPiAtLQo+PiA+IFBhdWxvIFphbm9uaQo+PiAKPj4gCj4+IAo+PiAtLSAK Pj4gUGF1bG8gWmFub25pCj4KPiAtLSAKPiBWaWxsZSBTeXJqw6Rsw6QKPiBJbnRlbCBPVEMKCi0t IApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK