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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0640C4332F for ; Thu, 14 Oct 2021 08:43:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C8508610EA for ; Thu, 14 Oct 2021 08:43:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230155AbhJNIpb (ORCPT ); Thu, 14 Oct 2021 04:45:31 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:37162 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S229970AbhJNIp1 (ORCPT ); Thu, 14 Oct 2021 04:45:27 -0400 X-UUID: 3ce46c0826c94b70bc6b09db3601ba85-20211014 X-UUID: 3ce46c0826c94b70bc6b09db3601ba85-20211014 Received: from mtkmbs10n2.mediatek.inc [(172.21.101.183)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1107982130; Thu, 14 Oct 2021 16:43:19 +0800 Received: from mtkexhb01.mediatek.inc (172.21.101.102) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.15; Thu, 14 Oct 2021 16:43:18 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkexhb01.mediatek.inc (172.21.101.102) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 14 Oct 2021 16:43:17 +0800 Received: from mtksdccf07 (172.21.84.99) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 14 Oct 2021 16:43:17 +0800 Message-ID: <3a07501641da72ea9b3cf528050c9d7516e09497.camel@mediatek.com> Subject: Re: [PATCH v7 0/5] media: mediatek: support mdp3 on mt8183 platform From: moudy ho To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Jernej Skrabec CC: Maoguang Meng , daoyuan huang , Ping-Hsun Wu , "Geert Uytterhoeven" , Rob Landley , Laurent Pinchart , , , , , , , , , , , , , , , Date: Thu, 14 Oct 2021 16:43:17 +0800 In-Reply-To: <0a50c059-bb13-0823-778c-b631ed07d76f@xs4all.nl> References: <20210824100027.25989-1-moudy.ho@mediatek.com> <0a50c059-bb13-0823-778c-b631ed07d76f@xs4all.nl> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Hans, Thank you for your kind guidance, it is really helpful for us to comprehend V4L2 framework. After modifying the settings you mentioned, the V4L2-Compliance test results all passed and listed below. All these changes will be integrated into the next version. localhost ~ # v4l2-compliance -d 11 v4l2-compliance SHA: not available , 32 bits, 32-bit time_t Compliance test for mtk-mdp3 device /dev/video11: Driver Info: Driver name : mtk-mdp3 Card type : 14001000.mdp3_rdma0 Bus info : platform:mtk-mdp3 Driver version : 5.10.66 Capabilities : 0x84204000 Video Memory-to-Memory Multiplanar Streaming Extended Pix Format Device Capabilities Device Caps : 0x04204000 Video Memory-to-Memory Multiplanar Streaming Extended Pix Format Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video11 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK test invalid ioctls: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 4 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK test Composing: OK test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Total for mtk-mdp3 device /dev/video11: 45, Succeeded: 45, Failed: 0, Warnings: 0 localhost ~ # v4l2-compliance -d 11 -s 1 v4l2-compliance SHA: not available , 32 bits, 32-bit time_t Compliance test for mtk-mdp3 device /dev/video11: Driver Info: Driver name : mtk-mdp3 Card type : 14001000.mdp3_rdma0 Bus info : platform:mtk-mdp3 Driver version : 5.10.66 Capabilities : 0x84204000 Video Memory-to-Memory Multiplanar Streaming Extended Pix Format Device Capabilities Device Caps : 0x04204000 Video Memory-to-Memory Multiplanar Streaming Extended Pix Format Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second /dev/video11 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK test invalid ioctls: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK test VIDIOC_QUERYCTRL: OK test VIDIOC_G/S_CTRL: OK test VIDIOC_G/S/TRY_EXT_CTRLS: OK test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 4 Private Controls: 0 Format ioctls: test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK test Composing: OK test Scaling: OK Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Test input 0: Streaming ioctls: test read/write: OK (Not Supported) test blocking wait: OK Video Capture Multiplanar: Captured 1 buffers test MMAP (no poll): OK Video Capture Multiplanar: Captured 1 buffers test MMAP (select): OK Video Capture Multiplanar: Captured 1 buffers test MMAP (epoll): OK test USERPTR (no poll): OK (Not Supported) test USERPTR (select): OK (Not Supported) test DMABUF: Cannot test, specify --expbuf-device Total for mtk-mdp3 device /dev/video11: 52, Succeeded: 52, Failed: 0, Warnings: 0 Thanks & Regards, Moudy Ho On Fri, 2021-09-03 at 12:01 +0200, Hans Verkuil wrote: > Hi Moudy, > > Can you provide the 'v4l2-compliance -s' output? > > Make sure to compile v4l2-compliance from the latest code base: > https://urldefense.com/v3/__https://git.linuxtv.org/v4l-utils.git/__;!!CTRNKA9wMg0ARbw!2QmkFhMoYBCR4MC5d_l8b7zvdEdwkfd6826nOY6WAHQChU4rMl8P9UtO6Z8ZrcPD$ > > > Compiling on x86_64 (so using COMPILE_TEST) fails: > > LD .tmp_vmlinux.kallsyms1 > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-core.o: in function > `mdp_probe': > mtk-mdp3-core.c:(.text+0x415): undefined reference to > `mtk_mutex_mdp_get' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.o: in function > `config_camin_subfrm': > mtk-mdp3-comp.c:(.text+0x9b): undefined reference to > `mtk_mmsys_mdp_camin_ctrl' > ld: mtk-mdp3-comp.c:(.text+0xbc): undefined reference to > `mtk_mmsys_mdp_camin_ctrl' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.o: in function > `mdp_component_deinit': > mtk-mdp3-comp.c:(.text+0x2707): undefined reference to > `mtk_mutex_put' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.o: in function > `init_isp.cold': > mtk-mdp3-comp.c:(.text.unlikely+0x4f): undefined reference to > `mtk_mmsys_mdp_isp_ctrl' > ld: mtk-mdp3-comp.c:(.text.unlikely+0x7a): undefined reference to > `mtk_mmsys_mdp_isp_ctrl' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function > `mdp_auto_release_work': > mtk-mdp3-cmdq.c:(.text+0x13): undefined reference to > `mtk_mutex_unprepare' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function > `mdp_path_subfrm_require': > mtk-mdp3-cmdq.c:(.text+0x45e): undefined reference to > `mtk_mutex_add_mdp_mod' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function > `mdp_path_subfrm_run.isra.0': > mtk-mdp3-cmdq.c:(.text+0x78b): undefined reference to > `mtk_mutex_enable_by_cmdq' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function > `mdp_path_config_subfrm': > mtk-mdp3-cmdq.c:(.text+0xa0d): undefined reference to > `mtk_mmsys_mdp_connect' > ld: mtk-mdp3-cmdq.c:(.text+0xd08): undefined reference to > `mtk_mmsys_mdp_disconnect' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function > `mdp_cmdq_send': > (.text+0x1358): undefined reference to `mtk_mutex_prepare' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function > `mdp_handle_cmdq_callback.cold': > mtk-mdp3-cmdq.c:(.text.unlikely+0x34): undefined reference to > `mtk_mutex_unprepare' > ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function > `mdp_cmdq_send.cold': > mtk-mdp3-cmdq.c:(.text.unlikely+0xe3): undefined reference to > `mtk_mutex_unprepare' > make: *** [Makefile:1177: vmlinux] Error 1 > > I also get compile warnings: > > drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c: In function > ‘mdp_sub_comps_create’: > drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c:1151:29: warning: > implicit conversion from ‘enum mtk_mdp_comp_id’ to ‘enum > mdp_comp_type’ [-Wenum-conversion] > 1151 | enum mdp_comp_type type = MDP_COMP_NONE; > | ^~~~~~~~~~~~~ > drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c: In function > ‘mdp_component_init’: > drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c:1217:6: warning: > unused variable ‘i’ [-Wunused-variable] > 1217 | int i, ret; > | ^ > drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c: In function > ‘mdp_cmdq_send’: > drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c:489:1: warning: the > frame size of 1312 bytes is larger than 1024 bytes [-Wframe-larger- > than=] > 489 | } > | ^ > > Regards, > > Hans > > On 24/08/2021 12:00, Moudy Ho wrote: > > Changes since v6: > > - Refactor GCE event to corresponding node. > > - Fix dt_binding_check fail. > > - Fix compilation errors. > > > > Changes since v5: > > - Rebase on v5.14-rc6. > > - Move MMSYS/Mutex settings to corresponding driver. > > - Revise the software license description and copyright. > > - Remove unnecessary enum. or definitions. > > - Optimize platform/chip definition conditions. > > - Use general printing functions instead of MDP3 private ones. > > - Fix compile warning. > > > > Changes since v4: > > - Rebase on v5.13-rc1. > > - Remove the CMDQ flush flow to match the CMDQ API change. > > - Integrate four of MDP's direct-link subcomponents into MDP > > controller node > > from syscon node to avoid illegal clock usage. > > - Rewrite dt-binding in a JSON compatible subset of YAML > > - Fix a bit of macro argument precedence. > > > > Changes since v3: > > - Rebase on v5.9-rc1. > > - modify code for review comment from Rob Herring, cancel multiple > > nodes using > > same register base situation. > > - control IOMMU port through pm runtime get/put to DMA components' > > device. > > - SCP(VPU) driver revision. > > - stop queuing jobs(remove flush_workqueue()) after > > mdp_m2m_release(). > > - add computation of plane address with data_offset. > > - fix scale ratio check issue. > > - add default v4l2_format setting. > > > > Changes since v2: > > - modify code for review comment from Tomasz Figa & Alexandre > > Courbot > > - review comment from Rob Herring will offer code revision in v4, > > due to > > it's related to device node modification, will need to modify > > code > > architecture > > > > Changes since v1: > > - modify code for CMDQ v3 API support > > - EC ipi cmd migration > > - fix compliance test fail item (m2m cmd with -f) due to there is > > two problem in runing all format(-f) cmd: > > 1. out of memory before test complete > > Due to capture buffer mmap (refcount + 1) after reqbuf but > > seems > > no corresponding munmap called before device close. > > There are total 12XX items(formats) in format test and each > > format > > alloc 8 capture/output buffers. > > 2. unceasingly captureBufs() (randomly) > > Seems the break statement didn't catch the count == 0 > > situation: > > In v4l2-test-buffers.cpp, function: captureBufs() > > ... > > count--; > > if (!node->is_m2m && !count) > > break; > > Log is as attachment > > > > I will paste the test result with problem part in another e-mail > > > > Hi, > > > > This is the first version of RFC patch for Media Data Path 3 > > (MDP3), > > MDP3 is used for scaling and color format conversion. > > support using GCE to write register in critical time limitation. > > support V4L2 m2m device control. > > > > Moudy Ho (5): > > soc: mediatek: mutex: add support for MDP > > soc: mediatek: mmsys: Add support for MDP > > dt-binding: mt8183: Add Mediatek MDP3 dt-bindings > > dts: arm64: mt8183: Add Mediatek MDP3 nodes > > media: platform: mtk-mdp3: Add Mediatek MDP3 driver > > > > .../bindings/media/mediatek,mdp3-ccorr.yaml | 57 + > > .../bindings/media/mediatek,mdp3-rdma.yaml | 207 +++ > > .../bindings/media/mediatek,mdp3-rsz.yaml | 65 + > > .../bindings/media/mediatek,mdp3-wdma.yaml | 71 + > > .../bindings/media/mediatek,mdp3-wrot.yaml | 71 + > > arch/arm64/boot/dts/mediatek/mt8183.dtsi | 110 ++ > > drivers/media/platform/Kconfig | 19 + > > drivers/media/platform/Makefile | 2 + > > drivers/media/platform/mtk-mdp3/Makefile | 6 + > > .../media/platform/mtk-mdp3/mdp_reg_ccorr.h | 19 + > > drivers/media/platform/mtk-mdp3/mdp_reg_isp.h | 27 + > > .../media/platform/mtk-mdp3/mdp_reg_rdma.h | 65 + > > drivers/media/platform/mtk-mdp3/mdp_reg_rsz.h | 39 + > > .../media/platform/mtk-mdp3/mdp_reg_wdma.h | 47 + > > .../media/platform/mtk-mdp3/mdp_reg_wrot.h | 55 + > > drivers/media/platform/mtk-mdp3/mtk-img-ipi.h | 280 ++++ > > .../media/platform/mtk-mdp3/mtk-mdp3-cmdq.c | 507 +++++++ > > .../media/platform/mtk-mdp3/mtk-mdp3-cmdq.h | 46 + > > .../media/platform/mtk-mdp3/mtk-mdp3-comp.c | 1307 > > +++++++++++++++++ > > .../media/platform/mtk-mdp3/mtk-mdp3-comp.h | 147 ++ > > .../media/platform/mtk-mdp3/mtk-mdp3-core.c | 329 +++++ > > .../media/platform/mtk-mdp3/mtk-mdp3-core.h | 75 + > > .../media/platform/mtk-mdp3/mtk-mdp3-m2m.c | 801 ++++++++++ > > .../media/platform/mtk-mdp3/mtk-mdp3-m2m.h | 41 + > > .../media/platform/mtk-mdp3/mtk-mdp3-regs.c | 746 ++++++++++ > > .../media/platform/mtk-mdp3/mtk-mdp3-regs.h | 372 +++++ > > .../media/platform/mtk-mdp3/mtk-mdp3-vpu.c | 312 ++++ > > .../media/platform/mtk-mdp3/mtk-mdp3-vpu.h | 78 + > > drivers/soc/mediatek/mt8183-mmsys.h | 235 +++ > > drivers/soc/mediatek/mtk-mmsys.c | 164 +++ > > drivers/soc/mediatek/mtk-mmsys.h | 9 +- > > drivers/soc/mediatek/mtk-mutex.c | 106 +- > > include/linux/soc/mediatek/mtk-mmsys.h | 81 + > > include/linux/soc/mediatek/mtk-mutex.h | 8 + > > 34 files changed, 6495 insertions(+), 9 deletions(-) > > create mode 100644 > > Documentation/devicetree/bindings/media/mediatek,mdp3-ccorr.yaml > > create mode 100644 > > Documentation/devicetree/bindings/media/mediatek,mdp3-rdma.yaml > > create mode 100644 > > Documentation/devicetree/bindings/media/mediatek,mdp3-rsz.yaml > > create mode 100644 > > Documentation/devicetree/bindings/media/mediatek,mdp3-wdma.yaml > > create mode 100644 > > Documentation/devicetree/bindings/media/mediatek,mdp3-wrot.yaml > > create mode 100644 drivers/media/platform/mtk-mdp3/Makefile > > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_ccorr.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_isp.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_rdma.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_rsz.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_wdma.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_wrot.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-img-ipi.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-core.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-m2m.c > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-m2m.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-regs.c > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-regs.h > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.c > > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.h > > > > 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 283ABC433F5 for ; Thu, 14 Oct 2021 08:43:59 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 D831E610EA for ; Thu, 14 Oct 2021 08:43:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D831E610EA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=IODEZrlr4b9lcz3PBAuIfmlHc4gwVQqtiDP+UCt12OM=; b=HqvyqDgiEXAkwV nLQyFFVJIVLoQOinpYsSawBSpPLgmXJzXGmNq1+UgRRXCUAM4KOrfCN1QLYUjk6Eq9jVxarwIX1pG Gb5HXhRZd/Km9GSAK8IkkHMNLpXSzOnhray3hi6PHFYhcJCWov6RAu6nMTAwB550XI+avGKm/6yqo XEiQ7VGDWZ54ZjJiBm3ZY154RjuDUE/gmdHfK0PAvyP1GbRQnoDA/QC20RIhHVGD4onpfajFLWHPs vDR6I7dh7F0wMcDTOpqn2l0F4X74OJ2qaMWdxjH4CAVtBUJcM3BS7DgyBwfkbWAJXB4GPZBYNVTwm oEr9+nH5H0+Xi6lzDaVQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mawL3-002Eb7-GF; Thu, 14 Oct 2021 08:43:45 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mawKo-002EYq-2a; Thu, 14 Oct 2021 08:43:33 +0000 X-UUID: 3a409e95b144490da56e45f1a7ee93aa-20211014 X-UUID: 3a409e95b144490da56e45f1a7ee93aa-20211014 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 934786405; Thu, 14 Oct 2021 01:43:26 -0700 Received: from mtkexhb01.mediatek.inc (172.21.101.102) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 14 Oct 2021 01:43:25 -0700 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkexhb01.mediatek.inc (172.21.101.102) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 14 Oct 2021 16:43:17 +0800 Received: from mtksdccf07 (172.21.84.99) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 14 Oct 2021 16:43:17 +0800 Message-ID: <3a07501641da72ea9b3cf528050c9d7516e09497.camel@mediatek.com> Subject: Re: [PATCH v7 0/5] media: mediatek: support mdp3 on mt8183 platform From: moudy ho To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Jernej Skrabec CC: Maoguang Meng , daoyuan huang , Ping-Hsun Wu , Geert Uytterhoeven , Rob Landley , Laurent Pinchart , , , , , , , , , , , , , , , Date: Thu, 14 Oct 2021 16:43:17 +0800 In-Reply-To: <0a50c059-bb13-0823-778c-b631ed07d76f@xs4all.nl> References: <20210824100027.25989-1-moudy.ho@mediatek.com> <0a50c059-bb13-0823-778c-b631ed07d76f@xs4all.nl> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211014_014330_144214_A3B77B2A X-CRM114-Status: GOOD ( 28.06 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org SGkgSGFucywKClRoYW5rIHlvdSBmb3IgeW91ciBraW5kIGd1aWRhbmNlLCBpdCBpcyByZWFsbHkg aGVscGZ1bCBmb3IgdXMgdG8KY29tcHJlaGVuZCBWNEwyIGZyYW1ld29yay4KQWZ0ZXIgbW9kaWZ5 aW5nIHRoZSBzZXR0aW5ncyB5b3UgbWVudGlvbmVkLCB0aGUgVjRMMi1Db21wbGlhbmNlIHRlc3QK cmVzdWx0cyBhbGwgcGFzc2VkIGFuZCBsaXN0ZWQgYmVsb3cuCkFsbCB0aGVzZSBjaGFuZ2VzIHdp bGwgYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBuZXh0IHZlcnNpb24uCgpsb2NhbGhvc3QgfiAjIHY0 bDItY29tcGxpYW5jZSAtZCAxMQp2NGwyLWNvbXBsaWFuY2UgU0hBOiBub3QgYXZhaWxhYmxlCiwg MzIgYml0cywgMzItYml0IHRpbWVfdAoKQ29tcGxpYW5jZSB0ZXN0IGZvciBtdGstbWRwMyBkZXZp Y2UgL2Rldi92aWRlbzExOgoKRHJpdmVyIEluZm86CiAgICAgICAgRHJpdmVyIG5hbWUgICAgICA6 IG10ay1tZHAzCiAgICAgICAgQ2FyZCB0eXBlICAgICAgICA6IDE0MDAxMDAwLm1kcDNfcmRtYTAK ICAgICAgICBCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06bXRrLW1kcDMKICAgICAgICBEcml2 ZXIgdmVyc2lvbiAgIDogNS4xMC42NgogICAgICAgIENhcGFiaWxpdGllcyAgICAgOiAweDg0MjA0 MDAwCiAgICAgICAgICAgICAgICBWaWRlbyBNZW1vcnktdG8tTWVtb3J5IE11bHRpcGxhbmFyCiAg ICAgICAgICAgICAgICBTdHJlYW1pbmcKICAgICAgICAgICAgICAgIEV4dGVuZGVkIFBpeCBGb3Jt YXQKICAgICAgICAgICAgICAgIERldmljZSBDYXBhYmlsaXRpZXMKICAgICAgICBEZXZpY2UgQ2Fw cyAgICAgIDogMHgwNDIwNDAwMAogICAgICAgICAgICAgICAgVmlkZW8gTWVtb3J5LXRvLU1lbW9y eSBNdWx0aXBsYW5hcgogICAgICAgICAgICAgICAgU3RyZWFtaW5nCiAgICAgICAgICAgICAgICBF eHRlbmRlZCBQaXggRm9ybWF0CgpSZXF1aXJlZCBpb2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0Nf UVVFUllDQVA6IE9LCgpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6CiAgICAgICAgdGVzdCBzZWNv bmQgL2Rldi92aWRlbzExIG9wZW46IE9LCiAgICAgICAgdGVzdCBWSURJT0NfUVVFUllDQVA6IE9L CiAgICAgICAgdGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSwogICAgICAgIHRlc3QgZm9yIHVu bGltaXRlZCBvcGVuczogT0sKCiAgICAgICAgdGVzdCBpbnZhbGlkIGlvY3RsczogT0sKRGVidWcg aW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX0RCR19HL1NfUkVHSVNURVI6IE9LIChOb3QgU3Vw cG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LIChOb3QgU3VwcG9ydGVk KQoKSW5wdXQgaW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX0cvU19UVU5FUi9FTlVNX0ZSRVFf QkFORFM6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0cvU19GUkVRVUVO Q1k6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVL OiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJRElPQ19FTlVNQVVESU86IE9LIChO b3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChOb3Qg U3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0cvU19BVURJTzogT0sgKE5vdCBTdXBwb3J0 ZWQpCiAgICAgICAgSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBUdW5lcnM6IDAKCk91dHB1dCBp b2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0NfRy9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0 ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQp CiAgICAgICAgdGVzdCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAg ICAgdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAg IHRlc3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIE91dHB1 dHM6IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1bGF0b3JzOiAwCgpJbnB1dC9PdXRwdXQgY29uZmln dXJhdGlvbiBpb2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBP SyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9U SU1JTkdTOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJRElPQ19EVl9USU1JTkdT X0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9L IChOb3QgU3VwcG9ydGVkKQoKQ29udHJvbCBpb2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0NfUVVF UllfRVhUX0NUUkwvUVVFUllNRU5VOiBPSwogICAgICAgIHRlc3QgVklESU9DX1FVRVJZQ1RSTDog T0sKICAgICAgICB0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sKICAgICAgICB0ZXN0IFZJRElPQ19H L1MvVFJZX0VYVF9DVFJMUzogT0sKICAgICAgICB0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VW RU5UL0RRRVZFTlQ6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfRy9TX0pQRUdDT01QOiBPSyAoTm90 IFN1cHBvcnRlZCkKICAgICAgICBTdGFuZGFyZCBDb250cm9sczogNCBQcml2YXRlIENvbnRyb2xz OiAwCgpGb3JtYXQgaW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0la RVMvRlJBTUVJTlRFUlZBTFM6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChO b3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0 ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfR19GTVQ6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfVFJZ X0ZNVDogT0sKICAgICAgICB0ZXN0IFZJRElPQ19TX0ZNVDogT0sKICAgICAgICB0ZXN0IFZJRElP Q19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IENyb3Bw aW5nOiBPSwogICAgICAgIHRlc3QgQ29tcG9zaW5nOiBPSwogICAgICAgIHRlc3QgU2NhbGluZzog T0sKCkNvZGVjIGlvY3RsczoKICAgICAgICB0ZXN0IFZJRElPQ18oVFJZXylFTkNPREVSX0NNRDog T0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChO b3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAo Tm90IFN1cHBvcnRlZCkKCkJ1ZmZlciBpb2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0NfUkVRQlVG Uy9DUkVBVEVfQlVGUy9RVUVSWUJVRjogT0sKICAgICAgICB0ZXN0IFZJRElPQ19FWFBCVUY6IE9L CiAgICAgICAgdGVzdCBSZXF1ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQpCgpUb3RhbCBmb3IgbXRr LW1kcDMgZGV2aWNlIC9kZXYvdmlkZW8xMTogNDUsIFN1Y2NlZWRlZDogNDUsIEZhaWxlZDogMCwK V2FybmluZ3M6IDAKCmxvY2FsaG9zdCB+ICMgdjRsMi1jb21wbGlhbmNlIC1kIDExIC1zIDEKdjRs Mi1jb21wbGlhbmNlIFNIQTogbm90IGF2YWlsYWJsZQosIDMyIGJpdHMsIDMyLWJpdCB0aW1lX3QK CkNvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLW1kcDMgZGV2aWNlIC9kZXYvdmlkZW8xMToKCkRyaXZl ciBJbmZvOgogICAgICAgIERyaXZlciBuYW1lICAgICAgOiBtdGstbWRwMwogICAgICAgIENhcmQg dHlwZSAgICAgICAgOiAxNDAwMTAwMC5tZHAzX3JkbWEwCiAgICAgICAgQnVzIGluZm8gICAgICAg ICA6IHBsYXRmb3JtOm10ay1tZHAzCiAgICAgICAgRHJpdmVyIHZlcnNpb24gICA6IDUuMTAuNjYK ICAgICAgICBDYXBhYmlsaXRpZXMgICAgIDogMHg4NDIwNDAwMAogICAgICAgICAgICAgICAgVmlk ZW8gTWVtb3J5LXRvLU1lbW9yeSBNdWx0aXBsYW5hcgogICAgICAgICAgICAgICAgU3RyZWFtaW5n CiAgICAgICAgICAgICAgICBFeHRlbmRlZCBQaXggRm9ybWF0CiAgICAgICAgICAgICAgICBEZXZp Y2UgQ2FwYWJpbGl0aWVzCiAgICAgICAgRGV2aWNlIENhcHMgICAgICA6IDB4MDQyMDQwMDAKICAg ICAgICAgICAgICAgIFZpZGVvIE1lbW9yeS10by1NZW1vcnkgTXVsdGlwbGFuYXIKICAgICAgICAg ICAgICAgIFN0cmVhbWluZwogICAgICAgICAgICAgICAgRXh0ZW5kZWQgUGl4IEZvcm1hdAoKUmVx dWlyZWQgaW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwoKQWxsb3cgZm9y IG11bHRpcGxlIG9wZW5zOgogICAgICAgIHRlc3Qgc2Vjb25kIC9kZXYvdmlkZW8xMSBvcGVuOiBP SwogICAgICAgIHRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwogICAgICAgIHRlc3QgVklESU9DX0cv U19QUklPUklUWTogT0sKICAgICAgICB0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LCgogICAg ICAgIHRlc3QgaW52YWxpZCBpb2N0bHM6IE9LCkRlYnVnIGlvY3RsczoKICAgICAgICB0ZXN0IFZJ RElPQ19EQkdfRy9TX1JFR0lTVEVSOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJ RElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBvcnRlZCkKCklucHV0IGlvY3RsczoKICAgICAg ICB0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRl ZCkKICAgICAgICB0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkK ICAgICAgICB0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBTdXBwb3J0ZWQpCiAg ICAgICAgdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0 ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0 IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIElucHV0czogMCBB dWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwCgpPdXRwdXQgaW9jdGxzOgogICAgICAgIHRlc3QgVklE SU9DX0cvU19NT0RVTEFUT1I6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9D X0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0VO VU1BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0cvUy9FTlVN T1VUUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJRElPQ19HL1NfQVVET1VU OiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICBPdXRwdXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAg TW9kdWxhdG9yczogMAoKSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9jdGxzOgogICAgICAg IHRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAg ICAgdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0 ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9ydGVk KQogICAgICAgIHRlc3QgVklESU9DX0cvU19FRElEOiBPSyAoTm90IFN1cHBvcnRlZCkKCkNvbnRy b2wgaW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZTUVOVTog T0sKICAgICAgICB0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LCiAgICAgICAgdGVzdCBWSURJT0Nf Ry9TX0NUUkw6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LCiAg ICAgICAgdGVzdCBWSURJT0NfKFVOKVNVQlNDUklCRV9FVkVOVC9EUUVWRU5UOiBPSwogICAgICAg IHRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAgICAgU3Rh bmRhcmQgQ29udHJvbHM6IDQgUHJpdmF0ZSBDb250cm9sczogMAoKRm9ybWF0IGlvY3RsczoKICAg ICAgICB0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZSQU1FSU5URVJWQUxTOiBPSwog ICAgICAgIHRlc3QgVklESU9DX0cvU19QQVJNOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0 ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9D X0dfRk1UOiBPSwogICAgICAgIHRlc3QgVklESU9DX1RSWV9GTVQ6IE9LCiAgICAgICAgdGVzdCBW SURJT0NfU19GTVQ6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sg KE5vdCBTdXBwb3J0ZWQpCiAgICAgICAgdGVzdCBDcm9wcGluZzogT0sKICAgICAgICB0ZXN0IENv bXBvc2luZzogT0sKICAgICAgICB0ZXN0IFNjYWxpbmc6IE9LCgpDb2RlYyBpb2N0bHM6CiAgICAg ICAgdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQogICAg ICAgIHRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0 ZXN0IFZJRElPQ18oVFJZXylERUNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpCgpCdWZmZXIg aW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6 IE9LCiAgICAgICAgdGVzdCBWSURJT0NfRVhQQlVGOiBPSwogICAgICAgIHRlc3QgUmVxdWVzdHM6 IE9LIChOb3QgU3VwcG9ydGVkKQoKVGVzdCBpbnB1dCAwOgoKU3RyZWFtaW5nIGlvY3RsczoKICAg ICAgICB0ZXN0IHJlYWQvd3JpdGU6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgYmxv Y2tpbmcgd2FpdDogT0sKICAgICAgICBWaWRlbyBDYXB0dXJlIE11bHRpcGxhbmFyOiBDYXB0dXJl ZCAxIGJ1ZmZlcnMKICAgICAgICB0ZXN0IE1NQVAgKG5vIHBvbGwpOiBPSwogICAgICAgIFZpZGVv IENhcHR1cmUgTXVsdGlwbGFuYXI6IENhcHR1cmVkIDEgYnVmZmVycwogICAgICAgIHRlc3QgTU1B UCAoc2VsZWN0KTogT0sKICAgICAgICBWaWRlbyBDYXB0dXJlIE11bHRpcGxhbmFyOiBDYXB0dXJl ZCAxIGJ1ZmZlcnMKICAgICAgICB0ZXN0IE1NQVAgKGVwb2xsKTogT0sKICAgICAgICB0ZXN0IFVT RVJQVFIgKG5vIHBvbGwpOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFVTRVJQVFIg KHNlbGVjdCk6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgRE1BQlVGOiBDYW5ub3Qg dGVzdCwgc3BlY2lmeSAtLWV4cGJ1Zi1kZXZpY2UKClRvdGFsIGZvciBtdGstbWRwMyBkZXZpY2Ug L2Rldi92aWRlbzExOiA1MiwgU3VjY2VlZGVkOiA1MiwgRmFpbGVkOiAwLApXYXJuaW5nczogMAoK VGhhbmtzICYgUmVnYXJkcywKTW91ZHkgSG8KCk9uIEZyaSwgMjAyMS0wOS0wMyBhdCAxMjowMSAr MDIwMCwgSGFucyBWZXJrdWlsIHdyb3RlOgo+IEhpIE1vdWR5LAo+IAo+IENhbiB5b3UgcHJvdmlk ZSB0aGUgJ3Y0bDItY29tcGxpYW5jZSAtcycgb3V0cHV0Pwo+IAo+IE1ha2Ugc3VyZSB0byBjb21w aWxlIHY0bDItY29tcGxpYW5jZSBmcm9tIHRoZSBsYXRlc3QgY29kZSBiYXNlOgo+IApodHRwczov L3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9naXQubGludXh0di5vcmcvdjRsLXV0aWxzLmdp dC9fXzshIUNUUk5LQTl3TWcwQVJidyEyUW1rRmhNb1lCQ1I0TUM1ZF9sOGI3enZkRWR3a2ZkNjgy Nm5PWTZXQUhRQ2hVNHJNbDhQOVV0TzZaOFpyY1BEJAo+ICAKPiAKPiBDb21waWxpbmcgb24geDg2 XzY0IChzbyB1c2luZyBDT01QSUxFX1RFU1QpIGZhaWxzOgo+IAo+ICAgTEQgICAgICAudG1wX3Zt bGludXgua2FsbHN5bXMxCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRr LW1kcDMtY29yZS5vOiBpbiBmdW5jdGlvbgo+IGBtZHBfcHJvYmUnOgo+IG10ay1tZHAzLWNvcmUu YzooLnRleHQrMHg0MTUpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvCj4gYG10a19tdXRleF9tZHBf Z2V0Jwo+IGxkOiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAu bzogaW4gZnVuY3Rpb24KPiBgY29uZmlnX2NhbWluX3N1YmZybSc6Cj4gbXRrLW1kcDMtY29tcC5j OigudGV4dCsweDliKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0bwo+IGBtdGtfbW1zeXNfbWRwX2Nh bWluX2N0cmwnCj4gbGQ6IG10ay1tZHAzLWNvbXAuYzooLnRleHQrMHhiYyk6IHVuZGVmaW5lZCBy ZWZlcmVuY2UgdG8KPiBgbXRrX21tc3lzX21kcF9jYW1pbl9jdHJsJwo+IGxkOiBkcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAubzogaW4gZnVuY3Rpb24KPiBgbWRw X2NvbXBvbmVudF9kZWluaXQnOgo+IG10ay1tZHAzLWNvbXAuYzooLnRleHQrMHgyNzA3KTogdW5k ZWZpbmVkIHJlZmVyZW5jZSB0bwo+IGBtdGtfbXV0ZXhfcHV0Jwo+IGxkOiBkcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAubzogaW4gZnVuY3Rpb24KPiBgaW5pdF9p c3AuY29sZCc6Cj4gbXRrLW1kcDMtY29tcC5jOigudGV4dC51bmxpa2VseSsweDRmKTogdW5kZWZp bmVkIHJlZmVyZW5jZSB0bwo+IGBtdGtfbW1zeXNfbWRwX2lzcF9jdHJsJwo+IGxkOiBtdGstbWRw My1jb21wLmM6KC50ZXh0LnVubGlrZWx5KzB4N2EpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvCj4g YG10a19tbXN5c19tZHBfaXNwX2N0cmwnCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LW1kcDMvbXRrLW1kcDMtY21kcS5vOiBpbiBmdW5jdGlvbgo+IGBtZHBfYXV0b19yZWxlYXNlX3dv cmsnOgo+IG10ay1tZHAzLWNtZHEuYzooLnRleHQrMHgxMyk6IHVuZGVmaW5lZCByZWZlcmVuY2Ug dG8KPiBgbXRrX211dGV4X3VucHJlcGFyZScKPiBsZDogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstbWRwMy9tdGstbWRwMy1jbWRxLm86IGluIGZ1bmN0aW9uCj4gYG1kcF9wYXRoX3N1YmZybV9y ZXF1aXJlJzoKPiBtdGstbWRwMy1jbWRxLmM6KC50ZXh0KzB4NDVlKTogdW5kZWZpbmVkIHJlZmVy ZW5jZSB0bwo+IGBtdGtfbXV0ZXhfYWRkX21kcF9tb2QnCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtY21kcS5vOiBpbiBmdW5jdGlvbgo+IGBtZHBfcGF0aF9z dWJmcm1fcnVuLmlzcmEuMCc6Cj4gbXRrLW1kcDMtY21kcS5jOigudGV4dCsweDc4Yik6IHVuZGVm aW5lZCByZWZlcmVuY2UgdG8KPiBgbXRrX211dGV4X2VuYWJsZV9ieV9jbWRxJwo+IGxkOiBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNtZHEubzogaW4gZnVuY3Rpb24K PiBgbWRwX3BhdGhfY29uZmlnX3N1YmZybSc6Cj4gbXRrLW1kcDMtY21kcS5jOigudGV4dCsweGEw ZCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8KPiBgbXRrX21tc3lzX21kcF9jb25uZWN0Jwo+IGxk OiBtdGstbWRwMy1jbWRxLmM6KC50ZXh0KzB4ZDA4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0bwo+ IGBtdGtfbW1zeXNfbWRwX2Rpc2Nvbm5lY3QnCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLW1kcDMvbXRrLW1kcDMtY21kcS5vOiBpbiBmdW5jdGlvbgo+IGBtZHBfY21kcV9zZW5kJzoK PiAoLnRleHQrMHgxMzU4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbXRrX211dGV4X3ByZXBh cmUnCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtY21kcS5v OiBpbiBmdW5jdGlvbgo+IGBtZHBfaGFuZGxlX2NtZHFfY2FsbGJhY2suY29sZCc6Cj4gbXRrLW1k cDMtY21kcS5jOigudGV4dC51bmxpa2VseSsweDM0KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0bwo+ IGBtdGtfbXV0ZXhfdW5wcmVwYXJlJwo+IGxkOiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1t ZHAzL210ay1tZHAzLWNtZHEubzogaW4gZnVuY3Rpb24KPiBgbWRwX2NtZHFfc2VuZC5jb2xkJzoK PiBtdGstbWRwMy1jbWRxLmM6KC50ZXh0LnVubGlrZWx5KzB4ZTMpOiB1bmRlZmluZWQgcmVmZXJl bmNlIHRvCj4gYG10a19tdXRleF91bnByZXBhcmUnCj4gbWFrZTogKioqIFtNYWtlZmlsZToxMTc3 OiB2bWxpbnV4XSBFcnJvciAxCj4gCj4gSSBhbHNvIGdldCBjb21waWxlIHdhcm5pbmdzOgo+IAo+ IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtY29tcC5jOiBJbiBmdW5j dGlvbgo+IOKAmG1kcF9zdWJfY29tcHNfY3JlYXRl4oCZOgo+IGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLW1kcDMvbXRrLW1kcDMtY29tcC5jOjExNTE6Mjk6IHdhcm5pbmc6Cj4gaW1wbGljaXQg Y29udmVyc2lvbiBmcm9tIOKAmGVudW0gbXRrX21kcF9jb21wX2lk4oCZIHRvIOKAmGVudW0KPiBt ZHBfY29tcF90eXBl4oCZIFstV2VudW0tY29udmVyc2lvbl0KPiAgMTE1MSB8ICAgZW51bSBtZHBf Y29tcF90eXBlIHR5cGUgPSBNRFBfQ09NUF9OT05FOwo+ICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn4KPiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1t ZHAzL210ay1tZHAzLWNvbXAuYzogSW4gZnVuY3Rpb24KPiDigJhtZHBfY29tcG9uZW50X2luaXTi gJk6Cj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1jb21wLmM6MTIx Nzo2OiB3YXJuaW5nOgo+IHVudXNlZCB2YXJpYWJsZSDigJhp4oCZIFstV3VudXNlZC12YXJpYWJs ZV0KPiAgMTIxNyB8ICBpbnQgaSwgcmV0Owo+ICAgICAgIHwgICAgICBeCj4gZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1jbWRxLmM6IEluIGZ1bmN0aW9uCj4g4oCYbWRw X2NtZHFfc2VuZOKAmToKPiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAz LWNtZHEuYzo0ODk6MTogd2FybmluZzogdGhlCj4gZnJhbWUgc2l6ZSBvZiAxMzEyIGJ5dGVzIGlz IGxhcmdlciB0aGFuIDEwMjQgYnl0ZXMgWy1XZnJhbWUtbGFyZ2VyLQo+IHRoYW49XQo+ICAgNDg5 IHwgfQo+ICAgICAgIHwgXgo+IAo+IFJlZ2FyZHMsCj4gCj4gCUhhbnMKPiAKPiBPbiAyNC8wOC8y MDIxIDEyOjAwLCBNb3VkeSBIbyB3cm90ZToKPiA+IENoYW5nZXMgc2luY2UgdjY6Cj4gPiAtIFJl ZmFjdG9yIEdDRSBldmVudCB0byBjb3JyZXNwb25kaW5nIG5vZGUuCj4gPiAtIEZpeCBkdF9iaW5k aW5nX2NoZWNrIGZhaWwuCj4gPiAtIEZpeCBjb21waWxhdGlvbiBlcnJvcnMuCj4gPiAKPiA+IENo YW5nZXMgc2luY2UgdjU6Cj4gPiAtIFJlYmFzZSBvbiB2NS4xNC1yYzYuCj4gPiAtIE1vdmUgTU1T WVMvTXV0ZXggc2V0dGluZ3MgdG8gY29ycmVzcG9uZGluZyBkcml2ZXIuCj4gPiAtIFJldmlzZSB0 aGUgc29mdHdhcmUgbGljZW5zZSBkZXNjcmlwdGlvbiBhbmQgY29weXJpZ2h0Lgo+ID4gLSBSZW1v dmUgdW5uZWNlc3NhcnkgZW51bS4gb3IgZGVmaW5pdGlvbnMuCj4gPiAtIE9wdGltaXplIHBsYXRm b3JtL2NoaXAgZGVmaW5pdGlvbiBjb25kaXRpb25zLgo+ID4gLSBVc2UgZ2VuZXJhbCBwcmludGlu ZyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBNRFAzIHByaXZhdGUgb25lcy4KPiA+IC0gRml4IGNvbXBp bGUgd2FybmluZy4KPiA+IAo+ID4gQ2hhbmdlcyBzaW5jZSB2NDoKPiA+IC0gUmViYXNlIG9uIHY1 LjEzLXJjMS4KPiA+IC0gUmVtb3ZlIHRoZSBDTURRIGZsdXNoIGZsb3cgdG8gbWF0Y2ggdGhlIENN RFEgQVBJIGNoYW5nZS4KPiA+IC0gSW50ZWdyYXRlIGZvdXIgb2YgTURQJ3MgZGlyZWN0LWxpbmsg c3ViY29tcG9uZW50cyBpbnRvIE1EUAo+ID4gY29udHJvbGxlciBub2RlCj4gPiAgIGZyb20gc3lz Y29uIG5vZGUgdG8gYXZvaWQgaWxsZWdhbCBjbG9jayB1c2FnZS4KPiA+IC0gUmV3cml0ZSBkdC1i aW5kaW5nIGluIGEgSlNPTiBjb21wYXRpYmxlIHN1YnNldCBvZiBZQU1MCj4gPiAtIEZpeCBhIGJp dCBvZiBtYWNybyBhcmd1bWVudCBwcmVjZWRlbmNlLgo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYz Ogo+ID4gLSBSZWJhc2Ugb24gdjUuOS1yYzEuCj4gPiAtIG1vZGlmeSBjb2RlIGZvciByZXZpZXcg Y29tbWVudCBmcm9tIFJvYiBIZXJyaW5nLCBjYW5jZWwgbXVsdGlwbGUKPiA+IG5vZGVzIHVzaW5n Cj4gPiAgIHNhbWUgcmVnaXN0ZXIgYmFzZSBzaXR1YXRpb24uCj4gPiAtIGNvbnRyb2wgSU9NTVUg cG9ydCB0aHJvdWdoIHBtIHJ1bnRpbWUgZ2V0L3B1dCB0byBETUEgY29tcG9uZW50cycKPiA+IGRl dmljZS4KPiA+IC0gU0NQKFZQVSkgZHJpdmVyIHJldmlzaW9uLgo+ID4gLSBzdG9wIHF1ZXVpbmcg am9icyhyZW1vdmUgZmx1c2hfd29ya3F1ZXVlKCkpIGFmdGVyCj4gPiBtZHBfbTJtX3JlbGVhc2Uo KS4KPiA+IC0gYWRkIGNvbXB1dGF0aW9uIG9mIHBsYW5lIGFkZHJlc3Mgd2l0aCBkYXRhX29mZnNl dC4KPiA+IC0gZml4IHNjYWxlIHJhdGlvIGNoZWNrIGlzc3VlLgo+ID4gLSBhZGQgZGVmYXVsdCB2 NGwyX2Zvcm1hdCBzZXR0aW5nLgo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ID4gLSBtb2Rp ZnkgY29kZSBmb3IgcmV2aWV3IGNvbW1lbnQgZnJvbSBUb21hc3ogRmlnYSAmIEFsZXhhbmRyZQo+ ID4gQ291cmJvdAo+ID4gLSByZXZpZXcgY29tbWVudCBmcm9tIFJvYiBIZXJyaW5nIHdpbGwgb2Zm ZXIgY29kZSByZXZpc2lvbiBpbiB2NCwKPiA+IGR1ZSB0bwo+ID4gICBpdCdzIHJlbGF0ZWQgdG8g ZGV2aWNlIG5vZGUgbW9kaWZpY2F0aW9uLCB3aWxsIG5lZWQgdG8gbW9kaWZ5Cj4gPiBjb2RlCj4g PiAgIGFyY2hpdGVjdHVyZQo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYxOgo+ID4gLSBtb2RpZnkg Y29kZSBmb3IgQ01EUSB2MyBBUEkgc3VwcG9ydAo+ID4gLSBFQyBpcGkgY21kIG1pZ3JhdGlvbgo+ ID4gLSBmaXggY29tcGxpYW5jZSB0ZXN0IGZhaWwgaXRlbSAobTJtIGNtZCB3aXRoIC1mKSBkdWUg dG8gdGhlcmUgaXMKPiA+IHR3byBwcm9ibGVtIGluIHJ1bmluZyBhbGwgZm9ybWF0KC1mKSBjbWQ6 Cj4gPiAxLiBvdXQgb2YgbWVtb3J5IGJlZm9yZSB0ZXN0IGNvbXBsZXRlCj4gPiAgICAgICAgIER1 ZSB0byBjYXB0dXJlIGJ1ZmZlciBtbWFwIChyZWZjb3VudCArIDEpIGFmdGVyIHJlcWJ1ZiBidXQK PiA+IHNlZW1zCj4gPiAgICAgICAgIG5vIGNvcnJlc3BvbmRpbmcgbXVubWFwIGNhbGxlZCBiZWZv cmUgZGV2aWNlIGNsb3NlLgo+ID4gICAgICAgICBUaGVyZSBhcmUgdG90YWwgMTJYWCBpdGVtcyhm b3JtYXRzKSBpbiBmb3JtYXQgdGVzdCBhbmQgZWFjaAo+ID4gZm9ybWF0Cj4gPiAgICAgICAgIGFs bG9jIDggY2FwdHVyZS9vdXRwdXQgYnVmZmVycy4KPiA+IDIuIHVuY2Vhc2luZ2x5IGNhcHR1cmVC dWZzKCkgKHJhbmRvbWx5KQo+ID4gICAgICAgICBTZWVtcyB0aGUgYnJlYWsgc3RhdGVtZW50IGRp ZG4ndCBjYXRjaCB0aGUgY291bnQgPT0gMAo+ID4gc2l0dWF0aW9uOgo+ID4gICAgICAgICBJbiB2 NGwyLXRlc3QtYnVmZmVycy5jcHAsIGZ1bmN0aW9uOiBjYXB0dXJlQnVmcygpCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAuLi4KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LS07 Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmlzX20ybSAmJiAhY291bnQp Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgICBM b2cgaXMgYXMgYXR0YWNobWVudAo+ID4gCj4gPiBJIHdpbGwgcGFzdGUgdGhlIHRlc3QgcmVzdWx0 IHdpdGggcHJvYmxlbSBwYXJ0IGluIGFub3RoZXIgZS1tYWlsCj4gPiAKPiA+IEhpLAo+ID4gCj4g PiBUaGlzIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIFJGQyBwYXRjaCBmb3IgTWVkaWEgRGF0YSBQ YXRoIDMKPiA+IChNRFAzKSwKPiA+IE1EUDMgaXMgdXNlZCBmb3Igc2NhbGluZyBhbmQgY29sb3Ig Zm9ybWF0IGNvbnZlcnNpb24uCj4gPiBzdXBwb3J0IHVzaW5nIEdDRSB0byB3cml0ZSByZWdpc3Rl ciBpbiBjcml0aWNhbCB0aW1lIGxpbWl0YXRpb24uCj4gPiBzdXBwb3J0IFY0TDIgbTJtIGRldmlj ZSBjb250cm9sLgo+ID4gCj4gPiBNb3VkeSBIbyAoNSk6Cj4gPiAgIHNvYzogbWVkaWF0ZWs6IG11 dGV4OiBhZGQgc3VwcG9ydCBmb3IgTURQCj4gPiAgIHNvYzogbWVkaWF0ZWs6IG1tc3lzOiBBZGQg c3VwcG9ydCBmb3IgTURQCj4gPiAgIGR0LWJpbmRpbmc6IG10ODE4MzogQWRkIE1lZGlhdGVrIE1E UDMgZHQtYmluZGluZ3MKPiA+ICAgZHRzOiBhcm02NDogbXQ4MTgzOiBBZGQgTWVkaWF0ZWsgTURQ MyBub2Rlcwo+ID4gICBtZWRpYTogcGxhdGZvcm06IG10ay1tZHAzOiBBZGQgTWVkaWF0ZWsgTURQ MyBkcml2ZXIKPiA+IAo+ID4gIC4uLi9iaW5kaW5ncy9tZWRpYS9tZWRpYXRlayxtZHAzLWNjb3Jy LnlhbWwgICB8ICAgNTcgKwo+ID4gIC4uLi9iaW5kaW5ncy9tZWRpYS9tZWRpYXRlayxtZHAzLXJk bWEueWFtbCAgICB8ICAyMDcgKysrCj4gPiAgLi4uL2JpbmRpbmdzL21lZGlhL21lZGlhdGVrLG1k cDMtcnN6LnlhbWwgICAgIHwgICA2NSArCj4gPiAgLi4uL2JpbmRpbmdzL21lZGlhL21lZGlhdGVr LG1kcDMtd2RtYS55YW1sICAgIHwgICA3MSArCj4gPiAgLi4uL2JpbmRpbmdzL21lZGlhL21lZGlh dGVrLG1kcDMtd3JvdC55YW1sICAgIHwgICA3MSArCj4gPiAgYXJjaC9hcm02NC9ib290L2R0cy9t ZWRpYXRlay9tdDgxODMuZHRzaSAgICAgIHwgIDExMCArKwo+ID4gIGRyaXZlcnMvbWVkaWEvcGxh dGZvcm0vS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAgMTkgKwo+ID4gIGRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgIDIgKwo+ID4gIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLW1kcDMvTWFrZWZpbGUgICAgICB8ICAgIDYgKwo+ID4gIC4uLi9tZWRp YS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX2Njb3JyLmggICB8ICAgMTkgKwo+ID4gIGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbWRwX3JlZ19pc3AuaCB8ICAgMjcgKwo+ID4gIC4u Li9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX3JkbWEuaCAgICB8ICAgNjUgKwo+ID4g IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbWRwX3JlZ19yc3ouaCB8ICAgMzkgKwo+ ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX3dkbWEuaCAgICB8ICAgNDcg Kwo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX3dyb3QuaCAgICB8ICAg NTUgKwo+ID4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLWltZy1pcGkuaCB8 ICAyODAgKysrKwo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1jbWRx LmMgICB8ICA1MDcgKysrKysrKwo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGst bWRwMy1jbWRxLmggICB8ICAgNDYgKwo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9t dGstbWRwMy1jb21wLmMgICB8IDEzMDcKPiA+ICsrKysrKysrKysrKysrKysrCj4gPiAgLi4uL21l ZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAuaCAgIHwgIDE0NyArKwo+ID4gIC4u Li9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1jb3JlLmMgICB8ICAzMjkgKysrKysK PiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtY29yZS5oICAgfCAgIDc1 ICsKPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtbTJtLmMgICAgfCAg ODAxICsrKysrKysrKysKPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMt bTJtLmggICAgfCAgIDQxICsKPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1k cDMtcmVncy5jICAgfCAgNzQ2ICsrKysrKysrKysKPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRr LW1kcDMvbXRrLW1kcDMtcmVncy5oICAgfCAgMzcyICsrKysrCj4gPiAgLi4uL21lZGlhL3BsYXRm b3JtL210ay1tZHAzL210ay1tZHAzLXZwdS5jICAgIHwgIDMxMiArKysrCj4gPiAgLi4uL21lZGlh L3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLXZwdS5oICAgIHwgICA3OCArCj4gPiAgZHJpdmVy cy9zb2MvbWVkaWF0ZWsvbXQ4MTgzLW1tc3lzLmggICAgICAgICAgIHwgIDIzNSArKysKPiA+ICBk cml2ZXJzL3NvYy9tZWRpYXRlay9tdGstbW1zeXMuYyAgICAgICAgICAgICAgfCAgMTY0ICsrKwo+ ID4gIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5oICAgICAgICAgICAgICB8ICAgIDkg Ky0KPiA+ICBkcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstbXV0ZXguYyAgICAgICAgICAgICAgfCAg MTA2ICstCj4gPiAgaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmggICAgICAg IHwgICA4MSArCj4gPiAgaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW11dGV4LmggICAg ICAgIHwgICAgOCArCj4gPiAgMzQgZmlsZXMgY2hhbmdlZCwgNjQ5NSBpbnNlcnRpb25zKCspLCA5 IGRlbGV0aW9ucygtKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NAo+ID4gRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL21lZGlhdGVrLG1kcDMtY2NvcnIueWFtbAo+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NAo+ID4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21l ZGlhL21lZGlhdGVrLG1kcDMtcmRtYS55YW1sCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0Cj4gPiBE b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvbWVkaWF0ZWssbWRwMy1yc3ou eWFtbAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NAo+ID4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL21lZGlhL21lZGlhdGVrLG1kcDMtd2RtYS55YW1sCj4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0Cj4gPiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvbWVkaWF0 ZWssbWRwMy13cm90LnlhbWwKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstbWRwMy9NYWtlZmlsZQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1tZHAzL21kcF9yZWdfY2NvcnIuaAo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL21kcF9yZWdfaXNwLmgKPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBf cmVnX3JkbWEuaAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1tZHAzL21kcF9yZWdfcnN6LmgKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX3dkbWEuaAo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL21kcF9yZWdfd3JvdC5oCj4gPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLWlt Zy1pcGkuaAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210 ay1tZHAzL210ay1tZHAzLWNtZHEuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNtZHEuaAo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAuYwo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1t ZHAzLWNvbXAuaAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1tZHAzL210ay1tZHAzLWNvcmUuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvcmUuaAo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLW0ybS5jCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRr LW1kcDMtbTJtLmgKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tdGstbWRwMy9tdGstbWRwMy1yZWdzLmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1yZWdzLmgKPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy12cHUuYwo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210 ay1tZHAzLXZwdS5oCj4gPiAKPiAKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpMaW51eC1tZWRpYXRlayBtYWlsaW5nIGxpc3QKTGludXgtbWVkaWF0 ZWtAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LW1lZGlhdGVrCg== 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8EED6C433F5 for ; Thu, 14 Oct 2021 08:45:34 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 56C2B60FDA for ; Thu, 14 Oct 2021 08:45:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 56C2B60FDA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=EfCs7XIFO/pLq2Yt96TYfHclOPpXikkihqLwG85tuIY=; b=X6C2IgGyuVzl1z qUnZH2jrL4EKBC0m6S3kZpXPCaOIW7NScepkWGxJynfV8D3YodcWjG8flAC0+KvGqv+SYHuLEctjA BeacerIdZvOS6XUU/T3gss8COFSjploIsGuYN3sDDDTfDqot6DL2Kba9Bg7NveDQxh75Tx8+uEkMI WxZxfbuZPlzHQ+7k3CxJesZY/KwdyApVS1fv7R4t2kQQgdkbvBjhaX9h8RE43a2/CtaKLOPmBLe3N lRIGM3odAEFsj5a8krU2nCaDDHGNtqCypN/n0mHRrpNnIsp4hLTZJPSIBBsITqJIV4NA44BbEGa3j r3488L/9evqWRsN5Cwow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mawKs-002Ea7-Uu; Thu, 14 Oct 2021 08:43:35 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mawKo-002EYq-2a; Thu, 14 Oct 2021 08:43:33 +0000 X-UUID: 3a409e95b144490da56e45f1a7ee93aa-20211014 X-UUID: 3a409e95b144490da56e45f1a7ee93aa-20211014 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 934786405; Thu, 14 Oct 2021 01:43:26 -0700 Received: from mtkexhb01.mediatek.inc (172.21.101.102) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 14 Oct 2021 01:43:25 -0700 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkexhb01.mediatek.inc (172.21.101.102) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 14 Oct 2021 16:43:17 +0800 Received: from mtksdccf07 (172.21.84.99) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 14 Oct 2021 16:43:17 +0800 Message-ID: <3a07501641da72ea9b3cf528050c9d7516e09497.camel@mediatek.com> Subject: Re: [PATCH v7 0/5] media: mediatek: support mdp3 on mt8183 platform From: moudy ho To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Jernej Skrabec CC: Maoguang Meng , daoyuan huang , Ping-Hsun Wu , Geert Uytterhoeven , Rob Landley , Laurent Pinchart , , , , , , , , , , , , , , , Date: Thu, 14 Oct 2021 16:43:17 +0800 In-Reply-To: <0a50c059-bb13-0823-778c-b631ed07d76f@xs4all.nl> References: <20210824100027.25989-1-moudy.ho@mediatek.com> <0a50c059-bb13-0823-778c-b631ed07d76f@xs4all.nl> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211014_014330_144214_A3B77B2A X-CRM114-Status: GOOD ( 28.06 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgSGFucywKClRoYW5rIHlvdSBmb3IgeW91ciBraW5kIGd1aWRhbmNlLCBpdCBpcyByZWFsbHkg aGVscGZ1bCBmb3IgdXMgdG8KY29tcHJlaGVuZCBWNEwyIGZyYW1ld29yay4KQWZ0ZXIgbW9kaWZ5 aW5nIHRoZSBzZXR0aW5ncyB5b3UgbWVudGlvbmVkLCB0aGUgVjRMMi1Db21wbGlhbmNlIHRlc3QK cmVzdWx0cyBhbGwgcGFzc2VkIGFuZCBsaXN0ZWQgYmVsb3cuCkFsbCB0aGVzZSBjaGFuZ2VzIHdp bGwgYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBuZXh0IHZlcnNpb24uCgpsb2NhbGhvc3QgfiAjIHY0 bDItY29tcGxpYW5jZSAtZCAxMQp2NGwyLWNvbXBsaWFuY2UgU0hBOiBub3QgYXZhaWxhYmxlCiwg MzIgYml0cywgMzItYml0IHRpbWVfdAoKQ29tcGxpYW5jZSB0ZXN0IGZvciBtdGstbWRwMyBkZXZp Y2UgL2Rldi92aWRlbzExOgoKRHJpdmVyIEluZm86CiAgICAgICAgRHJpdmVyIG5hbWUgICAgICA6 IG10ay1tZHAzCiAgICAgICAgQ2FyZCB0eXBlICAgICAgICA6IDE0MDAxMDAwLm1kcDNfcmRtYTAK ICAgICAgICBCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06bXRrLW1kcDMKICAgICAgICBEcml2 ZXIgdmVyc2lvbiAgIDogNS4xMC42NgogICAgICAgIENhcGFiaWxpdGllcyAgICAgOiAweDg0MjA0 MDAwCiAgICAgICAgICAgICAgICBWaWRlbyBNZW1vcnktdG8tTWVtb3J5IE11bHRpcGxhbmFyCiAg ICAgICAgICAgICAgICBTdHJlYW1pbmcKICAgICAgICAgICAgICAgIEV4dGVuZGVkIFBpeCBGb3Jt YXQKICAgICAgICAgICAgICAgIERldmljZSBDYXBhYmlsaXRpZXMKICAgICAgICBEZXZpY2UgQ2Fw cyAgICAgIDogMHgwNDIwNDAwMAogICAgICAgICAgICAgICAgVmlkZW8gTWVtb3J5LXRvLU1lbW9y eSBNdWx0aXBsYW5hcgogICAgICAgICAgICAgICAgU3RyZWFtaW5nCiAgICAgICAgICAgICAgICBF eHRlbmRlZCBQaXggRm9ybWF0CgpSZXF1aXJlZCBpb2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0Nf UVVFUllDQVA6IE9LCgpBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6CiAgICAgICAgdGVzdCBzZWNv bmQgL2Rldi92aWRlbzExIG9wZW46IE9LCiAgICAgICAgdGVzdCBWSURJT0NfUVVFUllDQVA6IE9L CiAgICAgICAgdGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSwogICAgICAgIHRlc3QgZm9yIHVu bGltaXRlZCBvcGVuczogT0sKCiAgICAgICAgdGVzdCBpbnZhbGlkIGlvY3RsczogT0sKRGVidWcg aW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX0RCR19HL1NfUkVHSVNURVI6IE9LIChOb3QgU3Vw cG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LIChOb3QgU3VwcG9ydGVk KQoKSW5wdXQgaW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX0cvU19UVU5FUi9FTlVNX0ZSRVFf QkFORFM6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0cvU19GUkVRVUVO Q1k6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVL OiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJRElPQ19FTlVNQVVESU86IE9LIChO b3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChOb3Qg U3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0cvU19BVURJTzogT0sgKE5vdCBTdXBwb3J0 ZWQpCiAgICAgICAgSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBUdW5lcnM6IDAKCk91dHB1dCBp b2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0NfRy9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0 ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQp CiAgICAgICAgdGVzdCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAg ICAgdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAg IHRlc3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIE91dHB1 dHM6IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1bGF0b3JzOiAwCgpJbnB1dC9PdXRwdXQgY29uZmln dXJhdGlvbiBpb2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBP SyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9U SU1JTkdTOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJRElPQ19EVl9USU1JTkdT X0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9L IChOb3QgU3VwcG9ydGVkKQoKQ29udHJvbCBpb2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0NfUVVF UllfRVhUX0NUUkwvUVVFUllNRU5VOiBPSwogICAgICAgIHRlc3QgVklESU9DX1FVRVJZQ1RSTDog T0sKICAgICAgICB0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sKICAgICAgICB0ZXN0IFZJRElPQ19H L1MvVFJZX0VYVF9DVFJMUzogT0sKICAgICAgICB0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VW RU5UL0RRRVZFTlQ6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfRy9TX0pQRUdDT01QOiBPSyAoTm90 IFN1cHBvcnRlZCkKICAgICAgICBTdGFuZGFyZCBDb250cm9sczogNCBQcml2YXRlIENvbnRyb2xz OiAwCgpGb3JtYXQgaW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0la RVMvRlJBTUVJTlRFUlZBTFM6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChO b3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0 ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfR19GTVQ6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfVFJZ X0ZNVDogT0sKICAgICAgICB0ZXN0IFZJRElPQ19TX0ZNVDogT0sKICAgICAgICB0ZXN0IFZJRElP Q19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IENyb3Bw aW5nOiBPSwogICAgICAgIHRlc3QgQ29tcG9zaW5nOiBPSwogICAgICAgIHRlc3QgU2NhbGluZzog T0sKCkNvZGVjIGlvY3RsczoKICAgICAgICB0ZXN0IFZJRElPQ18oVFJZXylFTkNPREVSX0NNRDog T0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChO b3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAo Tm90IFN1cHBvcnRlZCkKCkJ1ZmZlciBpb2N0bHM6CiAgICAgICAgdGVzdCBWSURJT0NfUkVRQlVG Uy9DUkVBVEVfQlVGUy9RVUVSWUJVRjogT0sKICAgICAgICB0ZXN0IFZJRElPQ19FWFBCVUY6IE9L CiAgICAgICAgdGVzdCBSZXF1ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQpCgpUb3RhbCBmb3IgbXRr LW1kcDMgZGV2aWNlIC9kZXYvdmlkZW8xMTogNDUsIFN1Y2NlZWRlZDogNDUsIEZhaWxlZDogMCwK V2FybmluZ3M6IDAKCmxvY2FsaG9zdCB+ICMgdjRsMi1jb21wbGlhbmNlIC1kIDExIC1zIDEKdjRs Mi1jb21wbGlhbmNlIFNIQTogbm90IGF2YWlsYWJsZQosIDMyIGJpdHMsIDMyLWJpdCB0aW1lX3QK CkNvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLW1kcDMgZGV2aWNlIC9kZXYvdmlkZW8xMToKCkRyaXZl ciBJbmZvOgogICAgICAgIERyaXZlciBuYW1lICAgICAgOiBtdGstbWRwMwogICAgICAgIENhcmQg dHlwZSAgICAgICAgOiAxNDAwMTAwMC5tZHAzX3JkbWEwCiAgICAgICAgQnVzIGluZm8gICAgICAg ICA6IHBsYXRmb3JtOm10ay1tZHAzCiAgICAgICAgRHJpdmVyIHZlcnNpb24gICA6IDUuMTAuNjYK ICAgICAgICBDYXBhYmlsaXRpZXMgICAgIDogMHg4NDIwNDAwMAogICAgICAgICAgICAgICAgVmlk ZW8gTWVtb3J5LXRvLU1lbW9yeSBNdWx0aXBsYW5hcgogICAgICAgICAgICAgICAgU3RyZWFtaW5n CiAgICAgICAgICAgICAgICBFeHRlbmRlZCBQaXggRm9ybWF0CiAgICAgICAgICAgICAgICBEZXZp Y2UgQ2FwYWJpbGl0aWVzCiAgICAgICAgRGV2aWNlIENhcHMgICAgICA6IDB4MDQyMDQwMDAKICAg ICAgICAgICAgICAgIFZpZGVvIE1lbW9yeS10by1NZW1vcnkgTXVsdGlwbGFuYXIKICAgICAgICAg ICAgICAgIFN0cmVhbWluZwogICAgICAgICAgICAgICAgRXh0ZW5kZWQgUGl4IEZvcm1hdAoKUmVx dWlyZWQgaW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwoKQWxsb3cgZm9y IG11bHRpcGxlIG9wZW5zOgogICAgICAgIHRlc3Qgc2Vjb25kIC9kZXYvdmlkZW8xMSBvcGVuOiBP SwogICAgICAgIHRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSwogICAgICAgIHRlc3QgVklESU9DX0cv U19QUklPUklUWTogT0sKICAgICAgICB0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LCgogICAg ICAgIHRlc3QgaW52YWxpZCBpb2N0bHM6IE9LCkRlYnVnIGlvY3RsczoKICAgICAgICB0ZXN0IFZJ RElPQ19EQkdfRy9TX1JFR0lTVEVSOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJ RElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBvcnRlZCkKCklucHV0IGlvY3RsczoKICAgICAg ICB0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRl ZCkKICAgICAgICB0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkK ICAgICAgICB0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBTdXBwb3J0ZWQpCiAg ICAgICAgdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0 ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0 IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIElucHV0czogMCBB dWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwCgpPdXRwdXQgaW9jdGxzOgogICAgICAgIHRlc3QgVklE SU9DX0cvU19NT0RVTEFUT1I6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9D X0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0VO VU1BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9DX0cvUy9FTlVN T1VUUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFZJRElPQ19HL1NfQVVET1VU OiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICBPdXRwdXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAg TW9kdWxhdG9yczogMAoKSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9jdGxzOgogICAgICAg IHRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAg ICAgdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0 ZWQpCiAgICAgICAgdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9ydGVk KQogICAgICAgIHRlc3QgVklESU9DX0cvU19FRElEOiBPSyAoTm90IFN1cHBvcnRlZCkKCkNvbnRy b2wgaW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZTUVOVTog T0sKICAgICAgICB0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LCiAgICAgICAgdGVzdCBWSURJT0Nf Ry9TX0NUUkw6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LCiAg ICAgICAgdGVzdCBWSURJT0NfKFVOKVNVQlNDUklCRV9FVkVOVC9EUUVWRU5UOiBPSwogICAgICAg IHRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpCiAgICAgICAgU3Rh bmRhcmQgQ29udHJvbHM6IDQgUHJpdmF0ZSBDb250cm9sczogMAoKRm9ybWF0IGlvY3RsczoKICAg ICAgICB0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZSQU1FSU5URVJWQUxTOiBPSwog ICAgICAgIHRlc3QgVklESU9DX0cvU19QQVJNOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0 ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgVklESU9D X0dfRk1UOiBPSwogICAgICAgIHRlc3QgVklESU9DX1RSWV9GTVQ6IE9LCiAgICAgICAgdGVzdCBW SURJT0NfU19GTVQ6IE9LCiAgICAgICAgdGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sg KE5vdCBTdXBwb3J0ZWQpCiAgICAgICAgdGVzdCBDcm9wcGluZzogT0sKICAgICAgICB0ZXN0IENv bXBvc2luZzogT0sKICAgICAgICB0ZXN0IFNjYWxpbmc6IE9LCgpDb2RlYyBpb2N0bHM6CiAgICAg ICAgdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQogICAg ICAgIHRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0 ZXN0IFZJRElPQ18oVFJZXylERUNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpCgpCdWZmZXIg aW9jdGxzOgogICAgICAgIHRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllCVUY6 IE9LCiAgICAgICAgdGVzdCBWSURJT0NfRVhQQlVGOiBPSwogICAgICAgIHRlc3QgUmVxdWVzdHM6 IE9LIChOb3QgU3VwcG9ydGVkKQoKVGVzdCBpbnB1dCAwOgoKU3RyZWFtaW5nIGlvY3RsczoKICAg ICAgICB0ZXN0IHJlYWQvd3JpdGU6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgYmxv Y2tpbmcgd2FpdDogT0sKICAgICAgICBWaWRlbyBDYXB0dXJlIE11bHRpcGxhbmFyOiBDYXB0dXJl ZCAxIGJ1ZmZlcnMKICAgICAgICB0ZXN0IE1NQVAgKG5vIHBvbGwpOiBPSwogICAgICAgIFZpZGVv IENhcHR1cmUgTXVsdGlwbGFuYXI6IENhcHR1cmVkIDEgYnVmZmVycwogICAgICAgIHRlc3QgTU1B UCAoc2VsZWN0KTogT0sKICAgICAgICBWaWRlbyBDYXB0dXJlIE11bHRpcGxhbmFyOiBDYXB0dXJl ZCAxIGJ1ZmZlcnMKICAgICAgICB0ZXN0IE1NQVAgKGVwb2xsKTogT0sKICAgICAgICB0ZXN0IFVT RVJQVFIgKG5vIHBvbGwpOiBPSyAoTm90IFN1cHBvcnRlZCkKICAgICAgICB0ZXN0IFVTRVJQVFIg KHNlbGVjdCk6IE9LIChOb3QgU3VwcG9ydGVkKQogICAgICAgIHRlc3QgRE1BQlVGOiBDYW5ub3Qg dGVzdCwgc3BlY2lmeSAtLWV4cGJ1Zi1kZXZpY2UKClRvdGFsIGZvciBtdGstbWRwMyBkZXZpY2Ug L2Rldi92aWRlbzExOiA1MiwgU3VjY2VlZGVkOiA1MiwgRmFpbGVkOiAwLApXYXJuaW5nczogMAoK VGhhbmtzICYgUmVnYXJkcywKTW91ZHkgSG8KCk9uIEZyaSwgMjAyMS0wOS0wMyBhdCAxMjowMSAr MDIwMCwgSGFucyBWZXJrdWlsIHdyb3RlOgo+IEhpIE1vdWR5LAo+IAo+IENhbiB5b3UgcHJvdmlk ZSB0aGUgJ3Y0bDItY29tcGxpYW5jZSAtcycgb3V0cHV0Pwo+IAo+IE1ha2Ugc3VyZSB0byBjb21w aWxlIHY0bDItY29tcGxpYW5jZSBmcm9tIHRoZSBsYXRlc3QgY29kZSBiYXNlOgo+IApodHRwczov L3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9naXQubGludXh0di5vcmcvdjRsLXV0aWxzLmdp dC9fXzshIUNUUk5LQTl3TWcwQVJidyEyUW1rRmhNb1lCQ1I0TUM1ZF9sOGI3enZkRWR3a2ZkNjgy Nm5PWTZXQUhRQ2hVNHJNbDhQOVV0TzZaOFpyY1BEJAo+ICAKPiAKPiBDb21waWxpbmcgb24geDg2 XzY0IChzbyB1c2luZyBDT01QSUxFX1RFU1QpIGZhaWxzOgo+IAo+ICAgTEQgICAgICAudG1wX3Zt bGludXgua2FsbHN5bXMxCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRr LW1kcDMtY29yZS5vOiBpbiBmdW5jdGlvbgo+IGBtZHBfcHJvYmUnOgo+IG10ay1tZHAzLWNvcmUu YzooLnRleHQrMHg0MTUpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvCj4gYG10a19tdXRleF9tZHBf Z2V0Jwo+IGxkOiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAu bzogaW4gZnVuY3Rpb24KPiBgY29uZmlnX2NhbWluX3N1YmZybSc6Cj4gbXRrLW1kcDMtY29tcC5j OigudGV4dCsweDliKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0bwo+IGBtdGtfbW1zeXNfbWRwX2Nh bWluX2N0cmwnCj4gbGQ6IG10ay1tZHAzLWNvbXAuYzooLnRleHQrMHhiYyk6IHVuZGVmaW5lZCBy ZWZlcmVuY2UgdG8KPiBgbXRrX21tc3lzX21kcF9jYW1pbl9jdHJsJwo+IGxkOiBkcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAubzogaW4gZnVuY3Rpb24KPiBgbWRw X2NvbXBvbmVudF9kZWluaXQnOgo+IG10ay1tZHAzLWNvbXAuYzooLnRleHQrMHgyNzA3KTogdW5k ZWZpbmVkIHJlZmVyZW5jZSB0bwo+IGBtdGtfbXV0ZXhfcHV0Jwo+IGxkOiBkcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAubzogaW4gZnVuY3Rpb24KPiBgaW5pdF9p c3AuY29sZCc6Cj4gbXRrLW1kcDMtY29tcC5jOigudGV4dC51bmxpa2VseSsweDRmKTogdW5kZWZp bmVkIHJlZmVyZW5jZSB0bwo+IGBtdGtfbW1zeXNfbWRwX2lzcF9jdHJsJwo+IGxkOiBtdGstbWRw My1jb21wLmM6KC50ZXh0LnVubGlrZWx5KzB4N2EpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvCj4g YG10a19tbXN5c19tZHBfaXNwX2N0cmwnCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LW1kcDMvbXRrLW1kcDMtY21kcS5vOiBpbiBmdW5jdGlvbgo+IGBtZHBfYXV0b19yZWxlYXNlX3dv cmsnOgo+IG10ay1tZHAzLWNtZHEuYzooLnRleHQrMHgxMyk6IHVuZGVmaW5lZCByZWZlcmVuY2Ug dG8KPiBgbXRrX211dGV4X3VucHJlcGFyZScKPiBsZDogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstbWRwMy9tdGstbWRwMy1jbWRxLm86IGluIGZ1bmN0aW9uCj4gYG1kcF9wYXRoX3N1YmZybV9y ZXF1aXJlJzoKPiBtdGstbWRwMy1jbWRxLmM6KC50ZXh0KzB4NDVlKTogdW5kZWZpbmVkIHJlZmVy ZW5jZSB0bwo+IGBtdGtfbXV0ZXhfYWRkX21kcF9tb2QnCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtY21kcS5vOiBpbiBmdW5jdGlvbgo+IGBtZHBfcGF0aF9z dWJmcm1fcnVuLmlzcmEuMCc6Cj4gbXRrLW1kcDMtY21kcS5jOigudGV4dCsweDc4Yik6IHVuZGVm aW5lZCByZWZlcmVuY2UgdG8KPiBgbXRrX211dGV4X2VuYWJsZV9ieV9jbWRxJwo+IGxkOiBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNtZHEubzogaW4gZnVuY3Rpb24K PiBgbWRwX3BhdGhfY29uZmlnX3N1YmZybSc6Cj4gbXRrLW1kcDMtY21kcS5jOigudGV4dCsweGEw ZCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8KPiBgbXRrX21tc3lzX21kcF9jb25uZWN0Jwo+IGxk OiBtdGstbWRwMy1jbWRxLmM6KC50ZXh0KzB4ZDA4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0bwo+ IGBtdGtfbW1zeXNfbWRwX2Rpc2Nvbm5lY3QnCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLW1kcDMvbXRrLW1kcDMtY21kcS5vOiBpbiBmdW5jdGlvbgo+IGBtZHBfY21kcV9zZW5kJzoK PiAoLnRleHQrMHgxMzU4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbXRrX211dGV4X3ByZXBh cmUnCj4gbGQ6IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtY21kcS5v OiBpbiBmdW5jdGlvbgo+IGBtZHBfaGFuZGxlX2NtZHFfY2FsbGJhY2suY29sZCc6Cj4gbXRrLW1k cDMtY21kcS5jOigudGV4dC51bmxpa2VseSsweDM0KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0bwo+ IGBtdGtfbXV0ZXhfdW5wcmVwYXJlJwo+IGxkOiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1t ZHAzL210ay1tZHAzLWNtZHEubzogaW4gZnVuY3Rpb24KPiBgbWRwX2NtZHFfc2VuZC5jb2xkJzoK PiBtdGstbWRwMy1jbWRxLmM6KC50ZXh0LnVubGlrZWx5KzB4ZTMpOiB1bmRlZmluZWQgcmVmZXJl bmNlIHRvCj4gYG10a19tdXRleF91bnByZXBhcmUnCj4gbWFrZTogKioqIFtNYWtlZmlsZToxMTc3 OiB2bWxpbnV4XSBFcnJvciAxCj4gCj4gSSBhbHNvIGdldCBjb21waWxlIHdhcm5pbmdzOgo+IAo+ IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtY29tcC5jOiBJbiBmdW5j dGlvbgo+IOKAmG1kcF9zdWJfY29tcHNfY3JlYXRl4oCZOgo+IGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLW1kcDMvbXRrLW1kcDMtY29tcC5jOjExNTE6Mjk6IHdhcm5pbmc6Cj4gaW1wbGljaXQg Y29udmVyc2lvbiBmcm9tIOKAmGVudW0gbXRrX21kcF9jb21wX2lk4oCZIHRvIOKAmGVudW0KPiBt ZHBfY29tcF90eXBl4oCZIFstV2VudW0tY29udmVyc2lvbl0KPiAgMTE1MSB8ICAgZW51bSBtZHBf Y29tcF90eXBlIHR5cGUgPSBNRFBfQ09NUF9OT05FOwo+ICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn4KPiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1t ZHAzL210ay1tZHAzLWNvbXAuYzogSW4gZnVuY3Rpb24KPiDigJhtZHBfY29tcG9uZW50X2luaXTi gJk6Cj4gZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1jb21wLmM6MTIx Nzo2OiB3YXJuaW5nOgo+IHVudXNlZCB2YXJpYWJsZSDigJhp4oCZIFstV3VudXNlZC12YXJpYWJs ZV0KPiAgMTIxNyB8ICBpbnQgaSwgcmV0Owo+ICAgICAgIHwgICAgICBeCj4gZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1jbWRxLmM6IEluIGZ1bmN0aW9uCj4g4oCYbWRw X2NtZHFfc2VuZOKAmToKPiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAz LWNtZHEuYzo0ODk6MTogd2FybmluZzogdGhlCj4gZnJhbWUgc2l6ZSBvZiAxMzEyIGJ5dGVzIGlz IGxhcmdlciB0aGFuIDEwMjQgYnl0ZXMgWy1XZnJhbWUtbGFyZ2VyLQo+IHRoYW49XQo+ICAgNDg5 IHwgfQo+ICAgICAgIHwgXgo+IAo+IFJlZ2FyZHMsCj4gCj4gCUhhbnMKPiAKPiBPbiAyNC8wOC8y MDIxIDEyOjAwLCBNb3VkeSBIbyB3cm90ZToKPiA+IENoYW5nZXMgc2luY2UgdjY6Cj4gPiAtIFJl ZmFjdG9yIEdDRSBldmVudCB0byBjb3JyZXNwb25kaW5nIG5vZGUuCj4gPiAtIEZpeCBkdF9iaW5k aW5nX2NoZWNrIGZhaWwuCj4gPiAtIEZpeCBjb21waWxhdGlvbiBlcnJvcnMuCj4gPiAKPiA+IENo YW5nZXMgc2luY2UgdjU6Cj4gPiAtIFJlYmFzZSBvbiB2NS4xNC1yYzYuCj4gPiAtIE1vdmUgTU1T WVMvTXV0ZXggc2V0dGluZ3MgdG8gY29ycmVzcG9uZGluZyBkcml2ZXIuCj4gPiAtIFJldmlzZSB0 aGUgc29mdHdhcmUgbGljZW5zZSBkZXNjcmlwdGlvbiBhbmQgY29weXJpZ2h0Lgo+ID4gLSBSZW1v dmUgdW5uZWNlc3NhcnkgZW51bS4gb3IgZGVmaW5pdGlvbnMuCj4gPiAtIE9wdGltaXplIHBsYXRm b3JtL2NoaXAgZGVmaW5pdGlvbiBjb25kaXRpb25zLgo+ID4gLSBVc2UgZ2VuZXJhbCBwcmludGlu ZyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBNRFAzIHByaXZhdGUgb25lcy4KPiA+IC0gRml4IGNvbXBp bGUgd2FybmluZy4KPiA+IAo+ID4gQ2hhbmdlcyBzaW5jZSB2NDoKPiA+IC0gUmViYXNlIG9uIHY1 LjEzLXJjMS4KPiA+IC0gUmVtb3ZlIHRoZSBDTURRIGZsdXNoIGZsb3cgdG8gbWF0Y2ggdGhlIENN RFEgQVBJIGNoYW5nZS4KPiA+IC0gSW50ZWdyYXRlIGZvdXIgb2YgTURQJ3MgZGlyZWN0LWxpbmsg c3ViY29tcG9uZW50cyBpbnRvIE1EUAo+ID4gY29udHJvbGxlciBub2RlCj4gPiAgIGZyb20gc3lz Y29uIG5vZGUgdG8gYXZvaWQgaWxsZWdhbCBjbG9jayB1c2FnZS4KPiA+IC0gUmV3cml0ZSBkdC1i aW5kaW5nIGluIGEgSlNPTiBjb21wYXRpYmxlIHN1YnNldCBvZiBZQU1MCj4gPiAtIEZpeCBhIGJp dCBvZiBtYWNybyBhcmd1bWVudCBwcmVjZWRlbmNlLgo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYz Ogo+ID4gLSBSZWJhc2Ugb24gdjUuOS1yYzEuCj4gPiAtIG1vZGlmeSBjb2RlIGZvciByZXZpZXcg Y29tbWVudCBmcm9tIFJvYiBIZXJyaW5nLCBjYW5jZWwgbXVsdGlwbGUKPiA+IG5vZGVzIHVzaW5n Cj4gPiAgIHNhbWUgcmVnaXN0ZXIgYmFzZSBzaXR1YXRpb24uCj4gPiAtIGNvbnRyb2wgSU9NTVUg cG9ydCB0aHJvdWdoIHBtIHJ1bnRpbWUgZ2V0L3B1dCB0byBETUEgY29tcG9uZW50cycKPiA+IGRl dmljZS4KPiA+IC0gU0NQKFZQVSkgZHJpdmVyIHJldmlzaW9uLgo+ID4gLSBzdG9wIHF1ZXVpbmcg am9icyhyZW1vdmUgZmx1c2hfd29ya3F1ZXVlKCkpIGFmdGVyCj4gPiBtZHBfbTJtX3JlbGVhc2Uo KS4KPiA+IC0gYWRkIGNvbXB1dGF0aW9uIG9mIHBsYW5lIGFkZHJlc3Mgd2l0aCBkYXRhX29mZnNl dC4KPiA+IC0gZml4IHNjYWxlIHJhdGlvIGNoZWNrIGlzc3VlLgo+ID4gLSBhZGQgZGVmYXVsdCB2 NGwyX2Zvcm1hdCBzZXR0aW5nLgo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ID4gLSBtb2Rp ZnkgY29kZSBmb3IgcmV2aWV3IGNvbW1lbnQgZnJvbSBUb21hc3ogRmlnYSAmIEFsZXhhbmRyZQo+ ID4gQ291cmJvdAo+ID4gLSByZXZpZXcgY29tbWVudCBmcm9tIFJvYiBIZXJyaW5nIHdpbGwgb2Zm ZXIgY29kZSByZXZpc2lvbiBpbiB2NCwKPiA+IGR1ZSB0bwo+ID4gICBpdCdzIHJlbGF0ZWQgdG8g ZGV2aWNlIG5vZGUgbW9kaWZpY2F0aW9uLCB3aWxsIG5lZWQgdG8gbW9kaWZ5Cj4gPiBjb2RlCj4g PiAgIGFyY2hpdGVjdHVyZQo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYxOgo+ID4gLSBtb2RpZnkg Y29kZSBmb3IgQ01EUSB2MyBBUEkgc3VwcG9ydAo+ID4gLSBFQyBpcGkgY21kIG1pZ3JhdGlvbgo+ ID4gLSBmaXggY29tcGxpYW5jZSB0ZXN0IGZhaWwgaXRlbSAobTJtIGNtZCB3aXRoIC1mKSBkdWUg dG8gdGhlcmUgaXMKPiA+IHR3byBwcm9ibGVtIGluIHJ1bmluZyBhbGwgZm9ybWF0KC1mKSBjbWQ6 Cj4gPiAxLiBvdXQgb2YgbWVtb3J5IGJlZm9yZSB0ZXN0IGNvbXBsZXRlCj4gPiAgICAgICAgIER1 ZSB0byBjYXB0dXJlIGJ1ZmZlciBtbWFwIChyZWZjb3VudCArIDEpIGFmdGVyIHJlcWJ1ZiBidXQK PiA+IHNlZW1zCj4gPiAgICAgICAgIG5vIGNvcnJlc3BvbmRpbmcgbXVubWFwIGNhbGxlZCBiZWZv cmUgZGV2aWNlIGNsb3NlLgo+ID4gICAgICAgICBUaGVyZSBhcmUgdG90YWwgMTJYWCBpdGVtcyhm b3JtYXRzKSBpbiBmb3JtYXQgdGVzdCBhbmQgZWFjaAo+ID4gZm9ybWF0Cj4gPiAgICAgICAgIGFs bG9jIDggY2FwdHVyZS9vdXRwdXQgYnVmZmVycy4KPiA+IDIuIHVuY2Vhc2luZ2x5IGNhcHR1cmVC dWZzKCkgKHJhbmRvbWx5KQo+ID4gICAgICAgICBTZWVtcyB0aGUgYnJlYWsgc3RhdGVtZW50IGRp ZG4ndCBjYXRjaCB0aGUgY291bnQgPT0gMAo+ID4gc2l0dWF0aW9uOgo+ID4gICAgICAgICBJbiB2 NGwyLXRlc3QtYnVmZmVycy5jcHAsIGZ1bmN0aW9uOiBjYXB0dXJlQnVmcygpCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAuLi4KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LS07 Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmlzX20ybSAmJiAhY291bnQp Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgICBM b2cgaXMgYXMgYXR0YWNobWVudAo+ID4gCj4gPiBJIHdpbGwgcGFzdGUgdGhlIHRlc3QgcmVzdWx0 IHdpdGggcHJvYmxlbSBwYXJ0IGluIGFub3RoZXIgZS1tYWlsCj4gPiAKPiA+IEhpLAo+ID4gCj4g PiBUaGlzIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIFJGQyBwYXRjaCBmb3IgTWVkaWEgRGF0YSBQ YXRoIDMKPiA+IChNRFAzKSwKPiA+IE1EUDMgaXMgdXNlZCBmb3Igc2NhbGluZyBhbmQgY29sb3Ig Zm9ybWF0IGNvbnZlcnNpb24uCj4gPiBzdXBwb3J0IHVzaW5nIEdDRSB0byB3cml0ZSByZWdpc3Rl ciBpbiBjcml0aWNhbCB0aW1lIGxpbWl0YXRpb24uCj4gPiBzdXBwb3J0IFY0TDIgbTJtIGRldmlj ZSBjb250cm9sLgo+ID4gCj4gPiBNb3VkeSBIbyAoNSk6Cj4gPiAgIHNvYzogbWVkaWF0ZWs6IG11 dGV4OiBhZGQgc3VwcG9ydCBmb3IgTURQCj4gPiAgIHNvYzogbWVkaWF0ZWs6IG1tc3lzOiBBZGQg c3VwcG9ydCBmb3IgTURQCj4gPiAgIGR0LWJpbmRpbmc6IG10ODE4MzogQWRkIE1lZGlhdGVrIE1E UDMgZHQtYmluZGluZ3MKPiA+ICAgZHRzOiBhcm02NDogbXQ4MTgzOiBBZGQgTWVkaWF0ZWsgTURQ MyBub2Rlcwo+ID4gICBtZWRpYTogcGxhdGZvcm06IG10ay1tZHAzOiBBZGQgTWVkaWF0ZWsgTURQ MyBkcml2ZXIKPiA+IAo+ID4gIC4uLi9iaW5kaW5ncy9tZWRpYS9tZWRpYXRlayxtZHAzLWNjb3Jy LnlhbWwgICB8ICAgNTcgKwo+ID4gIC4uLi9iaW5kaW5ncy9tZWRpYS9tZWRpYXRlayxtZHAzLXJk bWEueWFtbCAgICB8ICAyMDcgKysrCj4gPiAgLi4uL2JpbmRpbmdzL21lZGlhL21lZGlhdGVrLG1k cDMtcnN6LnlhbWwgICAgIHwgICA2NSArCj4gPiAgLi4uL2JpbmRpbmdzL21lZGlhL21lZGlhdGVr LG1kcDMtd2RtYS55YW1sICAgIHwgICA3MSArCj4gPiAgLi4uL2JpbmRpbmdzL21lZGlhL21lZGlh dGVrLG1kcDMtd3JvdC55YW1sICAgIHwgICA3MSArCj4gPiAgYXJjaC9hcm02NC9ib290L2R0cy9t ZWRpYXRlay9tdDgxODMuZHRzaSAgICAgIHwgIDExMCArKwo+ID4gIGRyaXZlcnMvbWVkaWEvcGxh dGZvcm0vS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAgMTkgKwo+ID4gIGRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgIDIgKwo+ID4gIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLW1kcDMvTWFrZWZpbGUgICAgICB8ICAgIDYgKwo+ID4gIC4uLi9tZWRp YS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX2Njb3JyLmggICB8ICAgMTkgKwo+ID4gIGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbWRwX3JlZ19pc3AuaCB8ICAgMjcgKwo+ID4gIC4u Li9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX3JkbWEuaCAgICB8ICAgNjUgKwo+ID4g IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbWRwX3JlZ19yc3ouaCB8ICAgMzkgKwo+ ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX3dkbWEuaCAgICB8ICAgNDcg Kwo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX3dyb3QuaCAgICB8ICAg NTUgKwo+ID4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLWltZy1pcGkuaCB8 ICAyODAgKysrKwo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1jbWRx LmMgICB8ICA1MDcgKysrKysrKwo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGst bWRwMy1jbWRxLmggICB8ICAgNDYgKwo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9t dGstbWRwMy1jb21wLmMgICB8IDEzMDcKPiA+ICsrKysrKysrKysrKysrKysrCj4gPiAgLi4uL21l ZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAuaCAgIHwgIDE0NyArKwo+ID4gIC4u Li9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1jb3JlLmMgICB8ICAzMjkgKysrKysK PiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtY29yZS5oICAgfCAgIDc1 ICsKPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMtbTJtLmMgICAgfCAg ODAxICsrKysrKysrKysKPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1kcDMt bTJtLmggICAgfCAgIDQxICsKPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLW1k cDMtcmVncy5jICAgfCAgNzQ2ICsrKysrKysrKysKPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRr LW1kcDMvbXRrLW1kcDMtcmVncy5oICAgfCAgMzcyICsrKysrCj4gPiAgLi4uL21lZGlhL3BsYXRm b3JtL210ay1tZHAzL210ay1tZHAzLXZwdS5jICAgIHwgIDMxMiArKysrCj4gPiAgLi4uL21lZGlh L3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLXZwdS5oICAgIHwgICA3OCArCj4gPiAgZHJpdmVy cy9zb2MvbWVkaWF0ZWsvbXQ4MTgzLW1tc3lzLmggICAgICAgICAgIHwgIDIzNSArKysKPiA+ICBk cml2ZXJzL3NvYy9tZWRpYXRlay9tdGstbW1zeXMuYyAgICAgICAgICAgICAgfCAgMTY0ICsrKwo+ ID4gIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5oICAgICAgICAgICAgICB8ICAgIDkg Ky0KPiA+ICBkcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstbXV0ZXguYyAgICAgICAgICAgICAgfCAg MTA2ICstCj4gPiAgaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmggICAgICAg IHwgICA4MSArCj4gPiAgaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW11dGV4LmggICAg ICAgIHwgICAgOCArCj4gPiAgMzQgZmlsZXMgY2hhbmdlZCwgNjQ5NSBpbnNlcnRpb25zKCspLCA5 IGRlbGV0aW9ucygtKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NAo+ID4gRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL21lZGlhdGVrLG1kcDMtY2NvcnIueWFtbAo+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NAo+ID4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21l ZGlhL21lZGlhdGVrLG1kcDMtcmRtYS55YW1sCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0Cj4gPiBE b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvbWVkaWF0ZWssbWRwMy1yc3ou eWFtbAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NAo+ID4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL21lZGlhL21lZGlhdGVrLG1kcDMtd2RtYS55YW1sCj4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0Cj4gPiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvbWVkaWF0 ZWssbWRwMy13cm90LnlhbWwKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstbWRwMy9NYWtlZmlsZQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1tZHAzL21kcF9yZWdfY2NvcnIuaAo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL21kcF9yZWdfaXNwLmgKPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBf cmVnX3JkbWEuaAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1tZHAzL21kcF9yZWdfcnN6LmgKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tZHBfcmVnX3dkbWEuaAo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL21kcF9yZWdfd3JvdC5oCj4gPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRrLWlt Zy1pcGkuaAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210 ay1tZHAzL210ay1tZHAzLWNtZHEuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNtZHEuaAo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvbXAuYwo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1t ZHAzLWNvbXAuaAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1tZHAzL210ay1tZHAzLWNvcmUuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLWNvcmUuaAo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210ay1tZHAzLW0ybS5jCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLW1kcDMvbXRr LW1kcDMtbTJtLmgKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tdGstbWRwMy9tdGstbWRwMy1yZWdzLmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy1yZWdzLmgKPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstbWRwMy9tdGstbWRwMy12cHUuYwo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1tZHAzL210 ay1tZHAzLXZwdS5oCj4gPiAKPiAKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==