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.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham 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 CDD05C282CB for ; Tue, 5 Feb 2019 20:24:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A8AC820818 for ; Tue, 5 Feb 2019 20:24:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727280AbfBEUYn (ORCPT ); Tue, 5 Feb 2019 15:24:43 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:41726 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726726AbfBEUYn (ORCPT ); Tue, 5 Feb 2019 15:24:43 -0500 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: ezequiel) with ESMTPSA id 6AA6B28020E From: Ezequiel Garcia To: linux-media@vger.kernel.org Cc: Hans Verkuil , kernel@collabora.com, Nicolas Dufresne , Tomasz Figa , linux-rockchip@lists.infradead.org, Heiko Stuebner , Jonas Karlman , Ezequiel Garcia Subject: [PATCH v1 00/10] Add MPEG-2 decoding to Rockchip VPU Date: Tue, 5 Feb 2019 17:24:07 -0300 Message-Id: <20190205202417.16555-1-ezequiel@collabora.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This series introduces the decoding infrastructure that will be used to add support for other codecs such as VP8, VP9 and H.264. There are a number of v4l2-compliance issues, which I will be addressing shortly. For those wanting to take a peep, I've pasted the v4l2-compliance issues here: http://ix.io/1AfJ. Minor issues aside, "release early" they say, so here it is! About the JPEG bounce buffer, we can probably get rid of it, but for now, it's fine to keep it as it won't affect video decoding. About the media controller topology change, which is no doubt the nastiest change in this series, it's important to mention that we need multiple video interface nodes: one video node for encoding, and one video node for decoding. Since the VPU is a single engine, it needs a single mem2mem device to serialize the codec jobs thru it, taking advantage of the whole mem2mem infrastructure. This works perfectly well, but requires a somewhat involved topology. For the encoder the graph goes like this: ┌────────────────────────────────┐ │ rockchip,rk3399-vpu-enc-source │ │ /dev/video0 │ └────────────────────────────────┘ ┃ ┃ ▼ ┌────────────────────────────────┐ │ rockchip,rk3399-vpu-enc-proc │ └────────────────────────────────┘ ┃ ┃ ▼ ┌────────────────────────────────┐ │ rockchip,rk3399-vpu-enc-sink │ │ /dev/video0 │ └────────────────────────────────┘ For the decoder the graph goes like this: ┌────────────────────────────────┐ │ rockchip,rk3399-vpu-dec-source │ │ /dev/video1 │ └────────────────────────────────┘ ┃ ┃ ▼ ┌────────────────────────────────┐ │ rockchip,rk3399-vpu-dec-proc │ └────────────────────────────────┘ ┃ ┃ ▼ ┌────────────────────────────────┐ │ rockchip,rk3399-vpu-dec-sink │ │ /dev/video1 │ └────────────────────────────────┘ Both are tied to the same media device, i.e. /dev/media0. Does this comply with the media controller specification? The pixel format helpers deserve a discussion of its own. Note that these helpers will be useful for probably most V4L drivers. See for instance, this recent bug caused by bad math in vivid's sizeimage calculations: https://patchwork.kernel.org/patch/10796201/ Finally, I have to thank Jonas Karlman, who did the initial MPEG-2 decoding work and also for getting mpv+ffmpeg to work using the Request API. This driver can be tested using mpv+ffmpeg for the video decoding side, and the Panfrost mesa driver for rendering. I should be posting instructions to set all of this up, and also will be submitting the support for H264, VP8 and VP9, hopefully very soon. Ezequiel Garcia (9): media: Introduce helpers to fill pixel format structs rockchip/vpu: Use pixel format helpers rockchip/vpu: Use v4l2_m2m_buf_copy_data rockchip/vpu: Cleanup macroblock alignment rockchip/vpu: Cleanup JPEG bounce buffer management rockchip/vpu: Open-code media controller register rockchip/vpu: Support the Request API rockchip/vpu: Add decoder boilerplate rockchip/vpu: Add support for non-standard controls Jonas Karlman (1): rockchip/vpu: Add support for MPEG-2 decoding drivers/media/v4l2-core/Makefile | 2 +- drivers/media/v4l2-core/v4l2-common.c | 71 +++ drivers/media/v4l2-core/v4l2-fourcc.c | 109 ++++ drivers/staging/media/rockchip/vpu/Makefile | 5 +- .../media/rockchip/vpu/rk3288_vpu_hw.c | 4 +- .../rockchip/vpu/rk3288_vpu_hw_jpeg_enc.c | 4 +- .../media/rockchip/vpu/rk3399_vpu_hw.c | 61 +- .../rockchip/vpu/rk3399_vpu_hw_jpeg_enc.c | 10 +- .../rockchip/vpu/rk3399_vpu_hw_mpeg2_dec.c | 263 +++++++++ .../staging/media/rockchip/vpu/rockchip_vpu.h | 115 +++- .../media/rockchip/vpu/rockchip_vpu_common.h | 10 + .../media/rockchip/vpu/rockchip_vpu_dec.c | 557 ++++++++++++++++++ .../media/rockchip/vpu/rockchip_vpu_drv.c | 426 ++++++++++++-- .../media/rockchip/vpu/rockchip_vpu_enc.c | 152 ++--- .../media/rockchip/vpu/rockchip_vpu_hw.h | 42 ++ .../media/rockchip/vpu/rockchip_vpu_jpeg.c | 25 + .../media/rockchip/vpu/rockchip_vpu_mpeg2.c | 61 ++ include/media/v4l2-common.h | 5 + include/media/v4l2-fourcc.h | 53 ++ 19 files changed, 1803 insertions(+), 172 deletions(-) create mode 100644 drivers/media/v4l2-core/v4l2-fourcc.c create mode 100644 drivers/staging/media/rockchip/vpu/rk3399_vpu_hw_mpeg2_dec.c create mode 100644 drivers/staging/media/rockchip/vpu/rockchip_vpu_dec.c create mode 100644 drivers/staging/media/rockchip/vpu/rockchip_vpu_mpeg2.c create mode 100644 include/media/v4l2-fourcc.h -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ezequiel Garcia Subject: [PATCH v1 00/10] Add MPEG-2 decoding to Rockchip VPU Date: Tue, 5 Feb 2019 17:24:07 -0300 Message-ID: <20190205202417.16555-1-ezequiel@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Nicolas Dufresne , Heiko Stuebner , Jonas Karlman , Tomasz Figa , linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Hans Verkuil , kernel-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org, Ezequiel Garcia List-Id: linux-rockchip.vger.kernel.org VGhpcyBzZXJpZXMgaW50cm9kdWNlcyB0aGUgZGVjb2RpbmcgaW5mcmFzdHJ1Y3R1cmUgdGhhdCB3 aWxsIGJlCnVzZWQgdG8gYWRkIHN1cHBvcnQgZm9yIG90aGVyIGNvZGVjcyBzdWNoIGFzIFZQOCwg VlA5IGFuZCBILjI2NC4KClRoZXJlIGFyZSBhIG51bWJlciBvZiB2NGwyLWNvbXBsaWFuY2UgaXNz dWVzLCB3aGljaCBJCndpbGwgYmUgYWRkcmVzc2luZyBzaG9ydGx5LiBGb3IgdGhvc2Ugd2FudGlu ZyB0byB0YWtlCmEgcGVlcCwgSSd2ZSBwYXN0ZWQgdGhlIHY0bDItY29tcGxpYW5jZSBpc3N1ZXMg aGVyZTogaHR0cDovL2l4LmlvLzFBZkouCgpNaW5vciBpc3N1ZXMgYXNpZGUsICJyZWxlYXNlIGVh cmx5IiB0aGV5IHNheSwgc28gaGVyZSBpdCBpcyEKCkFib3V0IHRoZSBKUEVHIGJvdW5jZSBidWZm ZXIsIHdlIGNhbiBwcm9iYWJseSBnZXQgcmlkIG9mIGl0LApidXQgZm9yIG5vdywgaXQncyBmaW5l IHRvIGtlZXAgaXQgYXMgaXQgd29uJ3QgYWZmZWN0IHZpZGVvIGRlY29kaW5nLgoKQWJvdXQgdGhl IG1lZGlhIGNvbnRyb2xsZXIgdG9wb2xvZ3kgY2hhbmdlLCB3aGljaCBpcyBubyBkb3VidAp0aGUg bmFzdGllc3QgY2hhbmdlIGluIHRoaXMgc2VyaWVzLCBpdCdzIGltcG9ydGFudCB0byBtZW50aW9u CnRoYXQgd2UgbmVlZCBtdWx0aXBsZSB2aWRlbyBpbnRlcmZhY2Ugbm9kZXM6IG9uZSB2aWRlbyBu b2RlCmZvciBlbmNvZGluZywgYW5kIG9uZSB2aWRlbyBub2RlIGZvciBkZWNvZGluZy4KClNpbmNl IHRoZSBWUFUgaXMgYSBzaW5nbGUgZW5naW5lLCBpdCBuZWVkcyBhIHNpbmdsZSBtZW0ybWVtIGRl dmljZQp0byBzZXJpYWxpemUgdGhlIGNvZGVjIGpvYnMgdGhydSBpdCwgdGFraW5nIGFkdmFudGFn ZSBvZiB0aGUKd2hvbGUgbWVtMm1lbSBpbmZyYXN0cnVjdHVyZS4KClRoaXMgd29ya3MgcGVyZmVj dGx5IHdlbGwsIGJ1dCByZXF1aXJlcyBhIHNvbWV3aGF0IGludm9sdmVkIHRvcG9sb2d5LgpGb3Ig dGhlIGVuY29kZXIgdGhlIGdyYXBoIGdvZXMgbGlrZSB0aGlzOgoK4pSM4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQCuKUgiByb2NrY2hpcCxyazMzOTktdnB1LWVuYy1z b3VyY2Ug4pSCCuKUgiAgICAgICAgICAvZGV2L3ZpZGVvMCAgICAgICAgICAg4pSCCuKUlOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmAogIOKUgwogIOKUgwogIOKWvAri lIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAK4pSCICByb2NrY2hp cCxyazMzOTktdnB1LWVuYy1wcm9jICDilIIK4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSYCiAg4pSDCiAg4pSDCiAg4pa8CuKUjOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUkArilIIgIHJvY2tjaGlwLHJrMzM5OS12cHUtZW5jLXNpbmsg IOKUggrilIIgICAgICAgICAgL2Rldi92aWRlbzAgICAgICAgICAgIOKUggrilJTilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgKCkZvciB0aGUgZGVjb2RlciB0aGUgZ3Jh cGggZ29lcyBsaWtlIHRoaXM6CgrilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilJAK4pSCIHJvY2tjaGlwLHJrMzM5OS12cHUtZGVjLXNvdXJjZSDilIIK4pSCICAgICAg ICAgIC9kZXYvdmlkZW8xICAgICAgICAgICDilIIK4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSYCiAg4pSDCiAg4pSDCiAg4pa8CuKUjOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkArilIIgIHJvY2tjaGlwLHJrMzM5OS12cHUtZGVjLXBy b2MgIOKUggrilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgKICDi lIMKICDilIMKICDilrwK4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSQCuKUgiAgcm9ja2NoaXAscmszMzk5LXZwdS1kZWMtc2luayAg4pSCCuKUgiAgICAgICAgICAv ZGV2L3ZpZGVvMSAgICAgICAgICAg4pSCCuKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUmAoKQm90aCBhcmUgdGllZCB0byB0aGUgc2FtZSBtZWRpYSBkZXZpY2UsCmku ZS4gL2Rldi9tZWRpYTAuIERvZXMgdGhpcyBjb21wbHkgd2l0aCB0aGUgbWVkaWEKY29udHJvbGxl ciBzcGVjaWZpY2F0aW9uPwoKVGhlIHBpeGVsIGZvcm1hdCBoZWxwZXJzIGRlc2VydmUgYSBkaXNj dXNzaW9uIG9mIGl0cyBvd24uCk5vdGUgdGhhdCB0aGVzZSBoZWxwZXJzIHdpbGwgYmUgdXNlZnVs IGZvciBwcm9iYWJseQptb3N0IFY0TCBkcml2ZXJzLiBTZWUgZm9yIGluc3RhbmNlLCB0aGlzIHJl Y2VudCBidWcKY2F1c2VkIGJ5IGJhZCBtYXRoIGluIHZpdmlkJ3Mgc2l6ZWltYWdlIGNhbGN1bGF0 aW9uczoKCmh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTA3OTYyMDEvCgpGaW5h bGx5LCBJIGhhdmUgdG8gdGhhbmsgSm9uYXMgS2FybG1hbiwgd2hvIGRpZCB0aGUgaW5pdGlhbApN UEVHLTIgZGVjb2Rpbmcgd29yayBhbmQgYWxzbyBmb3IgZ2V0dGluZyBtcHYrZmZtcGVnIHRvCndv cmsgdXNpbmcgdGhlIFJlcXVlc3QgQVBJLgoKVGhpcyBkcml2ZXIgY2FuIGJlIHRlc3RlZCB1c2lu ZyBtcHYrZmZtcGVnIGZvciB0aGUgdmlkZW8KZGVjb2Rpbmcgc2lkZSwgYW5kIHRoZSBQYW5mcm9z dCBtZXNhIGRyaXZlciBmb3IgcmVuZGVyaW5nLgoKSSBzaG91bGQgYmUgcG9zdGluZyBpbnN0cnVj dGlvbnMgdG8gc2V0IGFsbCBvZiB0aGlzIHVwLAphbmQgYWxzbyB3aWxsIGJlIHN1Ym1pdHRpbmcg dGhlIHN1cHBvcnQgZm9yIEgyNjQsIFZQOCBhbmQgVlA5LApob3BlZnVsbHkgdmVyeSBzb29uLgoK RXplcXVpZWwgR2FyY2lhICg5KToKICBtZWRpYTogSW50cm9kdWNlIGhlbHBlcnMgdG8gZmlsbCBw aXhlbCBmb3JtYXQgc3RydWN0cwogIHJvY2tjaGlwL3ZwdTogVXNlIHBpeGVsIGZvcm1hdCBoZWxw ZXJzCiAgcm9ja2NoaXAvdnB1OiBVc2UgdjRsMl9tMm1fYnVmX2NvcHlfZGF0YQogIHJvY2tjaGlw L3ZwdTogQ2xlYW51cCBtYWNyb2Jsb2NrIGFsaWdubWVudAogIHJvY2tjaGlwL3ZwdTogQ2xlYW51 cCBKUEVHIGJvdW5jZSBidWZmZXIgbWFuYWdlbWVudAogIHJvY2tjaGlwL3ZwdTogT3Blbi1jb2Rl IG1lZGlhIGNvbnRyb2xsZXIgcmVnaXN0ZXIKICByb2NrY2hpcC92cHU6IFN1cHBvcnQgdGhlIFJl cXVlc3QgQVBJCiAgcm9ja2NoaXAvdnB1OiBBZGQgZGVjb2RlciBib2lsZXJwbGF0ZQogIHJvY2tj aGlwL3ZwdTogQWRkIHN1cHBvcnQgZm9yIG5vbi1zdGFuZGFyZCBjb250cm9scwoKSm9uYXMgS2Fy bG1hbiAoMSk6CiAgcm9ja2NoaXAvdnB1OiBBZGQgc3VwcG9ydCBmb3IgTVBFRy0yIGRlY29kaW5n CgogZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAyICst CiBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWNvbW1vbi5jICAgICAgICAgfCAgNzEgKysr CiBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWZvdXJjYy5jICAgICAgICAgfCAxMDkgKysr KwogZHJpdmVycy9zdGFnaW5nL21lZGlhL3JvY2tjaGlwL3ZwdS9NYWtlZmlsZSAgIHwgICA1ICst CiAuLi4vbWVkaWEvcm9ja2NoaXAvdnB1L3JrMzI4OF92cHVfaHcuYyAgICAgICAgfCAgIDQgKy0K IC4uLi9yb2NrY2hpcC92cHUvcmszMjg4X3ZwdV9od19qcGVnX2VuYy5jICAgICB8ICAgNCArLQog Li4uL21lZGlhL3JvY2tjaGlwL3ZwdS9yazMzOTlfdnB1X2h3LmMgICAgICAgIHwgIDYxICstCiAu Li4vcm9ja2NoaXAvdnB1L3JrMzM5OV92cHVfaHdfanBlZ19lbmMuYyAgICAgfCAgMTAgKy0KIC4u Li9yb2NrY2hpcC92cHUvcmszMzk5X3ZwdV9od19tcGVnMl9kZWMuYyAgICB8IDI2MyArKysrKysr KysKIC4uLi9zdGFnaW5nL21lZGlhL3JvY2tjaGlwL3ZwdS9yb2NrY2hpcF92cHUuaCB8IDExNSAr KystCiAuLi4vbWVkaWEvcm9ja2NoaXAvdnB1L3JvY2tjaGlwX3ZwdV9jb21tb24uaCAgfCAgMTAg KwogLi4uL21lZGlhL3JvY2tjaGlwL3ZwdS9yb2NrY2hpcF92cHVfZGVjLmMgICAgIHwgNTU3ICsr KysrKysrKysrKysrKysrKwogLi4uL21lZGlhL3JvY2tjaGlwL3ZwdS9yb2NrY2hpcF92cHVfZHJ2 LmMgICAgIHwgNDI2ICsrKysrKysrKysrKy0tCiAuLi4vbWVkaWEvcm9ja2NoaXAvdnB1L3JvY2tj aGlwX3ZwdV9lbmMuYyAgICAgfCAxNTIgKystLS0KIC4uLi9tZWRpYS9yb2NrY2hpcC92cHUvcm9j a2NoaXBfdnB1X2h3LmggICAgICB8ICA0MiArKwogLi4uL21lZGlhL3JvY2tjaGlwL3ZwdS9yb2Nr Y2hpcF92cHVfanBlZy5jICAgIHwgIDI1ICsKIC4uLi9tZWRpYS9yb2NrY2hpcC92cHUvcm9ja2No aXBfdnB1X21wZWcyLmMgICB8ICA2MSArKwogaW5jbHVkZS9tZWRpYS92NGwyLWNvbW1vbi5oICAg ICAgICAgICAgICAgICAgIHwgICA1ICsKIGluY2x1ZGUvbWVkaWEvdjRsMi1mb3VyY2MuaCAgICAg ICAgICAgICAgICAgICB8ICA1MyArKwogMTkgZmlsZXMgY2hhbmdlZCwgMTgwMyBpbnNlcnRpb25z KCspLCAxNzIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS92 NGwyLWNvcmUvdjRsMi1mb3VyY2MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2lu Zy9tZWRpYS9yb2NrY2hpcC92cHUvcmszMzk5X3ZwdV9od19tcGVnMl9kZWMuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9yb2NrY2hpcC92cHUvcm9ja2NoaXBfdnB1 X2RlYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL3JvY2tjaGlw L3ZwdS9yb2NrY2hpcF92cHVfbXBlZzIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbWVk aWEvdjRsMi1mb3VyY2MuaAoKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1y b2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK