UNPKG

kepler.gl.geoiq

Version:

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

167 lines (137 loc) 20 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.gridVisConfigs = exports["default"] = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get")); 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 _deck = require("deck.gl"); var _aggregationLayer = _interopRequireDefault(require("../aggregation-layer")); var _enhancedCpuGridLayer = _interopRequireDefault(require("../../deckgl-layers/grid-layer/enhanced-cpu-grid-layer")); var _gridUtils = require("./grid-utils"); var _gridLayerIcon = _interopRequireDefault(require("./grid-layer-icon")); var _defaultSettings = require("../../constants/default-settings"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } 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 gridVisConfigs = exports.gridVisConfigs = { opacity: 'opacity', worldUnitSize: 'worldUnitSize', colorRange: 'colorRange', coverage: 'coverage', sizeRange: 'elevationRange', percentile: 'percentile', elevationPercentile: 'elevationPercentile', elevationScale: 'elevationScale', colorAggregation: 'aggregation', sizeAggregation: 'sizeAggregation', enable3d: 'enable3d' }; var GridLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer) { (0, _inherits2["default"])(GridLayer, _AggregationLayer); var _super = _createSuper(GridLayer); function GridLayer(props) { var _this; (0, _classCallCheck2["default"])(this, GridLayer); _this = _super.call(this, props); _this.registerVisConfig(gridVisConfigs); _this.visConfigSettings.worldUnitSize.label = 'Grid Size (km)'; return _this; } (0, _createClass2["default"])(GridLayer, [{ key: "type", get: function get() { return 'grid'; } }, { key: "layerIcon", get: function get() { return _gridLayerIcon["default"]; } }, { key: "formatLayerData", value: function formatLayerData(_, allData, filteredIndex, oldLayerData) { var opt = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; var formattedData = (0, _get2["default"])((0, _getPrototypeOf2["default"])(GridLayer.prototype), "formatLayerData", this).call(this, _, allData, filteredIndex, oldLayerData, opt); var getPosition = formattedData.getPosition, data = formattedData.data; // TODO: fix this in deck.gl layer var cleaned = data.filter(function (d) { var pos = getPosition(d); return pos.every(Number.isFinite); }); // All data processing is done in deck.gl layer return _objectSpread(_objectSpread({}, formattedData), {}, { data: cleaned }); } }, { key: "renderLayer", value: function renderLayer(_ref) { var data = _ref.data, idx = _ref.idx, objectHovered = _ref.objectHovered, mapState = _ref.mapState, interaction = _ref.interaction, layerCallbacks = _ref.layerCallbacks, layerInteraction = _ref.layerInteraction; var zoomFactor = this.getZoomFactor(mapState); var eleZoomFactor = this.getElevationZoomFactor(mapState); var visConfig = this.config.visConfig; var cellSize = visConfig.worldUnitSize * 1000; return [new _deck.GridLayer(_objectSpread(_objectSpread(_objectSpread({}, data), layerInteraction), {}, { id: this.id, idx: idx, cellSize: cellSize, coverage: visConfig.coverage, // highlight autoHighlight: visConfig.enable3d, highlightColor: _defaultSettings.HIGHLIGH_COLOR_3D, // color colorRange: this.getColorRange(visConfig.colorRange), colorScale: this.config.colorScale, sizeScale: this.config.sizeScale, opacity: visConfig.opacity, upperPercentile: visConfig.percentile[1], lowerPercentile: visConfig.percentile[0], // elevation extruded: visConfig.enable3d, elevationScale: visConfig.elevationScale * eleZoomFactor, elevationRange: visConfig.sizeRange, elevationLowerPercentile: visConfig.elevationPercentile[0], elevationUpperPercentile: visConfig.elevationPercentile[1], // parameters parameters: { depthTest: Boolean(visConfig.enable3d || mapState.dragRotate) }, // render pickable: true, // callbacks onSetColorDomain: layerCallbacks.onSetLayerDomain, _subLayerProps: { CPU: { type: _enhancedCpuGridLayer["default"] } } }))].concat((0, _toConsumableArray2["default"])(this.isLayerHovered(objectHovered) && !visConfig.enable3d ? [new _deck.GeoJsonLayer(_objectSpread(_objectSpread({}, layerInteraction), {}, { id: "".concat(this.id, "-hovered"), data: [(0, _gridUtils.pointToPolygonGeo)({ object: objectHovered.object, cellSize: cellSize, coverage: visConfig.coverage, mapState: mapState })], getLineColor: this.config.highlightColor, lineWidthScale: 8 * zoomFactor }))] : [])); } }]); return GridLayer; }(_aggregationLayer["default"]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvZ3JpZC1sYXllci9ncmlkLWxheWVyLmpzIl0sIm5hbWVzIjpbImdyaWRWaXNDb25maWdzIiwib3BhY2l0eSIsIndvcmxkVW5pdFNpemUiLCJjb2xvclJhbmdlIiwiY292ZXJhZ2UiLCJzaXplUmFuZ2UiLCJwZXJjZW50aWxlIiwiZWxldmF0aW9uUGVyY2VudGlsZSIsImVsZXZhdGlvblNjYWxlIiwiY29sb3JBZ2dyZWdhdGlvbiIsInNpemVBZ2dyZWdhdGlvbiIsImVuYWJsZTNkIiwiR3JpZExheWVyIiwicHJvcHMiLCJyZWdpc3RlclZpc0NvbmZpZyIsInZpc0NvbmZpZ1NldHRpbmdzIiwibGFiZWwiLCJHcmlkTGF5ZXJJY29uIiwiXyIsImFsbERhdGEiLCJmaWx0ZXJlZEluZGV4Iiwib2xkTGF5ZXJEYXRhIiwib3B0IiwiZm9ybWF0dGVkRGF0YSIsImdldFBvc2l0aW9uIiwiZGF0YSIsImNsZWFuZWQiLCJmaWx0ZXIiLCJkIiwicG9zIiwiZXZlcnkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImlkeCIsIm9iamVjdEhvdmVyZWQiLCJtYXBTdGF0ZSIsImludGVyYWN0aW9uIiwibGF5ZXJDYWxsYmFja3MiLCJsYXllckludGVyYWN0aW9uIiwiem9vbUZhY3RvciIsImdldFpvb21GYWN0b3IiLCJlbGVab29tRmFjdG9yIiwiZ2V0RWxldmF0aW9uWm9vbUZhY3RvciIsInZpc0NvbmZpZyIsImNvbmZpZyIsImNlbGxTaXplIiwiRGVja0dMR3JpZExheWVyIiwiaWQiLCJhdXRvSGlnaGxpZ2h0IiwiaGlnaGxpZ2h0Q29sb3IiLCJISUdITElHSF9DT0xPUl8zRCIsImdldENvbG9yUmFuZ2UiLCJjb2xvclNjYWxlIiwic2l6ZVNjYWxlIiwidXBwZXJQZXJjZW50aWxlIiwibG93ZXJQZXJjZW50aWxlIiwiZXh0cnVkZWQiLCJlbGV2YXRpb25SYW5nZSIsImVsZXZhdGlvbkxvd2VyUGVyY2VudGlsZSIsImVsZXZhdGlvblVwcGVyUGVyY2VudGlsZSIsInBhcmFtZXRlcnMiLCJkZXB0aFRlc3QiLCJCb29sZWFuIiwiZHJhZ1JvdGF0ZSIsInBpY2thYmxlIiwib25TZXRDb2xvckRvbWFpbiIsIm9uU2V0TGF5ZXJEb21haW4iLCJfc3ViTGF5ZXJQcm9wcyIsIkNQVSIsInR5cGUiLCJFbmhhbmNlZENQVUdyaWRMYXllciIsImlzTGF5ZXJIb3ZlcmVkIiwiR2VvSnNvbkxheWVyIiwib2JqZWN0IiwiZ2V0TGluZUNvbG9yIiwibGluZVdpZHRoU2NhbGUiLCJBZ2dyZWdhdGlvbkxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRU8sSUFBTUEsY0FBYyw0QkFBRztBQUM1QkMsRUFBQUEsT0FBTyxFQUFFLFNBRG1CO0FBRTVCQyxFQUFBQSxhQUFhLEVBQUUsZUFGYTtBQUc1QkMsRUFBQUEsVUFBVSxFQUFFLFlBSGdCO0FBSTVCQyxFQUFBQSxRQUFRLEVBQUUsVUFKa0I7QUFLNUJDLEVBQUFBLFNBQVMsRUFBRSxnQkFMaUI7QUFNNUJDLEVBQUFBLFVBQVUsRUFBRSxZQU5nQjtBQU81QkMsRUFBQUEsbUJBQW1CLEVBQUUscUJBUE87QUFRNUJDLEVBQUFBLGNBQWMsRUFBRSxnQkFSWTtBQVM1QkMsRUFBQUEsZ0JBQWdCLEVBQUUsYUFUVTtBQVU1QkMsRUFBQUEsZUFBZSxFQUFFLGlCQVZXO0FBVzVCQyxFQUFBQSxRQUFRLEVBQUU7QUFYa0IsQ0FBdkI7O0lBY2NDLFM7Ozs7O0FBQ25CLHFCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7QUFDakIsOEJBQU1BLEtBQU47O0FBRUEsVUFBS0MsaUJBQUwsQ0FBdUJkLGNBQXZCOztBQUNBLFVBQUtlLGlCQUFMLENBQXVCYixhQUF2QixDQUFxQ2MsS0FBckMsR0FBNkMsZ0JBQTdDO0FBSmlCO0FBS2xCOzs7O1NBRUQsZUFBVztBQUNULGFBQU8sTUFBUDtBQUNEOzs7U0FFRCxlQUFnQjtBQUNk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O0FBeUJFO0FBQ0FxRCxRQUFBQSxVQUFVLEVBQUU7QUFBQ0MsVUFBQUEsU0FBUyxFQUFFQyxPQUFPLENBQUNuQixTQUFTLENBQUNoQyxRQUFWLElBQXNCd0IsUUFBUSxDQUFDNEIsVUFBaEM7QUFBbkIsU0ExQmQ7QUE0QkU7QUFDQUMsUUFBQUEsUUFBUSxFQUFFLElBN0JaO0FBK0JFO0FBQ0FDLFFBQUFBLGdCQUFnQixFQUFFNUIsY0FBYyxDQUFDNkIsZ0JBaENuQztBQWtDRUMsUUFBQUEsY0FBYyxFQUFFO0FBQ2RDLFVBQUFBLEdBQUcsRUFBRTtBQUNIQyxZQUFBQSxJQUFJLEVBQUVDO0FBREg7QUFEUztBQWxDbEIsU0FERiw2Q0EyQ00sS0FBS0MsY0FBTCxDQUFvQnJDLGFBQXBCLEtBQXNDLENBQUNTLFNBQVMsQ0FBQ2hDLFFBQWpELEdBQ0EsQ0FDRSxJQUFJNkQsa0JBQUosaUNBQ0tsQyxnQkFETDtBQUVFUyxRQUFBQSxFQUFFLFlBQUssS0FBS0EsRUFBVixhQUZKO0FBR0V0QixRQUFBQSxJQUFJLEVBQUUsQ0FDSixrQ0FBa0I7QUFDaEJnRCxVQUFBQSxNQUFNLEVBQUV2QyxhQUFhLENBQUN1QyxNQUROO0FBRWhCNUIsVUFBQUEsUUFBUSxFQUFSQSxRQUZnQjtBQUdoQnpDLFVBQUFBLFFBQVEsRUFBRXVDLFNBQVMsQ0FBQ3ZDLFFBSEo7QUFJaEIrQixVQUFBQSxRQUFRLEVBQVJBO0FBSmdCLFNBQWxCLENBREksQ0FIUjtBQVdFdUMsUUFBQUEsWUFBWSxFQUFFLEtBQUs5QixNQUFMLENBQVlLLGNBWDVCO0FBWUUwQixRQUFBQSxjQUFjLEVBQUUsSUFBSXBDO0FBWnRCLFNBREYsQ0FEQSxHQWlCQSxFQTVETjtBQThERDs7O0VBcEhvQ3FDLDRCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtHZW9Kc29uTGF5ZXIsIEdyaWRMYXllciBhcyBEZWNrR0xHcmlkTGF5ZXJ9IGZyb20gJ2RlY2suZ2wnO1xuaW1wb3J0IEFnZ3JlZ2F0aW9uTGF5ZXIgZnJvbSAnLi4vYWdncmVnYXRpb24tbGF5ZXInO1xuaW1wb3J0IEVuaGFuY2VkQ1BVR3JpZExheWVyIGZyb20gJ2RlY2tnbC1sYXllcnMvZ3JpZC1sYXllci9lbmhhbmNlZC1jcHUtZ3JpZC1sYXllcic7XG5pbXBvcnQge3BvaW50VG9Qb2x5Z29uR2VvfSBmcm9tICcuL2dyaWQtdXRpbHMnO1xuaW1wb3J0IEdyaWRMYXllckljb24gZnJvbSAnLi9ncmlkLWxheWVyLWljb24nO1xuaW1wb3J0IHtISUdITElHSF9DT0xPUl8zRH0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5leHBvcnQgY29uc3QgZ3JpZFZpc0NvbmZpZ3MgPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgd29ybGRVbml0U2l6ZTogJ3dvcmxkVW5pdFNpemUnLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIGNvdmVyYWdlOiAnY292ZXJhZ2UnLFxuICBzaXplUmFuZ2U6ICdlbGV2YXRpb25SYW5nZScsXG4gIHBlcmNlbnRpbGU6ICdwZXJjZW50aWxlJyxcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogJ2VsZXZhdGlvblBlcmNlbnRpbGUnLFxuICBlbGV2YXRpb25TY2FsZTogJ2VsZXZhdGlvblNjYWxlJyxcbiAgY29sb3JBZ2dyZWdhdGlvbjogJ2FnZ3JlZ2F0aW9uJyxcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiAnc2l6ZUFnZ3JlZ2F0aW9uJyxcbiAgZW5hYmxlM2Q6ICdlbmFibGUzZCdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyaWRMYXllciBleHRlbmRzIEFnZ3JlZ2F0aW9uTGF5ZXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcoZ3JpZFZpc0NvbmZpZ3MpO1xuICAgIHRoaXMudmlzQ29uZmlnU2V0dGluZ3Mud29ybGRVbml0U2l6ZS5sYWJlbCA9ICdHcmlkIFNpemUgKGttKSc7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gJ2dyaWQnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gR3JpZExheWVySWNvbjtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShfLCBhbGxEYXRhLCBmaWx0ZXJlZEluZGV4LCBvbGRMYXllckRhdGEsIG9wdCA9IHt9KSB7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0YSA9IHN1cGVyLmZvcm1hdExheWVyRGF0YShcbiAgICAgIF8sXG4gICAgICBhbGxEYXRhLFxuICAgICAgZmlsdGVyZWRJbmRleCxcbiAgICAgIG9sZExheWVyRGF0YSxcbiAgICAgIG9wdFxuICAgICk7XG5cbiAgICBjb25zdCB7Z2V0UG9zaXRpb24sIGRhdGF9ID0gZm9ybWF0dGVkRGF0YTtcblxuICAgIC8vIFRPRE86IGZpeCB0aGlzIGluIGRlY2suZ2wgbGF5ZXJcbiAgICBjb25zdCBjbGVhbmVkID0gZGF0YS5maWx0ZXIoZCA9PiB7XG4gICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkKTtcbiAgICAgIHJldHVybiBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKTtcbiAgICB9KTtcblxuICAgIC8vIEFsbCBkYXRhIHByb2Nlc3NpbmcgaXMgZG9uZSBpbiBkZWNrLmdsIGxheWVyXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmZvcm1hdHRlZERhdGEsXG4gICAgICBkYXRhOiBjbGVhbmVkXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlckxheWVyKHtcbiAgICBkYXRhLFxuICAgIGlkeCxcbiAgICBvYmplY3RIb3ZlcmVkLFxuICAgIG1hcFN0YXRlLFxuICAgIGludGVyYWN0aW9uLFxuICAgIGxheWVyQ2FsbGJhY2tzLFxuICAgIGxheWVySW50ZXJhY3Rpb25cbiAgfSkge1xuICAgIGNvbnN0IHpvb21GYWN0b3IgPSB0aGlzLmdldFpvb21GYWN0b3IobWFwU3RhdGUpO1xuICAgIGNvbnN0IGVsZVpvb21GYWN0b3IgPSB0aGlzLmdldEVsZXZhdGlvblpvb21GYWN0b3IobWFwU3RhdGUpO1xuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgY2VsbFNpemUgPSB2aXNDb25maWcud29ybGRVbml0U2l6ZSAqIDEwMDA7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IERlY2tHTEdyaWRMYXllcih7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIC4uLmxheWVySW50ZXJhY3Rpb24sXG4gICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICBpZHgsXG4gICAgICAgIGNlbGxTaXplLFxuICAgICAgICBjb3ZlcmFnZTogdmlzQ29uZmlnLmNvdmVyYWdlLFxuICAgICAgICAvLyBoaWdobGlnaHRcbiAgICAgICAgYXV0b0hpZ2hsaWdodDogdmlzQ29uZmlnLmVuYWJsZTNkLFxuICAgICAgICBoaWdobGlnaHRDb2xvcjogSElHSExJR0hfQ09MT1JfM0QsXG5cbiAgICAgICAgLy8gY29sb3JcbiAgICAgICAgY29sb3JSYW5nZTogdGhpcy5nZXRDb2xvclJhbmdlKHZpc0NvbmZpZy5jb2xvclJhbmdlKSxcbiAgICAgICAgY29sb3JTY2FsZTogdGhpcy5jb25maWcuY29sb3JTY2FsZSxcbiAgICAgICAgc2l6ZVNjYWxlOiB0aGlzLmNvbmZpZy5zaXplU2NhbGUsXG4gICAgICAgIG9wYWNpdHk6IHZpc0NvbmZpZy5vcGFjaXR5LFxuICAgICAgICB1cHBlclBlcmNlbnRpbGU6IHZpc0NvbmZpZy5wZXJjZW50aWxlWzFdLFxuICAgICAgICBsb3dlclBlcmNlbnRpbGU6IHZpc0NvbmZpZy5wZXJjZW50aWxlWzBdLFxuXG4gICAgICAgIC8vIGVsZXZhdGlvblxuICAgICAgICBleHRydWRlZDogdmlzQ29uZmlnLmVuYWJsZTNkLFxuICAgICAgICBlbGV2YXRpb25TY2FsZTogdmlzQ29uZmlnLmVsZXZhdGlvblNjYWxlICogZWxlWm9vbUZhY3RvcixcbiAgICAgICAgZWxldmF0aW9uUmFuZ2U6IHZpc0NvbmZpZy5zaXplUmFuZ2UsXG4gICAgICAgIGVsZXZhdGlvbkxvd2VyUGVyY2VudGlsZTogdmlzQ29uZmlnLmVsZXZhdGlvblBlcmNlbnRpbGVbMF0sXG4gICAgICAgIGVsZXZhdGlvblVwcGVyUGVyY2VudGlsZTogdmlzQ29uZmlnLmVsZXZhdGlvblBlcmNlbnRpbGVbMV0sXG4gICAgICAgIC8vIHBhcmFtZXRlcnNcbiAgICAgICAgcGFyYW1ldGVyczoge2RlcHRoVGVzdDogQm9vbGVhbih2aXNDb25maWcuZW5hYmxlM2QgfHwgbWFwU3RhdGUuZHJhZ1JvdGF0ZSl9LFxuXG4gICAgICAgIC8vIHJlbmRlclxuICAgICAgICBwaWNrYWJsZTogdHJ1ZSxcblxuICAgICAgICAvLyBjYWxsYmFja3NcbiAgICAgICAgb25TZXRDb2xvckRvbWFpbjogbGF5ZXJDYWxsYmFja3Mub25TZXRMYXllckRvbWFpbixcblxuICAgICAgICBfc3ViTGF5ZXJQcm9wczoge1xuICAgICAgICAgIENQVToge1xuICAgICAgICAgICAgdHlwZTogRW5oYW5jZWRDUFVHcmlkTGF5ZXJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuXG4gICAgICAvLyByZW5kZXIgYW4gb3V0bGluZSBvZiBlYWNoIGNlbGwgaWYgbm90IGV4dHJ1ZGVkXG4gICAgICAuLi4odGhpcy5pc0xheWVySG92ZXJlZChvYmplY3RIb3ZlcmVkKSAmJiAhdmlzQ29uZmlnLmVuYWJsZTNkXG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IEdlb0pzb25MYXllcih7XG4gICAgICAgICAgICAgIC4uLmxheWVySW50ZXJhY3Rpb24sXG4gICAgICAgICAgICAgIGlkOiBgJHt0aGlzLmlkfS1ob3ZlcmVkYCxcbiAgICAgICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAgICAgIHBvaW50VG9Qb2x5Z29uR2VvKHtcbiAgICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0SG92ZXJlZC5vYmplY3QsXG4gICAgICAgICAgICAgICAgICBjZWxsU2l6ZSxcbiAgICAgICAgICAgICAgICAgIGNvdmVyYWdlOiB2aXNDb25maWcuY292ZXJhZ2UsXG4gICAgICAgICAgICAgICAgICBtYXBTdGF0ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGxpbmVXaWR0aFNjYWxlOiA4ICogem9vbUZhY3RvclxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pXG4gICAgXTtcbiAgfVxufVxuIl19