kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
211 lines (174 loc) • 22.8 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.DatasetTag = void 0;
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireDefault(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _d3Format = require("d3-format");
var _styledComponents2 = require("../common/styled-components");
var _icons = require("../common/icons");
function _templateObject5() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 11px;\n color: ", ";\n padding-left: 19px;\n"]);
_templateObject5 = function _templateObject5() {
return data;
};
return data;
}
function _templateObject4() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 12px;\n height: 16px;\n opacity: 0;\n"]);
_templateObject4 = function _templateObject4() {
return data;
};
return data;
}
function _templateObject3() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n font-size: 11px;\n letter-spacing: 0.2px;\n overflow: auto;\n\n .dataset-color {\n flex-shrink: 0;\n margin-top: 5px;\n }\n\n .dataset-name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n"]);
_templateObject3 = function _templateObject3() {
return data;
};
return data;
}
function _templateObject2() {
var data = (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 color: ", ";\n cursor: ", ";\n\n .dataset-action {\n color: ", ";\n opacity: 1;\n }\n\n .dataset-action:hover {\n color: black;\n }\n }\n"]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n transition: ", ";\n"]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
var defaultRemoveDataset = function defaultRemoveDataset(datasetKey) {};
var numFormat = (0, _d3Format.format)(',');
var SourceDataCatelogWrapper = _styledComponents["default"].div(_templateObject(), function (props) {
return props.theme.transition;
});
var DatasetTitle = _styledComponents["default"].div(_templateObject2(), function (props) {
return props.theme.textColor;
}, function (props) {
return props.clickable ? props.theme.textColorHl : props.theme.textColor;
}, function (props) {
return props.clickable ? 'pointer' : 'auto';
}, function (props) {
return props.theme.textColorHl;
});
var DatasetTagWrapper = _styledComponents["default"].div(_templateObject3(), function (props) {
return props.theme.textColor;
});
var DataTagAction = _styledComponents["default"].div(_templateObject4());
var DataRowCount = _styledComponents["default"].div(_templateObject5(), function (props) {
return props.theme.subtextColor;
});
var DatasetTag = function DatasetTag(_ref) {
var onClick = _ref.onClick,
dataset = _ref.dataset;
return _react["default"].createElement(DatasetTagWrapper, {
className: "source-data-tag",
onClick: onClick
}, _react["default"].createElement(_styledComponents2.DatasetSquare, {
className: "dataset-color",
color: dataset.color
}), _react["default"].createElement("div", {
className: "dataset-name"
}, dataset.label));
};
exports.DatasetTag = DatasetTag;
var ShowDataTable = function ShowDataTable(_ref2) {
var id = _ref2.id,
showDatasetTable = _ref2.showDatasetTable;
return _react["default"].createElement(DataTagAction, {
className: "dataset-action show-data-table",
"data-tip": true,
"data-for": "data-table-".concat(id)
}, _react["default"].createElement(_icons.Table, {
height: "16px",
onClick: function onClick() {
return showDatasetTable(id);
}
}), _react["default"].createElement(_styledComponents2.Tooltip, {
id: "data-table-".concat(id),
effect: "solid"
}, _react["default"].createElement("span", null, "Show data table")));
};
var RemoveDataset = function RemoveDataset(_ref3) {
var datasetKey = _ref3.datasetKey,
_ref3$removeDataset = _ref3.removeDataset,
removeDataset = _ref3$removeDataset === void 0 ? defaultRemoveDataset : _ref3$removeDataset;
return _react["default"].createElement(DataTagAction, {
className: "dataset-action remove-dataset",
"data-tip": true,
"data-for": "delete-".concat(datasetKey)
}, _react["default"].createElement(_icons.Trash, {
height: "16px",
onClick: function onClick(e) {
e.stopPropagation();
removeDataset(datasetKey);
}
}), _react["default"].createElement(_styledComponents2.Tooltip, {
id: "delete-".concat(datasetKey),
effect: "solid",
type: "error"
}, _react["default"].createElement("span", null, "Remove dataset")));
};
function SourceDataCatalogFactory() {
var SourceDataCatalog = function SourceDataCatalog(_ref4) {
var datasets = _ref4.datasets,
showDatasetTable = _ref4.showDatasetTable,
removeDataset = _ref4.removeDataset,
_ref4$showDeleteDatas = _ref4.showDeleteDataset,
showDeleteDataset = _ref4$showDeleteDatas === void 0 ? false : _ref4$showDeleteDatas;
return _react["default"].createElement(SourceDataCatelogWrapper, {
className: "source-data-catalog"
}, Object.values(datasets).map(function (dataset, index) {
return dataset.externalData && dataset.externalData === true ? _react["default"].createElement(_styledComponents2.SidePanelSection, {
key: dataset.id
}, _react["default"].createElement(DatasetTitle, {
className: "source-data-title"
}, _react["default"].createElement(DatasetTag, {
dataset: dataset
}), showDatasetTable ? _react["default"].createElement(_styledComponents2.CenterFlexbox, {
className: "source-data-arrow"
}, _react["default"].createElement(_icons.ArrowRight, {
height: "12px"
})) : null, showDeleteDataset ? _react["default"].createElement(RemoveDataset, {
datasetKey: dataset.id,
removeDataset: removeDataset
}) : null), showDatasetTable ? _react["default"].createElement(DataRowCount, {
className: "source-data-rows"
}, "".concat(numFormat(dataset.allData.length), " rows")) : null) : _react["default"].createElement(_styledComponents2.SidePanelSection, {
key: dataset.id
}, _react["default"].createElement(DatasetTitle, {
className: "source-data-title",
clickable: Boolean(showDatasetTable)
}, _react["default"].createElement(DatasetTag, {
dataset: dataset,
onClick: showDatasetTable ? function () {
return showDatasetTable(dataset.id);
} : null
}), showDatasetTable ? _react["default"].createElement(_styledComponents2.CenterFlexbox, {
className: "source-data-arrow"
}, _react["default"].createElement(_icons.ArrowRight, {
height: "12px"
})) : null, showDatasetTable ? _react["default"].createElement(ShowDataTable, {
id: dataset.id,
showDatasetTable: showDatasetTable
}) : null, showDeleteDataset ? _react["default"].createElement(RemoveDataset, {
datasetKey: dataset.id,
removeDataset: removeDataset
}) : null), showDatasetTable ? _react["default"].createElement(DataRowCount, {
className: "source-data-rows"
}, "".concat(numFormat(dataset.allData.length), " rows")) : null);
}));
};
return SourceDataCatalog;
}
var _default = SourceDataCatalogFactory;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvc291cmNlLWRhdGEtY2F0YWxvZy5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0UmVtb3ZlRGF0YXNldCIsImRhdGFzZXRLZXkiLCJudW1Gb3JtYXQiLCJTb3VyY2VEYXRhQ2F0ZWxvZ1dyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwidHJhbnNpdGlvbiIsIkRhdGFzZXRUaXRsZSIsInRleHRDb2xvciIsImNsaWNrYWJsZSIsInRleHRDb2xvckhsIiwiRGF0YXNldFRhZ1dyYXBwZXIiLCJEYXRhVGFnQWN0aW9uIiwiRGF0YVJvd0NvdW50Iiwic3VidGV4dENvbG9yIiwiRGF0YXNldFRhZyIsIm9uQ2xpY2siLCJkYXRhc2V0IiwiY29sb3IiLCJsYWJlbCIsIlNob3dEYXRhVGFibGUiLCJpZCIsInNob3dEYXRhc2V0VGFibGUiLCJSZW1vdmVEYXRhc2V0IiwicmVtb3ZlRGF0YXNldCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJTb3VyY2VEYXRhQ2F0YWxvZ0ZhY3RvcnkiLCJTb3VyY2VEYXRhQ2F0YWxvZyIsImRhdGFzZXRzIiwic2hvd0RlbGV0ZURhdGFzZXQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJtYXAiLCJpbmRleCIsImV4dGVybmFsRGF0YSIsImFsbERhdGEiLCJsZW5ndGgiLCJCb29sZWFuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFNQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBdUIsQ0FBQUMsVUFBVSxFQUFJLENBQUUsQ0FBN0M7O0FBQ0EsSUFBTUMsU0FBUyxHQUFHLHNCQUFPLEdBQVAsQ0FBbEI7O0FBRUEsSUFBTUMsd0JBQXdCLEdBQUdDLDZCQUFPQyxHQUFWLG9CQUNkLFVBQUFDLEtBQUs7QUFBQSxTQUFJ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QTVCLENBREgsQ0FOd0I7QUFBQSxHQUExQjs7QUF1RUEsU0FBT1QsaUJBQVA7QUFDRDs7ZUFFY0Qsd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTkgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2Zvcm1hdH0gZnJvbSAnZDMtZm9ybWF0JztcblxuaW1wb3J0IHtcbiAgU2lkZVBhbmVsU2VjdGlvbixcbiAgVG9vbHRpcCxcbiAgRGF0YXNldFNxdWFyZSxcbiAgQ2VudGVyRmxleGJveFxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge1RhYmxlLCBUcmFzaCwgQXJyb3dSaWdodH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuXG5jb25zdCBkZWZhdWx0UmVtb3ZlRGF0YXNldCA9IGRhdGFzZXRLZXkgPT4ge307XG5jb25zdCBudW1Gb3JtYXQgPSBmb3JtYXQoJywnKTtcblxuY29uc3QgU291cmNlRGF0YUNhdGVsb2dXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgdHJhbnNpdGlvbjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50cmFuc2l0aW9ufTtcbmA7XG5cbmNvbnN0IERhdGFzZXRUaXRsZSA9IHN0eWxlZC5kaXZgXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gIC5zb3VyY2UtZGF0YS1hcnJvdyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG4gIDpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmNsaWNrYWJsZSA/IHByb3BzLnRoZW1lLnRleHRDb2xvckhsIDogcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICBjdXJzb3I6ICR7cHJvcHMgPT4gKHByb3BzLmNsaWNrYWJsZSA/ICdwb2ludGVyJyA6ICdhdXRvJyl9O1xuXG4gICAgLmRhdGFzZXQtYWN0aW9uIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgLmRhdGFzZXQtYWN0aW9uOmhvdmVyIHtcbiAgICAgIGNvbG9yOiBibGFjaztcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IERhdGFzZXRUYWdXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuXG4gIC5kYXRhc2V0LWNvbG9yIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gIH1cblxuICAuZGF0YXNldC1uYW1lIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIH1cbmA7XG5cbmNvbnN0IERhdGFUYWdBY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tbGVmdDogMTJweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBvcGFjaXR5OiAwO1xuYDtcblxuY29uc3QgRGF0YVJvd0NvdW50ID0gc3R5bGVkLmRpdmBcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICBwYWRkaW5nLWxlZnQ6IDE5cHg7XG5gO1xuXG5leHBvcnQgY29uc3QgRGF0YXNldFRhZyA9ICh7b25DbGljaywgZGF0YXNldH0pID0+IChcbiAgPERhdGFzZXRUYWdXcmFwcGVyIGNsYXNzTmFtZT1cInNvdXJjZS1kYXRhLXRhZ1wiIG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgIDxEYXRhc2V0U3F1YXJlIGNsYXNzTmFtZT1cImRhdGFzZXQtY29sb3JcIiBjb2xvcj17ZGF0YXNldC5jb2xvcn0gLz5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGFzZXQtbmFtZVwiPntkYXRhc2V0LmxhYmVsfTwvZGl2PlxuICA8L0RhdGFzZXRUYWdXcmFwcGVyPlxuKTtcblxuY29uc3QgU2hvd0RhdGFUYWJsZSA9ICh7aWQsIHNob3dEYXRhc2V0VGFibGV9KSA9PiAoXG4gIDxEYXRhVGFnQWN0aW9uXG4gICAgY2xhc3NOYW1lPVwiZGF0YXNldC1hY3Rpb24gc2hvdy1kYXRhLXRhYmxlXCJcbiAgICBkYXRhLXRpcFxuICAgIGRhdGEtZm9yPXtgZGF0YS10YWJsZS0ke2lkfWB9XG4gID5cbiAgICA8VGFibGUgaGVpZ2h0PVwiMTZweFwiIG9uQ2xpY2s9eygpID0+IHNob3dEYXRhc2V0VGFibGUoaWQpfSAvPlxuICAgIDxUb29sdGlwIGlkPXtgZGF0YS10YWJsZS0ke2lkfWB9IGVmZmVjdD1cInNvbGlkXCI+XG4gICAgICA8c3Bhbj5TaG93IGRhdGEgdGFibGU8L3NwYW4+XG4gICAgPC9Ub29sdGlwPlxuICA8L0RhdGFUYWdBY3Rpb24+XG4pO1xuXG5jb25zdCBSZW1vdmVEYXRhc2V0ID0gKHtkYXRhc2V0S2V5LCByZW1vdmVEYXRhc2V0ID0gZGVmYXVsdFJlbW92ZURhdGFzZXR9KSA9PiAoXG4gIDxEYXRhVGFnQWN0aW9uXG4gICAgY2xhc3NOYW1lPVwiZGF0YXNldC1hY3Rpb24gcmVtb3ZlLWRhdGFzZXRcIlxuICAgIGRhdGEtdGlwXG4gICAgZGF0YS1mb3I9e2BkZWxldGUtJHtkYXRhc2V0S2V5fWB9XG4gID5cbiAgICA8VHJhc2hcbiAgICAgIGhlaWdodD1cIjE2cHhcIlxuICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJlbW92ZURhdGFzZXQoZGF0YXNldEtleSk7XG4gICAgICB9fVxuICAgIC8+XG4gICAgPFRvb2x0aXAgaWQ9e2BkZWxldGUtJHtkYXRhc2V0S2V5fWB9IGVmZmVjdD1cInNvbGlkXCIgdHlwZT1cImVycm9yXCI+XG4gICAgICA8c3Bhbj5SZW1vdmUgZGF0YXNldDwvc3Bhbj5cbiAgICA8L1Rvb2x0aXA+XG4gIDwvRGF0YVRhZ0FjdGlvbj5cbik7XG5cbmZ1bmN0aW9uIFNvdXJjZURhdGFDYXRhbG9nRmFjdG9yeSgpIHtcbiAgY29uc3QgU291cmNlRGF0YUNhdGFsb2cgPSAoe1xuICAgIGRhdGFzZXRzLFxuICAgIHNob3dEYXRhc2V0VGFibGUsXG4gICAgcmVtb3ZlRGF0YXNldCxcbiAgICBzaG93RGVsZXRlRGF0YXNldCA9IGZhbHNlXG4gIH0pID0+IChcbiAgICA8U291cmNlRGF0YUNhdGVsb2dXcmFwcGVyIGNsYXNzTmFtZT1cInNvdXJjZS1kYXRhLWNhdGFsb2dcIj5cbiAgICAgIHtPYmplY3QudmFsdWVzKGRhdGFzZXRzKS5tYXAoKGRhdGFzZXQsIGluZGV4KSA9PlxuICAgICAgICBkYXRhc2V0LmV4dGVybmFsRGF0YSAmJiBkYXRhc2V0LmV4dGVybmFsRGF0YSA9PT0gdHJ1ZSA/IChcbiAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbiBrZXk9e2RhdGFzZXQuaWR9PlxuICAgICAgICAgICAgPERhdGFzZXRUaXRsZSBjbGFzc05hbWU9XCJzb3VyY2UtZGF0YS10aXRsZVwiPlxuICAgICAgICAgICAgICA8RGF0YXNldFRhZyBkYXRhc2V0PXtkYXRhc2V0fSAvPlxuICAgICAgICAgICAgICB7c2hvd0RhdGFzZXRUYWJsZSA/IChcbiAgICAgICAgICAgICAgICA8Q2VudGVyRmxleGJveCBjbGFzc05hbWU9XCJzb3VyY2UtZGF0YS1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgPEFycm93UmlnaHQgaGVpZ2h0PVwiMTJweFwiIC8+XG4gICAgICAgICAgICAgICAgPC9DZW50ZXJGbGV4Ym94PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3Nob3dEZWxldGVEYXRhc2V0ID8gKFxuICAgICAgICAgICAgICAgIDxSZW1vdmVEYXRhc2V0XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0S2V5PXtkYXRhc2V0LmlkfVxuICAgICAgICAgICAgICAgICAgcmVtb3ZlRGF0YXNldD17cmVtb3ZlRGF0YXNldH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvRGF0YXNldFRpdGxlPlxuICAgICAgICAgICAge3Nob3dEYXRhc2V0VGFibGUgPyAoXG4gICAgICAgICAgICAgIDxEYXRhUm93Q291bnQgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtcm93c1wiPntgJHtudW1Gb3JtYXQoXG4gICAgICAgICAgICAgICAgZGF0YXNldC5hbGxEYXRhLmxlbmd0aFxuICAgICAgICAgICAgICApfSByb3dzYH08L0RhdGFSb3dDb3VudD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbiBrZXk9e2RhdGFzZXQuaWR9PlxuICAgICAgICAgICAgPERhdGFzZXRUaXRsZVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzb3VyY2UtZGF0YS10aXRsZVwiXG4gICAgICAgICAgICAgIGNsaWNrYWJsZT17Qm9vbGVhbihzaG93RGF0YXNldFRhYmxlKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPERhdGFzZXRUYWdcbiAgICAgICAgICAgICAgICBkYXRhc2V0PXtkYXRhc2V0fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e1xuICAgICAgICAgICAgICAgICAgc2hvd0RhdGFzZXRUYWJsZSA/ICgpID0+IHNob3dEYXRhc2V0VGFibGUoZGF0YXNldC5pZCkgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7c2hvd0RhdGFzZXRUYWJsZSA/IChcbiAgICAgICAgICAgICAgICA8Q2VudGVyRmxleGJveCBjbGFzc05hbWU9XCJzb3VyY2UtZGF0YS1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgPEFycm93UmlnaHQgaGVpZ2h0PVwiMTJweFwiIC8+XG4gICAgICAgICAgICAgICAgPC9DZW50ZXJGbGV4Ym94PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3Nob3dEYXRhc2V0VGFibGUgPyAoXG4gICAgICAgICAgICAgICAgPFNob3dEYXRhVGFibGVcbiAgICAgICAgICAgICAgICAgIGlkPXtkYXRhc2V0LmlkfVxuICAgICAgICAgICAgICAgICAgc2hvd0RhdGFzZXRUYWJsZT17c2hvd0RhdGFzZXRUYWJsZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3Nob3dEZWxldGVEYXRhc2V0ID8gKFxuICAgICAgICAgICAgICAgIDxSZW1vdmVEYXRhc2V0XG4gICAgICAgICAgICAgICAgICBkYXRhc2V0S2V5PXtkYXRhc2V0LmlkfVxuICAgICAgICAgICAgICAgICAgcmVtb3ZlRGF0YXNldD17cmVtb3ZlRGF0YXNldH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvRGF0YXNldFRpdGxlPlxuICAgICAgICAgICAge3Nob3dEYXRhc2V0VGFibGUgPyAoXG4gICAgICAgICAgICAgIDxEYXRhUm93Q291bnQgY2xhc3NOYW1lPVwic291cmNlLWRhdGEtcm93c1wiPntgJHtudW1Gb3JtYXQoXG4gICAgICAgICAgICAgICAgZGF0YXNldC5hbGxEYXRhLmxlbmd0aFxuICAgICAgICAgICAgICApfSByb3dzYH08L0RhdGFSb3dDb3VudD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICA8L1NvdXJjZURhdGFDYXRlbG9nV3JhcHBlcj5cbiAgKTtcblxuICByZXR1cm4gU291cmNlRGF0YUNhdGFsb2c7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNvdXJjZURhdGFDYXRhbG9nRmFjdG9yeTtcbiJdfQ==