From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v12 2/7] drm/i915/skl: Add support for the SAGV, fix underrun hangs Date: Thu, 18 Aug 2016 10:05:59 -0400 Message-ID: <1471529159.4098.10.camel@redhat.com> References: <1471463761-26796-1-git-send-email-cpaul@redhat.com> <1471463761-26796-3-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org, Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= , Matt Roper Cc: Daniel Vetter , stable@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAyMDE2LTA4LTE4IGF0IDA5OjM5ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBIZXksCj4gCj4gT3AgMTctMDgtMTYgb20gMjE6NTUgc2NocmVlZiBMeXVkZToKPiA+IAo+ ID4gU2luY2UgdGhlIHdhdGVybWFyayBjYWxjdWxhdGlvbnMgZm9yIFNreWxha2UgYXJlIHN0aWxs IGJyb2tlbiwgd2UncmUgYXB0Cj4gPiB0byBoaXR0aW5nIHVuZGVycnVucyB2ZXJ5IGVhc2lseSB1 bmRlciBtdWx0aS1tb25pdG9yIGNvbmZpZ3VyYXRpb25zLgo+ID4gV2hpbGUgaXQgd291bGQgYmUg bG92ZWx5IGlmIHRoaXMgd2FzIGZpeGVkLCBpdCdzIG5vdC4gQW5vdGhlciBwcm9ibGVtCj4gPiB0 aGF0J3MgYmVlbiBjb21pbmcgZnJvbSB0aGlzIGhvd2V2ZXIsIGlzIHRoZSBteXN0ZXJpb3VzIGlz c3VlIG9mCj4gPiB1bmRlcnJ1bnMgY2F1c2luZyBmdWxsIHN5c3RlbSBoYW5ncy4gQW4gZWFzeSB3 YXkgdG8gcmVwcm9kdWNlIHRoaXMgd2l0aAo+ID4gYSBza3lsYWtlIHN5c3RlbToKPiA+IAo+ID4g LSBHZXQgYSBsYXB0b3Agd2l0aCBhIHNreWxha2UgR1BVLCBhbmQgaG9vayB1cCB0d28gZXh0ZXJu YWwgbW9uaXRvcnMgdG8KPiA+IMKgIGl0Cj4gPiAtIE1vdmUgdGhlIGN1cnNvciBmcm9tIHRoZSBi dWlsdC1pbiBMQ0QgdG8gb25lIG9mIHRoZSBleHRlcm5hbCBkaXNwbGF5cwo+ID4gwqAgYXMgcXVp Y2tseSBhcyB5b3UgY2FuCj4gPiAtIFlvdSdsbCBnZXQgYSBmZXcgcGlwZSB1bmRlcnJ1bnMsIGFu ZCBldmVudHVhbGx5IHRoZSBlbnRpcmUgc3lzdGVtIHdpbGwKPiA+IMKgIGp1c3QgZnJlZXplLgo+ ID4gCj4gPiBBZnRlciBkb2luZyBhIGxvdCBvZiBpbnZlc3RpZ2F0aW9uIGFuZCByZWFkaW5nIHRo cm91Z2ggdGhlIGJzcGVjLCBJCj4gPiBmb3VuZCB0aGUgZXhpc3RlbmNlIG9mIHRoZSBTQUdWLCB3 aGljaCBpcyByZXNwb25zaWJsZSBmb3IgYWRqdXN0aW5nIHRoZQo+ID4gc3lzdGVtIGFnZW50IHZv bHRhZ2UgYW5kIGNsb2NrIGZyZXF1ZW5jaWVzIGRlcGVuZGluZyBvbiBob3cgbXVjaCBwb3dlcgo+ ID4gd2UgbmVlZC4gQWNjb3JkaW5nIHRvIHRoZSBic3BlYzoKPiA+IAo+ID4gIlRoZSBkaXNwbGF5 IGVuZ2luZSBhY2Nlc3MgdG8gc3lzdGVtIG1lbW9yeSBpcyBibG9ja2VkIGR1cmluZyB0aGUKPiA+ IMKgYWRqdXN0bWVudCB0aW1lLiBTQUdWIGRlZmF1bHRzIHRvIGVuYWJsZWQuIFNvZnR3YXJlIG11 c3QgdXNlIHRoZQo+ID4gwqBHVC1kcml2ZXIgcGNvZGUgbWFpbGJveCB0byBkaXNhYmxlIFNBR1Yg d2hlbiB0aGUgZGlzcGxheSBlbmdpbmUgaXMgbm90Cj4gPiDCoGFibGUgdG8gdG9sZXJhdGUgdGhl IGJsb2NraW5nIHRpbWUuIgo+ID4gCj4gPiBUaGUgcmVzdCBvZiB0aGUgYnNwZWMgZ29lcyBvbiB0 byBleHBsYWluIHRoYXQgc29mdHdhcmUgY2FuIHNpbXBseSBsZWF2ZQo+ID4gdGhlIFNBR1YgZW5h YmxlZCwgYW5kIGRpc2FibGUgaXQgd2hlbiB3ZSB1c2UgaW50ZXJsYWNlZCBwaXBlcy9oYXZlIG1v cmUKPiA+IHRoZW4gb25lIHBpcGUgYWN0aXZlLgo+ID4gCj4gPiBTdXJlIGVub3VnaCwgd2l0aCB0 aGlzIHBhdGNoc2V0IHRoZSBzeXN0ZW0gaGFuZ3MgcmVzdWx0aW5nIGZyb20gcGlwZQo+ID4gdW5k ZXJydW5zIG9uIFNreWxha2UgaGF2ZSBjb21wbGV0ZWx5IHZhbmlzaGVkIG9uIG15IFQ0NjBzLiBB ZGRpdGlvbmFsbHksCj4gPiB0aGUgYnNwZWMgbWVudGlvbnMgdHVybmluZyBvZmYgdGhlIFNBR1YJ d2l0aCBtb3JlIHRoZW4gb25lIHBpcGUKPiA+IGVuYWJsZWQKPiA+IGFzIGEgd29ya2Fyb3VuZCBm b3IgZGlzcGxheSB1bmRlcnJ1bnMuIFdoaWxlIHRoaXMgcGF0Y2ggZG9lc24ndCBlbnRpcmVseQo+ ID4gZml4IHRoYXQsIGl0IGxvb2tzIGxpa2UgaXQgZG9lcyBpbXByb3ZlIHRoZSBzaXR1YXRpb24g YSBsaXR0bGUgYml0IHNvCj4gPiBpdCdzIGxpa2VseSB0aGlzIGlzIGdvaW5nIHRvIGJlIHJlcXVp cmVkIHRvIG1ha2Ugd2F0ZXJtYXJrcyBvbiBTa3lsYWtlCj4gPiBmdWxseSBmdW5jdGlvbmFsLgo+ ID4gCj4gPiBUaGlzIHdpbGwgc3RpbGwgbmVlZCBhZGRpdGlvbmFsIHdvcmsgaW4gdGhlIGZ1dHVy ZTogd2Ugc2hvdWxkbid0IGJlCj4gPiBlbmFibGluZyB0aGUgU0FHViBpZiBhbnkgb2YgdGhlIGN1 cnJlbnRseSBlbmFibGVkIHBsYW5lcyBjYW4ndCBlbmFibGUgV00KPiA+IGxldmVscyB0aGF0IGlu dHJvZHVjZSBsYXRlbmNpZXMgPj0gMzAgwrVzLgo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYxMToK PiA+IMKgLSBBZGQgc2tsX2Nhbl9lbmFibGVfc2FndigpCj4gPiDCoC0gTWFrZSBzdXJlIHdlIGRv bid0IGVuYWJsZSBTQUdWIHdoZW4gbm90IGFsbCBwbGFuZXMgY2FuIGVuYWJsZQo+ID4gwqDCoMKg d2F0ZXJtYXJrcyA+PSB0aGUgU0FHViBlbmdpbmUgYmxvY2sgdGltZS4gSSB3YXMgb3JpZ2luYWxs eSBnb2luZyB0bwo+ID4gwqDCoMKgc2F2ZSB0aGlzIGZvciBsYXRlciwgYnV0IEkgcmVjZW50bHkg bWFuYWdlZCB0byBydW4gaW50byBhIG1hY2hpbmUKPiA+IMKgwqDCoHRoYXQgd2FzIGhhdmluZyBw cm9ibGVtcyB3aXRoIGEgc2luZ2xlIHBpcGUgY29uZmlndXJhdGlvbiArIFNBR1YuCj4gPiDCoC0g TWFrZSBjb21wYXJpc29ucyB0byBJOTE1X1NLTF9TQUdWX05PVF9DT05UUk9MTEVEIGV4cGxpY2l0 Cj4gPiDCoC0gQ2hhbmdlIEk5MTVfU0FHVl9EWU5BTUlDX0ZSRVEgdG8gSTkxNV9TQUdWX0VOQUJM RQo+ID4gwqAtIE1vdmUgcHJpbnRrcyBvdXRzaWRlIG9mIG11dGV4ZXMKPiA+IMKgLSBEb24ndCBw cmludCBlcnJvciBtZXNzYWdlcyB0d2ljZQo+ID4gQ2hhbmdlcyBzaW5jZSB2MTA6Cj4gPiDCoC0g QXBwYXJlbnRseSBzYW5keWJyaWRnZV9wY29kZV9yZWFkIGFjdHVhbGx5IHdyaXRlcyB2YWx1ZXMg YW5kIHJlYWRzCj4gPiDCoMKgwqB0aGVtIGJhY2ssIGRlc3BpdGUgaXQncyBtaXNsZWFkaW5nIGZ1 bmN0aW9uIG5hbWUuIFRoaXMgbWVhbnMgd2UndmUKPiA+IMKgwqDCoGJlZW4gZG9pbmcgdGhpcyBt b3N0bHkgd3JvbmcgYW5kIGhhdmUgYmVlbiB3cml0aW5nIGdhcmJhZ2UgdG8gdGhlCj4gPiDCoMKg wqBTQUdWIGNvbnRyb2wuIEJlY2F1c2Ugb2YgdGhpcywgd2Ugbm8gbG9uZ2VyIGF0dGVtcHQgdG8g cmVhZCB0aGUgU0FHVgo+ID4gwqDCoMKgc3RhdHVzIGR1cmluZyBpbml0aWFsaXphdGlvbiAoc2lu Y2UgdGhlcmUgYXJlIG5vIGhlbHBlcnMgZm9yIHRoaXMpLgo+ID4gwqAtIG1sYW5raG9yc3Qgbm90 aWNlZCB0aGF0IHRoaXMgcGF0Y2ggd2FzIGJyZWFraW5nIG9uIHNvbWUgdmVyeSBlYXJseQo+ID4g wqDCoMKgcHJlLXJlbGVhc2UgU2t5bGFrZSBtYWNoaW5lcywgd2hpY2ggYXBwYXJlbnRseSBkb24n dCBhbGxvdyB5b3UgdG8KPiA+IMKgwqDCoGRpc2FibGUgdGhlIFNBR1YuIFRvIHByZXZlbnQgbWFj aGluZXMgZnJvbSBmYWlsaW5nIHRlc3RzIGR1ZSB0byBTQUdWCj4gPiDCoMKgwqBlcnJvcnMsIGlm IHRoZSBmaXJzdCB0aW1lIHdlIHRyeSB0byBjb250cm9sIHRoZSBTQUdWIHJlc3VsdHMgaW4gdGhl Cj4gPiDCoMKgwqBtYWlsYm94IGluZGljYXRpbmcgYW4gaW52YWxpZCBjb21tYW5kLCB3ZSBqdXN0 IGRpc2FibGUgZnV0dXJlIGF0dGVtcHRzCj4gPiDCoMKgwqB0byBjb250cm9sIHRoZSBTQUdWIHN0 YXRlIGJ5IHNldHRpbmcgZGV2X3ByaXYtPnNrbF9zYWd2X3N0YXR1cyB0bwo+ID4gwqDCoMKgSTkx NV9TS0xfU0FHVl9OT1RfQ09OVFJPTExFRCBhbmQgbWFrZSBhIG5vdGUgb2YgaXQgaW4gZG1lc2cu Cj4gPiDCoC0gTW92ZSBtdXRleF91bmxvY2soKSBhIGxpdHRsZSBoaWdoZXIgaW4gc2tsX2VuYWJs ZV9zYWd2KCkuIFRoaXMKPiA+IMKgwqDCoGRvZXNuJ3QgYWN0dWFsbHkgZml4IGFueXRoaW5nLCBi dXQgbGV0cyB1cyByZWxlYXNlIHRoZSBsb2NrIGEgbGl0dGxlCj4gPiDCoMKgwqBzb29uZXIgc2lu Y2Ugd2UncmUgZmluaXNoZWQgd2l0aCBpdC4KPiA+IENoYW5nZXMgc2luY2Ugdjk6Cj4gPiDCoC0g T25seSBlbmFibGUvZGlzYWJsZSBzYWd2IG9uIFNreWxha2UKPiA+IENoYW5nZXMgc2luY2Ugdjg6 Cj4gPiDCoC0gQWRkIGludGVsX3N0YXRlLT5tb2Rlc2V0IGd1YXJkIHRvIHRoZSBjb25kaXRpb25h bCBmb3IKPiA+IMKgwqDCoHNrbF9lbmFibGVfc2FndigpCj4gPiBDaGFuZ2VzIHNpbmNlIHY3Ogo+ ID4gwqAtIFJlbW92ZSBHRU45X1NBR1ZfTE9XX0ZSRVEsIHJlcGxhY2Ugd2l0aCBHRU45X1NBR1Zf SVNfRU5BQkxFRCAodGhhdCdzCj4gPiDCoMKgwqBhbGwgd2UgdXNlIGl0IGZvciBhbnl3YXkpCj4g PiDCoC0gVXNlIEdFTjlfU0FHVl9JU19FTkFCTEVEIGluc3RlYWQgb2YgMHgxIGZvciBjbGFyaWZp Y2F0aW9uCj4gPiDCoC0gRml4IGEgc3R5bGluZyBlcnJvciB0aGF0IHNudWNrIHBhc3QgbWUKPiA+ IENoYW5nZXMgc2luY2UgdjY6Cj4gPiDCoC0gUHJvdGVjdCBza2xfZW5hYmxlX3NhZ3YoKSB3aXRo IGludGVsX3N0YXRlLT5tb2Rlc2V0IGNvbmRpdGlvbmFsIGluCj4gPiDCoMKgwqBpbnRlbF9hdG9t aWNfY29tbWl0X3RhaWwoKQo+ID4gQ2hhbmdlcyBzaW5jZSB2NToKPiA+IMKgLSBEb24ndCB1c2Ug aXNfcG93ZXJfb2ZfMi4gTWFrZXMgdGhpbmdzIGNvbmZ1c2luZwo+ID4gwqAtIERvbid0IHVzZSB0 aGUgb2xkIHN0YXRlIHRvIGZpZ3VyZSBvdXQgd2hldGhlciBvciBub3QgdG8KPiA+IMKgwqDCoGVu YWJsZS9kaXNhYmxlIHRoZSBzYWd2LCB1c2UgdGhlIG5ldyBvbmUKPiA+IMKgLSBTcGxpdCB0aGUg bG9vcCBpbiBza2xfZGlzYWJsZV9zYWd2IGludG8gaXQncyBvd24gZnVuY3Rpb24KPiA+IMKgLSBN b3ZlIHNrbF9zYWd2X2VuYWJsZS9kaXNhYmxlKCkgY2FsbHMgaW50byBpbnRlbF9hdG9taWNfY29t bWl0X3RhaWwoKQo+ID4gQ2hhbmdlcyBzaW5jZSB2NDoKPiA+IMKgLSBVc2UgaXNfcG93ZXJfb2Zf MiBhZ2FpbnN0IGFjdGl2ZV9jcnRjcyB0byBjaGVjayB3aGV0aGVyIHdlIGhhdmUgPiAxCj4gPiDC oMKgwqBwaXBlIGVuYWJsZWQKPiA+IMKgLSBGaXggc2tsX3NhZ3ZfZ2V0X2h3X3N0YXRlKCk6ICh0 ZW1wICYgMHgxKSBpbmRpY2F0ZXMgZGlzYWJsZWQsIDB4MAo+ID4gwqDCoMKgZW5hYmxlZAo+ID4g wqAtIENhbGwgc2tsX3NhZ3ZfZW5hYmxlL2Rpc2FibGUoKSBmcm9tIHByZS9wb3N0LXBsYW5lIHVw ZGF0ZXMKPiA+IENoYW5nZXMgc2luY2UgdjM6Cj4gPiDCoC0gVXNlIHRpbWVfYmVmb3JlKCkgdG8g Y29tcGFyZSB0aW1lb3V0IHRvIGppZmZpZXMKPiA+IENoYW5nZXMgc2luY2UgdjI6Cj4gPiDCoC0g UmVhbGx5IGFwcGx5IG1pbm9yIHN0eWxlIG5pdHBpY2tzIHRvIHBhdGNoIHRoaXMgdGltZQo+ID4g Q2hhbmdlcyBzaW5jZSB2MToKPiA+IMKgLSBBZGRlZCBjb21tZW50cyBhYm91dCB0aGlzIHByb2Jh Ymx5IGJlaW5nIG9uZSBvZiB0aGUgcmVxdWlyZW1lbnRzIHRvCj4gPiDCoMKgwqBmaXhpbmcgU2t5 bGFrZSdzIHdhdGVybWFyayBpc3N1ZXMKPiA+IMKgLSBNaW5vciBzdHlsZSBuaXRwaWNrcyBmcm9t IE1hdHQgUm9wZXIKPiA+IMKgLSBEaXNhYmxlIHRoZXNlIGZ1bmN0aW9ucyBvbiBCcm94dG9uLCBz aW5jZSBpdCBkb2Vzbid0IGhhdmUgYW4gU0FHVgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBMeXVk ZSA8Y3BhdWxAcmVkaGF0LmNvbT4KPiA+IENjOiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJA aW50ZWwuY29tPgo+ID4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+Cj4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KPiA+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+ID4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKPiA+IC0tLQo+ID4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgfMKgwqDCoDcgKysKPiA+IMKgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaMKgwqDCoMKgwqDCoHzCoMKgwqA0ICsKPiA+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHzCoMKgMTEgKysrCj4gPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoHzCoMKgwqAzICsKPiA+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uY8KgwqDCoMKgwqDCoHwgMTQ4Cj4gPiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gwqA1IGZpbGVzIGNoYW5nZWQsIDE3 MyBpbnNlcnRpb25zKCspCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGlu ZGV4IDM1Y2FhOWIuLmYyMDUzMGJiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ID4gQEAgLTE5NDksNiArMTk0OSwxMyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPiDC oAlzdHJ1Y3QgaTkxNV9zdXNwZW5kX3NhdmVkX3JlZ2lzdGVycyByZWdmaWxlOwo+ID4gwqAJc3Ry dWN0IHZsdl9zMGl4X3N0YXRlIHZsdl9zMGl4X3N0YXRlOwo+ID4gwqAKPiA+ICsJZW51bSB7Cj4g PiArCQlJOTE1X1NLTF9TQUdWX1VOS05PV04gPSAwLAo+ID4gKwkJSTkxNV9TS0xfU0FHVl9ESVNB QkxFRCwKPiA+ICsJCUk5MTVfU0tMX1NBR1ZfRU5BQkxFRCwKPiA+ICsJCUk5MTVfU0tMX1NBR1Zf Tk9UX0NPTlRST0xMRUQKPiA+ICsJfSBza2xfc2Fndl9zdGF0dXM7Cj4gPiArCj4gPiDCoAlzdHJ1 Y3Qgewo+ID4gwqAJCS8qCj4gPiDCoAkJwqAqIFJhdyB3YXRlcm1hcmsgbGF0ZW5jeSB2YWx1ZXM6 Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBpbmRleCA3NDE5ZmJmLi5iZTgyYzQ5 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gQEAgLTcxNTMsNiArNzE1Mywx MCBAQCBlbnVtIHsKPiA+IMKgI2RlZmluZcKgwqDCoEhTV19QQ09ERV9ERV9XUklURV9GUkVRX1JF UQkJMHgxNwo+ID4gwqAjZGVmaW5lwqDCoMKgRElTUExBWV9JUFNfQ09OVFJPTAkJCTB4MTkKPiA+ IMKgI2RlZmluZQnCoMKgSFNXX1BDT0RFX0RZTkFNSUNfRFVUWV9DWUNMRV9DT05UUk9MCTB4MUEK PiA+ICsjZGVmaW5lwqDCoMKgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wJCTB4MjEKPiA+ICsjZGVm aW5lwqDCoMKgwqDCoEdFTjlfU0FHVl9ESVNBQkxFCQkJMHgwCj4gPiArI2RlZmluZcKgwqDCoMKg wqBHRU45X1NBR1ZfSVNfRElTQUJMRUQJCTB4MQo+ID4gKyNkZWZpbmXCoMKgwqDCoMKgR0VOOV9T QUdWX0VOQUJMRcKgCcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgzCj4gPiDCoCNkZWZpbmUg R0VONl9QQ09ERV9EQVRBCQkJCV9NTUlPKDB4MTM4MTI4KQo+ID4gwqAjZGVmaW5lwqDCoMKgR0VO Nl9QQ09ERV9GUkVRX0lBX1JBVElPX1NISUZUCTgKPiA+IMKgI2RlZmluZcKgwqDCoEdFTjZfUENP REVfRlJFUV9SSU5HX1JBVElPX1NISUZUCTE2Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4gaW5kZXggNzgxZDIyZS4uY2E0YjgzZiAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBAQCAtMTQxNTYsNiArMTQxNTYsMTMgQEAgc3Rh dGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdAo+ID4gZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4gPiDCoAkJwqDCoMKgwqDCoGludGVsX3N0YXRlLT5jZGNsa19wbGxfdmNv ICE9IGRldl9wcml2LQo+ID4gPmNkY2xrX3BsbC52Y28pKQo+ID4gwqAJCQlkZXZfcHJpdi0+ZGlz cGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsayhzdGF0ZSk7Cj4gPiDCoAo+ID4gKwkJLyoKPiA+ICsJ CcKgKiBTS0wgd29ya2Fyb3VuZDogYnNwZWMgcmVjb21tZW5kcyB3ZSBkaXNhYmxlIHRoZSBTQUdW Cj4gPiB3aGVuIHdlCj4gPiArCQnCoCogaGF2ZSBtb3JlIHRoZW4gb25lIHBpcGUgZW5hYmxlZAo+ ID4gKwkJwqAqLwo+ID4gKwkJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpICYmICFza2xfY2FuX2Vu YWJsZV9zYWd2KHN0YXRlKSkKPiA+ICsJCQlza2xfZGlzYWJsZV9zYWd2KGRldl9wcml2KTsKPiA+ ICsKPiA+IMKgCQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9kaXNhYmxlZChkZXYpOwo+ID4gwqAJfQo+ ID4gwqAKPiA+IEBAIC0xNDIyOSw2ICsxNDIzNiwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9t aWNfY29tbWl0X3RhaWwoc3RydWN0Cj4gPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+IMKg CQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9jcnRjKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBjcnRjLQo+ ID4gPnN0YXRlKTsKPiA+IMKgCX0KPiA+IMKgCj4gPiArCWlmIChJU19TS1lMQUtFKGRldl9wcml2 KSAmJiBpbnRlbF9zdGF0ZS0+bW9kZXNldCAmJgo+ID4gKwnCoMKgwqDCoHNrbF9jYW5fZW5hYmxl X3NhZ3Yoc3RhdGUpKQo+ID4gKwkJc2tsX2VuYWJsZV9zYWd2KGRldl9wcml2KTsKPiA+ICsKPiA+ IMKgCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9od19kb25lKHN0YXRlKTsKPiA+IMKgCj4gPiDC oAlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiA+IGluZGV4IDFjNzAwYjAuLmQyMDNjNzcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiA+IEBAIC0xNzIyLDYgKzE3MjIsOSBAQCB2b2lkIGlsa193bV9nZXRfaHdfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiDCoHZvaWQgc2tsX3dtX2dldF9od19zdGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+IMKgdm9pZCBza2xfZGRiX2dldF9od19zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAkJCcKgwqBzdHJ1Y3Qg c2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKTsKPiA+ICtib29sIHNrbF9jYW5fZW5h YmxlX3NhZ3Yoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ICtpbnQgc2tsX2Vu YWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiAraW50IHNr bF9kaXNhYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+IMKg dWludDMyX3QgaWxrX3BpcGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcpOwo+ID4gwqBib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ID4gwqBpbnQgc2FuaXRpemVfcmM2X29wdGlvbihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBlbmFibGVfcmM2KTsKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKPiA+IGluZGV4IGI0Y2Y5ODguLmZlZDJiYWU4IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwo+ID4gQEAgLTI4NjAsNiArMjg2MCw3IEBAIGJvb2wgaWxrX2Rpc2Fi bGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+IMKgCj4gPiDCoCNkZWZpbmUgU0tM X0REQl9TSVpFCQk4OTYJLyogaW4gYmxvY2tzICovCj4gPiDCoCNkZWZpbmUgQlhUX0REQl9TSVpF CQk1MTIKPiA+ICsjZGVmaW5lIFNLTF9TQUdWX0JMT0NLX1RJTUUgMzAgLyogwrVzICovCj4gPiDC oAo+ID4gwqAvKgo+ID4gwqAgKiBSZXR1cm4gdGhlIGluZGV4IG9mIGEgcGxhbmUgaW4gdGhlIFNL TCBEREIgYW5kIHdtIHJlc3VsdAo+ID4gYXJyYXlzLsKgwqBQcmltYXJ5Cj4gPiBAQCAtMjg4Myw2 ICsyODg0LDE1MyBAQCBza2xfd21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSkKPiA+IMKgCX0KPiA+IMKgfQo+ID4gwqAKPiA+ICsvKgo+ID4gKyAqIFNBR1YgZHluYW1p Y2FsbHkgYWRqdXN0cyB0aGUgc3lzdGVtIGFnZW50IHZvbHRhZ2UgYW5kIGNsb2NrIGZyZXF1ZW5j aWVzCj4gPiArICogZGVwZW5kaW5nIG9uIHBvd2VyIGFuZCBwZXJmb3JtYW5jZSByZXF1aXJlbWVu dHMuIFRoZSBkaXNwbGF5IGVuZ2luZQo+ID4gYWNjZXNzCj4gPiArICogdG8gc3lzdGVtIG1lbW9y eSBpcyBibG9ja2VkIGR1cmluZyB0aGUgYWRqdXN0bWVudCB0aW1lLiBCZWNhdXNlIG9mIHRoZQo+ ID4gKyAqIGJsb2NraW5nIHRpbWUsIGhhdmluZyB0aGlzIGVuYWJsZWQgY2FuIGNhdXNlIGZ1bGwg c3lzdGVtIGhhbmdzIGFuZC9vcgo+ID4gcGlwZQo+ID4gKyAqIHVuZGVycnVucyBpZiB3ZSBkb24n dCBtZWV0IGFsbCBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50czoKPiA+ICsgKgo+ID4gKyAq wqDCoC0gPD0gMSBwaXBlIGVuYWJsZWQKPiA+ICsgKsKgwqAtIEFsbCBwbGFuZXMgY2FuIGVuYWJs ZSB3YXRlcm1hcmtzIGZvciBsYXRlbmNpZXMgPj0gU0FHViBlbmdpbmUgYmxvY2sKPiA+IHRpbWUK PiA+ICsgKsKgwqAtIFdlJ3JlIG5vdCB1c2luZyBhbiBpbnRlcmxhY2VkIGRpc3BsYXkgY29uZmln dXJhdGlvbgo+ID4gKyAqLwo+ID4gK2ludAo+ID4gK3NrbF9lbmFibGVfc2FndihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArewo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4g KwlpZiAoZGV2X3ByaXYtPnNrbF9zYWd2X3N0YXR1cyA9PSBJOTE1X1NLTF9TQUdWX05PVF9DT05U Uk9MTEVEIHx8Cj4gPiArCcKgwqDCoMKgZGV2X3ByaXYtPnNrbF9zYWd2X3N0YXR1cyA9PSBJOTE1 X1NLTF9TQUdWX0VOQUJMRUQpCj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJRFJNX0RFQlVH X0tNUygiRW5hYmxpbmcgdGhlIFNBR1ZcbiIpOwo+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cnBzLmh3X2xvY2spOwo+ID4gKwo+ID4gKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShk ZXZfcHJpdiwgR0VOOV9QQ09ERV9TQUdWX0NPTlRST0wsCj4gPiArCQkJCcKgwqDCoMKgwqDCoEdF TjlfU0FHVl9FTkFCTEUpOwo+ID4gKwo+ID4gKwkvKiBXZSBkb24ndCBuZWVkIHRvIHdhaXQgZm9y IHRoZSBTQUdWIHdoZW4gZW5hYmxpbmcgKi8KPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cnBzLmh3X2xvY2spOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwnCoCogU29tZSBza2wgc3lzdGVtcywg cHJlLXJlbGVhc2UgbWFjaGluZXMgaW4gcGFydGljdWxhciwKPiA+ICsJwqAqIGRvbid0IGFjdHVh bGx5IGhhdmUgYW4gU0FHVi4KPiA+ICsJwqAqLwo+ID4gKwlpZiAocmV0ID09IC1FTk9TWVMpIHsK PiA+ICsJCURSTV9ERUJVR19EUklWRVIoIk5vIFNBR1YgZm91bmQgb24gc3lzdGVtLCBpZ25vcmlu Z1xuIik7Cj4gPiArCQlkZXZfcHJpdi0+c2tsX3NhZ3Zfc3RhdHVzID0gSTkxNV9TS0xfU0FHVl9O T1RfQ09OVFJPTExFRDsKPiA+ICsJCXJldHVybiAwOwo+ID4gKwl9IGVsc2UgaWYgKHJldCA8IDAp IHsKPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSB0aGUgU0FHVlxuIik7Cj4gPiAr CQlyZXR1cm4gcmV0Owo+ID4gKwl9Cj4gPiArCj4gPiArCWRldl9wcml2LT5za2xfc2Fndl9zdGF0 dXMgPSBJOTE1X1NLTF9TQUdWX0VOQUJMRUQ7Cj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgaW50Cj4gPiArc2tsX2RvX3NhZ3ZfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArewo+ID4gKwlpbnQgcmV0Owo+ID4gKwl1aW50MzJfdCB0 ZW1wID0gR0VOOV9TQUdWX0RJU0FCTEU7Cj4gPiArCj4gPiArCXJldCA9IHNhbmR5YnJpZGdlX3Bj b2RlX3JlYWQoZGV2X3ByaXYsIEdFTjlfUENPREVfU0FHVl9DT05UUk9MLAo+ID4gKwkJCQnCoMKg wqDCoMKgJnRlbXApOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJZWxz ZQo+ID4gKwkJcmV0dXJuIHRlbXAgJiBHRU45X1NBR1ZfSVNfRElTQUJMRUQ7Cj4gPiArfQo+ID4g Kwo+ID4gK2ludAo+ID4gK3NrbF9kaXNhYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ID4gK3sKPiA+ICsJaW50IHJldCwgcmVzdWx0Owo+ID4gKwo+ID4gKwlpZiAo ZGV2X3ByaXYtPnNrbF9zYWd2X3N0YXR1cyA9PSBJOTE1X1NLTF9TQUdWX05PVF9DT05UUk9MTEVE IHx8Cj4gPiArCcKgwqDCoMKgZGV2X3ByaXYtPnNrbF9zYWd2X3N0YXR1cyA9PSBJOTE1X1NLTF9T QUdWX0RJU0FCTEVEKQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCURSTV9ERUJVR19LTVMo IkRpc2FibGluZyB0aGUgU0FHVlxuIik7Cj4gPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMu aHdfbG9jayk7Cj4gPiArCj4gPiArCS8qIGJzcGVjIHNheXMgdG8ga2VlcCByZXRyeWluZyBmb3Ig YXQgbGVhc3QgMSBtcyAqLwo+ID4gKwlyZXQgPSB3YWl0X2ZvcihyZXN1bHQgPSBza2xfZG9fc2Fn dl9kaXNhYmxlKGRldl9wcml2KSwgMSk7Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJw cy5od19sb2NrKTsKPiA+ICsKPiA+ICsJaWYgKHJldCA9PSAtRVRJTUVET1VUKSB7Cj4gPiArCQlE Uk1fRVJST1IoIlJlcXVlc3QgdG8gZGlzYWJsZSBTQUdWIHRpbWVkIG91dFxuIik7Cj4gPiArCQly ZXR1cm4gLUVUSU1FRE9VVDsKPiA+ICsJfQo+ID4gKwo+ID4gKwkvKgo+ID4gKwnCoCogU29tZSBz a2wgc3lzdGVtcywgcHJlLXJlbGVhc2UgbWFjaGluZXMgaW4gcGFydGljdWxhciwKPiA+ICsJwqAq IGRvbid0IGFjdHVhbGx5IGhhdmUgYW4gU0FHVi4KPiA+ICsJwqAqLwo+ID4gKwlpZiAocmVzdWx0 ID09IC1FTk9TWVMpIHsKPiA+ICsJCURSTV9ERUJVR19EUklWRVIoIk5vIFNBR1YgZm91bmQgb24g c3lzdGVtLCBpZ25vcmluZ1xuIik7Cj4gPiArCQlkZXZfcHJpdi0+c2tsX3NhZ3Zfc3RhdHVzID0g STkxNV9TS0xfU0FHVl9OT1RfQ09OVFJPTExFRDsKPiA+ICsJCXJldHVybiAwOwo+ID4gKwl9IGVs c2UgaWYgKHJlc3VsdCA8IDApIHsKPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUg dGhlIFNBR1ZcbiIpOwo+ID4gKwkJcmV0dXJuIHJlc3VsdDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlk ZXZfcHJpdi0+c2tsX3NhZ3Zfc3RhdHVzID0gSTkxNV9TS0xfU0FHVl9ESVNBQkxFRDsKPiA+ICsJ cmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK2Jvb2wgc2tsX2Nhbl9lbmFibGVfc2FndihzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gc3RhdGUtPmRldjsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRl bF9zdGF0ZSA9Cj4gPiB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ID4gKwlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGM7Cj4gPiArCWVudW0gcGlwZSBwaXBlOwo+ID4gKwlpbnQgbGV2ZWwsIHBs YW5lOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwnCoCogU0tMIHdvcmthcm91bmQ6IGJzcGVjIHJlY29t bWVuZHMgd2UgZGlzYWJsZSB0aGUgU0FHViB3aGVuIHdlCj4gPiBoYXZlCj4gPiArCcKgKiBtb3Jl IHRoZW4gb25lIHBpcGUgZW5hYmxlZAo+ID4gKwnCoCoKPiA+ICsJwqAqIElmIHRoZXJlIGFyZSBu byBhY3RpdmUgQ1JUQ3MsIG5vIGFkZGl0aW9uYWwgY2hlY2tzIG5lZWQgYmUKPiA+IHBlcmZvcm1l ZAo+ID4gKwnCoCovCj4gPiArCWlmIChod2VpZ2h0MzIoaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRj cykgPT0gMCkKPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gKwllbHNlIGlmIChod2VpZ2h0MzIoaW50 ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykgPiAxKQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwo+ ID4gKwkvKiBTaW5jZSB3ZSdyZSBub3cgZ3VhcmFudGVlZCB0byBvbmx5IGhhdmUgb25lIGFjdGl2 ZSBDUlRDLi4uICovCj4gPiArCXBpcGUgPSBmZnMoaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykg LSAxOwo+ID4gKwljcnRjID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwo+ ID4gKwo+ID4gKwlpZiAoY3J0Yy0+c3RhdGUtPm1vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lO VEVSTEFDRSkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJZm9yX2VhY2hfcGxhbmUo ZGV2X3ByaXYsIHBpcGUsIHBsYW5lKSB7Cj4gPiArCQkvKiBTa2lwIHRoaXMgcGxhbmUgaWYgaXQn cyBub3QgZW5hYmxlZCAqLwo+ID4gKwkJaWYgKGludGVsX3N0YXRlLT53bV9yZXN1bHRzLnBsYW5l W3BpcGVdW3BsYW5lXVswXSA9PSAwKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJLyog RmluZCB0aGUgaGlnaGVzdCBlbmFibGVkIHdtIGxldmVsIGZvciB0aGlzIHBsYW5lICovCj4gPiAr CQlmb3IgKGxldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXYpOwo+ID4gKwkJwqDCoMKgwqDCoGlu dGVsX3N0YXRlLT53bV9yZXN1bHRzLnBsYW5lW3BpcGVdW3BsYW5lXVtsZXZlbF0gPT0KPiA+IDA7 Cj4gPiArCQnCoMKgwqDCoMKgLS1sZXZlbCk7Cj4gPiArCj4gPiArCQkvKgo+ID4gKwkJwqAqIElm IGFueSBvZiB0aGUgcGxhbmVzIG9uIHRoaXMgcGlwZSBkb24ndCBlbmFibGUgd20gbGV2ZWxzCj4g PiArCQnCoCogdGhhdCBpbmN1ciBtZW1vcnkgbGF0ZW5jaWVzIGhpZ2hlciB0aGVuIDMwwrVzIHdl IGNhbid0Cj4gPiBlbmFibGUKPiA+ICsJCcKgKiB0aGUgU0FHVgo+ID4gKwkJwqAqLwo+ID4gKwkJ aWYgKGRldl9wcml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF0gPCBTS0xfU0FHVl9CTE9DS19USU1F KQo+ID4gKwkJCXJldHVybiBmYWxzZTsKPiBTaG91bGRuJ3QgdGhpcyBjaGVjayBiZSA+PSBCTE9D S19USU1FPwo+IApUaGF0J3MgdGhlIHJlcXVpcmVtZW50IGZvciB0aGUgc2FndiBidXQgdGhlIGNv bmRpdGlvbmFsIGhlcmUgaXMgc3RpbGwgY29ycmVjdC4KCldNMCAtIDJtcwpXTTEgLSA1bXMKV00y IC0gMTBtcwpXTTMgLSAyMG1zCldNNCstIGRpc2FibGVkCgooMjBtcyA8IEJMT0NLX1RJTUUpID09 IHRydWUsIHdoaWNoIGluZGljYXRlcyB3ZSBkb24ndCBoYXZlIGFueSB3YXRlcm1hcmsgbGV2ZWxz CndpdGggbGF0ZW5jeSB2YWx1ZXMgPj0gMzBtcy4gV2UgY2FuJ3QgZW5hYmxlIHNvIHJldHVybiBm YWxzZS4KCldNMCAtIDJtcwpXTTEgLSA1bXMKV00yIC0gMTBtcwpXTTMgLSAyMG1zCldNNCAtIDMz bXMKV001IC0gNTBtcwpXTTYgLSA3MG1zCldNNyAtIDk5bXMKCig5OW1zIDwgQkxPQ0tfVElNRSkg PT0gZmFsc2UsIGFuZCA5OSA+PSBCTE9DS19USU1FIHNvIHdlIGVuZCB1cCByZXR1cm5pbmcgdHJ1 ZQp0byBpbmRpY2F0ZSBpdCdzIHNhZmUgdG8gZW5hYmxlLgoKPiB+TWFhcnRlbgo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxp bmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK