From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenny Ho Subject: Re: Proposal to report GPU private memory allocations with sysfs nodes [plain text version] Date: Thu, 31 Oct 2019 13:57:00 -0400 Message-ID: References: <20191028152602.GA5057@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by gabe.freedesktop.org (Postfix) with ESMTPS id DA80F6E0DE for ; Thu, 31 Oct 2019 17:57:13 +0000 (UTC) Received: by mail-wr1-x432.google.com with SMTP id s1so7284911wro.0 for ; Thu, 31 Oct 2019 10:57:13 -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: Yiwei Zhang Cc: Alistair Delva , Prahlad Kilambi , dri-devel , Jerome Glisse , Sean Paul , kraxel@redhat.com, Chris Forbes , kernel-team@android.com List-Id: dri-devel@lists.freedesktop.org SGkgWWl3ZWksCgpUaGlzIGlzIHRoZSBsYXRlc3Qgc2VyaWVzOgpodHRwczovL3BhdGNod29yay5r ZXJuZWwub3JnL2NvdmVyLzExMTIwMzcxLwoKKEkgc3RpbGwgbmVlZCB0byByZXBseSBzb21lIG9m IHRoZSBmZWVkYmFjay4pCgpSZWdhcmRzLApLZW5ueQoKT24gVGh1LCBPY3QgMzEsIDIwMTkgYXQg MTI6NTkgUE0gWWl3ZWkgWmhhbmcgPHp6eWl3ZWlAZ29vZ2xlLmNvbT4gd3JvdGU6Cj4KPiBIaSBL ZW5ueSwKPgo+IFRoYW5rcyBmb3IgdGhlIGluZm8uIERvIHlvdSBtaW5kIGZvcndhcmRpbmcgdGhl IGV4aXN0aW5nIGRpc2N1c3Npb24gdG8gbWUgb3IgaGF2ZSBtZSBjYydlZCBpbiB0aGF0IHRocmVh ZD8KPgo+IEJlc3QsCj4gWWl3ZWkKPgo+IE9uIFdlZCwgT2N0IDMwLCAyMDE5IGF0IDEwOjIzIFBN IEtlbm55IEhvIDx5Mmtlbm55QGdtYWlsLmNvbT4gd3JvdGU6Cj4+Cj4+IEhpIFlpd2VpLAo+Pgo+ PiBJIGFtIG5vdCBzdXJlIGlmIHlvdSBhcmUgYXdhcmUsIHRoZXJlIGlzIGFuIG9uZ29pbmcgUkZD IG9uIGFkZGluZyBkcm0KPj4gc3VwcG9ydCBpbiBjZ3JvdXAgZm9yIHRoZSBwdXJwb3NlIG9mIHJl c291cmNlIHRyYWNraW5nLiAgT25lIG9mIHRoZQo+PiByZXNvdXJjZSBpcyBHUFUgbWVtb3J5LiAg SXQncyBub3QgZXhhY3RseSB0aGUgc2FtZSBhcyB3aGF0IHlvdSBhcmUKPj4gcHJvcG9zaW5nIChp dCBkb2Vzbid0IHRyYWNrIEFQSSB1c2FnZSwgYnV0IGl0IHRyYWNrcyB0aGUgdHlwZSBvZiBHUFUK Pj4gbWVtb3J5IGZyb20ga21kIHBlcnNwZWN0aXZlKSBidXQgcGVyaGFwcyBpdCB3b3VsZCBiZSBv ZiBpbnRlcmVzdCB0bwo+PiB5b3UuICBUaGVyZSBhcmUgbm8gY29uc2Vuc3VzIG9uIGl0IGF0IHRo aXMgcG9pbnQuCj4+Cj4+IChzb3JyeSBmb3IgYmVpbmcgbGF0ZSB0byB0aGUgZGlzY3Vzc2lvbi4g IEkgb25seSBub3RpY2VkIHRoaXMgdGhyZWFkCj4+IHdoZW4gb25lIG9mIHRoZSBlbWFpbCBnb3Qg bHVja3kgYW5kIGVzY2FwZSB0aGUgc3BhbSBmb2xkZXIuKQo+Pgo+PiBSZWdhcmRzLAo+PiBLZW5u eQo+Pgo+PiBPbiBXZWQsIE9jdCAzMCwgMjAxOSBhdCA0OjE0IEFNIFlpd2VpIFpoYW5nIDx6enlp d2VpQGdvb2dsZS5jb20+IHdyb3RlOgo+PiA+Cj4+ID4gSGkgSmVyb21lIGFuZCBhbGwgZm9sa3Ms Cj4+ID4KPj4gPiBJbiBhZGRpdGlvbiB0byBteSBsYXN0IHJlcGx5LCBJIGp1c3Qgd2FubmEgZ2V0 IHNvbWUgbW9yZSBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhpcyBvbiB0aGUgdXBzdHJlYW0gc2lk ZS4KPj4gPgo+PiA+IDEuIERvIHlvdSB0aGluayB0aGlzKHN0YW5kYXJkaXplIGEgd2F5IHRvIHJl cG9ydCBHUFUgcHJpdmF0ZSBhbGxvY2F0aW9ucykgaXMgZ29pbmcgdG8gYmUgYSB1c2VmdWwgdGhp bmcgb24gdGhlIHVwc3RyZWFtIGFzIHdlbGw/IEl0IGdyYW50cyBhIGxvdCBiZW5lZml0cyBmb3Ig QW5kcm9pZCwgYnV0IEknZCBsaWtlIHRvIGdldCBhbiBpZGVhIGZvciB0aGUgbm9uLUFuZHJvaWQg d29ybGQuCj4+ID4KPj4gPiAyLiBUaGVyZSBtaWdodCBiZSBzb21lIHdvcnJpZXMgdGhhdCB1cHN0 cmVhbSBrZXJuZWwgZHJpdmVyIGhhcyBubyBpZGVhIHJlZ2FyZGluZyB0aGUgQVBJLiBIb3dldmVy LCB0byBhY2hpZXZlIGdvb2QgZmlkZWxpdHkgYXJvdW5kIG1lbW9yeSByZXBvcnRpbmcsIHdlJ2Qg aGF2ZSB0byBwYXNzIGRvd24gY2VydGFpbiBtZXRhZGF0YSB3aGljaCBpcyBrbm93biBvbmx5IGJ5 IHRoZSB1c2VybGFuZC4gQ29uc2lkZXIgdGhpcyB1c2UgY2FzZTogb24gdGhlIHVwc3RyZWFtIHNp ZGUsIGZyZWVkcmVubyBmb3IgZXhhbXBsZSwgc29tZSBtZW1vcnkgYnVmZmVyIG9iamVjdChCTykg ZHVyaW5nIGl0cyBvd24gbGlmZWN5Y2xlIGNvdWxkIHJlcHJlc2VudCB0b3RhbGx5IGRpZmZlcmVu dCB0aGluZ3MsIGFuZCBrbWQgaXMgbm90IGF3YXJlIG9mIHRoYXQuIFdoZW4gd2UnZCBsaWtlIHRv IHRha2UgbWVtb3J5IHNuYXBzaG90cyBhdCBjZXJ0YWluIGdyYW51bGFyaXR5LCB3ZSBoYXZlIHRv IGtub3cgd2hhdCB0aGF0IGJ1ZmZlciByZXByZXNlbnRzIHNvIHRoYXQgdGhlIHNuYXBzaG90IGNh biBiZSBtZWFuaW5nZnVsIGFuZCB1c2VmdWwuCj4+ID4KPj4gPiBJZiB3ZSBqdXN0IGtlZXAgdGhp cyBBbmRyb2lkIHNwZWNpZmljLCBJJ2Qgd29ycnkgc29tZSBkYXkgdGhlIHVwc3RyZWFtIGhhcyBz dGFuZGFyZGl6ZWQgYSB3YXkgdG8gcmVwb3J0IHRoaXMgYW5kIEFuZHJvaWQgdmVuZG9ycyBoYXZl IHRvIHRha2UgZXh0cmEgZWZmb3J0cyB0byBtaWdyYXRlIG92ZXIuIFRoaXMgaXMgb25lIG9mIHRo ZSBtYWluIHJlYXNvbnMgd2UnZCBsaWtlIHRvIGRvIHRoaXMgb24gdGhlIHVwc3RyZWFtIHNpZGUu Cj4+ID4KPj4gPiBUaW1lbGluZSB3aXNlLCBBbmRyb2lkIGhhcyBleHBsaWNpdCBkZWFkbGluZXMg Zm9yIHRoZSBuZXh0IHJlbGVhc2UgYW5kIHdlIGhhdmUgdG8gcHVzaCBoYXJkIHRvd2FyZHMgdGhv c2UuIEFueSBwcm9tcHQgcmVzcG9uc2VzIGFyZSB2ZXJ5IG11Y2ggYXBwcmVjaWF0ZWQhCj4+ID4K Pj4gPiBCZXN0IHJlZ2FyZHMsCj4+ID4gWWl3ZWkKPj4gPgo+PiA+IE9uIE1vbiwgT2N0IDI4LCAy MDE5IGF0IDExOjMzIEFNIFlpd2VpIFpoYW5nIDx6enlpd2VpQGdvb2dsZS5jb20+IHdyb3RlOgo+ PiA+Pgo+PiA+PiBPbiBNb24sIE9jdCAyOCwgMjAxOSBhdCA4OjI2IEFNIEplcm9tZSBHbGlzc2Ug PGpnbGlzc2VAcmVkaGF0LmNvbT4gd3JvdGU6Cj4+ID4+Pgo+PiA+Pj4gT24gRnJpLCBPY3QgMjUs IDIwMTkgYXQgMTE6MzU6MzJBTSAtMDcwMCwgWWl3ZWkgWmhhbmcgd3JvdGU6Cj4+ID4+PiA+IEhp IGZvbGtzLAo+PiA+Pj4gPgo+PiA+Pj4gPiBUaGlzIGlzIHRoZSBwbGFpbiB0ZXh0IHZlcnNpb24g b2YgdGhlIHByZXZpb3VzIGVtYWlsIGluIGNhc2UgdGhhdCB3YXMKPj4gPj4+ID4gY29uc2lkZXJl ZCBhcyBzcGFtLgo+PiA+Pj4gPgo+PiA+Pj4gPiAtLS0gQmFja2dyb3VuZCAtLS0KPj4gPj4+ID4g T24gdGhlIGRvd25zdHJlYW0gQW5kcm9pZCwgdmVuZG9ycyB1c2VkIHRvIHJlcG9ydCBHUFUgcHJp dmF0ZSBtZW1vcnkKPj4gPj4+ID4gYWxsb2NhdGlvbnMgd2l0aCBkZWJ1Z2ZzIG5vZGVzIGluIHRo ZWlyIG93biBmb3JtYXRzLiBIb3dldmVyLCBkZWJ1Z2ZzIG5vZGVzCj4+ID4+PiA+IGFyZSBnZXR0 aW5nIGRlcHJlY2F0ZWQgaW4gdGhlIG5leHQgQW5kcm9pZCByZWxlYXNlLgo+PiA+Pj4KPj4gPj4+ IE1heWJlIGV4cGxhaW4gd2h5IGl0IGlzIHVzZWZ1bCBmaXJzdCA/Cj4+ID4+Cj4+ID4+Cj4+ID4+ IE1lbW9yeSBpcyBwcmVjaW91cyBvbiBBbmRyb2lkIG1vYmlsZSBwbGF0Zm9ybXMuIEFwcHMgdXNp bmcgYSBsYXJnZSBhbW91bnQgb2YKPj4gPj4gbWVtb3J5LCBnYW1lcywgdGVuZCB0byBtYWludGFp biBhIHRhYmxlIGZvciB0aGUgbWVtb3J5IG9uIGRpZmZlcmVudCBkZXZpY2VzIHdpdGgKPj4gPj4g ZGlmZmVyZW50IHByZWRpY3Rpb24gbW9kZWxzLiBQcml2YXRlIGdwdSBtZW1vcnkgYWxsb2NhdGlv bnMgaXMgY3VycmVudGx5IHNlbWktYmxpbmQKPj4gPj4gdG8gdGhlIGFwcHMgYW5kIHRoZSBwbGF0 Zm9ybSBhcyB3ZWxsLgo+PiA+Pgo+PiA+PiBCeSBoYXZpbmcgdGhlIGRhdGEsIHRoZSBwbGF0Zm9y bSBjYW4gZG86Cj4+ID4+ICgxKSBHUFUgbWVtb3J5IHByb2ZpbGluZyBhcyBwYXJ0IG9mIHRoZSBo dWdlIEFuZHJvaWQgcHJvZmlsZXIgaW4gcHJvZ3Jlc3MuCj4+ID4+ICgyKSBBbmRyb2lkIHN5c3Rl bSBoZWFsdGggdGVhbSBjYW4gZW5yaWNoIHRoZSBwZXJmb3JtYW5jZSB0ZXN0IGNvdmVyYWdlLgo+ PiA+PiAoMykgV2UgY2FuIGNvbGxlY3QgZmlsZWQgbWV0cmljcyB0byBkZXRlY3QgYW55IHJlZ3Jl c3Npb24gb24gdGhlIGdwdSBwcml2YXRlIG1lbW9yeQo+PiA+PiBhbGxvY2F0aW9ucyBpbiB0aGUg cHJvZHVjdGlvbiBwb3B1bGF0aW9uLgo+PiA+PiAoNCkgU2hlbGwgdXNlciBjYW4gZWFzaWx5IGR1 bXAgdGhlIGFsbG9jYXRpb25zIGluIGEgdW5pZm9ybSB3YXkgYWNyb3NzIHZlbmRvcnMuCj4+ID4+ ICg1KSBQbGF0Zm9ybSBjYW4gZmVlZCB0aGUgZGF0YSB0byB0aGUgYXBwcyBzbyB0aGF0IGFwcHMg Y2FuIGRvIG1lbW9yeSBhbGxvY2F0aW9ucwo+PiA+PiBpbiBhIG1vcmUgcHJlZGljdGFibGUgd2F5 Lgo+PiA+Pgo+PiA+Pj4KPj4gPj4+ID4KPj4gPj4+ID4gLS0tIFByb3Bvc2FsIC0tLQo+PiA+Pj4g PiBXZSBhcmUgdGFraW5nIHRoZSBjaGFuY2UgdG8gdW5pZnkgYWxsIHRoZSB2ZW5kb3JzIHRvIG1p Z3JhdGUgdGhlaXIgZXhpc3RpbmcKPj4gPj4+ID4gZGVidWdmcyBub2RlcyBpbnRvIGEgc3RhbmRh cmRpemVkIHN5c2ZzIG5vZGUgc3RydWN0dXJlLiBUaGVuIHRoZSBwbGF0Zm9ybQo+PiA+Pj4gPiBp cyBhYmxlIHRvIGRvIGEgYnVuY2ggb2YgdXNlZnVsIHRoaW5nczogbWVtb3J5IHByb2ZpbGluZywg c3lzdGVtIGhlYWx0aAo+PiA+Pj4gPiBjb3ZlcmFnZSwgZmllbGQgbWV0cmljcywgbG9jYWwgc2hl bGwgZHVtcCwgaW4tYXBwIGFwaSwgZXRjLiBUaGlzIHByb3Bvc2FsCj4+ID4+PiA+IGlzIGJldHRl ciBzZXJ2ZWQgdXBzdHJlYW0gYXMgYWxsIEdQVSB2ZW5kb3JzIGNhbiBzdGFuZGFyZGl6ZSBhIGdw dSBtZW1vcnkKPj4gPj4+ID4gc3RydWN0dXJlIGFuZCByZWR1Y2UgZnJhZ21lbnRhdGlvbiBhY3Jv c3MgQW5kcm9pZCBhbmQgTGludXggdGhhdCBjbGllbnRzCj4+ID4+PiA+IGNhbiByZWx5IG9uLgo+ PiA+Pj4gPgo+PiA+Pj4gPiAtLS0gRGV0YWlsZWQgZGVzaWduIC0tLQo+PiA+Pj4gPiBUaGUgc3lz ZnMgbm9kZSBzdHJ1Y3R1cmUgbG9va3MgbGlrZSBiZWxvdzoKPj4gPj4+ID4gL3N5cy9kZXZpY2Vz Lzxyby5nZnguc3lzZnMuMD4vPHBpZD4vPHR5cGVfbmFtZT4KPj4gPj4+ID4gZS5nLiAiL3N5cy9k ZXZpY2VzL21hbGkwL2dwdV9tZW0vNjA2L2dsX2J1ZmZlciIgYW5kIHRoZSBnbF9idWZmZXIgaXMg YSBub2RlCj4+ID4+PiA+IGhhdmluZyB0aGUgY29tbWEgc2VwYXJhdGVkIHNpemUgdmFsdWVzOiAi NDA5Niw4MTkyMCwuLi4sNDA5NiIuCj4+ID4+Pgo+PiA+Pj4gSG93IGRvZXMga2VybmVsIGtub3dz IHdoYXQgQVBJIHRoZSBhbGxvY2F0aW9uIGlzIHVzZSBmb3IgPyBXaXRoIHRoZQo+PiA+Pj4gb3Bl biBzb3VyY2UgZHJpdmVyIHlvdSBuZXZlciBzcGVjaWZ5IHdoYXQgQVBJIGlzIGNyZWF0aW5nIGEg Z2VtIG9iamVjdAo+PiA+Pj4gKG9wZW5nbCwgdnVsa2FuLCAuLi4pIG5vciB3aGF0IHB1cnBvc2Ug KHRyYW5zaWVudCwgc2hhZGVyLCAuLi4pLgo+PiA+Pgo+PiA+Pgo+PiA+PiBPaCwgaXMgdGhpcyBh IGhhcmQgcmVxdWlyZW1lbnQgZm9yIHRoZSBvcGVuIHNvdXJjZSBkcml2ZXJzIHRvIG5vdCBib29r a2VlcCBhbnkKPj4gPj4gZGF0YSBmcm9tIHVzZXJsYW5kPyBJIHRoaW5rIHRoZSBBUEkgaXMganVz dCBzb21lIGFkZGl0aW9uYWwgbWV0YWRhdGEgcGFzc2VkIGRvd24uCj4+ID4+Cj4+ID4+Pgo+PiA+ Pj4KPj4gPj4+ID4gRm9yIHRoZSB0b3AgbGV2ZWwgcm9vdCwgdmVuZG9ycyBjYW4gY2hvb3NlIHRo ZWlyIG93biBuYW1lcyBiYXNlZCBvbiB0aGUKPj4gPj4+ID4gdmFsdWUgb2Ygcm8uZ2Z4LnN5c2Zz LjAgdGhlIHZlbmRvcnMgc2V0LiAoMSkgRm9yIHRoZSBtdWx0aXBsZSBncHUgZHJpdmVyCj4+ID4+ PiA+IGNhc2VzLCB3ZSBjYW4gdXNlIHJvLmdmeC5zeXNmcy4xLCByby5nZnguc3lzZnMuMiBmb3Ig dGhlIDJuZCBhbmQgM3JkIEtNRHMuCj4+ID4+PiA+ICgyKSBJdCdzIGFsc28gYWxsb3dlZCB0byBw dXQgc29tZSBzdWItZGlyIGZvciBleGFtcGxlICJrZ3NsL2dwdV9tZW0iIG9yCj4+ID4+PiA+ICJt YWxpMC9ncHVfbWVtIiBpbiB0aGUgcm8uZ2Z4LnN5c2ZzLjxjaGFubmVsPiBwcm9wZXJ0eSBpZiB0 aGUgcm9vdCBuYW1lCj4+ID4+PiA+IHVuZGVyIC9zeXMvZGV2aWNlcy8gaXMgYWxyZWFkeSBjcmVh dGVkIGFuZCB1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4KPj4gPj4+Cj4+ID4+PiBPbiBvbmUgc2lk ZSB5b3Ugd2FudCB0byBzdGFuZGFyZGl6ZSBvbiB0aGUgb3RoZXIgeW91IHdhbnQgdG8gZ2l2ZQo+ PiA+Pj4gY29tcGxldGUgZnJlZWRvbSBvbiB0aGUgdG9wIGxldmVsIG5hbWluZyBzY2hlbWUuIEkg d291bGQgcmF0aGVyIHNlZSBhCj4+ID4+PiBjb25zaXN0ZW50IG5hbWluZyBzY2hlbWUgKGllIHNv bWV0aGluZyBtb3JlIHJlc3RyYWludCBhbmQgd2l0aCBsaXR0bGUKPj4gPj4+IHBsYWNlIGZvciBp bnRlcnByYXRpb24gYnkgaW5kaXZpZHVhbCBkcml2ZXIpCj4+ID4+Cj4+ID4+Cj4+ID4+IFRoYW5r cyBmb3IgY29tbWVudGluZyBvbiB0aGlzLiBXZSBkZWZpbml0ZWx5IG5lZWQgc29tZSBzdWdnZXN0 aW9ucyBvbiB0aGUgcm9vdAo+PiA+PiBkaXJlY3RvcnkuIEluIHRoZSBtdWx0aS1ncHUgY2FzZSBv biBkZXNrdG9wLCBpcyB0aGVyZSBzb21lIGV4aXN0aW5nIGNvbnN1bWVyIHRvCj4+ID4+IHF1ZXJ5 ICJzb21lIGRhdGEiIGZyb20gYWxsIHRoZSBHUFVzPyBIb3cgZG9lcyB0aGUgdG9vbCBmaW5kIGFs bCBHUFVzIGFuZAo+PiA+PiBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlbT8gSXMgdGhpcyBhbHJl YWR5IHN0YW5kYXJkaXplZD8KPj4gPj4KPj4gPj4+ID4gRm9yIHRoZSAybmQgbGV2ZWwgInBpZCIs IHRoZXJlIGFyZSB1c3VhbGx5IGp1c3QgYSBjb3VwbGUgb2YgdGhlbSBwZXIKPj4gPj4+ID4gc25h cHNob3QsIHNpbmNlIHdlIG9ubHkgdGFrZXMgc25hcHNob3QgZm9yIHRoZSBhY3RpdmUgb25lcy4K Pj4gPj4+Cj4+ID4+PiA/IERvIG5vdCB1bmRlcnN0YW5kIGhlcmUsIHlvdSBjYW4gaGF2ZSBhbnkg bnVtYmVyIG9mIGFwcGxpY2F0aW9ucyB3aXRoCj4+ID4+PiBHUFUgb2JqZWN0cyA/IEFuZCB0aHVz IHRoZXJlIGlzIG5vIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgUElELiBQbGVhc2UKPj4gPj4+IGNv bnNpZGVyIGRlc2t0b3AgdG9vLCBpIGRvIG5vdCBrbm93IHdoYXQga2luZCBvZiBsaW1pdGF0aW9u IGFuZHJvaWQKPj4gPj4+IGltcG9zZS4KPj4gPj4KPj4gPj4KPj4gPj4gV2UgYXJlIG9ubHkgaW50 ZXJlc3RlZCBpbiB0cmFja2luZyAqYWN0aXZlKiBHUFUgcHJpdmF0ZSBhbGxvY2F0aW9ucy4gU28g eWVzLCBhbnkKPj4gPj4gYXBwbGljYXRpb24gY3VycmVudGx5IGhvbGRpbmcgYW4gYWN0aXZlIEdQ VSBjb250ZXh0IHdpbGwgcHJvYmFibHkgaGFzIGEgbm9kZSBoZXJlLgo+PiA+PiBTaW5jZSB3ZSB3 YW50IHRvIGRvIHByb2ZpbGluZyBmb3Igc3BlY2lmaWMgYXBwcywgdGhlIGRhdGEgaGFzIHRvIGJl IHBlciBhcHBsaWNhdGlvbgo+PiA+PiBiYXNlZC4gSSBkb24ndCBnZXQgeW91ciBjb25jZXJucyBo ZXJlLiBJZiBpdCdzIGFib3V0IHRoZSB0cmFja2luZyBvdmVyaGVhZCwgaXQncyByYXJlCj4+ID4+ IHRvIHNlZSB0b25zIG9mIGFwcGxpY2F0aW9uIGRvaW5nIHByaXZhdGUgZ3B1IGFsbG9jYXRpb25z IGF0IHRoZSBzYW1lIHRpbWUuIENvdWxkCj4+ID4+IHlvdSBoZWxwIGVsYWJvcmF0ZSBhIGJpdD8K Pj4gPj4KPj4gPj4+ID4gRm9yIHRoZSAzcmQgbGV2ZWwgInR5cGVfbmFtZSIsIHRoZSB0eXBlIG5h bWUgd2lsbCBiZSBvbmUgb2YgdGhlIEdQVSBtZW1vcnkKPj4gPj4+ID4gb2JqZWN0IHR5cGVzIGlu IGxvd2VyIGNhc2UsIGFuZCB0aGUgdmFsdWUgd2lsbCBiZSBhIGNvbW1hIHNlcGFyYXRlZAo+PiA+ Pj4gPiBzZXF1ZW5jZSBvZiBzaXplIHZhbHVlcyBmb3IgYWxsIHRoZSBhbGxvY2F0aW9ucyB1bmRl ciB0aGF0IHNwZWNpZmljIHR5cGUuCj4+ID4+PiA+Cj4+ID4+PiA+IFdlIGVzcGVjaWFsbHkgd291 bGQgbGlrZSBzb21lIGNvbW1lbnRzIG9uIHRoaXMgcGFydC4gRm9yIHRoZSBHUFUgbWVtb3J5Cj4+ ID4+PiA+IG9iamVjdCB0eXBlcywgd2UgZGVmaW5lZCA5IGRpZmZlcmVudCB0eXBlcyBmb3IgQW5k cm9pZDoKPj4gPj4+ID4gKDEpIFVOS05PV04gLy8gbm90IGFjY291bnRlZCBmb3IgaW4gYW55IG90 aGVyIGNhdGVnb3J5Cj4+ID4+PiA+ICgyKSBTSEFERVIgLy8gc2hhZGVyIGJpbmFyaWVzCj4+ID4+ PiA+ICgzKSBDT01NQU5EIC8vIGFsbG9jYXRpb25zIHdoaWNoIGhhdmUgYSBsaWZldGltZSBzaW1p bGFyIHRvIGEKPj4gPj4+ID4gVmtDb21tYW5kQnVmZmVyCj4+ID4+PiA+ICg0KSBWVUxLQU4gLy8g YmFja2luZyBmb3IgVmtEZXZpY2VNZW1vcnkKPj4gPj4+ID4gKDUpIEdMX1RFWFRVUkUgLy8gR0wg VGV4dHVyZSBhbmQgUmVuZGVyQnVmZmVyCj4+ID4+PiA+ICg2KSBHTF9CVUZGRVIgLy8gR0wgQnVm ZmVyCj4+ID4+PiA+ICg3KSBRVUVSWSAvLyBiYWNraW5nIGZvciBxdWVyeQo+PiA+Pj4gPiAoOCkg REVTQ1JJUFRPUiAvLyBhbGxvY2F0aW9ucyB3aGljaCBoYXZlIGEgbGlmZXRpbWUgc2ltaWxhciB0 byBhCj4+ID4+PiA+IFZrRGVzY3JpcHRvclNldAo+PiA+Pj4gPiAoOSkgVFJBTlNJRU5UIC8vIHJh bmRvbSB0cmFuc2llbnQgdGhpbmdzIHRoYXQgdGhlIGRyaXZlciBuZWVkcwo+PiA+Pj4gPgo+PiA+ Pj4gPiBXZSBhcmUgd29uZGVyaW5nIGlmIHRob3NlIHR5cGUgZW51bWVyYXRpb25zIG1ha2Ugc2Vu c2UgdG8gdGhlIHVwc3RyZWFtIHNpZGUKPj4gPj4+ID4gYXMgd2VsbCwgb3IgbWF5YmUgd2UganVz dCBkZWFsIHdpdGggb3VyIG93biBkaWZmZXJlbnQgdHlwZSBzZXRzLiBDdXogb24gdGhlCj4+ID4+ PiA+IEFuZHJvaWQgc2lkZSwgd2UnbGwganVzdCByZWFkIHRob3NlIG5vZGVzIG5hbWVkIGFmdGVy IHRoZSB0eXBlcyB3ZSBkZWZpbmVkCj4+ID4+PiA+IGluIHRoZSBzeXNmcyBub2RlIHN0cnVjdHVy ZS4KPj4gPj4+Cj4+ID4+PiBTZWUgbXkgYWJvdmUgcG9pbnQgb2Ygb3BlbiBzb3VyY2UgZHJpdmVy IGFuZCBrZXJuZWwgYmVpbmcgdW5hd2FyZQo+PiA+Pj4gb2YgdGhlIGFsbG9jYXRpb24gcHVycG9z ZSBhbmQgdXNlLgo+PiA+Pj4KPj4gPj4+IENoZWVycywKPj4gPj4+IErDqXLDtG1lCj4+ID4+Pgo+ PiA+Pgo+PiA+PiBNYW55IHRoYW5rcyBmb3IgdGhlIHJlcGx5IQo+PiA+PiBZaXdlaQo+PiA+Cj4+ ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gPiBk cmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+PiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==