@datagrok-libraries/utils 2.5.0 → 3.0.1
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/package.json +1 -1
- package/src/computation-view.d.ts +9 -4
- package/src/computation-view.d.ts.map +1 -1
- package/src/computation-view.js +14 -49
- package/src/function-view.d.ts +9 -3
- package/src/function-view.d.ts.map +1 -1
- package/src/function-view.js +60 -21
- package/src/history-utils.d.ts +1 -1
- package/src/history-utils.d.ts.map +1 -1
- package/src/history-utils.js +7 -19
- package/src/pipeline-view.d.ts +9 -6
- package/src/pipeline-view.d.ts.map +1 -1
- package/src/pipeline-view.js +40 -31
- package/src/rich-function-view.d.ts +11 -7
- package/src/rich-function-view.d.ts.map +1 -1
- package/src/rich-function-view.js +53 -73
- package/src/shared-components/history-panel.d.ts.map +1 -1
- package/src/shared-components/history-panel.js +8 -6
package/src/history-utils.js
CHANGED
|
@@ -38,32 +38,20 @@ export var historyUtils;
|
|
|
38
38
|
(function (historyUtils) {
|
|
39
39
|
const scriptsCache = {};
|
|
40
40
|
// TO DO: add users and groups cache
|
|
41
|
-
function loadChildRuns(funcCallId
|
|
41
|
+
function loadChildRuns(funcCallId) {
|
|
42
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
43
|
const parentRun = yield grok.dapi.functions.calls.allPackageVersions().find(funcCallId);
|
|
44
|
+
parentRun.options['isHistorical'] = true;
|
|
44
45
|
const childRuns = yield grok.dapi.functions.calls.allPackageVersions()
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
yield Promise.all(childRuns.map((pulledRun) => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
.filter(`options.parentCallId="${funcCallId}"`).list();
|
|
47
|
+
yield Promise.all(childRuns.map((childRun) => __awaiter(this, void 0, void 0, function* () {
|
|
48
48
|
var _a;
|
|
49
|
-
const id =
|
|
49
|
+
const id = childRun.func.id;
|
|
50
50
|
// FIX ME: manually get script since pulledRun contains empty Func
|
|
51
51
|
const script = (_a = scriptsCache[id]) !== null && _a !== void 0 ? _a : yield grok.dapi.functions.allPackageVersions().find(id);
|
|
52
52
|
if (!scriptsCache[id])
|
|
53
53
|
scriptsCache[id] = script;
|
|
54
|
-
|
|
55
|
-
pulledRun.options['isHistorical'] = true;
|
|
56
|
-
if (!skipDfLoad) {
|
|
57
|
-
const dfOutputs = wu(pulledRun.outputParams.values())
|
|
58
|
-
.filter((output) => output.property.propertyType === DG.TYPE.DATA_FRAME);
|
|
59
|
-
for (const output of dfOutputs)
|
|
60
|
-
pulledRun.outputs[output.name] = yield grok.dapi.tables.getTable(pulledRun.outputs[output.name]);
|
|
61
|
-
const dfInputs = wu(pulledRun.inputParams.values())
|
|
62
|
-
.filter((input) => input.property.propertyType === DG.TYPE.DATA_FRAME);
|
|
63
|
-
for (const input of dfInputs)
|
|
64
|
-
pulledRun.inputs[input.name] = yield grok.dapi.tables.getTable(pulledRun.inputs[input.name]);
|
|
65
|
-
}
|
|
66
|
-
return Promise.resolve();
|
|
54
|
+
childRun.func = script;
|
|
67
55
|
})));
|
|
68
56
|
return { parentRun, childRuns };
|
|
69
57
|
});
|
|
@@ -208,4 +196,4 @@ export var historyUtils;
|
|
|
208
196
|
}
|
|
209
197
|
historyUtils.pullRunsByName = pullRunsByName;
|
|
210
198
|
})(historyUtils || (historyUtils = {}));
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhpc3RvcnktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsNEJBQTRCO0FBQzVCLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBV3BCLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxXQUF3QixFQUFFLEVBQUU7SUFDNUQsUUFBUSxXQUFXLEVBQUU7UUFDckIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxXQUFXO1lBQ2QsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFVBQVU7WUFDYixPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssV0FBVztZQUNkLE9BQU8saUNBQWlDLENBQUM7UUFDM0MsS0FBSyxXQUFXO1lBQ2QsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxZQUFZO1lBQ2YsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixLQUFLLFdBQVc7WUFDZCxPQUFPLGlDQUFpQyxDQUFDO1FBQzNDLEtBQUssV0FBVztZQUNkLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxLQUFXLFlBQVksQ0E0TDVCO0FBNUxELFdBQWlCLFlBQVk7SUFDM0IsTUFBTSxZQUFZLEdBQUcsRUFBK0IsQ0FBQztJQUNyRCxvQ0FBb0M7SUFFcEMsU0FBc0IsYUFBYSxDQUNqQyxVQUFrQixFQUNsQixVQUFVLEdBQUcsS0FBSzs7WUFFbEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFeEYsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3RFLDBCQUEwQjtpQkFDdkIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVoRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFPLFNBQVMsRUFBRSxFQUFFOztnQkFDbEQsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLGtFQUFrRTtnQkFDbEUsTUFBTSxNQUFNLEdBQUcsTUFBQSxZQUFZLENBQUMsRUFBRSxDQUFDLG1DQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRTNGLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBRWpELFNBQVMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO2dCQUN4QixTQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFFekMsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDZixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQXdCLENBQUM7eUJBQ3hFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDM0UsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTO3dCQUM1QixTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUVuRyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQXdCLENBQUM7eUJBQ3RFLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDekUsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRO3dCQUMxQixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNoRztnQkFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7WUFFSixPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxDQUFDO1FBQ2hDLENBQUM7S0FBQTtJQXBDcUIsMEJBQWEsZ0JBb0NsQyxDQUFBO0lBRUQsMENBQTBDO0lBQzFDLFNBQXNCLE9BQU8sQ0FBQyxVQUFrQixFQUFFLFVBQVUsR0FBRyxLQUFLOzs7WUFDbEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUU7aUJBQ25FLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3QixrRUFBa0U7WUFDbEUsTUFBTSxNQUFNLEdBQUcsTUFBQSxZQUFZLENBQUMsRUFBRSxDQUFDLG1DQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFM0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUNqRCxTQUFTLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUN4QixTQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUV6QyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBd0IsQ0FBQztxQkFDeEUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVM7b0JBQzVCLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBRW5HLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBd0IsQ0FBQztxQkFDdEUsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN6RSxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVE7b0JBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEc7WUFFRCxPQUFPLFNBQVMsQ0FBQzs7S0FDbEI7SUF6QnFCLG9CQUFPLFVBeUI1QixDQUFBO0lBRUQsMEJBQTBCO0lBQzFCLFNBQXNCLE9BQU8sQ0FBQyxVQUF1Qjs7WUFDbkQsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUF3QixDQUFDO2lCQUN6RSxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0UsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTO2dCQUM1QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRTFFLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBd0IsQ0FBQztpQkFDdkUsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pFLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUTtnQkFDMUIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUd4RSxPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9FLENBQUM7S0FBQTtJQWJxQixvQkFBTyxVQWE1QixDQUFBO0lBRUQsU0FBc0IsU0FBUyxDQUFDLFlBQXlCOztZQUN2RCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSxDQUFDO0tBQUE7SUFGcUIsc0JBQVMsWUFFOUIsQ0FBQTtJQUVEOzs7Ozs7O0tBT0M7SUFDRCxTQUFzQixRQUFRLENBQzVCLE1BQWMsRUFDZCxnQkFBK0IsRUFBRSxFQUNqQyxjQUF5RixFQUFFOztZQUUzRixJQUFJLGVBQWUsR0FBRyxZQUFZLE1BQU0sR0FBRyxDQUFDO1lBQzVDLGVBQWUsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDO1lBQ2pHLGVBQWUsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO2lCQUNyQyxrQkFBa0IsRUFBRTtpQkFDcEIsTUFBTSxDQUFDLGVBQWUsQ0FBQztpQkFDdkIsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDcEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTtJQWRxQixxQkFBUSxXQWM3QixDQUFBO0lBRUQ7Ozs7Ozs7Ozs7S0FVQztJQUNELFNBQXNCLGNBQWMsQ0FDbEMsUUFBZ0IsRUFDaEIsZ0JBQWlDLEVBQUUsRUFDbkMsY0FBeUYsRUFBRSxFQUMzRixpQkFBMkIsRUFBRTs7O1lBRTdCLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUN6QixLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRTtnQkFDeEMsTUFBTSxvQkFBb0IsR0FBRyxFQUFjLENBQUM7Z0JBQzVDLElBQUksWUFBWSxDQUFDLE1BQU07b0JBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG9CQUFvQixZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2xHLElBQUksWUFBWSxDQUFDLElBQUk7b0JBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM5RixJQUFJLFlBQVksQ0FBQyxRQUFRO29CQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7b0JBQ3JCLG9CQUFvQixDQUFDLElBQUksQ0FDdkIseUJBQXlCLFlBQVksQ0FBQyxJQUFJLG1DQUFtQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQ3BHLENBQUM7aUJBQ0g7Z0JBQ0QsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlELElBQUksa0JBQWtCLEtBQUssRUFBRSxFQUFFO29CQUM3QixJQUFJLGVBQWUsS0FBSyxFQUFFO3dCQUN4QixlQUFlLElBQUksSUFBSSxrQkFBa0IsR0FBRyxDQUFDOzt3QkFFN0MsZUFBZSxJQUFJLFFBQVEsa0JBQWtCLEdBQUcsQ0FBQztpQkFDcEQ7YUFDRjtZQUNELElBQUksZUFBZSxLQUFLLEVBQUU7Z0JBQ3hCLGVBQWUsR0FBRyxTQUFTLGVBQWUsR0FBRyxDQUFDO1lBRWhELE1BQU0sTUFBTSxHQUNWLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSztpQkFDNUIsa0JBQWtCLEVBQUU7aUJBQ3BCLE1BQU0sQ0FBQyxjQUFjLFFBQVEsSUFBSSxlQUFlLEVBQUUsQ0FBQztpQkFDbkQsT0FBTyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2lCQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdkIsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLEVBQUU7Z0JBQzlCLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFBLFlBQVksQ0FBQyxFQUFFLENBQUMsbUNBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFM0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7b0JBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDakQsU0FBUyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7YUFDekI7WUFFRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDL0UsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLEVBQUU7b0JBQzlCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBd0IsQ0FBQzt5QkFDdEUsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN6RSxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVE7d0JBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ2hHO2FBQ0Y7WUFFRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDaEYsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLEVBQUU7b0JBQzlCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBd0IsQ0FBQzt5QkFDeEUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMzRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVM7d0JBQzVCLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3BHO2FBQ0Y7WUFFRCxPQUFPLE1BQU0sQ0FBQzs7S0FDZjtJQTlEcUIsMkJBQWMsaUJBOERuQyxDQUFBO0FBQ0gsQ0FBQyxFQTVMZ0IsWUFBWSxLQUFaLFlBQVksUUE0TDVCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuXG50eXBlIERhdGVPcHRpb25zID0gJ0FueSB0aW1lJyB8ICdUb2RheScgfCAnWWVzdGVyZGF5JyB8ICdUaGlzIHdlZWsnIHwgJ0xhc3Qgd2VlaycgfCAnVGhpcyBtb250aCcgfCAnTGFzdCBtb250aCcgfCAnVGhpcyB5ZWFyJyB8ICdMYXN0IHllYXInO1xuXG50eXBlIEZpbHRlck9wdGlvbnMgPSB7XG4gIHRleHQ/OiBzdHJpbmcsXG4gIGRhdGU/OiBEYXRlT3B0aW9ucyxcbiAgYXV0aG9yPzogREcuVXNlcixcbiAgaXNTaGFyZWQ/OiBib29sZWFuLFxufTtcblxuY29uc3QgZ2V0U2VhcmNoU3RyaW5nQnlQYXR0ZXJuID0gKGRhdGVQYXR0ZXJuOiBEYXRlT3B0aW9ucykgPT4ge1xuICBzd2l0Y2ggKGRhdGVQYXR0ZXJuKSB7XG4gIGNhc2UgJ1RvZGF5JzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMWRgO1xuICBjYXNlICdZZXN0ZXJkYXknOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0yZCBhbmQgc3RhcnRlZCA8IC0xZGA7XG4gIGNhc2UgJ0FueSB0aW1lJzpcbiAgICByZXR1cm4gYGA7XG4gIGNhc2UgJ0xhc3QgeWVhcic6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTJ5IGFuZCBzdGFydGVkIDwgLTF5YDtcbiAgY2FzZSAnVGhpcyB5ZWFyJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMXlgO1xuICBjYXNlICdMYXN0IG1vbnRoJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMm0gYW5kIHN0YXJ0ZWQgPCAtMW1gO1xuICBjYXNlICdUaGlzIG1vbnRoJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMW1gO1xuICBjYXNlICdMYXN0IHdlZWsnOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0ydyBhbmQgc3RhcnRlZCA8IC0xd2A7XG4gIGNhc2UgJ1RoaXMgd2Vlayc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTF3YDtcbiAgfVxufTtcblxuZXhwb3J0IG5hbWVzcGFjZSBoaXN0b3J5VXRpbHMge1xuICBjb25zdCBzY3JpcHRzQ2FjaGUgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBERy5TY3JpcHQ+O1xuICAvLyBUTyBETzogYWRkIHVzZXJzIGFuZCBncm91cHMgY2FjaGVcblxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENoaWxkUnVucyhcbiAgICBmdW5jQ2FsbElkOiBzdHJpbmcsXG4gICAgc2tpcERmTG9hZCA9IGZhbHNlXG4gICk6IFByb21pc2U8e3BhcmVudFJ1bjogREcuRnVuY0NhbGwsIGNoaWxkUnVuczogREcuRnVuY0NhbGxbXX0+IHtcbiAgICBjb25zdCBwYXJlbnRSdW4gPSBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpLmZpbmQoZnVuY0NhbGxJZCk7XG5cbiAgICBjb25zdCBjaGlsZFJ1bnMgPSBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpXG4gICAgLy8gRVhQTEFJTiBXSFkgZnVuYy5wYXJhbXNcbiAgICAgIC5pbmNsdWRlKCdmdW5jLnBhcmFtcycpLmZpbHRlcihgb3B0aW9ucy5wYXJlbnRDYWxsSWQ9XCIke2Z1bmNDYWxsSWR9XCJgKS5saXN0KCk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChjaGlsZFJ1bnMubWFwKGFzeW5jIChwdWxsZWRSdW4pID0+IHtcbiAgICAgIGNvbnN0IGlkID0gcHVsbGVkUnVuLmZ1bmMuaWQ7XG4gICAgICAvLyBGSVggTUU6IG1hbnVhbGx5IGdldCBzY3JpcHQgc2luY2UgcHVsbGVkUnVuIGNvbnRhaW5zIGVtcHR5IEZ1bmNcbiAgICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNDYWNoZVtpZF0gPz8gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGlkKTtcblxuICAgICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuXG4gICAgICBwdWxsZWRSdW4uZnVuYyA9IHNjcmlwdDtcbiAgICAgIHB1bGxlZFJ1bi5vcHRpb25zWydpc0hpc3RvcmljYWwnXSA9IHRydWU7XG5cbiAgICAgIGlmICghc2tpcERmTG9hZCkge1xuICAgICAgICBjb25zdCBkZk91dHB1dHMgPSB3dShwdWxsZWRSdW4ub3V0cHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgICAgICAuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIGRmT3V0cHV0cylcbiAgICAgICAgICBwdWxsZWRSdW4ub3V0cHV0c1tvdXRwdXQubmFtZV0gPSBhd2FpdCBncm9rLmRhcGkudGFibGVzLmdldFRhYmxlKHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSk7XG5cbiAgICAgICAgY29uc3QgZGZJbnB1dHMgPSB3dShwdWxsZWRSdW4uaW5wdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAgIC5maWx0ZXIoKGlucHV0KSA9PiBpbnB1dC5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgZGZJbnB1dHMpXG4gICAgICAgICAgcHVsbGVkUnVuLmlucHV0c1tpbnB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLmlucHV0c1tpbnB1dC5uYW1lXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4ge3BhcmVudFJ1biwgY2hpbGRSdW5zfTtcbiAgfVxuXG4gIC8vIEVYUExBSU46IFdIWSBERiBMT0FEIFNLSVBQSU5HIElTIFVTRUZVTFxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJ1bihmdW5jQ2FsbElkOiBzdHJpbmcsIHNraXBEZkxvYWQgPSBmYWxzZSkge1xuICAgIGNvbnN0IHB1bGxlZFJ1biA9IGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKClcbiAgICAgIC5pbmNsdWRlKCdpbnB1dHMsIG91dHB1dHMsIHNlc3Npb24udXNlcicpLmZpbmQoZnVuY0NhbGxJZCk7XG5cbiAgICBjb25zdCBpZCA9IHB1bGxlZFJ1bi5mdW5jLmlkO1xuICAgIC8vIEZJWCBNRTogbWFudWFsbHkgZ2V0IHNjcmlwdCBzaW5jZSBwdWxsZWRSdW4gY29udGFpbnMgZW1wdHkgRnVuY1xuICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNDYWNoZVtpZF0gPz8gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGlkKTtcblxuICAgIGlmICghc2NyaXB0c0NhY2hlW2lkXSkgc2NyaXB0c0NhY2hlW2lkXSA9IHNjcmlwdDtcbiAgICBwdWxsZWRSdW4uZnVuYyA9IHNjcmlwdDtcbiAgICBwdWxsZWRSdW4ub3B0aW9uc1snaXNIaXN0b3JpY2FsJ10gPSB0cnVlO1xuXG4gICAgaWYgKCFza2lwRGZMb2FkKSB7XG4gICAgICBjb25zdCBkZk91dHB1dHMgPSB3dShwdWxsZWRSdW4ub3V0cHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgZGZPdXRwdXRzKVxuICAgICAgICBwdWxsZWRSdW4ub3V0cHV0c1tvdXRwdXQubmFtZV0gPSBhd2FpdCBncm9rLmRhcGkudGFibGVzLmdldFRhYmxlKHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSk7XG5cbiAgICAgIGNvbnN0IGRmSW5wdXRzID0gd3UocHVsbGVkUnVuLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgICAgLmZpbHRlcigoaW5wdXQpID0+IGlucHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgZGZJbnB1dHMpXG4gICAgICAgIHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0gPSBhd2FpdCBncm9rLmRhcGkudGFibGVzLmdldFRhYmxlKHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBwdWxsZWRSdW47XG4gIH1cblxuICAvLyBFWFBMQUlOIFdIWSBSRVBMQ0UgREYtc1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVJ1bihjYWxsVG9TYXZlOiBERy5GdW5jQ2FsbCkge1xuICAgIGNvbnN0IGRmT3V0cHV0cyA9IHd1KGNhbGxUb1NhdmUub3V0cHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgIC5maWx0ZXIoKG91dHB1dCkgPT4gb3V0cHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBkZk91dHB1dHMpXG4gICAgICBhd2FpdCBncm9rLmRhcGkudGFibGVzLnVwbG9hZERhdGFGcmFtZShjYWxsVG9TYXZlLm91dHB1dHNbb3V0cHV0Lm5hbWVdKTtcblxuICAgIGNvbnN0IGRmSW5wdXRzID0gd3UoY2FsbFRvU2F2ZS5pbnB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAuZmlsdGVyKChpbnB1dCkgPT4gaW5wdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgZGZJbnB1dHMpXG4gICAgICBhd2FpdCBncm9rLmRhcGkudGFibGVzLnVwbG9hZERhdGFGcmFtZShjYWxsVG9TYXZlLmlucHV0c1tpbnB1dC5uYW1lXSk7XG5cblxuICAgIHJldHVybiBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpLnNhdmUoY2FsbFRvU2F2ZSk7XG4gIH1cblxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlUnVuKGNhbGxUb0RlbGV0ZTogREcuRnVuY0NhbGwpIHtcbiAgICBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpLmRlbGV0ZShjYWxsVG9EZWxldGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGFsbCB0aGUgZnVuY3Rpb24gY2FsbCBvZiB0aGlzIGZ1bmN0aW9uLlxuICAgKiBEZXNpZ25lZCB0byBwdWxsIGhzdG9yaWNhbCBydW5zIGluIGZhc3QgbWFubmVyIGFuZCB0aGUgY2FsbCB7QGxpbmsgbG9hZFJ1bn0gd2l0aCBzcGVjaWZpZWQgcnVuIElELlxuICAgKiBXQVJOSU5HOiBGdW5jQ2FsbCBpbnB1dHMvb3V0cHV0cyBmaWVsZHMgYXJlIG5vdCBpbmNsdWRlZFxuICAgKiBAcGFyYW0gZnVuY0lkIElEIG9mIEZ1bmMgd2hpY2ggY2FsbHMgd2UgYXJlIGxvb2tpbmcgZm9yLiBHZXQgaXQgdXNpbmcge0BsaW5rIGZ1bmMuaWR9IGZpZWxkXG4gICAqIEByZXR1cm4gUHJvbWlzZSBvbiBhcnJheSBvZiBGdW5jQ2FsbHMgY29ycmVzcG9uZGluZyB0byB0aGUgcGFzc2VkIEZ1bmMgSURcbiAgICogQHN0YWJpbGl0eSBEZXByZWNhdGVkLiBTY3JpcHQgSUQgY2hhbmdlcyB3aXRoIGV2ZXJ5IHBhY2thZ2UgcmVsZWFzZSwgc28gc2VhcmNoaW5nIGJ5IElEIGlzIHVzZWxlc3MgaW4gcHJhY3RpY2UuXG4gKi9cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1bGxSdW5zKFxuICAgIGZ1bmNJZDogc3RyaW5nLFxuICAgIGZpbHRlck9wdGlvbnM6IEZpbHRlck9wdGlvbnMgPSB7fSxcbiAgICBsaXN0T3B0aW9uczoge3BhZ2VTaXplPzogbnVtYmVyLCBwYWdlTnVtYmVyPzogbnVtYmVyLCBmaWx0ZXI/OiBzdHJpbmcsIG9yZGVyPzogc3RyaW5nfSA9IHt9XG4gICk6IFByb21pc2U8REcuRnVuY0NhbGxbXT4ge1xuICAgIGxldCBmaWx0ZXJpbmdTdHJpbmcgPSBgZnVuYy5pZD1cIiR7ZnVuY0lkfVwiYDtcbiAgICBmaWx0ZXJpbmdTdHJpbmcgKz0gZmlsdGVyT3B0aW9ucy5hdXRob3IgPyBgIGFuZCBzZXNzaW9uLnVzZXIuaWQ9XCIke2ZpbHRlck9wdGlvbnMuYXV0aG9yLmlkfVwiYDonJztcbiAgICBmaWx0ZXJpbmdTdHJpbmcgKz0gZmlsdGVyT3B0aW9ucy5kYXRlID8gZ2V0U2VhcmNoU3RyaW5nQnlQYXR0ZXJuKGZpbHRlck9wdGlvbnMuZGF0ZSk6ICcnO1xuICAgIGNvbnN0IGZpbHRlciA9IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHNcbiAgICAgIC5hbGxQYWNrYWdlVmVyc2lvbnMoKVxuICAgICAgLmZpbHRlcihmaWx0ZXJpbmdTdHJpbmcpXG4gICAgICAuaW5jbHVkZSgnc2Vzc2lvbi51c2VyLCBvcHRpb25zJyk7XG4gICAgY29uc3QgbGlzdCA9IGZpbHRlci5saXN0KGxpc3RPcHRpb25zKTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhbGwgdGhlIGZ1bmN0aW9uIGNhbGwgb2YgdGhpcyBmdW5jdGlvbi5cbiAgICogRGVzaWduZWQgdG8gcHVsbCBoc3RvcmljYWwgcnVucyBpbiBmYXN0IG1hbm5lciBhbmQgdGhlIGNhbGwge0BsaW5rIGxvYWRSdW59IHdpdGggc3BlY2lmaWVkIHJ1biBJRC5cbiAgICogV0FSTklORzogRnVuY0NhbGwgaW5wdXRzL291dHB1dHMgZmllbGRzIGFyZSBub3QgaW5jbHVkZWQgYnkgZGVmYXVsdC4gVXNlIHtAbGluayBpbmNsdWRlZEZpZWxkc30gdG8gc3BlY2lmeSBmaWVsZHMgdG8gbG9hZC5cbiAgICogQHBhcmFtIGZ1bmNOYW1lIE5hbWUgb2YgRnVuYyB3aGljaCBjYWxscyB3ZSBhcmUgbG9va2luZyBmb3IuIEdldCBpdCB1c2luZyB7QGxpbmsgZnVuYy5uYW1lfSBmaWVsZFxuICAgKiBAcGFyYW0gZmlsdGVyT3B0aW9ucyBTdHJ1Y3QgY29udGFpbmluZyBmaWx0ZXJpbmcgb3B0aW9ucy4gVGhlc2Ugb3B0aW9ucyB3aWxsIGJlIHBhc3NlZCBhcyB2YWxpZCBmaWx0ZXJpbmcgc3RyaW5nIHRvIGEgcmVxdWVzdC5cbiAgICogQHBhcmFtIGxpc3RPcHRpb25zIFN0cnVjdCBjb250YWluaW5nIGxpc3Rpbmcgb3B0aW9ucy5cbiAgICogQHBhcmFtIGluY2x1ZGVkRmllbGRzIExpc3Qgb2YgZmllbGRzIHRvIGluY2x1ZGUgaW50byByZXNwb25zZS4gU2VlIHtAbGluayBERy5GdW5jQ2FsbH0gc3RydWN0IHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuIEUuZy4sICdpbnB1dHMnIG9yICdvdXRwdXRzJ1xuICAgKiBAcmV0dXJuIFByb21pc2Ugb24gYXJyYXkgb2YgRnVuY0NhbGxzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhc3NlZCBGdW5jIElEXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1bGxSdW5zQnlOYW1lKFxuICAgIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyT3B0aW9uczogRmlsdGVyT3B0aW9uc1tdID0gW10sXG4gICAgbGlzdE9wdGlvbnM6IHtwYWdlU2l6ZT86IG51bWJlciwgcGFnZU51bWJlcj86IG51bWJlciwgZmlsdGVyPzogc3RyaW5nLCBvcmRlcj86IHN0cmluZ30gPSB7fSxcbiAgICBpbmNsdWRlZEZpZWxkczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPERHLkZ1bmNDYWxsW10+IHtcbiAgICBsZXQgZmlsdGVyaW5nU3RyaW5nID0gYGA7XG4gICAgZm9yIChjb25zdCBmaWx0ZXJPcHRpb24gb2YgZmlsdGVyT3B0aW9ucykge1xuICAgICAgY29uc3QgZmlsdGVyT3B0aW9uQ3JpdGVyaWEgPSBbXSBhcyBzdHJpbmdbXTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb24uYXV0aG9yKSBmaWx0ZXJPcHRpb25Dcml0ZXJpYS5wdXNoKGBzZXNzaW9uLnVzZXIuaWQ9XCIke2ZpbHRlck9wdGlvbi5hdXRob3IuaWR9XCJgKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb24uZGF0ZSkgZmlsdGVyT3B0aW9uQ3JpdGVyaWEucHVzaChnZXRTZWFyY2hTdHJpbmdCeVBhdHRlcm4oZmlsdGVyT3B0aW9uLmRhdGUpKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb24uaXNTaGFyZWQpIGZpbHRlck9wdGlvbkNyaXRlcmlhLnB1c2goYG9wdGlvbnMuaXNTaGFyZWQ9XCJ0cnVlXCJgKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb24udGV4dCkge1xuICAgICAgICBmaWx0ZXJPcHRpb25Dcml0ZXJpYS5wdXNoKFxuICAgICAgICAgIGAoKG9wdGlvbnMudGl0bGUgbGlrZSBcIiR7ZmlsdGVyT3B0aW9uLnRleHR9XCIpIG9yIChvcHRpb25zLmFubm90YXRpb24gbGlrZSBcIiR7ZmlsdGVyT3B0aW9uLnRleHR9XCIpKWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlck9wdGlvblN0cmluZyA9IGZpbHRlck9wdGlvbkNyaXRlcmlhLmpvaW4oJyBhbmQgJyk7XG4gICAgICBpZiAoZmlsdGVyT3B0aW9uU3RyaW5nICE9PSAnJykge1xuICAgICAgICBpZiAoZmlsdGVyaW5nU3RyaW5nID09PSAnJylcbiAgICAgICAgICBmaWx0ZXJpbmdTdHJpbmcgKz0gYCgke2ZpbHRlck9wdGlvblN0cmluZ30pYDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbHRlcmluZ1N0cmluZyArPSBgIG9yICgke2ZpbHRlck9wdGlvblN0cmluZ30pYDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZpbHRlcmluZ1N0cmluZyAhPT0gJycpXG4gICAgICBmaWx0ZXJpbmdTdHJpbmcgPSBgIGFuZCAoJHtmaWx0ZXJpbmdTdHJpbmd9KWA7XG5cbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxsc1xuICAgICAgICAuYWxsUGFja2FnZVZlcnNpb25zKClcbiAgICAgICAgLmZpbHRlcihgZnVuYy5uYW1lPVwiJHtmdW5jTmFtZX1cIiR7ZmlsdGVyaW5nU3RyaW5nfWApXG4gICAgICAgIC5pbmNsdWRlKGAke2luY2x1ZGVkRmllbGRzLmpvaW4oJywnKX1gKVxuICAgICAgICAubGlzdChsaXN0T3B0aW9ucyk7XG5cbiAgICBmb3IgKGNvbnN0IHB1bGxlZFJ1biBvZiByZXN1bHQpIHtcbiAgICAgIGNvbnN0IGlkID0gcHVsbGVkUnVuLmZ1bmMuaWQ7XG4gICAgICBjb25zdCBzY3JpcHQgPSBzY3JpcHRzQ2FjaGVbaWRdID8/IGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuYWxsUGFja2FnZVZlcnNpb25zKCkuZmluZChpZCk7XG5cbiAgICAgIGlmICghc2NyaXB0c0NhY2hlW2lkXSkgc2NyaXB0c0NhY2hlW2lkXSA9IHNjcmlwdDtcbiAgICAgIHB1bGxlZFJ1bi5mdW5jID0gc2NyaXB0O1xuICAgIH1cblxuICAgIGlmIChpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnaW5wdXRzJykgfHwgaW5jbHVkZWRGaWVsZHMuaW5jbHVkZXMoJ2Z1bmMucGFyYW1zJykpIHtcbiAgICAgIGZvciAoY29uc3QgcHVsbGVkUnVuIG9mIHJlc3VsdCkge1xuICAgICAgICBjb25zdCBkZklucHV0cyA9IHd1KHB1bGxlZFJ1bi5pbnB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAgICAgLmZpbHRlcigoaW5wdXQpID0+IGlucHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgICAgICBwdWxsZWRSdW4uaW5wdXRzW2lucHV0Lm5hbWVdID0gYXdhaXQgZ3Jvay5kYXBpLnRhYmxlcy5nZXRUYWJsZShwdWxsZWRSdW4uaW5wdXRzW2lucHV0Lm5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZWRGaWVsZHMuaW5jbHVkZXMoJ291dHB1dHMnKSB8fCBpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnZnVuYy5wYXJhbXMnKSkge1xuICAgICAgZm9yIChjb25zdCBwdWxsZWRSdW4gb2YgcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGRmT3V0cHV0cyA9IHd1KHB1bGxlZFJ1bi5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAgIC5maWx0ZXIoKG91dHB1dCkgPT4gb3V0cHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgZGZPdXRwdXRzKVxuICAgICAgICAgIHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhpc3RvcnktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsNEJBQTRCO0FBQzVCLGdDQUFnQztBQUNoQyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBV3BCLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxXQUF3QixFQUFFLEVBQUU7SUFDNUQsUUFBUSxXQUFXLEVBQUU7UUFDckIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxXQUFXO1lBQ2QsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFVBQVU7WUFDYixPQUFPLEVBQUUsQ0FBQztRQUNaLEtBQUssV0FBVztZQUNkLE9BQU8saUNBQWlDLENBQUM7UUFDM0MsS0FBSyxXQUFXO1lBQ2QsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxZQUFZO1lBQ2YsT0FBTyxpQ0FBaUMsQ0FBQztRQUMzQyxLQUFLLFlBQVk7WUFDZixPQUFPLGVBQWUsQ0FBQztRQUN6QixLQUFLLFdBQVc7WUFDZCxPQUFPLGlDQUFpQyxDQUFDO1FBQzNDLEtBQUssV0FBVztZQUNkLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxLQUFXLFlBQVksQ0EySzVCO0FBM0tELFdBQWlCLFlBQVk7SUFDM0IsTUFBTSxZQUFZLEdBQUcsRUFBK0IsQ0FBQztJQUNyRCxvQ0FBb0M7SUFFcEMsU0FBc0IsYUFBYSxDQUNqQyxVQUFrQjs7WUFFbEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEYsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFekMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUU7aUJBQ25FLE1BQU0sQ0FBQyx5QkFBeUIsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUV6RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFPLFFBQVEsRUFBRSxFQUFFOztnQkFDakQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLGtFQUFrRTtnQkFDbEUsTUFBTSxNQUFNLEdBQUcsTUFBQSxZQUFZLENBQUMsRUFBRSxDQUFDLG1DQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRTNGLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQ2pELFFBQVEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ3pCLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQztZQUVKLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLENBQUM7UUFDaEMsQ0FBQztLQUFBO0lBbkJxQiwwQkFBYSxnQkFtQmxDLENBQUE7SUFFRCwwQ0FBMEM7SUFDMUMsU0FBc0IsT0FBTyxDQUFDLFVBQWtCLEVBQUUsVUFBVSxHQUFHLEtBQUs7OztZQUNsRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtpQkFDbkUsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTdELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdCLGtFQUFrRTtZQUNsRSxNQUFNLE1BQU0sR0FBRyxNQUFBLFlBQVksQ0FBQyxFQUFFLENBQUMsbUNBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUUzRixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ2pELFNBQVMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLFNBQVMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBRXpDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2YsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUF3QixDQUFDO3FCQUN4RSxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNFLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUztvQkFDNUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFFbkcsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUF3QixDQUFDO3FCQUN0RSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pFLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUTtvQkFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNoRztZQUVELE9BQU8sU0FBUyxDQUFDOztLQUNsQjtJQXpCcUIsb0JBQU8sVUF5QjVCLENBQUE7SUFFRCwwQkFBMEI7SUFDMUIsU0FBc0IsT0FBTyxDQUFDLFVBQXVCOztZQUNuRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQXdCLENBQUM7aUJBQ3pFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFNBQVM7Z0JBQzVCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFMUUsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUF3QixDQUFDO2lCQUN2RSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekUsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRO2dCQUMxQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBR3hFLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0UsQ0FBQztLQUFBO0lBYnFCLG9CQUFPLFVBYTVCLENBQUE7SUFFRCxTQUFzQixTQUFTLENBQUMsWUFBeUI7O1lBQ3ZELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVFLENBQUM7S0FBQTtJQUZxQixzQkFBUyxZQUU5QixDQUFBO0lBRUQ7Ozs7Ozs7S0FPQztJQUNELFNBQXNCLFFBQVEsQ0FDNUIsTUFBYyxFQUNkLGdCQUErQixFQUFFLEVBQ2pDLGNBQXlGLEVBQUU7O1lBRTNGLElBQUksZUFBZSxHQUFHLFlBQVksTUFBTSxHQUFHLENBQUM7WUFDNUMsZUFBZSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUM7WUFDakcsZUFBZSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7aUJBQ3JDLGtCQUFrQixFQUFFO2lCQUNwQixNQUFNLENBQUMsZUFBZSxDQUFDO2lCQUN2QixPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBO0lBZHFCLHFCQUFRLFdBYzdCLENBQUE7SUFFRDs7Ozs7Ozs7OztLQVVDO0lBQ0QsU0FBc0IsY0FBYyxDQUNsQyxRQUFnQixFQUNoQixnQkFBaUMsRUFBRSxFQUNuQyxjQUF5RixFQUFFLEVBQzNGLGlCQUEyQixFQUFFOzs7WUFFN0IsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO2dCQUN4QyxNQUFNLG9CQUFvQixHQUFHLEVBQWMsQ0FBQztnQkFDNUMsSUFBSSxZQUFZLENBQUMsTUFBTTtvQkFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDbEcsSUFBSSxZQUFZLENBQUMsSUFBSTtvQkFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzlGLElBQUksWUFBWSxDQUFDLFFBQVE7b0JBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQ2hGLElBQUksWUFBWSxDQUFDLElBQUksRUFBRTtvQkFDckIsb0JBQW9CLENBQUMsSUFBSSxDQUN2Qix5QkFBeUIsWUFBWSxDQUFDLElBQUksbUNBQW1DLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FDcEcsQ0FBQztpQkFDSDtnQkFDRCxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxrQkFBa0IsS0FBSyxFQUFFLEVBQUU7b0JBQzdCLElBQUksZUFBZSxLQUFLLEVBQUU7d0JBQ3hCLGVBQWUsSUFBSSxJQUFJLGtCQUFrQixHQUFHLENBQUM7O3dCQUU3QyxlQUFlLElBQUksUUFBUSxrQkFBa0IsR0FBRyxDQUFDO2lCQUNwRDthQUNGO1lBQ0QsSUFBSSxlQUFlLEtBQUssRUFBRTtnQkFDeEIsZUFBZSxHQUFHLFNBQVMsZUFBZSxHQUFHLENBQUM7WUFFaEQsTUFBTSxNQUFNLEdBQ1YsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO2lCQUM1QixrQkFBa0IsRUFBRTtpQkFDcEIsTUFBTSxDQUFDLGNBQWMsUUFBUSxJQUFJLGVBQWUsRUFBRSxDQUFDO2lCQUNuRCxPQUFPLENBQUMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7aUJBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV2QixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtnQkFDOUIsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQUEsWUFBWSxDQUFDLEVBQUUsQ0FBQyxtQ0FBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUUzRixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUNqRCxTQUFTLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQzthQUN6QjtZQUVELElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUMvRSxLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtvQkFDOUIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUF3QixDQUFDO3lCQUN0RSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3pFLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUTt3QkFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDaEc7YUFDRjtZQUVELElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNoRixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtvQkFDOUIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUF3QixDQUFDO3lCQUN4RSxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzNFLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUzt3QkFDNUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDcEc7YUFDRjtZQUVELE9BQU8sTUFBTSxDQUFDOztLQUNmO0lBOURxQiwyQkFBYyxpQkE4RG5DLENBQUE7QUFDSCxDQUFDLEVBM0tnQixZQUFZLEtBQVosWUFBWSxRQTJLNUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4vKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5cbnR5cGUgRGF0ZU9wdGlvbnMgPSAnQW55IHRpbWUnIHwgJ1RvZGF5JyB8ICdZZXN0ZXJkYXknIHwgJ1RoaXMgd2VlaycgfCAnTGFzdCB3ZWVrJyB8ICdUaGlzIG1vbnRoJyB8ICdMYXN0IG1vbnRoJyB8ICdUaGlzIHllYXInIHwgJ0xhc3QgeWVhcic7XG5cbnR5cGUgRmlsdGVyT3B0aW9ucyA9IHtcbiAgdGV4dD86IHN0cmluZyxcbiAgZGF0ZT86IERhdGVPcHRpb25zLFxuICBhdXRob3I/OiBERy5Vc2VyLFxuICBpc1NoYXJlZD86IGJvb2xlYW4sXG59O1xuXG5jb25zdCBnZXRTZWFyY2hTdHJpbmdCeVBhdHRlcm4gPSAoZGF0ZVBhdHRlcm46IERhdGVPcHRpb25zKSA9PiB7XG4gIHN3aXRjaCAoZGF0ZVBhdHRlcm4pIHtcbiAgY2FzZSAnVG9kYXknOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0xZGA7XG4gIGNhc2UgJ1llc3RlcmRheSc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTJkIGFuZCBzdGFydGVkIDwgLTFkYDtcbiAgY2FzZSAnQW55IHRpbWUnOlxuICAgIHJldHVybiBgYDtcbiAgY2FzZSAnTGFzdCB5ZWFyJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMnkgYW5kIHN0YXJ0ZWQgPCAtMXlgO1xuICBjYXNlICdUaGlzIHllYXInOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0xeWA7XG4gIGNhc2UgJ0xhc3QgbW9udGgnOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0ybSBhbmQgc3RhcnRlZCA8IC0xbWA7XG4gIGNhc2UgJ1RoaXMgbW9udGgnOlxuICAgIHJldHVybiBgc3RhcnRlZCA+IC0xbWA7XG4gIGNhc2UgJ0xhc3Qgd2Vlayc6XG4gICAgcmV0dXJuIGBzdGFydGVkID4gLTJ3IGFuZCBzdGFydGVkIDwgLTF3YDtcbiAgY2FzZSAnVGhpcyB3ZWVrJzpcbiAgICByZXR1cm4gYHN0YXJ0ZWQgPiAtMXdgO1xuICB9XG59O1xuXG5leHBvcnQgbmFtZXNwYWNlIGhpc3RvcnlVdGlscyB7XG4gIGNvbnN0IHNjcmlwdHNDYWNoZSA9IHt9IGFzIFJlY29yZDxzdHJpbmcsIERHLlNjcmlwdD47XG4gIC8vIFRPIERPOiBhZGQgdXNlcnMgYW5kIGdyb3VwcyBjYWNoZVxuXG4gIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ2hpbGRSdW5zKFxuICAgIGZ1bmNDYWxsSWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHtwYXJlbnRSdW46IERHLkZ1bmNDYWxsLCBjaGlsZFJ1bnM6IERHLkZ1bmNDYWxsW119PiB7XG4gICAgY29uc3QgcGFyZW50UnVuID0gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxscy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGZ1bmNDYWxsSWQpO1xuICAgIHBhcmVudFJ1bi5vcHRpb25zWydpc0hpc3RvcmljYWwnXSA9IHRydWU7XG5cbiAgICBjb25zdCBjaGlsZFJ1bnMgPSBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpXG4gICAgICAuZmlsdGVyKGBvcHRpb25zLnBhcmVudENhbGxJZD1cIiR7ZnVuY0NhbGxJZH1cImApLmxpc3QoKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGNoaWxkUnVucy5tYXAoYXN5bmMgKGNoaWxkUnVuKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IGNoaWxkUnVuLmZ1bmMuaWQ7XG4gICAgICAvLyBGSVggTUU6IG1hbnVhbGx5IGdldCBzY3JpcHQgc2luY2UgcHVsbGVkUnVuIGNvbnRhaW5zIGVtcHR5IEZ1bmNcbiAgICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNDYWNoZVtpZF0gPz8gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGlkKTtcblxuICAgICAgaWYgKCFzY3JpcHRzQ2FjaGVbaWRdKSBzY3JpcHRzQ2FjaGVbaWRdID0gc2NyaXB0O1xuICAgICAgY2hpbGRSdW4uZnVuYyA9IHNjcmlwdDtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4ge3BhcmVudFJ1biwgY2hpbGRSdW5zfTtcbiAgfVxuXG4gIC8vIEVYUExBSU46IFdIWSBERiBMT0FEIFNLSVBQSU5HIElTIFVTRUZVTFxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJ1bihmdW5jQ2FsbElkOiBzdHJpbmcsIHNraXBEZkxvYWQgPSBmYWxzZSkge1xuICAgIGNvbnN0IHB1bGxlZFJ1biA9IGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHMuYWxsUGFja2FnZVZlcnNpb25zKClcbiAgICAgIC5pbmNsdWRlKCdpbnB1dHMsIG91dHB1dHMsIHNlc3Npb24udXNlcicpLmZpbmQoZnVuY0NhbGxJZCk7XG5cbiAgICBjb25zdCBpZCA9IHB1bGxlZFJ1bi5mdW5jLmlkO1xuICAgIC8vIEZJWCBNRTogbWFudWFsbHkgZ2V0IHNjcmlwdCBzaW5jZSBwdWxsZWRSdW4gY29udGFpbnMgZW1wdHkgRnVuY1xuICAgIGNvbnN0IHNjcmlwdCA9IHNjcmlwdHNDYWNoZVtpZF0gPz8gYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5hbGxQYWNrYWdlVmVyc2lvbnMoKS5maW5kKGlkKTtcblxuICAgIGlmICghc2NyaXB0c0NhY2hlW2lkXSkgc2NyaXB0c0NhY2hlW2lkXSA9IHNjcmlwdDtcbiAgICBwdWxsZWRSdW4uZnVuYyA9IHNjcmlwdDtcbiAgICBwdWxsZWRSdW4ub3B0aW9uc1snaXNIaXN0b3JpY2FsJ10gPSB0cnVlO1xuXG4gICAgaWYgKCFza2lwRGZMb2FkKSB7XG4gICAgICBjb25zdCBkZk91dHB1dHMgPSB3dShwdWxsZWRSdW4ub3V0cHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgICAgLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgZGZPdXRwdXRzKVxuICAgICAgICBwdWxsZWRSdW4ub3V0cHV0c1tvdXRwdXQubmFtZV0gPSBhd2FpdCBncm9rLmRhcGkudGFibGVzLmdldFRhYmxlKHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSk7XG5cbiAgICAgIGNvbnN0IGRmSW5wdXRzID0gd3UocHVsbGVkUnVuLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgICAgLmZpbHRlcigoaW5wdXQpID0+IGlucHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgZGZJbnB1dHMpXG4gICAgICAgIHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0gPSBhd2FpdCBncm9rLmRhcGkudGFibGVzLmdldFRhYmxlKHB1bGxlZFJ1bi5pbnB1dHNbaW5wdXQubmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBwdWxsZWRSdW47XG4gIH1cblxuICAvLyBFWFBMQUlOIFdIWSBSRVBMQ0UgREYtc1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVJ1bihjYWxsVG9TYXZlOiBERy5GdW5jQ2FsbCkge1xuICAgIGNvbnN0IGRmT3V0cHV0cyA9IHd1KGNhbGxUb1NhdmUub3V0cHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSlcbiAgICAgIC5maWx0ZXIoKG91dHB1dCkgPT4gb3V0cHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBkZk91dHB1dHMpXG4gICAgICBhd2FpdCBncm9rLmRhcGkudGFibGVzLnVwbG9hZERhdGFGcmFtZShjYWxsVG9TYXZlLm91dHB1dHNbb3V0cHV0Lm5hbWVdKTtcblxuICAgIGNvbnN0IGRmSW5wdXRzID0gd3UoY2FsbFRvU2F2ZS5pbnB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAuZmlsdGVyKChpbnB1dCkgPT4gaW5wdXQucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgZGZJbnB1dHMpXG4gICAgICBhd2FpdCBncm9rLmRhcGkudGFibGVzLnVwbG9hZERhdGFGcmFtZShjYWxsVG9TYXZlLmlucHV0c1tpbnB1dC5uYW1lXSk7XG5cblxuICAgIHJldHVybiBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpLnNhdmUoY2FsbFRvU2F2ZSk7XG4gIH1cblxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVsZXRlUnVuKGNhbGxUb0RlbGV0ZTogREcuRnVuY0NhbGwpIHtcbiAgICBhd2FpdCBncm9rLmRhcGkuZnVuY3Rpb25zLmNhbGxzLmFsbFBhY2thZ2VWZXJzaW9ucygpLmRlbGV0ZShjYWxsVG9EZWxldGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGFsbCB0aGUgZnVuY3Rpb24gY2FsbCBvZiB0aGlzIGZ1bmN0aW9uLlxuICAgKiBEZXNpZ25lZCB0byBwdWxsIGhzdG9yaWNhbCBydW5zIGluIGZhc3QgbWFubmVyIGFuZCB0aGUgY2FsbCB7QGxpbmsgbG9hZFJ1bn0gd2l0aCBzcGVjaWZpZWQgcnVuIElELlxuICAgKiBXQVJOSU5HOiBGdW5jQ2FsbCBpbnB1dHMvb3V0cHV0cyBmaWVsZHMgYXJlIG5vdCBpbmNsdWRlZFxuICAgKiBAcGFyYW0gZnVuY0lkIElEIG9mIEZ1bmMgd2hpY2ggY2FsbHMgd2UgYXJlIGxvb2tpbmcgZm9yLiBHZXQgaXQgdXNpbmcge0BsaW5rIGZ1bmMuaWR9IGZpZWxkXG4gICAqIEByZXR1cm4gUHJvbWlzZSBvbiBhcnJheSBvZiBGdW5jQ2FsbHMgY29ycmVzcG9uZGluZyB0byB0aGUgcGFzc2VkIEZ1bmMgSURcbiAgICogQHN0YWJpbGl0eSBEZXByZWNhdGVkLiBTY3JpcHQgSUQgY2hhbmdlcyB3aXRoIGV2ZXJ5IHBhY2thZ2UgcmVsZWFzZSwgc28gc2VhcmNoaW5nIGJ5IElEIGlzIHVzZWxlc3MgaW4gcHJhY3RpY2UuXG4gKi9cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1bGxSdW5zKFxuICAgIGZ1bmNJZDogc3RyaW5nLFxuICAgIGZpbHRlck9wdGlvbnM6IEZpbHRlck9wdGlvbnMgPSB7fSxcbiAgICBsaXN0T3B0aW9uczoge3BhZ2VTaXplPzogbnVtYmVyLCBwYWdlTnVtYmVyPzogbnVtYmVyLCBmaWx0ZXI/OiBzdHJpbmcsIG9yZGVyPzogc3RyaW5nfSA9IHt9XG4gICk6IFByb21pc2U8REcuRnVuY0NhbGxbXT4ge1xuICAgIGxldCBmaWx0ZXJpbmdTdHJpbmcgPSBgZnVuYy5pZD1cIiR7ZnVuY0lkfVwiYDtcbiAgICBmaWx0ZXJpbmdTdHJpbmcgKz0gZmlsdGVyT3B0aW9ucy5hdXRob3IgPyBgIGFuZCBzZXNzaW9uLnVzZXIuaWQ9XCIke2ZpbHRlck9wdGlvbnMuYXV0aG9yLmlkfVwiYDonJztcbiAgICBmaWx0ZXJpbmdTdHJpbmcgKz0gZmlsdGVyT3B0aW9ucy5kYXRlID8gZ2V0U2VhcmNoU3RyaW5nQnlQYXR0ZXJuKGZpbHRlck9wdGlvbnMuZGF0ZSk6ICcnO1xuICAgIGNvbnN0IGZpbHRlciA9IGdyb2suZGFwaS5mdW5jdGlvbnMuY2FsbHNcbiAgICAgIC5hbGxQYWNrYWdlVmVyc2lvbnMoKVxuICAgICAgLmZpbHRlcihmaWx0ZXJpbmdTdHJpbmcpXG4gICAgICAuaW5jbHVkZSgnc2Vzc2lvbi51c2VyLCBvcHRpb25zJyk7XG4gICAgY29uc3QgbGlzdCA9IGZpbHRlci5saXN0KGxpc3RPcHRpb25zKTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhbGwgdGhlIGZ1bmN0aW9uIGNhbGwgb2YgdGhpcyBmdW5jdGlvbi5cbiAgICogRGVzaWduZWQgdG8gcHVsbCBoc3RvcmljYWwgcnVucyBpbiBmYXN0IG1hbm5lciBhbmQgdGhlIGNhbGwge0BsaW5rIGxvYWRSdW59IHdpdGggc3BlY2lmaWVkIHJ1biBJRC5cbiAgICogV0FSTklORzogRnVuY0NhbGwgaW5wdXRzL291dHB1dHMgZmllbGRzIGFyZSBub3QgaW5jbHVkZWQgYnkgZGVmYXVsdC4gVXNlIHtAbGluayBpbmNsdWRlZEZpZWxkc30gdG8gc3BlY2lmeSBmaWVsZHMgdG8gbG9hZC5cbiAgICogQHBhcmFtIGZ1bmNOYW1lIE5hbWUgb2YgRnVuYyB3aGljaCBjYWxscyB3ZSBhcmUgbG9va2luZyBmb3IuIEdldCBpdCB1c2luZyB7QGxpbmsgZnVuYy5uYW1lfSBmaWVsZFxuICAgKiBAcGFyYW0gZmlsdGVyT3B0aW9ucyBTdHJ1Y3QgY29udGFpbmluZyBmaWx0ZXJpbmcgb3B0aW9ucy4gVGhlc2Ugb3B0aW9ucyB3aWxsIGJlIHBhc3NlZCBhcyB2YWxpZCBmaWx0ZXJpbmcgc3RyaW5nIHRvIGEgcmVxdWVzdC5cbiAgICogQHBhcmFtIGxpc3RPcHRpb25zIFN0cnVjdCBjb250YWluaW5nIGxpc3Rpbmcgb3B0aW9ucy5cbiAgICogQHBhcmFtIGluY2x1ZGVkRmllbGRzIExpc3Qgb2YgZmllbGRzIHRvIGluY2x1ZGUgaW50byByZXNwb25zZS4gU2VlIHtAbGluayBERy5GdW5jQ2FsbH0gc3RydWN0IHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuIEUuZy4sICdpbnB1dHMnIG9yICdvdXRwdXRzJ1xuICAgKiBAcmV0dXJuIFByb21pc2Ugb24gYXJyYXkgb2YgRnVuY0NhbGxzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhc3NlZCBGdW5jIElEXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1bGxSdW5zQnlOYW1lKFxuICAgIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyT3B0aW9uczogRmlsdGVyT3B0aW9uc1tdID0gW10sXG4gICAgbGlzdE9wdGlvbnM6IHtwYWdlU2l6ZT86IG51bWJlciwgcGFnZU51bWJlcj86IG51bWJlciwgZmlsdGVyPzogc3RyaW5nLCBvcmRlcj86IHN0cmluZ30gPSB7fSxcbiAgICBpbmNsdWRlZEZpZWxkczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPERHLkZ1bmNDYWxsW10+IHtcbiAgICBsZXQgZmlsdGVyaW5nU3RyaW5nID0gYGA7XG4gICAgZm9yIChjb25zdCBmaWx0ZXJPcHRpb24gb2YgZmlsdGVyT3B0aW9ucykge1xuICAgICAgY29uc3QgZmlsdGVyT3B0aW9uQ3JpdGVyaWEgPSBbXSBhcyBzdHJpbmdbXTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb24uYXV0aG9yKSBmaWx0ZXJPcHRpb25Dcml0ZXJpYS5wdXNoKGBzZXNzaW9uLnVzZXIuaWQ9XCIke2ZpbHRlck9wdGlvbi5hdXRob3IuaWR9XCJgKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb24uZGF0ZSkgZmlsdGVyT3B0aW9uQ3JpdGVyaWEucHVzaChnZXRTZWFyY2hTdHJpbmdCeVBhdHRlcm4oZmlsdGVyT3B0aW9uLmRhdGUpKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb24uaXNTaGFyZWQpIGZpbHRlck9wdGlvbkNyaXRlcmlhLnB1c2goYG9wdGlvbnMuaXNTaGFyZWQ9XCJ0cnVlXCJgKTtcbiAgICAgIGlmIChmaWx0ZXJPcHRpb24udGV4dCkge1xuICAgICAgICBmaWx0ZXJPcHRpb25Dcml0ZXJpYS5wdXNoKFxuICAgICAgICAgIGAoKG9wdGlvbnMudGl0bGUgbGlrZSBcIiR7ZmlsdGVyT3B0aW9uLnRleHR9XCIpIG9yIChvcHRpb25zLmFubm90YXRpb24gbGlrZSBcIiR7ZmlsdGVyT3B0aW9uLnRleHR9XCIpKWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlck9wdGlvblN0cmluZyA9IGZpbHRlck9wdGlvbkNyaXRlcmlhLmpvaW4oJyBhbmQgJyk7XG4gICAgICBpZiAoZmlsdGVyT3B0aW9uU3RyaW5nICE9PSAnJykge1xuICAgICAgICBpZiAoZmlsdGVyaW5nU3RyaW5nID09PSAnJylcbiAgICAgICAgICBmaWx0ZXJpbmdTdHJpbmcgKz0gYCgke2ZpbHRlck9wdGlvblN0cmluZ30pYDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbHRlcmluZ1N0cmluZyArPSBgIG9yICgke2ZpbHRlck9wdGlvblN0cmluZ30pYDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZpbHRlcmluZ1N0cmluZyAhPT0gJycpXG4gICAgICBmaWx0ZXJpbmdTdHJpbmcgPSBgIGFuZCAoJHtmaWx0ZXJpbmdTdHJpbmd9KWA7XG5cbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgYXdhaXQgZ3Jvay5kYXBpLmZ1bmN0aW9ucy5jYWxsc1xuICAgICAgICAuYWxsUGFja2FnZVZlcnNpb25zKClcbiAgICAgICAgLmZpbHRlcihgZnVuYy5uYW1lPVwiJHtmdW5jTmFtZX1cIiR7ZmlsdGVyaW5nU3RyaW5nfWApXG4gICAgICAgIC5pbmNsdWRlKGAke2luY2x1ZGVkRmllbGRzLmpvaW4oJywnKX1gKVxuICAgICAgICAubGlzdChsaXN0T3B0aW9ucyk7XG5cbiAgICBmb3IgKGNvbnN0IHB1bGxlZFJ1biBvZiByZXN1bHQpIHtcbiAgICAgIGNvbnN0IGlkID0gcHVsbGVkUnVuLmZ1bmMuaWQ7XG4gICAgICBjb25zdCBzY3JpcHQgPSBzY3JpcHRzQ2FjaGVbaWRdID8/IGF3YWl0IGdyb2suZGFwaS5mdW5jdGlvbnMuYWxsUGFja2FnZVZlcnNpb25zKCkuZmluZChpZCk7XG5cbiAgICAgIGlmICghc2NyaXB0c0NhY2hlW2lkXSkgc2NyaXB0c0NhY2hlW2lkXSA9IHNjcmlwdDtcbiAgICAgIHB1bGxlZFJ1bi5mdW5jID0gc2NyaXB0O1xuICAgIH1cblxuICAgIGlmIChpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnaW5wdXRzJykgfHwgaW5jbHVkZWRGaWVsZHMuaW5jbHVkZXMoJ2Z1bmMucGFyYW1zJykpIHtcbiAgICAgIGZvciAoY29uc3QgcHVsbGVkUnVuIG9mIHJlc3VsdCkge1xuICAgICAgICBjb25zdCBkZklucHV0cyA9IHd1KHB1bGxlZFJ1bi5pbnB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAgICAgLmZpbHRlcigoaW5wdXQpID0+IGlucHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBkZklucHV0cylcbiAgICAgICAgICBwdWxsZWRSdW4uaW5wdXRzW2lucHV0Lm5hbWVdID0gYXdhaXQgZ3Jvay5kYXBpLnRhYmxlcy5nZXRUYWJsZShwdWxsZWRSdW4uaW5wdXRzW2lucHV0Lm5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZWRGaWVsZHMuaW5jbHVkZXMoJ291dHB1dHMnKSB8fCBpbmNsdWRlZEZpZWxkcy5pbmNsdWRlcygnZnVuYy5wYXJhbXMnKSkge1xuICAgICAgZm9yIChjb25zdCBwdWxsZWRSdW4gb2YgcmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IGRmT3V0cHV0cyA9IHd1KHB1bGxlZFJ1bi5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgICAgIC5maWx0ZXIoKG91dHB1dCkgPT4gb3V0cHV0LnByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgZGZPdXRwdXRzKVxuICAgICAgICAgIHB1bGxlZFJ1bi5vdXRwdXRzW291dHB1dC5uYW1lXSA9IGF3YWl0IGdyb2suZGFwaS50YWJsZXMuZ2V0VGFibGUocHVsbGVkUnVuLm91dHB1dHNbb3V0cHV0Lm5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
|
package/src/pipeline-view.d.ts
CHANGED
|
@@ -6,18 +6,21 @@ export declare class PipelineView extends ComputationView {
|
|
|
6
6
|
private stepsConfig;
|
|
7
7
|
steps: {
|
|
8
8
|
[scriptNqName: string]: {
|
|
9
|
-
funcCall: DG.FuncCall;
|
|
10
9
|
editor: string;
|
|
11
10
|
view: FunctionView;
|
|
12
11
|
};
|
|
13
12
|
};
|
|
14
|
-
get stepFuncNames(): string[];
|
|
15
13
|
onStepCompleted: Subject<DG.FuncCall>;
|
|
16
14
|
private stepTabs;
|
|
17
|
-
protected
|
|
18
|
-
protected
|
|
19
|
-
protected
|
|
20
|
-
|
|
15
|
+
protected pipelineViewExportExtensions: () => Record<string, string>;
|
|
16
|
+
protected pipelineViewExportFormats: () => string[];
|
|
17
|
+
protected pipelineViewExport: (format: string) => Promise<Blob>;
|
|
18
|
+
exportConfig: {
|
|
19
|
+
supportedExtensions: Record<string, string>;
|
|
20
|
+
supportedFormats: string[];
|
|
21
|
+
export: (format: string) => Promise<Blob>;
|
|
22
|
+
filename: (format: string) => string;
|
|
23
|
+
};
|
|
21
24
|
constructor(funcName: string, stepsConfig: {
|
|
22
25
|
funcName: string;
|
|
23
26
|
}[]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-view.d.ts","sourceRoot":"","sources":["pipeline-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline-view.d.ts","sourceRoot":"","sources":["pipeline-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAGnD,qBAAa,YAAa,SAAQ,eAAe;IA8C7C,OAAO,CAAC,WAAW;IA7Cd,KAAK;;oBAA4C,MAAM;kBAAQ,YAAY;;MAAI;IAC/E,eAAe,uBAA8B;IAEpD,OAAO,CAAC,QAAQ,CAA8B;IAE9C,SAAS,CAAC,4BAA4B,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlE;IAEF,SAAS,CAAC,yBAAyB,iBAEjC;IAEF,SAAS,CAAC,kBAAkB,WAAkB,MAAM,mBAmBlD;IAEF,YAAY;;;yBArBkC,MAAM;;MA0BlD;gBAGA,QAAQ,EAAE,MAAM,EACR,WAAW,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,EAAE;IAQrB,IAAI;IAwEV,OAAO;IAqBD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB1C;;;;;KAKC;IACY,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;CAgB/D"}
|
package/src/pipeline-view.js
CHANGED
|
@@ -15,27 +15,23 @@ import JSZip from 'jszip';
|
|
|
15
15
|
import { Subject } from 'rxjs';
|
|
16
16
|
import { historyUtils } from './history-utils';
|
|
17
17
|
import { ComputationView } from './computation-view';
|
|
18
|
+
import { filter } from 'rxjs/operators';
|
|
18
19
|
export class PipelineView extends ComputationView {
|
|
19
20
|
constructor(funcName, stepsConfig) {
|
|
20
|
-
super(funcName);
|
|
21
|
+
super(funcName, { historyEnabled: true, isTabbed: false });
|
|
21
22
|
this.stepsConfig = stepsConfig;
|
|
22
23
|
this.steps = {};
|
|
23
24
|
this.onStepCompleted = new Subject();
|
|
24
25
|
this.stepTabs = null;
|
|
25
|
-
this.
|
|
26
|
-
return `${this.name} - ${new Date()
|
|
27
|
-
.toLocaleString('en-US')
|
|
28
|
-
.replaceAll(/:|\//g, '-')}.${this.exportConfig.supportedExtensions[format]}`;
|
|
29
|
-
};
|
|
30
|
-
this.defaultSupportedExportExtensions = () => {
|
|
26
|
+
this.pipelineViewExportExtensions = () => {
|
|
31
27
|
return {
|
|
32
28
|
'Archive': 'zip'
|
|
33
29
|
};
|
|
34
30
|
};
|
|
35
|
-
this.
|
|
31
|
+
this.pipelineViewExportFormats = () => {
|
|
36
32
|
return ['Archive'];
|
|
37
33
|
};
|
|
38
|
-
this.
|
|
34
|
+
this.pipelineViewExport = (format) => __awaiter(this, void 0, void 0, function* () {
|
|
39
35
|
var _a;
|
|
40
36
|
if (format !== 'Archive')
|
|
41
37
|
throw new Error('This export format is not supported');
|
|
@@ -53,21 +49,24 @@ export class PipelineView extends ComputationView {
|
|
|
53
49
|
return yield zip.generateAsync({ type: 'blob' });
|
|
54
50
|
});
|
|
55
51
|
this.exportConfig = {
|
|
56
|
-
supportedExtensions: this.
|
|
57
|
-
supportedFormats: this.
|
|
58
|
-
export: this.
|
|
52
|
+
supportedExtensions: this.pipelineViewExportExtensions(),
|
|
53
|
+
supportedFormats: this.pipelineViewExportFormats(),
|
|
54
|
+
export: this.pipelineViewExport,
|
|
59
55
|
filename: this.defaultExportFilename,
|
|
60
56
|
};
|
|
61
|
-
stepsConfig.forEach((stepConfig) => {
|
|
62
|
-
//@ts-ignore
|
|
63
|
-
this.steps[stepConfig.funcName] = {};
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
get stepFuncNames() {
|
|
67
|
-
return this.stepsConfig.map((step) => step.funcName);
|
|
68
57
|
}
|
|
69
58
|
init() {
|
|
70
59
|
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
yield this.loadFuncCallById();
|
|
61
|
+
this.stepsConfig.forEach((stepConfig) => {
|
|
62
|
+
//@ts-ignore
|
|
63
|
+
this.steps[stepConfig.funcName] = {};
|
|
64
|
+
});
|
|
65
|
+
grok.functions.onAfterRunAction.pipe(filter((run) => Object.keys(this.steps).includes(run.func.nqName))).subscribe((run) => {
|
|
66
|
+
this.onStepCompleted.next(run);
|
|
67
|
+
if (run.func.nqName === this.stepsConfig[this.stepsConfig.length - 1].funcName)
|
|
68
|
+
this.run();
|
|
69
|
+
});
|
|
71
70
|
const stepScripts = Object.keys(this.steps).map((stepNqName) => {
|
|
72
71
|
const stepScript = grok.functions.eval(stepNqName);
|
|
73
72
|
return stepScript;
|
|
@@ -99,12 +98,18 @@ export class PipelineView extends ComputationView {
|
|
|
99
98
|
yield Promise.all(editorsLoading);
|
|
100
99
|
const viewsLoading = loadedScripts.map((loadedScript) => __awaiter(this, void 0, void 0, function* () {
|
|
101
100
|
const scriptCall = loadedScript.prepare();
|
|
102
|
-
this.steps[loadedScript.nqName].funcCall = scriptCall;
|
|
103
101
|
this.steps[loadedScript.nqName].view =
|
|
104
102
|
(yield editorFuncs[this.steps[loadedScript.nqName].editor].apply({ 'call': scriptCall }));
|
|
105
|
-
|
|
103
|
+
if (!this.steps[loadedScript.nqName].view.onFuncCallReady.value) {
|
|
104
|
+
const prom = this.steps[loadedScript.nqName].view.onFuncCallReady.toPromise();
|
|
105
|
+
return prom;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
return Promise.resolve();
|
|
109
|
+
}
|
|
106
110
|
}));
|
|
107
111
|
yield Promise.all(viewsLoading);
|
|
112
|
+
this.onFuncCallReady.complete();
|
|
108
113
|
});
|
|
109
114
|
}
|
|
110
115
|
buildIO() {
|
|
@@ -130,10 +135,11 @@ export class PipelineView extends ComputationView {
|
|
|
130
135
|
yield this.funcCall.call(); // mutates the funcCall field
|
|
131
136
|
pi.close();
|
|
132
137
|
Object.values(this.steps)
|
|
133
|
-
.
|
|
134
|
-
|
|
138
|
+
.forEach((step) => __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const scriptCall = step.view.funcCall;
|
|
135
140
|
scriptCall.options['parentCallId'] = this.funcCall.id;
|
|
136
|
-
|
|
141
|
+
this.steps[scriptCall.func.nqName].view.lastCall =
|
|
142
|
+
yield this.steps[scriptCall.func.nqName].view.saveRun(scriptCall);
|
|
137
143
|
}));
|
|
138
144
|
yield this.onAfterRun(this.funcCall);
|
|
139
145
|
this.lastCall = yield this.saveRun(this.funcCall);
|
|
@@ -147,15 +153,18 @@ export class PipelineView extends ComputationView {
|
|
|
147
153
|
*/
|
|
148
154
|
loadRun(funcCallId) {
|
|
149
155
|
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
-
yield this.onBeforeLoadRun();
|
|
151
156
|
const { parentRun: pulledParentRun, childRuns: pulledChildRuns } = yield historyUtils.loadChildRuns(funcCallId);
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
+
this.onFuncCallReady.subscribe({
|
|
158
|
+
complete: () => __awaiter(this, void 0, void 0, function* () {
|
|
159
|
+
yield this.onBeforeLoadRun();
|
|
160
|
+
pulledChildRuns.forEach((pulledChildRun) => __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
this.steps[pulledChildRun.func.nqName].view.loadRun(pulledChildRun.id);
|
|
162
|
+
}));
|
|
163
|
+
yield this.onAfterLoadRun(pulledParentRun);
|
|
164
|
+
})
|
|
165
|
+
});
|
|
157
166
|
return pulledParentRun;
|
|
158
167
|
});
|
|
159
168
|
}
|
|
160
169
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsTUFBTSxPQUFPLFlBQWEsU0FBUSxlQUFlO0lBOEMvQyxZQUNFLFFBQWdCLEVBQ1IsV0FBaUM7UUFFekMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRlIsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBL0NwQyxVQUFLLEdBQUcsRUFBNkYsQ0FBQztRQUl0RyxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFFNUMsYUFBUSxHQUF5QixJQUFJLENBQUM7UUFFcEMsMEJBQXFCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUNuRCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtpQkFDaEMsY0FBYyxDQUFDLE9BQU8sQ0FBQztpQkFDdkIsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBYSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbEYsQ0FBQyxDQUFDO1FBRVEscUNBQWdDLEdBQWlDLEdBQUcsRUFBRTtZQUM5RSxPQUFPO2dCQUNMLFNBQVMsRUFBRSxLQUFLO2FB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QyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0UsQ0FBQyxDQUFBLENBQUMsQ0FBQztZQUVILE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMzQyxPQUFPLGVBQWUsQ0FBQztRQUN6QixDQUFDO0tBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IEpTWmlwIGZyb20gJ2pzemlwJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2hpc3RvcnlVdGlsc30gZnJvbSAnLi9oaXN0b3J5LXV0aWxzJztcbmltcG9ydCB7RnVuY3Rpb25WaWV3fSBmcm9tICcuL2Z1bmN0aW9uLXZpZXcnO1xuaW1wb3J0IHtDb21wdXRhdGlvblZpZXd9IGZyb20gJy4vY29tcHV0YXRpb24tdmlldyc7XG5cbmV4cG9ydCBjbGFzcyBQaXBlbGluZVZpZXcgZXh0ZW5kcyBDb21wdXRhdGlvblZpZXcge1xuICBwdWJsaWMgc3RlcHMgPSB7fSBhcyB7W3NjcmlwdE5xTmFtZTogc3RyaW5nXTogeyBmdW5jQ2FsbDogREcuRnVuY0NhbGwsIGVkaXRvcjogc3RyaW5nLCB2aWV3OiBGdW5jdGlvblZpZXcgfX07XG4gIHB1YmxpYyBnZXQgc3RlcEZ1bmNOYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwc0NvbmZpZy5tYXAoKHN0ZXApID0+IHN0ZXAuZnVuY05hbWUpO1xuICB9XG4gIHB1YmxpYyBvblN0ZXBDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDxERy5GdW5jQ2FsbD4oKTtcblxuICBwcml2YXRlIHN0ZXBUYWJzOiBERy5UYWJDb250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRFeHBvcnRGaWxlbmFtZSA9IChmb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBgJHt0aGlzLm5hbWV9IC0gJHtuZXcgRGF0ZSgpXG4gICAgICAudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJylcbiAgICAgIC5yZXBsYWNlQWxsKC86fFxcLy9nLCAnLScpfS4ke3RoaXMuZXhwb3J0Q29uZmlnIS5zdXBwb3J0ZWRFeHRlbnNpb25zW2Zvcm1hdF19YDtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnM6ICgpID0+IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdBcmNoaXZlJzogJ3ppcCdcbiAgICB9O1xuICB9O1xuXG4gIHByb3RlY3RlZCBkZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0cyA9ICgpID0+IHtcbiAgICByZXR1cm4gWydBcmNoaXZlJ107XG4gIH07XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRFeHBvcnQgPSBhc3luYyAoZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoZm9ybWF0ICE9PSAnQXJjaGl2ZScpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgZXhwb3J0IGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cbiAgICBpZiAoIXRoaXMuc3RlcFRhYnMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldCBzdGVwIHRhYnMgcGxlYXNlIGZvciBleHBvcnQnKTtcblxuICAgIGNvbnN0IHppcCA9IG5ldyBKU1ppcCgpO1xuXG4gICAgZm9yIChjb25zdCB7bnFOYW1lLCBzdGVwVmlld30gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zdGVwcylcbiAgICAgIC5tYXAoKFtucU5hbWUsIHN0ZXBdKSA9PiAoe25xTmFtZSwgc3RlcFZpZXc6IHN0ZXAudmlld30pKSkge1xuICAgICAgdGhpcy5zdGVwVGFicy5jdXJyZW50UGFuZSA9IHRoaXMuc3RlcFRhYnM/LmdldFBhbmUobnFOYW1lKTtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMCkpO1xuICAgICAgY29uc3Qgc3RlcEJsb2IgPSBhd2FpdCBzdGVwVmlldy5leHBvcnRDb25maWchLmV4cG9ydCgnRXhjZWwnKTtcblxuICAgICAgemlwLmZpbGUoc3RlcFZpZXcuZXhwb3J0Q29uZmlnIS5maWxlbmFtZSgnRXhjZWwnKSwgc3RlcEJsb2IsIHtiaW5hcnk6IHRydWUsIGNyZWF0ZUZvbGRlcnM6IGZhbHNlfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB6aXAuZ2VuZXJhdGVBc3luYyh7dHlwZTogJ2Jsb2InfSk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZnVuY05hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHN0ZXBzQ29uZmlnOiB7ZnVuY05hbWU6IHN0cmluZ31bXVxuICApIHtcbiAgICBzdXBlcihmdW5jTmFtZSk7XG5cbiAgICB0aGlzLmV4cG9ydENvbmZpZyA9IHtcbiAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHRoaXMuZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnMoKSxcbiAgICAgIHN1cHBvcnRlZEZvcm1hdHM6IHRoaXMuZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEZvcm1hdHMoKSxcbiAgICAgIGV4cG9ydDogdGhpcy5kZWZhdWx0RXhwb3J0LFxuICAgICAgZmlsZW5hbWU6IHRoaXMuZGVmYXVsdEV4cG9ydEZpbGVuYW1lLFxuICAgIH07XG5cbiAgICBzdGVwc0NvbmZpZy5mb3JFYWNoKChzdGVwQ29uZmlnKSA9PiB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHRoaXMuc3RlcHNbc3RlcENvbmZpZy5mdW5jTmFtZV0gPSB7fTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBpbml0KCkge1xuICAgIGNvbnN0IHN0ZXBTY3JpcHRzID0gT2JqZWN0LmtleXModGhpcy5zdGVwcykubWFwKChzdGVwTnFOYW1lKSA9PiB7XG4gICAgICBjb25zdCBzdGVwU2NyaXB0ID0gKGdyb2suZnVuY3Rpb25zLmV2YWwoc3RlcE5xTmFtZSkgYXMgUHJvbWlzZTxERy5GdW5jPik7XG4gICAgICByZXR1cm4gc3RlcFNjcmlwdDtcbiAgICB9KTtcbiAgICBjb25zdCBhbGxTdGVwc0xvYWRpbmcgPSBQcm9taXNlLmFsbChzdGVwU2NyaXB0cykgYXMgUHJvbWlzZTxERy5TY3JpcHRbXT47XG4gICAgdGhpcy5yb290LmNsYXNzTGlzdC5yZW1vdmUoJ3VpLXBhbmVsJyk7XG5cbiAgICBjb25zdCBsb2FkZWRTY3JpcHRzID0gYXdhaXQgYWxsU3RlcHNMb2FkaW5nO1xuXG4gICAgY29uc3QgZWRpdG9yRnVuY3MgPSB7fSBhcyB7W2VkaXRvcjogc3RyaW5nXTogREcuRnVuY307XG5cbiAgICBjb25zdCBFRElUT1JfVEFHID0gJ2VkaXRvcjonIGFzIGNvbnN0O1xuICAgIGNvbnN0IE5FV0xJTkUgPSAnXFxuJyBhcyBjb25zdDtcbiAgICBjb25zdCBERUZBVUxUX0VESVRPUiA9ICdDb21wdXRlOlBpcGVsaW5lU3RlcEVkaXRvcic7XG4gICAgY29uc3QgZXh0cmFjdEVkaXRvciA9IChzY3JpcHQ6IERHLlNjcmlwdCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0Q29kZSA9IHNjcmlwdC5zY3JpcHQ7XG4gICAgICBjb25zdCBlZGl0b3JUYWdJbmRleCA9IHNjcmlwdENvZGUuaW5kZXhPZihFRElUT1JfVEFHKTtcbiAgICAgIGlmIChlZGl0b3JUYWdJbmRleCA8IDApXG4gICAgICAgIHJldHVybiBERUZBVUxUX0VESVRPUjtcblxuICAgICAgY29uc3QgbmV3bGluZUluZGV4ID0gc2NyaXB0Q29kZS5pbmRleE9mKE5FV0xJTkUsIGVkaXRvclRhZ0luZGV4KTtcbiAgICAgIGNvbnN0IGVkaXRvckZ1bmNOYW1lID0gc2NyaXB0Q29kZS5zdWJzdHJpbmcoZWRpdG9yVGFnSW5kZXggKyBFRElUT1JfVEFHLmxlbmd0aCwgbmV3bGluZUluZGV4KS50cmltKCk7XG5cbiAgICAgIHJldHVybiBlZGl0b3JGdW5jTmFtZTtcbiAgICB9O1xuXG4gICAgY29uc3QgZWRpdG9yc0xvYWRpbmcgPSBsb2FkZWRTY3JpcHRzLm1hcChhc3luYyAobG9hZGVkU2NyaXB0KSA9PiB7XG4gICAgICAvLyBUTyBETzogcmVwbGFjZSBmb3IgdHlwZSBndWFyZFxuICAgICAgY29uc3QgZWRpdG9yTmFtZSA9IChsb2FkZWRTY3JpcHQuc2NyaXB0KSA/IGV4dHJhY3RFZGl0b3IobG9hZGVkU2NyaXB0KTogREVGQVVMVF9FRElUT1I7XG4gICAgICBpZiAoIWVkaXRvckZ1bmNzW2VkaXRvck5hbWVdKVxuICAgICAgICBlZGl0b3JGdW5jc1tlZGl0b3JOYW1lXSA9IGF3YWl0KGdyb2suZnVuY3Rpb25zLmV2YWwoZWRpdG9yTmFtZS5zcGxpdCgnICcpLmpvaW4oJycpKSBhcyBQcm9taXNlPERHLkZ1bmM+KTtcbiAgICAgIHRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0uZWRpdG9yID0gZWRpdG9yTmFtZTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoZWRpdG9yc0xvYWRpbmcpO1xuXG4gICAgY29uc3Qgdmlld3NMb2FkaW5nID0gbG9hZGVkU2NyaXB0cy5tYXAoYXN5bmMgKGxvYWRlZFNjcmlwdCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0Q2FsbDogREcuRnVuY0NhbGwgPSBsb2FkZWRTY3JpcHQucHJlcGFyZSgpO1xuXG4gICAgICB0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLmZ1bmNDYWxsID0gc2NyaXB0Q2FsbDtcbiAgICAgIHRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0udmlldyA9XG4gICAgICAgIGF3YWl0IGVkaXRvckZ1bmNzW3RoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0uZWRpdG9yXS5hcHBseSh7J2NhbGwnOiBzY3JpcHRDYWxsfSkgYXMgRnVuY3Rpb25WaWV3O1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh2aWV3c0xvYWRpbmcpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGJ1aWxkSU8oKSB7XG4gICAgY29uc3QgdGFicyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuc3RlcHMpXG4gICAgICAucmVkdWNlKChwcmV2LCBbZnVuY05hbWUsIHN0ZXBdKSA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBbZnVuY05hbWVdOiBzdGVwLnZpZXcucm9vdFxuICAgICAgfSksIHt9IGFzIFJlY29yZDxzdHJpbmcsIEhUTUxFbGVtZW50Pik7XG5cbiAgICBjb25zdCBwaXBlbGluZVRhYnMgPSB1aS50YWJDb250cm9sKHRhYnMpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaXBlbGluZVRhYnMucGFuZXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBwaXBlbGluZVRhYnMucGFuZXNbaV0uaGVhZGVyLmNsYXNzTGlzdC5hZGQoJ2Fycm93LXRhYicpO1xuICAgICAgcGlwZWxpbmVUYWJzLnBhbmVzW2ldLmhlYWRlci5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgdWkuZGl2KHVuZGVmaW5lZCwgJ2VtcHR5LWJveCcpKTtcbiAgICB9XG4gICAgcGlwZWxpbmVUYWJzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIHBpcGVsaW5lVGFicy5yb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuXG4gICAgdGhpcy5zdGVwVGFicyA9IHBpcGVsaW5lVGFicztcblxuICAgIHJldHVybiBwaXBlbGluZVRhYnMucm9vdDtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmZ1bmNDYWxsKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb3JyZXNwb2RpbmcgZnVuY3Rpb24gaXMgbm90IHNwZWNpZmllZCcpO1xuXG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZVJ1bih0aGlzLmZ1bmNDYWxsKTtcbiAgICBjb25zdCBwaSA9IERHLlRhc2tCYXJQcm9ncmVzc0luZGljYXRvci5jcmVhdGUoJ0NhbGN1bGF0aW5nLi4uJyk7XG4gICAgdGhpcy5mdW5jQ2FsbC5uZXdJZCgpO1xuICAgIGF3YWl0IHRoaXMuZnVuY0NhbGwuY2FsbCgpOyAvLyBtdXRhdGVzIHRoZSBmdW5jQ2FsbCBmaWVsZFxuICAgIHBpLmNsb3NlKCk7XG5cbiAgICBPYmplY3QudmFsdWVzKHRoaXMuc3RlcHMpXG4gICAgICAubWFwKChzdGVwKSA9PiBzdGVwLmZ1bmNDYWxsKVxuICAgICAgLmZvckVhY2goYXN5bmMgKHNjcmlwdENhbGwpID0+IHtcbiAgICAgICAgc2NyaXB0Q2FsbC5vcHRpb25zWydwYXJlbnRDYWxsSWQnXSA9IHRoaXMuZnVuY0NhbGwhLmlkO1xuICAgICAgICBhd2FpdCB0aGlzLnN0ZXBzW3NjcmlwdENhbGwuZnVuYy5ucU5hbWVdLnZpZXcuc2F2ZVJ1bihzY3JpcHRDYWxsKTtcbiAgICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5vbkFmdGVyUnVuKHRoaXMuZnVuY0NhbGwpO1xuXG4gICAgdGhpcy5sYXN0Q2FsbCA9IGF3YWl0IHRoaXMuc2F2ZVJ1bih0aGlzLmZ1bmNDYWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgc3BlY2lmaWVkIGhpc3RvcmljYWwgcnVuLiBTZWUgYWxzbyB7QGxpbmsgc2F2ZVJ1bn0uXG4gICAqIEBwYXJhbSBmdW5jQ2FsbElkIElEIG9mIEZ1bmNDYWxsIHRvIGxvb2sgZm9yLiBHZXQgaXQgdXNpbmcge0BzZWUgZnVuY0NhbGwuaWR9IGZpZWxkXG4gICAqIEByZXR1cm5zIEZ1bmNDYWxsIGF1Z2VtZW50ZWQgd2l0aCBpbnB1dHMnIGFuZCBvdXRwdXRzJyB2YWx1ZXNcbiAgICogQHN0YWJpbGl0eSBTdGFibGVcbiAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZFJ1bihmdW5jQ2FsbElkOiBzdHJpbmcpOiBQcm9taXNlPERHLkZ1bmNDYWxsPiB7XG4gICAgYXdhaXQgdGhpcy5vbkJlZm9yZUxvYWRSdW4oKTtcbiAgICBjb25zdCB7cGFyZW50UnVuOiBwdWxsZWRQYXJlbnRSdW4sIGNoaWxkUnVuczogcHVsbGVkQ2hpbGRSdW5zfSA9IGF3YWl0IGhpc3RvcnlVdGlscy5sb2FkQ2hpbGRSdW5zKGZ1bmNDYWxsSWQpO1xuXG4gICAgcHVsbGVkQ2hpbGRSdW5zLmZvckVhY2goYXN5bmMgKHB1bGxlZENoaWxkUnVuKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnN0ZXBzW3B1bGxlZENoaWxkUnVuLmZ1bmMubnFOYW1lXS52aWV3Lm9uQWZ0ZXJMb2FkUnVuKHB1bGxlZENoaWxkUnVuKTtcbiAgICAgIHRoaXMuc3RlcHNbcHVsbGVkQ2hpbGRSdW4uZnVuYy5ucU5hbWVdLnZpZXcubGlua0Z1bmNjYWxsKHB1bGxlZENoaWxkUnVuKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMub25BZnRlckxvYWRSdW4ocHVsbGVkUGFyZW50UnVuKTtcbiAgICByZXR1cm4gcHVsbGVkUGFyZW50UnVuO1xuICB9XG59XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBpcGVsaW5lLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsZ0NBQWdDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE1BQU0sT0FBTyxZQUFhLFNBQVEsZUFBZTtJQTRDL0MsWUFDRSxRQUFnQixFQUNSLFdBQWlDO1FBRXpDLEtBQUssQ0FDSCxRQUFRLEVBQ1IsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FDeEMsQ0FBQztRQUxNLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQTdDcEMsVUFBSyxHQUFHLEVBQXNFLENBQUM7UUFDL0Usb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBRTVDLGFBQVEsR0FBeUIsSUFBSSxDQUFDO1FBRXBDLGlDQUE0QixHQUFpQyxHQUFHLEVBQUU7WUFDMUUsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRVEsOEJBQXlCLEdBQUcsR0FBRyxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFFUSx1QkFBa0IsR0FBRyxDQUFPLE1BQWMsRUFBRSxF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QUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELENBQUM7S0FBQTtJQUVEOzs7OztLQUtDO0lBQ1ksT0FBTyxDQUFDLFVBQWtCOztZQUNyQyxNQUFNLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFDLEdBQUcsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTlHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO2dCQUM3QixRQUFRLEVBQUUsR0FBUyxFQUFFO29CQUNuQixNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFFN0IsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFPLGNBQWMsRUFBRSxFQUFFO3dCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3pFLENBQUMsQ0FBQSxDQUFDLENBQUM7b0JBRUgsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUE7YUFDRixDQUFDLENBQUM7WUFDSCxPQUFPLGVBQWUsQ0FBQztRQUN6QixDQUFDO0tBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZhbGlkLWpzZG9jICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IEpTWmlwIGZyb20gJ2pzemlwJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2hpc3RvcnlVdGlsc30gZnJvbSAnLi9oaXN0b3J5LXV0aWxzJztcbmltcG9ydCB7RnVuY3Rpb25WaWV3fSBmcm9tICcuL2Z1bmN0aW9uLXZpZXcnO1xuaW1wb3J0IHtDb21wdXRhdGlvblZpZXd9IGZyb20gJy4vY29tcHV0YXRpb24tdmlldyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgUGlwZWxpbmVWaWV3IGV4dGVuZHMgQ29tcHV0YXRpb25WaWV3IHtcbiAgcHVibGljIHN0ZXBzID0ge30gYXMge1tzY3JpcHROcU5hbWU6IHN0cmluZ106IHsgZWRpdG9yOiBzdHJpbmcsIHZpZXc6IEZ1bmN0aW9uVmlldyB9fTtcbiAgcHVibGljIG9uU3RlcENvbXBsZXRlZCA9IG5ldyBTdWJqZWN0PERHLkZ1bmNDYWxsPigpO1xuXG4gIHByaXZhdGUgc3RlcFRhYnM6IERHLlRhYkNvbnRyb2wgfCBudWxsID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgcGlwZWxpbmVWaWV3RXhwb3J0RXh0ZW5zaW9uczogKCkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ0FyY2hpdmUnOiAnemlwJ1xuICAgIH07XG4gIH07XG5cbiAgcHJvdGVjdGVkIHBpcGVsaW5lVmlld0V4cG9ydEZvcm1hdHMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIFsnQXJjaGl2ZSddO1xuICB9O1xuXG4gIHByb3RlY3RlZCBwaXBlbGluZVZpZXdFeHBvcnQgPSBhc3luYyAoZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoZm9ybWF0ICE9PSAnQXJjaGl2ZScpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgZXhwb3J0IGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cbiAgICBpZiAoIXRoaXMuc3RlcFRhYnMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldCBzdGVwIHRhYnMgcGxlYXNlIGZvciBleHBvcnQnKTtcblxuICAgIGNvbnN0IHppcCA9IG5ldyBKU1ppcCgpO1xuXG4gICAgZm9yIChjb25zdCB7bnFOYW1lLCBzdGVwVmlld30gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zdGVwcylcbiAgICAgIC5tYXAoKFtucU5hbWUsIHN0ZXBdKSA9PiAoe25xTmFtZSwgc3RlcFZpZXc6IHN0ZXAudmlld30pKSkge1xuICAgICAgdGhpcy5zdGVwVGFicy5jdXJyZW50UGFuZSA9IHRoaXMuc3RlcFRhYnM/LmdldFBhbmUobnFOYW1lKTtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMCkpO1xuICAgICAgY29uc3Qgc3RlcEJsb2IgPSBhd2FpdCBzdGVwVmlldy5leHBvcnRDb25maWchLmV4cG9ydCgnRXhjZWwnKTtcblxuICAgICAgemlwLmZpbGUoc3RlcFZpZXcuZXhwb3J0Q29uZmlnIS5maWxlbmFtZSgnRXhjZWwnKSwgc3RlcEJsb2IsIHtiaW5hcnk6IHRydWUsIGNyZWF0ZUZvbGRlcnM6IGZhbHNlfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB6aXAuZ2VuZXJhdGVBc3luYyh7dHlwZTogJ2Jsb2InfSk7XG4gIH07XG5cbiAgZXhwb3J0Q29uZmlnID0ge1xuICAgIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHRoaXMucGlwZWxpbmVWaWV3RXhwb3J0RXh0ZW5zaW9ucygpLFxuICAgIHN1cHBvcnRlZEZvcm1hdHM6IHRoaXMucGlwZWxpbmVWaWV3RXhwb3J0Rm9ybWF0cygpLFxuICAgIGV4cG9ydDogdGhpcy5waXBlbGluZVZpZXdFeHBvcnQsXG4gICAgZmlsZW5hbWU6IHRoaXMuZGVmYXVsdEV4cG9ydEZpbGVuYW1lLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBzdGVwc0NvbmZpZzoge2Z1bmNOYW1lOiBzdHJpbmd9W11cbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBmdW5jTmFtZSxcbiAgICAgIHtoaXN0b3J5RW5hYmxlZDogdHJ1ZSwgaXNUYWJiZWQ6IGZhbHNlfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgaW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWRGdW5jQ2FsbEJ5SWQoKTtcblxuICAgIHRoaXMuc3RlcHNDb25maWcuZm9yRWFjaCgoc3RlcENvbmZpZykgPT4ge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aGlzLnN0ZXBzW3N0ZXBDb25maWcuZnVuY05hbWVdID0ge307XG4gICAgfSk7XG5cbiAgICBncm9rLmZ1bmN0aW9ucy5vbkFmdGVyUnVuQWN0aW9uLnBpcGUoXG4gICAgICBmaWx0ZXIoKHJ1bikgPT4gT2JqZWN0LmtleXModGhpcy5zdGVwcykuaW5jbHVkZXMocnVuLmZ1bmMubnFOYW1lKSlcbiAgICApLnN1YnNjcmliZSgocnVuKSA9PiB7XG4gICAgICB0aGlzLm9uU3RlcENvbXBsZXRlZC5uZXh0KHJ1bik7XG5cbiAgICAgIGlmIChydW4uZnVuYy5ucU5hbWUgPT09IHRoaXMuc3RlcHNDb25maWdbdGhpcy5zdGVwc0NvbmZpZy5sZW5ndGgtMV0uZnVuY05hbWUpIHRoaXMucnVuKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGVwU2NyaXB0cyA9IE9iamVjdC5rZXlzKHRoaXMuc3RlcHMpLm1hcCgoc3RlcE5xTmFtZSkgPT4ge1xuICAgICAgY29uc3Qgc3RlcFNjcmlwdCA9IChncm9rLmZ1bmN0aW9ucy5ldmFsKHN0ZXBOcU5hbWUpIGFzIFByb21pc2U8REcuRnVuYz4pO1xuICAgICAgcmV0dXJuIHN0ZXBTY3JpcHQ7XG4gICAgfSk7XG4gICAgY29uc3QgYWxsU3RlcHNMb2FkaW5nID0gUHJvbWlzZS5hbGwoc3RlcFNjcmlwdHMpIGFzIFByb21pc2U8REcuU2NyaXB0W10+O1xuICAgIHRoaXMucm9vdC5jbGFzc0xpc3QucmVtb3ZlKCd1aS1wYW5lbCcpO1xuXG4gICAgY29uc3QgbG9hZGVkU2NyaXB0cyA9IGF3YWl0IGFsbFN0ZXBzTG9hZGluZztcblxuICAgIGNvbnN0IGVkaXRvckZ1bmNzID0ge30gYXMge1tlZGl0b3I6IHN0cmluZ106IERHLkZ1bmN9O1xuXG4gICAgY29uc3QgRURJVE9SX1RBRyA9ICdlZGl0b3I6JyBhcyBjb25zdDtcbiAgICBjb25zdCBORVdMSU5FID0gJ1xcbicgYXMgY29uc3Q7XG4gICAgY29uc3QgREVGQVVMVF9FRElUT1IgPSAnQ29tcHV0ZTpQaXBlbGluZVN0ZXBFZGl0b3InO1xuXG4gICAgY29uc3QgZXh0cmFjdEVkaXRvciA9IChzY3JpcHQ6IERHLlNjcmlwdCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0Q29kZSA9IHNjcmlwdC5zY3JpcHQ7XG4gICAgICBjb25zdCBlZGl0b3JUYWdJbmRleCA9IHNjcmlwdENvZGUuaW5kZXhPZihFRElUT1JfVEFHKTtcbiAgICAgIGlmIChlZGl0b3JUYWdJbmRleCA8IDApXG4gICAgICAgIHJldHVybiBERUZBVUxUX0VESVRPUjtcblxuICAgICAgY29uc3QgbmV3bGluZUluZGV4ID0gc2NyaXB0Q29kZS5pbmRleE9mKE5FV0xJTkUsIGVkaXRvclRhZ0luZGV4KTtcbiAgICAgIGNvbnN0IGVkaXRvckZ1bmNOYW1lID0gc2NyaXB0Q29kZS5zdWJzdHJpbmcoZWRpdG9yVGFnSW5kZXggKyBFRElUT1JfVEFHLmxlbmd0aCwgbmV3bGluZUluZGV4KS50cmltKCk7XG5cbiAgICAgIHJldHVybiBlZGl0b3JGdW5jTmFtZTtcbiAgICB9O1xuXG4gICAgY29uc3QgZWRpdG9yc0xvYWRpbmcgPSBsb2FkZWRTY3JpcHRzLm1hcChhc3luYyAobG9hZGVkU2NyaXB0KSA9PiB7XG4gICAgICAvLyBUTyBETzogcmVwbGFjZSBmb3IgdHlwZSBndWFyZFxuICAgICAgY29uc3QgZWRpdG9yTmFtZSA9IChsb2FkZWRTY3JpcHQuc2NyaXB0KSA/IGV4dHJhY3RFZGl0b3IobG9hZGVkU2NyaXB0KTogREVGQVVMVF9FRElUT1I7XG4gICAgICBpZiAoIWVkaXRvckZ1bmNzW2VkaXRvck5hbWVdKVxuICAgICAgICBlZGl0b3JGdW5jc1tlZGl0b3JOYW1lXSA9IGF3YWl0KGdyb2suZnVuY3Rpb25zLmV2YWwoZWRpdG9yTmFtZS5zcGxpdCgnICcpLmpvaW4oJycpKSBhcyBQcm9taXNlPERHLkZ1bmM+KTtcbiAgICAgIHRoaXMuc3RlcHNbbG9hZGVkU2NyaXB0Lm5xTmFtZV0uZWRpdG9yID0gZWRpdG9yTmFtZTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoZWRpdG9yc0xvYWRpbmcpO1xuXG4gICAgY29uc3Qgdmlld3NMb2FkaW5nID0gbG9hZGVkU2NyaXB0cy5tYXAoYXN5bmMgKGxvYWRlZFNjcmlwdCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0Q2FsbDogREcuRnVuY0NhbGwgPSBsb2FkZWRTY3JpcHQucHJlcGFyZSgpO1xuXG4gICAgICB0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLnZpZXcgPVxuICAgICAgICBhd2FpdCBlZGl0b3JGdW5jc1t0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLmVkaXRvcl0uYXBwbHkoeydjYWxsJzogc2NyaXB0Q2FsbH0pIGFzIEZ1bmN0aW9uVmlldztcblxuICAgICAgaWYgKCF0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLnZpZXcub25GdW5jQ2FsbFJlYWR5LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHByb20gPSB0aGlzLnN0ZXBzW2xvYWRlZFNjcmlwdC5ucU5hbWVdLnZpZXcub25GdW5jQ2FsbFJlYWR5LnRvUHJvbWlzZSgpO1xuICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgIH0gZWxzZSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodmlld3NMb2FkaW5nKTtcblxuICAgIHRoaXMub25GdW5jQ2FsbFJlYWR5LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYnVpbGRJTygpIHtcbiAgICBjb25zdCB0YWJzID0gT2JqZWN0LmVudHJpZXModGhpcy5zdGVwcylcbiAgICAgIC5yZWR1Y2UoKHByZXYsIFtmdW5jTmFtZSwgc3RlcF0pID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFtmdW5jTmFtZV06IHN0ZXAudmlldy5yb290XG4gICAgICB9KSwge30gYXMgUmVjb3JkPHN0cmluZywgSFRNTEVsZW1lbnQ+KTtcblxuICAgIGNvbnN0IHBpcGVsaW5lVGFicyA9IHVpLnRhYkNvbnRyb2wodGFicyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBpcGVsaW5lVGFicy5wYW5lcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIHBpcGVsaW5lVGFicy5wYW5lc1tpXS5oZWFkZXIuY2xhc3NMaXN0LmFkZCgnYXJyb3ctdGFiJyk7XG4gICAgICBwaXBlbGluZVRhYnMucGFuZXNbaV0uaGVhZGVyLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCB1aS5kaXYodW5kZWZpbmVkLCAnZW1wdHktYm94JykpO1xuICAgIH1cbiAgICBwaXBlbGluZVRhYnMucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgcGlwZWxpbmVUYWJzLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG5cbiAgICB0aGlzLnN0ZXBUYWJzID0gcGlwZWxpbmVUYWJzO1xuXG4gICAgcmV0dXJuIHBpcGVsaW5lVGFicy5yb290O1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuZnVuY0NhbGwpIHRocm93IG5ldyBFcnJvcignVGhlIGNvcnJlc3BvZGluZyBmdW5jdGlvbiBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBhd2FpdCB0aGlzLm9uQmVmb3JlUnVuKHRoaXMuZnVuY0NhbGwpO1xuICAgIGNvbnN0IHBpID0gREcuVGFza0JhclByb2dyZXNzSW5kaWNhdG9yLmNyZWF0ZSgnQ2FsY3VsYXRpbmcuLi4nKTtcbiAgICB0aGlzLmZ1bmNDYWxsLm5ld0lkKCk7XG4gICAgYXdhaXQgdGhpcy5mdW5jQ2FsbC5jYWxsKCk7IC8vIG11dGF0ZXMgdGhlIGZ1bmNDYWxsIGZpZWxkXG4gICAgcGkuY2xvc2UoKTtcblxuICAgIE9iamVjdC52YWx1ZXModGhpcy5zdGVwcylcbiAgICAgIC5mb3JFYWNoKGFzeW5jIChzdGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjcmlwdENhbGwgPSBzdGVwLnZpZXcuZnVuY0NhbGw7XG5cbiAgICAgICAgc2NyaXB0Q2FsbC5vcHRpb25zWydwYXJlbnRDYWxsSWQnXSA9IHRoaXMuZnVuY0NhbGwhLmlkO1xuXG4gICAgICAgIHRoaXMuc3RlcHNbc2NyaXB0Q2FsbC5mdW5jLm5xTmFtZV0udmlldy5sYXN0Q2FsbCA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdGVwc1tzY3JpcHRDYWxsLmZ1bmMubnFOYW1lXS52aWV3LnNhdmVSdW4oc2NyaXB0Q2FsbCk7XG4gICAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMub25BZnRlclJ1bih0aGlzLmZ1bmNDYWxsKTtcblxuICAgIHRoaXMubGFzdENhbGwgPSBhd2FpdCB0aGlzLnNhdmVSdW4odGhpcy5mdW5jQ2FsbCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHNwZWNpZmllZCBoaXN0b3JpY2FsIHJ1bi4gU2VlIGFsc28ge0BsaW5rIHNhdmVSdW59LlxuICAgKiBAcGFyYW0gZnVuY0NhbGxJZCBJRCBvZiBGdW5jQ2FsbCB0byBsb29rIGZvci4gR2V0IGl0IHVzaW5nIHtAc2VlIGZ1bmNDYWxsLmlkfSBmaWVsZFxuICAgKiBAcmV0dXJucyBGdW5jQ2FsbCBhdWdlbWVudGVkIHdpdGggaW5wdXRzJyBhbmQgb3V0cHV0cycgdmFsdWVzXG4gICAqIEBzdGFiaWxpdHkgU3RhYmxlXG4gKi9cbiAgcHVibGljIGFzeW5jIGxvYWRSdW4oZnVuY0NhbGxJZDogc3RyaW5nKTogUHJvbWlzZTxERy5GdW5jQ2FsbD4ge1xuICAgIGNvbnN0IHtwYXJlbnRSdW46IHB1bGxlZFBhcmVudFJ1biwgY2hpbGRSdW5zOiBwdWxsZWRDaGlsZFJ1bnN9ID0gYXdhaXQgaGlzdG9yeVV0aWxzLmxvYWRDaGlsZFJ1bnMoZnVuY0NhbGxJZCk7XG5cbiAgICB0aGlzLm9uRnVuY0NhbGxSZWFkeS5zdWJzY3JpYmUoe1xuICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5vbkJlZm9yZUxvYWRSdW4oKTtcblxuICAgICAgICBwdWxsZWRDaGlsZFJ1bnMuZm9yRWFjaChhc3luYyAocHVsbGVkQ2hpbGRSdW4pID0+IHtcbiAgICAgICAgICB0aGlzLnN0ZXBzW3B1bGxlZENoaWxkUnVuLmZ1bmMubnFOYW1lXS52aWV3LmxvYWRSdW4ocHVsbGVkQ2hpbGRSdW4uaWQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJMb2FkUnVuKHB1bGxlZFBhcmVudFJ1bik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHB1bGxlZFBhcmVudFJ1bjtcbiAgfVxufVxuIl19
|
|
@@ -3,21 +3,19 @@ import { FunctionView } from './function-view';
|
|
|
3
3
|
import '../css/rich-function-view.css';
|
|
4
4
|
export declare class RichFunctionView extends FunctionView {
|
|
5
5
|
options: {
|
|
6
|
-
exportEnabled: boolean;
|
|
7
6
|
historyEnabled: boolean;
|
|
8
7
|
isTabbed: boolean;
|
|
9
8
|
};
|
|
10
|
-
private funcCallReplaced;
|
|
11
9
|
private checkDisability;
|
|
12
10
|
private isRunning;
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
static fromFuncCall(funcCall: DG.FuncCall, options?: {
|
|
12
|
+
historyEnabled: boolean;
|
|
13
|
+
isTabbed: boolean;
|
|
14
|
+
}): RichFunctionView;
|
|
15
|
+
constructor(funcName: string, options?: {
|
|
15
16
|
historyEnabled: boolean;
|
|
16
17
|
isTabbed: boolean;
|
|
17
18
|
});
|
|
18
|
-
linkFunccall(funcCall: DG.FuncCall): void;
|
|
19
|
-
saveRun(callToSave: DG.FuncCall): Promise<DG.FuncCall>;
|
|
20
|
-
build(): void;
|
|
21
19
|
onAfterRun(runFunc: DG.FuncCall): Promise<void>;
|
|
22
20
|
buildIO(): HTMLElement;
|
|
23
21
|
buildInputBlock(): HTMLElement;
|
|
@@ -36,5 +34,11 @@ export declare class RichFunctionView extends FunctionView {
|
|
|
36
34
|
private doRun;
|
|
37
35
|
private renderRunSection;
|
|
38
36
|
protected defaultExport: (format: string) => Promise<Blob>;
|
|
37
|
+
exportConfig: {
|
|
38
|
+
supportedExtensions: Record<string, string>;
|
|
39
|
+
supportedFormats: string[];
|
|
40
|
+
export: (format: string) => Promise<Blob>;
|
|
41
|
+
filename: (format: string) => string;
|
|
42
|
+
};
|
|
39
43
|
}
|
|
40
44
|
//# sourceMappingURL=rich-function-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-function-view.d.ts","sourceRoot":"","sources":["rich-function-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"rich-function-view.d.ts","sourceRoot":"","sources":["rich-function-view.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAO7C,OAAO,+BAA+B,CAAC;AAkCvC,qBAAa,gBAAiB,SAAQ,YAAY;IAiBvC,OAAO,EAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAC;IAf/D,OAAO,CAAC,eAAe,CAAiB;IAGxC,OAAO,CAAC,SAAS,CAAS;IAE1B,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACrB,OAAO,GAAE;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACb;gBAMvC,QAAQ,EAAE,MAAM,EACT,OAAO,GAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KACrB;IAOzB,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxD,OAAO,IAAI,WAAW;IA6BtB,eAAe,IAAI,WAAW;IAMrC,OAAO,CAAC,QAAQ,CAAmB;IAE5B,gBAAgB,IAAI,WAAW;IAgJzB,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ;IAelD,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,SAAS,KAAK,QAAQ,kBAKrB;IAED,SAAS,KAAK,cAAc,kBAE3B;IAED,SAAS,KAAK,oBAAoB,YAEjC;IAED,SAAS,KAAK,wBAAwB,aAIrC;IAED,SAAS,KAAK,gBAAgB,aAK7B;IAED,SAAS,KAAK,UAAU,aAEvB;IAED,SAAS,KAAK,kBAAkB,kCAmB/B;IAEqB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAY5B,KAAK;IAanB,OAAO,CAAC,gBAAgB;IAiHxB,SAAS,CAAC,aAAa,WAAkB,MAAM,mBAoI7C;IAEF,YAAY;;;yBAtI6B,MAAM;;MA2I7C;CACH"}
|