From mboxrd@z Thu Jan 1 00:00:00 1970 From: Emil Velikov Subject: Re: [PATCH v2 4/4] drm/simple-kms: Let DRM core send VBLANK events by default Date: Thu, 16 Jan 2020 17:22:34 +0000 Message-ID: References: <20200115125226.13843-1-tzimmermann@suse.de> <20200115125226.13843-5-tzimmermann@suse.de> <20200116064107.GB8400@dvetter-linux.ger.corp.intel.com> <33fdd33f-ce8d-70d3-544e-fac727d2686b@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <33fdd33f-ce8d-70d3-544e-fac727d2686b@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" To: Thomas Zimmermann Cc: Laurent Pinchart , david@lechnology.com, oleksandr_andrushchenko@epam.com, Dave Airlie , Sean Paul , ML dri-devel , "open list:VIRTIO GPU DRIVER" , Hans de Goede , Daniel Vetter , xen-devel@lists.xenproject.org, Sam Ravnborg , Emil Velikov List-Id: virtualization@lists.linuxfoundation.org Hi all, On Thu, 16 Jan 2020 at 07:37, Thomas Zimmermann wrote: > > diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c > > index 7cf3cf936547..23d2f51fc1d4 100644 > > --- a/drivers/gpu/drm/drm_atomic_state_helper.c > > +++ b/drivers/gpu/drm/drm_atomic_state_helper.c > > @@ -149,6 +149,11 @@ void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc, > > /* Self refresh should be canceled when a new update is available */ > > state->active = drm_atomic_crtc_effectively_active(state); > > state->self_refresh_active = false; > > + > > + if (drm_dev_has_vblank(crtc->dev)) > > + state->no_vblank = true; > > + else > > + state->no_vblank = false; > > } > > EXPORT_SYMBOL(__drm_atomic_helper_crtc_duplicate_state); > > I think the if/else branches are in the wrong order. > > But generally speaking, is it really that easy? The xen driver already > has to work around simple-kms's auto-enabling of no_vblank (see patch > 4). Maybe this settings interferes with other drivers as well. At least > the calls for sending fake vblanks should be removed from all affected > drivers. > I'm not sure if setting no_vblank based on dev->num_crtcs is the correct thing. >From the original commit and associated description for no_vblank: In some cases CRTCs are active but are not able to generating events, at least not at every frame at it's expected to. This is typically the case when the CRTC is feeding a writeback connector... Reflects the ability of a CRTC to send VBLANK events.... The proposed handling of no_vblank feels a little dirty, although nothing better comes to mind. Nevertheless code seems perfectly reasonable, so if it were me I'd merge it. HTH Emil From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34BBCC33CAF for ; Thu, 16 Jan 2020 17:22:10 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DC5D424688 for ; Thu, 16 Jan 2020 17:22:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YKMxolQB" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DC5D424688 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 492A76EE2D; Thu, 16 Jan 2020 17:22:09 +0000 (UTC) Received: from mail-ua1-x942.google.com (mail-ua1-x942.google.com [IPv6:2607:f8b0:4864:20::942]) by gabe.freedesktop.org (Postfix) with ESMTPS id 889C06EE2D for ; Thu, 16 Jan 2020 17:22:08 +0000 (UTC) Received: by mail-ua1-x942.google.com with SMTP id 1so7921930uao.1 for ; Thu, 16 Jan 2020 09:22:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=hjlPO7BPZ/JlQoLqlUXvQTlJfTAbQfDZ8K8Uze8BU/s=; b=YKMxolQBt/5TtzXuM46+gh9+XoXFQUxQh/cVpqTPRL0MhbKQNmtAXQKA013/fyOecO w136SaOLrnBnJBQtcqo0CSjSuaDQjPv55UatHkkhtYeF88FMZL8rGhX9mMFc9grHdBXe 9SuUZBrHr+8b/qwPkCSb4ftodkLJBP1DGWj0o28IQuMPz7nOqJ//eyp+S2oLV/hf1FkZ U6ayL/rVh/7ZtcFiYIHF6p1z9xQAcb+9jsVzlmo4YgRCaVHQ4ESCv1TfZvGT8NrH9sLu TrKfjOztyqm3R0nOU3nG9D/tKkM9/NO+NWzfV/+d2Pk0xorsvpuk5/1tENmSDHf+cGTy IG/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=hjlPO7BPZ/JlQoLqlUXvQTlJfTAbQfDZ8K8Uze8BU/s=; b=aZdfGTNeCjIGgifMgs89/TTCG/37oWkD0KG5z9LHmIr4AmHVxgdonZk+RO+G7bMNjJ /hsVob1Dg1Me5gWSexAkH7d+QvKXyAxc0rllzbRgFkqeYs2UfDwtmzBIP2L5Kjbu+eQN zr3K55G8l5JgomkBIoh0Fv3zk0alxTjxS8Ffepb0SZHbIixTNXdGmxu+EYMPl1efbO1/ mSiCk+IBrNoZrMt22JI5MqSxTbFuCng/AOxgMER68NjoCgxccDQaX78kL7fCWTFL0iA6 49sabE57ChyyrvdQC92og7w4d0td4+CH7am1qkojZgx1SaFQtkOwBhq7q3az3hOiwn59 xnQg== X-Gm-Message-State: APjAAAW8HNcZS7Gb7r8Hb77D653B472dhLQTwnhdFhNbnwcIPpZ5v9F8 fWxi6iTgcblqFV0GkKbYE/fjmIYKGJ6RKAvsDZk= X-Google-Smtp-Source: APXvYqyZHt1bqJYkRt6MbFegAzbw6GywWUBqaQuyP76aQnU4RRq0QOEI8YeE5E4qQi+Z4gewiSopIQgd5bPceS0uhj4= X-Received: by 2002:ab0:14a2:: with SMTP id d31mr18349536uae.106.1579195327403; Thu, 16 Jan 2020 09:22:07 -0800 (PST) MIME-Version: 1.0 References: <20200115125226.13843-1-tzimmermann@suse.de> <20200115125226.13843-5-tzimmermann@suse.de> <20200116064107.GB8400@dvetter-linux.ger.corp.intel.com> <33fdd33f-ce8d-70d3-544e-fac727d2686b@suse.de> In-Reply-To: <33fdd33f-ce8d-70d3-544e-fac727d2686b@suse.de> From: Emil Velikov Date: Thu, 16 Jan 2020 17:22:34 +0000 Message-ID: Subject: Re: [PATCH v2 4/4] drm/simple-kms: Let DRM core send VBLANK events by default To: Thomas Zimmermann X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Pinchart , david@lechnology.com, oleksandr_andrushchenko@epam.com, Dave Airlie , Sean Paul , ML dri-devel , "open list:VIRTIO GPU DRIVER" , Hans de Goede , Gerd Hoffmann , xen-devel@lists.xenproject.org, Sam Ravnborg , Emil Velikov Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi all, On Thu, 16 Jan 2020 at 07:37, Thomas Zimmermann wrote: > > diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c > > index 7cf3cf936547..23d2f51fc1d4 100644 > > --- a/drivers/gpu/drm/drm_atomic_state_helper.c > > +++ b/drivers/gpu/drm/drm_atomic_state_helper.c > > @@ -149,6 +149,11 @@ void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc, > > /* Self refresh should be canceled when a new update is available */ > > state->active = drm_atomic_crtc_effectively_active(state); > > state->self_refresh_active = false; > > + > > + if (drm_dev_has_vblank(crtc->dev)) > > + state->no_vblank = true; > > + else > > + state->no_vblank = false; > > } > > EXPORT_SYMBOL(__drm_atomic_helper_crtc_duplicate_state); > > I think the if/else branches are in the wrong order. > > But generally speaking, is it really that easy? The xen driver already > has to work around simple-kms's auto-enabling of no_vblank (see patch > 4). Maybe this settings interferes with other drivers as well. At least > the calls for sending fake vblanks should be removed from all affected > drivers. > I'm not sure if setting no_vblank based on dev->num_crtcs is the correct thing. >From the original commit and associated description for no_vblank: In some cases CRTCs are active but are not able to generating events, at least not at every frame at it's expected to. This is typically the case when the CRTC is feeding a writeback connector... Reflects the ability of a CRTC to send VBLANK events.... The proposed handling of no_vblank feels a little dirty, although nothing better comes to mind. Nevertheless code seems perfectly reasonable, so if it were me I'd merge it. HTH Emil _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D938CC33CAF for ; Thu, 16 Jan 2020 17:22:52 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A4E2C214AF for ; Thu, 16 Jan 2020 17:22:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YKMxolQB" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A4E2C214AF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1is8qP-0000C5-EH; Thu, 16 Jan 2020 17:22:09 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1is8qO-0000C0-EI for xen-devel@lists.xenproject.org; Thu, 16 Jan 2020 17:22:08 +0000 X-Inumbo-ID: b8fec7fa-3884-11ea-a2eb-bc764e2007e4 Received: from mail-ua1-x943.google.com (unknown [2607:f8b0:4864:20::943]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id b8fec7fa-3884-11ea-a2eb-bc764e2007e4; Thu, 16 Jan 2020 17:22:07 +0000 (UTC) Received: by mail-ua1-x943.google.com with SMTP id f7so7908876uaa.8 for ; Thu, 16 Jan 2020 09:22:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=hjlPO7BPZ/JlQoLqlUXvQTlJfTAbQfDZ8K8Uze8BU/s=; b=YKMxolQBt/5TtzXuM46+gh9+XoXFQUxQh/cVpqTPRL0MhbKQNmtAXQKA013/fyOecO w136SaOLrnBnJBQtcqo0CSjSuaDQjPv55UatHkkhtYeF88FMZL8rGhX9mMFc9grHdBXe 9SuUZBrHr+8b/qwPkCSb4ftodkLJBP1DGWj0o28IQuMPz7nOqJ//eyp+S2oLV/hf1FkZ U6ayL/rVh/7ZtcFiYIHF6p1z9xQAcb+9jsVzlmo4YgRCaVHQ4ESCv1TfZvGT8NrH9sLu TrKfjOztyqm3R0nOU3nG9D/tKkM9/NO+NWzfV/+d2Pk0xorsvpuk5/1tENmSDHf+cGTy IG/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=hjlPO7BPZ/JlQoLqlUXvQTlJfTAbQfDZ8K8Uze8BU/s=; b=gD9qXmcQr3grdkTxM9VlQBoG1E0+LW+9F5ajilBhZO4fVR5iS69x1urXxOHvisR7xg ekCtmhHln5kxW0s844TJ+muOdUZb7J/1VpsM4IYRRfnkm4O/Vl9q+hbBtB+AH3gkQnoH rGX4WYJUPu2XrXe5Zm997qDWjCfOuEB76kmz2tr0d7ydamPME8GS3umDbvtRMpiFWtHZ Gqvx2pd2mwQ+zA0KLTap9CJvXC2U0sblliVM6GXTg4JZINPymY5CfcLFKW4ax0MfB+vD v+4OhzpYWdIXV6sy1ji+6J7EnLmytYevG+ddDQh30580bRcd34co+QLVAZtQ27/oHGT/ iHcA== X-Gm-Message-State: APjAAAXKqlh1I30niMRz6FsnVNqMFIf9opU9/OBdN13p1wTGDDndMZev 2jA6P6Tuc8yGf0HdxUhSSuMYKbxQPqrroU77ei4= X-Google-Smtp-Source: APXvYqyZHt1bqJYkRt6MbFegAzbw6GywWUBqaQuyP76aQnU4RRq0QOEI8YeE5E4qQi+Z4gewiSopIQgd5bPceS0uhj4= X-Received: by 2002:ab0:14a2:: with SMTP id d31mr18349536uae.106.1579195327403; Thu, 16 Jan 2020 09:22:07 -0800 (PST) MIME-Version: 1.0 References: <20200115125226.13843-1-tzimmermann@suse.de> <20200115125226.13843-5-tzimmermann@suse.de> <20200116064107.GB8400@dvetter-linux.ger.corp.intel.com> <33fdd33f-ce8d-70d3-544e-fac727d2686b@suse.de> In-Reply-To: <33fdd33f-ce8d-70d3-544e-fac727d2686b@suse.de> From: Emil Velikov Date: Thu, 16 Jan 2020 17:22:34 +0000 Message-ID: To: Thomas Zimmermann Subject: Re: [Xen-devel] [PATCH v2 4/4] drm/simple-kms: Let DRM core send VBLANK events by default X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Laurent Pinchart , david@lechnology.com, oleksandr_andrushchenko@epam.com, Dave Airlie , Sean Paul , ML dri-devel , "open list:VIRTIO GPU DRIVER" , Hans de Goede , Gerd Hoffmann , Daniel Vetter , xen-devel@lists.xenproject.org, Sam Ravnborg , Emil Velikov Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SGkgYWxsLAoKT24gVGh1LCAxNiBKYW4gMjAyMCBhdCAwNzozNywgVGhvbWFzIFppbW1lcm1hbm4g PHR6aW1tZXJtYW5uQHN1c2UuZGU+IHdyb3RlOgoKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX3N0YXRlX2hlbHBlci5jCj4gPiBpbmRleCA3Y2YzY2Y5MzY1NDcuLjIzZDJmNTFmYzFkNCAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5j Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+ID4g QEAgLTE0OSw2ICsxNDksMTEgQEAgdm9pZCBfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICAgICAgIC8qIFNlbGYgcmVmcmVz aCBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ldyB1cGRhdGUgaXMgYXZhaWxhYmxlICovCj4g PiAgICAgICBzdGF0ZS0+YWN0aXZlID0gZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5X2FjdGl2 ZShzdGF0ZSk7Cj4gPiAgICAgICBzdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSA9IGZhbHNlOwo+ ID4gKwo+ID4gKyAgICAgaWYgKGRybV9kZXZfaGFzX3ZibGFuayhjcnRjLT5kZXYpKQo+ID4gKyAg ICAgICAgICAgICBzdGF0ZS0+bm9fdmJsYW5rID0gdHJ1ZTsKPiA+ICsgICAgIGVsc2UKPiA+ICsg ICAgICAgICAgICAgc3RhdGUtPm5vX3ZibGFuayA9IGZhbHNlOwo+ID4gIH0KPiA+ICBFWFBPUlRf U1lNQk9MKF9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUpOwo+Cj4gSSB0 aGluayB0aGUgaWYvZWxzZSBicmFuY2hlcyBhcmUgaW4gdGhlIHdyb25nIG9yZGVyLgo+Cj4gQnV0 IGdlbmVyYWxseSBzcGVha2luZywgaXMgaXQgcmVhbGx5IHRoYXQgZWFzeT8gVGhlIHhlbiBkcml2 ZXIgYWxyZWFkeQo+IGhhcyB0byB3b3JrIGFyb3VuZCBzaW1wbGUta21zJ3MgYXV0by1lbmFibGlu ZyBvZiBub192YmxhbmsgKHNlZSBwYXRjaAo+IDQpLiBNYXliZSB0aGlzIHNldHRpbmdzIGludGVy ZmVyZXMgd2l0aCBvdGhlciBkcml2ZXJzIGFzIHdlbGwuIEF0IGxlYXN0Cj4gdGhlIGNhbGxzIGZv ciBzZW5kaW5nIGZha2UgdmJsYW5rcyBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIGFsbCBhZmZlY3Rl ZAo+IGRyaXZlcnMuCj4KCkknbSBub3Qgc3VyZSBpZiBzZXR0aW5nIG5vX3ZibGFuayBiYXNlZCBv biBkZXYtPm51bV9jcnRjcyBpcyB0aGUgY29ycmVjdCB0aGluZy4KRnJvbSB0aGUgb3JpZ2luYWwg Y29tbWl0IGFuZCBhc3NvY2lhdGVkIGRlc2NyaXB0aW9uIGZvciBub192Ymxhbms6CgpJbiBzb21l IGNhc2VzIENSVENzIGFyZSBhY3RpdmUgYnV0IGFyZSBub3QgYWJsZSB0byBnZW5lcmF0aW5nIGV2 ZW50cywgYXQKbGVhc3Qgbm90IGF0IGV2ZXJ5IGZyYW1lIGF0IGl0J3MgZXhwZWN0ZWQgdG8uClRo aXMgaXMgdHlwaWNhbGx5IHRoZSBjYXNlIHdoZW4gdGhlIENSVEMgaXMgZmVlZGluZyBhIHdyaXRl YmFjayBjb25uZWN0b3IuLi4KClJlZmxlY3RzIHRoZSBhYmlsaXR5IG9mIGEgQ1JUQyB0byBzZW5k IFZCTEFOSyBldmVudHMuLi4uCgoKVGhlIHByb3Bvc2VkIGhhbmRsaW5nIG9mIG5vX3ZibGFuayBm ZWVscyBhIGxpdHRsZSBkaXJ0eSwgYWx0aG91Z2gKbm90aGluZyBiZXR0ZXIgY29tZXMgdG8gbWlu ZC4KTmV2ZXJ0aGVsZXNzIGNvZGUgc2VlbXMgcGVyZmVjdGx5IHJlYXNvbmFibGUsIHNvIGlmIGl0 IHdlcmUgbWUgSSdkIG1lcmdlIGl0LgoKSFRICkVtaWwKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=