UNPKG

kepler.gl.geoiq

Version:

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

146 lines (109 loc) 15.4 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"] = exports.FeatureActionPanel = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _actionPanel = _interopRequireWildcard(require("../common/action-panel")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _reactOnclickoutside = _interopRequireDefault(require("react-onclickoutside")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _icons = require("../common/icons"); var _templateObject; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var LAYOVER_OFFSET = 4; var StyledActionsLayer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n"]))); var FeatureActionPanel = exports.FeatureActionPanel = /*#__PURE__*/function (_PureComponent) { (0, _inherits2["default"])(FeatureActionPanel, _PureComponent); var _super = _createSuper(FeatureActionPanel); function FeatureActionPanel() { var _this; (0, _classCallCheck2["default"])(this, FeatureActionPanel); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); // Used by onClickOutside (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickOutside", function (e) { e.preventDefault(); e.stopPropagation(); _this.props.onClose(); }); return _this; } (0, _createClass2["default"])(FeatureActionPanel, [{ key: "render", value: function render() { var _this$props = this.props, className = _this$props.className, datasets = _this$props.datasets, position = _this$props.position, layers = _this$props.layers, currentFilter = _this$props.currentFilter, onToggleLayer = _this$props.onToggleLayer, onDeleteFeature = _this$props.onDeleteFeature; var _ref = currentFilter || {}, _ref$layerId = _ref.layerId, layerId = _ref$layerId === void 0 ? [] : _ref$layerId; return (/*#__PURE__*/_react["default"].createElement(StyledActionsLayer, { className: (0, _classnames["default"])('feature-action-panel', className), style: { top: "".concat(position.y + LAYOVER_OFFSET, "px"), left: "".concat(position.x + LAYOVER_OFFSET, "px") } }, /*#__PURE__*/_react["default"].createElement(_actionPanel["default"], null, /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, { className: "editor-layers-list", label: "layers", Icon: _icons.Layers }, layers.map(function (layer, index) { return (/*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, { key: index, label: layer.config.label, color: datasets[layer.config.dataId].color, isSelection: true, isActive: layerId.includes(layer.id), onClick: function onClick() { return onToggleLayer(layer); }, className: "layer-panel-item" }) ); })), /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, { label: "delete", className: "delete-panel-item", Icon: _icons.Trash, onClick: onDeleteFeature }))) ); } }]); return FeatureActionPanel; }(_react.PureComponent); (0, _defineProperty2["default"])(FeatureActionPanel, "propTypes", { className: _propTypes["default"].string, datasets: _propTypes["default"].object.isRequired, position: _propTypes["default"].object.isRequired, layers: _propTypes["default"].arrayOf(_propTypes["default"].object).isRequired, currentFilter: _propTypes["default"].object, onClose: _propTypes["default"].func.isRequired, onDeleteFeature: _propTypes["default"].func.isRequired }); (0, _defineProperty2["default"])(FeatureActionPanel, "defaultProps", { position: {} }); var _default = exports["default"] = (0, _reactOnclickoutside["default"])(FeatureActionPanel); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2VkaXRvci9mZWF0dXJlLWFjdGlvbi1wYW5lbC5qcyJdLCJuYW1lcyI6WyJMQVlPVkVSX09GRlNFVCIsIlN0eWxlZEFjdGlvbnNMYXllciIsInN0eWxlZCIsImRpdiIsIkZlYXR1cmVBY3Rpb25QYW5lbCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInByb3BzIiwib25DbG9zZSIsImNsYXNzTmFtZSIsImRhdGFzZXRzIiwicG9zaXRpb24iLCJsYXllcnMiLCJjdXJyZW50RmlsdGVyIiwib25Ub2dnbGVMYXllciIsIm9uRGVsZXRlRmVhdHVyZSIsImxheWVySWQiLCJ0b3AiLCJ5IiwibGVmdCIsIngiLCJMYXllcnMiLCJtYXAiLCJsYXllciIsImluZGV4IiwiY29uZmlnIiwibGFiZWwiLCJkYXRhSWQiLCJjb2xvciIsImluY2x1ZGVzIiwiaWQiLCJUcmFzaCIsIlB1cmVDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiYXJyYXlPZiIsImZ1bmMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsY0FBYyxHQUFHLENBQXZCOztBQUVBLElBQU1DLGtCQUFrQixHQUFHQyw2QkFBT0MsR0FBViwrR0FBeEI7O0lBSWFDLGtCOzs7Ozs7Ozs7Ozs7Ozs7QUFlWDsyR0FDcUIsVUFBQUMsQ0FBQyxFQUFJO0FBQ3hCQSxNQUFBQSxDQUFDLENBQUNDLGNBQUY7QUFDQUQsTUFBQUEsQ0FBQyxDQUFDRSxlQUFGOztBQUNBLFlBQUtDLEtBQUwsQ0FBV0MsT0FBWDtBQUNELEs7Ozs7OztXQUVELGtCQUFTO0FBQ1Asd0JBUUksS0FBS0QsS0FSVDtBQUFBLFVBQ0VFLFNBREYsZUFDRUEsU0FERjtBQUFBLFVBRUVDLFFBRkYsZUFFRUEsUUFGRjtBQUFBLFVBR0VDLFFBSEYsZUFHRUEsUUFIRjtBQUFBLFVBSUVDLE1BSkYsZUFJRUEsTUFKRjtBQUFBLFVBS0VDLGFBTEYsZUFLRUEsYUFMRjtBQUFBLFVBTUVDLGFBTkYsZUFNRUEsYUFORjtBQUFBLFVBT0VDLGVBUEYsZUFPRUEsZUFQRjs7QUFVQSxpQkFBdUJGLGFBQWEsSUFBSSxFQUF4QztBQUFBLDhCQUFPRyxPQUFQO0FBQUEsVUFBT0EsT0FBUCw2QkFBaUIsRUFBakI7O0FBRUEsMkJBQ0UsZ0NBQUMsa0JBQUQ7QUFDRSxVQUFBLFNBQVMsRUFBRSw0QkFBVyxzQkFBWCxFQUFtQ1AsU0FBbkMsQ0FEYjtBQUVFLFVBQUEsS0FBSyxFQUFFO0FBQ0xRLFlBQUFBLEdBQUcsWUFBS04sUUFBUSxDQUFDTyxDQUFULEdBQWFuQixjQUFsQixPQURFO0FBRUxvQixZQUFBQSxJQUFJLFlBQUtSLFFBQVEsQ0FBQ1MsQ0FBVCxHQUFhckIsY0FBbEI7QUFGQztBQUZULHdCQU9FLGdDQUFDLHVCQUFELHFCQUNFLGdDQUFDLDRCQUFEO0FBQ0UsVUFBQSxTQUFTLEVBQUMsb0JBRFo7QUFFRSxVQUFBLEtBQUssRUFBQyxRQUZSO0FBR0UsVUFBQSxJQUFJLEVBQUVzQjtBQUhSLFdBS0dULE1BQU0sQ0FBQ1UsR0FBUCxDQUFXLFVBQUNDLEtBQUQsRUFBUUMsS0FBUjtBQUFBLCtCQUNWLGdDQUFDLDRCQUFEO0FBQ0UsY0FBQSxHQUFHLEVBQUVBLEtBRFA7QUFFRSxjQUFBLEtBQUssRUFBRUQsS0FBSyxDQUFDRSxNQUFOLENBQWFDLEtBRnRCO0FBR0UsY0FBQSxLQUFLLEVBQUVoQixRQUFRLENBQUNhLEtBQUssQ0FBQ0UsTUFBTixDQUFhRSxNQUFkLENBQVIsQ0FBOEJDLEtBSHZDO0FBSUUsY0FBQSxXQUFXLEVBQUUsSUFKZjtBQUtFLGNBQUEsUUFBUSxFQUFFWixPQUFPLENBQUNhLFFBQVIsQ0FBaUJOLEtBQUssQ0FBQ08sRUFBdkIsQ0FMWjtBQU1FLGNBQUEsT0FBTyxFQUFFO0FBQUEsdUJBQU1oQixhQUFhLENBQUNTLEtBQUQsQ0FBbkI7QUFBQSxlQU5YO0FBT0UsY0FBQSxTQUFTLEVBQUM7QUFQWjtBQURVO0FBQUEsU0FBWCxDQUxILENBREYsZUFrQkUsZ0NBQUMsNEJBQUQ7QUFDRSxVQUFBLEtBQUssRUFBQyxRQURSO0FBRUUsVUFBQSxTQUFTLEVBQUMsbUJBRlo7QUFHRSxVQUFBLElBQUksRUFBRVEsWUFIUjtBQUlFLFVBQUEsT0FBTyxFQUFFaEI7QUFKWCxVQWxCRixDQVBGO0FBREY7QUFtQ0Q7OztFQXRFcUNpQixvQjs7aUNBQTNCN0Isa0IsZUFDUTtBQUNqQk0sRUFBQUEsU0FBUyxFQUFFd0Isc0JBQVVDLE1BREo7QUFFakJ4QixFQUFBQSxRQUFRLEVBQUV1QixzQkFBVUUsTUFBVixDQUFpQkMsVUFGVjtBQUdqQnpCLEVBQUFBLFFBQVEsRUFBRXNCLHNCQUFVRSxNQUFWLENBQWlCQyxVQUhWO0FBSWpCeEIsRUFBQUEsTUFBTSxFQUFFcUIsc0JBQVVJLE9BQVYsQ0FBa0JKLHNCQUFVRSxNQUE1QixFQUFvQ0MsVUFKM0I7QUFLakJ2QixFQUFBQSxhQUFhLEVBQUVvQixzQkFBVUUsTUFMUjtBQU1qQjNCLEVBQUFBLE9BQU8sRUFBRXlCLHNCQUFVSyxJQUFWLENBQWVGLFVBTlA7QUFPakJyQixFQUFBQSxlQUFlLEVBQUVrQixzQkFBVUssSUFBVixDQUFlRjtBQVBmLEM7aUNBRFJqQyxrQixrQkFXVztBQUNwQlEsRUFBQUEsUUFBUSxFQUFFO0FBRFUsQzs7b0NBOERULHFDQUFlUixrQkFBZixDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7UHVyZUNvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEFjdGlvblBhbmVsLCB7QWN0aW9uUGFuZWxJdGVtfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9hY3Rpb24tcGFuZWwnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgb25DbGlja091dHNpZGUgZnJvbSAncmVhY3Qtb25jbGlja291dHNpZGUnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtUcmFzaCwgTGF5ZXJzfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5cbmNvbnN0IExBWU9WRVJfT0ZGU0VUID0gNDtcblxuY29uc3QgU3R5bGVkQWN0aW9uc0xheWVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuYDtcblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVBY3Rpb25QYW5lbCBleHRlbmRzIFB1cmVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkYXRhc2V0czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIHBvc2l0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgbGF5ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KS5pc1JlcXVpcmVkLFxuICAgIGN1cnJlbnRGaWx0ZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkRlbGV0ZUZlYXR1cmU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHBvc2l0aW9uOiB7fVxuICB9O1xuXG4gIC8vIFVzZWQgYnkgb25DbGlja091dHNpZGVcbiAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gZSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wcm9wcy5vbkNsb3NlKCk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRhdGFzZXRzLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBsYXllcnMsXG4gICAgICBjdXJyZW50RmlsdGVyLFxuICAgICAgb25Ub2dnbGVMYXllcixcbiAgICAgIG9uRGVsZXRlRmVhdHVyZVxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3Qge2xheWVySWQgPSBbXX0gPSBjdXJyZW50RmlsdGVyIHx8IHt9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRBY3Rpb25zTGF5ZXJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdmZWF0dXJlLWFjdGlvbi1wYW5lbCcsIGNsYXNzTmFtZSl9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgdG9wOiBgJHtwb3NpdGlvbi55ICsgTEFZT1ZFUl9PRkZTRVR9cHhgLFxuICAgICAgICAgIGxlZnQ6IGAke3Bvc2l0aW9uLnggKyBMQVlPVkVSX09GRlNFVH1weGBcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPEFjdGlvblBhbmVsPlxuICAgICAgICAgIDxBY3Rpb25QYW5lbEl0ZW1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImVkaXRvci1sYXllcnMtbGlzdFwiXG4gICAgICAgICAgICBsYWJlbD1cImxheWVyc1wiXG4gICAgICAgICAgICBJY29uPXtMYXllcnN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVycy5tYXAoKGxheWVyLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBsYWJlbD17bGF5ZXIuY29uZmlnLmxhYmVsfVxuICAgICAgICAgICAgICAgIGNvbG9yPXtkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5jb2xvcn1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGlvbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICBpc0FjdGl2ZT17bGF5ZXJJZC5pbmNsdWRlcyhsYXllci5pZCl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGVMYXllcihsYXllcil9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItcGFuZWwtaXRlbVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0FjdGlvblBhbmVsSXRlbT5cbiAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICBsYWJlbD1cImRlbGV0ZVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJkZWxldGUtcGFuZWwtaXRlbVwiXG4gICAgICAgICAgICBJY29uPXtUcmFzaH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uRGVsZXRlRmVhdHVyZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0FjdGlvblBhbmVsPlxuICAgICAgPC9TdHlsZWRBY3Rpb25zTGF5ZXI+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBvbkNsaWNrT3V0c2lkZShGZWF0dXJlQWN0aW9uUGFuZWwpO1xuIl19