From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: Re: [RFC][PATCH 0/5 v2] DMA-BUF Heaps (destaging ION) Date: Tue, 19 Mar 2019 17:58:40 -0400 Message-ID: References: <1551819273-640-1-git-send-email-john.stultz@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id B32F189C59 for ; Tue, 19 Mar 2019 21:58:53 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id a16so262360edn.1 for ; Tue, 19 Mar 2019 14:58:53 -0700 (PDT) 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: "Andrew F. Davis" Cc: Vincent Donnefort , Greg KH , Chenbo Feng , Alistair Strachan , Liam Mark , lkml , Marissa Wall , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXIgMTksIDIwMTkgYXQgMTowMCBQTSBBbmRyZXcgRi4gRGF2aXMgPGFmZEB0aS5j b20+IHdyb3RlOgo+Cj4gT24gMy8xOS8xOSAxMTo1NCBBTSwgQmVuamFtaW4gR2FpZ25hcmQgd3Jv dGU6Cj4gPiBMZSBtZXIuIDEzIG1hcnMgMjAxOSDDoCAyMzozMSwgSm9obiBTdHVsdHogPGpvaG4u c3R1bHR6QGxpbmFyby5vcmc+IGEgw6ljcml0IDoKPiA+Pgo+ID4+IE9uIFdlZCwgTWFyIDEzLCAy MDE5IGF0IDE6MTEgUE0gTGlhbSBNYXJrIDxsbWFya0Bjb2RlYXVyb3JhLm9yZz4gd3JvdGU6Cj4g Pj4+IE9uIFR1ZSwgNSBNYXIgMjAxOSwgSm9obiBTdHVsdHogd3JvdGU6Cj4gPj4+Pgo+ID4+Pj4g RXZlbnR1YWwgVE9ET1M6Cj4gPj4+PiAqIFJlaW1wbGVtZW50IHBhZ2UtcG9vbCBmb3Igc3lzdGVt IGhlYXAgKHdvcmtpbmcgb24gdGhpcykKPiA+Pj4+ICogQWRkIHN0YXRzIGFjY291bnRpbmcgdG8g c3lzdGVtL2NtYSBoZWFwcwo+ID4+Pj4gKiBNYWtlIHRoZSBrc2VsZnRlc3QgYWN0dWFsbHkgdXNl ZnVsCj4gPj4+PiAqIEFkZCBvdGhlciBoZWFwcyBmb2xrcyBzZWUgYXMgdXNlZnVsICh3b3VsZCBs b3ZlIHRvIGdldAo+ID4+Pj4gICBzb21lIGhlbHAgZnJvbSBhY3R1YWwgY2FydmVvdXQvY2h1bmsg dXNlcnMpIQo+ID4+Pgo+ID4+PiBXZSB1c2UgYSBtb2RpZmllZCBjYXJ2ZW91dCBoZWFwIGZvciBj ZXJ0YWluIHNlY3VyZSB1c2UgY2FzZXMuCj4gPj4KPiA+PiBDb29sISBJdCB3b3VsZCBiZSBncmVh dCB0byBzZWUgaWYgeW91IGhhdmUgYW55IGNvbmNlcm5zIGFib3V0IGFkZGluZwo+ID4+IHN1Y2gg YSBzZWN1cmUtY2FydmVvdXQgaGVhcCB0byB0aGlzIGZyYW1ld29yay4gSSBzdXNwZWN0IGl0IHdv dWxkIGJlCj4gPj4gZmFpcmx5IHNpbWlsYXIgdG8gaG93IGl0cyBpbnRlZ3JhdGVkIGludG8gSU9O LCBidXQgcGFydGljdWxhcmx5IEknZCBiZQo+ID4+IGludGVyZXN0ZWQgaW4gaXNzdWVzIGFyb3Vu ZCB0aGUgbGFjayBvZiBwcml2YXRlIGZsYWdzIGFuZCBvdGhlcgo+ID4+IGFsbG9jYXRpb24gYXJn dW1lbnRzIGxpa2UgYWxpZ25tZW50Lgo+ID4+Cj4gPj4+IEFsdGhvdWdoIHRoZXJlIHdvdWxkIHBy b2JhYmx5IGJlIHNvbWUgYmVuZWZpdCBpbiBkaXNjc3NpbmcgaG93IHRoZSBkbWEtYnVmCj4gPj4+ IGhlYXAgZnJhbWV3b3JrIG1heSB3YW50IHRvIHN1cHBvcnQKPiA+Pj4gc2VjdXJlIGhlYXBzIGlu IHRoZSBmdXR1cmUgaXQgaXMgYSBsYXJnZSB0b3BpYyB3aGljaCBJIGFzc3VtZSB5b3UgZG9uJ3QK PiA+Pj4gd2FudCB0byB0YWNrbGUgbm93Lgo+ID4+Cj4gPj4gU28gSSBzdXNwZWN0IG90aGVycyAo QmVuamFtaW4/KSB3b3VsZCBoYXZlIGEgbW9yZSBpbmZvcm1lZCBvcGluaW9uIG9uCj4gPj4gdGhl IGRldGFpbHMsIGJ1dCB0aGUgaW50ZW50IGlzIHRvIGFsbG93IHNlY3VyZSBoZWFwIGltcGxlbWVu dGF0aW9ucy4KPiA+PiBJJ20gbm90IHN1cmUgd2hhdCBhcmVhcyBvZiBjb25jZXJuIHlvdSBoYXZl IGZvciB0aGlzIGFsbG9jYXRpb24KPiA+PiBmcmFtZXdvcmsgaW4gcGFydGljdWxhcj8KPiA+Cj4g PiB5ZXMgSSB3b3VsZCBiZSBncmVhdCB0byB1bmRlcnN0YW5kIGhvdyB5b3UgcHJvdmlkZSB0aGUg aW5mb3JtYXRpb24gdG8KPiA+IHRlbGwgdGhhdCBhIGRtYWJ1Zgo+ID4gaXMgc2VjdXJlIChvciBu b3QpIHNpbmNlIHdlIGNhbid0IGFkZCBmbGFnIGluIGRtYWJ1ZiBzdHJ1Y3R1cmUgaXRzZWxmLgo+ ID4gQW4gb3B0aW9uIGlzIG1hbmFnZQo+ID4gdGhlIGFjY2VzcyByaWdodHMgd2hlbiBhIGRldmlj ZSBhdHRhY2ggaXRzZWxmIHRvIHRoZSBkbWFidWYgYnV0IGluCj4gPiB0aGlzIGNhc2UgeW91IG5l ZWQgZGVmaW5lCj4gPiBhIGxpc3Qgb2YgYWxsb3dlZCBkZXZpY2VzIHBlciBoZWFwLi4uCj4gPiBJ ZiB5b3UgaGF2ZSBhIGdvb2Qgc29sdXRpb24gZm9yIHNlY3VyZSBoZWFwcyB5b3UgYXJlIHdlbGNv bWUgOi0pCj4gPgo+Cj4gRG8gd2UgcmVhbGx5IG5lZWQgYW55IG9mIHRoYXQ/IEEgc2VjdXJlIGJ1 ZmZlciBpcyBzZWN1cmVkIGJ5IHRoZQo+IGhhcmR3YXJlIGZpcmV3YWxscyB0aGF0IGtlZXAgb3V0 IGNlcnRhaW4gSVAgKGluY2x1ZGluZyBvZnRlbiB0aGUKPiBwcm9jZXNzb3IgcnVubmluZyBMaW51 eCkuIFNvIHRoZSBvbmx5IHRoaW5nIHdlIG5lZWQgdG8gdHJhY2sgaW50ZXJuYWxseQo+IGlzIHRo YXQgd2Ugc2hvdWxkIG5vdCBhbGxvdyBtbWFwL2ttYXAgb24gdGhlIGJ1ZmZlci4gVGhhdCBjYW4g YmUgZG9uZSBpbgo+IHRoZSBwZXItaGVhcCBsYXllciwgZXZlcnl0aGluZyBlbHNlIHN0YXlzIHRo ZSBzYW1lIGFzIGEgc3RhbmRhcmQKPiBjYXJ2ZW91dCBoZWFwLgoKRm9yIGF0IGxlYXN0IHNvbWUg aHcgdGhlIGltcG9ydGluZyBkcml2ZXIgbmVlZHMgdG8gY29uZmlndXJlIHRoaW5ncwpkaWZmZXJl bnRseSBmb3Igc2VjdXJlIGJ1ZmZlcnMgOi0vCgpCUiwKLVIKCj4KPiBBbmRyZXcKPgo+ID4gQmVu amFtaW4KPiA+Pgo+ID4+PiBXZSBkb24ndCBoYXZlIGFueSBub24tc2VjdXJlIGNhcnZlb3V0IGhl YXAgdXNlIGNhc2VzIGJ1dCB0aGUgY2xpZW50IHVzZQo+ID4+PiBjYXNlIEkgaGF2ZSBzZWVuIHVz dWFsbHkgcmV2b2x2ZSBhcm91bmQKPiA+Pj4gd2FudGluZyBsYXJnZSBhbGxvY2F0aW9ucyB0byBz dWNjZWVkIHZlcnkgcXVpY2tseS4KPiA+Pj4gRm9yIGV4YW1wbGUgSSBoYXZlIHNlZW4gY2FtZXJh IHVzZSBjYXNlcyB3aGljaCBkbyB2ZXJ5IGxhcmdlIGFsbG9jYXRpb25zCj4gPj4+IG9uIGNhbWVy YSBib290dXAgZnJvbSB0aGUgY2FydmVvdXQgaGVhcCwgdGhlc2UgYWxsb2NhdGlvbnMgd291bGQg Y29tZSBmcm9tCj4gPj4+IHRoZSBjYXJ2ZW91dCBoZWFwIGFuZCBmYWxsYmFjayB0byB0aGUgc3lz dGVtIGhlYXAgd2hlbiB0aGUgY2FydmVvdXQgaGVhcAo+ID4+PiB3YXMgZnVsbC4KPiA+Pj4gQWN0 dWFsIG5vbi1zZWN1cmUgY2FydmVvdXQgaGVhcCBjYW4gcGVyaGFwcyBwcm92aWRlIG1vcmUgZGV0 YWlsLgo+ID4+Cj4gPj4gWWVhLCBJJ20gYXdhcmUgdGhhdCBmb2xrcyBzdGlsbCBzZWUgY2FydmVv dXQgYXMgcHJlZmVyYWJsZSB0byBDTUEgZHVlCj4gPj4gdG8gbW9yZSBjb25zaXN0ZW50L3ByZWRp Y3RhYmxlIGFsbG9jYXRpb24gbGF0ZW5jeS4gIEkgdGhpbmsgd2Ugc3RpbGwKPiA+PiBoYXZlIHRo ZSBpc3N1ZSB0aGF0IHdlIGRvbid0IGhhdmUgYmluZGluZ3MgdG8gZXN0YWJsaXNoL2NvbmZpZ3Vy ZQo+ID4+IGNhcnZlb3V0IHJlZ2lvbnMgdy8gZHRzLCBhbmQgSSdtIG5vdCByZWFsbHkgd2FudGlu ZyB0byBob2xkIHVwIHRoZQo+ID4+IGFsbG9jYXRpb24gQVBJIG9uIHRoYXQgaXNzdWUuCj4gPj4K PiA+Pgo+ID4+PiBTaW5jZSB3ZSBhcmUgbWFraW5nIHNvbWUgZnVuZGFtZW50YWwgY2hhbmdlcyB0 byBob3cgSU9OIHdvcmtlZCBhbmQgc2luY2UKPiA+Pj4gQW5kcm9pZCBpcyBsaWtlbHkgYWxzbyBi ZSB0aGUgbGFyZ2VzdCB1c2VyIG9mIHRoZSBkbWEtYnVmIGhlYXBzIGZyYW1ld29yawo+ID4+PiBJ IHRoaW5rIGl0IHdvdWxkIGJlIGdvb2QKPiA+Pj4gdG8gaGF2ZSBhIHBhdGggdG8gcmVzb2x2ZSB0 aGUgaXNzdWVzIHdoaWNoIGFyZSBjdXJyZW50bHkgcHJldmVudGluZwo+ID4+PiBjb21tZXJjaWFs IEFuZHJvaWQgcmVsZWFzZXMgZnJvbSBtb3ZpbmcgdG8gdGhlIHVwc3RyZWFtIHZlcnNpb24gb2Yg SU9OLgo+ID4+Cj4gPj4gWWVhLCBJIGRvIHNlZSBzb2x2aW5nIHRoZSBjYWNoZSBtYW5hZ2VtZW50 IGVmZmljaWVuY3kgaXNzdWVzIGFzCj4gPj4gY3JpdGljYWwgZm9yIHRoZSBkbWFidWYgaGVhcHMg dG8gYmUgYWN0dWFsbHkgdXNhYmxlIChteSBwcmV2aW91cwo+ID4+IHZlcnNpb24gb2YgdGhpcyBw YXRjaHNldCBhY2NpZGVudGFsbHkgaGFkIG15IGhhY2tzIHRvIGltcHJvdmUKPiA+PiBwZXJmb3Jt YW5jZSByb2xsZWQgaW4hKS4gIEFuZCB0aGVyZSBhcmUgZGlzY3Vzc2lvbnMgZ29pbmcgb24gaW4K PiA+PiB2YXJpb3VzIGNoYW5uZWxzIHRvIHRyeSB0byBmaWd1cmUgb3V0IGhvdyB0byBlaXRoZXIg Y2hhbmdlIEFuZHJvaWQgdG8KPiA+PiB1c2UgZG1hLWJ1ZnMgbW9yZSBpbiBsaW5lIHdpdGggaG93 IHVwc3RyZWFtIGV4cGVjdHMsIG9yIHdoYXQgbW9yZQo+ID4+IGdlbmVyaWMgZG1hLWJ1ZiBjaGFu Z2VzIHdlIG1heSBuZWVkIHRvIGFsbG93IEFuZHJvaWQgdG8gdXNlIGRtYWJ1ZnMKPiA+PiB3aXRo IHRoZSBleHBlY3RlZCBwZXJmb3JtYW5jZSB0aGV5IG5lZWQuCj4gPj4KPiA+Pj4gSSBjYW4gdW5k ZXJzdGFuZCBpZiB5b3UgZG9uJ3QgbmVjZXNzYXJpbHkgd2FudCB0byBwdXQgYWxsL2FueSBvZiB0 aGVzZQo+ID4+PiBjaGFuZ2VzIGludG8gdGhlIGRtYS1idWYgaGVhcHMgZnJhbWV3b3JrIGFzIHBh cnQgb2YgdGhpcyBzZXJpZXMsIGJ1dCBteQo+ID4+PiBob3BlIGlzIHdlIGNhbiBnZXQKPiA+Pj4g dGhlIHVwc3RyZWFtIGNvbW11bml0eSBhbmQgdGhlIEFuZHJvaWQgZnJhbWV3b3JrIHRlYW0gdG8g YWdyZWUgb24gd2hhdAo+ID4+PiB1cHN0cmVhbWFibGUgY2hhbmdlcyB0byBkbWEtYnVmIGhlYXBz IGZyYW1ld29yaywgYW5kL29yIHRoZSBBbmRyb2lkCj4gPj4+IGZyYW1ld29yaywgd291bGQgYmUg cmVxdWlyZWQgaW4gb3JkZXIgZm9yIEFuZHJvaWQgdG8gbW92ZSB0byB0aGUgdXBzdHJlYW0KPiA+ Pj4gZG1hLWJ1ZiBoZWFwcyBmcmFtZXdvcmsgZm9yIGNvbW1lcmNpYWwgZGV2aWNlcy4KPiA+Pgo+ ID4+IFllcy4gVGhvdWdoIEkgYWxzbyBkb24ndCB3YW50IHRvIGdldCB0aGUgYmlnZ2VyIGRtYS1i dWYgdXNhZ2UKPiA+PiBkaXNjdXNzaW9uICh3aGljaCByZWFsbHkgYWZmZWN0cyBhbGwgZG1hYnVm IGV4cG9ydGVycykgdG9vIHRpZWQgdXAKPiA+PiB3aXRoIHRoaXMgcGF0Y2ggc2V0cyBhdHRlbXB0 IHRvIHByb3ZpZGUgYSB1c2FibGUgYWxsb2NhdGlvbiBpbnRlcmZhY2UuCj4gPj4gUGFydCBvZiB0 aGUgcHJvYmxlbSB0aGF0IEkgdGhpbmsgd2UndmUgc2VlbiB3aXRoIElPTiBpcyB0aGF0IHRoZXJl IGlzCj4gPj4gYSBuZXN0IG9mIG9mIHJlbGF0ZWQgaXNzdWVzLCBhbmQgdGhlIGVudGlyZSB0aGlu ZyBpcyBqdXN0IHRvbyBiaWcgdG8KPiA+PiBhZGRyZXNzIGF0IG9uY2UsIHdoaWNoIEkgdGhpbmsg aXMgcGFydCBvZiB3aHkgSU9OIGhhcyBzYXQgaW4gc3RhZ2luZwo+ID4+IGZvciBzbyBsb25nLiBU aGlzIHBhdGNoc2V0IGp1c3QgdHJpZXMgdG8gcHJvdmlkZSBhbiBkbWFidWYgYWxsb2NhdGlvbgo+ ID4+IGludGVyZmFjZSwgYW5kIGEgZmV3IGV4YW1wbGUgZXhwb3J0ZXIgaGVhcCB0eXBlcy4KPiA+ Pgo+ID4+PiBJIGRvbid0IG1lYW4gdG8gbWFrZSB0aGlzIHNwZWNpZmljIHRvIEFuZHJvaWQsIGJ1 dCBteSBhc3N1bXB0aW9uIGlzIHRoYXQKPiA+Pj4gbWFueSBvZiB0aGUgSU9OL2RtYS1idWYgaGVh cHMgaXNzdWVzIHdoaWNoIGFmZmVjdCBBbmRyb2lkIHdvdWxkIGxpa2VseQo+ID4+PiBhZmZlY3Qg b3RoZXIgbmV3IGxhcmdlIHVzZXJzIG9mIHRoZSBkbWEtYnVmIGhlYXBzIGZyYW1ld29yaywgc28g aWYgd2UKPiA+Pj4gcmVzb2x2ZSBpdCBmb3IgQW5kcm9pZCB3ZSB3b3VsZCBiZSBoZWxwaW5nIHRo ZXNlIGZ1dHVyZSB1c2VycyBhcyB3ZWxsLgo+ID4+PiBBbmQgSSBkbyB1bmRlcnN0YW5kIHRoYXQg c29tZSB0aGUgaXNzdWVzIGZhY2luZyBBbmRyb2lkIG1heSBuZWVkIHRvIGJlCj4gPj4+IHJlc29s dmVkIGJ5IG1ha2luZyBjaGFuZ2VzIHRvIEFuZHJvaWQgZnJhbWV3b3JrLgo+ID4+Cj4gPj4gV2hp bGUgdHJ1ZSwgSSBhbHNvIHRoaW5rIHNvbWUgb2YgdGhlIGFzc3VtcHRpb25zIGluIGhvdyB0aGUg ZG1hLWJ1ZnMKPiA+PiBhcmUgdXNlZCAocHJlLWF0dGFjaG1lbnQgb2YgYWxsIGRldmljZXMsIGV0 YykgYXJlIG1heWJlIG5vdCBzbwo+ID4+IHJlYWxpc3RpYyBnaXZlbiBob3cgQW5kcm9pZCBpcyB1 c2luZyB0aGVtLiAgSSBkbyB3YW50IHRvIGV4cGxvcmUgaWYKPiA+PiBBbmRyb2lkIGNhbiBjaGFu Z2UgaG93IHRoZXkgdXNlIGRtYS1idWZzLCBidXQgSSBhbHNvIHdvcnJ5IHRoYXQgd2UKPiA+PiBu ZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB3ZSBjb3VsZCBsb29zZW4gdGhlIGV4cGVjdGF0aW9ucyBm b3IgZG1hLWJ1ZnMsCj4gPj4gYXMgd2VsbCBhcyB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8g c3VwcG9ydCB0aGluZ3MgZm9sa3MgaGF2ZQo+ID4+IGJyb3VnaHQgdXAgbGlrZSBwYXJ0aWFsIGNh Y2hlIG1haW50ZW5hbmNlLgo+ID4+Cj4gPj4+IEkgdGhpbmsgaXQgd291bGQgYmUgaGVscGZ1bCB0 byB0cnkgYW5kIGdldCBhcyBtdWNoIG9mIHRoaXMgYWdyZWVkIHVwb24gYXMKPiA+Pj4gcG9zc2li bGUgYmVmb3JlIHRoZSBkbWEtYnVmIGhlYXBzIGZyYW1ld29yayBtb3ZlcyBvdXQgb2Ygc3RhZ2lu Zy4KPiA+Pj4KPiA+Pj4gQXMgcGFydCBvZiBteSByZXZpZXcgSSB3aWxsIGhpZ2hsaWdodCBzb21l IG9mIHRoZSBpc3N1ZXMgd2hpY2ggd291bGQKPiA+Pj4gYWZmZWN0IEFuZHJvaWQuCj4gPj4+IElu IG15IGNvbW1lbnRzIEkgd2lsbCBhcHBseSB0aGVtIHRvIHRoZSBzeXN0ZW0gaGVhcCBzaW5jZSB0 aGF0IGlzIHdoYXQKPiA+Pj4gQW5kcm9pZCBjdXJyZW50bHkgdXNlcyBmb3IgYSBsb3Qgb2YgaXRz IHVzZSBjYXNlcy4KPiA+Pj4gSSByZWFsaXplIHRoYXQgdGhpcyBuZXcgZnJhbWV3b3JrIHByb3Zp ZGVzIG1vcmUgZmxleGliaWxpdHkgdG8gaGVhcHMsIHNvCj4gPj4+IHBlcmhhcHMgc29tZSBvZiB0 aGVzZSBpc3N1ZXMgY2FuIGJlIHNvbHZlZCBieSBjcmVhdGluZyBhIG5ldyB0eXBlIG9mCj4gPj4+ IHN5c3RlbSBoZWFwIHdoaWNoIEFuZHJvaWQgY2FuIHVzZSwgYnV0IGV2ZW4gaWYgdGhlIHNvbHV0 aW9uIGludm9sdmVzCj4gPj4+IGNyZWF0aW5nIGEgbmV3IHN5c3RlbSBoZWFwIEkgd291bGQgbGlr ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGlzICJuZXciCj4gPj4+IHN5c3RlbSBoZWFwIGlzIHVwc3Ry ZWFtYWJsZS4KPiA+Pgo+ID4+IFNvIHllYSwgSSBkbyByZWFsaXplIEknbSBkb2RnaW5nIHRoZSBo YXJkIHByb2JsZW0gaGVyZSwgYnV0IEkgdGhpbmsKPiA+PiB0aGUgY2FjaGUtbWFuYWdlbWVudC91 c2FnZSBpc3N1ZSBpcyBmYXIgbW9yZSBnZW5lcmljLgo+ID4+Cj4gPj4gWW91J3JlIHJpZ2h0IHRo YXQgdGhpcyBpbXBsZW1lbnRhdGlvbiBnaXZlIGEgbG90IG9mIGZsZXhpYmlsaXR5IHRvIHRoZQo+ ID4+IGV4cG9ydGVyIGhlYXBzIGluIGhvdyB0aGV5IGltcGxlbWVudCB0aGUgZG1hYnVmIG9wcyAo anVzdCBsaWtlIGhvdwo+ID4+IG90aGVyIGRldmljZSBkcml2ZXJzIHRoYXQgYXJlIGRtYWJ1ZiBl eHBvcnRlcnMgaGF2ZSB0aGUgc2FtZQo+ID4+IGZsZXhpYmlsaXR5KSwgYnV0IEkgdmVyeSBtdWNo IGFncmVlIHdlIGRvbid0IHdhbnQgdG8gYWRkIGEgc3lzdGVtIGFuZAo+ID4+IHRoZW4gbGF0ZXIg YSAic3lzdGVtLWFuZHJvaWQiIGhlYXAuIFNvIHllYSwgYSByZWFzb25hYmxlIGFtb3VudCBvZgo+ ID4+IGNhdXRpb24gaXMgd2FycmFudGVkIGhlcmUuCj4gPj4KPiA+PiBUaGFua3Mgc28gbXVjaCBm b3IgdGhlIHJldmlldyBhbmQgZmVlZGJhY2shIEknbGwgdHJ5IHRvIGFkZHJlc3MgdGhpbmdzCj4g Pj4gYXMgSSBjYW4gYXMgSSdtIHRyYXZlbGluZyB0aGlzIHdlZWsgKHNvIEkgbWF5IGJlIGEgYml0 IHNwb3R0eSkuCj4gPj4KPiA+PiB0aGFua3MKPiA+PiAtam9obgo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWw=