From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yiwei Zhang Subject: Re: Proposal to report GPU private memory allocations with sysfs nodes [plain text version] Date: Tue, 12 Nov 2019 10:17:10 -0800 Message-ID: References: <20191028152602.GA5057@redhat.com> <20191101103657.2107c6e1@eldfell.localdomain> <20191105094719.GY10326@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf1-x144.google.com (mail-lf1-x144.google.com [IPv6:2a00:1450:4864:20::144]) by gabe.freedesktop.org (Postfix) with ESMTPS id 25BD78845B for ; Tue, 12 Nov 2019 18:17:24 +0000 (UTC) Received: by mail-lf1-x144.google.com with SMTP id q5so7621678lfo.10 for ; Tue, 12 Nov 2019 10:17:24 -0800 (PST) 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: Rob Clark Cc: Alistair Delva , Rohan Garg , Jerome Glisse , dri-devel , Prahlad Kilambi , Kenny Ho , Gerd Hoffmann , Sean Paul , Chris Forbes , Android Kernel Team List-Id: dri-devel@lists.freedesktop.org SGkgZm9sa3MsCgpXaGF0IGRvIHlvdSB0aGluayBhYm91dDoKPiBGb3IgdGhlIHN5c2ZzIGFwcHJv YWNoLCBJJ20gYXNzdW1pbmcgdGhlIHVwc3RyZWFtIHZlbmRvcnMgc3RpbGwgbmVlZAo+IHRvIHBy b3ZpZGUgYSBwYWlyIG9mIFVNRCBhbmQgS01ELCBhbmQgdGhpcyBpb2N0bCB0byBsYWJlbCB0aGUg Qk8gaXMKPiBrZXB0IGFzIGRyaXZlciBwcml2YXRlIGlvY3RsLiBUaGVuIHdpbGwgZWFjaCBkcml2 ZXIganVzdCBkZWZpbmUgdGhlaXIKPiBvd24gc2V0IG9mICJsYWJlbCJzIGFuZCB0aGUgS01EIHdp bGwgb25seSBjb25zdW1lIHRoZSBjb3JyZXNwb25kaW5nCj4gb25lcyBzbyB0aGF0IHRoZSBzeXNm cyBub2RlcyB3b24ndCBjaGFuZ2UgYXQgYWxsPyBSZXBvcnQgemVybyBpZgo+IHRoZXJlJ3Mgbm8g YWxsb2NhdGlvbiBvciByZS11c2UgdW5kZXIgYSBwYXJ0aWN1bGFyICJsYWJlbCIuCgpCZXN0LApZ aXdlaQoKT24gV2VkLCBOb3YgNiwgMjAxOSBhdCAxMToyMSBBTSBZaXdlaSBaaGFuZyA8enp5aXdl aUBnb29nbGUuY29tPiB3cm90ZToKPgo+IEZvciB0aGUgc3lzZnMgYXBwcm9hY2gsIEknbSBhc3N1 bWluZyB0aGUgdXBzdHJlYW0gdmVuZG9ycyBzdGlsbCBuZWVkCj4gdG8gcHJvdmlkZSBhIHBhaXIg b2YgVU1EIGFuZCBLTUQsIGFuZCB0aGlzIGlvY3RsIHRvIGxhYmVsIHRoZSBCTyBpcwo+IGtlcHQg YXMgZHJpdmVyIHByaXZhdGUgaW9jdGwuIFRoZW4gd2lsbCBlYWNoIGRyaXZlciBqdXN0IGRlZmlu ZSB0aGVpcgo+IG93biBzZXQgb2YgImxhYmVsInMgYW5kIHRoZSBLTUQgd2lsbCBvbmx5IGNvbnN1 bWUgdGhlIGNvcnJlc3BvbmRpbmcKPiBvbmVzIHNvIHRoYXQgdGhlIHN5c2ZzIG5vZGVzIHdvbid0 IGNoYW5nZSBhdCBhbGw/IFJlcG9ydCB6ZXJvIGlmCj4gdGhlcmUncyBubyBhbGxvY2F0aW9uIG9y IHJlLXVzZSB1bmRlciBhIHBhcnRpY3VsYXIgImxhYmVsIi4KPgo+IEEgc2VwYXJhdGUgdGhvdWdo dCBpcyB0aGF0IGRvIHRoZSBHUFUgbWVtb3J5IGFsbG9jYXRpb25zIGRlc2VydmUgYQo+IG5vZGUg dW5kZXIgL3Byb2MvPHBpZD4gZm9yIHBlciBwcm9jZXNzIHRyYWNraW5nPyBJZiB0aGUgc3RydWN0 dXJlIGNhbgo+IHN0YXkgc2ltaWxhciB0byB3aGF0ICJtYXBzIiBvciAic21hcHMiIGFyZSwgdGhl biB3ZSBjYW4gYm9va2tlZXAgYWxsCj4gQk9zIHdpdGggYSBsYWJlbCBlYXNpbHkuIEZvciBtdWx0 aS1ncHUgc2NlbmFyaW8sIG1heWJlIGhhdmluZwo+IHNvbWV0aGluZyBsaWtlICIvcHJvYy88cGlk Pi9ncHVfbWVtLzxncHVfaWQ+L21hcHMiIGFsb25nIHdpdGggYSBnbG9iYWwKPiB0YWJsZSBzb21l d2hlcmUgc3BlY2lmeWluZyB0aGUge2dwdV9pZCwgZGV2aWNlX25hbWV9IHBhaXJzLiBUaGVuIHRo ZQo+IGdsb2JhbCBHUFUgYWxsb2NhdGlvbiBzdW1tYXJ5IGluZm8gc3RpbGwgbGl2ZXMgdW5kZXIK PiAiL3N5cy9kZXZpY2VzLzxkZXZpY2VfbmFtZT4vZ3B1X21lbS8iLiBIb3cgZGlmZmljdWx0IGl0 IGlzIHRvIGRlZmluZQo+IHN1Y2ggcHJvY2ZzIG5vZGUgc3RydWN0dXJlPyBKdXN0IGN1cmlvdXMu Cj4KPiBUaGFua3MgZm9yIGFsbCB0aGUgY29tbWVudHMgYW5kIHJlcGxpZXMhCj4KPiBCZXN0IHJl Z2FyZHMsCj4gWWl3ZWkKPgo+Cj4gT24gV2VkLCBOb3YgNiwgMjAxOSBhdCA4OjU1IEFNIFJvYiBD bGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gVHVlLCBOb3YgNSwg MjAxOSBhdCAxOjQ3IEFNIERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4gd3JvdGU6Cj4g PiA+Cj4gPiA+IE9uIE1vbiwgTm92IDA0LCAyMDE5IGF0IDExOjM0OjMzQU0gLTA4MDAsIFlpd2Vp IFpoYW5nIHdyb3RlOgo+ID4gPiA+IEhpIGZvbGtzLAo+ID4gPiA+Cj4gPiA+ID4gKERhbmllbCwg SSBqdXN0IG1vdmVkIHlvdSB0byB0aGlzIHRocmVhZCkKPiA+ID4gPgo+ID4gPiA+IEJlbG93IGFy ZSB0aGUgbGF0ZXN0IHRob3VnaHRzIGJhc2VkIG9uIGFsbCB0aGUgZmVlZGJhY2sgYW5kIGNvbW1l bnRzLgo+ID4gPiA+Cj4gPiA+ID4gRmlyc3QsIEkgbmVlZCB0byBjbGFyaWZ5IG9uIHRoZSBncHUg bWVtb3J5IG9iamVjdCB0eXBlIGVudW1lcmF0aW9uCj4gPiA+ID4gdGhpbmcuIFdlIGRvbid0IHdh bnQgdG8gZW5mb3JjZSB0aG9zZSBlbnVtZXJhdGlvbnMgYWNyb3NzIHRoZSB1cHN0cmVhbQo+ID4g PiA+IGFuZCBBbmRyb2lkLCBhbmQgd2Ugc2hvdWxkIGp1c3QgbGVhdmUgdGhvc2UgY29uZmlndXJh YmxlIGFuZCBmbGV4aWJsZS4KPiA+ID4gPgo+ID4gPiA+IFNlY29uZCwgdG8gbWFrZSB0aGlzIGVm Zm9ydCBhbHNvIHVzZWZ1bCB0byBhbGwgdGhlIG90aGVyIG1lbW9yeQo+ID4gPiA+IG1hbmFnZW1l bnQgdG9vbHMgbGlrZSBQU1MuIEF0IGxlYXN0IGFuIGFkZGl0aW9uYWwgbm9kZSBpcyBuZWVkZWQg Zm9yCj4gPiA+ID4gdGhlIHBhcnQgb2YgdGhlIGdwdSBwcml2YXRlIGFsbG9jYXRpb24gbm90IG1h cHBlZCB0byB0aGUKPiA+ID4gPiB1c2Vyc3BhY2UoaW52aXNpYmxlIHRvIFBTUykuIFRoaXMgaXMg ZXNwZWNpYWxseSBjcml0aWNhbCBmb3IgdGhlCj4gPiA+ID4gZG93bnN0cmVhbSBBbmRyb2lkIHNv IHRoYXQgbG93LW1lbW9yeS1raWxsZXIobG1rZCkgY2FuIGJlIGF3YXJlIG9mIHRoZQo+ID4gPiA+ IGFjdHVhbCB0b3RhbCBtZW1vcnkgZm9yIGEgcHJvY2VzcyBhbmQgd2lsbCBrbm93IGhvdyBtdWNo IGdldHMgZnJlZWQgdXAKPiA+ID4gPiBpZiBpdCBraWxscyB0aGF0IHByb2Nlc3MuIFRoaXMgaXMg YW4gZWZmb3J0IHRvIGRlLW15c3RpZnkgdGhlICJsb3N0Cj4gPiA+ID4gcmFtIi4KPiA+ID4gPgo+ ID4gPiA+IEdpdmVuIGFib3ZlLCB0aGUgbmV3IG5vZGUgc3RydWN0dXJlIHdvdWxkIGxvb2sgbGlr ZSBiZWxvdzoKPiA+ID4gPgo+ID4gPiA+IEdsb2JhbCBub2RlczoKPiA+ID4gPiAvc3lzL2Rldmlj ZXMvPHJvb3Q+L2dwdV9tZW0vZ2xvYmFsL3RvdGFsIC8qIFRvdGFsIHByaXZhdGUgYWxsb2NhdGlv bgo+ID4gPiA+IGZvciBjb2hlcmVuY3ksIHRoaXMgc2hvdWxkIGFsc28gaW5jbHVkZSB0aGUgYW5v bnltb3VzIG1lbW9yeSBhbGxvY2F0ZWQKPiA+ID4gPiBpbiB0aGUga21kICAqLwo+ID4gPiA+IC9z eXMvZGV2aWNlcy88cm9vdD4vZ3B1X21lbS9nbG9iYWwvdG90YWxfdW5tYXBwZWQgLyogQWNjb3Vu dCBmb3IgdGhlCj4gPiA+ID4gcHJpdmF0ZSBhbGxvY2F0aW9uIG5vdCBtYXBwZWQgdG8gdXNlcnNw YWNlKG5vdCB2aXNpYmxlIGZvciBQU1MpLCBkb24ndAo+ID4gPiA+IG5lZWQgdG8gYmUgY29oZXJl bnQgd2l0aCB0aGUgInRvdGFsIiBub2RlLiBsbWtkIG9yIGVxdWl2YWxlbnQgc2VydmljZQo+ID4g PiA+IGxvb2tpbmcgYXQgUFNTIHdpbGwgb25seSBsb29rIGF0IHRoaXMgbm9kZSBpbiBhZGRpdGlv bi4gKi8KPiA+ID4gPiAvc3lzL2RldmljZXMvPHJvb3Q+L2dwdV9tZW0vZ2xvYmFsLzx0eXBlMT4g LyogT25lIHRvdGFsIHZhbHVlIHBlcgo+ID4gPiA+IHR5cGUsIHRoaXMgc2hvdWxkIGFsc28gaW5j bHVkZSB0aGUgYW5vbnltb3VzIG1lbW9yeSBhbGxvY2F0ZWQgaW4gdGhlCj4gPiA+ID4ga21kKG9y IG1heWJlIGFub3RoZXIgYW5vbnltb3VzIHR5cGUgZm9yIGdsb2JhbCBub2RlcykgICovCj4gPiA+ ID4gL3N5cy9kZXZpY2VzLzxyb290Pi9ncHVfbWVtL2dsb2JhbC88dHlwZTI+IC8qIE9uZSB0b3Rh bCB2YWx1ZSBwZXIgdHlwZSAqLwo+ID4gPiA+IC4uLgo+ID4gPiA+IC9zeXMvZGV2aWNlcy88cm9v dD4vZ3B1X21lbS9nbG9iYWwvPHR5cGVOPiAvKiBPbmUgdG90YWwgdmFsdWUgcGVyIHR5cGUgKi8K PiA+ID4gPgo+ID4gPiA+IFBlciBwcm9jZXNzIG5vZGVzOgo+ID4gPiA+IC9zeXMvZGV2aWNlcy88 cm9vdD4vZ3B1X21lbS9wcm9jLzxwaWQ+L3RvdGFsIC8qIFRvdGFsIHByaXZhdGUKPiA+ID4gPiBh bGxvY2F0aW9uIGZvciBjb2hlcmVuY3kgKi8KPiA+ID4gPiAvc3lzL2RldmljZXMvPHJvb3Q+L2dw dV9tZW0vcHJvYy88cGlkPi90b3RhbF91bm1hcHBlZCAvKiBBY2NvdW50IGZvcgo+ID4gPiA+IHRo ZSBwcml2YXRlIGFsbG9jYXRpb24gbm90IG1hcHBlZCB0byB1c2Vyc3BhY2Uobm90IHZpc2libGUg Zm9yIFBTUyksCj4gPiA+ID4gZG9uJ3QgbmVlZCB0byBiZSBjb2hlcmVudCB3aXRoIHRoZSAidG90 YWwiIG5vZGUuIGxta2Qgb3IgZXF1aXZhbGVudAo+ID4gPiA+IHNlcnZpY2UgbG9va2luZyBhdCBQ U1Mgd2lsbCBvbmx5IGxvb2sgYXQgdGhpcyBub2RlIGluIGFkZGl0aW9uLiAqLwo+ID4gPiA+IC9z eXMvZGV2aWNlcy88cm9vdD4vZ3B1X21lbS9wcm9jLzxwaWQ+Lzx0eXBlMT4gLyogT25lIHRvdGFs IHZhbHVlIHBlciB0eXBlICovCj4gPiA+ID4gL3N5cy9kZXZpY2VzLzxyb290Pi9ncHVfbWVtL3By b2MvPHBpZD4vPHR5cGUyPiAvKiBPbmUgdG90YWwgdmFsdWUgcGVyIHR5cGUgKi8KPiA+ID4gPiAu Li4KPiA+ID4gPiAvc3lzL2RldmljZXMvPHJvb3Q+L2dwdV9tZW0vcHJvYy88cGlkPi88dHlwZU4+ IC8qIE9uZSB0b3RhbCB2YWx1ZSBwZXIgdHlwZSAqLwo+ID4gPiA+Cj4gPiA+ID4gVGhlIHR5cGUx IHRvIHR5cGVOIGZvciBkb3duc3RyZWFtIEFuZHJvaWQgd2lsbCBiZSB0aGUgZW51bWVyYXRpb25z IEkKPiA+ID4gPiBtZW50aW9uZWQgaW4gdGhlIG9yaWdpbmFsIGVtYWlsIHdoaWNoIGFyZTogdW5r bm93biwgc2hhZGVyLC4uLiwKPiA+ID4gPiB0cmFuc2llbnQuIEZvciB0aGUgdXBzdHJlYW0sIHRo b3NlIGNhbiBiZSB0aGUgbGFiZWxlZCBCT3Mgb3IgYW55IG90aGVyCj4gPiA+ID4gY3VzdG9taXpl ZCB0eXBlcy4KPiA+ID4gPgo+ID4gPiA+IExvb2sgZm9yd2FyZCB0byB0aGUgY29tbWVudHMgYW5k IGZlZWRiYWNrIQo+ID4gPgo+ID4gPiBJIGRvbid0IHRoaW5rIHRoaXMgd2lsbCB3b3JrIHdlbGws IGF0IGxlYXN0IGZvciB1cHN0cmVhbToKPiA+ID4KPiA+ID4gLSBUaGUgbGFiZWxzIGFyZSBjdXJy ZW50bHkgZnJlZS1mb3JtLCBiYWtpbmcgdGhlbSBiYWNrIGludG8geW91ciBzdHJ1Y3R1cmUKPiA+ ID4gICB3b3VsZCBtZWFuIHdlJ2QgbmVlZCB0byBkbyBsb3RzIG9mIGhvdCBhZGQvcmVtb3ZlIG9m IHN5c2ZzIGRpcmVjdG9yeQo+ID4gPiAgIHRyZWVzLiBXaGljaCBzb3VuZHMgbGlrZSBhIHJlYWwg YmFkIGlkZWEgOi0vCj4gPgo+ID4gYWxzbywgYSBibydzIGxhYmVsIGNhbiBjaGFuZ2Ugb3ZlciB0 aW1lIGlmIGl0IGlzIHJlLXVzZWQgZm9yIGEKPiA+IGRpZmZlcmVudCBwdXJwb3NlLi4gbm90IHN1 cmUgd2hhdCB0aGUgb3ZlcmhlYWQgaXMgZm9yIGFkZC9yZW1vdmUKPiA+IHN5c2ZzLCBidXQgSSBk b24ndCB0aGluayBJIHdhbnQgdGhhdCBvdmVyaGVhZCBpbiB0aGUgYm9fcmV1c2UgcGF0aAo+ID4K PiA+IChtYXliZSB0aGF0IG1hdHRlcnMgbGVzcyBmb3IgdmssIHdoZXJlIHdlIGFyZW4ndCB1c2lu ZyBhIHVzZXJzcGFjZSBibyBjYWNoZSkKPiA+Cj4gPiBCUiwKPiA+IC1SCj4gPgo+ID4gPiAtIEJ1 ZmZlciBvYmplY3RzIGFyZW4ndCBhdHRhY2hlZCB0byBwaWRzLCBidXQgZmlsZXMuIEFuZCBmaWxl cyBjYW4gYmUKPiA+ID4gICBzaGFyZWQuIElmIHdlIHdhbnQgdG8gbGlzdCB0aGlzIHNvbWV3aGVy ZSBvdXRzaWRlIG9mIGRlYnVnZnMsIHdlIG5lZWQgdG8KPiA+ID4gICB0aWUgdGhpcyBpbnRvIHRo ZSBmaWxlcyBzb21laG93IChzbyBwcm9jKSwgZXhjZXB0IHRoZSB1bmRlcmx5aW5nIGZpbGVzCj4g PiA+ICAgYXJlIGFsbCBhbm9uIGlub2Rlcywgc28gdGhpcyBnZXRzIHJlYWxseSB0cmlja3kgSSB0 aGluayB0byBtYWtlIHdvcmsKPiA+ID4gICB3ZWxsLgo+ID4gPgo+ID4gPiBDaGVlcnMsIERhbmll bAo+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gQmVzdCByZWdhcmRzLAo+ID4gPiA+IFlpd2VpCj4gPiA+ ID4KPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBPbiBGcmksIE5vdiAxLCAyMDE5IGF0 IDE6MzcgQU0gUGVra2EgUGFhbGFuZW4gPHBwYWFsYW5lbkBnbWFpbC5jb20+IHdyb3RlOgo+ID4g PiA+ID4KPiA+ID4gPiA+IE9uIFRodSwgMzEgT2N0IDIwMTkgMTM6NTc6MDAgLTA0MDAKPiA+ID4g PiA+IEtlbm55IEhvIDx5Mmtlbm55QGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPgo+ID4gPiA+ ID4gPiBIaSBZaXdlaSwKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gVGhpcyBpcyB0aGUgbGF0ZXN0 IHNlcmllczoKPiA+ID4gPiA+ID4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9jb3Zlci8x MTEyMDM3MS8KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gKEkgc3RpbGwgbmVlZCB0byByZXBseSBz b21lIG9mIHRoZSBmZWVkYmFjay4pCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFJlZ2FyZHMsCj4g PiA+ID4gPiA+IEtlbm55Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IE9uIFRodSwgT2N0IDMxLCAy MDE5IGF0IDEyOjU5IFBNIFlpd2VpIFpoYW5nIDx6enlpd2VpQGdvb2dsZS5jb20+IHdyb3RlOgo+ ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gSGkgS2VubnksCj4gPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gPiBUaGFua3MgZm9yIHRoZSBpbmZvLiBEbyB5b3UgbWluZCBmb3J3YXJkaW5nIHRoZSBl eGlzdGluZyBkaXNjdXNzaW9uIHRvIG1lIG9yIGhhdmUgbWUgY2MnZWQgaW4gdGhhdCB0aHJlYWQ/ Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBCZXN0LAo+ID4gPiA+ID4gPiA+IFlpd2VpCj4g PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBPbiBXZWQsIE9jdCAzMCwgMjAxOSBhdCAxMDoyMyBQ TSBLZW5ueSBIbyA8eTJrZW5ueUBnbWFpbC5jb20+IHdyb3RlOgo+ID4gPiA+ID4gPiA+Pgo+ID4g PiA+ID4gPiA+PiBIaSBZaXdlaSwKPiA+ID4gPiA+ID4gPj4KPiA+ID4gPiA+ID4gPj4gSSBhbSBu b3Qgc3VyZSBpZiB5b3UgYXJlIGF3YXJlLCB0aGVyZSBpcyBhbiBvbmdvaW5nIFJGQyBvbiBhZGRp bmcgZHJtCj4gPiA+ID4gPiA+ID4+IHN1cHBvcnQgaW4gY2dyb3VwIGZvciB0aGUgcHVycG9zZSBv ZiByZXNvdXJjZSB0cmFja2luZy4gIE9uZSBvZiB0aGUKPiA+ID4gPiA+ID4gPj4gcmVzb3VyY2Ug aXMgR1BVIG1lbW9yeS4gIEl0J3Mgbm90IGV4YWN0bHkgdGhlIHNhbWUgYXMgd2hhdCB5b3UgYXJl Cj4gPiA+ID4gPiA+ID4+IHByb3Bvc2luZyAoaXQgZG9lc24ndCB0cmFjayBBUEkgdXNhZ2UsIGJ1 dCBpdCB0cmFja3MgdGhlIHR5cGUgb2YgR1BVCj4gPiA+ID4gPiA+ID4+IG1lbW9yeSBmcm9tIGtt ZCBwZXJzcGVjdGl2ZSkgYnV0IHBlcmhhcHMgaXQgd291bGQgYmUgb2YgaW50ZXJlc3QgdG8KPiA+ ID4gPiA+ID4gPj4geW91LiAgVGhlcmUgYXJlIG5vIGNvbnNlbnN1cyBvbiBpdCBhdCB0aGlzIHBv aW50Lgo+ID4gPiA+ID4KPiA+ID4gPiA+IEhpIFlpd2VpLAo+ID4gPiA+ID4KPiA+ID4gPiA+IEkn ZCBsaWtlIHRvIHBvaW50IG91dCBhbiBlZmZvcnQgdG8gaGF2ZSBkcml2ZXJzIGxhYmVsIEJPcyBm b3IgZGVidWdnaW5nCj4gPiA+ID4gPiBwdXJwb3NlczogaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVsLzIwMTktT2N0b2Jlci8yMzk3MjcuaHRtbAo+ID4gPiA+ ID4KPiA+ID4gPiA+IEkgZG9uJ3Qga25vdyBpZiBpdCB3b3VsZCB3b3JrLCBidXQgYW4gb2J2aW91 cyBpZGVhIG1pZ2h0IGJlIHRvIHVzZQo+ID4gPiA+ID4gdGhvc2UgbGFiZWxzIGZvciB0cmFja2lu ZyB0aGUga2luZHMgb2YgYnVmZmVycyAtIGEgcGllY2Ugb2YgVUFQSSB3aGljaCBJCj4gPiA+ID4g PiBiZWxpZXZlIHlvdSBhcmUgc3RpbGwgbWlzc2luZy4KPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4g PiA+ID4gVGhhbmtzLAo+ID4gPiA+ID4gcHEKPiA+ID4KPiA+ID4gLS0KPiA+ID4gRGFuaWVsIFZl dHRlcgo+ID4gPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiA+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gPiBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbA==