kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
170 lines (134 loc) • 19.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = DatasetTitleFactory;
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 _styledComponents = _interopRequireDefault(require("styled-components"));
var _styledComponents2 = require("../../common/styled-components");
var _icons = require("../../common/icons");
var _datasetTag = _interopRequireDefault(require("./dataset-tag"));
var _templateObject, _templateObject2;
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; } }
function nop() {}
var StyledDatasetTitle = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: flex;\n align-items: flex-start;\n\n .source-data-arrow {\n height: 16px;\n }\n :hover {\n cursor: ", ";\n\n .dataset-name {\n color: ", ";\n }\n\n .dataset-action {\n color: ", ";\n opacity: 1;\n }\n\n .dataset-action:hover {\n color: #f63654;\n }\n }\n"])), function (props) {
return props.theme.textColor;
}, function (props) {
return props.clickable ? 'pointer' : 'auto';
}, function (props) {
return props.clickable ? props.theme.textColorHl : props.theme.textColor;
}, function (props) {
return props.theme.textColorHl;
});
var DataTagAction = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n height: 16px;\n opacity: 0;\n"])));
var ShowDataTable = function ShowDataTable(_ref) {
var id = _ref.id,
_ref$showDatasetTable = _ref.showDatasetTable,
showDatasetTable = _ref$showDatasetTable === void 0 ? nop : _ref$showDatasetTable;
return (/*#__PURE__*/_react["default"].createElement(DataTagAction, {
className: "dataset-action show-data-table",
"data-tip": true,
"data-for": "data-table-".concat(id)
}, /*#__PURE__*/_react["default"].createElement(_icons.Table, {
height: "16px",
onClick: function onClick(e) {
e.stopPropagation();
showDatasetTable(id);
}
}), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
id: "data-table-".concat(id),
effect: "solid"
}, /*#__PURE__*/_react["default"].createElement("span", null, "Show data table")))
);
};
var RemoveDataset = function RemoveDataset(_ref2) {
var datasetKey = _ref2.datasetKey,
_ref2$removeDataset = _ref2.removeDataset,
removeDataset = _ref2$removeDataset === void 0 ? nop : _ref2$removeDataset;
return (/*#__PURE__*/_react["default"].createElement(DataTagAction, {
className: "dataset-action remove-dataset",
"data-tip": true,
"data-for": "delete-".concat(datasetKey)
}, /*#__PURE__*/_react["default"].createElement(_icons.Trash, {
height: "16px",
onClick: function onClick(e) {
e.stopPropagation();
removeDataset(datasetKey);
}
}), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Tooltip, {
id: "delete-".concat(datasetKey),
effect: "solid",
type: "error"
}, /*#__PURE__*/_react["default"].createElement("span", null, "Remove dataset")))
);
};
DatasetTitleFactory.deps = [_datasetTag["default"]];
function DatasetTitleFactory(DatasetTag) {
var DatasetTitle = /*#__PURE__*/function (_PureComponent) {
(0, _inherits2["default"])(DatasetTitle, _PureComponent);
var _super = _createSuper(DatasetTitle);
function DatasetTitle() {
var _this;
(0, _classCallCheck2["default"])(this, DatasetTitle);
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));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onClickTitle", function (e) {
e.stopPropagation();
if (typeof _this.props.onTitleClick === 'function') {
_this.props.onTitleClick();
} else if (typeof _this.props.showDatasetTable === 'function') {
_this.props.showDatasetTable(_this.props.dataset.id);
}
});
return _this;
}
(0, _createClass2["default"])(DatasetTitle, [{
key: "render",
value: function render() {
var _this$props = this.props,
showDatasetTable = _this$props.showDatasetTable,
showDeleteDataset = _this$props.showDeleteDataset,
onTitleClick = _this$props.onTitleClick,
removeDataset = _this$props.removeDataset,
dataset = _this$props.dataset;
var showExternalData = dataset.externalData !== true;
return (/*#__PURE__*/_react["default"].createElement(StyledDatasetTitle, {
className: "source-data-title",
clickable: Boolean(showDatasetTable || onTitleClick)
}, /*#__PURE__*/_react["default"].createElement(DatasetTag, {
dataset: dataset,
onClick: this._onClickTitle
}), showDatasetTable ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.CenterFlexbox, {
className: "source-data-arrow"
}, /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
height: "12px"
})) : null, showDatasetTable ? showExternalData ? /*#__PURE__*/_react["default"].createElement(ShowDataTable, {
id: dataset.id,
showDatasetTable: showDatasetTable
}) : null : null, showDeleteDataset ? /*#__PURE__*/_react["default"].createElement(RemoveDataset, {
datasetKey: dataset.id,
removeDataset: removeDataset
}) : null)
);
}
}]);
return DatasetTitle;
}(_react.PureComponent);
return DatasetTitle;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvY29tbW9uL2RhdGFzZXQtdGl0bGUuanMiXSwibmFtZXMiOlsibm9wIiwiU3R5bGVkRGF0YXNldFRpdGxlIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvciIsImNsaWNrYWJsZSIsInRleHRDb2xvckhsIiwiRGF0YVRhZ0FjdGlvbiIsIlNob3dEYXRhVGFibGUiLCJpZCIsInNob3dEYXRhc2V0VGFibGUiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwiUmVtb3ZlRGF0YXNldCIsImRhdGFzZXRLZXkiLCJyZW1vdmVEYXRhc2V0IiwiRGF0YXNldFRpdGxlRmFjdG9yeSIsImRlcHMiLCJEYXRhc2V0VGFnRmFjdG9yeSIsIkRhdGFzZXRUYWciLCJEYXRhc2V0VGl0bGUiLCJvblRpdGxlQ2xpY2siLCJkYXRhc2V0Iiwic2hvd0RlbGV0ZURhdGFzZXQiLCJzaG93RXh0ZXJuYWxEYXRhIiwiZXh0ZXJuYWxEYXRhIiwiQm9vbGVhbiIsIl9vbkNsaWNrVGl0bGUiLCJQdXJlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLEdBQVQsR0FBZSxDQUFFOztBQUVqQixJQUFNQyxrQkFBa0IsR0FBR0MsNkJBQU9DLEdBQVYsbWFBQ2IsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZQyxTQUFoQjtBQUFBLENBRFEsRUFTVixVQUFBRixLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDRyxTQUFOLEdBQWtCLFNBQWxCLEdBQThCLE1BQW5DO0FBQUEsQ0FUSyxFQVlULFVBQUFILEtBQUs7QUFBQSxTQUNaQSxLQUFLLENBQUNHLFNBQU4sR0FBa0JILEtBQUssQ0FBQ0MsS0FBTixDQUFZRyxXQUE5QixHQUE0Q0osS0FBSyxDQUFDQyxL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QWxEO0FBQ0EsNkJBQ0UsZ0NBQUMsa0JBQUQ7QUFDRSxZQUFBLFNBQVMsRUFBQyxtQkFEWjtBQUVFLFlBQUEsU0FBUyxFQUFFQyxPQUFPLENBQUNoQixnQkFBZ0IsSUFBSVcsWUFBckI7QUFGcEIsMEJBSUUsZ0NBQUMsVUFBRDtBQUFZLFlBQUEsT0FBTyxFQUFFQyxPQUFyQjtBQUE4QixZQUFBLE9BQU8sRUFBRSxLQUFLSztBQUE1QyxZQUpGLEVBS0dqQixnQkFBZ0IsZ0JBQ2YsZ0NBQUMsZ0NBQUQ7QUFBZSxZQUFBLFNBQVMsRUFBQztBQUF6QiwwQkFDRSxnQ0FBQyxpQkFBRDtBQUFZLFlBQUEsTUFBTSxFQUFDO0FBQW5CLFlBREYsQ0FEZSxHQUliLElBVE4sRUFVR0EsZ0JBQWdCLEdBQ2ZjLGdCQUFnQixnQkFDZCxnQ0FBQyxhQUFEO0FBQ0UsWUFBQSxFQUFFLEVBQUVGLE9BQU8sQ0FBQ2IsRUFEZDtBQUVFLFlBQUEsZ0JBQWdCLEVBQUVDO0FBRnBCLFlBRGMsR0FLWixJQU5XLEdBT2IsSUFqQk4sRUFrQkdhLGlCQUFpQixnQkFDaEIsZ0NBQUMsYUFBRDtBQUNFLFlBQUEsVUFBVSxFQUFFRCxPQUFPLENBQUNiLEVBRHRCO0FBRUUsWUFBQSxhQUFhLEVBQUVNO0FBRmpCLFlBRGdCLEdBS2QsSUF2Qk47QUFERjtBQTJCRDtBQS9DbUQ7QUFBQTtBQUFBLElBQzNCYSxvQkFEMkI7O0FBa0R0RCxTQUFPUixZQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtUb29sdGlwLCBDZW50ZXJGbGV4Ym94fSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge1RhYmxlLCBUcmFzaCwgQXJyb3dSaWdodH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuaW1wb3J0IERhdGFzZXRUYWdGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9jb21tb24vZGF0YXNldC10YWcnO1xuXG5mdW5jdGlvbiBub3AoKSB7fVxuXG5jb25zdCBTdHlsZWREYXRhc2V0VGl0bGUgPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAuc291cmNlLWRhdGEtYXJyb3cge1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogJHtwcm9wcyA9PiAocHJvcHMuY2xpY2thYmxlID8gJ3BvaW50ZXInIDogJ2F1dG8nKX07XG5cbiAgICAuZGF0YXNldC1uYW1lIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+XG4gICAgICAgIHByb3BzLmNsaWNrYWJsZSA/IHByb3BzLnRoZW1lLnRleHRDb2xvckhsIDogcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICB9XG5cbiAgICAuZGF0YXNldC1hY3Rpb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAuZGF0YXNldC1hY3Rpb246aG92ZXIge1xuICAgICAgY29sb3I6ICNmNjM2NTQ7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBEYXRhVGFnQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gIGhlaWdodDogMTZweDtcbiAgb3BhY2l0eTogMDtcbmA7XG5cbmNvbnN0IFNob3dEYXRhVGFibGUgPSAoe2lkLCBzaG93RGF0YXNldFRhYmxlID0gbm9wfSkgPT4gKFxuICA8RGF0YVRhZ0FjdGlvblxuICAgIGNsYXNzTmFtZT1cImRhdGFzZXQtYWN0aW9uIHNob3ctZGF0YS10YWJsZVwiXG4gICAgZGF0YS10aXBcbiAgICBkYXRhLWZvcj17YGRhdGEtdGFibGUtJHtpZH1gfVxuICA+XG4gICAgPFRhYmxlXG4gICAgICBoZWlnaHQ9XCIxNnB4XCJcbiAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBzaG93RGF0YXNldFRhYmxlKGlkKTtcbiAgICAgIH19XG4gICAgLz5cbiAgICA8VG9vbHRpcCBpZD17YGRhdGEtdGFibGUtJHtpZH1gfSBlZmZlY3Q9XCJzb2xpZFwiPlxuICAgICAgPHNwYW4+U2hvdyBkYXRhIHRhYmxlPC9zcGFuPlxuICAgIDwvVG9vbHRpcD5cbiAgPC9EYXRhVGFnQWN0aW9uPlxuKTtcblxuY29uc3QgUmVtb3ZlRGF0YXNldCA9ICh7ZGF0YXNldEtleSwgcmVtb3ZlRGF0YXNldCA9IG5vcH0pID0+IChcbiAgPERhdGFUYWdBY3Rpb25cbiAgICBjbGFzc05hbWU9XCJkYXRhc2V0LWFjdGlvbiByZW1vdmUtZGF0YXNldFwiXG4gICAgZGF0YS10aXBcbiAgICBkYXRhLWZvcj17YGRlbGV0ZS0ke2RhdGFzZXRLZXl9YH1cbiAgPlxuICAgIDxUcmFzaFxuICAgICAgaGVpZ2h0PVwiMTZweFwiXG4gICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmVtb3ZlRGF0YXNldChkYXRhc2V0S2V5KTtcbiAgICAgIH19XG4gICAgLz5cbiAgICA8VG9vbHRpcCBpZD17YGRlbGV0ZS0ke2RhdGFzZXRLZXl9YH0gZWZmZWN0PVwic29saWRcIiB0eXBlPVwiZXJyb3JcIj5cbiAgICAgIDxzcGFuPlJlbW92ZSBkYXRhc2V0PC9zcGFuPlxuICAgIDwvVG9vbHRpcD5cbiAgPC9EYXRhVGFnQWN0aW9uPlxuKTtcblxuRGF0YXNldFRpdGxlRmFjdG9yeS5kZXBzID0gW0RhdGFzZXRUYWdGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YXNldFRpdGxlRmFjdG9yeShEYXRhc2V0VGFnKSB7XG4gIGNsYXNzIERhdGFzZXRUaXRsZSBleHRlbmRzIFB1cmVDb21wb25lbnQge1xuICAgIF9vbkNsaWNrVGl0bGUgPSBlID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25UaXRsZUNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25UaXRsZUNsaWNrKCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnNob3dEYXRhc2V0VGFibGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zaG93RGF0YXNldFRhYmxlKHRoaXMucHJvcHMuZGF0YXNldC5pZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc2hvd0RhdGFzZXRUYWJsZSxcbiAgICAgICAgc2hvd0RlbGV0ZURhdGFzZXQsXG4gICAgICAgIG9uVGl0bGVDbGljayxcbiAgICAgICAgcmVtb3ZlRGF0YXNldCxcbiAgICAgICAgZGF0YXNldFxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBzaG93RXh0ZXJuYWxEYXRhID0gZGF0YXNldC5leHRlcm5hbERhdGEgIT09IHRydWU7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkRGF0YXNldFRpdGxlXG4gICAgICAgICAgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtdGl0bGVcIlxuICAgICAgICAgIGNsaWNrYWJsZT17Qm9vbGVhbihzaG93RGF0YXNldFRhYmxlIHx8IG9uVGl0bGVDbGljayl9XG4gICAgICAgID5cbiAgICAgICAgICA8RGF0YXNldFRhZyBkYXRhc2V0PXtkYXRhc2V0fSBvbkNsaWNrPXt0aGlzLl9vbkNsaWNrVGl0bGV9IC8+XG4gICAgICAgICAge3Nob3dEYXRhc2V0VGFibGUgPyAoXG4gICAgICAgICAgICA8Q2VudGVyRmxleGJveCBjbGFzc05hbWU9XCJzb3VyY2UtZGF0YS1hcnJvd1wiPlxuICAgICAgICAgICAgICA8QXJyb3dSaWdodCBoZWlnaHQ9XCIxMnB4XCIgLz5cbiAgICAgICAgICAgIDwvQ2VudGVyRmxleGJveD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7c2hvd0RhdGFzZXRUYWJsZSA/IChcbiAgICAgICAgICAgIHNob3dFeHRlcm5hbERhdGEgPyAoXG4gICAgICAgICAgICAgIDxTaG93RGF0YVRhYmxlXG4gICAgICAgICAgICAgICAgaWQ9e2RhdGFzZXQuaWR9XG4gICAgICAgICAgICAgICAgc2hvd0RhdGFzZXRUYWJsZT17c2hvd0RhdGFzZXRUYWJsZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsXG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAge3Nob3dEZWxldGVEYXRhc2V0ID8gKFxuICAgICAgICAgICAgPFJlbW92ZURhdGFzZXRcbiAgICAgICAgICAgICAgZGF0YXNldEtleT17ZGF0YXNldC5pZH1cbiAgICAgICAgICAgICAgcmVtb3ZlRGF0YXNldD17cmVtb3ZlRGF0YXNldH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkRGF0YXNldFRpdGxlPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gRGF0YXNldFRpdGxlO1xufVxuIl19