From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Subject: Re: [DMC_BUGFIX_SKL_V2 1/5] drm/i915/skl: Added a check for the hardware status of csr fw before loading. Date: Tue, 29 Sep 2015 01:54:53 +0200 Message-ID: <5609D34D.4080902@intel.com> References: <55F09686.7080308@intel.com> <20150910144527.GY2767@phenom.ffwll.local> <55F1D4B0.7050104@intel.com> <20150914074612.GE3383@phenom.ffwll.local> <55F9C1A9.7000106@intel.com> <20150923075738.GF3383@phenom.ffwll.local> <56031060.9040708@intel.com> <20150928065256.GH3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 E019F6EA73 for ; Mon, 28 Sep 2015 16:54:55 -0700 (PDT) In-Reply-To: <20150928065256.GH3383@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gOS8yOC8yMDE1IDg6NTIgQU0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gV2VkLCBTZXAg MjMsIDIwMTUgYXQgMTA6NDk6MzZQTSArMDIwMCwgUmFmYWVsIEouIFd5c29ja2kgd3JvdGU6Cj4+ IE9uIDkvMjMvMjAxNSA3OjE3IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4gYWNwaV90YXJn ZXRfc3lzdGVtX3N0YXRlKCkgc2VlbXMgdG8gYmUgYWxtb3N0IHRoZSB0aGluZyB3ZSdyZSBsb29r aW5nCj4+PiBmb3IsIGV4Y2VwdCB0aGF0IGl0J3Mgb25seSB2YWxpZCBpbiB0aGUgc3VzcGVuZCBj YWxsYmFja3Mgc2luY2UgaXQKPj4+IGdldHMgcmVzZXQgdG8gQUNQSV9TVEFURV9TMCB3aGVuIHJl c3VtaW5nLiBTbyBwcm9iYWJseSB3ZSB3YW50Cj4+PiBzb21ldGhpbmcgZWxzZSAuLi4KPj4gUmln aHQuCj4+Cj4+IFRoZSBpZGVhIGlzIHRvIGFkZCBhIHdheSBmb3IgZHJpdmVycyB0byBjaGVjayBp Zgo+PiAoYSkgc3VzcGVuZCBpcyBnb2luZyB0byBlbnRlciB0aGUgQklPUwo+PiAoYikgcmVzdW1l IGhhcyBiZWVuIHRyaWdnZXJlZCBieSB0aGUgQklPUwo+PiBhbmQgdGhhdCdzIHJlYWxseSB3aGF0 IGRyaXZlcnMgbmVlZCB0byBrbm93Lgo+Pgo+PiBGb3Igc3VzcGVuZC10by1pZGxlIHRob3NlIHR3 byB3aWxsIHJldHVybiBmYWxzZSBhbmQgZm9yIFMzIHRoZXknbGwgcmV0dXJuCj4+IHRydWUuCj4+ Cj4+IFdvdWxkIHRoYXQgaGVscD8KPiBOb3Qgc3VyZSB0aGF0IG1hdGNoZXMgZXhheHRseSB3aGF0 IHdlJ2QgbmVlZCBoZXJlIC4uLiBFc3NlbnRpYWxseSB3ZSBuZWVkCj4gdG8ga25vdyB3aGV0aGVy IHdlJ3ZlIGJlZW4gaW4gUzMvUzQgKGZpcm13YXJlIGhhcyBiZWVuIGVhdGVuKSBvciBpbiBvbmUg b2YKPiB0aGUgaGlnaGVyIHN1c3BlbmQtdG8taWRsZS9zdGFuZGJ5IHN0YXRlcyAoZmlybXdhcmUg c3RpbGwgYWxpdmUsIGRvbid0Cj4gZGlzdHVyYiBpdCkuIEFkZGl0aW9uYWwgZnVuIHRoYXQganVz dCBjcm9zc2VkIG15IG1pbmQgaXMgdGhhdCBpZiB0aGUKPiBzdXNwZW5kLXRvLW1lbSBpcyBhYm9y dGVkIChzb21lIG90aGVyIGRyaXZlciBmYWlsZWQpIHRoZW4gdGhhdCBmdW5jdGlvbgo+IHNob3Vs ZCBfbm90XyBpbmRpY2F0ZSB0aGF0IHdlJ3ZlIGJlZW4gaW4gUzMuIFNvIG1heWJlIHNvbWV0aGlu ZyBsaWtlCgpTbyBpdCByZWFsbHkgbG9va3MgbGlrZSB0aGUgaW50ZXJmYWNlIEkgd2FzIHRhbGtp bmcgYWJvdXQgd291bGQgYmUgc3VpdGFibGU6CgpwbV9zdXNwZW5kX3ZpYV9maXJtd2FyZSgpID09 IHRydWUgLT4gZmlybXdhcmUgaXMgZ29pbmcgdG8gYmUgZWF0ZW4gKHVzZSAKdGhhdCBkdXJpbmcg c3VzcGVuZCBpZiBuZWVkZWQpCnBtX3Jlc3VtZV92aWFfZmlybXdhcmUoKSA9PSB0cnVlIC0+IGZp cm13YXJlIHdhcyBlYXRlbgoKVGhlIGxhdHRlciB3aWxsIG9ubHkgcmV0dXJuICd0cnVlJyBpZiB3 ZSByZWFsbHkgaGF2ZSBlbnRlcmVkIHRoZSBCSU9TIAoocGxhdGZvcm0gZmlybXdhcmUpLgoKPiBh Y3BpX3NvdXJjZV9zeXN0ZW1fc3RhdGUoKSB3aGljaCB1c3VhbGx5IGlzIFMwIGFuZCBvbmx5IHdo ZW4gYWNwaQo+IHN1Y2Nlc3NmdWxseSB3ZW50IGludG8gdGhlIHN1c3BlbmQgc3RhdGUgaW4gcGxh dGZvcm1fc3VzcGVuZF9vcHMtPmVudGVyIGl0Cj4gZ2V0cyBzZXQgdG8gdGhlIHZhbHVlIG9mIGFj cGlfdGFyZ2V0X3N5c3RlbV9zdGF0ZS4gQW5kIHRoZW4gcmVzZXQgb25jZSB0aGUKPiByZXN1bWUg aGFzIGNvbXBsZXRlZC4gSSB0aGluayB0aGF0IHdvdWxkIGJlIHdoYXQgd2UnZCB3YW50IGhlcmUu CgpXZSBuZWVkIHRvIG5ldyBmdW5jdGlvbnMgbGlrZSB0aGUgYWJvdmUsIGJlY2F1c2Ugc29tZSB0 aGluZ3MgYWxyZWFkeSAKZGVwZW5kIG9uIGFjcGlfdGFyZ2V0X3N5c3RlbV9zdGF0ZSB3b3JraW5n IHRoZSB3YXkgaXQgZG9lcyBjdXJyZW50bHkuCgpJIHNlZSBubyByZWFzb24gdG8gbWFrZSB0aGF0 IEFDUEktc3BlY2lmaWMsIHRob3VnaCwgaW4gcHJpbmNpcGxlLgoKPiBBbnl3YXkgSSdsbCBwdWxs IGluIEFuaW1lc2ggc2VyaWVzIG1lYW53aGlsZSwgYW1lbmRlZCB3aXRoIGEgRklYTUUgY29tbWVu dC4KCkZpbmUgYnkgbWUuCgpUaGFua3MsClJhZmFlbAoKCj4+PiBPbiBXZWQsIFNlcCAyMywgMjAx NSBhdCA2OjI4IFBNLCBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+Pj4+ IEFjdHVhbGx5IGFkZCBSYWZhZWwgdGhpcyB0aW1lIGFyb3VuZCAuLi4KPj4+PiAtRGFuaWVsCj4+ Pj4KPj4+PiBPbiBXZWQsIFNlcCAyMywgMjAxNSBhdCA2OjI3IFBNLCBEYW5pZWwgVmV0dGVyIDxk YW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+Pj4+PiBPbiBXZWQsIFNlcCAyMywgMjAxNSBhdCA5OjU3 IEFNLCBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+Pj4+Pj4gT24gVGh1 LCBTZXAgMTcsIDIwMTUgYXQgMTI6NTM6MjFBTSArMDUzMCwgQW5pbWVzaCBNYW5uYSB3cm90ZToK Pj4+Pj4+PiBPbiA5LzE0LzIwMTUgMToxNiBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPj4+Pj4+ Pj4gT24gRnJpLCBTZXAgMTEsIDIwMTUgYXQgMTI6MzY6MjRBTSArMDUzMCwgQW5pbWVzaCBNYW5u YSB3cm90ZToKPj4+Pj4+Pj4+IE9uIDkvMTAvMjAxNSA4OjE1IFBNLCBEYW5pZWwgVmV0dGVyIHdy b3RlOgo+Pj4+Pj4+Pj4+IE9uIFRodSwgU2VwIDEwLCAyMDE1IGF0IDAxOjU4OjU0QU0gKzA1MzAs IEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4+Pj4+Pj4+Pj4+IE9uIDkvMi8yMDE1IDI6MjQgUE0sIERh bmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+Pj4+Pj4+PiBPbiBXZWQsIEF1ZyAyNiwgMjAxNSBhdCAw Nzo0MDo1NFBNICswNTMwLCBBbmltZXNoIE1hbm5hIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4+IE9uIDgv MjYvMjAxNSA2OjQwIFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4+PiBPbiBX ZWQsIEF1ZyAyNiwgMjAxNSBhdCAwMTozNjowNUFNICswNTMwLCBBbmltZXNoIE1hbm5hIHdyb3Rl Ogo+Pj4+Pj4+Pj4+Pj4+Pj4gRG1jIHdpbGwgcmVzdG9yZSB0aGUgY3NyIHByb2dyYW0gZXhjZXB0 IERDOSwgY29sZCBib290LAo+Pj4+Pj4+Pj4+Pj4+Pj4gd2FybSByZXNldCwgUENJIGZ1bmN0aW9u IGxldmVsIHJlc2V0LCBhbmQgaGliZXJuYXRlL3N1c3BlbmQuCj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4+Pj4+Pj4gaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8g bG9hZCB0aGUgZmlybXdhcmUKPj4+Pj4+Pj4+Pj4+Pj4+IGRhdGEgZnJvbSBrZXJuZWwgbWVtb3J5 IHRvIGNzciBhZGRyZXNzIHNwYWNlLgo+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+IEFs bCB2YWx1ZXMgb2YgY3NyIGFkZHJlc3Mgc3BhY2Ugd2lsbCBiZSB6ZXJvIGlmIGl0IGdvdCByZXNl dCBhbmQKPj4+Pj4+Pj4+Pj4+Pj4+IHRoZSBmaXJzdCBieXRlIG9mIGNzciBwcm9ncmFtIGlzIGFs d2F5cyBhIG5vbi16ZXJvIGlmIGZpcm13YXJlCj4+Pj4+Pj4+Pj4+Pj4+PiBpcyBsb2FkZWQgc3Vj Y2Vzc2Z1bHkuIEJhc2VkIG9uIGhhcmR3YXJlIHN0YXR1cyB3aWxsIGxvYWQgdGhlCj4+Pj4+Pj4+ Pj4+Pj4+PiBmaXJtd2FyZS4KPj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+PiBXaXRob3V0 IHRoaXMgY29uZGl0aW9uIGNoZWNrIGlmIHdlIG92ZXJ3cml0ZSB0aGUgZmlybXdhcmUgZGF0YSB0 aGUKPj4+Pj4+Pj4+Pj4+Pj4+IGNvdW50ZXJzIGV4cG9zZWQgZm9yIGRjNS9kYzYgKGhlbHAgZm9y IGRlYnVnZ2luZykgd2lsbCBiZSBudWxsaWZpZWQuCj4+Pj4+Pj4+Pj4+Pj4gQmFjYXVzZSBvZiB0 aGUgYWJvdmUgcmVhc29uIG1lbnRpb25lZCBqdXN0IGFib3ZlIHdlIG5lZWQgdG8gYmxvY2sgZmly bXdhcmUgbG9hZGluZyBhZ2Fpbi4KPj4+Pj4+Pj4+Pj4+PiBTbyBvbmx5IFdBUk5fT04gd2lsbCBu b3QgaGVscC4KPj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+PiB2MTog SW5pdGlhbCB2ZXJzaW9uLgo+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+IHYyOiBCYXNl ZCBvbiByZXZpZXcgY29tbWVudHMgZnJvbSBEYW5pZWwsCj4+Pj4+Pj4+Pj4+Pj4+PiAtIEFkZGVk IGEgY2hlY2sgdG8ga25vdyBoYXJkd2FyZSBzdGF0dXMgYW5kIGxvYWQgdGhlIGZpcm13YXJlIGlm IG5vdCBsb2FkZWQuCj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4gQ2M6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+Pj4+Pj4gQ2M6IERhbWll biBMZXNwaWF1IDxkYW1pZW4ubGVzcGlhdUBpbnRlbC5jb20+Cj4+Pj4+Pj4+Pj4+Pj4+PiBDYzog SW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+Pj4+Pj4gQ2M6IFN1bmls IEthbWF0aCA8c3VuaWwua2FtYXRoQGludGVsLmNvbT4KPj4+Pj4+Pj4+Pj4+Pj4+IFNpZ25lZC1v ZmYtYnk6IEFuaW1lc2ggTWFubmEgPGFuaW1lc2gubWFubmFAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+ Pj4+Pj4gU2lnbmVkLW9mZi1ieTogVmF0aHNhbGEgTmFnYXJhanUgPHZhdGhzYWxhLm5hZ2FyYWp1 QGludGVsLmNvbT4KPj4+Pj4+Pj4+Pj4+Pj4+IC0tLQo+Pj4+Pj4+Pj4+Pj4+Pj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYyB8IDkgKysrKysrKysrCj4+Pj4+Pj4+Pj4+Pj4+PiAg IDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKPj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+ Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYwo+Pj4+Pj4+Pj4+Pj4+Pj4gaW5kZXggYmEx YWUwMy4uNjgyY2MyNiAxMDA2NDQKPj4+Pj4+Pj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Nzci5jCj4+Pj4+Pj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jc3IuYwo+Pj4+Pj4+Pj4+Pj4+Pj4gQEAgLTI1Miw2ICsyNTIsMTUgQEAgdm9p ZCBpbnRlbF9jc3JfbG9hZF9wcm9ncmFtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+Pj4+Pj4+ Pj4+Pj4+PiAgICAgICAgICAgICAgIHJldHVybjsKPj4+Pj4+Pj4+Pj4+Pj4+ICAgICAgIH0KPj4+ Pj4+Pj4+Pj4+Pj4+ICsgICAgIC8qCj4+Pj4+Pj4+Pj4+Pj4+PiArICAgICAgKiBEbWMgd2lsbCBy ZXN0b3JlIHRoZSBjc3IgdGhlIHByb2dyYW0gZXhjZXB0IERDOSwgY29sZCBib290LAo+Pj4+Pj4+ Pj4+Pj4+Pj4gKyAgICAgICogd2FybSByZXNldCwgUENJIGZ1bmN0aW9uIGxldmVsIHJlc2V0LCBh bmQgaGliZXJuYXRlL3N1c3BlbmQuCj4+Pj4+Pj4+Pj4+Pj4+PiArICAgICAgKiBUaGlzIGNvbmRp dGlvbiB3aWxsIGhlbHAgdG8gY2hlY2sgaWYgY3NyIGFkZHJlc3Mgc3BhY2UgaXMgcmVzZXQvCj4+ Pj4+Pj4+Pj4+Pj4+PiArICAgICAgKiBub3QgbG9hZGVkLgo+Pj4+Pj4+Pj4+Pj4+Pj4gKyAgICAg ICovCj4+Pj4+Pj4+Pj4+Pj4+IEF0bSB3ZSBjYWxsIHRoaXMgZnJvbSBkcml2ZXIgbG9hZCBhbmQg cmVzdW1lLCB3aGljaCBkb2VzbiBzZWVtIHRvIGNvdmVyCj4+Pj4+Pj4+Pj4+Pj4+IGFsbCB0aGUg Y2FzZXMgeW91IG1lbnRpb24gaW4gdGhlIGNvbW1lbnQuIFNob3VsZCB0aGlzIGJlIGEgV0FSTl9P Tgo+Pj4+Pj4+Pj4+Pj4+PiBpbnN0ZWFkPyBPciBkbyB3ZSBoYXZlIHRyb3VibGVzIGluIG91ciBp bml0IHNlcXVlbmNlIHdoZXJlIHdlIGxvYWQgdG9vCj4+Pj4+Pj4+Pj4+Pj4+IG1hbnkgdGltZXM/ Cj4+Pj4+Pj4+Pj4+Pj4gWWVzLCB0aGUgYWJvdmUgc3RhdGVtZW50IHRha2VuIGZyb20gYnNwZWMg dG8gZGVzY3JpYmUgYWJvdXQgdGhlIHNwZWNpYWwgY2FzZXMgZG1jIHdpbGwgbm90IHJlc3RvcmUg dGhlIGZpcm13YXJlLgo+Pj4+Pj4+Pj4+Pj4+IEFncmVlLCBJbiBvdXIgY2FzZXMgY29sZCBib290 IGFuZCBoaWJlcm5hdGUvc3VzcGVuZCBtYWlubHkgd2UgbmVlZCB0byBsb2FkIHRoZSBmaXJtd2Fy ZSBhZ2Fpbiwgc28gaW4gbXkKPj4+Pj4+Pj4+Pj4+PiBzZWNvbmQgc2VudGVuY2UgSSB3YW50ZWQg dG8gY29tbWVudCBtYWlubHkgcmVnYXJkaW5nIHRoaXMgY29uZGl0aW9uIGNoZWNrIGFkZGVkIGZv ciBzdXNwZW5kLWhpYmVybmF0ZShyZXNldCkKPj4+Pj4+Pj4+Pj4+PiBhbmQgY29sZCBib290KG5v dCBsb2FkZWQpLgo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gQW55d2F5cyB0aGUgc2FtZSBh cGkgbGF0ZXIgY2FuIGJlIHVzZWQgdG8gbG9hZCB0aGUgZmlybXdhcmUgZnJvbSBhbnl3aGVyZSwg c28gbXkgaW50ZW50aW9uIHRvIGNoZWNrIGZpcm13YXJlIGxvYWRlZCBvciBub3QuCj4+Pj4+Pj4+ Pj4+Pj4gSWYgYWxyZWFkeSBsb2FkZWQgdGhlbiBub3QgdG8gb3ZlcndyaXRlIHRoZSBjc3IgYWRk cmVzcyBzcGFjZSB0byBtYWludGFpbiB0aGUgZGM1L2RjNiBjb3VudGVyIHZhbHVlLgo+Pj4+Pj4+ Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gQ2FuIHRoZSBiZWxvdyBjb21tZW50IG1vcmUgY2xlYXIgdG8g eW91Lgo+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gICAgICAgICAvKgo+Pj4+Pj4+Pj4+Pj4+ ICAgICAgICAgICogRG1jIHdpbGwgcmVzdG9yZSB0aGUgY3NyIHRoZSBwcm9ncmFtIGV4Y2VwdCBE QzksIGNvbGQgYm9vdCwKPj4+Pj4+Pj4+Pj4+PiAgICAgICAgICAqIHdhcm0gcmVzZXQsIFBDSSBm dW5jdGlvbiBsZXZlbCByZXNldCwgYW5kIGhpYmVybmF0ZS9zdXNwZW5kLgo+Pj4+Pj4+Pj4+Pj4+ ICAgICAgICAgICogSWYgZmlybXdhcmUgaXMgcmVzdG9yZWQgYnkgZG1jIHRoZW4gbm8gbmVlZCB0 byBsb2FkIGFnYWluIHdoaWNoCj4+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgKiB3aWxsIGtlZXAgdGhl IGRjNS9kYzYgY291bnRlciBleHBvc2VkIGJ5IGZpcm13YXJlLgo+Pj4+Pj4+Pj4+Pj4+ICAgICAg ICAgICovCj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiBObyBpc3N1ZSBpbiBpbml0IHNlcXVl bmNlLgo+Pj4+Pj4+Pj4+Pj4gVGhhdCBzZWVtcyB0byBzdGlsbCBjb3ZlciBhbGwgdGhlIGNhbGxl cnMgb2YgdGhlIGZ1bmN0aW9uIGFmYWljcyAtIHdlIGRvCj4+Pj4+Pj4+Pj4+PiBwY2kgcmVzZXRz IG92ZXIgc3VzcGVuZCByZXN1bWUgdW5jb25kaXRpb25hbGx5LiBTbyBJIHN0aWxsIGRvbid0Cj4+ Pj4+Pj4+Pj4+PiB1bmRlcnN0YW5kIHdoZXJlIGV4YWN0bHkgd2UgdHJ5IHRvIGxvYWQgdGhlIGRt YyBmaXJtd2FyZSBpbiBpOTE1LmtvIHdoZW4KPj4+Pj4+Pj4+Pj4+IGl0J3MgYWxyZWFkeSBsb2Fk ZWQuCj4+Pj4+Pj4+Pj4+IER1cmluZyByZXN1bWUgaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSgpIHdp bGwgYmUgY2FsbGVkIGZyb20KPj4+Pj4+Pj4+Pj4gaW50ZWxfcnVudGltZV9yZXN1bWUoKS4KPj4+ Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gaW50ZWxfcnVudGltZV9yZXN1bWUoKS0+IHNrbF9yZXN1bWVf cHJlcGFyZSgpLT4gaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSgpCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+ Pj4+IER1cmluZyBQYzEwIGVudHJ5IHRlc3RpbmcgSSBjYW4gc2VlIGRtYyBpcyByZXN0b3Jpbmcg YmFjayB0aGUgZmlybXdhcmUgYWx3YXlzLAo+Pj4+Pj4+Pj4+PiBidXQgYXMgeW91IG1lbnRpb25l ZCBwY2ktcmVzZXQgY2FuIGhhcHBlbiB1bmNvbmRpdGlvbmFsbHksIGJ1dCBzdGlsbCB0aGVuCj4+ Pj4+Pj4+Pj4+IGFsc28gZHVyaW5nIHJlc3VtZSBpbnRlbF9ydW50aW1lX3Jlc3VtZSgpIHdpbGwg YmUgY2FsbGVkIGFuZCBiYXNlZCBvbgo+Pj4+Pj4+Pj4+PiByZWdpc3RlciByZWFkIG9mIGNzci1i YXNlLWFkZHJlc3MgZmlybXdhcmUgbG9hZGluZyB3aWxsIGhhcHBlbi4KPj4+Pj4+Pj4+PiBCdXQg aW4geW91ciBjb21tZW50IHlvdSdyZSBzYXlpbmcgaXQgd29uJ3QgZ2V0IHJlc3RvcmVkIGluIGNh c2Ugb2YgZGM5IGFuZAo+Pj4+Pj4+Pj4+IHN1c3BlbmQuIFNvIHRoYXQgc2VlbXMgdG8gbWlzbWF0 Y2ggd2hhdCB5b3UncmUgc2F5aW5nIGhlcmUgKGFuZCB3aGF0IHRoZQo+Pj4+Pj4+Pj4+IGNvbW1p dCBtZXNzYWdlIHNheXMpIGFuZCB3aGF0IHRoZSBjb2RlIGRvZXMuIEFuZCB0aGlzIGZ1bmN0aW9u IGhlcmUgaXMKPj4+Pj4+Pj4+PiBjYWxsZWQgZm9yIHJlc3VtZSBhZnRlciBzdXNwZW5kL2hpYmVy bmF0ZSBvbmx5Lgo+Pj4+Pj4+Pj4gcGMxMCBlbnRyeSBleHBsYW5hdGlvbiBJIHRvbGQgaXMgZm9y IHNreWxha2UuIGRjOSBpbiBza3lsYWtlIGlzIG5vdCBwb3NzaWJsZS4KPj4+Pj4+Pj4+IEkgdGhp bmsgeW91IGFyZSBjb25mdXNpbmcgYmV0d2VlbiBkYzYgYW5kIGRjOS4gUGMxMCBjYW4gYmUgYWNo aWV2ZWQgYnkKPj4+Pj4+Pj4+IGVudGVyaW5nIGludG8gZGM2IChub3QgZGM5KSBmb3Igc2t5bGFr ZS4gZGM5IGlzIHRoZSBsb3dlc3QgcG9zc2libGUgc3RhdGUKPj4+Pj4+Pj4+IGZvciBicm94dG9u IHdoaWNoIGlzIG5vdCBwcmVzZW50IGZvciBza3lsYWtlLgo+Pj4+Pj4+PiBJIGhhdmUgbm8gaWRl YSBhdCBhbGwgYWJvdXQgZGlmZmVyZW50IHBjIGxldmVscyBvbiBza2wuIFdoYXQgSSdtIHRhbGtp bmcKPj4+Pj4+Pj4gYWJvdXQgaXMgc3lzdGVtIHN1c3BlbmQvcmVzdW1lIGFuZCBkcml2ZXIgbG9h ZCwgd2hpY2ggYXJlIHRoZSBwbGFjZXMgdGhpcwo+Pj4+Pj4+PiBmdW5jdGlvbiBnZXRzIGNhbGxl ZC4gQXQgbGVhc3QgYWZhaWNzLgo+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gSGVyZSBpbnRlbF9jc3JfbG9h ZF9wcm9ncmFtKCkgd2lsbCBiZSB1c2VkIGZvciBib3RoIHNreWxha2UgYW5kIGJyb3h0b24sIGFu ZCBpbnN0cnVjdGlvbgo+Pj4+Pj4+Pj4gZXhlY3V0aW9uIGZsb3cgd2lsbCBiZSBkaWZmZXJlbnQg aW4gY2FzZSBvZiBzdXNwZW5kL3Jlc3VtZSB3aGljaCBJIHRoaW5rIGlzIGNvbmZ1c2luZwo+Pj4+ Pj4+Pj4geW91Lgo+Pj4+Pj4+PiBUaGF0IHNlZW1zIGxpa2UgcmVhbGx5IGltcG9ydGFudCBpbmZv cm1hdGlvbi4gV2hhdCdzIGRpZmZlcmVudCBvbiBieHQ/Cj4+Pj4+Pj4+IFRoZXNlIGFyZSB0aGUg a2luZCBvZiBkZXRhaWxzIHlvdSBzaG91bGQgZXhwbGFpbiBpbiB0aGUgY29tbWl0IG1lc3NhZ2Ug Li4uCj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBJIGFtIHJlYWR5IGV4cGxhaW4geW91IGluIGRldGFpbC4g SXQgd2lsbCBiZSBnb29kIGlmIHdlIGRpc2N1c3Mgc3BlY2lmaWMgdXNlLWNhc2Ugc2NlbmFyaW8K Pj4+Pj4+Pj4+IGFuZCBpdHogc29mdHdhcmUgZGVzaWduIGZvciBzcGVjaWZpYyBwbGF0Zm9ybS4g QW5vdGhlciBwb2ludCAtIGFzIGRtYyByZWxhdGVkIGNvZGUgZm9yCj4+Pj4+Pj4+PiBicm94dG9u IGlzIG5vdCBtZXJnZWQgYmV0dGVyIGZpcnN0IHdlIGNsb3NlIGRlc2lnbiBmb3Igc2t5bGFrZS4g Tm93LCBJIGhhdmUgYWRkZWQgZGM5Cj4+Pj4+Pj4+PiBkZXNjcmlwdGlvbiBpbiBjb21tZW50IHRo aW5raW5nIG9mIGZ1dHVyZS4gSWYgeW91IHdhbnQgSSBjYW4gcmVtb3ZlIGZvciBub3cgYW5kIGxh dGVyCj4+Pj4+Pj4+PiBjYW4gYWRkIGluIGJ4dCBwYXRjaCBzZXJpZXMgZm9yIGVuYWJsaW5nIGRt Yy4gV2lsbCB3YWl0IGZvciB5b3VyIHJlcGx5Lgo+Pj4+Pj4+PiBUaGlzIHF1ZXN0aW9uIGhlcmUg aXNuJ3QgYWJvdXQgdGhlIG92ZXJhbGwgZGVzaWduIGFuZCBob3cgdG8gaGFuZGxlIHBvd2VyCj4+ Pj4+Pj4+IHdlbGxzIGluIHNrbC9ieHQuIFRoYXQncyBhIHNlcGFyYXRlIGRpc2N1c3Npb24gYW5k IHRyYWNrZWQgc29tZXdoZXJlIGVsc2UuCj4+Pj4+Pj4+IEknbSByZWFsbHkganVzdCBjb25mdXNl ZCBhYm91dCB3aGVuIGV4YWN0bHkgd2UgbmVlZCB0byByZWxvYWQgdG8gZmlybXdhcmUsCj4+Pj4+ Pj4+IGFuZCB3aHkgd2UgbmVlZCBhIHJ1bnRpbWUgY2hlY2sgZm9yIHRoYXQuIE5vcm1hbGx5IHdl IHNob3VsZCBrbm93IHdoZW4gdG8KPj4+Pj4+Pj4gcmVsb2FkIHRoZSBmaXJtd2FyZSBhbmQganVz dCBlaXRoZXIgcmVsb2FkIG9yIG5vdCwgd2l0aG91dCBjaGVja2luZyBodwo+Pj4+Pj4+PiBzdGF0 ZS4gQW5kIEkgZG9uJ3QgbGlrZSBjaGVja2luZyBmb3IgaHcgc3RhdGUgc2luY2UgYXQgbGVhc3Qg aW4gdGhlIHBhc3QKPj4+Pj4+Pj4gdGhhdCBraW5kIG9mIGNvZGUgZW5kZWQgdXAgYmVpbmcgZnJh Z2lsZSAtIGl0J3MgYW4gaWxsdXNpb24gdGhhdCBpdCBkb2VzCj4+Pj4+Pj4+IHRoZSByaWdodCB0 aGluZyBubyBtYXR0ZXIgd2hhdCwgc2luY2Ugb2Z0ZW4gdGhlcmUncyBvdGhlciB0cmlja3kgb3Jk ZXJpbmcKPj4+Pj4+Pj4gY29uc3RyYWludHMuIEFuZCBpZiB5b3UgaGF2ZSBhdXRvbWF0aWMgZHVj dC10YXBlIGxpa2UgdGhlbiBubyBvbmUgd2lsbAo+Pj4+Pj4+PiBldmVyIHNwb3QgdGhvc2Ugb3Ro ZXIsIGhhcmRlciB0byBzcG90IGlzc3VlcywgdW50aWwgYW4gZXhwZW5zaXZlIGN1c3RvbWVyCj4+ Pj4+Pj4+IGVzY2FsYXRpb24gaGFwcGVucy4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gU28gd2hhdCBJIHdh bnQgdG8ga25vdyBoZXJlIGlzOgo+Pj4+Pj4+PiAtIFdoZW4gZXhhY3RseSBkbyB3ZSBuZWVkIHRv IHJlbG9hZCBkbWMgZmlybXdhcmUuCj4+Pj4+Pj4gSW4gc2tsLCBkdXJpbmcgZHJpdmVyIGxvYWQg Zmlyc3QgdGltZSB3ZSBsb2FkIHRoZSBmaXJtd2FyZSwgZHVyaW5nIG5vcm1hbAo+Pj4+Pj4+IHN1 c3BlbmQtcmVzdW1lIChkYzYgZW50cnkvZXhpdCkKPj4+Pj4+PiBubyBuZWVkIHRvIHJlbG9hZCB0 aGUgZmlybXdhcmUgYWdhaW4gYXMgZG1jIHdpbGwgdGFrZSBjYXJlIG9mIGl0LiBCdXQgZHVyaW5n Cj4+Pj4+Pj4gc3VzcGVuZC9oaWJlcm5hdGlvbgo+Pj4+Pj4+IGRtYyB3aWxsIG5vdCByZXN0b3Jl IHRoZSBmaXJtd2FyZS4gSW4gdGhhdCBjYXNlIGRyaXZlciBuZWVkIHRvIHJlbG9hZCBpdAo+Pj4+ Pj4+IGFnYWluLiBJIGRvIG5vdCBrbm93Cj4+Pj4+Pj4gaG93IHRvIGRpZmZlcmVudGlhdGUgcG0t c3VzcGVuZCBhbmQgc3VzcGVuZC1oaWJlcm5hdGlvbiBhbmQgdGhvdWdodCBib3RoIHRoZQo+Pj4+ Pj4+IGNhc2VzCj4+Pj4+Pj4gaW50ZWxfcnVudGltZV9yZXN1bWUoKSB3aWxsIGJlIGNhbGxlZCB3 aGVyZSB3ZSBjYW4gY2hlY2sgdGhlIGgvdyBzdGF0ZSBhbmQKPj4+Pj4+PiByZWxvYWQgdGhlCj4+ Pj4+Pj4gZmlybXdhcmUgaWYgZG1jIGlzIG5vdCByZXN0b3JlZC4KPj4+Pj4+Pgo+Pj4+Pj4+IElu IGJ4dCwgZHVyaW5nIGRyaXZlciBsb2FkIGZpcnN0IHRpbWUgd2UgbG9hZCB0aGUgZmlybXdhcmUs IGR1cmluZyBub3JtYWwKPj4+Pj4+PiBzdXNwZW5kLXJlc3VtZQo+Pj4+Pj4+IGRpc3BsYXkgZW5n aW5lIHdpbGwgZW50ZXIgaW50byBkYzkgYW5kIGRtYyB3aWxsIG5vdCByZXN0b3JlIHRoZSBmaXJt d2FyZS4gU28KPj4+Pj4+PiBldmVyeQo+Pj4+Pj4+IHN1c3BlbmQtcmVzdW1lIHdlIG5lZWQgdG8g cmVsb2FkIHRoZSBmaXJtd2FyZS4KPj4+Pj4+Pj4gLSBXaGF0IGV4YWN0bHkgaXMgdGhlIHJlYXNv biB3aHkgd2UgY2FuJ3QgbWFrZSB0aGF0IGRlY2lzaW9uIHN0YXRpY2FsbHkgaW4KPj4+Pj4+Pj4g ICAgdGhlIGNvZGUgKGJ5IGNhbGxpbmcgY3NyX2xvYWQgYXQgdGhlIHJpZ2h0IHNwb3RzKS4KPj4+ Pj4+PiBBcyBJIG1lbnRpb25lZCBiZWZvcmUgaW4gY2FzZSBvZiBza3lsYWtlIGNhbiB3ZSBkaWZm ZXJlbnRpYXRlIGJldHdlZW4KPj4+Pj4+PiAicmVzdW1lIGZyb20gcG0tc3VzcGVuZCIgd2l0aCAi cmVzdW1lIGZyb20gc3VzcGVuZC1oaWJlcm5hdGlvbiIgaW5zaWRlCj4+Pj4+Pj4gZHJpdmVyPwo+ Pj4+Pj4+Cj4+Pj4+Pj4gSW4gY2FzZSBvZiBicm94dG9uLCBldmVyeSB0aW1lIHdlIG5lZWQgdG8g cmVsb2FkLCBzbyB3ZSBjYW4gZGVjaWRlCj4+Pj4+Pj4gc3RhdGljYWxseS4KPj4+Pj4+IE9mIGNv dXJzZSB3ZSBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGFsbCB0aGUgZGlmZmVyZW50IHJlc3Vt ZSBwYXRocywgYW5kCj4+Pj4+PiB3ZSBhbHNvIGhhdmUgYSBwZXItcGxhdGZvcm0gc3BsaXQgdG8g dGFrZSBjYXJlIG9mIGJ4dCB2cy4gc2tsLiBBbmQgdGhlcmUKPj4+Pj4+IGFyZSBhY3R1YWxseSAz IGRpZmZlcmVudCByZXN1bWUgcGF0aHM6Cj4+Pj4+Pgo+Pj4+Pj4gLSBydW50aW1lIFBNIHJlc3Vt ZS4gVGhpcyBjYWxscyB0aGUgcnVudGltZV9yZXN1bWUgaG9vay4gSXQgc291bmRzIGxpa2Ugb24K Pj4+Pj4+ICAgIHNrbCB3ZSBzaG91bGQgX25vdF8gbG9hZCB0aGUgY3NyIGZpcm13YXJlLCBidXQg b24gYnh0IHdlIHNob3VsZCBsb2FkIGl0Lgo+Pj4+Pj4gICAgVGhpcyBjYW4gYmUgZml4ZWQgYnkg cmVtb3ZpbmcgdGhlIGludGVsX2Nzcl9sb2FkX3Byb2dyYW0gY2FsbCBmcm9tCj4+Pj4+PiAgICBz a2xfcmVzdW1lX3ByZXBhcmUuCj4+Pj4+PiAtIHJlc3VtZSBmcm9tIGhpYmVybmF0ZS10by1kaXNr IChpLmUuIHN5c3RlbSBjb21wbGV0ZWx5IG9mZiwgc3RhdGUgc3RvcmVkCj4+Pj4+PiAgICBvbiB0 aGUgc3dhcCBwYXJ0aXRpb24pIGlzIGRvbmUgYnkgY2FsbGluZyB0aGUgdGhhdyBjYWxsYmFja3Mu Cj4+Pj4+PiAtIHJlc3VtZSBmcm9tIHN1c3BlbmQtdG8tbWVtIChpLmUuIHN5c3RlbSBpbiBsb3ct cG93ZXIgd2l0aCBvbmx5IG1lbW9yeQo+Pj4+Pj4gICAgaW4gc2VsZi1yZWZyZXNoLCBhbGwgc3Rh dGUgc3RvcmVkIGluIG1lbW9yeSkgaXMgZG9uZSBieSBjYWxsaW5nIHRoZQo+Pj4+Pj4gICAgcmVz dW1lIGNhbGxiYWNrcy4KPj4+Pj4+Cj4+Pj4+PiBGb3IgaTkxNSB3ZSB1c2UgdW5pZmllZCBoYW5k bGVycyBpbiBvdXIgZGV2X3BtX29wcyBmb3IgYm90aCB0aGF3IGFuZAo+Pj4+Pj4gcmVzdW1lLCBi dXQgaXQgc291bmRzIGxpa2UgdGhhdCB3b24ndCBiZSBhIHByb2JsZW0gZm9yIHNrbC9ieHQgc2lu Y2Ugd2UKPj4+Pj4+IG5lZWQgdG8gcmVsb2FkIHRoZSBjc3IgZmlybXdhcmUgaW4gYWxsIGNhc2Vz LiBBbHRob3VnaCBJJ20gbm90IHBlcmZlY3RseQo+Pj4+Pj4gc3VyZSBzaW5jZSB5b3UgZG9uJ3Qg ZXhwbGFpbiB3aGF0IGtpbmQgb2YgcmVzdW1lIHlvdSBtZWFuIGV4YWN0bHkgKHNpbmNlCj4+Pj4+ PiB5b3UgZG9uJ3QgdXNlIHRoZSBsaW51eCBuYW1lcyBmb3IgdGhlbSkuCj4+Pj4+Pgo+Pj4+Pj4g QW55d2F5IGl0IHNvdW5kcyBsaWtlIHdlIGNhbiByZXBsYWNlIHRoaXMgcGF0Y2ggYnkgb25lIHdo ZXJlIHdlIHJlbW92ZQo+Pj4+Pj4gdGhhdCBlcnJvcm5vdXMgY3NyIGxvYWQgY2FsbCBmcm9tIHNr bCBydW50aW1lIHBtIHJlc3VtZSBhbmQgdGhhdCdzIGFsbC4KPj4+Pj4+IEJ1dCBJIHN1Z2dlc3Qg dG8gbWFrZSBzdXJlIHdlIGdldCB0aGlzIHJpZ2h0IHdlIGtlZXAgdGhlIGNoZWNrIHlvdSdyZQo+ Pj4+Pj4gYWRkaW5nIGhlcmUsIGJ1dCB3cmFwIGl0IGluIGEgV0FSTl9PTi4gVGhlbiB3ZSdsbCBn ZXQgYSBiYWNrdHJhY2Ugd2hlbgo+Pj4+Pj4gdGhpcyBpcyBnb2luZyB3cm9uZyBhZ2Fpbi4gTGlr ZSB0aGlzOgo+Pj4+Pj4KPj4+Pj4+ICAgICAgICAgIGlmIChXQVJOX09OKGNzcl9sb2FkZWRfYWxy ZWFkeSgpKSkKPj4+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+Pj4KPj4+Pj4+IEFs c28gd2hlbiByZWRvaW5nIHRoZSBjb21taXRzIHBsZWFzZSBleHBsYWluIGluIGRldGFpbCB3aGF0 IGV4YWN0bHkgYXJlCj4+Pj4+PiB0aGUgcmVxdWlyZW1lbnRzIGxpa2UgeW91J3ZlIGRvbmUgYWJv dmUsIGJ1dCBwbGVhc2UgdXNlIHRoZSBzdGFuZGFyZCBsaW51eAo+Pj4+Pj4gbmFtZXMsIGkuZS4g InJ1bnRpbWUgUE0iIGFuZCAiaGliZXJuYXRlLXRvLWRpc2siIGFuZCAic3VzcGVuZC10by1tZW0i Lgo+Pj4+PiBPayBob29yYXkgdGhlcmUncyBtb3JlIHN1c3BlbmQtdG8tc29tZXRoaW5nIHRoaW5n cyBJJ3ZlIHRvdGFsbHkgbWlzc2VkOgo+Pj4+PiAtIHN1c3BlbmQtdG8taWRsZSAoZG9uZSBieSBj YXQgZnJlZXplID4gL3N5cy9wb3dlci9zdGF0ZSkgYW5kCj4+Pj4+IC0gc3VzcGVuZCAoZG9uZSBi eSBjYXQgc3VzcGVuZCA+IC9zeXMvcG93ZXIvc3RhdGUpCj4+Pj4+Cj4+Pj4+IEFuZCBhcHBhcmVu dGx5IHRoZXJlJ3MgcmVhbGx5IG5vIHdheSB0byBkcml2ZXJzIHRvIHRlbGwgdGhlbSBhcGFydC4K Pj4+Pj4gUmFmYWVsLCBpcyB0aGVyZSByZWFsbHkgbm8gd2F5IGZvciBkcml2ZXJzIHRvIHRha2Ug ZGlmZmVyZW50IHBhdGhzIGZvcgo+Pj4+PiB0aGVzZSAzIHN1c3BlbmQgY2FzZXM/IEkgdHJpZWQg Z3JlcHBpbmcgZm9yIFBNX1NVU1BFTkRfT04vU1RBTkRZL01FTQo+Pj4+PiBhbmQgZGlkbid0IHNw b3QgYW55dGhpbmcuCj4+Pj4+Cj4+Pj4+IEFsc28gd2UncmUgY29tcGxldGVseSBtaXNzaW5nIHRl c3QgY292ZXJhZ2UgZm9yIHRoYXQgaW4gaWd0LiBUaGF0IGlzCj4+Pj4+IHNvbWV0aGluZyB0aGF0 IG5lZWRzIHRvIGJlIGZpeGVkIGFzYXAgKHlldCBhbm90aGVyIGNhc2Ugb2YKPj4+Pj4gY29tYmlu YXRvcmlhbCBleHBsb3Npb24gaW4gaWd0IHRlc3RzLCB5YXkpLiBBbmQgYXQgbGVhc3Qgb25lIG9m IHRob3NlCj4+Pj4+IHN1c3BlbmQtdG8taWRsZSB0ZXN0Y2FzZSBiZXR0ZXIgYmUgaW4gdGhlIEJB VC4KPj4+Pj4gLURhbmllbAo+Pj4+PiAtLQo+Pj4+PiBEYW5pZWwgVmV0dGVyCj4+Pj4+IFNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+Pj4+PiArNDEgKDApIDc5IDM2NSA1NyA0 OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4+Pj4KPj4+PiAtLQo+Pj4+IERhbmllbCBWZXR0ZXIK Pj4+PiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPj4+PiArNDEgKDApIDc5 IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4+PgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK