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: Thu, 1 Oct 2015 01:34:08 +0200 Message-ID: <560C7170.5090600@intel.com> References: <55F9C1A9.7000106@intel.com> <20150923075738.GF3383@phenom.ffwll.local> <56031060.9040708@intel.com> <20150928065256.GH3383@phenom.ffwll.local> <5609D34D.4080902@intel.com> <20150929085111.GE3383@phenom.ffwll.local> <560B31E0.8060807@intel.com> <20150930121404.GD3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 2EF576E130 for ; Wed, 30 Sep 2015 16:34:12 -0700 (PDT) In-Reply-To: <20150930121404.GD3383@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 T24gOS8zMC8yMDE1IDI6MTQgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gV2VkLCBTZXAg MzAsIDIwMTUgYXQgMDI6NTA6NDBBTSArMDIwMCwgUmFmYWVsIEouIFd5c29ja2kgd3JvdGU6Cj4+ IE9uIDkvMjkvMjAxNSAxMDo1MSBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPj4+IE9uIFR1ZSwg U2VwIDI5LCAyMDE1IGF0IDAxOjU0OjUzQU0gKzAyMDAsIFJhZmFlbCBKLiBXeXNvY2tpIHdyb3Rl Ogo+Pj4+IE9uIDkvMjgvMjAxNSA4OjUyIEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+PiBP biBXZWQsIFNlcCAyMywgMjAxNSBhdCAxMDo0OTozNlBNICswMjAwLCBSYWZhZWwgSi4gV3lzb2Nr aSB3cm90ZToKPj4+Pj4+IE9uIDkvMjMvMjAxNSA3OjE3IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3Rl Ogo+Pj4+Pj4+IGFjcGlfdGFyZ2V0X3N5c3RlbV9zdGF0ZSgpIHNlZW1zIHRvIGJlIGFsbW9zdCB0 aGUgdGhpbmcgd2UncmUgbG9va2luZwo+Pj4+Pj4+IGZvciwgZXhjZXB0IHRoYXQgaXQncyBvbmx5 IHZhbGlkIGluIHRoZSBzdXNwZW5kIGNhbGxiYWNrcyBzaW5jZSBpdAo+Pj4+Pj4+IGdldHMgcmVz ZXQgdG8gQUNQSV9TVEFURV9TMCB3aGVuIHJlc3VtaW5nLiBTbyBwcm9iYWJseSB3ZSB3YW50Cj4+ Pj4+Pj4gc29tZXRoaW5nIGVsc2UgLi4uCj4+Pj4+PiBSaWdodC4KPj4+Pj4+Cj4+Pj4+PiBUaGUg aWRlYSBpcyB0byBhZGQgYSB3YXkgZm9yIGRyaXZlcnMgdG8gY2hlY2sgaWYKPj4+Pj4+IChhKSBz dXNwZW5kIGlzIGdvaW5nIHRvIGVudGVyIHRoZSBCSU9TCj4+Pj4+PiAoYikgcmVzdW1lIGhhcyBi ZWVuIHRyaWdnZXJlZCBieSB0aGUgQklPUwo+Pj4+Pj4gYW5kIHRoYXQncyByZWFsbHkgd2hhdCBk cml2ZXJzIG5lZWQgdG8ga25vdy4KPj4+Pj4+Cj4+Pj4+PiBGb3Igc3VzcGVuZC10by1pZGxlIHRo b3NlIHR3byB3aWxsIHJldHVybiBmYWxzZSBhbmQgZm9yIFMzIHRoZXknbGwgcmV0dXJuCj4+Pj4+ PiB0cnVlLgo+Pj4+Pj4KPj4+Pj4+IFdvdWxkIHRoYXQgaGVscD8KPj4+Pj4gTm90IHN1cmUgdGhh dCBtYXRjaGVzIGV4YXh0bHkgd2hhdCB3ZSdkIG5lZWQgaGVyZSAuLi4gRXNzZW50aWFsbHkgd2Ug bmVlZAo+Pj4+PiB0byBrbm93IHdoZXRoZXIgd2UndmUgYmVlbiBpbiBTMy9TNCAoZmlybXdhcmUg aGFzIGJlZW4gZWF0ZW4pIG9yIGluIG9uZSBvZgo+Pj4+PiB0aGUgaGlnaGVyIHN1c3BlbmQtdG8t aWRsZS9zdGFuZGJ5IHN0YXRlcyAoZmlybXdhcmUgc3RpbGwgYWxpdmUsIGRvbid0Cj4+Pj4+IGRp c3R1cmIgaXQpLiBBZGRpdGlvbmFsIGZ1biB0aGF0IGp1c3QgY3Jvc3NlZCBteSBtaW5kIGlzIHRo YXQgaWYgdGhlCj4+Pj4+IHN1c3BlbmQtdG8tbWVtIGlzIGFib3J0ZWQgKHNvbWUgb3RoZXIgZHJp dmVyIGZhaWxlZCkgdGhlbiB0aGF0IGZ1bmN0aW9uCj4+Pj4+IHNob3VsZCBfbm90XyBpbmRpY2F0 ZSB0aGF0IHdlJ3ZlIGJlZW4gaW4gUzMuIFNvIG1heWJlIHNvbWV0aGluZyBsaWtlCj4+Pj4gU28g aXQgcmVhbGx5IGxvb2tzIGxpa2UgdGhlIGludGVyZmFjZSBJIHdhcyB0YWxraW5nIGFib3V0IHdv dWxkIGJlIHN1aXRhYmxlOgo+Pj4+Cj4+Pj4gcG1fc3VzcGVuZF92aWFfZmlybXdhcmUoKSA9PSB0 cnVlIC0+IGZpcm13YXJlIGlzIGdvaW5nIHRvIGJlIGVhdGVuICh1c2UgdGhhdAo+Pj4+IGR1cmlu ZyBzdXNwZW5kIGlmIG5lZWRlZCkKPj4+PiBwbV9yZXN1bWVfdmlhX2Zpcm13YXJlKCkgPT0gdHJ1 ZSAtPiBmaXJtd2FyZSB3YXMgZWF0ZW4KPj4+Pgo+Pj4+IFRoZSBsYXR0ZXIgd2lsbCBvbmx5IHJl dHVybiAndHJ1ZScgaWYgd2UgcmVhbGx5IGhhdmUgZW50ZXJlZCB0aGUgQklPUwo+Pj4+IChwbGF0 Zm9ybSBmaXJtd2FyZSkuCj4+PiBZZWFoIHRoYXQgc2VlbXMgdG8gZml0IHRoZSBiaWxsLiBXZSBh bHJlYWR5IGhhdmUgYSBjaGVjayBpbiBvdXIgc3VzcGVuZAo+Pj4gcGF0aHMgdG8gZmlndXJlIG91 dCB3aGV0aGVyIHdlJ2xsIHN1c3BlbmQgdG8gaWRsZSBvciBnbyBpbnRvIGZ1bGwgUzMsIHNvCj4+ PiBpOTE1IGNvdWxkIHVzZSB0aGVtIGJvdGguIEFuZCBtYWtpbmcgdGhlbSBnZW5lcmljIHdvdWxk IG1ha2Ugc2Vuc2UgSQo+Pj4gZ3Vlc3MuCj4+IE9LLCBzZW50IHBhdGNoZXMgKENDZWQgeW91KSwg cGxlYXNlIGhhdmUgYSBsb29rLgo+IEVYUE9SVF9TWU1CT0wgc2VlbXMgbWlzc2luZywKCkdvb2Qg cG9pbnQsIHdpbGwgZml4LgoKPiAgIGJ1dCBsZ3RtIG90aGVyd2lzZS4gSSBoYXZlbid0IHRyaWVk IHRvIHVzZQo+IHRoZW0gZm9yIHRoZSB0d28gY2FzZXMgaW4gaTkxNSB0aG91Z2guCgpPSywgdGhh bmtzIQoKUmFmYWVsCgoKPgo+Pj4+PiBhY3BpX3NvdXJjZV9zeXN0ZW1fc3RhdGUoKSB3aGljaCB1 c3VhbGx5IGlzIFMwIGFuZCBvbmx5IHdoZW4gYWNwaQo+Pj4+PiBzdWNjZXNzZnVsbHkgd2VudCBp bnRvIHRoZSBzdXNwZW5kIHN0YXRlIGluIHBsYXRmb3JtX3N1c3BlbmRfb3BzLT5lbnRlciBpdAo+ Pj4+PiBnZXRzIHNldCB0byB0aGUgdmFsdWUgb2YgYWNwaV90YXJnZXRfc3lzdGVtX3N0YXRlLiBB bmQgdGhlbiByZXNldCBvbmNlIHRoZQo+Pj4+PiByZXN1bWUgaGFzIGNvbXBsZXRlZC4gSSB0aGlu ayB0aGF0IHdvdWxkIGJlIHdoYXQgd2UnZCB3YW50IGhlcmUuCj4+Pj4gV2UgbmVlZCB0byBuZXcg ZnVuY3Rpb25zIGxpa2UgdGhlIGFib3ZlLCBiZWNhdXNlIHNvbWUgdGhpbmdzIGFscmVhZHkgZGVw ZW5kCj4+Pj4gb24gYWNwaV90YXJnZXRfc3lzdGVtX3N0YXRlIHdvcmtpbmcgdGhlIHdheSBpdCBk b2VzIGN1cnJlbnRseS4KPj4+Pgo+Pj4+IEkgc2VlIG5vIHJlYXNvbiB0byBtYWtlIHRoYXQgQUNQ SS1zcGVjaWZpYywgdGhvdWdoLCBpbiBwcmluY2lwbGUuCj4+Pj4KPj4+Pj4gQW55d2F5IEknbGwg cHVsbCBpbiBBbmltZXNoIHNlcmllcyBtZWFud2hpbGUsIGFtZW5kZWQgd2l0aCBhIEZJWE1FIGNv bW1lbnQuCj4+Pj4gRmluZSBieSBtZS4KPj4+Pgo+Pj4+IFRoYW5rcywKPj4+PiBSYWZhZWwKPj4+ Pgo+Pj4+Cj4+Pj4+Pj4gT24gV2VkLCBTZXAgMjMsIDIwMTUgYXQgNjoyOCBQTSwgRGFuaWVsIFZl dHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90ZToKPj4+Pj4+Pj4gQWN0dWFsbHkgYWRkIFJhZmFl bCB0aGlzIHRpbWUgYXJvdW5kIC4uLgo+Pj4+Pj4+PiAtRGFuaWVsCj4+Pj4+Pj4+Cj4+Pj4+Pj4+ IE9uIFdlZCwgU2VwIDIzLCAyMDE1IGF0IDY6MjcgUE0sIERhbmllbCBWZXR0ZXIgPGRhbmllbEBm ZndsbC5jaD4gd3JvdGU6Cj4+Pj4+Pj4+PiBPbiBXZWQsIFNlcCAyMywgMjAxNSBhdCA5OjU3IEFN LCBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+Pj4+Pj4+Pj4+IE9uIFRo dSwgU2VwIDE3LCAyMDE1IGF0IDEyOjUzOjIxQU0gKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6 Cj4+Pj4+Pj4+Pj4+IE9uIDkvMTQvMjAxNSAxOjE2IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ Pj4+Pj4+Pj4+Pj4gT24gRnJpLCBTZXAgMTEsIDIwMTUgYXQgMTI6MzY6MjRBTSArMDUzMCwgQW5p bWVzaCBNYW5uYSB3cm90ZToKPj4+Pj4+Pj4+Pj4+PiBPbiA5LzEwLzIwMTUgODoxNSBQTSwgRGFu aWVsIFZldHRlciB3cm90ZToKPj4+Pj4+Pj4+Pj4+Pj4gT24gVGh1LCBTZXAgMTAsIDIwMTUgYXQg MDE6NTg6NTRBTSArMDUzMCwgQW5pbWVzaCBNYW5uYSB3cm90ZToKPj4+Pj4+Pj4+Pj4+Pj4+IE9u IDkvMi8yMDE1IDI6MjQgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+Pj4+Pj4+Pj4+Pj4g T24gV2VkLCBBdWcgMjYsIDIwMTUgYXQgMDc6NDA6NTRQTSArMDUzMCwgQW5pbWVzaCBNYW5uYSB3 cm90ZToKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gT24gOC8yNi8yMDE1IDY6NDAgUE0sIERhbmllbCBWZXR0 ZXIgd3JvdGU6Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBPbiBXZWQsIEF1ZyAyNiwgMjAxNSBhdCAwMToz NjowNUFNICswNTMwLCBBbmltZXNoIE1hbm5hIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IERt YyB3aWxsIHJlc3RvcmUgdGhlIGNzciBwcm9ncmFtIGV4Y2VwdCBEQzksIGNvbGQgYm9vdCwKPj4+ Pj4+Pj4+Pj4+Pj4+Pj4+PiB3YXJtIHJlc2V0LCBQQ0kgZnVuY3Rpb24gbGV2ZWwgcmVzZXQsIGFu ZCBoaWJlcm5hdGUvc3VzcGVuZC4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+Pj4+ Pj4+IGludGVsX2Nzcl9sb2FkX3Byb2dyYW0oKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGxvYWQgdGhl IGZpcm13YXJlCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gZGF0YSBmcm9tIGtlcm5lbCBtZW1vcnkgdG8g Y3NyIGFkZHJlc3Mgc3BhY2UuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4+ PiBBbGwgdmFsdWVzIG9mIGNzciBhZGRyZXNzIHNwYWNlIHdpbGwgYmUgemVybyBpZiBpdCBnb3Qg cmVzZXQgYW5kCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gdGhlIGZpcnN0IGJ5dGUgb2YgY3NyIHByb2dy YW0gaXMgYWx3YXlzIGEgbm9uLXplcm8gaWYgZmlybXdhcmUKPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBp cyBsb2FkZWQgc3VjY2Vzc2Z1bHkuIEJhc2VkIG9uIGhhcmR3YXJlIHN0YXR1cyB3aWxsIGxvYWQg dGhlCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gZmlybXdhcmUuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+ Pj4+Pj4+Pj4+Pj4+Pj4+PiBXaXRob3V0IHRoaXMgY29uZGl0aW9uIGNoZWNrIGlmIHdlIG92ZXJ3 cml0ZSB0aGUgZmlybXdhcmUgZGF0YSB0aGUKPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBjb3VudGVycyBl eHBvc2VkIGZvciBkYzUvZGM2IChoZWxwIGZvciBkZWJ1Z2dpbmcpIHdpbGwgYmUgbnVsbGlmaWVk Lgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBCYWNhdXNlIG9mIHRoZSBhYm92ZSByZWFzb24gbWVudGlvbmVk IGp1c3QgYWJvdmUgd2UgbmVlZCB0byBibG9jayBmaXJtd2FyZSBsb2FkaW5nIGFnYWluLgo+Pj4+ Pj4+Pj4+Pj4+Pj4+PiBTbyBvbmx5IFdBUk5fT04gd2lsbCBub3QgaGVscC4KPj4+Pj4+Pj4+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiB2MTogSW5pdGlhbCB2 ZXJzaW9uLgo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gdjI6IEJhc2Vk IG9uIHJldmlldyBjb21tZW50cyBmcm9tIERhbmllbCwKPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiAtIEFk ZGVkIGEgY2hlY2sgdG8ga25vdyBoYXJkd2FyZSBzdGF0dXMgYW5kIGxvYWQgdGhlIGZpcm13YXJl IGlmIG5vdCBsb2FkZWQuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBD YzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4+Pj4+Pj4+Pj4+Pj4+ Pj4+Pj4gQ2M6IERhbWllbiBMZXNwaWF1IDxkYW1pZW4ubGVzcGlhdUBpbnRlbC5jb20+Cj4+Pj4+ Pj4+Pj4+Pj4+Pj4+Pj4gQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPj4+Pj4+ Pj4+Pj4+Pj4+Pj4+PiBDYzogU3VuaWwgS2FtYXRoIDxzdW5pbC5rYW1hdGhAaW50ZWwuY29tPgo+ Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEFuaW1lc2ggTWFubmEgPGFuaW1lc2gu bWFubmFAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFZhdGhz YWxhIE5hZ2FyYWp1IDx2YXRoc2FsYS5uYWdhcmFqdUBpbnRlbC5jb20+Cj4+Pj4+Pj4+Pj4+Pj4+ Pj4+Pj4gLS0tCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jc3IuYyB8IDkgKysrKysrKysrCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gICAxIGZpbGUgY2hhbmdl ZCwgOSBpbnNlcnRpb25zKCspCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYwo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IGluZGV4IGJhMWFl MDMuLjY4MmNjMjYgMTAwNjQ0Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY3NyLmMKPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jc3IuYwo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+IEBAIC0yNTIsNiArMjUy LDE1IEBAIHZvaWQgaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+Pj4+Pj4+Pj4+ Pj4+Pj4+ICAgICAgIH0KPj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiArICAgICAvKgo+Pj4+Pj4+Pj4+Pj4+ Pj4+Pj4+ICsgICAgICAqIERtYyB3aWxsIHJlc3RvcmUgdGhlIGNzciB0aGUgcHJvZ3JhbSBleGNl cHQgREM5LCBjb2xkIGJvb3QsCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgICogd2FybSByZXNl dCwgUENJIGZ1bmN0aW9uIGxldmVsIHJlc2V0LCBhbmQgaGliZXJuYXRlL3N1c3BlbmQuCj4+Pj4+ Pj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgICogVGhpcyBjb25kaXRpb24gd2lsbCBoZWxwIHRvIGNoZWNr IGlmIGNzciBhZGRyZXNzIHNwYWNlIGlzIHJlc2V0Lwo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICsgICAg ICAqIG5vdCBsb2FkZWQuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgICovCj4+Pj4+Pj4+Pj4+ Pj4+Pj4+PiBBdG0gd2UgY2FsbCB0aGlzIGZyb20gZHJpdmVyIGxvYWQgYW5kIHJlc3VtZSwgd2hp Y2ggZG9lc24gc2VlbSB0byBjb3Zlcgo+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4gYWxsIHRoZSBjYXNlcyB5 b3UgbWVudGlvbiBpbiB0aGUgY29tbWVudC4gU2hvdWxkIHRoaXMgYmUgYSBXQVJOX09OCj4+Pj4+ Pj4+Pj4+Pj4+Pj4+PiBpbnN0ZWFkPyBPciBkbyB3ZSBoYXZlIHRyb3VibGVzIGluIG91ciBpbml0 IHNlcXVlbmNlIHdoZXJlIHdlIGxvYWQgdG9vCj4+Pj4+Pj4+Pj4+Pj4+Pj4+PiBtYW55IHRpbWVz Pwo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBZZXMsIHRoZSBhYm92ZSBzdGF0ZW1lbnQgdGFrZW4gZnJvbSBi c3BlYyB0byBkZXNjcmliZSBhYm91dCB0aGUgc3BlY2lhbCBjYXNlcyBkbWMgd2lsbCBub3QgcmVz dG9yZSB0aGUgZmlybXdhcmUuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+IEFncmVlLCBJbiBvdXIgY2FzZXMg Y29sZCBib290IGFuZCBoaWJlcm5hdGUvc3VzcGVuZCBtYWlubHkgd2UgbmVlZCB0byBsb2FkIHRo ZSBmaXJtd2FyZSBhZ2Fpbiwgc28gaW4gbXkKPj4+Pj4+Pj4+Pj4+Pj4+Pj4gc2Vjb25kIHNlbnRl bmNlIEkgd2FudGVkIHRvIGNvbW1lbnQgbWFpbmx5IHJlZ2FyZGluZyB0aGlzIGNvbmRpdGlvbiBj aGVjayBhZGRlZCBmb3Igc3VzcGVuZC1oaWJlcm5hdGUocmVzZXQpCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ IGFuZCBjb2xkIGJvb3Qobm90IGxvYWRlZCkuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+ Pj4+Pj4+IEFueXdheXMgdGhlIHNhbWUgYXBpIGxhdGVyIGNhbiBiZSB1c2VkIHRvIGxvYWQgdGhl IGZpcm13YXJlIGZyb20gYW55d2hlcmUsIHNvIG15IGludGVudGlvbiB0byBjaGVjayBmaXJtd2Fy ZSBsb2FkZWQgb3Igbm90Lgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiBJZiBhbHJlYWR5IGxvYWRlZCB0aGVu IG5vdCB0byBvdmVyd3JpdGUgdGhlIGNzciBhZGRyZXNzIHNwYWNlIHRvIG1haW50YWluIHRoZSBk YzUvZGM2IGNvdW50ZXIgdmFsdWUuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+Pj4+ IENhbiB0aGUgYmVsb3cgY29tbWVudCBtb3JlIGNsZWFyIHRvIHlvdS4KPj4+Pj4+Pj4+Pj4+Pj4+ Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gICAgICAgICAvKgo+Pj4+Pj4+Pj4+Pj4+Pj4+PiAgICAgICAg ICAqIERtYyB3aWxsIHJlc3RvcmUgdGhlIGNzciB0aGUgcHJvZ3JhbSBleGNlcHQgREM5LCBjb2xk IGJvb3QsCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICAgICAgICAgICogd2FybSByZXNldCwgUENJIGZ1bmN0 aW9uIGxldmVsIHJlc2V0LCBhbmQgaGliZXJuYXRlL3N1c3BlbmQuCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ ICAgICAgICAgICogSWYgZmlybXdhcmUgaXMgcmVzdG9yZWQgYnkgZG1jIHRoZW4gbm8gbmVlZCB0 byBsb2FkIGFnYWluIHdoaWNoCj4+Pj4+Pj4+Pj4+Pj4+Pj4+ICAgICAgICAgICogd2lsbCBrZWVw IHRoZSBkYzUvZGM2IGNvdW50ZXIgZXhwb3NlZCBieSBmaXJtd2FyZS4KPj4+Pj4+Pj4+Pj4+Pj4+ Pj4gICAgICAgICAgKi8KPj4+Pj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4+Pj4gTm8gaXNz dWUgaW4gaW5pdCBzZXF1ZW5jZS4KPj4+Pj4+Pj4+Pj4+Pj4+PiBUaGF0IHNlZW1zIHRvIHN0aWxs IGNvdmVyIGFsbCB0aGUgY2FsbGVycyBvZiB0aGUgZnVuY3Rpb24gYWZhaWNzIC0gd2UgZG8KPj4+ Pj4+Pj4+Pj4+Pj4+PiBwY2kgcmVzZXRzIG92ZXIgc3VzcGVuZCByZXN1bWUgdW5jb25kaXRpb25h bGx5LiBTbyBJIHN0aWxsIGRvbid0Cj4+Pj4+Pj4+Pj4+Pj4+Pj4gdW5kZXJzdGFuZCB3aGVyZSBl eGFjdGx5IHdlIHRyeSB0byBsb2FkIHRoZSBkbWMgZmlybXdhcmUgaW4gaTkxNS5rbyB3aGVuCj4+ Pj4+Pj4+Pj4+Pj4+Pj4gaXQncyBhbHJlYWR5IGxvYWRlZC4KPj4+Pj4+Pj4+Pj4+Pj4+IER1cmlu ZyByZXN1bWUgaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSgpIHdpbGwgYmUgY2FsbGVkIGZyb20KPj4+ Pj4+Pj4+Pj4+Pj4+IGludGVsX3J1bnRpbWVfcmVzdW1lKCkuCj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4+Pj4+Pj4gaW50ZWxfcnVudGltZV9yZXN1bWUoKS0+IHNrbF9yZXN1bWVfcHJlcGFyZSgp LT4gaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSgpCj4+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+ Pj4gRHVyaW5nIFBjMTAgZW50cnkgdGVzdGluZyBJIGNhbiBzZWUgZG1jIGlzIHJlc3RvcmluZyBi YWNrIHRoZSBmaXJtd2FyZSBhbHdheXMsCj4+Pj4+Pj4+Pj4+Pj4+PiBidXQgYXMgeW91IG1lbnRp b25lZCBwY2ktcmVzZXQgY2FuIGhhcHBlbiB1bmNvbmRpdGlvbmFsbHksIGJ1dCBzdGlsbCB0aGVu Cj4+Pj4+Pj4+Pj4+Pj4+PiBhbHNvIGR1cmluZyByZXN1bWUgaW50ZWxfcnVudGltZV9yZXN1bWUo KSB3aWxsIGJlIGNhbGxlZCBhbmQgYmFzZWQgb24KPj4+Pj4+Pj4+Pj4+Pj4+IHJlZ2lzdGVyIHJl YWQgb2YgY3NyLWJhc2UtYWRkcmVzcyBmaXJtd2FyZSBsb2FkaW5nIHdpbGwgaGFwcGVuLgo+Pj4+ Pj4+Pj4+Pj4+PiBCdXQgaW4geW91ciBjb21tZW50IHlvdSdyZSBzYXlpbmcgaXQgd29uJ3QgZ2V0 IHJlc3RvcmVkIGluIGNhc2Ugb2YgZGM5IGFuZAo+Pj4+Pj4+Pj4+Pj4+PiBzdXNwZW5kLiBTbyB0 aGF0IHNlZW1zIHRvIG1pc21hdGNoIHdoYXQgeW91J3JlIHNheWluZyBoZXJlIChhbmQgd2hhdCB0 aGUKPj4+Pj4+Pj4+Pj4+Pj4gY29tbWl0IG1lc3NhZ2Ugc2F5cykgYW5kIHdoYXQgdGhlIGNvZGUg ZG9lcy4gQW5kIHRoaXMgZnVuY3Rpb24gaGVyZSBpcwo+Pj4+Pj4+Pj4+Pj4+PiBjYWxsZWQgZm9y IHJlc3VtZSBhZnRlciBzdXNwZW5kL2hpYmVybmF0ZSBvbmx5Lgo+Pj4+Pj4+Pj4+Pj4+IHBjMTAg ZW50cnkgZXhwbGFuYXRpb24gSSB0b2xkIGlzIGZvciBza3lsYWtlLiBkYzkgaW4gc2t5bGFrZSBp cyBub3QgcG9zc2libGUuCj4+Pj4+Pj4+Pj4+Pj4gSSB0aGluayB5b3UgYXJlIGNvbmZ1c2luZyBi ZXR3ZWVuIGRjNiBhbmQgZGM5LiBQYzEwIGNhbiBiZSBhY2hpZXZlZCBieQo+Pj4+Pj4+Pj4+Pj4+ IGVudGVyaW5nIGludG8gZGM2IChub3QgZGM5KSBmb3Igc2t5bGFrZS4gZGM5IGlzIHRoZSBsb3dl c3QgcG9zc2libGUgc3RhdGUKPj4+Pj4+Pj4+Pj4+PiBmb3IgYnJveHRvbiB3aGljaCBpcyBub3Qg cHJlc2VudCBmb3Igc2t5bGFrZS4KPj4+Pj4+Pj4+Pj4+IEkgaGF2ZSBubyBpZGVhIGF0IGFsbCBh Ym91dCBkaWZmZXJlbnQgcGMgbGV2ZWxzIG9uIHNrbC4gV2hhdCBJJ20gdGFsa2luZwo+Pj4+Pj4+ Pj4+Pj4gYWJvdXQgaXMgc3lzdGVtIHN1c3BlbmQvcmVzdW1lIGFuZCBkcml2ZXIgbG9hZCwgd2hp Y2ggYXJlIHRoZSBwbGFjZXMgdGhpcwo+Pj4+Pj4+Pj4+Pj4gZnVuY3Rpb24gZ2V0cyBjYWxsZWQu IEF0IGxlYXN0IGFmYWljcy4KPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4gSGVyZSBpbnRlbF9j c3JfbG9hZF9wcm9ncmFtKCkgd2lsbCBiZSB1c2VkIGZvciBib3RoIHNreWxha2UgYW5kIGJyb3h0 b24sIGFuZCBpbnN0cnVjdGlvbgo+Pj4+Pj4+Pj4+Pj4+IGV4ZWN1dGlvbiBmbG93IHdpbGwgYmUg ZGlmZmVyZW50IGluIGNhc2Ugb2Ygc3VzcGVuZC9yZXN1bWUgd2hpY2ggSSB0aGluayBpcyBjb25m dXNpbmcKPj4+Pj4+Pj4+Pj4+PiB5b3UuCj4+Pj4+Pj4+Pj4+PiBUaGF0IHNlZW1zIGxpa2UgcmVh bGx5IGltcG9ydGFudCBpbmZvcm1hdGlvbi4gV2hhdCdzIGRpZmZlcmVudCBvbiBieHQ/Cj4+Pj4+ Pj4+Pj4+PiBUaGVzZSBhcmUgdGhlIGtpbmQgb2YgZGV0YWlscyB5b3Ugc2hvdWxkIGV4cGxhaW4g aW4gdGhlIGNvbW1pdCBtZXNzYWdlIC4uLgo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiBJIGFt IHJlYWR5IGV4cGxhaW4geW91IGluIGRldGFpbC4gSXQgd2lsbCBiZSBnb29kIGlmIHdlIGRpc2N1 c3Mgc3BlY2lmaWMgdXNlLWNhc2Ugc2NlbmFyaW8KPj4+Pj4+Pj4+Pj4+PiBhbmQgaXR6IHNvZnR3 YXJlIGRlc2lnbiBmb3Igc3BlY2lmaWMgcGxhdGZvcm0uIEFub3RoZXIgcG9pbnQgLSBhcyBkbWMg cmVsYXRlZCBjb2RlIGZvcgo+Pj4+Pj4+Pj4+Pj4+IGJyb3h0b24gaXMgbm90IG1lcmdlZCBiZXR0 ZXIgZmlyc3Qgd2UgY2xvc2UgZGVzaWduIGZvciBza3lsYWtlLiBOb3csIEkgaGF2ZSBhZGRlZCBk YzkKPj4+Pj4+Pj4+Pj4+PiBkZXNjcmlwdGlvbiBpbiBjb21tZW50IHRoaW5raW5nIG9mIGZ1dHVy ZS4gSWYgeW91IHdhbnQgSSBjYW4gcmVtb3ZlIGZvciBub3cgYW5kIGxhdGVyCj4+Pj4+Pj4+Pj4+ Pj4gY2FuIGFkZCBpbiBieHQgcGF0Y2ggc2VyaWVzIGZvciBlbmFibGluZyBkbWMuIFdpbGwgd2Fp dCBmb3IgeW91ciByZXBseS4KPj4+Pj4+Pj4+Pj4+IFRoaXMgcXVlc3Rpb24gaGVyZSBpc24ndCBh Ym91dCB0aGUgb3ZlcmFsbCBkZXNpZ24gYW5kIGhvdyB0byBoYW5kbGUgcG93ZXIKPj4+Pj4+Pj4+ Pj4+IHdlbGxzIGluIHNrbC9ieHQuIFRoYXQncyBhIHNlcGFyYXRlIGRpc2N1c3Npb24gYW5kIHRy YWNrZWQgc29tZXdoZXJlIGVsc2UuCj4+Pj4+Pj4+Pj4+PiBJJ20gcmVhbGx5IGp1c3QgY29uZnVz ZWQgYWJvdXQgd2hlbiBleGFjdGx5IHdlIG5lZWQgdG8gcmVsb2FkIHRvIGZpcm13YXJlLAo+Pj4+ Pj4+Pj4+Pj4gYW5kIHdoeSB3ZSBuZWVkIGEgcnVudGltZSBjaGVjayBmb3IgdGhhdC4gTm9ybWFs bHkgd2Ugc2hvdWxkIGtub3cgd2hlbiB0bwo+Pj4+Pj4+Pj4+Pj4gcmVsb2FkIHRoZSBmaXJtd2Fy ZSBhbmQganVzdCBlaXRoZXIgcmVsb2FkIG9yIG5vdCwgd2l0aG91dCBjaGVja2luZyBodwo+Pj4+ Pj4+Pj4+Pj4gc3RhdGUuIEFuZCBJIGRvbid0IGxpa2UgY2hlY2tpbmcgZm9yIGh3IHN0YXRlIHNp bmNlIGF0IGxlYXN0IGluIHRoZSBwYXN0Cj4+Pj4+Pj4+Pj4+PiB0aGF0IGtpbmQgb2YgY29kZSBl bmRlZCB1cCBiZWluZyBmcmFnaWxlIC0gaXQncyBhbiBpbGx1c2lvbiB0aGF0IGl0IGRvZXMKPj4+ Pj4+Pj4+Pj4+IHRoZSByaWdodCB0aGluZyBubyBtYXR0ZXIgd2hhdCwgc2luY2Ugb2Z0ZW4gdGhl cmUncyBvdGhlciB0cmlja3kgb3JkZXJpbmcKPj4+Pj4+Pj4+Pj4+IGNvbnN0cmFpbnRzLiBBbmQg aWYgeW91IGhhdmUgYXV0b21hdGljIGR1Y3QtdGFwZSBsaWtlIHRoZW4gbm8gb25lIHdpbGwKPj4+ Pj4+Pj4+Pj4+IGV2ZXIgc3BvdCB0aG9zZSBvdGhlciwgaGFyZGVyIHRvIHNwb3QgaXNzdWVzLCB1 bnRpbCBhbiBleHBlbnNpdmUgY3VzdG9tZXIKPj4+Pj4+Pj4+Pj4+IGVzY2FsYXRpb24gaGFwcGVu cy4KPj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+PiBTbyB3aGF0IEkgd2FudCB0byBrbm93IGhlcmUg aXM6Cj4+Pj4+Pj4+Pj4+PiAtIFdoZW4gZXhhY3RseSBkbyB3ZSBuZWVkIHRvIHJlbG9hZCBkbWMg ZmlybXdhcmUuCj4+Pj4+Pj4+Pj4+IEluIHNrbCwgZHVyaW5nIGRyaXZlciBsb2FkIGZpcnN0IHRp bWUgd2UgbG9hZCB0aGUgZmlybXdhcmUsIGR1cmluZyBub3JtYWwKPj4+Pj4+Pj4+Pj4gc3VzcGVu ZC1yZXN1bWUgKGRjNiBlbnRyeS9leGl0KQo+Pj4+Pj4+Pj4+PiBubyBuZWVkIHRvIHJlbG9hZCB0 aGUgZmlybXdhcmUgYWdhaW4gYXMgZG1jIHdpbGwgdGFrZSBjYXJlIG9mIGl0LiBCdXQgZHVyaW5n Cj4+Pj4+Pj4+Pj4+IHN1c3BlbmQvaGliZXJuYXRpb24KPj4+Pj4+Pj4+Pj4gZG1jIHdpbGwgbm90 IHJlc3RvcmUgdGhlIGZpcm13YXJlLiBJbiB0aGF0IGNhc2UgZHJpdmVyIG5lZWQgdG8gcmVsb2Fk IGl0Cj4+Pj4+Pj4+Pj4+IGFnYWluLiBJIGRvIG5vdCBrbm93Cj4+Pj4+Pj4+Pj4+IGhvdyB0byBk aWZmZXJlbnRpYXRlIHBtLXN1c3BlbmQgYW5kIHN1c3BlbmQtaGliZXJuYXRpb24gYW5kIHRob3Vn aHQgYm90aCB0aGUKPj4+Pj4+Pj4+Pj4gY2FzZXMKPj4+Pj4+Pj4+Pj4gaW50ZWxfcnVudGltZV9y ZXN1bWUoKSB3aWxsIGJlIGNhbGxlZCB3aGVyZSB3ZSBjYW4gY2hlY2sgdGhlIGgvdyBzdGF0ZSBh bmQKPj4+Pj4+Pj4+Pj4gcmVsb2FkIHRoZQo+Pj4+Pj4+Pj4+PiBmaXJtd2FyZSBpZiBkbWMgaXMg bm90IHJlc3RvcmVkLgo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBJbiBieHQsIGR1cmluZyBkcml2 ZXIgbG9hZCBmaXJzdCB0aW1lIHdlIGxvYWQgdGhlIGZpcm13YXJlLCBkdXJpbmcgbm9ybWFsCj4+ Pj4+Pj4+Pj4+IHN1c3BlbmQtcmVzdW1lCj4+Pj4+Pj4+Pj4+IGRpc3BsYXkgZW5naW5lIHdpbGwg ZW50ZXIgaW50byBkYzkgYW5kIGRtYyB3aWxsIG5vdCByZXN0b3JlIHRoZSBmaXJtd2FyZS4gU28K Pj4+Pj4+Pj4+Pj4gZXZlcnkKPj4+Pj4+Pj4+Pj4gc3VzcGVuZC1yZXN1bWUgd2UgbmVlZCB0byBy ZWxvYWQgdGhlIGZpcm13YXJlLgo+Pj4+Pj4+Pj4+Pj4gLSBXaGF0IGV4YWN0bHkgaXMgdGhlIHJl YXNvbiB3aHkgd2UgY2FuJ3QgbWFrZSB0aGF0IGRlY2lzaW9uIHN0YXRpY2FsbHkgaW4KPj4+Pj4+ Pj4+Pj4+ICAgIHRoZSBjb2RlIChieSBjYWxsaW5nIGNzcl9sb2FkIGF0IHRoZSByaWdodCBzcG90 cykuCj4+Pj4+Pj4+Pj4+IEFzIEkgbWVudGlvbmVkIGJlZm9yZSBpbiBjYXNlIG9mIHNreWxha2Ug Y2FuIHdlIGRpZmZlcmVudGlhdGUgYmV0d2Vlbgo+Pj4+Pj4+Pj4+PiAicmVzdW1lIGZyb20gcG0t c3VzcGVuZCIgd2l0aCAicmVzdW1lIGZyb20gc3VzcGVuZC1oaWJlcm5hdGlvbiIgaW5zaWRlCj4+ Pj4+Pj4+Pj4+IGRyaXZlcj8KPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gSW4gY2FzZSBvZiBicm94 dG9uLCBldmVyeSB0aW1lIHdlIG5lZWQgdG8gcmVsb2FkLCBzbyB3ZSBjYW4gZGVjaWRlCj4+Pj4+ Pj4+Pj4+IHN0YXRpY2FsbHkuCj4+Pj4+Pj4+Pj4gT2YgY291cnNlIHdlIGNhbiBkaWZmZXJlbnRp YXRlIGJldHdlZW4gYWxsIHRoZSBkaWZmZXJlbnQgcmVzdW1lIHBhdGhzLCBhbmQKPj4+Pj4+Pj4+ PiB3ZSBhbHNvIGhhdmUgYSBwZXItcGxhdGZvcm0gc3BsaXQgdG8gdGFrZSBjYXJlIG9mIGJ4dCB2 cy4gc2tsLiBBbmQgdGhlcmUKPj4+Pj4+Pj4+PiBhcmUgYWN0dWFsbHkgMyBkaWZmZXJlbnQgcmVz dW1lIHBhdGhzOgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gLSBydW50aW1lIFBNIHJlc3VtZS4gVGhp cyBjYWxscyB0aGUgcnVudGltZV9yZXN1bWUgaG9vay4gSXQgc291bmRzIGxpa2Ugb24KPj4+Pj4+ Pj4+PiAgICBza2wgd2Ugc2hvdWxkIF9ub3RfIGxvYWQgdGhlIGNzciBmaXJtd2FyZSwgYnV0IG9u IGJ4dCB3ZSBzaG91bGQgbG9hZCBpdC4KPj4+Pj4+Pj4+PiAgICBUaGlzIGNhbiBiZSBmaXhlZCBi eSByZW1vdmluZyB0aGUgaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSBjYWxsIGZyb20KPj4+Pj4+Pj4+ PiAgICBza2xfcmVzdW1lX3ByZXBhcmUuCj4+Pj4+Pj4+Pj4gLSByZXN1bWUgZnJvbSBoaWJlcm5h dGUtdG8tZGlzayAoaS5lLiBzeXN0ZW0gY29tcGxldGVseSBvZmYsIHN0YXRlIHN0b3JlZAo+Pj4+ Pj4+Pj4+ICAgIG9uIHRoZSBzd2FwIHBhcnRpdGlvbikgaXMgZG9uZSBieSBjYWxsaW5nIHRoZSB0 aGF3IGNhbGxiYWNrcy4KPj4+Pj4+Pj4+PiAtIHJlc3VtZSBmcm9tIHN1c3BlbmQtdG8tbWVtIChp LmUuIHN5c3RlbSBpbiBsb3ctcG93ZXIgd2l0aCBvbmx5IG1lbW9yeQo+Pj4+Pj4+Pj4+ICAgIGlu IHNlbGYtcmVmcmVzaCwgYWxsIHN0YXRlIHN0b3JlZCBpbiBtZW1vcnkpIGlzIGRvbmUgYnkgY2Fs bGluZyB0aGUKPj4+Pj4+Pj4+PiAgICByZXN1bWUgY2FsbGJhY2tzLgo+Pj4+Pj4+Pj4+Cj4+Pj4+ Pj4+Pj4gRm9yIGk5MTUgd2UgdXNlIHVuaWZpZWQgaGFuZGxlcnMgaW4gb3VyIGRldl9wbV9vcHMg Zm9yIGJvdGggdGhhdyBhbmQKPj4+Pj4+Pj4+PiByZXN1bWUsIGJ1dCBpdCBzb3VuZHMgbGlrZSB0 aGF0IHdvbid0IGJlIGEgcHJvYmxlbSBmb3Igc2tsL2J4dCBzaW5jZSB3ZQo+Pj4+Pj4+Pj4+IG5l ZWQgdG8gcmVsb2FkIHRoZSBjc3IgZmlybXdhcmUgaW4gYWxsIGNhc2VzLiBBbHRob3VnaCBJJ20g bm90IHBlcmZlY3RseQo+Pj4+Pj4+Pj4+IHN1cmUgc2luY2UgeW91IGRvbid0IGV4cGxhaW4gd2hh dCBraW5kIG9mIHJlc3VtZSB5b3UgbWVhbiBleGFjdGx5IChzaW5jZQo+Pj4+Pj4+Pj4+IHlvdSBk b24ndCB1c2UgdGhlIGxpbnV4IG5hbWVzIGZvciB0aGVtKS4KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+ IEFueXdheSBpdCBzb3VuZHMgbGlrZSB3ZSBjYW4gcmVwbGFjZSB0aGlzIHBhdGNoIGJ5IG9uZSB3 aGVyZSB3ZSByZW1vdmUKPj4+Pj4+Pj4+PiB0aGF0IGVycm9ybm91cyBjc3IgbG9hZCBjYWxsIGZy b20gc2tsIHJ1bnRpbWUgcG0gcmVzdW1lIGFuZCB0aGF0J3MgYWxsLgo+Pj4+Pj4+Pj4+IEJ1dCBJ IHN1Z2dlc3QgdG8gbWFrZSBzdXJlIHdlIGdldCB0aGlzIHJpZ2h0IHdlIGtlZXAgdGhlIGNoZWNr IHlvdSdyZQo+Pj4+Pj4+Pj4+IGFkZGluZyBoZXJlLCBidXQgd3JhcCBpdCBpbiBhIFdBUk5fT04u IFRoZW4gd2UnbGwgZ2V0IGEgYmFja3RyYWNlIHdoZW4KPj4+Pj4+Pj4+PiB0aGlzIGlzIGdvaW5n IHdyb25nIGFnYWluLiBMaWtlIHRoaXM6Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiAgICAgICAgICBp ZiAoV0FSTl9PTihjc3JfbG9hZGVkX2FscmVhZHkoKSkpCj4+Pj4+Pj4+Pj4gICAgICAgICAgICAg ICAgICByZXR1cm47Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBBbHNvIHdoZW4gcmVkb2luZyB0aGUg Y29tbWl0cyBwbGVhc2UgZXhwbGFpbiBpbiBkZXRhaWwgd2hhdCBleGFjdGx5IGFyZQo+Pj4+Pj4+ Pj4+IHRoZSByZXF1aXJlbWVudHMgbGlrZSB5b3UndmUgZG9uZSBhYm92ZSwgYnV0IHBsZWFzZSB1 c2UgdGhlIHN0YW5kYXJkIGxpbnV4Cj4+Pj4+Pj4+Pj4gbmFtZXMsIGkuZS4gInJ1bnRpbWUgUE0i IGFuZCAiaGliZXJuYXRlLXRvLWRpc2siIGFuZCAic3VzcGVuZC10by1tZW0iLgo+Pj4+Pj4+Pj4g T2sgaG9vcmF5IHRoZXJlJ3MgbW9yZSBzdXNwZW5kLXRvLXNvbWV0aGluZyB0aGluZ3MgSSd2ZSB0 b3RhbGx5IG1pc3NlZDoKPj4+Pj4+Pj4+IC0gc3VzcGVuZC10by1pZGxlIChkb25lIGJ5IGNhdCBm cmVlemUgPiAvc3lzL3Bvd2VyL3N0YXRlKSBhbmQKPj4+Pj4+Pj4+IC0gc3VzcGVuZCAoZG9uZSBi eSBjYXQgc3VzcGVuZCA+IC9zeXMvcG93ZXIvc3RhdGUpCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gQW5k IGFwcGFyZW50bHkgdGhlcmUncyByZWFsbHkgbm8gd2F5IHRvIGRyaXZlcnMgdG8gdGVsbCB0aGVt IGFwYXJ0Lgo+Pj4+Pj4+Pj4gUmFmYWVsLCBpcyB0aGVyZSByZWFsbHkgbm8gd2F5IGZvciBkcml2 ZXJzIHRvIHRha2UgZGlmZmVyZW50IHBhdGhzIGZvcgo+Pj4+Pj4+Pj4gdGhlc2UgMyBzdXNwZW5k IGNhc2VzPyBJIHRyaWVkIGdyZXBwaW5nIGZvciBQTV9TVVNQRU5EX09OL1NUQU5EWS9NRU0KPj4+ Pj4+Pj4+IGFuZCBkaWRuJ3Qgc3BvdCBhbnl0aGluZy4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBBbHNv IHdlJ3JlIGNvbXBsZXRlbHkgbWlzc2luZyB0ZXN0IGNvdmVyYWdlIGZvciB0aGF0IGluIGlndC4g VGhhdCBpcwo+Pj4+Pj4+Pj4gc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgZml4ZWQgYXNhcCAo eWV0IGFub3RoZXIgY2FzZSBvZgo+Pj4+Pj4+Pj4gY29tYmluYXRvcmlhbCBleHBsb3Npb24gaW4g aWd0IHRlc3RzLCB5YXkpLiBBbmQgYXQgbGVhc3Qgb25lIG9mIHRob3NlCj4+Pj4+Pj4+PiBzdXNw ZW5kLXRvLWlkbGUgdGVzdGNhc2UgYmV0dGVyIGJlIGluIHRoZSBCQVQuCj4+Pj4+Pj4+PiAtRGFu aWVsCj4+Pj4+Pj4+PiAtLQo+Pj4+Pj4+Pj4gRGFuaWVsIFZldHRlcgo+Pj4+Pj4+Pj4gU29mdHdh cmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4+Pj4+Pj4+PiArNDEgKDApIDc5IDM2NSA1 NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4+Pj4+Pj4+IC0tCj4+Pj4+Pj4+IERhbmllbCBW ZXR0ZXIKPj4+Pj4+Pj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4+Pj4+ Pj4+ICs0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==