UNPKG

kepler.gl

Version:

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

154 lines (125 loc) 18.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.PureFeatureActionPanelFactory = PureFeatureActionPanelFactory; exports["default"] = FeatureActionPanelFactory; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _reactIntl = require("react-intl"); 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 _copyToClipboard = _interopRequireDefault(require("copy-to-clipboard")); var _templateObject; var LAYOVER_OFFSET = 4; var StyledActionsLayer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n"]))); PureFeatureActionPanelFactory.deps = []; function PureFeatureActionPanelFactory() { var FeatureActionPanel = function FeatureActionPanel(_ref) { var className = _ref.className, datasets = _ref.datasets, selectedFeature = _ref.selectedFeature, position = _ref.position, layers = _ref.layers, currentFilter = _ref.currentFilter, onToggleLayer = _ref.onToggleLayer, onDeleteFeature = _ref.onDeleteFeature; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), copied = _useState2[0], setCopied = _useState2[1]; var _ref2 = currentFilter || {}, _ref2$layerId = _ref2.layerId, layerId = _ref2$layerId === void 0 ? [] : _ref2$layerId; var intl = (0, _reactIntl.useIntl)(); var copyGeometry = (0, _react.useCallback)(function () { if (selectedFeature !== null && selectedFeature !== void 0 && selectedFeature.geometry) (0, _copyToClipboard["default"])(JSON.stringify(selectedFeature.geometry)); setCopied(true); }, [selectedFeature === null || selectedFeature === void 0 ? void 0 : selectedFeature.geometry]); 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: intl.formatMessage({ id: 'editor.filterLayer', defaultMessage: 'Filter 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: intl.formatMessage({ id: 'editor.copyGeometry', defaultMessage: 'Copy Geometry' }), className: "delete-panel-item", Icon: copied ? _icons.Checkmark : _icons.Copy, onClick: copyGeometry }), /*#__PURE__*/_react["default"].createElement(_actionPanel.ActionPanelItem, { label: intl.formatMessage({ id: 'tooltip.delete', defaultMessage: 'Delete' }), className: "delete-panel-item", Icon: _icons.Trash, onClick: onDeleteFeature }))); }; FeatureActionPanel.displayName = 'FeatureActionPanel'; 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 }; FeatureActionPanel.defaultProps = { position: {} }; return FeatureActionPanel; } FeatureActionPanelFactory.deps = PureFeatureActionPanelFactory.deps; function FeatureActionPanelFactory() { var PureFeatureActionPanel = PureFeatureActionPanelFactory(); var ClickOutsideFeatureActionPanel = function ClickOutsideFeatureActionPanel(props) { // @ts-ignore ClickOutsideFeatureActionPanel.handleClickOutside = function (e) { var _props$onClose; e.preventDefault(); e.stopPropagation(); (_props$onClose = props.onClose) === null || _props$onClose === void 0 ? void 0 : _props$onClose.call(props); }; return /*#__PURE__*/_react["default"].createElement(PureFeatureActionPanel, props); }; var clickOutsideConfig = { // @ts-ignore handleClickOutside: function handleClickOutside() { return ClickOutsideFeatureActionPanel.handleClickOutside; } }; return (0, _reactOnclickoutside["default"])(ClickOutsideFeatureActionPanel, clickOutsideConfig); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2VkaXRvci9mZWF0dXJlLWFjdGlvbi1wYW5lbC5qcyJdLCJuYW1lcyI6WyJMQVlPVkVSX09GRlNFVCIsIlN0eWxlZEFjdGlvbnNMYXllciIsInN0eWxlZCIsImRpdiIsIlB1cmVGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5IiwiZGVwcyIsIkZlYXR1cmVBY3Rpb25QYW5lbCIsImNsYXNzTmFtZSIsImRhdGFzZXRzIiwic2VsZWN0ZWRGZWF0dXJlIiwicG9zaXRpb24iLCJsYXllcnMiLCJjdXJyZW50RmlsdGVyIiwib25Ub2dnbGVMYXllciIsIm9uRGVsZXRlRmVhdHVyZSIsImNvcGllZCIsInNldENvcGllZCIsImxheWVySWQiLCJpbnRsIiwiY29weUdlb21ldHJ5IiwiZ2VvbWV0cnkiLCJKU09OIiwic3RyaW5naWZ5IiwidG9wIiwieSIsImxlZnQiLCJ4IiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiZGVmYXVsdE1lc3NhZ2UiLCJMYXllcnMiLCJtYXAiLCJsYXllciIsImluZGV4IiwiY29uZmlnIiwibGFiZWwiLCJkYXRhSWQiLCJjb2xvciIsImluY2x1ZGVzIiwiQ2hlY2ttYXJrIiwiQ29weSIsIlRyYXNoIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiYXJyYXlPZiIsIm9uQ2xvc2UiLCJmdW5jIiwiZGVmYXVsdFByb3BzIiwiRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeSIsIlB1cmVGZWF0dXJlQWN0aW9uUGFuZWwiLCJDbGlja091dHNpZGVGZWF0dXJlQWN0aW9uUGFuZWwiLCJwcm9wcyIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImNsaWNrT3V0c2lkZUNvbmZpZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFFQTs7QUFDQTs7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QUFFRDhDLHlCQUF5QixDQUFDL0MsSUFBMUIsR0FBaUNELDZCQUE2QixDQUFDQyxJQUEvRDs7QUFFZSxTQUFTK0MseUJBQVQsR0FBcUM7QUFDbEQsTUFBTUMsc0JBQXNCLEdBQUdqRCw2QkFBNkIsRUFBNUQ7O0FBRUEsTUFBTWtELDhCQUE4QixHQUFHLFNBQWpDQSw4QkFBaUMsQ0FBQUMsS0FBSyxFQUFJO0FBQzlDO0FBQ0FELElBQUFBLDhCQUE4QixDQUFDRSxrQkFBL0IsR0FBb0QsVUFBQUMsQ0FBQyxFQUFJO0FBQUE7O0FBQ3ZEQSxNQUFBQSxDQUFDLENBQUNDLGNBQUY7QUFDQUQsTUFBQUEsQ0FBQyxDQUFDRSxlQUFGO0FBQ0Esd0JBQUFKLEtBQUssQ0FBQ04sT0FBTix1RUFBQU0sS0FBSztBQUNOLEtBSkQ7O0FBS0Esd0JBQU8sZ0NBQUMsc0JBQUQsRUFBNEJBLEtBQTVCLENBQVA7QUFDRCxHQVJEOztBQVVBLE1BQU1LLGtCQUFrQixHQUFHO0FBQ3pCO0FBQ0FKLElBQUFBLGtCQUFrQixFQUFFO0FBQUEsYUFBTUYsOEJBQThCLENBQUNFLGtCQUFyQztBQUFBO0FBRkssR0FBM0I7QUFLQSxTQUFPLHFDQUFlRiw4QkFBZixFQUErQ00sa0JBQS9DLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VJbnRsfSBmcm9tICdyZWFjdC1pbnRsJztcblxuaW1wb3J0IEFjdGlvblBhbmVsLCB7QWN0aW9uUGFuZWxJdGVtfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9hY3Rpb24tcGFuZWwnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgb25DbGlja091dHNpZGUgZnJvbSAncmVhY3Qtb25jbGlja291dHNpZGUnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtUcmFzaCwgTGF5ZXJzLCBDb3B5LCBDaGVja21hcmt9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCBjb3B5IGZyb20gJ2NvcHktdG8tY2xpcGJvYXJkJztcblxuY29uc3QgTEFZT1ZFUl9PRkZTRVQgPSA0O1xuXG5jb25zdCBTdHlsZWRBY3Rpb25zTGF5ZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5gO1xuXG5QdXJlRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeS5kZXBzID0gW107XG5cbmV4cG9ydCBmdW5jdGlvbiBQdXJlRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeSgpIHtcbiAgY29uc3QgRmVhdHVyZUFjdGlvblBhbmVsID0gKHtcbiAgICBjbGFzc05hbWUsXG4gICAgZGF0YXNldHMsXG4gICAgc2VsZWN0ZWRGZWF0dXJlLFxuICAgIHBvc2l0aW9uLFxuICAgIGxheWVycyxcbiAgICBjdXJyZW50RmlsdGVyLFxuICAgIG9uVG9nZ2xlTGF5ZXIsXG4gICAgb25EZWxldGVGZWF0dXJlXG4gIH0pID0+IHtcbiAgICBjb25zdCBbY29waWVkLCBzZXRDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHtsYXllcklkID0gW119ID0gY3VycmVudEZpbHRlciB8fCB7fTtcbiAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuXG4gICAgY29uc3QgY29weUdlb21ldHJ5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKHNlbGVjdGVkRmVhdHVyZT8uZ2VvbWV0cnkpIGNvcHkoSlNPTi5zdHJpbmdpZnkoc2VsZWN0ZWRGZWF0dXJlLmdlb21ldHJ5KSk7XG4gICAgICBzZXRDb3BpZWQodHJ1ZSk7XG4gICAgfSwgW3NlbGVjdGVkRmVhdHVyZT8uZ2VvbWV0cnldKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQWN0aW9uc0xheWVyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnZmVhdHVyZS1hY3Rpb24tcGFuZWwnLCBjbGFzc05hbWUpfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRvcDogYCR7cG9zaXRpb24ueSArIExBWU9WRVJfT0ZGU0VUfXB4YCxcbiAgICAgICAgICBsZWZ0OiBgJHtwb3NpdGlvbi54ICsgTEFZT1ZFUl9PRkZTRVR9cHhgXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxBY3Rpb25QYW5lbD5cbiAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJlZGl0b3ItbGF5ZXJzLWxpc3RcIlxuICAgICAgICAgICAgbGFiZWw9e2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdlZGl0b3IuZmlsdGVyTGF5ZXInLCBkZWZhdWx0TWVzc2FnZTogJ0ZpbHRlciBsYXllcnMnfSl9XG4gICAgICAgICAgICBJY29uPXtMYXllcnN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVycy5tYXAoKGxheWVyLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICBsYWJlbD17bGF5ZXIuY29uZmlnLmxhYmVsfVxuICAgICAgICAgICAgICAgIGNvbG9yPXtkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5jb2xvcn1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGlvbj17dHJ1ZX1cbiAgICAgICAgICAgICAgICBpc0FjdGl2ZT17bGF5ZXJJZC5pbmNsdWRlcyhsYXllci5pZCl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGVMYXllcihsYXllcil9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItcGFuZWwtaXRlbVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0FjdGlvblBhbmVsSXRlbT5cbiAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICBsYWJlbD17aW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ2VkaXRvci5jb3B5R2VvbWV0cnknLCBkZWZhdWx0TWVzc2FnZTogJ0NvcHkgR2VvbWV0cnknfSl9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJkZWxldGUtcGFuZWwtaXRlbVwiXG4gICAgICAgICAgICBJY29uPXtjb3BpZWQgPyBDaGVja21hcmsgOiBDb3B5fVxuICAgICAgICAgICAgb25DbGljaz17Y29weUdlb21ldHJ5fVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8QWN0aW9uUGFuZWxJdGVtXG4gICAgICAgICAgICBsYWJlbD17aW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ3Rvb2x0aXAuZGVsZXRlJywgZGVmYXVsdE1lc3NhZ2U6ICdEZWxldGUnfSl9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJkZWxldGUtcGFuZWwtaXRlbVwiXG4gICAgICAgICAgICBJY29uPXtUcmFzaH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uRGVsZXRlRmVhdHVyZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0FjdGlvblBhbmVsPlxuICAgICAgPC9TdHlsZWRBY3Rpb25zTGF5ZXI+XG4gICAgKTtcbiAgfTtcblxuICBGZWF0dXJlQWN0aW9uUGFuZWwuZGlzcGxheU5hbWUgPSAnRmVhdHVyZUFjdGlvblBhbmVsJztcbiAgRmVhdHVyZUFjdGlvblBhbmVsLnByb3BUeXBlcyA9IHtcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGF0YXNldHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBwb3NpdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGxheWVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCkuaXNSZXF1aXJlZCxcbiAgICBjdXJyZW50RmlsdGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25EZWxldGVGZWF0dXJlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH07XG5cbiAgRmVhdHVyZUFjdGlvblBhbmVsLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBwb3NpdGlvbjoge31cbiAgfTtcblxuICByZXR1cm4gRmVhdHVyZUFjdGlvblBhbmVsO1xufVxuXG5GZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5LmRlcHMgPSBQdXJlRmVhdHVyZUFjdGlvblBhbmVsRmFjdG9yeS5kZXBzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBGZWF0dXJlQWN0aW9uUGFuZWxGYWN0b3J5KCkge1xuICBjb25zdCBQdXJlRmVhdHVyZUFjdGlvblBhbmVsID0gUHVyZUZlYXR1cmVBY3Rpb25QYW5lbEZhY3RvcnkoKTtcblxuICBjb25zdCBDbGlja091dHNpZGVGZWF0dXJlQWN0aW9uUGFuZWwgPSBwcm9wcyA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIENsaWNrT3V0c2lkZUZlYXR1cmVBY3Rpb25QYW5lbC5oYW5kbGVDbGlja091dHNpZGUgPSBlID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBwcm9wcy5vbkNsb3NlPy4oKTtcbiAgICB9O1xuICAgIHJldHVybiA8UHVyZUZlYXR1cmVBY3Rpb25QYW5lbCB7Li4ucHJvcHN9IC8+O1xuICB9O1xuXG4gIGNvbnN0IGNsaWNrT3V0c2lkZUNvbmZpZyA9IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaGFuZGxlQ2xpY2tPdXRzaWRlOiAoKSA9PiBDbGlja091dHNpZGVGZWF0dXJlQWN0aW9uUGFuZWwuaGFuZGxlQ2xpY2tPdXRzaWRlXG4gIH07XG5cbiAgcmV0dXJuIG9uQ2xpY2tPdXRzaWRlKENsaWNrT3V0c2lkZUZlYXR1cmVBY3Rpb25QYW5lbCwgY2xpY2tPdXRzaWRlQ29uZmlnKTtcbn1cbiJdfQ==