@datagrok-libraries/ml
Advanced tools
Comparing version 6.0.0 to 6.1.0
@@ -7,3 +7,3 @@ { | ||
"friendlyName": "Datagrok ML library", | ||
"version": "6.0.0", | ||
"version": "6.1.0", | ||
"description": "Machine learning supporting utilities", | ||
@@ -10,0 +10,0 @@ "dependencies": { |
@@ -130,3 +130,2 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
const linesDfGrid = linesRes.linesDf.plot.grid().sort(['sali'], [false]); | ||
linesDfGrid.root.style.minWidth = '750px'; | ||
linesDfGrid.onCellClick.subscribe(() => { | ||
@@ -136,10 +135,3 @@ zoom = true; | ||
const listCliffsLink = ui.button(`${linesRes.linesDf.rowCount} cliffs`, () => { | ||
const cliffsDialog = ui.dialog({ title: 'Activity cliffs' }) | ||
.add(linesDfGrid.root) | ||
.show({ resizable: true }); | ||
ui.tools.waitForElementInDom(linesDfGrid.root).then(() => { | ||
molColumnNames.forEach(it => { linesDfGrid.col(it).width = 200; }); | ||
linesDfGrid.invalidate(); | ||
}); | ||
cliffsDialog.root.id = 'cliffs_dialog'; | ||
grok.shell.dockManager.dock(linesDfGrid.root, 'down', null, 'Activity cliffs', 0.2); | ||
}); | ||
@@ -319,2 +311,2 @@ listCliffsLink.style.position = 'absolute'; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY2xpZmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWN0aXZpdHktY2xpZmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLCtDQUErQyxDQUFBO0FBcUNuRixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFMUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRS9DLHdFQUF3RTtBQUN4RSxNQUFNLFVBQWdCLGlCQUFpQixDQUNuQyxFQUFnQixFQUNoQixNQUFpQixFQUNqQixVQUE0QixFQUM1QixTQUFtQixFQUNuQixZQUFvQixFQUNwQixVQUFxQixFQUNyQixVQUFrQixFQUNsQixnQkFBd0IsRUFDeEIsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLElBQStCLEVBQy9CLFlBQTZFLEVBQzdFLGFBQStILEVBQy9ILFdBQTRELEVBQzVELGlCQUFrRSxFQUNsRSxPQUFhOztRQUNmLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUUxQixNQUFNLHNCQUFzQixHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFFNUYsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxNQUFNLENBQUM7UUFDckQsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyRixZQUFZO1FBQ2QsTUFBTSxhQUFhLEdBQUcscUJBQXFCLENBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUV6RixNQUFNLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxHQUFHLE1BQU0sWUFBWSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFFO1lBQzdELFVBQVUsRUFBRSxVQUFVO1lBQ3RCLGdCQUFnQixFQUFFLGdCQUFnQjtZQUNsQyxjQUFjLEVBQUUsU0FBUztZQUN6QixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7UUFFSCxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUN0RTtRQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoSCxNQUFNLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQWdCLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFDOUYsTUFBTSxhQUFhLENBQUMsR0FBRyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7O1lBRXhFLDRCQUE0QixDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdEQsTUFBTSxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztRQUVsRCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sRUFBRSxHQUFhLEVBQUUsQ0FBQztRQUN4QixNQUFNLEVBQUUsR0FBYSxFQUFFLENBQUM7UUFFeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEdBQUcsR0FBVyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFckQsSUFBSSxHQUFHLElBQUksa0JBQWtCLEVBQUU7b0JBQzdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ1gsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JFLElBQUksR0FBRyxJQUFJLENBQUM7d0JBQ1YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQzs7d0JBRWhDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzNCO2FBQ0Y7U0FDRjtRQUVELE1BQU0sdUJBQXVCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUN2RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsQ0FBQztRQUNyRCxNQUFNLGVBQWUsR0FBRyxHQUFHLEdBQUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFHaEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sZUFBZSxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDbkMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUU7Z0JBQzNCLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDL0MsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7b0JBRWhDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkM7U0FDRjtRQUVELE1BQU0sSUFBSSxHQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFakksRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFO1lBQ2xELFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSTtZQUN0QixhQUFhLEVBQUUsS0FBSztZQUNwQixhQUFhLEVBQUUsS0FBSztZQUNwQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLGlCQUFpQixFQUFFLEtBQUs7WUFDeEIsYUFBYSxFQUFFLENBQUM7WUFDaEIsYUFBYSxFQUFFLEVBQUU7WUFDakIsS0FBSyxFQUFFLFlBQVk7U0FDcEIsQ0FBQyxDQUF5QixDQUFDO1FBRTVCLE1BQU0sTUFBTSxHQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNGLE1BQU0sZUFBZSxHQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEdBQWlCLENBQUM7UUFFdEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ25ELE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFHLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzRyxFQUFFLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNELEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxRCxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJO2dCQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRSxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUEsQ0FBQSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEssQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ3ZELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtvQkFDaEIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUI7WUFDRCxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsQ0FBQyxRQUFRO29CQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztZQUNILFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBRTFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDM0UsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxDQUFDO2lCQUN2RCxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztpQkFDckIsSUFBSSxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDM0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDdkQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7WUFDSCxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFDSCxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0MsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUvQixJQUFJLEtBQXFCLENBQUM7UUFDMUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxVQUFVLEtBQWlCO1lBQzlELFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztnQkFDeEIsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlELElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ25DLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzFKO1lBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFVBQVMsS0FBaUI7WUFDN0QsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLGVBQWUsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDL0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUV2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7d0JBQ2hCLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUU3QixRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUMzQixJQUFJLENBQUMsQ0FBQyxRQUFROzRCQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDckQsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFO3dCQUM5QyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUN6QyxFQUFFLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ2hDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ2pELEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNqRDtpQkFDRjtnQkFDRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEcsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMzRDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQzthQUMvQixTQUFTLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNwQixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsRUFBRSxFQUMxQixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzVFLElBQUksSUFBSSxFQUFFO2dCQUNSLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMxRCxVQUFVLENBQUMsR0FBRSxFQUFFO29CQUNiLE1BQU0sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsR0FBRyxrQkFBa0IsQ0FDbkUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQ2pCLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUNsQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRCxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRCxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRCxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNwRCxDQUFBO29CQUNELEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUNkLE9BQU8sRUFDUCxTQUFTLEVBQ1QsVUFBVSxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLEdBQUcsS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLEVBQUUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDaEUsR0FBRyxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQUE7QUFFRCxTQUFTLGtCQUFrQjtJQUN6QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsU0FBUyxHQUFHLG9DQUFvQyxDQUFDO0lBQ3pELEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BGLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsRUFBZ0IsRUFDaEIsR0FBaUIsRUFDakIsVUFBZSxFQUNmLElBQVcsRUFDWCxNQUFpQixFQUNqQixVQUFxQixFQUNyQixJQUFZLEVBQ1osYUFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDdEksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ1YsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQ2hHLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdkIsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9CLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlCLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sU0FBUyxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDaEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNoQyxPQUFPLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVB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Q0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25GLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzFELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFDLGVBQWUsQ0FBQztRQUM3RixHQUFHLENBQUMsV0FBVyxHQUFHLFFBQVEsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxF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LEdBQUcseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkU7UUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQ3hGO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBNYXRyaXggfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7cmVtb3ZlRW1wdHlTdHJpbmdSb3dzfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9kYXRhZnJhbWUtdXRpbHMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpbmUge1xuICBpZDogbnVtYmVyO1xuICBtb2xzOiBudW1iZXJbXTtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGE6IG51bWJlcltdOyAvLyBbeCwgeV1cbiAgYjogbnVtYmVyW107IC8vIFt4LCB5XVxufVxuXG5pbnRlcmZhY2UgSVJlbmRlcmVkTGluZXMge1xuICBsaW5lczogSUxpbmVbXTtcbiAgbGluZXNEZjogREcuRGF0YUZyYW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXF1ZW5jZVNwYWNlUGFyYW1zIHtcbiAgc2VxQ29sOiBERy5Db2x1bW4sXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgc2ltaWxhcml0eU1ldHJpYzogc3RyaW5nLFxuICBlbWJlZEF4ZXNOYW1lczogc3RyaW5nW10sXG4gIG9wdGlvbnM/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VxdWVuY2VTcGFjZVJlc3VsdCB7XG4gIGRpc3RhbmNlOiBNYXRyaXg7XG4gIGNvb3JkaW5hdGVzOiBERy5Db2x1bW5MaXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwQW5kUGFuZWxQYXJhbXMge1xuICBjYXNoZWREYXRhOiBhbnksXG4gIGxpbmU6IElMaW5lLFxuICBkZjogREcuRGF0YUZyYW1lLFxuICBzZXFDb2w6IERHLkNvbHVtbixcbiAgYWN0aXZpdHlDb2w6IERHLkNvbHVtbixcbiAgc2FsaT86IG51bWJlclxufVxuXG5sZXQgem9vbSA9IGZhbHNlO1xuXG5jb25zdCBtb2xDb2x1bW5OYW1lcyA9IFsnMV9zZXEnLCAnMl9zZXEnXTtcblxuY29uc3Qgbm9uTm9ybWFsaXplZERpc3RhbmNlcyA9IFsnTGV2ZW5zaHRlaW4nXTtcblxuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoXG4gICAgZGY6IERHLkRhdGFGcmFtZSwgXG4gICAgc2VxQ29sOiBERy5Db2x1bW4sXG4gICAgZW5jb2RlZENvbDogREcuQ29sdW1uIHwgbnVsbCxcbiAgICBheGVzTmFtZXM6IHN0cmluZ1tdLFxuICAgIHNjYXR0ZXJUaXRsZTogc3RyaW5nLFxuICAgIGFjdGl2aXRpZXM6IERHLkNvbHVtbiwgXG4gICAgc2ltaWxhcml0eTogbnVtYmVyLFxuICAgIHNpbWlsYXJpdHlNZXRyaWM6IHN0cmluZywgXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLCBcbiAgICBzZW1UeXBlOiBzdHJpbmcsXG4gICAgdGFnczoge1tpbmRleDogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBzZXFTcGFjZUZ1bmM6IChwYXJhbXM6IElTZXF1ZW5jZVNwYWNlUGFyYW1zKSA9PiBQcm9taXNlPElTZXF1ZW5jZVNwYWNlUmVzdWx0PixcbiAgICBzaW1NYXRyaXhGdW5jOiAoZGltOiBudW1iZXIsIHNlcUNvbDogREcuQ29sdW1uLCBkZjogREcuRGF0YUZyYW1lLCBjb2xOYW1lOiBzdHJpbmcsIHNpbUFycjogREcuQ29sdW1uW10pID0+IFByb21pc2U8REcuQ29sdW1uW10+LFxuICAgIHRvb2x0aXBGdW5jOiAocGFyYW1zOiBJVG9vbHRpcEFuZFBhbmVsUGFyYW1zKSA9PiBIVE1MRWxlbWVudCxcbiAgICBwcm9wZXJ0eVBhbmVsRnVuYzogKHBhcmFtczogSVRvb2x0aXBBbmRQYW5lbFBhcmFtcykgPT4gSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IGFueSkgOiBQcm9taXNlPERHLlZpZXdlcj4ge1xuICBjb25zdCBhdXRvbWF0aWNTaW1pbGFyaXR5TGltaXQgPSBmYWxzZTtcbiAgY29uc3QgTUlOX1NJTUlMQVJJVFkgPSA4MDtcblxuICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuXG4gIGNvbnN0IGRpbWVuc2lvbmFsaXR5UmVkdWNlQ29sID0gZW5jb2RlZENvbCA/PyBzZXFDb2w7XG4gIGNvbnN0IHdpdGhvdXRFbXB0eVZhbHVlcyA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbZGltZW5zaW9uYWxpdHlSZWR1Y2VDb2xdKS5jbG9uZSgpO1xuICAgIC8vQHRzLWlnbm9yZVxuICBjb25zdCBlbXB0eVZhbHNJZHhzID0gcmVtb3ZlRW1wdHlTdHJpbmdSb3dzKHdpdGhvdXRFbXB0eVZhbHVlcywgZGltZW5zaW9uYWxpdHlSZWR1Y2VDb2wpO1xuXG4gIGNvbnN0IHtkaXN0YW5jZSwgY29vcmRpbmF0ZXN9ID0gYXdhaXQgc2VxU3BhY2VGdW5jKHtcbiAgICBzZXFDb2w6IHdpdGhvdXRFbXB0eVZhbHVlcy5jb2woZGltZW5zaW9uYWxpdHlSZWR1Y2VDb2wubmFtZSkhLFxuICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUsXG4gICAgc2ltaWxhcml0eU1ldHJpYzogc2ltaWxhcml0eU1ldHJpYyxcbiAgICBlbWJlZEF4ZXNOYW1lczogYXhlc05hbWVzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfSk7XG5cbiAgZm9yIChjb25zdCBjb2wgb2YgY29vcmRpbmF0ZXMpIHtcbiAgICAgIGNvbnN0IGxpc3RWYWx1ZXMgPSBjb2wudG9MaXN0KCk7XG4gICAgICBlbXB0eVZhbHNJZHhzLmZvckVhY2goKGluZDogbnVtYmVyKSA9PiBsaXN0VmFsdWVzLnNwbGljZShpbmQsIDAsIG51bGwpKTtcbiAgICAgIGRmLmNvbHVtbnMuYWRkKERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgY29sLm5hbWUsIGxpc3RWYWx1ZXMpKTtcbiAgfVxuXG4gIGNvbnN0IGRmU2VxID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsICdzZXEnLCBkaW1lbnNpb25hbGl0eVJlZHVjZUNvbC50b0xpc3QoKSldKTtcbiAgY29uc3QgZGltID0gZGltZW5zaW9uYWxpdHlSZWR1Y2VDb2wubGVuZ3RoO1xuICBjb25zdCBzaW1BcnI6IERHLkNvbHVtbltdID0gQXJyYXkoZGltIC0gMSk7XG5cbiAgaWYgKCFkaXN0YW5jZSB8fCBlbXB0eVZhbHNJZHhzLmxlbmd0aCAhPT0gMCB8fCBub25Ob3JtYWxpemVkRGlzdGFuY2VzLmluY2x1ZGVzKHNpbWlsYXJpdHlNZXRyaWMpKVxuICAgIGF3YWl0IHNpbU1hdHJpeEZ1bmMoZGltLCBkaW1lbnNpb25hbGl0eVJlZHVjZUNvbCwgZGZTZXEsICdzZXEnLCBzaW1BcnIpO1xuICBlbHNlXG4gICAgZ2V0U2ltaWxhcml0aWVzRnJvbURpc3RhbmNlcyhkaW0sIGRpc3RhbmNlLCBzaW1BcnIpO1xuXG4gIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG5cbiAgY29uc3Qgc2ltVmFsczogbnVtYmVyW10gPSBbXTtcbiAgY29uc3Qgc2FsaVZhbHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IG4xOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBuMjogbnVtYmVyW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICBjb25zdCBzaW06IG51bWJlciA9IHNpbUFycltpXSA/IHNpbUFycltpXS5nZXQoaikgOiAwO1xuXG4gICAgICBpZiAoc2ltID49IG9wdFNpbWlsYXJpdHlMaW1pdCkge1xuICAgICAgICBuMS5wdXNoKGkpO1xuICAgICAgICBuMi5wdXNoKGkgKyBqICsgMSk7XG4gICAgICAgIHNpbVZhbHMucHVzaChzaW0pO1xuICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQoaSkgLSBhY3Rpdml0aWVzLmdldChpICsgaiArIDEpKTtcbiAgICAgICAgaWYgKHNpbSAhPSAxKVxuICAgICAgICAgIHNhbGlWYWxzLnB1c2goZGlmZiAvICgxIC0gc2ltKSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzYWxpVmFscy5wdXNoKEluZmluaXR5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzYWxpVmFsc1dpdGhvdXRJbmZpbml0eSA9IHNhbGlWYWxzLmZpbHRlcihpdCA9PiBpdCAhPT0gSW5maW5pdHkpO1xuICBjb25zdCBzYWxpTWluID0gTWF0aC5taW4oLi4uc2FsaVZhbHNXaXRob3V0SW5maW5pdHkpO1xuICBjb25zdCBzYWxpTWF4ID0gTWF0aC5tYXgoLi4uc2FsaVZhbHNXaXRob3V0SW5maW5pdHkpO1xuICBjb25zdCBzYWxpT3BhY2l0eUNvZWYgPSAwLjgvKHNhbGlNYXggLSBzYWxpTWluKTtcblxuXG4gIGNvbnN0IG5laWdoYm91cnNDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gIGNvbnN0IHNpbWlsYXJpdHlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gIGNvbnN0IHNhbGlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgIT0gbjEubGVuZ3RoOyArK2kpIHtcbiAgICBuZWlnaGJvdXJzQ291bnRbbjFbaV1dICs9IDE7XG4gICAgbmVpZ2hib3Vyc0NvdW50W24yW2ldXSArPSAxO1xuICAgIHNpbWlsYXJpdHlDb3VudFtuMVtpXV0gKz0gc2ltVmFsc1tpXTtcbiAgICBzaW1pbGFyaXR5Q291bnRbbjJbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgaWYgKHNhbGlWYWxzW2ldICE9IEluZmluaXR5KSB7XG4gICAgICBpZiAoYWN0aXZpdGllcy5nZXQobjFbaV0pID4gYWN0aXZpdGllcy5nZXQobjJbaV0pKVxuICAgICAgICBzYWxpQ291bnRbbjFbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgZWxzZVxuICAgICAgICBzYWxpQ291bnRbbjJbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNhbGk6IERHLkNvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgYHNhbGlfJHtheGVzTmFtZXNbMF0uc3Vic3RyaW5nKGF4ZXNOYW1lc1swXS5sYXN0SW5kZXhPZignXycpKX1gLCBzYWxpQ291bnQpO1xuXG4gIGRmLmNvbHVtbnMuYWRkKHNhbGkpO1xuXG4gIGNvbnN0IHZpZXcgPSBncm9rLnNoZWxsLmdldFRhYmxlVmlldyhkZi5uYW1lKTtcbiAgY29uc3Qgc3AgPSB2aWV3LmFkZFZpZXdlcihERy5WaWV3ZXIuc2NhdHRlclBsb3QoZGYsIHtcbiAgICB4Q29sdW1uTmFtZTogYXhlc05hbWVzWzBdLFxuICAgIHlDb2x1bW5OYW1lOiBheGVzTmFtZXNbMV0sXG4gICAgc2l6ZTogc2FsaS5uYW1lLFxuICAgIGNvbG9yOiBhY3Rpdml0aWVzLm5hbWUsXG4gICAgc2hvd1hTZWxlY3RvcjogZmFsc2UsXG4gICAgc2hvd1lTZWxlY3RvcjogZmFsc2UsXG4gICAgc2hvd1NpemVTZWxlY3RvcjogZmFsc2UsXG4gICAgc2hvd0NvbG9yU2VsZWN0b3I6IGZhbHNlLFxuICAgIG1hcmtlck1pblNpemU6IDUsXG4gICAgbWFya2VyTWF4U2l6ZTogMjUsXG4gICAgdGl0bGU6IHNjYXR0ZXJUaXRsZVxuICB9KSkgYXMgREcuU2NhdHRlclBsb3RWaWV3ZXI7XG5cbiAgY29uc3QgY2FudmFzID0gKHNwLmdldEluZm8oKSBhcyBhbnkpWydjYW52YXMnXTtcbiAgY29uc3QgbGluZXNSZXMgPSBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcUNvbCwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNpbVZhbHMsIHNlbVR5cGUsIHRhZ3MpO1xuICBjb25zdCBjYXNoZWRMaW5lc0RhdGE6IGFueSA9IHt9O1xuICBsZXQgYWNjOiBERy5BY2NvcmRpb247XG5cbiAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRNb2xJZHggPSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wgJiYgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Q29sLm5hbWUgPT09ICcyX3NlcScgPyAxIDogMDtcbiAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ICE9PSAtMSA/IGxpbmVzUmVzLmxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF0gOiBudWxsO1xuICAgIHNwLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4ID0gbGluZSA/IGxpbmUubW9sc1tjdXJyZW50TW9sSWR4XSA6IC0xO1xuICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgc3AuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoMCwgbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICBpZiAobGluZSlcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge3VwZGF0ZVByb3BlcnR5UGFuZWwoZGYsIGFjYywgY2FzaGVkTGluZXNEYXRhLCBsaW5lLCBzZXFDb2wsIGFjdGl2aXRpZXMsIGxpbmVzUmVzLmxpbmVzRGYuZ2V0KCdzYWxpJywgbGluZS5pZCksIHByb3BlcnR5UGFuZWxGdW5jKX0sIDEwMDApOyAgICAgIFxuICB9KTtcblxuICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF86IGFueSkgPT4ge1xuICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeF07XG4gICAgICBsaW5lLnNlbGVjdGVkID0gIWxpbmUuc2VsZWN0ZWQ7XG4gICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgIH1cbiAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgIH0pO1xuICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgfSk7XG5cbiAgY29uc3QgbGluZXNEZkdyaWQgPSBsaW5lc1Jlcy5saW5lc0RmLnBsb3QuZ3JpZCgpLnNvcnQoWydzYWxpJ10sIFtmYWxzZV0pO1xuICBsaW5lc0RmR3JpZC5yb290LnN0eWxlLm1pbldpZHRoID0gJzc1MHB4JztcblxuICBsaW5lc0RmR3JpZC5vbkNlbGxDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIHpvb20gPSB0cnVlO1xuICB9KTtcblxuICBjb25zdCBsaXN0Q2xpZmZzTGluayA9IHVpLmJ1dHRvbihgJHtsaW5lc1Jlcy5saW5lc0RmLnJvd0NvdW50fSBjbGlmZnNgLCAoKSA9PiB7XG4gICAgY29uc3QgY2xpZmZzRGlhbG9nID0gdWkuZGlhbG9nKHt0aXRsZTogJ0FjdGl2aXR5IGNsaWZmcyd9KVxuICAgICAgLmFkZChsaW5lc0RmR3JpZC5yb290KVxuICAgICAgLnNob3coe3Jlc2l6YWJsZTogdHJ1ZX0pO1xuICAgIHVpLnRvb2xzLndhaXRGb3JFbGVtZW50SW5Eb20obGluZXNEZkdyaWQucm9vdCkudGhlbigoKSA9PiB7XG4gICAgICBtb2xDb2x1bW5OYW1lcy5mb3JFYWNoKGl0ID0+IHsgbGluZXNEZkdyaWQuY29sKGl0KSEud2lkdGggPSAyMDA7IH0pO1xuICAgICAgbGluZXNEZkdyaWQuaW52YWxpZGF0ZSgpO1xuICAgIH0pO1xuICAgIGNsaWZmc0RpYWxvZy5yb290LmlkID0gJ2NsaWZmc19kaWFsb2cnO1xuICB9KTtcbiAgbGlzdENsaWZmc0xpbmsuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICBsaXN0Q2xpZmZzTGluay5zdHlsZS50b3AgPSAnMTBweCc7XG4gIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnJpZ2h0ID0gJzEwcHgnO1xuICBzcC5yb290LmFwcGVuZChsaXN0Q2xpZmZzTGluayk7XG5cbiAgbGV0IHRpbWVyOiBOb2RlSlMuVGltZW91dDtcbiAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGZ1bmN0aW9uIChldmVudDogTW91c2VFdmVudCkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgdGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgICAgIHVpLnRvb2x0aXAuc2hvdyh0b29sdGlwRnVuYyh7Y2FzaGVkRGF0YTogY2FzaGVkTGluZXNEYXRhLCBsaW5lOiBsaW5lLCBkZjogZGYsIHNlcUNvbDogc2VxQ29sLCBhY3Rpdml0eUNvbDogYWN0aXZpdGllc30pLCBldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9KTtcblxuICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5zZWxlY3Rpb24uc2V0KGxpbmUuaWQsIGxpbmUuc2VsZWN0ZWQpO1xuXG4gICAgICAgIGlmICghbGluZS5zZWxlY3RlZClcbiAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcblxuICAgICAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gbGluZS5pZCkge1xuICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA9IGxpbmUuaWQ7XG4gICAgICAgICAgZGYuY3VycmVudFJvd0lkeCA9IGxpbmUubW9sc1swXTtcbiAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yZGVyID0gbGluZXNSZXMubGluZXNEZi5nZXRTb3J0ZWRPcmRlcihsaW5lc0RmR3JpZC5zb3J0QnlDb2x1bW5zLCBsaW5lc0RmR3JpZC5zb3J0VHlwZXMpO1xuICAgICAgbGluZXNEZkdyaWQuc2Nyb2xsVG9DZWxsKCdzZXFfMScsIG9yZGVyLmluZGV4T2YobGluZS5pZCkpO1xuICAgIH1cbiAgfSk7XG5cbiAgc3Aub25FdmVudCgnZDQtYmVmb3JlLWRyYXctc2NlbmUnKVxuICAgIC5zdWJzY3JpYmUoKF86IGFueSkgPT4ge1xuICAgICAgY29uc3QgbGluZXMgPSByZW5kZXJMaW5lcyhzcCxcbiAgICAgICAgYXhlc05hbWVzWzBdLCBheGVzTmFtZXNbMV0sIGxpbmVzUmVzLCBzYWxpVmFscywgc2FsaU9wYWNpdHlDb2VmLCBzYWxpTWluKTtcbiAgICAgIGlmICh6b29tKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMaW5lID0gbGluZXNbbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4XTtcbiAgICAgICAgc2V0VGltZW91dCgoKT0+IHtcbiAgICAgICAgICBjb25zdCB7em9vbUxlZnQsIHpvb21SaWdodCwgem9vbVRvcCwgem9vbUJvdHRvbX0gPSBnZXRab29tQ29vcmRpbmF0ZXMoXG4gICAgICAgICAgICBzcC52aWV3cG9ydC53aWR0aCxcbiAgICAgICAgICAgIHNwLnZpZXdwb3J0LmhlaWdodCxcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzBdLCBjdXJyZW50TGluZS5tb2xzWzBdKSxcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzFdLCBjdXJyZW50TGluZS5tb2xzWzBdKSxcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzBdLCBjdXJyZW50TGluZS5tb2xzWzFdKSxcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzFdLCBjdXJyZW50TGluZS5tb2xzWzFdKVxuICAgICAgICAgICkgICAgICAgIFxuICAgICAgICAgIHNwLnpvb20oem9vbUxlZnQsXG4gICAgICAgICAgICB6b29tVG9wLFxuICAgICAgICAgICAgem9vbVJpZ2h0LFxuICAgICAgICAgICAgem9vbUJvdHRvbSk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICAgIHpvb20gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBzcC5hZGRQcm9wZXJ0eSgnc2ltaWxhcml0eUxpbWl0JywgJ2RvdWJsZScsIG9wdFNpbWlsYXJpdHlMaW1pdCk7XG4gIGFjYyA9IGNyZWF0ZVBvcGVydHlQYW5lbCgpO1xuICByZXR1cm4gc3A7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBvcGVydHlQYW5lbCgpOiBERy5BY2NvcmRpb24ge1xuICBjb25zdCBhY2MgPSB1aS5hY2NvcmRpb24oKTtcbiAgY29uc3QgYWNjSWNvbiA9IHVpLmVsZW1lbnQoJ2knKTtcbiAgYWNjSWNvbi5jbGFzc05hbWUgPSAnZ3Jvay1pY29uIHN2Zy1pY29uIHN2Zy12aWV3LWxheW91dCc7XG4gIGFjYy5hZGRUaXRsZSh1aS5zcGFuKFthY2NJY29uLCB1aS5sYWJlbChgQWN0aXZpdHkgY2xpZmZzYCldKSk7XG4gIGFjYy5hZGRQYW5lKCdDbGlmZiBEZXRhaWxzJywgKCkgPT4gdWkuZGl2VGV4dCgnQ2xpZmYgaGFzIG5vdCBiZWVuIHNlbGVjdGVkJyksIHRydWUpO1xuICBncm9rLnNoZWxsLm8gPSBhY2Mucm9vdDtcbiAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gdXBkYXRlUHJvcGVydHlQYW5lbChcbiAgZGY6IERHLkRhdGFGcmFtZSxcbiAgYWNjOiBERy5BY2NvcmRpb24sXG4gIGNhc2hlZERhdGE6IGFueSxcbiAgbGluZTogSUxpbmUsIFxuICBzZXFDb2w6IERHLkNvbHVtbiwgXG4gIGFjdGl2aXRpZXM6IERHLkNvbHVtbixcbiAgc2FsaTogbnVtYmVyLFxuICBwcm9wUGFuZWxGdW5jOiAocGFyYW1zOiBJVG9vbHRpcEFuZFBhbmVsUGFyYW1zKSA9PiBIVE1MRWxlbWVudCl7XG4gIGNvbnN0IHBhbmVsID0gYWNjLmdldFBhbmUoJ0NsaWZmIERldGFpbHMnKTtcbiAgdWkuZW1wdHkocGFuZWwucm9vdCk7XG4gIGNvbnN0IHBhbmVsRWxlbWVudCA9IHByb3BQYW5lbEZ1bmMoe2Nhc2hlZERhdGE6IGNhc2hlZERhdGEsIGxpbmU6IGxpbmUsIGRmOiBkZiwgc2VxQ29sOiBzZXFDb2wsIGFjdGl2aXR5Q29sOiBhY3Rpdml0aWVzLCBzYWxpOiBzYWxpfSk7XG4gIHBhbmVsLnJvb3QuYXBwZW5kKHBhbmVsRWxlbWVudCk7XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGdyb2suc2hlbGwubyA9IGFjYy5yb290O1xuICB9LCA1MDApO1xufVxuXG5mdW5jdGlvbiBnZXRab29tQ29vcmRpbmF0ZXMoVzA6IG51bWJlciwgSDA6IG51bWJlciwgeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcikge1xuICBjb25zdCBXMSA9IE1hdGguYWJzKHgxIC0geDIpO1xuICBjb25zdCBIMSA9IE1hdGguYWJzKHkxIC0geTIpO1xuICBjb25zdCBzY2FsZVcgPSBXMCAvIFcxO1xuICBjb25zdCBzY2FsZUggPSBIMCAvIEgxO1xuICBjb25zdCBzY2FsZSA9IE1hdGgubWluKHNjYWxlVywgc2NhbGVIKTtcbiAgY29uc3QgVzIgPSAoVzAgLyBzY2FsZSkgKiA1O1xuICBjb25zdCBIMiA9IChIMCAvIHNjYWxlKSAqIDU7XG4gIGNvbnN0IGxlZnQgPSB4MSA8IHgyID8geDEgOiB4MjtcbiAgY29uc3QgdG9wID0geTEgPiB5MiA/IHkxIDogeTI7XG4gIGNvbnN0IHpvb21MZWZ0ID0gKGxlZnQgKyBXMSAvIDIpIC0gVzIgLyAyO1xuICBjb25zdCB6b29tUmlnaHQgPSB6b29tTGVmdCArIFcyO1xuICBjb25zdCB6b29tVG9wID0gKHRvcCAtIEgxIC8gMikgKyBIMiAvIDI7XG4gIGNvbnN0IHpvb21Cb3R0b20gPSB6b29tVG9wIC0gSDI7XG4gIHJldHVybiB7em9vbUxlZnQ6IHpvb21MZWZ0LCB6b29tUmlnaHQ6IHpvb21SaWdodCwgem9vbVRvcDogem9vbVRvcCwgem9vbUJvdHRvbTogem9vbUJvdHRvbX07XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50OiBhbnksIGNhbnZhczogYW55LCBsaW5lczogSUxpbmVbXSk6IElMaW5lIHwgbnVsbCB7XG4gIGNvbnN0IHJlY3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0O1xuICBjb25zdCB5ID0gZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wO1xuICBsZXQgY2xvc2VzdExpbmUgPSBudWxsO1xuICBsZXQgbWluRGlzdCA9IDA7XG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGNvbnN0IGRpc3QgPVxuICAgICAgTWF0aC5hYnMoTWF0aC5oeXBvdChsaW5lLmFbMF0gLSB4LCBsaW5lLmFbMV0gLSB5KSArXG4gICAgICBNYXRoLmh5cG90KGxpbmUuYlswXSAtIHgsIGxpbmUuYlsxXSAtIHkpIC0gTWF0aC5oeXBvdChsaW5lLmFbMF0gLSBsaW5lLmJbMF0sIGxpbmUuYVsxXSAtIGxpbmUuYlsxXSkpO1xuICAgIGlmICgoIW1pbkRpc3QgJiYgZGlzdCA8IDIpIHx8IGRpc3QgPCBtaW5EaXN0KSB7XG4gICAgICBtaW5EaXN0ID0gZGlzdDtcbiAgICAgIGNsb3Nlc3RMaW5lID0gbGluZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNsb3Nlc3RMaW5lO1xufVxuXG5mdW5jdGlvbiByZW5kZXJMaW5lcyhzcDogREcuU2NhdHRlclBsb3RWaWV3ZXIsXG4gIHhBeGlzOiBzdHJpbmcsIHlBeGlzOiBzdHJpbmcsIGxpbmVzUmVzOiBJUmVuZGVyZWRMaW5lcywgc2FsaVZhbHM6IG51bWJlcltdLCBzYWxpT3BhY2l0eUNvZWY6IG51bWJlciwgc2FsaU1pbjogbnVtYmVyKTogSUxpbmUgW10ge1xuICBjb25zdCBsaW5lcyA9IGxpbmVzUmVzLmxpbmVzO1xuICBjb25zdCBjYW52YXMgPSAoc3AuZ2V0SW5mbygpIGFzIHtbaW5kZXg6IHN0cmluZ10gOiBhbnl9KVsnY2FudmFzJ107XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgY29uc3QgeCA9IHNwLmRhdGFGcmFtZSEuY29sdW1ucy5ieU5hbWUoeEF4aXMpO1xuICBjb25zdCB5ID0gc3AuZGF0YUZyYW1lIS5jb2x1bW5zLmJ5TmFtZSh5QXhpcyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb2ludEZyb20gPSBzcC53b3JsZFRvU2NyZWVuKHguZ2V0KGxpbmVzW2ldLm1vbHNbMF0pLCB5LmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgY29uc3QgcG9pbnRUbyA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1sxXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICBsaW5lc1tpXS5hID0gW3BvaW50RnJvbS54LCBwb2ludEZyb20ueV07XG4gICAgbGluZXNbaV0uYiA9IFtwb2ludFRvLngsIHBvaW50VG8ueV07XG4gICAgY29uc3QgbGluZSA9IG5ldyBQYXRoMkQoKTtcbiAgICBsaW5lLm1vdmVUbyhsaW5lc1tpXS5hWzBdLCBsaW5lc1tpXS5hWzFdKTtcbiAgICBjb25zdCBjb2xvciA9IGxpbmVzW2ldLnNlbGVjdGVkID8gJzI1NSwyNTUsMCcgOiAnMCwxMjgsMCc7XG4gICAgY29uc3Qgb3BhY2l0eSA9IHNhbGlWYWxzW2ldID09PSBJbmZpbml0eSA/IDEgOiAwLjIgKyAoc2FsaVZhbHNbaV0gLSBzYWxpTWluKSpzYWxpT3BhY2l0eUNvZWY7XG4gICAgY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHtjb2xvcn0sJHtvcGFjaXR5fSlgO1xuICAgIGN0eC5saW5lV2lkdGggPSBsaW5lc1tpXS5pZCA9PT0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID8gMyA6IDE7XG4gICAgbGluZS5saW5lVG8obGluZXNbaV0uYlswXSwgbGluZXNbaV0uYlsxXSk7XG4gICAgY3R4LnN0cm9rZShsaW5lKTtcbiAgfVxuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmVzKFxuICBuMTogbnVtYmVyW10sIFxuICBuMjogbnVtYmVyW10sIFxuICBzZXE6IERHLkNvbHVtbiwgXG4gIGFjdGl2aXRpZXM6IERHLkNvbHVtbiwgXG4gIHNhbGlWYWxzOiBudW1iZXJbXSxcbiAgc2ltVmFsczogbnVtYmVyW10sXG4gIHNlbVR5cGU6IHN0cmluZyxcbiAgdGFnczoge1tpbmRleDogc3RyaW5nXTogc3RyaW5nfSkgOiBJUmVuZGVyZWRMaW5lcyB7XG4gIGNvbnN0IGxpbmVzOiBJTGluZVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbjEubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBudW0xID0gbjFbaV07XG4gICAgY29uc3QgbnVtMiA9IG4yW2ldO1xuICAgIGxpbmVzLnB1c2goe2lkOiBpLCBtb2xzOiBbbnVtMSwgbnVtMl0sIHNlbGVjdGVkOiBmYWxzZSwgYTogW10sIGI6IFtdfSk7XG4gIH1cbiAgY29uc3QgbGluZXNEZiA9IERHLkRhdGFGcmFtZS5jcmVhdGUobGluZXMubGVuZ3RoKTtcbiAgbW9sQ29sdW1uTmFtZXMuZm9yRWFjaCgoaXQsIGlkeCkgPT4ge1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoaXQpLmluaXQoKGk6IG51bWJlcikgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzW2lkeF0pKTtcbiAgICBzZXRUYWdzKGxpbmVzRGYuY29sKGl0KSEsIHRhZ3MpO1xuICAgIGxpbmVzRGYuY29sKGl0KSEuc2VtVHlwZSA9IHNlbVR5cGU7XG4gIH0pXG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdGbG9hdCgnYWN0X2RpZmYnKVxuICAgIC5pbml0KChpOiBudW1iZXIpID0+IE1hdGguYWJzKGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pIC0gYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1sxXSkpKTtcbiAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0ludCgnbGluZV9pbmRleCcpLmluaXQoKGk6IG51bWJlcikgPT4gaSk7XG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdGbG9hdCgnc2FsaScpLmluaXQoKGk6IG51bWJlcikgPT4gc2FsaVZhbHNbaV0pO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ3NpbScpLmluaXQoKGk6IG51bWJlcikgPT4gc2ltVmFsc1tpXSk7XG4gIHJldHVybiB7bGluZXMsIGxpbmVzRGZ9O1xufVxuXG5mdW5jdGlvbiBzZXRUYWdzKGNvbDogREcuQ29sdW1uLCB0YWdzOiB7W2luZGV4OiBzdHJpbmddOiBzdHJpbmd9KSB7XG4gIE9iamVjdC5rZXlzKHRhZ3MpLmZvckVhY2godGFnID0+IHtcbiAgICBjb2wudGFnc1t0YWddID0gdGFnc1t0YWddO1xuICB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2ltaWxhcml0aWVzTWFyaXgoXG4gICAgZGltOiBudW1iZXIsIFxuICAgIHNlcUNvbDogREcuQ29sdW1uLCBcbiAgICBkZlNlcTogREcuRGF0YUZyYW1lLCBcbiAgICBzaW1BcnI6IERHLkNvbHVtbltdLFxuICAgIHNpbUZ1bmM6IChjb2w6IERHLkNvbHVtbiwgbW9sOiBzdHJpbmcpID0+IFByb21pc2U8REcuQ29sdW1uIHwgbnVsbD5cbiAgICApXG4gIDogUHJvbWlzZTxERy5Db2x1bW5bXT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICBjb25zdCBtb2wgPSBzZXFDb2wuZ2V0KGkpO1xuICAgIGRmU2VxLnJvd3MucmVtb3ZlQXQoMCwgMSwgZmFsc2UpO1xuICAgIHNpbUFycltpXSA9IChhd2FpdCBzaW1GdW5jKGRmU2VxLmNvbCgnc2VxJykhLCBtb2wpKSE7XG4gIH1cbiAgcmV0dXJuIHNpbUFycjtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0aWVzRnJvbURpc3RhbmNlcyhkaW06IG51bWJlciwgZGlzdGFuY2VzOiBNYXRyaXgsIHNpbUFycjogREcuQ29sdW1uW10pXG4gIDogREcuQ29sdW1uW10ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbSAtIDE7ICsraSkge1xuICAgIGNvbnN0IHNpbWlsYXJpdHlBcnIgPSBuZXcgQXJyYXkoZGltIC0gaSAtIDEpLmZpbGwoMCk7XG4gICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgZGltOyArK2opIHtcbiAgICAgIHNpbWlsYXJpdHlBcnJbaiAtIGkgLSAxXSA9IGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZGlzdGFuY2VzW2ldW2pdKTtcbiAgICB9XG4gICAgc2ltQXJyW2ldID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ3NpbWlsYXJpdHknLCBGbG9hdDMyQXJyYXkuZnJvbShzaW1pbGFyaXR5QXJyKSk7XG4gIH1cbiAgcmV0dXJuIHNpbUFycjtcbn1cblxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY2xpZmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWN0aXZpdHktY2xpZmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLCtDQUErQyxDQUFBO0FBcUNuRixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7QUFFakIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFMUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRS9DLHdFQUF3RTtBQUN4RSxNQUFNLFVBQWdCLGlCQUFpQixDQUNuQyxFQUFnQixFQUNoQixNQUFpQixFQUNqQixVQUE0QixFQUM1QixTQUFtQixFQUNuQixZQUFvQixFQUNwQixVQUFxQixFQUNyQixVQUFrQixFQUNsQixnQkFBd0IsRUFDeEIsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLElBQStCLEVBQy9CLFlBQTZFLEVBQzdFLGFBQStILEVBQy9ILFdBQTRELEVBQzVELGlCQUFrRSxFQUNsRSxPQUFhOztRQUNmLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUUxQixNQUFNLHNCQUFzQixHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFFNUYsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxNQUFNLENBQUM7UUFDckQsTUFB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QUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDdEksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ1YsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQ2hHLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdkIsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdB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QUFHLEVBQUUsQ0FBQyxTQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckYsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25GLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sS0FB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QUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxFQUFFLEdBQUcsQ0FBQyxDQUFFLENBQUM7U0FDdEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQUE7QUFHRCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsR0FBVyxFQUFFLFNBQWlCLEVBQUUsTUFBbUI7SUFFOUYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDaEMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkU7UUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQ3hGO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBNYXRyaXggfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7cmVtb3ZlRW1wdHlTdHJpbmdSb3dzfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9kYXRhZnJhbWUtdXRpbHMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpbmUge1xuICBpZDogbnVtYmVyO1xuICBtb2xzOiBudW1iZXJbXTtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGE6IG51bWJlcltdOyAvLyBbeCwgeV1cbiAgYjogbnVtYmVyW107IC8vIFt4LCB5XVxufVxuXG5pbnRlcmZhY2UgSVJlbmRlcmVkTGluZXMge1xuICBsaW5lczogSUxpbmVbXTtcbiAgbGluZXNEZjogREcuRGF0YUZyYW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXF1ZW5jZVNwYWNlUGFyYW1zIHtcbiAgc2VxQ29sOiBERy5Db2x1bW4sXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgc2ltaWxhcml0eU1ldHJpYzogc3RyaW5nLFxuICBlbWJlZEF4ZXNOYW1lczogc3RyaW5nW10sXG4gIG9wdGlvbnM/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VxdWVuY2VTcGFjZVJlc3VsdCB7XG4gIGRpc3RhbmNlOiBNYXRyaXg7XG4gIGNvb3JkaW5hdGVzOiBERy5Db2x1bW5MaXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwQW5kUGFuZWxQYXJhbXMge1xuICBjYXNoZWREYXRhOiBhbnksXG4gIGxpbmU6IElMaW5lLFxuICBkZjogREcuRGF0YUZyYW1lLFxuICBzZXFDb2w6IERHLkNvbHVtbixcbiAgYWN0aXZpdHlDb2w6IERHLkNvbHVtbixcbiAgc2FsaT86IG51bWJlclxufVxuXG5sZXQgem9vbSA9IGZhbHNlO1xuXG5jb25zdCBtb2xDb2x1bW5OYW1lcyA9IFsnMV9zZXEnLCAnMl9zZXEnXTtcblxuY29uc3Qgbm9uTm9ybWFsaXplZERpc3RhbmNlcyA9IFsnTGV2ZW5zaHRlaW4nXTtcblxuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoXG4gICAgZGY6IERHLkRhdGFGcmFtZSwgXG4gICAgc2VxQ29sOiBERy5Db2x1bW4sXG4gICAgZW5jb2RlZENvbDogREcuQ29sdW1uIHwgbnVsbCxcbiAgICBheGVzTmFtZXM6IHN0cmluZ1tdLFxuICAgIHNjYXR0ZXJUaXRsZTogc3RyaW5nLFxuICAgIGFjdGl2aXRpZXM6IERHLkNvbHVtbiwgXG4gICAgc2ltaWxhcml0eTogbnVtYmVyLFxuICAgIHNpbWlsYXJpdHlNZXRyaWM6IHN0cmluZywgXG4gICAgbWV0aG9kTmFtZTogc3RyaW5nLCBcbiAgICBzZW1UeXBlOiBzdHJpbmcsXG4gICAgdGFnczoge1tpbmRleDogc3RyaW5nXTogc3RyaW5nfSxcbiAgICBzZXFTcGFjZUZ1bmM6IChwYXJhbXM6IElTZXF1ZW5jZVNwYWNlUGFyYW1zKSA9PiBQcm9taXNlPElTZXF1ZW5jZVNwYWNlUmVzdWx0PixcbiAgICBzaW1NYXRyaXhGdW5jOiAoZGltOiBudW1iZXIsIHNlcUNvbDogREcuQ29sdW1uLCBkZjogREcuRGF0YUZyYW1lLCBjb2xOYW1lOiBzdHJpbmcsIHNpbUFycjogREcuQ29sdW1uW10pID0+IFByb21pc2U8REcuQ29sdW1uW10+LFxuICAgIHRvb2x0aXBGdW5jOiAocGFyYW1zOiBJVG9vbHRpcEFuZFBhbmVsUGFyYW1zKSA9PiBIVE1MRWxlbWVudCxcbiAgICBwcm9wZXJ0eVBhbmVsRnVuYzogKHBhcmFtczogSVRvb2x0aXBBbmRQYW5lbFBhcmFtcykgPT4gSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IGFueSkgOiBQcm9taXNlPERHLlZpZXdlcj4ge1xuICBjb25zdCBhdXRvbWF0aWNTaW1pbGFyaXR5TGltaXQgPSBmYWxzZTtcbiAgY29uc3QgTUlOX1NJTUlMQVJJVFkgPSA4MDtcblxuICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuXG4gIGNvbnN0IGRpbWVuc2lvbmFsaXR5UmVkdWNlQ29sID0gZW5jb2RlZENvbCA/PyBzZXFDb2w7XG4gIGNvbnN0IHdpdGhvdXRFbXB0eVZhbHVlcyA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbZGltZW5zaW9uYWxpdHlSZWR1Y2VDb2xdKS5jbG9uZSgpO1xuICAgIC8vQHRzLWlnbm9yZVxuICBjb25zdCBlbXB0eVZhbHNJZHhzID0gcmVtb3ZlRW1wdHlTdHJpbmdSb3dzKHdpdGhvdXRFbXB0eVZhbHVlcywgZGltZW5zaW9uYWxpdHlSZWR1Y2VDb2wpO1xuXG4gIGNvbnN0IHtkaXN0YW5jZSwgY29vcmRpbmF0ZXN9ID0gYXdhaXQgc2VxU3BhY2VGdW5jKHtcbiAgICBzZXFDb2w6IHdpdGhvdXRFbXB0eVZhbHVlcy5jb2woZGltZW5zaW9uYWxpdHlSZWR1Y2VDb2wubmFtZSkhLFxuICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUsXG4gICAgc2ltaWxhcml0eU1ldHJpYzogc2ltaWxhcml0eU1ldHJpYyxcbiAgICBlbWJlZEF4ZXNOYW1lczogYXhlc05hbWVzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfSk7XG5cbiAgZm9yIChjb25zdCBjb2wgb2YgY29vcmRpbmF0ZXMpIHtcbiAgICAgIGNvbnN0IGxpc3RWYWx1ZXMgPSBjb2wudG9MaXN0KCk7XG4gICAgICBlbXB0eVZhbHNJZHhzLmZvckVhY2goKGluZDogbnVtYmVyKSA9PiBsaXN0VmFsdWVzLnNwbGljZShpbmQsIDAsIG51bGwpKTtcbiAgICAgIGRmLmNvbHVtbnMuYWRkKERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgY29sLm5hbWUsIGxpc3RWYWx1ZXMpKTtcbiAgfVxuXG4gIGNvbnN0IGRmU2VxID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsICdzZXEnLCBkaW1lbnNpb25hbGl0eVJlZHVjZUNvbC50b0xpc3QoKSldKTtcbiAgY29uc3QgZGltID0gZGltZW5zaW9uYWxpdHlSZWR1Y2VDb2wubGVuZ3RoO1xuICBjb25zdCBzaW1BcnI6IERHLkNvbHVtbltdID0gQXJyYXkoZGltIC0gMSk7XG5cbiAgaWYgKCFkaXN0YW5jZSB8fCBlbXB0eVZhbHNJZHhzLmxlbmd0aCAhPT0gMCB8fCBub25Ob3JtYWxpemVkRGlzdGFuY2VzLmluY2x1ZGVzKHNpbWlsYXJpdHlNZXRyaWMpKVxuICAgIGF3YWl0IHNpbU1hdHJpeEZ1bmMoZGltLCBkaW1lbnNpb25hbGl0eVJlZHVjZUNvbCwgZGZTZXEsICdzZXEnLCBzaW1BcnIpO1xuICBlbHNlXG4gICAgZ2V0U2ltaWxhcml0aWVzRnJvbURpc3RhbmNlcyhkaW0sIGRpc3RhbmNlLCBzaW1BcnIpO1xuXG4gIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG5cbiAgY29uc3Qgc2ltVmFsczogbnVtYmVyW10gPSBbXTtcbiAgY29uc3Qgc2FsaVZhbHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IG4xOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBuMjogbnVtYmVyW10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICBjb25zdCBzaW06IG51bWJlciA9IHNpbUFycltpXSA/IHNpbUFycltpXS5nZXQoaikgOiAwO1xuXG4gICAgICBpZiAoc2ltID49IG9wdFNpbWlsYXJpdHlMaW1pdCkge1xuICAgICAgICBuMS5wdXNoKGkpO1xuICAgICAgICBuMi5wdXNoKGkgKyBqICsgMSk7XG4gICAgICAgIHNpbVZhbHMucHVzaChzaW0pO1xuICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQoaSkgLSBhY3Rpdml0aWVzLmdldChpICsgaiArIDEpKTtcbiAgICAgICAgaWYgKHNpbSAhPSAxKVxuICAgICAgICAgIHNhbGlWYWxzLnB1c2goZGlmZiAvICgxIC0gc2ltKSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzYWxpVmFscy5wdXNoKEluZmluaXR5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzYWxpVmFsc1dpdGhvdXRJbmZpbml0eSA9IHNhbGlWYWxzLmZpbHRlcihpdCA9PiBpdCAhPT0gSW5maW5pdHkpO1xuICBjb25zdCBzYWxpTWluID0gTWF0aC5taW4oLi4uc2FsaVZhbHNXaXRob3V0SW5maW5pdHkpO1xuICBjb25zdCBzYWxpTWF4ID0gTWF0aC5tYXgoLi4uc2FsaVZhbHNXaXRob3V0SW5maW5pdHkpO1xuICBjb25zdCBzYWxpT3BhY2l0eUNvZWYgPSAwLjgvKHNhbGlNYXggLSBzYWxpTWluKTtcblxuXG4gIGNvbnN0IG5laWdoYm91cnNDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gIGNvbnN0IHNpbWlsYXJpdHlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gIGNvbnN0IHNhbGlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgIT0gbjEubGVuZ3RoOyArK2kpIHtcbiAgICBuZWlnaGJvdXJzQ291bnRbbjFbaV1dICs9IDE7XG4gICAgbmVpZ2hib3Vyc0NvdW50W24yW2ldXSArPSAxO1xuICAgIHNpbWlsYXJpdHlDb3VudFtuMVtpXV0gKz0gc2ltVmFsc1tpXTtcbiAgICBzaW1pbGFyaXR5Q291bnRbbjJbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgaWYgKHNhbGlWYWxzW2ldICE9IEluZmluaXR5KSB7XG4gICAgICBpZiAoYWN0aXZpdGllcy5nZXQobjFbaV0pID4gYWN0aXZpdGllcy5nZXQobjJbaV0pKVxuICAgICAgICBzYWxpQ291bnRbbjFbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgZWxzZVxuICAgICAgICBzYWxpQ291bnRbbjJbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNhbGk6IERHLkNvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgYHNhbGlfJHtheGVzTmFtZXNbMF0uc3Vic3RyaW5nKGF4ZXNOYW1lc1swXS5sYXN0SW5kZXhPZignXycpKX1gLCBzYWxpQ291bnQpO1xuXG4gIGRmLmNvbHVtbnMuYWRkKHNhbGkpO1xuXG4gIGNvbnN0IHZpZXcgPSBncm9rLnNoZWxsLmdldFRhYmxlVmlldyhkZi5uYW1lKTtcbiAgY29uc3Qgc3AgPSB2aWV3LmFkZFZpZXdlcihERy5WaWV3ZXIuc2NhdHRlclBsb3QoZGYsIHtcbiAgICB4Q29sdW1uTmFtZTogYXhlc05hbWVzWzBdLFxuICAgIHlDb2x1bW5OYW1lOiBheGVzTmFtZXNbMV0sXG4gICAgc2l6ZTogc2FsaS5uYW1lLFxuICAgIGNvbG9yOiBhY3Rpdml0aWVzLm5hbWUsXG4gICAgc2hvd1hTZWxlY3RvcjogZmFsc2UsXG4gICAgc2hvd1lTZWxlY3RvcjogZmFsc2UsXG4gICAgc2hvd1NpemVTZWxlY3RvcjogZmFsc2UsXG4gICAgc2hvd0NvbG9yU2VsZWN0b3I6IGZhbHNlLFxuICAgIG1hcmtlck1pblNpemU6IDUsXG4gICAgbWFya2VyTWF4U2l6ZTogMjUsXG4gICAgdGl0bGU6IHNjYXR0ZXJUaXRsZVxuICB9KSkgYXMgREcuU2NhdHRlclBsb3RWaWV3ZXI7XG5cbiAgY29uc3QgY2FudmFzID0gKHNwLmdldEluZm8oKSBhcyBhbnkpWydjYW52YXMnXTtcbiAgY29uc3QgbGluZXNSZXMgPSBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcUNvbCwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNpbVZhbHMsIHNlbVR5cGUsIHRhZ3MpO1xuICBjb25zdCBjYXNoZWRMaW5lc0RhdGE6IGFueSA9IHt9O1xuICBsZXQgYWNjOiBERy5BY2NvcmRpb247XG5cbiAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRNb2xJZHggPSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wgJiYgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Q29sLm5hbWUgPT09ICcyX3NlcScgPyAxIDogMDtcbiAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ICE9PSAtMSA/IGxpbmVzUmVzLmxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF0gOiBudWxsO1xuICAgIHNwLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4ID0gbGluZSA/IGxpbmUubW9sc1tjdXJyZW50TW9sSWR4XSA6IC0xO1xuICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgc3AuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoMCwgbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICBpZiAobGluZSlcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge3VwZGF0ZVByb3BlcnR5UGFuZWwoZGYsIGFjYywgY2FzaGVkTGluZXNEYXRhLCBsaW5lLCBzZXFDb2wsIGFjdGl2aXRpZXMsIGxpbmVzUmVzLmxpbmVzRGYuZ2V0KCdzYWxpJywgbGluZS5pZCksIHByb3BlcnR5UGFuZWxGdW5jKX0sIDEwMDApOyAgICAgIFxuICB9KTtcblxuICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF86IGFueSkgPT4ge1xuICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeF07XG4gICAgICBsaW5lLnNlbGVjdGVkID0gIWxpbmUuc2VsZWN0ZWQ7XG4gICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgIH1cbiAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgIH0pO1xuICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgfSk7XG5cbiAgY29uc3QgbGluZXNEZkdyaWQgPSBsaW5lc1Jlcy5saW5lc0RmLnBsb3QuZ3JpZCgpLnNvcnQoWydzYWxpJ10sIFtmYWxzZV0pO1xuXG4gIGxpbmVzRGZHcmlkLm9uQ2VsbENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgem9vbSA9IHRydWU7XG4gIH0pO1xuXG4gIGNvbnN0IGxpc3RDbGlmZnNMaW5rID0gdWkuYnV0dG9uKGAke2xpbmVzUmVzLmxpbmVzRGYucm93Q291bnR9IGNsaWZmc2AsICgpID0+IHtcbiAgICBncm9rLnNoZWxsLmRvY2tNYW5hZ2VyLmRvY2sobGluZXNEZkdyaWQucm9vdCwgJ2Rvd24nLCBudWxsLCAnQWN0aXZpdHkgY2xpZmZzJywgMC4yKTtcbiAgfSk7XG4gIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgbGlzdENsaWZmc0xpbmsuc3R5bGUudG9wID0gJzEwcHgnO1xuICBsaXN0Q2xpZmZzTGluay5zdHlsZS5yaWdodCA9ICcxMHB4JztcbiAgc3Aucm9vdC5hcHBlbmQobGlzdENsaWZmc0xpbmspO1xuXG4gIGxldCB0aW1lcjogTm9kZUpTLlRpbWVvdXQ7XG4gIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIHRpbWVyID0gZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgICAgICB1aS50b29sdGlwLnNob3codG9vbHRpcEZ1bmMoe2Nhc2hlZERhdGE6IGNhc2hlZExpbmVzRGF0YSwgbGluZTogbGluZSwgZGY6IGRmLCBzZXFDb2w6IHNlcUNvbCwgYWN0aXZpdHlDb2w6IGFjdGl2aXRpZXN9KSwgZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfSk7XG5cbiAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICBsaW5lLnNlbGVjdGVkID0gIWxpbmUuc2VsZWN0ZWQ7XG4gICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuc2VsZWN0aW9uLnNldChsaW5lLmlkLCBsaW5lLnNlbGVjdGVkKTtcblxuICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgZGYuc2VsZWN0aW9uLnNldEFsbChmYWxzZSk7XG5cbiAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgIGlmIChsLnNlbGVjdGVkKVxuICAgICAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IGxpbmUuaWQpIHtcbiAgICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggPSBsaW5lLmlkO1xuICAgICAgICAgIGRmLmN1cnJlbnRSb3dJZHggPSBsaW5lLm1vbHNbMF07XG4gICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXQoMCwgbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBvcmRlciA9IGxpbmVzUmVzLmxpbmVzRGYuZ2V0U29ydGVkT3JkZXIobGluZXNEZkdyaWQuc29ydEJ5Q29sdW1ucywgbGluZXNEZkdyaWQuc29ydFR5cGVzKTtcbiAgICAgIGxpbmVzRGZHcmlkLnNjcm9sbFRvQ2VsbCgnc2VxXzEnLCBvcmRlci5pbmRleE9mKGxpbmUuaWQpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHNwLm9uRXZlbnQoJ2Q0LWJlZm9yZS1kcmF3LXNjZW5lJylcbiAgICAuc3Vic2NyaWJlKChfOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzID0gcmVuZGVyTGluZXMoc3AsXG4gICAgICAgIGF4ZXNOYW1lc1swXSwgYXhlc05hbWVzWzFdLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbik7XG4gICAgICBpZiAoem9vbSkge1xuICAgICAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF07XG4gICAgICAgIHNldFRpbWVvdXQoKCk9PiB7XG4gICAgICAgICAgY29uc3Qge3pvb21MZWZ0LCB6b29tUmlnaHQsIHpvb21Ub3AsIHpvb21Cb3R0b219ID0gZ2V0Wm9vbUNvb3JkaW5hdGVzKFxuICAgICAgICAgICAgc3Audmlld3BvcnQud2lkdGgsXG4gICAgICAgICAgICBzcC52aWV3cG9ydC5oZWlnaHQsXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1swXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1swXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1sxXSksXG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1sxXSlcbiAgICAgICAgICApICAgICAgICBcbiAgICAgICAgICBzcC56b29tKHpvb21MZWZ0LFxuICAgICAgICAgICAgem9vbVRvcCxcbiAgICAgICAgICAgIHpvb21SaWdodCxcbiAgICAgICAgICAgIHpvb21Cb3R0b20pO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgICB6b29tID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgc3AuYWRkUHJvcGVydHkoJ3NpbWlsYXJpdHlMaW1pdCcsICdkb3VibGUnLCBvcHRTaW1pbGFyaXR5TGltaXQpO1xuICBhY2MgPSBjcmVhdGVQb3BlcnR5UGFuZWwoKTtcbiAgcmV0dXJuIHNwO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQb3BlcnR5UGFuZWwoKTogREcuQWNjb3JkaW9uIHtcbiAgY29uc3QgYWNjID0gdWkuYWNjb3JkaW9uKCk7XG4gIGNvbnN0IGFjY0ljb24gPSB1aS5lbGVtZW50KCdpJyk7XG4gIGFjY0ljb24uY2xhc3NOYW1lID0gJ2dyb2staWNvbiBzdmctaWNvbiBzdmctdmlldy1sYXlvdXQnO1xuICBhY2MuYWRkVGl0bGUodWkuc3BhbihbYWNjSWNvbiwgdWkubGFiZWwoYEFjdGl2aXR5IGNsaWZmc2ApXSkpO1xuICBhY2MuYWRkUGFuZSgnQ2xpZmYgRGV0YWlscycsICgpID0+IHVpLmRpdlRleHQoJ0NsaWZmIGhhcyBub3QgYmVlbiBzZWxlY3RlZCcpLCB0cnVlKTtcbiAgZ3Jvay5zaGVsbC5vID0gYWNjLnJvb3Q7XG4gIHJldHVybiBhY2M7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVByb3BlcnR5UGFuZWwoXG4gIGRmOiBERy5EYXRhRnJhbWUsXG4gIGFjYzogREcuQWNjb3JkaW9uLFxuICBjYXNoZWREYXRhOiBhbnksXG4gIGxpbmU6IElMaW5lLCBcbiAgc2VxQ29sOiBERy5Db2x1bW4sIFxuICBhY3Rpdml0aWVzOiBERy5Db2x1bW4sXG4gIHNhbGk6IG51bWJlcixcbiAgcHJvcFBhbmVsRnVuYzogKHBhcmFtczogSVRvb2x0aXBBbmRQYW5lbFBhcmFtcykgPT4gSFRNTEVsZW1lbnQpe1xuICBjb25zdCBwYW5lbCA9IGFjYy5nZXRQYW5lKCdDbGlmZiBEZXRhaWxzJyk7XG4gIHVpLmVtcHR5KHBhbmVsLnJvb3QpO1xuICBjb25zdCBwYW5lbEVsZW1lbnQgPSBwcm9wUGFuZWxGdW5jKHtjYXNoZWREYXRhOiBjYXNoZWREYXRhLCBsaW5lOiBsaW5lLCBkZjogZGYsIHNlcUNvbDogc2VxQ29sLCBhY3Rpdml0eUNvbDogYWN0aXZpdGllcywgc2FsaTogc2FsaX0pO1xuICBwYW5lbC5yb290LmFwcGVuZChwYW5lbEVsZW1lbnQpO1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBncm9rLnNoZWxsLm8gPSBhY2Mucm9vdDtcbiAgfSwgNTAwKTtcbn1cblxuZnVuY3Rpb24gZ2V0Wm9vbUNvb3JkaW5hdGVzKFcwOiBudW1iZXIsIEgwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpIHtcbiAgY29uc3QgVzEgPSBNYXRoLmFicyh4MSAtIHgyKTtcbiAgY29uc3QgSDEgPSBNYXRoLmFicyh5MSAtIHkyKTtcbiAgY29uc3Qgc2NhbGVXID0gVzAgLyBXMTtcbiAgY29uc3Qgc2NhbGVIID0gSDAgLyBIMTtcbiAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbihzY2FsZVcsIHNjYWxlSCk7XG4gIGNvbnN0IFcyID0gKFcwIC8gc2NhbGUpICogNTtcbiAgY29uc3QgSDIgPSAoSDAgLyBzY2FsZSkgKiA1O1xuICBjb25zdCBsZWZ0ID0geDEgPCB4MiA/IHgxIDogeDI7XG4gIGNvbnN0IHRvcCA9IHkxID4geTIgPyB5MSA6IHkyO1xuICBjb25zdCB6b29tTGVmdCA9IChsZWZ0ICsgVzEgLyAyKSAtIFcyIC8gMjtcbiAgY29uc3Qgem9vbVJpZ2h0ID0gem9vbUxlZnQgKyBXMjtcbiAgY29uc3Qgem9vbVRvcCA9ICh0b3AgLSBIMSAvIDIpICsgSDIgLyAyO1xuICBjb25zdCB6b29tQm90dG9tID0gem9vbVRvcCAtIEgyO1xuICByZXR1cm4ge3pvb21MZWZ0OiB6b29tTGVmdCwgem9vbVJpZ2h0OiB6b29tUmlnaHQsIHpvb21Ub3A6IHpvb21Ub3AsIHpvb21Cb3R0b206IHpvb21Cb3R0b219O1xufVxuXG5mdW5jdGlvbiBjaGVja0N1cnNvck9uTGluZShldmVudDogYW55LCBjYW52YXM6IGFueSwgbGluZXM6IElMaW5lW10pOiBJTGluZSB8IG51bGwge1xuICBjb25zdCByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcDtcbiAgbGV0IGNsb3Nlc3RMaW5lID0gbnVsbDtcbiAgbGV0IG1pbkRpc3QgPSAwO1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBkaXN0ID1cbiAgICAgIE1hdGguYWJzKE1hdGguaHlwb3QobGluZS5hWzBdIC0geCwgbGluZS5hWzFdIC0geSkgK1xuICAgICAgTWF0aC5oeXBvdChsaW5lLmJbMF0gLSB4LCBsaW5lLmJbMV0gLSB5KSAtIE1hdGguaHlwb3QobGluZS5hWzBdIC0gbGluZS5iWzBdLCBsaW5lLmFbMV0gLSBsaW5lLmJbMV0pKTtcbiAgICBpZiAoKCFtaW5EaXN0ICYmIGRpc3QgPCAyKSB8fCBkaXN0IDwgbWluRGlzdCkge1xuICAgICAgbWluRGlzdCA9IGRpc3Q7XG4gICAgICBjbG9zZXN0TGluZSA9IGxpbmU7XG4gICAgfVxuICB9XG4gIHJldHVybiBjbG9zZXN0TGluZTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyTGluZXMoc3A6IERHLlNjYXR0ZXJQbG90Vmlld2VyLFxuICB4QXhpczogc3RyaW5nLCB5QXhpczogc3RyaW5nLCBsaW5lc1JlczogSVJlbmRlcmVkTGluZXMsIHNhbGlWYWxzOiBudW1iZXJbXSwgc2FsaU9wYWNpdHlDb2VmOiBudW1iZXIsIHNhbGlNaW46IG51bWJlcik6IElMaW5lIFtdIHtcbiAgY29uc3QgbGluZXMgPSBsaW5lc1Jlcy5saW5lcztcbiAgY29uc3QgY2FudmFzID0gKHNwLmdldEluZm8oKSBhcyB7W2luZGV4OiBzdHJpbmddIDogYW55fSlbJ2NhbnZhcyddO1xuICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gIGNvbnN0IHggPSBzcC5kYXRhRnJhbWUhLmNvbHVtbnMuYnlOYW1lKHhBeGlzKTtcbiAgY29uc3QgeSA9IHNwLmRhdGFGcmFtZSEuY29sdW1ucy5ieU5hbWUoeUF4aXMpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcG9pbnRGcm9tID0gc3Aud29ybGRUb1NjcmVlbih4LmdldChsaW5lc1tpXS5tb2xzWzBdKSwgeS5nZXQobGluZXNbaV0ubW9sc1swXSkpO1xuICAgIGNvbnN0IHBvaW50VG8gPSBzcC53b3JsZFRvU2NyZWVuKHguZ2V0KGxpbmVzW2ldLm1vbHNbMV0pLCB5LmdldChsaW5lc1tpXS5tb2xzWzFdKSk7XG4gICAgbGluZXNbaV0uYSA9IFtwb2ludEZyb20ueCwgcG9pbnRGcm9tLnldO1xuICAgIGxpbmVzW2ldLmIgPSBbcG9pbnRUby54LCBwb2ludFRvLnldO1xuICAgIGNvbnN0IGxpbmUgPSBuZXcgUGF0aDJEKCk7XG4gICAgbGluZS5tb3ZlVG8obGluZXNbaV0uYVswXSwgbGluZXNbaV0uYVsxXSk7XG4gICAgY29uc3QgY29sb3IgPSBsaW5lc1tpXS5zZWxlY3RlZCA/ICcyNTUsMjU1LDAnIDogJzAsMTI4LDAnO1xuICAgIGNvbnN0IG9wYWNpdHkgPSBzYWxpVmFsc1tpXSA9PT0gSW5maW5pdHkgPyAxIDogMC4yICsgKHNhbGlWYWxzW2ldIC0gc2FsaU1pbikqc2FsaU9wYWNpdHlDb2VmO1xuICAgIGN0eC5zdHJva2VTdHlsZSA9IGByZ2JhKCR7Y29sb3J9LCR7b3BhY2l0eX0pYDtcbiAgICBjdHgubGluZVdpZHRoID0gbGluZXNbaV0uaWQgPT09IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA/IDMgOiAxO1xuICAgIGxpbmUubGluZVRvKGxpbmVzW2ldLmJbMF0sIGxpbmVzW2ldLmJbMV0pO1xuICAgIGN0eC5zdHJva2UobGluZSk7XG4gIH1cbiAgcmV0dXJuIGxpbmVzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMaW5lcyhcbiAgbjE6IG51bWJlcltdLCBcbiAgbjI6IG51bWJlcltdLCBcbiAgc2VxOiBERy5Db2x1bW4sIFxuICBhY3Rpdml0aWVzOiBERy5Db2x1bW4sIFxuICBzYWxpVmFsczogbnVtYmVyW10sXG4gIHNpbVZhbHM6IG51bWJlcltdLFxuICBzZW1UeXBlOiBzdHJpbmcsXG4gIHRhZ3M6IHtbaW5kZXg6IHN0cmluZ106IHN0cmluZ30pIDogSVJlbmRlcmVkTGluZXMge1xuICBjb25zdCBsaW5lczogSUxpbmVbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG4xLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbnVtMSA9IG4xW2ldO1xuICAgIGNvbnN0IG51bTIgPSBuMltpXTtcbiAgICBsaW5lcy5wdXNoKHtpZDogaSwgbW9sczogW251bTEsIG51bTJdLCBzZWxlY3RlZDogZmFsc2UsIGE6IFtdLCBiOiBbXX0pO1xuICB9XG4gIGNvbnN0IGxpbmVzRGYgPSBERy5EYXRhRnJhbWUuY3JlYXRlKGxpbmVzLmxlbmd0aCk7XG4gIG1vbENvbHVtbk5hbWVzLmZvckVhY2goKGl0LCBpZHgpID0+IHtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3U3RyaW5nKGl0KS5pbml0KChpOiBudW1iZXIpID0+IHNlcS5nZXQobGluZXNbaV0ubW9sc1tpZHhdKSk7XG4gICAgc2V0VGFncyhsaW5lc0RmLmNvbChpdCkhLCB0YWdzKTtcbiAgICBsaW5lc0RmLmNvbChpdCkhLnNlbVR5cGUgPSBzZW1UeXBlO1xuICB9KVxuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ2FjdF9kaWZmJylcbiAgICAuaW5pdCgoaTogbnVtYmVyKSA9PiBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzBdKSAtIGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKSk7XG4gIGxpbmVzRGYuY29sdW1ucy5hZGROZXdJbnQoJ2xpbmVfaW5kZXgnKS5pbml0KChpOiBudW1iZXIpID0+IGkpO1xuICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ3NhbGknKS5pbml0KChpOiBudW1iZXIpID0+IHNhbGlWYWxzW2ldKTtcbiAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdzaW0nKS5pbml0KChpOiBudW1iZXIpID0+IHNpbVZhbHNbaV0pO1xuICByZXR1cm4ge2xpbmVzLCBsaW5lc0RmfTtcbn1cblxuZnVuY3Rpb24gc2V0VGFncyhjb2w6IERHLkNvbHVtbiwgdGFnczoge1tpbmRleDogc3RyaW5nXTogc3RyaW5nfSkge1xuICBPYmplY3Qua2V5cyh0YWdzKS5mb3JFYWNoKHRhZyA9PiB7XG4gICAgY29sLnRhZ3NbdGFnXSA9IHRhZ3NbdGFnXTtcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4KFxuICAgIGRpbTogbnVtYmVyLCBcbiAgICBzZXFDb2w6IERHLkNvbHVtbiwgXG4gICAgZGZTZXE6IERHLkRhdGFGcmFtZSwgXG4gICAgc2ltQXJyOiBERy5Db2x1bW5bXSxcbiAgICBzaW1GdW5jOiAoY29sOiBERy5Db2x1bW4sIG1vbDogc3RyaW5nKSA9PiBQcm9taXNlPERHLkNvbHVtbiB8IG51bGw+XG4gICAgKVxuICA6IFByb21pc2U8REcuQ29sdW1uW10+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgY29uc3QgbW9sID0gc2VxQ29sLmdldChpKTtcbiAgICBkZlNlcS5yb3dzLnJlbW92ZUF0KDAsIDEsIGZhbHNlKTtcbiAgICBzaW1BcnJbaV0gPSAoYXdhaXQgc2ltRnVuYyhkZlNlcS5jb2woJ3NlcScpISwgbW9sKSkhO1xuICB9XG4gIHJldHVybiBzaW1BcnI7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc0Zyb21EaXN0YW5jZXMoZGltOiBudW1iZXIsIGRpc3RhbmNlczogTWF0cml4LCBzaW1BcnI6IERHLkNvbHVtbltdKVxuICA6IERHLkNvbHVtbltdIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW0gLSAxOyArK2kpIHtcbiAgICBjb25zdCBzaW1pbGFyaXR5QXJyID0gbmV3IEFycmF5KGRpbSAtIGkgLSAxKS5maWxsKDApO1xuICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGRpbTsgKytqKSB7XG4gICAgICBzaW1pbGFyaXR5QXJyW2ogLSBpIC0gMV0gPSBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGRpc3RhbmNlc1tpXVtqXSk7XG4gICAgfVxuICAgIHNpbUFycltpXSA9IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdzaW1pbGFyaXR5JywgRmxvYXQzMkFycmF5LmZyb20oc2ltaWxhcml0eUFycikpO1xuICB9XG4gIHJldHVybiBzaW1BcnI7XG59XG5cbiJdfQ== |
Sorry, the diff of this file is not supported yet
198937
1437