From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v5 14/19] drm: writeback: Add job prepare and cleanup operations Date: Fri, 22 Feb 2019 16:49:53 +0200 Message-ID: <20190222144953.GC5020@pendragon.ideasonboard.com> References: <20190221103212.28764-1-laurent.pinchart+renesas@ideasonboard.com> <20190221103212.28764-15-laurent.pinchart+renesas@ideasonboard.com> <20190221181203.u3da7csxpikym5xv@DESKTOP-E1NTVVP.localdomain> <20190221221200.GC3485@pendragon.ideasonboard.com> <20190222135003.tuipz7gomt7mvdki@DESKTOP-E1NTVVP.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4FBF0895E7 for ; Fri, 22 Feb 2019 14:49:59 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190222135003.tuipz7gomt7mvdki@DESKTOP-E1NTVVP.localdomain> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Brian Starkey Cc: Laurent Pinchart , Liviu Dudau , Kieran Bingham , "dri-devel@lists.freedesktop.org" , "james qian wang (Arm Technology China)" , nd List-Id: dri-devel@lists.freedesktop.org SGkgQnJpYW4sCgpPbiBGcmksIEZlYiAyMiwgMjAxOSBhdCAwMTo1MDowMVBNICswMDAwLCBCcmlh biBTdGFya2V5IHdyb3RlOgo+IE9uIEZyaSwgRmViIDIyLCAyMDE5IGF0IDEyOjEyOjAwQU0gKzAy MDAsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiBPbiBUaHUsIEZlYiAyMSwgMjAxOSBhdCAw NjoxMjowM1BNICswMDAwLCBCcmlhbiBTdGFya2V5IHdyb3RlOgo+ID4+IE9uIFRodSwgRmViIDIx LCAyMDE5IGF0IDEyOjMyOjA3UE0gKzAyMDAsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPj4+ IEFzIHdyaXRlYmFjayBqb2JzIGNvbnRhaW4gYSBmcmFtZWJ1ZmZlciwgZHJpdmVycyBtYXkgbmVl ZCB0byBwcmVwYXJlIGFuZAo+ID4+PiBjbGVhbnVwIHRoZW0gdGhlIHNhbWUgd2F5IHRoZXkgY2Fu IHByZXBhcmUgYW5kIGNsZWFudXAgZnJhbWVidWZmZXJzIGZvcgo+ID4+PiBwbGFuZXMuIEFkZCB0 d28gbmV3IG9wdGlvbmFsIGNvbm5lY3RvciBoZWxwZXIgb3BlcmF0aW9ucywKPiA+Pj4gLnByZXBh cmVfd3JpdGViYWNrX2pvYigpIGFuZCAuY2xlYW51cF93cml0ZWJhY2tfam9iKCkgdG8gc3VwcG9y dCB0aGlzLgo+ID4+PiAKPiA+Pj4gVGhlIGpvYiBwcmVwYXJlIG9wZXJhdGlvbiBpcyBjYWxsZWQg ZnJvbQo+ID4+PiBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcygpIHRvIGF2b2lkIGEg bmV3IGF0b21pYyBjb21taXQgaGVscGVyCj4gPj4+IHRoYXQgd291bGQgbmVlZCB0byBiZSBjYWxs ZWQgYnkgYWxsIGRyaXZlcnMgbm90IHVzaW5nCj4gPj4+IGRybV9hdG9taWNfaGVscGVyX2NvbW1p dCgpLiBUaGUgam9iIGNsZWFudXAgb3BlcmF0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZQo+ID4+PiBl eGlzdGluZyBkcm1fd3JpdGViYWNrX2NsZWFudXBfam9iKCkgZnVuY3Rpb24sIGludm9rZWQgYm90 aCB3aGVuCj4gPj4+IGRlc3Ryb3lpbmcgdGhlIGpvYiBhcyBwYXJ0IG9mIGEgYWJvcnRlZCBjb21t aXQsIG9yIHdoZW4gdGhlIGpvYgo+ID4+PiBjb21wbGV0ZXMuCj4gPj4+IAo+ID4+PiBUaGUgZHJt X3dyaXRlYmFja19qb2Igc3RydWN0dXJlIGlzIGV4dGVuZGVkIHdpdGggYSBwcml2IGZpZWxkIHRv IGxldAo+ID4+PiBkcml2ZXJzIHN0b3JlIHBlci1qb2IgZGF0YSwgc3VjaCBhcyBtYXBwaW5ncyBy ZWxhdGVkIHRvIHRoZSB3cml0ZWJhY2sKPiA+Pj4gZnJhbWVidWZmZXIuCj4gPj4+IAo+ID4+PiBG b3IgaW50ZXJuYWwgcGx1bWJpbmcgcmVhc29ucyB0aGUgZHJtX3dyaXRlYmFja19qb2Igc3RydWN0 dXJlIG5lZWRzIHRvCj4gPj4+IHN0b3JlIGEgYmFjay1wb2ludGVyIHRvIHRoZSBkcm1fd3JpdGVi YWNrX2Nvbm5lY3Rvci4gVG8gYXZvaWQgcHVzaGluZwo+ID4+PiB0b28gbXVjaCB3cml0ZWJhY2st c3BlY2lmaWMga25vd2xlZGdlIHRvIGRybV9hdG9taWNfdWFwaS5jLCBjcmVhdGUgYQo+ID4+PiBk cm1fd3JpdGViYWNrX3NldF9mYigpIGZ1bmN0aW9uLCBtb3ZlIHRoZSB3cml0ZWJhY2sgam9iIHNl dHVwIGNvZGUKPiA+Pj4gdGhlcmUsIGFuZCBzZXQgdGhlIGNvbm5lY3RvciBiYWNrcG9pbnRlci4g VGhlIHByZXBhcmVfc2lnbmFsaW5nKCkKPiA+Pj4gZnVuY3Rpb24gZG9lc24ndCBuZWVkIHRvIGFs bG9jYXRlIHdyaXRlYmFjayBqb2JzIGFuZCBjYW4gaWdub3JlCj4gPj4+IGNvbm5lY3RvcnMgd2l0 aG91dCBhIGpvYiwgYXMgaXQgaXMgY2FsbGVkIGFmdGVyIHRoZSB3cml0ZWJhY2sgam9icyBhcmUK PiA+Pj4gYWxsb2NhdGVkIHRvIHN0b3JlIGZyYW1lYnVmZmVycywgYW5kIGEgd3JpdGViYWNrIGZl bmNlIHdpdGggYQo+ID4+PiBmcmFtZWJ1ZmZlciBpcyBhbiBpbnZhbGlkIGNvbmZpZ3VyYXRpb24g dGhhdCBnZXRzIHJlamVjdGVkIGJ5IHRoZSBjb21taXQKPiA+Pj4gY2hlY2suCj4gPj4+IAo+ID4+ PiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0K3JlbmVz YXNAaWRlYXNvbmJvYXJkLmNvbT4KPiA+PiAKPiA+PiBJIHByb2JhYmx5IG5lZWQgdG8gcmV2aXNp dCB0aGlzIHdpdGggZnJlc2ggZXllcyB0b21vcnJvdywgYnV0IGhvdyBjb21lCj4gPj4gdGhlIHBy ZXBhcmVkLW5lc3MgYW5kIHdoYXRldmVyIGlzIGJlaW5nIHByZXBhcmVkIGNhbid0IGJlIHB1dCBp bnRvIGEKPiA+PiBzdWJjbGFzc2VkIGZyYW1lYnVmZmVyPyBUaGF0IHNlZW1zIG1vcmUgbmF0dXJh bCB0byBtZSwgdGhhbiB0cmFja2luZwo+ID4+IGl0IHdpdGggdGhlIGpvYi4gSXQncyByZWFsbHkg dGhlIGZyYW1lYnVmZmVyIHdlJ3JlIHByZXBhcmluZyBhZnRlcgo+ID4+IGFsbC4KPiA+IAo+ID4g SW4gbXkgcGF0Y2ggc2VyaWVzIEkgaW5kZWVkIG5lZWQgdG8gdHJhY2sgaW5mb3JtYXRpb24gcmVs YXRlZCB0byB0aGUKPiA+IGZyYW1lYnVmZmVyIG9ubHksIGJ1dCBpcyBpdCBhIGdvb2QgaWRlYSB0 byBsaW1pdCB3cml0ZWJhY2sKPiA+IHByZXBhcmUvY2xlYW51cCB0byB0aGF0ID8gT3RoZXIgZHJp dmVycyBtYXkgaGF2ZSBkaWZmZXJlbnQgbmVlZHMuCj4gCj4gSU1PIGJldHRlciB0byB3cml0ZSB0 aGUgY29kZSBmb3IgdGhlIGNhc2Ugd2Uga25vdywgcmF0aGVyIHRoYW4KPiBzcGVjdWxhdGUuCj4g Cj4gPiBGdXJ0aGVybW9yZSwgdGhlIG1hcHBpbmcgbmVlZHMgdG8gZXhpc3QgZm9yIHRoZSBsaWZl dGltZSBvZiB0aGUKPiA+IHdyaXRlYmFjayBqb2IsIHNvIEknZCBoYXZlIHRvIGFkZCBhIGNvdW50 ZXIgdG8gdGhlIGZyYW1lYnVmZmVyIHN1YmNsYXNzCj4gPiB0byB0cmFjayB0aGVzZSB0b28uIFdo aWxlIGRvYWJsZSwgaXQgc3RhcnRzIHNvdW5kaW5nIGEgYml0IGxpa2UgYSBoYWNrLAo+ID4gYW5k IG1heSBjcmVhdGUgcmFjZSBjb25kaXRpb25zLgo+IAo+IFlvdSdyZSBwcm9iYWJseSByaWdodC4g QXMgeW91IHdlcmUgc2F5aW5nIHRvIERhbmllbCAtIHdyaXRlYmFjayB0aGluZ3MKPiBkb24ndCBo YXZlIHRoZSBzYW1lIGxpZmV0aW1lIGFzIHRoZSBzdGF0ZSwgc28gdGhlIGpvYiBpcyB0aGUgb25s eQo+IHBsYWNlIHRvIHN0b3JlIHRoaW5ncyB3aGljaCB3b3VsZCBub3JtYWxseSBnbyBpbiB0aGUg c3RhdGUuCj4gCj4gPj4gSSBndWVzcyBpZiB5b3UgaGF2ZSB0aGUgc2FtZSBmcmFtZWJ1ZmZlciBp biB1c2UgZm9yIG11bHRpcGxlIHRoaW5ncywKPiA+PiB5b3UgbWlnaHQgbmVlZCB0byB0cmFjayBp dCBzZXBhcmF0ZWx5PyBDYW4gdGhlIG1hcHBpbmdzIGJlIHNoYXJlZCBpbgo+ID4+IHRoYXQgY2Fz ZT8KPiA+IAo+ID4gU3BlYWtpbmcgYWJvdXQgbXkgY2FzZSwgdGhlIG1hcHBpbmcgaXMgcGVyLUNS VEMsIHNvIGlmIEkgdXNlIHRoZSBzYW1lCj4gPiBmcmFtZWJ1ZmZlciBmb3IgbXVsdGlwbGUgQ1JU Q3MgSSdkIG5lZWQgc2VwYXJhdGUgbWFwcGluZ3MuIE90aGVyIGRyaXZlcnMKPiA+IG1heSBoYXZl IHNpbXBsZXIgb3IgbW9yZSBjb21wbGV4IG5lZWRzLgo+ID4gCj4gPiBXaGVuIHlvdSdsbCByZXZp c2l0IHRoaXMgd2l0aCBmcmVzaCBleWVzLCBJJ2QgbGlrZSB0byBrbm93IGlmIHlvdSB0aGluawo+ ID4gaXQgd291bGQgYmUgd29ydGggaXQgcmVwbGFjaW5nIHRoZSBwcml2IHBvaW50ZXIgd2l0aCBh bGxvY2F0ZS9kZXN0cm95Cj4gPiBvcGVyYXRpb25zIHRvIGFsbG93IHN1YmNsYXNzaW5nIHRoZSB3 cml0ZWJhY2sgam9iLiBXZSBjb3VsZCBwb3NzaWJseSBkbwo+ID4gd2l0aG91dCB0aGUgZGVzdHJv eSBvcGVyYXRpb24gaWYgd2UgbWFuZGF0ZSBlbWJlZGRpbmcgdGhlIHdyaXRlYmFjayBqb2IKPiA+ IGFzIHRoZSBmaXJzdCBmaWVsZCBvZiB0aGUgc3ViY2xhc3MgYW5kIHVzYWdlIG9mIGttYWxsb2Mg KCYgZnJpZW5kcykgdG8KPiA+IGFsbG9jYXRlIHRoZSBzdWJjbGFzcyBzdHJ1Y3R1cmUuIFdlIGNv dWxkIGV2ZW4gZG8gd2l0aG91dCB0aGUgYWxsb2NhdGUKPiA+IG9wZXJhdGlvbiBpZiB3ZSBqdXN0 IHN0b3JlZCB0aGUgc2l6ZSBvZiB0aGUgc3ViY2xhc3MgaW4gdGhlIHdyaXRlYmFjawo+ID4gY29u bmVjdG9yIGl0c2VsZiwgYnV0IHRoYXQgd291bGQgZGVwYXJ0IGZyb20gd2hhdCB3ZSB1c3VhbGx5 IGRvIGluIERSTS4KPiAKPiBJIHRoaW5rIGVuYWJsaW5nIHRoZSBqb2IgdG8gYmUgc3ViY2xhc3Nl ZCB3b3VsZCBiZSBhIGZpbmUgc29sdXRpb24sCj4gd2l0aCBmdW5jdGlvbnMgd2hpY2ggYXJlIGFz IGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBvdGhlciBEUk0KPiBvYmplY3RzLgo+IAo+IEknbSBu b3Qgc3VyZSB0aGVyZSdzIGEgbG90IG9mIGFkdmFudGFnZSBpbiBza2lwcGluZyBhbGxvY2F0ZS9k ZXN0cm95Owo+IGl0IHNob3VsZCBiZSBmaW5lIHRvIGp1c3QgaGF2ZSBoZWxwZXJzIGZvciB0aGUg Y29tbW9uIGNhc2UuCj4gCj4gSSB3b25kZXIgaWYgcmVuYW1pbmcgaXQgdG8gIndyaXRlYmFja19z dGF0ZSIgaW5zdGVhZCBvZgo+ICJ3cml0ZWJhY2tfam9iIiBpcyB0b28gY29uZnVzaW5nIChiZWNh dXNlIGl0IGRvZXNuJ3QgX3F1aXRlXyBhY3QgbGlrZQo+IHRoZSBvdGhlciBzdGF0ZXMsIGV2ZW4g dGhvdWdoIGl0cyBwdXJwb3NlIGlzIHZlcnkgc2ltaWxhcikuCgpJJ2Qga2VlcCBqb2IsIGFzIGl0 IHdvcmtzIGEgYml0IGRpZmZlcmVudGx5IGZyb20gc3RhdGVzLgoKPiA+IEkgd291bGQgYWxzbyBs aWtlIHRvIGtub3cgaWYgSSBzaG91bGQgY3JlYXRlIGEgd3JpdGViYWNrIGNvbm5lY3Rvcgo+ID4g b3BlcmF0aW9ucyBzdHJ1Y3R1cmUgdG8gc3RvcmUgdGhlIHByZXBhcmUvY2xlYW51cCBhbmQgcGVy aGFwcwo+ID4gYWxsb2NhdGUvZGVzdHJveSBvcGVyYXRpb25zIGluc3RlYWQgb2YgYWRkaW5nIHRo ZW0gdG8gdGhlIGNvbm5lY3Rvcgo+ID4gaGVscGVyIGZ1bmNzLgo+IAo+IEkgdGhpbmsganVzdCBh ZGRpbmcgdGhlIGZ1bmN0aW9ucyB0byB0aGUgZXhpc3RpbmcgY29ubmVjdG9yCj4gb3BlcmF0aW9u cyBpcyBvdmVyYWxsIGxlc3MgY2x1dHRlciwgYnV0IEkgZG9uJ3QgbWluZCBlaXRoZXIgd2F5LgoK VGhhdCB3b3VsZCBiZSB0aGUgY29ubmVjdG9yIGhlbHBlciBmdW5jdGlvbnMsIG5vdCB0aGUgY29u bmVjdG9yCmZ1bmN0aW9ucywgcmlnaHQgPwoKRGFuaWVsLCBkbyB5b3UgaGF2ZSBhIHByZWZlcmVu Y2UgPwoKPiA+Pj4gLS0tCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu YyAgICAgIHwgMTEgKysrKysrCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBp LmMgICAgICAgIHwgMzEgKysrKystLS0tLS0tLS0tLS0KPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9k cm1fd3JpdGViYWNrLmMgICAgICAgICAgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysKPiA+ Pj4gIGluY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmggfCAgNyArKysrCj4g Pj4+ICBpbmNsdWRlL2RybS9kcm1fd3JpdGViYWNrLmggICAgICAgICAgICAgIHwgMjggKysrKysr KysrKysrKystCj4gPj4+ICA1IGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDI0IGRl bGV0aW9ucygtKQo+ID4+PiAKPiA+Pj4gVGhpcyBwYXRjaCBpcyBjdXJyZW50bHkgbWlzc2luZyBk b2N1bWVudGF0aW9uIGZvciB0aGUKPiA+Pj4gLnByZXBhcmVfd3JpdGViYWNrX2pvYigpIGFuZCAu Y2xlYW51cF93cml0ZWJhY2tfam9iKCkgb3BlcmF0aW9ucy4gSSBwbGFuCj4gPj4+IHRvIGZpeCB0 aGlzLCBidXQgZmlyc3Qgd2FudGVkIGZlZWRiYWNrIG9uIHRoZSBkaXJlY3Rpb24gdGFrZW4uIEkn bSBub3QKPiA+Pj4gZW50aXJlbHkgaGFwcHkgd2l0aCB0aGUgcHJpdiBwb2ludGVyIGluIHRoZSBk cm1fd3JpdGViYWNrX2pvYiBzdHJ1Y3R1cmUsCj4gPj4+IGJ1dCBhZGRpbmcgYSBmdWxsIHN0YXRl IGR1cGxpY2F0ZS9kZXN0cm95IG1hY2hpbmVyeSBmb3IgdGhhdCBzdHJ1Y3R1cmUKPiA+Pj4gd2Fz IGVxdWFsbHkgdW5hcHBlYWxpbmcgdG8gbWUuCj4gPj4+IAo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0 b21pY19oZWxwZXIuYwo+ID4+PiBpbmRleCA2ZmUyMzAzZmNjZDkuLjcwYTQ4ODZjNmU2NSAxMDA2 NDQKPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+Pj4gQEAgLTIyNDUs MTAgKzIyNDUsMjEgQEAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfY2xl YW51cF9kb25lKTsKPiA+Pj4gIGludCBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+PiAgCQkJCSAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ID4+PiAgewo+ID4+PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3I7Cj4gPj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRl Owo+ID4+PiAgCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4+PiAgCXN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZTsKPiA+Pj4gIAlpbnQgcmV0LCBpLCBqOwo+ID4+PiAg Cj4gPj4+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9y LCBuZXdfY29ubl9zdGF0ZSwgaSkgewo+ID4+PiArCQlpZiAoIW5ld19jb25uX3N0YXRlLT53cml0 ZWJhY2tfam9iKQo+ID4+PiArCQkJY29udGludWU7Cj4gPj4+ICsKPiA+Pj4gKwkJcmV0ID0gZHJt X3dyaXRlYmFja19wcmVwYXJlX2pvYihuZXdfY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYik7Cj4g Pj4+ICsJCWlmIChyZXQgPCAwKQo+ID4+PiArCQkJcmV0dXJuIHJldDsKPiA+Pj4gKwl9Cj4gPj4+ ICsKPiA+Pj4gIAlmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBuZXdf cGxhbmVfc3RhdGUsIGkpIHsKPiA+Pj4gIAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJf ZnVuY3MgKmZ1bmNzOwo+ID4+PiAgCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY191YXBpLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKPiA+ Pj4gaW5kZXggYzQwODg5ODg4YTE2Li5lODAyMTUyYTAxYWQgMTAwNjQ0Cj4gPj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pY191YXBpLmMKPiA+Pj4gQEAgLTY0NywyOCArNjQ3LDE1IEBAIGRybV9hdG9t aWNfcGxhbmVfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4+PiAgCXJl dHVybiAwOwo+ID4+PiAgfQo+ID4+PiAgCj4gPj4+IC1zdGF0aWMgc3RydWN0IGRybV93cml0ZWJh Y2tfam9iICoKPiA+Pj4gLWRybV9hdG9taWNfZ2V0X3dyaXRlYmFja19qb2Ioc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPj4+IC17Cj4gPj4+IC0JV0FSTl9PTihjb25u X3N0YXRlLT5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9X UklURUJBQ0spOwo+ID4+PiAtCj4gPj4+IC0JaWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9i KQo+ID4+PiAtCQljb25uX3N0YXRlLT53cml0ZWJhY2tfam9iID0KPiA+Pj4gLQkJCWt6YWxsb2Mo c2l6ZW9mKCpjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iKSwgR0ZQX0tFUk5FTCk7Cj4gPj4+IC0K PiA+Pj4gLQlyZXR1cm4gY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYjsKPiA+Pj4gLX0KPiA+Pj4g LQo+ID4+PiAgc3RhdGljIGludCBkcm1fYXRvbWljX3NldF93cml0ZWJhY2tfZmJfZm9yX2Nvbm5l Y3RvcigKPiA+Pj4gIAkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4g Pj4+ICAJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+ID4+PiAgewo+ID4+PiAtCXN0cnVj dCBkcm1fd3JpdGViYWNrX2pvYiAqam9iID0KPiA+Pj4gLQkJZHJtX2F0b21pY19nZXRfd3JpdGVi YWNrX2pvYihjb25uX3N0YXRlKTsKPiA+Pj4gLQlpZiAoIWpvYikKPiA+Pj4gLQkJcmV0dXJuIC1F Tk9NRU07Cj4gPj4+ICsJaW50IHJldDsKPiA+Pj4gIAo+ID4+PiAtCWRybV9mcmFtZWJ1ZmZlcl9h c3NpZ24oJmpvYi0+ZmIsIGZiKTsKPiA+Pj4gKwlyZXQgPSBkcm1fd3JpdGViYWNrX3NldF9mYihj b25uX3N0YXRlLCBmYik7Cj4gPj4+ICsJaWYgKHJldCA8IDApCj4gPj4+ICsJCXJldHVybiByZXQ7 Cj4gPj4+ICAKPiA+Pj4gIAlpZiAoZmIpCj4gPj4+ICAJCURSTV9ERUJVR19BVE9NSUMoIlNldCBb RkI6JWRdIGZvciBjb25uZWN0b3Igc3RhdGUgJXBcbiIsCj4gPj4+IEBAIC0xMTU4LDE5ICsxMTQ1 LDE3IEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9zaWduYWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiA+Pj4gIAo+ID4+PiAgCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUs IGNvbm4sIGNvbm5fc3RhdGUsIGkpIHsKPiA+Pj4gIAkJc3RydWN0IGRybV93cml0ZWJhY2tfY29u bmVjdG9yICp3Yl9jb25uOwo+ID4+PiAtCQlzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYjsK PiA+Pj4gIAkJc3RydWN0IGRybV9vdXRfZmVuY2Vfc3RhdGUgKmY7Cj4gPj4+ICAJCXN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlOwo+ID4+PiAgCQlzMzIgX191c2VyICpmZW5jZV9wdHI7Cj4gPj4+ICAK PiA+Pj4gKwkJaWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iKQo+ID4+PiArCQkJY29udGlu dWU7Cj4gPj4+ICsKPiA+Pj4gIAkJZmVuY2VfcHRyID0gZ2V0X291dF9mZW5jZV9mb3JfY29ubmVj dG9yKHN0YXRlLCBjb25uKTsKPiA+Pj4gIAkJaWYgKCFmZW5jZV9wdHIpCj4gPj4+ICAJCQljb250 aW51ZTsKPiA+Pj4gIAo+ID4+PiAtCQlqb2IgPSBkcm1fYXRvbWljX2dldF93cml0ZWJhY2tfam9i KGNvbm5fc3RhdGUpOwo+ID4+PiAtCQlpZiAoIWpvYikKPiA+Pj4gLQkJCXJldHVybiAtRU5PTUVN Owo+ID4+PiAtCj4gPj4+ICAJCWYgPSBrcmVhbGxvYygqZmVuY2Vfc3RhdGUsIHNpemVvZigqKmZl bmNlX3N0YXRlKSAqCj4gPj4+ICAJCQkgICAgICgqbnVtX2ZlbmNlcyArIDEpLCBHRlBfS0VSTkVM KTsKPiA+Pj4gIAkJaWYgKCFmKQo+ID4+PiBAQCAtMTE5Miw3ICsxMTc3LDcgQEAgc3RhdGljIGlu dCBwcmVwYXJlX3NpZ25hbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+PiAgCQkJcmV0 dXJuIHJldDsKPiA+Pj4gIAkJfQo+ID4+PiAgCj4gPj4+IC0JCWpvYi0+b3V0X2ZlbmNlID0gZmVu Y2U7Cj4gPj4+ICsJCWNvbm5fc3RhdGUtPndyaXRlYmFja19qb2ItPm91dF9mZW5jZSA9IGZlbmNl Owo+ID4+PiAgCX0KPiA+Pj4gIAo+ID4+PiAgCS8qCj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX3dyaXRlYmFjay5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2su Ywo+ID4+PiBpbmRleCBhZmIxYWU2ZTBlY2IuLjQ2NzhkNjFkNjM0YSAxMDA2NDQKPiA+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV93cml0ZWJhY2suYwo+ID4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX3dyaXRlYmFjay5jCj4gPj4+IEBAIC0yMzksNiArMjM5LDQyIEBAIGludCBkcm1f d3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPj4+ICB9 Cj4gPj4+ICBFWFBPUlRfU1lNQk9MKGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQpOwo+ID4+ PiAgCj4gPj4+ICtpbnQgZHJtX3dyaXRlYmFja19zZXRfZmIoc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUsCj4gPj4+ICsJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIp Cj4gPj4+ICt7Cj4gPj4+ICsJV0FSTl9PTihjb25uX3N0YXRlLT5jb25uZWN0b3ItPmNvbm5lY3Rv cl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spOwo+ID4+PiArCj4gPj4+ICsJ aWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iKSB7Cj4gPj4+ICsJCWNvbm5fc3RhdGUtPndy aXRlYmFja19qb2IgPQo+ID4+PiArCQkJa3phbGxvYyhzaXplb2YoKmNvbm5fc3RhdGUtPndyaXRl YmFja19qb2IpLCBHRlBfS0VSTkVMKTsKPiA+Pj4gKwkJaWYgKCFjb25uX3N0YXRlLT53cml0ZWJh Y2tfam9iKQo+ID4+PiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gPj4+ICsKPiA+Pj4gKwkJY29ubl9z dGF0ZS0+d3JpdGViYWNrX2pvYi0+Y29ubmVjdG9yID0KPiA+Pj4gKwkJCWRybV9jb25uZWN0b3Jf dG9fd3JpdGViYWNrKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gPj4+ICsJfQo+ID4+PiArCj4g Pj4+ICsJZHJtX2ZyYW1lYnVmZmVyX2Fzc2lnbigmY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYi0+ ZmIsIGZiKTsKPiA+Pj4gKwlyZXR1cm4gMDsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAraW50IGRy bV93cml0ZWJhY2tfcHJlcGFyZV9qb2Ioc3RydWN0IGRybV93cml0ZWJhY2tfam9iICpqb2IpCj4g Pj4+ICt7Cj4gPj4+ICsJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICpjb25uZWN0b3Ig PSBqb2ItPmNvbm5lY3RvcjsKPiA+Pj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxw ZXJfZnVuY3MgKmZ1bmNzID0KPiA+Pj4gKwkJY29ubmVjdG9yLT5iYXNlLmhlbHBlcl9wcml2YXRl Owo+ID4+PiArCWludCByZXQ7Cj4gPj4+ICsKPiA+Pj4gKwlpZiAoZnVuY3MtPmNsZWFudXBfd3Jp dGViYWNrX2pvYikgewo+ID4+PiArCQlyZXQgPSBmdW5jcy0+cHJlcGFyZV93cml0ZWJhY2tfam9i KGNvbm5lY3Rvciwgam9iKTsKPiA+Pj4gKwkJaWYgKHJldCA8IDApCj4gPj4+ICsJCQlyZXR1cm4g cmV0Owo+ID4+PiArCX0KPiA+Pj4gKwo+ID4+PiArCWpvYi0+cHJlcGFyZWQgPSB0cnVlOwo+ID4+ PiArCXJldHVybiAwOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICAvKioKPiA+Pj4gICAqIGRybV93 cml0ZWJhY2tfcXVldWVfam9iIC0gUXVldWUgYSB3cml0ZWJhY2sgam9iIGZvciBsYXRlciBzaWdu YWxsaW5nCj4gPj4+ICAgKiBAd2JfY29ubmVjdG9yOiBUaGUgd3JpdGViYWNrIGNvbm5lY3RvciB0 byBxdWV1ZSBhIGpvYiBvbgo+ID4+PiBAQCAtMjc1LDYgKzMxMSwxMyBAQCBFWFBPUlRfU1lNQk9M KGRybV93cml0ZWJhY2tfcXVldWVfam9iKTsKPiA+Pj4gIAo+ID4+PiAgdm9pZCBkcm1fd3JpdGVi YWNrX2NsZWFudXBfam9iKHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iKQo+ID4+PiAgewo+ ID4+PiArCXN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gam9iLT5j b25uZWN0b3I7Cj4gPj4+ICsJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNz ICpmdW5jcyA9Cj4gPj4+ICsJCWNvbm5lY3Rvci0+YmFzZS5oZWxwZXJfcHJpdmF0ZTsKPiA+Pj4g Kwo+ID4+PiArCWlmIChqb2ItPnByZXBhcmVkICYmIGZ1bmNzLT5jbGVhbnVwX3dyaXRlYmFja19q b2IpCj4gPj4+ICsJCWZ1bmNzLT5jbGVhbnVwX3dyaXRlYmFja19qb2IoY29ubmVjdG9yLCBqb2Ip Owo+ID4+PiArCj4gPj4+ICAJaWYgKGpvYi0+ZmIpCj4gPj4+ICAJCWRybV9mcmFtZWJ1ZmZlcl9w dXQoam9iLT5mYik7Cj4gPj4+ICAKPiA+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9t b2Rlc2V0X2hlbHBlcl92dGFibGVzLmggYi9pbmNsdWRlL2RybS9kcm1fbW9kZXNldF9oZWxwZXJf dnRhYmxlcy5oCj4gPj4+IGluZGV4IDYxMTQyYWEwYWIyMy4uNzNkMDNmZTY2Nzk5IDEwMDY0NAo+ ID4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oCj4gPj4+ ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmgKPiA+Pj4gQEAg LTQ5LDYgKzQ5LDggQEAKPiA+Pj4gICAqLwo+ID4+PiAgCj4gPj4+ICBlbnVtIG1vZGVfc2V0X2F0 b21pYzsKPiA+Pj4gK3N0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvcjsKPiA+Pj4gK3N0cnVj dCBkcm1fd3JpdGViYWNrX2pvYjsKPiA+Pj4gIAo+ID4+PiAgLyoqCj4gPj4+ICAgKiBzdHJ1Y3Qg ZHJtX2NydGNfaGVscGVyX2Z1bmNzIC0gaGVscGVyIG9wZXJhdGlvbnMgZm9yIENSVENzCj4gPj4+ IEBAIC05ODksNiArOTkxLDExIEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyB7 Cj4gPj4+ICAJICovCj4gPj4+ICAJdm9pZCAoKmF0b21pY19jb21taXQpKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4gPj4+ICAJCQkgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqc3RhdGUpOwo+ID4+PiArCj4gPj4+ICsJaW50ICgqcHJlcGFyZV93cml0ZWJhY2tfam9i KShzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+Pj4gKwkJCQkg ICAgIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iKTsKPiA+Pj4gKwl2b2lkICgqY2xlYW51 cF93cml0ZWJhY2tfam9iKShzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPiA+Pj4gKwkJCQkgICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYik7Cj4gPj4+ ICB9Owo+ID4+PiAgCj4gPj4+ICAvKioKPiA+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2Ry bV93cml0ZWJhY2suaCBiL2luY2x1ZGUvZHJtL2RybV93cml0ZWJhY2suaAo+ID4+PiBpbmRleCA0 NzY2MmMzNjI3NDMuLjc3N2MxNGM4NDdmMCAxMDA2NDQKPiA+Pj4gLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX3dyaXRlYmFjay5oCj4gPj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV93cml0ZWJhY2suaAo+ ID4+PiBAQCAtNzksNiArNzksMjAgQEAgc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yIHsK PiA+Pj4gIH07Cj4gPj4+ICAKPiA+Pj4gIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiB7Cj4gPj4+ ICsJLyoqCj4gPj4+ICsJICogQGNvbm5lY3RvcjoKPiA+Pj4gKwkgKgo+ID4+PiArCSAqIEJhY2st cG9pbnRlciB0byB0aGUgd3JpdGViYWNrIGNvbm5lY3RvciBhc3NvY2lhdGVkIHdpdGggdGhlIGpv Ygo+ID4+PiArCSAqLwo+ID4+PiArCXN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqY29u bmVjdG9yOwo+ID4+IAo+ID4+IEl0IGtpbmQtb2YgZmVlbHMgbGlrZSB0aGlzIHNob3VsZG4ndCBi ZSBuZWNlc3NhcnksIGJ1dCBJIHRoaW5rCj4gPj4gYXZvaWRpbmcgaXQgd291bGQgbWVhbiBlaXRo ZXIgYWxsb2NhdGluZyB0aGUgd29ya19zdHJ1Y3Qgb3V0c2lkZSBvZgo+ID4+IHRoZSBqb2IsIGFu ZCB0cmFja2luZyB0aGUgY29ubmVjdG9yIHRoZXJlIGluc3RlYWQgb2YgaW4gdGhlIGpvYiwgb3IK PiA+PiBoYXZpbmcgdHdvIGNhbGxzIHRvIHVucHJlcGFyZSAtIG9uZSBpbiBzaWduYWxfY29tcGxl dGlvbiBhbmQgb25lIGluCj4gPj4gZGVzdHJveV9zdGF0ZS4KPiA+IAo+ID4gSSBkb24ndCBsaWtl IHRoZSBzZWNvbmQgb3B0aW9uIGFzIHVucHJlcGFyZSBjb3VsZCBwb3RlbnRpYWxseSBiZSBjb3N0 bHksCj4gPiBhbmQgc2hvdWxkIHRodXMgbm90IGJlIGNhbGxlZCBmcm9tIHNpZ25hbF9jb21wbGV0 aW9uIHRoYXQgbWF5IHJ1biBpbgo+ID4gaW50ZXJydXB0IGNvbnRleHQuIFRoZSBmaXJzdCBvcHRp b24gaXMgZG9hYmxlLCBidXQgSSB0aGluayBpdCB3aWxsCj4gPiByZXN1bHQgaW4gZXZlbiB3b3Jz ZSBjb2RlLgo+ID4gCj4gPj4gSXQncyBwcm9iYWJseSBub3Qgd29ydGggdGhlIGd5bW5hc3RpY3Mg dG8gYXZvaWQgdGhlIGJhY2twb2ludGVyLi4uIGJ1dAo+ID4+IGZvciBzb21lIHJlYXNvbiB0aGUg YmFja3BvaW50ZXIgZmVlbHMgaW50YW5naWJseSBkaXJ0eSB0byBtZS4KPiA+IAo+ID4gQSB3cml0 ZWJhY2sgam9iIGV4aXN0cyBpbiB0aGUgY29udGV4dCBvZiBhIHdyaXRlYmFjayBjb25uZWN0b3Is IHdoeSBkbwo+ID4geW91IGZlZWwgdGhlIGJhY2twb2ludGVyIGlzIGRpcnR5ID8KPiA+IAo+ID4+ PiArCj4gPj4+ICsJLyoqCj4gPj4+ICsJICogQHByZXBhcmVkOgo+ID4+PiArCSAqCj4gPj4+ICsJ ICogU2V0IHdoZW4gdGhlIGpvYiBoYXMgYmVlbiBwcmVwYXJlZCB3aXRoIGRybV93cml0ZWJhY2tf cHJlcGFyZV9qb2IoKQo+ID4+PiArCSAqLwo+ID4+PiArCWJvb2wgcHJlcGFyZWQ7Cj4gPj4+ICsK PiA+Pj4gIAkvKioKPiA+Pj4gIAkgKiBAY2xlYW51cF93b3JrOgo+ID4+PiAgCSAqCj4gPj4+IEBA IC05OCw3ICsxMTIsNyBAQCBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2Igewo+ID4+PiAgCSAqIEBm YjoKPiA+Pj4gIAkgKgo+ID4+PiAgCSAqIEZyYW1lYnVmZmVyIHRvIGJlIHdyaXR0ZW4gdG8gYnkg dGhlIHdyaXRlYmFjayBjb25uZWN0b3IuIERvIG5vdCBzZXQKPiA+Pj4gLQkgKiBkaXJlY3RseSwg dXNlIGRybV9hdG9taWNfc2V0X3dyaXRlYmFja19mYl9mb3JfY29ubmVjdG9yKCkKPiA+Pj4gKwkg KiBkaXJlY3RseSwgdXNlIGRybV93cml0ZWJhY2tfc2V0X2ZiKCkKPiA+Pj4gIAkgKi8KPiA+Pj4g IAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiA+Pj4gIAo+ID4+PiBAQCAtMTA4LDYgKzEy MiwxMyBAQCBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2Igewo+ID4+PiAgCSAqIEZlbmNlIHdoaWNo IHdpbGwgc2lnbmFsIG9uY2UgdGhlIHdyaXRlYmFjayBoYXMgY29tcGxldGVkCj4gPj4+ICAJICov Cj4gPj4+ICAJc3RydWN0IGRtYV9mZW5jZSAqb3V0X2ZlbmNlOwo+ID4+PiArCj4gPj4+ICsJLyoq Cj4gPj4+ICsJICogQHByaXY6Cj4gPj4+ICsJICoKPiA+Pj4gKwkgKiBEcml2ZXItcHJpdmF0ZSBk YXRhCj4gPj4+ICsJICovCj4gPj4+ICsJdm9pZCAqcHJpdjsKPiA+Pj4gIH07Cj4gPj4+ICAKPiA+ Pj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICoKPiA+Pj4g QEAgLTEyMiw2ICsxNDMsMTEgQEAgaW50IGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiA+Pj4gIAkJCQkgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVy X2hlbHBlcl9mdW5jcyAqZW5jX2hlbHBlcl9mdW5jcywKPiA+Pj4gIAkJCQkgY29uc3QgdTMyICpm b3JtYXRzLCBpbnQgbl9mb3JtYXRzKTsKPiA+Pj4gIAo+ID4+PiAraW50IGRybV93cml0ZWJhY2tf c2V0X2ZiKHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLAo+ID4+PiArCQkJ IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKPiA+Pj4gKwo+ID4+PiAraW50IGRybV93cml0 ZWJhY2tfcHJlcGFyZV9qb2Ioc3RydWN0IGRybV93cml0ZWJhY2tfam9iICpqb2IpOwo+ID4+PiAr Cj4gPj4+ICB2b2lkIGRybV93cml0ZWJhY2tfcXVldWVfam9iKHN0cnVjdCBkcm1fd3JpdGViYWNr X2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yLAo+ID4+PiAgCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7Cj4gPj4+ICAKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQ aW5jaGFydApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=