UNPKG

kepler.gl

Version:

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

141 lines (140 loc) 28.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigGroupCollapsibleHeader = exports.ConfigGroupCollapsibleContent = void 0; exports.LayerConfigGroupLabelFactory = LayerConfigGroupLabelFactory; exports["default"] = exports.StyledLayerConfigGroupAction = exports.StyledLayerConfigGroup = exports.StyledConfigGroupHeader = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _classnames = _interopRequireDefault(require("classnames")); var _reactIntl = require("react-intl"); var _switch = _interopRequireDefault(require("../../common/switch")); var _infoHelper = _interopRequireDefault(require("../../common/info-helper")); var _icons = require("../../common/icons"); var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; // 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 StyledLayerConfigGroupAction = exports.StyledLayerConfigGroupAction = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n"])), function (props) { return props.theme.textColor; }); var ConfigGroupCollapsibleContent = exports.ConfigGroupCollapsibleContent = _styledComponents["default"].div.attrs({ className: 'layer-config-group__content__collapsible' })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n transition: max-height 0.3s ease-out;\n height: max-content;\n max-height: 1200px;\n overflow: auto;\n"]))); var ConfigGroupCollapsibleHeader = exports.ConfigGroupCollapsibleHeader = _styledComponents["default"].div.attrs({ className: 'layer-config-group__header__collapsible' })(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: visible;\n overflow: hidden;\n max-height: 0;\n"]))); var StyledLayerConfigGroup = exports.StyledLayerConfigGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: ", "px;\n margin-bottom: ", "px;\n\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n &.collapsed {\n .layer-config-group__header__collapsible {\n overflow: visible;\n max-height: 600px;\n }\n .layer-config-group__content {\n .layer-config-group__content__collapsible {\n overflow: hidden;\n max-height: 0;\n }\n }\n }\n"])), function (props) { return props.theme.layerConfigGroupPaddingLeft; }, function (props) { return props.theme.layerConfigGroupMarginBottom; }); var StyledConfigGroupHeader = exports.StyledConfigGroupHeader = _styledComponents["default"].div.attrs({ className: 'layer-config-group__header' })(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n cursor: default;\n\n &:hover {\n ", "\n .layer-config-group__label {\n color: ", ";\n }\n\n .layer-config-group__action {\n color: ", ";\n }\n }\n"])), function (props) { return props.collapsible && 'cursor: pointer;'; }, function (props) { return props.theme.textColorHl; }, function (props) { return props.theme.textColorHl; }); var ConfigGroupContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n * {\n pointer-events: none;\n }\n }\n"]))); LayerConfigGroupLabelFactory.deps = [_infoHelper["default"]]; function LayerConfigGroupLabelFactory(InfoHelper) { var StyledLayerConfigGroupLabel = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n border-left: ", " solid\n ", ";\n line-height: 12px;\n margin-left: ", ";\n padding-left: ", ";\n\n display: flex;\n align-items: center;\n\n span {\n color: ", ";\n font-weight: 500;\n letter-spacing: 0.2px;\n text-transform: capitalize;\n margin-left: ", ";\n font-size: ", ";\n }\n "])), function (props) { return props.theme.layerConfigGroupLabelBorderLeft; }, function (props) { return props.theme.labelColor; }, function (props) { return props.theme.layerConfigGroupLabelMargin; }, function (props) { return props.theme.layerConfigGroupLabelPadding; }, function (props) { return props.theme.textColor; }, function (props) { return props.theme.layerConfigGroupLabelLabelMargin; }, function (props) { return props.theme.layerConfigGroupLabelLabelFontSize; }); var LayerConfigGroupLabel = function LayerConfigGroupLabel(_ref) { var label = _ref.label, description = _ref.description; return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupLabel, { className: "layer-config-group__label" }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_reactIntl.FormattedMessage, { id: label || 'misc.empty', defaultMessage: label })), description && /*#__PURE__*/_react["default"].createElement(InfoHelper, { description: description, id: label })); }; return LayerConfigGroupLabel; } LayerConfigGroupFactory.deps = [LayerConfigGroupLabelFactory]; function nop() { return; } function LayerConfigGroupFactory(LayerConfigGroupLabel) { var LayerConfigGroup = function LayerConfigGroup(_ref2) { var label = _ref2.label, children = _ref2.children, property = _ref2.property, layer = _ref2.layer, _ref2$onChange = _ref2.onChange, _onChange2 = _ref2$onChange === void 0 ? nop : _ref2$onChange, _ref2$collapsible = _ref2.collapsible, collapsible = _ref2$collapsible === void 0 ? false : _ref2$collapsible, _ref2$description = _ref2.description, description = _ref2$description === void 0 ? '' : _ref2$description, _ref2$disabled = _ref2.disabled, disabled = _ref2$disabled === void 0 ? false : _ref2$disabled, _ref2$expanded = _ref2.expanded, expanded = _ref2$expanded === void 0 ? false : _ref2$expanded, _ref2$IconComponent = _ref2.IconComponent, IconComponent = _ref2$IconComponent === void 0 ? _icons.VertThreeDots : _ref2$IconComponent; var _useState = (0, _react.useState)(!expanded), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), collapsed = _useState2[0], toggleCollapsed = _useState2[1]; var onToggleCollapsed = (0, _react.useCallback)(function () { collapsible && toggleCollapsed(!collapsed); }, [collapsed, toggleCollapsed, collapsible]); return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroup, { className: (0, _classnames["default"])('layer-config-group', { collapsed: collapsed, disabled: disabled }) }, /*#__PURE__*/_react["default"].createElement(StyledConfigGroupHeader, { onClick: onToggleCollapsed, collapsible: collapsible }, /*#__PURE__*/_react["default"].createElement(LayerConfigGroupLabel, { label: label, description: description, collapsed: collapsed }), /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupAction, { className: "layer-config-group__action" }, property ? /*#__PURE__*/_react["default"].createElement(_switch["default"], { checked: layer === null || layer === void 0 ? void 0 : layer.config.visConfig[property], id: "".concat(layer === null || layer === void 0 ? void 0 : layer.id, "-").concat(property), onChange: function onChange() { return _onChange2 === null || _onChange2 === void 0 ? void 0 : _onChange2((0, _defineProperty2["default"])({}, property, !(layer !== null && layer !== void 0 && layer.config.visConfig[property]))); } }) : null, collapsible ? /*#__PURE__*/_react["default"].createElement(IconComponent, { height: "18px" }) : null)), /*#__PURE__*/_react["default"].createElement(ConfigGroupContent, { className: (0, _classnames["default"])('layer-config-group__content', { disabled: property && !(layer !== null && layer !== void 0 && layer.config.visConfig[property]) }) }, children)); }; return LayerConfigGroup; } var _default = exports["default"] = LayerConfigGroupFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9yZWFjdEludGwiLCJfc3dpdGNoIiwiX2luZm9IZWxwZXIiLCJfaWNvbnMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIiwiZXhwb3J0cyIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvciIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJDb25maWdHcm91cENvbGxhcHNpYmxlSGVhZGVyIiwiU3R5bGVkTGF5ZXJDb25maWdHcm91cCIsImxheWVyQ29uZmlnR3JvdXBQYWRkaW5nTGVmdCIsImxheWVyQ29uZmlnR3JvdXBNYXJnaW5Cb3R0b20iLCJTdHlsZWRDb25maWdHcm91cEhlYWRlciIsImNvbGxhcHNpYmxlIiwidGV4dENvbG9ySGwiLCJDb25maWdHcm91cENvbnRlbnQiLCJMYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5IiwiZGVwcyIsIkluZm9IZWxwZXJGYWN0b3J5IiwiSW5mb0hlbHBlciIsIlN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCIsImxheWVyQ29uZmlnR3JvdXBMYWJlbEJvcmRlckxlZnQiLCJsYWJlbENvbG9yIiwibGF5ZXJDb25maWdHcm91cExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsUGFkZGluZyIsImxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsTGFiZWxGb250U2l6ZSIsIkxheWVyQ29uZmlnR3JvdXBMYWJlbCIsIl9yZWYiLCJsYWJlbCIsImRlc2NyaXB0aW9uIiwiY3JlYXRlRWxlbWVudCIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJpZCIsImRlZmF1bHRNZXNzYWdlIiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJub3AiLCJMYXllckNvbmZpZ0dyb3VwIiwiX3JlZjIiLCJjaGlsZHJlbiIsInByb3BlcnR5IiwibGF5ZXIiLCJfcmVmMiRvbkNoYW5nZSIsIm9uQ2hhbmdlIiwiX3JlZjIkY29sbGFwc2libGUiLCJfcmVmMiRkZXNjcmlwdGlvbiIsIl9yZWYyJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcmVmMiRleHBhbmRlZCIsImV4cGFuZGVkIiwiX3JlZjIkSWNvbkNvbXBvbmVudCIsIkljb25Db21wb25lbnQiLCJWZXJ0VGhyZWVEb3RzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29sbGFwc2VkIiwidG9nZ2xlQ29sbGFwc2VkIiwib25Ub2dnbGVDb2xsYXBzZWQiLCJ1c2VDYWxsYmFjayIsImNsYXNzbmFtZXMiLCJvbkNsaWNrIiwiY2hlY2tlZCIsImNvbmZpZyIsInZpc0NvbmZpZyIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJoZWlnaHQiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2xheWVyLWNvbmZpZy1ncm91cC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBTd2l0Y2ggZnJvbSAnLi4vLi4vY29tbW9uL3N3aXRjaCc7XG5pbXBvcnQgSW5mb0hlbHBlckZhY3RvcnkgZnJvbSAnLi4vLi4vY29tbW9uL2luZm8taGVscGVyJztcbmltcG9ydCB7VmVydFRocmVlRG90c30gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7TGF5ZXJWaXNDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBMYXllckNvbmZpZ0dyb3VwTGFiZWxQcm9wcyA9IHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJDb25maWdHcm91cFByb3BzID0ge1xuICBsYXllcj86IExheWVyO1xuICBsYWJlbDogc3RyaW5nO1xuICBwcm9wZXJ0eT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNvbGxhcHNpYmxlPzogYm9vbGVhbjtcbiAgZXhwYW5kZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG9uQ2hhbmdlPzogKG5ld1Zpc0NvbmZpZzogUGFydGlhbDxMYXllclZpc0NvbmZpZz4pID0+IHZvaWQ7XG4gIEljb25Db21wb25lbnQ/OiBSZWFjdC5FbGVtZW50VHlwZTtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cEFjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG5gO1xuXG5leHBvcnQgY29uc3QgQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50X19jb2xsYXBzaWJsZSdcbn0pYFxuICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7XG4gIGhlaWdodDogbWF4LWNvbnRlbnQ7XG4gIG1heC1oZWlnaHQ6IDEyMDBweDtcbiAgb3ZlcmZsb3c6IGF1dG87XG5gO1xuXG5leHBvcnQgY29uc3QgQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUhlYWRlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1jb25maWctZ3JvdXBfX2hlYWRlcl9fY29sbGFwc2libGUnXG59KWBcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1heC1oZWlnaHQ6IDA7XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cCA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwUGFkZGluZ0xlZnR9cHg7XG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWdHcm91cE1hcmdpbkJvdHRvbX1weDtcblxuICAmLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbiAgJi5jb2xsYXBzZWQge1xuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2hlYWRlcl9fY29sbGFwc2libGUge1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICBtYXgtaGVpZ2h0OiA2MDBweDtcbiAgICB9XG4gICAgLmxheWVyLWNvbmZpZy1ncm91cF9fY29udGVudCB7XG4gICAgICAubGF5ZXItY29uZmlnLWdyb3VwX19jb250ZW50X19jb2xsYXBzaWJsZSB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1heC1oZWlnaHQ6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5pbnRlcmZhY2UgU3R5bGVkQ29uZmlnR3JvdXBIZWFkZXJQcm9wcyB7XG4gIGNvbGxhcHNpYmxlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyJ1xufSk8U3R5bGVkQ29uZmlnR3JvdXBIZWFkZXJQcm9wcz5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICY6aG92ZXIge1xuICAgICR7cHJvcHMgPT4gcHJvcHMuY29sbGFwc2libGUgJiYgJ2N1cnNvcjogcG9pbnRlcjsnfVxuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2xhYmVsIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG5cbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgQ29uZmlnR3JvdXBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICoge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5gO1xuXG5MYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5LmRlcHMgPSBbSW5mb0hlbHBlckZhY3RvcnldO1xuXG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeShJbmZvSGVscGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBJbmZvSGVscGVyRmFjdG9yeT4pIHtcbiAgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsID0gc3R5bGVkLmRpdmBcbiAgICBib3JkZXItbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxCb3JkZXJMZWZ0fSBzb2xpZFxuICAgICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxNYXJnaW59O1xuICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxQYWRkaW5nfTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIHNwYW4ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2lufTtcbiAgICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxMYWJlbEZvbnRTaXplfTtcbiAgICB9XG4gIGA7XG5cbiAgY29uc3QgTGF5ZXJDb25maWdHcm91cExhYmVsOiBSZWFjdC5GQzxMYXllckNvbmZpZ0dyb3VwTGFiZWxQcm9wcz4gPSAoe2xhYmVsLCBkZXNjcmlwdGlvbn0pID0+IChcbiAgICA8U3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fbGFiZWxcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17bGFiZWwgfHwgJ21pc2MuZW1wdHknfSBkZWZhdWx0TWVzc2FnZT17bGFiZWx9IC8+XG4gICAgICA8L3NwYW4+XG4gICAgICB7ZGVzY3JpcHRpb24gJiYgPEluZm9IZWxwZXIgZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufSBpZD17bGFiZWx9IC8+fVxuICAgIDwvU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsPlxuICApO1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwTGFiZWw7XG59XG5cbkxheWVyQ29uZmlnR3JvdXBGYWN0b3J5LmRlcHMgPSBbTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeV07XG5cbmZ1bmN0aW9uIG5vcCgpIHtcbiAgcmV0dXJuO1xufVxuZnVuY3Rpb24gTGF5ZXJDb25maWdHcm91cEZhY3RvcnkoXG4gIExheWVyQ29uZmlnR3JvdXBMYWJlbDogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllckNvbmZpZ0dyb3VwOiBSZWFjdC5GQzxMYXllckNvbmZpZ0dyb3VwUHJvcHM+ID0gKHtcbiAgICBsYWJlbCxcbiAgICBjaGlsZHJlbixcbiAgICBwcm9wZXJ0eSxcbiAgICBsYXllcixcbiAgICBvbkNoYW5nZSA9IG5vcCxcbiAgICBjb2xsYXBzaWJsZSA9IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uID0gJycsXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBleHBhbmRlZCA9IGZhbHNlLFxuICAgIEljb25Db21wb25lbnQgPSBWZXJ0VGhyZWVEb3RzXG4gIH0pID0+IHtcbiAgICBjb25zdCBbY29sbGFwc2VkLCB0b2dnbGVDb2xsYXBzZWRdID0gdXNlU3RhdGUoIWV4cGFuZGVkKTtcbiAgICBjb25zdCBvblRvZ2dsZUNvbGxhcHNlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGNvbGxhcHNpYmxlICYmIHRvZ2dsZUNvbGxhcHNlZCghY29sbGFwc2VkKTtcbiAgICB9LCBbY29sbGFwc2VkLCB0b2dnbGVDb2xsYXBzZWQsIGNvbGxhcHNpYmxlXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1jb25maWctZ3JvdXAnLCB7Y29sbGFwc2VkLCBkaXNhYmxlZH0pfT5cbiAgICAgICAgPFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIG9uQ2xpY2s9e29uVG9nZ2xlQ29sbGFwc2VkfSBjb2xsYXBzaWJsZT17Y29sbGFwc2libGV9PlxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwTGFiZWwgbGFiZWw9e2xhYmVsfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259IGNvbGxhcHNlZD17Y29sbGFwc2VkfSAvPlxuICAgICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fYWN0aW9uXCI+XG4gICAgICAgICAgICB7cHJvcGVydHkgPyAoXG4gICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtsYXllcj8uY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV19XG4gICAgICAgICAgICAgICAgaWQ9e2Ake2xheWVyPy5pZH0tJHtwcm9wZXJ0eX1gfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBvbkNoYW5nZT8uKHtbcHJvcGVydHldOiAhbGF5ZXI/LmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjb2xsYXBzaWJsZSA/IDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE4cHhcIiAvPiA6IG51bGx9XG4gICAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uPlxuICAgICAgICA8L1N0eWxlZENvbmZpZ0dyb3VwSGVhZGVyPlxuICAgICAgICA8Q29uZmlnR3JvdXBDb250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQnLCB7XG4gICAgICAgICAgICBkaXNhYmxlZDogcHJvcGVydHkgJiYgIWxheWVyPy5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XVxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0NvbmZpZ0dyb3VwQ29udGVudD5cbiAgICAgIDwvU3R5bGVkTGF5ZXJDb25maWdHcm91cD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFILHNC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Q0FBQztJQUFFLGdCQUN6RnZGLE1BQUEsWUFBQXVFLGFBQUEsQ0FBQ25CLHVCQUF1QjtNQUFDa0QsT0FBTyxFQUFFSCxpQkFBa0I7TUFBQzlDLFdBQVcsRUFBRUE7SUFBWSxnQkFDNUVyRCxNQUFBLFlBQUF1RSxhQUFBLENBQUNKLHFCQUFxQjtNQUFDRSxLQUFLLEVBQUVBLEtBQU07TUFBQ0MsV0FBVyxFQUFFQSxXQUFZO01BQUMyQixTQUFTLEVBQUVBO0lBQVUsQ0FBRSxDQUFDLGVBQ3ZGakcsTUFBQSxZQUFBdUUsYUFBQSxDQUFDbEMsNEJBQTRCO01BQUNVLFNBQVMsRUFBQztJQUE0QixHQUNqRWlDLFFBQVEsZ0JBQ1BoRixNQUFBLFlBQUF1RSxhQUFBLENBQUNoRSxPQUFBLFdBQU07TUFDTGdHLE9BQU8sRUFBRXRCLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFdUIsTUFBTSxDQUFDQyxTQUFTLENBQUN6QixRQUFRLENBQUU7TUFDM0NQLEVBQUUsS0FBQWlDLE1BQUEsQ0FBS3pCLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFUixFQUFFLE9BQUFpQyxNQUFBLENBQUkxQixRQUFRLENBQUc7TUFDL0JHLFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFBO1FBQUEsT0FBUUEsVUFBUSxhQUFSQSxVQUFRLHVCQUFSQSxVQUFRLEtBQUF3QixnQkFBQSxpQkFBSzNCLFFBQVEsRUFBRyxFQUFDQyxLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFdUIsTUFBTSxDQUFDQyxTQUFTLENBQUN6QixRQUFRLENBQUMsRUFBQyxDQUFDO01BQUE7SUFBQyxDQUM5RSxDQUFDLEdBQ0EsSUFBSSxFQUNQM0IsV0FBVyxnQkFBR3JELE1BQUEsWUFBQXVFLGFBQUEsQ0FBQ29CLGFBQWE7TUFBQ2lCLE1BQU0sRUFBQztJQUFNLENBQUUsQ0FBQyxHQUFHLElBQ3JCLENBQ1AsQ0FBQyxlQUMxQjVHLE1BQUEsWUFBQXVFLGFBQUEsQ0FBQ2hCLGtCQUFrQjtNQUNqQlIsU0FBUyxFQUFFLElBQUFzRCxzQkFBVSxFQUFDLDZCQUE2QixFQUFFO1FBQ25EZCxRQUFRLEVBQUVQLFFBQVEsSUFBSSxFQUFDQyxLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFdUIsTUFBTSxDQUFDQyxTQUFTLENBQUN6QixRQUFRLENBQUM7TUFDMUQsQ0FBQztJQUFFLEdBRUZELFFBQ2lCLENBQ0UsQ0FBQztFQUU3QixDQUFDO0VBRUQsT0FBT0YsZ0JBQWdCO0FBQ3pCO0FBQUMsSUFBQWdDLFFBQUEsR0FBQXZFLE9BQUEsY0FFY3FDLHVCQUF1QiIsImlnbm9yZUxpc3QiOltdfQ==