@kepler.gl/duckdb 3.1.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/duckdb-wasm-adapter.d.ts +25 -0
- package/dist/adapters/duckdb-wasm-adapter.js +259 -0
- package/dist/components/monaco-editor.js +4 -5
- package/dist/components/preview-data-panel.d.ts +7 -2
- package/dist/components/preview-data-panel.js +7 -8
- package/dist/components/schema-panel.d.ts +12 -3
- package/dist/components/schema-panel.js +55 -34
- package/dist/components/sql-panel.js +251 -59
- package/dist/index.d.ts +4 -2
- package/dist/index.js +33 -2
- package/dist/plugin.js +2 -12
- package/dist/processors/data-processor.d.ts +1 -0
- package/dist/processors/data-processor.js +20 -16
- package/dist/table/duckdb-table-utils.d.ts +106 -0
- package/dist/table/duckdb-table-utils.js +499 -2
- package/dist/table/duckdb-table.d.ts +15 -6
- package/dist/table/duckdb-table.js +180 -291
- package/package.json +6 -6
- package/dist/init.d.ts +0 -19
- package/dist/init.js +0 -154
|
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.SchemaPanel = void 0;
|
|
8
|
+
exports.SchemaPanelDropMessage = exports.SchemaPanel = void 0;
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
@@ -13,55 +13,60 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _reactRedux = require("react-redux");
|
|
15
15
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
16
|
+
var _components = require("@kepler.gl/components");
|
|
17
|
+
var _processors = require("@kepler.gl/processors");
|
|
16
18
|
var _utils = require("@kepler.gl/utils");
|
|
17
|
-
var _constants = require("@kepler.gl/constants");
|
|
18
19
|
var _tree = require("./tree");
|
|
19
|
-
var
|
|
20
|
-
var _templateObject; // SPDX-License-Identifier: MIT
|
|
20
|
+
var _duckdbTableUtils = require("../table/duckdb-table-utils");
|
|
21
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
|
|
21
22
|
// Copyright contributors to the kepler.gl project
|
|
22
23
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
23
24
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
24
25
|
// TODO note that demo state is available in demo-app, but not when add modules to dependencies in a custom map
|
|
25
26
|
|
|
26
|
-
var StyledSchemaPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-size: 12px;\n padding: 12px;\n font-family: ", ";\n"])), function (props) {
|
|
27
|
+
var StyledSchemaPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-size: 12px;\n padding: 12px;\n font-family: ", ";\n height: 100%;\n"])), function (props) {
|
|
27
28
|
return props.theme.textColor;
|
|
28
29
|
}, function (props) {
|
|
29
30
|
return props.theme.fontFamily;
|
|
30
31
|
});
|
|
32
|
+
var StyledLoadingSpinnerWrapper = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n"])));
|
|
31
33
|
function getColumnSchema(_x, _x2) {
|
|
32
34
|
return _getColumnSchema.apply(this, arguments);
|
|
33
35
|
}
|
|
34
36
|
function _getColumnSchema() {
|
|
35
|
-
_getColumnSchema = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(
|
|
36
|
-
var columnResult;
|
|
37
|
+
_getColumnSchema = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(connection, tableName) {
|
|
38
|
+
var columnResult, columnDescribe, keplerFields;
|
|
37
39
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
38
40
|
while (1) switch (_context2.prev = _context2.next) {
|
|
39
41
|
case 0:
|
|
40
42
|
_context2.next = 2;
|
|
41
|
-
return
|
|
43
|
+
return connection.query("Select * from '".concat(tableName, "' LIMIT 1;"));
|
|
42
44
|
case 2:
|
|
43
45
|
columnResult = _context2.sent;
|
|
46
|
+
_context2.next = 5;
|
|
47
|
+
return (0, _duckdbTableUtils.getDuckDBColumnTypes)(connection, tableName);
|
|
48
|
+
case 5:
|
|
49
|
+
columnDescribe = _context2.sent;
|
|
50
|
+
keplerFields = (0, _processors.arrowSchemaToFields)(columnResult, (0, _duckdbTableUtils.getDuckDBColumnTypesMap)(columnDescribe));
|
|
44
51
|
return _context2.abrupt("return", {
|
|
45
|
-
key:
|
|
52
|
+
key: tableName,
|
|
46
53
|
object: {
|
|
47
54
|
type: 'dataset',
|
|
48
|
-
tableName:
|
|
55
|
+
tableName: tableName
|
|
49
56
|
},
|
|
50
|
-
children: columnResult.schema.fields.map(function (field) {
|
|
51
|
-
var _field$metadata$get;
|
|
52
|
-
var isGeoArrowColumn = (_field$metadata$get = field.metadata.get('ARROW:extension:name')) === null || _field$metadata$get === void 0 ? void 0 : _field$metadata$get.startsWith('geoarrow');
|
|
57
|
+
children: columnResult.schema.fields.map(function (field, fieldIndex) {
|
|
53
58
|
return {
|
|
54
59
|
key: field.name,
|
|
55
60
|
object: {
|
|
56
61
|
type: 'column',
|
|
57
62
|
name: field.name,
|
|
58
63
|
arrowType: field.type,
|
|
59
|
-
fieldType:
|
|
64
|
+
fieldType: keplerFields[fieldIndex].type
|
|
60
65
|
}
|
|
61
66
|
};
|
|
62
67
|
})
|
|
63
68
|
});
|
|
64
|
-
case
|
|
69
|
+
case 8:
|
|
65
70
|
case "end":
|
|
66
71
|
return _context2.stop();
|
|
67
72
|
}
|
|
@@ -80,8 +85,19 @@ function getSchemaSuggestion(result) {
|
|
|
80
85
|
return accu.concat(columns);
|
|
81
86
|
}, []);
|
|
82
87
|
}
|
|
88
|
+
var StyledSchemaPanelDropMessage = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n flex-direction: column;\n text-align: center;\n\n div {\n margin: 5px;\n }\n .header {\n font-size: 15px;\n }\n .bold {\n font-weight: 700;\n }\n"])));
|
|
89
|
+
var StyledAddIcon = (0, _styledComponents["default"])(_components.Icons.Add)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline;\n margin-top: -3px;\n"])));
|
|
90
|
+
var SchemaPanelDropMessage = exports.SchemaPanelDropMessage = function SchemaPanelDropMessage() {
|
|
91
|
+
return /*#__PURE__*/_react["default"].createElement(StyledSchemaPanelDropMessage, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
92
|
+
className: "header"
|
|
93
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledAddIcon, null), " Add files to DuckDB"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
94
|
+
className: "bold"
|
|
95
|
+
}, "Supported formats: "), /*#__PURE__*/_react["default"].createElement("div", null, ".csv, .json, .geojson, .parquet, .arrow"), /*#__PURE__*/_react["default"].createElement("div", null, "Files you add will stay local to your browser."));
|
|
96
|
+
};
|
|
83
97
|
var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
|
|
84
|
-
var setTableSchema = _ref.setTableSchema
|
|
98
|
+
var setTableSchema = _ref.setTableSchema,
|
|
99
|
+
droppedFile = _ref.droppedFile,
|
|
100
|
+
schemaUpdateTrigger = _ref.schemaUpdateTrigger;
|
|
85
101
|
var _useState = (0, _react.useState)([]),
|
|
86
102
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
87
103
|
columnSchemas = _useState2[0],
|
|
@@ -90,44 +106,49 @@ var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
|
|
|
90
106
|
var _state$demo;
|
|
91
107
|
return state === null || state === void 0 || (_state$demo = state.demo) === null || _state$demo === void 0 || (_state$demo = _state$demo.keplerGl) === null || _state$demo === void 0 || (_state$demo = _state$demo.map) === null || _state$demo === void 0 ? void 0 : _state$demo.visState.datasets;
|
|
92
108
|
});
|
|
93
|
-
(0, _react.useEffect)(function () {
|
|
94
|
-
getTableSchema();
|
|
95
|
-
}, [datasets]);
|
|
96
109
|
var getTableSchema = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
97
110
|
var _tableResult$getChild, _ref3;
|
|
98
111
|
var db, c, tableResult, tableNames, result, tableSchema;
|
|
99
112
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
100
113
|
while (1) switch (_context.prev = _context.next) {
|
|
101
114
|
case 0:
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
115
|
+
db = (0, _utils.getApplicationConfig)().database;
|
|
116
|
+
if (db) {
|
|
117
|
+
_context.next = 4;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
console.error('The database is not configured properly.');
|
|
121
|
+
return _context.abrupt("return");
|
|
122
|
+
case 4:
|
|
123
|
+
_context.next = 6;
|
|
107
124
|
return db.connect();
|
|
108
|
-
case
|
|
125
|
+
case 6:
|
|
109
126
|
c = _context.sent;
|
|
110
|
-
_context.next =
|
|
127
|
+
_context.next = 9;
|
|
111
128
|
return c.query('SHOW TABLES;');
|
|
112
|
-
case
|
|
129
|
+
case 9:
|
|
113
130
|
tableResult = _context.sent;
|
|
114
131
|
tableNames = (_tableResult$getChild = tableResult.getChildAt(0)) === null || _tableResult$getChild === void 0 ? void 0 : _tableResult$getChild.toJSON();
|
|
115
|
-
_context.next =
|
|
132
|
+
_context.next = 13;
|
|
116
133
|
return Promise.all((_ref3 = tableNames || []) === null || _ref3 === void 0 ? void 0 : _ref3.map(function (name) {
|
|
117
134
|
return getColumnSchema(c, name);
|
|
118
135
|
}));
|
|
119
|
-
case
|
|
136
|
+
case 13:
|
|
120
137
|
result = _context.sent;
|
|
121
138
|
tableSchema = getSchemaSuggestion(result);
|
|
122
139
|
setColumnSchemas(result);
|
|
123
140
|
setTableSchema(tableSchema);
|
|
124
|
-
|
|
125
|
-
|
|
141
|
+
_context.next = 19;
|
|
142
|
+
return c.close();
|
|
143
|
+
case 19:
|
|
126
144
|
case "end":
|
|
127
145
|
return _context.stop();
|
|
128
146
|
}
|
|
129
147
|
}, _callee);
|
|
130
|
-
})), [setColumnSchemas, setTableSchema]);
|
|
148
|
+
})), [setColumnSchemas, setTableSchema, schemaUpdateTrigger]);
|
|
149
|
+
(0, _react.useEffect)(function () {
|
|
150
|
+
getTableSchema();
|
|
151
|
+
}, [datasets, droppedFile, getTableSchema]);
|
|
131
152
|
return /*#__PURE__*/_react["default"].createElement(StyledSchemaPanel, null, columnSchemas !== null && columnSchemas !== void 0 && columnSchemas.length ? columnSchemas.map(function (data) {
|
|
132
153
|
return /*#__PURE__*/_react["default"].createElement(_tree.Tree, {
|
|
133
154
|
key: data.key,
|
|
@@ -145,6 +166,6 @@ var SchemaPanel = exports.SchemaPanel = function SchemaPanel(_ref) {
|
|
|
145
166
|
return null;
|
|
146
167
|
}
|
|
147
168
|
});
|
|
148
|
-
}) : /*#__PURE__*/_react["default"].createElement(
|
|
169
|
+
}) : droppedFile ? /*#__PURE__*/_react["default"].createElement(StyledLoadingSpinnerWrapper, null, /*#__PURE__*/_react["default"].createElement(_components.LoadingSpinner, null)) : /*#__PURE__*/_react["default"].createElement(SchemaPanelDropMessage, null));
|
|
149
170
|
};
|
|
150
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91dGlscyIsIl9jb25zdGFudHMiLCJfdHJlZSIsIl9pbml0IiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkU2NoZW1hUGFuZWwiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3IiLCJmb250RmFtaWx5IiwiZ2V0Q29sdW1uU2NoZW1hIiwiX3giLCJfeDIiLCJfZ2V0Q29sdW1uU2NoZW1hIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZTIiLCJjIiwibmFtZSIsImNvbHVtblJlc3VsdCIsIndyYXAiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsInF1ZXJ5IiwiY29uY2F0Iiwic2VudCIsImFicnVwdCIsImtleSIsIm9iamVjdCIsInR5cGUiLCJ0YWJsZU5hbWUiLCJjaGlsZHJlbiIsInNjaGVtYSIsImZpZWxkcyIsIm1hcCIsImZpZWxkIiwiX2ZpZWxkJG1ldGFkYXRhJGdldCIsImlzR2VvQXJyb3dDb2x1bW4iLCJtZXRhZGF0YSIsInN0YXJ0c1dpdGgiLCJhcnJvd1R5cGUiLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJnZW9hcnJvdyIsImFycm93RGF0YVR5cGVUb0ZpZWxkVHlwZSIsInN0b3AiLCJnZXRTY2hlbWFTdWdnZXN0aW9uIiwicmVzdWx0IiwicmVkdWNlIiwiYWNjdSIsImRhdGEiLCJjb2x1bW5zIiwiY2hpbGQiLCJjb2x1bW5fbmFtZSIsInRhYmxlX25hbWUiLCJTY2hlbWFQYW5lbCIsImV4cG9ydHMiLCJfcmVmIiwic2V0VGFibGVTY2hlbWEiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb2x1bW5TY2hlbWFzIiwic2V0Q29sdW1uU2NoZW1hcyIsImRhdGFzZXRzIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsIl9zdGF0ZSRkZW1vIiwiZGVtbyIsImtlcGxlckdsIiwidmlzU3RhdGUiLCJ1c2VFZmZlY3QiLCJnZXRUYWJsZVNjaGVtYSIsInVzZUNhbGxiYWNrIiwiX2NhbGxlZSIsIl90YWJsZVJlc3VsdCRnZXRDaGlsZCIsIl9yZWYzIiwiZGIiLCJ0YWJsZVJlc3VsdCIsInRhYmxlTmFtZXMiLCJ0YWJsZVNjaGVtYSIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJnZXREdWNrREIiLCJjb25uZWN0IiwiZ2V0Q2hpbGRBdCIsInRvSlNPTiIsIlByb21pc2UiLCJhbGwiLCJjbG9zZSIsImNyZWF0ZUVsZW1lbnQiLCJsZW5ndGgiLCJUcmVlIiwidHJlZURhdGEiLCJyZW5kZXJOb2RlIiwibm9kZSIsIkRhdGFzZXROb2RlIiwiQ29sdW1uTm9kZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NjaGVtYS1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlU2VsZWN0b3J9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHthcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGV9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge1RyZWUsIERhdGFzZXROb2RlLCBDb2x1bW5Ob2RlLCBUcmVlTm9kZURhdGF9IGZyb20gJy4vdHJlZSc7XG5pbXBvcnQge2dldER1Y2tEQn0gZnJvbSAnLi4vaW5pdCc7XG5cbi8vIFRPRE8gbm90ZSB0aGF0IGRlbW8gc3RhdGUgaXMgYXZhaWxhYmxlIGluIGRlbW8tYXBwLCBidXQgbm90IHdoZW4gYWRkIG1vZHVsZXMgdG8gZGVwZW5kZW5jaWVzIGluIGEgY3VzdG9tIG1hcFxudHlwZSBTdGF0ZSA9IHtcbiAgZGVtbz86IHtcbiAgICBrZXBsZXJHbDoge1xuICAgICAgbWFwOiB7XG4gICAgICAgIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn07XG5cbmNvbnN0IFN0eWxlZFNjaGVtYVBhbmVsID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBwYWRkaW5nOiAxMnB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbmA7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbHVtblNjaGVtYShjLCBuYW1lKSB7XG4gIGNvbnN0IGNvbHVtblJlc3VsdCA9IGF3YWl0IGMucXVlcnkoYFNlbGVjdCAqIGZyb20gJyR7bmFtZX0nIExJTUlUIDE7YCk7XG5cbiAgcmV0dXJuIHtcbiAgICBrZXk6IG5hbWUsXG4gICAgb2JqZWN0OiB7XG4gICAgICB0eXBlOiAnZGF0YXNldCcsXG4gICAgICB0YWJsZU5hbWU6IG5hbWVcbiAgICB9LFxuICAgIGNoaWxkcmVuOiBjb2x1bW5SZXN1bHQuc2NoZW1hLmZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgICAgY29uc3QgaXNHZW9BcnJvd0NvbHVtbiA9IGZpZWxkLm1ldGFkYXRhLmdldCgnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnKT8uc3RhcnRzV2l0aCgnZ2VvYXJyb3cnKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogZmllbGQubmFtZSxcbiAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ2NvbHVtbicsXG4gICAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgICBhcnJvd1R5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgZmllbGRUeXBlOiBpc0dlb0Fycm93Q29sdW1uXG4gICAgICAgICAgICA/IEFMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd1xuICAgICAgICAgICAgOiBhcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGUoZmllbGQudHlwZSlcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTY2hlbWFTdWdnZXN0aW9uKHJlc3VsdCkge1xuICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjdSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSBkYXRhLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgY29sdW1uX25hbWU6IGNoaWxkLmtleSxcbiAgICAgIHRhYmxlX25hbWU6IGRhdGEua2V5XG4gICAgfSkpO1xuICAgIHJldHVybiBhY2N1LmNvbmNhdChjb2x1bW5zKTtcbiAgfSwgW10pO1xufVxuZXhwb3J0IGNvbnN0IFNjaGVtYVBhbmVsID0gKHtzZXRUYWJsZVNjaGVtYX0pID0+IHtcbiAgY29uc3QgW2NvbHVtblNjaGVtYXMsIHNldENvbHVtblNjaGVtYXNdID0gdXNlU3RhdGU8VHJlZU5vZGVEYXRhPHt0eXBlOiBzdHJpbmd9PltdPihbXSk7XG4gIGNvbnN0IGRhdGFzZXRzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBTdGF0ZSkgPT4gc3RhdGU/LmRlbW8/LmtlcGxlckdsPy5tYXA/LnZpc1N0YXRlLmRhdGFzZXRzKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBnZXRUYWJsZVNjaGVtYSgpO1xuICB9LCBbZGF0YXNldHNdKTtcbiAgY29uc3QgZ2V0VGFibGVTY2hlbWEgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBnZXREdWNrREIoKTtcbiAgICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFibGVSZXN1bHQgPSBhd2FpdCBjLnF1ZXJ5KCdTSE9XIFRBQkxFUzsnKTtcblxuICAgIGNvbnN0IHRhYmxlTmFtZXMgPSB0YWJsZVJlc3VsdC5nZXRDaGlsZEF0KDApPy50b0pTT04oKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKCh0YWJsZU5hbWVzIHx8IFtdKT8ubWFwKG5hbWUgPT4gZ2V0Q29sdW1uU2NoZW1hKGMsIG5hbWUpKSk7XG4gICAgY29uc3QgdGFibGVTY2hlbWEgPSBnZXRTY2hlbWFTdWdnZXN0aW9uKHJlc3VsdCk7XG5cbiAgICBzZXRDb2x1bW5TY2hlbWFzKHJlc3VsdCk7XG4gICAgc2V0VGFibGVTY2hlbWEodGFibGVTY2hlbWEpO1xuICAgIGMuY2xvc2UoKTtcbiAgfSwgW3NldENvbHVtblNjaGVtYXMsIHNldFRhYmxlU2NoZW1hXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2NoZW1hUGFuZWw+XG4gICAgICB7Y29sdW1uU2NoZW1hcz8ubGVuZ3RoID8gKFxuICAgICAgICBjb2x1bW5TY2hlbWFzLm1hcChkYXRhID0+IChcbiAgICAgICAgICA8VHJlZVxuICAgICAgICAgICAga2V5PXtkYXRhLmtleX1cbiAgICAgICAgICAgIHRyZWVEYXRhPXtkYXRhfVxuICAgICAgICAgICAgcmVuZGVyTm9kZT17bm9kZSA9PiB7XG4gICAgICAgICAgICAgIGlmIChub2RlLm9iamVjdC50eXBlID09PSAnZGF0YXNldCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPERhdGFzZXROb2RlIG5vZGU9e25vZGV9IC8+O1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUub2JqZWN0LnR5cGUgPT09ICdjb2x1bW4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxDb2x1bW5Ob2RlIG5vZGU9e25vZGV9IC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApKVxuICAgICAgKSA6IChcbiAgICAgICAgPGRpdj5ObyB0YWJsZXMgZm91bmQ8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRTY2hlbWFQYW5lbD5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFBa0MsSUFBQVEsZUFBQSxFQVZsQztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFYLHdCQUFBVyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FB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
|
|
171
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb21wb25lbnRzIiwiX3Byb2Nlc3NvcnMiLCJfdXRpbHMiLCJfdHJlZSIsIl9kdWNrZGJUYWJsZVV0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkU2NoZW1hUGFuZWwiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3IiLCJmb250RmFtaWx5IiwiU3R5bGVkTG9hZGluZ1NwaW5uZXJXcmFwcGVyIiwiZ2V0Q29sdW1uU2NoZW1hIiwiX3giLCJfeDIiLCJfZ2V0Q29sdW1uU2NoZW1hIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZTIiLCJjb25uZWN0aW9uIiwidGFibGVOYW1lIiwiY29sdW1uUmVzdWx0IiwiY29sdW1uRGVzY3JpYmUiLCJrZXBsZXJGaWVsZHMiLCJ3cmFwIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicHJldiIsIm5leHQiLCJxdWVyeSIsImNvbmNhdCIsInNlbnQiLCJnZXREdWNrREJDb2x1bW5UeXBlcyIsImFycm93U2NoZW1hVG9GaWVsZHMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImFicnVwdCIsImtleSIsIm9iamVjdCIsInR5cGUiLCJjaGlsZHJlbiIsInNjaGVtYSIsImZpZWxkcyIsIm1hcCIsImZpZWxkIiwiZmllbGRJbmRleCIsIm5hbWUiLCJhcnJvd1R5cGUiLCJmaWVsZFR5cGUiLCJzdG9wIiwiZ2V0U2NoZW1hU3VnZ2VzdGlvbiIsInJlc3VsdCIsInJlZHVjZSIsImFjY3UiLCJkYXRhIiwiY29sdW1ucyIsImNoaWxkIiwiY29sdW1uX25hbWUiLCJ0YWJsZV9uYW1lIiwiU3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSIsIlN0eWxlZEFkZEljb24iLCJJY29ucyIsIkFkZCIsIlNjaGVtYVBhbmVsRHJvcE1lc3NhZ2UiLCJleHBvcnRzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIlNjaGVtYVBhbmVsIiwiX3JlZiIsInNldFRhYmxlU2NoZW1hIiwiZHJvcHBlZEZpbGUiLCJzY2hlbWFVcGRhdGVUcmlnZ2VyIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29sdW1uU2NoZW1hcyIsInNldENvbHVtblNjaGVtYXMiLCJkYXRhc2V0cyIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJfc3RhdGUkZGVtbyIsImRlbW8iLCJrZXBsZXJHbCIsInZpc1N0YXRlIiwiZ2V0VGFibGVTY2hlbWEiLCJ1c2VDYWxsYmFjayIsIl9jYWxsZWUiLCJfdGFibGVSZXN1bHQkZ2V0Q2hpbGQiLCJfcmVmMyIsImRiIiwiYyIsInRhYmxlUmVzdWx0IiwidGFibGVOYW1lcyIsInRhYmxlU2NoZW1hIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJjb25zb2xlIiwiZXJyb3IiLCJjb25uZWN0IiwiZ2V0Q2hpbGRBdCIsInRvSlNPTiIsIlByb21pc2UiLCJhbGwiLCJjbG9zZSIsInVzZUVmZmVjdCIsImxlbmd0aCIsIlRyZWUiLCJ0cmVlRGF0YSIsInJlbmRlck5vZGUiLCJub2RlIiwiRGF0YXNldE5vZGUiLCJDb2x1bW5Ob2RlIiwiTG9hZGluZ1NwaW5uZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9zY2hlbWEtcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZVNlbGVjdG9yfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtMb2FkaW5nU3Bpbm5lciwgSWNvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge2Fycm93U2NoZW1hVG9GaWVsZHN9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZywgRGF0YWJhc2VDb25uZWN0aW9ufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtUcmVlLCBEYXRhc2V0Tm9kZSwgQ29sdW1uTm9kZSwgVHJlZU5vZGVEYXRhfSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0IHtnZXREdWNrREJDb2x1bW5UeXBlcywgZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXB9IGZyb20gJy4uL3RhYmxlL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbi8vIFRPRE8gbm90ZSB0aGF0IGRlbW8gc3RhdGUgaXMgYXZhaWxhYmxlIGluIGRlbW8tYXBwLCBidXQgbm90IHdoZW4gYWRkIG1vZHVsZXMgdG8gZGVwZW5kZW5jaWVzIGluIGEgY3VzdG9tIG1hcFxudHlwZSBTdGF0ZSA9IHtcbiAgZGVtbz86IHtcbiAgICBrZXBsZXJHbDoge1xuICAgICAgbWFwOiB7XG4gICAgICAgIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn07XG5cbmNvbnN0IFN0eWxlZFNjaGVtYVBhbmVsID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBwYWRkaW5nOiAxMnB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkTG9hZGluZ1NwaW5uZXJXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbHVtblNjaGVtYShjb25uZWN0aW9uOiBEYXRhYmFzZUNvbm5lY3Rpb24sIHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbHVtblJlc3VsdCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYFNlbGVjdCAqIGZyb20gJyR7dGFibGVOYW1lfScgTElNSVQgMTtgKTtcblxuICBjb25zdCBjb2x1bW5EZXNjcmliZSA9IGF3YWl0IGdldER1Y2tEQkNvbHVtblR5cGVzKGNvbm5lY3Rpb24sIHRhYmxlTmFtZSk7XG4gIGNvbnN0IGtlcGxlckZpZWxkcyA9IGFycm93U2NoZW1hVG9GaWVsZHMoY29sdW1uUmVzdWx0LCBnZXREdWNrREJDb2x1bW5UeXBlc01hcChjb2x1bW5EZXNjcmliZSkpO1xuXG4gIHJldHVybiB7XG4gICAga2V5OiB0YWJsZU5hbWUsXG4gICAgb2JqZWN0OiB7XG4gICAgICB0eXBlOiAnZGF0YXNldCcsXG4gICAgICB0YWJsZU5hbWU6IHRhYmxlTmFtZVxuICAgIH0sXG4gICAgY2hpbGRyZW46IGNvbHVtblJlc3VsdC5zY2hlbWEuZmllbGRzLm1hcCgoZmllbGQsIGZpZWxkSW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogZmllbGQubmFtZSxcbiAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ2NvbHVtbicsXG4gICAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgICBhcnJvd1R5cGU6IGZpZWxkLnR5cGUsXG4gICAgICAgICAgZmllbGRUeXBlOiBrZXBsZXJGaWVsZHNbZmllbGRJbmRleF0udHlwZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNjaGVtYVN1Z2dlc3Rpb24gPSB7Y29sdW1uX25hbWU6IHN0cmluZzsgdGFibGVfbmFtZTogc3RyaW5nfTtcblxuZnVuY3Rpb24gZ2V0U2NoZW1hU3VnZ2VzdGlvbihyZXN1bHQ6IHtrZXk6IHN0cmluZzsgY2hpbGRyZW46IHtrZXk6IHN0cmluZ31bXX1bXSkge1xuICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjdSwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSBkYXRhLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgY29sdW1uX25hbWU6IGNoaWxkLmtleSxcbiAgICAgIHRhYmxlX25hbWU6IGRhdGEua2V5XG4gICAgfSkpO1xuICAgIHJldHVybiBhY2N1LmNvbmNhdChjb2x1bW5zKTtcbiAgfSwgW10gYXMgU2NoZW1hU3VnZ2VzdGlvbltdKTtcbn1cblxudHlwZSBTY2hlbWFQYW5lbFByb3BzID0ge1xuICBzZXRUYWJsZVNjaGVtYTogKHRhYmxlU2NoZW1hOiBTY2hlbWFTdWdnZXN0aW9uW10pID0+IHZvaWQ7XG4gIGRyb3BwZWRGaWxlOiBGaWxlIHwgbnVsbDtcbiAgc2NoZW1hVXBkYXRlVHJpZ2dlcjogbnVtYmVyO1xufTtcblxuY29uc3QgU3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBkaXYge1xuICAgIG1hcmdpbjogNXB4O1xuICB9XG4gIC5oZWFkZXIge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgfVxuICAuYm9sZCB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQWRkSWNvbiA9IHN0eWxlZChJY29ucy5BZGQpYFxuICBkaXNwbGF5OiBpbmxpbmU7XG4gIG1hcmdpbi10b3A6IC0zcHg7XG5gO1xuXG5leHBvcnQgY29uc3QgU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyXCI+XG4gICAgICAgIDxTdHlsZWRBZGRJY29uIC8+IEFkZCBmaWxlcyB0byBEdWNrREJcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib2xkXCI+U3VwcG9ydGVkIGZvcm1hdHM6IDwvZGl2PlxuICAgICAgPGRpdj4uY3N2LCAuanNvbiwgLmdlb2pzb24sIC5wYXJxdWV0LCAuYXJyb3c8L2Rpdj5cbiAgICAgIDxkaXY+RmlsZXMgeW91IGFkZCB3aWxsIHN0YXkgbG9jYWwgdG8geW91ciBicm93c2VyLjwvZGl2PlxuICAgIDwvU3R5bGVkU2NoZW1hUGFuZWxEcm9wTWVzc2FnZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTY2hlbWFQYW5lbCA9ICh7XG4gIHNldFRhYmxlU2NoZW1hLFxuICBkcm9wcGVkRmlsZSxcbiAgc2NoZW1hVXBkYXRlVHJpZ2dlclxufTogU2NoZW1hUGFuZWxQcm9wcykgPT4ge1xuICBjb25zdCBbY29sdW1uU2NoZW1hcywgc2V0Q29sdW1uU2NoZW1hc10gPSB1c2VTdGF0ZTxUcmVlTm9kZURhdGE8e3R5cGU6IHN0cmluZ30+W10+KFtdKTtcbiAgY29uc3QgZGF0YXNldHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IFN0YXRlKSA9PiBzdGF0ZT8uZGVtbz8ua2VwbGVyR2w/Lm1hcD8udmlzU3RhdGUuZGF0YXNldHMpO1xuXG4gIGNvbnN0IGdldFRhYmxlU2NoZW1hID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRiID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgICBpZiAoIWRiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdUaGUgZGF0YWJhc2UgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGMgPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICBjb25zdCB0YWJsZVJlc3VsdCA9IGF3YWl0IGMucXVlcnkoJ1NIT1cgVEFCTEVTOycpO1xuXG4gICAgY29uc3QgdGFibGVOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQgPSB0YWJsZVJlc3VsdC5nZXRDaGlsZEF0KDApPy50b0pTT04oKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKCh0YWJsZU5hbWVzIHx8IFtdKT8ubWFwKG5hbWUgPT4gZ2V0Q29sdW1uU2NoZW1hKGMsIG5hbWUpKSk7XG4gICAgY29uc3QgdGFibGVTY2hlbWEgPSBnZXRTY2hlbWFTdWdnZXN0aW9uKHJlc3VsdCk7XG5cbiAgICBzZXRDb2x1bW5TY2hlbWFzKHJlc3VsdCk7XG4gICAgc2V0VGFibGVTY2hlbWEodGFibGVTY2hlbWEpO1xuICAgIGF3YWl0IGMuY2xvc2UoKTtcblxuICAgIC8vIHNjaGVtYVVwZGF0ZVRyaWdnZXIgaW5kaWNhdGVzIHBvc3NpYmxlIGNoYW5nZSBpbiBEdWNrREJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtzZXRDb2x1bW5TY2hlbWFzLCBzZXRUYWJsZVNjaGVtYSwgc2NoZW1hVXBkYXRlVHJpZ2dlcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZ2V0VGFibGVTY2hlbWEoKTtcbiAgfSwgW2RhdGFzZXRzLCBkcm9wcGVkRmlsZSwgZ2V0VGFibGVTY2hlbWFdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRTY2hlbWFQYW5lbD5cbiAgICAgIHtjb2x1bW5TY2hlbWFzPy5sZW5ndGggPyAoXG4gICAgICAgIGNvbHVtblNjaGVtYXMubWFwKGRhdGEgPT4gKFxuICAgICAgICAgIDxUcmVlXG4gICAgICAgICAgICBrZXk9e2RhdGEua2V5fVxuICAgICAgICAgICAgdHJlZURhdGE9e2RhdGF9XG4gICAgICAgICAgICByZW5kZXJOb2RlPXtub2RlID0+IHtcbiAgICAgICAgICAgICAgaWYgKG5vZGUub2JqZWN0LnR5cGUgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiA8RGF0YXNldE5vZGUgbm9kZT17bm9kZX0gLz47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5vYmplY3QudHlwZSA9PT0gJ2NvbHVtbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPENvbHVtbk5vZGUgbm9kZT17bm9kZX0gLz47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpXG4gICAgICApIDogZHJvcHBlZEZpbGUgPyAoXG4gICAgICAgIDxTdHlsZWRMb2FkaW5nU3Bpbm5lcldyYXBwZXI+XG4gICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgIDwvU3R5bGVkTG9hZGluZ1NwaW5uZXJXcmFwcGVyPlxuICAgICAgKSA6IChcbiAgICAgICAgPFNjaGVtYVBhbmVsRHJvcE1lc3NhZ2UgLz5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRTY2hlbWFQYW5lbD5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFFQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFFQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxpQkFBQSxHQUFBUixPQUFBO0FBQTBGLElBQUFTLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFiMUY7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBZix3QkFBQWUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMs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
|