From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tiago Vignatti Subject: Re: [PATCH v6 3/5] dma-buf: Add ioctls to allow userspace to flush Date: Fri, 18 Dec 2015 16:46:03 -0200 Message-ID: <5674546B.6020403@intel.com> References: <1450304743-6571-1-git-send-email-tiago.vignatti@intel.com> <1450304743-6571-4-git-send-email-tiago.vignatti@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 9BC416E35A for ; Fri, 18 Dec 2015 10:46:09 -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: Alex Deucher Cc: Daniel Thompson , Daniel Vetter , Thomas Hellstrom , Maling list - DRI developers , Jerome Glisse , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gMTIvMTcvMjAxNSAwNDoxOSBQTSwgQWxleCBEZXVjaGVyIHdyb3RlOgo+IE9uIFdlZCwgRGVj IDE2LCAyMDE1IGF0IDU6MjUgUE0sIFRpYWdvIFZpZ25hdHRpCj4gPHRpYWdvLnZpZ25hdHRpQGlu dGVsLmNvbT4gd3JvdGU6Cj4+IEZyb206IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3 bGwuY2g+Cj4+Cj4+IFRoZSB1c2Vyc3BhY2UgbWlnaHQgbmVlZCBzb21lIHNvcnQgb2YgY2FjaGUg Y29oZXJlbmN5IG1hbmFnZW1lbnQgZS5nLiB3aGVuIENQVQo+PiBhbmQgR1BVIGRvbWFpbnMgYXJl IGJlaW5nIGFjY2Vzc2VkIHRocm91Z2ggZG1hLWJ1ZiBhdCB0aGUgc2FtZSB0aW1lLiBUbwo+PiBj aXJjdW12ZW50IHRoaXMgcHJvYmxlbSB0aGVyZSBhcmUgYmVnaW4vZW5kIGNvaGVyZW5jeSBtYXJr ZXJzLCB0aGF0IGZvcndhcmQKPj4gZGlyZWN0bHkgdG8gZXhpc3RpbmcgZG1hLWJ1ZiBkZXZpY2Ug ZHJpdmVycyB2ZnVuYyBob29rcy4gVXNlcnNwYWNlIGNhbiBtYWtlIHVzZQo+PiBvZiB0aG9zZSBt YXJrZXJzIHRocm91Z2ggdGhlIERNQV9CVUZfSU9DVExfU1lOQyBpb2N0bC4gVGhlIHNlcXVlbmNl IHdvdWxkIGJlCj4+IHVzZWQgbGlrZSBmb2xsb3dpbmc6Cj4+ICAgICAgIC0gbW1hcCBkbWEtYnVm IGZkCj4+ICAgICAgIC0gZm9yIGVhY2ggZHJhd2luZy91cGxvYWQgY3ljbGUgaW4gQ1BVIDEuIFNZ TkNfU1RBUlQgaW9jdGwsIDIuIHJlYWQvd3JpdGUKPj4gICAgICAgICB0byBtbWFwIGFyZWEgMy4g U1lOQ19FTkQgaW9jdGwuIFRoaXMgY2FuIGJlIHJlcGVhdGVkIGFzIG9mdGVuIGFzIHlvdQo+PiAg ICAgICAgIHdhbnQgKHdpdGggdGhlIG5ldyBkYXRhIGJlaW5nIGNvbnN1bWVkIGJ5IHRoZSBHUFUg b3Igc2F5IHNjYW5vdXQgZGV2aWNlKQo+PiAgICAgICAtIG11bm1hcCBvbmNlIHlvdSBkb24ndCBu ZWVkIHRoZSBidWZmZXIgYW55IG1vcmUKPj4KPj4gdjIgKFRpYWdvKTogRml4IGhlYWRlciBmaWxl IHR5cGUgbmFtZXMgKHU2NCAtPiBfX3U2NCkKPj4gdjMgKFRpYWdvKTogQWRkIGRvY3VtZW50YXRp b24uIFVzZSBlbnVtIGRtYV9idWZfc3luY19mbGFncyB0byB0aGUgYmVnaW4vZW5kCj4+IGRtYS1i dWYgZnVuY3Rpb25zLiBDaGVjayBmb3Igb3ZlcmZsb3dzIGluIHN0YXJ0L2xlbmd0aC4KPj4gdjQg KFRpYWdvKTogdXNlIDJkIHJlZ2lvbnMgZm9yIHN5bmMuCj4+IHY1IChUaWFnbyk6IGZvcmdldCBh Ym91dCAyZCByZWdpb25zICh2NCk7IHVzZSBfSU9XIGluIERNQV9CVUZfSU9DVExfU1lOQyBhbmQK Pj4gcmVtb3ZlIHJhbmdlIGluZm9ybWF0aW9uIGZyb20gc3RydWN0IGRtYV9idWZfc3luYy4KPj4g djYgKFRpYWdvKTogdXNlIF9fdTY0IHN0cnVjdHVyZWQgcGFkZGVkIGZsYWdzIGluc3RlYWQgZW51 bS4gQWRqdXN0Cj4+IGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIHJlY29tbWVuZGF0aW9uIG9uIHVz aW5nIHN5bmMgaW9jdGxzLgo+Pgo+PiBDYzogU3VtaXQgU2Vtd2FsIDxzdW1pdC5zZW13YWxAbGlu YXJvLm9yZz4KPj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBp bnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFRpYWdvIFZpZ25hdHRpIDx0aWFnby52aWduYXR0 aUBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIERvY3VtZW50YXRpb24vZG1hLWJ1Zi1zaGFyaW5nLnR4 dCB8IDIyICsrKysrKysrKysrKysrKysrKystCj4+ICAgZHJpdmVycy9kbWEtYnVmL2RtYS1idWYu YyAgICAgICAgIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ ICAgaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1idWYuaCAgICAgIHwgMzggKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xp bnV4L2RtYS1idWYuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNo YXJpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0Cj4+IGluZGV4IDRm NGE4NGIuLjJkZGQ0YjIgMTAwNjQ0Cj4+IC0tLSBhL0RvY3VtZW50YXRpb24vZG1hLWJ1Zi1zaGFy aW5nLnR4dAo+PiArKysgYi9Eb2N1bWVudGF0aW9uL2RtYS1idWYtc2hhcmluZy50eHQKPj4gQEAg LTM1MCw3ICszNTAsMjcgQEAgQmVpbmcgYWJsZSB0byBtbWFwIGFuIGV4cG9ydCBkbWEtYnVmIGJ1 ZmZlciBvYmplY3QgaGFzIDIgbWFpbiB1c2UtY2FzZXM6Cj4+ICAgICAgaGFuZGxlcywgdG9vKS4g U28gaXQncyBiZW5lZmljaWFsIHRvIHN1cHBvcnQgdGhpcyBpbiBhIHNpbWlsYXIgZmFzaGlvbiBv bgo+PiAgICAgIGRtYS1idWYgdG8gaGF2ZSBhIGdvb2QgdHJhbnNpdGlvbiBwYXRoIGZvciBleGlz dGluZyBBbmRyb2lkIHVzZXJzcGFjZS4KPj4KPj4gLSAgIE5vIHNwZWNpYWwgaW50ZXJmYWNlcywg dXNlcnNwYWNlIHNpbXBseSBjYWxscyBtbWFwIG9uIHRoZSBkbWEtYnVmIGZkLgo+PiArICAgTm8g c3BlY2lhbCBpbnRlcmZhY2VzLCB1c2Vyc3BhY2Ugc2ltcGx5IGNhbGxzIG1tYXAgb24gdGhlIGRt YS1idWYgZmQuIFZlcnkKPj4gKyAgIGltcG9ydGFudCB0byBub3RlIHRob3VnaCBpcyB0aGF0LCBl dmVuIGlmIGl0IGlzIG5vdCBtYW5kYXRvcnksIHRoZSB1c2Vyc3BhY2UKPj4gKyAgIGlzIHN0cm9u Z2x5IHJlY29tbWVuZGVkIHRvIGFsd2F5cyB1c2UgdGhlIGNhY2hlIHN5bmNocm9uaXphdGlvbiBp b2N0bAo+PiArICAgKERNQV9CVUZfSU9DVExfU1lOQykgZGlzY3Vzc2VkIG5leHQuCj4+ICsKPj4g KyAgIFNvbWUgc3lzdGVtcyBtaWdodCBuZWVkIHNvbWUgc29ydCBvZiBjYWNoZSBjb2hlcmVuY3kg bWFuYWdlbWVudCBlLmcuIHdoZW4KPj4gKyAgIENQVSBhbmQgR1BVIGRvbWFpbnMgYXJlIGJlaW5n IGFjY2Vzc2VkIHRocm91Z2ggZG1hLWJ1ZiBhdCB0aGUgc2FtZSB0aW1lLiBUbwo+PiArICAgY2ly Y3VtdmVudCB0aGlzIHByb2JsZW0gdGhlcmUgYXJlIGJlZ2luL2VuZCBjb2hlcmVuY3kgbWFya2Vy cywgdGhhdCBmb3J3YXJkCj4+ICsgICBkaXJlY3RseSB0byBleGlzdGluZyBkbWEtYnVmIGRldmlj ZSBkcml2ZXJzIHZmdW5jIGhvb2tzLiBVc2Vyc3BhY2UgY2FuIG1ha2UKPj4gKyAgIHVzZSBvZiB0 aG9zZSBtYXJrZXJzIHRocm91Z2ggdGhlIERNQV9CVUZfSU9DVExfU1lOQyBpb2N0bC4gVGhlIHNl cXVlbmNlCj4+ICsgICB3b3VsZCBiZSB1c2VkIGxpa2UgZm9sbG93aW5nOgo+PiArICAgICAtIG1t YXAgZG1hLWJ1ZiBmZAo+PiArICAgICAtIGZvciBlYWNoIGRyYXdpbmcvdXBsb2FkIGN5Y2xlIGlu IENQVSAxLiBTWU5DX1NUQVJUIGlvY3RsLCAyLiByZWFkL3dyaXRlCj4+ICsgICAgICAgdG8gbW1h cCBhcmVhIDMuIFNZTkNfRU5EIGlvY3RsLiBUaGlzIGNhbiBiZSByZXBlYXRlZCBhcyBvZnRlbiBh cyB5b3UKPj4gKyAgICAgICB3YW50ICh3aXRoIHRoZSBuZXcgZGF0YSBiZWluZyBjb25zdW1lZCBi eSB0aGUgR1BVIG9yIHNheSBzY2Fub3V0IGRldmljZSkKPj4gKyAgICAgLSBtdW5tYXAgb25jZSB5 b3UgZG9uJ3QgbmVlZCB0aGUgYnVmZmVyIGFueSBtb3JlCj4+ICsKPj4gKyAgICBJbiBwcmluY2lw bGUgc3lzdGVtcyB3aXRoIHRoZSBtZW1vcnkgY2FjaGUgc2hhcmVkIGJ5IHRoZSBHUFUgYW5kIENQ VSBtYXkKPj4gKyAgICBub3QgbmVlZCBTWU5DX1NUQVJUIGFuZCBTWU5DX0VORCBidXQgc3RpbGws IHVzZXJzcGFjZSBpcyBhbHdheXMgZW5jb3VyYWdlZAo+PiArICAgIHRvIHVzZSB0aGVzZSBpb2N0 bHMgYmVmb3JlIGFuZCBhZnRlciwgcmVzcGVjdGl2ZWx5LCB3aGVuIGFjY2Vzc2luZyB0aGUKPj4g KyAgICBtYXBwZWQgYWRkcmVzcy4KPj4KPj4gICAyLiBTdXBwb3J0aW5nIGV4aXN0aW5nIG1tYXAg aW50ZXJmYWNlcyBpbiBpbXBvcnRlcnMKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1 Zi9kbWEtYnVmLmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4+IGluZGV4IGIyYWMxM2Iu LjlhMjk4YmQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPj4gKysr IGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+PiBAQCAtMzQsNiArMzQsOCBAQAo+PiAgICNp bmNsdWRlIDxsaW51eC9wb2xsLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+ Cj4+Cj4+ICsjaW5jbHVkZSA8dWFwaS9saW51eC9kbWEtYnVmLmg+Cj4+ICsKPj4gICBzdGF0aWMg aW5saW5lIGludCBpc19kbWFfYnVmX2ZpbGUoc3RydWN0IGZpbGUgKik7Cj4+Cj4+ICAgc3RydWN0 IGRtYV9idWZfbGlzdCB7Cj4+IEBAIC0yNTEsMTEgKzI1Myw1MiBAQCBvdXQ6Cj4+ICAgICAgICAg IHJldHVybiBldmVudHM7Cj4+ICAgfQo+Pgo+PiArc3RhdGljIGxvbmcgZG1hX2J1Zl9pb2N0bChz dHJ1Y3QgZmlsZSAqZmlsZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmOwo+PiArICAgICAgIHN0cnVjdCBkbWFfYnVmX3N5bmMgc3luYzsKPj4gKyAgICAg ICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb247Cj4+ICsKPj4gKyAgICAgICBkbWFi dWYgPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4+ICsKPj4gKyAgICAgICBpZiAoIWlzX2RtYV9idWZf ZmlsZShmaWxlKSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsg ICAgICAgc3dpdGNoIChjbWQpIHsKPj4gKyAgICAgICBjYXNlIERNQV9CVUZfSU9DVExfU1lOQzoK Pj4gKyAgICAgICAgICAgICAgIGlmIChjb3B5X2Zyb21fdXNlcigmc3luYywgKHZvaWQgX191c2Vy ICopIGFyZywgc2l6ZW9mKHN5bmMpKSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC1FRkFVTFQ7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGlmIChzeW5jLmZsYWdzICYgRE1BX0JV Rl9TWU5DX1JXKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBETUFfQklE SVJFQ1RJT05BTDsKPj4gKyAgICAgICAgICAgICAgIGVsc2UgaWYgKHN5bmMuZmxhZ3MgJiBETUFf QlVGX1NZTkNfUkVBRCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gRE1B X0ZST01fREVWSUNFOwo+PiArICAgICAgICAgICAgICAgZWxzZSBpZiAoc3luYy5mbGFncyAmIERN QV9CVUZfU1lOQ19XUklURSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0g RE1BX1RPX0RFVklDRTsKPj4gKyAgICAgICAgICAgICAgIGVsc2UKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGlmIChzeW5j LmZsYWdzICYgfkRNQV9CVUZfU1lOQ19WQUxJRF9GTEFHU19NQVNLKQo+PiArICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArICAgICAgICAgICAgICAgaWYgKHN5 bmMuZmxhZ3MgJiBETUFfQlVGX1NZTkNfRU5EKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBk bWFfYnVmX2VuZF9jcHVfYWNjZXNzKGRtYWJ1ZiwgZGlyZWN0aW9uKTsKPj4gKyAgICAgICAgICAg ICAgIGVsc2UKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZG1hX2J1Zl9iZWdpbl9jcHVfYWNj ZXNzKGRtYWJ1ZiwgZGlyZWN0aW9uKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7 Cj4+ICsgICAgICAgZGVmYXVsdDoKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PVFRZOwo+ PiArICAgICAgIH0KPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIGRtYV9idWZfZm9wcyA9IHsKPj4gICAgICAgICAgLnJlbGVhc2UgICAgICAgID0gZG1h X2J1Zl9yZWxlYXNlLAo+PiAgICAgICAgICAubW1hcCAgICAgICAgICAgPSBkbWFfYnVmX21tYXBf aW50ZXJuYWwsCj4+ICAgICAgICAgIC5sbHNlZWsgICAgICAgICA9IGRtYV9idWZfbGxzZWVrLAo+ PiAgICAgICAgICAucG9sbCAgICAgICAgICAgPSBkbWFfYnVmX3BvbGwsCj4+ICsgICAgICAgLnVu bG9ja2VkX2lvY3RsID0gZG1hX2J1Zl9pb2N0bCwKPj4gICB9Owo+Pgo+PiAgIC8qCj4+IGRpZmYg LS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvZG1hLWJ1Zi5oIGIvaW5jbHVkZS91YXBpL2xpbnV4 L2RtYS1idWYuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi5iZDE5 NWYyCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1idWYu aAo+PiBAQCAtMCwwICsxLDM4IEBACj4+ICsvKgo+PiArICogRnJhbWV3b3JrIGZvciBidWZmZXIg b2JqZWN0cyB0aGF0IGNhbiBiZSBzaGFyZWQgYWNyb3NzIGRldmljZXMvc3Vic3lzdGVtcy4KPj4g KyAqCj4+ICsgKiBDb3B5cmlnaHQoQykgMjAxNSBJbnRlbCBMdGQKPj4gKyAqCj4+ICsgKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeSBpdAo+PiArICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5Cj4+ICsgKiB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAo+PiArICog QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hB TlRBQklMSVRZIG9yCj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCj4+ICsgKiBtb3JlIGRldGFpbHMu Cj4+ICsgKgo+PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAo+PiArICogdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+PiArICovCj4+ICsK Pj4gKyNpZm5kZWYgX0RNQV9CVUZfVUFQSV9IXwo+PiArI2RlZmluZSBfRE1BX0JVRl9VQVBJX0hf Cj4+ICsKPj4gKy8qIGJlZ2luL2VuZCBkbWEtYnVmIGZ1bmN0aW9ucyB1c2VkIGZvciB1c2Vyc3Bh Y2UgbW1hcC4gKi8KPj4gK3N0cnVjdCBkbWFfYnVmX3N5bmMgewo+PiArICAgICAgIF9fdTY0IGZs YWdzOwo+PiArfTsKPj4gKwo+PiArI2RlZmluZSBETUFfQlVGX1NZTkNfUkVBRCAgICAgICgxIDw8 IDApCj4+ICsjZGVmaW5lIERNQV9CVUZfU1lOQ19XUklURSAgICAgKDIgPDwgMCkKPj4gKyNkZWZp bmUgRE1BX0JVRl9TWU5DX1JXICAgICAgICAoMyA8PCAwKQo+Cj4gTWF5YmUgbWFrZSB0aGlzOgo+ Cj4gI2RlZmluZSBETUFfQlVGX1NZTkNfUlcgICAgICAgIChETUFfQlVGX1NZTkNfUkVBRCB8IERN QV9CVUZfU1lOQ19XUklURSkKPgo+IG9yIG1heWJlOgo+Cj4gI2RlZmluZSBETUFfQlVGX1NZTkNf UldfTUFTSyAgICAgICAgKDMgPDwgMCkKClRoYW5rcyBBbGV4LiBJIHRoaW5rIEkgbGlrZSB5b3Vy IGZpcnN0IG9wdGlvbiBmb3IgYmVpbmcgYSBiaXQgbW9yZSAKc3VnZ2VzdGl2ZSB0aGFuIHRoZSBv dGhlciAtLSBJJ20gY2hhbmdpbmcgZm9yIGl0IG5vdy4KClRpYWdvCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=