UNPKG

kepler.gl.geoiq

Version:

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

218 lines (178 loc) 26.6 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); 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 _propTypes = _interopRequireDefault(require("prop-types")); var _reactAnythingSortable = require("react-anything-sortable"); var _layerConfigurator = _interopRequireDefault(require("./layer-configurator")); var _layerPanelHeader = _interopRequireDefault(require("./layer-panel-header")); var _loadingSpinner = _interopRequireDefault(require("../../common/loading-spinner")); function _templateObject() { var data = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 12px;\n border-radius: 1px;\n margin-bottom: 8px;\n\n &.dragging {\n cursor: move;\n }\n"]); _templateObject = function _templateObject() { return data; }; return data; } var PanelWrapper = _styledComponents["default"].div(_templateObject()); function LayerPanelFactory() { var _class, _class2, _temp; var LayerPanel = (0, _reactAnythingSortable.sortable)(_class = (_temp = _class2 = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(LayerPanel, _Component); function LayerPanel() { var _getPrototypeOf2; var _this; (0, _classCallCheck2["default"])(this, LayerPanel); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2["default"])(this, (_getPrototypeOf2 = (0, _getPrototypeOf3["default"])(LayerPanel)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateLayerConfig", function (newProp) { _this.props.layerConfigChange(_this.props.layer, newProp); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateLayerType", function (newType) { _this.props.layerTypeChange(_this.props.layer, newType); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateLayerVisConfig", function (newVisConfig) { _this.props.layerVisConfigChange(_this.props.layer, newVisConfig); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "updateLayerVisualChannelConfig", function (newConfig, channel, scaleKey) { _this.props.layerVisualChannelConfigChange(_this.props.layer, newConfig, channel, scaleKey); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_updateLayerLabel", function (_ref) { var value = _ref.target.value; _this.updateLayerConfig({ label: value }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_toggleVisibility", function (e) { e.stopPropagation(); var isVisible = !_this.props.layer.config.isVisible; _this.updateLayerConfig({ isVisible: isVisible }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_toggleEnableConfig", function (e) { e.stopPropagation(); var isConfigActive = _this.props.layer.config.isConfigActive; _this.updateLayerConfig({ isConfigActive: !isConfigActive }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_removeLayer", function (e) { e.stopPropagation(); _this.props.removeLayer(_this.props.idx); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "filterLayerOptions", ['grid', 'hexagon', 'boundary']); return _this; } (0, _createClass2["default"])(LayerPanel, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { // console.log(nextProps.layer.config.boundaryAggregation); // console.log(this.props.layer.config.boundaryAggregation); var config = nextProps.layer.config; var columns = config.columns, boundaryAggregation = config.boundaryAggregation, apiCallRequest = config.apiCallRequest; if (nextProps.layer && config && boundaryAggregation && apiCallRequest === true && columns[Object.keys(columns)[0]].fieldIdx !== -1) { // console.log(nextProps.layer.config.apiCallRequest); nextProps.layerConfigChange(nextProps.layer, { apiCallRequest: false, apiCallLoader: true }); var result = nextProps.layer.axiosApiCall(nextProps.datasets); // console.log(result); result.then(function (result) { // console.log(result); nextProps.layerConfigChange(nextProps.layer, { apiCallLoader: false }); nextProps.updateLayerData(nextProps.layer, result); }); } } }, { key: "render", value: function render() { var _this2 = this; var _this$props = this.props, layer = _this$props.layer, idx = _this$props.idx, datasets = _this$props.datasets, updateLayerData = _this$props.updateLayerData; var layerTypeOptions = this.props.layerTypeOptions; var externalData = datasets[layer.config.dataId] && layer.config.dataId ? datasets[layer.config.dataId].externalData : undefined; layerTypeOptions = externalData && externalData === true ? layerTypeOptions.filter(function (lto) { return _this2.filterLayerOptions.indexOf(lto.id) >= 0; }) : layerTypeOptions; var config = layer.config; var isConfigActive = config.isConfigActive, apiCallLoader = config.apiCallLoader; // console.log('layerPanel datasetsColor,', datasets[config.dataId].color); return _react["default"].createElement(PanelWrapper, { active: isConfigActive, className: "layer-panel ".concat(this.props.className), style: this.props.style, onMouseDown: this.props.onMouseDown, onTouchStart: this.props.onTouchStart }, _react["default"].createElement(_layerPanelHeader["default"], { isConfigActive: isConfigActive, apiCallLoader: apiCallLoader, id: layer.id, idx: idx, isVisible: config.isVisible, label: config.label, labelRCGColorValues: datasets[config.dataId].color, layerType: layer.name, onToggleEnableConfig: this._toggleEnableConfig, onToggleVisibility: this._toggleVisibility, onUpdateLayerLabel: this._updateLayerLabel, onRemoveLayer: this._removeLayer }), isConfigActive && _react["default"].createElement(_layerConfigurator["default"], { layer: layer, datasets: datasets, updateLayerData: updateLayerData, layerTypeOptions: layerTypeOptions, openModal: this.props.openModal, updateLayerConfig: this.updateLayerConfig, updateLayerVisualChannelConfig: this.updateLayerVisualChannelConfig, updateLayerType: this.updateLayerType, updateLayerVisConfig: this.updateLayerVisConfig })); } }]); return LayerPanel; }(_react.Component), (0, _defineProperty2["default"])(_class2, "propTypes", { layer: _propTypes["default"].object.isRequired, datasets: _propTypes["default"].object.isRequired, idx: _propTypes["default"].number.isRequired, layerConfigChange: _propTypes["default"].func.isRequired, layerTypeChange: _propTypes["default"].func.isRequired, openModal: _propTypes["default"].func.isRequired, removeLayer: _propTypes["default"].func.isRequired, updateLayerData: _propTypes["default"].func.isRequired, axiosAPICAll: _propTypes["default"].func.isRequired, onCloseConfig: _propTypes["default"].func, layerTypeOptions: _propTypes["default"].arrayOf(_propTypes["default"].any), layerVisConfigChange: _propTypes["default"].func, layerVisualChannelConfigChange: _propTypes["default"].func }), _temp)) || _class; return LayerPanel; } var _default = LayerPanelFactory; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItcGFuZWwuanMiXSwibmFtZXMiOlsiUGFuZWxXcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwiTGF5ZXJQYW5lbEZhY3RvcnkiLCJMYXllclBhbmVsIiwic29ydGFibGUiLCJuZXdQcm9wIiwicHJvcHMiLCJsYXllckNvbmZpZ0NoYW5nZSIsImxheWVyIiwibmV3VHlwZSIsImxheWVyVHlwZUNoYW5nZSIsIm5ld1Zpc0NvbmZpZyIsImxheWVyVmlzQ29uZmlnQ2hhbmdlIiwibmV3Q29uZmlnIiwiY2hhbm5lbCIsInNjYWxlS2V5IiwibGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlIiwidmFsdWUiLCJ0YXJnZXQiLCJ1cGRhdGVMYXllckNvbmZpZyIsImxhYmVsIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsImlzVmlzaWJsZSIsImNvbmZpZyIsImlzQ29uZmlnQWN0aXZlIiwicmVtb3ZlTGF5ZXIiLCJpZHgiLCJuZXh0UHJvcHMiLCJjb2x1bW5zIiwiYm91bmRhcnlBZ2dyZWdhdGlvbiIsImFwaUNhbGxSZXF1ZXN0IiwiT2JqZWN0Iiwia2V5cyIsImZpZWxkSWR4IiwiYXBpQ2FsbExvYWRlciIsInJlc3VsdCIsImF4aW9zQXBpQ2FsbCIsImRhdGFzZXRzIiwidGhlbiIsInVwZGF0ZUxheWVyRGF0YSIsImxheWVyVHlwZU9wdGlvbnMiLCJleHRlcm5hbERhdGEiLCJkYXRhSWQiLCJ1bmRlZmluZWQiLCJmaWx0ZXIiLCJsdG8iLCJmaWx0ZXJMYXllck9wdGlvbnMiLCJpbmRleE9mIiwiaWQiLCJjbGFzc05hbWUiLCJzdHlsZSIsIm9uTW91c2VEb3duIiwib25Ub3VjaFN0YXJ0IiwiY29sb3IiLCJuYW1lIiwiX3RvZ2dsZUVuYWJsZUNvbmZpZyIsIl90b2dnbGVWaXNpYmlsaXR5IiwiX3VwZGF0ZUxheWVyTGFiZWwiLCJfcmVtb3ZlTGF5ZXIiLCJvcGVuTW9kYWwiLCJ1cGRhdGVMYXllclZpc3VhbENoYW5uZWxDb25maWciLCJ1cGRhdGVMYXllclR5cGUiLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJudW1iZXIiLCJmdW5jIiwiYXhpb3NBUElDQWxsIiwib25DbG9zZUNvbmZpZyIsImFycmF5T2YiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsWUFBWSxHQUFHQyw2QkFBT0MsR0FBVixtQkFBbEI7O0FBVUEsU0FBU0MsaUJBQVQsR0FBNkI7QUFBQTs7QUFBQSxNQUVyQkMsVUFGcUIsT0FDMUJDLCtCQUQwQjtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBOztBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBLDRHQStDTCxVQUFBQyxPQUFPLEVBQUk7QUFDN0IsY0FBS0MsS0FBTCxDQUFXQyxpQkFBWCxDQUE2QixNQUFLRCxLQUFMLENBQVdFLEtBQXhDLEVBQStDSCxPQUEvQztBQUNELE9BakR3QjtBQUFBLDBHQW1EUCxVQUFBSSxPQUFPLEVBQUk7QUFDM0IsY0FBS0gsS0FBTCxDQUFXSSxlQUFYLENBQTJCLE1BQUtKLEtBQUwsQ0FBV0UsS0FBdEMsRUFBNkNDLE9BQTdDO0FBQ0QsT0FyRHdCO0FBQUEsK0dBdURGLFVBQUFFLFlBQVksRUFBSTtBQUNyQyxjQUFLTCxLQUFMLENBQVdNLG9CQUFYLENBQWdDLE1BQUtOLEtBQUwsQ0FBV0UsS0FBM0MsRUFBa0RHLFlBQWxEO0FBQ0QsT0F6RHdCO0FBQUEseUhBMkRRLFVBQUNFLFNBQUQsRUFBWUMsT0FBWixFQUFxQkMsUUFBckIsRUFBa0M7QUFDakUsY0FBS1QsS0FBTCxDQUFXVSw4QkFBWCxDQUNFLE1BQUtWLEtBQUwsQ0FBV0UsS0FEYixFQUVFSyxTQUZGLEVBR0VDLE9B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QUEsaUJBQWlCLEVBQUUwRCxzQkFBVUksSUFBVixDQUFlRixVQUpqQjtBQUtqQnpELElBQUFBLGVBQWUsRUFBRXVELHNCQUFVSSxJQUFWLENBQWVGLFVBTGY7QUFNakJQLElBQUFBLFNBQVMsRUFBRUssc0JBQVVJLElBQVYsQ0FBZUYsVUFOVDtBQU9qQnpDLElBQUFBLFdBQVcsRUFBRXVDLHNCQUFVSSxJQUFWLENBQWVGLFVBUFg7QUFRakIzQixJQUFBQSxlQUFlLEVBQUV5QixzQkFBVUksSUFBVixDQUFlRixVQVJmO0FBU2pCRyxJQUFBQSxZQUFZLEVBQUVMLHNCQUFVSSxJQUFWLENBQWVGLFVBVFo7QUFVakJJLElBQUFBLGFBQWEsRUFBRU4sc0JBQVVJLElBVlI7QUFZakI1QixJQUFBQSxnQkFBZ0IsRUFBRXdCLHNCQUFVTyxPQUFWLENBQWtCUCxzQkFBVVEsR0FBNUIsQ0FaRDtBQWFqQjdELElBQUFBLG9CQUFvQixFQUFFcUQsc0JBQVVJLElBYmY7QUFjakJyRCxJQUFBQSw4QkFBOEIsRUFBRWlELHNCQUFVSTtBQWR6QixHQUhNOztBQXlKM0IsU0FBT2xFLFVBQVA7QUFDRDs7ZUFFY0QsaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTkgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7c29ydGFibGV9IGZyb20gJ3JlYWN0LWFueXRoaW5nLXNvcnRhYmxlJztcblxuaW1wb3J0IExheWVyQ29uZmlndXJhdG9yIGZyb20gJy4vbGF5ZXItY29uZmlndXJhdG9yJztcbmltcG9ydCBMYXllclBhbmVsSGVhZGVyIGZyb20gJy4vbGF5ZXItcGFuZWwtaGVhZGVyJztcblxuaW1wb3J0IExvYWRpbmdTcGlubmVyIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2xvYWRpbmctc3Bpbm5lcic7XG5cbmNvbnN0IFBhbmVsV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG5cbiAgJi5kcmFnZ2luZyB7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICB9XG5gO1xuXG5mdW5jdGlvbiBMYXllclBhbmVsRmFjdG9yeSgpIHtcbiAgQHNvcnRhYmxlXG4gIGNsYXNzIExheWVyUGFuZWwgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICBsYXllcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgZGF0YXNldHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGlkeDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJDb25maWdDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBsYXllclR5cGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBvcGVuTW9kYWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICByZW1vdmVMYXllcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyRGF0YTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIGF4aW9zQVBJQ0FsbDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIG9uQ2xvc2VDb25maWc6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICBsYXllclR5cGVPcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICAgIGxheWVyVmlzQ29uZmlnQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbiAgICB9O1xuXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKG5leHRQcm9wcy5sYXllci5jb25maWcuYm91bmRhcnlBZ2dyZWdhdGlvbik7XG4gICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnByb3BzLmxheWVyLmNvbmZpZy5ib3VuZGFyeUFnZ3JlZ2F0aW9uKTtcbiAgICAgIGNvbnN0IHtjb25maWd9ID0gbmV4dFByb3BzLmxheWVyO1xuICAgICAgY29uc3Qge2NvbHVtbnMsIGJvdW5kYXJ5QWdncmVnYXRpb24sIGFwaUNhbGxSZXF1ZXN0fSA9IGNvbmZpZztcbiAgICAgIGlmIChcbiAgICAgICAgbmV4dFByb3BzLmxheWVyICYmXG4gICAgICAgIGNvbmZpZyAmJlxuICAgICAgICBib3VuZGFyeUFnZ3JlZ2F0aW9uICYmXG4gICAgICAgIGFwaUNhbGxSZXF1ZXN0ID09PSB0cnVlICYmXG4gICAgICAgIGNvbHVtbnNbT2JqZWN0LmtleXMoY29sdW1ucylbMF1dLmZpZWxkSWR4ICE9PSAtMVxuICAgICAgKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKG5leHRQcm9wcy5sYXllci5jb25maWcuYXBpQ2FsbFJlcXVlc3QpO1xuICAgICAgICBuZXh0UHJvcHMubGF5ZXJDb25maWdDaGFuZ2UobmV4dFByb3BzLmxheWVyLCB7XG4gICAgICAgICAgYXBpQ2FsbFJlcXVlc3Q6IGZhbHNlLFxuICAgICAgICAgIGFwaUNhbGxMb2FkZXI6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5leHRQcm9wcy5sYXllci5heGlvc0FwaUNhbGwobmV4dFByb3BzLmRhdGFzZXRzKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgICAgcmVzdWx0LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgICAgICBuZXh0UHJvcHMubGF5ZXJDb25maWdDaGFuZ2UobmV4dFByb3BzLmxheWVyLCB7YXBpQ2FsbExvYWRlcjogZmFsc2V9KTtcbiAgICAgICAgICBuZXh0UHJvcHMudXBkYXRlTGF5ZXJEYXRhKG5leHRQcm9wcy5sYXllciwgcmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTGF5ZXJDb25maWcgPSBuZXdQcm9wID0+IHtcbiAgICAgIHRoaXMucHJvcHMubGF5ZXJDb25maWdDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgbmV3UHJvcCk7XG4gICAgfTtcblxuICAgIHVwZGF0ZUxheWVyVHlwZSA9IG5ld1R5cGUgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5sYXllclR5cGVDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgbmV3VHlwZSk7XG4gICAgfTtcblxuICAgIHVwZGF0ZUxheWVyVmlzQ29uZmlnID0gbmV3VmlzQ29uZmlnID0+IHtcbiAgICAgIHRoaXMucHJvcHMubGF5ZXJWaXNDb25maWdDaGFuZ2UodGhpcy5wcm9wcy5sYXllciwgbmV3VmlzQ29uZmlnKTtcbiAgICB9O1xuXG4gICAgdXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnID0gKG5ld0NvbmZpZywgY2hhbm5lbCwgc2NhbGVLZXkpID0+IHtcbiAgICAgIHRoaXMucHJvcHMubGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlKFxuICAgICAgICB0aGlzLnByb3BzLmxheWVyLFxuICAgICAgICBuZXdDb25maWcsXG4gICAgICAgIGNoYW5uZWwsXG4gICAgICAgIHNjYWxlS2V5XG4gICAgICApO1xuICAgIH07XG5cbiAgICBfdXBkYXRlTGF5ZXJMYWJlbCA9ICh7dGFyZ2V0OiB7dmFsdWV9fSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7bGFiZWw6IHZhbHVlfSk7XG4gICAgfTtcblxuICAgIF90b2dnbGVWaXNpYmlsaXR5ID0gZSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY29uc3QgaXNWaXNpYmxlID0gIXRoaXMucHJvcHMubGF5ZXIuY29uZmlnLmlzVmlzaWJsZTtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe2lzVmlzaWJsZX0pO1xuICAgIH07XG5cbiAgICBfdG9nZ2xlRW5hYmxlQ29uZmlnID0gZSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBsYXllcjoge1xuICAgICAgICAgIGNvbmZpZzoge2lzQ29uZmlnQWN0aXZlfVxuICAgICAgICB9XG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe2lzQ29uZmlnQWN0aXZlOiAhaXNDb25maWdBY3RpdmV9KTtcbiAgICB9O1xuXG4gICAgX3JlbW92ZUxheWVyID0gZSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5wcm9wcy5yZW1vdmVMYXllcih0aGlzLnByb3BzLmlkeCk7XG4gICAgfTtcblxuICAgIGZpbHRlckxheWVyT3B0aW9ucyA9IFsnZ3JpZCcsICdoZXhhZ29uJywgJ2JvdW5kYXJ5J107XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBpZHgsIGRhdGFzZXRzLCB1cGRhdGVMYXllckRhdGF9ID0gdGhpcy5wcm9wcztcbiAgICAgIHZhciB7bGF5ZXJUeXBlT3B0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgZXh0ZXJuYWxEYXRhID1cbiAgICAgICAgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0gJiYgbGF5ZXIuY29uZmlnLmRhdGFJZFxuICAgICAgICAgID8gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0uZXh0ZXJuYWxEYXRhXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGxheWVyVHlwZU9wdGlvbnMgPVxuICAgICAgICBleHRlcm5hbERhdGEgJiYgZXh0ZXJuYWxEYXRhID09PSB0cnVlXG4gICAgICAgICAgPyBsYXllclR5cGVPcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAgICAgbHRvID0+IHRoaXMuZmlsdGVyTGF5ZXJPcHRpb25zLmluZGV4T2YobHRvLmlkKSA+PSAwXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBsYXllclR5cGVPcHRpb25zO1xuICAgICAgY29uc3Qge2NvbmZpZ30gPSBsYXllcjtcbiAgICAgIGNvbnN0IHtpc0NvbmZpZ0FjdGl2ZSwgYXBpQ2FsbExvYWRlcn0gPSBjb25maWc7XG4gICAgICAvLyBjb25zb2xlLmxvZygnbGF5ZXJQYW5lbCBkYXRhc2V0c0NvbG9yLCcsIGRhdGFzZXRzW2NvbmZpZy5kYXRhSWRdLmNvbG9yKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxQYW5lbFdyYXBwZXJcbiAgICAgICAgICBhY3RpdmU9e2lzQ29uZmlnQWN0aXZlfVxuICAgICAgICAgIGNsYXNzTmFtZT17YGxheWVyLXBhbmVsICR7dGhpcy5wcm9wcy5jbGFzc05hbWV9YH1cbiAgICAgICAgICBzdHlsZT17dGhpcy5wcm9wcy5zdHlsZX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5wcm9wcy5vbk1vdXNlRG93bn1cbiAgICAgICAgICBvblRvdWNoU3RhcnQ9e3RoaXMucHJvcHMub25Ub3VjaFN0YXJ0fVxuICAgICAgICA+XG4gICAgICAgICAgPExheWVyUGFuZWxIZWFkZXJcbiAgICAgICAgICAgIGlzQ29uZmlnQWN0aXZlPXtpc0NvbmZpZ0FjdGl2ZX1cbiAgICAgICAgICAgIGFwaUNhbGxMb2FkZXI9e2FwaUNhbGxMb2FkZXJ9XG4gICAgICAgICAgICBpZD17bGF5ZXIuaWR9XG4gICAgICAgICAgICBpZHg9e2lkeH1cbiAgICAgICAgICAgIGlzVmlzaWJsZT17Y29uZmlnLmlzVmlzaWJsZX1cbiAgICAgICAgICAgIGxhYmVsPXtjb25maWcubGFiZWx9XG4gICAgICAgICAgICBsYWJlbFJDR0NvbG9yVmFsdWVzPXtkYXRhc2V0c1tjb25maWcuZGF0YUlkXS5jb2xvcn1cbiAgICAgICAgICAgIGxheWVyVHlwZT17bGF5ZXIubmFtZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRW5hYmxlQ29uZmlnPXt0aGlzLl90b2dnbGVFbmFibGVDb25maWd9XG4gICAgICAgICAgICBvblRvZ2dsZVZpc2liaWxpdHk9e3RoaXMuX3RvZ2dsZVZpc2liaWxpdHl9XG4gICAgICAgICAgICBvblVwZGF0ZUxheWVyTGFiZWw9e3RoaXMuX3VwZGF0ZUxheWVyTGFiZWx9XG4gICAgICAgICAgICBvblJlbW92ZUxheWVyPXt0aGlzLl9yZW1vdmVMYXllcn1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtpc0NvbmZpZ0FjdGl2ZSAmJiAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWd1cmF0b3JcbiAgICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgIHVwZGF0ZUxheWVyRGF0YT17dXBkYXRlTGF5ZXJEYXRhfVxuICAgICAgICAgICAgICBsYXllclR5cGVPcHRpb25zPXtsYXllclR5cGVPcHRpb25zfVxuICAgICAgICAgICAgICBvcGVuTW9kYWw9e3RoaXMucHJvcHMub3Blbk1vZGFsfVxuICAgICAgICAgICAgICB1cGRhdGVMYXllckNvbmZpZz17dGhpcy51cGRhdGVMYXllckNvbmZpZ31cbiAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnPXtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHlwZT17dGhpcy51cGRhdGVMYXllclR5cGV9XG4gICAgICAgICAgICAgIHVwZGF0ZUxheWVyVmlzQ29uZmlnPXt0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1BhbmVsV3JhcHBlcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyUGFuZWw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExheWVyUGFuZWxGYWN0b3J5O1xuIl19