UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

88 lines (87 loc) 27.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireDefault(require("react")); var _reactRedux = require("react-redux"); var _styledComponents = _interopRequireDefault(require("styled-components")); var _sourceDataSelector = _interopRequireDefault(require("../common/source-data-selector")); var _channelByValueSelector = _interopRequireDefault(require("./channel-by-value-selector")); var _layerConfigGroup = _interopRequireWildcard(require("./layer-config-group")); var _layerColorSelector = require("./layer-color-selector"); var _radiusByZoomInput = _interopRequireDefault(require("./radius-by-zoom-input")); var _visConfigSlider = _interopRequireDefault(require("./vis-config-slider")); var _visConfigSwitch = _interopRequireDefault(require("./vis-config-switch")); var _templateObject; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } var StyledLayerConfigurator = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 12px;\n"]))); VectorTileLayerConfiguratorFactory.deps = [_channelByValueSelector["default"], _layerColorSelector.LayerColorRangeSelectorFactory, _layerColorSelector.LayerColorSelectorFactory, _layerConfigGroup["default"], _visConfigSlider["default"], _visConfigSwitch["default"], _sourceDataSelector["default"]]; function VectorTileLayerConfiguratorFactory(ChannelByValueSelector, LayerColorRangeSelector, LayerColorSelector, LayerConfigGroup, VisConfigSlider, VisConfigSwitch) { var VectorTileLayerConfigurator = function VectorTileLayerConfigurator(_ref) { var _layer$config$visConf; var layer = _ref.layer, visConfiguratorProps = _ref.visConfiguratorProps, layerChannelConfigProps = _ref.layerChannelConfigProps, layerConfiguratorProps = _ref.layerConfiguratorProps; return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, { label: "layer.fillColor" }), layerChannelConfigProps.fields ? /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, { channel: layer.visualChannels.color })) : null, layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.dynamicColor)), /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, { channel: layer.visualChannels.color }))) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, layerConfiguratorProps), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.stroked, visConfiguratorProps, { label: "layer.strokeColor", collapsible: true }), /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, { channel: layer.visualChannels.strokeColor })), layer.config.strokeColorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, { property: "strokeColorRange", channel: layer.visualChannels.strokeColor })) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, { selectedColor: layer.config.visConfig.strokeColor, property: "strokeColor" })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.strokeOpacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.stroked, { label: "layer.strokeWidth", collapsible: true }), layer.config.sizeField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: false })) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.strokeWidth, visConfiguratorProps, { label: false })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, { channel: layer.visualChannels.size })))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enable3d, { collapsible: true }), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps, { label: false })), layerChannelConfigProps.fields ? /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, { channel: layer.visualChannels.height })) : null), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, { label: 'layer.radius', description: "Point radius in pixels or meters", collapsible: true }), (_layer$config$visConf = layer.config.visConfig.radiusByZoom) !== null && _layer$config$visConf !== void 0 && _layer$config$visConf.enabled && visConfiguratorProps.onChange ? /*#__PURE__*/_react["default"].createElement(_radiusByZoomInput["default"], { config: layer.config.visConfig.radiusByZoom, onChange: visConfiguratorProps.onChange, label: "Radius", property: "radiusByZoom", unit: "px" }) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, { label: false })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, layerChannelConfigProps.fields ? /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, { channel: layer.visualChannels.radius })) : null, /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.radiusUnits, visConfiguratorProps))))); }; var ConnectedVectorTileLayerConfigurator = (0, _reactRedux.connect)(function (state) { return state; })(VectorTileLayerConfigurator); return ConnectedVectorTileLayerConfigurator; } var _default = exports["default"] = VectorTileLayerConfiguratorFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdFJlZHV4IiwiX3N0eWxlZENvbXBvbmVudHMiLCJfc291cmNlRGF0YVNlbGVjdG9yIiwiX2NoYW5uZWxCeVZhbHVlU2VsZWN0b3IiLCJfbGF5ZXJDb25maWdHcm91cCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2xheWVyQ29sb3JTZWxlY3RvciIsIl9yYWRpdXNCeVpvb21JbnB1dCIsIl92aXNDb25maWdTbGlkZXIiLCJfdmlzQ29uZmlnU3dpdGNoIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkTGF5ZXJDb25maWd1cmF0b3IiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIlZlY3RvclRpbGVMYXllckNvbmZpZ3VyYXRvckZhY3RvcnkiLCJkZXBzIiwiQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3RvcnkiLCJMYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnkiLCJMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJWaXNDb25maWdTbGlkZXJGYWN0b3J5IiwiVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yIiwiTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IiLCJMYXllckNvbG9yU2VsZWN0b3IiLCJMYXllckNvbmZpZ0dyb3VwIiwiVmlzQ29uZmlnU2xpZGVyIiwiVmlzQ29uZmlnU3dpdGNoIiwiVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yIiwiX3JlZiIsIl9sYXllciRjb25maWckdmlzQ29uZiIsImxheWVyIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwibGFiZWwiLCJmaWVsZHMiLCJjaGFubmVsIiwidmlzdWFsQ2hhbm5lbHMiLCJjb2xvciIsImNvbmZpZyIsImNvbG9yRmllbGQiLCJGcmFnbWVudCIsInZpc0NvbmZpZ1NldHRpbmdzIiwiZHluYW1pY0NvbG9yIiwib3BhY2l0eSIsInN0cm9rZWQiLCJjb2xsYXBzaWJsZSIsInN0cm9rZUNvbG9yIiwic3Ryb2tlQ29sb3JGaWVsZCIsInByb3BlcnR5Iiwic2VsZWN0ZWRDb2xvciIsInZpc0NvbmZpZyIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50Iiwic3Ryb2tlT3BhY2l0eSIsInNpemVGaWVsZCIsInNpemVSYW5nZSIsInN0cm9rZVdpZHRoIiwic2l6ZSIsImVuYWJsZTNkIiwiZWxldmF0aW9uU2NhbGUiLCJoZWlnaHQiLCJkZXNjcmlwdGlvbiIsInJhZGl1c0J5Wm9vbSIsImVuYWJsZWQiLCJvbkNoYW5nZSIsInVuaXQiLCJyYWRpdXMiLCJyYWRpdXNVbml0cyIsIkNvbm5lY3RlZFZlY3RvclRpbGVMYXllckNvbmZpZ3VyYXRvciIsImNvbm5lY3QiLCJzdGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL3ZlY3Rvci10aWxlLWxheWVyLWNvbmZpZ3VyYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7VmVjdG9yVGlsZUxheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0tlcGxlclRhYmxlIGFzIEtlcGxlckRhdGFzZXR9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG5pbXBvcnQgU291cmNlRGF0YVNlbGVjdG9yRmFjdG9yeSBmcm9tICcuLi9jb21tb24vc291cmNlLWRhdGEtc2VsZWN0b3InO1xuaW1wb3J0IENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vY2hhbm5lbC1ieS12YWx1ZS1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksIHtDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudH0gZnJvbSAnLi9sYXllci1jb25maWctZ3JvdXAnO1xuaW1wb3J0IHtMYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnksIExheWVyQ29sb3JTZWxlY3RvckZhY3Rvcnl9IGZyb20gJy4vbGF5ZXItY29sb3Itc2VsZWN0b3InO1xuaW1wb3J0IFZpc0NvbmZpZ0J5Wm9vbUlucHV0IGZyb20gJy4vcmFkaXVzLWJ5LXpvb20taW5wdXQnO1xuaW1wb3J0IFZpc0NvbmZpZ1NsaWRlckZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLXNsaWRlcic7XG5pbXBvcnQgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSBmcm9tICcuL3Zpcy1jb25maWctc3dpdGNoJztcblxuY29uc3QgU3R5bGVkTGF5ZXJDb25maWd1cmF0b3IgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tdG9wOiAxMnB4O1xuYDtcblxudHlwZSBHZXRQcm9wczxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBSZWFjdC5GQzxhbnk+PiA9IFBhcmFtZXRlcnM8UmV0dXJuVHlwZTxUPj5bMF07XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGxheWVyOiBWZWN0b3JUaWxlTGF5ZXI7XG4gIGRhdGFzZXQ/OiBLZXBsZXJEYXRhc2V0O1xuICB2aXNDb25maWd1cmF0b3JQcm9wczogYW55O1xuICBsYXllckNoYW5uZWxDb25maWdQcm9wczogR2V0UHJvcHM8dHlwZW9mIENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5PjtcbiAgbGF5ZXJDb25maWd1cmF0b3JQcm9wczogYW55O1xufTtcblxuVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yRmFjdG9yeS5kZXBzID0gW1xuICBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSxcbiAgTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSxcbiAgVmlzQ29uZmlnU2xpZGVyRmFjdG9yeSxcbiAgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSxcbiAgU291cmNlRGF0YVNlbGVjdG9yRmFjdG9yeVxuXTtcblxuZnVuY3Rpb24gVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yRmFjdG9yeShcbiAgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvcjogUmV0dXJuVHlwZTx0eXBlb2YgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3Rvcnk+LFxuICBMYXllckNvbG9yUmFuZ2VTZWxlY3RvcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5PixcbiAgTGF5ZXJDb2xvclNlbGVjdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5PixcbiAgTGF5ZXJDb25maWdHcm91cDogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJDb25maWdHcm91cEZhY3Rvcnk+LFxuICBWaXNDb25maWdTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFZpc0NvbmZpZ1NsaWRlckZhY3Rvcnk+LFxuICBWaXNDb25maWdTd2l0Y2g6IFJldHVyblR5cGU8dHlwZW9mIFZpc0NvbmZpZ1N3aXRjaEZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxQcm9wcz4ge1xuICBjb25zdCBWZWN0b3JUaWxlTGF5ZXJDb25maWd1cmF0b3IgPSAoe1xuICAgIGxheWVyLFxuICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHNcbiAgfTogUHJvcHMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExheWVyQ29uZmlndXJhdG9yPlxuICAgICAgICB7LyogRmlsbCBDb2xvciAqL31cbiAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSBsYWJlbD1cImxheWVyLmZpbGxDb2xvclwiPlxuICAgICAgICAgIHtsYXllckNoYW5uZWxDb25maWdQcm9wcy5maWVsZHMgPyAoXG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7bGF5ZXIuY29uZmlnLmNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoXG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5keW5hbWljQ29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yIHsuLi5sYXllckNvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgey8qIFN0cm9rZSBjb2xvciAqL31cbiAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZH1cbiAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VDb2xvclwiXG4gICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgPlxuICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIHByb3BlcnR5PVwic3Ryb2tlQ29sb3JSYW5nZVwiXG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e2xheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgIHByb3BlcnR5PVwic3Ryb2tlQ29sb3JcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZU9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgey8qIFN0cm9rZSBXaWR0aCAqL31cbiAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZWR9XG4gICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VXaWR0aFwiXG4gICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgPlxuICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZVdpZHRofVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICB7LyogRWxldmF0aW9uICovfVxuICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZW5hYmxlM2R9XG4gICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgPlxuICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtsYXllckNoYW5uZWxDb25maWdQcm9wcy5maWVsZHMgPyAoXG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmhlaWdodH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICB7LyogUmFkaXVzICovfVxuICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICBsYWJlbD17J2xheWVyLnJhZGl1cyd9XG4gICAgICAgICAgZGVzY3JpcHRpb249XCJQb2ludCByYWRpdXMgaW4gcGl4ZWxzIG9yIG1ldGVyc1wiXG4gICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgPlxuICAgICAgICAgIHtsYXllci5jb25maWcudmlzQ29uZmlnLnJhZGl1c0J5Wm9vbT8uZW5hYmxlZCAmJiB2aXNDb25maWd1cmF0b3JQcm9wcy5vbkNoYW5nZSA/IChcbiAgICAgICAgICAgIDxWaXNDb25maWdCeVpvb21JbnB1dFxuICAgICAgICAgICAgICBjb25maWc9e2xheWVyLmNvbmZpZy52aXNDb25maWcucmFkaXVzQnlab29tfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dmlzQ29uZmlndXJhdG9yUHJvcHMub25DaGFuZ2V9XG4gICAgICAgICAgICAgIGxhYmVsPVwiUmFkaXVzXCJcbiAgICAgICAgICAgICAgcHJvcGVydHk9XCJyYWRpdXNCeVpvb21cIlxuICAgICAgICAgICAgICB1bml0PVwicHhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIHtsYXllckNoYW5uZWxDb25maWdQcm9wcy5maWVsZHMgPyAoXG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnJhZGl1c31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPFZpc0NvbmZpZ1N3aXRjaCB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzVW5pdHN9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICA8L1N0eWxlZExheWVyQ29uZmlndXJhdG9yPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgQ29ubmVjdGVkVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yID0gY29ubmVjdChzdGF0ZSA9PiBzdGF0ZSkoVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yKTtcbiAgcmV0dXJuIENvbm5lY3RlZFZlY3RvclRpbGVMYXllckNvbmZpZ3VyYXRvcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFLQSxJQUFBRyxtQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksdUJB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