From: Oleksandr Andrushchenko Subject: [PATCH v5 0/8] xen: dma-buf support for grant device Date: Fri, 20 Jul 2018 12:01:42 +0300 Message-ID: <20180720090150.24560-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 236D06EEEF for ; Fri, 20 Jul 2018 09:02:00 +0000 (UTC) Received: by mail-lj1-x242.google.com with SMTP id u7-v6so10532799lji.3 for ; Fri, 20 Jul 2018 02:02:00 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, daniel.vetter@intel.com, dongwon.kim@intel.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyB3b3JrIGlzIGluIHJlc3BvbnNlIHRvIG15IHByZXZpb3VzIGF0dGVtcHQg dG8gaW50cm9kdWNlIFhlbi9EUk0KemVyby1jb3B5IGRyaXZlciBbMV0gdG8gZW5hYmxlIExpbnV4 IGRtYS1idWYgQVBJIFsyXSBmb3IgWGVuIGJhc2VkCmZyb250ZW5kcy9iYWNrZW5kcy4gVGhlcmUg aXMgYWxzbyBhbiBleGlzdGluZyBoeXBlcl9kbWFidWYgYXBwcm9hY2gKYXZhaWxhYmxlIFszXSB3 aGljaCwgaWYgcmV3b3JrZWQgdG8gdXRpbGl6ZSB0aGUgcHJvcG9zZWQgc29sdXRpb24sCmNhbiBn cmVhdGx5IGJlbmVmaXQgYXMgd2VsbC4KClJGQyBmb3IgdGhpcyBzZXJpZXMgd2FzIHB1Ymxpc2hl ZCBhbmQgZGlzY3Vzc2VkIFs5XSwgY29tbWVudHMgYWRkcmVzc2VkLgoKVGhlIG9yaWdpbmFsIHJh dGlvbmFsZSBiZWhpbmQgdGhpcyB3b3JrIHdhcyB0byBlbmFibGUgemVyby1jb3B5aW5nCnVzZS1j YXNlcyB3aGlsZSB3b3JraW5nIHdpdGggWGVuIHBhcmEtdmlydHVhbCBkaXNwbGF5IGRyaXZlciBb NF06CndoZW4gdXNpbmcgWGVuIFBWIERSTSBmcm9udGVuZCBkcml2ZXIgdGhlbiBvbiBiYWNrZW5k IHNpZGUgb25lIHdpbGwKbmVlZCB0byBkbyBjb3B5aW5nIG9mIGRpc3BsYXkgYnVmZmVycycgY29u dGVudHMgKGZpbGxlZCBieSB0aGUKZnJvbnRlbmQncyB1c2VyLXNwYWNlKSBpbnRvIGJ1ZmZlcnMg YWxsb2NhdGVkIGF0IHRoZSBiYWNrZW5kIHNpZGUuClRha2luZyBpbnRvIGFjY291bnQgdGhlIHNp emUgb2YgZGlzcGxheSBidWZmZXJzIGFuZCBmcmFtZXMgcGVyCnNlY29uZCBpdCBtYXkgcmVzdWx0 IGluIHVubmVlZGVkIGh1Z2UgZGF0YSBidXMgb2NjdXBhdGlvbiBhbmQKcGVyZm9ybWFuY2UgbG9z cy4KClRoZSBoZWxwZXIgZHJpdmVyIFs0XSBhbGxvd3MgaW1wbGVtZW50aW5nIHplcm8tY29weWlu ZyB1c2UtY2FzZXMKd2hlbiB1c2luZyBYZW4gcGFyYS12aXJ0dWFsaXplZCBmcm9udGVuZCBkaXNw bGF5IGRyaXZlciBieSBpbXBsZW1lbnRpbmcKYSBEUk0vS01TIGhlbHBlciBkcml2ZXIgcnVubmlu ZyBvbiBiYWNrZW5kJ3Mgc2lkZS4KSXQgdXRpbGl6ZXMgUFJJTUUgYnVmZmVycyBBUEkgKGltcGxl bWVudGVkIG9uIHRvcCBvZiBMaW51eCBkbWEtYnVmKQp0byBzaGFyZSBmcm9udGVuZCdzIGJ1ZmZl cnMgd2l0aCBwaHlzaWNhbCBkZXZpY2UgZHJpdmVycyBvbgpiYWNrZW5kJ3Mgc2lkZToKCiAtIGEg ZHVtYiBidWZmZXIgY3JlYXRlZCBvbiBiYWNrZW5kJ3Mgc2lkZSBjYW4gYmUgc2hhcmVkCiAgIHdp dGggdGhlIFhlbiBQViBmcm9udGVuZCBkcml2ZXIsIHNvIGl0IGRpcmVjdGx5IHdyaXRlcwogICBp bnRvIGJhY2tlbmQncyBkb21haW4gbWVtb3J5IChpbnRvIHRoZSBidWZmZXIgZXhwb3J0ZWQgZnJv bQogICBEUk0vS01TIGRyaXZlciBvZiBhIHBoeXNpY2FsIGRpc3BsYXkgZGV2aWNlKQogLSBhIGR1 bWIgYnVmZmVyIGFsbG9jYXRlZCBieSB0aGUgZnJvbnRlbmQgY2FuIGJlIGltcG9ydGVkCiAgIGlu dG8gcGh5c2ljYWwgZGV2aWNlIERSTS9LTVMgZHJpdmVyLCB0aHVzIGFsbG93aW5nIHRvCiAgIGFj aGlldmUgbm8gY29weWluZyBhcyB3ZWxsCgpGaW5hbGx5LCBpdCB3YXMgZGlzY3Vzc2VkIGFuZCBk ZWNpZGVkIChbMV0sIFs1XSkgdGhhdCBpdCBpcyB3b3J0aAppbXBsZW1lbnRpbmcgc3VjaCB1c2Ut Y2FzZXMgdmlhIGV4dGVuc2lvbiBvZiB0aGUgZXhpc3RpbmcgWGVuIGdudGRldgpkcml2ZXIgaW5z dGVhZCBvZiBpbnRyb2R1Y2luZyBuZXcgRFJNIHNwZWNpZmljIGRyaXZlci4KUGxlYXNlIG5vdGUs IHRoYXQgdGhlIHN1cHBvcnQgb2YgZG1hLWJ1ZiBpcyBMaW51eCBvbmx5LAphcyBkbWEtYnVmIGlz IGEgTGludXggb25seSB0aGluZy4KCk5vdyB0byB0aGUgcHJvcG9zZWQgc29sdXRpb24uIFRoZSBj aGFuZ2VzICB0byB0aGUgZXhpc3RpbmcgWGVuIGRyaXZlcnMKaW4gdGhlIExpbnV4IGtlcm5lbCBm YWxsIGludG8gMiBjYXRlZ29yaWVzOgoxLiBETUEtYWJsZSBtZW1vcnkgYnVmZmVyIGFsbG9jYXRp b24gYW5kIGluY3JlYXNpbmcvZGVjcmVhc2luZyBtZW1vcnkKICAgcmVzZXJ2YXRpb24gb2YgdGhl IHBhZ2VzIG9mIHN1Y2ggYSBidWZmZXIuCiAgIFRoaXMgaXMgcmVxdWlyZWQgaWYgd2UgYXJlIGFi b3V0IHRvIHNoYXJlIGRtYS1idWYgd2l0aCB0aGUgaGFyZHdhcmUKICAgdGhhdCBkb2VzIHJlcXVp cmUgdGhvc2UgdG8gYmUgYWxsb2NhdGVkIHdpdGggZG1hX2FsbG9jX3h4eCBBUEkuCiAgIChJdCBp cyBzdGlsbCBwb3NzaWJsZSB0byBhbGxvY2F0ZSBhIGRtYS1idWYgZnJvbSBhbnkgc3lzdGVtIG1l bW9yeSwKICAgZS5nLiBzeXN0ZW0gcGFnZXMpLgoyLiBFeHRlbnNpb24gb2YgdGhlIGdudGRldiBk cml2ZXIgdG8gZW5hYmxlIGl0IHRvIGltcG9ydC9leHBvcnQgZG1hLWJ1ZuKAmXMuCgpUaGUgZmly c3QgZml2ZSBwYXRjaGVzIGFyZSBpbiBwcmVwYXJhdGlvbiBmb3IgWGVuIGRtYS1idWYgc3VwcG9y dCwKYnV0IEkgY29uc2lkZXIgdGhvc2UgdXNhYmxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGRtYS1idWYg dXNlLWNhc2UsCmUuZy4gb3RoZXIgZnJvbnRlbmQvYmFja2VuZCBrZXJuZWwgbW9kdWxlcyBtYXkg YWxzbyBiZW5lZml0IGZyb20gdGhlc2UKZm9yIGJldHRlciBjb2RlIHJldXNlOgogICAgMDAwMS14 ZW4tZ3JhbnQtdGFibGUtTWFrZS1zZXQtY2xlYXItcGFnZS1wcml2YXRlLWNvZGUtc2hhLnBhdGNo CiAgICAwMDAyLXhlbi1iYWxsb29uLVNoYXJlLWNvbW1vbi1tZW1vcnktcmVzZXJ2YXRpb24tcm91 dGluZXMucGF0Y2gKICAgIDAwMDMteGVuLWdyYW50LXRhYmxlLUFsbG93LWFsbG9jYXRpbmctYnVm ZmVycy1zdWl0YWJsZS1mby5wYXRjaAogICAgMDAwNC14ZW4tZ250ZGV2LUFsbG93LW1hcHBpbmdz LWZvci1ETUEtYnVmZmVycy5wYXRjaAogICAgMDAwNS14ZW4tZ250ZGV2LU1ha2UtcHJpdmF0ZS1y b3V0aW5lcy1zdHJ1Y3R1cmVzLWFjY2Vzc2liLnBhdGNoCgpUaGUgbmV4dCB0aHJlZSBwYXRjaGVz IGFyZSBYZW4gaW1wbGVtZW50YXRpb24gb2YgZG1hLWJ1ZiBhcyBwYXJ0IG9mCnRoZSBncmFudCBk ZXZpY2U6CiAgICAwMDA2LXhlbi1nbnRkZXYtQWRkLWluaXRpYWwtc3VwcG9ydC1mb3ItZG1hLWJ1 Zi1VQVBJLnBhdGNoCiAgICAwMDA3LXhlbi1nbnRkZXYtSW1wbGVtZW50LWRtYS1idWYtZXhwb3J0 LWZ1bmN0aW9uYWxpdHkucGF0Y2gKICAgIDAwMDgteGVuLWdudGRldi1JbXBsZW1lbnQtZG1hLWJ1 Zi1pbXBvcnQtZnVuY3Rpb25hbGl0eS5wYXRjaAoKVGhlIGNvcnJlc3BvbmRpbmcgbGlieGVuZ250 dGFiIGNoYW5nZXMgYXJlIGF2YWlsYWJsZSBhdCBbNl0uCgpBbGwgdGhlIGFib3ZlIHdhcyB0ZXN0 ZWQgd2l0aCBkaXNwbGF5IGJhY2tlbmQgWzddIGFuZCBpdHMgYWNjb21wYW55aW5nCmhlbHBlciBs aWJyYXJ5IFs4XSBvbiBSZW5lc2FzIEFSTTY0IGJhc2VkIGJvYXJkLgpCYXNpYyBiYWxsb29uIHRl c3RzIG9uIHg4Ni4KCipUbyBhbGwgdGhlIGNvbW11bml0aWVzKjogSSB3b3VsZCBsaWtlIHRvIGFz ayB5b3UgdG8gcmV2aWV3IHRoZSBwcm9wb3NlZApzb2x1dGlvbiBhbmQgZ2l2ZSBmZWVkYmFjayBv biBpdCwgc28gSSBjYW4gaW1wcm92ZSBhbmQgc2VuZCBmaW5hbApwYXRjaGVzIGZvciByZXZpZXcg KHRoaXMgaXMgc3RpbGwgd29yayBpbiBwcm9ncmVzcywgYnV0IGVub3VnaCB0byBzdGFydApkaXNj dXNzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbikuCgpUaGFuayB5b3UgaW4gYWR2YW5jZSwKT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28KClsxXSBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNo aXZlcy9kcmktZGV2ZWwvMjAxOC1BcHJpbC8xNzMxNjMuaHRtbApbMl0gaHR0cHM6Ly9lbGl4aXIu Ym9vdGxpbi5jb20vbGludXgvdjQuMTctcmM1L3NvdXJjZS9Eb2N1bWVudGF0aW9uL2RyaXZlci1h cGkvZG1hLWJ1Zi5yc3QKWzNdIGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMv aHRtbC94ZW4tZGV2ZWwvMjAxOC0wMi9tc2cwMTIwMi5odG1sCls0XSBodHRwczovL2NnaXQuZnJl ZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYy90cmVlL2RyaXZlcnMvZ3B1L2RybS94ZW4KWzVdIGh0 dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAyNzk2ODEvCls2XSBodHRwczovL2dp dGh1Yi5jb20vYW5kcjIwMDAveGVuL3RyZWUveGVuX2RtYV9idWZfdjEKWzddIGh0dHBzOi8vZ2l0 aHViLmNvbS9hbmRyMjAwMC9kaXNwbF9iZS90cmVlL3hlbl9kbWFfYnVmX3YxCls4XSBodHRwczov L2dpdGh1Yi5jb20vYW5kcjIwMDAvbGlieGVuYmUvdHJlZS94ZW5fZG1hX2J1Zl92MQpbOV0gaHR0 cHM6Ly9sa21sLm9yZy9sa21sLzIwMTgvNS8xNy8yMTUKCkNoYW5nZXMgc2luY2UgdjQ6CioqKioq KioqKioqKioqKioqCi0gYWRkZWQgci1iIHRhZ3MKLSByZWJhc2VkIG9udG8gdjQuMTgtcmM1CgpD aGFuZ2VzIHNpbmNlIHYzOgoqKioqKioqKioqKioqKioqKgotIGFkZGVkIHItYiB0YWdzCi0gbWlu b3IgZml4ZXMKLSByZW1vdmVkIGdudGRldl9yZW1vdmVfbWFwIGFzIGl0IGNhbiBiZSBjb2RlZCBk aXJlY3RseSBub3cKLSBtb3ZlZCBJT0NUTCBjb2RlIHRvIGdudGRldi1kbWFidWYuYwotIHJlbW92 ZWQgdXNsZXNzIHdhaXQgbGlzdCB3YWxrcyBhbmQgY2hhbmdlZCBzb21lIHdhbGtzIHRvIHVzZQog IG5vcm1hbCB2ZXJzaW9uIG9mIGxpc3QgaXRlcmF0b3JzIGluc3RlYWQgb2Ygc2FmZSBvbmVzIGFz CiAgd2UgcnVuIHVuZGVyIGEgbG9jayBhbnl3YXlzCi0gY2xlYW5lZCB1cCBjb21tZW50cywgZGVz Y3JpcHRpb25zLCBwcl9kZWJ1ZyBtZXNzYWdlcwoKQ2hhbmdlcyBzaW5jZSB2MjoKKioqKioqKioq KioqKioqKioKLSBmaXhlZCBtaXNzZWQgYnJlYWsgaW4gZG1hYnVmX2V4cF93YWl0X29ial9zaWdu YWwKLSByZS13b3JrZWQgZGVidWcgYW5kIGVycm9yIG1lc3NhZ2VzLCBiZSBsZXNzIHZlcmJvc2UK LSByZW1vdmVkIHBhdGNoIGZvciBtYWtpbmcgZ250ZGV2IGZ1bmN0aW9ucyBhdmFpbGFibGUgdG8g b3RoZXIgZHJpdmVycwotIHJlbW92ZWQgV0FSTl9PTidzIGluIGRtYS1idWYgY29kZQotIG1vdmVk IGFsbCBkbWEtYnVmIHJlbGF0ZWQgY29kZSBpbnRvIGdudGRldi1kbWFidWYKLSBpbnRyb2R1Y2Vk IGdudGRldi1jb21tb24uaCB3aXRoIGNvbW1vbiBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBwcm90 b3R5cGVzCi0gYWRkZWQgYWRkaXRpb25hbCBjaGVja3MgZm9yIG51bWJlciBvZiBncmFudHMgaW4g SU9DVExzCi0gZ250dGFiIHBhdGNoIGNsZWFudXAKLSBtYWRlIHhlbm1lbV9yZXNlcnZhdGlvbl9z Y3J1Yl9wYWdlIGRlZmluZWQgaW4gdGhlIGhlYWRlciBhcyBpbmxpbmUKLSBmaXhlZCBfX3Bmbl90 b19tZm4gdXNlIHRvIHBmbl90b19iZm4KLSBubyBjaGFuZ2VzIHRvIHBhdGNoZXMgMS0yCgpDaGFu Z2VzIHNpbmNlIHYxOgoqKioqKioqKioqKioqKioqKgotIERlZmluZSBHTlRERVZfRE1BX0ZMQUdf WFhYIHN0YXJ0aW5nIGZyb20gYml0IDAKLSBSZW5hbWUgbWVtX3Jlc2VydmF0aW9uLmggdG8gbWVt LXJlc2VydmF0aW9uLmgKLSBSZW1vdmUgdXNsZXNzIGNvbW1lbnRzCi0gQ2hhbmdlIGxpY2Vuc2Vz IGZyb20gR1BMdjIgT1IgTUlUIHRvIEdQTHYyIG9ubHkKLSBNYWtlIHhlbm1lbV9yZXNlcnZhdGlv bl92YV9tYXBwaW5nX3t1cGRhdGV8Y2xlYXJ9IGlubGluZQotIENoYW5nZSBFWFBPUlRfU1lNQk9M IHRvIEVYUE9SVF9TWU1CT0xfR1BMIGZvciBuZXcgZnVuY3Rpb25zCi0gTWFrZSBnbnR0YWJfZG1h X3thbGxvY3xmcmVlfV9wYWdlcyB0byByZXF1ZXN0IGZyYW1lcyBhcnJheQogIGJlIGFsbG9jYXRl ZCBvdXRzaWRlCi0gRml4ZSBnbnR0YWJfZG1hX2FsbG9jX3BhZ2VzIGZhaWwgcGF0aCAoYWRkZWQg eGVubWVtX3Jlc2VydmF0aW9uX2luY3JlYXNlKQotIE1vdmUgbW9zdCBvZiBkbWEtYnVmIGZyb20g Z250ZGV2LmMgdG8gZ250ZGV2LWRtYWJ1Zi5jCi0gQWRkIHJlcXVpcmVkIGRlcGVuZGVuY2llcyB0 byBLY29uZmlnCi0gUmV3b3JrICIjaWZkZWYgQ09ORklHX1hFTl9YWFgiIGZvciBpZi9lbHNlCi0g RXhwb3J0IGdudHRhYl97YWxsb2N8ZnJlZX1fcGFnZXMgYXMgR1BMIHN5bWJvbHMgKHBhdGNoIDEp CgpPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyAoOCk6CiAgeGVuL2dyYW50LXRhYmxlOiBNYWtlIHNl dC9jbGVhciBwYWdlIHByaXZhdGUgY29kZSBzaGFyZWQKICB4ZW4vYmFsbG9vbjogU2hhcmUgY29t bW9uIG1lbW9yeSByZXNlcnZhdGlvbiByb3V0aW5lcwogIHhlbi9ncmFudC10YWJsZTogQWxsb3cg YWxsb2NhdGluZyBidWZmZXJzIHN1aXRhYmxlIGZvciBETUEKICB4ZW4vZ250ZGV2OiBBbGxvdyBt YXBwaW5ncyBmb3IgRE1BIGJ1ZmZlcnMKICB4ZW4vZ250ZGV2OiBNYWtlIHByaXZhdGUgcm91dGlu ZXMvc3RydWN0dXJlcyBhY2Nlc3NpYmxlCiAgeGVuL2dudGRldjogQWRkIGluaXRpYWwgc3VwcG9y dCBmb3IgZG1hLWJ1ZiBVQVBJCiAgeGVuL2dudGRldjogSW1wbGVtZW50IGRtYS1idWYgZXhwb3J0 IGZ1bmN0aW9uYWxpdHkKICB4ZW4vZ250ZGV2OiBJbXBsZW1lbnQgZG1hLWJ1ZiBpbXBvcnQgZnVu Y3Rpb25hbGl0eQoKIGRyaXZlcnMveGVuL0tjb25maWcgICAgICAgICAgIHwgIDI0ICsKIGRyaXZl cnMveGVuL01ha2VmaWxlICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMveGVuL2JhbGxvb24uYyAg ICAgICAgIHwgIDc1ICstLQogZHJpdmVycy94ZW4vZ250ZGV2LWNvbW1vbi5oICAgfCAgOTQgKysr KwogZHJpdmVycy94ZW4vZ250ZGV2LWRtYWJ1Zi5jICAgfCA4NTUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogZHJpdmVycy94ZW4vZ250ZGV2LWRtYWJ1Zi5oICAgfCAgMzMgKysK IGRyaXZlcnMveGVuL2dudGRldi5jICAgICAgICAgIHwgMjIwICsrKysrKy0tLQogZHJpdmVycy94 ZW4vZ3JhbnQtdGFibGUuYyAgICAgfCAxNTEgKysrKystCiBkcml2ZXJzL3hlbi9tZW0tcmVzZXJ2 YXRpb24uYyB8IDExOCArKysrKwogaW5jbHVkZS91YXBpL3hlbi9nbnRkZXYuaCAgICAgfCAxMDYg KysrKysKIGluY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggICAgIHwgIDIxICsKIGluY2x1ZGUveGVu L21lbS1yZXNlcnZhdGlvbi5oIHwgIDU5ICsrKwogMTIgZmlsZXMgY2hhbmdlZCwgMTU5OSBpbnNl cnRpb25zKCspLCAxNTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy94 ZW4vZ250ZGV2LWNvbW1vbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy94ZW4vZ250ZGV2 LWRtYWJ1Zi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy94ZW4vZ250ZGV2LWRtYWJ1Zi5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy94ZW4vbWVtLXJlc2VydmF0aW9uLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9tZW0tcmVzZXJ2YXRpb24uaAoKLS0gCjIuMTguMAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==