From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 07/13] drm/i915/cnl: DVFS for PLL enabling Date: Wed, 18 Oct 2017 16:23:15 +0300 Message-ID: <20171018132315.GI10981@intel.com> References: <20171003070614.18396-1-rodrigo.vivi@intel.com> <20171003070614.18396-8-rodrigo.vivi@intel.com> <20171017154421.GX10981@intel.com> <20171017164705.jyltjdk52oyoquo6@intel.com> <20171017172320.GB10981@intel.com> <20171017174522.y3xomf52bb6wgfpz@intel.com> <20171017180205.GC10981@intel.com> <20171017203614.GG10981@intel.com> <20171017232307.dxm6sdtqnofqsxax@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 ESMTPS id 1D9D76E8B3 for ; Wed, 18 Oct 2017 13:23:21 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20171017232307.dxm6sdtqnofqsxax@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org, "Runyan, Arthur J" , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMTcsIDIwMTcgYXQgMDQ6MjM6MDdQTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IE9uIFR1ZSwgT2N0IDE3LCAyMDE3IGF0IDA4OjM2OjE0UE0gKzAwMDAsIFZpbGxlIFN5 cmrDpGzDpCB3cm90ZToKPiA+IE9uIFR1ZSwgT2N0IDE3LCAyMDE3IGF0IDA5OjAyOjA1UE0gKzAz MDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ID4gT24gVHVlLCBPY3QgMTcsIDIwMTcgYXQg MTA6NDU6MjJBTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdyb3RlOgo+ID4gPiA+IE9uIFR1ZSwgT2N0 IDE3LCAyMDE3IGF0IDA1OjIzOjIwUE0gKzAwMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ ID4gPiA+IE9uIFR1ZSwgT2N0IDE3LCAyMDE3IGF0IDA5OjQ3OjA1QU0gLTA3MDAsIFJvZHJpZ28g Vml2aSB3cm90ZToKPiA+ID4gPiA+ID4gT24gVHVlLCBPY3QgMTcsIDIwMTcgYXQgMDM6NDQ6MjFQ TSArMDAwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiA+ID4gPiA+IE9uIFR1ZSwgT2N0 IDAzLCAyMDE3IGF0IDEyOjA2OjA4QU0gLTA3MDAsIFJvZHJpZ28gVml2aSB3cm90ZToKPiA+ID4g PiA+ID4gPiA+IEZyb206ICJLYWhvbGEsIE1pa2EiIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4g PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IERpc3BsYXkgVm9sdGFnZSBhbmQgRnJlcXVl bmN5IFN3aXRjaGluZyAoRFZGUykgaXMgdXNlZCB0byBhZGp1c3QgdGhlCj4gPiA+ID4gPiA+ID4g PiBkaXNwbGF5IHZvbHRhZ2UgdG8gbWF0Y2ggdGhlIGRpc3BsYXkgY2xvY2sgZnJlcXVlbmNpZXMu IElmIHZvbHRhZ2UgaXMKPiA+ID4gPiA+ID4gPiA+IHNldCB0b28gbG93LCBpdCB3aWxsIGJyZWFr IGZ1bmN0aW9uYWxpdHkuIElmIHZvbHRhZ2UgaXMgc2V0IHRvbyBoaWdoLAo+ID4gPiA+ID4gPiA+ ID4gaXQgd2lsbCB3YXN0ZSBwb3dlci4gVm9sdGFnZSBsZXZlbCBpcyBzZWxlY3RlZCBiYXNlZCBv biBDRCBjbG9jayBhbmQKPiA+ID4gPiA+ID4gPiA+IERESSBjbG9jay4KPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gVGhlIHNlcXVlbmNlIGJlZm9yZSBmcmVxdWVuY3kgY2hhbmdlIGlz IHRoZSBmb2xsb3dpbmcgYW5kIGl0IHJlcXVlc3RzCj4gPiA+ID4gPiA+ID4gPiB0aGUgcG93ZXIg Y29udHJvbGxlciB0byByYWlzZSB2b2x0YWdlIHRvIG1heGltdW0KPiA+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gLSBFbnN1cmUgYW55IHByZXZpb3VzIEdUIERyaXZlciBNYWlsYm94IHRy YW5zYWN0aW9uIGlzIGNvbXBsZXRlLgo+ID4gPiA+ID4gPiA+ID4gLSBXcml0ZSBHVCBEcml2ZXIg TWFpbGJveCBEYXRhIExvdyA9IDB4My4KPiA+ID4gPiA+ID4gPiA+IC0gV3JpdGUgR1QgRHJpdmVy IE1haWxib3ggRGF0YSBIaWdoID0gMHgwLgo+ID4gPiA+ID4gPiA+ID4gLSBXcml0ZSBHVCBEcml2 ZXIgTWFpbGJveCBJbnRlcmZhY2UgPSAweDgwMDAwMDA3Lgo+ID4gPiA+ID4gPiA+ID4gLSBQb2xs IEdUIERyaXZlciBNYWlsYm94IEludGVyZmFjZSBmb3IgUnVuL0J1c3kgaW5kaWNhdGlvbiBjbGVh cmVkIChiaXQgMzEgPSAwKS4KPiA+ID4gPiA+ID4gPiA+IC0gUmVhZCBHVCBEcml2ZXIgTWFpbGJv eCBEYXRhIExvdywgaWYgYml0IDAgaXMgMHgxLCBjb250aW51ZSwgZWxzZSByZXN0YXJ0IHRoZSBz ZXF1ZW5jZS4KPiA+ID4gPiA+ID4gPiA+ICAgVGltZW91dCBhZnRlciAzbXMKPiA+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gVGhlIHNlcXVlbmNlIGFmdGVyIGZyZXF1ZW5jeSBjaGFuZ2Ug aXMgdGhlIGZvbGxvd2luZyBhbmQgaXQgcmVxdWVzdHMKPiA+ID4gPiA+ID4gPiA+IHRoZSBwb3J0 IGNvbnRyb2xsZXIgdG8gcmFpc2Ugdm9sdGFnZSB0byB0aGUgcmVxdWVzdGVkIGxldmVsLgo+ID4g PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtIFdyaXRlIEdUIERyaXZlciBNYWlsYm94IERh dGEgTG93Cj4gPiA+ID4gPiA+ID4gPiAgKiBGb3IgbGV2ZWwgMCwgd3JpdGUgMHgwCj4gPiA+ID4g PiA+ID4gPiAgKiBGb3IgbGV2ZWwgMSwgd3JpdGUgMHgxCj4gPiA+ID4gPiA+ID4gPiAgKiBGb3Ig bGV2ZWwgMiwgd3JpdGUgMHgyCj4gPiA+ID4gPiA+ID4gPiAgKiBGb3IgbGV2ZWwgMywgd3JpdGUg MHgzCj4gPiA+ID4gPiA+ID4gPiAgICAtIFdyaXRlIEdUIERyaXZlciBNYWlsYm94IERhdGEgSGln aCA9IDB4MC4KPiA+ID4gPiA+ID4gPiA+ICAgIC0gV3JpdGUgR1QgRHJpdmVyIE1haWxib3ggSW50 ZXJmYWNlID0gMHg4MDAwMDAwNy4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gRm9y IENhbm5vbmxha2UsIHRoZSBsZXZlbCAzIGlzIG5vdCB1c2VkIGFuZCBpdCBhbGlhc2VzIHRvIGxl dmVsIDIuCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IHYyOiByZXVzZSBQYXVsbydz IHdvcmsgb24gY2RjbGsuIFRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBQYXVsbydzIHBhdGNoCj4gPiA+ ID4gPiA+ID4gPiAgICAgW1BBVENIIDAyLzEyXSBkcm0vaTkxNS9jbmw6IGV4dHJhY3QgY25sX2R2 ZnNfe3ByZSxwb3N0fV9jaGFuZ2UKPiA+ID4gPiA+ID4gPiA+IHYzOiAoQnkgUm9kcmlnbyk6IFJl bW92ZSBkdXBsaWNhdGVkIGNvbW1lbmQgYW5kIGZpeCB0eXBvIG9uIFBhdWxvJ3MgbmFtZS4KPiA+ ID4gPiA+ID4gPiA+IHY0OiAoQnkgUm9kcmlnbyk6IFJlYmFzZSBvbiB0b3AgIlVuaWZ5IGFuZCBl eHBvcnQgZ2VuOSsgcG9ydF9jbG9jayBjYWxjdWxhdGlvbiIKPiA+ID4gPiA+ID4gPiA+ICAgICBU aGUgcG9ydCBjbG9jayBjYWxjdWxhdGlvbiBoZXJlIHdhcyBvbmx5IGFkZHJlc3NpbmcgRFAsIHNv IGxldCdzIHJldXNlCj4gPiA+ID4gPiA+ID4gPiAgICAgdGhlIGN1cnJlbnQgcG9ydCBjYWxjdWxh dGlvbiB0aGF0IGlzIGFscmVhZHkgaW4gcGxhY2Ugd2l0aG91dCBhbnkgZHVwbGljYXRpb24uCj4g PiA+ID4gPiA+ID4gPiAgICAgQWxvcyBmaXggcG9ydGNsayA8PSA1OTQwMDAgaW5zdGVhZCBvZiBw b3J0Y2xrIDwgNTk0MDAwLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBDYzogUGF1 bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gPiA+ID4gPiA+ID4gPiBDYzog VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+ ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEthaG9sYSwgTWlrYSA8bWlrYS5rYWhvbGFAaW50ZWwuY29t Pgo+ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZp dmlAaW50ZWwuY29tPgo+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyB8IDMwICsrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLQo+ID4gPiA+ID4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25z KCspLCA4IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiA+ID4gPiA+ID4gPiA+IGluZGV4IGEyYTNk OTNkNjdiZC4uNjAzMGZiYWZhNTgwIDEwMDY0NAo+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gPiA+ID4gPiA+ID4gQEAgLTE5 NjYsMTAgKzE5NjYsMjMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX21nciBieHRf cGxsX21nciA9IHsKPiA+ID4gPiA+ID4gPiA+ICAJLmR1bXBfaHdfc3RhdGUgPSBieHRfZHVtcF9o d19zdGF0ZSwKPiA+ID4gPiA+ID4gPiA+ICB9Owo+ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4g PiA+ID4gK3N0YXRpYyBpbnQgY25sX2dldF9kdmZzX2xldmVsKGludCBjZGNsaywgaW50IHBvcnRj bGspCj4gPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoY2RjbGsgPT0gMTY4 MDAwICYmIHBvcnRjbGsgPD0gNTk0MDAwKQo+ID4gPiA+ID4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4g PiA+ID4gPiA+ID4gPiArCWVsc2UgaWYgKGNkY2xrID09IDMzNjAwMCAmJiBwb3J0Y2xrIDw9IDU5 NDAwMCkKPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAxOwo+ID4gPiA+ID4gPiA+ID4gKwllbHNl Cj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMjsKPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiAgc3RhdGljIHZvaWQgY25sX2RkaV9wbGxfZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gPiA+ID4gPiA+ICAJCQkg ICAgICAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4gPiA+ID4gPiA+ID4gPiAgewo+ ID4gPiA+ID4gPiA+ID4gIAl1aW50MzJfdCB2YWw7Cj4gPiA+ID4gPiA+ID4gPiArCWludCByZXQ7 Cj4gPiA+ID4gPiA+ID4gPiArCWludCBsZXZlbDsKPiA+ID4gPiA+ID4gPiA+ICsJaW50IGNkY2xr LCBwb3J0Y2xrOwo+ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ID4gIAkvKiAxLiBFbmFi bGUgRFBMTCBwb3dlciBpbiBEUExMX0VOQUJMRS4gKi8KPiA+ID4gPiA+ID4gPiA+ICAJdmFsID0g STkxNV9SRUFEKENOTF9EUExMX0VOQUJMRShwbGwtPmlkKSk7Cj4gPiA+ID4gPiA+ID4gPiBAQCAt MjAwNiwxMSArMjAxOSw5IEBAIHN0YXRpYyB2b2lkIGNubF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4gPiA+ID4gPiAgCS8qCj4gPiA+ID4g PiA+ID4gPiAgCSAqIDUuIElmIHRoZSBmcmVxdWVuY3kgd2lsbCByZXN1bHQgaW4gYSBjaGFuZ2Ug dG8gdGhlIHZvbHRhZ2UKPiA+ID4gPiA+ID4gPiA+ICAJICogcmVxdWlyZW1lbnQsIGZvbGxvdyB0 aGUgRGlzcGxheSBWb2x0YWdlIEZyZXF1ZW5jeSBTd2l0Y2hpbmcKPiA+ID4gPiA+ID4gPiA+IC0J ICogU2VxdWVuY2UgQmVmb3JlIEZyZXF1ZW5jeSBDaGFuZ2UKPiA+ID4gPiA+ID4gPiA+IC0JICoK PiA+ID4gPiA+ID4gPiA+IC0JICogRklYTUU6IChEVkZTKSBpcyB1c2VkIHRvIGFkanVzdCB0aGUg ZGlzcGxheSB2b2x0YWdlIHRvIG1hdGNoIHRoZQo+ID4gPiA+ID4gPiA+ID4gLQkgKiBkaXNwbGF5 IGNsb2NrIGZyZXF1ZW5jaWVzCj4gPiA+ID4gPiA+ID4gPiArCSAqIChEVkZTKSBTZXF1ZW5jZSBC ZWZvcmUgRnJlcXVlbmN5IENoYW5nZQo+ID4gPiA+ID4gPiA+ID4gIAkgKi8KPiA+ID4gPiA+ID4g PiA+ICsJcmV0ID0gY25sX2R2ZnNfcHJlX2NoYW5nZShkZXZfcHJpdik7Cj4gPiA+ID4gPiA+ID4g PiAgCj4gPiA+ID4gPiA+ID4gPiAgCS8qIDYuIEVuYWJsZSBEUExMIGluIERQTExfRU5BQkxFLiAq Lwo+ID4gPiA+ID4gPiA+ID4gIAl2YWwgPSBJOTE1X1JFQUQoQ05MX0RQTExfRU5BQkxFKHBsbC0+ aWQpKTsKPiA+ID4gPiA+ID4gPiA+IEBAIC0yMDI4LDExICsyMDM5LDE0IEBAIHN0YXRpYyB2b2lk IGNubF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g PiA+ID4gPiA+ID4gPiAgCS8qCj4gPiA+ID4gPiA+ID4gPiAgCSAqIDguIElmIHRoZSBmcmVxdWVu Y3kgd2lsbCByZXN1bHQgaW4gYSBjaGFuZ2UgdG8gdGhlIHZvbHRhZ2UKPiA+ID4gPiA+ID4gPiA+ ICAJICogcmVxdWlyZW1lbnQsIGZvbGxvdyB0aGUgRGlzcGxheSBWb2x0YWdlIEZyZXF1ZW5jeSBT d2l0Y2hpbmcKPiA+ID4gPiA+ID4gPiA+IC0JICogU2VxdWVuY2UgQWZ0ZXIgRnJlcXVlbmN5IENo YW5nZQo+ID4gPiA+ID4gPiA+ID4gLQkgKgo+ID4gPiA+ID4gPiA+ID4gLQkgKiBGSVhNRTogKERW RlMpIGlzIHVzZWQgdG8gYWRqdXN0IHRoZSBkaXNwbGF5IHZvbHRhZ2UgdG8gbWF0Y2ggdGhlCj4g PiA+ID4gPiA+ID4gPiAtCSAqIGRpc3BsYXkgY2xvY2sgZnJlcXVlbmNpZXMKPiA+ID4gPiA+ID4g PiA+ICsJICogKERWRlMpIFNlcXVlbmNlIEFmdGVyIEZyZXF1ZW5jeSBDaGFuZ2UKPiA+ID4gPiA+ ID4gPiA+ICAJICovCj4gPiA+ID4gPiA+ID4gPiArCWlmIChyZXQgPT0gMCkgewo+ID4gPiA+ID4g PiA+ID4gKwkJY2RjbGsgPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGs7Cj4gPiA+ID4gPiA+ID4g PiArCQlwb3J0Y2xrID0gaW50ZWxfZGRpX3BvcnRfY2xvY2soZGV2X3ByaXYsIHBsbC0+aWQpOwo+ ID4gPiA+ID4gPiA+ID4gKwkJbGV2ZWwgPSBjbmxfZ2V0X2R2ZnNfbGV2ZWwoY2RjbGssIHBvcnRj bGspOwo+ID4gPiA+ID4gPiA+ID4gKwkJY25sX2R2ZnNfcG9zdF9jaGFuZ2UoZGV2X3ByaXYsIGxl dmVsKTsKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBUaGlzIGlzbid0IGhvdyBJIGltYWdp bmVkIHdlJ2QgaGFuZGxlIHRoaXMuIFdoYXQgSSB3YXMgYWZ0ZXIgaXMKPiA+ID4gPiA+ID4gPiBw cmUtY29tcHV0aW5nIHRoZSBjb3JyZWN0ICJkZnZmcyBsZXZlbCIgKG9yIHdoYXQgSSdkIHByb2Jh Ymx5IGp1c3QgY2FsbAo+ID4gPiA+ID4gPiA+ICJ2b2x0YWdlIiBvciBzb21ldGhpbmcgbGlrZSB0 aGF0KSwgYW5kIHRoZW4gd2UnZCBqdXN0IGxldCB0aGUgbm9ybWFsCj4gPiA+ID4gPiA+ID4gY2Rj bGsgcHJvZ3JhbW1pbmcgc2VxdWVuY2UgZG8gaXRzIHRoaW5nLgo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IElzIGl0IGV2ZW4gc2FmZSB0byBkbyB0aGlzIHdpdGggb3RoZXIgcGlwZXMvcG9y dHMgZW5hYmxlZD8gSSB3b3VsZAo+ID4gPiA+ID4gPiA+IGhhdmUgYXNzdW1lZCBubywgYnV0IG1h eWJlIEknbSBtaXN0YWtlbj8KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFdlbGwsIHRoaXMgaXMg aG93IHRoZSBzcGVjIGlzIHdyaXR0ZW4uIFNvIEkgYXNzdW1lIGl0IGlzIHNhZmUgdG8gY2hhbmdl Cj4gPiA+ID4gPiA+IHRoYXQgYXQgdGhhdCBwb2ludC4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ IEFsc28gd2UgZW5hYmxlIENEQ0xLIGR1cmluZyBib290IHdoaWxlIHdlIGhhdmUgbm8gd2F5IHRv IGNvbXB1dGUgdGhlCj4gPiA+ID4gPiA+IGxpbmsgcmF0ZS4gU28gSSBkb24ndCBzZWUgYSBiZXR0 ZXIgd2F5IG9mIGhhZGxpbmcgdGhhdC4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gV2UgZG8gYSBmdWxs IHN0YXRlIHJlYWRvdXQsIHdoaWNoIHNob3VsZCB0ZWxsIHVzIHdoYXQgdm9sdGFnZSB3ZSBuZWVk Lgo+ID4gPiA+ID4gQW5kIGlmIHRoZSBjZGNsayBpc24ndCBldmVuIGVuYWJsZWQsIHRoZW4gb2J2 aW91c2x5IHdlIGNhbid0IGhhdmUgYW55Cj4gPiA+ID4gPiBwaXBlcyBydW5uaW5nIGVpdGhlciwg c28gd2UgY2FuIHNhZmVseSBlbmFibGUgaXQgd2l0aCBhbnkgZnJlcXVlbmN5Cj4gPiA+ID4gPiBl dmVuIGJlZm9yZSB0aGUgZnVsbCBzdGF0ZSByZWFkb3V0Lgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ IFNvLCBBcnQgaXMgaXQgb2sgaW4gdGhlIHdheSB0aGF0IEknbSBwcm9wb3NpbmcgaGVyZToKPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+IG9uIGNvcmUgZGlzcGxheSBpbml0Ogo+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gLSBkdmZzLXByZTsKPiA+ID4gPiA+ID4gLSBlbmFibGUgY2RjbGs7Cj4gPiA+ ID4gPiA+IC0gZHZmcy1wb3N0IGNvbnNpZGVyaW5nIGNkY2xrIG9ubHkgYW5kIGxpbmsgcmF0ZSAw OyAKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IG9uIHBsbCBpbml0Ogo+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gLSBjb25zaWRlciBjZGNsayBhbmQgbGluayByYXRlIGFuZCBpZiBkZXNpcmVkIGxl dmVsIGlzIGRpZmZlcmVudCBmcm9tIHdoYXQgaXMgY3VycmVudGx5IHNldDogZHZmcy1wcmUKPiA+ ID4gPiA+ID4gLSBlbmFibGUgcGxsCj4gPiA+ID4gPiA+IC0gY29uc2lkZXIgY2RjbGsgYW5kIGxp bmsgcmF0ZSBhbmQgaWYgZGVzaXJlZCBsZXZlbCBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGlzIGN1 cnJlbnRseSBzZXQ6IGR2ZnMtcG9zdCB3aXRoIG5ldyBsZXZlbC4KPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+IFRoaXMgaXMgaG93IEkgcmVhZCB0aGUgc3BlYywgYnV0IHBsZWFzZSBsZXQgbWUga25v dyB3aGF0IEknbSBtaXNzaW5nLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBIbW0uIE9LLCBzbyBtYXli ZSB3ZSBjYW4gY2hhbmdlIHRoZSB2b2x0YWdlIHdoaWxlIHRoaW5ncyBhcmUgdXAgYW5kCj4gPiA+ ID4gPiBydW5uaW5nLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBUaGF0IHNhaWQsIHRoZSB2b2x0YWdl IGxldmVsIGlzIGEgZ2xvYmFsIHRoaW5nLCBzbyB3aGVuZXZlciB3ZSBjaGFuZ2UgaXQKPiA+ID4g PiA+IHdlIG11c3QgY29uc2lkZXIgdGhlIHN0YXRlIG9mIGFsbCBwb3J0cywgYW5kIHRoZSBjZGNs ay4gVGhpcyBsb29rcyBsaWtlCj4gPiA+ID4gPiBpdCBvbmx5IGNvbnNpZGVycyB0aGUgY3VycmVu dCBwb3J0LiBUaHVzIGlmIHdlIGZpcnN0IGVuYWJsZSBhIHBvcnQgdGhhdAo+ID4gPiA+ID4gbmVl ZHMgaGlnaCB2b2x0YWdlLCBhbmQgbGF0ZXIgYSBwb3J0IHRoYXQgY2FuIG1ha2UgZHVlIHdpdGgg YSBsb3dlcgo+ID4gPiA+ID4gdm9sdGFnZSB3ZSdsbCBlbmQgdXAgd2l0aCBzb21ldGhpbmcgbm90 IHdvcmtpbmcuCj4gPiA+ID4gCj4gPiA+ID4gb3VjaCEgdGhpcyBpcyB0cnVlISBTbywgd2hhdCBs aW5rIHJhdGUgc2hvdWxkIHdlIGNvbnNpZGVyIG9uIHRoYXQgZHZmcyBzcGVjPwo+ID4gPiA+IHNv LCBhbHdheXMgdGhlIGhpZ2hlc3QgYXZhaWJsYWJsZSBhdCB0aGF0IHRpbWU/Cj4gPiA+IAo+ID4g PiBZZXMuCj4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IFNvIHdlIGNhY2hlIHNvbWV3aGVyZSB0aGUg aGlnaGVzdCBvbiBhdG9taWMgY2hlY2s/IGFuZCB0aGVuIGR1cmluZwo+ID4gPiA+IHRoZXNlIGR2 ZnMgc2VxdWVuY2VzIHdlIGp1c3QgY2hlY2sgZm9yIHRoZSBoaWdoZXN0Pwo+ID4gPiAKPiA+ID4g SUlSQyBJIHBhc3RlYmlubmVkIGEgc2tldGNoIGZvciB0aGlzIGF0IHNvbWUgcG9pbnQuIEhtbS4g Rm91bmQgaXQsIGFuZAo+ID4gPiBwdXNoZWQgaXQgaGVyZToKPiA+ID4gZ2l0Oi8vZ2l0aHViLmNv bS92c3lyamFsYS9saW51eC5naXQgZHZmc192b2x0YWdlXzIKPiA+ID4gCj4gPiA+IEkgdHJpZWQg dG8gYWxzbyBwaW1wIGl0IGEgbGl0dGxlIGJpdCB0byBub3QgZm9yY2UgYSBtb2Rlc2V0IG9uIGFs bAo+ID4gPiBwaXBlcyBpZiBqdXN0IHRoZSB2b2x0YWdlIGNoYW5nZXMuCj4gPiA+IAo+ID4gPiBJ ICp0aGluayogdGhpcyBzaG91bGQgd29yaywgYWZ0ZXIgc29tZW9uZSBmaWxscyBvdXQgdGhlIGNv ZGUgZm9yCj4gPiA+IERESSAuY29tcHV0ZV9jb25maWcoKSBhbmQgLmdldF9jb25maWcoKS4gQnV0 IHRvdGFsbHkgdW50ZXN0ZWQgb2YgY291cnNlCj4gPiA+IHNvIFlNTVYuCj4gPiAKPiA+IEV4Y2Vw dCBJIGZvcmdvdCBhYm91dCB0aGUgbGFjayBvZiBhIHBjb2RlIGNvbW1hbmQgdG8gcmVhZCBvdXQg dGhlIGN1cnJlbnQKPiA+IHZvbHRhZ2Ugc2V0dGluZyA6KCBTbyBJIGhhZCB0byBhZGQgc29tZSBl eHRyYSBrbHVkZ2VzIHRvIHRoZSBzdGF0ZSByZWFkb3V0IAo+ID4gb24gdG9wLiBCcmFuY2ggdXBk YXRlZC4KPiAKPiBobW1tLi4uIHRoYW5rcyEKPiAKPiBvaywgd2UgbmVlZCB0byBjYWNoZSBzb21l dGhpbmcgc29tZXdoZXJlLgo+IAo+IEJ1dCBmb3IgbWUgaXQgc2VlbXMgYSBiaXQgaGFyZCB0byBh c3NvY2lhdGUgd2l0aCB0aGUgcG9ydCBjbG9jayBvbiB0aGUgcGxsIHN0aWxsLgoKQWxsIHRoYXQg c2hvdWxkIGJlIG5lZWRlZCB3aXRoIG15IGJyYW5jaCBpcyBzZXQgdGhlIGNydGMgc3RhdGUgCm1p bl92b2x0YWdlIGJhc2VkIG9uIHBvcnRfY2xvY2suIE5vIG5lZWQgdG8gdGhpbmsgYWJvdXQgUExM Uy4KCj4gCj4gU28gSSB3b25kZXIgaWYgd2Ugc2hvdWxkIGNhY2hlIHRoZSBsaW5rX3JhdGUgZGly ZWN0bHkgaW50byBkcGxsX2h3X3N0YXRlLAo+IG9uIHNhbWUgcGxhY2VzIHdlIHNldCBjZmdjcjAg dmFsdWVzLi4uCgpJIHdvdWxkbid0IGNvbWxpY2F0ZSB0aGlzIGJ5IGludm9sdmluZyBQTExzLgoK PiBzbyB3aGVuZXZlciB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIG1pbmltYWwgbGV2ZWwgd2Ug ZG8gYQo+IGZvcl9lYWNoX3BsbAo+IG1heF9saW5rX2Nsb2NrID0gbWF4KG1heF9saW5rX2Nsb2Nr LCBwbGwtPmh3X3N0YXRlLT5saW5rX2Nsb2NrKQo+IGNubF9jYWxjX3ZvbHRhZ2UoY2RjbGssIG1h eF9saW5rX2Nsb2NrKWEKPiAKPiBvciBhY3R1YWxseSBtb3ZlIHRoaXMgZm9yIGluc2lkZSBjbmxf Y2FsY192b2x0YWdlKGNkY2xrKS4KPiAKPiBhbmQgYWxzbyBJIGRvbid0IGJlbGlldmUgd2UgbmVl ZCB0aGUgZnVsbCBtb2Rlc2V0IHRvIGNoYW5nZSB0aGUgdm9sdGFnZSBsZXZlbC4KClRoYXQgc2hv dWxkbid0IGhhcHBlbiB3aXRoIHRoZSBsYXRlc3Qgc3R1ZmYgSSBwdXNoZWQgdG8gdGhlIGJyYW5j aC4KCj4gSSdkIGxpa2UgdG8gc3RheSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgc3BlYyBz ZXF1ZW5jZS4KClRoYXQgd291bGQgbWVhbiBtb3JlIGNvZGUgcGF0aHMgdG8gZG8gdGhlIHNhbWUg dGhpbmcsIHdoaWNoIG1lYW5zCnRoZXknbGwgYWNjdW11bGF0ZSBkaWZmZXJlbnQgYnVncy4gTm90 IHNvbWV0aGluZyBJIHdvdWxkIGNoZXJpc2guCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9U QwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK