From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [Intel-gfx] [PATCH 1/6] dma-buf: add dynamic DMA-buf handling v10 Date: Fri, 21 Jun 2019 11:55:53 +0200 Message-ID: <46bc08a3-1b84-c819-dbb5-882e95ab23e5@gmail.com> References: <20190618115455.1253-1-christian.koenig@amd.com> <20190621092022.GB12905@phenom.ffwll.local> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190621092022.GB12905-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Daniel Vetter Cc: intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: intel-gfx@lists.freedesktop.org QW0gMjEuMDYuMTkgdW0gMTE6MjAgc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIFR1ZSwgSnVu IDE4LCAyMDE5IGF0IDAxOjU0OjUwUE0gKzAyMDAsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+ IE9uIHRoZSBleHBvcnRlciBzaWRlIHdlIGFkZCBvcHRpb25hbCBleHBsaWNpdCBwaW5uaW5nIGNh bGxiYWNrcy4gSWYgdGhvc2UKPj4gY2FsbGJhY2tzIGFyZSBpbXBsZW1lbnRlZCB0aGUgZnJhbWV3 b3JrIG5vIGxvbmdlciBjYWNoZXMgc2cgdGFibGVzIGFuZCB0aGUKPj4gbWFwL3VubWFwIGNhbGxi YWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aXRoIHRoZSBsb2NrIG9mIHRoZSByZXNlcnZhdGlvbiBv YmplY3QKPj4gaGVsZC4KPj4KPj4gT24gdGhlIGltcG9ydGVyIHNpZGUgd2UgYWRkIGFuIG9wdGlv bmFsIGludmFsaWRhdGUgY2FsbGJhY2suIFRoaXMgY2FsbGJhY2sgaXMKPj4gdXNlZCBieSB0aGUg ZXhwb3J0ZXIgdG8gaW5mb3JtIHRoZSBpbXBvcnRlcnMgdGhhdCB0aGVpciBtYXBwaW5ncyBzaG91 bGQgYmUKPj4gZGVzdHJveWVkIGFzIHNvb24gYXMgcG9zc2libGUuCj4+Cj4+IFRoaXMgYWxsb3dz IHRoZSBleHBvcnRlciB0byBwcm92aWRlIHRoZSBtYXBwaW5ncyB3aXRob3V0IHRoZSBuZWVkIHRv IHBpbgo+PiB0aGUgYmFja2luZyBzdG9yZS4KPj4KPj4gdjI6IGRvbid0IHRyeSB0byBpbnZhbGlk YXRlIG1hcHBpbmdzIHdoZW4gdGhlIGNhbGxiYWNrIGlzIE5VTEwsCj4+ICAgICAgbG9jayB0aGUg cmVzZXJ2YXRpb24gb2JqIHdoaWxlIHVzaW5nIHRoZSBhdHRhY2htZW50cywKPj4gICAgICBhZGQg aGVscGVyIHRvIHNldCB0aGUgY2FsbGJhY2sKPj4gdjM6IG1vdmUgZmxhZyBmb3IgaW52YWxpZGF0 aW9uIHN1cHBvcnQgaW50byB0aGUgRE1BLWJ1ZiwKPj4gICAgICB1c2UgbmV3IGF0dGFjaF9pbmZv IHN0cnVjdHVyZSB0byBzZXQgdGhlIGNhbGxiYWNrCj4+IHY0OiB1c2UgaW1wb3J0ZXJfcHJpdiBm aWVsZCBpbnN0ZWFkIG9mIG1hbmdsaW5nIGV4cG9ydGVyIHByaXYuCj4+IHY1OiBkcm9wIGludmFs aWRhdGlvbl9zdXBwb3J0ZWQgZmxhZwo+PiB2Njogc3F1YXNoIHRvZ2V0aGVyIHdpdGggcGluL3Vu cGluIGNoYW5nZXMKPj4gdjc6IHBpbi91bnBpbiB0YWtlcyBhbiBhdHRhY2htZW50IG5vdwo+PiB2 ODogbnVrZSBkbWFfYnVmX2F0dGFjaG1lbnRfKG1hcHx1bm1hcClfbG9ja2VkLAo+PiAgICAgIGV2 ZXJ5dGhpbmcgaXMgbm93IGhhbmRsZWQgYmFja3dhcmQgY29tcGF0aWJsZQo+PiB2OTogYWx3YXlz IGNhY2hlIHdoZW4gZXhwb3J0L2ltcG9ydGVyIGRvbid0IGFncmVlIG9uIGR5bmFtaWMgaGFuZGxp bmcKPj4gdjEwOiBtaW5pbWFsIHN0eWxlIGNsZWFudXAKPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hy aXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+PiAtLS0KPj4gICBkcml2 ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIHwgMTg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tCj4+ICAgaW5jbHVkZS9saW51eC9kbWEtYnVmLmggICB8IDEwOSArKysrKysrKysr KysrKysrKysrKy0tCj4+ICAgMiBmaWxlcyBjaGFuZ2VkLCAyODMgaW5zZXJ0aW9ucygrKSwgMTQg ZGVsZXRpb25zKC0pCj4+Cj4+IFtTTklQXQo+PiArCWlmIChkbWFfYnVmX2F0dGFjaG1lbnRfaXNf ZHluYW1pYyhhdHRhY2gpKSB7Cj4+ICsJCXJlc2VydmF0aW9uX29iamVjdF9hc3NlcnRfaGVsZChh dHRhY2gtPmRtYWJ1Zi0+cmVzdik7Cj4+ICsKPj4gKwkJLyoKPj4gKwkJICogTWFwcGluZyBhIERN QS1idWYgY2FuIHRyaWdnZXIgaXRzIGludmFsaWRhdGlvbiwgcHJldmVudAo+PiArCQkgKiBzZW5k aW5nIHRoaXMgZXZlbnQgdG8gdGhlIGNhbGxlciBieSB0ZW1wb3JhcnkgcmVtb3ZpbmcKPj4gKwkJ ICogdGhpcyBhdHRhY2htZW50IGZyb20gdGhlIGxpc3QuCj4+ICsJCSAqLwo+PiArCQlsaXN0X2Rl bCgmYXR0YWNoLT5ub2RlKTsKPiBJJ20gc3RpbGwgaHVuZyB1cCBhYm91dCB0aGlzLCB0aGF0IHN0 aWxsIGZlZWxzIGxpa2UgbGVha2luZyByYW5kb20gdHRtCj4gaW1wbGVtZW50YXRpb24gZGV0YWls cyBpbnRvIHRoZSBkbWEtYnVmIGludGVyZmFjZXMuIEFuZCBpdCdzIGFzeW1tZXRyaWM6Cj4KPiAt IFdoZW4gYWNxdWlyaW5nIGEgYnVmZmVyIG1hcHBpbmcgKHdoZXRoZXIgcDJwIG9yIHN5c3RlbSBt ZW1vcnkgc2cgb3IKPiAgICB3aGF0ZXZlcikgd2UgYWx3YXlzIGhhdmUgdG8gd2FpdCBmb3IgcGVu ZGluZyBmZW5jZXMgYmVmb3JlIHdlIGNhbiBhY2Nlc3MKPiAgICB0aGUgYnVmZmVyLiBBdCBsZWFz dCBmb3IgZnVsbCBkeW5hbWljIGRtYS1idWYgYWNjZXNzLgo+Cj4gLSBTYW1lIGlzIHRydWUgd2hl biBkcm9wcGluZyBhIG1hcHBpbmc6IFdlIGNvdWxkIGRyb3AgdGhlIG1hcHBpbmcKPiAgICBpbW1l ZGlhdGVseSwgYnV0IG9ubHkgYWN0dWFsbHkgcmVsZWFzZSBpdCB3aGVuIHRoYXQgZmVuY2UgaGFz IHNpZ25hbGxlZC4KPiAgICBUaGVuIHRoaXMgaGFjayBoZXJlIHdvdWxkbid0IGJlIG5lY2Vzc2Fy eS4KPgo+IEl0IGZlZWxzIGEgYml0IGxpa2UgdGhpcyBpcyBqdXN0IGFuIGFydGlmYWN0IG9mIGhv dyB0dG0gY3VycmVudGx5IGRvZXMgYm8KPiBtb3ZlcyB3aXRoIHRoZSBzaGFkb3cgYm8uIFRoZXJl J3Mgb3RoZXIgd2F5cyB0byBmaXggdGhhdCwgeW91IGNvdWxkIGp1c3QKPiBoYXZlIGEgbWVtb3J5 IG1hbmFnZXIgcmVzZXJ2YXRpb24gb2YgYSBnaXZlbiByYW5nZSBvciB3aGF0ZXZlciBhbmQgYQo+ IHJlbGVhc2UgZmVuY2UgZnJvbSB3aGVuIGl0J3MgYWN0dWFsbHkgZ29vZCB0byB1c2UuCgpObywg dGhhdCBpcyBmb3IgaGFuZGxpbmcgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBjYXNlIDopCgo+Cj4g SW1vIHRoZSBiZWxvdyBzZW1hbnRpY3Mgd291bGQgYmUgbXVjaCBjbGVhbmVyOgo+Cj4gLSBpbnZh bGlkYXRlIG1heSBhZGQgbmV3IGZlbmNlcwo+IC0gaW52YWxpZGF0ZSBfbXVzdF8gdW5tYXAgaXRz IG1hcHBpbmdzCj4gLSBhbiB1bm1hcCBtdXN0IHdhaXQgZm9yIGN1cnJlbnQgZmVuY2VzIGJlZm9y ZSB0aGUgbWFwcGluZyBjYW4gYmUKPiAgICByZWxlYXNlZC4KPgo+IEltbyB0aGVyZSdzIG5vIHJl YXNvbiB3aHkgdW5tYXAgaXMgc3BlY2lhbCwgYW5kIHRoZSBvbmx5IHRoaW5nIHdoZXJlIHdlCj4g ZG9uJ3QgdXNlIGZlbmNlcyB0byBnYXRlIGFjY2VzcyB0byByZXNvdXJjZXMvbWVtb3J5IHdoZW4g aXQncyBpbiB0aGUKPiBwcm9jZXNzIG9mIGdldHRpbmcgbW92ZWQgYXJvdW5kLgoKV2VsbCBpbiBn ZW5lcmFsIEkgd2FudCB0byBhdm9pZCB3YWl0aW5nIGZvciBmZW5jZXMgYXMgbXVjaCBhcyBwb3Nz aWJsZS4gCkJ1dCB0aGUga2V5IHBvaW50IGhlcmUgaXMgdGhhdCB0aGlzIGFjdHVhbGx5IHdvbid0 IGhlbHAgd2l0aCB0aGUgcHJvYmxlbSAKSSdtIHRyeWluZyB0byBzb2x2ZS4KCj4gYnR3IHRoaXMg aXMgbGlrZSB0aGUgMm5kIG9yIDNyZCB0aW1lIEknbSB0eXBpbmcgdGhpcywgaGF2ZW4ndCBzZWVu IHlvdXIKPiB0aG91Z2h0cyBvbiB0aGlzIHlldC4KClllYWgsIGFuZCBJJ20gcmVzcG9uZGluZyBm b3IgdGhlIDNyZCB0aW1lIG5vdyB0aGF0IHlvdSBhcmUgCm1pc3VuZGVyc3RhbmRpbmcgd2h5IHdl IG5lZWQgdGhpcyBoZXJlIDopCgpNYXliZSBJIGNhbiBtYWtlIHRoYXQgY2xlYXIgd2l0aCBhbiBl eGFtcGxlOgoKMS4gWW91IGdvdCBhIHNoYXJpbmcgYmV0d2VlbiBkZXZpY2UgQSAoZXhwb3J0ZXIp IGFuZCBCIChpbXBvcnRlcikgd2hpY2ggCnVzZXMgUDJQLgoKMi4gTm93IGRldmljZSBDIChpbXBv cnRlcikgY29tZXMgYWxvbmcgYW5kIHdhbnRzIHRvIHVzZSB0aGUgRE1BLWJ1ZiAKb2JqZWN0IGFz IHdlbGwuCgozLiBUaGUgaGFuZGxpbmcgbm93IGZpZ3VyZXMgb3V0IHRoYXQgd2UgY2FuJ3QgZG8g UDJQIGJldHdlZW4gZGV2aWNlIEEgCmFuZCBkZXZpY2UgQyAoZm9yIHdoYXRldmVyIHJlYXNvbiku Cgo0LiBUaGUgbWFwX2F0dGFjaG1lbnQgaW1wbGVtZW50YXRpb24gaW4gZGV2aWNlIGRyaXZlciBB IGRvZXNuJ3Qgd2FudCB0byAKZmFpbCB3aXRoIC1FQlVTWSBhbmQgbWlncmF0ZXMgdGhlIERNQS1i dWYgc29tZXdoZXJlIHdoZXJlIGJvdGggZGV2aWNlIEEgCmFuZCBkZXZpY2UgQyBjYW4gYWNjZXNz IGl0LgoKNS4gVGhpcyBtaWdyYXRpb24gd2lsbCByZXN1bHQgaW4gc2VuZGluZyBhbiBpbnZhbGlk YXRpb24gZXZlbnQgYXJvdW5kLiAKQW5kIGhlcmUgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHNl bmQgdGhpcyBpbnZhbGlkYXRpb24gZXZlbnQgdG8gZGV2aWNlIApDLCBiZWNhdXNlIHdlIGtub3cg dGhhdCBkZXZpY2UgQyBpcyBhY3R1YWxseSBjYXVzaW5nIHRoaXMgZXZlbnQgYW5kIApkb2Vzbid0 IGhhdmUgYSB2YWxpZCBtYXBwaW5nLgoKCk9uZSBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byBjb21w bGV0ZWx5IGRpc2FsbG93IGJ1ZmZlciBtaWdyYXRpb24gd2hpY2ggCmNhbiBjYXVzZSBpbnZhbGlk YXRpb24gaW4gdGhlIGRyaXZlcnMgbWFwX2F0dGFjaG1lbnQgY2FsbC4gQnV0IHdpdGggCmR5bmFt aWMgaGFuZGxpbmcgeW91IGRlZmluaXRlbHkgbmVlZCB0byBiZSBhYmxlIHRvIG1pZ3JhdGUgaW4g dGhlIAptYXBfYXR0YWNobWVudCBjYWxsIGZvciBzd2FwcGluZyBldmljdGVkIHRoaW5ncyBiYWNr IGludG8gYSBwbGFjZSB3aGVyZSAKdGhleSBhcmUgYWNjZXNzaWJsZS4gU28gdGhhdCB3b3VsZCBt YWtlIGl0IGhhcmRlciBmb3IgZHJpdmVycyB0byBnZXQgaXQgCnJpZ2h0LgoKCkFub3RoZXIgYWx0 ZXJuYXRpdmUgKGFuZCB0aGF0J3Mgd2hhdCBJIGltcGxlbWVudGVkIGluaXRpYWxseSkgaXMgdG8g bWFrZSAKc3VyZSB0aGUgZHJpdmVyIGNhbGxpbmcgbWFwX2F0dGFjaG1lbnQgY2FuIGhhbmRsZSBp bnZhbGlkYXRpb24gZXZlbnRzIApyZS1lbnRlcmluZyBpdHNlbGYgd2hpbGUgZG9pbmcgc28uIEJ1 dCB0aGVuIHlvdSBhZGQgYW5vdGhlciB0cmlja3kgdGhpbmcgCmZvciBkcml2ZXJzIHRvIGhhbmRs ZSB3aGljaCBjb3VsZCBiZSBkb25lIGluIHRoZSBnZW5lcmFsIGNvZGUuCgoKVGhlIHJlYXNvbiBJ IGRvbid0IGhhdmUgdGhhdCBvbiB1bm1hcCBpcyB0aGF0IEkgdGhpbmsgbWlncmF0aW5nIHRoaW5n cyAKb24gdW5tYXAgZG9lc24ndCBtYWtlIHNlbnNlLiBJZiB5b3UgdGhpbmsgb3RoZXJ3aXNlIGl0 IGNlcnRhaW5seSBkb2VzIAptYWtlIHNlbnNlIHRvIGFkZCB0aGF0IHRoZXJlIGFzIHdlbGwuCgpT byB0aGlzIGlzIGp1c3QgdGhlIG1vc3QgZGVmZW5zaXZlIHRoaW5nIEkgd2FzIGFibGUgdG8gY29t ZSB1cCB3aXRoLCAKd2hpY2ggbGVhdmVzIHRoZSBsZWFzdCBwb3NzaWJpbGl0eSBmb3IgZHJpdmVy cyB0byBkbyBzb21ldGhpbmcgc3R1cGlkLgoKVGhhbmtzLApDaHJpc3RpYW4uCgo+Cj4gVGhhbmtz LCBEYW5pZWwKPgo+PiArCj4+ICsJfSBlbHNlIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNo LT5kbWFidWYpKSB7Cj4+ICsJCXJlc2VydmF0aW9uX29iamVjdF9sb2NrKGF0dGFjaC0+ZG1hYnVm LT5yZXN2LCBOVUxMKTsKPj4gKwkJciA9IGRtYV9idWZfcGluKGF0dGFjaCk7Cj4+ICsJCWlmIChy KSB7Cj4+ICsJCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2 KTsKPj4gKwkJCXJldHVybiBFUlJfUFRSKHIpOwo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICAgCXNn X3RhYmxlID0gYXR0YWNoLT5kbWFidWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNoLCBkaXJlY3Rp b24pOwo+PiAgIAlpZiAoIXNnX3RhYmxlKQo+PiAgIAkJc2dfdGFibGUgPSBFUlJfUFRSKC1FTk9N RU0pOwo+PiAgIAo+PiArCWlmIChkbWFfYnVmX2F0dGFjaG1lbnRfaXNfZHluYW1pYyhhdHRhY2gp KSB7Cj4+ICsJCWxpc3RfYWRkKCZhdHRhY2gtPm5vZGUsICZhdHRhY2gtPmRtYWJ1Zi0+YXR0YWNo bWVudHMpOwo+PiArCj4+ICsJfSBlbHNlIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5k bWFidWYpKSB7Cj4+ICsJCWlmIChJU19FUlIoc2dfdGFibGUpKQo+PiArCQkJZG1hX2J1Zl91bnBp bihhdHRhY2gpOwo+PiArCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGF0dGFjaC0+ZG1hYnVm LT5yZXN2KTsKPj4gKwl9Cj4+ICsKPj4gICAJaWYgKCFJU19FUlIoc2dfdGFibGUpICYmIGF0dGFj aC0+ZG1hYnVmLT5vcHMtPmNhY2hlX3NndF9tYXBwaW5nKSB7Cj4+ICAgCQlhdHRhY2gtPnNndCA9 IHNnX3RhYmxlOwo+PiAgIAkJYXR0YWNoLT5kaXIgPSBkaXJlY3Rpb247Cj4+IEBAIC04MDIsMTAg Kzk0NSw0MSBAQCB2b2lkIGRtYV9idWZfdW5tYXBfYXR0YWNobWVudChzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICphdHRhY2gsCj4+ICAgCWlmIChhdHRhY2gtPnNndCA9PSBzZ190YWJsZSkKPj4g ICAJCXJldHVybjsKPj4gICAKPj4gKwlpZiAoZG1hX2J1Zl9hdHRhY2htZW50X2lzX2R5bmFtaWMo YXR0YWNoKSkKPj4gKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2Fzc2VydF9oZWxkKGF0dGFjaC0+ZG1h YnVmLT5yZXN2KTsKPj4gKwllbHNlIGlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFi dWYpKQo+PiArCQlyZXNlcnZhdGlvbl9vYmplY3RfbG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdiwg TlVMTCk7Cj4+ICsKPj4gICAJYXR0YWNoLT5kbWFidWYtPm9wcy0+dW5tYXBfZG1hX2J1ZihhdHRh Y2gsIHNnX3RhYmxlLCBkaXJlY3Rpb24pOwo+PiArCj4+ICsJaWYgKGRtYV9idWZfaXNfZHluYW1p YyhhdHRhY2gtPmRtYWJ1ZikgJiYKPj4gKwkgICAgIWRtYV9idWZfYXR0YWNobWVudF9pc19keW5h bWljKGF0dGFjaCkpIHsKPj4gKwkJZG1hX2J1Zl91bnBpbihhdHRhY2gpOwo+PiArCQlyZXNlcnZh dGlvbl9vYmplY3RfdW5sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPj4gKwl9Cj4+ICAgfQo+ PiAgIEVYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfdW5tYXBfYXR0YWNobWVudCk7Cj4+ICAgCj4+ ICsvKioKPj4gKyAqIGRtYV9idWZfaW52YWxpZGF0ZV9tYXBwaW5ncyAtIGludmFsaWRhdGUgYWxs IG1hcHBpbmdzIG9mIHRoaXMgZG1hX2J1Zgo+PiArICoKPj4gKyAqIEBkbWFidWY6CVtpbl0JYnVm ZmVyIHdoaWNoIG1hcHBpbmdzIHNob3VsZCBiZSBpbnZhbGlkYXRlZAo+PiArICoKPj4gKyAqIElu Zm9ybXMgYWxsIGF0dGFjaG1lbnN0IHRoYXQgdGhleSBuZWVkIHRvIGRlc3Ryb3kgYW5kIHJlY3Jl YXRlZCBhbGwgdGhlaXIKPj4gKyAqIG1hcHBpbmdzLgo+PiArICovCj4+ICt2b2lkIGRtYV9idWZf aW52YWxpZGF0ZV9tYXBwaW5ncyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+PiArewo+PiArCXN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaDsKPj4gKwo+PiArCXJlc2VydmF0aW9uX29i amVjdF9hc3NlcnRfaGVsZChkbWFidWYtPnJlc3YpOwo+PiArCj4+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShhdHRhY2gsICZkbWFidWYtPmF0dGFjaG1lbnRzLCBub2RlKQo+PiArCQlpZiAoYXR0YWNo LT5pbXBvcnRlcl9vcHMgJiYgYXR0YWNoLT5pbXBvcnRlcl9vcHMtPmludmFsaWRhdGUpCj4+ICsJ CQlhdHRhY2gtPmltcG9ydGVyX29wcy0+aW52YWxpZGF0ZShhdHRhY2gpOwo+PiArfQo+PiArRVhQ T1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9pbnZhbGlkYXRlX21hcHBpbmdzKTsKPj4gKwo+PiAgIC8q Kgo+PiAgICAqIERPQzogY3B1IGFjY2Vzcwo+PiAgICAqCj4+IEBAIC0xMjI1LDEwICsxMzk5LDEy IEBAIHN0YXRpYyBpbnQgZG1hX2J1Zl9kZWJ1Z19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9p ZCAqdW51c2VkKQo+PiAgIAkJc2VxX3B1dHMocywgIlx0QXR0YWNoZWQgRGV2aWNlczpcbiIpOwo+ PiAgIAkJYXR0YWNoX2NvdW50ID0gMDsKPj4gICAKPj4gKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2xv Y2soYnVmX29iai0+cmVzdiwgTlVMTCk7Cj4+ICAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGF0dGFj aF9vYmosICZidWZfb2JqLT5hdHRhY2htZW50cywgbm9kZSkgewo+PiAgIAkJCXNlcV9wcmludGYo cywgIlx0JXNcbiIsIGRldl9uYW1lKGF0dGFjaF9vYmotPmRldikpOwo+PiAgIAkJCWF0dGFjaF9j b3VudCsrOwo+PiAgIAkJfQo+PiArCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGJ1Zl9vYmot PnJlc3YpOwo+PiAgIAo+PiAgIAkJc2VxX3ByaW50ZihzLCAiVG90YWwgJWQgZGV2aWNlcyBhdHRh Y2hlZFxuXG4iLAo+PiAgIAkJCQlhdHRhY2hfY291bnQpOwo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9kbWEtYnVmLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaAo+PiBpbmRleCAwMWFk NWI5NDJhNmYuLmY5Yzk2YmY1NmJjOCAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9saW51eC9kbWEt YnVmLmgKPj4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPj4gQEAgLTkyLDE0ICs5Miw0 MCBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewo+PiAgIAkgKi8KPj4gICAJdm9pZCAoKmRldGFjaCko c3RydWN0IGRtYV9idWYgKiwgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqKTsKPj4gICAKPj4g KwkvKioKPj4gKwkgKiBAcGluOgo+PiArCSAqCj4+ICsJICogVGhpcyBpcyBjYWxsZWQgYnkgZG1h X2J1Zl9waW4gYW5kIGxldHMgdGhlIGV4cG9ydGVyIGtub3cgdGhhdCB0aGUKPj4gKwkgKiBETUEt YnVmIGNhbid0IGJlIG1vdmVkIGFueSBtb3JlLgo+PiArCSAqCj4+ICsJICogVGhpcyBpcyBjYWxs ZWQgd2l0aCB0aGUgZG1hYnVmLT5yZXN2IG9iamVjdCBsb2NrZWQuCj4+ICsJICoKPj4gKwkgKiBU aGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLgo+PiArCSAqCj4+ICsJICogUmV0dXJuczoKPj4gKwkg Kgo+PiArCSAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ PiArCSAqLwo+PiArCWludCAoKnBpbikoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNo KTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIEB1bnBpbjoKPj4gKwkgKgo+PiArCSAqIFRoaXMgaXMg Y2FsbGVkIGJ5IGRtYV9idWZfdW5waW4gYW5kIGxldHMgdGhlIGV4cG9ydGVyIGtub3cgdGhhdCB0 aGUKPj4gKwkgKiBETUEtYnVmIGNhbiBiZSBtb3ZlZCBhZ2Fpbi4KPj4gKwkgKgo+PiArCSAqIFRo aXMgaXMgY2FsbGVkIHdpdGggdGhlIGRtYWJ1Zi0+cmVzdiBvYmplY3QgbG9ja2VkLgo+PiArCSAq Cj4+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4KPj4gKwkgKi8KPj4gKwl2b2lkICgq dW5waW4pKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCk7Cj4+ICsKPj4gICAJLyoq Cj4+ICAgCSAqIEBtYXBfZG1hX2J1ZjoKPj4gICAJICoKPj4gICAJICogVGhpcyBpcyBjYWxsZWQg YnkgZG1hX2J1Zl9tYXBfYXR0YWNobWVudCgpIGFuZCBpcyB1c2VkIHRvIG1hcCBhCj4+ICAgCSAq IHNoYXJlZCAmZG1hX2J1ZiBpbnRvIGRldmljZSBhZGRyZXNzIHNwYWNlLCBhbmQgaXQgaXMgbWFu ZGF0b3J5LiBJdAo+PiAtCSAqIGNhbiBvbmx5IGJlIGNhbGxlZCBpZiBAYXR0YWNoIGhhcyBiZWVu IGNhbGxlZCBzdWNjZXNzZnVsbHkuIFRoaXMKPj4gLQkgKiBlc3NlbnRpYWxseSBwaW5zIHRoZSBE TUEgYnVmZmVyIGludG8gcGxhY2UsIGFuZCBpdCBjYW5ub3QgYmUgbW92ZWQKPj4gLQkgKiBhbnkg bW9yZQo+PiArCSAqIGNhbiBvbmx5IGJlIGNhbGxlZCBpZiBAYXR0YWNoIGhhcyBiZWVuIGNhbGxl ZCBzdWNjZXNzZnVsbHkuCj4+ICAgCSAqCj4+ICAgCSAqIFRoaXMgY2FsbCBtYXkgc2xlZXAsIGUu Zy4gd2hlbiB0aGUgYmFja2luZyBzdG9yYWdlIGZpcnN0IG5lZWRzIHRvIGJlCj4+ICAgCSAqIGFs bG9jYXRlZCwgb3IgbW92ZWQgdG8gYSBsb2NhdGlvbiBzdWl0YWJsZSBmb3IgYWxsIGN1cnJlbnRs eSBhdHRhY2hlZAo+PiBAQCAtMTIwLDYgKzE0Niw5IEBAIHN0cnVjdCBkbWFfYnVmX29wcyB7Cj4+ ICAgCSAqIGFueSBvdGhlciBraW5kIG9mIHNoYXJpbmcgdGhhdCB0aGUgZXhwb3J0ZXIgbWlnaHQg d2lzaCB0byBtYWtlCj4+ICAgCSAqIGF2YWlsYWJsZSB0byBidWZmZXItdXNlcnMuCj4+ICAgCSAq Cj4+ICsJICogVGhpcyBpcyBhbHdheXMgY2FsbGVkIHdpdGggdGhlIGRtYWJ1Zi0+cmVzdiBvYmpl Y3QgbG9ja2VkIHdoZW4KPj4gKwkgKiB0aGUgcGluL3VucGluIGNhbGxiYWNrcyBhcmUgaW1wbGVt ZW50ZWQuCj4+ICsJICoKPj4gICAJICogUmV0dXJuczoKPj4gICAJICoKPj4gICAJICogQSAmc2df dGFibGUgc2NhdHRlciBsaXN0IG9mIG9yIHRoZSBiYWNraW5nIHN0b3JhZ2Ugb2YgdGhlIERNQSBi dWZmZXIsCj4+IEBAIC0xMzcsOSArMTY2LDYgQEAgc3RydWN0IGRtYV9idWZfb3BzIHsKPj4gICAJ ICoKPj4gICAJICogVGhpcyBpcyBjYWxsZWQgYnkgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KCkg YW5kIHNob3VsZCB1bm1hcCBhbmQKPj4gICAJICogcmVsZWFzZSB0aGUgJnNnX3RhYmxlIGFsbG9j YXRlZCBpbiBAbWFwX2RtYV9idWYsIGFuZCBpdCBpcyBtYW5kYXRvcnkuCj4+IC0JICogSXQgc2hv dWxkIGFsc28gdW5waW4gdGhlIGJhY2tpbmcgc3RvcmFnZSBpZiB0aGlzIGlzIHRoZSBsYXN0IG1h cHBpbmcKPj4gLQkgKiBvZiB0aGUgRE1BIGJ1ZmZlciwgaXQgdGhlIGV4cG9ydGVyIHN1cHBvcnRz IGJhY2tpbmcgc3RvcmFnZQo+PiAtCSAqIG1pZ3JhdGlvbi4KPj4gICAJICovCj4+ICAgCXZvaWQg KCp1bm1hcF9kbWFfYnVmKShzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICosCj4+ICAgCQkJICAg ICAgc3RydWN0IHNnX3RhYmxlICosCj4+IEBAIC0zMzAsNiArMzU2LDM1IEBAIHN0cnVjdCBkbWFf YnVmIHsKPj4gICAJfSBjYl9leGNsLCBjYl9zaGFyZWQ7Cj4+ICAgfTsKPj4gICAKPj4gKy8qKgo+ PiArICogc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyAtIGltcG9ydGVyIG9wZXJhdGlvbnMgZm9y IGFuIGF0dGFjaG1lbnQKPj4gKyAqIEBpbnZhbGlkYXRlOiBbb3B0aW9uYWxdIGludmFsaWRhdGUg YWxsIG1hcHBpbmdzIG1hZGUgdXNpbmcgdGhpcyBhdHRhY2htZW50Lgo+PiArICoKPj4gKyAqIEF0 dGFjaG1lbnQgb3BlcmF0aW9ucyBpbXBsZW1lbnRlZCBieSB0aGUgaW1wb3J0ZXIuCj4+ICsgKi8K Pj4gK3N0cnVjdCBkbWFfYnVmX2F0dGFjaF9vcHMgewo+PiArCS8qKgo+PiArCSAqIEBpbnZhbGlk YXRlOgo+PiArCSAqCj4+ICsJICogSWYgdGhlIGludmFsaWRhdGUgY2FsbGJhY2sgaXMgcHJvdmlk ZWQgdGhlIGZyYW1ld29yayBjYW4gYXZvaWQKPj4gKwkgKiBwaW5uaW5nIHRoZSBiYWNraW5nIHN0 b3JlIHdoaWxlIG1hcHBpbmdzIGV4aXN0cy4KPj4gKwkgKgo+PiArCSAqIFRoaXMgY2FsbGJhY2sg aXMgY2FsbGVkIHdpdGggdGhlIGxvY2sgb2YgdGhlIHJlc2VydmF0aW9uIG9iamVjdAo+PiArCSAq IGFzc29jaWF0ZWQgd2l0aCB0aGUgZG1hX2J1ZiBoZWxkIGFuZCB0aGUgbWFwcGluZyBmdW5jdGlv biBtdXN0IGJlCj4+ICsJICogY2FsbGVkIHdpdGggdGhpcyBsb2NrIGhlbGQgYXMgd2VsbC4gVGhp cyBtYWtlcyBzdXJlIHRoYXQgbm8gbWFwcGluZwo+PiArCSAqIGlzIGNyZWF0ZWQgY29uY3VycmVu dGx5IHdpdGggYW4gb25nb2luZyBpbnZhbGlkYXRpb24uCj4+ICsJICoKPj4gKwkgKiBBZnRlciB0 aGUgY2FsbGJhY2sgYWxsIGV4aXN0aW5nIG1hcHBpbmdzIGFyZSBzdGlsbCB2YWxpZCB1bnRpbCBh bGwKPj4gKwkgKiBmZW5jZXMgaW4gdGhlIGRtYV9idWZzIHJlc2VydmF0aW9uIG9iamVjdCBhcmUg c2lnbmFsZWQuIEFmdGVyIGdldHRpbmcgYW4KPj4gKwkgKiBpbnZhbGlkYXRpb24gY2FsbGJhY2sg YWxsIG1hcHBpbmdzIHNob3VsZCBiZSBkZXN0cm95ZWQgYnkgdGhlIGltcG9ydGVyIHVzaW5nCj4+ ICsJICogdGhlIG5vcm1hbCBkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoKSBmdW5jdGlvbiBhcyBz b29uIGFzIHBvc3NpYmxlLgo+PiArCSAqCj4+ICsJICogTmV3IG1hcHBpbmdzIGNhbiBiZSBjcmVh dGVkIGltbWVkaWF0ZWx5LCBidXQgY2FuJ3QgYmUgdXNlZCBiZWZvcmUgdGhlCj4+ICsJICogZXhj bHVzaXZlIGZlbmNlIGluIHRoZSBkbWFfYnVmcyByZXNlcnZhdGlvbiBvYmplY3QgaXMgc2lnbmFs ZWQuCj4+ICsJICovCj4+ICsJdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBkbWFfYnVmX2F0dGFj aG1lbnQgKmF0dGFjaCk7Cj4+ICt9Owo+PiArCj4+ICAgLyoqCj4+ICAgICogc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAtIGhvbGRzIGRldmljZS1idWZmZXIgYXR0YWNobWVudCBkYXRhCj4+ICAg ICogQGRtYWJ1ZjogYnVmZmVyIGZvciB0aGlzIGF0dGFjaG1lbnQuCj4+IEBAIC0zMzgsNiArMzkz LDggQEAgc3RydWN0IGRtYV9idWYgewo+PiAgICAqIEBzZ3Q6IGNhY2hlZCBtYXBwaW5nLgo+PiAg ICAqIEBkaXI6IGRpcmVjdGlvbiBvZiBjYWNoZWQgbWFwcGluZy4KPj4gICAgKiBAcHJpdjogZXhw b3J0ZXIgc3BlY2lmaWMgYXR0YWNobWVudCBkYXRhLgo+PiArICogQGltcG9ydGVyX29wczogaW1w b3J0ZXIgb3BlcmF0aW9ucyBmb3IgdGhpcyBhdHRhY2htZW50Lgo+PiArICogQGltcG9ydGVyX3By aXY6IGltcG9ydGVyIHNwZWNpZmljIGF0dGFjaG1lbnQgZGF0YS4KPj4gICAgKgo+PiAgICAqIFRo aXMgc3RydWN0dXJlIGhvbGRzIHRoZSBhdHRhY2htZW50IGluZm9ybWF0aW9uIGJldHdlZW4gdGhl IGRtYV9idWYgYnVmZmVyCj4+ICAgICogYW5kIGl0cyB1c2VyIGRldmljZShzKS4gVGhlIGxpc3Qg Y29udGFpbnMgb25lIGF0dGFjaG1lbnQgc3RydWN0IHBlciBkZXZpY2UKPj4gQEAgLTM1NSw2ICs0 MTIsOSBAQCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50IHsKPj4gICAJc3RydWN0IHNnX3RhYmxl ICpzZ3Q7Cj4+ICAgCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcjsKPj4gICAJdm9pZCAqcHJp djsKPj4gKwo+PiArCWNvbnN0IHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9vcHMgKmltcG9ydGVyX29w czsKPj4gKwl2b2lkICppbXBvcnRlcl9wcml2Owo+PiAgIH07Cj4+ICAgCj4+ICAgLyoqCj4+IEBA IC00MDUsMTAgKzQ2NSw0MiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0X2RtYV9idWYoc3RydWN0 IGRtYV9idWYgKmRtYWJ1ZikKPj4gICAJZ2V0X2ZpbGUoZG1hYnVmLT5maWxlKTsKPj4gICB9Cj4+ ICAgCj4+ICsvKioKPj4gKyAqIGRtYV9idWZfaXNfZHluYW1pYyAtIGNoZWNrIGlmIGEgRE1BLWJ1 ZiB1c2VzIGR5bmFtaWMgbWFwcGluZ3MuCj4+ICsgKiBAZG1hYnVmOiB0aGUgRE1BLWJ1ZiB0byBj aGVjawo+PiArICoKPj4gKyAqIFJldHVybnMgdHJ1ZSBpZiBhIERNQS1idWYgZXhwb3J0ZXIgd2Fu dHMgdG8gY3JlYXRlIGR5bmFtaWMgc2cgdGFibGUgbWFwcGluZ3MKPj4gKyAqIGZvciBlYWNoIGF0 dGFjaG1lbnQuIEZhbHNlIGlmIG9ubHkgYSBzaW5nbGUgc3RhdGljIHNnIHRhYmxlIHNob3VsZCBi ZSB1c2VkLgo+PiArICovCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZG1hX2J1Zl9pc19keW5hbWlj KHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCj4+ICt7Cj4+ICsJcmV0dXJuICEhZG1hYnVmLT5vcHMt PnBpbjsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBkbWFfYnVmX2F0dGFjaG1lbnRfaXNfZHlu YW1pYyAtIGNoZWNrIGlmIGEgRE1BLWJ1ZiBhdHRhY2htZW50IHVzZXMgZHluYW1pYwo+PiArICog bWFwcGluc2cKPj4gKyAqIEBhdHRhY2g6IHRoZSBETUEtYnVmIGF0dGFjaG1lbnQgdG8gY2hlY2sK Pj4gKyAqCj4+ICsgKiBSZXR1cm5zIHRydWUgaWYgYSBETUEtYnVmIGltcG9ydGVyIHdhbnRzIHRv IHVzZSBkeW5hbWljIHNnIHRhYmxlIG1hcHBpbmdzIGFuZAo+PiArICogY2FsbHMgdGhlIG1hcC91 bm1hcCBmdW5jdGlvbnMgd2l0aCB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0IGxvY2tlZC4KPj4gKyAq Lwo+PiArc3RhdGljIGlubGluZSBib29sCj4+ICtkbWFfYnVmX2F0dGFjaG1lbnRfaXNfZHluYW1p YyhzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4+ICt7Cj4+ICsJcmV0dXJuIGF0 dGFjaC0+aW1wb3J0ZXJfb3BzICYmIGF0dGFjaC0+aW1wb3J0ZXJfb3BzLT5pbnZhbGlkYXRlOwo+ PiArfQo+PiArCj4+ICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqZG1hX2J1Zl9hdHRhY2go c3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPj4gLQkJCQkJCQlzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ PiArCQkJCQkgIHN0cnVjdCBkZXZpY2UgKmRldik7Cj4+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2ht ZW50ICoKPj4gK2RtYV9idWZfZHluYW1pY19hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwg c3RydWN0IGRldmljZSAqZGV2LAo+PiArCQkgICAgICAgY29uc3Qgc3RydWN0IGRtYV9idWZfYXR0 YWNoX29wcyAqaW1wb3J0ZXJfb3BzLAo+PiArCQkgICAgICAgdm9pZCAqaW1wb3J0ZXJfcHJpdik7 Cj4+ICAgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+PiAtCQkJ CXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYWJ1Zl9hdHRhY2gpOwo+PiArCQkgICAgc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKTsKPj4gK2ludCBkbWFfYnVmX3BpbihzdHJ1 Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpOwo+PiArdm9pZCBkbWFfYnVmX3VucGluKHN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCk7Cj4+ICAgCj4+ICAgc3RydWN0IGRtYV9i dWYgKmRtYV9idWZfZXhwb3J0KGNvbnN0IHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvICpleHBf aW5mbyk7Cj4+ICAgCj4+IEBAIC00MjAsNiArNTEyLDcgQEAgc3RydWN0IHNnX3RhYmxlICpkbWFf YnVmX21hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwKPj4gICAJCQkJ CWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uKTsKPj4gICB2b2lkIGRtYV9idWZfdW5tYXBfYXR0YWNo bWVudChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICosIHN0cnVjdCBzZ190YWJsZSAqLAo+PiAg IAkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Cj4+ICt2b2lkIGRtYV9idWZfaW52YWxpZGF0 ZV9tYXBwaW5ncyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zik7Cj4+ICAgaW50IGRtYV9idWZfYmVn aW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPj4gICAJCQkgICAgIGVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7Cj4+ICAgaW50IGRtYV9idWZfZW5kX2NwdV9hY2Nlc3Mo c3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4+IC0tIAo+PiAyLjE3LjEKPj4KPj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=