From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Li Subject: Re: [PATCH v2 1/1] drm/amdgpu: Enable scatter gather display support Date: Thu, 12 Apr 2018 16:01:31 -0400 Message-ID: References: <1522189371-13767-1-git-send-email-Samuel.Li@amd.com> <7cc47f78-66eb-148d-96a2-b97760f767bf@gmail.com> <15196bc3-76cb-0a52-c05f-f23131f77e7f@amd.com> <20bdb4b1-1986-22e4-b0d1-1713b8794f83@amd.com> <277e44be-d618-ad29-06d2-ea12466571c9@amd.com> <18325399-d78e-2442-ccf4-55e30d9f5c52@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <18325399-d78e-2442-ccf4-55e30d9f5c52-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?UTF-8?Q?Christian_K=c3=b6nig?= , Alexander.Deucher-5C7GfCeVMHo@public.gmane.org, Michel.Daenzer-5C7GfCeVMHo@public.gmane.org, =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= Cc: amd-gfx mailing list VGhlIDR0aCBwcm9wb3NhbCA6KQoKPiBJbiBvdGhlciB3b3JkcyBhZGQgc29tZXRoaW5nIGxpa2Ug dGhlIGZvbGxvd2luZzoKPiAKPiBpZiAoZG9tYWluICYgQU1ER1BVX0dFTV9ET01BSU5fR1RUICYm IGJvLT5wcmVmZXJyZWRfZG9tYWlucyAmIEFNREdQVV9HRU1fRE9NQUlOX0dUVCkKPiAgICAgZG9t YWluID0gQU1ER1BVX0dFTV9ET01BSU5fR1RUOwo+IAo+IFRoYXQgc2hvdWxkIGJlIGV2ZXJ5dGhp bmcgd2UgbmVlZCBoZXJlLgoKVGhpcyBpcyBiYXNpY2FsbHkgYWdhaW5zdCB0aGUgaWRlYSBvZiBN YXJlaydzIGNoYW5nZTogaW4gTWVzYSwgYm90aCBHVFQvVlJBTSBhcmUgYWxsb3dlZDsgYnV0IG5v dyBpbiB5b3VyIGtlcm5lbCBjaGFuZ2UsIGFsbCBidWZmZXJzIHVzZXMgR1RUIG9ubHkobm90IGxp bWl0ZWQgdG8gZGlzcGxheSBidWZmZXIgbm93KS4KVG8gY29tcGFyZSwgY3VycmVudCBwYXRjaCBz dGlsbCBzZWVtcyBiZXR0ZXIsIHNpbmNlIGl0IG9ubHkgY2lyY3Vtc2NyaWJlcyBkaXNwbGF5IGJ1 ZmZlci4KClNhbQoKCk9uIDIwMTgtMDQtMTIgMDI6NDcgUE0sIENocmlzdGlhbiBLw7ZuaWcgd3Jv dGU6Cj4gUGF0Y2ggIzE6IEF2b2lkIHRoZSBoYXJkd2FyZSBidWchCj4gCj4gRS5nLiBldmVuIHdo ZW4gd2UgYXZvaWQgZGlmZmVyZW50IHBsYWNlbWVudHMgaXQgd291bGQgYmUgZ29vZCB0byBoYXZl IGEgcGF0Y2ggd2hpY2ggdHVybnMgb2ZmIGltbWVkaWF0ZSBmbGlwcGluZyB3aGVuIHN3aXRjaGlu ZyBmcm9tIFZSQU0gdG8gR1RULgo+IAo+IFRoYXQgaXMgYXMgc2FmZXR5IG5ldCBhbmQgdG8gZG9j dW1lbnQgdGhhdCB3ZSBuZWVkIHRvIGF2b2lkIHRoaXMgY29uZGl0aW9uIG9uIHRoZSBoYXJkd2Fy ZS4KPiAKPiBQYXRjaCAjMjogR28gaW50byBhbWRncHVfYm9fcGluX3Jlc3RyaWN0ZWQoKSBhbmQg Y2hhbmdlIHRoZSBwaW5uaW5nIHByZWZlcmVuY2UuCj4gCj4gSW4gb3RoZXIgd29yZHMgYWRkIHNv bWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6Cj4gCj4gaWYgKGRvbWFpbiAmIEFNREdQVV9HRU1f RE9NQUlOX0dUVCAmJiBiby0+cHJlZmVycmVkX2RvbWFpbnMgJiBBTURHUFVfR0VNX0RPTUFJTl9H VFQpCj4gwqDCoMKgIGRvbWFpbiA9IEFNREdQVV9HRU1fRE9NQUlOX0dUVDsKPiAKPiBUaGF0IHNo b3VsZCBiZSBldmVyeXRoaW5nIHdlIG5lZWQgaGVyZS4KPiAKPiBSZWdhcmRzLAo+IENocmlzdGlh bi4KPiAKPiBBbSAxMi4wNC4yMDE4IHVtIDIwOjA3IHNjaHJpZWIgU2FtdWVsIExpOgo+PiBQbGVh c2UgY2xhcmlmeSwgQ2hyaXN0aWFuLiBIb3cgd291bGQgeW91IGxpa2UgaXQgdG8gYmUgaW1wbGVt ZW50ZWQ/Cj4+Cj4+IFNhbQo+Pgo+Pgo+PiBPbiAyMDE4LTA0LTEyIDAyOjAwIFBNLCBDaHJpc3Rp YW4gS8O2bmlnIHdyb3RlOgo+Pj4+IDEpIFR1cm4gb2ZmIGltbWVkaWF0ZSBtb2RlIHdoZW4gZmxp cHBpbmcgYmV0d2VlbiBWUkFNL0dUVC4KPj4+IFRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbmRl cGVuZGVudGx5Lgo+Pj4KPj4+IFNlZSB3b3JraW5nIGFyb3VuZCB0aGUgaGFyZHdhcmUgYnVnIHNo b3VsZCBiZSBhIGRpZmZlcmVudCBwYXRjaCB0aGFuIGltcGxlbWVudGluZyBhIHBsYWNlbWVudCBw b2xpY3kuCj4+Pgo+Pj4+IEFzIHBlciBkaXNjdXNzaW9uLCB0aGUgM3JkIG9uZSwgd2hpY2ggaXMg dGhlIGN1cnJlbnQgcGF0Y2gsIHNlZW1zIHRoZSBiZXN0IHNvIGZhci4KPj4+IEFuZCBJIGNhbiBv bmx5IHJlcGVhdCBteXNlbGYuIEFsZXggYW5kIEkgYXJlIHRoZSBtYWludGFpbmVycyBvZiB0aGUg a2VybmVsIG1vZHVsZSwgc28gd2UgYXJlIHRoZSBvbmUgd2hvIGRlY2lkZSBvbiBob3cgdG8gaW1w bGVtZW50IHRoaW5ncyBoZXJlLgo+Pj4KPj4+IEFuZCB3ZSBib3RoIG5vdGVkIHRoYXQgdGhpcyBh cHByb2FjaCBvZiBvdmVycmlkaW5nIHVzZXIgc3BhY2UgZGVjaXNpb25zIGlzIG5vdCBhIGdvb2Qg ZGVzaWduLgo+Pj4KPj4+IFRoZSBwbGFjZW1lbnQgcG9saWN5IEkgc3VnZ2VzdCBieSBwcmVmZXJy aW5nIEdUVCBvdmVyIFZSQU0gb24gQVBVcyBzaG91bGQgYmUgdHJpdmlhbCB0byBpbXBsZW1lbnQg YW5kIGFzIGZhciBhcyBJIGNhbiBzZWUgYXZvaWRzIGFsbCBuZWdhdGl2ZSBzaWRlIGVmZmVjdHMu Cj4+Pgo+Pj4gUmVnYXJkcywKPj4+IENocmlzdGlhbi4KPj4+Cj4+PiBBbSAxMi4wNC4yMDE4IHVt IDE5OjIxIHNjaHJpZWIgU2FtdWVsIExpOgo+Pj4+PiBUaGUgcG9pbnQgaXMgdGhpcyBrZXJuZWwg Y2hhbmdlIG5vdyBuZWVkcyB0byBiZSByZXdvcmtlZCBhbmQgYWRhcHRlZCB0byB3aGF0IE1lc2Eg aXMgZG9pbmcuCj4+Pj4gVGhyZWUgb3B0aW9ucyBoYXZlIGJlZW4gYnJvdWdodCB1cCBmb3Iga2Vy bmVsLAo+Pj4+IDEpIFR1cm4gb2ZmIGltbWVkaWF0ZSBtb2RlIHdoZW4gZmxpcHBpbmcgYmV0d2Vl biBWUkFNL0dUVC4KPj4+PiAyKSBDaGVjayB0aGUgZG9tYWluIG9mIHRoZSBjdXJyZW50IGZiIGFu ZCB0aGVuIGFkanVzdCB0aGUgbmV3IG9uZSBiZWZvcmUgcGlubmluZyBpdC4KPj4+PiAzKSBVc2Ug b25seSBWUkFNIG9yIEdUVCBkZXBlbmRpbmcgb24gYSB0aHJlc2hob2xkLgo+Pj4+Cj4+Pj4gQXMg cGVyIGRpc2N1c3Npb24sIHRoZSAzcmQgb25lLCB3aGljaCBpcyB0aGUgY3VycmVudCBwYXRjaCwg c2VlbXMgdGhlIGJlc3Qgc28gZmFyLgo+Pj4+Cj4+Pj4gUmVnYXJkcywKPj4+PiBTYW11ZWwgTGkK Pj4+Pgo+Pj4+Cj4+Pj4KPj4+PiBPbiAyMDE4LTA0LTEyIDAxOjAzIFBNLCBDaHJpc3RpYW4gS8O2 bmlnIHdyb3RlOgo+Pj4+Pj4gQ2FuIHlvdSBiZSBtb3JlIHNwZWNpZmljLCBDaHJpc3RpYW4/IE1l c2EgaGFzIHRoaXMsIEkgZG9uJ3QgdGhpbmsgaXQgbmVlZHMgYW55dGhpbmcgZWxzZToKPj4+Pj4g Q29tcGxldGVseSBhZ3JlZSwgdGhhdCdzIHdoYXQgSSBzdWdnZXN0ZWQgdG8gaW1wbGVtZW50Lgo+ Pj4+Pgo+Pj4+PiBUaGUgcG9pbnQgaXMgdGhpcyBrZXJuZWwgY2hhbmdlIG5vdyBuZWVkcyB0byBi ZSByZXdvcmtlZCBhbmQgYWRhcHRlZCB0byB3aGF0IE1lc2EgaXMgZG9pbmcuCj4+Pj4+Cj4+Pj4+ IFJlZ2FyZHMsCj4+Pj4+IENocmlzdGlhbi4KPj4+Pj4KPj4+Pj4gQW0gMTIuMDQuMjAxOCB1bSAx ODo0MCBzY2hyaWViIE1hcmVrIE9sxaHDoWs6Cj4+Pj4+PiBDYW4geW91IGJlIG1vcmUgc3BlY2lm aWMsIENocmlzdGlhbj8gTWVzYSBoYXMgdGhpcywgSSBkb24ndCB0aGluayBpdCBuZWVkcyBhbnl0 aGluZyBlbHNlOgo+Pj4+Pj4gaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2Ev Y29tbWl0Lz9pZD03ZDIwNzk5MDhkOWVmMDVlYzNmMzViNzA3ODgzM2U1Nzg0NmNhYjViCj4+Pj4+ Pgo+Pj4+Pj4gTWFyZWsKPj4+Pj4+Cj4+Pj4+PiBPbiBXZWQsIE1hciAyOCwgMjAxOCBhdCAzOjQ2 IEFNLCBDaHJpc3RpYW4gS8O2bmlnIDxja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbSA8 bWFpbHRvOmNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tPj4gd3JvdGU6Cj4+Pj4+Pgo+ Pj4+Pj4gwqDCoMKgwqDCoCBBbSAyOC4wMy4yMDE4IHVtIDAwOjIyIHNjaHJpZWIgU2FtdWVsIExp Ogo+Pj4+Pj4KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBJdCdzIGF1dG8gYnkgZGVmYXVsdC4g Rm9yIENaL1NULCBhdXRvIHNldHRpbmcgZW5hYmxlcyBzZyBkaXNwbGF5Cj4+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgd2hlbiB2cmFtIHNpemUgaXMgc21hbGw7IG90aGVyd2lzZSBzdGlsbCB1c2Vz IHZyYW0uCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgVGhpcyBwYXRjaCBmaXhlZCBzb21lIHBv dGVudGlhbCBoYW5nIGlzc3VlIGludHJvZHVjZWQgYnkgY2hhbmdlCj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgImFsbG93IGZyYW1lYnVmZmVyIGluIEdBUlQgbWVtb3J5IGFzIHdlbGwiIGR1ZSB0 byBDWi9TVCBoYXJkd2FyZQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGxpbWl0YXRpb24uCj4+ Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IMKgwqDCoMKgwqAgV2VsbCB0aGF0IGlzIHN0aWxsIGEgTkFLLgo+ Pj4+Pj4KPj4+Pj4+IMKgwqDCoMKgwqAgQXMgZGlzY3Vzc2VkIG5vdyBtdWx0aXBsZSB0aW1lcyBw bGVhc2UgaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKPj4+Pj4+IMKgwqDCoMKgwqAgY2hhbmdlcyBp biBNZXNhLgo+Pj4+Pj4KPj4+Pj4+IMKgwqDCoMKgwqAgUmVnYXJkcywKPj4+Pj4+IMKgwqDCoMKg wqAgQ2hyaXN0aWFuLgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIHYyOiBDaGFuZ2UgZGVmYXVsdCBzZXR0aW5nIHRvIGF1dG8sIGFsc28gc29tZSBtaXNjIGNo YW5nZXMuCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgU2lnbmVkLW9mZi1ieTogU2FtdWVsIExp IDxTYW11ZWwuTGlAYW1kLmNvbQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIDxtYWlsdG86U2Ft dWVsLkxpQGFtZC5jb20+Pgo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0tLQo+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIMKg IMKgfMKgIDEgKwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMgwqAgwqB8IDEwICsrKysrKysrLS0KPj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlz cGxheS5oIMKgIMKgfMKgIDIgKysKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMgwqAgwqB8wqAgNCArKysrCj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Zi LmMgwqAgfMKgIDIgKysKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIHzCoCAzICsrLQo+Pj4+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIMKgIDYgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKPj4+Pj4+Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIGluZGV4IGE3ZTIyMjkuLmM5NDIzNjIgMTAwNjQ0Cj4+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIEBAIC0xMjksNiArMTI5LDcgQEAgZXh0 ZXJuIGludCBhbWRncHVfbGJwdzsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBleHRlcm4g aW50IGFtZGdwdV9jb21wdXRlX211bHRpcGlwZTsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDC oCBleHRlcm4gaW50IGFtZGdwdV9ncHVfcmVjb3Zlcnk7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgwqAgZXh0ZXJuIGludCBhbWRncHVfZW11X21vZGU7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgK2V4dGVybiBpbnQgYW1kZ3B1X3NnX2Rpc3BsYXk7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgwqAgwqAgI2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJCj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgwqAgZXh0ZXJuIGludCBhbWRncHVfc2lfc3VwcG9ydDsKPj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rp c3BsYXkuYwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGluZGV4IDU0 OTViMjkuLjFlN2I5NTAgMTAwNjQ0Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwo+Pj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5 LmMKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBAQCAtNTEzLDggKzUxMywxNCBAQCB1aW50MzJf dAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kaXNwbGF5X2ZyYW1lYnVmZmVyX2Rv bWFpbnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgwqAgI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpCj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgwqAgwqAgwqAgwqAgwqAgaWYgKGFkZXYtPmFzaWNfdHlwZSA+PSBDSElQX0NBUlJJWk8gJiYg YWRldi0+YXNpY190eXBlCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgPCBDSElQX1JBVkVOICYm Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWRldi0+ZmxhZ3Mg JiBBTURfSVNfQVBVICYmCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIMKgIMKgIMKgIMKg IMKgYW1kZ3B1X2RldmljZV9hc2ljX2hhc19kY19zdXBwb3J0KGFkZXYtPmFzaWNfdHlwZSkpCj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZG9tYWluIHw9 IEFNREdQVV9HRU1fRE9NQUlOX0dUVDsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAg wqAgwqAgwqAgwqBhbWRncHVfZGV2aWNlX2FzaWNfaGFzX2RjX3N1cHBvcnQoYWRldi0+YXNpY190 eXBlKSkgewo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGlmIChhbWRncHVfc2dfZGlzcGxheSA9PSAxKQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRvbWFpbiA9IEFNREdQVV9HRU1fRE9N QUlOX0dUVDsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBlbHNlIGlmIChhbWRncHVfc2dfZGlzcGxheSA9PSAtMSkgewo+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChhZGV2LT5nbWMu cmVhbF92cmFtX3NpemUgPAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIEFNREdQVV9TR19USFJF U0hPTEQpCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZG9tYWluID0gQU1ER1BVX0dFTV9ET01BSU5fR1RUOwo+ Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPj4+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqB9Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgwqAgI2VuZGlmCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgcmV0dXJu IGRvbWFpbjsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuaAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuaAo+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIGluZGV4IDJiMTFkODAuLjJiMjUzOTMgMTAwNjQ0Cj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Rpc3BsYXkuaAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmgKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBA QCAtMjMsNiArMjMsOCBAQAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgICNpZm5kZWYgX19B TURHUFVfRElTUExBWV9IX18KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDCoCAjZGVmaW5lIF9f QU1ER1BVX0RJU1BMQVlfSF9fCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgKyNkZWZpbmUg QU1ER1BVX1NHX1RIUkVTSE9MRMKgICgyNTYqMTAyNCoxMDI0KQo+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgICsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDCoCB1aW50MzJfdCBhbWRncHVfZGlz cGxheV9mcmFtZWJ1ZmZlcl9kb21haW5zKHN0cnVjdAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgIHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKgo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgIGFtZGdwdV9k aXNwbGF5X3VzZXJfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9kcnYuYwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg aW5kZXggMWJmY2U3OS4uMTlmMTFhNSAxMDA2NDQKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2 LmMKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBAQCAtMTMyLDYgKzEzMiw3IEBAIGludCBhbWRn cHVfbGJwdyA9IC0xOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgIGludCBhbWRncHVfY29t cHV0ZV9tdWx0aXBpcGUgPSAtMTsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDCoCBpbnQgYW1k Z3B1X2dwdV9yZWNvdmVyeSA9IC0xOyAvKiBhdXRvICovCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqAgwqAgaW50IGFtZGdwdV9lbXVfbW9kZSA9IDA7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg K2ludCBhbWRncHVfc2dfZGlzcGxheSA9IC0xOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKg IMKgIE1PRFVMRV9QQVJNX0RFU0ModnJhbWxpbWl0LCAiUmVzdHJpY3QgVlJBTSBmb3IgdGVzdGlu ZywgaW4KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtZWdhYnl0ZXMiKTsKPj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCDCoCBtb2R1bGVfcGFyYW1fbmFtZWQodnJhbWxpbWl0LCBhbWRncHVfdnJh bV9saW1pdCwgaW50LCAwNjAwKTsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBAQCAtMjkwLDYg KzI5MSw5IEBAIG1vZHVsZV9wYXJhbV9uYW1lZChncHVfcmVjb3ZlcnksCj4+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgYW1kZ3B1X2dwdV9yZWNvdmVyeSwgaW50LCAwNDQ0KTsKPj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCDCoCBNT0RVTEVfUEFSTV9ERVNDKGVtdV9tb2RlLCAiRW11bGF0aW9uIG1v ZGUsICgxID0gZW5hYmxlLCAwID0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNhYmxlKSIp Owo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgIG1vZHVsZV9wYXJhbV9uYW1lZChlbXVfbW9k ZSwgYW1kZ3B1X2VtdV9tb2RlLCBpbnQsIDA0NDQpOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IMKgICtNT0RVTEVfUEFSTV9ERVNDKHNnX2Rpc3BsYXksICJFbmFibGUgc2NhdHRlciBnYXRoZXIK Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNwbGF5LCAoMSA9IGVuYWJsZSwgMCA9IGRpc2Fi bGUsIC0xID0gYXV0byIpOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICttb2R1bGVfcGFyYW1f bmFtZWQoc2dfZGlzcGxheSwgYW1kZ3B1X3NnX2Rpc3BsYXksIGludCwgMDQ0NCk7Cj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgKwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgICNpZmRlZiBD T05GSUdfRFJNX0FNREdQVV9TSQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgIMKgICNpZiBk ZWZpbmVkKENPTkZJR19EUk1fUkFERU9OKSB8fAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRl ZmluZWQoQ09ORklHX0RSTV9SQURFT05fTU9EVUxFKQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwo+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2ZiLmMKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpbmRleCAxMjA2MzAxLi5mNTdjMzU1IDEw MDY0NAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9mYi5jCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBAQCAtMTM4LDYgKzEzOCw4IEBAIHN0YXRpYyBpbnQKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBhbWRncHVmYl9jcmVhdGVfcGlubmVkX29iamVjdChzdHJ1Y3QgYW1kZ3B1X2ZiZGV2ICpyZmJk ZXYsCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgbW9kZV9jbWQtPnBpdGNo ZXNbMF0gPSBhbWRncHVfYWxpZ25fcGl0Y2goYWRldiwKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBtb2RlX2NtZC0+d2lkdGgsIGNwcCwKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBmYl90aWxl ZCk7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgZG9tYWluID0gYW1kZ3B1 X2Rpc3BsYXlfZnJhbWVidWZmZXJfZG9tYWlucyhhZGV2KTsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoCArwqAgwqAgwqAgwqBpZiAoZG9tYWluICYgQU1ER1BVX0dFTV9ET01BSU5fR1RUKQo+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoERSTV9ERUJVR19E UklWRVIoIlNjYXR0ZXIgZ2F0aGVyIGRpc3BsYXk6Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg ZW5hYmxlZFxuIik7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgaGVpZ2h0 ID0gQUxJR04obW9kZV9jbWQtPmhlaWdodCwgOCk7Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAg wqAgwqAgwqAgwqAgc2l6ZSA9IG1vZGVfY21kLT5waXRjaGVzWzBdICogaGVpZ2h0Owo+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqAgaW5kZXggNjhhYjMyNS4uN2U5ZjI0NyAxMDA2NDQKPj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2Rt L2FtZGdwdV9kbS5jCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgIEBAIC0zMDc0LDcgKzMwNzQsOCBAQCBzdGF0aWMgaW50Cj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgZG1fcGxhbmVfaGVscGVyX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZG9t YWluID0gQU1ER1BVX0dFTV9ET01BSU5fVlJBTTsKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCDC oCDCoCDCoCDCoCByID0gYW1kZ3B1X2JvX3BpbihyYm8sIGRvbWFpbiwgJmFmYi0+YWRkcmVzcyk7 Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICvC oCDCoCDCoCDCoHJiby0+cHJlZmVycmVkX2RvbWFpbnMgPSBkb21haW47Cj4+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgK8KgIMKgIMKgIMKgcmJvLT5hbGxvd2VkX2RvbWFpbnMgPSBkb21haW47Cj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgYW1kZ3B1X2JvX3VucmVzZXJ2ZShy Ym8pOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIMKgIMKgIMKgIMKgIGlmICh1bmxpa2VseShy ICE9IDApKSB7Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IMKgwqDCoMKgwqAgX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4+IMKgwqDCoMKgwqAgYW1kLWdm eCBtYWlsaW5nIGxpc3QKPj4+Pj4+IMKgwqDCoMKgwqAgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcgPG1haWx0bzphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4KPj4+Pj4+IMKgwqDC oMKgwqAgaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4Cj4+Pj4+PiDCoMKgwqDCoMKgIDxodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZng+Cj4+Pj4+Pgo+Pj4+Pj4KPiAKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==