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=-7.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 AE9E0C2BA2B for ; Fri, 10 Apr 2020 10:43:00 +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 76ED020673 for ; Fri, 10 Apr 2020 10:43:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="o9xx5aB9"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="NMZdNm0O" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 76ED020673 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date: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=T1LbCjtBWoFObHiq7MU/9ITOrmRm2h7GpH5jSV8cUXk=; b=o9xx5aB9DrKfmn jIuQro/5S1Di8tCrsKKxl3ncVS/uavDj//VFmhFcq/oxXgtqjQgxxg2VBallK/i6KPtGYkCeZVYQw pPJ4XbMue1L1wyS5pdUoIp/JhoubIwbwnZN0cnVHuHQkxnyykW3UkoYqj7yCpZfaaUduMKMXJErZk 6IUjVOZByDyi6qdrryW4WNY9UBe8MIlAVt/8BCFFPnHGo0OxbHmFbzntVqhJgdgBn0FjkEDLFQ2/O lx0rk1ENyJrAjtAs34qlSUuoekxS9n2YF1jNYUYdDjt6wMRkurDyLxRgEF8L8mJV2eahCWDLS+Uhs a5iNjZJBFrIKBg4gGIXQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jMr7d-0000Hi-Lf; Fri, 10 Apr 2020 10:42:53 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jMr7X-0000HK-2F; Fri, 10 Apr 2020 10:42:51 +0000 X-UUID: a1da8899bbc54ddba0f48707314f7cf2-20200410 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=nU6hQersZE23ga/Eu9jN5vWKHiuOJ0Gm6/mr/CVqsiI=; b=NMZdNm0O2gWsd7OnhHlNG9oNMayayq+22OMIZOoxeGZuQobIPSWdbG00Mts/foYjakTVDIb4HT5OnTUJojN+wWO/pKRejISWMSbaJOwYGA96JxR3kdfMn/3pHSx8zWCWobZ/izn8nxMfYICVQsFYUfwm3n0n3lCijBTpigdNF2s=; X-UUID: a1da8899bbc54ddba0f48707314f7cf2-20200410 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 826484079; Fri, 10 Apr 2020 02:42:37 -0800 Received: from MTKMBS01N1.mediatek.inc (172.21.101.68) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 03:32:42 -0700 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 18:32:40 +0800 Received: from [172.21.84.99] (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 10 Apr 2020 18:32:39 +0800 Message-ID: <1586514762.8406.114.camel@mtksdccf07> Subject: Re: [v6, 0/5] media: media: platform: mtk-isp: Add Mediatek ISP Pass 1 driver From: Jungo Lin To: Helen Koike Date: Fri, 10 Apr 2020 18:32:42 +0800 In-Reply-To: <23b9c2f4-04d4-38e0-c71f-7e1ef93265a2@collabora.com> References: <20191219054930.29513-1-jungo.lin@mediatek.com> <23b9c2f4-04d4-38e0-c71f-7e1ef93265a2@collabora.com> X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-MTK: N X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ryan.yu@mediatek.com, frankie.chiu@mediatek.com, laurent.pinchart@ideasonboard.com, robh@kernel.org, Rynn.Wu@mediatek.com, suleiman@chromium.org, Jerry-ch.Chen@mediatek.com, frederic.chen@mediatek.com, linux-media@vger.kernel.org, devicetree@vger.kernel.org, hverkuil-cisco@xs4all.nl, sj.huang@mediatek.com, yuzhao@chromium.org, linux-mediatek@lists.infradead.org, matthias.bgg@gmail.com, mchehab@kernel.org, linux-arm-kernel@lists.infradead.org, Sean.Cheng@mediatek.com, srv_heupstream@mediatek.com, shik@chromium.org, tfiga@chromium.org, zwisler@chromium.org, ddavenport@chromium.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Hi Helen: Thanks for your comment. On Tue, 2020-03-31 at 12:34 -0300, Helen Koike wrote: > Hi Jungo, > > I was taking a look at this patchset, please see my comments below. > > On 12/19/19 3:49 AM, Jungo Lin wrote: > > Hello, > > > > This patch series adding the driver for Pass 1 (P1) unit in > > Mediatek's camera ISP system on mt8183 SoC, which will be used in > > camera features of CrOS. > > > > Pass 1 unit processes image signal from sensor devices and accepts the > > tuning parameters to adjust the image quality. It performs optical > > black correction, defect pixel correction, W/IR imbalance correction > > and lens shading correction for RAW processing. > > > > The driver is implemented with V4L2 and media controller framework so > > we have the following entities to describe the ISP pass 1 path. > > > > (The current metadata interface used in meta input and partial meta > > nodes is only a temporary solution to kick off the driver development > > and is not ready to be reviewed yet.) > > > > 1. meta input (output video device): connect to ISP P1 sub device. > > It accepts the tuning buffer from user. > > > > 2. ISP P1 (sub device): connect to partial meta 0/1/2/3, > > main stream and packed out video devices. When processing an image, > > Pass 1 hardware supports multiple output images with different sizes > > and formats so it needs two capture video devices ("main stream" and > > "packed out") to return the image data to the user. > > > > 3. main stream (capture video device): return the processed image data > > which is used in capture scenario. > > > > 4. packed out (capture video device): return the processed image data > > which is used in preview scenario. > > > > 5. partial meta 0 (capture video device): return the AE/AWB statistics. > > > > 6. partial meta 1 (capture video device): return the AF statistics. > > > > 7. partial meta 2 (capture video device): return the local contrast > > enhanced statistics. > > > > 8. partial meta 3 (capture video device): return the local motion > > vector statistics. > > > > The overall patches of the series is: > > > > * Patch 1 & 2 are dt-bindings & dts information related to ISP P1 driver. > > * Patch 3 adds new timestamp type for Camera AR (Augmented Reality) application > > * Patch 4 extends the original V4L2 image & meta formats for ISP P1 driver. > > * Patch 5 is the heart of ISP P1 driver. It handles the ISP HW configuration. > > Moreover, implement standard V4L2 video driver that utilizes > > V4L2 and media framework APIs. Communicate with co-process via SCP > > communication to compose ISP registers in the firmware. > > > > Here is ISP P1 media topology: > > It is included the main/sub sensor, sen-inf sub-devices and len device > > which are implemented in below patch[1][2][3][4]: > > I would be nice if you could provide a branch with those applied. > We apply those patches in the chromeos-4.19 to test. https://chromium.googlesource.com/chromiumos/third_party/kernel/+/refs/heads/chromeos-4.19 > > > > For Mediatek ISP P1 driver, it also depends on MT8183 SCP[5] & IOMMU[6] > > patch sets. > > > > /usr/bin/media-ctl -p -d /dev/media2 > > > > Media controller API version 4.19.89 > > > > Media device information > > ------------------------ > > driver mtk-cam-p1 > > model mtk-cam-p1 > > serial > > bus info platform:1a000000.camisp > > hw revision 0x0 > > driver version 4.19.89 > > > > Device topology > > - entity 1: mtk-cam-p1 (12 pads, 8 links) > > If I understand correctly, the hardware supports 3 ISP instances, A, B, and C, and only B is being used. > Is this correct? > > So maybe, rename it to mtk-isp-p1-b, to allow mtk-isp-p1-a and mtk-isp-p1-c to be added in the future. > Currently, we only support single-cam in this SoC with upstream driver. It is plan in next Mediatek SoC to support multi-cam capabilities. So we'd like to keep the naming to avoid confusion. > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev0 > > pad0: Sink > > <- "mtk-cam-p1 meta input":0 [] > > I would prefer the name params, or parameters, since input/output is confusing, since this is a output video node. > Ok, we will revise our naming in next patch. > > pad1: Source > > -> "mtk-cam-p1 main stream":0 [ENABLED,IMMUTABLE] > > Is there any reason for this link to be IMMUTABLE? Can't a use "mtk-cam-p1 packed out" without configuring "mtk-cam-p1 main stream" ? > Yes, you are right. We will remove IMMUTABLE flag in next patch. > > pad2: Source > > -> "mtk-cam-p1 packed out":0 [] > > Same here, maybe "packed stream" ? Just for curiosity, why is it called packed? > Comparing with V4L2_PIX_FMT_SGBRG8, we packed the color bits without no padding in the memory. We may revise the naming in next patch. > > pad3: Source > > -> "mtk-cam-p1 partial meta 0":0 [] > > pad4: Source > > -> "mtk-cam-p1 partial meta 1":0 [] > > pad5: Source > > -> "mtk-cam-p1 partial meta 2":0 [] > > pad6: Source > > -> "mtk-cam-p1 partial meta 3":0 [] > > Shouldn't those links be [ENABLED,IMMUTABLE] ? > > It would be better to have a more intuitive naming, e.g. "mtk-cam-p1 AE/AWB stats", "mtk-cam-p1 AF stats", > "mtk-cam-p1 contrast stats", "mtk-cam-p1 motion stats", what do you think? > > I also would prefer to remove blank spaces. > > And maybe the prefix could be mtkisp-p1 ? (just to be similar with rkisp1), but I don't have strong feelings about this. > No, these links are optional to setup for userspace. For naming part, we will align with driver source codes. > > pad7: Source > > pad8: Source > > pad9: Source > > pad10: Source > > Why source pads that are not connected to anything? (I guess I need to check the last patch better). > These pads are just reserved purpose. We will plan to remove them in next patch. Thanks, Jungo > Regards, > Helen > > > pad11: Sink > > <- "1a040000.seninf":4 [ENABLED,IMMUTABLE] > > > > - entity 14: mtk-cam-p1 meta input (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video2 > > pad0: Source > > -> "mtk-cam-p1":0 [] > > > > - entity 20: mtk-cam-p1 main stream (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video3 > > pad0: Sink > > <- "mtk-cam-p1":1 [ENABLED,IMMUTABLE] > > > > - entity 26: mtk-cam-p1 packed out (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video4 > > pad0: Sink > > <- "mtk-cam-p1":2 [] > > > > - entity 32: mtk-cam-p1 partial meta 0 (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video5 > > pad0: Sink > > <- "mtk-cam-p1":3 [] > > > > - entity 38: mtk-cam-p1 partial meta 1 (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video6 > > pad0: Sink > > <- "mtk-cam-p1":4 [] > > > > - entity 44: mtk-cam-p1 partial meta 2 (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video7 > > pad0: Sink > > <- "mtk-cam-p1":5 [] > > > > - entity 50: mtk-cam-p1 partial meta 3 (1 pad, 1 link) > > type Node subtype V4L flags 0 > > device node name /dev/video8 > > pad0: Sink > > <- "mtk-cam-p1":6 [] > > > > - entity 56: 1a040000.seninf (12 pads, 3 links) > > type V4L2 subdev subtype Unknown flags 0 > > device node name /dev/v4l-subdev1 > > pad0: Sink > > [fmt:SGRBG10_1X10/3264x2448 field:none colorspace:srgb] > > <- "ov8856 2-0010":0 [ENABLED] > > pad1: Sink > > [fmt:SRGGB10_1X10/1600x1200 field:none colorspace:srgb] > > <- "ov02a10 4-003d":0 [] > > pad2: Sink > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > pad3: Sink > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > pad4: Source > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > -> "mtk-cam-p1":11 [ENABLED,IMMUTABLE] > > pad5: Source > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > pad6: Source > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > pad7: Source > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > pad8: Source > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > pad9: Source > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > pad10: Source > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > pad11: Source > > [fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb] > > > > - entity 69: ov8856 2-0010 (1 pad, 1 link) > > type V4L2 subdev subtype Sensor flags 0 > > device node name /dev/v4l-subdev2 > > pad0: Source > > [fmt:SBGGR10_1X10/3264x2448 field:none colorspace:unknown ycbcr:709] > > -> "1a040000.seninf":0 [ENABLED] > > > > - entity 73: dw9768 2-000c (0 pad, 0 link) > > type V4L2 subdev subtype Lens flags 0 > > device node name /dev/v4l-subdev3 > > > > - entity 74: ov02a10 4-003d (1 pad, 1 link) > > type V4L2 subdev subtype Sensor flags 0 > > device node name /dev/v4l-subdev4 > > pad0: Source > > [fmt:SRGGB10_1X10/1600x1200 field:none] > > -> "1a040000.seninf":1 [] > > > > =========== > > = history = > > =========== > > > > version 6: > > - Add port node description in the dt-binding document and device tree > > by Tomasz Figa. > > - Remove RGB format definitions in pixfmt-rgb.rst for kernel v5.5-rc1 > > version. > > - Revise help description for VIDEO_MEDIATEK_ISP_PASS1. > > - Apply SCP v21 change in P1 driver by Pi-Hsun Shih. > > - Correct auto suspend timer value for suspend/resume issue. > > - Increase IPI guard timer to 1 second to avoid false alarm command > > timeout event. > > - Fix KE due to no sen-inf sub-device. > > > > Todo: > > - vb2_ops's buf_request_complete callback function implementation. > > - Add rst documents for Mediatek meta formats. > > - New meta buffer structure design & re-factoring. > > > > version 5: > > - Fixed Rob's comment on dt-binding format > > - Fix Tomasz's comment in mtk_isp_pm_suspend function > > - Support V4L2_BUF_FLAG_TIMESTAMP_BOOTTIME timestamp flag > > and new timestamp type in driver > > - Fix buffer en-queue timing issue in v4 > > - Remove default link_notify callback function in mtk_cam_media_ops > > > > Todo: > > - vb2_ops's buf_request_complete callback function implementation > > - Add rst documents for Mediatek meta formats > > - New meta buffer structure design & re-factoring > > - Align and pack IPI command structures for EC ROM size shrink > > > > version 4: > > - Fix Tomasz's comments which are addressed in MTK ISP P1 driver v3 > > patch[4] > > - Fix some Tomasz comments which are addressed in DIP's v2 patch[5] > > - Extend Mediatek proprietary image formats to support bayer order > > - Support V4L2_BUF_FLAG_TSTAMP_SRC_SOE for capture devices > > > > Todo: > > - vb2_ops's buf_request_complete callback function implementation > > - Add rst documents for Mediatek meta formats > > - New meta buffer structure design & re-factoring > > - Support V4L2_BUF_FLAG_TIMESTAMP_BOOTTIME timestamp flag > > - Align and pack IPI command structures for EC ROM size shrink > > > > version 3: > > - Remove ISP Pass 1 reserved memory device node and change to use SCP's > > reserved memory region. (Rob Herring) > > - Fix comments of ISP Pass 1 device node & dt-bindings document (Rob Herring) > > - Revise ISP Pass1 Kconfig > > - Add rst documents for Mediatek image formats (Hans Verkuil) > > - Fix kernel warning messages when running v4l2_compliance test > > - Move AFO buffer enqueue & de-queue from request API to non-request > > - mtk_cam-ctrl.h/mtk_cam-ctrl.c > > Revise Mediatek ISP Pass1 specific V4L2 control naming & file licence > > declaration (Hans Verkuil) > > Split GET_BIN_INFO control into two controls to get width & height > > in-dependently (Hans Verkuil) > > - mtk_cam-v4l2-util.h/mtk_cam-v4l2-util.c > > Merging mtk_cam-dev.c and mtk_cam-v4l2-util.c. (Drew Davenport) > > Remove the pix_mode argument in related functions and unreachable code. (Drew Davenport) > > Fix Drew's comments which are addressed in v2 patch > > Fix some Tomasz comments which are addressed in DIP's v1 patch[3] > > - mtk_cam-regs.h / mtk_cam.h / mtk_cam.c > > Fix Drew's comments which are addressed in v2 patch > > Fix some Tomasz comments which are addressed in DIP's v1 patch[3] > > Refactoring mtk_isp_config & mtk_isp_req_enqueue functions > > - mtk_cam-scp.h / mtk_cam-scp.c > > Move function declarations from mtk_cam.h to mtk_cam-scp.h (Drew Davenport) > > Fix some Tomasz comments which are addressed in DIP's v1 patch[3] > > Fix ISP de-initialize timing KE issue > > - mtk_cam-smem.h / mtk_cam-smem-dev.c > > Get the reserved shared memory via SCP driver (Tomasz Figa) > > > > Todo: > > - Add rst documents for Mediatek meta formats > > - New meta buffer structure design & re-factoring > > > > version 2: > > - Add 3A enhancement feature which includes: > > Separates 3A pipeline out of frame basis to improve > > AE/AWB (exposure and white balance) performance. > > Add 2 SCP sub-commands for 3A meta buffers. > > - Add new child device to manage P1 shared memory between P1 HW unit > > and co-processor. > > - Remove mediatek,cam_smem.txt & cam_smem dts node in mt8183.dtsi. > > - Revised document wording for dt-bindings documents & dts information. > > - Remove mtk_cam-ctx.h & mtk_cam-dev-ctx-core.c and move these > > source codes to mtk_cam-dev.h & mtk_cam-dev.c. > > - mtk_cam-dev.h / mtk_cam-dev.c > > Revised mtk_cam_video_device & mtk_cam_dev to remove unused structure fields > > or add comments. > > Revised buffer size for LMVO & LCSO. > > Fix pixel format utility function. > > Add vb2_dma_contig_set_max_seg_size to configure DMA max segment size. > > - mtk_cam-v4l2-util.c > > Refactoring V4L2 async mechanism with seninf driver only > > Refactoring CIO (Connection IO) implementation with active sensor > > Revised stream on function for 3A enhancement feature > > Add new V4L2 en-queue/de-queue utility functions for 3A enhancement feature > > - mtk_cam-regs.h / mtk_cam.h / mtk_cam.c > > Add meta buffer index register definitions > > Add meta DMA configuration function. > > Separate with frame-base and non-frame-base en-queue/de-queue functions > > Add isp_setup_scp_rproc function to get RPC handle > > Add mtk_cam_reserved_memory_init for shared memory management > > - mtk_cam-scp.h / mtk_cam-scp.c > > Add new meta strictures for 3A enhancement feature > > Add new IPI command utility function for 3A enhancement feature > > Enhance isp_composer_dma_sg_init function flow > > Shorten overall IPI command structure size > > Remove scp_state state checking > > Improve code readability > > - mtk_cam-smem.h / mtk_cam-smem-dev.c > > Add mtk_cam_alloc_smem_dev to allocate one new child device of ISP driver. > > Handling P1 driver 's reserved memory & allocate DMA buffers based on this > > memory region. > > > > TODOs: > > - 3A enhancement feature bug fixing > > > > version 1: > > - Revised driver sources based on Tomasz's comments including > > part1/2/3/4 in RFC V0 patch. > > - Remove DMA cache mechanism. > > Support two new video devices (LCSO/LMVO) for advance camera > > features. > > - Fixed v4l2-compliance test failure items. > > - Add private controls for Mediatek camera middle-ware. > > - Replace VPU driver's APIs with new SCP driver interface for > > co-processor communication. > > - Refactoring mtk_cam_scp.c to use ring-buffers mechanism for IPI > > commands RX handling. > > - Fix internal bugs. > > > > TODOs: > > - Remove mtk_cam_smem_drv.c & mtk_cam_smem.h and implement DMA pool > > for shared memory management. > > - Revised file names. > > - Support non frame-sync AFO/AAO DMA buffers > > > > version 0: > > - Initial submission > > > > ================== > > Dependent patch set > > ================== > > > > Camera ISP P1 driver depends on seninf driver, SCP driver. > > The patches are listed as following: > > > > [1]. media: support Mediatek sensor interface driver > > https://patchwork.kernel.org/cover/11145845/ > > > > [2]. media: ov8856: Add YAML binding and sensor mode support > > https://patchwork.kernel.org/cover/11220785/ > > > > [3]. media: i2c: Add support for OV02A10 sensor > > https://patchwork.kernel.org/cover/11284779/ > > > > [4]. media: i2c: add support for DW9768 VCM driver > > https://patchwork.kernel.org/cover/11132299/ > > > > [5]. Add support for mt8183 SCP > > https://patchwork.kernel.org/cover/11239065/ > > > > [6]. MT8183 IOMMU SUPPORT > > https://patchwork.kernel.org/cover/11112765/ > > > > ================== > > Compliance test > > ================== > > > > The v4l2-compliance is built with the below lastest patch. > > https://git.linuxtv.org/v4l-utils.git/commit/?id=e9a7593ec6ae98704ecb35ea64948d34c23a5158 > > > > Note 1. > > This testing depends on the above seninf, sensors and len patches[1][2][3][4]. > > > > Note 2. > > For failed test csaes in video2~8, it is caused by new V4L2 timestamp > > called V4L2_BUF_FLAG_TIMESTAMP_BOOTIME. > > > > Note 3. > > The current some failure items are related to Mediatek sensors/len driver [2][3][3] > > > > /usr/bin/v4l2-compliance -m /dev/media2 > > > > v4l2-compliance SHA: not available, 32 bits > > > > Compliance test for mtk-cam-p1 device /dev/media1: > > > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.67 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.67 > > > > Required ioctls: > > test MEDIA_IOC_DEVICE_INFO: OK > > > > Allow for multiple opens: > > test second /dev/media1 open: OK > > test MEDIA_IOC_DEVICE_INFO: OK > > test for unlimited opens: OK > > > > Media Controller ioctls: > > test MEDIA_IOC_G_TOPOLOGY: OK > > Entities: 11 Interfaces: 11 Pads: 33 Links: 21 > > test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK > > test MEDIA_IOC_SETUP_LINK: OK > > > > Total for mtk-cam-p1 device /dev/media1: 7, Succeeded: 7, Failed: 0, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/video25: > > > > Driver Info: > > Driver name : mtk-cam-p1 > > Card type : mtk-cam-p1 > > Bus info : platform:1a000000.camisp > > Driver version : 4.19.67 > > Capabilities : 0x8c200000 > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x0c200000 > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.67 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.67 > > Interface Info: > > ID : 0x03000010 > > Type : V4L Video > > Entity Info: > > ID : 0x0000000e (14) > > Name : mtk-cam-p1 meta input > > Function : V4L2 I/O > > Pad 0x0100000f : 0: Source > > Link 0x02000012: to remote pad 0x1000002 of entity 'mtk-cam-p1': Data > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second /dev/video25 open: OK > > test VIDIOC_QUERYCAP: OK > > test VIDIOC_G/S_PRIORITY: OK > > test for unlimited opens: 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 (Not Supported) > > test Composiv4l2-compliance SHA: not available, 32 bits > > > > Compliance test for mtk-cam-p1 device /dev/media2: > > > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > > > Required ioctls: > > test MEDIA_IOC_DEVICE_INFO: OK > > > > Allow for multiple opens: > > test second /dev/media2 open: OK > > test MEDIA_IOC_DEVICE_INFO: OK > > test for unlimited opens: OK > > > > Media Controller ioctls: > > test MEDIA_IOC_G_TOPOLOGY: OK > > Entities: 12 Interfaces: 12 Pads: 33 Links: 22 > > test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK > > test MEDIA_IOC_SETUP_LINK: OK > > > > Total for mtk-cam-p1 device /dev/media2: 7, Succeeded: 7, Failed: 0, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/video2: > > > > Driver Info: > > Driver name : mtk-cam-p1 > > Card type : mtk-cam-p1 > > Bus info : platform:1a000000.camisp > > Driver version : 4.19.89 > > Capabilities : 0x8c200000 > > Metadata Output > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x0c200000 > > Metadata Output > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000010 > > Type : V4L Video > > Entity Info: > > ID : 0x0000000e (14) > > Name : mtk-cam-p1 meta input > > Function : V4L2 I/O > > Pad 0x0100000f : 0: Source > > Link 0x02000012: to remote pad 0x1000002 of entity 'mtk-cam-p1': Data > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second /dev/video2 open: OK > > test VIDIOC_QUERYCAP: OK > > test VIDIOC_G/S_PRIORITY: OK > > test for unlimited opens: 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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: > > fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY > > fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) > > fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL > > fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. > > fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK > > > > Total for mtk-cam-p1 device /dev/video2: 45, Succeeded: 44, Failed: 1, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/video3: > > > > Driver Info: > > Driver name : mtk-cam-p1 > > Card type : mtk-cam-p1 > > Bus info : platform:1a000000.camisp > > Driver version : 4.19.89 > > Capabilities : 0x84201000 > > Video Capture Multiplanar > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x04201000 > > Video Capture Multiplanar > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000016 > > Type : V4L Video > > Entity Info: > > ID : 0x00000014 (20) > > Name : mtk-cam-p1 main stream > > Function : V4L2 I/O > > Pad 0x01000015 : 0: Sink > > Link 0x02000018: from remote pad 0x1000003 of entity 'mtk-cam-p1': Data, Enabled, Immutable > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second /dev/video3 open: OK > > test VIDIOC_QUERYCAP: OK > > test VIDIOC_G/S_PRIORITY: OK > > test for unlimited opens: 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 (Not Supported) > > test Composing: OK (Not Supported) > > 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: > > fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY > > fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) > > fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL > > fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. > > fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK > > > > Total for mtk-cam-p1 device /dev/video3: 45, Succeeded: 44, Failed: 1, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/video4: > > > > Driver Info: > > Driver name : mtk-cam-p1 > > Card type : mtk-cam-p1 > > Bus info : platform:1a000000.camisp > > Driver version : 4.19.89 > > Capabilities : 0x84201000 > > Video Capture Multiplanar > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x04201000 > > Video Capture Multiplanar > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x0300001c > > Type : V4L Video > > Entity Info: > > ID : 0x0000001a (26) > > Name : mtk-cam-p1 packed out > > Function : V4L2 I/O > > Pad 0x0100001b : 0: Sink > > Link 0x0200001e: from remote pad 0x1000004 of entity 'mtk-cam-p1': Data > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second /dev/video4 open: OK > > test VIDIOC_QUERYCAP: OK > > test VIDIOC_G/S_PRIORITY: OK > > test for unlimited opens: 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 (Not Supported) > > test Composing: OK (Not Supported) > > 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: > > fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY > > fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) > > fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL > > fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. > > fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK > > > > Total for mtk-cam-p1 device /dev/video4: 45, Succeeded: 44, Failed: 1, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/video5: > > > > Driver Info: > > Driver name : mtk-cam-p1 > > Card type : mtk-cam-p1 > > Bus info : platform:1a000000.camisp > > Driver version : 4.19.89 > > Capabilities : 0x84a00000 > > Metadata Capture > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x04a00000 > > Metadata Capture > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000022 > > Type : V4L Video > > Entity Info: > > ID : 0x00000020 (32) > > Name : mtk-cam-p1 partial meta 0 > > Function : V4L2 I/O > > Pad 0x01000021 : 0: Sink > > Link 0x02000024: from remote pad 0x1000005 of entity 'mtk-cam-p1': Data > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second /dev/video5 open: OK > > test VIDIOC_QUERYCAP: OK > > test VIDIOC_G/S_PRIORITY: OK > > test for unlimited opens: 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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: > > fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY > > fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) > > fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL > > fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. > > fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK > > > > Total for mtk-cam-p1 device /dev/video5: 45, Succeeded: 44, Failed: 1, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/video6: > > > > Driver Info: > > Driver name : mtk-cam-p1 > > Card type : mtk-cam-p1 > > Bus info : platform:1a000000.camisp > > Driver version : 4.19.89 > > Capabilities : 0x84a00000 > > Metadata Capture > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x04a00000 > > Metadata Capture > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000028 > > Type : V4L Video > > Entity Info: > > ID : 0x00000026 (38) > > Name : mtk-cam-p1 partial meta 1 > > Function : V4L2 I/O > > Pad 0x01000027 : 0: Sink > > Link 0x0200002a: from remote pad 0x1000006 of entity 'mtk-cam-p1': Data > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second /dev/video6 open: OK > > test VIDIOC_QUERYCAP: OK > > test VIDIOC_G/S_PRIORITY: OK > > test for unlimited opens: 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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: > > fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY > > fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) > > fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL > > fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. > > fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK > > > > Total for mtk-cam-p1 device /dev/video6: 45, Succeeded: 44, Failed: 1, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/video7: > > > > Driver Info: > > Driver name : mtk-cam-p1 > > Card type : mtk-cam-p1 > > Bus info : platform:1a000000.camisp > > Driver version : 4.19.89 > > Capabilities : 0x84a00000 > > Metadata Capture > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x04a00000 > > Metadata Capture > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x0300002e > > Type : V4L Video > > Entity Info: > > ID : 0x0000002c (44) > > Name : mtk-cam-p1 partial meta 2 > > Function : V4L2 I/O > > Pad 0x0100002d : 0: Sink > > Link 0x02000030: from remote pad 0x1000007 of entity 'mtk-cam-p1': Data > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second /dev/video7 open: OK > > test VIDIOC_QUERYCAP: OK > > test VIDIOC_G/S_PRIORITY: OK > > test for unlimited opens: 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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: > > fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY > > fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) > > fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL > > fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. > > fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK > > > > Total for mtk-cam-p1 device /dev/video7: 45, Succeeded: 44, Failed: 1, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/video8: > > > > Driver Info: > > Driver name : mtk-cam-p1 > > Card type : mtk-cam-p1 > > Bus info : platform:1a000000.camisp > > Driver version : 4.19.89 > > Capabilities : 0x84a00000 > > Metadata Capture > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x04a00000 > > Metadata Capture > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000034 > > Type : V4L Video > > Entity Info: > > ID : 0x00000032 (50) > > Name : mtk-cam-p1 partial meta 3 > > Function : V4L2 I/O > > Pad 0x01000033 : 0: Sink > > Link 0x02000036: from remote pad 0x1000008 of entity 'mtk-cam-p1': Data > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > test VIDIOC_QUERYCAP: OK > > > > Allow for multiple opens: > > test second /dev/video8 open: OK > > test VIDIOC_QUERYCAP: OK > > test VIDIOC_G/S_PRIORITY: OK > > test for unlimited opens: 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 (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 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 (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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: > > fail: v4l2-test-buffers.cpp(370): timestamp != V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC && timestamp != V4L2_BUF_FLAG_TIMESTAMP_COPY > > fail: v4l2-test-buffers.cpp(486): buf.check(Unqueued, i) > > fail: v4l2-test-buffers.cpp(615): testQueryBuf(node, i, q.g_buffers()) > > test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL > > fail: v4l2-test-buffers.cpp(747): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning. > > fail: v4l2-test-buffers.cpp(748): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests. > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK > > > > Total for mtk-cam-p1 device /dev/video8: 45, Succeeded: 44, Failed: 1, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/v4l-subdev0: > > > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000050 > > Type : V4L Sub-Device > > Entity Info: > > ID : 0x00000001 (1) > > Name : mtk-cam-p1 > > Function : Video Pixel Formatter > > Pad 0x01000002 : 0: Sink > > Link 0x02000012: from remote pad 0x100000f of entity 'mtk-cam-p1 meta input': Data > > Pad 0x01000003 : 1: Source > > Link 0x02000018: to remote pad 0x1000015 of entity 'mtk-cam-p1 main stream': Data, Enabled, Immutable > > Pad 0x01000004 : 2: Source > > Link 0x0200001e: to remote pad 0x100001b of entity 'mtk-cam-p1 packed out': Data > > Pad 0x01000005 : 3: Source > > Link 0x02000024: to remote pad 0x1000021 of entity 'mtk-cam-p1 partial meta 0': Data > > Pad 0x01000006 : 4: Source > > Link 0x0200002a: to remote pad 0x1000027 of entity 'mtk-cam-p1 partial meta 1': Data > > Pad 0x01000007 : 5: Source > > Link 0x02000030: to remote pad 0x100002d of entity 'mtk-cam-p1 partial meta 2': Data > > Pad 0x01000008 : 6: Source > > Link 0x02000036: to remote pad 0x1000033 of entity 'mtk-cam-p1 partial meta 3': Data > > Pad 0x01000009 : 7: Source > > Pad 0x0100000a : 8: Source > > Pad 0x0100000b : 9: Source > > Pad 0x0100000c : 10: Source > > Pad 0x0100000d : 11: Sink > > Link 0x0200004e: from remote pad 0x100003d of entity '1a040000.seninf': Data, Enabled, Immutable > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > > > Allow for multiple opens: > > test second /dev/v4l-subdev0 open: OK > > test for unlimited opens: OK > > > > Debug ioctls: > > 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) > > > > Sub-Device ioctls (Sink Pad 0): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 1): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 2): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 3): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 4): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 5): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 6): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 7): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 8): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 9): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 10): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Sink Pad 11): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_FMT: OK (Not Supported) > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Control ioctls: > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) > > test VIDIOC_QUERYCTRL: OK (Not Supported) > > test VIDIOC_G/S_CTRL: OK (Not Supported) > > test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 0 Private Controls: 0 > > > > Format ioctls: > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) > > test VIDIOC_G/S_PARM: OK (Not Supported) > > test VIDIOC_G_FBUF: OK (Not Supported) > > test VIDIOC_G_FMT: OK (Not Supported) > > test VIDIOC_TRY_FMT: OK (Not Supported) > > test VIDIOC_S_FMT: OK (Not Supported) > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) > > test Cropping: OK (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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 (Not Supported) > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK (Not Supported) > > > > Total for mtk-cam-p1 device /dev/v4l-subdev0: 125, Succeeded: 125, Failed: 0, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/v4l-subdev1: > > > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000052 > > Type : V4L Sub-Device > > Entity Info: > > ID : 0x00000038 (56) > > Name : 1a040000.seninf > > Function : Video Interface Bridge > > Pad 0x01000039 : 0: Sink > > Link 0x02000047: from remote pad 0x1000046 of entity 'ov8856 2-0010': Data, Enabled > > Pad 0x0100003a : 1: Sink > > Link 0x0200004c: from remote pad 0x100004b of entity 'ov02a10 4-003d': Data > > Pad 0x0100003b : 2: Sink > > Pad 0x0100003c : 3: Sink > > Pad 0x0100003d : 4: Source > > Link 0x0200004e: to remote pad 0x100000d of entity 'mtk-cam-p1': Data, Enabled, Immutable > > Pad 0x0100003e : 5: Source > > Pad 0x0100003f : 6: Source > > Pad 0x01000040 : 7: Source > > Pad 0x01000041 : 8: Source > > Pad 0x01000042 : 9: Source > > Pad 0x01000043 : 10: Source > > Pad 0x01000044 : 11: Source > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > > > Allow for multiple opens: > > test second /dev/v4l-subdev1 open: OK > > test for unlimited opens: OK > > > > Debug ioctls: > > 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) > > > > Sub-Device ioctls (Sink Pad 0): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Sink Pad 1): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Sink Pad 2): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Sink Pad 3): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 4): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 5): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 6): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 7): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 8): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 9): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 10): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Sub-Device ioctls (Source Pad 11): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: 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: 2 Private Controls: 0 > > > > Format ioctls: > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) > > test VIDIOC_G/S_PARM: OK (Not Supported) > > test VIDIOC_G_FBUF: OK (Not Supported) > > test VIDIOC_G_FMT: OK (Not Supported) > > test VIDIOC_TRY_FMT: OK (Not Supported) > > test VIDIOC_S_FMT: OK (Not Supported) > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) > > test Cropping: OK (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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 (Not Supported) > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK (Not Supported) > > > > Total for mtk-cam-p1 device /dev/v4l-subdev1: 125, Succeeded: 125, Failed: 0, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/v4l-subdev2: > > > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000054 > > Type : V4L Sub-Device > > Entity Info: > > ID : 0x00000045 (69) > > Name : ov8856 2-0010 > > Function : Camera Sensor > > Pad 0x01000046 : 0: Source > > Link 0x02000047: to remote pad 0x1000039 of entity '1a040000.seninf': Data, Enabled > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > > > Allow for multiple opens: > > test second /dev/v4l-subdev2 open: OK > > test for unlimited opens: OK > > > > Debug ioctls: > > 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) > > > > Sub-Device ioctls (Source Pad 0): > > fail: v4l2-test-subdevs.cpp(147): doioctl(node, VIDIOC_SUBDEV_ENUM_FRAME_SIZE, &fse) > > fail: v4l2-test-subdevs.cpp(248): ret && ret != ENOTTY > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: FAIL > > fail: v4l2-test-subdevs.cpp(313): fmt.code == 0 || fmt.code == ~0U > > fail: v4l2-test-subdevs.cpp(356): checkMBusFrameFmt(node, fmt.format) > > test Try VIDIOC_SUBDEV_G/S_FMT: FAIL > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > fail: v4l2-test-subdevs.cpp(147): doioctl(node, VIDIOC_SUBDEV_ENUM_FRAME_SIZE, &fse) > > fail: v4l2-test-subdevs.cpp(248): ret && ret != ENOTTY > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: FAIL > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: 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 > > fail: v4l2-test-controls.cpp(830): subscribe event for control 'User Controls' failed > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 11 Private Controls: 0 > > > > Format ioctls: > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) > > test VIDIOC_G/S_PARM: OK (Not Supported) > > test VIDIOC_G_FBUF: OK (Not Supported) > > test VIDIOC_G_FMT: OK (Not Supported) > > test VIDIOC_TRY_FMT: OK (Not Supported) > > test VIDIOC_S_FMT: OK (Not Supported) > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) > > test Cropping: OK (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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 (Not Supported) > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK (Not Supported) > > > > Total for mtk-cam-p1 device /dev/v4l-subdev2: 48, Succeeded: 44, Failed: 4, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/v4l-subdev3: > > > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000056 > > Type : V4L Sub-Device > > Entity Info: > > ID : 0x00000049 (73) > > Name : dw9768 2-000c > > Function : Lens Controller > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > > > Allow for multiple opens: > > test second /dev/v4l-subdev3 open: OK > > test for unlimited opens: OK > > > > Debug ioctls: > > 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 > > fail: v4l2-test-controls.cpp(830): subscribe event for control 'Camera Controls' failed > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 2 Private Controls: 0 > > > > Format ioctls: > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) > > test VIDIOC_G/S_PARM: OK (Not Supported) > > test VIDIOC_G_FBUF: OK (Not Supported) > > test VIDIOC_G_FMT: OK (Not Supported) > > test VIDIOC_TRY_FMT: OK (Not Supported) > > test VIDIOC_S_FMT: OK (Not Supported) > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) > > test Cropping: OK (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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 (Not Supported) > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK (Not Supported) > > > > Total for mtk-cam-p1 device /dev/v4l-subdev3: 41, Succeeded: 40, Failed: 1, Warnings: 0 > > -------------------------------------------------------------------------------- > > Compliance test for mtk-cam-p1 device /dev/v4l-subdev4: > > > > Media Driver Info: > > Driver name : mtk-cam-p1 > > Model : mtk-cam-p1 > > Serial : > > Bus info : platform:1a000000.camisp > > Media version : 4.19.89 > > Hardware revision: 0x00000000 (0) > > Driver version : 4.19.89 > > Interface Info: > > ID : 0x03000058 > > Type : V4L Sub-Device > > Entity Info: > > ID : 0x0000004a (74) > > Name : ov02a10 4-003d > > Function : Camera Sensor > > Pad 0x0100004b : 0: Source > > Link 0x0200004c: to remote pad 0x100003a of entity '1a040000.seninf': Data > > > > Required ioctls: > > test MC information (see 'Media Driver Info' above): OK > > > > Allow for multiple opens: > > test second /dev/v4l-subdev4 open: OK > > test for unlimited opens: OK > > > > Debug ioctls: > > 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) > > > > Sub-Device ioctls (Source Pad 0): > > test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Try VIDIOC_SUBDEV_G/S_FMT: OK > > test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK > > test Active VIDIOC_SUBDEV_G/S_FMT: OK > > test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported) > > test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported) > > > > Control ioctls: > > test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK > > test VIDIOC_QUERYCTRL: OK > > fail: v4l2-test-controls.cpp(362): returned control value out of range > > fail: v4l2-test-controls.cpp(431): invalid control 009e0902 > > test VIDIOC_G/S_CTRL: FAIL > > fail: v4l2-test-controls.cpp(549): returned control value out of range > > fail: v4l2-test-controls.cpp(665): invalid control 009e0902 > > test VIDIOC_G/S/TRY_EXT_CTRLS: FAIL > > fail: v4l2-test-controls.cpp(830): subscribe event for control 'User Controls' failed > > test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL > > test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) > > Standard Controls: 10 Private Controls: 0 > > > > Format ioctls: > > test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported) > > test VIDIOC_G/S_PARM: OK (Not Supported) > > test VIDIOC_G_FBUF: OK (Not Supported) > > test VIDIOC_G_FMT: OK (Not Supported) > > test VIDIOC_TRY_FMT: OK (Not Supported) > > test VIDIOC_S_FMT: OK (Not Supported) > > test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) > > test Cropping: OK (Not Supported) > > test Composing: OK (Not Supported) > > test Scaling: OK (Not Supported) > > > > 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 (Not Supported) > > test VIDIOC_EXPBUF: OK (Not Supported) > > test Requests: OK (Not Supported) > > > > Total for mtk-cam-p1 device /dev/v4l-subdev4: 48, Succeeded: 45, Failed: 3, Warnings: 0 > > > > Grand Total for mtk-cam-p1 device /dev/media2: 709, Succeeded: 694, Failed: 15, Warnings: 0 > > > > > > Jungo Lin (5): > > media: dt-bindings: mt8183: Added camera ISP Pass 1 > > dts: arm64: mt8183: Add ISP Pass 1 nodes > > media: videodev2.h: Add new boottime timestamp type > > media: platform: Add Mediatek ISP P1 image & meta formats > > media: platform: Add Mediatek ISP P1 V4L2 device driver > > > > .../bindings/media/mediatek,camisp.txt | 83 + > > Documentation/media/uapi/v4l/buffer.rst | 11 +- > > .../media/uapi/v4l/pixfmt-mtisp-sbggr10.rst | 65 + > > .../media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst | 90 + > > .../media/uapi/v4l/pixfmt-mtisp-sbggr12.rst | 61 + > > .../media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst | 110 + > > .../media/uapi/v4l/pixfmt-mtisp-sbggr14.rst | 73 + > > .../media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst | 110 + > > .../media/uapi/v4l/pixfmt-mtisp-sbggr8.rst | 51 + > > .../media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst | 78 + > > arch/arm64/boot/dts/mediatek/mt8183.dtsi | 38 + > > drivers/media/platform/Kconfig | 1 + > > drivers/media/platform/Makefile | 1 + > > drivers/media/platform/mtk-isp/Kconfig | 20 + > > .../media/platform/mtk-isp/isp_50/Makefile | 3 + > > .../platform/mtk-isp/isp_50/cam/Makefile | 6 + > > .../platform/mtk-isp/isp_50/cam/mtk_cam-hw.c | 636 +++++ > > .../platform/mtk-isp/isp_50/cam/mtk_cam-hw.h | 64 + > > .../platform/mtk-isp/isp_50/cam/mtk_cam-ipi.h | 222 ++ > > .../mtk-isp/isp_50/cam/mtk_cam-regs.h | 95 + > > .../platform/mtk-isp/isp_50/cam/mtk_cam.c | 2087 +++++++++++++++++ > > .../platform/mtk-isp/isp_50/cam/mtk_cam.h | 244 ++ > > drivers/media/v4l2-core/v4l2-ioctl.c | 37 + > > include/uapi/linux/videodev2.h | 41 + > > 24 files changed, 4226 insertions(+), 1 deletion(-) > > create mode 100644 Documentation/devicetree/bindings/media/mediatek,camisp.txt > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr10f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr12f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr14f.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8.rst > > create mode 100644 Documentation/media/uapi/v4l/pixfmt-mtisp-sbggr8f.rst > > create mode 100644 drivers/media/platform/mtk-isp/Kconfig > > create mode 100644 drivers/media/platform/mtk-isp/isp_50/Makefile > > create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/Makefile > > create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam-hw.c > > create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam-hw.h > > create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam-ipi.h > > create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam-regs.h > > create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam.c > > create mode 100644 drivers/media/platform/mtk-isp/isp_50/cam/mtk_cam.h > > > > _______________________________________________ > Linux-mediatek mailing list > Linux-mediatek@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-mediatek _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek 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=-7.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 BACB5C2BA2B for ; Fri, 10 Apr 2020 10:33:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3B2462064A for ; Fri, 10 Apr 2020 10:33:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="NMZdNm0O" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726080AbgDJKdS (ORCPT ); Fri, 10 Apr 2020 06:33:18 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:34363 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725912AbgDJKdR (ORCPT ); Fri, 10 Apr 2020 06:33:17 -0400 X-UUID: bb0946e911274701a07ed624c1c27ddd-20200410 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=nU6hQersZE23ga/Eu9jN5vWKHiuOJ0Gm6/mr/CVqsiI=; b=NMZdNm0O2gWsd7OnhHlNG9oNMayayq+22OMIZOoxeGZuQobIPSWdbG00Mts/foYjakTVDIb4HT5OnTUJojN+wWO/pKRejISWMSbaJOwYGA96JxR3kdfMn/3pHSx8zWCWobZ/izn8nxMfYICVQsFYUfwm3n0n3lCijBTpigdNF2s=; X-UUID: bb0946e911274701a07ed624c1c27ddd-20200410 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 942291848; Fri, 10 Apr 2020 18:32:49 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 18:32:40 +0800 Received: from [172.21.84.99] (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 10 Apr 2020 18:32:39 +0800 Message-ID: <1586514762.8406.114.camel@mtksdccf07> Subject: Re: [v6, 0/5] media: media: platform: mtk-isp: Add Mediatek ISP Pass 1 driver From: Jungo Lin To: Helen Koike CC: , , , , , , , , , , , , , , , , , , , , , , Date: Fri, 10 Apr 2020 18:32:42 +0800 In-Reply-To: <23b9c2f4-04d4-38e0-c71f-7e1ef93265a2@collabora.com> References: <20191219054930.29513-1-jungo.lin@mediatek.com> <23b9c2f4-04d4-38e0-c71f-7e1ef93265a2@collabora.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SGkgSGVsZW46DQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50Lg0KDQpPbiBUdWUsIDIwMjAtMDMt MzEgYXQgMTI6MzQgLTAzMDAsIEhlbGVuIEtvaWtlIHdyb3RlOg0KPiBIaSBKdW5nbywNCj4gDQo+ IEkgd2FzIHRha2luZyBhIGxvb2sgYXQgdGhpcyBwYXRjaHNldCwgcGxlYXNlIHNlZSBteSBjb21t ZW50cyBiZWxvdy4NCj4gDQo+IE9uIDEyLzE5LzE5IDM6NDkgQU0sIEp1bmdvIExpbiB3cm90ZToN Cj4gPiBIZWxsbywNCj4gPiANCj4gPiBUaGlzIHBhdGNoIHNlcmllcyBhZGRpbmcgdGhlIGRyaXZl ciBmb3IgUGFzcyAxIChQMSkgdW5pdCBpbg0KPiA+IE1lZGlhdGVrJ3MgY2FtZXJhIElTUCBzeXN0 ZW0gb24gbXQ4MTgzIFNvQywgd2hpY2ggd2lsbCBiZSB1c2VkIGluDQo+ID4gY2FtZXJhIGZlYXR1 cmVzIG9mIENyT1MuDQo+ID4gDQo+ID4gUGFzcyAxIHVuaXQgcHJvY2Vzc2VzIGltYWdlIHNpZ25h bCBmcm9tIHNlbnNvciBkZXZpY2VzIGFuZCBhY2NlcHRzIHRoZQ0KPiA+IHR1bmluZyBwYXJhbWV0 ZXJzIHRvIGFkanVzdCB0aGUgaW1hZ2UgcXVhbGl0eS4gSXQgcGVyZm9ybXMgb3B0aWNhbA0KPiA+ IGJsYWNrIGNvcnJlY3Rpb24sIGRlZmVjdCBwaXhlbCBjb3JyZWN0aW9uLCBXL0lSIGltYmFsYW5j ZSBjb3JyZWN0aW9uDQo+ID4gYW5kIGxlbnMgc2hhZGluZyBjb3JyZWN0aW9uIGZvciBSQVcgcHJv Y2Vzc2luZy4NCj4gPiANCj4gPiBUaGUgZHJpdmVyIGlzIGltcGxlbWVudGVkIHdpdGggVjRMMiBh bmQgbWVkaWEgY29udHJvbGxlciBmcmFtZXdvcmsgc28NCj4gPiB3ZSBoYXZlIHRoZSBmb2xsb3dp bmcgZW50aXRpZXMgdG8gZGVzY3JpYmUgdGhlIElTUCBwYXNzIDEgcGF0aC4NCj4gPiANCj4gPiAo VGhlIGN1cnJlbnQgbWV0YWRhdGEgaW50ZXJmYWNlIHVzZWQgaW4gbWV0YSBpbnB1dCBhbmQgcGFy dGlhbCBtZXRhDQo+ID4gbm9kZXMgaXMgb25seSBhIHRlbXBvcmFyeSBzb2x1dGlvbiB0byBraWNr IG9mZiB0aGUgZHJpdmVyIGRldmVsb3BtZW50DQo+ID4gYW5kIGlzIG5vdCByZWFkeSB0byBiZSBy ZXZpZXdlZCB5ZXQuKQ0KPiA+IA0KPiA+IDEuIG1ldGEgaW5wdXQgKG91dHB1dCB2aWRlbyBkZXZp Y2UpOiBjb25uZWN0IHRvIElTUCBQMSBzdWIgZGV2aWNlLg0KPiA+IEl0IGFjY2VwdHMgdGhlIHR1 bmluZyBidWZmZXIgZnJvbSB1c2VyLg0KPiA+IA0KPiA+IDIuIElTUCBQMSAoc3ViIGRldmljZSk6 IGNvbm5lY3QgdG8gcGFydGlhbCBtZXRhIDAvMS8yLzMsDQo+ID4gbWFpbiBzdHJlYW0gYW5kIHBh Y2tlZCBvdXQgdmlkZW8gZGV2aWNlcy4gV2hlbiBwcm9jZXNzaW5nIGFuIGltYWdlLA0KPiA+IFBh c3MgMSBoYXJkd2FyZSBzdXBwb3J0cyBtdWx0aXBsZSBvdXRwdXQgaW1hZ2VzIHdpdGggZGlmZmVy ZW50IHNpemVzDQo+ID4gYW5kIGZvcm1hdHMgc28gaXQgbmVlZHMgdHdvIGNhcHR1cmUgdmlkZW8g ZGV2aWNlcyAoIm1haW4gc3RyZWFtIiBhbmQNCj4gPiAicGFja2VkIG91dCIpIHRvIHJldHVybiB0 aGUgaW1hZ2UgZGF0YSB0byB0aGUgdXNlci4NCj4gPiANCj4gPiAzLiBtYWluIHN0cmVhbSAoY2Fw dHVyZSB2aWRlbyBkZXZpY2UpOiByZXR1cm4gdGhlIHByb2Nlc3NlZCBpbWFnZSBkYXRhDQo+ID4g d2hpY2ggaXMgdXNlZCBpbiBjYXB0dXJlIHNjZW5hcmlvLg0KPiA+IA0KPiA+IDQuIHBhY2tlZCBv dXQgKGNhcHR1cmUgdmlkZW8gZGV2aWNlKTogcmV0dXJuIHRoZSBwcm9jZXNzZWQgaW1hZ2UgZGF0 YQ0KPiA+IHdoaWNoIGlzIHVzZWQgaW4gcHJldmlldyBzY2VuYXJpby4NCj4gPiANCj4gPiA1LiBw YXJ0aWFsIG1ldGEgMCAoY2FwdHVyZSB2aWRlbyBkZXZpY2UpOiByZXR1cm4gdGhlIEFFL0FXQiBz dGF0aXN0aWNzLg0KPiA+IA0KPiA+IDYuIHBhcnRpYWwgbWV0YSAxIChjYXB0dXJlIHZpZGVvIGRl dmljZSk6IHJldHVybiB0aGUgQUYgc3RhdGlzdGljcy4NCj4gPiANCj4gPiA3LiBwYXJ0aWFsIG1l dGEgMiAoY2FwdHVyZSB2aWRlbyBkZXZpY2UpOiByZXR1cm4gdGhlIGxvY2FsIGNvbnRyYXN0DQo+ ID4gICAgZW5oYW5jZWQgc3RhdGlzdGljcy4NCj4gPiANCj4gPiA4LiBwYXJ0aWFsIG1ldGEgMyAo Y2FwdHVyZSB2aWRlbyBkZXZpY2UpOiByZXR1cm4gdGhlIGxvY2FsIG1vdGlvbg0KPiA+ICAgIHZl Y3RvciBzdGF0aXN0aWNzLg0KPiA+IA0KPiA+IFRoZSBvdmVyYWxsIHBhdGNoZXMgb2YgdGhlIHNl cmllcyBpczoNCj4gPiANCj4gPiAqIFBhdGNoIDEgJiAyIGFyZSBkdC1iaW5kaW5ncyAmIGR0cyBp bmZvcm1hdGlvbiByZWxhdGVkIHRvIElTUCBQMSBkcml2ZXIuDQo+ID4gKiBQYXRjaCAzIGFkZHMg bmV3IHRpbWVzdGFtcCB0eXBlIGZvciBDYW1lcmEgQVIgKEF1Z21lbnRlZCBSZWFsaXR5KSBhcHBs aWNhdGlvbg0KPiA+ICogUGF0Y2ggNCBleHRlbmRzIHRoZSBvcmlnaW5hbCBWNEwyIGltYWdlICYg bWV0YSBmb3JtYXRzIGZvciBJU1AgUDEgZHJpdmVyLg0KPiA+ICogUGF0Y2ggNSBpcyB0aGUgaGVh cnQgb2YgSVNQIFAxIGRyaXZlci4gSXQgaGFuZGxlcyB0aGUgSVNQICBIVyBjb25maWd1cmF0aW9u Lg0KPiA+ICAgTW9yZW92ZXIsIGltcGxlbWVudCBzdGFuZGFyZCBWNEwyIHZpZGVvIGRyaXZlciB0 aGF0IHV0aWxpemVzDQo+ID4gICBWNEwyIGFuZCBtZWRpYSBmcmFtZXdvcmsgQVBJcy4gQ29tbXVu aWNhdGUgd2l0aCBjby1wcm9jZXNzIHZpYSBTQ1ANCj4gPiAgIGNvbW11bmljYXRpb24gdG8gY29t cG9zZSBJU1AgcmVnaXN0ZXJzIGluIHRoZSBmaXJtd2FyZS4NCj4gPiANCj4gPiBIZXJlIGlzIElT UCBQMSBtZWRpYSB0b3BvbG9neToNCj4gPiBJdCBpcyBpbmNsdWRlZCB0aGUgbWFpbi9zdWIgc2Vu c29yLCBzZW4taW5mIHN1Yi1kZXZpY2VzIGFuZCBsZW4gZGV2aWNlDQo+ID4gd2hpY2ggYXJlIGlt cGxlbWVudGVkIGluIGJlbG93IHBhdGNoWzFdWzJdWzNdWzRdOg0KPiANCj4gSSB3b3VsZCBiZSBu aWNlIGlmIHlvdSBjb3VsZCBwcm92aWRlIGEgYnJhbmNoIHdpdGggdGhvc2UgYXBwbGllZC4NCj4g DQoNCldlIGFwcGx5IHRob3NlIHBhdGNoZXMgaW4gdGhlIGNocm9tZW9zLTQuMTkgdG8gdGVzdC4N Cmh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bW9zL3RoaXJkX3BhcnR5 L2tlcm5lbC8rL3JlZnMvaGVhZHMvY2hyb21lb3MtNC4xOQ0KDQoNCj4gPiANCj4gPiBGb3IgTWVk aWF0ZWsgSVNQIFAxIGRyaXZlciwgaXQgYWxzbyBkZXBlbmRzIG9uIE1UODE4MyBTQ1BbNV0gJiBJ T01NVVs2XQ0KPiA+IHBhdGNoIHNldHMuDQo+ID4gDQo+ID4gL3Vzci9iaW4vbWVkaWEtY3RsIC1w IC1kIC9kZXYvbWVkaWEyDQo+ID4gDQo+ID4gTWVkaWEgY29udHJvbGxlciBBUEkgdmVyc2lvbiA0 LjE5Ljg5DQo+ID4gDQo+ID4gTWVkaWEgZGV2aWNlIGluZm9ybWF0aW9uDQo+ID4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ID4gZHJpdmVyICAgICAgICAgIG10ay1jYW0tcDENCj4gPiBtb2Rl bCAgICAgICAgICAgbXRrLWNhbS1wMQ0KPiA+IHNlcmlhbCAgICAgICAgICANCj4gPiBidXMgaW5m byAgICAgICAgcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQo+ID4gaHcgcmV2aXNpb24gICAgIDB4 MA0KPiA+IGRyaXZlciB2ZXJzaW9uICA0LjE5Ljg5DQo+ID4gDQo+ID4gRGV2aWNlIHRvcG9sb2d5 DQo+ID4gLSBlbnRpdHkgMTogbXRrLWNhbS1wMSAoMTIgcGFkcywgOCBsaW5rcykNCj4gDQo+IElm IEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyAzIElTUCBpbnN0 YW5jZXMsIEEsIEIsIGFuZCBDLCBhbmQgb25seSBCIGlzIGJlaW5nIHVzZWQuDQo+IElzIHRoaXMg Y29ycmVjdD8NCj4gDQo+IFNvIG1heWJlLCByZW5hbWUgaXQgdG8gbXRrLWlzcC1wMS1iLCB0byBh bGxvdyBtdGstaXNwLXAxLWEgYW5kIG10ay1pc3AtcDEtYyB0byBiZSBhZGRlZCBpbiB0aGUgZnV0 dXJlLg0KPiANCg0KQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgc2luZ2xlLWNhbSBpbiB0aGlz IFNvQyB3aXRoIHVwc3RyZWFtIGRyaXZlci4NCkl0IGlzIHBsYW4gaW4gbmV4dCBNZWRpYXRlayBT b0MgdG8gc3VwcG9ydCBtdWx0aS1jYW0gY2FwYWJpbGl0aWVzLiBTbw0Kd2UnZCBsaWtlIHRvIGtl ZXAgdGhlIG5hbWluZyB0byBhdm9pZCBjb25mdXNpb24uDQoNCj4gPiAgICAgICAgICAgICB0eXBl IFY0TDIgc3ViZGV2IHN1YnR5cGUgVW5rbm93biBmbGFncyAwDQo+ID4gICAgICAgICAgICAgZGV2 aWNlIG5vZGUgbmFtZSAvZGV2L3Y0bC1zdWJkZXYwDQo+ID4gCXBhZDA6IFNpbmsNCj4gPiAJCTwt ICJtdGstY2FtLXAxIG1ldGEgaW5wdXQiOjAgW10NCj4gDQo+IEkgd291bGQgcHJlZmVyIHRoZSBu YW1lIHBhcmFtcywgb3IgcGFyYW1ldGVycywgc2luY2UgaW5wdXQvb3V0cHV0IGlzIGNvbmZ1c2lu Zywgc2luY2UgdGhpcyBpcyBhIG91dHB1dCB2aWRlbyBub2RlLg0KPiANCg0KT2ssIHdlIHdpbGwg cmV2aXNlIG91ciBuYW1pbmcgaW4gbmV4dCBwYXRjaC4NCg0KPiA+IAlwYWQxOiBTb3VyY2UNCj4g PiAJCS0+ICJtdGstY2FtLXAxIG1haW4gc3RyZWFtIjowIFtFTkFCTEVELElNTVVUQUJMRV0NCj4g DQo+IElzIHRoZXJlIGFueSByZWFzb24gZm9yIHRoaXMgbGluayB0byBiZSBJTU1VVEFCTEU/IENh bid0IGEgdXNlICJtdGstY2FtLXAxIHBhY2tlZCBvdXQiIHdpdGhvdXQgY29uZmlndXJpbmcgIm10 ay1jYW0tcDEgbWFpbiBzdHJlYW0iID8NCj4gDQoNClllcywgeW91IGFyZSByaWdodC4gV2Ugd2ls bCByZW1vdmUgSU1NVVRBQkxFIGZsYWcgaW4gbmV4dCBwYXRjaC4NCg0KPiA+IAlwYWQyOiBTb3Vy Y2UNCj4gPiAJCS0+ICJtdGstY2FtLXAxIHBhY2tlZCBvdXQiOjAgW10NCj4gDQo+IFNhbWUgaGVy ZSwgbWF5YmUgInBhY2tlZCBzdHJlYW0iID8gSnVzdCBmb3IgY3VyaW9zaXR5LCB3aHkgaXMgaXQg Y2FsbGVkIHBhY2tlZD8NCj4gDQoNCkNvbXBhcmluZyB3aXRoIFY0TDJfUElYX0ZNVF9TR0JSRzgs IHdlIHBhY2tlZCB0aGUgY29sb3IgYml0cyB3aXRob3V0IG5vDQpwYWRkaW5nIGluIHRoZSBtZW1v cnkuIFdlIG1heSByZXZpc2UgdGhlIG5hbWluZyBpbiBuZXh0IHBhdGNoLg0KDQo+ID4gCXBhZDM6 IFNvdXJjZQ0KPiA+IAkJLT4gIm10ay1jYW0tcDEgcGFydGlhbCBtZXRhIDAiOjAgW10NCj4gPiAJ cGFkNDogU291cmNlDQo+ID4gCQktPiAibXRrLWNhbS1wMSBwYXJ0aWFsIG1ldGEgMSI6MCBbXQ0K PiA+IAlwYWQ1OiBTb3VyY2UNCj4gPiAJCS0+ICJtdGstY2FtLXAxIHBhcnRpYWwgbWV0YSAyIjow IFtdDQo+ID4gCXBhZDY6IFNvdXJjZQ0KPiA+IAkJLT4gIm10ay1jYW0tcDEgcGFydGlhbCBtZXRh IDMiOjAgW10NCj4gDQo+IFNob3VsZG4ndCB0aG9zZSBsaW5rcyBiZSBbRU5BQkxFRCxJTU1VVEFC TEVdID8NCj4gDQo+IEl0IHdvdWxkIGJlIGJldHRlciB0byBoYXZlIGEgbW9yZSBpbnR1aXRpdmUg bmFtaW5nLCBlLmcuICJtdGstY2FtLXAxIEFFL0FXQiBzdGF0cyIsICJtdGstY2FtLXAxIEFGIHN0 YXRzIiwNCj4gIm10ay1jYW0tcDEgY29udHJhc3Qgc3RhdHMiLCAibXRrLWNhbS1wMSBtb3Rpb24g c3RhdHMiLCB3aGF0IGRvIHlvdSB0aGluaz8NCj4gDQo+IEkgYWxzbyB3b3VsZCBwcmVmZXIgdG8g cmVtb3ZlIGJsYW5rIHNwYWNlcy4NCj4gDQo+IEFuZCBtYXliZSB0aGUgcHJlZml4IGNvdWxkIGJl IG10a2lzcC1wMSA/IChqdXN0IHRvIGJlIHNpbWlsYXIgd2l0aCBya2lzcDEpLCBidXQgSSBkb24n dCBoYXZlIHN0cm9uZyBmZWVsaW5ncyBhYm91dCB0aGlzLg0KPiANCg0KTm8sIHRoZXNlIGxpbmtz IGFyZSBvcHRpb25hbCB0byBzZXR1cCBmb3IgdXNlcnNwYWNlLg0KRm9yIG5hbWluZyBwYXJ0LCB3 ZSB3aWxsIGFsaWduIHdpdGggZHJpdmVyIHNvdXJjZSBjb2Rlcy4NCg0KPiA+IAlwYWQ3OiBTb3Vy Y2UNCj4gPiAJcGFkODogU291cmNlDQo+ID4gCXBhZDk6IFNvdXJjZQ0KPiA+IAlwYWQxMDogU291 cmNlDQo+IA0KPiBXaHkgc291cmNlIHBhZHMgdGhhdCBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0 aGluZz8gKEkgZ3Vlc3MgSSBuZWVkIHRvIGNoZWNrIHRoZSBsYXN0IHBhdGNoIGJldHRlcikuDQo+ IA0KDQpUaGVzZSBwYWRzIGFyZSBqdXN0IHJlc2VydmVkIHB1cnBvc2UuDQpXZSB3aWxsIHBsYW4g dG8gcmVtb3ZlIHRoZW0gaW4gbmV4dCBwYXRjaC4NCg0KVGhhbmtzLA0KDQpKdW5nbw0KDQo+IFJl Z2FyZHMsDQo+IEhlbGVuDQo+IA0KPiA+IAlwYWQxMTogU2luaw0KPiA+IAkJPC0gIjFhMDQwMDAw LnNlbmluZiI6NCBbRU5BQkxFRCxJTU1VVEFCTEVdDQo+ID4gDQo+ID4gLSBlbnRpdHkgMTQ6IG10 ay1jYW0tcDEgbWV0YSBpbnB1dCAoMSBwYWQsIDEgbGluaykNCj4gPiAgICAgICAgICAgICAgdHlw ZSBOb2RlIHN1YnR5cGUgVjRMIGZsYWdzIDANCj4gPiAgICAgICAgICAgICAgZGV2aWNlIG5vZGUg bmFtZSAvZGV2L3ZpZGVvMg0KPiA+IAlwYWQwOiBTb3VyY2UNCj4gPiAJCS0+ICJtdGstY2FtLXAx IjowIFtdDQo+ID4gDQo+ID4gLSBlbnRpdHkgMjA6IG10ay1jYW0tcDEgbWFpbiBzdHJlYW0gKDEg cGFkLCAxIGxpbmspDQo+ID4gICAgICAgICAgICAgIHR5cGUgTm9kZSBzdWJ0eXBlIFY0TCBmbGFn cyAwDQo+ID4gICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92aWRlbzMNCj4gPiAJ cGFkMDogU2luaw0KPiA+IAkJPC0gIm10ay1jYW0tcDEiOjEgW0VOQUJMRUQsSU1NVVRBQkxFXQ0K PiA+IA0KPiA+IC0gZW50aXR5IDI2OiBtdGstY2FtLXAxIHBhY2tlZCBvdXQgKDEgcGFkLCAxIGxp bmspDQo+ID4gICAgICAgICAgICAgIHR5cGUgTm9kZSBzdWJ0eXBlIFY0TCBmbGFncyAwDQo+ID4g ICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92aWRlbzQNCj4gPiAJcGFkMDogU2lu aw0KPiA+IAkJPC0gIm10ay1jYW0tcDEiOjIgW10NCj4gPiANCj4gPiAtIGVudGl0eSAzMjogbXRr LWNhbS1wMSBwYXJ0aWFsIG1ldGEgMCAoMSBwYWQsIDEgbGluaykNCj4gPiAgICAgICAgICAgICAg dHlwZSBOb2RlIHN1YnR5cGUgVjRMIGZsYWdzIDANCj4gPiAgICAgICAgICAgICAgZGV2aWNlIG5v ZGUgbmFtZSAvZGV2L3ZpZGVvNQ0KPiA+IAlwYWQwOiBTaW5rDQo+ID4gCQk8LSAibXRrLWNhbS1w MSI6MyBbXQ0KPiA+IA0KPiA+IC0gZW50aXR5IDM4OiBtdGstY2FtLXAxIHBhcnRpYWwgbWV0YSAx ICgxIHBhZCwgMSBsaW5rKQ0KPiA+ICAgICAgICAgICAgICB0eXBlIE5vZGUgc3VidHlwZSBWNEwg ZmxhZ3MgMA0KPiA+ICAgICAgICAgICAgICBkZXZpY2Ugbm9kZSBuYW1lIC9kZXYvdmlkZW82DQo+ ID4gCXBhZDA6IFNpbmsNCj4gPiAJCTwtICJtdGstY2FtLXAxIjo0IFtdDQo+ID4gDQo+ID4gLSBl bnRpdHkgNDQ6IG10ay1jYW0tcDEgcGFydGlhbCBtZXRhIDIgKDEgcGFkLCAxIGxpbmspDQo+ID4g ICAgICAgICAgICAgIHR5cGUgTm9kZSBzdWJ0eXBlIFY0TCBmbGFncyAwDQo+ID4gICAgICAgICAg ICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92aWRlbzcNCj4gPiAJcGFkMDogU2luaw0KPiA+IAkJ PC0gIm10ay1jYW0tcDEiOjUgW10NCj4gPiANCj4gPiAtIGVudGl0eSA1MDogbXRrLWNhbS1wMSBw YXJ0aWFsIG1ldGEgMyAoMSBwYWQsIDEgbGluaykNCj4gPiAgICAgICAgICAgICAgdHlwZSBOb2Rl IHN1YnR5cGUgVjRMIGZsYWdzIDANCj4gPiAgICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFtZSAv ZGV2L3ZpZGVvOA0KPiA+IAlwYWQwOiBTaW5rDQo+ID4gCQk8LSAibXRrLWNhbS1wMSI6NiBbXQ0K PiA+IA0KPiA+IC0gZW50aXR5IDU2OiAxYTA0MDAwMC5zZW5pbmYgKDEyIHBhZHMsIDMgbGlua3Mp DQo+ID4gICAgICAgICAgICAgIHR5cGUgVjRMMiBzdWJkZXYgc3VidHlwZSBVbmtub3duIGZsYWdz IDANCj4gPiAgICAgICAgICAgICAgZGV2aWNlIG5vZGUgbmFtZSAvZGV2L3Y0bC1zdWJkZXYxDQo+ ID4gCXBhZDA6IFNpbmsNCj4gPiAJCVtmbXQ6U0dSQkcxMF8xWDEwLzMyNjR4MjQ0OCBmaWVsZDpu b25lIGNvbG9yc3BhY2U6c3JnYl0NCj4gPiAJCTwtICJvdjg4NTYgMi0wMDEwIjowIFtFTkFCTEVE XQ0KPiA+IAlwYWQxOiBTaW5rDQo+ID4gCQlbZm10OlNSR0dCMTBfMVgxMC8xNjAweDEyMDAgZmll bGQ6bm9uZSBjb2xvcnNwYWNlOnNyZ2JdDQo+ID4gCQk8LSAib3YwMmExMCA0LTAwM2QiOjAgW10N Cj4gPiAJcGFkMjogU2luaw0KPiA+IAkJW2ZtdDpTQkdHUjEwXzFYMTAvMTYwMHgxMjAwIGZpZWxk Om5vbmUgY29sb3JzcGFjZTpzcmdiXQ0KPiA+IAlwYWQzOiBTaW5rDQo+ID4gCQlbZm10OlNCR0dS MTBfMVgxMC8xNjAweDEyMDAgZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnNyZ2JdDQo+ID4gCXBhZDQ6 IFNvdXJjZQ0KPiA+IAkJW2ZtdDpTQkdHUjEwXzFYMTAvMTYwMHgxMjAwIGZpZWxkOm5vbmUgY29s b3JzcGFjZTpzcmdiXQ0KPiA+IAkJLT4gIm10ay1jYW0tcDEiOjExIFtFTkFCTEVELElNTVVUQUJM RV0NCj4gPiAJcGFkNTogU291cmNlDQo+ID4gCQlbZm10OlNCR0dSMTBfMVgxMC8xNjAweDEyMDAg ZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnNyZ2JdDQo+ID4gCXBhZDY6IFNvdXJjZQ0KPiA+IAkJW2Zt dDpTQkdHUjEwXzFYMTAvMTYwMHgxMjAwIGZpZWxkOm5vbmUgY29sb3JzcGFjZTpzcmdiXQ0KPiA+ IAlwYWQ3OiBTb3VyY2UNCj4gPiAJCVtmbXQ6U0JHR1IxMF8xWDEwLzE2MDB4MTIwMCBmaWVsZDpu b25lIGNvbG9yc3BhY2U6c3JnYl0NCj4gPiAJcGFkODogU291cmNlDQo+ID4gCQlbZm10OlNCR0dS MTBfMVgxMC8xNjAweDEyMDAgZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnNyZ2JdDQo+ID4gCXBhZDk6 IFNvdXJjZQ0KPiA+IAkJW2ZtdDpTQkdHUjEwXzFYMTAvMTYwMHgxMjAwIGZpZWxkOm5vbmUgY29s b3JzcGFjZTpzcmdiXQ0KPiA+IAlwYWQxMDogU291cmNlDQo+ID4gCQlbZm10OlNCR0dSMTBfMVgx MC8xNjAweDEyMDAgZmllbGQ6bm9uZSBjb2xvcnNwYWNlOnNyZ2JdDQo+ID4gCXBhZDExOiBTb3Vy Y2UNCj4gPiAJCVtmbXQ6U0JHR1IxMF8xWDEwLzE2MDB4MTIwMCBmaWVsZDpub25lIGNvbG9yc3Bh Y2U6c3JnYl0NCj4gPiANCj4gPiAtIGVudGl0eSA2OTogb3Y4ODU2IDItMDAxMCAoMSBwYWQsIDEg bGluaykNCj4gPiAgICAgICAgICAgICAgdHlwZSBWNEwyIHN1YmRldiBzdWJ0eXBlIFNlbnNvciBm bGFncyAwDQo+ID4gICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92NGwtc3ViZGV2 Mg0KPiA+IAlwYWQwOiBTb3VyY2UNCj4gPiAJCVtmbXQ6U0JHR1IxMF8xWDEwLzMyNjR4MjQ0OCBm aWVsZDpub25lIGNvbG9yc3BhY2U6dW5rbm93biB5Y2Jjcjo3MDldDQo+ID4gCQktPiAiMWEwNDAw MDAuc2VuaW5mIjowIFtFTkFCTEVEXQ0KPiA+IA0KPiA+IC0gZW50aXR5IDczOiBkdzk3NjggMi0w MDBjICgwIHBhZCwgMCBsaW5rKQ0KPiA+ICAgICAgICAgICAgICB0eXBlIFY0TDIgc3ViZGV2IHN1 YnR5cGUgTGVucyBmbGFncyAwDQo+ID4gICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rl di92NGwtc3ViZGV2Mw0KPiA+IA0KPiA+IC0gZW50aXR5IDc0OiBvdjAyYTEwIDQtMDAzZCAoMSBw YWQsIDEgbGluaykNCj4gPiAgICAgICAgICAgICAgdHlwZSBWNEwyIHN1YmRldiBzdWJ0eXBlIFNl bnNvciBmbGFncyAwDQo+ID4gICAgICAgICAgICAgIGRldmljZSBub2RlIG5hbWUgL2Rldi92NGwt c3ViZGV2NA0KPiA+IAlwYWQwOiBTb3VyY2UNCj4gPiAJCVtmbXQ6U1JHR0IxMF8xWDEwLzE2MDB4 MTIwMCBmaWVsZDpub25lXQ0KPiA+IAkJLT4gIjFhMDQwMDAwLnNlbmluZiI6MSBbXQ0KPiA+IA0K PiA+ID09PT09PT09PT09DQo+ID4gPSBoaXN0b3J5ID0NCj4gPiA9PT09PT09PT09PQ0KPiA+IA0K PiA+IHZlcnNpb24gNjoNCj4gPiAgLSBBZGQgcG9ydCBub2RlIGRlc2NyaXB0aW9uIGluIHRoZSBk dC1iaW5kaW5nIGRvY3VtZW50IGFuZCBkZXZpY2UgdHJlZQ0KPiA+ICAgIGJ5IFRvbWFzeiBGaWdh Lg0KPiA+ICAtIFJlbW92ZSBSR0IgZm9ybWF0IGRlZmluaXRpb25zIGluIHBpeGZtdC1yZ2IucnN0 IGZvciBrZXJuZWwgdjUuNS1yYzENCj4gPiAgICB2ZXJzaW9uLg0KPiA+ICAtIFJldmlzZSBoZWxw IGRlc2NyaXB0aW9uIGZvciBWSURFT19NRURJQVRFS19JU1BfUEFTUzEuDQo+ID4gIC0gQXBwbHkg U0NQIHYyMSBjaGFuZ2UgaW4gUDEgZHJpdmVyIGJ5IFBpLUhzdW4gU2hpaC4NCj4gPiAgLSBDb3Jy ZWN0IGF1dG8gc3VzcGVuZCB0aW1lciB2YWx1ZSBmb3Igc3VzcGVuZC9yZXN1bWUgaXNzdWUuDQo+ ID4gIC0gSW5jcmVhc2UgSVBJIGd1YXJkIHRpbWVyIHRvIDEgc2Vjb25kIHRvIGF2b2lkIGZhbHNl IGFsYXJtIGNvbW1hbmQNCj4gPiAgICB0aW1lb3V0IGV2ZW50Lg0KPiA+ICAtIEZpeCBLRSBkdWUg dG8gbm8gc2VuLWluZiBzdWItZGV2aWNlLg0KPiA+IA0KPiA+IFRvZG86DQo+ID4gIC0gdmIyX29w cydzIGJ1Zl9yZXF1ZXN0X2NvbXBsZXRlIGNhbGxiYWNrIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9u Lg0KPiA+ICAtIEFkZCByc3QgZG9jdW1lbnRzIGZvciBNZWRpYXRlayBtZXRhIGZvcm1hdHMuDQo+ ID4gIC0gTmV3IG1ldGEgYnVmZmVyIHN0cnVjdHVyZSBkZXNpZ24gJiByZS1mYWN0b3JpbmcuDQo+ ID4gDQo+ID4gdmVyc2lvbiA1Og0KPiA+ICAtIEZpeGVkIFJvYidzIGNvbW1lbnQgb24gZHQtYmlu ZGluZyBmb3JtYXQNCj4gPiAgLSBGaXggVG9tYXN6J3MgY29tbWVudCBpbiBtdGtfaXNwX3BtX3N1 c3BlbmQgZnVuY3Rpb24NCj4gPiAgLSBTdXBwb3J0IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0JP T1RUSU1FIHRpbWVzdGFtcCBmbGFnDQo+ID4gICAgYW5kIG5ldyB0aW1lc3RhbXAgdHlwZSBpbiBk cml2ZXINCj4gPiAgLSBGaXggYnVmZmVyIGVuLXF1ZXVlIHRpbWluZyBpc3N1ZSBpbiB2NA0KPiA+ ICAtIFJlbW92ZSBkZWZhdWx0IGxpbmtfbm90aWZ5IGNhbGxiYWNrIGZ1bmN0aW9uIGluIG10a19j YW1fbWVkaWFfb3BzDQo+ID4gDQo+ID4gVG9kbzoNCj4gPiAgLSB2YjJfb3BzJ3MgYnVmX3JlcXVl c3RfY29tcGxldGUgY2FsbGJhY2sgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24NCj4gPiAgLSBBZGQg cnN0IGRvY3VtZW50cyBmb3IgTWVkaWF0ZWsgbWV0YSBmb3JtYXRzDQo+ID4gIC0gTmV3IG1ldGEg YnVmZmVyIHN0cnVjdHVyZSBkZXNpZ24gJiByZS1mYWN0b3JpbmcNCj4gPiAgLSBBbGlnbiBhbmQg cGFjayBJUEkgY29tbWFuZCBzdHJ1Y3R1cmVzIGZvciBFQyBST00gc2l6ZSBzaHJpbmsNCj4gPiAN Cj4gPiB2ZXJzaW9uIDQ6DQo+ID4gIC0gRml4IFRvbWFzeidzIGNvbW1lbnRzIHdoaWNoIGFyZSBh ZGRyZXNzZWQgaW4gTVRLIElTUCBQMSBkcml2ZXIgdjMNCj4gPiAgICBwYXRjaFs0XQ0KPiA+ICAt IEZpeCBzb21lIFRvbWFzeiBjb21tZW50cyB3aGljaCBhcmUgYWRkcmVzc2VkIGluIERJUCdzIHYy IHBhdGNoWzVdDQo+ID4gIC0gRXh0ZW5kIE1lZGlhdGVrIHByb3ByaWV0YXJ5IGltYWdlIGZvcm1h dHMgdG8gc3VwcG9ydCBiYXllciBvcmRlcg0KPiA+ICAtIFN1cHBvcnQgVjRMMl9CVUZfRkxBR19U U1RBTVBfU1JDX1NPRSBmb3IgY2FwdHVyZSBkZXZpY2VzDQo+ID4gDQo+ID4gVG9kbzoNCj4gPiAg LSB2YjJfb3BzJ3MgYnVmX3JlcXVlc3RfY29tcGxldGUgY2FsbGJhY2sgZnVuY3Rpb24gaW1wbGVt ZW50YXRpb24NCj4gPiAgLSBBZGQgcnN0IGRvY3VtZW50cyBmb3IgTWVkaWF0ZWsgbWV0YSBmb3Jt YXRzDQo+ID4gIC0gTmV3IG1ldGEgYnVmZmVyIHN0cnVjdHVyZSBkZXNpZ24gJiByZS1mYWN0b3Jp bmcNCj4gPiAgLSBTdXBwb3J0IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0JPT1RUSU1FIHRpbWVz dGFtcCBmbGFnDQo+ID4gIC0gQWxpZ24gYW5kIHBhY2sgSVBJIGNvbW1hbmQgc3RydWN0dXJlcyBm b3IgRUMgUk9NIHNpemUgc2hyaW5rDQo+ID4gDQo+ID4gdmVyc2lvbiAzOg0KPiA+ICAtIFJlbW92 ZSBJU1AgUGFzcyAxIHJlc2VydmVkIG1lbW9yeSBkZXZpY2Ugbm9kZSBhbmQgY2hhbmdlIHRvIHVz ZSBTQ1Ancw0KPiA+ICAgIHJlc2VydmVkIG1lbW9yeSByZWdpb24uIChSb2IgSGVycmluZykNCj4g PiAgLSBGaXggY29tbWVudHMgb2YgSVNQIFBhc3MgMSBkZXZpY2Ugbm9kZSAmIGR0LWJpbmRpbmdz IGRvY3VtZW50IChSb2IgSGVycmluZykNCj4gPiAgLSBSZXZpc2UgSVNQIFBhc3MxIEtjb25maWcN Cj4gPiAgLSBBZGQgcnN0IGRvY3VtZW50cyBmb3IgTWVkaWF0ZWsgaW1hZ2UgZm9ybWF0cyAoSGFu cyBWZXJrdWlsKQ0KPiA+ICAtIEZpeCBrZXJuZWwgd2FybmluZyBtZXNzYWdlcyB3aGVuIHJ1bm5p bmcgdjRsMl9jb21wbGlhbmNlIHRlc3QNCj4gPiAgLSBNb3ZlIEFGTyBidWZmZXIgZW5xdWV1ZSAm IGRlLXF1ZXVlIGZyb20gcmVxdWVzdCBBUEkgdG8gbm9uLXJlcXVlc3QNCj4gPiAgLSBtdGtfY2Ft LWN0cmwuaC9tdGtfY2FtLWN0cmwuYw0KPiA+ICAgIFJldmlzZSBNZWRpYXRlayBJU1AgUGFzczEg c3BlY2lmaWMgVjRMMiBjb250cm9sIG5hbWluZyAmIGZpbGUgbGljZW5jZQ0KPiA+ICAgIGRlY2xh cmF0aW9uIChIYW5zIFZlcmt1aWwpDQo+ID4gICAgU3BsaXQgR0VUX0JJTl9JTkZPIGNvbnRyb2wg aW50byB0d28gY29udHJvbHMgdG8gZ2V0IHdpZHRoICYgaGVpZ2h0DQo+ID4gICAgaW4tZGVwZW5k ZW50bHkgKEhhbnMgVmVya3VpbCkNCj4gPiAgLSBtdGtfY2FtLXY0bDItdXRpbC5oL210a19jYW0t djRsMi11dGlsLmMNCj4gPiAgICBNZXJnaW5nIG10a19jYW0tZGV2LmMgYW5kIG10a19jYW0tdjRs Mi11dGlsLmMuIChEcmV3IERhdmVucG9ydCkNCj4gPiAgICBSZW1vdmUgdGhlIHBpeF9tb2RlIGFy Z3VtZW50IGluIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCB1bnJlYWNoYWJsZSBjb2RlLiAoRHJldyBE YXZlbnBvcnQpDQo+ID4gICAgRml4IERyZXcncyBjb21tZW50cyB3aGljaCBhcmUgYWRkcmVzc2Vk IGluIHYyIHBhdGNoDQo+ID4gICAgRml4IHNvbWUgVG9tYXN6IGNvbW1lbnRzIHdoaWNoIGFyZSBh ZGRyZXNzZWQgaW4gRElQJ3MgdjEgcGF0Y2hbM10NCj4gPiAgLSBtdGtfY2FtLXJlZ3MuaCAvIG10 a19jYW0uaCAvIG10a19jYW0uYw0KPiA+ICAgIEZpeCBEcmV3J3MgY29tbWVudHMgd2hpY2ggYXJl IGFkZHJlc3NlZCBpbiB2MiBwYXRjaA0KPiA+ICAgIEZpeCBzb21lIFRvbWFzeiBjb21tZW50cyB3 aGljaCBhcmUgYWRkcmVzc2VkIGluIERJUCdzIHYxIHBhdGNoWzNdDQo+ID4gICAgUmVmYWN0b3Jp bmcgbXRrX2lzcF9jb25maWcgJiBtdGtfaXNwX3JlcV9lbnF1ZXVlIGZ1bmN0aW9ucw0KPiA+ICAt IG10a19jYW0tc2NwLmggLyBtdGtfY2FtLXNjcC5jDQo+ID4gICAgTW92ZSBmdW5jdGlvbiBkZWNs YXJhdGlvbnMgZnJvbSBtdGtfY2FtLmggdG8gbXRrX2NhbS1zY3AuaCAoRHJldyBEYXZlbnBvcnQp DQo+ID4gICAgRml4IHNvbWUgVG9tYXN6IGNvbW1lbnRzIHdoaWNoIGFyZSBhZGRyZXNzZWQgaW4g RElQJ3MgdjEgcGF0Y2hbM10NCj4gPiAgICBGaXggSVNQIGRlLWluaXRpYWxpemUgdGltaW5nIEtF IGlzc3VlDQo+ID4gIC0gbXRrX2NhbS1zbWVtLmggLyBtdGtfY2FtLXNtZW0tZGV2LmMNCj4gPiAg ICBHZXQgdGhlIHJlc2VydmVkIHNoYXJlZCBtZW1vcnkgdmlhIFNDUCBkcml2ZXIgKFRvbWFzeiBG aWdhKQ0KPiA+IA0KPiA+IFRvZG86DQo+ID4gIC0gQWRkIHJzdCBkb2N1bWVudHMgZm9yIE1lZGlh dGVrIG1ldGEgZm9ybWF0cw0KPiA+ICAtIE5ldyBtZXRhIGJ1ZmZlciBzdHJ1Y3R1cmUgZGVzaWdu ICYgcmUtZmFjdG9yaW5nDQo+ID4gDQo+ID4gdmVyc2lvbiAyOg0KPiA+ICAtIEFkZCAzQSBlbmhh bmNlbWVudCBmZWF0dXJlIHdoaWNoIGluY2x1ZGVzOg0KPiA+ICAgIFNlcGFyYXRlcyAzQSBwaXBl bGluZSBvdXQgb2YgZnJhbWUgYmFzaXMgdG8gaW1wcm92ZQ0KPiA+ICAgIEFFL0FXQiAoZXhwb3N1 cmUgYW5kIHdoaXRlIGJhbGFuY2UpIHBlcmZvcm1hbmNlLg0KPiA+ICAgIEFkZCAyIFNDUCBzdWIt Y29tbWFuZHMgZm9yIDNBIG1ldGEgYnVmZmVycy4NCj4gPiAgLSBBZGQgbmV3IGNoaWxkIGRldmlj ZSB0byBtYW5hZ2UgUDEgc2hhcmVkIG1lbW9yeSBiZXR3ZWVuIFAxIEhXIHVuaXQNCj4gPiAgICBh bmQgY28tcHJvY2Vzc29yLg0KPiA+ICAtIFJlbW92ZSBtZWRpYXRlayxjYW1fc21lbS50eHQgJiBj YW1fc21lbSBkdHMgbm9kZSBpbiBtdDgxODMuZHRzaS4NCj4gPiAgLSBSZXZpc2VkIGRvY3VtZW50 IHdvcmRpbmcgZm9yIGR0LWJpbmRpbmdzIGRvY3VtZW50cyAmIGR0cyBpbmZvcm1hdGlvbi4NCj4g PiAgLSBSZW1vdmUgbXRrX2NhbS1jdHguaCAmIG10a19jYW0tZGV2LWN0eC1jb3JlLmMgYW5kIG1v dmUgdGhlc2UNCj4gPiAgICBzb3VyY2UgY29kZXMgdG8gbXRrX2NhbS1kZXYuaCAmIG10a19jYW0t ZGV2LmMuDQo+ID4gIC0gbXRrX2NhbS1kZXYuaCAvIG10a19jYW0tZGV2LmMNCj4gPiAgICBSZXZp c2VkIG10a19jYW1fdmlkZW9fZGV2aWNlICYgbXRrX2NhbV9kZXYgdG8gcmVtb3ZlIHVudXNlZCBz dHJ1Y3R1cmUgZmllbGRzDQo+ID4gICAgb3IgYWRkIGNvbW1lbnRzLg0KPiA+ICAgIFJldmlzZWQg YnVmZmVyIHNpemUgZm9yIExNVk8gJiBMQ1NPLg0KPiA+ICAgIEZpeCBwaXhlbCBmb3JtYXQgdXRp bGl0eSBmdW5jdGlvbi4NCj4gPiAgICBBZGQgdmIyX2RtYV9jb250aWdfc2V0X21heF9zZWdfc2l6 ZSB0byBjb25maWd1cmUgRE1BIG1heCBzZWdtZW50IHNpemUuDQo+ID4gIC0gbXRrX2NhbS12NGwy LXV0aWwuYw0KPiA+ICAgIFJlZmFjdG9yaW5nIFY0TDIgYXN5bmMgbWVjaGFuaXNtIHdpdGggc2Vu aW5mIGRyaXZlciBvbmx5DQo+ID4gICAgUmVmYWN0b3JpbmcgQ0lPIChDb25uZWN0aW9uIElPKSBp bXBsZW1lbnRhdGlvbiB3aXRoIGFjdGl2ZSBzZW5zb3INCj4gPiAgICBSZXZpc2VkIHN0cmVhbSBv biBmdW5jdGlvbiBmb3IgM0EgZW5oYW5jZW1lbnQgZmVhdHVyZQ0KPiA+ICAgIEFkZCBuZXcgVjRM MiBlbi1xdWV1ZS9kZS1xdWV1ZSB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgM0EgZW5oYW5jZW1lbnQg ZmVhdHVyZQ0KPiA+ICAtIG10a19jYW0tcmVncy5oIC8gbXRrX2NhbS5oIC8gbXRrX2NhbS5jDQo+ ID4gICAgQWRkIG1ldGEgYnVmZmVyIGluZGV4IHJlZ2lzdGVyIGRlZmluaXRpb25zDQo+ID4gICAg QWRkIG1ldGEgRE1BIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24uDQo+ID4gICAgU2VwYXJhdGUgd2l0 aCBmcmFtZS1iYXNlIGFuZCBub24tZnJhbWUtYmFzZSBlbi1xdWV1ZS9kZS1xdWV1ZSBmdW5jdGlv bnMNCj4gPiAgICBBZGQgaXNwX3NldHVwX3NjcF9ycHJvYyBmdW5jdGlvbiB0byBnZXQgUlBDIGhh bmRsZQ0KPiA+ICAgIEFkZCBtdGtfY2FtX3Jlc2VydmVkX21lbW9yeV9pbml0IGZvciBzaGFyZWQg bWVtb3J5IG1hbmFnZW1lbnQNCj4gPiAgLSBtdGtfY2FtLXNjcC5oIC8gbXRrX2NhbS1zY3AuYw0K PiA+ICAgIEFkZCBuZXcgbWV0YSBzdHJpY3R1cmVzIGZvciAzQSBlbmhhbmNlbWVudCBmZWF0dXJl DQo+ID4gICAgQWRkIG5ldyBJUEkgY29tbWFuZCB1dGlsaXR5IGZ1bmN0aW9uIGZvciAzQSBlbmhh bmNlbWVudCBmZWF0dXJlDQo+ID4gICAgRW5oYW5jZSBpc3BfY29tcG9zZXJfZG1hX3NnX2luaXQg ZnVuY3Rpb24gZmxvdw0KPiA+ICAgIFNob3J0ZW4gb3ZlcmFsbCBJUEkgY29tbWFuZCBzdHJ1Y3R1 cmUgc2l6ZQ0KPiA+ICAgIFJlbW92ZSBzY3Bfc3RhdGUgc3RhdGUgY2hlY2tpbmcNCj4gPiAgICBJ bXByb3ZlIGNvZGUgcmVhZGFiaWxpdHkNCj4gPiAgLSBtdGtfY2FtLXNtZW0uaCAvIG10a19jYW0t c21lbS1kZXYuYw0KPiA+ICAgIEFkZCBtdGtfY2FtX2FsbG9jX3NtZW1fZGV2IHRvIGFsbG9jYXRl IG9uZSBuZXcgY2hpbGQgZGV2aWNlIG9mIElTUCBkcml2ZXIuDQo+ID4gICAgSGFuZGxpbmcgUDEg ZHJpdmVyICdzIHJlc2VydmVkIG1lbW9yeSAmIGFsbG9jYXRlIERNQSBidWZmZXJzIGJhc2VkIG9u IHRoaXMNCj4gPiAgICBtZW1vcnkgcmVnaW9uLg0KPiA+IA0KPiA+IFRPRE9zOg0KPiA+ICAtIDNB IGVuaGFuY2VtZW50IGZlYXR1cmUgYnVnIGZpeGluZw0KPiA+IA0KPiA+IHZlcnNpb24gMToNCj4g PiAgLSBSZXZpc2VkIGRyaXZlciBzb3VyY2VzIGJhc2VkIG9uIFRvbWFzeidzIGNvbW1lbnRzIGlu Y2x1ZGluZw0KPiA+ICAgIHBhcnQxLzIvMy80IGluIFJGQyBWMCBwYXRjaC4NCj4gPiAgLSBSZW1v dmUgRE1BIGNhY2hlIG1lY2hhbmlzbS4NCj4gPiAgICBTdXBwb3J0IHR3byBuZXcgdmlkZW8gZGV2 aWNlcyAoTENTTy9MTVZPKSBmb3IgYWR2YW5jZSBjYW1lcmENCj4gPiAgICBmZWF0dXJlcy4NCj4g PiAgLSBGaXhlZCB2NGwyLWNvbXBsaWFuY2UgdGVzdCBmYWlsdXJlIGl0ZW1zLg0KPiA+ICAtIEFk ZCBwcml2YXRlIGNvbnRyb2xzIGZvciBNZWRpYXRlayBjYW1lcmEgbWlkZGxlLXdhcmUuDQo+ID4g IC0gUmVwbGFjZSBWUFUgZHJpdmVyJ3MgQVBJcyB3aXRoIG5ldyBTQ1AgZHJpdmVyIGludGVyZmFj ZSBmb3INCj4gPiAgICBjby1wcm9jZXNzb3IgY29tbXVuaWNhdGlvbi4NCj4gPiAgLSBSZWZhY3Rv cmluZyBtdGtfY2FtX3NjcC5jIHRvIHVzZSByaW5nLWJ1ZmZlcnMgbWVjaGFuaXNtIGZvciBJUEkN Cj4gPiAgICBjb21tYW5kcyBSWCBoYW5kbGluZy4NCj4gPiAgLSBGaXggaW50ZXJuYWwgYnVncy4N Cj4gPiANCj4gPiBUT0RPczoNCj4gPiAgLSBSZW1vdmUgbXRrX2NhbV9zbWVtX2Rydi5jICYgbXRr X2NhbV9zbWVtLmggYW5kIGltcGxlbWVudCBETUEgcG9vbA0KPiA+ICAgIGZvciBzaGFyZWQgbWVt b3J5IG1hbmFnZW1lbnQuDQo+ID4gIC0gUmV2aXNlZCBmaWxlIG5hbWVzLg0KPiA+ICAtIFN1cHBv cnQgbm9uIGZyYW1lLXN5bmMgQUZPL0FBTyBETUEgYnVmZmVycw0KPiA+IA0KPiA+IHZlcnNpb24g MDoNCj4gPiAtIEluaXRpYWwgc3VibWlzc2lvbg0KPiA+IA0KPiA+ID09PT09PT09PT09PT09PT09 PQ0KPiA+ICBEZXBlbmRlbnQgcGF0Y2ggc2V0DQo+ID4gPT09PT09PT09PT09PT09PT09DQo+ID4g DQo+ID4gQ2FtZXJhIElTUCBQMSBkcml2ZXIgZGVwZW5kcyBvbiBzZW5pbmYgZHJpdmVyLCBTQ1Ag ZHJpdmVyLg0KPiA+IFRoZSBwYXRjaGVzIGFyZSBsaXN0ZWQgYXMgZm9sbG93aW5nOg0KPiA+IA0K PiA+IFsxXS4gbWVkaWE6IHN1cHBvcnQgTWVkaWF0ZWsgc2Vuc29yIGludGVyZmFjZSBkcml2ZXIN Cj4gPiBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL2NvdmVyLzExMTQ1ODQ1Lw0KPiA+IA0K PiA+IFsyXS4gbWVkaWE6IG92ODg1NjogQWRkIFlBTUwgYmluZGluZyBhbmQgc2Vuc29yIG1vZGUg c3VwcG9ydA0KPiA+IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvY292ZXIvMTEyMjA3ODUv DQo+ID4gDQo+ID4gWzNdLiBtZWRpYTogaTJjOiBBZGQgc3VwcG9ydCBmb3IgT1YwMkExMCBzZW5z b3INCj4gPiBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL2NvdmVyLzExMjg0Nzc5Lw0KPiA+ IA0KPiA+IFs0XS4gbWVkaWE6IGkyYzogYWRkIHN1cHBvcnQgZm9yIERXOTc2OCBWQ00gZHJpdmVy DQo+ID4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9jb3Zlci8xMTEzMjI5OS8NCj4gPiAN Cj4gPiBbNV0uIEFkZCBzdXBwb3J0IGZvciBtdDgxODMgU0NQDQo+ID4gaHR0cHM6Ly9wYXRjaHdv cmsua2VybmVsLm9yZy9jb3Zlci8xMTIzOTA2NS8NCj4gPiANCj4gPiBbNl0uIE1UODE4MyBJT01N VSBTVVBQT1JUDQo+ID4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9jb3Zlci8xMTExMjc2 NS8NCj4gPiANCj4gPiA9PT09PT09PT09PT09PT09PT0NCj4gPiAgQ29tcGxpYW5jZSB0ZXN0DQo+ ID4gPT09PT09PT09PT09PT09PT09DQo+ID4gDQo+ID4gVGhlIHY0bDItY29tcGxpYW5jZSBpcyBi dWlsdCB3aXRoIHRoZSBiZWxvdyBsYXN0ZXN0IHBhdGNoLg0KPiA+IGh0dHBzOi8vZ2l0LmxpbnV4 dHYub3JnL3Y0bC11dGlscy5naXQvY29tbWl0Lz9pZD1lOWE3NTkzZWM2YWU5ODcwNGVjYjM1ZWE2 NDk0OGQzNGMyM2E1MTU4DQo+ID4gDQo+ID4gTm90ZSAxLg0KPiA+IFRoaXMgdGVzdGluZyBkZXBl bmRzIG9uIHRoZSBhYm92ZSBzZW5pbmYsIHNlbnNvcnMgYW5kIGxlbiBwYXRjaGVzWzFdWzJdWzNd WzRdLg0KPiA+IA0KPiA+IE5vdGUgMi4NCj4gPiBGb3IgZmFpbGVkIHRlc3QgY3NhZXMgaW4gdmlk ZW8yfjgsIGl0IGlzIGNhdXNlZCBieSBuZXcgVjRMMiB0aW1lc3RhbXANCj4gPiBjYWxsZWQgVjRM Ml9CVUZfRkxBR19USU1FU1RBTVBfQk9PVElNRS4NCj4gPiANCj4gPiBOb3RlIDMuDQo+ID4gVGhl IGN1cnJlbnQgc29tZSBmYWlsdXJlIGl0ZW1zIGFyZSByZWxhdGVkIHRvIE1lZGlhdGVrIHNlbnNv cnMvbGVuIGRyaXZlciBbMl1bM11bM10NCj4gPiANCj4gPiAvdXNyL2Jpbi92NGwyLWNvbXBsaWFu Y2UgLW0gL2Rldi9tZWRpYTINCj4gPiANCj4gPiB2NGwyLWNvbXBsaWFuY2UgU0hBOiBub3QgYXZh aWxhYmxlLCAzMiBiaXRzDQo+ID4gDQo+ID4gQ29tcGxpYW5jZSB0ZXN0IGZvciBtdGstY2FtLXAx IGRldmljZSAvZGV2L21lZGlhMToNCj4gPiANCj4gPiBNZWRpYSBEcml2ZXIgSW5mbzoNCj4gPiAJ RHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCj4gPiAJTW9kZWwgICAgICAgICAgICA6IG10 ay1jYW0tcDENCj4gPiAJU2VyaWFsICAgICAgICAgICA6DQo+ID4gCUJ1cyBpbmZvICAgICAgICAg OiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCj4gPiAJTWVkaWEgdmVyc2lvbiAgICA6IDQuMTku NjcNCj4gPiAJSGFyZHdhcmUgcmV2aXNpb246IDB4MDAwMDAwMDAgKDApDQo+ID4gCURyaXZlciB2 ZXJzaW9uICAgOiA0LjE5LjY3DQo+ID4gDQo+ID4gUmVxdWlyZWQgaW9jdGxzOg0KPiA+IAl0ZXN0 IE1FRElBX0lPQ19ERVZJQ0VfSU5GTzogT0sNCj4gPiANCj4gPiBBbGxvdyBmb3IgbXVsdGlwbGUg b3BlbnM6DQo+ID4gCXRlc3Qgc2Vjb25kIC9kZXYvbWVkaWExIG9wZW46IE9LDQo+ID4gCXRlc3Qg TUVESUFfSU9DX0RFVklDRV9JTkZPOiBPSw0KPiA+IAl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6 IE9LDQo+ID4gDQo+ID4gTWVkaWEgQ29udHJvbGxlciBpb2N0bHM6DQo+ID4gCXRlc3QgTUVESUFf SU9DX0dfVE9QT0xPR1k6IE9LDQo+ID4gCUVudGl0aWVzOiAxMSBJbnRlcmZhY2VzOiAxMSBQYWRz OiAzMyBMaW5rczogMjENCj4gPiAJdGVzdCBNRURJQV9JT0NfRU5VTV9FTlRJVElFUy9MSU5LUzog T0sNCj4gPiAJdGVzdCBNRURJQV9JT0NfU0VUVVBfTElOSzogT0sNCj4gPiANCj4gPiBUb3RhbCBm b3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi9tZWRpYTE6IDcsIFN1Y2NlZWRlZDogNywgRmFpbGVk OiAwLCBXYXJuaW5nczogMA0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gQ29tcGxp YW5jZSB0ZXN0IGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2L3ZpZGVvMjU6DQo+ID4gDQo+ID4g RHJpdmVyIEluZm86DQo+ID4gCURyaXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCUNh cmQgdHlwZSAgICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCUJ1cyBpbmZvICAgICAgICAgOiBwbGF0 Zm9ybToxYTAwMDAwMC5jYW1pc3ANCj4gPiAJRHJpdmVyIHZlcnNpb24gICA6IDQuMTkuNjcNCj4g PiAJQ2FwYWJpbGl0aWVzICAgICA6IDB4OGMyMDAwMDANCj4gPiAJCVN0cmVhbWluZw0KPiA+IAkJ RXh0ZW5kZWQgUGl4IEZvcm1hdA0KPiA+IAkJRGV2aWNlIENhcGFiaWxpdGllcw0KPiA+IAlEZXZp Y2UgQ2FwcyAgICAgIDogMHgwYzIwMDAwMA0KPiA+IAkJU3RyZWFtaW5nDQo+ID4gCQlFeHRlbmRl ZCBQaXggRm9ybWF0DQo+ID4gTWVkaWEgRHJpdmVyIEluZm86DQo+ID4gCURyaXZlciBuYW1lICAg ICAgOiBtdGstY2FtLXAxDQo+ID4gCU1vZGVsICAgICAgICAgICAgOiBtdGstY2FtLXAxDQo+ID4g CVNlcmlhbCAgICAgICAgICAgOiANCj4gPiAJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFh MDAwMDAwLmNhbWlzcA0KPiA+IAlNZWRpYSB2ZXJzaW9uICAgIDogNC4xOS42Nw0KPiA+IAlIYXJk d2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCj4gPiAJRHJpdmVyIHZlcnNpb24gICA6IDQu MTkuNjcNCj4gPiBJbnRlcmZhY2UgSW5mbzoNCj4gPiAJSUQgICAgICAgICAgICAgICA6IDB4MDMw MDAwMTANCj4gPiAJVHlwZSAgICAgICAgICAgICA6IFY0TCBWaWRlbw0KPiA+IEVudGl0eSBJbmZv Og0KPiA+IAlJRCAgICAgICAgICAgICAgIDogMHgwMDAwMDAwZSAoMTQpDQo+ID4gCU5hbWUgICAg ICAgICAgICAgOiBtdGstY2FtLXAxIG1ldGEgaW5wdXQNCj4gPiAJRnVuY3Rpb24gICAgICAgICA6 IFY0TDIgSS9PDQo+ID4gCVBhZCAweDAxMDAwMDBmICAgOiAwOiBTb3VyY2UNCj4gPiAJICBMaW5r IDB4MDIwMDAwMTI6IHRvIHJlbW90ZSBwYWQgMHgxMDAwMDAyIG9mIGVudGl0eSAnbXRrLWNhbS1w MSc6IERhdGENCj4gPiANCj4gPiBSZXF1aXJlZCBpb2N0bHM6DQo+ID4gCXRlc3QgTUMgaW5mb3Jt YXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIEluZm8nIGFib3ZlKTogT0sNCj4gPiAJdGVzdCBWSURJ T0NfUVVFUllDQVA6IE9LDQo+ID4gDQo+ID4gQWxsb3cgZm9yIG11bHRpcGxlIG9wZW5zOg0KPiA+ IAl0ZXN0IHNlY29uZCAvZGV2L3ZpZGVvMjUgb3BlbjogT0sNCj4gPiAJdGVzdCBWSURJT0NfUVVF UllDQVA6IE9LDQo+ID4gCXRlc3QgVklESU9DX0cvU19QUklPUklUWTogT0sNCj4gPiAJdGVzdCBm b3IgdW5saW1pdGVkIG9wZW5zOiBPSw0KPiA+IA0KPiA+IERlYnVnIGlvY3RsczoNCj4gPiAJdGVz dCBWSURJT0NfREJHX0cvU19SRUdJU1RFUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DX0xPR19TVEFUVVM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IElucHV0IGlv Y3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzogT0sgKE5v dCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAlJbnB1dHM6IDAgQXVk aW8gSW5wdXRzOiAwIFR1bmVyczogMA0KPiA+IA0KPiA+IE91dHB1dCBpb2N0bHM6DQo+ID4gCXRl c3QgVklESU9DX0cvU19NT0RVTEFUT1I6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJ RElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0Nf RU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvUy9FTlVN T1VUUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0FVRE9VVDog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCU91dHB1dHM6IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1 bGF0b3JzOiAwDQo+ID4gDQo+ID4gSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9jdGxzOg0K PiA+IAl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0K PiA+IAl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9USU1JTkdTOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ ID4gQ29udHJvbCBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZ TUVOVTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1FVRVJZQ1RSTDogT0sg KE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19DVFJMOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5UL0RRRVZFTlQ6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfSlBFR0NPTVA6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAlTdGFuZGFyZCBDb250cm9sczogMCBQcml2YXRlIENvbnRyb2xzOiAwDQo+ ID4gDQo+ID4gRm9ybWF0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVT SVpFUy9GUkFNRUlOVEVSVkFMUzogT0sNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZNVDogT0sNCj4gPiAJdGVzdCBWSURJT0NfVFJZX0ZNVDog T0sNCj4gPiAJdGVzdCBWSURJT0NfU19GTVQ6IE9LDQo+ID4gCXRlc3QgVklESU9DX0dfU0xJQ0VE X1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IENyb3BwaW5nOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBDb21wb3NpdjRsMi1jb21wbGlhbmNlIFNIQTogbm90IGF2 YWlsYWJsZSwgMzIgYml0cw0KPiA+IA0KPiA+IENvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLWNhbS1w MSBkZXZpY2UgL2Rldi9tZWRpYTI6DQo+ID4gDQo+ID4gTWVkaWEgRHJpdmVyIEluZm86DQo+ID4g CURyaXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCU1vZGVsICAgICAgICAgICAgOiBt dGstY2FtLXAxDQo+ID4gCVNlcmlhbCAgICAgICAgICAgOiANCj4gPiAJQnVzIGluZm8gICAgICAg ICA6IHBsYXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0KPiA+IAlNZWRpYSB2ZXJzaW9uICAgIDogNC4x OS44OQ0KPiA+IAlIYXJkd2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCj4gPiAJRHJpdmVy IHZlcnNpb24gICA6IDQuMTkuODkNCj4gPiANCj4gPiBSZXF1aXJlZCBpb2N0bHM6DQo+ID4gCXRl c3QgTUVESUFfSU9DX0RFVklDRV9JTkZPOiBPSw0KPiA+IA0KPiA+IEFsbG93IGZvciBtdWx0aXBs ZSBvcGVuczoNCj4gPiAJdGVzdCBzZWNvbmQgL2Rldi9tZWRpYTIgb3BlbjogT0sNCj4gPiAJdGVz dCBNRURJQV9JT0NfREVWSUNFX0lORk86IE9LDQo+ID4gCXRlc3QgZm9yIHVubGltaXRlZCBvcGVu czogT0sNCj4gPiANCj4gPiBNZWRpYSBDb250cm9sbGVyIGlvY3RsczoNCj4gPiAJdGVzdCBNRURJ QV9JT0NfR19UT1BPTE9HWTogT0sNCj4gPiAJRW50aXRpZXM6IDEyIEludGVyZmFjZXM6IDEyIFBh ZHM6IDMzIExpbmtzOiAyMg0KPiA+IAl0ZXN0IE1FRElBX0lPQ19FTlVNX0VOVElUSUVTL0xJTktT OiBPSw0KPiA+IAl0ZXN0IE1FRElBX0lPQ19TRVRVUF9MSU5LOiBPSw0KPiA+IA0KPiA+IFRvdGFs IGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2L21lZGlhMjogNywgU3VjY2VlZGVkOiA3LCBGYWls ZWQ6IDAsIFdhcm5pbmdzOiAwDQo+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiBDb21w bGlhbmNlIHRlc3QgZm9yIG10ay1jYW0tcDEgZGV2aWNlIC9kZXYvdmlkZW8yOg0KPiA+IA0KPiA+ IERyaXZlciBJbmZvOg0KPiA+IAlEcml2ZXIgbmFtZSAgICAgIDogbXRrLWNhbS1wMQ0KPiA+IAlD YXJkIHR5cGUgICAgICAgIDogbXRrLWNhbS1wMQ0KPiA+IAlCdXMgaW5mbyAgICAgICAgIDogcGxh dGZvcm06MWEwMDAwMDAuY2FtaXNwDQo+ID4gCURyaXZlciB2ZXJzaW9uICAgOiA0LjE5Ljg5DQo+ ID4gCUNhcGFiaWxpdGllcyAgICAgOiAweDhjMjAwMDAwDQo+ID4gCQlNZXRhZGF0YSBPdXRwdXQN Cj4gPiAJCVN0cmVhbWluZw0KPiA+IAkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0KPiA+IAkJRGV2aWNl IENhcGFiaWxpdGllcw0KPiA+IAlEZXZpY2UgQ2FwcyAgICAgIDogMHgwYzIwMDAwMA0KPiA+IAkJ TWV0YWRhdGEgT3V0cHV0DQo+ID4gCQlTdHJlYW1pbmcNCj4gPiAJCUV4dGVuZGVkIFBpeCBGb3Jt YXQNCj4gPiBNZWRpYSBEcml2ZXIgSW5mbzoNCj4gPiAJRHJpdmVyIG5hbWUgICAgICA6IG10ay1j YW0tcDENCj4gPiAJTW9kZWwgICAgICAgICAgICA6IG10ay1jYW0tcDENCj4gPiAJU2VyaWFsICAg ICAgICAgICA6IA0KPiA+IAlCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWEwMDAwMDAuY2Ft aXNwDQo+ID4gCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQo+ID4gCUhhcmR3YXJlIHJldmlz aW9uOiAweDAwMDAwMDAwICgwKQ0KPiA+IAlEcml2ZXIgdmVyc2lvbiAgIDogNC4xOS44OQ0KPiA+ IEludGVyZmFjZSBJbmZvOg0KPiA+IAlJRCAgICAgICAgICAgICAgIDogMHgwMzAwMDAxMA0KPiA+ IAlUeXBlICAgICAgICAgICAgIDogVjRMIFZpZGVvDQo+ID4gRW50aXR5IEluZm86DQo+ID4gCUlE ICAgICAgICAgICAgICAgOiAweDAwMDAwMDBlICgxNCkNCj4gPiAJTmFtZSAgICAgICAgICAgICA6 IG10ay1jYW0tcDEgbWV0YSBpbnB1dA0KPiA+IAlGdW5jdGlvbiAgICAgICAgIDogVjRMMiBJL08N Cj4gPiAJUGFkIDB4MDEwMDAwMGYgICA6IDA6IFNvdXJjZQ0KPiA+IAkgIExpbmsgMHgwMjAwMDAx MjogdG8gcmVtb3RlIHBhZCAweDEwMDAwMDIgb2YgZW50aXR5ICdtdGstY2FtLXAxJzogRGF0YQ0K PiA+IA0KPiA+IFJlcXVpcmVkIGlvY3RsczoNCj4gPiAJdGVzdCBNQyBpbmZvcm1hdGlvbiAoc2Vl ICdNZWRpYSBEcml2ZXIgSW5mbycgYWJvdmUpOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19RVUVSWUNB UDogT0sNCj4gPiANCj4gPiBBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6DQo+ID4gCXRlc3Qgc2Vj b25kIC9kZXYvdmlkZW8yIG9wZW46IE9LDQo+ID4gCXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSw0K PiA+IAl0ZXN0IFZJRElPQ19HL1NfUFJJT1JJVFk6IE9LDQo+ID4gCXRlc3QgZm9yIHVubGltaXRl ZCBvcGVuczogT0sNCj4gPiANCj4gPiBEZWJ1ZyBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX0RC R19HL1NfUkVHSVNURVI6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19MT0df U1RBVFVTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBJbnB1dCBpb2N0bHM6DQo+ID4g CXRlc3QgVklESU9DX0cvU19UVU5FUi9FTlVNX0ZSRVFfQkFORFM6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiAJdGVzdCBWSURJT0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IFZJRElPQ19FTlVNQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElP Q19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9T X0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJSW5wdXRzOiAwIEF1ZGlvIElucHV0czog MCBUdW5lcnM6IDANCj4gPiANCj4gPiBPdXRwdXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19H L1NfTU9EVUxBVE9SOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0ZS RVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1MvRU5VTU9VVFBVVDogT0sg KE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAlPdXRwdXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMA0K PiA+IA0KPiA+IElucHV0L091dHB1dCBjb25maWd1cmF0aW9uIGlvY3RsczoNCj4gPiAJdGVzdCBW SURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBW SURJT0NfRU5VTS9HL1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBWSURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IENvbnRyb2wg aW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19RVUVSWV9FWFRfQ1RSTC9RVUVSWU1FTlU6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NUUkxTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJ dGVzdCBWSURJT0NfKFVOKVNVQlNDUklCRV9FVkVOVC9EUUVWRU5UOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0pQRUdDT01QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiAJU3RhbmRhcmQgQ29udHJvbHM6IDAgUHJpdmF0ZSBDb250cm9sczogMA0KPiA+IA0KPiA+IEZv cm1hdCBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0laRVMvRlJBTUVJ TlRFUlZBTFM6IE9LDQo+ID4gCXRlc3QgVklESU9DX0cvU19QQVJNOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBWSURJT0NfR19GTVQ6IE9LDQo+ID4gCXRlc3QgVklESU9DX1RSWV9GTVQ6IE9LDQo+ID4gCXRl c3QgVklESU9DX1NfRk1UOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBDcm9wcGluZzogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgQ29tcG9zaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBTY2Fs aW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBDb2RlYyBpb2N0bHM6DQo+ID4gCXRl c3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElP Q18oVFJZXylERUNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQnVmZmVy IGlvY3RsczoNCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgzNzApOiB0aW1lc3Rh bXAgIT0gVjRMMl9CVUZfRkxBR19USU1FU1RBTVBfTU9OT1RPTklDICYmIHRpbWVzdGFtcCAhPSBW NEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9DT1BZDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVy cy5jcHAoNDg2KTogYnVmLmNoZWNrKFVucXVldWVkLCBpKQ0KPiA+IAkJZmFpbDogdjRsMi10ZXN0 LWJ1ZmZlcnMuY3BwKDYxNSk6IHRlc3RRdWVyeUJ1Zihub2RlLCBpLCBxLmdfYnVmZmVycygpKQ0K PiA+IAl0ZXN0IFZJRElPQ19SRVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBGQUlMDQo+ID4g CQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ3KTogVklESU9DX0VYUEJVRiBpcyBzdXBw b3J0ZWQsIGJ1dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3Npbmcgb3IgbWFs ZnVuY3Rpb25pbmcuDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ4KTogVklE SU9DX0VYUEJVRiBpcyBzdXBwb3J0ZWQsIGJ1dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0 IGlzIG1pc3NpbmcsIHByb2JhYmx5IGR1ZSB0byBlYXJsaWVyIGZhaWxpbmcgZm9ybWF0IHRlc3Rz Lg0KPiA+IAl0ZXN0IFZJRElPQ19FWFBCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IFJlcXVlc3RzOiBPSw0KPiA+IA0KPiA+IFRvdGFsIGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2 L3ZpZGVvMjogNDUsIFN1Y2NlZWRlZDogNDQsIEZhaWxlZDogMSwgV2FybmluZ3M6IDANCj4gPiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IENvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLWNhbS1w MSBkZXZpY2UgL2Rldi92aWRlbzM6DQo+ID4gDQo+ID4gRHJpdmVyIEluZm86DQo+ID4gCURyaXZl ciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCUNhcmQgdHlwZSAgICAgICAgOiBtdGstY2Ft LXAxDQo+ID4gCUJ1cyBpbmZvICAgICAgICAgOiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCj4g PiAJRHJpdmVyIHZlcnNpb24gICA6IDQuMTkuODkNCj4gPiAJQ2FwYWJpbGl0aWVzICAgICA6IDB4 ODQyMDEwMDANCj4gPiAJCVZpZGVvIENhcHR1cmUgTXVsdGlwbGFuYXINCj4gPiAJCVN0cmVhbWlu Zw0KPiA+IAkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0KPiA+IAkJRGV2aWNlIENhcGFiaWxpdGllcw0K PiA+IAlEZXZpY2UgQ2FwcyAgICAgIDogMHgwNDIwMTAwMA0KPiA+IAkJVmlkZW8gQ2FwdHVyZSBN dWx0aXBsYW5hcg0KPiA+IAkJU3RyZWFtaW5nDQo+ID4gCQlFeHRlbmRlZCBQaXggRm9ybWF0DQo+ ID4gTWVkaWEgRHJpdmVyIEluZm86DQo+ID4gCURyaXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAx DQo+ID4gCU1vZGVsICAgICAgICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCVNlcmlhbCAgICAgICAg ICAgOiANCj4gPiAJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0K PiA+IAlNZWRpYSB2ZXJzaW9uICAgIDogNC4xOS44OQ0KPiA+IAlIYXJkd2FyZSByZXZpc2lvbjog MHgwMDAwMDAwMCAoMCkNCj4gPiAJRHJpdmVyIHZlcnNpb24gICA6IDQuMTkuODkNCj4gPiBJbnRl cmZhY2UgSW5mbzoNCj4gPiAJSUQgICAgICAgICAgICAgICA6IDB4MDMwMDAwMTYNCj4gPiAJVHlw ZSAgICAgICAgICAgICA6IFY0TCBWaWRlbw0KPiA+IEVudGl0eSBJbmZvOg0KPiA+IAlJRCAgICAg ICAgICAgICAgIDogMHgwMDAwMDAxNCAoMjApDQo+ID4gCU5hbWUgICAgICAgICAgICAgOiBtdGst Y2FtLXAxIG1haW4gc3RyZWFtDQo+ID4gCUZ1bmN0aW9uICAgICAgICAgOiBWNEwyIEkvTw0KPiA+ IAlQYWQgMHgwMTAwMDAxNSAgIDogMDogU2luaw0KPiA+IAkgIExpbmsgMHgwMjAwMDAxODogZnJv bSByZW1vdGUgcGFkIDB4MTAwMDAwMyBvZiBlbnRpdHkgJ210ay1jYW0tcDEnOiBEYXRhLCBFbmFi bGVkLCBJbW11dGFibGUNCj4gPiANCj4gPiBSZXF1aXJlZCBpb2N0bHM6DQo+ID4gCXRlc3QgTUMg aW5mb3JtYXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIEluZm8nIGFib3ZlKTogT0sNCj4gPiAJdGVz dCBWSURJT0NfUVVFUllDQVA6IE9LDQo+ID4gDQo+ID4gQWxsb3cgZm9yIG11bHRpcGxlIG9wZW5z Og0KPiA+IAl0ZXN0IHNlY29uZCAvZGV2L3ZpZGVvMyBvcGVuOiBPSw0KPiA+IAl0ZXN0IFZJRElP Q19RVUVSWUNBUDogT0sNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSw0KPiA+IAl0 ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LDQo+ID4gDQo+ID4gRGVidWcgaW9jdGxzOg0KPiA+ IAl0ZXN0IFZJRElPQ19EQkdfRy9TX1JFR0lTVEVSOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJ dGVzdCBWSURJT0NfTE9HX1NUQVRVUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gSW5w dXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5v dCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1 cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiAJdGVzdCBWSURJT0NfRy9TL0VOVU1JTlBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX0cvU19BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCUlucHV0czog MCBBdWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwDQo+ID4gDQo+ID4gT3V0cHV0IGlvY3RsczoNCj4g PiAJdGVzdCBWSURJT0NfRy9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRl c3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJ RElPQ19FTlVNQVVET1VUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9T L0VOVU1PVVRQVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQVVE T1VUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJT3V0cHV0czogMCBBdWRpbyBPdXRwdXRzOiAw IE1vZHVsYXRvcnM6IDANCj4gPiANCj4gPiBJbnB1dC9PdXRwdXQgY29uZmlndXJhdGlvbiBpb2N0 bHM6DQo+ID4gCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19EVl9USU1JTkdTX0NBUDogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19FRElEOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiANCj4gPiBDb250cm9sIGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllfRVhUX0NUUkwv UVVFUllNRU5VOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllDVFJM OiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0NUUkw6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1MvVFJZX0VYVF9DVFJMUzogT0sgKE5vdCBT dXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DXyhVTilTVUJTQ1JJQkVfRVZFTlQvRFFFVkVOVDog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5v dCBTdXBwb3J0ZWQpDQo+ID4gCVN0YW5kYXJkIENvbnRyb2xzOiAwIFByaXZhdGUgQ29udHJvbHM6 IDANCj4gPiANCj4gPiBGb3JtYXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNX0ZNVC9G UkFNRVNJWkVTL0ZSQU1FSU5URVJWQUxTOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfUEFSTTog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0dfRk1UOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19UUllf Rk1UOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19TX0ZNVDogT0sNCj4gPiAJdGVzdCBWSURJT0NfR19T TElDRURfVkJJX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQ3JvcHBpbmc6IE9L IChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgU2NhbGluZzogT0sNCj4gPiANCj4gPiBDb2RlYyBpb2N0bHM6DQo+ID4gCXRl c3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElP Q18oVFJZXylERUNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQnVmZmVy IGlvY3RsczoNCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCgzNzApOiB0aW1lc3Rh bXAgIT0gVjRMMl9CVUZfRkxBR19USU1FU1RBTVBfTU9OT1RPTklDICYmIHRpbWVzdGFtcCAhPSBW NEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9DT1BZDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVy cy5jcHAoNDg2KTogYnVmLmNoZWNrKFVucXVldWVkLCBpKQ0KPiA+IAkJZmFpbDogdjRsMi10ZXN0 LWJ1ZmZlcnMuY3BwKDYxNSk6IHRlc3RRdWVyeUJ1Zihub2RlLCBpLCBxLmdfYnVmZmVycygpKQ0K PiA+IAl0ZXN0IFZJRElPQ19SRVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBGQUlMDQo+ID4g CQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ3KTogVklESU9DX0VYUEJVRiBpcyBzdXBw b3J0ZWQsIGJ1dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3Npbmcgb3IgbWFs ZnVuY3Rpb25pbmcuDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ4KTogVklE SU9DX0VYUEJVRiBpcyBzdXBwb3J0ZWQsIGJ1dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0 IGlzIG1pc3NpbmcsIHByb2JhYmx5IGR1ZSB0byBlYXJsaWVyIGZhaWxpbmcgZm9ybWF0IHRlc3Rz Lg0KPiA+IAl0ZXN0IFZJRElPQ19FWFBCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IFJlcXVlc3RzOiBPSw0KPiA+IA0KPiA+IFRvdGFsIGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2 L3ZpZGVvMzogNDUsIFN1Y2NlZWRlZDogNDQsIEZhaWxlZDogMSwgV2FybmluZ3M6IDANCj4gPiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IENvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLWNhbS1w MSBkZXZpY2UgL2Rldi92aWRlbzQ6DQo+ID4gDQo+ID4gRHJpdmVyIEluZm86DQo+ID4gCURyaXZl ciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCUNhcmQgdHlwZSAgICAgICAgOiBtdGstY2Ft LXAxDQo+ID4gCUJ1cyBpbmZvICAgICAgICAgOiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCj4g PiAJRHJpdmVyIHZlcnNpb24gICA6IDQuMTkuODkNCj4gPiAJQ2FwYWJpbGl0aWVzICAgICA6IDB4 ODQyMDEwMDANCj4gPiAJCVZpZGVvIENhcHR1cmUgTXVsdGlwbGFuYXINCj4gPiAJCVN0cmVhbWlu Zw0KPiA+IAkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0KPiA+IAkJRGV2aWNlIENhcGFiaWxpdGllcw0K PiA+IAlEZXZpY2UgQ2FwcyAgICAgIDogMHgwNDIwMTAwMA0KPiA+IAkJVmlkZW8gQ2FwdHVyZSBN dWx0aXBsYW5hcg0KPiA+IAkJU3RyZWFtaW5nDQo+ID4gCQlFeHRlbmRlZCBQaXggRm9ybWF0DQo+ ID4gTWVkaWEgRHJpdmVyIEluZm86DQo+ID4gCURyaXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAx DQo+ID4gCU1vZGVsICAgICAgICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCVNlcmlhbCAgICAgICAg ICAgOiANCj4gPiAJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0K PiA+IAlNZWRpYSB2ZXJzaW9uICAgIDogNC4xOS44OQ0KPiA+IAlIYXJkd2FyZSByZXZpc2lvbjog MHgwMDAwMDAwMCAoMCkNCj4gPiAJRHJpdmVyIHZlcnNpb24gICA6IDQuMTkuODkNCj4gPiBJbnRl cmZhY2UgSW5mbzoNCj4gPiAJSUQgICAgICAgICAgICAgICA6IDB4MDMwMDAwMWMNCj4gPiAJVHlw ZSAgICAgICAgICAgICA6IFY0TCBWaWRlbw0KPiA+IEVudGl0eSBJbmZvOg0KPiA+IAlJRCAgICAg ICAgICAgICAgIDogMHgwMDAwMDAxYSAoMjYpDQo+ID4gCU5hbWUgICAgICAgICAgICAgOiBtdGst Y2FtLXAxIHBhY2tlZCBvdXQNCj4gPiAJRnVuY3Rpb24gICAgICAgICA6IFY0TDIgSS9PDQo+ID4g CVBhZCAweDAxMDAwMDFiICAgOiAwOiBTaW5rDQo+ID4gCSAgTGluayAweDAyMDAwMDFlOiBmcm9t IHJlbW90ZSBwYWQgMHgxMDAwMDA0IG9mIGVudGl0eSAnbXRrLWNhbS1wMSc6IERhdGENCj4gPiAN Cj4gPiBSZXF1aXJlZCBpb2N0bHM6DQo+ID4gCXRlc3QgTUMgaW5mb3JtYXRpb24gKHNlZSAnTWVk aWEgRHJpdmVyIEluZm8nIGFib3ZlKTogT0sNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllDQVA6IE9L DQo+ID4gDQo+ID4gQWxsb3cgZm9yIG11bHRpcGxlIG9wZW5zOg0KPiA+IAl0ZXN0IHNlY29uZCAv ZGV2L3ZpZGVvNCBvcGVuOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19RVUVSWUNBUDogT0sNCj4gPiAJ dGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSw0KPiA+IAl0ZXN0IGZvciB1bmxpbWl0ZWQgb3Bl bnM6IE9LDQo+ID4gDQo+ID4gRGVidWcgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19EQkdfRy9T X1JFR0lTVEVSOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfTE9HX1NUQVRV UzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gSW5wdXQgaW9jdGxzOg0KPiA+IAl0ZXN0 IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiAJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRl c3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBW SURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9T L0VOVU1JTlBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19BVURJ TzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCUlucHV0czogMCBBdWRpbyBJbnB1dHM6IDAgVHVu ZXJzOiAwDQo+ID4gDQo+ID4gT3V0cHV0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRy9TX01P RFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19GUkVRVUVO Q1k6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNQVVET1VUOiBPSyAo Tm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQVVET1VUOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJT3V0cHV0czogMCBBdWRpbyBPdXRwdXRzOiAwIE1vZHVsYXRvcnM6IDANCj4gPiAN Cj4gPiBJbnB1dC9PdXRwdXQgY29uZmlndXJhdGlvbiBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9D X0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9D X0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IFZJRElPQ19EVl9USU1JTkdTX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklE SU9DX0cvU19FRElEOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBDb250cm9sIGlvY3Rs czoNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllfRVhUX0NUUkwvUVVFUllNRU5VOiBPSyAoTm90IFN1 cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiAJdGVzdCBWSURJT0NfRy9TX0NUUkw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IFZJRElPQ19HL1MvVFJZX0VYVF9DVFJMUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DXyhVTilTVUJTQ1JJQkVfRVZFTlQvRFFFVkVOVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCVN0 YW5kYXJkIENvbnRyb2xzOiAwIFByaXZhdGUgQ29udHJvbHM6IDANCj4gPiANCj4gPiBGb3JtYXQg aW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZSQU1FSU5URVJW QUxTOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfUEFSTTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklE SU9DX0dfRk1UOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19UUllfRk1UOiBPSw0KPiA+IAl0ZXN0IFZJ RElPQ19TX0ZNVDogT0sNCj4gPiAJdGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sgKE5v dCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgU2NhbGluZzog T0sNCj4gPiANCj4gPiBDb2RlYyBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DXyhUUllfKUVOQ09E RVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ18oVFJZXylERUNPREVSX0NNRDog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQnVmZmVyIGlvY3RsczoNCj4gPiAJCWZhaWw6 IHY0bDItdGVzdC1idWZmZXJzLmNwcCgzNzApOiB0aW1lc3RhbXAgIT0gVjRMMl9CVUZfRkxBR19U SU1FU1RBTVBfTU9OT1RPTklDICYmIHRpbWVzdGFtcCAhPSBWNEwyX0JVRl9GTEFHX1RJTUVTVEFN UF9DT1BZDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNDg2KTogYnVmLmNoZWNr KFVucXVldWVkLCBpKQ0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDYxNSk6IHRl c3RRdWVyeUJ1Zihub2RlLCBpLCBxLmdfYnVmZmVycygpKQ0KPiA+IAl0ZXN0IFZJRElPQ19SRVFC VUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBGQUlMDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVm ZmVycy5jcHAoNzQ3KTogVklESU9DX0VYUEJVRiBpcyBzdXBwb3J0ZWQsIGJ1dCB0aGUgVjRMMl9N RU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3Npbmcgb3IgbWFsZnVuY3Rpb25pbmcuDQo+ID4gCQlm YWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ4KTogVklESU9DX0VYUEJVRiBpcyBzdXBwb3J0 ZWQsIGJ1dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3NpbmcsIHByb2JhYmx5 IGR1ZSB0byBlYXJsaWVyIGZhaWxpbmcgZm9ybWF0IHRlc3RzLg0KPiA+IAl0ZXN0IFZJRElPQ19F WFBCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFJlcXVlc3RzOiBPSw0KPiA+IA0K PiA+IFRvdGFsIGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2L3ZpZGVvNDogNDUsIFN1Y2NlZWRl ZDogNDQsIEZhaWxlZDogMSwgV2FybmluZ3M6IDANCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiA+IENvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92aWRlbzU6 DQo+ID4gDQo+ID4gRHJpdmVyIEluZm86DQo+ID4gCURyaXZlciBuYW1lICAgICAgOiBtdGstY2Ft LXAxDQo+ID4gCUNhcmQgdHlwZSAgICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCUJ1cyBpbmZvICAg ICAgICAgOiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCj4gPiAJRHJpdmVyIHZlcnNpb24gICA6 IDQuMTkuODkNCj4gPiAJQ2FwYWJpbGl0aWVzICAgICA6IDB4ODRhMDAwMDANCj4gPiAJCU1ldGFk YXRhIENhcHR1cmUNCj4gPiAJCVN0cmVhbWluZw0KPiA+IAkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0K PiA+IAkJRGV2aWNlIENhcGFiaWxpdGllcw0KPiA+IAlEZXZpY2UgQ2FwcyAgICAgIDogMHgwNGEw MDAwMA0KPiA+IAkJTWV0YWRhdGEgQ2FwdHVyZQ0KPiA+IAkJU3RyZWFtaW5nDQo+ID4gCQlFeHRl bmRlZCBQaXggRm9ybWF0DQo+ID4gTWVkaWEgRHJpdmVyIEluZm86DQo+ID4gCURyaXZlciBuYW1l ICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCU1vZGVsICAgICAgICAgICAgOiBtdGstY2FtLXAxDQo+ ID4gCVNlcmlhbCAgICAgICAgICAgOiANCj4gPiAJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3Jt OjFhMDAwMDAwLmNhbWlzcA0KPiA+IAlNZWRpYSB2ZXJzaW9uICAgIDogNC4xOS44OQ0KPiA+IAlI YXJkd2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCj4gPiAJRHJpdmVyIHZlcnNpb24gICA6 IDQuMTkuODkNCj4gPiBJbnRlcmZhY2UgSW5mbzoNCj4gPiAJSUQgICAgICAgICAgICAgICA6IDB4 MDMwMDAwMjINCj4gPiAJVHlwZSAgICAgICAgICAgICA6IFY0TCBWaWRlbw0KPiA+IEVudGl0eSBJ bmZvOg0KPiA+IAlJRCAgICAgICAgICAgICAgIDogMHgwMDAwMDAyMCAoMzIpDQo+ID4gCU5hbWUg ICAgICAgICAgICAgOiBtdGstY2FtLXAxIHBhcnRpYWwgbWV0YSAwDQo+ID4gCUZ1bmN0aW9uICAg ICAgICAgOiBWNEwyIEkvTw0KPiA+IAlQYWQgMHgwMTAwMDAyMSAgIDogMDogU2luaw0KPiA+IAkg IExpbmsgMHgwMjAwMDAyNDogZnJvbSByZW1vdGUgcGFkIDB4MTAwMDAwNSBvZiBlbnRpdHkgJ210 ay1jYW0tcDEnOiBEYXRhDQo+ID4gDQo+ID4gUmVxdWlyZWQgaW9jdGxzOg0KPiA+IAl0ZXN0IE1D IGluZm9ybWF0aW9uIChzZWUgJ01lZGlhIERyaXZlciBJbmZvJyBhYm92ZSk6IE9LDQo+ID4gCXRl c3QgVklESU9DX1FVRVJZQ0FQOiBPSw0KPiA+IA0KPiA+IEFsbG93IGZvciBtdWx0aXBsZSBvcGVu czoNCj4gPiAJdGVzdCBzZWNvbmQgL2Rldi92aWRlbzUgb3BlbjogT0sNCj4gPiAJdGVzdCBWSURJ T0NfUVVFUllDQVA6IE9LDQo+ID4gCXRlc3QgVklESU9DX0cvU19QUklPUklUWTogT0sNCj4gPiAJ dGVzdCBmb3IgdW5saW1pdGVkIG9wZW5zOiBPSw0KPiA+IA0KPiA+IERlYnVnIGlvY3RsczoNCj4g PiAJdGVzdCBWSURJT0NfREJHX0cvU19SRUdJU1RFUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IElu cHV0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBT dXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgVklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAlJbnB1dHM6 IDAgQXVkaW8gSW5wdXRzOiAwIFR1bmVyczogMA0KPiA+IA0KPiA+IE91dHB1dCBpb2N0bHM6DQo+ ID4gCXRlc3QgVklESU9DX0cvU19NT0RVTEFUT1I6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBW SURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cv Uy9FTlVNT1VUUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0FV RE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCU91dHB1dHM6IDAgQXVkaW8gT3V0cHV0czog MCBNb2R1bGF0b3JzOiAwDQo+ID4gDQo+ID4gSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9j dGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9USU1JTkdTOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gDQo+ID4gQ29udHJvbCBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJM L1FVRVJZTUVOVTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1FVRVJZQ1RS TDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19DVFJMOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5UL0RRRVZFTlQ6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfSlBFR0NPTVA6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAlTdGFuZGFyZCBDb250cm9sczogMCBQcml2YXRlIENvbnRyb2xz OiAwDQo+ID4gDQo+ID4gRm9ybWF0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRU5VTV9GTVQv RlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFMUzogT0sNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1BBUk06 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZNVDogT0sNCj4gPiAJdGVzdCBWSURJT0NfVFJZ X0ZNVDogT0sNCj4gPiAJdGVzdCBWSURJT0NfU19GTVQ6IE9LDQo+ID4gCXRlc3QgVklESU9DX0df U0xJQ0VEX1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IENyb3BwaW5nOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBDb21wb3Npbmc6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFNjYWxpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IENvZGVj IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiANCj4gPiBCdWZmZXIgaW9jdGxzOg0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMu Y3BwKDM3MCk6IHRpbWVzdGFtcCAhPSBWNEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9NT05PVE9OSUMg JiYgdGltZXN0YW1wICE9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0NPUFkNCj4gPiAJCWZhaWw6 IHY0bDItdGVzdC1idWZmZXJzLmNwcCg0ODYpOiBidWYuY2hlY2soVW5xdWV1ZWQsIGkpDQo+ID4g CQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNjE1KTogdGVzdFF1ZXJ5QnVmKG5vZGUsIGks IHEuZ19idWZmZXJzKCkpDQo+ID4gCXRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVF UllCVUY6IEZBSUwNCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCg3NDcpOiBWSURJ T0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwgYnV0IHRoZSBWNEwyX01FTU9SWV9NTUFQIHN1cHBvcnQg aXMgbWlzc2luZyBvciBtYWxmdW5jdGlvbmluZy4NCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1idWZm ZXJzLmNwcCg3NDgpOiBWSURJT0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwgYnV0IHRoZSBWNEwyX01F TU9SWV9NTUFQIHN1cHBvcnQgaXMgbWlzc2luZywgcHJvYmFibHkgZHVlIHRvIGVhcmxpZXIgZmFp bGluZyBmb3JtYXQgdGVzdHMuDQo+ID4gCXRlc3QgVklESU9DX0VYUEJVRjogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgUmVxdWVzdHM6IE9LDQo+ID4gDQo+ID4gVG90YWwgZm9yIG10ay1j YW0tcDEgZGV2aWNlIC9kZXYvdmlkZW81OiA0NSwgU3VjY2VlZGVkOiA0NCwgRmFpbGVkOiAxLCBX YXJuaW5nczogMA0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gQ29tcGxpYW5jZSB0 ZXN0IGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2L3ZpZGVvNjoNCj4gPiANCj4gPiBEcml2ZXIg SW5mbzoNCj4gPiAJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCj4gPiAJQ2FyZCB0eXBl ICAgICAgICA6IG10ay1jYW0tcDENCj4gPiAJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3JtOjFh MDAwMDAwLmNhbWlzcA0KPiA+IAlEcml2ZXIgdmVyc2lvbiAgIDogNC4xOS44OQ0KPiA+IAlDYXBh YmlsaXRpZXMgICAgIDogMHg4NGEwMDAwMA0KPiA+IAkJTWV0YWRhdGEgQ2FwdHVyZQ0KPiA+IAkJ U3RyZWFtaW5nDQo+ID4gCQlFeHRlbmRlZCBQaXggRm9ybWF0DQo+ID4gCQlEZXZpY2UgQ2FwYWJp bGl0aWVzDQo+ID4gCURldmljZSBDYXBzICAgICAgOiAweDA0YTAwMDAwDQo+ID4gCQlNZXRhZGF0 YSBDYXB0dXJlDQo+ID4gCQlTdHJlYW1pbmcNCj4gPiAJCUV4dGVuZGVkIFBpeCBGb3JtYXQNCj4g PiBNZWRpYSBEcml2ZXIgSW5mbzoNCj4gPiAJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDEN Cj4gPiAJTW9kZWwgICAgICAgICAgICA6IG10ay1jYW0tcDENCj4gPiAJU2VyaWFsICAgICAgICAg ICA6IA0KPiA+IAlCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQo+ ID4gCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQo+ID4gCUhhcmR3YXJlIHJldmlzaW9uOiAw eDAwMDAwMDAwICgwKQ0KPiA+IAlEcml2ZXIgdmVyc2lvbiAgIDogNC4xOS44OQ0KPiA+IEludGVy ZmFjZSBJbmZvOg0KPiA+IAlJRCAgICAgICAgICAgICAgIDogMHgwMzAwMDAyOA0KPiA+IAlUeXBl ICAgICAgICAgICAgIDogVjRMIFZpZGVvDQo+ID4gRW50aXR5IEluZm86DQo+ID4gCUlEICAgICAg ICAgICAgICAgOiAweDAwMDAwMDI2ICgzOCkNCj4gPiAJTmFtZSAgICAgICAgICAgICA6IG10ay1j YW0tcDEgcGFydGlhbCBtZXRhIDENCj4gPiAJRnVuY3Rpb24gICAgICAgICA6IFY0TDIgSS9PDQo+ ID4gCVBhZCAweDAxMDAwMDI3ICAgOiAwOiBTaW5rDQo+ID4gCSAgTGluayAweDAyMDAwMDJhOiBm cm9tIHJlbW90ZSBwYWQgMHgxMDAwMDA2IG9mIGVudGl0eSAnbXRrLWNhbS1wMSc6IERhdGENCj4g PiANCj4gPiBSZXF1aXJlZCBpb2N0bHM6DQo+ID4gCXRlc3QgTUMgaW5mb3JtYXRpb24gKHNlZSAn TWVkaWEgRHJpdmVyIEluZm8nIGFib3ZlKTogT0sNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllDQVA6 IE9LDQo+ID4gDQo+ID4gQWxsb3cgZm9yIG11bHRpcGxlIG9wZW5zOg0KPiA+IAl0ZXN0IHNlY29u ZCAvZGV2L3ZpZGVvNiBvcGVuOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19RVUVSWUNBUDogT0sNCj4g PiAJdGVzdCBWSURJT0NfRy9TX1BSSU9SSVRZOiBPSw0KPiA+IAl0ZXN0IGZvciB1bmxpbWl0ZWQg b3BlbnM6IE9LDQo+ID4gDQo+ID4gRGVidWcgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19EQkdf Ry9TX1JFR0lTVEVSOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfTE9HX1NU QVRVUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gSW5wdXQgaW9jdGxzOg0KPiA+IAl0 ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiAJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0Nf Ry9TL0VOVU1JTlBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19B VURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCUlucHV0czogMCBBdWRpbyBJbnB1dHM6IDAg VHVuZXJzOiAwDQo+ID4gDQo+ID4gT3V0cHV0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRy9T X01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19GUkVR VUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNQVVET1VUOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQVVET1VUOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJT3V0cHV0czogMCBBdWRpbyBPdXRwdXRzOiAwIE1vZHVsYXRvcnM6IDANCj4g PiANCj4gPiBJbnB1dC9PdXRwdXQgY29uZmlndXJhdGlvbiBpb2N0bHM6DQo+ID4gCXRlc3QgVklE SU9DX0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklE SU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IFZJRElPQ19EVl9USU1JTkdTX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DX0cvU19FRElEOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBDb250cm9sIGlv Y3RsczoNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllfRVhUX0NUUkwvUVVFUllNRU5VOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0NUUkw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IFZJRElPQ19HL1MvVFJZX0VYVF9DVFJMUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRl c3QgVklESU9DXyhVTilTVUJTQ1JJQkVfRVZFTlQvRFFFVkVOVDogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CVN0YW5kYXJkIENvbnRyb2xzOiAwIFByaXZhdGUgQ29udHJvbHM6IDANCj4gPiANCj4gPiBGb3Jt YXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZSQU1FSU5U RVJWQUxTOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfUEFSTTogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DX0dfRk1UOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19UUllfRk1UOiBPSw0KPiA+IAl0ZXN0 IFZJRElPQ19TX0ZNVDogT0sNCj4gPiAJdGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NBUDogT0sg KE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0K PiA+IAl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgU2NhbGlu ZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQ29kZWMgaW9jdGxzOg0KPiA+IAl0ZXN0 IFZJRElPQ18oVFJZXylFTkNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0Nf KFRSWV8pREVDT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IEJ1ZmZlciBp b2N0bHM6DQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoMzcwKTogdGltZXN0YW1w ICE9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX01PTk9UT05JQyAmJiB0aW1lc3RhbXAgIT0gVjRM Ml9CVUZfRkxBR19USU1FU1RBTVBfQ09QWQ0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMu Y3BwKDQ4Nik6IGJ1Zi5jaGVjayhVbnF1ZXVlZCwgaSkNCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1i dWZmZXJzLmNwcCg2MTUpOiB0ZXN0UXVlcnlCdWYobm9kZSwgaSwgcS5nX2J1ZmZlcnMoKSkNCj4g PiAJdGVzdCBWSURJT0NfUkVRQlVGUy9DUkVBVEVfQlVGUy9RVUVSWUJVRjogRkFJTA0KPiA+IAkJ ZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDc0Nyk6IFZJRElPQ19FWFBCVUYgaXMgc3VwcG9y dGVkLCBidXQgdGhlIFY0TDJfTUVNT1JZX01NQVAgc3VwcG9ydCBpcyBtaXNzaW5nIG9yIG1hbGZ1 bmN0aW9uaW5nLg0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDc0OCk6IFZJRElP Q19FWFBCVUYgaXMgc3VwcG9ydGVkLCBidXQgdGhlIFY0TDJfTUVNT1JZX01NQVAgc3VwcG9ydCBp cyBtaXNzaW5nLCBwcm9iYWJseSBkdWUgdG8gZWFybGllciBmYWlsaW5nIGZvcm1hdCB0ZXN0cy4N Cj4gPiAJdGVzdCBWSURJT0NfRVhQQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBS ZXF1ZXN0czogT0sNCj4gPiANCj4gPiBUb3RhbCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92 aWRlbzY6IDQ1LCBTdWNjZWVkZWQ6IDQ0LCBGYWlsZWQ6IDEsIFdhcm5pbmdzOiAwDQo+ID4gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiBDb21wbGlhbmNlIHRlc3QgZm9yIG10ay1jYW0tcDEg ZGV2aWNlIC9kZXYvdmlkZW83Og0KPiA+IA0KPiA+IERyaXZlciBJbmZvOg0KPiA+IAlEcml2ZXIg bmFtZSAgICAgIDogbXRrLWNhbS1wMQ0KPiA+IAlDYXJkIHR5cGUgICAgICAgIDogbXRrLWNhbS1w MQ0KPiA+IAlCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQo+ID4g CURyaXZlciB2ZXJzaW9uICAgOiA0LjE5Ljg5DQo+ID4gCUNhcGFiaWxpdGllcyAgICAgOiAweDg0 YTAwMDAwDQo+ID4gCQlNZXRhZGF0YSBDYXB0dXJlDQo+ID4gCQlTdHJlYW1pbmcNCj4gPiAJCUV4 dGVuZGVkIFBpeCBGb3JtYXQNCj4gPiAJCURldmljZSBDYXBhYmlsaXRpZXMNCj4gPiAJRGV2aWNl IENhcHMgICAgICA6IDB4MDRhMDAwMDANCj4gPiAJCU1ldGFkYXRhIENhcHR1cmUNCj4gPiAJCVN0 cmVhbWluZw0KPiA+IAkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0KPiA+IE1lZGlhIERyaXZlciBJbmZv Og0KPiA+IAlEcml2ZXIgbmFtZSAgICAgIDogbXRrLWNhbS1wMQ0KPiA+IAlNb2RlbCAgICAgICAg ICAgIDogbXRrLWNhbS1wMQ0KPiA+IAlTZXJpYWwgICAgICAgICAgIDogDQo+ID4gCUJ1cyBpbmZv ICAgICAgICAgOiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCj4gPiAJTWVkaWEgdmVyc2lvbiAg ICA6IDQuMTkuODkNCj4gPiAJSGFyZHdhcmUgcmV2aXNpb246IDB4MDAwMDAwMDAgKDApDQo+ID4g CURyaXZlciB2ZXJzaW9uICAgOiA0LjE5Ljg5DQo+ID4gSW50ZXJmYWNlIEluZm86DQo+ID4gCUlE ICAgICAgICAgICAgICAgOiAweDAzMDAwMDJlDQo+ID4gCVR5cGUgICAgICAgICAgICAgOiBWNEwg VmlkZW8NCj4gPiBFbnRpdHkgSW5mbzoNCj4gPiAJSUQgICAgICAgICAgICAgICA6IDB4MDAwMDAw MmMgKDQ0KQ0KPiA+IAlOYW1lICAgICAgICAgICAgIDogbXRrLWNhbS1wMSBwYXJ0aWFsIG1ldGEg Mg0KPiA+IAlGdW5jdGlvbiAgICAgICAgIDogVjRMMiBJL08NCj4gPiAJUGFkIDB4MDEwMDAwMmQg ICA6IDA6IFNpbmsNCj4gPiAJICBMaW5rIDB4MDIwMDAwMzA6IGZyb20gcmVtb3RlIHBhZCAweDEw MDAwMDcgb2YgZW50aXR5ICdtdGstY2FtLXAxJzogRGF0YQ0KPiA+IA0KPiA+IFJlcXVpcmVkIGlv Y3RsczoNCj4gPiAJdGVzdCBNQyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycg YWJvdmUpOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19RVUVSWUNBUDogT0sNCj4gPiANCj4gPiBBbGxv dyBmb3IgbXVsdGlwbGUgb3BlbnM6DQo+ID4gCXRlc3Qgc2Vjb25kIC9kZXYvdmlkZW83IG9wZW46 IE9LDQo+ID4gCXRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19HL1Nf UFJJT1JJVFk6IE9LDQo+ID4gCXRlc3QgZm9yIHVubGltaXRlZCBvcGVuczogT0sNCj4gPiANCj4g PiBEZWJ1ZyBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX0RCR19HL1NfUkVHSVNURVI6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiANCj4gPiBJbnB1dCBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX0cvU19UVU5F Ui9FTlVNX0ZSRVFfQkFORFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19H L1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfU19IV19G UkVRX1NFRUs6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNQVVESU86 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAo Tm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBUdW5lcnM6IDANCj4gPiANCj4g PiBPdXRwdXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0K PiA+IAl0ZXN0IFZJRElPQ19HL1MvRU5VTU9VVFBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAlPdXRwdXRz OiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMA0KPiA+IA0KPiA+IElucHV0L091dHB1 dCBjb25maWd1cmF0aW9uIGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllf U1REOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllf RFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0RWX1RJTUlO R1NfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9L IChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IENvbnRyb2wgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJ RElPQ19RVUVSWV9FWFRfQ1RSTC9RVUVSWU1FTlU6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElP Q19HL1NfQ1RSTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvUy9UUllf RVhUX0NUUkxTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfKFVOKVNVQlND UklCRV9FVkVOVC9EUUVWRU5UOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0Nf Ry9TX0pQRUdDT01QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJU3RhbmRhcmQgQ29udHJvbHM6 IDAgUHJpdmF0ZSBDb250cm9sczogMA0KPiA+IA0KPiA+IEZvcm1hdCBpb2N0bHM6DQo+ID4gCXRl c3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0laRVMvRlJBTUVJTlRFUlZBTFM6IE9LDQo+ID4gCXRl c3QgVklESU9DX0cvU19QQVJNOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0Nf R19GQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfR19GTVQ6IE9LDQo+ ID4gCXRlc3QgVklESU9DX1RSWV9GTVQ6IE9LDQo+ID4gCXRlc3QgVklESU9DX1NfRk1UOiBPSw0K PiA+IAl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiAJdGVzdCBDcm9wcGluZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQ29tcG9zaW5n OiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBTY2FsaW5nOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiANCj4gPiBDb2RlYyBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DXyhUUllfKUVOQ09E RVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfR19FTkNfSU5ERVg6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ18oVFJZXylERUNPREVSX0NNRDog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQnVmZmVyIGlvY3RsczoNCj4gPiAJCWZhaWw6 IHY0bDItdGVzdC1idWZmZXJzLmNwcCgzNzApOiB0aW1lc3RhbXAgIT0gVjRMMl9CVUZfRkxBR19U SU1FU1RBTVBfTU9OT1RPTklDICYmIHRpbWVzdGFtcCAhPSBWNEwyX0JVRl9GTEFHX1RJTUVTVEFN UF9DT1BZDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNDg2KTogYnVmLmNoZWNr KFVucXVldWVkLCBpKQ0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwKDYxNSk6IHRl c3RRdWVyeUJ1Zihub2RlLCBpLCBxLmdfYnVmZmVycygpKQ0KPiA+IAl0ZXN0IFZJRElPQ19SRVFC VUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBGQUlMDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtYnVm ZmVycy5jcHAoNzQ3KTogVklESU9DX0VYUEJVRiBpcyBzdXBwb3J0ZWQsIGJ1dCB0aGUgVjRMMl9N RU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3Npbmcgb3IgbWFsZnVuY3Rpb25pbmcuDQo+ID4gCQlm YWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNzQ4KTogVklESU9DX0VYUEJVRiBpcyBzdXBwb3J0 ZWQsIGJ1dCB0aGUgVjRMMl9NRU1PUllfTU1BUCBzdXBwb3J0IGlzIG1pc3NpbmcsIHByb2JhYmx5 IGR1ZSB0byBlYXJsaWVyIGZhaWxpbmcgZm9ybWF0IHRlc3RzLg0KPiA+IAl0ZXN0IFZJRElPQ19F WFBCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFJlcXVlc3RzOiBPSw0KPiA+IA0K PiA+IFRvdGFsIGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2L3ZpZGVvNzogNDUsIFN1Y2NlZWRl ZDogNDQsIEZhaWxlZDogMSwgV2FybmluZ3M6IDANCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiA+IENvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92aWRlbzg6 DQo+ID4gDQo+ID4gRHJpdmVyIEluZm86DQo+ID4gCURyaXZlciBuYW1lICAgICAgOiBtdGstY2Ft LXAxDQo+ID4gCUNhcmQgdHlwZSAgICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCUJ1cyBpbmZvICAg ICAgICAgOiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCj4gPiAJRHJpdmVyIHZlcnNpb24gICA6 IDQuMTkuODkNCj4gPiAJQ2FwYWJpbGl0aWVzICAgICA6IDB4ODRhMDAwMDANCj4gPiAJCU1ldGFk YXRhIENhcHR1cmUNCj4gPiAJCVN0cmVhbWluZw0KPiA+IAkJRXh0ZW5kZWQgUGl4IEZvcm1hdA0K PiA+IAkJRGV2aWNlIENhcGFiaWxpdGllcw0KPiA+IAlEZXZpY2UgQ2FwcyAgICAgIDogMHgwNGEw MDAwMA0KPiA+IAkJTWV0YWRhdGEgQ2FwdHVyZQ0KPiA+IAkJU3RyZWFtaW5nDQo+ID4gCQlFeHRl bmRlZCBQaXggRm9ybWF0DQo+ID4gTWVkaWEgRHJpdmVyIEluZm86DQo+ID4gCURyaXZlciBuYW1l ICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCU1vZGVsICAgICAgICAgICAgOiBtdGstY2FtLXAxDQo+ ID4gCVNlcmlhbCAgICAgICAgICAgOiANCj4gPiAJQnVzIGluZm8gICAgICAgICA6IHBsYXRmb3Jt OjFhMDAwMDAwLmNhbWlzcA0KPiA+IAlNZWRpYSB2ZXJzaW9uICAgIDogNC4xOS44OQ0KPiA+IAlI YXJkd2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCj4gPiAJRHJpdmVyIHZlcnNpb24gICA6 IDQuMTkuODkNCj4gPiBJbnRlcmZhY2UgSW5mbzoNCj4gPiAJSUQgICAgICAgICAgICAgICA6IDB4 MDMwMDAwMzQNCj4gPiAJVHlwZSAgICAgICAgICAgICA6IFY0TCBWaWRlbw0KPiA+IEVudGl0eSBJ bmZvOg0KPiA+IAlJRCAgICAgICAgICAgICAgIDogMHgwMDAwMDAzMiAoNTApDQo+ID4gCU5hbWUg ICAgICAgICAgICAgOiBtdGstY2FtLXAxIHBhcnRpYWwgbWV0YSAzDQo+ID4gCUZ1bmN0aW9uICAg ICAgICAgOiBWNEwyIEkvTw0KPiA+IAlQYWQgMHgwMTAwMDAzMyAgIDogMDogU2luaw0KPiA+IAkg IExpbmsgMHgwMjAwMDAzNjogZnJvbSByZW1vdGUgcGFkIDB4MTAwMDAwOCBvZiBlbnRpdHkgJ210 ay1jYW0tcDEnOiBEYXRhDQo+ID4gDQo+ID4gUmVxdWlyZWQgaW9jdGxzOg0KPiA+IAl0ZXN0IE1D IGluZm9ybWF0aW9uIChzZWUgJ01lZGlhIERyaXZlciBJbmZvJyBhYm92ZSk6IE9LDQo+ID4gCXRl c3QgVklESU9DX1FVRVJZQ0FQOiBPSw0KPiA+IA0KPiA+IEFsbG93IGZvciBtdWx0aXBsZSBvcGVu czoNCj4gPiAJdGVzdCBzZWNvbmQgL2Rldi92aWRlbzggb3BlbjogT0sNCj4gPiAJdGVzdCBWSURJ T0NfUVVFUllDQVA6IE9LDQo+ID4gCXRlc3QgVklESU9DX0cvU19QUklPUklUWTogT0sNCj4gPiAJ dGVzdCBmb3IgdW5saW1pdGVkIG9wZW5zOiBPSw0KPiA+IA0KPiA+IERlYnVnIGlvY3RsczoNCj4g PiAJdGVzdCBWSURJT0NfREJHX0cvU19SRUdJU1RFUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IElu cHV0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBT dXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VOVU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgVklESU9DX0cvUy9FTlVNSU5QVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IFZJRElPQ19HL1NfQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAlJbnB1dHM6 IDAgQXVkaW8gSW5wdXRzOiAwIFR1bmVyczogMA0KPiA+IA0KPiA+IE91dHB1dCBpb2N0bHM6DQo+ ID4gCXRlc3QgVklESU9DX0cvU19NT0RVTEFUT1I6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBW SURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cv Uy9FTlVNT1VUUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0FV RE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCU91dHB1dHM6IDAgQXVkaW8gT3V0cHV0czog MCBNb2R1bGF0b3JzOiAwDQo+ID4gDQo+ID4gSW5wdXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9j dGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9EVl9USU1JTkdTOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gDQo+ID4gQ29udHJvbCBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJM L1FVRVJZTUVOVTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1FVRVJZQ1RS TDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19DVFJMOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5UL0RRRVZFTlQ6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfSlBFR0NPTVA6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAlTdGFuZGFyZCBDb250cm9sczogMCBQcml2YXRlIENvbnRyb2xz OiAwDQo+ID4gDQo+ID4gRm9ybWF0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRU5VTV9GTVQv RlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFMUzogT0sNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1BBUk06 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZNVDogT0sNCj4gPiAJdGVzdCBWSURJT0NfVFJZ X0ZNVDogT0sNCj4gPiAJdGVzdCBWSURJT0NfU19GTVQ6IE9LDQo+ID4gCXRlc3QgVklESU9DX0df U0xJQ0VEX1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IENyb3BwaW5nOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBDb21wb3Npbmc6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFNjYWxpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IENvZGVj IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiANCj4gPiBCdWZmZXIgaW9jdGxzOg0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LWJ1ZmZlcnMu Y3BwKDM3MCk6IHRpbWVzdGFtcCAhPSBWNEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9NT05PVE9OSUMg JiYgdGltZXN0YW1wICE9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0NPUFkNCj4gPiAJCWZhaWw6 IHY0bDItdGVzdC1idWZmZXJzLmNwcCg0ODYpOiBidWYuY2hlY2soVW5xdWV1ZWQsIGkpDQo+ID4g CQlmYWlsOiB2NGwyLXRlc3QtYnVmZmVycy5jcHAoNjE1KTogdGVzdFF1ZXJ5QnVmKG5vZGUsIGks IHEuZ19idWZmZXJzKCkpDQo+ID4gCXRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVF UllCVUY6IEZBSUwNCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1idWZmZXJzLmNwcCg3NDcpOiBWSURJ T0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwgYnV0IHRoZSBWNEwyX01FTU9SWV9NTUFQIHN1cHBvcnQg aXMgbWlzc2luZyBvciBtYWxmdW5jdGlvbmluZy4NCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1idWZm ZXJzLmNwcCg3NDgpOiBWSURJT0NfRVhQQlVGIGlzIHN1cHBvcnRlZCwgYnV0IHRoZSBWNEwyX01F TU9SWV9NTUFQIHN1cHBvcnQgaXMgbWlzc2luZywgcHJvYmFibHkgZHVlIHRvIGVhcmxpZXIgZmFp bGluZyBmb3JtYXQgdGVzdHMuDQo+ID4gCXRlc3QgVklESU9DX0VYUEJVRjogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgUmVxdWVzdHM6IE9LDQo+ID4gDQo+ID4gVG90YWwgZm9yIG10ay1j YW0tcDEgZGV2aWNlIC9kZXYvdmlkZW84OiA0NSwgU3VjY2VlZGVkOiA0NCwgRmFpbGVkOiAxLCBX YXJuaW5nczogMA0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gQ29tcGxpYW5jZSB0 ZXN0IGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2L3Y0bC1zdWJkZXYwOg0KPiA+IA0KPiA+IE1l ZGlhIERyaXZlciBJbmZvOg0KPiA+IAlEcml2ZXIgbmFtZSAgICAgIDogbXRrLWNhbS1wMQ0KPiA+ IAlNb2RlbCAgICAgICAgICAgIDogbXRrLWNhbS1wMQ0KPiA+IAlTZXJpYWwgICAgICAgICAgIDog DQo+ID4gCUJ1cyBpbmZvICAgICAgICAgOiBwbGF0Zm9ybToxYTAwMDAwMC5jYW1pc3ANCj4gPiAJ TWVkaWEgdmVyc2lvbiAgICA6IDQuMTkuODkNCj4gPiAJSGFyZHdhcmUgcmV2aXNpb246IDB4MDAw MDAwMDAgKDApDQo+ID4gCURyaXZlciB2ZXJzaW9uICAgOiA0LjE5Ljg5DQo+ID4gSW50ZXJmYWNl IEluZm86DQo+ID4gCUlEICAgICAgICAgICAgICAgOiAweDAzMDAwMDUwDQo+ID4gCVR5cGUgICAg ICAgICAgICAgOiBWNEwgU3ViLURldmljZQ0KPiA+IEVudGl0eSBJbmZvOg0KPiA+IAlJRCAgICAg ICAgICAgICAgIDogMHgwMDAwMDAwMSAoMSkNCj4gPiAJTmFtZSAgICAgICAgICAgICA6IG10ay1j YW0tcDENCj4gPiAJRnVuY3Rpb24gICAgICAgICA6IFZpZGVvIFBpeGVsIEZvcm1hdHRlcg0KPiA+ IAlQYWQgMHgwMTAwMDAwMiAgIDogMDogU2luaw0KPiA+IAkgIExpbmsgMHgwMjAwMDAxMjogZnJv bSByZW1vdGUgcGFkIDB4MTAwMDAwZiBvZiBlbnRpdHkgJ210ay1jYW0tcDEgbWV0YSBpbnB1dCc6 IERhdGENCj4gPiAJUGFkIDB4MDEwMDAwMDMgICA6IDE6IFNvdXJjZQ0KPiA+IAkgIExpbmsgMHgw MjAwMDAxODogdG8gcmVtb3RlIHBhZCAweDEwMDAwMTUgb2YgZW50aXR5ICdtdGstY2FtLXAxIG1h aW4gc3RyZWFtJzogRGF0YSwgRW5hYmxlZCwgSW1tdXRhYmxlDQo+ID4gCVBhZCAweDAxMDAwMDA0 ICAgOiAyOiBTb3VyY2UNCj4gPiAJICBMaW5rIDB4MDIwMDAwMWU6IHRvIHJlbW90ZSBwYWQgMHgx MDAwMDFiIG9mIGVudGl0eSAnbXRrLWNhbS1wMSBwYWNrZWQgb3V0JzogRGF0YQ0KPiA+IAlQYWQg MHgwMTAwMDAwNSAgIDogMzogU291cmNlDQo+ID4gCSAgTGluayAweDAyMDAwMDI0OiB0byByZW1v dGUgcGFkIDB4MTAwMDAyMSBvZiBlbnRpdHkgJ210ay1jYW0tcDEgcGFydGlhbCBtZXRhIDAnOiBE YXRhDQo+ID4gCVBhZCAweDAxMDAwMDA2ICAgOiA0OiBTb3VyY2UNCj4gPiAJICBMaW5rIDB4MDIw MDAwMmE6IHRvIHJlbW90ZSBwYWQgMHgxMDAwMDI3IG9mIGVudGl0eSAnbXRrLWNhbS1wMSBwYXJ0 aWFsIG1ldGEgMSc6IERhdGENCj4gPiAJUGFkIDB4MDEwMDAwMDcgICA6IDU6IFNvdXJjZQ0KPiA+ IAkgIExpbmsgMHgwMjAwMDAzMDogdG8gcmVtb3RlIHBhZCAweDEwMDAwMmQgb2YgZW50aXR5ICdt dGstY2FtLXAxIHBhcnRpYWwgbWV0YSAyJzogRGF0YQ0KPiA+IAlQYWQgMHgwMTAwMDAwOCAgIDog NjogU291cmNlDQo+ID4gCSAgTGluayAweDAyMDAwMDM2OiB0byByZW1vdGUgcGFkIDB4MTAwMDAz MyBvZiBlbnRpdHkgJ210ay1jYW0tcDEgcGFydGlhbCBtZXRhIDMnOiBEYXRhDQo+ID4gCVBhZCAw eDAxMDAwMDA5ICAgOiA3OiBTb3VyY2UNCj4gPiAJUGFkIDB4MDEwMDAwMGEgICA6IDg6IFNvdXJj ZQ0KPiA+IAlQYWQgMHgwMTAwMDAwYiAgIDogOTogU291cmNlDQo+ID4gCVBhZCAweDAxMDAwMDBj ICAgOiAxMDogU291cmNlDQo+ID4gCVBhZCAweDAxMDAwMDBkICAgOiAxMTogU2luaw0KPiA+IAkg IExpbmsgMHgwMjAwMDA0ZTogZnJvbSByZW1vdGUgcGFkIDB4MTAwMDAzZCBvZiBlbnRpdHkgJzFh MDQwMDAwLnNlbmluZic6IERhdGEsIEVuYWJsZWQsIEltbXV0YWJsZQ0KPiA+IA0KPiA+IFJlcXVp cmVkIGlvY3RsczoNCj4gPiAJdGVzdCBNQyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIg SW5mbycgYWJvdmUpOiBPSw0KPiA+IA0KPiA+IEFsbG93IGZvciBtdWx0aXBsZSBvcGVuczoNCj4g PiAJdGVzdCBzZWNvbmQgL2Rldi92NGwtc3ViZGV2MCBvcGVuOiBPSw0KPiA+IAl0ZXN0IGZvciB1 bmxpbWl0ZWQgb3BlbnM6IE9LDQo+ID4gDQo+ID4gRGVidWcgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJ RElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBJbnB1dCBpb2N0 bHM6DQo+ID4gCXRlc3QgVklESU9DX0cvU19UVU5FUi9FTlVNX0ZSRVFfQkFORFM6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBW SURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJSW5wdXRzOiAwIEF1ZGlv IElucHV0czogMCBUdW5lcnM6IDANCj4gPiANCj4gPiBPdXRwdXQgaW9jdGxzOg0KPiA+IAl0ZXN0 IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJ T0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VO VU1BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1MvRU5VTU9V VFBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19BVURPVVQ6IE9L IChOb3QgU3VwcG9ydGVkKQ0KPiA+IAlPdXRwdXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxh dG9yczogMA0KPiA+IA0KPiA+IElucHV0L091dHB1dCBjb25maWd1cmF0aW9uIGlvY3RsczoNCj4g PiAJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiAJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gCXRlc3QgVklESU9DX0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiAJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+ IFN1Yi1EZXZpY2UgaW9jdGxzIChTaW5rIFBhZCAwKToNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NV QkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1 cHBvcnRlZCkNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1 cHBvcnRlZCkNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1f TUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0K PiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sg KE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJW QUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2UgaW9jdGxzIChTb3Vy Y2UgUGFkIDEpOg0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZS QU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFRy eSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFRy eSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9G UkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElP Q19TVUJERVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJ RElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJ dGVzdCBWSURJT0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gDQo+ID4gU3ViLURldmljZSBpb2N0bHMgKFNvdXJjZSBQYWQgMik6DQo+ID4gCXRlc3Qg VHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZB TDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZN VDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NF TEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9D X1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAo Tm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNU SU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9T X0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBTdWItRGV2aWNl IGlvY3RscyAoU291cmNlIFBhZCAzKToNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVN X01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RF L0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2UgaW9jdGxzIChTb3VyY2UgUGFkIDQp Og0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUv RlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFRyeSBWSURJT0Nf U1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFRyeSBWSURJT0Nf U1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg QWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRF UlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZf Ry9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJE RVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJ T0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ ID4gU3ViLURldmljZSBpb2N0bHMgKFNvdXJjZSBQYWQgNSk6DQo+ID4gCXRlc3QgVHJ5IFZJRElP Q19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sgKE5v dCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sgKE5v dCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9D Uk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9F TlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1FX0lO VEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBTdWItRGV2aWNlIGlvY3RscyAo U291cmNlIFBhZCA2KToNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09E RS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJ WkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBW SURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2 ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2UgaW9jdGxzIChTb3VyY2UgUGFkIDcpOg0KPiA+IAl0 ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5U RVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cv U19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cv U19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJ RElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sg KE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZNVDog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX1NF TEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfU1VCREVW X0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gU3ViLURl dmljZSBpb2N0bHMgKFNvdXJjZSBQYWQgOCk6DQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZf RU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAo Tm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNf Q09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJ dGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBTdWItRGV2aWNlIGlvY3RscyAoU291cmNlIFBh ZCA5KToNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9T SVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBUcnkgVklE SU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBUcnkgVklE SU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0 ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVf SU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VC REVWX0cvU19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0Nf U1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IA0KPiA+IFN1Yi1EZXZpY2UgaW9jdGxzIChTb3VyY2UgUGFkIDEwKToNCj4gPiAJdGVzdCBUcnkg VklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNU SU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VC REVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3Vw cG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04v Q1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJB TUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2UgaW9j dGxzIChTaW5rIFBhZCAxMSk6DQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVT X0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFN RV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3Rp dmUgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBB Y3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1 cHBvcnRlZCkNCj4gPiANCj4gPiBDb250cm9sIGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfUVVF UllfRVhUX0NUUkwvUVVFUllNRU5VOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJ T0NfUVVFUllDVFJMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0NU Ukw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1MvVFJZX0VYVF9DVFJM UzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DXyhVTilTVUJTQ1JJQkVfRVZF TlQvRFFFVkVOVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19KUEVH Q09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCVN0YW5kYXJkIENvbnRyb2xzOiAwIFByaXZh dGUgQ29udHJvbHM6IDANCj4gPiANCj4gPiBGb3JtYXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElP Q19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZSQU1FSU5URVJWQUxTOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiAJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZN VDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1RSWV9GTVQ6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gCXRlc3QgVklESU9DX0dfU0xJQ0VEX1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IENyb3BwaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBDb21wb3Npbmc6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFNjYWxpbmc6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IA0KPiA+IENvZGVjIGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RF Ul9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBCdWZmZXIgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJ RElPQ19SRVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiAJdGVzdCBWSURJT0NfRVhQQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBSZXF1 ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gVG90YWwgZm9yIG10ay1jYW0tcDEg ZGV2aWNlIC9kZXYvdjRsLXN1YmRldjA6IDEyNSwgU3VjY2VlZGVkOiAxMjUsIEZhaWxlZDogMCwg V2FybmluZ3M6IDANCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IENvbXBsaWFuY2Ug dGVzdCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92NGwtc3ViZGV2MToNCj4gPiANCj4gPiBN ZWRpYSBEcml2ZXIgSW5mbzoNCj4gPiAJRHJpdmVyIG5hbWUgICAgICA6IG10ay1jYW0tcDENCj4g PiAJTW9kZWwgICAgICAgICAgICA6IG10ay1jYW0tcDENCj4gPiAJU2VyaWFsICAgICAgICAgICA6 IA0KPiA+IAlCdXMgaW5mbyAgICAgICAgIDogcGxhdGZvcm06MWEwMDAwMDAuY2FtaXNwDQo+ID4g CU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQo+ID4gCUhhcmR3YXJlIHJldmlzaW9uOiAweDAw MDAwMDAwICgwKQ0KPiA+IAlEcml2ZXIgdmVyc2lvbiAgIDogNC4xOS44OQ0KPiA+IEludGVyZmFj ZSBJbmZvOg0KPiA+IAlJRCAgICAgICAgICAgICAgIDogMHgwMzAwMDA1Mg0KPiA+IAlUeXBlICAg ICAgICAgICAgIDogVjRMIFN1Yi1EZXZpY2UNCj4gPiBFbnRpdHkgSW5mbzoNCj4gPiAJSUQgICAg ICAgICAgICAgICA6IDB4MDAwMDAwMzggKDU2KQ0KPiA+IAlOYW1lICAgICAgICAgICAgIDogMWEw NDAwMDAuc2VuaW5mDQo+ID4gCUZ1bmN0aW9uICAgICAgICAgOiBWaWRlbyBJbnRlcmZhY2UgQnJp ZGdlDQo+ID4gCVBhZCAweDAxMDAwMDM5ICAgOiAwOiBTaW5rDQo+ID4gCSAgTGluayAweDAyMDAw MDQ3OiBmcm9tIHJlbW90ZSBwYWQgMHgxMDAwMDQ2IG9mIGVudGl0eSAnb3Y4ODU2IDItMDAxMCc6 IERhdGEsIEVuYWJsZWQNCj4gPiAJUGFkIDB4MDEwMDAwM2EgICA6IDE6IFNpbmsNCj4gPiAJICBM aW5rIDB4MDIwMDAwNGM6IGZyb20gcmVtb3RlIHBhZCAweDEwMDAwNGIgb2YgZW50aXR5ICdvdjAy YTEwIDQtMDAzZCc6IERhdGENCj4gPiAJUGFkIDB4MDEwMDAwM2IgICA6IDI6IFNpbmsNCj4gPiAJ UGFkIDB4MDEwMDAwM2MgICA6IDM6IFNpbmsNCj4gPiAJUGFkIDB4MDEwMDAwM2QgICA6IDQ6IFNv dXJjZQ0KPiA+IAkgIExpbmsgMHgwMjAwMDA0ZTogdG8gcmVtb3RlIHBhZCAweDEwMDAwMGQgb2Yg ZW50aXR5ICdtdGstY2FtLXAxJzogRGF0YSwgRW5hYmxlZCwgSW1tdXRhYmxlDQo+ID4gCVBhZCAw eDAxMDAwMDNlICAgOiA1OiBTb3VyY2UNCj4gPiAJUGFkIDB4MDEwMDAwM2YgICA6IDY6IFNvdXJj ZQ0KPiA+IAlQYWQgMHgwMTAwMDA0MCAgIDogNzogU291cmNlDQo+ID4gCVBhZCAweDAxMDAwMDQx ICAgOiA4OiBTb3VyY2UNCj4gPiAJUGFkIDB4MDEwMDAwNDIgICA6IDk6IFNvdXJjZQ0KPiA+IAlQ YWQgMHgwMTAwMDA0MyAgIDogMTA6IFNvdXJjZQ0KPiA+IAlQYWQgMHgwMTAwMDA0NCAgIDogMTE6 IFNvdXJjZQ0KPiA+IA0KPiA+IFJlcXVpcmVkIGlvY3RsczoNCj4gPiAJdGVzdCBNQyBpbmZvcm1h dGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycgYWJvdmUpOiBPSw0KPiA+IA0KPiA+IEFsbG93 IGZvciBtdWx0aXBsZSBvcGVuczoNCj4gPiAJdGVzdCBzZWNvbmQgL2Rldi92NGwtc3ViZGV2MSBv cGVuOiBPSw0KPiA+IAl0ZXN0IGZvciB1bmxpbWl0ZWQgb3BlbnM6IE9LDQo+ID4gDQo+ID4gRGVi dWcgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19MT0dfU1RBVFVTOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiANCj4gPiBJbnB1dCBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX0cvU19UVU5FUi9F TlVNX0ZSRVFfQkFORFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1Nf RlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfU19IV19GUkVR X1NFRUs6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNQVVESU86IE9L IChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVUOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBUdW5lcnM6IDANCj4gPiANCj4gPiBP dXRwdXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfTU9EVUxBVE9SOiBPSyAoTm90IFN1 cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IFZJRElPQ19HL1MvRU5VTU9VVFBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRl c3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAlPdXRwdXRzOiAw IEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMA0KPiA+IA0KPiA+IElucHV0L091dHB1dCBj b25maWd1cmF0aW9uIGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfU1RE OiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZf VElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0RWX1RJTUlOR1Nf Q0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0VESUQ6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2UgaW9jdGxzIChTaW5rIFBhZCAwKToN Cj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZS QU1FX0lOVEVSVkFMOiBPSw0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9L DQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09E RS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0Nf U1VCREVWX0cvU19GTVQ6IE9LDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX1NF TEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfU1VCREVW X0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gU3ViLURl dmljZSBpb2N0bHMgKFNpbmsgUGFkIDEpOg0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VO VU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQo+ID4gCXRlc3QgVHJ5 IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9H L1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBW SURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9L DQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCj4gPiAJdGVzdCBB Y3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1 cHBvcnRlZCkNCj4gPiANCj4gPiBTdWItRGV2aWNlIGlvY3RscyAoU2luayBQYWQgMik6DQo+ID4g CXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9J TlRFUlZBTDogT0sNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0KPiA+ IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJB TUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRF Vl9HL1NfRk1UOiBPSw0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJ T04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1NVQkRFVl9HL1Nf RlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2Ug aW9jdGxzIChTaW5rIFBhZCAzKToNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01C VVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KPiA+IAl0ZXN0IFRyeSBWSURJ T0NfU1VCREVWX0cvU19GTVQ6IE9LDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NF TEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9D X1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KPiA+ IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQo+ID4gCXRlc3QgQWN0aXZl IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4g PiAJdGVzdCBWSURJT0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gDQo+ID4gU3ViLURldmljZSBpb2N0bHMgKFNvdXJjZSBQYWQgNCk6DQo+ID4gCXRl c3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRF UlZBTDogT0sNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0KPiA+IAl0 ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVf U0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9H L1NfRk1UOiBPSw0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04v Q1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJB TUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2UgaW9j dGxzIChTb3VyY2UgUGFkIDUpOg0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJV U19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQo+ID4gCXRlc3QgVHJ5IFZJRElP Q19TVUJERVZfRy9TX0ZNVDogT0sNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VM RUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0Nf U1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQo+ID4g CXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCj4gPiAJdGVzdCBBY3RpdmUg VklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiANCj4gPiBTdWItRGV2aWNlIGlvY3RscyAoU291cmNlIFBhZCA2KToNCj4gPiAJdGVz dCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVS VkFMOiBPSw0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQo+ID4gCXRl c3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9T SVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cv U19GTVQ6IE9LDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9D Uk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfU1VCREVWX0cvU19GUkFN RV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gU3ViLURldmljZSBpb2N0 bHMgKFNvdXJjZSBQYWQgNyk6DQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVT X0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCj4gPiAJdGVzdCBUcnkgVklESU9D X1NVQkRFVl9HL1NfRk1UOiBPSw0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19TRUxF Q1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19T VUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCj4gPiAJ dGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0KPiA+IAl0ZXN0IEFjdGl2ZSBW SURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2UgaW9jdGxzIChTb3VyY2UgUGFkIDgpOg0KPiA+IAl0ZXN0 IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJW QUw6IE9LDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCj4gPiAJdGVz dCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJ WkUvRlJBTUVfSU5URVJWQUw6IE9LDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9T X0ZNVDogT0sNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NS T1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1F X0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBTdWItRGV2aWNlIGlvY3Rs cyAoU291cmNlIFBhZCA5KToNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9FTlVNX01CVVNf Q09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KPiA+IAl0ZXN0IFRyeSBWSURJT0Nf U1VCREVWX0cvU19GTVQ6IE9LDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVD VElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NV QkRFVl9FTlVNX01CVVNfQ09ERS9GUkFNRV9TSVpFL0ZSQU1FX0lOVEVSVkFMOiBPSw0KPiA+IAl0 ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQo+ID4gCXRlc3QgQWN0aXZlIFZJ RElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJ dGVzdCBWSURJT0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gDQo+ID4gU3ViLURldmljZSBpb2N0bHMgKFNvdXJjZSBQYWQgMTApOg0KPiA+IAl0ZXN0 IFRyeSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJW QUw6IE9LDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCj4gPiAJdGVz dCBUcnkgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJ WkUvRlJBTUVfSU5URVJWQUw6IE9LDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9T X0ZNVDogT0sNCj4gPiAJdGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NS T1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1F X0lOVEVSVkFMOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBTdWItRGV2aWNlIGlvY3Rs cyAoU291cmNlIFBhZCAxMSk6DQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVT X0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCj4gPiAJdGVzdCBUcnkgVklESU9D X1NVQkRFVl9HL1NfRk1UOiBPSw0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0cvU19TRUxF Q1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19T VUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRFUlZBTDogT0sNCj4gPiAJ dGVzdCBBY3RpdmUgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBPSw0KPiA+IAl0ZXN0IEFjdGl2ZSBW SURJT0NfU1VCREVWX0cvU19TRUxFQ1RJT04vQ1JPUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX1NVQkRFVl9HL1NfRlJBTUVfSU5URVJWQUw6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IA0KPiA+IENvbnRyb2wgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19RVUVSWV9FWFRf Q1RSTC9RVUVSWU1FTlU6IE9LDQo+ID4gCXRlc3QgVklESU9DX1FVRVJZQ1RSTDogT0sNCj4gPiAJ dGVzdCBWSURJT0NfRy9TX0NUUkw6IE9LDQo+ID4gCXRlc3QgVklESU9DX0cvUy9UUllfRVhUX0NU UkxTOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ18oVU4pU1VCU0NSSUJFX0VWRU5UL0RRRVZFTlQ6IE9L DQo+ID4gCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CVN0YW5kYXJkIENvbnRyb2xzOiAyIFByaXZhdGUgQ29udHJvbHM6IDANCj4gPiANCj4gPiBGb3Jt YXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZSQU1FSU5U RVJWQUxTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1BBUk06IE9L IChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRl c3QgVklESU9DX1RSWV9GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19T X0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0dfU0xJQ0VEX1ZCSV9D QVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IENyb3BwaW5nOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJdGVzdCBDb21wb3Npbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IFNjYWxpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IENvZGVjIGlvY3RsczoNCj4g PiAJdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBC dWZmZXIgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19SRVFCVUZTL0NSRUFURV9CVUZTL1FVRVJZ QlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRVhQQlVGOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBSZXF1ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g DQo+ID4gVG90YWwgZm9yIG10ay1jYW0tcDEgZGV2aWNlIC9kZXYvdjRsLXN1YmRldjE6IDEyNSwg U3VjY2VlZGVkOiAxMjUsIEZhaWxlZDogMCwgV2FybmluZ3M6IDANCj4gPiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiA+IENvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rl di92NGwtc3ViZGV2MjoNCj4gPiANCj4gPiBNZWRpYSBEcml2ZXIgSW5mbzoNCj4gPiAJRHJpdmVy IG5hbWUgICAgICA6IG10ay1jYW0tcDENCj4gPiAJTW9kZWwgICAgICAgICAgICA6IG10ay1jYW0t cDENCj4gPiAJU2VyaWFsICAgICAgICAgICA6IA0KPiA+IAlCdXMgaW5mbyAgICAgICAgIDogcGxh dGZvcm06MWEwMDAwMDAuY2FtaXNwDQo+ID4gCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQo+ ID4gCUhhcmR3YXJlIHJldmlzaW9uOiAweDAwMDAwMDAwICgwKQ0KPiA+IAlEcml2ZXIgdmVyc2lv biAgIDogNC4xOS44OQ0KPiA+IEludGVyZmFjZSBJbmZvOg0KPiA+IAlJRCAgICAgICAgICAgICAg IDogMHgwMzAwMDA1NA0KPiA+IAlUeXBlICAgICAgICAgICAgIDogVjRMIFN1Yi1EZXZpY2UNCj4g PiBFbnRpdHkgSW5mbzoNCj4gPiAJSUQgICAgICAgICAgICAgICA6IDB4MDAwMDAwNDUgKDY5KQ0K PiA+IAlOYW1lICAgICAgICAgICAgIDogb3Y4ODU2IDItMDAxMA0KPiA+IAlGdW5jdGlvbiAgICAg ICAgIDogQ2FtZXJhIFNlbnNvcg0KPiA+IAlQYWQgMHgwMTAwMDA0NiAgIDogMDogU291cmNlDQo+ ID4gCSAgTGluayAweDAyMDAwMDQ3OiB0byByZW1vdGUgcGFkIDB4MTAwMDAzOSBvZiBlbnRpdHkg JzFhMDQwMDAwLnNlbmluZic6IERhdGEsIEVuYWJsZWQNCj4gPiANCj4gPiBSZXF1aXJlZCBpb2N0 bHM6DQo+ID4gCXRlc3QgTUMgaW5mb3JtYXRpb24gKHNlZSAnTWVkaWEgRHJpdmVyIEluZm8nIGFi b3ZlKTogT0sNCj4gPiANCj4gPiBBbGxvdyBmb3IgbXVsdGlwbGUgb3BlbnM6DQo+ID4gCXRlc3Qg c2Vjb25kIC9kZXYvdjRsLXN1YmRldjIgb3BlbjogT0sNCj4gPiAJdGVzdCBmb3IgdW5saW1pdGVk IG9wZW5zOiBPSw0KPiA+IA0KPiA+IERlYnVnIGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfTE9H X1NUQVRVUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gSW5wdXQgaW9jdGxzOg0KPiA+ IAl0ZXN0IFZJRElPQ19HL1NfVFVORVIvRU5VTV9GUkVRX0JBTkRTOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gCXRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVLOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJ dGVzdCBWSURJT0NfRU5VTUFVRElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJ T0NfRy9TL0VOVU1JTlBVVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cv U19BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCUlucHV0czogMCBBdWRpbyBJbnB1dHM6 IDAgVHVuZXJzOiAwDQo+ID4gDQo+ID4gT3V0cHV0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0Nf Ry9TX01PRFVMQVRPUjogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19G UkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNQVVET1VU OiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TL0VOVU1PVVRQVVQ6IE9L IChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQVVET1VUOiBPSyAoTm90IFN1 cHBvcnRlZCkNCj4gPiAJT3V0cHV0czogMCBBdWRpbyBPdXRwdXRzOiAwIE1vZHVsYXRvcnM6IDAN Cj4gPiANCj4gPiBJbnB1dC9PdXRwdXQgY29uZmlndXJhdGlvbiBpb2N0bHM6DQo+ID4gCXRlc3Qg VklESU9DX0VOVU0vRy9TL1FVRVJZX1NURDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DX0VOVU0vRy9TL1FVRVJZX0RWX1RJTUlOR1M6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IFZJRElPQ19EVl9USU1JTkdTX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRl c3QgVklESU9DX0cvU19FRElEOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBTdWItRGV2 aWNlIGlvY3RscyAoU291cmNlIFBhZCAwKToNCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1zdWJkZXZz LmNwcCgxNDcpOiBkb2lvY3RsKG5vZGUsIFZJRElPQ19TVUJERVZfRU5VTV9GUkFNRV9TSVpFLCAm ZnNlKQ0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LXN1YmRldnMuY3BwKDI0OCk6IHJldCAmJiByZXQg IT0gRU5PVFRZDQo+ID4gCXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJB TUVfU0laRS9GUkFNRV9JTlRFUlZBTDogRkFJTA0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LXN1YmRl dnMuY3BwKDMxMyk6IGZtdC5jb2RlID09IDAgfHwgZm10LmNvZGUgPT0gfjBVDQo+ID4gCQlmYWls OiB2NGwyLXRlc3Qtc3ViZGV2cy5jcHAoMzU2KTogY2hlY2tNQnVzRnJhbWVGbXQobm9kZSwgZm10 LmZvcm1hdCkNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1NfRk1UOiBGQUlMDQo+ID4g CXRlc3QgVHJ5IFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1zdWJkZXZzLmNwcCgxNDcpOiBkb2lvY3RsKG5v ZGUsIFZJRElPQ19TVUJERVZfRU5VTV9GUkFNRV9TSVpFLCAmZnNlKQ0KPiA+IAkJZmFpbDogdjRs Mi10ZXN0LXN1YmRldnMuY3BwKDI0OCk6IHJldCAmJiByZXQgIT0gRU5PVFRZDQo+ID4gCXRlc3Qg QWN0aXZlIFZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREUvRlJBTUVfU0laRS9GUkFNRV9JTlRF UlZBTDogRkFJTA0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJT0NfU1VCREVWX0cvU19GTVQ6IE9LDQo+ ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX1NFTEVDVElPTi9DUk9QOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfU1VCREVWX0cvU19GUkFNRV9JTlRFUlZBTDog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQ29udHJvbCBpb2N0bHM6DQo+ID4gCXRlc3Qg VklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZTUVOVTogT0sNCj4gPiAJdGVzdCBWSURJT0NfUVVF UllDVFJMOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sNCj4gPiAJdGVzdCBWSURJ T0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtY29udHJvbHMu Y3BwKDgzMCk6IHN1YnNjcmliZSBldmVudCBmb3IgY29udHJvbCAnVXNlciBDb250cm9scycgZmFp bGVkDQo+ID4gCXRlc3QgVklESU9DXyhVTilTVUJTQ1JJQkVfRVZFTlQvRFFFVkVOVDogRkFJTA0K PiA+IAl0ZXN0IFZJRElPQ19HL1NfSlBFR0NPTVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAlT dGFuZGFyZCBDb250cm9sczogMTEgUHJpdmF0ZSBDb250cm9sczogMA0KPiA+IA0KPiA+IEZvcm1h dCBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX0VOVU1fRk1UL0ZSQU1FU0laRVMvRlJBTUVJTlRF UlZBTFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfUEFSTTogT0sg KE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0dfRkJVRjogT0sgKE5vdCBTdXBwb3J0 ZWQpDQo+ID4gCXRlc3QgVklESU9DX0dfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBWSURJT0NfVFJZX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX1Nf Rk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfR19TTElDRURfVkJJX0NB UDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgQ3JvcHBpbmc6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPiA+IAl0ZXN0IENvbXBvc2luZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg U2NhbGluZzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQ29kZWMgaW9jdGxzOg0KPiA+ IAl0ZXN0IFZJRElPQ18oVFJZXylFTkNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DX0dfRU5DX0lOREVYOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBW SURJT0NfKFRSWV8pREVDT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IEJ1 ZmZlciBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX1JFUUJVRlMvQ1JFQVRFX0JVRlMvUVVFUllC VUY6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FWFBCVUY6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFJlcXVlc3RzOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAN Cj4gPiBUb3RhbCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92NGwtc3ViZGV2MjogNDgsIFN1 Y2NlZWRlZDogNDQsIEZhaWxlZDogNCwgV2FybmluZ3M6IDANCj4gPiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiA+IENvbXBsaWFuY2UgdGVzdCBmb3IgbXRrLWNhbS1wMSBkZXZpY2UgL2Rldi92 NGwtc3ViZGV2MzoNCj4gPiANCj4gPiBNZWRpYSBEcml2ZXIgSW5mbzoNCj4gPiAJRHJpdmVyIG5h bWUgICAgICA6IG10ay1jYW0tcDENCj4gPiAJTW9kZWwgICAgICAgICAgICA6IG10ay1jYW0tcDEN Cj4gPiAJU2VyaWFsICAgICAgICAgICA6IA0KPiA+IAlCdXMgaW5mbyAgICAgICAgIDogcGxhdGZv cm06MWEwMDAwMDAuY2FtaXNwDQo+ID4gCU1lZGlhIHZlcnNpb24gICAgOiA0LjE5Ljg5DQo+ID4g CUhhcmR3YXJlIHJldmlzaW9uOiAweDAwMDAwMDAwICgwKQ0KPiA+IAlEcml2ZXIgdmVyc2lvbiAg IDogNC4xOS44OQ0KPiA+IEludGVyZmFjZSBJbmZvOg0KPiA+IAlJRCAgICAgICAgICAgICAgIDog MHgwMzAwMDA1Ng0KPiA+IAlUeXBlICAgICAgICAgICAgIDogVjRMIFN1Yi1EZXZpY2UNCj4gPiBF bnRpdHkgSW5mbzoNCj4gPiAJSUQgICAgICAgICAgICAgICA6IDB4MDAwMDAwNDkgKDczKQ0KPiA+ IAlOYW1lICAgICAgICAgICAgIDogZHc5NzY4IDItMDAwYw0KPiA+IAlGdW5jdGlvbiAgICAgICAg IDogTGVucyBDb250cm9sbGVyDQo+ID4gDQo+ID4gUmVxdWlyZWQgaW9jdGxzOg0KPiA+IAl0ZXN0 IE1DIGluZm9ybWF0aW9uIChzZWUgJ01lZGlhIERyaXZlciBJbmZvJyBhYm92ZSk6IE9LDQo+ID4g DQo+ID4gQWxsb3cgZm9yIG11bHRpcGxlIG9wZW5zOg0KPiA+IAl0ZXN0IHNlY29uZCAvZGV2L3Y0 bC1zdWJkZXYzIG9wZW46IE9LDQo+ID4gCXRlc3QgZm9yIHVubGltaXRlZCBvcGVuczogT0sNCj4g PiANCj4gPiBEZWJ1ZyBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IElucHV0IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0Nf Ry9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3Qg VklESU9DX0cvU19GUkVRVUVOQ1k6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElP Q19TX0hXX0ZSRVFfU0VFSzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VO VU1BVURJTzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvUy9FTlVNSU5Q VVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQVVESU86IE9LIChO b3QgU3VwcG9ydGVkKQ0KPiA+IAlJbnB1dHM6IDAgQXVkaW8gSW5wdXRzOiAwIFR1bmVyczogMA0K PiA+IA0KPiA+IE91dHB1dCBpb2N0bHM6DQo+ID4gCXRlc3QgVklESU9DX0cvU19NT0RVTEFUT1I6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAo Tm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRU5VTUFVRE9VVDogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvUy9FTlVNT1VUUFVUOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0FVRE9VVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CU91dHB1dHM6IDAgQXVkaW8gT3V0cHV0czogMCBNb2R1bGF0b3JzOiAwDQo+ID4gDQo+ID4gSW5w dXQvT3V0cHV0IGNvbmZpZ3VyYXRpb24gaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNL0cv Uy9RVUVSWV9TVEQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNL0cv Uy9RVUVSWV9EVl9USU1JTkdTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0Nf RFZfVElNSU5HU19DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1Nf RURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQ29udHJvbCBpb2N0bHM6DQo+ID4g CXRlc3QgVklESU9DX1FVRVJZX0VYVF9DVFJML1FVRVJZTUVOVTogT0sNCj4gPiAJdGVzdCBWSURJ T0NfUVVFUllDVFJMOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQ1RSTDogT0sNCj4gPiAJdGVz dCBWSURJT0NfRy9TL1RSWV9FWFRfQ1RSTFM6IE9LDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtY29u dHJvbHMuY3BwKDgzMCk6IHN1YnNjcmliZSBldmVudCBmb3IgY29udHJvbCAnQ2FtZXJhIENvbnRy b2xzJyBmYWlsZWQNCj4gPiAJdGVzdCBWSURJT0NfKFVOKVNVQlNDUklCRV9FVkVOVC9EUUVWRU5U OiBGQUlMDQo+ID4gCXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCVN0YW5kYXJkIENvbnRyb2xzOiAyIFByaXZhdGUgQ29udHJvbHM6IDANCj4gPiANCj4g PiBGb3JtYXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZS QU1FSU5URVJWQUxTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX1BB Uk06IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZCVUY6IE9LIChOb3Qg U3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ ID4gCXRlc3QgVklESU9DX1RSWV9GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJ RElPQ19TX0ZNVDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0dfU0xJQ0VE X1ZCSV9DQVA6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IENyb3BwaW5nOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBDb21wb3Npbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+ IAl0ZXN0IFNjYWxpbmc6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IENvZGVjIGlvY3Rs czoNCj4gPiAJdGVzdCBWSURJT0NfKFRSWV8pRU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVk KQ0KPiA+IAl0ZXN0IFZJRElPQ19HX0VOQ19JTkRFWDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4g CXRlc3QgVklESU9DXyhUUllfKURFQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAN Cj4gPiBCdWZmZXIgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19SRVFCVUZTL0NSRUFURV9CVUZT L1FVRVJZQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRVhQQlVGOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBSZXF1ZXN0czogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gDQo+ID4gVG90YWwgZm9yIG10ay1jYW0tcDEgZGV2aWNlIC9kZXYvdjRsLXN1YmRldjM6 IDQxLCBTdWNjZWVkZWQ6IDQwLCBGYWlsZWQ6IDEsIFdhcm5pbmdzOiAwDQo+ID4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gPiBDb21wbGlhbmNlIHRlc3QgZm9yIG10ay1jYW0tcDEgZGV2aWNl IC9kZXYvdjRsLXN1YmRldjQ6DQo+ID4gDQo+ID4gTWVkaWEgRHJpdmVyIEluZm86DQo+ID4gCURy aXZlciBuYW1lICAgICAgOiBtdGstY2FtLXAxDQo+ID4gCU1vZGVsICAgICAgICAgICAgOiBtdGst Y2FtLXAxDQo+ID4gCVNlcmlhbCAgICAgICAgICAgOiANCj4gPiAJQnVzIGluZm8gICAgICAgICA6 IHBsYXRmb3JtOjFhMDAwMDAwLmNhbWlzcA0KPiA+IAlNZWRpYSB2ZXJzaW9uICAgIDogNC4xOS44 OQ0KPiA+IAlIYXJkd2FyZSByZXZpc2lvbjogMHgwMDAwMDAwMCAoMCkNCj4gPiAJRHJpdmVyIHZl cnNpb24gICA6IDQuMTkuODkNCj4gPiBJbnRlcmZhY2UgSW5mbzoNCj4gPiAJSUQgICAgICAgICAg ICAgICA6IDB4MDMwMDAwNTgNCj4gPiAJVHlwZSAgICAgICAgICAgICA6IFY0TCBTdWItRGV2aWNl DQo+ID4gRW50aXR5IEluZm86DQo+ID4gCUlEICAgICAgICAgICAgICAgOiAweDAwMDAwMDRhICg3 NCkNCj4gPiAJTmFtZSAgICAgICAgICAgICA6IG92MDJhMTAgNC0wMDNkDQo+ID4gCUZ1bmN0aW9u ICAgICAgICAgOiBDYW1lcmEgU2Vuc29yDQo+ID4gCVBhZCAweDAxMDAwMDRiICAgOiAwOiBTb3Vy Y2UNCj4gPiAJICBMaW5rIDB4MDIwMDAwNGM6IHRvIHJlbW90ZSBwYWQgMHgxMDAwMDNhIG9mIGVu dGl0eSAnMWEwNDAwMDAuc2VuaW5mJzogRGF0YQ0KPiA+IA0KPiA+IFJlcXVpcmVkIGlvY3RsczoN Cj4gPiAJdGVzdCBNQyBpbmZvcm1hdGlvbiAoc2VlICdNZWRpYSBEcml2ZXIgSW5mbycgYWJvdmUp OiBPSw0KPiA+IA0KPiA+IEFsbG93IGZvciBtdWx0aXBsZSBvcGVuczoNCj4gPiAJdGVzdCBzZWNv bmQgL2Rldi92NGwtc3ViZGV2NCBvcGVuOiBPSw0KPiA+IAl0ZXN0IGZvciB1bmxpbWl0ZWQgb3Bl bnM6IE9LDQo+ID4gDQo+ID4gRGVidWcgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19MT0dfU1RB VFVTOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBJbnB1dCBpb2N0bHM6DQo+ID4gCXRl c3QgVklESU9DX0cvU19UVU5FUi9FTlVNX0ZSRVFfQkFORFM6IE9LIChOb3QgU3VwcG9ydGVkKQ0K PiA+IAl0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJ dGVzdCBWSURJT0NfU19IV19GUkVRX1NFRUs6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0 IFZJRElPQ19FTlVNQVVESU86IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19H L1MvRU5VTUlOUFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0FV RElPOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJSW5wdXRzOiAwIEF1ZGlvIElucHV0czogMCBU dW5lcnM6IDANCj4gPiANCj4gPiBPdXRwdXQgaW9jdGxzOg0KPiA+IAl0ZXN0IFZJRElPQ19HL1Nf TU9EVUxBVE9SOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfRy9TX0ZSRVFV RU5DWTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VOVU1BVURPVVQ6IE9L IChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HL1MvRU5VTU9VVFBVVDogT0sgKE5v dCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19BVURPVVQ6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPiA+IAlPdXRwdXRzOiAwIEF1ZGlvIE91dHB1dHM6IDAgTW9kdWxhdG9yczogMA0KPiA+ IA0KPiA+IElucHV0L091dHB1dCBjb25maWd1cmF0aW9uIGlvY3RsczoNCj4gPiAJdGVzdCBWSURJ T0NfRU5VTS9HL1MvUVVFUllfU1REOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJ T0NfRU5VTS9HL1MvUVVFUllfRFZfVElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRl c3QgVklESU9DX0RWX1RJTUlOR1NfQ0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBW SURJT0NfRy9TX0VESUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+IFN1Yi1EZXZpY2Ug aW9jdGxzIChTb3VyY2UgUGFkIDApOg0KPiA+IAl0ZXN0IFRyeSBWSURJT0NfU1VCREVWX0VOVU1f TUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQo+ID4gCXRlc3QgVHJ5IFZJ RElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCj4gPiAJdGVzdCBUcnkgVklESU9DX1NVQkRFVl9HL1Nf U0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IEFjdGl2ZSBWSURJ T0NfU1VCREVWX0VOVU1fTUJVU19DT0RFL0ZSQU1FX1NJWkUvRlJBTUVfSU5URVJWQUw6IE9LDQo+ ID4gCXRlc3QgQWN0aXZlIFZJRElPQ19TVUJERVZfRy9TX0ZNVDogT0sNCj4gPiAJdGVzdCBBY3Rp dmUgVklESU9DX1NVQkRFVl9HL1NfU0VMRUNUSU9OL0NST1A6IE9LIChOb3QgU3VwcG9ydGVkKQ0K PiA+IAl0ZXN0IFZJRElPQ19TVUJERVZfRy9TX0ZSQU1FX0lOVEVSVkFMOiBPSyAoTm90IFN1cHBv cnRlZCkNCj4gPiANCj4gPiBDb250cm9sIGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfUVVFUllf RVhUX0NUUkwvUVVFUllNRU5VOiBPSw0KPiA+IAl0ZXN0IFZJRElPQ19RVUVSWUNUUkw6IE9LDQo+ ID4gCQlmYWlsOiB2NGwyLXRlc3QtY29udHJvbHMuY3BwKDM2Mik6IHJldHVybmVkIGNvbnRyb2wg dmFsdWUgb3V0IG9mIHJhbmdlDQo+ID4gCQlmYWlsOiB2NGwyLXRlc3QtY29udHJvbHMuY3BwKDQz MSk6IGludmFsaWQgY29udHJvbCAwMDllMDkwMg0KPiA+IAl0ZXN0IFZJRElPQ19HL1NfQ1RSTDog RkFJTA0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LWNvbnRyb2xzLmNwcCg1NDkpOiByZXR1cm5lZCBj b250cm9sIHZhbHVlIG91dCBvZiByYW5nZQ0KPiA+IAkJZmFpbDogdjRsMi10ZXN0LWNvbnRyb2xz LmNwcCg2NjUpOiBpbnZhbGlkIGNvbnRyb2wgMDA5ZTA5MDINCj4gPiAJdGVzdCBWSURJT0NfRy9T L1RSWV9FWFRfQ1RSTFM6IEZBSUwNCj4gPiAJCWZhaWw6IHY0bDItdGVzdC1jb250cm9scy5jcHAo ODMwKTogc3Vic2NyaWJlIGV2ZW50IGZvciBjb250cm9sICdVc2VyIENvbnRyb2xzJyBmYWlsZWQN Cj4gPiAJdGVzdCBWSURJT0NfKFVOKVNVQlNDUklCRV9FVkVOVC9EUUVWRU5UOiBGQUlMDQo+ID4g CXRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCVN0YW5k YXJkIENvbnRyb2xzOiAxMCBQcml2YXRlIENvbnRyb2xzOiAwDQo+ID4gDQo+ID4gRm9ybWF0IGlv Y3RsczoNCj4gPiAJdGVzdCBWSURJT0NfRU5VTV9GTVQvRlJBTUVTSVpFUy9GUkFNRUlOVEVSVkFM UzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0cvU19QQVJNOiBPSyAoTm90 IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfR19GQlVGOiBPSyAoTm90IFN1cHBvcnRlZCkN Cj4gPiAJdGVzdCBWSURJT0NfR19GTVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJ RElPQ19UUllfRk1UOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBWSURJT0NfU19GTVQ6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklfQ0FQOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBDcm9wcGluZzogT0sgKE5vdCBTdXBwb3J0ZWQp DQo+ID4gCXRlc3QgQ29tcG9zaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVzdCBTY2Fs aW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiANCj4gPiBDb2RlYyBpb2N0bHM6DQo+ID4gCXRl c3QgVklESU9DXyhUUllfKUVOQ09ERVJfQ01EOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4gPiAJdGVz dCBWSURJT0NfR19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IAl0ZXN0IFZJRElP Q18oVFJZXylERUNPREVSX0NNRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gDQo+ID4gQnVmZmVy IGlvY3RsczoNCj4gPiAJdGVzdCBWSURJT0NfUkVRQlVGUy9DUkVBVEVfQlVGUy9RVUVSWUJVRjog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+ID4gCXRlc3QgVklESU9DX0VYUEJVRjogT0sgKE5vdCBTdXBw b3J0ZWQpDQo+ID4gCXRlc3QgUmVxdWVzdHM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPiA+IA0KPiA+ IFRvdGFsIGZvciBtdGstY2FtLXAxIGRldmljZSAvZGV2L3Y0bC1zdWJkZXY0OiA0OCwgU3VjY2Vl ZGVkOiA0NSwgRmFpbGVkOiAzLCBXYXJuaW5nczogMA0KPiA+IA0KPiA+IEdyYW5kIFRvdGFsIGZv ciBtdGstY2FtLXAxIGRldmljZSAvZGV2L21lZGlhMjogNzA5LCBTdWNjZWVkZWQ6IDY5NCwgRmFp bGVkOiAxNSwgV2FybmluZ3M6IDANCj4gPiANCj4gPiANCj4gPiBKdW5nbyBMaW4gKDUpOg0KPiA+ ICAgbWVkaWE6IGR0LWJpbmRpbmdzOiBtdDgxODM6IEFkZGVkIGNhbWVyYSBJU1AgUGFzcyAxDQo+ ID4gICBkdHM6IGFybTY0OiBtdDgxODM6IEFkZCBJU1AgUGFzcyAxIG5vZGVzDQo+ID4gICBtZWRp YTogdmlkZW9kZXYyLmg6IEFkZCBuZXcgYm9vdHRpbWUgdGltZXN0YW1wIHR5cGUNCj4gPiAgIG1l ZGlhOiBwbGF0Zm9ybTogQWRkIE1lZGlhdGVrIElTUCBQMSBpbWFnZSAmIG1ldGEgZm9ybWF0cw0K PiA+ICAgbWVkaWE6IHBsYXRmb3JtOiBBZGQgTWVkaWF0ZWsgSVNQIFAxIFY0TDIgZGV2aWNlIGRy aXZlcg0KPiA+IA0KPiA+ICAuLi4vYmluZGluZ3MvbWVkaWEvbWVkaWF0ZWssY2FtaXNwLnR4dCAg ICAgICAgfCAgIDgzICsNCj4gPiAgRG9jdW1lbnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9idWZmZXIu cnN0ICAgICAgIHwgICAxMSArLQ0KPiA+ICAuLi4vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNw LXNiZ2dyMTAucnN0ICAgfCAgIDY1ICsNCj4gPiAgLi4uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1t dGlzcC1zYmdncjEwZi5yc3QgIHwgICA5MCArDQo+ID4gIC4uLi9tZWRpYS91YXBpL3Y0bC9waXhm bXQtbXRpc3Atc2JnZ3IxMi5yc3QgICB8ICAgNjEgKw0KPiA+ICAuLi4vbWVkaWEvdWFwaS92NGwv cGl4Zm10LW10aXNwLXNiZ2dyMTJmLnJzdCAgfCAgMTEwICsNCj4gPiAgLi4uL21lZGlhL3VhcGkv djRsL3BpeGZtdC1tdGlzcC1zYmdncjE0LnJzdCAgIHwgICA3MyArDQo+ID4gIC4uLi9tZWRpYS91 YXBpL3Y0bC9waXhmbXQtbXRpc3Atc2JnZ3IxNGYucnN0ICB8ICAxMTAgKw0KPiA+ICAuLi4vbWVk aWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyOC5yc3QgICAgfCAgIDUxICsNCj4gPiAgLi4u L21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjhmLnJzdCAgIHwgICA3OCArDQo+ID4g IGFyY2gvYXJtNjQvYm9vdC9kdHMvbWVkaWF0ZWsvbXQ4MTgzLmR0c2kgICAgICB8ICAgMzggKw0K PiA+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcgICAgICAgICAgICAgICAgfCAgICAx ICsNCj4gPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwg ICAgMSArDQo+ID4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWlzcC9LY29uZmlnICAgICAg ICB8ICAgMjAgKw0KPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLWlzcC9pc3BfNTAvTWFrZWZp bGUgICAgfCAgICAzICsNCj4gPiAgLi4uL3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9NYWtl ZmlsZSAgICAgIHwgICAgNiArDQo+ID4gIC4uLi9wbGF0Zm9ybS9tdGstaXNwL2lzcF81MC9jYW0v bXRrX2NhbS1ody5jICB8ICA2MzYgKysrKysNCj4gPiAgLi4uL3BsYXRmb3JtL210ay1pc3AvaXNw XzUwL2NhbS9tdGtfY2FtLWh3LmggIHwgICA2NCArDQo+ID4gIC4uLi9wbGF0Zm9ybS9tdGstaXNw L2lzcF81MC9jYW0vbXRrX2NhbS1pcGkuaCB8ICAyMjIgKysNCj4gPiAgLi4uL210ay1pc3AvaXNw XzUwL2NhbS9tdGtfY2FtLXJlZ3MuaCAgICAgICAgIHwgICA5NSArDQo+ID4gIC4uLi9wbGF0Zm9y bS9tdGstaXNwL2lzcF81MC9jYW0vbXRrX2NhbS5jICAgICB8IDIwODcgKysrKysrKysrKysrKysr KysNCj4gPiAgLi4uL3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9tdGtfY2FtLmggICAgIHwg IDI0NCArKw0KPiA+ICBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWlvY3RsLmMgICAgICAg ICAgfCAgIDM3ICsNCj4gPiAgaW5jbHVkZS91YXBpL2xpbnV4L3ZpZGVvZGV2Mi5oICAgICAgICAg ICAgICAgIHwgICA0MSArDQo+ID4gIDI0IGZpbGVzIGNoYW5nZWQsIDQyMjYgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL21lZGlhdGVrLGNhbWlzcC50eHQNCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNi Z2dyMTAucnN0DQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL21lZGlhL3Vh cGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdncjEwZi5yc3QNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IERvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTIucnN0DQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZt dC1tdGlzcC1zYmdncjEyZi5yc3QNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRp b24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyMTQucnN0DQo+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tdGlzcC1zYmdn cjE0Zi5yc3QNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vbWVkaWEvdWFw aS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyOC5yc3QNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IERv Y3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW10aXNwLXNiZ2dyOGYucnN0DQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1pc3AvS2NvbmZp Zw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNw L2lzcF81MC9NYWtlZmlsZQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstaXNwL2lzcF81MC9jYW0vTWFrZWZpbGUNCj4gPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWlzcC9pc3BfNTAvY2FtL210a19jYW0taHcu Yw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstaXNw L2lzcF81MC9jYW0vbXRrX2NhbS1ody5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9tdGtfY2FtLWlwaS5oDQo+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2Nh bS9tdGtfY2FtLXJlZ3MuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstaXNwL2lzcF81MC9jYW0vbXRrX2NhbS5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1pc3AvaXNwXzUwL2NhbS9tdGtfY2FtLmgN Cj4gPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fDQo+IExpbnV4LW1lZGlhdGVrIG1haWxpbmcgbGlzdA0KPiBMaW51eC1tZWRpYXRla0BsaXN0 cy5pbmZyYWRlYWQub3JnDQo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtbWVkaWF0ZWsNCg0K