UNPKG

kepler.gl.geoiq

Version:

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

198 lines (156 loc) 24 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.FieldListItemFactory = void 0; 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 _propTypes = _interopRequireDefault(require("prop-types")); var _reselect = require("reselect"); var _classnames = _interopRequireDefault(require("classnames")); var _itemSelector = _interopRequireDefault(require("./item-selector/item-selector")); var _fieldToken = _interopRequireDefault(require("../common/field-token")); var _dropdownList = require("./item-selector/dropdown-list"); 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; } } var defaultDisplayOption = function defaultDisplayOption(d) { return d.name; }; var StyledFieldItem = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .", " {\n color: #494c52;\n }\n"])), _dropdownList.classList.listItemAnchor); var StyledToken = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-block;\n margin: 0 4px 0 0;\n"]))); // custom list Item var FieldListItemFactory = exports.FieldListItemFactory = function FieldListItemFactory() { var showToken = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; var FieldListItem = function FieldListItem(_ref) { var value = _ref.value, _ref$displayOption = _ref.displayOption, displayOption = _ref$displayOption === void 0 ? defaultDisplayOption : _ref$displayOption; return (/*#__PURE__*/_react["default"].createElement(StyledFieldItem, null, showToken ? /*#__PURE__*/_react["default"].createElement(StyledToken, null, /*#__PURE__*/_react["default"].createElement(_fieldToken["default"], { type: value.type })) : null, /*#__PURE__*/_react["default"].createElement("span", { className: (0, _classnames["default"])(_dropdownList.classList.listItemAnchor, value.type, displayOption(value)) }, displayOption(value))) ); }; return FieldListItem; }; var SuggestedFieldHeader = function SuggestedFieldHeader() { return (/*#__PURE__*/_react["default"].createElement("div", null, "Suggested Field") ); }; var FieldType = _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].string), _propTypes["default"].string, _propTypes["default"].shape({ format: _propTypes["default"].string, id: _propTypes["default"].string, name: _propTypes["default"].string, tableFieldIndex: _propTypes["default"].number, type: _propTypes["default"].number })]); var FieldSelector = exports["default"] = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(FieldSelector, _Component); var _super = _createSuper(FieldSelector); function FieldSelector() { var _this; (0, _classCallCheck2["default"])(this, FieldSelector); 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), "fieldsSelector", function (props) { return props.fields; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "valueSelector", function (props) { return props.value; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "filterFieldTypesSelector", function (props) { return props.filterFieldTypes; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "showTokenSelector", function (props) { return props.showToken; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "selectedItemsSelector", (0, _reselect.createSelector)(_this.fieldsSelector, _this.valueSelector, function (fields, value) { return fields.filter(function (f) { return (Array.isArray(value) ? value : [value]).includes(defaultDisplayOption(f)); }); })); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "fieldOptionsSelector", (0, _reselect.createSelector)(_this.fieldsSelector, _this.filterFieldTypesSelector, function (fields, filterFieldTypes) { if (!filterFieldTypes) { return fields; } var filters = Array.isArray(filterFieldTypes) ? filterFieldTypes : [filterFieldTypes]; return fields.filter(function (f) { return filters.includes(f.type); }); })); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "fieldListItemSelector", (0, _reselect.createSelector)(_this.showTokenSelector, FieldListItemFactory)); return _this; } (0, _createClass2["default"])(FieldSelector, [{ key: "render", value: function render() { return (/*#__PURE__*/_react["default"].createElement("div", { className: "field-selector" }, /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], { getOptionValue: function getOptionValue(d) { return d; }, closeOnSelect: this.props.closeOnSelect, displayOption: defaultDisplayOption, filterOption: 'id', fixedOptions: this.props.suggested, inputTheme: this.props.inputTheme, isError: this.props.error, selectedItems: this.selectedItemsSelector(this.props), erasable: this.props.erasable, options: this.fieldOptionsSelector(this.props), multiSelect: this.props.multiSelect, placeholder: this.props.placeholder, placement: this.props.placement, onChange: this.props.onSelect, DropDownLineItemRenderComponent: this.fieldListItemSelector(this.props), DropdownHeaderComponent: this.props.suggested ? SuggestedFieldHeader : null })) ); } }]); return FieldSelector; }(_react.Component); (0, _defineProperty2["default"])(FieldSelector, "propTypes", { fields: _propTypes["default"].oneOfType([_propTypes["default"].array, _propTypes["default"].arrayOf(FieldType)]), onSelect: _propTypes["default"].func.isRequired, placement: _propTypes["default"].string, value: FieldType, filterFieldTypes: _propTypes["default"].oneOfType([FieldType, _propTypes["default"].arrayOf(FieldType)]), inputTheme: _propTypes["default"].string, placeholder: _propTypes["default"].string, erasable: _propTypes["default"].bool, error: _propTypes["default"].bool, multiSelect: _propTypes["default"].bool, closeOnSelect: _propTypes["default"].bool, showToken: _propTypes["default"].bool, suggested: _propTypes["default"].arrayOf(_propTypes["default"].any) }); (0, _defineProperty2["default"])(FieldSelector, "defaultProps", { erasable: true, error: false, fields: [], onSelect: function onSelect() {}, placement: 'bottom', value: null, multiSelect: false, closeOnSelect: true, showToken: true, placeholder: 'Select a field' }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9maWVsZC1zZWxlY3Rvci5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0RGlzcGxheU9wdGlvbiIsImQiLCJuYW1lIiwiU3R5bGVkRmllbGRJdGVtIiwic3R5bGVkIiwiZGl2IiwiY2xhc3NMaXN0IiwibGlzdEl0ZW1BbmNob3IiLCJTdHlsZWRUb2tlbiIsIkZpZWxkTGlzdEl0ZW1GYWN0b3J5Iiwic2hvd1Rva2VuIiwiRmllbGRMaXN0SXRlbSIsInZhbHVlIiwiZGlzcGxheU9wdGlvbiIsInR5cGUiLCJTdWdnZXN0ZWRGaWVsZEhlYWRlciIsIkZpZWxkVHlwZSIsIlByb3BUeXBlcyIsIm9uZU9mVHlwZSIsImFycmF5T2YiLCJzdHJpbmciLCJzaGFwZSIsImZvcm1hdCIsImlkIiwidGFibGVGaWVsZEluZGV4IiwibnVtYmVyIiwiRmllbGRTZWxlY3RvciIsInByb3BzIiwiZmllbGRzIiwiZmlsdGVyRmllbGRUeXBlcyIsImZpZWxkc1NlbGVjdG9yIiwidmFsdWVTZWxlY3RvciIsImZpbHRlciIsImYiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlcyIsImZpbHRlckZpZWxkVHlwZXNTZWxlY3RvciIsImZpbHRlcnMiLCJzaG93VG9rZW5TZWxlY3RvciIsImNsb3NlT25TZWxlY3QiLCJzdWdnZXN0ZWQiLCJpbnB1dFRoZW1lIiwiZXJyb3IiLCJzZWxlY3RlZEl0ZW1zU2VsZWN0b3IiLCJlcmFzYWJsZSIsImZpZWxkT3B0aW9uc1NlbGVjdG9yIiwibXVsdGlTZWxlY3QiLCJwbGFjZWhvbGRlciIsInBsYWNlbWVudCIsIm9uU2VsZWN0IiwiZmllbGRMaXN0SXRlbVNlbGVjdG9yIiwiQ29tcG9uZW50IiwiYXJyYXkiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImJvb2wiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7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RXBCRixFQUFBQSxLQUFLLEVBQUUsS0FGYTtBQUdwQmYsRUFBQUEsTUFBTSxFQUFFLEVBSFk7QUFJcEJzQixFQUFBQSxRQUFRLEVBQUUsb0JBQU0sQ0FBRSxDQUpFO0FBS3BCRCxFQUFBQSxTQUFTLEVBQUUsUUFMUztBQU1wQnJDLEVBQUFBLEtBQUssRUFBRSxJQU5hO0FBT3BCbUMsRUFBQUEsV0FBVyxFQUFFLEtBUE87QUFRcEJQLEVBQUFBLGFBQWEsRUFBRSxJQVJLO0FBU3BCOUIsRUFBQUEsU0FBUyxFQUFFLElBVFM7QUFVcEJzQyxFQUFBQSxXQUFXLEVBQUU7QUFWTyxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IEl0ZW1TZWxlY3RvciBmcm9tICcuL2l0ZW0tc2VsZWN0b3IvaXRlbS1zZWxlY3Rvcic7XG5pbXBvcnQgRmllbGRUb2tlbiBmcm9tICcuLi9jb21tb24vZmllbGQtdG9rZW4nO1xuaW1wb3J0IHtjbGFzc0xpc3R9IGZyb20gJy4vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1saXN0JztcblxuY29uc3QgZGVmYXVsdERpc3BsYXlPcHRpb24gPSBkID0+IGQubmFtZTtcblxuY29uc3QgU3R5bGVkRmllbGRJdGVtID0gc3R5bGVkLmRpdmBcbiAgLiR7Y2xhc3NMaXN0Lmxpc3RJdGVtQW5jaG9yfSB7XG4gICAgY29sb3I6ICM0OTRjNTI7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFRva2VuID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDAgNHB4IDAgMDtcbmA7XG4vLyBjdXN0b20gbGlzdCBJdGVtXG5leHBvcnQgY29uc3QgRmllbGRMaXN0SXRlbUZhY3RvcnkgPSAoc2hvd1Rva2VuID0gdHJ1ZSkgPT4ge1xuICBjb25zdCBGaWVsZExpc3RJdGVtID0gKHt2YWx1ZSwgZGlzcGxheU9wdGlvbiA9IGRlZmF1bHREaXNwbGF5T3B0aW9ufSkgPT4gKFxuICAgIDxTdHlsZWRGaWVsZEl0ZW0+XG4gICAgICB7c2hvd1Rva2VuID8gKFxuICAgICAgICA8U3R5bGVkVG9rZW4+XG4gICAgICAgICAgPEZpZWxkVG9rZW4gdHlwZT17dmFsdWUudHlwZX0gLz5cbiAgICAgICAgPC9TdHlsZWRUb2tlbj5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICAgIGNsYXNzTGlzdC5saXN0SXRlbUFuY2hvcixcbiAgICAgICAgICB2YWx1ZS50eXBlLFxuICAgICAgICAgIGRpc3BsYXlPcHRpb24odmFsdWUpXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtkaXNwbGF5T3B0aW9uKHZhbHVlKX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L1N0eWxlZEZpZWxkSXRlbT5cbiAgKTtcblxuICByZXR1cm4gRmllbGRMaXN0SXRlbTtcbn07XG5cbmNvbnN0IFN1Z2dlc3RlZEZpZWxkSGVhZGVyID0gKCkgPT4gPGRpdj5TdWdnZXN0ZWQgRmllbGQ8L2Rpdj47XG5cbmNvbnN0IEZpZWxkVHlwZSA9IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgUHJvcFR5cGVzLnN0cmluZyxcbiAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBmb3JtYXQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0YWJsZUZpZWxkSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdHlwZTogUHJvcFR5cGVzLm51bWJlclxuICB9KVxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpZWxkU2VsZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGZpZWxkczogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBQcm9wVHlwZXMuYXJyYXksXG4gICAgICBQcm9wVHlwZXMuYXJyYXlPZihGaWVsZFR5cGUpXG4gICAgXSksXG4gICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHZhbHVlOiBGaWVsZFR5cGUsXG4gICAgZmlsdGVyRmllbGRUeXBlczogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICBGaWVsZFR5cGUsXG4gICAgICBQcm9wVHlwZXMuYXJyYXlPZihGaWVsZFR5cGUpXG4gICAgXSksXG4gICAgaW5wdXRUaGVtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBlcmFzYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAgIG11bHRpU2VsZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjbG9zZU9uU2VsZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93VG9rZW46IFByb3BUeXBlcy5ib29sLFxuICAgIHN1Z2dlc3RlZDogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSlcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGVyYXNhYmxlOiB0cnVlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBmaWVsZHM6IFtdLFxuICAgIG9uU2VsZWN0OiAoKSA9PiB7fSxcbiAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIHZhbHVlOiBudWxsLFxuICAgIG11bHRpU2VsZWN0OiBmYWxzZSxcbiAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgIHNob3dUb2tlbjogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBhIGZpZWxkJ1xuICB9O1xuXG4gIGZpZWxkc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuZmllbGRzO1xuICB2YWx1ZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmFsdWU7XG4gIGZpbHRlckZpZWxkVHlwZXNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmZpbHRlckZpZWxkVHlwZXM7XG4gIHNob3dUb2tlblNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuc2hvd1Rva2VuO1xuXG4gIHNlbGVjdGVkSXRlbXNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZmllbGRzU2VsZWN0b3IsXG4gICAgdGhpcy52YWx1ZVNlbGVjdG9yLFxuICAgIChmaWVsZHMsIHZhbHVlKSA9PlxuICAgICAgZmllbGRzLmZpbHRlcihmID0+XG4gICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkuaW5jbHVkZXMoXG4gICAgICAgICAgZGVmYXVsdERpc3BsYXlPcHRpb24oZilcbiAgICAgICAgKVxuICAgICAgKVxuICApO1xuXG4gIGZpZWxkT3B0aW9uc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgdGhpcy5maWVsZHNTZWxlY3RvcixcbiAgICB0aGlzLmZpbHRlckZpZWxkVHlwZXNTZWxlY3RvcixcbiAgICAoZmllbGRzLCBmaWx0ZXJGaWVsZFR5cGVzKSA9PiB7XG4gICAgICBpZiAoIWZpbHRlckZpZWxkVHlwZXMpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBBcnJheS5pc0FycmF5KGZpbHRlckZpZWxkVHlwZXMpXG4gICAgICAgID8gZmlsdGVyRmllbGRUeXBlc1xuICAgICAgICA6IFtmaWx0ZXJGaWVsZFR5cGVzXTtcbiAgICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKGYgPT4gZmlsdGVycy5pbmNsdWRlcyhmLnR5cGUpKTtcbiAgICB9XG4gICk7XG5cbiAgZmllbGRMaXN0SXRlbVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgdGhpcy5zaG93VG9rZW5TZWxlY3RvcixcbiAgICBGaWVsZExpc3RJdGVtRmFjdG9yeVxuICApO1xuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZC1zZWxlY3RvclwiPlxuICAgICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e2QgPT4gZH1cbiAgICAgICAgICBjbG9zZU9uU2VsZWN0PXt0aGlzLnByb3BzLmNsb3NlT25TZWxlY3R9XG4gICAgICAgICAgZGlzcGxheU9wdGlvbj17ZGVmYXVsdERpc3BsYXlPcHRpb259XG4gICAgICAgICAgZmlsdGVyT3B0aW9uPXsnaWQnfVxuICAgICAgICAgIGZpeGVkT3B0aW9ucz17dGhpcy5wcm9wcy5zdWdnZXN0ZWR9XG4gICAgICAgICAgaW5wdXRUaGVtZT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lfVxuICAgICAgICAgIGlzRXJyb3I9e3RoaXMucHJvcHMuZXJyb3J9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dGhpcy5zZWxlY3RlZEl0ZW1zU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgZXJhc2FibGU9e3RoaXMucHJvcHMuZXJhc2FibGV9XG4gICAgICAgICAgb3B0aW9ucz17dGhpcy5maWVsZE9wdGlvbnNTZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICBtdWx0aVNlbGVjdD17dGhpcy5wcm9wcy5tdWx0aVNlbGVjdH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICBwbGFjZW1lbnQ9e3RoaXMucHJvcHMucGxhY2VtZW50fVxuICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgIERyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnQ9e3RoaXMuZmllbGRMaXN0SXRlbVNlbGVjdG9yKFxuICAgICAgICAgICAgdGhpcy5wcm9wc1xuICAgICAgICAgICl9XG4gICAgICAgICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ9e1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5zdWdnZXN0ZWQgPyBTdWdnZXN0ZWRGaWVsZEhlYWRlciA6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG4iXX0=