UNPKG

kepler.gl

Version:

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

129 lines (128 loc) 22 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 _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 _localization = require("@kepler.gl/localization"); var _react2 = _interopRequireDefault(require("@tippyjs/react")); var _icons = require("../common/icons"); var _styledComponents2 = require("../common/styled-components"); var _typeahead = _interopRequireDefault(require("../common/item-selector/typeahead")); var _accessor = _interopRequireDefault(require("../common/item-selector/accessor")); var _reactIntl = require("react-intl"); var _context = require("../context"); var _templateObject, _templateObject2, _templateObject3; // 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 DropdownContainer = _styledComponents["default"].div.attrs({ className: 'add-layer-menu-dropdown' })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .list-selector {\n border-top: 1px solid ", ";\n width: 100%;\n /* disable scrolling, currently set to 280px internally */\n max-height: unset;\n }\n .list__item > div {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n line-height: 18px;\n padding: 0;\n svg {\n margin-right: 10px;\n }\n }\n"])), function (props) { return props.theme.secondaryInputBorderColor; }); var DropdownMenu = _styledComponents["default"].div.attrs({ className: 'dropdown-menu' })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n min-width: 240px;\n max-width: 240px;\n position: absolute;\n top: 100%;\n left: -53px;\n z-index: 5;\n"]))); var ListItemWrapper = _styledComponents["default"].div.attrs({ className: 'dropdown-menu-list-item-wrapper' })(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n font-size: 11px;\n letter-spacing: 0.2px;\n overflow: auto;\n .dataset-color {\n flex-shrink: 0;\n margin-top: 3px;\n }\n .dataset-name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n"])), function (props) { return props.theme.textColor; }); var TYPEAHEAD_CLASS = 'typeahead'; var TYPEAHEAD_INPUT_CLASS = 'typeahead__input'; var ListItem = function ListItem(_ref) { var value = _ref.value; return /*#__PURE__*/_react["default"].createElement(ListItemWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.DatasetSquare, { className: "dataset-color", backgroundColor: value.color }), /*#__PURE__*/_react["default"].createElement("div", { className: "dataset-name", title: value.label }, value.label)); }; var AddByDatasetButton = function AddByDatasetButton(_ref2) { var datasets = _ref2.datasets, onAdd = _ref2.onAdd, buttonIntlId = _ref2.buttonIntlId, className = _ref2.className, inactive = _ref2.inactive; var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), tippyInstance = _useState2[0], setTippyInstance = _useState2[1]; var options = (0, _react.useMemo)(function () { return Object.values(datasets).map(function (ds) { return { label: ds.label, value: ds.id, color: ds.color }; }); }, [datasets]); var onClickBtn = (0, _react.useCallback)(function () { if (options.length === 1) { onAdd(options[0].value); } return; }, [options, onAdd]); var onOptionSelected = (0, _react.useCallback)(function (option) { if (!option) { return; } onAdd(option.value); if (tippyInstance) { // @ts-ignore tippyInstance.hide(); } }, [onAdd, tippyInstance]); var intl = (0, _reactIntl.useIntl)(); var buttonRendered = /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, { tabIndex: -1, className: className || 'add-by-dataset-button', onClick: onClickBtn, disabled: !options.length || inactive }, /*#__PURE__*/_react["default"].createElement(_icons.Add, { height: "12px" }), /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: buttonIntlId })); return options.length === 1 ? buttonRendered : /*#__PURE__*/_react["default"].createElement(_context.RootContext.Consumer, null, function (context) { return /*#__PURE__*/_react["default"].createElement(_react2["default"], { trigger: "click", arrow: false, interactive: true, placement: "bottom", appendTo: (context === null || context === void 0 ? void 0 : context.current) || 'parent' // @ts-ignore , onCreate: setTippyInstance, duration: 0, content: /*#__PURE__*/_react["default"].createElement(DropdownMenu, null, /*#__PURE__*/_react["default"].createElement(DropdownContainer, null, /*#__PURE__*/_react["default"].createElement(_typeahead["default"], { className: TYPEAHEAD_CLASS, customClasses: { results: 'list-selector', input: TYPEAHEAD_INPUT_CLASS, listItem: 'list__item' }, placeholder: intl ? intl.formatMessage({ id: 'placeholder.search' }) : 'Search', selectedItems: null, options: options, displayOption: _accessor["default"].generateOptionToStringFor('label'), filterOption: 'label', searchable: true, onOptionSelected: onOptionSelected, customListItemComponent: ListItem }))) }, buttonRendered); }); }; var _default = exports["default"] = AddByDatasetButton; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9jYWxpemF0aW9uIiwiX3JlYWN0MiIsIl9pY29ucyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl90eXBlYWhlYWQiLCJfYWNjZXNzb3IiLCJfcmVhY3RJbnRsIiwiX2NvbnRleHQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkRyb3Bkb3duQ29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dEJvcmRlckNvbG9yIiwiRHJvcGRvd25NZW51IiwiTGlzdEl0ZW1XcmFwcGVyIiwidGV4dENvbG9yIiwiVFlQRUFIRUFEX0NMQVNTIiwiVFlQRUFIRUFEX0lOUFVUX0NMQVNTIiwiTGlzdEl0ZW0iLCJfcmVmIiwidmFsdWUiLCJjcmVhdGVFbGVtZW50IiwiRGF0YXNldFNxdWFyZSIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwidGl0bGUiLCJsYWJlbCIsIkFkZEJ5RGF0YXNldEJ1dHRvbiIsIl9yZWYyIiwiZGF0YXNldHMiLCJvbkFkZCIsImJ1dHRvbkludGxJZCIsImluYWN0aXZlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwidGlwcHlJbnN0YW5jZSIsInNldFRpcHB5SW5zdGFuY2UiLCJvcHRpb25zIiwidXNlTWVtbyIsInZhbHVlcyIsIm1hcCIsImRzIiwiaWQiLCJvbkNsaWNrQnRuIiwidXNlQ2FsbGJhY2siLCJsZW5ndGgiLCJvbk9wdGlvblNlbGVjdGVkIiwib3B0aW9uIiwiaGlkZSIsImludGwiLCJ1c2VJbnRsIiwiYnV0dG9uUmVuZGVyZWQiLCJCdXR0b24iLCJ0YWJJbmRleCIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsIkFkZCIsImhlaWdodCIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJSb290Q29udGV4dCIsIkNvbnN1bWVyIiwiY29udGV4dCIsInRyaWdnZXIiLCJhcnJvdyIsImludGVyYWN0aXZlIiwicGxhY2VtZW50IiwiYXBwZW5kVG8iLCJjdXJyZW50Iiwib25DcmVhdGUiLCJkdXJhdGlvbiIsImNvbnRlbnQiLCJjdXN0b21DbGFzc2VzIiwicmVzdWx0cyIsImlucHV0IiwibGlzdEl0ZW0iLCJwbGFjZWhvbGRlciIsImZvcm1hdE1lc3NhZ2UiLCJzZWxlY3RlZEl0ZW1zIiwiZGlzcGxheU9wdGlvbiIsIkFjY2Vzc29yIiwiZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvciIsImZpbHRlck9wdGlvbiIsInNlYXJjaGFibGUiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaWRlLXBhbmVsL2FkZC1ieS1kYXRhc2V0LWJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtEYXRhc2V0cywgS2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG5pbXBvcnQgVGlwcHkgZnJvbSAnQHRpcHB5anMvcmVhY3QnO1xuaW1wb3J0IHtBZGR9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge0J1dHRvbiwgRGF0YXNldFNxdWFyZX0gZnJvbSAnLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBUeXBlYWhlYWQgZnJvbSAnLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvdHlwZWFoZWFkJztcbmltcG9ydCBBY2Nlc3NvciBmcm9tICcuLi9jb21tb24vaXRlbS1zZWxlY3Rvci9hY2Nlc3Nvcic7XG5pbXBvcnQge3VzZUludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtSb290Q29udGV4dH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2FkZC1sYXllci1tZW51LWRyb3Bkb3duJ1xufSlgXG4gIC5saXN0LXNlbGVjdG9yIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dEJvcmRlckNvbG9yfTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICAvKiBkaXNhYmxlIHNjcm9sbGluZywgY3VycmVudGx5IHNldCB0byAyODBweCBpbnRlcm5hbGx5ICovXG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gIH1cbiAgLmxpc3RfX2l0ZW0gPiBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBzdmcge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2Ryb3Bkb3duLW1lbnUnXG59KWBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAyNDBweDtcbiAgbWF4LXdpZHRoOiAyNDBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IC01M3B4O1xuICB6LWluZGV4OiA1O1xuYDtcblxuY29uc3QgTGlzdEl0ZW1XcmFwcGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2Ryb3Bkb3duLW1lbnUtbGlzdC1pdGVtLXdyYXBwZXInXG59KWBcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAuZGF0YXNldC1jb2xvciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogM3B4O1xuICB9XG4gIC5kYXRhc2V0LW5hbWUge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuYDtcblxuY29uc3QgVFlQRUFIRUFEX0NMQVNTID0gJ3R5cGVhaGVhZCc7XG5jb25zdCBUWVBFQUhFQURfSU5QVVRfQ0xBU1MgPSAndHlwZWFoZWFkX19pbnB1dCc7XG5cbmV4cG9ydCB0eXBlIEFkZEJ5RGF0YXNldEJ1dHRvblByb3BzID0ge1xuICBkYXRhc2V0czogRGF0YXNldHM7XG4gIG9uQWRkOiAoZGF0YUlkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGJ1dHRvbkludGxJZDogc3RyaW5nO1xuICBpbmFjdGl2ZT86IGJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn07XG5cbmNvbnN0IExpc3RJdGVtID0gKHt2YWx1ZX0pID0+IChcbiAgPExpc3RJdGVtV3JhcHBlcj5cbiAgICA8RGF0YXNldFNxdWFyZSBjbGFzc05hbWU9XCJkYXRhc2V0LWNvbG9yXCIgYmFja2dyb3VuZENvbG9yPXt2YWx1ZS5jb2xvcn0gLz5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGFzZXQtbmFtZVwiIHRpdGxlPXt2YWx1ZS5sYWJlbH0+XG4gICAgICB7dmFsdWUubGFiZWx9XG4gICAgPC9kaXY+XG4gIDwvTGlzdEl0ZW1XcmFwcGVyPlxuKTtcblxuY29uc3QgQWRkQnlEYXRhc2V0QnV0dG9uOiBSZWFjdC5GQzxBZGRCeURhdGFzZXRCdXR0b25Qcm9wcz4gPSAoe1xuICBkYXRhc2V0cyxcbiAgb25BZGQsXG4gIGJ1dHRvbkludGxJZCxcbiAgY2xhc3NOYW1lLFxuICBpbmFjdGl2ZVxufSkgPT4ge1xuICBjb25zdCBbdGlwcHlJbnN0YW5jZSwgc2V0VGlwcHlJbnN0YW5jZV0gPSB1c2VTdGF0ZSgpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkYXRhc2V0cykubWFwKChkczogS2VwbGVyVGFibGUpID0+ICh7XG4gICAgICBsYWJlbDogZHMubGFiZWwsXG4gICAgICB2YWx1ZTogZHMuaWQsXG4gICAgICBjb2xvcjogZHMuY29sb3JcbiAgICB9KSk7XG4gIH0sIFtkYXRhc2V0c10pO1xuXG4gIGNvbnN0IG9uQ2xpY2tCdG4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBvbkFkZChvcHRpb25zWzBdLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH0sIFtvcHRpb25zLCBvbkFkZF0pO1xuXG4gIGNvbnN0IG9uT3B0aW9uU2VsZWN0ZWQgPSB1c2VDYWxsYmFjayhcbiAgICBvcHRpb24gPT4ge1xuICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb25BZGQob3B0aW9uLnZhbHVlKTtcbiAgICAgIGlmICh0aXBweUluc3RhbmNlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGlwcHlJbnN0YW5jZS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25BZGQsIHRpcHB5SW5zdGFuY2VdXG4gICk7XG5cbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcblxuICBjb25zdCBidXR0b25SZW5kZXJlZCA9IChcbiAgICA8QnV0dG9uXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZSB8fCAnYWRkLWJ5LWRhdGFzZXQtYnV0dG9uJ31cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2tCdG59XG4gICAgICBkaXNhYmxlZD17IW9wdGlvbnMubGVuZ3RoIHx8IGluYWN0aXZlfVxuICAgID5cbiAgICAgIDxBZGQgaGVpZ2h0PVwiMTJweFwiIC8+XG4gICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17YnV0dG9uSW50bElkfSAvPlxuICAgIDwvQnV0dG9uPlxuICApO1xuXG4gIHJldHVybiBvcHRpb25zLmxlbmd0aCA9PT0gMSA/IChcbiAgICBidXR0b25SZW5kZXJlZFxuICApIDogKFxuICAgIDxSb290Q29udGV4dC5Db25zdW1lcj5cbiAgICAgIHtjb250ZXh0ID0+IChcbiAgICAgICAgPFRpcHB5XG4gICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICBhcnJvdz17ZmFsc2V9XG4gICAgICAgICAgaW50ZXJhY3RpdmVcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGFwcGVuZFRvPXtjb250ZXh0Py5jdXJyZW50IHx8ICdwYXJlbnQnfVxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBvbkNyZWF0ZT17c2V0VGlwcHlJbnN0YW5jZX1cbiAgICAgICAgICBkdXJhdGlvbj17MH1cbiAgICAgICAgICBjb250ZW50PXtcbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgIDxEcm9wZG93bkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8VHlwZWFoZWFkXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1RZUEVBSEVBRF9DTEFTU31cbiAgICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0czogJ2xpc3Qtc2VsZWN0b3InLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dDogVFlQRUFIRUFEX0lOUFVUX0NMQVNTLFxuICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwgPyBpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiAncGxhY2Vob2xkZXIuc2VhcmNoJ30pIDogJ1NlYXJjaCd9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtudWxsfVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e0FjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoJ2xhYmVsJyl9XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJPcHRpb249eydsYWJlbCd9XG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlXG4gICAgICAgICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXtvbk9wdGlvblNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ9e0xpc3RJdGVtfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7YnV0dG9uUmVuZGVyZWR9XG4gICAgICAgIDwvVGlwcHk+XG4gICAgICApfVxuICAgIDwvUm9vdENvbnRleHQuQ29uc3VtZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBZGRCeURhdGFzZXRCdXR0b247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUksT0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFFBQUEsR0FBQVYsT0FBQTtBQUF1QyxJQUFBVyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBZHZDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWhCLHdCQUFBZ0IsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxH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