UNPKG

kepler.gl

Version:

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

263 lines (212 loc) 21.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _extends3 = require('babel-runtime/helpers/extends'); var _extends4 = _interopRequireDefault(_extends3); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _taggedTemplateLiteral2 = require('babel-runtime/helpers/taggedTemplateLiteral'); var _taggedTemplateLiteral3 = _interopRequireDefault(_taggedTemplateLiteral2); var _class, _temp2; var _templateObject = (0, _taggedTemplateLiteral3.default)(['\n border-top: 1px solid ', ';\n'], ['\n border-top: 1px solid ', ';\n']), _templateObject2 = (0, _taggedTemplateLiteral3.default)(['\n padding-bottom: 6px;\n'], ['\n padding-bottom: 6px;\n']); // Copyright (c) 2018 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _styledComponents = require('styled-components'); var _styledComponents2 = _interopRequireDefault(_styledComponents); var _switch = require('../../common/switch'); var _switch2 = _interopRequireDefault(_switch); var _rangeSlider = require('../../common/range-slider'); var _rangeSlider2 = _interopRequireDefault(_rangeSlider); var _fieldSelector = require('../../common/field-selector'); var _fieldSelector2 = _interopRequireDefault(_fieldSelector); var _styledComponents3 = require('../../common/styled-components'); var _sourceDataCatalog = require('../source-data-catalog'); var _interactionUtils = require('../../../utils/interaction-utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var StyledPanelContent = _styledComponents3.PanelContent.extend(_templateObject, function (props) { return props.theme.panelBorderColor; }); var StyledInteractionPanel = _styledComponents2.default.div(_templateObject2); var InteractionPanel = (_temp2 = _class = function (_Component) { (0, _inherits3.default)(InteractionPanel, _Component); function InteractionPanel() { var _ref; var _temp, _this, _ret; (0, _classCallCheck3.default)(this, InteractionPanel); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = InteractionPanel.__proto__ || Object.getPrototypeOf(InteractionPanel)).call.apply(_ref, [this].concat(args))), _this), _this.state = { isConfigActive: false }, _this._updateConfig = function (newProp) { _this.props.onConfigChange((0, _extends4.default)({}, _this.props.config, newProp)); }, _this._enableConfig = function () { _this.setState({ isConfigActive: !_this.state.isConfigActive }); }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); } (0, _createClass3.default)(InteractionPanel, [{ key: 'render', value: function render() { var _this2 = this; var _props = this.props, config = _props.config, datasets = _props.datasets; var onChange = function onChange(newConfig) { return _this2._updateConfig({ config: newConfig }); }; var template = null; switch (config.id) { case 'tooltip': template = _react2.default.createElement(TooltipConfig, { datasets: datasets, config: config.config, width: this.state.innerPanelWidth, onChange: onChange }); break; case 'brush': template = _react2.default.createElement(BrushConfig, { config: config.config, onChange: onChange }); break; default: break; } return _react2.default.createElement( StyledInteractionPanel, { className: 'interaction-panel' }, _react2.default.createElement( _styledComponents3.StyledPanelHeader, { className: 'interaction-panel__header', onClick: this._enableConfig }, _react2.default.createElement( _styledComponents3.PanelHeaderContent, { className: 'interaction-panel__header__content' }, _react2.default.createElement( 'div', { className: 'interaction-panel__header__icon icon' }, _react2.default.createElement(config.iconComponent, { height: '12px' }) ), _react2.default.createElement( 'div', { className: 'interaction-panel__header__title' }, _react2.default.createElement( _styledComponents3.PanelHeaderTitle, null, config.id ) ) ), _react2.default.createElement( 'div', { className: 'interaction-panel__header__actions' }, _react2.default.createElement(_switch2.default, { checked: config.enabled, id: config.id + '-toggle', onChange: function onChange() { return _this2._updateConfig({ enabled: !config.enabled }); }, secondary: true }) ) ), config.enabled && _react2.default.createElement( StyledPanelContent, { className: 'interaction-panel__content' }, template ) ); } }]); return InteractionPanel; }(_react.Component), _class.propTypes = { datasets: _propTypes2.default.object.isRequired, config: _propTypes2.default.object.isRequired, onConfigChange: _propTypes2.default.func.isRequired }, _temp2); exports.default = InteractionPanel; var TooltipConfig = function TooltipConfig(_ref2) { var config = _ref2.config, datasets = _ref2.datasets, width = _ref2.width, onChange = _ref2.onChange; return _react2.default.createElement( 'div', null, Object.keys(config.fieldsToShow).map(function (dataId) { return _react2.default.createElement( _styledComponents3.SidePanelSection, { key: dataId }, _react2.default.createElement(_sourceDataCatalog.DatasetTag, { dataset: datasets[dataId] }), _react2.default.createElement(_fieldSelector2.default, { fields: datasets[dataId].fields, value: config.fieldsToShow[dataId], onSelect: function onSelect(fieldsToShow) { var newConfig = (0, _extends4.default)({}, config, { fieldsToShow: (0, _extends4.default)({}, config.fieldsToShow, (0, _defineProperty3.default)({}, dataId, fieldsToShow.map(function (d) { return d.name; }))) }); onChange(newConfig); }, closeOnSelect: false, multiSelect: true }) ); }) ); }; var BrushConfig = function BrushConfig(_ref3) { var config = _ref3.config, _onChange = _ref3.onChange; return _react2.default.createElement( _styledComponents3.SidePanelSection, null, _react2.default.createElement( _styledComponents3.PanelLabel, null, 'Brush Radius (km)' ), _react2.default.createElement(_rangeSlider2.default, { range: _interactionUtils.BRUSH_CONFIG.range, value0: 0, value1: config.size || 10 / 2, step: 0.1, isRanged: false, onChange: function onChange(value) { return _onChange((0, _extends4.default)({}, config, { size: value[1] })); }, inputTheme: 'secondary' }) ); }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvaW50ZXJhY3Rpb24tcGFuZWwvaW50ZXJhY3Rpb24tcGFuZWwuanMiXSwibmFtZXMiOlsiU3R5bGVkUGFuZWxDb250ZW50IiwiUGFuZWxDb250ZW50IiwiZXh0ZW5kIiwicHJvcHMiLCJ0aGVtZSIsInBhbmVsQm9yZGVyQ29sb3IiLCJTdHlsZWRJbnRlcmFjdGlvblBhbmVsIiwic3R5bGVkIiwiZGl2IiwiSW50ZXJhY3Rpb25QYW5lbCIsInN0YXRlIiwiaXNDb25maWdBY3RpdmUiLCJfdXBkYXRlQ29uZmlnIiwib25Db25maWdDaGFuZ2UiLCJjb25maWciLCJuZXdQcm9wIiwiX2VuYWJsZUNvbmZpZyIsInNldFN0YXRlIiwiZGF0YXNldHMiLCJvbkNoYW5nZSIsIm5ld0NvbmZpZyIsInRlbXBsYXRlIiwiaWQiLCJpbm5lclBhbmVsV2lkdGgiLCJlbmFibGVkIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJUb29sdGlwQ29uZmlnIiwid2lkdGgiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRzVG9TaG93IiwibWFwIiwiZGF0YUlkIiwiZmllbGRzIiwiZCIsIm5hbWUiLCJCcnVzaENvbmZpZyIsIkJSVVNIX0NPTkZJRyIsInJhbmdlIiwic2l6ZSIsInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2SEFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFRQTs7QUFDQTs7OztBQUVBLElBQU1BLHFCQUFxQkMsZ0NBQWFDLE1BQWxDLGtCQUNvQjtBQUFB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bnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDE4IFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N3aXRjaCc7XG5pbXBvcnQgUmFuZ2VTbGlkZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vcmFuZ2Utc2xpZGVyJztcbmltcG9ydCBGaWVsZFNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ZpZWxkLXNlbGVjdG9yJztcbmltcG9ydCB7XG4gIFBhbmVsTGFiZWwsXG4gIFNpZGVQYW5lbFNlY3Rpb24sXG4gIFN0eWxlZFBhbmVsSGVhZGVyLFxuICBQYW5lbEhlYWRlclRpdGxlLFxuICBQYW5lbEhlYWRlckNvbnRlbnQsXG4gIFBhbmVsQ29udGVudFxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0RhdGFzZXRUYWd9IGZyb20gJy4uL3NvdXJjZS1kYXRhLWNhdGFsb2cnO1xuaW1wb3J0IHtCUlVTSF9DT05GSUd9IGZyb20gJ3V0aWxzL2ludGVyYWN0aW9uLXV0aWxzJztcblxuY29uc3QgU3R5bGVkUGFuZWxDb250ZW50ID0gUGFuZWxDb250ZW50LmV4dGVuZGBcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCb3JkZXJDb2xvcn07XG5gO1xuXG5jb25zdCBTdHlsZWRJbnRlcmFjdGlvblBhbmVsID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZy1ib3R0b206IDZweDtcbmA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVyYWN0aW9uUGFuZWwgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgY29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgb25Db25maWdDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgfTtcblxuICBzdGF0ZSA9IHtpc0NvbmZpZ0FjdGl2ZTogZmFsc2V9O1xuXG4gIF91cGRhdGVDb25maWcgPSBuZXdQcm9wID0+IHtcbiAgICB0aGlzLnByb3BzLm9uQ29uZmlnQ2hhbmdlKHtcbiAgICAgIC4uLnRoaXMucHJvcHMuY29uZmlnLFxuICAgICAgLi4ubmV3UHJvcFxuICAgIH0pO1xuICB9O1xuXG4gIF9lbmFibGVDb25maWcgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7aXNDb25maWdBY3RpdmU6ICF0aGlzLnN0YXRlLmlzQ29uZmlnQWN0aXZlfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjb25maWcsIGRhdGFzZXRzfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSBuZXdDb25maWcgPT4gdGhpcy5fdXBkYXRlQ29uZmlnKHtjb25maWc6IG5ld0NvbmZpZ30pO1xuICAgIGxldCB0ZW1wbGF0ZSA9IG51bGw7XG5cbiAgICBzd2l0Y2ggKGNvbmZpZy5pZCkge1xuICAgICAgY2FzZSAndG9vbHRpcCc6XG4gICAgICAgIHRlbXBsYXRlID0gKFxuICAgICAgICAgIDxUb29sdGlwQ29uZmlnXG4gICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICBjb25maWc9e2NvbmZpZy5jb25maWd9XG4gICAgICAgICAgICB3aWR0aD17dGhpcy5zdGF0ZS5pbm5lclBhbmVsV2lkdGh9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JydXNoJzpcbiAgICAgICAgdGVtcGxhdGUgPSA8QnJ1c2hDb25maWcgY29uZmlnPXtjb25maWcuY29uZmlnfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+O1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRJbnRlcmFjdGlvblBhbmVsIGNsYXNzTmFtZT1cImludGVyYWN0aW9uLXBhbmVsXCI+XG4gICAgICAgIDxTdHlsZWRQYW5lbEhlYWRlclxuICAgICAgICAgIGNsYXNzTmFtZT1cImludGVyYWN0aW9uLXBhbmVsX19oZWFkZXJcIlxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuX2VuYWJsZUNvbmZpZ31cbiAgICAgICAgPlxuICAgICAgICAgIDxQYW5lbEhlYWRlckNvbnRlbnQgY2xhc3NOYW1lPVwiaW50ZXJhY3Rpb24tcGFuZWxfX2hlYWRlcl9fY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbnRlcmFjdGlvbi1wYW5lbF9faGVhZGVyX19pY29uIGljb25cIj5cbiAgICAgICAgICAgICAgPGNvbmZpZy5pY29uQ29tcG9uZW50IGhlaWdodD1cIjEycHhcIi8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW50ZXJhY3Rpb24tcGFuZWxfX2hlYWRlcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyVGl0bGU+e2NvbmZpZy5pZH08L1BhbmVsSGVhZGVyVGl0bGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L1BhbmVsSGVhZGVyQ29udGVudD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImludGVyYWN0aW9uLXBhbmVsX19oZWFkZXJfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgY2hlY2tlZD17Y29uZmlnLmVuYWJsZWR9XG4gICAgICAgICAgICAgIGlkPXtgJHtjb25maWcuaWR9LXRvZ2dsZWB9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0aGlzLl91cGRhdGVDb25maWcoe2VuYWJsZWQ6ICFjb25maWcuZW5hYmxlZH0pfVxuICAgICAgICAgICAgICBzZWNvbmRhcnlcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvU3R5bGVkUGFuZWxIZWFkZXI+XG4gICAgICAgIHtjb25maWcuZW5hYmxlZCAmJiAoXG4gICAgICAgICAgPFN0eWxlZFBhbmVsQ29udGVudCBjbGFzc05hbWU9XCJpbnRlcmFjdGlvbi1wYW5lbF9fY29udGVudFwiPlxuICAgICAgICAgICAge3RlbXBsYXRlfVxuICAgICAgICAgIDwvU3R5bGVkUGFuZWxDb250ZW50PlxuICAgICAgICApfVxuICAgICAgPC9TdHlsZWRJbnRlcmFjdGlvblBhbmVsPlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgVG9vbHRpcENvbmZpZyA9ICh7Y29uZmlnLCBkYXRhc2V0cywgd2lkdGgsIG9uQ2hhbmdlfSkgPT4gKFxuICA8ZGl2PlxuICAgIHtPYmplY3Qua2V5cyhjb25maWcuZmllbGRzVG9TaG93KS5tYXAoZGF0YUlkID0+IChcbiAgICAgIDxTaWRlUGFuZWxTZWN0aW9uIGtleT17ZGF0YUlkfT5cbiAgICAgICAgPERhdGFzZXRUYWcgZGF0YXNldD17ZGF0YXNldHNbZGF0YUlkXX0gLz5cbiAgICAgICAgPEZpZWxkU2VsZWN0b3JcbiAgICAgICAgICBmaWVsZHM9e2RhdGFzZXRzW2RhdGFJZF0uZmllbGRzfVxuICAgICAgICAgIHZhbHVlPXtjb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF19XG4gICAgICAgICAgb25TZWxlY3Q9e2ZpZWxkc1RvU2hvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdDb25maWcgPSB7XG4gICAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgICAgZmllbGRzVG9TaG93OiB7XG4gICAgICAgICAgICAgICAgLi4uY29uZmlnLmZpZWxkc1RvU2hvdyxcbiAgICAgICAgICAgICAgICBbZGF0YUlkXTogZmllbGRzVG9TaG93Lm1hcChkID0+IGQubmFtZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKG5ld0NvbmZpZyk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbG9zZU9uU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICBtdWx0aVNlbGVjdFxuICAgICAgICAvPlxuICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICkpfVxuICA8L2Rpdj5cbik7XG5cbmNvbnN0IEJydXNoQ29uZmlnID0gKHtjb25maWcsIG9uQ2hhbmdlfSkgPT4gKFxuICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICA8UGFuZWxMYWJlbD5CcnVzaCBSYWRpdXMgKGttKTwvUGFuZWxMYWJlbD5cbiAgICA8UmFuZ2VTbGlkZXJcbiAgICAgIHJhbmdlPXtCUlVTSF9DT05GSUcucmFuZ2V9XG4gICAgICB2YWx1ZTA9ezB9XG4gICAgICB2YWx1ZTE9e2NvbmZpZy5zaXplIHx8IDEwIC8gMn1cbiAgICAgIHN0ZXA9ezAuMX1cbiAgICAgIGlzUmFuZ2VkPXtmYWxzZX1cbiAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiBvbkNoYW5nZSh7Li4uY29uZmlnLCBzaXplOiB2YWx1ZVsxXX0pfVxuICAgICAgaW5wdXRUaGVtZT1cInNlY29uZGFyeVwiXG4gICAgLz5cbiAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuKTtcbiJdfQ==