From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Date: Fri, 11 Dec 2015 06:26:48 +0000 Subject: Re: [PATCH RFC 0/9] omapdrm/omapfb/omapdss split Message-Id: <566A69D8.2060607@codeaurora.org> List-Id: References: <1449757535-5674-1-git-send-email-tomi.valkeinen@ti.com> In-Reply-To: <1449757535-5674-1-git-send-email-tomi.valkeinen@ti.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Tomi Valkeinen , dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, Laurent Pinchart On 12/10/2015 07:55 PM, Tomi Valkeinen wrote: > Hi, > > Here's an RFC series to fix the mess we have at the moment with > omapdrm/omapfb/omapdss. > > First, a short background on the current status. We have the following > entities: > > * omapdss, located in drivers/video/fbdev/omap2/dss/. This is a driver for the > display subsystem IPs used on OMAP (and related) SoCs. It offers only a > kernel internal API, and does not implement anything for fbdev or drm. > > * omapdss panels and encoders, located in > drivers/video/fbdev/omap2/displays-new/. These are panel and external encoder > drivers, which use APIs offered by omapdss driver. These also don't implement > anything for fbdev or drm. > > * omapdrm, located in drivers/gpu/drm/omapdrm/. This is a drm driver, which > uses omapdss and the panel/encoder drivers to operate the hardware. > > * omapfb, located in drivers/video/fbdev/omap2/omapfb/. This is an fbdev > driver, which uses omapdss and the panel/encoder drivers to operate the > hardware. > > * omap_vout, located in drivers/media/platform/omap/. This is a v4l2 driver, > which uses omapdss and omapfb to implement a v4l2 API for the video overlays. > > So, on the top level, we have either omapdrm, or omapfb+omap_vout. Both of > those use the same low level drivers. Without going to the historical details > why the architecture is like that, I think it's finally time to change that. > > The situation with omapfb+omap_vout is that it still works, but no new features > have been added for a long time, and I want to keep it working as it's still > being used. At some point in the future I'd like to remove omapfb and > omap_vout altogether. > > Omapdrm, on the other hand, is being actively developed. Sharing the low level > parts with omapfb makes that development more difficult than it should be. It > also "hides" half of the development, as everything happening in the low level > parts resides under fbdev directory, not in the drm directory. > > I've been wanting to clean this up for a long time, but I haven't figured out a > very good way to do it. I still haven't, but here's the best way I have come up > with. > > This series makes a full copy of the low level parts, omapdss and panel/encoder > drivers. Both omapfb+omap_vout and omapdrm will have their own versions. The > copy omapfb+omap_vout get is a new copy, and the copy that omapdrm gets is just > the current files moved. This way git will associate the omapdrm version with > the old files. Is it possible to make omapfb get some of the old files (apply.c, overlay.c, manager.c, sysfs files etc)? It might be helpful to have git associate these files with omapfb/omap_vout since they have been the only users of it. After cleanups, these files would eventually be removed in the omapdrm copy, and it would be hard to track their history using the omapfb copy. > > The omapfb+omap_vout versions won't be touched unless there are some big issues > there. > > The omapdrm versions can be refactored and cleaned up, as the omapfb support > code is no longer needed. We can perhaps also merge omapdss and omapdrm into > the same kernel module. > > This series only does the copy, and the absolutely necessary parts. No further > cleanups are done yet. Ack for the series! Archit > > Tomi > > Tomi Valkeinen (9): > omapfb: allow compilation only if DRM_OMAP is disabled > omapfb: copy omapdss & displays for omapfb > omapdss: remove CONFIG_OMAP2_DSS_VENC from omapdss.h > omapfb/dss: change CONFIG_OMAP* to CONFIG_FB_OMAP* > omapfb/displays: change CONFIG_DISPLAY_* to CONFIG_FB_OMAP2_* > omapfb: take omapfb's prive omapdss into use > omapfb: move vrfb into omapfb > drm/omap: move omapdss & displays under omapdrm > drm/omap: make omapdrm select OMAP2_DSS > > drivers/gpu/drm/Makefile | 2 +- > drivers/gpu/drm/omapdrm/Kconfig | 10 +- > drivers/gpu/drm/omapdrm/Makefile | 3 + > .../drm/omapdrm/displays}/Kconfig | 3 +- > .../drm/omapdrm/displays}/Makefile | 0 > .../drm/omapdrm/displays}/connector-analog-tv.c | 0 > .../drm/omapdrm/displays}/connector-dvi.c | 0 > .../drm/omapdrm/displays}/connector-hdmi.c | 0 > .../drm/omapdrm/displays}/encoder-opa362.c | 0 > .../drm/omapdrm/displays}/encoder-tfp410.c | 0 > .../drm/omapdrm/displays}/encoder-tpd12s015.c | 0 > .../drm/omapdrm/displays}/panel-dpi.c | 0 > .../drm/omapdrm/displays}/panel-dsi-cm.c | 0 > .../omapdrm/displays}/panel-lgphilips-lb035q02.c | 0 > .../drm/omapdrm/displays}/panel-nec-nl8048hl11.c | 0 > .../omapdrm/displays}/panel-sharp-ls037v7dw01.c | 0 > .../drm/omapdrm/displays}/panel-sony-acx565akm.c | 0 > .../drm/omapdrm/displays}/panel-tpo-td028ttec1.c | 0 > .../drm/omapdrm/displays}/panel-tpo-td043mtea1.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/Kconfig | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/Makefile | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/apply.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/core.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/dispc-compat.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/dispc-compat.h | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc.h | 0 > .../omap2 => gpu/drm/omapdrm}/dss/dispc_coefs.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/display-sysfs.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/display.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dpi.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dsi.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dss-of.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dss.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/dss.h | 0 > .../omap2 => gpu/drm/omapdrm}/dss/dss_features.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/dss_features.h | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi.h | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi4.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/hdmi4_core.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/hdmi4_core.h | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi5.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/hdmi5_core.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/hdmi5_core.h | 0 > .../omap2 => gpu/drm/omapdrm}/dss/hdmi_common.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_phy.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_pll.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_wp.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/manager-sysfs.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/manager.c | 0 > .../drm/omapdrm}/dss/omapdss-boot-init.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/output.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/overlay-sysfs.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/overlay.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/pll.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/rfbi.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/sdi.c | 0 > .../fbdev/omap2 => gpu/drm/omapdrm}/dss/venc.c | 0 > .../omap2 => gpu/drm/omapdrm}/dss/video-pll.c | 0 > drivers/media/platform/omap/Kconfig | 2 +- > drivers/video/fbdev/omap2/Kconfig | 5 - > drivers/video/fbdev/omap2/Makefile | 6 +- > drivers/video/fbdev/omap2/omapfb/Kconfig | 14 +- > drivers/video/fbdev/omap2/omapfb/Makefile | 3 + > drivers/video/fbdev/omap2/omapfb/displays/Kconfig | 86 + > drivers/video/fbdev/omap2/omapfb/displays/Makefile | 14 + > .../omap2/omapfb/displays/connector-analog-tv.c | 320 ++ > .../fbdev/omap2/omapfb/displays/connector-dvi.c | 398 ++ > .../fbdev/omap2/omapfb/displays/connector-hdmi.c | 348 ++ > .../fbdev/omap2/omapfb/displays/encoder-opa362.c | 278 + > .../fbdev/omap2/omapfb/displays/encoder-tfp410.c | 320 ++ > .../omap2/omapfb/displays/encoder-tpd12s015.c | 379 ++ > .../video/fbdev/omap2/omapfb/displays/panel-dpi.c | 330 ++ > .../fbdev/omap2/omapfb/displays/panel-dsi-cm.c | 1388 +++++ > .../omapfb/displays/panel-lgphilips-lb035q02.c | 404 ++ > .../omap2/omapfb/displays/panel-nec-nl8048hl11.c | 437 ++ > .../omapfb/displays/panel-sharp-ls037v7dw01.c | 415 ++ > .../omap2/omapfb/displays/panel-sony-acx565akm.c | 917 ++++ > .../omap2/omapfb/displays/panel-tpo-td028ttec1.c | 511 ++ > .../omap2/omapfb/displays/panel-tpo-td043mtea1.c | 686 +++ > drivers/video/fbdev/omap2/omapfb/dss/Kconfig | 129 + > drivers/video/fbdev/omap2/omapfb/dss/Makefile | 18 + > drivers/video/fbdev/omap2/omapfb/dss/apply.c | 1702 ++++++ > drivers/video/fbdev/omap2/omapfb/dss/core.c | 343 ++ > .../video/fbdev/omap2/omapfb/dss/dispc-compat.c | 667 +++ > .../video/fbdev/omap2/omapfb/dss/dispc-compat.h | 30 + > drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 4135 +++++++++++++++ > drivers/video/fbdev/omap2/omapfb/dss/dispc.h | 916 ++++ > drivers/video/fbdev/omap2/omapfb/dss/dispc_coefs.c | 325 ++ > .../video/fbdev/omap2/omapfb/dss/display-sysfs.c | 356 ++ > drivers/video/fbdev/omap2/omapfb/dss/display.c | 338 ++ > drivers/video/fbdev/omap2/omapfb/dss/dpi.c | 899 ++++ > drivers/video/fbdev/omap2/omapfb/dss/dsi.c | 5607 ++++++++++++++++++++ > drivers/video/fbdev/omap2/omapfb/dss/dss-of.c | 183 + > drivers/video/fbdev/omap2/omapfb/dss/dss.c | 1323 +++++ > drivers/video/fbdev/omap2/omapfb/dss/dss.h | 472 ++ > .../video/fbdev/omap2/omapfb/dss/dss_features.c | 962 ++++ > .../video/fbdev/omap2/omapfb/dss/dss_features.h | 105 + > drivers/video/fbdev/omap2/omapfb/dss/hdmi.h | 370 ++ > drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c | 839 +++ > drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c | 904 ++++ > drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.h | 273 + > drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c | 876 +++ > drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c | 916 ++++ > drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.h | 304 ++ > drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c | 148 + > drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c | 247 + > drivers/video/fbdev/omap2/omapfb/dss/hdmi_pll.c | 255 + > drivers/video/fbdev/omap2/omapfb/dss/hdmi_wp.c | 282 + > .../video/fbdev/omap2/omapfb/dss/manager-sysfs.c | 531 ++ > drivers/video/fbdev/omap2/omapfb/dss/manager.c | 263 + > .../fbdev/omap2/omapfb/dss/omapdss-boot-init.c | 227 + > drivers/video/fbdev/omap2/omapfb/dss/output.c | 267 + > .../video/fbdev/omap2/omapfb/dss/overlay-sysfs.c | 456 ++ > drivers/video/fbdev/omap2/omapfb/dss/overlay.c | 202 + > drivers/video/fbdev/omap2/omapfb/dss/pll.c | 389 ++ > drivers/video/fbdev/omap2/omapfb/dss/rfbi.c | 1078 ++++ > drivers/video/fbdev/omap2/omapfb/dss/sdi.c | 454 ++ > drivers/video/fbdev/omap2/omapfb/dss/venc.c | 997 ++++ > drivers/video/fbdev/omap2/omapfb/dss/video-pll.c | 211 + > drivers/video/fbdev/omap2/{ => omapfb}/vrfb.c | 0 > include/video/omapdss.h | 2 - > 122 files changed, 36260 insertions(+), 20 deletions(-) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/Kconfig (96%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/Makefile (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/connector-analog-tv.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/connector-dvi.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/connector-hdmi.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/encoder-opa362.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/encoder-tfp410.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/encoder-tpd12s015.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-dpi.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-dsi-cm.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-lgphilips-lb035q02.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-nec-nl8048hl11.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-sharp-ls037v7dw01.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-sony-acx565akm.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-tpo-td028ttec1.c (100%) > rename drivers/{video/fbdev/omap2/displays-new => gpu/drm/omapdrm/displays}/panel-tpo-td043mtea1.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/Kconfig (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/Makefile (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/apply.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/core.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc-compat.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc-compat.h (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc.h (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dispc_coefs.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/display-sysfs.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/display.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dpi.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dsi.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss-of.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss.h (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss_features.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/dss_features.h (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi.h (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi4.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi4_core.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi4_core.h (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi5.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi5_core.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi5_core.h (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_common.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_phy.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_pll.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/hdmi_wp.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/manager-sysfs.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/manager.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/omapdss-boot-init.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/output.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/overlay-sysfs.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/overlay.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/pll.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/rfbi.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/sdi.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/venc.c (100%) > rename drivers/{video/fbdev/omap2 => gpu/drm/omapdrm}/dss/video-pll.c (100%) > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/Kconfig > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/Makefile > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/connector-analog-tv.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/connector-dvi.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/connector-hdmi.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/encoder-opa362.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/encoder-tfp410.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/encoder-tpd12s015.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-dpi.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-lgphilips-lb035q02.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-nec-nl8048hl11.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-sharp-ls037v7dw01.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-sony-acx565akm.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td043mtea1.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/Kconfig > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/Makefile > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/apply.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/core.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc-compat.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc-compat.h > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc.h > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dispc_coefs.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/display-sysfs.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/display.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dpi.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dsi.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss-of.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss.h > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss_features.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/dss_features.h > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi.h > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi4_core.h > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi5_core.h > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi_common.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi_pll.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/hdmi_wp.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/manager-sysfs.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/manager.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/omapdss-boot-init.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/output.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/overlay-sysfs.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/overlay.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/pll.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/rfbi.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/sdi.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/venc.c > create mode 100644 drivers/video/fbdev/omap2/omapfb/dss/video-pll.c > rename drivers/video/fbdev/omap2/{ => omapfb}/vrfb.c (100%) > -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH RFC 0/9] omapdrm/omapfb/omapdss split Date: Fri, 11 Dec 2015 11:44:48 +0530 Message-ID: <566A69D8.2060607@codeaurora.org> References: <1449757535-5674-1-git-send-email-tomi.valkeinen@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id D44BF6E32B for ; Thu, 10 Dec 2015 22:14:58 -0800 (PST) In-Reply-To: <1449757535-5674-1-git-send-email-tomi.valkeinen@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tomi Valkeinen , dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org CgpPbiAxMi8xMC8yMDE1IDA3OjU1IFBNLCBUb21pIFZhbGtlaW5lbiB3cm90ZToKPiBIaSwKPgo+ IEhlcmUncyBhbiBSRkMgc2VyaWVzIHRvIGZpeCB0aGUgbWVzcyB3ZSBoYXZlIGF0IHRoZSBtb21l bnQgd2l0aAo+IG9tYXBkcm0vb21hcGZiL29tYXBkc3MuCj4KPiBGaXJzdCwgYSBzaG9ydCBiYWNr Z3JvdW5kIG9uIHRoZSBjdXJyZW50IHN0YXR1cy4gV2UgaGF2ZSB0aGUgZm9sbG93aW5nCj4gZW50 aXRpZXM6Cj4KPiAqIG9tYXBkc3MsIGxvY2F0ZWQgaW4gZHJpdmVycy92aWRlby9mYmRldi9vbWFw Mi9kc3MvLiBUaGlzIGlzIGEgZHJpdmVyIGZvciB0aGUKPiAgICBkaXNwbGF5IHN1YnN5c3RlbSBJ UHMgdXNlZCBvbiBPTUFQIChhbmQgcmVsYXRlZCkgU29Dcy4gSXQgb2ZmZXJzIG9ubHkgYQo+ICAg IGtlcm5lbCBpbnRlcm5hbCBBUEksIGFuZCBkb2VzIG5vdCBpbXBsZW1lbnQgYW55dGhpbmcgZm9y IGZiZGV2IG9yIGRybS4KPgo+ICogb21hcGRzcyBwYW5lbHMgYW5kIGVuY29kZXJzLCBsb2NhdGVk IGluCj4gICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9kaXNwbGF5cy1uZXcvLiBUaGVzZSBh cmUgcGFuZWwgYW5kIGV4dGVybmFsIGVuY29kZXIKPiAgICBkcml2ZXJzLCB3aGljaCB1c2UgQVBJ cyBvZmZlcmVkIGJ5IG9tYXBkc3MgZHJpdmVyLiBUaGVzZSBhbHNvIGRvbid0IGltcGxlbWVudAo+ ICAgIGFueXRoaW5nIGZvciBmYmRldiBvciBkcm0uCj4KPiAqIG9tYXBkcm0sIGxvY2F0ZWQgaW4g ZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vLiBUaGlzIGlzIGEgZHJtIGRyaXZlciwgd2hpY2gKPiAg ICB1c2VzIG9tYXBkc3MgYW5kIHRoZSBwYW5lbC9lbmNvZGVyIGRyaXZlcnMgdG8gb3BlcmF0ZSB0 aGUgaGFyZHdhcmUuCj4KPiAqIG9tYXBmYiwgbG9jYXRlZCBpbiBkcml2ZXJzL3ZpZGVvL2ZiZGV2 L29tYXAyL29tYXBmYi8uIFRoaXMgaXMgYW4gZmJkZXYKPiAgICBkcml2ZXIsIHdoaWNoIHVzZXMg b21hcGRzcyBhbmQgdGhlIHBhbmVsL2VuY29kZXIgZHJpdmVycyB0byBvcGVyYXRlIHRoZQo+ICAg IGhhcmR3YXJlLgo+Cj4gKiBvbWFwX3ZvdXQsIGxvY2F0ZWQgaW4gZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9vbWFwLy4gVGhpcyBpcyBhIHY0bDIgZHJpdmVyLAo+ICAgIHdoaWNoIHVzZXMgb21hcGRz cyBhbmQgb21hcGZiIHRvIGltcGxlbWVudCBhIHY0bDIgQVBJIGZvciB0aGUgdmlkZW8gb3Zlcmxh eXMuCj4KPiBTbywgb24gdGhlIHRvcCBsZXZlbCwgd2UgaGF2ZSBlaXRoZXIgb21hcGRybSwgb3Ig b21hcGZiK29tYXBfdm91dC4gQm90aCBvZgo+IHRob3NlIHVzZSB0aGUgc2FtZSBsb3cgbGV2ZWwg ZHJpdmVycy4gV2l0aG91dCBnb2luZyB0byB0aGUgaGlzdG9yaWNhbCBkZXRhaWxzCj4gd2h5IHRo ZSBhcmNoaXRlY3R1cmUgaXMgbGlrZSB0aGF0LCBJIHRoaW5rIGl0J3MgZmluYWxseSB0aW1lIHRv IGNoYW5nZSB0aGF0Lgo+Cj4gVGhlIHNpdHVhdGlvbiB3aXRoIG9tYXBmYitvbWFwX3ZvdXQgaXMg dGhhdCBpdCBzdGlsbCB3b3JrcywgYnV0IG5vIG5ldyBmZWF0dXJlcwo+IGhhdmUgYmVlbiBhZGRl ZCBmb3IgYSBsb25nIHRpbWUsIGFuZCBJIHdhbnQgdG8ga2VlcCBpdCB3b3JraW5nIGFzIGl0J3Mg c3RpbGwKPiBiZWluZyB1c2VkLiAgQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlIEknZCBsaWtl IHRvIHJlbW92ZSBvbWFwZmIgYW5kCj4gb21hcF92b3V0IGFsdG9nZXRoZXIuCj4KPiBPbWFwZHJt LCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgYmVpbmcgYWN0aXZlbHkgZGV2ZWxvcGVkLiBTaGFyaW5n IHRoZSBsb3cgbGV2ZWwKPiBwYXJ0cyB3aXRoIG9tYXBmYiBtYWtlcyB0aGF0IGRldmVsb3BtZW50 IG1vcmUgZGlmZmljdWx0IHRoYW4gaXQgc2hvdWxkIGJlLiBJdAo+IGFsc28gImhpZGVzIiBoYWxm IG9mIHRoZSBkZXZlbG9wbWVudCwgYXMgZXZlcnl0aGluZyBoYXBwZW5pbmcgaW4gdGhlIGxvdyBs ZXZlbAo+IHBhcnRzIHJlc2lkZXMgdW5kZXIgZmJkZXYgZGlyZWN0b3J5LCBub3QgaW4gdGhlIGRy bSBkaXJlY3RvcnkuCj4KPiBJJ3ZlIGJlZW4gd2FudGluZyB0byBjbGVhbiB0aGlzIHVwIGZvciBh IGxvbmcgdGltZSwgYnV0IEkgaGF2ZW4ndCBmaWd1cmVkIG91dCBhCj4gdmVyeSBnb29kIHdheSB0 byBkbyBpdC4gSSBzdGlsbCBoYXZlbid0LCBidXQgaGVyZSdzIHRoZSBiZXN0IHdheSBJIGhhdmUg Y29tZSB1cAo+IHdpdGguCj4KPiBUaGlzIHNlcmllcyBtYWtlcyBhIGZ1bGwgY29weSBvZiB0aGUg bG93IGxldmVsIHBhcnRzLCBvbWFwZHNzIGFuZCBwYW5lbC9lbmNvZGVyCj4gZHJpdmVycy4gQm90 aCBvbWFwZmIrb21hcF92b3V0IGFuZCBvbWFwZHJtIHdpbGwgaGF2ZSB0aGVpciBvd24gdmVyc2lv bnMuIFRoZQo+IGNvcHkgb21hcGZiK29tYXBfdm91dCBnZXQgaXMgYSBuZXcgY29weSwgYW5kIHRo ZSBjb3B5IHRoYXQgb21hcGRybSBnZXRzIGlzIGp1c3QKPiB0aGUgY3VycmVudCBmaWxlcyBtb3Zl ZC4gVGhpcyB3YXkgZ2l0IHdpbGwgYXNzb2NpYXRlIHRoZSBvbWFwZHJtIHZlcnNpb24gd2l0aAo+ IHRoZSBvbGQgZmlsZXMuCgpJcyBpdCBwb3NzaWJsZSB0byBtYWtlIG9tYXBmYiBnZXQgc29tZSBv ZiB0aGUgb2xkIGZpbGVzIChhcHBseS5jLCAKb3ZlcmxheS5jLCBtYW5hZ2VyLmMsIHN5c2ZzIGZp bGVzIGV0Yyk/IEl0IG1pZ2h0IGJlIGhlbHBmdWwgdG8gaGF2ZSBnaXQgCmFzc29jaWF0ZSB0aGVz ZSBmaWxlcyB3aXRoIG9tYXBmYi9vbWFwX3ZvdXQgc2luY2UgdGhleSBoYXZlIGJlZW4gdGhlIApv bmx5IHVzZXJzIG9mIGl0LiBBZnRlciBjbGVhbnVwcywgdGhlc2UgZmlsZXMgd291bGQgZXZlbnR1 YWxseSBiZQpyZW1vdmVkIGluIHRoZSBvbWFwZHJtIGNvcHksIGFuZCBpdCB3b3VsZCBiZSBoYXJk IHRvIHRyYWNrIHRoZWlyIGhpc3RvcnkKdXNpbmcgdGhlIG9tYXBmYiBjb3B5LgoKPgo+IFRoZSBv bWFwZmIrb21hcF92b3V0IHZlcnNpb25zIHdvbid0IGJlIHRvdWNoZWQgdW5sZXNzIHRoZXJlIGFy ZSBzb21lIGJpZyBpc3N1ZXMKPiB0aGVyZS4KPgo+IFRoZSBvbWFwZHJtIHZlcnNpb25zIGNhbiBi ZSByZWZhY3RvcmVkIGFuZCBjbGVhbmVkIHVwLCBhcyB0aGUgb21hcGZiIHN1cHBvcnQKPiBjb2Rl IGlzIG5vIGxvbmdlciBuZWVkZWQuIFdlIGNhbiBwZXJoYXBzIGFsc28gbWVyZ2Ugb21hcGRzcyBh bmQgb21hcGRybSBpbnRvCj4gdGhlIHNhbWUga2VybmVsIG1vZHVsZS4KPgo+IFRoaXMgc2VyaWVz IG9ubHkgZG9lcyB0aGUgY29weSwgYW5kIHRoZSBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSBwYXJ0cy4g Tm8gZnVydGhlcgo+IGNsZWFudXBzIGFyZSBkb25lIHlldC4KCkFjayBmb3IgdGhlIHNlcmllcyEK CkFyY2hpdAoKPgo+ICAgVG9taQo+Cj4gVG9taSBWYWxrZWluZW4gKDkpOgo+ICAgIG9tYXBmYjog YWxsb3cgY29tcGlsYXRpb24gb25seSBpZiBEUk1fT01BUCBpcyBkaXNhYmxlZAo+ICAgIG9tYXBm YjogY29weSBvbWFwZHNzICYgZGlzcGxheXMgZm9yIG9tYXBmYgo+ICAgIG9tYXBkc3M6IHJlbW92 ZSBDT05GSUdfT01BUDJfRFNTX1ZFTkMgZnJvbSBvbWFwZHNzLmgKPiAgICBvbWFwZmIvZHNzOiBj aGFuZ2UgQ09ORklHX09NQVAqIHRvIENPTkZJR19GQl9PTUFQKgo+ICAgIG9tYXBmYi9kaXNwbGF5 czogY2hhbmdlIENPTkZJR19ESVNQTEFZXyogdG8gQ09ORklHX0ZCX09NQVAyXyoKPiAgICBvbWFw ZmI6IHRha2Ugb21hcGZiJ3MgcHJpdmUgb21hcGRzcyBpbnRvIHVzZQo+ICAgIG9tYXBmYjogbW92 ZSB2cmZiIGludG8gb21hcGZiCj4gICAgZHJtL29tYXA6IG1vdmUgb21hcGRzcyAmIGRpc3BsYXlz IHVuZGVyIG9tYXBkcm0KPiAgICBkcm0vb21hcDogbWFrZSBvbWFwZHJtIHNlbGVjdCBPTUFQMl9E U1MKPgo+ICAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9LY29uZmlnICAgICAgICAg ICAgICAgICAgICB8ICAgMTAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL01ha2VmaWxl ICAgICAgICAgICAgICAgICAgIHwgICAgMyArCj4gICAuLi4vZHJtL29tYXBkcm0vZGlzcGxheXN9 L0tjb25maWcgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgIC4uLi9kcm0vb21hcGRybS9k aXNwbGF5c30vTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAgMAo+ICAgLi4uL2RybS9vbWFw ZHJtL2Rpc3BsYXlzfS9jb25uZWN0b3ItYW5hbG9nLXR2LmMgICAgfCAgICAwCj4gICAuLi4vZHJt L29tYXBkcm0vZGlzcGxheXN9L2Nvbm5lY3Rvci1kdmkuYyAgICAgICAgICB8ICAgIDAKPiAgIC4u Li9kcm0vb21hcGRybS9kaXNwbGF5c30vY29ubmVjdG9yLWhkbWkuYyAgICAgICAgIHwgICAgMAo+ ICAgLi4uL2RybS9vbWFwZHJtL2Rpc3BsYXlzfS9lbmNvZGVyLW9wYTM2Mi5jICAgICAgICAgfCAg ICAwCj4gICAuLi4vZHJtL29tYXBkcm0vZGlzcGxheXN9L2VuY29kZXItdGZwNDEwLmMgICAgICAg ICB8ICAgIDAKPiAgIC4uLi9kcm0vb21hcGRybS9kaXNwbGF5c30vZW5jb2Rlci10cGQxMnMwMTUu YyAgICAgIHwgICAgMAo+ICAgLi4uL2RybS9vbWFwZHJtL2Rpc3BsYXlzfS9wYW5lbC1kcGkuYyAg ICAgICAgICAgICAgfCAgICAwCj4gICAuLi4vZHJtL29tYXBkcm0vZGlzcGxheXN9L3BhbmVsLWRz aS1jbS5jICAgICAgICAgICB8ICAgIDAKPiAgIC4uLi9vbWFwZHJtL2Rpc3BsYXlzfS9wYW5lbC1s Z3BoaWxpcHMtbGIwMzVxMDIuYyAgIHwgICAgMAo+ICAgLi4uL2RybS9vbWFwZHJtL2Rpc3BsYXlz fS9wYW5lbC1uZWMtbmw4MDQ4aGwxMS5jICAgfCAgICAwCj4gICAuLi4vb21hcGRybS9kaXNwbGF5 c30vcGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEuYyAgICB8ICAgIDAKPiAgIC4uLi9kcm0vb21hcGRy bS9kaXNwbGF5c30vcGFuZWwtc29ueS1hY3g1NjVha20uYyAgIHwgICAgMAo+ICAgLi4uL2RybS9v bWFwZHJtL2Rpc3BsYXlzfS9wYW5lbC10cG8tdGQwMjh0dGVjMS5jICAgfCAgICAwCj4gICAuLi4v ZHJtL29tYXBkcm0vZGlzcGxheXN9L3BhbmVsLXRwby10ZDA0M210ZWExLmMgICB8ICAgIDAKPiAg IC4uLi9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9LY29uZmlnICAgIHwgICAg MAo+ICAgLi4uL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL01ha2VmaWxlICAg fCAgICAwCj4gICAuLi4vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvYXBwbHku YyAgICB8ICAgIDAKPiAgIC4uLi9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9j b3JlLmMgICAgIHwgICAgMAo+ICAgLi4uL29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2Rp c3BjLWNvbXBhdC5jICAgfCAgICAwCj4gICAuLi4vb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9k c3MvZGlzcGMtY29tcGF0LmggICB8ICAgIDAKPiAgIC4uLi9mYmRldi9vbWFwMiA9PiBncHUvZHJt L29tYXBkcm19L2Rzcy9kaXNwYy5jICAgIHwgICAgMAo+ICAgLi4uL2ZiZGV2L29tYXAyID0+IGdw dS9kcm0vb21hcGRybX0vZHNzL2Rpc3BjLmggICAgfCAgICAwCj4gICAuLi4vb21hcDIgPT4gZ3B1 L2RybS9vbWFwZHJtfS9kc3MvZGlzcGNfY29lZnMuYyAgICB8ICAgIDAKPiAgIC4uLi9vbWFwMiA9 PiBncHUvZHJtL29tYXBkcm19L2Rzcy9kaXNwbGF5LXN5c2ZzLmMgIHwgICAgMAo+ICAgLi4uL2Zi ZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2Rpc3BsYXkuYyAgfCAgICAwCj4gICAu Li4vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvZHBpLmMgICAgICB8ICAgIDAK PiAgIC4uLi9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9kc2kuYyAgICAgIHwg ICAgMAo+ICAgLi4uL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2Rzcy1vZi5j ICAgfCAgICAwCj4gICAuLi4vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvZHNz LmMgICAgICB8ICAgIDAKPiAgIC4uLi9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rz cy9kc3MuaCAgICAgIHwgICAgMAo+ICAgLi4uL29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNz L2Rzc19mZWF0dXJlcy5jICAgfCAgICAwCj4gICAuLi4vb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJt fS9kc3MvZHNzX2ZlYXR1cmVzLmggICB8ICAgIDAKPiAgIC4uLi9mYmRldi9vbWFwMiA9PiBncHUv ZHJtL29tYXBkcm19L2Rzcy9oZG1pLmggICAgIHwgICAgMAo+ICAgLi4uL2ZiZGV2L29tYXAyID0+ IGdwdS9kcm0vb21hcGRybX0vZHNzL2hkbWk0LmMgICAgfCAgICAwCj4gICAuLi4vb21hcDIgPT4g Z3B1L2RybS9vbWFwZHJtfS9kc3MvaGRtaTRfY29yZS5jICAgICB8ICAgIDAKPiAgIC4uLi9vbWFw MiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9oZG1pNF9jb3JlLmggICAgIHwgICAgMAo+ICAgLi4u L2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2hkbWk1LmMgICAgfCAgICAwCj4g ICAuLi4vb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvaGRtaTVfY29yZS5jICAgICB8ICAg IDAKPiAgIC4uLi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9oZG1pNV9jb3JlLmggICAg IHwgICAgMAo+ICAgLi4uL29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2hkbWlfY29tbW9u LmMgICAgfCAgICAwCj4gICAuLi4vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3Mv aGRtaV9waHkuYyB8ICAgIDAKPiAgIC4uLi9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19 L2Rzcy9oZG1pX3BsbC5jIHwgICAgMAo+ICAgLi4uL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21h cGRybX0vZHNzL2hkbWlfd3AuYyAgfCAgICAwCj4gICAuLi4vb21hcDIgPT4gZ3B1L2RybS9vbWFw ZHJtfS9kc3MvbWFuYWdlci1zeXNmcy5jICB8ICAgIDAKPiAgIC4uLi9mYmRldi9vbWFwMiA9PiBn cHUvZHJtL29tYXBkcm19L2Rzcy9tYW5hZ2VyLmMgIHwgICAgMAo+ICAgLi4uL2RybS9vbWFwZHJt fS9kc3Mvb21hcGRzcy1ib290LWluaXQuYyAgICAgICAgICAgfCAgICAwCj4gICAuLi4vZmJkZXYv b21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3Mvb3V0cHV0LmMgICB8ICAgIDAKPiAgIC4uLi9v bWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9vdmVybGF5LXN5c2ZzLmMgIHwgICAgMAo+ICAg Li4uL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL292ZXJsYXkuYyAgfCAgICAw Cj4gICAuLi4vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvcGxsLmMgICAgICB8 ICAgIDAKPiAgIC4uLi9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9yZmJpLmMg ICAgIHwgICAgMAo+ICAgLi4uL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL3Nk aS5jICAgICAgfCAgICAwCj4gICAuLi4vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9k c3MvdmVuYy5jICAgICB8ICAgIDAKPiAgIC4uLi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rz cy92aWRlby1wbGwuYyAgICAgIHwgICAgMAo+ICAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFw L0tjb25maWcgICAgICAgICAgICAgICAgfCAgICAyICstCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2 L29tYXAyL0tjb25maWcgICAgICAgICAgICAgICAgICB8ICAgIDUgLQo+ICAgZHJpdmVycy92aWRl by9mYmRldi9vbWFwMi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgICA2ICstCj4gICBkcml2 ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9LY29uZmlnICAgICAgICAgICB8ICAgMTQgKy0K PiAgIGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL01ha2VmaWxlICAgICAgICAgIHwg ICAgMyArCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9LY29u ZmlnICB8ICAgODYgKwo+ICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxh eXMvTWFrZWZpbGUgfCAgIDE0ICsKPiAgIC4uLi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvY29ubmVj dG9yLWFuYWxvZy10di5jICAgIHwgIDMyMCArKwo+ICAgLi4uL2ZiZGV2L29tYXAyL29tYXBmYi9k aXNwbGF5cy9jb25uZWN0b3ItZHZpLmMgICAgfCAgMzk4ICsrCj4gICAuLi4vZmJkZXYvb21hcDIv b21hcGZiL2Rpc3BsYXlzL2Nvbm5lY3Rvci1oZG1pLmMgICB8ICAzNDggKysKPiAgIC4uLi9mYmRl di9vbWFwMi9vbWFwZmIvZGlzcGxheXMvZW5jb2Rlci1vcGEzNjIuYyAgIHwgIDI3OCArCj4gICAu Li4vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL2VuY29kZXItdGZwNDEwLmMgICB8ICAzMjAg KysKPiAgIC4uLi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvZW5jb2Rlci10cGQxMnMwMTUuYyAgICAg IHwgIDM3OSArKwo+ICAgLi4uL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9wYW5l bC1kcGkuYyAgfCAgMzMwICsrCj4gICAuLi4vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL3Bh bmVsLWRzaS1jbS5jICAgICB8IDEzODggKysrKysKPiAgIC4uLi9vbWFwZmIvZGlzcGxheXMvcGFu ZWwtbGdwaGlsaXBzLWxiMDM1cTAyLmMgICAgIHwgIDQwNCArKwo+ICAgLi4uL29tYXAyL29tYXBm Yi9kaXNwbGF5cy9wYW5lbC1uZWMtbmw4MDQ4aGwxMS5jICAgfCAgNDM3ICsrCj4gICAuLi4vb21h cGZiL2Rpc3BsYXlzL3BhbmVsLXNoYXJwLWxzMDM3djdkdzAxLmMgICAgICB8ICA0MTUgKysKPiAg IC4uLi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtc29ueS1hY3g1NjVha20uYyAgIHwgIDkx NyArKysrCj4gICAuLi4vb21hcDIvb21hcGZiL2Rpc3BsYXlzL3BhbmVsLXRwby10ZDAyOHR0ZWMx LmMgICB8ICA1MTEgKysKPiAgIC4uLi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtdHBvLXRk MDQzbXRlYTEuYyAgIHwgIDY4NiArKysKPiAgIGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21h cGZiL2Rzcy9LY29uZmlnICAgICAgIHwgIDEyOSArCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29t YXAyL29tYXBmYi9kc3MvTWFrZWZpbGUgICAgICB8ICAgMTggKwo+ICAgZHJpdmVycy92aWRlby9m YmRldi9vbWFwMi9vbWFwZmIvZHNzL2FwcGx5LmMgICAgICAgfCAxNzAyICsrKysrKwo+ICAgZHJp dmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL2NvcmUuYyAgICAgICAgfCAgMzQzICsr Cj4gICAuLi4vdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kaXNwYy1jb21wYXQuYyAgICB8 ICA2NjcgKysrCj4gICAuLi4vdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kaXNwYy1jb21w YXQuaCAgICB8ICAgMzAgKwo+ICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNz L2Rpc3BjLmMgICAgICAgfCA0MTM1ICsrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy92aWRlby9m YmRldi9vbWFwMi9vbWFwZmIvZHNzL2Rpc3BjLmggICAgICAgfCAgOTE2ICsrKysKPiAgIGRyaXZl cnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kaXNwY19jb2Vmcy5jIHwgIDMyNSArKwo+ ICAgLi4uL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvZGlzcGxheS1zeXNmcy5jICAgfCAg MzU2ICsrCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvZGlzcGxheS5j ICAgICB8ICAzMzggKysKPiAgIGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9k cGkuYyAgICAgICAgIHwgIDg5OSArKysrCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29t YXBmYi9kc3MvZHNpLmMgICAgICAgICB8IDU2MDcgKysrKysrKysrKysrKysrKysrKysKPiAgIGRy aXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kc3Mtb2YuYyAgICAgIHwgIDE4MyAr Cj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvZHNzLmMgICAgICAgICB8 IDEzMjMgKysrKysKPiAgIGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kc3Mu aCAgICAgICAgIHwgIDQ3MiArKwo+ICAgLi4uL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3Mv ZHNzX2ZlYXR1cmVzLmMgICAgfCAgOTYyICsrKysKPiAgIC4uLi92aWRlby9mYmRldi9vbWFwMi9v bWFwZmIvZHNzL2Rzc19mZWF0dXJlcy5oICAgIHwgIDEwNSArCj4gICBkcml2ZXJzL3ZpZGVvL2Zi ZGV2L29tYXAyL29tYXBmYi9kc3MvaGRtaS5oICAgICAgICB8ICAzNzAgKysKPiAgIGRyaXZlcnMv dmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9oZG1pNC5jICAgICAgIHwgIDgzOSArKysKPiAg IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9oZG1pNF9jb3JlLmMgIHwgIDkw NCArKysrCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvaGRtaTRfY29y ZS5oICB8ICAyNzMgKwo+ICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL2hk bWk1LmMgICAgICAgfCAgODc2ICsrKwo+ICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFw ZmIvZHNzL2hkbWk1X2NvcmUuYyAgfCAgOTE2ICsrKysKPiAgIGRyaXZlcnMvdmlkZW8vZmJkZXYv b21hcDIvb21hcGZiL2Rzcy9oZG1pNV9jb3JlLmggIHwgIDMwNCArKwo+ICAgZHJpdmVycy92aWRl by9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL2hkbWlfY29tbW9uLmMgfCAgMTQ4ICsKPiAgIGRyaXZl cnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9oZG1pX3BoeS5jICAgIHwgIDI0NyArCj4g ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvaGRtaV9wbGwuYyAgICB8ICAy NTUgKwo+ICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL2hkbWlfd3AuYyAg ICAgfCAgMjgyICsKPiAgIC4uLi92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL21hbmFnZXIt c3lzZnMuYyAgIHwgIDUzMSArKwo+ICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIv ZHNzL21hbmFnZXIuYyAgICAgfCAgMjYzICsKPiAgIC4uLi9mYmRldi9vbWFwMi9vbWFwZmIvZHNz L29tYXBkc3MtYm9vdC1pbml0LmMgICAgIHwgIDIyNyArCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2 L29tYXAyL29tYXBmYi9kc3Mvb3V0cHV0LmMgICAgICB8ICAyNjcgKwo+ICAgLi4uL3ZpZGVvL2Zi ZGV2L29tYXAyL29tYXBmYi9kc3Mvb3ZlcmxheS1zeXNmcy5jICAgfCAgNDU2ICsrCj4gICBkcml2 ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3Mvb3ZlcmxheS5jICAgICB8ICAyMDIgKwo+ ICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL3BsbC5jICAgICAgICAgfCAg Mzg5ICsrCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvcmZiaS5jICAg ICAgICB8IDEwNzggKysrKwo+ICAgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNz L3NkaS5jICAgICAgICAgfCAgNDU0ICsrCj4gICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29t YXBmYi9kc3MvdmVuYy5jICAgICAgICB8ICA5OTcgKysrKwo+ICAgZHJpdmVycy92aWRlby9mYmRl di9vbWFwMi9vbWFwZmIvZHNzL3ZpZGVvLXBsbC5jICAgfCAgMjExICsKPiAgIGRyaXZlcnMvdmlk ZW8vZmJkZXYvb21hcDIveyA9PiBvbWFwZmJ9L3ZyZmIuYyAgICAgIHwgICAgMAo+ICAgaW5jbHVk ZS92aWRlby9vbWFwZHNzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyIC0KPiAg IDEyMiBmaWxlcyBjaGFuZ2VkLCAzNjI2MCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkK PiAgIHJlbmFtZSBkcml2ZXJzL3t2aWRlby9mYmRldi9vbWFwMi9kaXNwbGF5cy1uZXcgPT4gZ3B1 L2RybS9vbWFwZHJtL2Rpc3BsYXlzfS9LY29uZmlnICg5NiUpCj4gICByZW5hbWUgZHJpdmVycy97 dmlkZW8vZmJkZXYvb21hcDIvZGlzcGxheXMtbmV3ID0+IGdwdS9kcm0vb21hcGRybS9kaXNwbGF5 c30vTWFrZWZpbGUgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIv ZGlzcGxheXMtbmV3ID0+IGdwdS9kcm0vb21hcGRybS9kaXNwbGF5c30vY29ubmVjdG9yLWFuYWxv Zy10di5jICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyL2Rpc3Bs YXlzLW5ldyA9PiBncHUvZHJtL29tYXBkcm0vZGlzcGxheXN9L2Nvbm5lY3Rvci1kdmkuYyAoMTAw JSkKPiAgIHJlbmFtZSBkcml2ZXJzL3t2aWRlby9mYmRldi9vbWFwMi9kaXNwbGF5cy1uZXcgPT4g Z3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzfS9jb25uZWN0b3ItaGRtaS5jICgxMDAlKQo+ICAgcmVu YW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyL2Rpc3BsYXlzLW5ldyA9PiBncHUvZHJtL29t YXBkcm0vZGlzcGxheXN9L2VuY29kZXItb3BhMzYyLmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVy cy97dmlkZW8vZmJkZXYvb21hcDIvZGlzcGxheXMtbmV3ID0+IGdwdS9kcm0vb21hcGRybS9kaXNw bGF5c30vZW5jb2Rlci10ZnA0MTAuYyAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJzL3t2aWRlby9m YmRldi9vbWFwMi9kaXNwbGF5cy1uZXcgPT4gZ3B1L2RybS9vbWFwZHJtL2Rpc3BsYXlzfS9lbmNv ZGVyLXRwZDEyczAxNS5jICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29t YXAyL2Rpc3BsYXlzLW5ldyA9PiBncHUvZHJtL29tYXBkcm0vZGlzcGxheXN9L3BhbmVsLWRwaS5j ICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyL2Rpc3BsYXlzLW5l dyA9PiBncHUvZHJtL29tYXBkcm0vZGlzcGxheXN9L3BhbmVsLWRzaS1jbS5jICgxMDAlKQo+ICAg cmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyL2Rpc3BsYXlzLW5ldyA9PiBncHUvZHJt L29tYXBkcm0vZGlzcGxheXN9L3BhbmVsLWxncGhpbGlwcy1sYjAzNXEwMi5jICgxMDAlKQo+ICAg cmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyL2Rpc3BsYXlzLW5ldyA9PiBncHUvZHJt L29tYXBkcm0vZGlzcGxheXN9L3BhbmVsLW5lYy1ubDgwNDhobDExLmMgKDEwMCUpCj4gICByZW5h bWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIvZGlzcGxheXMtbmV3ID0+IGdwdS9kcm0vb21h cGRybS9kaXNwbGF5c30vcGFuZWwtc2hhcnAtbHMwMzd2N2R3MDEuYyAoMTAwJSkKPiAgIHJlbmFt ZSBkcml2ZXJzL3t2aWRlby9mYmRldi9vbWFwMi9kaXNwbGF5cy1uZXcgPT4gZ3B1L2RybS9vbWFw ZHJtL2Rpc3BsYXlzfS9wYW5lbC1zb255LWFjeDU2NWFrbS5jICgxMDAlKQo+ICAgcmVuYW1lIGRy aXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyL2Rpc3BsYXlzLW5ldyA9PiBncHUvZHJtL29tYXBkcm0v ZGlzcGxheXN9L3BhbmVsLXRwby10ZDAyOHR0ZWMxLmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVy cy97dmlkZW8vZmJkZXYvb21hcDIvZGlzcGxheXMtbmV3ID0+IGdwdS9kcm0vb21hcGRybS9kaXNw bGF5c30vcGFuZWwtdHBvLXRkMDQzbXRlYTEuYyAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJzL3t2 aWRlby9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9LY29uZmlnICgxMDAlKQo+ ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0v ZHNzL01ha2VmaWxlICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAy ID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2FwcGx5LmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVy cy97dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvY29yZS5jICgxMDAl KQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRy bX0vZHNzL2Rpc3BjLWNvbXBhdC5jICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2Zi ZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2Rpc3BjLWNvbXBhdC5oICgxMDAlKQo+ ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0v ZHNzL2Rpc3BjLmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIg PT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvZGlzcGMuaCAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJz L3t2aWRlby9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9kaXNwY19jb2Vmcy5j ICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0v b21hcGRybX0vZHNzL2Rpc3BsYXktc3lzZnMuYyAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJzL3t2 aWRlby9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9kaXNwbGF5LmMgKDEwMCUp Cj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJt fS9kc3MvZHBpLmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIg PT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvZHNpLmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97 dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvZHNzLW9mLmMgKDEwMCUp Cj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJt fS9kc3MvZHNzLmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIg PT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvZHNzLmggKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97 dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvZHNzX2ZlYXR1cmVzLmMg KDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9v bWFwZHJtfS9kc3MvZHNzX2ZlYXR1cmVzLmggKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlk ZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvaGRtaS5oICgxMDAlKQo+ICAg cmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNz L2hkbWk0LmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIgPT4g Z3B1L2RybS9vbWFwZHJtfS9kc3MvaGRtaTRfY29yZS5jICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZl cnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2hkbWk0X2NvcmUu aCAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJzL3t2aWRlby9mYmRldi9vbWFwMiA9PiBncHUvZHJt L29tYXBkcm19L2Rzcy9oZG1pNS5jICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2Zi ZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL2hkbWk1X2NvcmUuYyAoMTAwJSkKPiAg IHJlbmFtZSBkcml2ZXJzL3t2aWRlby9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rz cy9oZG1pNV9jb3JlLmggKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21h cDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvaGRtaV9jb21tb24uYyAoMTAwJSkKPiAgIHJlbmFt ZSBkcml2ZXJzL3t2aWRlby9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9oZG1p X3BoeS5jICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdw dS9kcm0vb21hcGRybX0vZHNzL2hkbWlfcGxsLmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97 dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3MvaGRtaV93cC5jICgxMDAl KQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRy bX0vZHNzL21hbmFnZXItc3lzZnMuYyAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJzL3t2aWRlby9m YmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9tYW5hZ2VyLmMgKDEwMCUpCj4gICBy ZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJtfS9kc3Mv b21hcGRzcy1ib290LWluaXQuYyAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJzL3t2aWRlby9mYmRl di9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9vdXRwdXQuYyAoMTAwJSkKPiAgIHJlbmFt ZSBkcml2ZXJzL3t2aWRlby9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9vdmVy bGF5LXN5c2ZzLmMgKDEwMCUpCj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIg PT4gZ3B1L2RybS9vbWFwZHJtfS9kc3Mvb3ZlcmxheS5jICgxMDAlKQo+ICAgcmVuYW1lIGRyaXZl cnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRybX0vZHNzL3BsbC5jICgxMDAl KQo+ICAgcmVuYW1lIGRyaXZlcnMve3ZpZGVvL2ZiZGV2L29tYXAyID0+IGdwdS9kcm0vb21hcGRy bX0vZHNzL3JmYmkuYyAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJzL3t2aWRlby9mYmRldi9vbWFw MiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy9zZGkuYyAoMTAwJSkKPiAgIHJlbmFtZSBkcml2ZXJz L3t2aWRlby9mYmRldi9vbWFwMiA9PiBncHUvZHJtL29tYXBkcm19L2Rzcy92ZW5jLmMgKDEwMCUp Cj4gICByZW5hbWUgZHJpdmVycy97dmlkZW8vZmJkZXYvb21hcDIgPT4gZ3B1L2RybS9vbWFwZHJt fS9kc3MvdmlkZW8tcGxsLmMgKDEwMCUpCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92 aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvS2NvbmZpZwo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL01ha2VmaWxl Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIv ZGlzcGxheXMvY29ubmVjdG9yLWFuYWxvZy10di5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlzcGxheXMvY29ubmVjdG9yLWR2aS5jCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZGlz cGxheXMvY29ubmVjdG9yLWhkbWkuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlk ZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL2VuY29kZXItb3BhMzYyLmMKPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9l bmNvZGVyLXRmcDQxMC5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRl di9vbWFwMi9vbWFwZmIvZGlzcGxheXMvZW5jb2Rlci10cGQxMnMwMTUuYwo+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL3BhbmVs LWRwaS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9v bWFwZmIvZGlzcGxheXMvcGFuZWwtZHNpLWNtLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9wYW5lbC1sZ3BoaWxpcHMtbGIw MzVxMDIuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIv b21hcGZiL2Rpc3BsYXlzL3BhbmVsLW5lYy1ubDgwNDhobDExLmMKPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9wYW5lbC1zaGFy cC1sczAzN3Y3ZHcwMS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRl di9vbWFwMi9vbWFwZmIvZGlzcGxheXMvcGFuZWwtc29ueS1hY3g1NjVha20uYwo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rpc3BsYXlzL3Bh bmVsLXRwby10ZDAyOHR0ZWMxLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVv L2ZiZGV2L29tYXAyL29tYXBmYi9kaXNwbGF5cy9wYW5lbC10cG8tdGQwNDNtdGVhMS5jCj4gICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL0tj b25maWcKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29t YXBmYi9kc3MvTWFrZWZpbGUKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2Zi ZGV2L29tYXAyL29tYXBmYi9kc3MvYXBwbHkuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9jb3JlLmMKPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvZGlzcGMtY29tcGF0LmMK PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9k c3MvZGlzcGMtY29tcGF0LmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2Zi ZGV2L29tYXAyL29tYXBmYi9kc3MvZGlzcGMuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kaXNwYy5oCj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL2Rpc3BjX2NvZWZzLmMK PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9k c3MvZGlzcGxheS1zeXNmcy5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9m YmRldi9vbWFwMi9vbWFwZmIvZHNzL2Rpc3BsYXkuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kcGkuYwo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kc2kuYwo+ICAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kc3Mt b2YuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21h cGZiL2Rzcy9kc3MuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYv b21hcDIvb21hcGZiL2Rzcy9kc3MuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlk ZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kc3NfZmVhdHVyZXMuYwo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9kc3NfZmVhdHVyZXMu aAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZi L2Rzcy9oZG1pLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29t YXAyL29tYXBmYi9kc3MvaGRtaTQuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlk ZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9oZG1pNF9jb3JlLmMKPiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvaGRtaTRfY29yZS5oCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNz L2hkbWk1LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAy L29tYXBmYi9kc3MvaGRtaTVfY29yZS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92 aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL2hkbWk1X2NvcmUuaAo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9oZG1pX2NvbW1vbi5j Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIv ZHNzL2hkbWlfcGh5LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2 L29tYXAyL29tYXBmYi9kc3MvaGRtaV9wbGwuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL2Rzcy9oZG1pX3dwLmMKPiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvbWFuYWdlci1zeXNm cy5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFw ZmIvZHNzL21hbmFnZXIuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJk ZXYvb21hcDIvb21hcGZiL2Rzcy9vbWFwZHNzLWJvb3QtaW5pdC5jCj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL291dHB1dC5jCj4gICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL292 ZXJsYXktc3lzZnMuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYv b21hcDIvb21hcGZiL2Rzcy9vdmVybGF5LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvcGxsLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9kc3MvcmZiaS5jCj4gICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNzL3NkaS5jCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvZHNz L3ZlbmMuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIv b21hcGZiL2Rzcy92aWRlby1wbGwuYwo+ICAgcmVuYW1lIGRyaXZlcnMvdmlkZW8vZmJkZXYvb21h cDIveyA9PiBvbWFwZmJ9L3ZyZmIuYyAoMTAwJSkKPgoKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgCkZvcnVtLCBo b3N0ZWQgYnkgVGhlIExpbnV4IEZvdW5kYXRpb24KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK