From 75f9771b60c4f931fd5b9692d3bf7bc8f8b545fe Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Wed, 2 Jun 2021 04:42:32 -0500 Subject: [PATCH] chore: add built files --- dist/code-manager.d.ts | 36 ---- dist/code-manager.js | 12 +- dist/commands.d.ts | 4 - dist/commands.js | 2 +- dist/components/inspector.d.ts | 8 - dist/components/kernel-monitor.d.ts | 4 - dist/components/kernel-monitor.js | 5 +- dist/components/output-area.d.ts | 13 -- dist/components/result-view/display.d.ts | 9 - dist/components/result-view/history.d.ts | 5 - dist/components/result-view/index.d.ts | 11 -- dist/components/result-view/list.d.ts | 12 -- dist/components/result-view/markdown.d.ts | 13 -- dist/components/result-view/plotly.d.ts | 41 ----- dist/components/result-view/plotly.js | 9 +- dist/components/result-view/result-view.d.ts | 33 ---- dist/components/result-view/result-view.js | 8 +- dist/components/result-view/status.d.ts | 6 - dist/components/watch-sidebar/index.d.ts | 5 - dist/components/watch-sidebar/index.js | 2 +- dist/components/watch-sidebar/watch.d.ts | 12 -- dist/config.d.ts | 162 ----------------- dist/existing-kernel-picker.d.ts | 14 -- dist/existing-kernel-picker.js | 2 +- dist/export-notebook.d.ts | 1 - dist/hydrogen.d.ts | 6 - dist/import-notebook.d.ts | 3 - dist/import-notebook.js | 10 +- dist/input-view.d.ts | 20 --- dist/kernel-manager.d.ts | 17 -- dist/kernel-manager.js | 15 +- dist/kernel-picker.d.ts | 15 -- dist/kernel-picker.js | 2 +- dist/kernel-transport.d.ts | 29 --- dist/kernel.d.ts | 63 ------- dist/kernel.js | 6 +- dist/main.d.ts | 167 ------------------ dist/main.js | 25 +-- dist/panes/inspector.d.ts | 13 -- dist/panes/kernel-monitor.d.ts | 13 -- dist/panes/output-area.d.ts | 13 -- dist/panes/watches.d.ts | 13 -- dist/plugin-api/hydrogen-kernel.d.ts | 13 -- dist/plugin-api/hydrogen-provider.d.ts | 11 -- dist/plugin-api/hydrogen-provider.js | 2 +- dist/plugin-api/hydrogen-types.d.ts | 17 -- dist/result.d.ts | 35 ---- dist/services/consumed/autocomplete.d.ts | 18 -- dist/services/consumed/index.d.ts | 5 - dist/services/consumed/status-bar/index.d.ts | 3 - .../consumed/status-bar/signal-list-view.d.ts | 18 -- .../consumed/status-bar/signal-list-view.js | 2 +- .../status-bar/status-bar-component.d.ts | 10 -- .../status-bar/status-bar-component.js | 2 +- .../consumed/status-bar/status-bar.d.ts | 11 -- .../consumed/status-bar/status-bar.js | 2 +- dist/services/index.d.ts | 10 -- dist/services/provided/autocomplete.d.ts | 3 - dist/services/provided/autocomplete.js | 10 +- dist/services/provided/index.d.ts | 5 - dist/store/index.d.ts | 39 ---- dist/store/index.js | 5 +- dist/store/markers.d.ts | 8 - dist/store/output.d.ts | 25 --- dist/store/output.js | 8 +- dist/store/watch.d.ts | 14 -- dist/store/watches.d.ts | 16 -- dist/store/watches.js | 2 +- dist/tsconfig.tsbuildinfo | 1 - dist/utils.d.ts | 38 ---- dist/utils.js | 8 +- dist/ws-kernel-picker.d.ts | 53 ------ dist/ws-kernel-picker.js | 42 +++-- dist/ws-kernel.d.ts | 18 -- dist/ws-kernel.js | 6 +- dist/zmq-kernel.d.ts | 48 ----- 76 files changed, 101 insertions(+), 1266 deletions(-) delete mode 100644 dist/code-manager.d.ts delete mode 100644 dist/commands.d.ts delete mode 100644 dist/components/inspector.d.ts delete mode 100644 dist/components/kernel-monitor.d.ts delete mode 100644 dist/components/output-area.d.ts delete mode 100644 dist/components/result-view/display.d.ts delete mode 100644 dist/components/result-view/history.d.ts delete mode 100644 dist/components/result-view/index.d.ts delete mode 100644 dist/components/result-view/list.d.ts delete mode 100644 dist/components/result-view/markdown.d.ts delete mode 100644 dist/components/result-view/plotly.d.ts delete mode 100644 dist/components/result-view/result-view.d.ts delete mode 100644 dist/components/result-view/status.d.ts delete mode 100644 dist/components/watch-sidebar/index.d.ts delete mode 100644 dist/components/watch-sidebar/watch.d.ts delete mode 100644 dist/config.d.ts delete mode 100644 dist/existing-kernel-picker.d.ts delete mode 100644 dist/export-notebook.d.ts delete mode 100644 dist/hydrogen.d.ts delete mode 100644 dist/import-notebook.d.ts delete mode 100644 dist/input-view.d.ts delete mode 100644 dist/kernel-manager.d.ts delete mode 100644 dist/kernel-picker.d.ts delete mode 100644 dist/kernel-transport.d.ts delete mode 100644 dist/kernel.d.ts delete mode 100644 dist/main.d.ts delete mode 100644 dist/panes/inspector.d.ts delete mode 100644 dist/panes/kernel-monitor.d.ts delete mode 100644 dist/panes/output-area.d.ts delete mode 100644 dist/panes/watches.d.ts delete mode 100644 dist/plugin-api/hydrogen-kernel.d.ts delete mode 100644 dist/plugin-api/hydrogen-provider.d.ts delete mode 100644 dist/plugin-api/hydrogen-types.d.ts delete mode 100644 dist/result.d.ts delete mode 100644 dist/services/consumed/autocomplete.d.ts delete mode 100644 dist/services/consumed/index.d.ts delete mode 100644 dist/services/consumed/status-bar/index.d.ts delete mode 100644 dist/services/consumed/status-bar/signal-list-view.d.ts delete mode 100644 dist/services/consumed/status-bar/status-bar-component.d.ts delete mode 100644 dist/services/consumed/status-bar/status-bar.d.ts delete mode 100644 dist/services/index.d.ts delete mode 100644 dist/services/provided/autocomplete.d.ts delete mode 100644 dist/services/provided/index.d.ts delete mode 100644 dist/store/index.d.ts delete mode 100644 dist/store/markers.d.ts delete mode 100644 dist/store/output.d.ts delete mode 100644 dist/store/watch.d.ts delete mode 100644 dist/store/watches.d.ts delete mode 100644 dist/tsconfig.tsbuildinfo delete mode 100644 dist/utils.d.ts delete mode 100644 dist/ws-kernel-picker.d.ts delete mode 100644 dist/ws-kernel.d.ts delete mode 100644 dist/zmq-kernel.d.ts diff --git a/dist/code-manager.d.ts b/dist/code-manager.d.ts deleted file mode 100644 index fab70f96d..000000000 --- a/dist/code-manager.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Point, Range, TextEditor } from "atom"; -import type { HydrogenCellType } from "./hydrogen"; -export declare function normalizeString(code: string | null | undefined): string; -export declare function getRow(editor: TextEditor, row: number): string; -export declare function getTextInRange(editor: TextEditor, start: Point, end: Point): string; -export declare function getRows(editor: TextEditor, startRow: number, endRow: number): string; -export declare function getMetadataForRow(editor: TextEditor, anyPointInCell: Point): HydrogenCellType; -export declare function removeCommentsMarkdownCell(editor: TextEditor, text: string): string; -export declare function getSelectedText(editor: TextEditor): string; -export declare function isComment(editor: TextEditor, position: Point): boolean; -export declare function isBlank(editor: TextEditor, row: number): boolean; -export declare function escapeBlankRows(editor: TextEditor, startRow: number, endRow: number): number; -export declare function getFoldRange(editor: TextEditor, row: number): any; -export declare function getFoldContents(editor: TextEditor, row: number): { - code: string; - row: any; -}; -export declare function getCodeToInspect(editor: TextEditor): any[]; -export declare function getCommentStartString(editor: TextEditor): string | null | undefined; -export declare function getRegexString(editor: TextEditor): string; -export declare function getBreakpoints(editor: TextEditor): any[]; -export declare function getCurrentCell(editor: TextEditor): Range; -export declare function getCells(editor: TextEditor, breakpoints?: Array): Range[]; -export declare function getCellsForBreakPoints(editor: TextEditor, breakpoints: Array): Array; -export declare function moveDown(editor: TextEditor, row: number): void; -export declare function findPrecedingBlock(editor: TextEditor, row: number, indentLevel: number): { - code: string; - row: number; -}; -export declare function findCodeBlock(editor: TextEditor): { - code: string; - row: any; -}; -export declare function foldCurrentCell(editor: TextEditor): void; -export declare function foldAllButCurrentCell(editor: TextEditor): void; -export declare function getEscapeBlankRowsEndRow(editor: TextEditor, end: Point): number; diff --git a/dist/code-manager.js b/dist/code-manager.js index 3a6109419..9e1a868f4 100644 --- a/dist/code-manager.js +++ b/dist/code-manager.js @@ -7,7 +7,7 @@ exports.getEscapeBlankRowsEndRow = exports.foldAllButCurrentCell = exports.foldC const atom_1 = require("atom"); const escape_string_regexp_1 = __importDefault(require("escape-string-regexp")); const strip_indent_1 = __importDefault(require("strip-indent")); -const lodash_1 = __importDefault(require("lodash")); +const compact_1 = __importDefault(require("lodash/compact")); const utils_1 = require("./utils"); function normalizeString(code) { if (code) { @@ -76,7 +76,7 @@ function removeCommentsMarkdownCell(editor, text) { } const lines = text.split("\n"); const editedLines = []; - lodash_1.default.forEach(lines, (line) => { + lines.forEach((line) => { if (line.startsWith(commentStartString)) { editedLines.push(line.slice(commentStartString.length)); } @@ -94,7 +94,7 @@ exports.getSelectedText = getSelectedText; function isComment(editor, position) { const scope = editor.scopeDescriptorForBufferPosition(position); const scopeString = scope.getScopeChain(); - return lodash_1.default.includes(scopeString, "comment.line"); + return scopeString.includes("comment.line"); } exports.isComment = isComment; function isBlank(editor, row) { @@ -221,7 +221,7 @@ function isEmbeddedCode(editor, referenceScope, row) { const scopes = editor .scopeDescriptorForBufferPosition(new atom_1.Point(row, 0)) .getScopesArray(); - return lodash_1.default.includes(scopes, referenceScope); + return scopes.includes(referenceScope); } function getCurrentFencedCodeBlock(editor) { const buffer = editor.getBuffer(); @@ -264,7 +264,7 @@ function getCellsForBreakPoints(editor, breakpoints) { start = new atom_1.Point(match.range.start.row, 0); match.stop(); }); - return lodash_1.default.compact(lodash_1.default.map(breakpoints, (end) => { + return compact_1.default(breakpoints.map((end) => { const cell = end.isEqual(start) ? null : new atom_1.Range(start, end); start = new atom_1.Point(end.row + 1, 0); return cell; @@ -409,4 +409,4 @@ function getEscapeBlankRowsEndRow(editor, end) { return end.row === editor.getLastBufferRow() ? end.row : end.row - 1; } exports.getEscapeBlankRowsEndRow = getEscapeBlankRowsEndRow; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2NvZGUtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQkFBZ0Q7QUFDaEQsZ0ZBQXNEO0FBQ3RELGdFQUF1QztBQUN2QyxvREFBdUI7QUFDdkIsbUNBTWlCO0FBR2pCLFNBQWdCLGVBQWUsQ0FBQyxJQUErQjtJQUM3RCxJQUFJLElBQUksRUFBRTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDdkM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFORCwwQ0FNQztBQUNELFNBQWdCLE1BQU0sQ0FBQyxNQUFrQixFQUFFLEdBQVc7SUFDcEQsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHdCQUVDO0FBQ0QsU0FBZ0IsY0FBYyxDQUFDLE1BQWtCLEVBQUUsS0FBWSxFQUFFLEdBQVU7SUFDekUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkQsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUhELHdDQUdDO0FBQ0QsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsUUFBZ0IsRUFBRSxNQUFjO0lBQzFFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztRQUN2QyxLQUFLLEVBQUU7WUFDTCxHQUFHLEVBQUUsUUFBUTtZQUNiLE1BQU0sRUFBRSxDQUFDO1NBQ1Y7UUFDRCxHQUFHLEVBQUU7WUFDSCxHQUFHLEVBQUUsTUFBTTtZQUNYLE1BQU0sRUFBRSxPQUFPO1NBQ2hCO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENB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O0lBQzVELE9BQU8sSUFBSSxZQUFLLENBQ2QsSUFBSSxZQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUMvQixJQUFJLFlBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQzVCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsTUFBa0IsRUFBRSxHQUFVO0lBQ3JFLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUZELDREQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIFJhbmdlLCBUZXh0RWRpdG9yIH0gZnJvbSBcImF0b21cIjtcbmltcG9ydCBlc2NhcGVTdHJpbmdSZWdleHAgZnJvbSBcImVzY2FwZS1zdHJpbmctcmVnZXhwXCI7XG5pbXBvcnQgc3RyaXBJbmRlbnQgZnJvbSBcInN0cmlwLWluZGVudFwiO1xuaW1wb3J0IF8gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtcbiAgbG9nLFxuICBpc011bHRpbGFuZ3VhZ2VHcmFtbWFyLFxuICBnZXRFbWJlZGRlZFNjb3BlLFxuICByb3dSYW5nZUZvckNvZGVGb2xkQXRCdWZmZXJSb3csXG4gIGpzX2lkeF90b19jaGFyX2lkeCxcbn0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSHlkcm9nZW5DZWxsVHlwZSB9IGZyb20gXCIuL2h5ZHJvZ2VuXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTdHJpbmcoY29kZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICBpZiAoY29kZSkge1xuICAgIHJldHVybiBjb2RlLnJlcGxhY2UoL1xcclxcbnxcXHIvZywgXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3coZWRpdG9yOiBUZXh0RWRpdG9yLCByb3c6IG51bWJlcikge1xuICByZXR1cm4gbm9ybWFsaXplU3RyaW5nKGVkaXRvci5saW5lVGV4dEZvckJ1ZmZlclJvdyhyb3cpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0SW5SYW5nZShlZGl0b3I6IFRleHRFZGl0b3IsIHN0YXJ0OiBQb2ludCwgZW5kOiBQb2ludCkge1xuICBjb25zdCBjb2RlID0gZWRpdG9yLmdldFRleHRJbkJ1ZmZlclJhbmdlKFtzdGFydCwgZW5kXSk7XG4gIHJldHVybiBub3JtYWxpemVTdHJpbmcoY29kZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Um93cyhlZGl0b3I6IFRleHRFZGl0b3IsIHN0YXJ0Um93OiBudW1iZXIsIGVuZFJvdzogbnVtYmVyKSB7XG4gIGNvbnN0IGNvZGUgPSBlZGl0b3IuZ2V0VGV4dEluQnVmZmVyUmFuZ2Uoe1xuICAgIHN0YXJ0OiB7XG4gICAgICByb3c6IHN0YXJ0Um93LFxuICAgICAgY29sdW1uOiAwLFxuICAgIH0sXG4gICAgZW5kOiB7XG4gICAgICByb3c6IGVuZFJvdyxcbiAgICAgIGNvbHVtbjogOTk5OTk5OSxcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIG5vcm1hbGl6ZVN0cmluZyhjb2RlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhZGF0YUZvclJvdyhcbiAgZWRpdG9yOiBUZXh0RWRpdG9yLFxuICBhbnlQb2ludEluQ2VsbDogUG9pbnRcbik6IEh5ZHJvZ2VuQ2VsbFR5cGUge1xuICBpZiAoaXNNdWx0aWxhbmd1YWdlR3JhbW1hcihlZGl0b3IuZ2V0R3JhbW1hcigpKSkge1xuICAgIHJldHVybiBcImNvZGVjZWxsXCI7XG4gIH1cblxuICBsZXQgY2VsbFR5cGU6IEh5ZHJvZ2VuQ2VsbFR5cGUgPSBcImNvZGVjZWxsXCI7XG4gIGNvbnN0IGJ1ZmZlciA9IGVkaXRvci5nZXRCdWZmZXIoKTtcbiAgYW55UG9pbnRJbkNlbGwgPSBuZXcgUG9pbnQoXG4gICAgYW55UG9pbnRJbkNlbGwucm93LFxuICAgIGJ1ZmZlci5saW5lTGVuZ3RoRm9yUm93KGFueVBvaW50SW5DZWxsLnJvdylcbiAgKTtcbiAgY29uc3QgcmVnZXhTdHJpbmcgPSBnZXRSZWdleFN0cmluZyhlZGl0b3IpO1xuXG4gIGlmIChyZWdleFN0cmluZykge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChyZWdleFN0cmluZyk7XG4gICAgYnVmZmVyLmJhY2t3YXJkc1NjYW5JblJhbmdlKFxuICAgICAgcmVnZXgsXG4gICAgICBuZXcgUmFuZ2UobmV3IFBvaW50KDAsIDApLCBhbnlQb2ludEluQ2VsbCksXG4gICAgICAoeyBtYXRjaCB9KSA9PiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbWF0Y2gubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAobWF0Y2hbaV0pIHtcbiAgICAgICAgICAgIHN3aXRjaCAobWF0Y2hbaV0pIHtcbiAgICAgICAgICAgICAgY2FzZSBcIm1kXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJtYXJrZG93blwiOlxuICAgICAgICAgICAgICAgIGNlbGxUeXBlID0gXCJtYXJrZG93blwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgXCJjb2RlY2VsbFwiOlxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNlbGxUeXBlID0gXCJjb2RlY2VsbFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gY2VsbFR5cGU7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ29tbWVudHNNYXJrZG93bkNlbGwoXG4gIGVkaXRvcjogVGV4dEVkaXRvcixcbiAgdGV4dDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBjb21tZW50U3RhcnRTdHJpbmcgPSBnZXRDb21tZW50U3RhcnRTdHJpbmcoZWRpdG9yKTtcbiAgaWYgKCFjb21tZW50U3RhcnRTdHJpbmcpIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IGVkaXRlZExpbmVzID0gW107XG5cbiAgXy5mb3JFYWNoKGxpbmVzLCAobGluZSkgPT4ge1xuICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoY29tbWVudFN0YXJ0U3RyaW5nKSkge1xuICAgICAgLy8gUmVtb3ZlIGNvbW1lbnQgZnJvbSBzdGFydCBvZiBsaW5lXG4gICAgICBlZGl0ZWRMaW5lcy5wdXNoKGxpbmUuc2xpY2UoY29tbWVudFN0YXJ0U3RyaW5nLmxlbmd0aCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlZGl0ZWRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHN0cmlwSW5kZW50KGVkaXRlZExpbmVzLmpvaW4oXCJcXG5cIikpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGVkVGV4dChlZGl0b3I6IFRleHRFZGl0b3IpIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVN0cmluZyhlZGl0b3IuZ2V0U2VsZWN0ZWRUZXh0KCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tbWVudChlZGl0b3I6IFRleHRFZGl0b3IsIHBvc2l0aW9uOiBQb2ludCkge1xuICBjb25zdCBzY29wZSA9IGVkaXRvci5zY29wZURlc2NyaXB0b3JGb3JCdWZmZXJQb3NpdGlvbihwb3NpdGlvbik7XG4gIGNvbnN0IHNjb3BlU3RyaW5nID0gc2NvcGUuZ2V0U2NvcGVDaGFpbigpO1xuICByZXR1cm4gXy5pbmNsdWRlcyhzY29wZVN0cmluZywgXCJjb21tZW50LmxpbmVcIik7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCbGFuayhlZGl0b3I6IFRleHRFZGl0b3IsIHJvdzogbnVtYmVyKSB7XG4gIHJldHVybiBlZGl0b3IuZ2V0QnVmZmVyKCkuaXNSb3dCbGFuayhyb3cpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUJsYW5rUm93cyhcbiAgZWRpdG9yOiBUZXh0RWRpdG9yLFxuICBzdGFydFJvdzogbnVtYmVyLFxuICBlbmRSb3c6IG51bWJlclxuKSB7XG4gIHdoaWxlIChlbmRSb3cgPiBzdGFydFJvdykge1xuICAgIGlmICghaXNCbGFuayhlZGl0b3IsIGVuZFJvdykpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBlbmRSb3cgLT0gMTtcbiAgfVxuXG4gIHJldHVybiBlbmRSb3c7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZFJhbmdlKGVkaXRvcjogVGV4dEVkaXRvciwgcm93OiBudW1iZXIpIHtcbiAgY29uc3QgcmFuZ2UgPSByb3dSYW5nZUZvckNvZGVGb2xkQXRCdWZmZXJSb3coZWRpdG9yLCByb3cpO1xuICBpZiAoIXJhbmdlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKFxuICAgIHJhbmdlWzFdIDwgZWRpdG9yLmdldExhc3RCdWZmZXJSb3coKSAmJlxuICAgIGdldFJvdyhlZGl0b3IsIHJhbmdlWzFdICsgMSkgPT09IFwiZW5kXCJcbiAgKSB7XG4gICAgcmFuZ2VbMV0gKz0gMTtcbiAgfVxuXG4gIGxvZyhcImdldEZvbGRSYW5nZTpcIiwgcmFuZ2UpO1xuICByZXR1cm4gcmFuZ2U7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZENvbnRlbnRzKGVkaXRvcjogVGV4dEVkaXRvciwgcm93OiBudW1iZXIpIHtcbiAgY29uc3QgcmFuZ2UgPSBnZXRGb2xkUmFuZ2UoZWRpdG9yLCByb3cpO1xuICBpZiAoIXJhbmdlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJldHVybiB7XG4gICAgY29kZTogZ2V0Um93cyhlZGl0b3IsIHJhbmdlWzBdLCByYW5nZVsxXSksXG4gICAgcm93OiByYW5nZVsxXSxcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2RlVG9JbnNwZWN0KGVkaXRvcjogVGV4dEVkaXRvcikge1xuICBjb25zdCBzZWxlY3RlZFRleHQgPSBnZXRTZWxlY3RlZFRleHQoZWRpdG9yKTtcbiAgbGV0IGNvZGU7XG4gIGxldCBjdXJzb3JQb3NpdGlvbjtcblxuICBpZiAoc2VsZWN0ZWRUZXh0KSB7XG4gICAgY29kZSA9IHNlbGVjdGVkVGV4dDtcbiAgICBjdXJzb3JQb3NpdGlvbiA9IGNvZGUubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGN1cnNvciA9IGVkaXRvci5nZXRMYXN0Q3Vyc29yKCk7XG4gICAgY29uc3Qgcm93ID0gY3Vyc29yLmdldEJ1ZmZlclJvdygpO1xuICAgIGNvZGUgPSBnZXRSb3coZWRpdG9yLCByb3cpO1xuICAgIGN1cnNvclBvc2l0aW9uID0gY3Vyc29yLmdldEJ1ZmZlckNvbHVtbigpO1xuICAgIC8vIFRPRE86IHVzZSBrZXJuZWwuY29tcGxldGUgdG8gZmluZCBhIHNlbGVjdGlvblxuICAgIGNvbnN0IGlkZW50aWZpZXJFbmQgPSBjb2RlID8gY29kZS5zbGljZShjdXJzb3JQb3NpdGlvbikuc2VhcmNoKC9cXFcvKSA6IC0xO1xuXG4gICAgaWYgKGlkZW50aWZpZXJFbmQgIT09IC0xKSB7XG4gICAgICBjdXJzb3JQb3NpdGlvbiArPSBpZGVudGlmaWVyRW5kO1xuICAgIH1cbiAgfVxuXG4gIGN1cnNvclBvc2l0aW9uID0ganNfaWR4X3RvX2NoYXJfaWR4KGN1cnNvclBvc2l0aW9uLCBjb2RlKTtcbiAgcmV0dXJuIFtjb2RlLCBjdXJzb3JQb3NpdGlvbl07XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbWVudFN0YXJ0U3RyaW5nKFxuICBlZGl0b3I6IFRleHRFZGl0b3Jcbik6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xuICBjb25zdCB7XG4gICAgY29tbWVudFN0YXJ0U3RyaW5nLCAvLyAkRmxvd0ZpeE1lOiBUaGlzIGlzIGFuIHVub2ZmaWNpYWwgQVBJXG4gIH0gPSBlZGl0b3IudG9rZW5pemVkQnVmZmVyLmNvbW1lbnRTdHJpbmdzRm9yUG9zaXRpb24oXG4gICAgZWRpdG9yLmdldEN1cnNvckJ1ZmZlclBvc2l0aW9uKClcbiAgKTtcblxuICBpZiAoIWNvbW1lbnRTdGFydFN0cmluZykge1xuICAgIGxvZyhcIkNlbGxNYW5hZ2VyOiBObyBjb21tZW50IHN0cmluZyBkZWZpbmVkIGluIHJvb3Qgc2NvcGVcIik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gY29tbWVudFN0YXJ0U3RyaW5nLnRyaW1SaWdodCgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZ2V4U3RyaW5nKGVkaXRvcjogVGV4dEVkaXRvcikge1xuICBjb25zdCBjb21tZW50U3RhcnRTdHJpbmcgPSBnZXRDb21tZW50U3RhcnRTdHJpbmcoZWRpdG9yKTtcbiAgaWYgKCFjb21tZW50U3RhcnRTdHJpbmcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBlc2NhcGVkQ29tbWVudFN0YXJ0U3RyaW5nID0gZXNjYXBlU3RyaW5nUmVnZXhwKGNvbW1lbnRTdGFydFN0cmluZyk7XG4gIGNvbnN0IHJlZ2V4U3RyaW5nID0gYCR7ZXNjYXBlZENvbW1lbnRTdGFydFN0cmluZ30gKiUlICoobWR8bWFya2Rvd24pP3wgKjwoY29kZWNlbGx8bWR8bWFya2Rvd24pPnwgKihJblxcW1swLTkgXSpcXF0pYDtcbiAgcmV0dXJuIHJlZ2V4U3RyaW5nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEJyZWFrcG9pbnRzKGVkaXRvcjogVGV4dEVkaXRvcikge1xuICBjb25zdCBidWZmZXIgPSBlZGl0b3IuZ2V0QnVmZmVyKCk7XG4gIGNvbnN0IGJyZWFrcG9pbnRzID0gW107XG4gIGNvbnN0IHJlZ2V4U3RyaW5nID0gZ2V0UmVnZXhTdHJpbmcoZWRpdG9yKTtcblxuICBpZiAocmVnZXhTdHJpbmcpIHtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAocmVnZXhTdHJpbmcsIFwiZ1wiKTtcbiAgICBidWZmZXIuc2NhbihyZWdleCwgKHsgcmFuZ2UgfSkgPT4ge1xuICAgICAgaWYgKGlzQ29tbWVudChlZGl0b3IsIHJhbmdlLnN0YXJ0KSkge1xuICAgICAgICBicmVha3BvaW50cy5wdXNoKHJhbmdlLnN0YXJ0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGJyZWFrcG9pbnRzLnB1c2goYnVmZmVyLmdldEVuZFBvc2l0aW9uKCkpO1xuICBsb2coXCJDZWxsTWFuYWdlcjogQnJlYWtwb2ludHM6XCIsIGJyZWFrcG9pbnRzKTtcbiAgcmV0dXJuIGJyZWFrcG9pbnRzO1xufVxuXG5mdW5jdGlvbiBnZXRDZWxsKGVkaXRvcjogVGV4dEVkaXRvciwgYW55UG9pbnRJbkNlbGw/OiBQb2ludCkge1xuICBpZiAoIWFueVBvaW50SW5DZWxsKSB7XG4gICAgYW55UG9pbnRJbkNlbGwgPSBlZGl0b3IuZ2V0Q3Vyc29yQnVmZmVyUG9zaXRpb24oKTtcbiAgfVxuXG4gIGNvbnN0IGJ1ZmZlciA9IGVkaXRvci5nZXRCdWZmZXIoKTtcbiAgYW55UG9pbnRJbkNlbGwgPSBuZXcgUG9pbnQoXG4gICAgYW55UG9pbnRJbkNlbGwucm93LFxuICAgIGJ1ZmZlci5saW5lTGVuZ3RoRm9yUm93KGFueVBvaW50SW5DZWxsLnJvdylcbiAgKTtcbiAgbGV0IHN0YXJ0ID0gbmV3IFBvaW50KDAsIDApO1xuICBsZXQgZW5kID0gYnVmZmVyLmdldEVuZFBvc2l0aW9uKCk7XG4gIGNvbnN0IHJlZ2V4U3RyaW5nID0gZ2V0UmVnZXhTdHJpbmcoZWRpdG9yKTtcblxuICBpZiAoIXJlZ2V4U3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBSYW5nZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChyZWdleFN0cmluZyk7XG5cbiAgaWYgKGFueVBvaW50SW5DZWxsLnJvdyA+PSAwKSB7XG4gICAgYnVmZmVyLmJhY2t3YXJkc1NjYW5JblJhbmdlKFxuICAgICAgcmVnZXgsXG4gICAgICBuZXcgUmFuZ2Uoc3RhcnQsIGFueVBvaW50SW5DZWxsKSxcbiAgICAgICh7IHJhbmdlIH0pID0+IHtcbiAgICAgICAgc3RhcnQgPSBuZXcgUG9pbnQocmFuZ2Uuc3RhcnQucm93ICsgMSwgMCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGJ1ZmZlci5zY2FuSW5SYW5nZShyZWdleCwgbmV3IFJhbmdlKGFueVBvaW50SW5DZWxsLCBlbmQpLCAoeyByYW5nZSB9KSA9PiB7XG4gICAgZW5kID0gcmFuZ2Uuc3RhcnQ7XG4gIH0pO1xuICBsb2coXG4gICAgXCJDZWxsTWFuYWdlcjogQ2VsbCBbc3RhcnQsIGVuZF06XCIsXG4gICAgW3N0YXJ0LCBlbmRdLFxuICAgIFwiYW55UG9pbnRJbkNlbGw6XCIsXG4gICAgYW55UG9pbnRJbkNlbGxcbiAgKTtcbiAgcmV0dXJuIG5ldyBSYW5nZShzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gaXNFbWJlZGRlZENvZGUoXG4gIGVkaXRvcjogVGV4dEVkaXRvcixcbiAgcmVmZXJlbmNlU2NvcGU6IHN0cmluZyxcbiAgcm93OiBudW1iZXJcbikge1xuICBjb25zdCBzY29wZXMgPSBlZGl0b3JcbiAgICAuc2NvcGVEZXNjcmlwdG9yRm9yQnVmZmVyUG9zaXRpb24obmV3IFBvaW50KHJvdywgMCkpXG4gICAgLmdldFNjb3Blc0FycmF5KCk7XG4gIHJldHVybiBfLmluY2x1ZGVzKHNjb3BlcywgcmVmZXJlbmNlU2NvcGUpO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmVuY2VkQ29kZUJsb2NrKGVkaXRvcjogVGV4dEVkaXRvcikge1xuICBjb25zdCBidWZmZXIgPSBlZGl0b3IuZ2V0QnVmZmVyKCk7XG4gIGNvbnN0IHsgcm93OiBidWZmZXJFbmRSb3cgfSA9IGJ1ZmZlci5nZXRFbmRQb3NpdGlvbigpO1xuICBjb25zdCBjdXJzb3IgPSBlZGl0b3IuZ2V0Q3Vyc29yQnVmZmVyUG9zaXRpb24oKTtcbiAgbGV0IHN0YXJ0ID0gY3Vyc29yLnJvdztcbiAgbGV0IGVuZCA9IGN1cnNvci5yb3c7XG4gIGNvbnN0IHNjb3BlID0gZ2V0RW1iZWRkZWRTY29wZShlZGl0b3IsIGN1cnNvcik7XG4gIGlmICghc2NvcGUpIHtcbiAgICByZXR1cm4gZ2V0Q2VsbChlZGl0b3IpO1xuICB9XG5cbiAgd2hpbGUgKHN0YXJ0ID4gMCAmJiBpc0VtYmVkZGVkQ29kZShlZGl0b3IsIHNjb3BlLCBzdGFydCAtIDEpKSB7XG4gICAgc3RhcnQgLT0gMTtcbiAgfVxuXG4gIHdoaWxlIChlbmQgPCBidWZmZXJFbmRSb3cgJiYgaXNFbWJlZGRlZENvZGUoZWRpdG9yLCBzY29wZSwgZW5kICsgMSkpIHtcbiAgICBlbmQgKz0gMTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmFuZ2UoW3N0YXJ0LCAwXSwgW2VuZCArIDEsIDBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRDZWxsKGVkaXRvcjogVGV4dEVkaXRvcikge1xuICBpZiAoaXNNdWx0aWxhbmd1YWdlR3JhbW1hcihlZGl0b3IuZ2V0R3JhbW1hcigpKSkge1xuICAgIHJldHVybiBnZXRDdXJyZW50RmVuY2VkQ29kZUJsb2NrKGVkaXRvcik7XG4gIH1cblxuICByZXR1cm4gZ2V0Q2VsbChlZGl0b3IpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbGxzKGVkaXRvcjogVGV4dEVkaXRvciwgYnJlYWtwb2ludHM6IEFycmF5PFBvaW50PiA9IFtdKSB7XG4gIGlmIChicmVha3BvaW50cy5sZW5ndGggIT09IDApIHtcbiAgICBicmVha3BvaW50cy5zb3J0KChhLCBiKSA9PiBhLmNvbXBhcmUoYikpO1xuICB9IGVsc2Uge1xuICAgIGJyZWFrcG9pbnRzID0gZ2V0QnJlYWtwb2ludHMoZWRpdG9yKTtcbiAgfVxuXG4gIHJldHVybiBnZXRDZWxsc0ZvckJyZWFrUG9pbnRzKGVkaXRvciwgYnJlYWtwb2ludHMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbGxzRm9yQnJlYWtQb2ludHMoXG4gIGVkaXRvcjogVGV4dEVkaXRvcixcbiAgYnJlYWtwb2ludHM6IEFycmF5PFBvaW50PlxuKTogQXJyYXk8UmFuZ2U+IHtcbiAgbGV0IHN0YXJ0ID0gbmV3IFBvaW50KDAsIDApO1xuICAvLyBMZXQgc3RhcnQgYmUgZWFybGllc3Qgcm93IHdpdGggdGV4dFxuICBlZGl0b3Iuc2NhbigvXFxTLywgKG1hdGNoKSA9PiB7XG4gICAgc3RhcnQgPSBuZXcgUG9pbnQobWF0Y2gucmFuZ2Uuc3RhcnQucm93LCAwKTtcbiAgICBtYXRjaC5zdG9wKCk7XG4gIH0pO1xuICByZXR1cm4gXy5jb21wYWN0KFxuICAgIF8ubWFwKGJyZWFrcG9pbnRzLCAoZW5kKSA9PiB7XG4gICAgICBjb25zdCBjZWxsID0gZW5kLmlzRXF1YWwoc3RhcnQpID8gbnVsbCA6IG5ldyBSYW5nZShzdGFydCwgZW5kKTtcbiAgICAgIHN0YXJ0ID0gbmV3IFBvaW50KGVuZC5yb3cgKyAxLCAwKTtcbiAgICAgIHJldHVybiBjZWxsO1xuICAgIH0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNlbnRlclNjcmVlbk9uQ3Vyc29yUG9zaXRpb24oZWRpdG9yOiBUZXh0RWRpdG9yKSB7XG4gIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gZWRpdG9yLmVsZW1lbnQucGl4ZWxQb3NpdGlvbkZvclNjcmVlblBvc2l0aW9uKFxuICAgIGVkaXRvci5nZXRDdXJzb3JTY3JlZW5Qb3NpdGlvbigpXG4gICkudG9wO1xuICBjb25zdCBlZGl0b3JIZWlnaHQgPSBlZGl0b3IuZWxlbWVudC5nZXRIZWlnaHQoKTtcbiAgZWRpdG9yLmVsZW1lbnQuc2V0U2Nyb2xsVG9wKGN1cnNvclBvc2l0aW9uIC0gZWRpdG9ySGVpZ2h0IC8gMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlRG93bihlZGl0b3I6IFRleHRFZGl0b3IsIHJvdzogbnVtYmVyKSB7XG4gIGNvbnN0IGxhc3RSb3cgPSBlZGl0b3IuZ2V0TGFzdEJ1ZmZlclJvdygpO1xuXG4gIGlmIChyb3cgPj0gbGFzdFJvdykge1xuICAgIGVkaXRvci5tb3ZlVG9Cb3R0b20oKTtcbiAgICBlZGl0b3IuaW5zZXJ0TmV3bGluZSgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdoaWxlIChyb3cgPCBsYXN0Um93KSB7XG4gICAgcm93ICs9IDE7XG4gICAgaWYgKCFpc0JsYW5rKGVkaXRvciwgcm93KSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZWRpdG9yLnNldEN1cnNvckJ1ZmZlclBvc2l0aW9uKHtcbiAgICByb3csXG4gICAgY29sdW1uOiAwLFxuICB9KTtcbiAgYXRvbS5jb25maWcuZ2V0KFwiSHlkcm9nZW4uY2VudGVyT25Nb3ZlRG93blwiKSAmJlxuICAgIGNlbnRlclNjcmVlbk9uQ3Vyc29yUG9zaXRpb24oZWRpdG9yKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJlY2VkaW5nQmxvY2soXG4gIGVkaXRvcjogVGV4dEVkaXRvcixcbiAgcm93OiBudW1iZXIsXG4gIGluZGVudExldmVsOiBudW1iZXJcbikge1xuICBsZXQgcHJldmlvdXNSb3cgPSByb3cgLSAxO1xuXG4gIHdoaWxlIChwcmV2aW91c1JvdyA+PSAwKSB7XG4gICAgY29uc3QgcHJldmlvdXNJbmRlbnRMZXZlbCA9IGVkaXRvci5pbmRlbnRhdGlvbkZvckJ1ZmZlclJvdyhwcmV2aW91c1Jvdyk7XG4gICAgY29uc3Qgc2FtZUluZGVudCA9IHByZXZpb3VzSW5kZW50TGV2ZWwgPD0gaW5kZW50TGV2ZWw7XG4gICAgY29uc3QgYmxhbmsgPSBpc0JsYW5rKGVkaXRvciwgcHJldmlvdXNSb3cpO1xuICAgIGNvbnN0IGlzRW5kID0gZ2V0Um93KGVkaXRvciwgcHJldmlvdXNSb3cpID09PSBcImVuZFwiO1xuXG4gICAgaWYgKGlzQmxhbmsoZWRpdG9yLCByb3cpKSB7XG4gICAgICByb3cgPSBwcmV2aW91c1JvdztcbiAgICB9XG5cbiAgICBpZiAoc2FtZUluZGVudCAmJiAhYmxhbmsgJiYgIWlzRW5kKSB7XG4gICAgICBjb25zdCBjZWxsID0gZ2V0Q2VsbChlZGl0b3IsIG5ldyBQb2ludChyb3csIDApKTtcblxuICAgICAgaWYgKGNlbGwuc3RhcnQucm93ID4gcm93KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29kZTogXCJcIixcbiAgICAgICAgICByb3csXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGdldFJvd3MoZWRpdG9yLCBwcmV2aW91c1Jvdywgcm93KSxcbiAgICAgICAgcm93LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcmV2aW91c1JvdyAtPSAxO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gZmluZENvZGVCbG9jayhlZGl0b3I6IFRleHRFZGl0b3IpIHtcbiAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gZ2V0U2VsZWN0ZWRUZXh0KGVkaXRvcik7XG5cbiAgaWYgKHNlbGVjdGVkVGV4dCkge1xuICAgIGNvbnN0IHNlbGVjdGVkUmFuZ2UgPSBlZGl0b3IuZ2V0U2VsZWN0ZWRCdWZmZXJSYW5nZSgpO1xuICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGVkaXRvciwgc2VsZWN0ZWRSYW5nZS5lbmQpO1xuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBjZWxsLnN0YXJ0LmlzR3JlYXRlclRoYW4oc2VsZWN0ZWRSYW5nZS5zdGFydClcbiAgICAgID8gY2VsbC5zdGFydFxuICAgICAgOiBzZWxlY3RlZFJhbmdlLnN0YXJ0O1xuICAgIGxldCBlbmRSb3cgPSBzZWxlY3RlZFJhbmdlLmVuZC5yb3c7XG5cbiAgICBpZiAoc2VsZWN0ZWRSYW5nZS5lbmQuY29sdW1uID09PSAwKSB7XG4gICAgICBlbmRSb3cgLT0gMTtcbiAgICB9XG5cbiAgICBlbmRSb3cgPSBlc2NhcGVCbGFua1Jvd3MoZWRpdG9yLCBzdGFydFBvaW50LnJvdywgZW5kUm93KTtcblxuICAgIGlmIChzdGFydFBvaW50LmlzR3JlYXRlclRoYW5PckVxdWFsKHNlbGVjdGVkUmFuZ2UuZW5kKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29kZTogXCJcIixcbiAgICAgICAgcm93OiBlbmRSb3csXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiBnZXRUZXh0SW5SYW5nZShlZGl0b3IsIHN0YXJ0UG9pbnQsIHNlbGVjdGVkUmFuZ2UuZW5kKSxcbiAgICAgIHJvdzogZW5kUm93LFxuICAgIH07XG4gIH1cblxuICBjb25zdCBjdXJzb3IgPSBlZGl0b3IuZ2V0TGFzdEN1cnNvcigpO1xuICBjb25zdCByb3cgPSBjdXJzb3IuZ2V0QnVmZmVyUm93KCk7XG4gIGxvZyhcImZpbmRDb2RlQmxvY2s6XCIsIHJvdyk7XG4gIGNvbnN0IGluZGVudExldmVsID0gY3Vyc29yLmdldEluZGVudExldmVsKCk7XG4gIGxldCBmb2xkYWJsZSA9IGVkaXRvci5pc0ZvbGRhYmxlQXRCdWZmZXJSb3cocm93KTtcbiAgY29uc3QgZm9sZFJhbmdlID0gcm93UmFuZ2VGb3JDb2RlRm9sZEF0QnVmZmVyUm93KGVkaXRvciwgcm93KTtcblxuICBpZiAoIWZvbGRSYW5nZSB8fCBmb2xkUmFuZ2VbMF0gPT0gbnVsbCB8fCBmb2xkUmFuZ2VbMV0gPT0gbnVsbCkge1xuICAgIGZvbGRhYmxlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoZm9sZGFibGUpIHtcbiAgICByZXR1cm4gZ2V0Rm9sZENvbnRlbnRzKGVkaXRvciwgcm93KTtcbiAgfVxuXG4gIGlmIChpc0JsYW5rKGVkaXRvciwgcm93KSB8fCBnZXRSb3coZWRpdG9yLCByb3cpID09PSBcImVuZFwiKSB7XG4gICAgcmV0dXJuIGZpbmRQcmVjZWRpbmdCbG9jayhlZGl0b3IsIHJvdywgaW5kZW50TGV2ZWwpO1xuICB9XG5cbiAgY29uc3QgY2VsbCA9IGdldENlbGwoZWRpdG9yLCBuZXcgUG9pbnQocm93LCAwKSk7XG5cbiAgaWYgKGNlbGwuc3RhcnQucm93ID4gcm93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IFwiXCIsXG4gICAgICByb3csXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY29kZTogZ2V0Um93KGVkaXRvciwgcm93KSxcbiAgICByb3csXG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gZm9sZEN1cnJlbnRDZWxsKGVkaXRvcjogVGV4dEVkaXRvcikge1xuICBjb25zdCBjZWxsUmFuZ2UgPSBnZXRDdXJyZW50Q2VsbChlZGl0b3IpO1xuICBjb25zdCBuZXdSYW5nZSA9IGFkanVzdENlbGxGb2xkUmFuZ2UoZWRpdG9yLCBjZWxsUmFuZ2UpO1xuICBlZGl0b3Iuc2V0U2VsZWN0ZWRCdWZmZXJSYW5nZShuZXdSYW5nZSk7XG4gIGVkaXRvci5nZXRTZWxlY3Rpb25zKClbMF0uZm9sZCgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvbGRBbGxCdXRDdXJyZW50Q2VsbChlZGl0b3I6IFRleHRFZGl0b3IpIHtcbiAgY29uc3QgaW5pdGlhbFNlbGVjdGlvbnMgPSBlZGl0b3IuZ2V0U2VsZWN0ZWRCdWZmZXJSYW5nZXMoKTtcbiAgLy8gSSB0YWtlIC5zbGljZSgxKSBiZWNhdXNlIHRoZXJlJ3MgYWx3YXlzIGFuIGVtcHR5IGNlbGwgcmFuZ2UgZnJvbSBbMCwwXSB0b1xuICAvLyBbMCwwXVxuICBjb25zdCBhbGxDZWxsUmFuZ2VzID0gZ2V0Q2VsbHMoZWRpdG9yKS5zbGljZSgxKTtcbiAgY29uc3QgY3VycmVudENlbGxSYW5nZSA9IGdldEN1cnJlbnRDZWxsKGVkaXRvcik7XG4gIGNvbnN0IG5ld1JhbmdlcyA9IGFsbENlbGxSYW5nZXNcbiAgICAuZmlsdGVyKChjZWxsUmFuZ2UpID0+ICFjZWxsUmFuZ2UuaXNFcXVhbChjdXJyZW50Q2VsbFJhbmdlKSlcbiAgICAubWFwKChjZWxsUmFuZ2UpID0+IGFkanVzdENlbGxGb2xkUmFuZ2UoZWRpdG9yLCBjZWxsUmFuZ2UpKTtcbiAgZWRpdG9yLnNldFNlbGVjdGVkQnVmZmVyUmFuZ2VzKG5ld1Jhbmdlcyk7XG4gIGVkaXRvci5nZXRTZWxlY3Rpb25zKCkuZm9yRWFjaCgoc2VsZWN0aW9uKSA9PiBzZWxlY3Rpb24uZm9sZCgpKTtcbiAgLy8gUmVzdG9yZSBzZWxlY3Rpb25zXG4gIGVkaXRvci5zZXRTZWxlY3RlZEJ1ZmZlclJhbmdlcyhpbml0aWFsU2VsZWN0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGFkanVzdENlbGxGb2xkUmFuZ2UoZWRpdG9yOiBUZXh0RWRpdG9yLCByYW5nZTogUmFuZ2UpIHtcbiAgY29uc3Qgc3RhcnRSb3cgPSByYW5nZS5zdGFydC5yb3cgPiAwID8gcmFuZ2Uuc3RhcnQucm93IC0gMSA6IDA7XG4gIGNvbnN0IHN0YXJ0V2lkdGggPSBlZGl0b3IubGluZVRleHRGb3JCdWZmZXJSb3coc3RhcnRSb3cpLmxlbmd0aDtcbiAgY29uc3QgZW5kUm93ID1cbiAgICByYW5nZS5lbmQucm93ID09IGVkaXRvci5nZXRMYXN0QnVmZmVyUm93KClcbiAgICAgID8gcmFuZ2UuZW5kLnJvd1xuICAgICAgOiByYW5nZS5lbmQucm93IC0gMTtcbiAgY29uc3QgZW5kV2lkdGggPSBlZGl0b3IubGluZVRleHRGb3JCdWZmZXJSb3coZW5kUm93KS5sZW5ndGg7XG4gIHJldHVybiBuZXcgUmFuZ2UoXG4gICAgbmV3IFBvaW50KHN0YXJ0Um93LCBzdGFydFdpZHRoKSxcbiAgICBuZXcgUG9pbnQoZW5kUm93LCBlbmRXaWR0aClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVzY2FwZUJsYW5rUm93c0VuZFJvdyhlZGl0b3I6IFRleHRFZGl0b3IsIGVuZDogUG9pbnQpIHtcbiAgcmV0dXJuIGVuZC5yb3cgPT09IGVkaXRvci5nZXRMYXN0QnVmZmVyUm93KCkgPyBlbmQucm93IDogZW5kLnJvdyAtIDE7XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2NvZGUtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQkFBZ0Q7QUFDaEQsZ0ZBQXNEO0FBQ3RELGdFQUF1QztBQUN2Qyw2REFBcUM7QUFDckMsbUNBTWlCO0FBR2pCLFNBQWdCLGVBQWUsQ0FBQyxJQUErQjtJQUM3RCxJQUFJLElBQUksRUFBRTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDdkM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFORCwwQ0FNQztBQUNELFNBQWdCLE1BQU0sQ0FBQyxNQUFrQixFQUFFLEdBQVc7SUFDcEQsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHdCQUVDO0FBQ0QsU0FBZ0IsY0FBYyxDQUFDLE1BQWtCLEVBQUUsS0FBWSxFQUFFLEdBQVU7SUFDekUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkQsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUhELHdDQUdDO0FBQ0QsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsUUFBZ0IsRUFBRSxNQUFjO0lBQzFFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztRQUN2QyxLQUFLLEVBQUU7WUFDTCxHQUFHLEVBQUUsUUFBUTtZQUNiLE1BQU0sRUFBRSxDQUFDO1NBQ1Y7UUFDRCxHQUFHLEVBQUU7WUFDSCxHQUFHLEVBQUUsTUFBTTtZQUNYLE1BQU0sRUFBRSxPQUFPO1NBQ2hCO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENB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QVUsQ0FBQyxFQUMvQixJQUFJLFlBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQzVCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsTUFBa0IsRUFBRSxHQUFVO0lBQ3JFLE9BQU8sR0FBRyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUZELDREQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQsIFJhbmdlLCBUZXh0RWRpdG9yIH0gZnJvbSBcImF0b21cIjtcclxuaW1wb3J0IGVzY2FwZVN0cmluZ1JlZ2V4cCBmcm9tIFwiZXNjYXBlLXN0cmluZy1yZWdleHBcIjtcclxuaW1wb3J0IHN0cmlwSW5kZW50IGZyb20gXCJzdHJpcC1pbmRlbnRcIjtcclxuaW1wb3J0IGNvbXBhY3QgZnJvbSBcImxvZGFzaC9jb21wYWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgbG9nLFxyXG4gIGlzTXVsdGlsYW5ndWFnZUdyYW1tYXIsXHJcbiAgZ2V0RW1iZWRkZWRTY29wZSxcclxuICByb3dSYW5nZUZvckNvZGVGb2xkQXRCdWZmZXJSb3csXHJcbiAganNfaWR4X3RvX2NoYXJfaWR4LFxyXG59IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCB0eXBlIHsgSHlkcm9nZW5DZWxsVHlwZSB9IGZyb20gXCIuL2h5ZHJvZ2VuXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU3RyaW5nKGNvZGU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICBpZiAoY29kZSkge1xyXG4gICAgcmV0dXJuIGNvZGUucmVwbGFjZSgvXFxyXFxufFxcci9nLCBcIlxcblwiKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3coZWRpdG9yOiBUZXh0RWRpdG9yLCByb3c6IG51bWJlcikge1xyXG4gIHJldHVybiBub3JtYWxpemVTdHJpbmcoZWRpdG9yLmxpbmVUZXh0Rm9yQnVmZmVyUm93KHJvdykpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0SW5SYW5nZShlZGl0b3I6IFRleHRFZGl0b3IsIHN0YXJ0OiBQb2ludCwgZW5kOiBQb2ludCkge1xyXG4gIGNvbnN0IGNvZGUgPSBlZGl0b3IuZ2V0VGV4dEluQnVmZmVyUmFuZ2UoW3N0YXJ0LCBlbmRdKTtcclxuICByZXR1cm4gbm9ybWFsaXplU3RyaW5nKGNvZGUpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3dzKGVkaXRvcjogVGV4dEVkaXRvciwgc3RhcnRSb3c6IG51bWJlciwgZW5kUm93OiBudW1iZXIpIHtcclxuICBjb25zdCBjb2RlID0gZWRpdG9yLmdldFRleHRJbkJ1ZmZlclJhbmdlKHtcclxuICAgIHN0YXJ0OiB7XHJcbiAgICAgIHJvdzogc3RhcnRSb3csXHJcbiAgICAgIGNvbHVtbjogMCxcclxuICAgIH0sXHJcbiAgICBlbmQ6IHtcclxuICAgICAgcm93OiBlbmRSb3csXHJcbiAgICAgIGNvbHVtbjogOTk5OTk5OSxcclxuICAgIH0sXHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5vcm1hbGl6ZVN0cmluZyhjb2RlKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0YWRhdGFGb3JSb3coXHJcbiAgZWRpdG9yOiBUZXh0RWRpdG9yLFxyXG4gIGFueVBvaW50SW5DZWxsOiBQb2ludFxyXG4pOiBIeWRyb2dlbkNlbGxUeXBlIHtcclxuICBpZiAoaXNNdWx0aWxhbmd1YWdlR3JhbW1hcihlZGl0b3IuZ2V0R3JhbW1hcigpKSkge1xyXG4gICAgcmV0dXJuIFwiY29kZWNlbGxcIjtcclxuICB9XHJcblxyXG4gIGxldCBjZWxsVHlwZTogSHlkcm9nZW5DZWxsVHlwZSA9IFwiY29kZWNlbGxcIjtcclxuICBjb25zdCBidWZmZXIgPSBlZGl0b3IuZ2V0QnVmZmVyKCk7XHJcbiAgYW55UG9pbnRJbkNlbGwgPSBuZXcgUG9pbnQoXHJcbiAgICBhbnlQb2ludEluQ2VsbC5yb3csXHJcbiAgICBidWZmZXIubGluZUxlbmd0aEZvclJvdyhhbnlQb2ludEluQ2VsbC5yb3cpXHJcbiAgKTtcclxuICBjb25zdCByZWdleFN0cmluZyA9IGdldFJlZ2V4U3RyaW5nKGVkaXRvcik7XHJcblxyXG4gIGlmIChyZWdleFN0cmluZykge1xyXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4U3RyaW5nKTtcclxuICAgIGJ1ZmZlci5iYWNrd2FyZHNTY2FuSW5SYW5nZShcclxuICAgICAgcmVnZXgsXHJcbiAgICAgIG5ldyBSYW5nZShuZXcgUG9pbnQoMCwgMCksIGFueVBvaW50SW5DZWxsKSxcclxuICAgICAgKHsgbWF0Y2ggfSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbWF0Y2gubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChtYXRjaFtpXSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG1hdGNoW2ldKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSBcIm1kXCI6XHJcbiAgICAgICAgICAgICAgY2FzZSBcIm1hcmtkb3duXCI6XHJcbiAgICAgICAgICAgICAgICBjZWxsVHlwZSA9IFwibWFya2Rvd25cIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICBjYXNlIFwiY29kZWNlbGxcIjpcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY2VsbFR5cGUgPSBcImNvZGVjZWxsXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBjZWxsVHlwZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ29tbWVudHNNYXJrZG93bkNlbGwoXHJcbiAgZWRpdG9yOiBUZXh0RWRpdG9yLFxyXG4gIHRleHQ6IHN0cmluZ1xyXG4pOiBzdHJpbmcge1xyXG4gIGNvbnN0IGNvbW1lbnRTdGFydFN0cmluZyA9IGdldENvbW1lbnRTdGFydFN0cmluZyhlZGl0b3IpO1xyXG4gIGlmICghY29tbWVudFN0YXJ0U3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcbiAgY29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xyXG4gIGNvbnN0IGVkaXRlZExpbmVzID0gW107XHJcblxyXG4gIGxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcclxuICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoY29tbWVudFN0YXJ0U3RyaW5nKSkge1xyXG4gICAgICAvLyBSZW1vdmUgY29tbWVudCBmcm9tIHN0YXJ0IG9mIGxpbmVcclxuICAgICAgZWRpdGVkTGluZXMucHVzaChsaW5lLnNsaWNlKGNvbW1lbnRTdGFydFN0cmluZy5sZW5ndGgpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVkaXRlZExpbmVzLnB1c2gobGluZSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBzdHJpcEluZGVudChlZGl0ZWRMaW5lcy5qb2luKFwiXFxuXCIpKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0ZWRUZXh0KGVkaXRvcjogVGV4dEVkaXRvcikge1xyXG4gIHJldHVybiBub3JtYWxpemVTdHJpbmcoZWRpdG9yLmdldFNlbGVjdGVkVGV4dCgpKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNDb21tZW50KGVkaXRvcjogVGV4dEVkaXRvciwgcG9zaXRpb246IFBvaW50KSB7XHJcbiAgY29uc3Qgc2NvcGUgPSBlZGl0b3Iuc2NvcGVEZXNjcmlwdG9yRm9yQnVmZmVyUG9zaXRpb24ocG9zaXRpb24pO1xyXG4gIGNvbnN0IHNjb3BlU3RyaW5nID0gc2NvcGUuZ2V0U2NvcGVDaGFpbigpO1xyXG4gIHJldHVybiBzY29wZVN0cmluZy5pbmNsdWRlcyhcImNvbW1lbnQubGluZVwiKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNCbGFuayhlZGl0b3I6IFRleHRFZGl0b3IsIHJvdzogbnVtYmVyKSB7XHJcbiAgcmV0dXJuIGVkaXRvci5nZXRCdWZmZXIoKS5pc1Jvd0JsYW5rKHJvdyk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUJsYW5rUm93cyhcclxuICBlZGl0b3I6IFRleHRFZGl0b3IsXHJcbiAgc3RhcnRSb3c6IG51bWJlcixcclxuICBlbmRSb3c6IG51bWJlclxyXG4pIHtcclxuICB3aGlsZSAoZW5kUm93ID4gc3RhcnRSb3cpIHtcclxuICAgIGlmICghaXNCbGFuayhlZGl0b3IsIGVuZFJvdykpIHtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBlbmRSb3cgLT0gMTtcclxuICB9XHJcblxyXG4gIHJldHVybiBlbmRSb3c7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRSYW5nZShlZGl0b3I6IFRleHRFZGl0b3IsIHJvdzogbnVtYmVyKSB7XHJcbiAgY29uc3QgcmFuZ2UgPSByb3dSYW5nZUZvckNvZGVGb2xkQXRCdWZmZXJSb3coZWRpdG9yLCByb3cpO1xyXG4gIGlmICghcmFuZ2UpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChcclxuICAgIHJhbmdlWzFdIDwgZWRpdG9yLmdldExhc3RCdWZmZXJSb3coKSAmJlxyXG4gICAgZ2V0Um93KGVkaXRvciwgcmFuZ2VbMV0gKyAxKSA9PT0gXCJlbmRcIlxyXG4gICkge1xyXG4gICAgcmFuZ2VbMV0gKz0gMTtcclxuICB9XHJcblxyXG4gIGxvZyhcImdldEZvbGRSYW5nZTpcIiwgcmFuZ2UpO1xyXG4gIHJldHVybiByYW5nZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZENvbnRlbnRzKGVkaXRvcjogVGV4dEVkaXRvciwgcm93OiBudW1iZXIpIHtcclxuICBjb25zdCByYW5nZSA9IGdldEZvbGRSYW5nZShlZGl0b3IsIHJvdyk7XHJcbiAgaWYgKCFyYW5nZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY29kZTogZ2V0Um93cyhlZGl0b3IsIHJhbmdlWzBdLCByYW5nZVsxXSksXHJcbiAgICByb3c6IHJhbmdlWzFdLFxyXG4gIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvZGVUb0luc3BlY3QoZWRpdG9yOiBUZXh0RWRpdG9yKSB7XHJcbiAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gZ2V0U2VsZWN0ZWRUZXh0KGVkaXRvcik7XHJcbiAgbGV0IGNvZGU7XHJcbiAgbGV0IGN1cnNvclBvc2l0aW9uO1xyXG5cclxuICBpZiAoc2VsZWN0ZWRUZXh0KSB7XHJcbiAgICBjb2RlID0gc2VsZWN0ZWRUZXh0O1xyXG4gICAgY3Vyc29yUG9zaXRpb24gPSBjb2RlLmxlbmd0aDtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgY3Vyc29yID0gZWRpdG9yLmdldExhc3RDdXJzb3IoKTtcclxuICAgIGNvbnN0IHJvdyA9IGN1cnNvci5nZXRCdWZmZXJSb3coKTtcclxuICAgIGNvZGUgPSBnZXRSb3coZWRpdG9yLCByb3cpO1xyXG4gICAgY3Vyc29yUG9zaXRpb24gPSBjdXJzb3IuZ2V0QnVmZmVyQ29sdW1uKCk7XHJcbiAgICAvLyBUT0RPOiB1c2Uga2VybmVsLmNvbXBsZXRlIHRvIGZpbmQgYSBzZWxlY3Rpb25cclxuICAgIGNvbnN0IGlkZW50aWZpZXJFbmQgPSBjb2RlID8gY29kZS5zbGljZShjdXJzb3JQb3NpdGlvbikuc2VhcmNoKC9cXFcvKSA6IC0xO1xyXG5cclxuICAgIGlmIChpZGVudGlmaWVyRW5kICE9PSAtMSkge1xyXG4gICAgICBjdXJzb3JQb3NpdGlvbiArPSBpZGVudGlmaWVyRW5kO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3Vyc29yUG9zaXRpb24gPSBqc19pZHhfdG9fY2hhcl9pZHgoY3Vyc29yUG9zaXRpb24sIGNvZGUpO1xyXG4gIHJldHVybiBbY29kZSwgY3Vyc29yUG9zaXRpb25dO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tZW50U3RhcnRTdHJpbmcoXHJcbiAgZWRpdG9yOiBUZXh0RWRpdG9yXHJcbik6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gIGNvbnN0IHtcclxuICAgIGNvbW1lbnRTdGFydFN0cmluZywgLy8gJEZsb3dGaXhNZTogVGhpcyBpcyBhbiB1bm9mZmljaWFsIEFQSVxyXG4gIH0gPSBlZGl0b3IudG9rZW5pemVkQnVmZmVyLmNvbW1lbnRTdHJpbmdzRm9yUG9zaXRpb24oXHJcbiAgICBlZGl0b3IuZ2V0Q3Vyc29yQnVmZmVyUG9zaXRpb24oKVxyXG4gICk7XHJcblxyXG4gIGlmICghY29tbWVudFN0YXJ0U3RyaW5nKSB7XHJcbiAgICBsb2coXCJDZWxsTWFuYWdlcjogTm8gY29tbWVudCBzdHJpbmcgZGVmaW5lZCBpbiByb290IHNjb3BlXCIpO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gY29tbWVudFN0YXJ0U3RyaW5nLnRyaW1SaWdodCgpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWdleFN0cmluZyhlZGl0b3I6IFRleHRFZGl0b3IpIHtcclxuICBjb25zdCBjb21tZW50U3RhcnRTdHJpbmcgPSBnZXRDb21tZW50U3RhcnRTdHJpbmcoZWRpdG9yKTtcclxuICBpZiAoIWNvbW1lbnRTdGFydFN0cmluZykge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGNvbnN0IGVzY2FwZWRDb21tZW50U3RhcnRTdHJpbmcgPSBlc2NhcGVTdHJpbmdSZWdleHAoY29tbWVudFN0YXJ0U3RyaW5nKTtcclxuICBjb25zdCByZWdleFN0cmluZyA9IGAke2VzY2FwZWRDb21tZW50U3RhcnRTdHJpbmd9IColJSAqKG1kfG1hcmtkb3duKT98ICo8KGNvZGVjZWxsfG1kfG1hcmtkb3duKT58ICooSW5cXFtbMC05IF0qXFxdKWA7XHJcbiAgcmV0dXJuIHJlZ2V4U3RyaW5nO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRCcmVha3BvaW50cyhlZGl0b3I6IFRleHRFZGl0b3IpIHtcclxuICBjb25zdCBidWZmZXIgPSBlZGl0b3IuZ2V0QnVmZmVyKCk7XHJcbiAgY29uc3QgYnJlYWtwb2ludHMgPSBbXTtcclxuICBjb25zdCByZWdleFN0cmluZyA9IGdldFJlZ2V4U3RyaW5nKGVkaXRvcik7XHJcblxyXG4gIGlmIChyZWdleFN0cmluZykge1xyXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4U3RyaW5nLCBcImdcIik7XHJcbiAgICBidWZmZXIuc2NhbihyZWdleCwgKHsgcmFuZ2UgfSkgPT4ge1xyXG4gICAgICBpZiAoaXNDb21tZW50KGVkaXRvciwgcmFuZ2Uuc3RhcnQpKSB7XHJcbiAgICAgICAgYnJlYWtwb2ludHMucHVzaChyYW5nZS5zdGFydCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYnJlYWtwb2ludHMucHVzaChidWZmZXIuZ2V0RW5kUG9zaXRpb24oKSk7XHJcbiAgbG9nKFwiQ2VsbE1hbmFnZXI6IEJyZWFrcG9pbnRzOlwiLCBicmVha3BvaW50cyk7XHJcbiAgcmV0dXJuIGJyZWFrcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDZWxsKGVkaXRvcjogVGV4dEVkaXRvciwgYW55UG9pbnRJbkNlbGw/OiBQb2ludCkge1xyXG4gIGlmICghYW55UG9pbnRJbkNlbGwpIHtcclxuICAgIGFueVBvaW50SW5DZWxsID0gZWRpdG9yLmdldEN1cnNvckJ1ZmZlclBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBidWZmZXIgPSBlZGl0b3IuZ2V0QnVmZmVyKCk7XHJcbiAgYW55UG9pbnRJbkNlbGwgPSBuZXcgUG9pbnQoXHJcbiAgICBhbnlQb2ludEluQ2VsbC5yb3csXHJcbiAgICBidWZmZXIubGluZUxlbmd0aEZvclJvdyhhbnlQb2ludEluQ2VsbC5yb3cpXHJcbiAgKTtcclxuICBsZXQgc3RhcnQgPSBuZXcgUG9pbnQoMCwgMCk7XHJcbiAgbGV0IGVuZCA9IGJ1ZmZlci5nZXRFbmRQb3NpdGlvbigpO1xyXG4gIGNvbnN0IHJlZ2V4U3RyaW5nID0gZ2V0UmVnZXhTdHJpbmcoZWRpdG9yKTtcclxuXHJcbiAgaWYgKCFyZWdleFN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBSYW5nZShzdGFydCwgZW5kKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChyZWdleFN0cmluZyk7XHJcblxyXG4gIGlmIChhbnlQb2ludEluQ2VsbC5yb3cgPj0gMCkge1xyXG4gICAgYnVmZmVyLmJhY2t3YXJkc1NjYW5JblJhbmdlKFxyXG4gICAgICByZWdleCxcclxuICAgICAgbmV3IFJhbmdlKHN0YXJ0LCBhbnlQb2ludEluQ2VsbCksXHJcbiAgICAgICh7IHJhbmdlIH0pID0+IHtcclxuICAgICAgICBzdGFydCA9IG5ldyBQb2ludChyYW5nZS5zdGFydC5yb3cgKyAxLCAwKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1ZmZlci5zY2FuSW5SYW5nZShyZWdleCwgbmV3IFJhbmdlKGFueVBvaW50SW5DZWxsLCBlbmQpLCAoeyByYW5nZSB9KSA9PiB7XHJcbiAgICBlbmQgPSByYW5nZS5zdGFydDtcclxuICB9KTtcclxuICBsb2coXHJcbiAgICBcIkNlbGxNYW5hZ2VyOiBDZWxsIFtzdGFydCwgZW5kXTpcIixcclxuICAgIFtzdGFydCwgZW5kXSxcclxuICAgIFwiYW55UG9pbnRJbkNlbGw6XCIsXHJcbiAgICBhbnlQb2ludEluQ2VsbFxyXG4gICk7XHJcbiAgcmV0dXJuIG5ldyBSYW5nZShzdGFydCwgZW5kKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNFbWJlZGRlZENvZGUoXHJcbiAgZWRpdG9yOiBUZXh0RWRpdG9yLFxyXG4gIHJlZmVyZW5jZVNjb3BlOiBzdHJpbmcsXHJcbiAgcm93OiBudW1iZXJcclxuKSB7XHJcbiAgY29uc3Qgc2NvcGVzID0gZWRpdG9yXHJcbiAgICAuc2NvcGVEZXNjcmlwdG9yRm9yQnVmZmVyUG9zaXRpb24obmV3IFBvaW50KHJvdywgMCkpXHJcbiAgICAuZ2V0U2NvcGVzQXJyYXkoKTtcclxuICByZXR1cm4gc2NvcGVzLmluY2x1ZGVzKHJlZmVyZW5jZVNjb3BlKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q3VycmVudEZlbmNlZENvZGVCbG9jayhlZGl0b3I6IFRleHRFZGl0b3IpIHtcclxuICBjb25zdCBidWZmZXIgPSBlZGl0b3IuZ2V0QnVmZmVyKCk7XHJcbiAgY29uc3QgeyByb3c6IGJ1ZmZlckVuZFJvdyB9ID0gYnVmZmVyLmdldEVuZFBvc2l0aW9uKCk7XHJcbiAgY29uc3QgY3Vyc29yID0gZWRpdG9yLmdldEN1cnNvckJ1ZmZlclBvc2l0aW9uKCk7XHJcbiAgbGV0IHN0YXJ0ID0gY3Vyc29yLnJvdztcclxuICBsZXQgZW5kID0gY3Vyc29yLnJvdztcclxuICBjb25zdCBzY29wZSA9IGdldEVtYmVkZGVkU2NvcGUoZWRpdG9yLCBjdXJzb3IpO1xyXG4gIGlmICghc2NvcGUpIHtcclxuICAgIHJldHVybiBnZXRDZWxsKGVkaXRvcik7XHJcbiAgfVxyXG5cclxuICB3aGlsZSAoc3RhcnQgPiAwICYmIGlzRW1iZWRkZWRDb2RlKGVkaXRvciwgc2NvcGUsIHN0YXJ0IC0gMSkpIHtcclxuICAgIHN0YXJ0IC09IDE7XHJcbiAgfVxyXG5cclxuICB3aGlsZSAoZW5kIDwgYnVmZmVyRW5kUm93ICYmIGlzRW1iZWRkZWRDb2RlKGVkaXRvciwgc2NvcGUsIGVuZCArIDEpKSB7XHJcbiAgICBlbmQgKz0gMTtcclxuICB9XHJcblxyXG4gIHJldHVybiBuZXcgUmFuZ2UoW3N0YXJ0LCAwXSwgW2VuZCArIDEsIDBdKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRDZWxsKGVkaXRvcjogVGV4dEVkaXRvcikge1xyXG4gIGlmIChpc011bHRpbGFuZ3VhZ2VHcmFtbWFyKGVkaXRvci5nZXRHcmFtbWFyKCkpKSB7XHJcbiAgICByZXR1cm4gZ2V0Q3VycmVudEZlbmNlZENvZGVCbG9jayhlZGl0b3IpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGdldENlbGwoZWRpdG9yKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbHMoZWRpdG9yOiBUZXh0RWRpdG9yLCBicmVha3BvaW50czogQXJyYXk8UG9pbnQ+ID0gW10pIHtcclxuICBpZiAoYnJlYWtwb2ludHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICBicmVha3BvaW50cy5zb3J0KChhLCBiKSA9PiBhLmNvbXBhcmUoYikpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBicmVha3BvaW50cyA9IGdldEJyZWFrcG9pbnRzKGVkaXRvcik7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZ2V0Q2VsbHNGb3JCcmVha1BvaW50cyhlZGl0b3IsIGJyZWFrcG9pbnRzKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2VsbHNGb3JCcmVha1BvaW50cyhcclxuICBlZGl0b3I6IFRleHRFZGl0b3IsXHJcbiAgYnJlYWtwb2ludHM6IEFycmF5PFBvaW50PlxyXG4pOiBBcnJheTxSYW5nZT4ge1xyXG4gIGxldCBzdGFydCA9IG5ldyBQb2ludCgwLCAwKTtcclxuICAvLyBMZXQgc3RhcnQgYmUgZWFybGllc3Qgcm93IHdpdGggdGV4dFxyXG4gIGVkaXRvci5zY2FuKC9cXFMvLCAobWF0Y2gpID0+IHtcclxuICAgIHN0YXJ0ID0gbmV3IFBvaW50KG1hdGNoLnJhbmdlLnN0YXJ0LnJvdywgMCk7XHJcbiAgICBtYXRjaC5zdG9wKCk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGNvbXBhY3QoXHJcbiAgICBicmVha3BvaW50cy5tYXAoKGVuZCkgPT4ge1xyXG4gICAgICBjb25zdCBjZWxsID0gZW5kLmlzRXF1YWwoc3RhcnQpID8gbnVsbCA6IG5ldyBSYW5nZShzdGFydCwgZW5kKTtcclxuICAgICAgc3RhcnQgPSBuZXcgUG9pbnQoZW5kLnJvdyArIDEsIDApO1xyXG4gICAgICByZXR1cm4gY2VsbDtcclxuICAgIH0pXHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2VudGVyU2NyZWVuT25DdXJzb3JQb3NpdGlvbihlZGl0b3I6IFRleHRFZGl0b3IpIHtcclxuICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGVkaXRvci5lbGVtZW50LnBpeGVsUG9zaXRpb25Gb3JTY3JlZW5Qb3NpdGlvbihcclxuICAgIGVkaXRvci5nZXRDdXJzb3JTY3JlZW5Qb3NpdGlvbigpXHJcbiAgKS50b3A7XHJcbiAgY29uc3QgZWRpdG9ySGVpZ2h0ID0gZWRpdG9yLmVsZW1lbnQuZ2V0SGVpZ2h0KCk7XHJcbiAgZWRpdG9yLmVsZW1lbnQuc2V0U2Nyb2xsVG9wKGN1cnNvclBvc2l0aW9uIC0gZWRpdG9ySGVpZ2h0IC8gMik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtb3ZlRG93bihlZGl0b3I6IFRleHRFZGl0b3IsIHJvdzogbnVtYmVyKSB7XHJcbiAgY29uc3QgbGFzdFJvdyA9IGVkaXRvci5nZXRMYXN0QnVmZmVyUm93KCk7XHJcblxyXG4gIGlmIChyb3cgPj0gbGFzdFJvdykge1xyXG4gICAgZWRpdG9yLm1vdmVUb0JvdHRvbSgpO1xyXG4gICAgZWRpdG9yLmluc2VydE5ld2xpbmUoKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHdoaWxlIChyb3cgPCBsYXN0Um93KSB7XHJcbiAgICByb3cgKz0gMTtcclxuICAgIGlmICghaXNCbGFuayhlZGl0b3IsIHJvdykpIHtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlZGl0b3Iuc2V0Q3Vyc29yQnVmZmVyUG9zaXRpb24oe1xyXG4gICAgcm93LFxyXG4gICAgY29sdW1uOiAwLFxyXG4gIH0pO1xyXG4gIGF0b20uY29uZmlnLmdldChcIkh5ZHJvZ2VuLmNlbnRlck9uTW92ZURvd25cIikgJiZcclxuICAgIGNlbnRlclNjcmVlbk9uQ3Vyc29yUG9zaXRpb24oZWRpdG9yKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZmluZFByZWNlZGluZ0Jsb2NrKFxyXG4gIGVkaXRvcjogVGV4dEVkaXRvcixcclxuICByb3c6IG51bWJlcixcclxuICBpbmRlbnRMZXZlbDogbnVtYmVyXHJcbikge1xyXG4gIGxldCBwcmV2aW91c1JvdyA9IHJvdyAtIDE7XHJcblxyXG4gIHdoaWxlIChwcmV2aW91c1JvdyA+PSAwKSB7XHJcbiAgICBjb25zdCBwcmV2aW91c0luZGVudExldmVsID0gZWRpdG9yLmluZGVudGF0aW9uRm9yQnVmZmVyUm93KHByZXZpb3VzUm93KTtcclxuICAgIGNvbnN0IHNhbWVJbmRlbnQgPSBwcmV2aW91c0luZGVudExldmVsIDw9IGluZGVudExldmVsO1xyXG4gICAgY29uc3QgYmxhbmsgPSBpc0JsYW5rKGVkaXRvciwgcHJldmlvdXNSb3cpO1xyXG4gICAgY29uc3QgaXNFbmQgPSBnZXRSb3coZWRpdG9yLCBwcmV2aW91c1JvdykgPT09IFwiZW5kXCI7XHJcblxyXG4gICAgaWYgKGlzQmxhbmsoZWRpdG9yLCByb3cpKSB7XHJcbiAgICAgIHJvdyA9IHByZXZpb3VzUm93O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzYW1lSW5kZW50ICYmICFibGFuayAmJiAhaXNFbmQpIHtcclxuICAgICAgY29uc3QgY2VsbCA9IGdldENlbGwoZWRpdG9yLCBuZXcgUG9pbnQocm93LCAwKSk7XHJcblxyXG4gICAgICBpZiAoY2VsbC5zdGFydC5yb3cgPiByb3cpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgY29kZTogXCJcIixcclxuICAgICAgICAgIHJvdyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGU6IGdldFJvd3MoZWRpdG9yLCBwcmV2aW91c1Jvdywgcm93KSxcclxuICAgICAgICByb3csXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJldmlvdXNSb3cgLT0gMTtcclxuICB9XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29kZUJsb2NrKGVkaXRvcjogVGV4dEVkaXRvcikge1xyXG4gIGNvbnN0IHNlbGVjdGVkVGV4dCA9IGdldFNlbGVjdGVkVGV4dChlZGl0b3IpO1xyXG5cclxuICBpZiAoc2VsZWN0ZWRUZXh0KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJhbmdlID0gZWRpdG9yLmdldFNlbGVjdGVkQnVmZmVyUmFuZ2UoKTtcclxuICAgIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGVkaXRvciwgc2VsZWN0ZWRSYW5nZS5lbmQpO1xyXG4gICAgY29uc3Qgc3RhcnRQb2ludCA9IGNlbGwuc3RhcnQuaXNHcmVhdGVyVGhhbihzZWxlY3RlZFJhbmdlLnN0YXJ0KVxyXG4gICAgICA/IGNlbGwuc3RhcnRcclxuICAgICAgOiBzZWxlY3RlZFJhbmdlLnN0YXJ0O1xyXG4gICAgbGV0IGVuZFJvdyA9IHNlbGVjdGVkUmFuZ2UuZW5kLnJvdztcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWRSYW5nZS5lbmQuY29sdW1uID09PSAwKSB7XHJcbiAgICAgIGVuZFJvdyAtPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGVuZFJvdyA9IGVzY2FwZUJsYW5rUm93cyhlZGl0b3IsIHN0YXJ0UG9pbnQucm93LCBlbmRSb3cpO1xyXG5cclxuICAgIGlmIChzdGFydFBvaW50LmlzR3JlYXRlclRoYW5PckVxdWFsKHNlbGVjdGVkUmFuZ2UuZW5kKSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGU6IFwiXCIsXHJcbiAgICAgICAgcm93OiBlbmRSb3csXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29kZTogZ2V0VGV4dEluUmFuZ2UoZWRpdG9yLCBzdGFydFBvaW50LCBzZWxlY3RlZFJhbmdlLmVuZCksXHJcbiAgICAgIHJvdzogZW5kUm93LFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGN1cnNvciA9IGVkaXRvci5nZXRMYXN0Q3Vyc29yKCk7XHJcbiAgY29uc3Qgcm93ID0gY3Vyc29yLmdldEJ1ZmZlclJvdygpO1xyXG4gIGxvZyhcImZpbmRDb2RlQmxvY2s6XCIsIHJvdyk7XHJcbiAgY29uc3QgaW5kZW50TGV2ZWwgPSBjdXJzb3IuZ2V0SW5kZW50TGV2ZWwoKTtcclxuICBsZXQgZm9sZGFibGUgPSBlZGl0b3IuaXNGb2xkYWJsZUF0QnVmZmVyUm93KHJvdyk7XHJcbiAgY29uc3QgZm9sZFJhbmdlID0gcm93UmFuZ2VGb3JDb2RlRm9sZEF0QnVmZmVyUm93KGVkaXRvciwgcm93KTtcclxuXHJcbiAgaWYgKCFmb2xkUmFuZ2UgfHwgZm9sZFJhbmdlWzBdID09IG51bGwgfHwgZm9sZFJhbmdlWzFdID09IG51bGwpIHtcclxuICAgIGZvbGRhYmxlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpZiAoZm9sZGFibGUpIHtcclxuICAgIHJldHVybiBnZXRGb2xkQ29udGVudHMoZWRpdG9yLCByb3cpO1xyXG4gIH1cclxuXHJcbiAgaWYgKGlzQmxhbmsoZWRpdG9yLCByb3cpIHx8IGdldFJvdyhlZGl0b3IsIHJvdykgPT09IFwiZW5kXCIpIHtcclxuICAgIHJldHVybiBmaW5kUHJlY2VkaW5nQmxvY2soZWRpdG9yLCByb3csIGluZGVudExldmVsKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGNlbGwgPSBnZXRDZWxsKGVkaXRvciwgbmV3IFBvaW50KHJvdywgMCkpO1xyXG5cclxuICBpZiAoY2VsbC5zdGFydC5yb3cgPiByb3cpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvZGU6IFwiXCIsXHJcbiAgICAgIHJvdyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgY29kZTogZ2V0Um93KGVkaXRvciwgcm93KSxcclxuICAgIHJvdyxcclxuICB9O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBmb2xkQ3VycmVudENlbGwoZWRpdG9yOiBUZXh0RWRpdG9yKSB7XHJcbiAgY29uc3QgY2VsbFJhbmdlID0gZ2V0Q3VycmVudENlbGwoZWRpdG9yKTtcclxuICBjb25zdCBuZXdSYW5nZSA9IGFkanVzdENlbGxGb2xkUmFuZ2UoZWRpdG9yLCBjZWxsUmFuZ2UpO1xyXG4gIGVkaXRvci5zZXRTZWxlY3RlZEJ1ZmZlclJhbmdlKG5ld1JhbmdlKTtcclxuICBlZGl0b3IuZ2V0U2VsZWN0aW9ucygpWzBdLmZvbGQoKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZm9sZEFsbEJ1dEN1cnJlbnRDZWxsKGVkaXRvcjogVGV4dEVkaXRvcikge1xyXG4gIGNvbnN0IGluaXRpYWxTZWxlY3Rpb25zID0gZWRpdG9yLmdldFNlbGVjdGVkQnVmZmVyUmFuZ2VzKCk7XHJcbiAgLy8gSSB0YWtlIC5zbGljZSgxKSBiZWNhdXNlIHRoZXJlJ3MgYWx3YXlzIGFuIGVtcHR5IGNlbGwgcmFuZ2UgZnJvbSBbMCwwXSB0b1xyXG4gIC8vIFswLDBdXHJcbiAgY29uc3QgYWxsQ2VsbFJhbmdlcyA9IGdldENlbGxzKGVkaXRvcikuc2xpY2UoMSk7XHJcbiAgY29uc3QgY3VycmVudENlbGxSYW5nZSA9IGdldEN1cnJlbnRDZWxsKGVkaXRvcik7XHJcbiAgY29uc3QgbmV3UmFuZ2VzID0gYWxsQ2VsbFJhbmdlc1xyXG4gICAgLmZpbHRlcigoY2VsbFJhbmdlKSA9PiAhY2VsbFJhbmdlLmlzRXF1YWwoY3VycmVudENlbGxSYW5nZSkpXHJcbiAgICAubWFwKChjZWxsUmFuZ2UpID0+IGFkanVzdENlbGxGb2xkUmFuZ2UoZWRpdG9yLCBjZWxsUmFuZ2UpKTtcclxuICBlZGl0b3Iuc2V0U2VsZWN0ZWRCdWZmZXJSYW5nZXMobmV3UmFuZ2VzKTtcclxuICBlZGl0b3IuZ2V0U2VsZWN0aW9ucygpLmZvckVhY2goKHNlbGVjdGlvbikgPT4gc2VsZWN0aW9uLmZvbGQoKSk7XHJcbiAgLy8gUmVzdG9yZSBzZWxlY3Rpb25zXHJcbiAgZWRpdG9yLnNldFNlbGVjdGVkQnVmZmVyUmFuZ2VzKGluaXRpYWxTZWxlY3Rpb25zKTtcclxufVxyXG5cclxuZnVuY3Rpb24gYWRqdXN0Q2VsbEZvbGRSYW5nZShlZGl0b3I6IFRleHRFZGl0b3IsIHJhbmdlOiBSYW5nZSkge1xyXG4gIGNvbnN0IHN0YXJ0Um93ID0gcmFuZ2Uuc3RhcnQucm93ID4gMCA/IHJhbmdlLnN0YXJ0LnJvdyAtIDEgOiAwO1xyXG4gIGNvbnN0IHN0YXJ0V2lkdGggPSBlZGl0b3IubGluZVRleHRGb3JCdWZmZXJSb3coc3RhcnRSb3cpLmxlbmd0aDtcclxuICBjb25zdCBlbmRSb3cgPVxyXG4gICAgcmFuZ2UuZW5kLnJvdyA9PSBlZGl0b3IuZ2V0TGFzdEJ1ZmZlclJvdygpXHJcbiAgICAgID8gcmFuZ2UuZW5kLnJvd1xyXG4gICAgICA6IHJhbmdlLmVuZC5yb3cgLSAxO1xyXG4gIGNvbnN0IGVuZFdpZHRoID0gZWRpdG9yLmxpbmVUZXh0Rm9yQnVmZmVyUm93KGVuZFJvdykubGVuZ3RoO1xyXG4gIHJldHVybiBuZXcgUmFuZ2UoXHJcbiAgICBuZXcgUG9pbnQoc3RhcnRSb3csIHN0YXJ0V2lkdGgpLFxyXG4gICAgbmV3IFBvaW50KGVuZFJvdywgZW5kV2lkdGgpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEVzY2FwZUJsYW5rUm93c0VuZFJvdyhlZGl0b3I6IFRleHRFZGl0b3IsIGVuZDogUG9pbnQpIHtcclxuICByZXR1cm4gZW5kLnJvdyA9PT0gZWRpdG9yLmdldExhc3RCdWZmZXJSb3coKSA/IGVuZC5yb3cgOiBlbmQucm93IC0gMTtcclxufVxyXG4iXX0= \ No newline at end of file diff --git a/dist/commands.d.ts b/dist/commands.d.ts deleted file mode 100644 index ec6da9cde..000000000 --- a/dist/commands.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare type store = typeof import("./store").default; -export declare function toggleInspector(store: store): void; -export declare function toggleOutputMode(): void; -export {}; diff --git a/dist/commands.js b/dist/commands.js index f8563f63a..621611c02 100644 --- a/dist/commands.js +++ b/dist/commands.js @@ -41,4 +41,4 @@ function toggleOutputMode() { } } exports.toggleOutputMode = toggleOutputMode; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUNBTWlCO0FBQ2pCLGlEQUFrRDtBQUNsRCxzRUFBNkM7QUFFN0MsU0FBZ0IsZUFBZSxDQUFDLEtBQVk7SUFDMUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFakMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pELE9BQU87S0FDUjtJQUVELE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsK0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbkQsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO1FBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDckQsT0FBTztLQUNSO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FDWixJQUFJLEVBQ0osU0FBUyxFQUNULENBQUMsTUFBcUQsRUFBRSxFQUFFO1FBQ3hELFdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBYSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUMxRCxPQUFPO1NBQ1I7UUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUM7QUE5QkQsMENBOEJDO0FBQ0QsU0FBZ0IsZ0JBQWdCO0lBRTlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTO1NBQzlCLFlBQVksRUFBRTtTQUNkLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxZQUFZLHFCQUFVLENBQWUsQ0FBQztJQUVwRSxJQUFJLFVBQVUsRUFBRTtRQUNkLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzdCO1NBQU07UUFDTCxzQkFBYyxDQUFDLHVCQUFlLENBQUMsQ0FBQztLQUNqQztBQUNILENBQUM7QUFYRCw0Q0FXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGxvZyxcbiAgcmVhY3RGYWN0b3J5LFxuICBJTlNQRUNUT1JfVVJJLFxuICBPVVRQVVRfQVJFQV9VUkksXG4gIG9wZW5PclNob3dEb2NrLFxufSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0Q29kZVRvSW5zcGVjdCB9IGZyb20gXCIuL2NvZGUtbWFuYWdlclwiO1xuaW1wb3J0IE91dHB1dFBhbmUgZnJvbSBcIi4vcGFuZXMvb3V0cHV0LWFyZWFcIjtcbnR5cGUgc3RvcmUgPSB0eXBlb2YgaW1wb3J0KFwiLi9zdG9yZVwiKS5kZWZhdWx0O1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUluc3BlY3RvcihzdG9yZTogc3RvcmUpIHtcbiAgY29uc3QgeyBlZGl0b3IsIGtlcm5lbCB9ID0gc3RvcmU7XG5cbiAgaWYgKCFlZGl0b3IgfHwgIWtlcm5lbCkge1xuICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRJbmZvKFwiTm8ga2VybmVsIHJ1bm5pbmchXCIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IFtjb2RlLCBjdXJzb3JQb3NdID0gZ2V0Q29kZVRvSW5zcGVjdChlZGl0b3IpO1xuXG4gIGlmICghY29kZSB8fCBjdXJzb3JQb3MgPT09IDApIHtcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkSW5mbyhcIk5vIGNvZGUgdG8gaW50cm9zcGVjdCFcIik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAga2VybmVsLmluc3BlY3QoXG4gICAgY29kZSxcbiAgICBjdXJzb3JQb3MsXG4gICAgKHJlc3VsdDogeyBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBmb3VuZDogYm9vbGVhbiB9KSA9PiB7XG4gICAgICBsb2coXCJJbnNwZWN0b3I6IFJlc3VsdDpcIiwgcmVzdWx0KTtcblxuICAgICAgaWYgKCFyZXN1bHQuZm91bmQpIHtcbiAgICAgICAgYXRvbS53b3Jrc3BhY2UuaGlkZShJTlNQRUNUT1JfVVJJKTtcbiAgICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEluZm8oXCJObyBpbnRyb3NwZWN0aW9uIGF2YWlsYWJsZSFcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAga2VybmVsLnNldEluc3BlY3RvclJlc3VsdChyZXN1bHQuZGF0YSwgZWRpdG9yKTtcbiAgICB9XG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlT3V0cHV0TW9kZSgpOiB2b2lkIHtcbiAgLy8gVGhlcmUgc2hvdWxkIG5ldmVyIGJlIG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgT3V0cHV0QXJlYVxuICBjb25zdCBvdXRwdXRBcmVhID0gYXRvbS53b3Jrc3BhY2VcbiAgICAuZ2V0UGFuZUl0ZW1zKClcbiAgICAuZmluZCgocGFuZUl0ZW0pID0+IHBhbmVJdGVtIGluc3RhbmNlb2YgT3V0cHV0UGFuZSkgYXMgT3V0cHV0UGFuZTtcblxuICBpZiAob3V0cHV0QXJlYSkge1xuICAgIHJldHVybiBvdXRwdXRBcmVhLmRlc3Ryb3koKTtcbiAgfSBlbHNlIHtcbiAgICBvcGVuT3JTaG93RG9jayhPVVRQVVRfQVJFQV9VUkkpO1xuICB9XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29tbWFuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUNBQThFO0FBQzlFLGlEQUFrRDtBQUNsRCxzRUFBNkM7QUFFN0MsU0FBZ0IsZUFBZSxDQUFDLEtBQVk7SUFDMUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFakMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pELE9BQU87S0FDUjtJQUVELE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsK0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbkQsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO1FBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDckQsT0FBTztLQUNSO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FDWixJQUFJLEVBQ0osU0FBUyxFQUNULENBQUMsTUFBcUQsRUFBRSxFQUFFO1FBQ3hELFdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBYSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUMxRCxPQUFPO1NBQ1I7UUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUM7QUE5QkQsMENBOEJDO0FBQ0QsU0FBZ0IsZ0JBQWdCO0lBRTlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTO1NBQzlCLFlBQVksRUFBRTtTQUNkLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxZQUFZLHFCQUFVLENBQWUsQ0FBQztJQUVwRSxJQUFJLFVBQVUsRUFBRTtRQUNkLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzdCO1NBQU07UUFDTCxzQkFBYyxDQUFDLHVCQUFlLENBQUMsQ0FBQztLQUNqQztBQUNILENBQUM7QUFYRCw0Q0FXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZywgSU5TUEVDVE9SX1VSSSwgT1VUUFVUX0FSRUFfVVJJLCBvcGVuT3JTaG93RG9jayB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCB7IGdldENvZGVUb0luc3BlY3QgfSBmcm9tIFwiLi9jb2RlLW1hbmFnZXJcIjtcclxuaW1wb3J0IE91dHB1dFBhbmUgZnJvbSBcIi4vcGFuZXMvb3V0cHV0LWFyZWFcIjtcclxudHlwZSBzdG9yZSA9IHR5cGVvZiBpbXBvcnQoXCIuL3N0b3JlXCIpLmRlZmF1bHQ7XHJcbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVJbnNwZWN0b3Ioc3RvcmU6IHN0b3JlKSB7XHJcbiAgY29uc3QgeyBlZGl0b3IsIGtlcm5lbCB9ID0gc3RvcmU7XHJcblxyXG4gIGlmICghZWRpdG9yIHx8ICFrZXJuZWwpIHtcclxuICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRJbmZvKFwiTm8ga2VybmVsIHJ1bm5pbmchXCIpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgW2NvZGUsIGN1cnNvclBvc10gPSBnZXRDb2RlVG9JbnNwZWN0KGVkaXRvcik7XHJcblxyXG4gIGlmICghY29kZSB8fCBjdXJzb3JQb3MgPT09IDApIHtcclxuICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRJbmZvKFwiTm8gY29kZSB0byBpbnRyb3NwZWN0IVwiKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGtlcm5lbC5pbnNwZWN0KFxyXG4gICAgY29kZSxcclxuICAgIGN1cnNvclBvcyxcclxuICAgIChyZXN1bHQ6IHsgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PjsgZm91bmQ6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgICBsb2coXCJJbnNwZWN0b3I6IFJlc3VsdDpcIiwgcmVzdWx0KTtcclxuXHJcbiAgICAgIGlmICghcmVzdWx0LmZvdW5kKSB7XHJcbiAgICAgICAgYXRvbS53b3Jrc3BhY2UuaGlkZShJTlNQRUNUT1JfVVJJKTtcclxuICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkSW5mbyhcIk5vIGludHJvc3BlY3Rpb24gYXZhaWxhYmxlIVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGtlcm5lbC5zZXRJbnNwZWN0b3JSZXN1bHQocmVzdWx0LmRhdGEsIGVkaXRvcik7XHJcbiAgICB9XHJcbiAgKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlT3V0cHV0TW9kZSgpOiB2b2lkIHtcclxuICAvLyBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBvZiBPdXRwdXRBcmVhXHJcbiAgY29uc3Qgb3V0cHV0QXJlYSA9IGF0b20ud29ya3NwYWNlXHJcbiAgICAuZ2V0UGFuZUl0ZW1zKClcclxuICAgIC5maW5kKChwYW5lSXRlbSkgPT4gcGFuZUl0ZW0gaW5zdGFuY2VvZiBPdXRwdXRQYW5lKSBhcyBPdXRwdXRQYW5lO1xyXG5cclxuICBpZiAob3V0cHV0QXJlYSkge1xyXG4gICAgcmV0dXJuIG91dHB1dEFyZWEuZGVzdHJveSgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBvcGVuT3JTaG93RG9jayhPVVRQVVRfQVJFQV9VUkkpO1xyXG4gIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/dist/components/inspector.d.ts b/dist/components/inspector.d.ts deleted file mode 100644 index dc42a2ff4..000000000 --- a/dist/components/inspector.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type Kernel from "../kernel"; -declare type Props = { - store: { - kernel: Kernel | null | undefined; - }; -}; -declare const Inspector: ({ store: { kernel } }: Props) => any; -export default Inspector; diff --git a/dist/components/kernel-monitor.d.ts b/dist/components/kernel-monitor.d.ts deleted file mode 100644 index ba066212f..000000000 --- a/dist/components/kernel-monitor.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare const KernelMonitor: ({ store }: { - store: import("../store").Store; -}) => JSX.Element; -export default KernelMonitor; diff --git a/dist/components/kernel-monitor.js b/dist/components/kernel-monitor.js index 1fa89ca32..8adc775d9 100644 --- a/dist/components/kernel-monitor.js +++ b/dist/components/kernel-monitor.js @@ -25,7 +25,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(require("react")); const react_table_1 = __importStar(require("react-table")); const mobx_react_1 = require("mobx-react"); -const lodash_1 = __importDefault(require("lodash")); const tildify_1 = __importDefault(require("tildify")); const utils_1 = require("../utils"); const showKernelSpec = (kernelSpec) => { @@ -90,7 +89,7 @@ const KernelMonitor = mobx_react_1.observer(({ store }) => { return (react_1.default.createElement("ul", { className: "background-message centered" }, react_1.default.createElement("li", null, "No running kernels"))); } - const data = lodash_1.default.map(store.runningKernels, (kernel, key) => { + const data = store.runningKernels.map((kernel, key) => { return { gateway: kernel.transport.gatewayName || "Local", kernelInfo: { @@ -177,4 +176,4 @@ const KernelMonitor = mobx_react_1.observer(({ store }) => { }); KernelMonitor.displayName = "KernelMonitor"; exports.default = KernelMonitor; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvY29tcG9uZW50cy9rZXJuZWwtbW9uaXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDJEQUE2RDtBQUU3RCwyQ0FBc0M7QUFDdEMsb0RBQXVCO0FBQ3ZCLHNEQUE4QjtBQUc5QixvQ0FBNkM7QUFHN0MsTUFBTSxjQUFjLEdBQUcsQ0FBQyxVQUFjLEVBQUUsRUFBRTtJQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtRQUNsRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzQyxXQUFXLEVBQUUsSUFBSTtLQUNsQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO0lBQ25DLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO0lBQ2xDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUlGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7SUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUM3RCxNQUFNLEtBQUssR0FBRyxRQUFRLENB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SUFBSSxDQUNELENBQ1AsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLFVBQVUsRUFBRSxVQUFVO2FBQ3ZCO1NBQ0Y7S0FDRixDQUFDO0lBQ0YsT0FBTyw4QkFBQyxxQkFBVSxJQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sR0FBSSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxDQUFDO0FBQ0gsYUFBYSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7QUFDNUMsa0JBQWUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0VGFibGUsIHsgUmVhY3RUYWJsZURlZmF1bHRzIH0gZnJvbSBcInJlYWN0LXRhYmxlXCI7XG5cbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB0aWxkaWZ5IGZyb20gXCJ0aWxkaWZ5XCI7XG50eXBlIHN0b3JlID0gdHlwZW9mIGltcG9ydChcIi4uL3N0b3JlXCIpLmRlZmF1bHQ7XG5pbXBvcnQgS2VybmVsIGZyb20gXCIuLi9rZXJuZWxcIjtcbmltcG9ydCB7IGlzVW5zYXZlZEZpbGVQYXRoIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEtlcm5lbHNwZWNNZXRhZGF0YSB9IGZyb20gXCJAbnRlcmFjdC90eXBlc1wiO1xuXG5jb25zdCBzaG93S2VybmVsU3BlYyA9IChrZXJuZWxTcGVjOiB7fSkgPT4ge1xuICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkSW5mbyhcIkh5ZHJvZ2VuOiBLZXJuZWwgU3BlY1wiLCB7XG4gICAgZGV0YWlsOiBKU09OLnN0cmluZ2lmeShrZXJuZWxTcGVjLCBudWxsLCAyKSxcbiAgICBkaXNtaXNzYWJsZTogdHJ1ZSxcbiAgfSk7XG59O1xuXG5jb25zdCBpbnRlcnJ1cHQgPSAoa2VybmVsOiBLZXJuZWwpID0+IHtcbiAga2VybmVsLmludGVycnVwdCgpO1xufTtcblxuY29uc3Qgc2h1dGRvd24gPSAoa2VybmVsOiBLZXJuZWwpID0+IHtcbiAga2VybmVsLnNodXRkb3duKCk7XG4gIGtlcm5lbC5kZXN0cm95KCk7XG59O1xuXG5jb25zdCByZXN0YXJ0ID0gKGtlcm5lbDogS2VybmVsKSA9PiB7XG4gIGtlcm5lbC5yZXN0YXJ0KHVuZGVmaW5lZCk7XG59O1xuXG4vLyBAVE9ETyBJZiBvdXIgc3RvcmUgaG9sZHMgZWRpdG9yIElEcyBpbnN0ZWFkIG9mIGZpbGUgcGF0aHMsIHRoZXNlIG1lc3N5IG1hdGNoaW5nIHN0dWZmIGJlbG93IHdvdWxkXG4vLyAgICAgICBlYXNpbHkgYmUgcmVwbGFjZWQgYnkgc2ltcGxlciBjb2RlLiBTZWUgYWxzbyBjb21wb25lbnRzL2tlcm5lbC1tb25pdG9yLmpzIGZvciB0aGlzIHByb2JsZW0uXG5jb25zdCBvcGVuVW5zYXZlZEVkaXRvciA9IChmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGVkaXRvciA9IGF0b20ud29ya3NwYWNlLmdldFRleHRFZGl0b3JzKCkuZmluZCgoZWRpdG9yKSA9PiB7XG4gICAgY29uc3QgbWF0Y2ggPSBmaWxlUGF0aC5tYXRjaCgvXFxkKy8pO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcoZWRpdG9yLmlkKSA9PT0gbWF0Y2hbMF07XG4gIH0pO1xuICAvLyBUaGlzIHBhdGggd29uJ3QgaGFwcGVuIGFmdGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9udGVyYWN0L2h5ZHJvZ2VuL3B1bGwvMTY2MiBzaW5jZSBldmVyeSBkZWxldGVkXG4gIC8vIGVkaXRvcnMgd291bGQgYmUgZGVsZXRlZCBmcm9tIGBzdG9yZS5rZXJuZWxNYXBwaW5nYC4gSnVzdCBrZXB0IGhlcmUgZm9yIHNhZmV0eS5cbiAgaWYgKCFlZGl0b3IpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXRvbS53b3Jrc3BhY2Uub3BlbihlZGl0b3IsIHtcbiAgICBzZWFyY2hBbGxQYW5lczogdHJ1ZSxcbiAgfSk7XG59O1xuXG5jb25zdCBvcGVuRWRpdG9yID0gKGZpbGVQYXRoOiBzdHJpbmcpID0+IHtcbiAgYXRvbS53b3Jrc3BhY2VcbiAgICAub3BlbihmaWxlUGF0aCwge1xuICAgICAgc2VhcmNoQWxsUGFuZXM6IHRydWUsXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiSHlkcm9nZW5cIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogZXJyLFxuICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG50eXBlIEtlcm5lbEluZm8gPSB7XG4gIHZhbHVlOiB7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBrZXJuZWxTcGVjOiBLZXJuZWxzcGVjTWV0YWRhdGE7XG4gIH07XG59O1xuXG5jb25zdCBrZXJuZWxJbmZvQ2VsbCA9IChwcm9wczogS2VybmVsSW5mbykgPT4ge1xuICBjb25zdCB7IGRpc3BsYXlOYW1lLCBrZXJuZWxTcGVjIH0gPSBwcm9wcy52YWx1ZTtcbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgY2xhc3NOYW1lPVwiaWNvblwiXG4gICAgICBvbkNsaWNrPXtzaG93S2VybmVsU3BlYy5iaW5kKHRoaXMsIGtlcm5lbFNwZWMpfVxuICAgICAgdGl0bGU9XCJTaG93IGtlcm5lbCBzcGVjXCJcbiAgICAgIGtleT17YCR7ZGlzcGxheU5hbWV9a2VybmVsSW5mb2B9XG4gICAgPlxuICAgICAge2Rpc3BsYXlOYW1lfVxuICAgIDwvYT5cbiAgKTtcbn07XG5cbi8vIFNldCBkZWZhdWx0IHByb3BlcnRpZXMgb2YgUmVhY3QtVGFibGVcbk9iamVjdC5hc3NpZ24oUmVhY3RUYWJsZURlZmF1bHRzLCB7XG4gIGNsYXNzTmFtZTogXCJrZXJuZWwtbW9uaXRvclwiLFxuICBzaG93UGFnaW5hdGlvbjogZmFsc2UsXG59KTtcbk9iamVjdC5hc3NpZ24oUmVhY3RUYWJsZURlZmF1bHRzLmNvbHVtbiwge1xuICBjbGFzc05hbWU6IFwidGFibGUtY2VsbFwiLFxuICBoZWFkZXJDbGFzc05hbWU6IFwidGFibGUtaGVhZGVyXCIsXG4gIHN0eWxlOiB7XG4gICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxuICB9LFxufSk7XG5jb25zdCBLZXJuZWxNb25pdG9yID0gb2JzZXJ2ZXIoKHsgc3RvcmUgfTogeyBzdG9yZTogc3RvcmUgfSkgPT4ge1xuICBpZiAoc3RvcmUucnVubmluZ0tlcm5lbHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDx1bCBjbGFzc05hbWU9XCJiYWNrZ3JvdW5kLW1lc3NhZ2UgY2VudGVyZWRcIj5cbiAgICAgICAgPGxpPk5vIHJ1bm5pbmcga2VybmVsczwvbGk+XG4gICAgICA8L3VsPlxuICAgICk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gXy5tYXAoc3RvcmUucnVubmluZ0tlcm5lbHMsIChrZXJuZWwsIGtleTogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdhdGV3YXk6IGtlcm5lbC50cmFuc3BvcnQuZ2F0ZXdheU5hbWUgfHwgXCJMb2NhbFwiLFxuICAgICAga2VybmVsSW5mbzoge1xuICAgICAgICBkaXNwbGF5TmFtZToga2VybmVsLmRpc3BsYXlOYW1lLFxuICAgICAgICBrZXJuZWxTcGVjOiBrZXJuZWwua2VybmVsU3BlYyxcbiAgICAgIH0sXG4gICAgICBzdGF0dXM6IGtlcm5lbC5leGVjdXRpb25TdGF0ZSxcbiAgICAgIGV4ZWN1dGlvbkNvdW50OiBrZXJuZWwuZXhlY3V0aW9uQ291bnQsXG4gICAgICBsYXN0RXhlY3V0aW9uVGltZToga2VybmVsLmxhc3RFeGVjdXRpb25UaW1lLFxuICAgICAga2VybmVsS2V5OiB7XG4gICAgICAgIGtlcm5lbCxcbiAgICAgICAga2V5OiBTdHJpbmcoa2V5KSxcbiAgICAgIH0sXG4gICAgICBmaWxlczogc3RvcmUuZ2V0RmlsZXNGb3JLZXJuZWwoa2VybmVsKSxcbiAgICB9O1xuICB9KTtcblxuICBjb25zdCBjb2x1bW5zID0gW1xuICAgIHtcbiAgICAgIEhlYWRlcjogXCJHYXRld2F5XCIsXG4gICAgICBhY2Nlc3NvcjogXCJnYXRld2F5XCIsXG4gICAgICBtYXhXaWR0aDogMTI1LFxuICAgIH0sXG4gICAge1xuICAgICAgSGVhZGVyOiBcIktlcm5lbFwiLFxuICAgICAgYWNjZXNzb3I6IFwia2VybmVsSW5mb1wiLFxuICAgICAgQ2VsbDoga2VybmVsSW5mb0NlbGwsXG4gICAgICBtYXhXaWR0aDogMTI1LFxuICAgIH0sXG4gICAge1xuICAgICAgSGVhZGVyOiBcIlN0YXR1c1wiLFxuICAgICAgYWNjZXNzb3I6IFwic3RhdHVzXCIsXG4gICAgICBtYXhXaWR0aDogMTAwLFxuICAgIH0sXG4gICAge1xuICAgICAgSGVhZGVyOiBcIkNvdW50XCIsXG4gICAgICBhY2Nlc3NvcjogXCJleGVjdXRpb25Db3VudFwiLFxuICAgICAgbWF4V2lkdGg6IDUwLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgdGV4dEFsaWduOiBcInJpZ2h0XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgSGVhZGVyOiBcIkxhc3QgRXhlYyBUaW1lXCIsXG4gICAgICBhY2Nlc3NvcjogXCJsYXN0RXhlY3V0aW9uVGltZVwiLFxuICAgICAgbWF4V2lkdGg6IDEwMCxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHRleHRBbGlnbjogXCJyaWdodFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEhlYWRlcjogXCJNYW5hZ2VtZW50c1wiLFxuICAgICAgYWNjZXNzb3I6IFwia2VybmVsS2V5XCIsXG4gICAgICBDZWxsOiAocHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXJuZWwsIGtleSB9ID0gcHJvcHMudmFsdWU7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImljb24gaWNvbi16YXBcIlxuICAgICAgICAgICAgb25DbGljaz17aW50ZXJydXB0LmJpbmQodGhpcywga2VybmVsKX1cbiAgICAgICAgICAgIHRpdGxlPVwiSW50ZXJydXB0IGtlcm5lbFwiXG4gICAgICAgICAgICBrZXk9e2Ake2tleX1pbnRlcnJ1cHRgfVxuICAgICAgICAgIC8+LFxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJpY29uIGljb24tc3luY1wiXG4gICAgICAgICAgICBvbkNsaWNrPXtyZXN0YXJ0LmJpbmQodGhpcywga2VybmVsKX1cbiAgICAgICAgICAgIHRpdGxlPVwiUmVzdGFydCBrZXJuZWxcIlxuICAgICAgICAgICAga2V5PXtgJHtrZXl9cmVzdGFydGB9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImljb24gaWNvbi10cmFzaGNhblwiXG4gICAgICAgICAgICBvbkNsaWNrPXtzaHV0ZG93bi5iaW5kKHRoaXMsIGtlcm5lbCl9XG4gICAgICAgICAgICB0aXRsZT1cIlNodXRkb3duIGtlcm5lbFwiXG4gICAgICAgICAgICBrZXk9e2Ake2tleX1zaHV0ZG93bmB9XG4gICAgICAgICAgLz4sXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgICAgd2lkdGg6IDE1MCxcbiAgICB9LFxuICAgIHtcbiAgICAgIEhlYWRlcjogXCJGaWxlc1wiLFxuICAgICAgYWNjZXNzb3I6IFwiZmlsZXNcIixcbiAgICAgIENlbGw6IChwcm9wcykgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcHMudmFsdWUubWFwKChmaWxlUGF0aCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSBpbmRleCA9PT0gMCA/IFwiXCIgOiBcIiAgfCAgXCI7XG4gICAgICAgICAgY29uc3QgYm9keSA9IGlzVW5zYXZlZEZpbGVQYXRoKGZpbGVQYXRoKSA/IChcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29wZW5VbnNhdmVkRWRpdG9yLmJpbmQodGhpcywgZmlsZVBhdGgpfVxuICAgICAgICAgICAgICB0aXRsZT1cIkp1bXAgdG8gZmlsZVwiXG4gICAgICAgICAgICAgIGtleT17YCR7ZmlsZVBhdGh9anVtcGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtmaWxlUGF0aH1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgb25DbGljaz17b3BlbkVkaXRvci5iaW5kKHRoaXMsIGZpbGVQYXRoKX1cbiAgICAgICAgICAgICAgdGl0bGU9XCJKdW1wIHRvIGZpbGVcIlxuICAgICAgICAgICAgICBrZXk9e2Ake2ZpbGVQYXRofWp1bXBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dGlsZGlmeShmaWxlUGF0aCl9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiLXdlYmtpdC1pbmxpbmUtYm94XCIsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGtleT17ZmlsZVBhdGh9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzZXBhcmF0b3J9XG4gICAgICAgICAgICAgIHtib2R5fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICB3aGl0ZVNwYWNlOiBcInByZS13cmFwXCIsXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG4gIHJldHVybiA8UmVhY3RUYWJsZSBkYXRhPXtkYXRhfSBjb2x1bW5zPXtjb2x1bW5zfSAvPjtcbn0pO1xuS2VybmVsTW9uaXRvci5kaXNwbGF5TmFtZSA9IFwiS2VybmVsTW9uaXRvclwiO1xuZXhwb3J0IGRlZmF1bHQgS2VybmVsTW9uaXRvcjtcbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvY29tcG9uZW50cy9rZXJuZWwtbW9uaXRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDJEQUE2RDtBQUU3RCwyQ0FBc0M7QUFDdEMsc0RBQThCO0FBRzlCLG9DQUE2QztBQUc3QyxNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQWMsRUFBRSxFQUFFO0lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFO1FBQ2xELE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7SUFDbkMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7SUFDbEMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO0lBQ2pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBSUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtJQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQzdELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMs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SixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLFVBQVUsRUFBRSxVQUFVO2FBQ3ZCO1NBQ0Y7S0FDRixDQUFDO0lBQ0YsT0FBTyw4QkFBQyxxQkFBVSxJQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sR0FBSSxDQUFDO0FBQ3RELENBQUMsQ0FBQyxDQUFDO0FBQ0gsYUFBYSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7QUFDNUMsa0JBQWUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUmVhY3RUYWJsZSwgeyBSZWFjdFRhYmxlRGVmYXVsdHMgfSBmcm9tIFwicmVhY3QtdGFibGVcIjtcclxuXHJcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcclxuaW1wb3J0IHRpbGRpZnkgZnJvbSBcInRpbGRpZnlcIjtcclxudHlwZSBzdG9yZSA9IHR5cGVvZiBpbXBvcnQoXCIuLi9zdG9yZVwiKS5kZWZhdWx0O1xyXG5pbXBvcnQgS2VybmVsIGZyb20gXCIuLi9rZXJuZWxcIjtcclxuaW1wb3J0IHsgaXNVbnNhdmVkRmlsZVBhdGggfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgeyBLZXJuZWxzcGVjTWV0YWRhdGEgfSBmcm9tIFwiQG50ZXJhY3QvdHlwZXNcIjtcclxuXHJcbmNvbnN0IHNob3dLZXJuZWxTcGVjID0gKGtlcm5lbFNwZWM6IHt9KSA9PiB7XHJcbiAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEluZm8oXCJIeWRyb2dlbjogS2VybmVsIFNwZWNcIiwge1xyXG4gICAgZGV0YWlsOiBKU09OLnN0cmluZ2lmeShrZXJuZWxTcGVjLCBudWxsLCAyKSxcclxuICAgIGRpc21pc3NhYmxlOiB0cnVlLFxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgaW50ZXJydXB0ID0gKGtlcm5lbDogS2VybmVsKSA9PiB7XHJcbiAga2VybmVsLmludGVycnVwdCgpO1xyXG59O1xyXG5cclxuY29uc3Qgc2h1dGRvd24gPSAoa2VybmVsOiBLZXJuZWwpID0+IHtcclxuICBrZXJuZWwuc2h1dGRvd24oKTtcclxuICBrZXJuZWwuZGVzdHJveSgpO1xyXG59O1xyXG5cclxuY29uc3QgcmVzdGFydCA9IChrZXJuZWw6IEtlcm5lbCkgPT4ge1xyXG4gIGtlcm5lbC5yZXN0YXJ0KHVuZGVmaW5lZCk7XHJcbn07XHJcblxyXG4vLyBAVE9ETyBJZiBvdXIgc3RvcmUgaG9sZHMgZWRpdG9yIElEcyBpbnN0ZWFkIG9mIGZpbGUgcGF0aHMsIHRoZXNlIG1lc3N5IG1hdGNoaW5nIHN0dWZmIGJlbG93IHdvdWxkXHJcbi8vICAgICAgIGVhc2lseSBiZSByZXBsYWNlZCBieSBzaW1wbGVyIGNvZGUuIFNlZSBhbHNvIGNvbXBvbmVudHMva2VybmVsLW1vbml0b3IuanMgZm9yIHRoaXMgcHJvYmxlbS5cclxuY29uc3Qgb3BlblVuc2F2ZWRFZGl0b3IgPSAoZmlsZVBhdGg6IHN0cmluZykgPT4ge1xyXG4gIGNvbnN0IGVkaXRvciA9IGF0b20ud29ya3NwYWNlLmdldFRleHRFZGl0b3JzKCkuZmluZCgoZWRpdG9yKSA9PiB7XHJcbiAgICBjb25zdCBtYXRjaCA9IGZpbGVQYXRoLm1hdGNoKC9cXGQrLyk7XHJcblxyXG4gICAgaWYgKCFtYXRjaCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFN0cmluZyhlZGl0b3IuaWQpID09PSBtYXRjaFswXTtcclxuICB9KTtcclxuICAvLyBUaGlzIHBhdGggd29uJ3QgaGFwcGVuIGFmdGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9udGVyYWN0L2h5ZHJvZ2VuL3B1bGwvMTY2MiBzaW5jZSBldmVyeSBkZWxldGVkXHJcbiAgLy8gZWRpdG9ycyB3b3VsZCBiZSBkZWxldGVkIGZyb20gYHN0b3JlLmtlcm5lbE1hcHBpbmdgLiBKdXN0IGtlcHQgaGVyZSBmb3Igc2FmZXR5LlxyXG4gIGlmICghZWRpdG9yKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGF0b20ud29ya3NwYWNlLm9wZW4oZWRpdG9yLCB7XHJcbiAgICBzZWFyY2hBbGxQYW5lczogdHJ1ZSxcclxuICB9KTtcclxufTtcclxuXHJcbmNvbnN0IG9wZW5FZGl0b3IgPSAoZmlsZVBhdGg6IHN0cmluZykgPT4ge1xyXG4gIGF0b20ud29ya3NwYWNlXHJcbiAgICAub3BlbihmaWxlUGF0aCwge1xyXG4gICAgICBzZWFyY2hBbGxQYW5lczogdHJ1ZSxcclxuICAgIH0pXHJcbiAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXCJIeWRyb2dlblwiLCB7XHJcbiAgICAgICAgZGVzY3JpcHRpb246IGVycixcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxufTtcclxuXHJcbnR5cGUgS2VybmVsSW5mbyA9IHtcclxuICB2YWx1ZToge1xyXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcclxuICAgIGtlcm5lbFNwZWM6IEtlcm5lbHNwZWNNZXRhZGF0YTtcclxuICB9O1xyXG59O1xyXG5cclxuY29uc3Qga2VybmVsSW5mb0NlbGwgPSAocHJvcHM6IEtlcm5lbEluZm8pID0+IHtcclxuICBjb25zdCB7IGRpc3BsYXlOYW1lLCBrZXJuZWxTcGVjIH0gPSBwcm9wcy52YWx1ZTtcclxuICByZXR1cm4gKFxyXG4gICAgPGFcclxuICAgICAgY2xhc3NOYW1lPVwiaWNvblwiXHJcbiAgICAgIG9uQ2xpY2s9e3Nob3dLZXJuZWxTcGVjLmJpbmQodGhpcywga2VybmVsU3BlYyl9XHJcbiAgICAgIHRpdGxlPVwiU2hvdyBrZXJuZWwgc3BlY1wiXHJcbiAgICAgIGtleT17YCR7ZGlzcGxheU5hbWV9a2VybmVsSW5mb2B9XHJcbiAgICA+XHJcbiAgICAgIHtkaXNwbGF5TmFtZX1cclxuICAgIDwvYT5cclxuICApO1xyXG59O1xyXG5cclxuLy8gU2V0IGRlZmF1bHQgcHJvcGVydGllcyBvZiBSZWFjdC1UYWJsZVxyXG5PYmplY3QuYXNzaWduKFJlYWN0VGFibGVEZWZhdWx0cywge1xyXG4gIGNsYXNzTmFtZTogXCJrZXJuZWwtbW9uaXRvclwiLFxyXG4gIHNob3dQYWdpbmF0aW9uOiBmYWxzZSxcclxufSk7XHJcbk9iamVjdC5hc3NpZ24oUmVhY3RUYWJsZURlZmF1bHRzLmNvbHVtbiwge1xyXG4gIGNsYXNzTmFtZTogXCJ0YWJsZS1jZWxsXCIsXHJcbiAgaGVhZGVyQ2xhc3NOYW1lOiBcInRhYmxlLWhlYWRlclwiLFxyXG4gIHN0eWxlOiB7XHJcbiAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgfSxcclxufSk7XHJcbmNvbnN0IEtlcm5lbE1vbml0b3IgPSBvYnNlcnZlcigoeyBzdG9yZSB9OiB7IHN0b3JlOiBzdG9yZSB9KSA9PiB7XHJcbiAgaWYgKHN0b3JlLnJ1bm5pbmdLZXJuZWxzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPHVsIGNsYXNzTmFtZT1cImJhY2tncm91bmQtbWVzc2FnZSBjZW50ZXJlZFwiPlxyXG4gICAgICAgIDxsaT5ObyBydW5uaW5nIGtlcm5lbHM8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGRhdGEgPSBzdG9yZS5ydW5uaW5nS2VybmVscy5tYXAoKGtlcm5lbCwga2V5OiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdhdGV3YXk6IGtlcm5lbC50cmFuc3BvcnQuZ2F0ZXdheU5hbWUgfHwgXCJMb2NhbFwiLFxyXG4gICAgICBrZXJuZWxJbmZvOiB7XHJcbiAgICAgICAgZGlzcGxheU5hbWU6IGtlcm5lbC5kaXNwbGF5TmFtZSxcclxuICAgICAgICBrZXJuZWxTcGVjOiBrZXJuZWwua2VybmVsU3BlYyxcclxuICAgICAgfSxcclxuICAgICAgc3RhdHVzOiBrZXJuZWwuZXhlY3V0aW9uU3RhdGUsXHJcbiAgICAgIGV4ZWN1dGlvbkNvdW50OiBrZXJuZWwuZXhlY3V0aW9uQ291bnQsXHJcbiAgICAgIGxhc3RFeGVjdXRpb25UaW1lOiBrZXJuZWwubGFzdEV4ZWN1dGlvblRpbWUsXHJcbiAgICAgIGtlcm5lbEtleToge1xyXG4gICAgICAgIGtlcm5lbCxcclxuICAgICAgICBrZXk6IFN0cmluZyhrZXkpLFxyXG4gICAgICB9LFxyXG4gICAgICBmaWxlczogc3RvcmUuZ2V0RmlsZXNGb3JLZXJuZWwoa2VybmVsKSxcclxuICAgIH07XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGNvbHVtbnMgPSBbXHJcbiAgICB7XHJcbiAgICAgIEhlYWRlcjogXCJHYXRld2F5XCIsXHJcbiAgICAgIGFjY2Vzc29yOiBcImdhdGV3YXlcIixcclxuICAgICAgbWF4V2lkdGg6IDEyNSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIEhlYWRlcjogXCJLZXJuZWxcIixcclxuICAgICAgYWNjZXNzb3I6IFwia2VybmVsSW5mb1wiLFxyXG4gICAgICBDZWxsOiBrZXJuZWxJbmZvQ2VsbCxcclxuICAgICAgbWF4V2lkdGg6IDEyNSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIEhlYWRlcjogXCJTdGF0dXNcIixcclxuICAgICAgYWNjZXNzb3I6IFwic3RhdHVzXCIsXHJcbiAgICAgIG1heFdpZHRoOiAxMDAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBIZWFkZXI6IFwiQ291bnRcIixcclxuICAgICAgYWNjZXNzb3I6IFwiZXhlY3V0aW9uQ291bnRcIixcclxuICAgICAgbWF4V2lkdGg6IDUwLFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIHRleHRBbGlnbjogXCJyaWdodFwiLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgSGVhZGVyOiBcIkxhc3QgRXhlYyBUaW1lXCIsXHJcbiAgICAgIGFjY2Vzc29yOiBcImxhc3RFeGVjdXRpb25UaW1lXCIsXHJcbiAgICAgIG1heFdpZHRoOiAxMDAsXHJcbiAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgdGV4dEFsaWduOiBcInJpZ2h0XCIsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBIZWFkZXI6IFwiTWFuYWdlbWVudHNcIixcclxuICAgICAgYWNjZXNzb3I6IFwia2VybmVsS2V5XCIsXHJcbiAgICAgIENlbGw6IChwcm9wcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsga2VybmVsLCBrZXkgfSA9IHByb3BzLnZhbHVlO1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJpY29uIGljb24temFwXCJcclxuICAgICAgICAgICAgb25DbGljaz17aW50ZXJydXB0LmJpbmQodGhpcywga2VybmVsKX1cclxuICAgICAgICAgICAgdGl0bGU9XCJJbnRlcnJ1cHQga2VybmVsXCJcclxuICAgICAgICAgICAga2V5PXtgJHtrZXl9aW50ZXJydXB0YH1cclxuICAgICAgICAgIC8+LFxyXG4gICAgICAgICAgPGFcclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaWNvbiBpY29uLXN5bmNcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXtyZXN0YXJ0LmJpbmQodGhpcywga2VybmVsKX1cclxuICAgICAgICAgICAgdGl0bGU9XCJSZXN0YXJ0IGtlcm5lbFwiXHJcbiAgICAgICAgICAgIGtleT17YCR7a2V5fXJlc3RhcnRgfVxyXG4gICAgICAgICAgLz4sXHJcbiAgICAgICAgICA8YVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJpY29uIGljb24tdHJhc2hjYW5cIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXtzaHV0ZG93bi5iaW5kKHRoaXMsIGtlcm5lbCl9XHJcbiAgICAgICAgICAgIHRpdGxlPVwiU2h1dGRvd24ga2VybmVsXCJcclxuICAgICAgICAgICAga2V5PXtgJHtrZXl9c2h1dGRvd25gfVxyXG4gICAgICAgICAgLz4sXHJcbiAgICAgICAgXTtcclxuICAgICAgfSxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIEhlYWRlcjogXCJGaWxlc1wiLFxyXG4gICAgICBhY2Nlc3NvcjogXCJmaWxlc1wiLFxyXG4gICAgICBDZWxsOiAocHJvcHMpID0+IHtcclxuICAgICAgICByZXR1cm4gcHJvcHMudmFsdWUubWFwKChmaWxlUGF0aCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IGluZGV4ID09PSAwID8gXCJcIiA6IFwiICB8ICBcIjtcclxuICAgICAgICAgIGNvbnN0IGJvZHkgPSBpc1Vuc2F2ZWRGaWxlUGF0aChmaWxlUGF0aCkgPyAoXHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgb25DbGljaz17b3BlblVuc2F2ZWRFZGl0b3IuYmluZCh0aGlzLCBmaWxlUGF0aCl9XHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJKdW1wIHRvIGZpbGVcIlxyXG4gICAgICAgICAgICAgIGtleT17YCR7ZmlsZVBhdGh9anVtcGB9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7ZmlsZVBhdGh9XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgb25DbGljaz17b3BlbkVkaXRvci5iaW5kKHRoaXMsIGZpbGVQYXRoKX1cclxuICAgICAgICAgICAgICB0aXRsZT1cIkp1bXAgdG8gZmlsZVwiXHJcbiAgICAgICAgICAgICAga2V5PXtgJHtmaWxlUGF0aH1qdW1wYH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0aWxkaWZ5KGZpbGVQYXRoKX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCItd2Via2l0LWlubGluZS1ib3hcIixcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGtleT17ZmlsZVBhdGh9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2VwYXJhdG9yfVxyXG4gICAgICAgICAgICAgIHtib2R5fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdoaXRlU3BhY2U6IFwicHJlLXdyYXBcIixcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgXTtcclxuICByZXR1cm4gPFJlYWN0VGFibGUgZGF0YT17ZGF0YX0gY29sdW1ucz17Y29sdW1uc30gLz47XHJcbn0pO1xyXG5LZXJuZWxNb25pdG9yLmRpc3BsYXlOYW1lID0gXCJLZXJuZWxNb25pdG9yXCI7XHJcbmV4cG9ydCBkZWZhdWx0IEtlcm5lbE1vbml0b3I7XHJcbiJdfQ== \ No newline at end of file diff --git a/dist/components/output-area.d.ts b/dist/components/output-area.d.ts deleted file mode 100644 index 64c3f07a3..000000000 --- a/dist/components/output-area.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import React from "react"; -declare type store = typeof import("../store").default; -declare class OutputArea extends React.Component<{ - store: store; -}> { - showHistory: boolean; - setHistory: () => void; - setScrollList: () => void; - getOutputText(output: Record): string | null | undefined; - handleClick: () => void; - render(): JSX.Element; -} -export default OutputArea; diff --git a/dist/components/result-view/display.d.ts b/dist/components/result-view/display.d.ts deleted file mode 100644 index 97cace356..000000000 --- a/dist/components/result-view/display.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import React from "react"; -export declare const supportedMediaTypes: JSX.Element; -export declare function isTextOutputOnly(data: Record): boolean; -declare class Display extends React.Component<{ - output: any; -}> { - render(): JSX.Element; -} -export default Display; diff --git a/dist/components/result-view/history.d.ts b/dist/components/result-view/history.d.ts deleted file mode 100644 index 7a808d65f..000000000 --- a/dist/components/result-view/history.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type OutputStore from "../../store/output"; -declare const History: ({ store }: { - store: OutputStore; -}) => JSX.Element; -export default History; diff --git a/dist/components/result-view/index.d.ts b/dist/components/result-view/index.d.ts deleted file mode 100644 index 739157de1..000000000 --- a/dist/components/result-view/index.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { CompositeDisposable, TextEditor, DisplayMarker } from "atom"; -import OutputStore from "../../store/output"; -import type MarkerStore from "../../store/markers"; -import type Kernel from "../../kernel"; -export default class ResultView { - disposer: CompositeDisposable; - marker: DisplayMarker; - outputStore: OutputStore; - destroy: () => void; - constructor(markerStore: MarkerStore, kernel: Kernel | null | undefined, editor: TextEditor, row: number, showResult?: boolean); -} diff --git a/dist/components/result-view/list.d.ts b/dist/components/result-view/list.d.ts deleted file mode 100644 index eb84b88bb..000000000 --- a/dist/components/result-view/list.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -declare type Props = { - outputs: Array>; -}; -declare class ScrollList extends React.Component { - el: HTMLElement | null | undefined; - scrollToBottom(): void; - componentDidUpdate(): void; - componentDidMount(): void; - render(): JSX.Element; -} -export default ScrollList; diff --git a/dist/components/result-view/markdown.d.ts b/dist/components/result-view/markdown.d.ts deleted file mode 100644 index fde01bd3d..000000000 --- a/dist/components/result-view/markdown.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import React from "react"; -interface Props { - data: string; - mediaType: "text/markdown"; -} -export declare class Markdown extends React.PureComponent { - static defaultProps: { - data: string; - mediaType: string; - }; - render(): JSX.Element; -} -export default Markdown; diff --git a/dist/components/result-view/plotly.d.ts b/dist/components/result-view/plotly.d.ts deleted file mode 100644 index 5c48b59e0..000000000 --- a/dist/components/result-view/plotly.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import * as React from "react"; -interface Props { - data: string | Record; - mediaType: "application/vnd.plotly.v1+json"; -} -declare type ObjectType = Record; -interface FigureLayout extends ObjectType { - height?: string; - autosize?: boolean; -} -interface Figure extends ObjectType { - data: Record; - layout: FigureLayout; -} -declare class PlotlyHTMLElement extends HTMLDivElement { - data: Record; - layout: Record; - newPlot: () => void; - redraw: () => void; -} -export declare class PlotlyTransform extends React.Component { - static defaultProps: { - data: string; - mediaType: string; - }; - plotDiv: HTMLDivElement | null; - Plotly: { - newPlot: (div: HTMLDivElement | null | void, data: Record, layout: FigureLayout) => void; - redraw: (div?: PlotlyHTMLElement) => void; - toImage: (gd: any) => Promise; - }; - constructor(props: Props); - componentDidMount(): void; - shouldComponentUpdate(nextProps: Props): boolean; - componentDidUpdate(): void; - plotDivRef: (plotDiv: HTMLDivElement | null) => void; - getFigure: () => Figure; - downloadImage: (gd: any) => void; - render(): JSX.Element; -} -export default PlotlyTransform; diff --git a/dist/components/result-view/plotly.js b/dist/components/result-view/plotly.js index a86e67ea5..4a114791a 100644 --- a/dist/components/result-view/plotly.js +++ b/dist/components/result-view/plotly.js @@ -18,9 +18,12 @@ var __importStar = (this && this.__importStar) || function (mod) { __setModuleDefault(result, mod); return result; }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.PlotlyTransform = void 0; -const lodash_1 = require("lodash"); +const cloneDeep_1 = __importDefault(require("lodash/cloneDeep")); const React = __importStar(require("react")); class PlotlyTransform extends React.Component { constructor(props) { @@ -34,7 +37,7 @@ class PlotlyTransform extends React.Component { return JSON.parse(figure); } if (Object.isFrozen(figure)) { - return lodash_1.cloneDeep(figure); + return cloneDeep_1.default(figure); } const { data = {}, layout = {} } = figure; return { @@ -92,4 +95,4 @@ PlotlyTransform.defaultProps = { mediaType: "application/vnd.plotly.v1+json", }; exports.default = PlotlyTransform; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdGx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvcmVzdWx0LXZpZXcvcGxvdGx5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsbUNBQW1DO0FBQ25DLDZDQUErQjtBQXNCL0IsTUFBYSxlQUFnQixTQUFRLEtBQUssQ0FBQyxTQUFnQjtJQWdCekQsWUFBWSxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQXFDZixlQUFVLEdBQUcsQ0FBQyxPQUE4QixFQUFRLEVBQUU7WUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBQ0YsY0FBUyxHQUFHLEdBQVcsRUFBRTtZQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUUvQixJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtnQkFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzNCO1lBSUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMzQixPQUFPLGtCQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDMUI7WUFFRCxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQzFDLE9BQU87Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLGtCQUFhLEdBQUcsQ0FBQyxFQUFPLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPO2dCQUM1QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUE4QixDQUFDO2dCQUVsRSxRQUFRLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBaEVBLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGlCQUFpQjtRQUVmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQzVELHNCQUFzQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ25DLG1CQUFtQixFQUFFO2dCQUNuQjtvQkFDRSxJQUFJLEVBQUUsd0JBQXdCO29CQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTTtvQkFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhO2lCQUMxQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLFNBQWdCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFFRCxNQUFNLE9BQU8sR0FBc0IsSUFBSSxDQUFDLE9BQWMsQ0FBQztRQUN2RCxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDM0IsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFnQ0QsTUFBTTtRQUNKLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQXdCLEVBQUUsQ0FBQztRQUV0QyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUMvQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDOUI7UUFFRCxPQUFPLDZCQUFLLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUksQ0FBQztJQUNyRCxDQUFDOztBQTdGSCwwQ0E4RkM7QUE3RlEsNEJBQVksR0FBRztJQUNwQixJQUFJLEVBQUUsRUFBRTtJQUNSLFNBQVMsRUFBRSxnQ0FBZ0M7Q0FDNUMsQ0FBQztBQTJGSixrQkFBZSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFkYXB0ZWQgZnJvbVxuICogaHR0cHM6Ly9naXRodWIuY29tL250ZXJhY3QvbnRlcmFjdC9ibG9iL21hc3Rlci9wYWNrYWdlcy90cmFuc2Zvcm0tcGxvdGx5L3NyYy9pbmRleC50c3hcbiAqIENvcHlyaWdodCAoYykgMjAxNiAtIHByZXNlbnQsIG50ZXJhY3QgY29udHJpYnV0b3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgbGljZW5zZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluXG4gKiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKiBATk9URTogVGhpcyBgUGxvdGx5VHJhbnNmb3JtYCBjb21wb25lbnQgY291bGQgYmUgdXNlZCBleGFjdGx5IHNhbWUgYXMgdGhlIG9yaWdpbmFsIGBQbG90bHlUcmFuc2Zvcm1gIGNvbXBvbmVudCBvZiBAbnRlcmFjdC90cmFuc2Zvcm0tcGxvdGx5LFxuICogICAgICAgIGV4Y2VwdCB0aGF0IHRoaXMgZmlsZSBhZGRzIHRoZSBhYmlsaXR5IHRvIGRvd25sb2FkIGEgcGxvdCBmcm9tIGFuIGVsZWN0cm9uIGNvbnRleHQuXG4gKi9cbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW50ZXJmYWNlIFByb3BzIHtcbiAgZGF0YTogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWVkaWFUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5wbG90bHkudjEranNvblwiO1xufVxudHlwZSBPYmplY3RUeXBlID0gUmVjb3JkPHN0cmluZywgYW55PjtcbmludGVyZmFjZSBGaWd1cmVMYXlvdXQgZXh0ZW5kcyBPYmplY3RUeXBlIHtcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICBhdXRvc2l6ZT86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgRmlndXJlIGV4dGVuZHMgT2JqZWN0VHlwZSB7XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGxheW91dDogRmlndXJlTGF5b3V0O1xufVxuXG5kZWNsYXJlIGNsYXNzIFBsb3RseUhUTUxFbGVtZW50IGV4dGVuZHMgSFRNTERpdkVsZW1lbnQge1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBsYXlvdXQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG5ld1Bsb3Q6ICgpID0+IHZvaWQ7XG4gIHJlZHJhdzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFBsb3RseVRyYW5zZm9ybSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcz4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGRhdGE6IFwiXCIsXG4gICAgbWVkaWFUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5wbG90bHkudjEranNvblwiLFxuICB9O1xuICBwbG90RGl2OiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG4gIFBsb3RseToge1xuICAgIG5ld1Bsb3Q6IChcbiAgICAgIGRpdjogSFRNTERpdkVsZW1lbnQgfCBudWxsIHwgdm9pZCxcbiAgICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICBsYXlvdXQ6IEZpZ3VyZUxheW91dFxuICAgICkgPT4gdm9pZDtcbiAgICByZWRyYXc6IChkaXY/OiBQbG90bHlIVE1MRWxlbWVudCkgPT4gdm9pZDtcbiAgICB0b0ltYWdlOiAoZ2Q6IGFueSkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLmRvd25sb2FkSW1hZ2UgPSB0aGlzLmRvd25sb2FkSW1hZ2UuYmluZCh0aGlzKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBjYXNlIG9mIGVpdGhlciBzdHJpbmcgdG8gYmUgYEpTT04ucGFyc2VgZCBvciBwdXJlIG9iamVjdFxuICAgIGNvbnN0IGZpZ3VyZSA9IHRoaXMuZ2V0RmlndXJlKCk7XG4gICAgdGhpcy5QbG90bHkgPSByZXF1aXJlKFwiQG50ZXJhY3QvcGxvdGx5XCIpO1xuICAgIHRoaXMuUGxvdGx5Lm5ld1Bsb3QodGhpcy5wbG90RGl2LCBmaWd1cmUuZGF0YSwgZmlndXJlLmxheW91dCwge1xuICAgICAgbW9kZUJhckJ1dHRvbnNUb1JlbW92ZTogW1widG9JbWFnZVwiXSxcbiAgICAgIG1vZGVCYXJCdXR0b25zVG9BZGQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiRG93bmxvYWQgcGxvdCBhcyBhIHBuZ1wiLFxuICAgICAgICAgIGljb246IHRoaXMuUGxvdGx5Lkljb25zLmNhbWVyYSxcbiAgICAgICAgICBjbGljazogdGhpcy5kb3dubG9hZEltYWdlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHM6IFByb3BzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGF0YSAhPT0gbmV4dFByb3BzLmRhdGE7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgY29uc3QgZmlndXJlID0gdGhpcy5nZXRGaWd1cmUoKTtcblxuICAgIGlmICghdGhpcy5wbG90RGl2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGxvdERpdjogUGxvdGx5SFRNTEVsZW1lbnQgPSB0aGlzLnBsb3REaXYgYXMgYW55O1xuICAgIHBsb3REaXYuZGF0YSA9IGZpZ3VyZS5kYXRhO1xuICAgIHBsb3REaXYubGF5b3V0ID0gZmlndXJlLmxheW91dDtcbiAgICB0aGlzLlBsb3RseS5yZWRyYXcocGxvdERpdik7XG4gIH1cblxuICBwbG90RGl2UmVmID0gKHBsb3REaXY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCk6IHZvaWQgPT4ge1xuICAgIHRoaXMucGxvdERpdiA9IHBsb3REaXY7XG4gIH07XG4gIGdldEZpZ3VyZSA9ICgpOiBGaWd1cmUgPT4ge1xuICAgIGNvbnN0IGZpZ3VyZSA9IHRoaXMucHJvcHMuZGF0YTtcblxuICAgIGlmICh0eXBlb2YgZmlndXJlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShmaWd1cmUpO1xuICAgIH1cblxuICAgIC8vIFRoZSBQbG90bHkgQVBJICptdXRhdGVzKiB0aGUgZmlndXJlIHRvIGluY2x1ZGUgYSBVSUQsIHdoaWNoIG1lYW5zXG4gICAgLy8gdGhleSB3b24ndCB0YWtlIG91ciBmcm96ZW4gb2JqZWN0c1xuICAgIGlmIChPYmplY3QuaXNGcm96ZW4oZmlndXJlKSkge1xuICAgICAgcmV0dXJuIGNsb25lRGVlcChmaWd1cmUpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCBsYXlvdXQgPSB7fSB9ID0gZmlndXJlO1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgbGF5b3V0LFxuICAgIH07XG4gIH07XG4gIGRvd25sb2FkSW1hZ2UgPSAoZ2Q6IGFueSkgPT4ge1xuICAgIHRoaXMuUGxvdGx5LnRvSW1hZ2UoZ2QpLnRoZW4oZnVuY3Rpb24gKGRhdGFVcmwpIHtcbiAgICAgIGNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZShcImVsZWN0cm9uXCIpIGFzIHR5cGVvZiBpbXBvcnQoXCJlbGVjdHJvblwiKTtcblxuICAgICAgZWxlY3Ryb24ucmVtb3RlLmdldEN1cnJlbnRXZWJDb250ZW50cygpLmRvd25sb2FkVVJMKGRhdGFVcmwpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGxheW91dCB9ID0gdGhpcy5nZXRGaWd1cmUoKTtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgaWYgKGxheW91dCAmJiBsYXlvdXQuaGVpZ2h0ICYmICFsYXlvdXQuYXV0b3NpemUpIHtcbiAgICAgIHN0eWxlLmhlaWdodCA9IGxheW91dC5oZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxkaXYgcmVmPXt0aGlzLnBsb3REaXZSZWZ9IHN0eWxlPXtzdHlsZX0gLz47XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFBsb3RseVRyYW5zZm9ybTtcbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvdGx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvcmVzdWx0LXZpZXcvcGxvdGx5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsaUVBQXlDO0FBQ3pDLDZDQUErQjtBQXNCL0IsTUFBYSxlQUFnQixTQUFRLEtBQUssQ0FBQyxTQUFnQjtJQWdCekQsWUFBWSxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQXFDZixlQUFVLEdBQUcsQ0FBQyxPQUE4QixFQUFRLEVBQUU7WUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBQ0YsY0FBUyxHQUFHLEdBQVcsRUFBRTtZQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUUvQixJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtnQkFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzNCO1lBSUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMzQixPQUFPLG1CQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDMUI7WUFFRCxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQzFDLE9BQU87Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLGtCQUFhLEdBQUcsQ0FBQyxFQUFPLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPO2dCQUM1QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUE4QixDQUFDO2dCQUVsRSxRQUFRLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBaEVBLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGlCQUFpQjtRQUVmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQzVELHNCQUFzQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ25DLG1CQUFtQixFQUFFO2dCQUNuQjtvQkFDRSxJQUFJLEVBQUUsd0JBQXdCO29CQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTTtvQkFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhO2lCQUMxQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLFNBQWdCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFFRCxNQUFNLE9BQU8sR0FBc0IsSUFBSSxDQUFDLE9BQWMsQ0FBQztRQUN2RCxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDM0IsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFnQ0QsTUFBTTtRQUNKLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQXdCLEVBQUUsQ0FBQztRQUV0QyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUMvQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDOUI7UUFFRCxPQUFPLDZCQUFLLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUksQ0FBQztJQUNyRCxDQUFDOztBQTdGSCwwQ0E4RkM7QUE3RlEsNEJBQVksR0FBRztJQUNwQixJQUFJLEVBQUUsRUFBRTtJQUNSLFNBQVMsRUFBRSxnQ0FBZ0M7Q0FDNUMsQ0FBQztBQTJGSixrQkFBZSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQWRhcHRlZCBmcm9tXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9udGVyYWN0L250ZXJhY3QvYmxvYi9tYXN0ZXIvcGFja2FnZXMvdHJhbnNmb3JtLXBsb3RseS9zcmMvaW5kZXgudHN4XHJcbiAqIENvcHlyaWdodCAoYykgMjAxNiAtIHByZXNlbnQsIG50ZXJhY3QgY29udHJpYnV0b3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIGxpY2Vuc2UgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpblxyXG4gKiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cclxuICpcclxuICogQE5PVEU6IFRoaXMgYFBsb3RseVRyYW5zZm9ybWAgY29tcG9uZW50IGNvdWxkIGJlIHVzZWQgZXhhY3RseSBzYW1lIGFzIHRoZSBvcmlnaW5hbCBgUGxvdGx5VHJhbnNmb3JtYCBjb21wb25lbnQgb2YgQG50ZXJhY3QvdHJhbnNmb3JtLXBsb3RseSxcclxuICogICAgICAgIGV4Y2VwdCB0aGF0IHRoaXMgZmlsZSBhZGRzIHRoZSBhYmlsaXR5IHRvIGRvd25sb2FkIGEgcGxvdCBmcm9tIGFuIGVsZWN0cm9uIGNvbnRleHQuXHJcbiAqL1xyXG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gXCJsb2Rhc2gvY2xvbmVEZWVwXCI7XHJcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbnRlcmZhY2UgUHJvcHMge1xyXG4gIGRhdGE6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgbWVkaWFUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5wbG90bHkudjEranNvblwiO1xyXG59XHJcbnR5cGUgT2JqZWN0VHlwZSA9IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbmludGVyZmFjZSBGaWd1cmVMYXlvdXQgZXh0ZW5kcyBPYmplY3RUeXBlIHtcclxuICBoZWlnaHQ/OiBzdHJpbmc7XHJcbiAgYXV0b3NpemU/OiBib29sZWFuO1xyXG59XHJcbmludGVyZmFjZSBGaWd1cmUgZXh0ZW5kcyBPYmplY3RUeXBlIHtcclxuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIGxheW91dDogRmlndXJlTGF5b3V0O1xyXG59XHJcblxyXG5kZWNsYXJlIGNsYXNzIFBsb3RseUhUTUxFbGVtZW50IGV4dGVuZHMgSFRNTERpdkVsZW1lbnQge1xyXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgbGF5b3V0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIG5ld1Bsb3Q6ICgpID0+IHZvaWQ7XHJcbiAgcmVkcmF3OiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGxvdGx5VHJhbnNmb3JtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzPiB7XHJcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGRhdGE6IFwiXCIsXHJcbiAgICBtZWRpYVR5cGU6IFwiYXBwbGljYXRpb24vdm5kLnBsb3RseS52MStqc29uXCIsXHJcbiAgfTtcclxuICBwbG90RGl2OiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XHJcbiAgUGxvdGx5OiB7XHJcbiAgICBuZXdQbG90OiAoXHJcbiAgICAgIGRpdjogSFRNTERpdkVsZW1lbnQgfCBudWxsIHwgdm9pZCxcclxuICAgICAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgICAgbGF5b3V0OiBGaWd1cmVMYXlvdXRcclxuICAgICkgPT4gdm9pZDtcclxuICAgIHJlZHJhdzogKGRpdj86IFBsb3RseUhUTUxFbGVtZW50KSA9PiB2b2lkO1xyXG4gICAgdG9JbWFnZTogKGdkOiBhbnkpID0+IFByb21pc2U8c3RyaW5nPjtcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wczogUHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIHRoaXMuZG93bmxvYWRJbWFnZSA9IHRoaXMuZG93bmxvYWRJbWFnZS5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XHJcbiAgICAvLyBIYW5kbGUgY2FzZSBvZiBlaXRoZXIgc3RyaW5nIHRvIGJlIGBKU09OLnBhcnNlYGQgb3IgcHVyZSBvYmplY3RcclxuICAgIGNvbnN0IGZpZ3VyZSA9IHRoaXMuZ2V0RmlndXJlKCk7XHJcbiAgICB0aGlzLlBsb3RseSA9IHJlcXVpcmUoXCJAbnRlcmFjdC9wbG90bHlcIik7XHJcbiAgICB0aGlzLlBsb3RseS5uZXdQbG90KHRoaXMucGxvdERpdiwgZmlndXJlLmRhdGEsIGZpZ3VyZS5sYXlvdXQsIHtcclxuICAgICAgbW9kZUJhckJ1dHRvbnNUb1JlbW92ZTogW1widG9JbWFnZVwiXSxcclxuICAgICAgbW9kZUJhckJ1dHRvbnNUb0FkZDogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IFwiRG93bmxvYWQgcGxvdCBhcyBhIHBuZ1wiLFxyXG4gICAgICAgICAgaWNvbjogdGhpcy5QbG90bHkuSWNvbnMuY2FtZXJhLFxyXG4gICAgICAgICAgY2xpY2s6IHRoaXMuZG93bmxvYWRJbWFnZSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzOiBQcm9wcyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGF0YSAhPT0gbmV4dFByb3BzLmRhdGE7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICBjb25zdCBmaWd1cmUgPSB0aGlzLmdldEZpZ3VyZSgpO1xyXG5cclxuICAgIGlmICghdGhpcy5wbG90RGl2KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwbG90RGl2OiBQbG90bHlIVE1MRWxlbWVudCA9IHRoaXMucGxvdERpdiBhcyBhbnk7XHJcbiAgICBwbG90RGl2LmRhdGEgPSBmaWd1cmUuZGF0YTtcclxuICAgIHBsb3REaXYubGF5b3V0ID0gZmlndXJlLmxheW91dDtcclxuICAgIHRoaXMuUGxvdGx5LnJlZHJhdyhwbG90RGl2KTtcclxuICB9XHJcblxyXG4gIHBsb3REaXZSZWYgPSAocGxvdERpdjogSFRNTERpdkVsZW1lbnQgfCBudWxsKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLnBsb3REaXYgPSBwbG90RGl2O1xyXG4gIH07XHJcbiAgZ2V0RmlndXJlID0gKCk6IEZpZ3VyZSA9PiB7XHJcbiAgICBjb25zdCBmaWd1cmUgPSB0aGlzLnByb3BzLmRhdGE7XHJcblxyXG4gICAgaWYgKHR5cGVvZiBmaWd1cmUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZmlndXJlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGUgUGxvdGx5IEFQSSAqbXV0YXRlcyogdGhlIGZpZ3VyZSB0byBpbmNsdWRlIGEgVUlELCB3aGljaCBtZWFuc1xyXG4gICAgLy8gdGhleSB3b24ndCB0YWtlIG91ciBmcm96ZW4gb2JqZWN0c1xyXG4gICAgaWYgKE9iamVjdC5pc0Zyb3plbihmaWd1cmUpKSB7XHJcbiAgICAgIHJldHVybiBjbG9uZURlZXAoZmlndXJlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IGRhdGEgPSB7fSwgbGF5b3V0ID0ge30gfSA9IGZpZ3VyZTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGxheW91dCxcclxuICAgIH07XHJcbiAgfTtcclxuICBkb3dubG9hZEltYWdlID0gKGdkOiBhbnkpID0+IHtcclxuICAgIHRoaXMuUGxvdGx5LnRvSW1hZ2UoZ2QpLnRoZW4oZnVuY3Rpb24gKGRhdGFVcmwpIHtcclxuICAgICAgY29uc3QgZWxlY3Ryb24gPSByZXF1aXJlKFwiZWxlY3Ryb25cIikgYXMgdHlwZW9mIGltcG9ydChcImVsZWN0cm9uXCIpO1xyXG5cclxuICAgICAgZWxlY3Ryb24ucmVtb3RlLmdldEN1cnJlbnRXZWJDb250ZW50cygpLmRvd25sb2FkVVJMKGRhdGFVcmwpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBsYXlvdXQgfSA9IHRoaXMuZ2V0RmlndXJlKCk7XHJcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG5cclxuICAgIGlmIChsYXlvdXQgJiYgbGF5b3V0LmhlaWdodCAmJiAhbGF5b3V0LmF1dG9zaXplKSB7XHJcbiAgICAgIHN0eWxlLmhlaWdodCA9IGxheW91dC5oZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDxkaXYgcmVmPXt0aGlzLnBsb3REaXZSZWZ9IHN0eWxlPXtzdHlsZX0gLz47XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFBsb3RseVRyYW5zZm9ybTtcclxuIl19 \ No newline at end of file diff --git a/dist/components/result-view/result-view.d.ts b/dist/components/result-view/result-view.d.ts deleted file mode 100644 index 77c768836..000000000 --- a/dist/components/result-view/result-view.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { CompositeDisposable } from "atom"; -import React from "react"; -import type OutputStore from "../../store/output"; -import type Kernel from "../../kernel"; -declare type Props = { - store: OutputStore; - kernel: Kernel | null | undefined; - destroy: (...args: Array) => any; - showResult: boolean; -}; -declare class ResultViewComponent extends React.Component { - el: HTMLElement | null | undefined; - containerTooltip: CompositeDisposable; - buttonTooltip: CompositeDisposable; - closeTooltip: CompositeDisposable; - expanded: boolean; - getAllText: () => string; - handleClick: (event: React.MouseEvent) => void; - checkForSelection: (event: React.MouseEvent) => void; - copyToClipboard: () => void; - openInEditor: () => void; - addCopyTooltip: (element: HTMLElement | null | undefined, comp: CompositeDisposable) => void; - addCloseButtonTooltip: (element: HTMLElement | null | undefined, comp: CompositeDisposable) => void; - addCopyButtonTooltip: (element: HTMLElement | null | undefined) => void; - onWheel: (element: HTMLElement) => (event: WheelEvent) => void; - toggleExpand: () => void; - render(): JSX.Element; - scrollToBottom(): void; - componentDidUpdate(): void; - componentDidMount(): void; - componentWillUnmount(): void; -} -export default ResultViewComponent; diff --git a/dist/components/result-view/result-view.js b/dist/components/result-view/result-view.js index efbaa0ec1..9714c1445 100644 --- a/dist/components/result-view/result-view.js +++ b/dist/components/result-view/result-view.js @@ -111,7 +111,7 @@ let ResultViewComponent = class ResultViewComponent extends react_1.default.Comp marginTop: `-${position.lineHeight}px`, userSelect: "text", }; - if (outputs.length === 0 || this.props.showResult === false) { + if (outputs.length === 0 || !this.props.showResult) { const kernel = this.props.kernel; return (react_1.default.createElement(status_1.default, { status: kernel && kernel.executionState !== "busy" && status === "running" ? "error" @@ -152,8 +152,8 @@ let ResultViewComponent = class ResultViewComponent extends react_1.default.Comp } scrollToBottom() { if (!this.el || - this.expanded === true || - this.props.store.isPlain === true || + this.expanded || + this.props.store.isPlain || atom.config.get(`Hydrogen.autoScroll`) === false) { return; } @@ -186,4 +186,4 @@ ResultViewComponent = __decorate([ mobx_react_1.observer ], ResultViewComponent); exports.default = ResultViewComponent; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tcG9uZW50cy9yZXN1bHQtdmlldy9yZXN1bHQtdmlldy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBMkM7QUFDM0Msa0RBQTBCO0FBQzFCLDJDQUFzQztBQUN0QywrQkFBMEM7QUFDMUMsd0RBQWdDO0FBQ2hDLHNEQUE4QjtBQUc5QixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUM7QUFTMUIsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBb0IsU0FBUSxlQUFLLENBQUMsU0FBZ0I7SUFBeEQ7O1FBRUUscUJBQWdCLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFDO1FBQzdDLGtCQUFhLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFDO1FBRXpDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFHLEdBQUcsRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDWixPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUM7UUFDRixnQkFBVyxHQUFHLENBQUMsS0FBbUQsRUFBRSxFQUFFO1lBQ3BFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDO1FBQ0Ysc0JBQWlCLEdBQUcsQ0FBQyxLQUFtRCxFQUFFLEVBQUU7WUFD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UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0YsQ0FBQTtBQWhPQztJQURDLGlCQUFVOztxREFDZTtBQXlGMUI7SUFEQyxhQUFNOzt5REFHTDtBQWpHRSxtQkFBbUI7SUFEeEIscUJBQVE7R0FDSCxtQkFBbUIsQ0FzT3hCO0FBRUQsa0JBQWUsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb3NpdGVEaXNwb3NhYmxlIH0gZnJvbSBcImF0b21cIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcbmltcG9ydCB7IGFjdGlvbiwgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgRGlzcGxheSBmcm9tIFwiLi9kaXNwbGF5XCI7XG5pbXBvcnQgU3RhdHVzIGZyb20gXCIuL3N0YXR1c1wiO1xuaW1wb3J0IHR5cGUgT3V0cHV0U3RvcmUgZnJvbSBcIi4uLy4uL3N0b3JlL291dHB1dFwiO1xuaW1wb3J0IHR5cGUgS2VybmVsIGZyb20gXCIuLi8uLi9rZXJuZWxcIjtcbmNvbnN0IFNDUk9MTF9IRUlHSFQgPSA2MDA7XG50eXBlIFByb3BzID0ge1xuICBzdG9yZTogT3V0cHV0U3RvcmU7XG4gIGtlcm5lbDogS2VybmVsIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZGVzdHJveTogKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueTtcbiAgc2hvd1Jlc3VsdDogYm9vbGVhbjtcbn07XG5cbkBvYnNlcnZlclxuY2xhc3MgUmVzdWx0Vmlld0NvbXBvbmVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcz4ge1xuICBlbDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjb250YWluZXJUb29sdGlwID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKTtcbiAgYnV0dG9uVG9vbHRpcCA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKCk7XG4gIGNsb3NlVG9vbHRpcCA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKCk7XG4gIEBvYnNlcnZhYmxlXG4gIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGdldEFsbFRleHQgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmVsKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZWwuaW5uZXJUZXh0ID8gdGhpcy5lbC5pbm5lclRleHQgOiBcIlwiO1xuICB9O1xuICBoYW5kbGVDbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudCwgTW91c2VFdmVudD4pID0+IHtcbiAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XG4gICAgICB0aGlzLm9wZW5JbkVkaXRvcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvcHlUb0NsaXBib2FyZCgpO1xuICAgIH1cbiAgfTtcbiAgY2hlY2tGb3JTZWxlY3Rpb24gPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi50b1N0cmluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgY29weVRvQ2xpcGJvYXJkID0gKCkgPT4ge1xuICAgIGF0b20uY2xpcGJvYXJkLndyaXRlKHRoaXMuZ2V0QWxsVGV4dCgpKTtcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkU3VjY2VzcyhcIkNvcGllZCB0byBjbGlwYm9hcmRcIik7XG4gIH07XG4gIG9wZW5JbkVkaXRvciA9ICgpID0+IHtcbiAgICBhdG9tLndvcmtzcGFjZVxuICAgICAgLm9wZW4oKVxuICAgICAgLnRoZW4oKGVkaXRvcikgPT4gZWRpdG9yLmluc2VydFRleHQodGhpcy5nZXRBbGxUZXh0KCkpKTtcbiAgfTtcbiAgYWRkQ29weVRvb2x0aXAgPSAoXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIGNvbXA6IENvbXBvc2l0ZURpc3Bvc2FibGVcbiAgKSA9PiB7XG4gICAgaWYgKCFlbGVtZW50IHx8ICFjb21wLmRpc3Bvc2FibGVzIHx8IGNvbXAuZGlzcG9zYWJsZXMuc2l6ZSA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29tcC5hZGQoXG4gICAgICBhdG9tLnRvb2x0aXBzLmFkZChlbGVtZW50LCB7XG4gICAgICAgIHRpdGxlOiBgQ2xpY2sgdG8gY29weSxcbiAgICAgICAgICAke1xuICAgICAgICAgICAgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJkYXJ3aW5cIiA/IFwiQ21kXCIgOiBcIkN0cmxcIlxuICAgICAgICAgIH0rQ2xpY2sgdG8gb3BlbiBpbiBlZGl0b3JgLFxuICAgICAgfSlcbiAgICApO1xuICB9O1xuICBhZGRDbG9zZUJ1dHRvblRvb2x0aXAgPSAoXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIGNvbXA6IENvbXBvc2l0ZURpc3Bvc2FibGVcbiAgKSA9PiB7XG4gICAgaWYgKCFlbGVtZW50IHx8ICFjb21wLmRpc3Bvc2FibGVzIHx8IGNvbXAuZGlzcG9zYWJsZXMuc2l6ZSA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29tcC5hZGQoXG4gICAgICBhdG9tLnRvb2x0aXBzLmFkZChlbGVtZW50LCB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnByb3BzLnN0b3JlLmV4ZWN1dGlvbkNvdW50XG4gICAgICAgICAgPyBgQ2xvc2UgKE91dFske3RoaXMucHJvcHMuc3RvcmUuZXhlY3V0aW9uQ291bnR9XSlgXG4gICAgICAgICAgOiBcIkNsb3NlIHJlc3VsdFwiLFxuICAgICAgfSlcbiAgICApO1xuICB9O1xuICBhZGRDb3B5QnV0dG9uVG9vbHRpcCA9IChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgICB0aGlzLmFkZENvcHlUb29sdGlwKGVsZW1lbnQsIHRoaXMuYnV0dG9uVG9vbHRpcCk7XG4gIH07XG4gIG9uV2hlZWwgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBjbGllbnRIZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgIGNvbnN0IHNjcm9sbEhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgY29uc3QgY2xpZW50V2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgY29uc3Qgc2Nyb2xsV2lkdGggPSBlbGVtZW50LnNjcm9sbFdpZHRoO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gZWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgY29uc3QgYXRUb3AgPSBzY3JvbGxUb3AgIT09IDAgJiYgZXZlbnQuZGVsdGFZIDwgMDtcbiAgICAgIGNvbnN0IGF0TGVmdCA9IHNjcm9sbExlZnQgIT09IDAgJiYgZXZlbnQuZGVsdGFYIDwgMDtcbiAgICAgIGNvbnN0IGF0Qm90dG9tID1cbiAgICAgICAgc2Nyb2xsVG9wICE9PSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgJiYgZXZlbnQuZGVsdGFZID4gMDtcbiAgICAgIGNvbnN0IGF0UmlnaHQgPVxuICAgICAgICBzY3JvbGxMZWZ0ICE9PSBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoICYmIGV2ZW50LmRlbHRhWCA+IDA7XG5cbiAgICAgIGlmIChjbGllbnRIZWlnaHQgPCBzY3JvbGxIZWlnaHQgJiYgKGF0VG9wIHx8IGF0Qm90dG9tKSkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAoY2xpZW50V2lkdGggPCBzY3JvbGxXaWR0aCAmJiAoYXRMZWZ0IHx8IGF0UmlnaHQpKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIEBhY3Rpb25cbiAgdG9nZ2xlRXhwYW5kID0gKCkgPT4ge1xuICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBvdXRwdXRzLCBzdGF0dXMsIGlzUGxhaW4sIHBvc2l0aW9uIH0gPSB0aGlzLnByb3BzLnN0b3JlO1xuICAgIGNvbnN0IGlubGluZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgbWFyZ2luTGVmdDogYCR7cG9zaXRpb24ubGluZUxlbmd0aCArIHBvc2l0aW9uLmNoYXJXaWR0aH1weGAsXG4gICAgICBtYXJnaW5Ub3A6IGAtJHtwb3NpdGlvbi5saW5lSGVpZ2h0fXB4YCxcbiAgICAgIHVzZXJTZWxlY3Q6IFwidGV4dFwiLFxuICAgIH07XG5cbiAgICBpZiAob3V0cHV0cy5sZW5ndGggPT09IDAgfHwgdGhpcy5wcm9wcy5zaG93UmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgY29uc3Qga2VybmVsID0gdGhpcy5wcm9wcy5rZXJuZWw7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3RhdHVzXG4gICAgICAgICAgc3RhdHVzPXtcbiAgICAgICAgICAgIGtlcm5lbCAmJiBrZXJuZWwuZXhlY3V0aW9uU3RhdGUgIT09IFwiYnVzeVwiICYmIHN0YXR1cyA9PT0gXCJydW5uaW5nXCJcbiAgICAgICAgICAgICAgPyBcImVycm9yXCJcbiAgICAgICAgICAgICAgOiBzdGF0dXNcbiAgICAgICAgICB9XG4gICAgICAgICAgc3R5bGU9e2lubGluZVN0eWxlfVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Ake1xuICAgICAgICAgIGlzUGxhaW4gPyBcImlubGluZS1jb250YWluZXJcIiA6IFwibXVsdGlsaW5lLWNvbnRhaW5lclwiXG4gICAgICAgIH0gbmF0aXZlLWtleS1iaW5kaW5nc2B9XG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgb25DbGljaz17aXNQbGFpbiA/IHRoaXMuY2hlY2tGb3JTZWxlY3Rpb24gOiB1bmRlZmluZWR9XG4gICAgICAgIHN0eWxlPXtcbiAgICAgICAgICBpc1BsYWluXG4gICAgICAgICAgICA/IGlubGluZVN0eWxlXG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogYCR7cG9zaXRpb24uZWRpdG9yV2lkdGggLSAyICogcG9zaXRpb24uY2hhcldpZHRofXB4YCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IFwiMHB4XCIsXG4gICAgICAgICAgICAgICAgdXNlclNlbGVjdDogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBoeWRyb2dlbi13cmFwb3V0cHV0PXthdG9tLmNvbmZpZy5nZXQoYEh5ZHJvZ2VuLndyYXBPdXRwdXRgKS50b1N0cmluZygpfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwiaHlkcm9nZW5fY2VsbF9kaXNwbGF5XCJcbiAgICAgICAgICByZWY9eyhyZWYpID0+IHtcbiAgICAgICAgICAgIGlmICghcmVmKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZWwgPSByZWY7XG4gICAgICAgICAgICBpc1BsYWluXG4gICAgICAgICAgICAgID8gdGhpcy5hZGRDb3B5VG9vbHRpcChyZWYsIHRoaXMuY29udGFpbmVyVG9vbHRpcClcbiAgICAgICAgICAgICAgOiB0aGlzLmNvbnRhaW5lclRvb2x0aXAuZGlzcG9zZSgpO1xuXG4gICAgICAgICAgICAvLyBBcyBvZiB0aGlzIHdyaXRpbmcgUmVhY3QncyBldmVudCBoYW5kbGVyIGRvZXNuJ3QgcHJvcGVybHkgaGFuZGxlXG4gICAgICAgICAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKSBmb3IgZXZlbnRzIG91dHNpZGUgdGhlIFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICBpZiAoIXRoaXMuZXhwYW5kZWQgJiYgIWlzUGxhaW4gJiYgcmVmKSB7XG4gICAgICAgICAgICAgIHJlZi5hZGRFdmVudExpc3RlbmVyKFwid2hlZWxcIiwgdGhpcy5vbldoZWVsKHJlZiksIHtcbiAgICAgICAgICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBtYXhIZWlnaHQ6IHRoaXMuZXhwYW5kZWQgPyBcIjEwMCVcIiA6IGAke1NDUk9MTF9IRUlHSFR9cHhgLFxuICAgICAgICAgICAgb3ZlcmZsb3dZOiBcImF1dG9cIixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge291dHB1dHMubWFwKChvdXRwdXQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RGlzcGxheSBvdXRwdXQ9e291dHB1dH0ga2V5PXtpbmRleH0gLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtpc1BsYWluID8gbnVsbCA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaWNvbiBpY29uLXhcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLmRlc3Ryb3l9XG4gICAgICAgICAgICAgIHJlZj17KHJlZikgPT4gdGhpcy5hZGRDbG9zZUJ1dHRvblRvb2x0aXAocmVmLCB0aGlzLmNsb3NlVG9vbHRpcCl9XG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZmxleDogMSxcbiAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IFwiMC4yNWVtXCIsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICB7dGhpcy5nZXRBbGxUZXh0KCkubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImljb24gaWNvbi1jbGlwcHlcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLmFkZENvcHlCdXR0b25Ub29sdGlwfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIHt0aGlzLmVsICYmIHRoaXMuZWwuc2Nyb2xsSGVpZ2h0ID4gU0NST0xMX0hFSUdIVCA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGljb24gaWNvbi0ke3RoaXMuZXhwYW5kZWQgPyBcImZvbGRcIiA6IFwidW5mb2xkXCJ9YH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnRvZ2dsZUV4cGFuZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHNjcm9sbFRvQm90dG9tKCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLmVsIHx8XG4gICAgICB0aGlzLmV4cGFuZGVkID09PSB0cnVlIHx8XG4gICAgICB0aGlzLnByb3BzLnN0b3JlLmlzUGxhaW4gPT09IHRydWUgfHxcbiAgICAgIGF0b20uY29uZmlnLmdldChgSHlkcm9nZW4uYXV0b1Njcm9sbGApID09PSBmYWxzZVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSB0aGlzLmVsLnNjcm9sbEhlaWdodDtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmVsLmNsaWVudEhlaWdodDtcbiAgICBjb25zdCBtYXhTY3JvbGxUb3AgPSBzY3JvbGxIZWlnaHQgLSBoZWlnaHQ7XG4gICAgdGhpcy5lbC5zY3JvbGxUb3AgPSBtYXhTY3JvbGxUb3AgPiAwID8gbWF4U2Nyb2xsVG9wIDogMDtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLmNvbnRhaW5lclRvb2x0aXAuZGlzcG9zZSgpO1xuICAgIHRoaXMuYnV0dG9uVG9vbHRpcC5kaXNwb3NlKCk7XG4gICAgdGhpcy5jbG9zZVRvb2x0aXAuZGlzcG9zZSgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlc3VsdFZpZXdDb21wb25lbnQ7XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tcG9uZW50cy9yZXN1bHQtdmlldy9yZXN1bHQtdmlldy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBMkM7QUFDM0Msa0RBQTBCO0FBQzFCLDJDQUFzQztBQUN0QywrQkFBMEM7QUFDMUMsd0RBQWdDO0FBQ2hDLHNEQUE4QjtBQUc5QixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUM7QUFTMUIsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBb0IsU0FBUSxlQUFLLENBQUMsU0FBZ0I7SUFBeEQ7O1FBRUUscUJBQWdCLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFDO1FBQzdDLGtCQUFhLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFDO1FBRXpDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFHLEdBQUcsRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDWixPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUM7UUFDRixnQkFBVyxHQUFHLENBQUMsS0FBbUQsRUFBRSxFQUFFO1lBQ3BFLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDO1FBQ0Ysc0JBQWlCLEdBQUcsQ0FBQyxLQUFtRCxFQUFFLEVBQUU7WUFD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QyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUNGLENBQUE7QUFoT0M7SUFEQyxpQkFBVTs7cURBQ2U7QUF5RjFCO0lBREMsYUFBTTs7eURBR0w7QUFqR0UsbUJBQW1CO0lBRHhCLHFCQUFRO0dBQ0gsbUJBQW1CLENBc094QjtBQUVELGtCQUFlLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9zaXRlRGlzcG9zYWJsZSB9IGZyb20gXCJhdG9tXCI7XHJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgb2JzZXJ2ZXIgfSBmcm9tIFwibW9ieC1yZWFjdFwiO1xyXG5pbXBvcnQgeyBhY3Rpb24sIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xyXG5pbXBvcnQgRGlzcGxheSBmcm9tIFwiLi9kaXNwbGF5XCI7XHJcbmltcG9ydCBTdGF0dXMgZnJvbSBcIi4vc3RhdHVzXCI7XHJcbmltcG9ydCB0eXBlIE91dHB1dFN0b3JlIGZyb20gXCIuLi8uLi9zdG9yZS9vdXRwdXRcIjtcclxuaW1wb3J0IHR5cGUgS2VybmVsIGZyb20gXCIuLi8uLi9rZXJuZWxcIjtcclxuY29uc3QgU0NST0xMX0hFSUdIVCA9IDYwMDtcclxudHlwZSBQcm9wcyA9IHtcclxuICBzdG9yZTogT3V0cHV0U3RvcmU7XHJcbiAga2VybmVsOiBLZXJuZWwgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gIGRlc3Ryb3k6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnk7XHJcbiAgc2hvd1Jlc3VsdDogYm9vbGVhbjtcclxufTtcclxuXHJcbkBvYnNlcnZlclxyXG5jbGFzcyBSZXN1bHRWaWV3Q29tcG9uZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzPiB7XHJcbiAgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBjb250YWluZXJUb29sdGlwID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKTtcclxuICBidXR0b25Ub29sdGlwID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKTtcclxuICBjbG9zZVRvb2x0aXAgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpO1xyXG4gIEBvYnNlcnZhYmxlXHJcbiAgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBnZXRBbGxUZXh0ID0gKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmVsKSB7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZWwuaW5uZXJUZXh0ID8gdGhpcy5lbC5pbm5lclRleHQgOiBcIlwiO1xyXG4gIH07XHJcbiAgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XHJcbiAgICAgIHRoaXMub3BlbkluRWRpdG9yKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvcHlUb0NsaXBib2FyZCgpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY2hlY2tGb3JTZWxlY3Rpb24gPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi50b1N0cmluZygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2soZXZlbnQpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29weVRvQ2xpcGJvYXJkID0gKCkgPT4ge1xyXG4gICAgYXRvbS5jbGlwYm9hcmQud3JpdGUodGhpcy5nZXRBbGxUZXh0KCkpO1xyXG4gICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZFN1Y2Nlc3MoXCJDb3BpZWQgdG8gY2xpcGJvYXJkXCIpO1xyXG4gIH07XHJcbiAgb3BlbkluRWRpdG9yID0gKCkgPT4ge1xyXG4gICAgYXRvbS53b3Jrc3BhY2VcclxuICAgICAgLm9wZW4oKVxyXG4gICAgICAudGhlbigoZWRpdG9yKSA9PiBlZGl0b3IuaW5zZXJ0VGV4dCh0aGlzLmdldEFsbFRleHQoKSkpO1xyXG4gIH07XHJcbiAgYWRkQ29weVRvb2x0aXAgPSAoXHJcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQsXHJcbiAgICBjb21wOiBDb21wb3NpdGVEaXNwb3NhYmxlXHJcbiAgKSA9PiB7XHJcbiAgICBpZiAoIWVsZW1lbnQgfHwgIWNvbXAuZGlzcG9zYWJsZXMgfHwgY29tcC5kaXNwb3NhYmxlcy5zaXplID4gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb21wLmFkZChcclxuICAgICAgYXRvbS50b29sdGlwcy5hZGQoZWxlbWVudCwge1xyXG4gICAgICAgIHRpdGxlOiBgQ2xpY2sgdG8gY29weSxcclxuICAgICAgICAgICR7XHJcbiAgICAgICAgICAgIHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIgPyBcIkNtZFwiIDogXCJDdHJsXCJcclxuICAgICAgICAgIH0rQ2xpY2sgdG8gb3BlbiBpbiBlZGl0b3JgLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9O1xyXG4gIGFkZENsb3NlQnV0dG9uVG9vbHRpcCA9IChcclxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgIGNvbXA6IENvbXBvc2l0ZURpc3Bvc2FibGVcclxuICApID0+IHtcclxuICAgIGlmICghZWxlbWVudCB8fCAhY29tcC5kaXNwb3NhYmxlcyB8fCBjb21wLmRpc3Bvc2FibGVzLnNpemUgPiAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbXAuYWRkKFxyXG4gICAgICBhdG9tLnRvb2x0aXBzLmFkZChlbGVtZW50LCB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMucHJvcHMuc3RvcmUuZXhlY3V0aW9uQ291bnRcclxuICAgICAgICAgID8gYENsb3NlIChPdXRbJHt0aGlzLnByb3BzLnN0b3JlLmV4ZWN1dGlvbkNvdW50fV0pYFxyXG4gICAgICAgICAgOiBcIkNsb3NlIHJlc3VsdFwiLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9O1xyXG4gIGFkZENvcHlCdXR0b25Ub29sdGlwID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgdGhpcy5hZGRDb3B5VG9vbHRpcChlbGVtZW50LCB0aGlzLmJ1dHRvblRvb2x0aXApO1xyXG4gIH07XHJcbiAgb25XaGVlbCA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xyXG4gICAgcmV0dXJuIChldmVudDogV2hlZWxFdmVudCkgPT4ge1xyXG4gICAgICBjb25zdCBjbGllbnRIZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gZWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIGNvbnN0IGNsaWVudFdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcclxuICAgICAgY29uc3Qgc2Nyb2xsV2lkdGggPSBlbGVtZW50LnNjcm9sbFdpZHRoO1xyXG4gICAgICBjb25zdCBzY3JvbGxUb3AgPSBlbGVtZW50LnNjcm9sbFRvcDtcclxuICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IGVsZW1lbnQuc2Nyb2xsTGVmdDtcclxuICAgICAgY29uc3QgYXRUb3AgPSBzY3JvbGxUb3AgIT09IDAgJiYgZXZlbnQuZGVsdGFZIDwgMDtcclxuICAgICAgY29uc3QgYXRMZWZ0ID0gc2Nyb2xsTGVmdCAhPT0gMCAmJiBldmVudC5kZWx0YVggPCAwO1xyXG4gICAgICBjb25zdCBhdEJvdHRvbSA9XHJcbiAgICAgICAgc2Nyb2xsVG9wICE9PSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgJiYgZXZlbnQuZGVsdGFZID4gMDtcclxuICAgICAgY29uc3QgYXRSaWdodCA9XHJcbiAgICAgICAgc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCAmJiBldmVudC5kZWx0YVggPiAwO1xyXG5cclxuICAgICAgaWYgKGNsaWVudEhlaWdodCA8IHNjcm9sbEhlaWdodCAmJiAoYXRUb3AgfHwgYXRCb3R0b20pKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2xpZW50V2lkdGggPCBzY3JvbGxXaWR0aCAmJiAoYXRMZWZ0IHx8IGF0UmlnaHQpKSB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfTtcclxuICBAYWN0aW9uXHJcbiAgdG9nZ2xlRXhwYW5kID0gKCkgPT4ge1xyXG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgb3V0cHV0cywgc3RhdHVzLCBpc1BsYWluLCBwb3NpdGlvbiB9ID0gdGhpcy5wcm9wcy5zdG9yZTtcclxuICAgIGNvbnN0IGlubGluZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xyXG4gICAgICBtYXJnaW5MZWZ0OiBgJHtwb3NpdGlvbi5saW5lTGVuZ3RoICsgcG9zaXRpb24uY2hhcldpZHRofXB4YCxcclxuICAgICAgbWFyZ2luVG9wOiBgLSR7cG9zaXRpb24ubGluZUhlaWdodH1weGAsXHJcbiAgICAgIHVzZXJTZWxlY3Q6IFwidGV4dFwiLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3V0cHV0cy5sZW5ndGggPT09IDAgfHwgIXRoaXMucHJvcHMuc2hvd1Jlc3VsdCkge1xyXG4gICAgICBjb25zdCBrZXJuZWwgPSB0aGlzLnByb3BzLmtlcm5lbDtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8U3RhdHVzXHJcbiAgICAgICAgICBzdGF0dXM9e1xyXG4gICAgICAgICAgICBrZXJuZWwgJiYga2VybmVsLmV4ZWN1dGlvblN0YXRlICE9PSBcImJ1c3lcIiAmJiBzdGF0dXMgPT09IFwicnVubmluZ1wiXHJcbiAgICAgICAgICAgICAgPyBcImVycm9yXCJcclxuICAgICAgICAgICAgICA6IHN0YXR1c1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3R5bGU9e2lubGluZVN0eWxlfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17YCR7XHJcbiAgICAgICAgICBpc1BsYWluID8gXCJpbmxpbmUtY29udGFpbmVyXCIgOiBcIm11bHRpbGluZS1jb250YWluZXJcIlxyXG4gICAgICAgIH0gbmF0aXZlLWtleS1iaW5kaW5nc2B9XHJcbiAgICAgICAgdGFiSW5kZXg9ey0xfVxyXG4gICAgICAgIG9uQ2xpY2s9e2lzUGxhaW4gPyB0aGlzLmNoZWNrRm9yU2VsZWN0aW9uIDogdW5kZWZpbmVkfVxyXG4gICAgICAgIHN0eWxlPXtcclxuICAgICAgICAgIGlzUGxhaW5cclxuICAgICAgICAgICAgPyBpbmxpbmVTdHlsZVxyXG4gICAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBgJHtwb3NpdGlvbi5lZGl0b3JXaWR0aCAtIDIgKiBwb3NpdGlvbi5jaGFyV2lkdGh9cHhgLFxyXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBcIjBweFwiLFxyXG4gICAgICAgICAgICAgICAgdXNlclNlbGVjdDogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBoeWRyb2dlbi13cmFwb3V0cHV0PXthdG9tLmNvbmZpZy5nZXQoYEh5ZHJvZ2VuLndyYXBPdXRwdXRgKS50b1N0cmluZygpfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiaHlkcm9nZW5fY2VsbF9kaXNwbGF5XCJcclxuICAgICAgICAgIHJlZj17KHJlZikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJlZikge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVsID0gcmVmO1xyXG4gICAgICAgICAgICBpc1BsYWluXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmFkZENvcHlUb29sdGlwKHJlZiwgdGhpcy5jb250YWluZXJUb29sdGlwKVxyXG4gICAgICAgICAgICAgIDogdGhpcy5jb250YWluZXJUb29sdGlwLmRpc3Bvc2UoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEFzIG9mIHRoaXMgd3JpdGluZyBSZWFjdCdzIGV2ZW50IGhhbmRsZXIgZG9lc24ndCBwcm9wZXJseSBoYW5kbGVcclxuICAgICAgICAgICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgZm9yIGV2ZW50cyBvdXRzaWRlIHRoZSBSZWFjdCBjb250ZXh0LlxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZXhwYW5kZWQgJiYgIWlzUGxhaW4gJiYgcmVmKSB7XHJcbiAgICAgICAgICAgICAgcmVmLmFkZEV2ZW50TGlzdGVuZXIoXCJ3aGVlbFwiLCB0aGlzLm9uV2hlZWwocmVmKSwge1xyXG4gICAgICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIG1heEhlaWdodDogdGhpcy5leHBhbmRlZCA/IFwiMTAwJVwiIDogYCR7U0NST0xMX0hFSUdIVH1weGAsXHJcbiAgICAgICAgICAgIG92ZXJmbG93WTogXCJhdXRvXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtvdXRwdXRzLm1hcCgob3V0cHV0LCBpbmRleCkgPT4gKFxyXG4gICAgICAgICAgICA8RGlzcGxheSBvdXRwdXQ9e291dHB1dH0ga2V5PXtpbmRleH0gLz5cclxuICAgICAgICAgICkpfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtpc1BsYWluID8gbnVsbCA6IChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaWNvbiBpY29uLXhcIlxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucHJvcHMuZGVzdHJveX1cclxuICAgICAgICAgICAgICByZWY9eyhyZWYpID0+IHRoaXMuYWRkQ2xvc2VCdXR0b25Ub29sdGlwKHJlZiwgdGhpcy5jbG9zZVRvb2x0aXApfVxyXG4gICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICBmbGV4OiAxLFxyXG4gICAgICAgICAgICAgICAgbWluSGVpZ2h0OiBcIjAuMjVlbVwiLFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICB7dGhpcy5nZXRBbGxUZXh0KCkubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpY29uIGljb24tY2xpcHB5XCJcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9XHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuYWRkQ29weUJ1dHRvblRvb2x0aXB9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKSA6IG51bGx9XHJcblxyXG4gICAgICAgICAgICB7dGhpcy5lbCAmJiB0aGlzLmVsLnNjcm9sbEhlaWdodCA+IFNDUk9MTF9IRUlHSFQgPyAoXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaWNvbiBpY29uLSR7dGhpcy5leHBhbmRlZCA/IFwiZm9sZFwiIDogXCJ1bmZvbGRcIn1gfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy50b2dnbGVFeHBhbmR9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0JvdHRvbSgpIHtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuZWwgfHxcclxuICAgICAgdGhpcy5leHBhbmRlZCB8fFxyXG4gICAgICB0aGlzLnByb3BzLnN0b3JlLmlzUGxhaW4gfHxcclxuICAgICAgYXRvbS5jb25maWcuZ2V0KGBIeWRyb2dlbi5hdXRvU2Nyb2xsYCkgPT09IGZhbHNlXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gdGhpcy5lbC5zY3JvbGxIZWlnaHQ7XHJcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmVsLmNsaWVudEhlaWdodDtcclxuICAgIGNvbnN0IG1heFNjcm9sbFRvcCA9IHNjcm9sbEhlaWdodCAtIGhlaWdodDtcclxuICAgIHRoaXMuZWwuc2Nyb2xsVG9wID0gbWF4U2Nyb2xsVG9wID4gMCA/IG1heFNjcm9sbFRvcCA6IDA7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgdGhpcy5jb250YWluZXJUb29sdGlwLmRpc3Bvc2UoKTtcclxuICAgIHRoaXMuYnV0dG9uVG9vbHRpcC5kaXNwb3NlKCk7XHJcbiAgICB0aGlzLmNsb3NlVG9vbHRpcC5kaXNwb3NlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSZXN1bHRWaWV3Q29tcG9uZW50O1xyXG4iXX0= \ No newline at end of file diff --git a/dist/components/result-view/status.d.ts b/dist/components/result-view/status.d.ts deleted file mode 100644 index db8218c99..000000000 --- a/dist/components/result-view/status.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -declare type Props = { - status: string; - style: Record; -}; -declare const Status: ({ status, style }: Props) => JSX.Element; -export default Status; diff --git a/dist/components/watch-sidebar/index.d.ts b/dist/components/watch-sidebar/index.d.ts deleted file mode 100644 index d6148dd5d..000000000 --- a/dist/components/watch-sidebar/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare type store = typeof import("../../store").default; -declare const Watches: ({ store: { kernel } }: { - store: store; -}) => JSX.Element; -export default Watches; diff --git a/dist/components/watch-sidebar/index.js b/dist/components/watch-sidebar/index.js index bd32d522e..c39148649 100644 --- a/dist/components/watch-sidebar/index.js +++ b/dist/components/watch-sidebar/index.js @@ -22,4 +22,4 @@ const Watches = mobx_react_1.observer(({ store: { kernel } }) => { react_1.default.createElement("button", { className: "btn btn-error icon icon-trashcan", onClick: kernel.watchesStore.removeWatch }, "Remove watch")))); }); exports.default = Watches; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tcG9uZW50cy93YXRjaC1zaWRlYmFyL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLGtEQUEwQjtBQUMxQiwyQ0FBc0M7QUFDdEMsb0RBQTRCO0FBQzVCLHVDQUF3RDtBQUd4RCxNQUFNLE9BQU8sR0FBRyxxQkFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBb0IsRUFBRSxFQUFFO0lBQ25FLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEVBQUU7WUFDOUMsT0FBTyw4QkFBQyxvQkFBWSxPQUFHLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBVyxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE9BQU8sQ0FDTCx1Q0FBSyxTQUFTLEVBQUMsdUJBQXVCO1FBQ25DLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDMUMsOEJBQUMsZUFBSyxJQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFJLENBQzlDLENBQUM7UUFDRix1Q0FBSyxTQUFTLEVBQUMsV0FBVztZQUN4QiwwQ0FDRSxTQUFTLEVBQUMsZ0NBQWdDLEVBQzFDLE9BQU8sRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsZ0JBRzlCO1lBQ1QsMENBQ0UsU0FBUyxFQUFDLGtDQUFrQyxFQUM1QyxPQUFPLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLG1CQUdqQyxDQUNMLENBQ0YsQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFDSCxrQkFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb3NpdGVEaXNwb3NhYmxlIH0gZnJvbSBcImF0b21cIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcbmltcG9ydCBXYXRjaCBmcm9tIFwiLi93YXRjaFwiO1xuaW1wb3J0IHsgV0FUQ0hFU19VUkksIEVtcHR5TWVzc2FnZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgS2VybmVsIGZyb20gXCIuLi8uLi9rZXJuZWxcIjtcbnR5cGUgc3RvcmUgPSB0eXBlb2YgaW1wb3J0KFwiLi4vLi4vc3RvcmVcIikuZGVmYXVsdDtcbmNvbnN0IFdhdGNoZXMgPSBvYnNlcnZlcigoeyBzdG9yZTogeyBrZXJuZWwgfSB9OiB7IHN0b3JlOiBzdG9yZSB9KSA9PiB7XG4gIGlmICgha2VybmVsKSB7XG4gICAgaWYgKGF0b20uY29uZmlnLmdldChcIkh5ZHJvZ2VuLm91dHB1dEFyZWFEb2NrXCIpKSB7XG4gICAgICByZXR1cm4gPEVtcHR5TWVzc2FnZSAvPjtcbiAgICB9XG5cbiAgICBhdG9tLndvcmtzcGFjZS5oaWRlKFdBVENIRVNfVVJJKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzaWRlYmFyIHdhdGNoLXNpZGViYXJcIj5cbiAgICAgIHtrZXJuZWwud2F0Y2hlc1N0b3JlLndhdGNoZXMubWFwKCh3YXRjaCkgPT4gKFxuICAgICAgICA8V2F0Y2gga2V5PXt3YXRjaC5lZGl0b3IuaWR9IHN0b3JlPXt3YXRjaH0gLz5cbiAgICAgICkpfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJidG4tZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeSBpY29uIGljb24tcGx1c1wiXG4gICAgICAgICAgb25DbGljaz17a2VybmVsLndhdGNoZXNTdG9yZS5hZGRXYXRjaH1cbiAgICAgICAgPlxuICAgICAgICAgIEFkZCB3YXRjaFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tZXJyb3IgaWNvbiBpY29uLXRyYXNoY2FuXCJcbiAgICAgICAgICBvbkNsaWNrPXtrZXJuZWwud2F0Y2hlc1N0b3JlLnJlbW92ZVdhdGNofVxuICAgICAgICA+XG4gICAgICAgICAgUmVtb3ZlIHdhdGNoXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IFdhdGNoZXM7XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tcG9uZW50cy93YXRjaC1zaWRlYmFyL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtEQUEwQjtBQUMxQiwyQ0FBc0M7QUFDdEMsb0RBQTRCO0FBQzVCLHVDQUF3RDtBQUV4RCxNQUFNLE9BQU8sR0FBRyxxQkFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBb0IsRUFBRSxFQUFFO0lBQ25FLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEVBQUU7WUFDOUMsT0FBTyw4QkFBQyxvQkFBWSxPQUFHLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBVyxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE9BQU8sQ0FDTCx1Q0FBSyxTQUFTLEVBQUMsdUJBQXVCO1FBQ25DLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDMUMsOEJBQUMsZUFBSyxJQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFJLENBQzlDLENBQUM7UUFDRix1Q0FBSyxTQUFTLEVBQUMsV0FBVztZQUN4QiwwQ0FDRSxTQUFTLEVBQUMsZ0NBQWdDLEVBQzFDLE9BQU8sRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsZ0JBRzlCO1lBQ1QsMENBQ0UsU0FBUyxFQUFDLGtDQUFrQyxFQUM1QyxPQUFPLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLG1CQUdqQyxDQUNMLENBQ0YsQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFDSCxrQkFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcclxuaW1wb3J0IFdhdGNoIGZyb20gXCIuL3dhdGNoXCI7XHJcbmltcG9ydCB7IFdBVENIRVNfVVJJLCBFbXB0eU1lc3NhZ2UgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxudHlwZSBzdG9yZSA9IHR5cGVvZiBpbXBvcnQoXCIuLi8uLi9zdG9yZVwiKS5kZWZhdWx0O1xyXG5jb25zdCBXYXRjaGVzID0gb2JzZXJ2ZXIoKHsgc3RvcmU6IHsga2VybmVsIH0gfTogeyBzdG9yZTogc3RvcmUgfSkgPT4ge1xyXG4gIGlmICgha2VybmVsKSB7XHJcbiAgICBpZiAoYXRvbS5jb25maWcuZ2V0KFwiSHlkcm9nZW4ub3V0cHV0QXJlYURvY2tcIikpIHtcclxuICAgICAgcmV0dXJuIDxFbXB0eU1lc3NhZ2UgLz47XHJcbiAgICB9XHJcblxyXG4gICAgYXRvbS53b3Jrc3BhY2UuaGlkZShXQVRDSEVTX1VSSSk7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInNpZGViYXIgd2F0Y2gtc2lkZWJhclwiPlxyXG4gICAgICB7a2VybmVsLndhdGNoZXNTdG9yZS53YXRjaGVzLm1hcCgod2F0Y2gpID0+IChcclxuICAgICAgICA8V2F0Y2gga2V5PXt3YXRjaC5lZGl0b3IuaWR9IHN0b3JlPXt3YXRjaH0gLz5cclxuICAgICAgKSl9XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5IGljb24gaWNvbi1wbHVzXCJcclxuICAgICAgICAgIG9uQ2xpY2s9e2tlcm5lbC53YXRjaGVzU3RvcmUuYWRkV2F0Y2h9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQWRkIHdhdGNoXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1lcnJvciBpY29uIGljb24tdHJhc2hjYW5cIlxyXG4gICAgICAgICAgb25DbGljaz17a2VybmVsLndhdGNoZXNTdG9yZS5yZW1vdmVXYXRjaH1cclxuICAgICAgICA+XHJcbiAgICAgICAgICBSZW1vdmUgd2F0Y2hcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59KTtcclxuZXhwb3J0IGRlZmF1bHQgV2F0Y2hlcztcclxuIl19 \ No newline at end of file diff --git a/dist/components/watch-sidebar/watch.d.ts b/dist/components/watch-sidebar/watch.d.ts deleted file mode 100644 index e01120be8..000000000 --- a/dist/components/watch-sidebar/watch.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import { CompositeDisposable } from "atom"; -import type WatchStore from "../../store/watch"; -export default class Watch extends React.Component<{ - store: WatchStore; -}> { - container: HTMLElement | null | undefined; - subscriptions: CompositeDisposable; - componentDidMount(): void; - componentWillUnmount(): void; - render(): JSX.Element; -} diff --git a/dist/config.d.ts b/dist/config.d.ts deleted file mode 100644 index f3c7694dc..000000000 --- a/dist/config.d.ts +++ /dev/null @@ -1,162 +0,0 @@ -declare const Config: { - getJson(key: string, _default?: Record): any; - schema: { - autocomplete: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - autocompleteSuggestionPriority: { - title: string; - description: string; - type: string; - default: number; - order: number; - }; - showInspectorResultsInAutocomplete: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - importNotebookURI: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - importNotebookResults: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - statusBarDisable: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - statusBarKernelInfo: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - debug: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - autoScroll: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - centerOnMoveDown: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - wrapOutput: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - outputAreaDefault: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - outputAreaDock: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - outputAreaFontSize: { - title: string; - includeTitle: boolean; - description: string; - type: string; - minimum: number; - default: number; - order: number; - }; - globalMode: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - kernelNotifications: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - startDir: { - title: string; - includeTitle: boolean; - description: string; - type: string; - enum: { - value: string; - description: string; - }[]; - default: string; - order: number; - }; - languageMappings: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: string; - order: number; - }; - startupCode: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: string; - order: number; - }; - gateways: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: string; - order: number; - }; - }; -}; -export default Config; diff --git a/dist/existing-kernel-picker.d.ts b/dist/existing-kernel-picker.d.ts deleted file mode 100644 index 28ec3b97f..000000000 --- a/dist/existing-kernel-picker.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Panel } from "atom"; -import SelectListView from "atom-select-list"; -import type { KernelspecMetadata } from "@nteract/types"; -export default class ExistingKernelPicker { - kernelSpecs: Array; - selectListView: SelectListView; - panel: Panel | null | undefined; - previouslyFocusedElement: HTMLElement | null | undefined; - constructor(); - destroy(): any; - cancel(): void; - attach(): void; - toggle(): Promise; -} diff --git a/dist/existing-kernel-picker.js b/dist/existing-kernel-picker.js index 6f7f0b541..9c4d085ff 100644 --- a/dist/existing-kernel-picker.js +++ b/dist/existing-kernel-picker.js @@ -80,4 +80,4 @@ class ExistingKernelPicker { } } exports.default = ExistingKernelPicker; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpc3Rpbmcta2VybmVsLXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9leGlzdGluZy1rZXJuZWwtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBQThDO0FBQzlDLG9EQUE0QjtBQUU1QixzREFBOEI7QUFDOUIsbUNBR2lCO0FBSWpCLFNBQVMsT0FBTyxDQUFDLE1BQWM7SUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXO1FBQ3pDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxJQUFJO1FBQ3JDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxPQUFPLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLE1BQU0sZUFBSztTQUM3QyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7U0FDekIsR0FBRyxDQUFDLGlCQUFPLENBQUM7U0FDWixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBcUIsb0JBQW9CO0lBTXZDO1FBQ0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLDBCQUFjLENBQUM7WUFDdkMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQy9CLEtBQUssRUFBRSxFQUFFO1lBQ1QsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDN0MsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3pCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1lBQ0QsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsZUFBSyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNwQyxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDdEI7Z0JBQ0QsZUFBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLFlBQVksRUFBRSx1Q0FBdUM7U0FDdEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDdEI7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUVsQixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osbUNBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDMUIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjthQUFNLElBQUksZUFBSyxDQUFDLFFBQVEsSUFBSSxlQUFLLENBQUMsT0FBTyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLEtBQUssRUFBRSxlQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzVDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsZUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUM1RDthQUNGLENBQUMsQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxPQUFPLENBQUM7WUFDOUIsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2pCO1lBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0NBQ0Y7QUExRUQsdUNBMEVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiYXRvbVwiO1xuaW1wb3J0IFNlbGVjdExpc3RWaWV3IGZyb20gXCJhdG9tLXNlbGVjdC1saXN0XCI7XG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB0aWxkaWZ5IGZyb20gXCJ0aWxkaWZ5XCI7XG5pbXBvcnQge1xuICBrZXJuZWxTcGVjUHJvdmlkZXNHcmFtbWFyLFxuICBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQsXG59IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSBLZXJuZWwgZnJvbSBcIi4va2VybmVsXCI7XG5pbXBvcnQgdHlwZSB7IEtlcm5lbHNwZWNNZXRhZGF0YSB9IGZyb20gXCJAbnRlcmFjdC90eXBlc1wiO1xuXG5mdW5jdGlvbiBnZXROYW1lKGtlcm5lbDogS2VybmVsKSB7XG4gIGNvbnN0IHByZWZpeCA9IGtlcm5lbC50cmFuc3BvcnQuZ2F0ZXdheU5hbWVcbiAgICA/IGAke2tlcm5lbC50cmFuc3BvcnQuZ2F0ZXdheU5hbWV9OiBgXG4gICAgOiBcIlwiO1xuICByZXR1cm4gYCR7cHJlZml4ICsga2VybmVsLmRpc3BsYXlOYW1lfSAtICR7c3RvcmVcbiAgICAuZ2V0RmlsZXNGb3JLZXJuZWwoa2VybmVsKVxuICAgIC5tYXAodGlsZGlmeSlcbiAgICAuam9pbihcIiwgXCIpfWA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4aXN0aW5nS2VybmVsUGlja2VyIHtcbiAga2VybmVsU3BlY3M6IEFycmF5PEtlcm5lbHNwZWNNZXRhZGF0YT47XG4gIHNlbGVjdExpc3RWaWV3OiBTZWxlY3RMaXN0VmlldztcbiAgcGFuZWw6IFBhbmVsIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zZWxlY3RMaXN0VmlldyA9IG5ldyBTZWxlY3RMaXN0Vmlldyh7XG4gICAgICBpdGVtc0NsYXNzTGlzdDogW1wibWFyay1hY3RpdmVcIl0sXG4gICAgICBpdGVtczogW10sXG4gICAgICBmaWx0ZXJLZXlGb3JJdGVtOiAoa2VybmVsKSA9PiBnZXROYW1lKGtlcm5lbCksXG4gICAgICBlbGVtZW50Rm9ySXRlbTogKGtlcm5lbCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xuICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gZ2V0TmFtZShrZXJuZWwpO1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBkaWRDb25maXJtU2VsZWN0aW9uOiAoa2VybmVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZmlsZVBhdGgsIGVkaXRvciwgZ3JhbW1hciB9ID0gc3RvcmU7XG4gICAgICAgIGlmICghZmlsZVBhdGggfHwgIWVkaXRvciB8fCAhZ3JhbW1hcikge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNhbmNlbCgpO1xuICAgICAgICB9XG4gICAgICAgIHN0b3JlLm5ld0tlcm5lbChrZXJuZWwsIGZpbGVQYXRoLCBlZGl0b3IsIGdyYW1tYXIpO1xuICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgfSxcbiAgICAgIGRpZENhbmNlbFNlbGVjdGlvbjogKCkgPT4gdGhpcy5jYW5jZWwoKSxcbiAgICAgIGVtcHR5TWVzc2FnZTogXCJObyBydW5uaW5nIGtlcm5lbHMgZm9yIHRoaXMgbGFuZ3VhZ2UuXCIsXG4gICAgfSk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0TGlzdFZpZXcuZGVzdHJveSgpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLnBhbmVsICE9IG51bGwpIHtcbiAgICAgIHRoaXMucGFuZWwuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMucGFuZWwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSB7XG4gICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpO1xuICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGF0dGFjaCgpIHtcbiAgICBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQodGhpcyk7XG4gICAgaWYgKHRoaXMucGFuZWwgPT0gbnVsbCkge1xuICAgICAgdGhpcy5wYW5lbCA9IGF0b20ud29ya3NwYWNlLmFkZE1vZGFsUGFuZWwoe1xuICAgICAgICBpdGVtOiB0aGlzLnNlbGVjdExpc3RWaWV3LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcuZm9jdXMoKTtcbiAgICB0aGlzLnNlbGVjdExpc3RWaWV3LnJlc2V0KCk7XG4gIH1cblxuICBhc3luYyB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMucGFuZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICB9IGVsc2UgaWYgKHN0b3JlLmZpbGVQYXRoICYmIHN0b3JlLmdyYW1tYXIpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2VsZWN0TGlzdFZpZXcudXBkYXRlKHtcbiAgICAgICAgaXRlbXM6IHN0b3JlLnJ1bm5pbmdLZXJuZWxzLmZpbHRlcigoa2VybmVsKSA9PlxuICAgICAgICAgIGtlcm5lbFNwZWNQcm92aWRlc0dyYW1tYXIoa2VybmVsLmtlcm5lbFNwZWMsIHN0b3JlLmdyYW1tYXIpXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG1hcmtlcnMgPSBzdG9yZS5tYXJrZXJzO1xuICAgICAgaWYgKG1hcmtlcnMpIHtcbiAgICAgICAgbWFya2Vycy5jbGVhcigpO1xuICAgICAgfVxuICAgICAgdGhpcy5hdHRhY2goKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpc3Rpbmcta2VybmVsLXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9leGlzdGluZy1rZXJuZWwtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBQXdFO0FBQ3hFLG9EQUE0QjtBQUM1QixzREFBOEI7QUFDOUIsbUNBR2lCO0FBSWpCLFNBQVMsT0FBTyxDQUFDLE1BQWM7SUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXO1FBQ3pDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxJQUFJO1FBQ3JDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxPQUFPLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLE1BQU0sZUFBSztTQUM3QyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7U0FDekIsR0FBRyxDQUFDLGlCQUFPLENBQUM7U0FDWixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBcUIsb0JBQW9CO0lBTXZDO1FBQ0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLDBCQUFjLENBQUM7WUFDdkMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQy9CLEtBQUssRUFBRSxFQUFjO1lBQ3JCLGdCQUFnQixFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3JELGNBQWMsRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFO2dCQUNqQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQztZQUNELG1CQUFtQixFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGVBQUssQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDcEMsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ3RCO2dCQUNELGVBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDO1lBQ0Qsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN2QyxZQUFZLEVBQUUsdUNBQXVDO1NBQ3RELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3RCO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLG1DQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztnQkFDeEMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjO2FBQzFCLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTTtRQUNWLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLGVBQUssQ0FBQyxRQUFRLElBQUksZUFBSyxDQUFDLE9BQU8sRUFBRTtZQUMxQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO2dCQUMvQixLQUFLLEVBQUUsZUFBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUM1QyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGVBQUssQ0FBQyxPQUFPLENBQUMsQ0FDNUQ7YUFDc0IsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxPQUFPLENBQUM7WUFDOUIsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2pCO1lBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0NBQ0Y7QUExRUQsdUNBMEVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiYXRvbVwiO1xyXG5pbXBvcnQgU2VsZWN0TGlzdFZpZXcsIHsgU2VsZWN0TGlzdFByb3BlcnRpZXMgfSBmcm9tIFwiYXRvbS1zZWxlY3QtbGlzdFwiO1xyXG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4vc3RvcmVcIjtcclxuaW1wb3J0IHRpbGRpZnkgZnJvbSBcInRpbGRpZnlcIjtcclxuaW1wb3J0IHtcclxuICBrZXJuZWxTcGVjUHJvdmlkZXNHcmFtbWFyLFxyXG4gIHNldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCxcclxufSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbXBvcnQgdHlwZSBLZXJuZWwgZnJvbSBcIi4va2VybmVsXCI7XHJcbmltcG9ydCB0eXBlIHsgS2VybmVsc3BlY01ldGFkYXRhIH0gZnJvbSBcIkBudGVyYWN0L3R5cGVzXCI7XHJcblxyXG5mdW5jdGlvbiBnZXROYW1lKGtlcm5lbDogS2VybmVsKSB7XHJcbiAgY29uc3QgcHJlZml4ID0ga2VybmVsLnRyYW5zcG9ydC5nYXRld2F5TmFtZVxyXG4gICAgPyBgJHtrZXJuZWwudHJhbnNwb3J0LmdhdGV3YXlOYW1lfTogYFxyXG4gICAgOiBcIlwiO1xyXG4gIHJldHVybiBgJHtwcmVmaXggKyBrZXJuZWwuZGlzcGxheU5hbWV9IC0gJHtzdG9yZVxyXG4gICAgLmdldEZpbGVzRm9yS2VybmVsKGtlcm5lbClcclxuICAgIC5tYXAodGlsZGlmeSlcclxuICAgIC5qb2luKFwiLCBcIil9YDtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhpc3RpbmdLZXJuZWxQaWNrZXIge1xyXG4gIGtlcm5lbFNwZWNzOiBBcnJheTxLZXJuZWxzcGVjTWV0YWRhdGE+O1xyXG4gIHNlbGVjdExpc3RWaWV3OiBTZWxlY3RMaXN0VmlldztcclxuICBwYW5lbDogUGFuZWwgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcgPSBuZXcgU2VsZWN0TGlzdFZpZXcoe1xyXG4gICAgICBpdGVtc0NsYXNzTGlzdDogW1wibWFyay1hY3RpdmVcIl0sXHJcbiAgICAgIGl0ZW1zOiBbXSBhcyBLZXJuZWxbXSxcclxuICAgICAgZmlsdGVyS2V5Rm9ySXRlbTogKGtlcm5lbDogS2VybmVsKSA9PiBnZXROYW1lKGtlcm5lbCksXHJcbiAgICAgIGVsZW1lbnRGb3JJdGVtOiAoa2VybmVsOiBLZXJuZWwpID0+IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xyXG4gICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBnZXROYW1lKGtlcm5lbCk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICAgIH0sXHJcbiAgICAgIGRpZENvbmZpcm1TZWxlY3Rpb246IChrZXJuZWw6IEtlcm5lbCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgZmlsZVBhdGgsIGVkaXRvciwgZ3JhbW1hciB9ID0gc3RvcmU7XHJcbiAgICAgICAgaWYgKCFmaWxlUGF0aCB8fCAhZWRpdG9yIHx8ICFncmFtbWFyKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYW5jZWwoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RvcmUubmV3S2VybmVsKGtlcm5lbCwgZmlsZVBhdGgsIGVkaXRvciwgZ3JhbW1hcik7XHJcbiAgICAgICAgdGhpcy5jYW5jZWwoKTtcclxuICAgICAgfSxcclxuICAgICAgZGlkQ2FuY2VsU2VsZWN0aW9uOiAoKSA9PiB0aGlzLmNhbmNlbCgpLFxyXG4gICAgICBlbXB0eU1lc3NhZ2U6IFwiTm8gcnVubmluZyBrZXJuZWxzIGZvciB0aGlzIGxhbmd1YWdlLlwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5jYW5jZWwoKTtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdExpc3RWaWV3LmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIGlmICh0aGlzLnBhbmVsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5wYW5lbC5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wYW5lbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF0dGFjaCgpIHtcclxuICAgIHNldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCh0aGlzKTtcclxuICAgIGlmICh0aGlzLnBhbmVsID09IG51bGwpIHtcclxuICAgICAgdGhpcy5wYW5lbCA9IGF0b20ud29ya3NwYWNlLmFkZE1vZGFsUGFuZWwoe1xyXG4gICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0TGlzdFZpZXcsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RMaXN0Vmlldy5mb2N1cygpO1xyXG4gICAgdGhpcy5zZWxlY3RMaXN0Vmlldy5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdG9nZ2xlKCkge1xyXG4gICAgaWYgKHRoaXMucGFuZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgfSBlbHNlIGlmIChzdG9yZS5maWxlUGF0aCAmJiBzdG9yZS5ncmFtbWFyKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2VsZWN0TGlzdFZpZXcudXBkYXRlKHtcclxuICAgICAgICBpdGVtczogc3RvcmUucnVubmluZ0tlcm5lbHMuZmlsdGVyKChrZXJuZWwpID0+XHJcbiAgICAgICAgICBrZXJuZWxTcGVjUHJvdmlkZXNHcmFtbWFyKGtlcm5lbC5rZXJuZWxTcGVjLCBzdG9yZS5ncmFtbWFyKVxyXG4gICAgICAgICksXHJcbiAgICAgIH0gYXMgU2VsZWN0TGlzdFByb3BlcnRpZXMpO1xyXG4gICAgICBjb25zdCBtYXJrZXJzID0gc3RvcmUubWFya2VycztcclxuICAgICAgaWYgKG1hcmtlcnMpIHtcclxuICAgICAgICBtYXJrZXJzLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hdHRhY2goKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/export-notebook.d.ts b/dist/export-notebook.d.ts deleted file mode 100644 index 2cc0329ba..000000000 --- a/dist/export-notebook.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function exportNotebook(): Promise; diff --git a/dist/hydrogen.d.ts b/dist/hydrogen.d.ts deleted file mode 100644 index ff6b288bc..000000000 --- a/dist/hydrogen.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare type HydrogenCellType = "codecell" | "markdown"; -export declare type Message = { - header: Record; - parent_header: Record; - content: Record; -}; diff --git a/dist/import-notebook.d.ts b/dist/import-notebook.d.ts deleted file mode 100644 index a4384ec22..000000000 --- a/dist/import-notebook.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare function ipynbOpener(uri: string): Promise; -export declare function importNotebook(event?: CustomEvent): Promise; -export declare function _loadNotebook(filename: string, importResults?: boolean): Promise; diff --git a/dist/import-notebook.js b/dist/import-notebook.js index 34077c277..3db49b95c 100644 --- a/dist/import-notebook.js +++ b/dist/import-notebook.js @@ -26,7 +26,6 @@ exports._loadNotebook = exports.importNotebook = exports.ipynbOpener = void 0; const path = __importStar(require("path")); const fs_1 = require("fs"); const { readFile } = fs_1.promises; -const lodash_1 = __importDefault(require("lodash")); const electron_1 = require("electron"); const { dialog } = electron_1.remote; const commutable_1 = require("@nteract/commutable"); @@ -42,7 +41,8 @@ function ipynbOpener(uri) { } exports.ipynbOpener = ipynbOpener; function importNotebook(event) { - const filenameFromTreeView = lodash_1.default.get(event, "target.dataset.path"); + var _a; + const filenameFromTreeView = (_a = event.target.dataset) === null || _a === void 0 ? void 0 : _a.path; if (filenameFromTreeView && path.extname(filenameFromTreeView) === ".ipynb") { return _loadNotebook(filenameFromTreeView, atom.config.get("Hydrogen.importNotebookResults")); } @@ -187,8 +187,8 @@ function getGrammarForFileExtension(ext) { } ext = ext.startsWith(".") ? ext.slice(1) : ext; const grammars = atom.grammars.getGrammars(); - return lodash_1.default.find(grammars, (grammar) => { - return lodash_1.default.includes(grammar.fileTypes, ext); + return grammars.find((grammar) => { + return grammar.fileTypes.includes(ext); }); } function getGrammarForKernelspecName(name) { @@ -265,4 +265,4 @@ function importNotebookResults(editor, nbCells, resultRows) { cellNumber++; } } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LW5vdGVib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2ltcG9ydC1ub3RlYm9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkNBQTZCO0FBQzdCLDJCQUE4QjtBQUM5QixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsYUFBUSxDQUFDO0FBQzlCLG9EQUF1QjtBQUd2Qix1Q0FBa0M7QUFDbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLGlCQUFNLENBQUM7QUFFMUIsb0RBQTZDO0FBRTdDLG9EQUE0QjtBQUM1QixpREFBdUQ7QUFDdkQscUNBQWlFO0FBQ2pFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQVE3RCxTQUFnQixXQUFXLENBQUMsR0FBVztJQUNyQyxJQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUTtRQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLElBQUksRUFDdEQ7UUFDQSxPQUFPLGFBQWEsQ0FDbEIsR0FBRyxFQUNILElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQ2xELENBQUM7S0FDSDtBQUNILENBQUM7QUFWRCxrQ0FVQztBQVNELFNBQWdCLGNBQWMsQ0FBQyxLQUFtQjtJQUVoRCxNQUFNLG9CQUFvQixHQUFHLGdCQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBRWpFLElBQUksb0JBQW9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLFFBQVEsRUFBRTtRQUMzRSxPQUFPLGFBQWEsQ0FDbEIsb0JBQW9CLEVBQ3BCLElBQUksQ0FB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S0FBSyxNQUFNO2dCQUNULElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUMzQixxQkFBWSxDQUNWO3dCQUNFLE1BQU07d0JBQ04sT0FBTztxQkFDUixFQUNEO3dCQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzt3QkFDckIsR0FBRztxQkFDSixDQUNGLENBQUM7aUJBQ0g7Z0JBRUQsTUFBTTtZQUVSLEtBQUssVUFBVTtnQkFDYixxQkFBWSxDQUNWO29CQUNFLE1BQU07b0JBQ04sT0FBTztpQkFDUixFQUNEO29CQUNFLE9BQU8sRUFBRSxDQUFDLGdDQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDL0MsR0FBRztpQkFDSixDQUNGLENBQUM7Z0JBQ0YsTUFBTTtTQUNUO1FBRUQsVUFBVSxFQUFFLENBQUM7S0FDZDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RWRpdG9yLCBHcmFtbWFyIH0gZnJvbSBcImF0b21cIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHByb21pc2VzIH0gZnJvbSBcImZzXCI7XG5jb25zdCB7IHJlYWRGaWxlIH0gPSBwcm9taXNlcztcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB0eXBlIHsgSHlkcm9nZW5DZWxsVHlwZSB9IGZyb20gXCIuL2h5ZHJvZ2VuXCI7XG5cbmltcG9ydCB7IHJlbW90ZSB9IGZyb20gXCJlbGVjdHJvblwiO1xuY29uc3QgeyBkaWFsb2cgfSA9IHJlbW90ZTtcblxuaW1wb3J0IHsgZnJvbUpTIH0gZnJvbSBcIkBudGVyYWN0L2NvbW11dGFibGVcIjtcbmltcG9ydCB0eXBlIHsgTm90ZWJvb2ssIEpTT05PYmplY3QsIENlbGwgfSBmcm9tIFwiQG50ZXJhY3QvY29tbXV0YWJsZVwiO1xuaW1wb3J0IHN0b3JlIGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgeyBnZXRDb21tZW50U3RhcnRTdHJpbmcgfSBmcm9tIFwiLi9jb2RlLW1hbmFnZXJcIjtcbmltcG9ydCB7IGltcG9ydFJlc3VsdCwgY29udmVydE1hcmtkb3duVG9PdXRwdXQgfSBmcm9tIFwiLi9yZXN1bHRcIjtcbmNvbnN0IGxpbmVzZXAgPSBwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgPyBcIlxcclxcblwiIDogXCJcXG5cIjtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBwcm92aWRlZCB1cmkgaXMgYSB2YWxpZCBmaWxlIGZvciBIeWRyb2dlbiB0byBpbXBvcnQuIFRoZW5cbiAqIGl0IGxvYWRzIHRoZSBub3RlYm9vay5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJpIC0gVXJpIG9mIHRoZSBmaWxlIHRvIG9wZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpcHluYk9wZW5lcih1cmk6IHN0cmluZykge1xuICBpZiAoXG4gICAgcGF0aC5leHRuYW1lKHVyaSkudG9Mb3dlckNhc2UoKSA9PT0gXCIuaXB5bmJcIiAmJlxuICAgIGF0b20uY29uZmlnLmdldChcIkh5ZHJvZ2VuLmltcG9ydE5vdGVib29rVVJJXCIpID09PSB0cnVlXG4gICkge1xuICAgIHJldHVybiBfbG9hZE5vdGVib29rKFxuICAgICAgdXJpLFxuICAgICAgYXRvbS5jb25maWcuZ2V0KFwiSHlkcm9nZW4uaW1wb3J0Tm90ZWJvb2tSZXN1bHRzXCIpXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIHByb3ZpZGVkIGV2ZW50IGlzIHRyeWluZyB0byBvcGVuIGEgdmFsaWQgZmlsZSBmb3IgSHlkcm9nZW5cbiAqIHRvIGltcG9ydC4gT3RoZXJ3aXNlIGl0IHdpbGwgYXNrIHRoZSB1c2VyIHRvIGNob3NlIGEgdmFsaWQgZmlsZSBmb3IgSHlkcm9nZW5cbiAqIHRvIGltcG9ydC4gVGhlbiBpdCBsb2FkcyB0aGUgbm90ZWJvb2suXG4gKlxuICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBBdG9tIEV2ZW50IGZyb20gY2xpY2tpbmcgaW4gYSB0cmVldmlldy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydE5vdGVib29rKGV2ZW50PzogQ3VzdG9tRXZlbnQpIHtcbiAgLy8gVXNlIHNlbGVjdGVkIGZpbGVwYXRoIGlmIGNhbGxlZCBmcm9tIHRyZWUtdmlldyBjb250ZXh0IG1lbnVcbiAgY29uc3QgZmlsZW5hbWVGcm9tVHJlZVZpZXcgPSBfLmdldChldmVudCwgXCJ0YXJnZXQuZGF0YXNldC5wYXRoXCIpO1xuXG4gIGlmIChmaWxlbmFtZUZyb21UcmVlVmlldyAmJiBwYXRoLmV4dG5hbWUoZmlsZW5hbWVGcm9tVHJlZVZpZXcpID09PSBcIi5pcHluYlwiKSB7XG4gICAgcmV0dXJuIF9sb2FkTm90ZWJvb2soXG4gICAgICBmaWxlbmFtZUZyb21UcmVlVmlldyxcbiAgICAgIGF0b20uY29uZmlnLmdldChcIkh5ZHJvZ2VuLmltcG9ydE5vdGVib29rUmVzdWx0c1wiKVxuICAgICk7XG4gIH1cblxuICBkaWFsb2cuc2hvd09wZW5EaWFsb2coXG4gICAge1xuICAgICAgcHJvcGVydGllczogW1wib3BlbkZpbGVcIl0sXG4gICAgICBmaWx0ZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcIk5vdGVib29rc1wiLFxuICAgICAgICAgIGV4dGVuc2lvbnM6IFtcImlweW5iXCJdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIChmaWxlbmFtZXM6IEFycmF5PHN0cmluZz4gfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBpZiAoIWZpbGVuYW1lcykge1xuICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXCJObyBmaWxlbmFtZXMgc2VsZWN0ZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlbmFtZXNbMF07XG5cbiAgICAgIGlmIChwYXRoLmV4dG5hbWUoZmlsZW5hbWUpICE9PSBcIi5pcHluYlwiKSB7XG4gICAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIlNlbGVjdGVkIGZpbGUgbXVzdCBoYXZlIGV4dGVuc2lvbiAuaXB5bmJcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgX2xvYWROb3RlYm9vayhcbiAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgIGF0b20uY29uZmlnLmdldChcIkh5ZHJvZ2VuLmltcG9ydE5vdGVib29rUmVzdWx0c1wiKVxuICAgICAgKTtcbiAgICB9XG4gICk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGdpdmVuIG5vdGVib29rIGZpbGUgYW5kIGNvdmVydHMgaXQgdG8gYSB0ZXh0IGVkaXRvciBmb3JtYXQgd2l0aFxuICogSHlkcm9nZW4gY2VsbCBicmVha3BvaW50cy4gT3B0aW9uYWxseSBhZnRlciBvcGVuaW5nIHRoZSBub3RlYm9vaywgaXQgd2lsbFxuICogYWxzbyBsb2FkIHRoZSBwcmV2aW91cyByZXN1bHRzIGFuZCBkaXNwbGF5IHRoZW0uXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lIC0gUGF0aCBvZiB0aGUgZmlsZS5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gaW1wb3J0UmVzdWx0cyAtIERlY2lkZXMgd2hldGhlciB0byBkaXNwbGF5IHByZXZpb3VzIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF9sb2FkTm90ZWJvb2soXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIGltcG9ydFJlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZVxuKSB7XG4gIGxldCBkYXRhO1xuICBsZXQgbmI7XG5cbiAgdHJ5IHtcbiAgICBkYXRhID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShmaWxlbmFtZSwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pKTtcblxuICAgIGlmIChkYXRhLm5iZm9ybWF0IDwgMykge1xuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiT25seSBub3RlYm9vayB2ZXJzaW9uIDQgaXMgZnVsbHkgc3VwcG9ydGVkXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5uYmZvcm1hdCA9PSAzKSB7XG4gICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkV2FybmluZyhcbiAgICAgICAgXCJPbmx5IG5vdGVib29rIHZlcnNpb24gNCBpcyBmdWxseSBzdXBwb3J0ZWRcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBuYiA9IGZyb21KUyhkYXRhKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5uYW1lID09PSBcIlN5bnRheEVycm9yXCIpIHtcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIkVycm9yIG5vdCBhIHZhbGlkIG5vdGVib29rXCIsIHtcbiAgICAgICAgZGV0YWlsOiBlcnIuc3RhY2ssXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiRXJyb3IgcmVhZGluZyBmaWxlXCIsIHtcbiAgICAgICAgZGV0YWlsOiBlcnIsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlZGl0b3IgPSBhd2FpdCBhdG9tLndvcmtzcGFjZS5vcGVuKCk7XG4gIGNvbnN0IGdyYW1tYXIgPSBnZXRHcmFtbWFyRm9yTm90ZWJvb2sobmIpO1xuICBpZiAoIWdyYW1tYXIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXRvbS5ncmFtbWFycy5hc3NpZ25MYW5ndWFnZU1vZGUoZWRpdG9yLmdldEJ1ZmZlcigpLCBncmFtbWFyLnNjb3BlTmFtZSk7XG4gIGNvbnN0IGNvbW1lbnRTdGFydFN0cmluZyA9IGdldENvbW1lbnRTdGFydFN0cmluZyhlZGl0b3IpO1xuXG4gIGlmICghY29tbWVudFN0YXJ0U3RyaW5nKSB7XG4gICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiTm8gY29tbWVudCBzeW1ib2wgZGVmaW5lZCBpbiByb290IHNjb3BlXCIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5iQ2VsbHMgPSBbXTtcbiAgY29uc3Qgc291cmNlcyA9IFtdO1xuICBjb25zdCByZXN1bHRSb3dzID0gW107XG4gIGxldCBwcmV2aW91c0JyZWFrcG9pbnQgPSAtMTtcbiAgbmIuY2VsbE9yZGVyLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgY2VsbCA9IG5iLmNlbGxNYXAuZ2V0KHZhbHVlKS50b0pTKCk7XG4gICAgbmJDZWxscy5wdXNoKGNlbGwpO1xuICAgIGNvbnN0IGh5Q2VsbCA9IHRvSHlkcm9nZW5Db2RlQmxvY2soY2VsbCwgYCR7Y29tbWVudFN0YXJ0U3RyaW5nfSBgKTtcbiAgICByZXN1bHRSb3dzLnB1c2gocHJldmlvdXNCcmVha3BvaW50ICsgaHlDZWxsLmNvZGUudHJpbSgpLnNwbGl0KFwiXFxuXCIpLmxlbmd0aCk7XG4gICAgcHJldmlvdXNCcmVha3BvaW50ICs9IGh5Q2VsbC5yb3c7XG4gICAgc291cmNlcy5wdXNoKGh5Q2VsbC5jb2RlKTtcbiAgfSk7XG4gIGVkaXRvci5zZXRUZXh0KHNvdXJjZXMuam9pbihsaW5lc2VwKSk7XG4gIGlmIChpbXBvcnRSZXN1bHRzKSB7XG4gICAgaW1wb3J0Tm90ZWJvb2tSZXN1bHRzKGVkaXRvciwgbmJDZWxscywgcmVzdWx0Um93cyk7XG4gIH1cbn1cblxuLyoqXG4gKiBUcmllcyB0byBkZXRlcm1pbmUgdGhlIEF0b20gR3JhbW1hciBvZiBhIG5vdGVib29rLiBEZWZhdWx0IGlzIFB5dGhvbi5cbiAqXG4gKiBAcGFyYW0ge05vdGVib29rfSBuYiAtIFRoZSBOb3RlYm9vayB0byBkZXRlcm1pbmUgdGhlIEF0b20gR3JhbW1hciBvZi5cbiAqIEByZXR1cm5zIHtHcmFtbWFyfSAtIFRoZSBncmFtbWFyIG9mIHRoZSBub3RlYm9vay5cbiAqL1xuZnVuY3Rpb24gZ2V0R3JhbW1hckZvck5vdGVib29rKG5iOiBOb3RlYm9vaykge1xuICBjb25zdCBtZXRhRGF0YSA9IG5iLm1ldGFkYXRhO1xuICBjb25zdCB7XG4gICAga2VybmVsc3BlYyxcbiAgICAvLyBPZmZpY2FsIG5iZm9ybWF0IHY0XG4gICAgbGFuZ3VhZ2VfaW5mbyxcbiAgICAvLyBPZmZpY2FsIG5iZm9ybWF0IHY0XG4gICAga2VybmVsX2luZm8sXG4gICAgLy8gU29tZXRpbWVzIHVzZWQgaW4gbmJmb3JtYXQgdjNcbiAgICBsYW5ndWFnZSwgLy8gU29tZXRpbWVzIHVzZWQgaW4gbmJmb3JtYXQgdjNcbiAgfSA9IHR5cGVvZiBtZXRhRGF0YS50b0pTID09PSBcImZ1bmN0aW9uXCIgPyBtZXRhRGF0YS50b0pTKCkgOiBtZXRhRGF0YTsgLy8gVE9ETyBmaXggdG9KU1xuICBjb25zdCBrZXJuZWwgPSBrZXJuZWxzcGVjID8ga2VybmVsc3BlYyA6IGtlcm5lbF9pbmZvO1xuICBjb25zdCBsYW5nID0gbGFuZ3VhZ2VfaW5mb1xuICAgID8gbGFuZ3VhZ2VfaW5mb1xuICAgIDogbGFuZ3VhZ2VcbiAgICA/IHtcbiAgICAgICAgbmFtZTogbGFuZ3VhZ2UsXG4gICAgICB9XG4gICAgOiBudWxsO1xuXG4gIGlmICgha2VybmVsICYmICFsYW5nKSB7XG4gICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZFdhcm5pbmcoXG4gICAgICBcIk5vIGxhbmd1YWdlIG1ldGFkYXRhIGluIG5vdGVib29rOyBhc3N1bWluZyBQeXRob25cIlxuICAgICk7XG4gICAgcmV0dXJuIGF0b20uZ3JhbW1hcnMuZ3JhbW1hckZvclNjb3BlTmFtZShcInNvdXJjZS5weXRob25cIik7XG4gIH1cblxuICBsZXQgbWF0Y2hlZEdyYW1tYXIgPSBudWxsO1xuXG4gIGlmIChsYW5nKSB7XG4gICAgLy8gbGFuZy5uYW1lIHNob3VsZCBiZSByZXF1aXJlZFxuICAgIG1hdGNoZWRHcmFtbWFyID0gZ2V0R3JhbW1hckZvckxhbmd1YWdlTmFtZShsYW5nLm5hbWUpO1xuICAgIGlmIChtYXRjaGVkR3JhbW1hcikge1xuICAgICAgcmV0dXJuIG1hdGNoZWRHcmFtbWFyO1xuICAgIH1cblxuICAgIC8vIGxhbmcuZmlsZV9leHRlbnNpb24gaXMgbm90IHJlcXVpcmVkLCBidXQgaWYgbGFuZy5uYW1lIHJldHJpZXZlcyBubyBtYXRjaCxcbiAgICAvLyB0aGlzIGlzIHRoZSBuZXh0IGJlc3QgdGhpbmcuXG4gICAgaWYgKGxhbmcuZmlsZV9leHRlbnNpb24pIHtcbiAgICAgIG1hdGNoZWRHcmFtbWFyID0gZ2V0R3JhbW1hckZvckZpbGVFeHRlbnNpb24obGFuZy5maWxlX2V4dGVuc2lvbik7XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoZWRHcmFtbWFyKSB7XG4gICAgICByZXR1cm4gbWF0Y2hlZEdyYW1tYXI7XG4gICAgfVxuICB9XG5cbiAgaWYgKGtlcm5lbCkge1xuICAgIC8vIGtlcm5lbC5sYW5ndWFnZSBpcyBub3QgcmVxdWlyZWQsIGJ1dCBpdHMgb2Z0ZW4gbW9yZSBhY2N1cmF0ZSB0aGFuIG5hbWVcbiAgICBtYXRjaGVkR3JhbW1hciA9IGdldEdyYW1tYXJGb3JMYW5ndWFnZU5hbWUoa2VybmVsLmxhbmd1YWdlKTtcbiAgICBpZiAobWF0Y2hlZEdyYW1tYXIpIHtcbiAgICAgIHJldHVybiBtYXRjaGVkR3JhbW1hcjtcbiAgICB9XG4gICAgLy8ga2VybmVsLm5hbWUgc2hvdWxkIGJlIHJlcXVpcmVkLCBidXQgaXMgb2Z0ZW4gYSBrZXJuZWwgbmFtZSwgc28gaXRzIGhhcmRcbiAgICAvLyB0byBtYXRjaCBlZmZjaWVudGx5XG4gICAgbWF0Y2hlZEdyYW1tYXIgPSBnZXRHcmFtbWFyRm9yS2VybmVsc3BlY05hbWUoa2VybmVsLm5hbWUpO1xuICAgIGlmIChtYXRjaGVkR3JhbW1hcikge1xuICAgICAgcmV0dXJuIG1hdGNoZWRHcmFtbWFyO1xuICAgIH1cbiAgfVxuXG4gIGF0b20ubm90aWZpY2F0aW9ucy5hZGRXYXJuaW5nKFwiVW5hYmxlIHRvIGRldGVybWluZSBjb3JyZWN0IGxhbmd1YWdlIGdyYW1tYXJcIik7XG4gIHJldHVybiBhdG9tLmdyYW1tYXJzLmdyYW1tYXJGb3JTY29wZU5hbWUoXCJzb3VyY2UucHl0aG9uXCIpO1xufVxuXG4vKipcbiAqIFRyaWVzIHRvIGZpbmQgYSBtYXRjaGluZyBBdG9tIEdyYW1tYXIgZnJvbSBhIGxhbmd1YWdlIG5hbWVcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBsYW5ndWFnZSBuYW1lIHRvIGZpbmQgYSBncmFtbWFyIGZvci5cbiAqIEByZXR1cm5zIHtHcmFtbWFyfSAtIFRoZSBtYXRjaGluZyBBdG9tIEdyYW1tYXIuXG4gKi9cbmZ1bmN0aW9uIGdldEdyYW1tYXJGb3JMYW5ndWFnZU5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGlmICghbmFtZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGZvcm1hdHRlZE5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZShcIiBcIiwgXCItXCIpO1xuICBjb25zdCBzY29wZU5hbWUgPSBgc291cmNlLiR7Zm9ybWF0dGVkTmFtZX1gO1xuICBjb25zdCBncmFtbWFycyA9IGF0b20uZ3JhbW1hcnMuZ2V0R3JhbW1hcnMoKTtcblxuICBmb3IgKGNvbnN0IGcgb2YgZ3JhbW1hcnMpIHtcbiAgICBpZiAoXG4gICAgICBnICYmXG4gICAgICAoKGcubmFtZSAmJiBnLm5hbWUudG9Mb3dlckNhc2UoKSA9PSBuYW1lLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgIGcuc2NvcGVOYW1lID09IHNjb3BlTmFtZSlcbiAgICApIHtcbiAgICAgIHJldHVybiBnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFRyaWVzIHRvIGZpbmQgYSBtYXRjaGluZyBBdG9tIEdyYW1tYXIgZnJvbSBhIGZpbGUgZXh0ZW5zaW9uc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBleHQgLSBUaGUgZmlsZSBleHRlbnNpb24gdG8gZmluZCBhIGdyYW1tYXIgZm9yLlxuICogQHJldHVybnMge0dyYW1tYXJ9IC0gVGhlIG1hdGNoaW5nIEF0b20gR3JhbW1hci5cbiAqL1xuZnVuY3Rpb24gZ2V0R3JhbW1hckZvckZpbGVFeHRlbnNpb24oZXh0OiBzdHJpbmcpOiBHcmFtbWFyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGlmICghZXh0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZXh0ID0gZXh0LnN0YXJ0c1dpdGgoXCIuXCIpID8gZXh0LnNsaWNlKDEpIDogZXh0O1xuICBjb25zdCBncmFtbWFycyA9IGF0b20uZ3JhbW1hcnMuZ2V0R3JhbW1hcnMoKTtcbiAgcmV0dXJuIF8uZmluZChncmFtbWFycywgKGdyYW1tYXIpID0+IHtcbiAgICByZXR1cm4gXy5pbmNsdWRlcyhncmFtbWFyLmZpbGVUeXBlcywgZXh0KTtcbiAgfSk7XG59XG5cbi8qKlxuICogVHJpZXMgdG8gZmluZCBhIG1hdGNoaW5nIEF0b20gR3JhbW1hciBmcm9tIEtlcm5lbHNwZWNNZXRhZGF0YSBuYW1lXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgS2VybmVsc3BlY01ldGFkYXRhIG5hbWUgdG8gZmluZCBhIGdyYW1tYXIgZm9yLlxuICogQHJldHVybnMge0dyYW1tYXJ9IC0gVGhlIG1hdGNoaW5nIEF0b20gR3JhbW1hci5cbiAqL1xuZnVuY3Rpb24gZ2V0R3JhbW1hckZvcktlcm5lbHNwZWNOYW1lKG5hbWU6IHN0cmluZyk6IEdyYW1tYXIgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgLy8gQ2hlY2sgaWYgdGhlcmUgZXhpc3RzIGFuIEF0b20gZ3JhbW1hciBuYW1lZCBzb3VyY2UuJHtuYW1lfVxuICBjb25zdCBncmFtbWFyID0gZ2V0R3JhbW1hckZvckxhbmd1YWdlTmFtZShuYW1lKTtcbiAgaWYgKGdyYW1tYXIpIHtcbiAgICByZXR1cm4gZ3JhbW1hcjtcbiAgfVxuICAvLyBPdGhlcndpc2UgYXR0ZW1wdCBtYW51YWwgbWF0Y2hpbmcgZnJvbSBrZXJuZWxzcGVjIG5hbWUgdG8gQXRvbSBzY29wZVxuICBjb25zdCBjcm9zc3dhbGsgPSB7XG4gICAgcHl0aG9uMjogXCJzb3VyY2UucHl0aG9uXCIsXG4gICAgcHl0aG9uMzogXCJzb3VyY2UucHl0aG9uXCIsXG4gICAgYmFzaDogXCJzb3VyY2Uuc2hlbGxcIixcbiAgICBqYXZhc2NyaXB0OiBcInNvdXJjZS5qc1wiLFxuICAgIGlyOiBcInNvdXJjZS5yXCIsXG4gIH07XG5cbiAgaWYgKGNyb3Nzd2Fsa1tuYW1lXSkge1xuICAgIHJldHVybiBhdG9tLmdyYW1tYXJzLmdyYW1tYXJGb3JTY29wZU5hbWUoY3Jvc3N3YWxrW25hbWVdKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIG5vdGVib29rIGNlbGxzIHRvIEh5ZHJvZ2VuIGNvZGUgYmxvY2tzLlxuICpcbiAqIEBwYXJhbSB7Q2VsbH0gY2VsbCAtIE5vdGVib29rIGNlbGwgdG8gY29udmVydFxuICogQHBhcmFtIHtTdHJpbmd9IGNvbW1lbnRTdGFydFN0cmluZyAtIFRoZSBjb21tZW50IHN5bnRheCBvZiB0aGUgY29kZSBsYW5ndWFnZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IC0gQSBIeWRyb2dlbiBDb2RlIEJsb2NrLlxuICovXG5mdW5jdGlvbiB0b0h5ZHJvZ2VuQ29kZUJsb2NrKFxuICBjZWxsOiBDZWxsLFxuICBjb21tZW50U3RhcnRTdHJpbmc6IHN0cmluZ1xuKToge1xuICBjZWxsVHlwZTogSHlkcm9nZW5DZWxsVHlwZTtcbiAgY29kZTogc3RyaW5nO1xuICByb3c6IG51bWJlcjtcbn0ge1xuICBjb25zdCBjZWxsVHlwZSA9IGNlbGwuY2VsbF90eXBlID09PSBcIm1hcmtkb3duXCIgPyBcIm1hcmtkb3duXCIgOiBcImNvZGVjZWxsXCI7XG4gIGNvbnN0IGNlbGxIZWFkZXIgPSBnZXRDZWxsSGVhZGVyKGNvbW1lbnRTdGFydFN0cmluZywgY2VsbFR5cGUpO1xuICBsZXQgc291cmNlID0gY2VsbC5zb3VyY2U7XG4gIGxldCBjZWxsTGVuZ3RoO1xuXG4gIGlmIChjZWxsVHlwZSA9PT0gXCJtYXJrZG93blwiKSB7XG4gICAgc291cmNlID0gc291cmNlLnNwbGl0KFwiXFxuXCIpO1xuICAgIHNvdXJjZVswXSA9IGNvbW1lbnRTdGFydFN0cmluZyArIHNvdXJjZVswXTtcbiAgICBjZWxsTGVuZ3RoID0gc291cmNlLmxlbmd0aDtcbiAgICBzb3VyY2UgPSBzb3VyY2Uuam9pbihsaW5lc2VwICsgY29tbWVudFN0YXJ0U3RyaW5nKTtcbiAgfSBlbHNlIHtcbiAgICBjZWxsTGVuZ3RoID0gc291cmNlLnNwbGl0KFwiXFxuXCIpLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2VsbFR5cGUsXG4gICAgY29kZTogY2VsbEhlYWRlciArIGxpbmVzZXAgKyBzb3VyY2UsXG4gICAgcm93OiBjZWxsTGVuZ3RoICsgMSwgLy8gcGx1cyAxIGZvciB0aGUgaGVhZGVyXG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIEh5ZHJvZ2VuIGNlbGwgaGVhZGVyXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGNvbW1lbnRTdGFydFN0cmluZyAtIFRoZSBjb21tZW50IHN5bnRheCBvZiB0aGUgY29kZSBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXl3b3JkIC0gVGhlIGtleXdvcmQgcmVsYXRpbmcgdG8gdGhlIGNlbGwgdHlwZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9IC0gQSBIeWRyb2dlbiBDZWxsIEhlYWRlci5cbiAqL1xuZnVuY3Rpb24gZ2V0Q2VsbEhlYWRlcihcbiAgY29tbWVudFN0YXJ0U3RyaW5nOiBzdHJpbmcsXG4gIGtleXdvcmQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbikge1xuICBjb25zdCBtYXJrZXIgPSBgJHtjb21tZW50U3RhcnRTdHJpbmd9JSUgYDtcbiAgcmV0dXJuIGtleXdvcmQgPyBtYXJrZXIgKyBrZXl3b3JkIDogbWFya2VyO1xufVxuXG4vKipcbiAqIERpc3BsYXlzIHByZXZpb3VzIGNlbGwgcmVzdWx0cyBpbmxpbmUgb2YgdGhlIHByb3ZpZGVkIGVkaXRvci4gbmJDZWxscyBhbmRcbiAqIHJlc3VsdFJvd3Mgc2hvdWxkIGJlIHRoZSBzYW1lIGxlbmd0aC5cbiAqXG4gKiBAcGFyYW0ge1RleHRFZGl0b3J9IGVkaXRvciAtIFRoZSBlZGl0b3IgdG8gZGlzcGxheSB0aGUgcmVzdWx0cyBpbi5cbiAqIEBwYXJhbSB7Q2VsbFtdfSBuYkNlbGxzIC0gVGhlIG9yaWdpbmFsIG5vdGVib29rIGNlbGxzLlxuICogQHBhcmFtIHtOdW1iZXJbXX0gcmVzdWx0Um93cyAtIFRoZSByb3dzIHRvIGRpc3BsYXkgdGhlIHJlc3VsdHMgb24uXG4gKi9cbmZ1bmN0aW9uIGltcG9ydE5vdGVib29rUmVzdWx0cyhcbiAgZWRpdG9yOiBUZXh0RWRpdG9yLFxuICBuYkNlbGxzOiBBcnJheTxDZWxsPixcbiAgcmVzdWx0Um93czogQXJyYXk8bnVtYmVyPlxuKSB7XG4gIGlmIChuYkNlbGxzLmxlbmd0aCAhPSByZXN1bHRSb3dzLmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgbWFya2VycyA9IHN0b3JlLm1hcmtlcnNNYXBwaW5nLmdldChlZGl0b3IuaWQpO1xuICBtYXJrZXJzID0gbWFya2VycyA/IG1hcmtlcnMgOiBzdG9yZS5uZXdNYXJrZXJTdG9yZShlZGl0b3IuaWQpO1xuICBsZXQgY2VsbE51bWJlciA9IDA7XG5cbiAgZm9yIChjb25zdCBjZWxsIG9mIG5iQ2VsbHMpIHtcbiAgICBjb25zdCByb3cgPSByZXN1bHRSb3dzW2NlbGxOdW1iZXJdO1xuXG4gICAgc3dpdGNoIChjZWxsLmNlbGxfdHlwZSkge1xuICAgICAgY2FzZSBcImNvZGVcIjpcbiAgICAgICAgaWYgKGNlbGwub3V0cHV0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaW1wb3J0UmVzdWx0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgIG1hcmtlcnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvdXRwdXRzOiBjZWxsLm91dHB1dHMsXG4gICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJtYXJrZG93blwiOlxuICAgICAgICBpbXBvcnRSZXN1bHQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgbWFya2VycyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG91dHB1dHM6IFtjb252ZXJ0TWFya2Rvd25Ub091dHB1dChjZWxsLnNvdXJjZSldLFxuICAgICAgICAgICAgcm93LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2VsbE51bWJlcisrO1xuICB9XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LW5vdGVib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2ltcG9ydC1ub3RlYm9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkNBQTZCO0FBQzdCLDJCQUE4QjtBQUM5QixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsYUFBUSxDQUFDO0FBRzlCLHVDQUFrQztBQUNsQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsaUJBQU0sQ0FBQztBQUUxQixvREFBNkM7QUFFN0Msb0RBQTRCO0FBQzVCLGlEQUF1RDtBQUN2RCxxQ0FBaUU7QUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBUTdELFNBQWdCLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLElBQ0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLEtBQUssSUFBSSxFQUN0RDtRQUNBLE9BQU8sYUFBYSxDQUNsQixHQUFHLEVBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FDbEQsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQVZELGtDQVVDO0FBU0QsU0FBZ0IsY0FBYyxDQUFDLEtBQW1COztJQUVoRCxNQUFNLG9CQUFvQixHQUFHLE1BQUEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLDBDQUFFLElBQUksQ0FBQztJQUV4RCxJQUFJLG9CQUFvQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDM0UsT0FBTyxhQUFhLENBQ2xCLG9CQUFvQixFQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLEdB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Q0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUMzQixxQkFBWSxDQUNWO3dCQUNFLE1BQU07d0JBQ04sT0FBTztxQkFDUixFQUNEO3dCQUNFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzt3QkFDckIsR0FBRztxQkFDSixDQUNGLENBQUM7aUJBQ0g7Z0JBRUQsTUFBTTtZQUVSLEtBQUssVUFBVTtnQkFDYixxQkFBWSxDQUNWO29CQUNFLE1BQU07b0JBQ04sT0FBTztpQkFDUixFQUNEO29CQUNFLE9BQU8sRUFBRSxDQUFDLGdDQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDL0MsR0FBRztpQkFDSixDQUNGLENBQUM7Z0JBQ0YsTUFBTTtTQUNUO1FBRUQsVUFBVSxFQUFFLENBQUM7S0FDZDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RWRpdG9yLCBHcmFtbWFyIH0gZnJvbSBcImF0b21cIjtcclxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQgeyBwcm9taXNlcyB9IGZyb20gXCJmc1wiO1xyXG5jb25zdCB7IHJlYWRGaWxlIH0gPSBwcm9taXNlcztcclxuaW1wb3J0IHR5cGUgeyBIeWRyb2dlbkNlbGxUeXBlIH0gZnJvbSBcIi4vaHlkcm9nZW5cIjtcclxuXHJcbmltcG9ydCB7IHJlbW90ZSB9IGZyb20gXCJlbGVjdHJvblwiO1xyXG5jb25zdCB7IGRpYWxvZyB9ID0gcmVtb3RlO1xyXG5cclxuaW1wb3J0IHsgZnJvbUpTIH0gZnJvbSBcIkBudGVyYWN0L2NvbW11dGFibGVcIjtcclxuaW1wb3J0IHR5cGUgeyBOb3RlYm9vaywgSlNPTk9iamVjdCwgQ2VsbCB9IGZyb20gXCJAbnRlcmFjdC9jb21tdXRhYmxlXCI7XHJcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi9zdG9yZVwiO1xyXG5pbXBvcnQgeyBnZXRDb21tZW50U3RhcnRTdHJpbmcgfSBmcm9tIFwiLi9jb2RlLW1hbmFnZXJcIjtcclxuaW1wb3J0IHsgaW1wb3J0UmVzdWx0LCBjb252ZXJ0TWFya2Rvd25Ub091dHB1dCB9IGZyb20gXCIuL3Jlc3VsdFwiO1xyXG5jb25zdCBsaW5lc2VwID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJcXHJcXG5cIiA6IFwiXFxuXCI7XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyBpZiB0aGUgcHJvdmlkZWQgdXJpIGlzIGEgdmFsaWQgZmlsZSBmb3IgSHlkcm9nZW4gdG8gaW1wb3J0LiBUaGVuXHJcbiAqIGl0IGxvYWRzIHRoZSBub3RlYm9vay5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IHVyaSAtIFVyaSBvZiB0aGUgZmlsZSB0byBvcGVuLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlweW5iT3BlbmVyKHVyaTogc3RyaW5nKSB7XHJcbiAgaWYgKFxyXG4gICAgcGF0aC5leHRuYW1lKHVyaSkudG9Mb3dlckNhc2UoKSA9PT0gXCIuaXB5bmJcIiAmJlxyXG4gICAgYXRvbS5jb25maWcuZ2V0KFwiSHlkcm9nZW4uaW1wb3J0Tm90ZWJvb2tVUklcIikgPT09IHRydWVcclxuICApIHtcclxuICAgIHJldHVybiBfbG9hZE5vdGVib29rKFxyXG4gICAgICB1cmksXHJcbiAgICAgIGF0b20uY29uZmlnLmdldChcIkh5ZHJvZ2VuLmltcG9ydE5vdGVib29rUmVzdWx0c1wiKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBwcm92aWRlZCBldmVudCBpcyB0cnlpbmcgdG8gb3BlbiBhIHZhbGlkIGZpbGUgZm9yIEh5ZHJvZ2VuXHJcbiAqIHRvIGltcG9ydC4gT3RoZXJ3aXNlIGl0IHdpbGwgYXNrIHRoZSB1c2VyIHRvIGNob3NlIGEgdmFsaWQgZmlsZSBmb3IgSHlkcm9nZW5cclxuICogdG8gaW1wb3J0LiBUaGVuIGl0IGxvYWRzIHRoZSBub3RlYm9vay5cclxuICpcclxuICogQHBhcmFtIHtFdmVudH0gZXZlbnQgLSBBdG9tIEV2ZW50IGZyb20gY2xpY2tpbmcgaW4gYSB0cmVldmlldy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnROb3RlYm9vayhldmVudD86IEN1c3RvbUV2ZW50KSB7XHJcbiAgLy8gVXNlIHNlbGVjdGVkIGZpbGVwYXRoIGlmIGNhbGxlZCBmcm9tIHRyZWUtdmlldyBjb250ZXh0IG1lbnVcclxuICBjb25zdCBmaWxlbmFtZUZyb21UcmVlVmlldyA9IGV2ZW50LnRhcmdldC5kYXRhc2V0Py5wYXRoO1xyXG5cclxuICBpZiAoZmlsZW5hbWVGcm9tVHJlZVZpZXcgJiYgcGF0aC5leHRuYW1lKGZpbGVuYW1lRnJvbVRyZWVWaWV3KSA9PT0gXCIuaXB5bmJcIikge1xyXG4gICAgcmV0dXJuIF9sb2FkTm90ZWJvb2soXHJcbiAgICAgIGZpbGVuYW1lRnJvbVRyZWVWaWV3LFxyXG4gICAgICBhdG9tLmNvbmZpZy5nZXQoXCJIeWRyb2dlbi5pbXBvcnROb3RlYm9va1Jlc3VsdHNcIilcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkaWFsb2cuc2hvd09wZW5EaWFsb2coXHJcbiAgICB7XHJcbiAgICAgIHByb3BlcnRpZXM6IFtcIm9wZW5GaWxlXCJdLFxyXG4gICAgICBmaWx0ZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCJOb3RlYm9va3NcIixcclxuICAgICAgICAgIGV4dGVuc2lvbnM6IFtcImlweW5iXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAgKGZpbGVuYW1lczogQXJyYXk8c3RyaW5nPiB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgaWYgKCFmaWxlbmFtZXMpIHtcclxuICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXCJObyBmaWxlbmFtZXMgc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBmaWxlbmFtZSA9IGZpbGVuYW1lc1swXTtcclxuXHJcbiAgICAgIGlmIChwYXRoLmV4dG5hbWUoZmlsZW5hbWUpICE9PSBcIi5pcHluYlwiKSB7XHJcbiAgICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiU2VsZWN0ZWQgZmlsZSBtdXN0IGhhdmUgZXh0ZW5zaW9uIC5pcHluYlwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIF9sb2FkTm90ZWJvb2soXHJcbiAgICAgICAgZmlsZW5hbWUsXHJcbiAgICAgICAgYXRvbS5jb25maWcuZ2V0KFwiSHlkcm9nZW4uaW1wb3J0Tm90ZWJvb2tSZXN1bHRzXCIpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlYWRzIHRoZSBnaXZlbiBub3RlYm9vayBmaWxlIGFuZCBjb3ZlcnRzIGl0IHRvIGEgdGV4dCBlZGl0b3IgZm9ybWF0IHdpdGhcclxuICogSHlkcm9nZW4gY2VsbCBicmVha3BvaW50cy4gT3B0aW9uYWxseSBhZnRlciBvcGVuaW5nIHRoZSBub3RlYm9vaywgaXQgd2lsbFxyXG4gKiBhbHNvIGxvYWQgdGhlIHByZXZpb3VzIHJlc3VsdHMgYW5kIGRpc3BsYXkgdGhlbS5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lIC0gUGF0aCBvZiB0aGUgZmlsZS5cclxuICogQHBhcmFtIHtCb29sZWFufSBpbXBvcnRSZXN1bHRzIC0gRGVjaWRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgcHJldmlvdXMgcmVzdWx0c1xyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIF9sb2FkTm90ZWJvb2soXHJcbiAgZmlsZW5hbWU6IHN0cmluZyxcclxuICBpbXBvcnRSZXN1bHRzOiBib29sZWFuID0gZmFsc2VcclxuKSB7XHJcbiAgbGV0IGRhdGE7XHJcbiAgbGV0IG5iO1xyXG5cclxuICB0cnkge1xyXG4gICAgZGF0YSA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoZmlsZW5hbWUsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSk7XHJcblxyXG4gICAgaWYgKGRhdGEubmJmb3JtYXQgPCAzKSB7XHJcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIk9ubHkgbm90ZWJvb2sgdmVyc2lvbiA0IGlzIGZ1bGx5IHN1cHBvcnRlZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmIChkYXRhLm5iZm9ybWF0ID09IDMpIHtcclxuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZFdhcm5pbmcoXHJcbiAgICAgICAgXCJPbmx5IG5vdGVib29rIHZlcnNpb24gNCBpcyBmdWxseSBzdXBwb3J0ZWRcIlxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5iID0gZnJvbUpTKGRhdGEpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgaWYgKGVyci5uYW1lID09PSBcIlN5bnRheEVycm9yXCIpIHtcclxuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiRXJyb3Igbm90IGEgdmFsaWQgbm90ZWJvb2tcIiwge1xyXG4gICAgICAgIGRldGFpbDogZXJyLnN0YWNrLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIkVycm9yIHJlYWRpbmcgZmlsZVwiLCB7XHJcbiAgICAgICAgZGV0YWlsOiBlcnIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IGVkaXRvciA9IGF3YWl0IGF0b20ud29ya3NwYWNlLm9wZW4oKTtcclxuICBjb25zdCBncmFtbWFyID0gZ2V0R3JhbW1hckZvck5vdGVib29rKG5iKTtcclxuICBpZiAoIWdyYW1tYXIpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgYXRvbS5ncmFtbWFycy5hc3NpZ25MYW5ndWFnZU1vZGUoZWRpdG9yLmdldEJ1ZmZlcigpLCBncmFtbWFyLnNjb3BlTmFtZSk7XHJcbiAgY29uc3QgY29tbWVudFN0YXJ0U3RyaW5nID0gZ2V0Q29tbWVudFN0YXJ0U3RyaW5nKGVkaXRvcik7XHJcblxyXG4gIGlmICghY29tbWVudFN0YXJ0U3RyaW5nKSB7XHJcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXCJObyBjb21tZW50IHN5bWJvbCBkZWZpbmVkIGluIHJvb3Qgc2NvcGVcIik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb25zdCBuYkNlbGxzID0gW107XHJcbiAgY29uc3Qgc291cmNlcyA9IFtdO1xyXG4gIGNvbnN0IHJlc3VsdFJvd3MgPSBbXTtcclxuICBsZXQgcHJldmlvdXNCcmVha3BvaW50ID0gLTE7XHJcbiAgbmIuY2VsbE9yZGVyLmZvckVhY2goKHZhbHVlKSA9PiB7XHJcbiAgICBjb25zdCBjZWxsID0gbmIuY2VsbE1hcC5nZXQodmFsdWUpLnRvSlMoKTtcclxuICAgIG5iQ2VsbHMucHVzaChjZWxsKTtcclxuICAgIGNvbnN0IGh5Q2VsbCA9IHRvSHlkcm9nZW5Db2RlQmxvY2soY2VsbCwgYCR7Y29tbWVudFN0YXJ0U3RyaW5nfSBgKTtcclxuICAgIHJlc3VsdFJvd3MucHVzaChwcmV2aW91c0JyZWFrcG9pbnQgKyBoeUNlbGwuY29kZS50cmltKCkuc3BsaXQoXCJcXG5cIikubGVuZ3RoKTtcclxuICAgIHByZXZpb3VzQnJlYWtwb2ludCArPSBoeUNlbGwucm93O1xyXG4gICAgc291cmNlcy5wdXNoKGh5Q2VsbC5jb2RlKTtcclxuICB9KTtcclxuICBlZGl0b3Iuc2V0VGV4dChzb3VyY2VzLmpvaW4obGluZXNlcCkpO1xyXG4gIGlmIChpbXBvcnRSZXN1bHRzKSB7XHJcbiAgICBpbXBvcnROb3RlYm9va1Jlc3VsdHMoZWRpdG9yLCBuYkNlbGxzLCByZXN1bHRSb3dzKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmllcyB0byBkZXRlcm1pbmUgdGhlIEF0b20gR3JhbW1hciBvZiBhIG5vdGVib29rLiBEZWZhdWx0IGlzIFB5dGhvbi5cclxuICpcclxuICogQHBhcmFtIHtOb3RlYm9va30gbmIgLSBUaGUgTm90ZWJvb2sgdG8gZGV0ZXJtaW5lIHRoZSBBdG9tIEdyYW1tYXIgb2YuXHJcbiAqIEByZXR1cm5zIHtHcmFtbWFyfSAtIFRoZSBncmFtbWFyIG9mIHRoZSBub3RlYm9vay5cclxuICovXHJcbmZ1bmN0aW9uIGdldEdyYW1tYXJGb3JOb3RlYm9vayhuYjogTm90ZWJvb2spIHtcclxuICBjb25zdCBtZXRhRGF0YSA9IG5iLm1ldGFkYXRhO1xyXG4gIGNvbnN0IHtcclxuICAgIGtlcm5lbHNwZWMsXHJcbiAgICAvLyBPZmZpY2FsIG5iZm9ybWF0IHY0XHJcbiAgICBsYW5ndWFnZV9pbmZvLFxyXG4gICAgLy8gT2ZmaWNhbCBuYmZvcm1hdCB2NFxyXG4gICAga2VybmVsX2luZm8sXHJcbiAgICAvLyBTb21ldGltZXMgdXNlZCBpbiBuYmZvcm1hdCB2M1xyXG4gICAgbGFuZ3VhZ2UsIC8vIFNvbWV0aW1lcyB1c2VkIGluIG5iZm9ybWF0IHYzXHJcbiAgfSA9IHR5cGVvZiBtZXRhRGF0YS50b0pTID09PSBcImZ1bmN0aW9uXCIgPyBtZXRhRGF0YS50b0pTKCkgOiBtZXRhRGF0YTsgLy8gVE9ETyBmaXggdG9KU1xyXG4gIGNvbnN0IGtlcm5lbCA9IGtlcm5lbHNwZWMgPyBrZXJuZWxzcGVjIDoga2VybmVsX2luZm87XHJcbiAgY29uc3QgbGFuZyA9IGxhbmd1YWdlX2luZm9cclxuICAgID8gbGFuZ3VhZ2VfaW5mb1xyXG4gICAgOiBsYW5ndWFnZVxyXG4gICAgPyB7XHJcbiAgICAgICAgbmFtZTogbGFuZ3VhZ2UsXHJcbiAgICAgIH1cclxuICAgIDogbnVsbDtcclxuXHJcbiAgaWYgKCFrZXJuZWwgJiYgIWxhbmcpIHtcclxuICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRXYXJuaW5nKFxyXG4gICAgICBcIk5vIGxhbmd1YWdlIG1ldGFkYXRhIGluIG5vdGVib29rOyBhc3N1bWluZyBQeXRob25cIlxyXG4gICAgKTtcclxuICAgIHJldHVybiBhdG9tLmdyYW1tYXJzLmdyYW1tYXJGb3JTY29wZU5hbWUoXCJzb3VyY2UucHl0aG9uXCIpO1xyXG4gIH1cclxuXHJcbiAgbGV0IG1hdGNoZWRHcmFtbWFyID0gbnVsbDtcclxuXHJcbiAgaWYgKGxhbmcpIHtcclxuICAgIC8vIGxhbmcubmFtZSBzaG91bGQgYmUgcmVxdWlyZWRcclxuICAgIG1hdGNoZWRHcmFtbWFyID0gZ2V0R3JhbW1hckZvckxhbmd1YWdlTmFtZShsYW5nLm5hbWUpO1xyXG4gICAgaWYgKG1hdGNoZWRHcmFtbWFyKSB7XHJcbiAgICAgIHJldHVybiBtYXRjaGVkR3JhbW1hcjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBsYW5nLmZpbGVfZXh0ZW5zaW9uIGlzIG5vdCByZXF1aXJlZCwgYnV0IGlmIGxhbmcubmFtZSByZXRyaWV2ZXMgbm8gbWF0Y2gsXHJcbiAgICAvLyB0aGlzIGlzIHRoZSBuZXh0IGJlc3QgdGhpbmcuXHJcbiAgICBpZiAobGFuZy5maWxlX2V4dGVuc2lvbikge1xyXG4gICAgICBtYXRjaGVkR3JhbW1hciA9IGdldEdyYW1tYXJGb3JGaWxlRXh0ZW5zaW9uKGxhbmcuZmlsZV9leHRlbnNpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtYXRjaGVkR3JhbW1hcikge1xyXG4gICAgICByZXR1cm4gbWF0Y2hlZEdyYW1tYXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpZiAoa2VybmVsKSB7XHJcbiAgICAvLyBrZXJuZWwubGFuZ3VhZ2UgaXMgbm90IHJlcXVpcmVkLCBidXQgaXRzIG9mdGVuIG1vcmUgYWNjdXJhdGUgdGhhbiBuYW1lXHJcbiAgICBtYXRjaGVkR3JhbW1hciA9IGdldEdyYW1tYXJGb3JMYW5ndWFnZU5hbWUoa2VybmVsLmxhbmd1YWdlKTtcclxuICAgIGlmIChtYXRjaGVkR3JhbW1hcikge1xyXG4gICAgICByZXR1cm4gbWF0Y2hlZEdyYW1tYXI7XHJcbiAgICB9XHJcbiAgICAvLyBrZXJuZWwubmFtZSBzaG91bGQgYmUgcmVxdWlyZWQsIGJ1dCBpcyBvZnRlbiBhIGtlcm5lbCBuYW1lLCBzbyBpdHMgaGFyZFxyXG4gICAgLy8gdG8gbWF0Y2ggZWZmY2llbnRseVxyXG4gICAgbWF0Y2hlZEdyYW1tYXIgPSBnZXRHcmFtbWFyRm9yS2VybmVsc3BlY05hbWUoa2VybmVsLm5hbWUpO1xyXG4gICAgaWYgKG1hdGNoZWRHcmFtbWFyKSB7XHJcbiAgICAgIHJldHVybiBtYXRjaGVkR3JhbW1hcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF0b20ubm90aWZpY2F0aW9ucy5hZGRXYXJuaW5nKFwiVW5hYmxlIHRvIGRldGVybWluZSBjb3JyZWN0IGxhbmd1YWdlIGdyYW1tYXJcIik7XHJcbiAgcmV0dXJuIGF0b20uZ3JhbW1hcnMuZ3JhbW1hckZvclNjb3BlTmFtZShcInNvdXJjZS5weXRob25cIik7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmllcyB0byBmaW5kIGEgbWF0Y2hpbmcgQXRvbSBHcmFtbWFyIGZyb20gYSBsYW5ndWFnZSBuYW1lXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIGxhbmd1YWdlIG5hbWUgdG8gZmluZCBhIGdyYW1tYXIgZm9yLlxyXG4gKiBAcmV0dXJucyB7R3JhbW1hcn0gLSBUaGUgbWF0Y2hpbmcgQXRvbSBHcmFtbWFyLlxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0R3JhbW1hckZvckxhbmd1YWdlTmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICBpZiAoIW5hbWUpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBjb25zdCBmb3JtYXR0ZWROYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoXCIgXCIsIFwiLVwiKTtcclxuICBjb25zdCBzY29wZU5hbWUgPSBgc291cmNlLiR7Zm9ybWF0dGVkTmFtZX1gO1xyXG4gIGNvbnN0IGdyYW1tYXJzID0gYXRvbS5ncmFtbWFycy5nZXRHcmFtbWFycygpO1xyXG5cclxuICBmb3IgKGNvbnN0IGcgb2YgZ3JhbW1hcnMpIHtcclxuICAgIGlmIChcclxuICAgICAgZyAmJlxyXG4gICAgICAoKGcubmFtZSAmJiBnLm5hbWUudG9Mb3dlckNhc2UoKSA9PSBuYW1lLnRvTG93ZXJDYXNlKCkpIHx8XHJcbiAgICAgICAgZy5zY29wZU5hbWUgPT0gc2NvcGVOYW1lKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmllcyB0byBmaW5kIGEgbWF0Y2hpbmcgQXRvbSBHcmFtbWFyIGZyb20gYSBmaWxlIGV4dGVuc2lvbnNcclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGV4dCAtIFRoZSBmaWxlIGV4dGVuc2lvbiB0byBmaW5kIGEgZ3JhbW1hciBmb3IuXHJcbiAqIEByZXR1cm5zIHtHcmFtbWFyfSAtIFRoZSBtYXRjaGluZyBBdG9tIEdyYW1tYXIuXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRHcmFtbWFyRm9yRmlsZUV4dGVuc2lvbihleHQ6IHN0cmluZyk6IEdyYW1tYXIgfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoIWV4dCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGV4dCA9IGV4dC5zdGFydHNXaXRoKFwiLlwiKSA/IGV4dC5zbGljZSgxKSA6IGV4dDtcclxuICBjb25zdCBncmFtbWFycyA9IGF0b20uZ3JhbW1hcnMuZ2V0R3JhbW1hcnMoKTtcclxuICByZXR1cm4gZ3JhbW1hcnMuZmluZCgoZ3JhbW1hcikgPT4ge1xyXG4gICAgcmV0dXJuIGdyYW1tYXIuZmlsZVR5cGVzLmluY2x1ZGVzKGV4dCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmllcyB0byBmaW5kIGEgbWF0Y2hpbmcgQXRvbSBHcmFtbWFyIGZyb20gS2VybmVsc3BlY01ldGFkYXRhIG5hbWVcclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgS2VybmVsc3BlY01ldGFkYXRhIG5hbWUgdG8gZmluZCBhIGdyYW1tYXIgZm9yLlxyXG4gKiBAcmV0dXJucyB7R3JhbW1hcn0gLSBUaGUgbWF0Y2hpbmcgQXRvbSBHcmFtbWFyLlxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0R3JhbW1hckZvcktlcm5lbHNwZWNOYW1lKG5hbWU6IHN0cmluZyk6IEdyYW1tYXIgfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICAvLyBDaGVjayBpZiB0aGVyZSBleGlzdHMgYW4gQXRvbSBncmFtbWFyIG5hbWVkIHNvdXJjZS4ke25hbWV9XHJcbiAgY29uc3QgZ3JhbW1hciA9IGdldEdyYW1tYXJGb3JMYW5ndWFnZU5hbWUobmFtZSk7XHJcbiAgaWYgKGdyYW1tYXIpIHtcclxuICAgIHJldHVybiBncmFtbWFyO1xyXG4gIH1cclxuICAvLyBPdGhlcndpc2UgYXR0ZW1wdCBtYW51YWwgbWF0Y2hpbmcgZnJvbSBrZXJuZWxzcGVjIG5hbWUgdG8gQXRvbSBzY29wZVxyXG4gIGNvbnN0IGNyb3Nzd2FsayA9IHtcclxuICAgIHB5dGhvbjI6IFwic291cmNlLnB5dGhvblwiLFxyXG4gICAgcHl0aG9uMzogXCJzb3VyY2UucHl0aG9uXCIsXHJcbiAgICBiYXNoOiBcInNvdXJjZS5zaGVsbFwiLFxyXG4gICAgamF2YXNjcmlwdDogXCJzb3VyY2UuanNcIixcclxuICAgIGlyOiBcInNvdXJjZS5yXCIsXHJcbiAgfTtcclxuXHJcbiAgaWYgKGNyb3Nzd2Fsa1tuYW1lXSkge1xyXG4gICAgcmV0dXJuIGF0b20uZ3JhbW1hcnMuZ3JhbW1hckZvclNjb3BlTmFtZShjcm9zc3dhbGtbbmFtZV0pO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnRzIG5vdGVib29rIGNlbGxzIHRvIEh5ZHJvZ2VuIGNvZGUgYmxvY2tzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0NlbGx9IGNlbGwgLSBOb3RlYm9vayBjZWxsIHRvIGNvbnZlcnRcclxuICogQHBhcmFtIHtTdHJpbmd9IGNvbW1lbnRTdGFydFN0cmluZyAtIFRoZSBjb21tZW50IHN5bnRheCBvZiB0aGUgY29kZSBsYW5ndWFnZS5cclxuICogQHJldHVybnMge09iamVjdH0gLSBBIEh5ZHJvZ2VuIENvZGUgQmxvY2suXHJcbiAqL1xyXG5mdW5jdGlvbiB0b0h5ZHJvZ2VuQ29kZUJsb2NrKFxyXG4gIGNlbGw6IENlbGwsXHJcbiAgY29tbWVudFN0YXJ0U3RyaW5nOiBzdHJpbmdcclxuKToge1xyXG4gIGNlbGxUeXBlOiBIeWRyb2dlbkNlbGxUeXBlO1xyXG4gIGNvZGU6IHN0cmluZztcclxuICByb3c6IG51bWJlcjtcclxufSB7XHJcbiAgY29uc3QgY2VsbFR5cGUgPSBjZWxsLmNlbGxfdHlwZSA9PT0gXCJtYXJrZG93blwiID8gXCJtYXJrZG93blwiIDogXCJjb2RlY2VsbFwiO1xyXG4gIGNvbnN0IGNlbGxIZWFkZXIgPSBnZXRDZWxsSGVhZGVyKGNvbW1lbnRTdGFydFN0cmluZywgY2VsbFR5cGUpO1xyXG4gIGxldCBzb3VyY2UgPSBjZWxsLnNvdXJjZTtcclxuICBsZXQgY2VsbExlbmd0aDtcclxuXHJcbiAgaWYgKGNlbGxUeXBlID09PSBcIm1hcmtkb3duXCIpIHtcclxuICAgIHNvdXJjZSA9IHNvdXJjZS5zcGxpdChcIlxcblwiKTtcclxuICAgIHNvdXJjZVswXSA9IGNvbW1lbnRTdGFydFN0cmluZyArIHNvdXJjZVswXTtcclxuICAgIGNlbGxMZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xyXG4gICAgc291cmNlID0gc291cmNlLmpvaW4obGluZXNlcCArIGNvbW1lbnRTdGFydFN0cmluZyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNlbGxMZW5ndGggPSBzb3VyY2Uuc3BsaXQoXCJcXG5cIikubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbGxUeXBlLFxyXG4gICAgY29kZTogY2VsbEhlYWRlciArIGxpbmVzZXAgKyBzb3VyY2UsXHJcbiAgICByb3c6IGNlbGxMZW5ndGggKyAxLCAvLyBwbHVzIDEgZm9yIHRoZSBoZWFkZXJcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIEh5ZHJvZ2VuIGNlbGwgaGVhZGVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBjb21tZW50U3RhcnRTdHJpbmcgLSBUaGUgY29tbWVudCBzeW50YXggb2YgdGhlIGNvZGUgbGFuZ3VhZ2UuXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXl3b3JkIC0gVGhlIGtleXdvcmQgcmVsYXRpbmcgdG8gdGhlIGNlbGwgdHlwZS5cclxuICogQHJldHVybnMge1N0cmluZ30gLSBBIEh5ZHJvZ2VuIENlbGwgSGVhZGVyLlxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0Q2VsbEhlYWRlcihcclxuICBjb21tZW50U3RhcnRTdHJpbmc6IHN0cmluZyxcclxuICBrZXl3b3JkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXHJcbikge1xyXG4gIGNvbnN0IG1hcmtlciA9IGAke2NvbW1lbnRTdGFydFN0cmluZ30lJSBgO1xyXG4gIHJldHVybiBrZXl3b3JkID8gbWFya2VyICsga2V5d29yZCA6IG1hcmtlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIERpc3BsYXlzIHByZXZpb3VzIGNlbGwgcmVzdWx0cyBpbmxpbmUgb2YgdGhlIHByb3ZpZGVkIGVkaXRvci4gbmJDZWxscyBhbmRcclxuICogcmVzdWx0Um93cyBzaG91bGQgYmUgdGhlIHNhbWUgbGVuZ3RoLlxyXG4gKlxyXG4gKiBAcGFyYW0ge1RleHRFZGl0b3J9IGVkaXRvciAtIFRoZSBlZGl0b3IgdG8gZGlzcGxheSB0aGUgcmVzdWx0cyBpbi5cclxuICogQHBhcmFtIHtDZWxsW119IG5iQ2VsbHMgLSBUaGUgb3JpZ2luYWwgbm90ZWJvb2sgY2VsbHMuXHJcbiAqIEBwYXJhbSB7TnVtYmVyW119IHJlc3VsdFJvd3MgLSBUaGUgcm93cyB0byBkaXNwbGF5IHRoZSByZXN1bHRzIG9uLlxyXG4gKi9cclxuZnVuY3Rpb24gaW1wb3J0Tm90ZWJvb2tSZXN1bHRzKFxyXG4gIGVkaXRvcjogVGV4dEVkaXRvcixcclxuICBuYkNlbGxzOiBBcnJheTxDZWxsPixcclxuICByZXN1bHRSb3dzOiBBcnJheTxudW1iZXI+XHJcbikge1xyXG4gIGlmIChuYkNlbGxzLmxlbmd0aCAhPSByZXN1bHRSb3dzLmxlbmd0aCkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBsZXQgbWFya2VycyA9IHN0b3JlLm1hcmtlcnNNYXBwaW5nLmdldChlZGl0b3IuaWQpO1xyXG4gIG1hcmtlcnMgPSBtYXJrZXJzID8gbWFya2VycyA6IHN0b3JlLm5ld01hcmtlclN0b3JlKGVkaXRvci5pZCk7XHJcbiAgbGV0IGNlbGxOdW1iZXIgPSAwO1xyXG5cclxuICBmb3IgKGNvbnN0IGNlbGwgb2YgbmJDZWxscykge1xyXG4gICAgY29uc3Qgcm93ID0gcmVzdWx0Um93c1tjZWxsTnVtYmVyXTtcclxuXHJcbiAgICBzd2l0Y2ggKGNlbGwuY2VsbF90eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJjb2RlXCI6XHJcbiAgICAgICAgaWYgKGNlbGwub3V0cHV0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpbXBvcnRSZXN1bHQoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBlZGl0b3IsXHJcbiAgICAgICAgICAgICAgbWFya2VycyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIG91dHB1dHM6IGNlbGwub3V0cHV0cyxcclxuICAgICAgICAgICAgICByb3csXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJtYXJrZG93blwiOlxyXG4gICAgICAgIGltcG9ydFJlc3VsdChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgZWRpdG9yLFxyXG4gICAgICAgICAgICBtYXJrZXJzLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3V0cHV0czogW2NvbnZlcnRNYXJrZG93blRvT3V0cHV0KGNlbGwuc291cmNlKV0sXHJcbiAgICAgICAgICAgIHJvdyxcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGNlbGxOdW1iZXIrKztcclxuICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/input-view.d.ts b/dist/input-view.d.ts deleted file mode 100644 index 9581d1a2c..000000000 --- a/dist/input-view.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { TextEditor, Panel } from "atom"; -declare type opts = { - prompt: string; - defaultText?: string; - allowCancel?: boolean; - password?: boolean; -}; -declare type cb = (s: string) => void; -export default class InputView { - onConfirmed: cb; - element: HTMLElement; - miniEditor: TextEditor; - panel: Panel | null | undefined; - previouslyFocusedElement: HTMLElement | null | undefined; - constructor({ prompt, defaultText, allowCancel, password }: opts, onConfirmed: cb); - confirm(): void; - close(): void; - attach(): void; -} -export {}; diff --git a/dist/kernel-manager.d.ts b/dist/kernel-manager.d.ts deleted file mode 100644 index 9568989ce..000000000 --- a/dist/kernel-manager.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { TextEditor, Grammar } from "atom"; -import Kernel from "./kernel"; -import KernelPicker from "./kernel-picker"; -import type { KernelspecMetadata } from "@nteract/types"; -export declare class KernelManager { - kernelSpecs: Array | null | undefined; - kernelPicker: KernelPicker | null | undefined; - startKernelFor(grammar: Grammar, editor: TextEditor, filePath: string, onStarted: (kernel: Kernel) => void): void; - startKernel(kernelSpec: KernelspecMetadata, grammar: Grammar, editor: TextEditor, filePath: string, onStarted?: ((kernel: Kernel) => void) | null | undefined): void; - update(): Promise; - getAllKernelSpecs(grammar: Grammar | null | undefined): Promise; - getAllKernelSpecsForGrammar(grammar: Grammar | null | undefined): Promise; - getKernelSpecForGrammar(grammar: Grammar): Promise; - updateKernelSpecs(grammar?: Grammar | null | undefined): Promise; -} -declare const _default: KernelManager; -export default _default; diff --git a/dist/kernel-manager.js b/dist/kernel-manager.js index cfb75e8ae..a512f477a 100644 --- a/dist/kernel-manager.js +++ b/dist/kernel-manager.js @@ -4,7 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.KernelManager = void 0; -const lodash_1 = __importDefault(require("lodash")); +const map_1 = __importDefault(require("lodash/map")); +const mapKeys_1 = __importDefault(require("lodash/mapKeys")); +const sortBy_1 = __importDefault(require("lodash/sortBy")); const kernelspecs_1 = require("kernelspecs"); const electron_1 = require("electron"); const zmq_kernel_1 = __importDefault(require("./zmq-kernel")); @@ -65,9 +67,10 @@ class KernelManager { } async update() { const kernelSpecs = await kernelspecs_1.findAll(); - this.kernelSpecs = lodash_1.default.sortBy(lodash_1.default.map(lodash_1.default.mapKeys(kernelSpecs, function (value, key) { + const kernelResourcesDict = mapKeys_1.default(kernelSpecs, function (value, key) { return (value.spec.name = key); - }), "spec"), (spec) => spec.display_name); + }); + this.kernelSpecs = sortBy_1.default(map_1.default(kernelResourcesDict, "spec"), (spec) => spec.display_name); return this.kernelSpecs; } async getAllKernelSpecs(grammar) { @@ -128,8 +131,9 @@ class KernelManager { } else { const message = "Hydrogen Kernels updated:"; + const displayNames = map_1.default(kernelSpecs, "display_name"); const options = { - detail: lodash_1.default.map(kernelSpecs, "display_name").join("\n"), + detail: displayNames.join("\n"), }; atom.notifications.addInfo(message, options); } @@ -137,8 +141,7 @@ class KernelManager { } } exports.KernelManager = KernelManager; -exports.default = new KernelManager(); if (atom.inSpecMode()) { exports.ks = require("kernelspecs"); } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIva2VybmVsLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esb0RBQXVCO0FBQ3ZCLDZDQUE0RDtBQUM1RCx1Q0FBaUM7QUFDakMsOERBQXFDO0FBQ3JDLHNEQUE4QjtBQUM5QixvRUFBMkM7QUFDM0Msb0RBQTRCO0FBQzVCLG1DQUE2RTtBQUk3RSxNQUFhLGFBQWE7SUFBMUI7UUFDRSxnQkFBVyxHQUFpRCxJQUFJLENBQUM7SUF1S25FLENBQUM7SUFwS0MsY0FBYyxDQUNaLE9BQWdCLEVBQ2hCLE1BQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLFNBQW1DO1FBRW5DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE1BQU0sT0FBTyxHQUFHLDJCQUEyQixPQUFPLENBQUMsSUFBSSxVQUFVLENBQUM7Z0JBQ2xFLE1BQU0saUJBQWlCLEdBQ3JCLE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7b0JBQzFDLENBQUMsQ0FBQywrSUFBK0k7b0JBQ2pKLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxXQUFXLEdBQUcsb0xBQW9MLGlCQUFpQixFQUFFLENBQUM7Z0JBQzVOLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtvQkFDbkMsV0FBVztvQkFDWCxXQUFXLEVBQUUsaUJBQWlCLEtBQUssRUFBRTtpQkFDdEMsQ0FBQyxDQUFDO2dCQUNILE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ0ws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akIsT0FBTyxFQUFFO29CQUNQO3dCQUNFLElBQUksRUFBRSxzQkFBc0I7d0JBQzVCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FDZixnQkFBSyxDQUFDLFlBQVksQ0FDaEIsNkRBQTZELENBQzlEO3FCQUNKO29CQUNEO3dCQUNFLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBSyxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQztxQkFDbkU7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLGFBQWE7d0JBQ25CLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FDZixnQkFBSyxDQUFDLFlBQVksQ0FDaEIseURBQXlELENBQzFEO3FCQUNKO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvQzthQUFNO1lBQ0wsTUFBTSxPQUFPLEdBQUcsMkJBQTJCLENBQUM7WUFDNUMsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsTUFBTSxFQUFFLGdCQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ3RELENBQUM7WUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDOUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUF4S0Qsc0NBd0tDO0FBQ0Qsa0JBQWUsSUFBSSxhQUFhLEVBQUUsQ0FBQztBQUduQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtJQUNyQixPQUFPLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRFZGl0b3IsIEdyYW1tYXIgfSBmcm9tIFwiYXRvbVwiO1xuaW1wb3J0IF8gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgZmluZEFsbCBhcyBrZXJuZWxTcGVjc0ZpbmRBbGwgfSBmcm9tIFwia2VybmVsc3BlY3NcIjtcbmltcG9ydCB7IHNoZWxsIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgWk1RS2VybmVsIGZyb20gXCIuL3ptcS1rZXJuZWxcIjtcbmltcG9ydCBLZXJuZWwgZnJvbSBcIi4va2VybmVsXCI7XG5pbXBvcnQgS2VybmVsUGlja2VyIGZyb20gXCIuL2tlcm5lbC1waWNrZXJcIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgZ2V0RWRpdG9yRGlyZWN0b3J5LCBrZXJuZWxTcGVjUHJvdmlkZXNHcmFtbWFyLCBsb2cgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25uZWN0aW9uIH0gZnJvbSBcIi4vem1xLWtlcm5lbFwiO1xuaW1wb3J0IHR5cGUgeyBLZXJuZWxzcGVjTWV0YWRhdGEgfSBmcm9tIFwiQG50ZXJhY3QvdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIEtlcm5lbE1hbmFnZXIge1xuICBrZXJuZWxTcGVjczogQXJyYXk8S2VybmVsc3BlY01ldGFkYXRhPiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICBrZXJuZWxQaWNrZXI6IEtlcm5lbFBpY2tlciB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgc3RhcnRLZXJuZWxGb3IoXG4gICAgZ3JhbW1hcjogR3JhbW1hcixcbiAgICBlZGl0b3I6IFRleHRFZGl0b3IsXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBvblN0YXJ0ZWQ6IChrZXJuZWw6IEtlcm5lbCkgPT4gdm9pZFxuICApIHtcbiAgICB0aGlzLmdldEtlcm5lbFNwZWNGb3JHcmFtbWFyKGdyYW1tYXIpLnRoZW4oKGtlcm5lbFNwZWMpID0+IHtcbiAgICAgIGlmICgha2VybmVsU3BlYykge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYE5vIGtlcm5lbCBmb3IgZ3JhbW1hciBcXGAke2dyYW1tYXIubmFtZX1cXGAgZm91bmRgO1xuICAgICAgICBjb25zdCBweXRob25EZXNjcmlwdGlvbiA9XG4gICAgICAgICAgZ3JhbW1hciAmJiAvcHl0aG9uL2cudGVzdChncmFtbWFyLnNjb3BlTmFtZSlcbiAgICAgICAgICAgID8gXCJcXG5cXG5UbyBkZXRlY3QgeW91ciBjdXJyZW50IFB5dGhvbiBpbnN0YWxsIHlvdSB3aWxsIG5lZWQgdG8gcnVuOjxwcmU+cHl0aG9uIC1tIHBpcCBpbnN0YWxsIGlweWtlcm5lbFxcbnB5dGhvbiAtbSBpcHlrZXJuZWwgaW5zdGFsbCAtLXVzZXI8L3ByZT5cIlxuICAgICAgICAgICAgOiBcIlwiO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGBDaGVjayB0aGF0IHRoZSBsYW5ndWFnZSBmb3IgdGhpcyBmaWxlIGlzIHNldCBpbiBBdG9tLCB0aGF0IHlvdSBoYXZlIGEgSnVweXRlciBrZXJuZWwgaW5zdGFsbGVkIGZvciBpdCwgYW5kIHRoYXQgeW91IGhhdmUgY29uZmlndXJlZCB0aGUgbGFuZ3VhZ2UgbWFwcGluZyBpbiBIeWRyb2dlbiBwcmVmZXJlbmNlcy4ke3B5dGhvbkRlc2NyaXB0aW9ufWA7XG4gICAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihtZXNzYWdlLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgZGlzbWlzc2FibGU6IHB5dGhvbkRlc2NyaXB0aW9uICE9PSBcIlwiLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YXJ0S2VybmVsKGtlcm5lbFNwZWMsIGdyYW1tYXIsIGVkaXRvciwgZmlsZVBhdGgsIG9uU3RhcnRlZCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGFydEtlcm5lbChcbiAgICBrZXJuZWxTcGVjOiBLZXJuZWxzcGVjTWV0YWRhdGEsXG4gICAgZ3JhbW1hcjogR3JhbW1hcixcbiAgICBlZGl0b3I6IFRleHRFZGl0b3IsXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBvblN0YXJ0ZWQ/OiAoKGtlcm5lbDogS2VybmVsKSA9PiB2b2lkKSB8IG51bGwgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSBrZXJuZWxTcGVjLmRpc3BsYXlfbmFtZTtcbiAgICAvLyBpZiBrZXJuZWwgc3RhcnR1cCBhbHJlYWR5IGluIHByb2dyZXNzIGRvbid0IHN0YXJ0IGFkZGl0aW9uYWwga2VybmVsXG4gICAgaWYgKHN0b3JlLnN0YXJ0aW5nS2VybmVscy5nZXQoZGlzcGxheU5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0b3JlLnN0YXJ0S2VybmVsKGRpc3BsYXlOYW1lKTtcbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IGdldEVkaXRvckRpcmVjdG9yeShlZGl0b3IpO1xuICAgIGxldCBwcm9qZWN0UGF0aDtcbiAgICBsb2coXCJLZXJuZWxNYW5hZ2VyOiBzdGFydEtlcm5lbDpcIiwgZGlzcGxheU5hbWUpO1xuXG4gICAgc3dpdGNoIChhdG9tLmNvbmZpZy5nZXQoXCJIeWRyb2dlbi5zdGFydERpclwiKSkge1xuICAgICAgY2FzZSBcImZpcnN0UHJvamVjdERpclwiOlxuICAgICAgICBwcm9qZWN0UGF0aCA9IGF0b20ucHJvamVjdC5nZXRQYXRocygpWzBdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInByb2plY3REaXJPZkZpbGVcIjpcbiAgICAgICAgcHJvamVjdFBhdGggPSBhdG9tLnByb2plY3QucmVsYXRpdml6ZVBhdGgoY3VycmVudFBhdGgpWzBdO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBrZXJuZWxTdGFydERpciA9IHByb2plY3RQYXRoICE9IG51bGwgPyBwcm9qZWN0UGF0aCA6IGN1cnJlbnRQYXRoO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBjd2Q6IGtlcm5lbFN0YXJ0RGlyLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcInBpcGVcIiwgXCJwaXBlXCJdLFxuICAgIH07XG4gICAgY29uc3QgdHJhbnNwb3J0ID0gbmV3IFpNUUtlcm5lbChrZXJuZWxTcGVjLCBncmFtbWFyLCBvcHRpb25zLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXJuZWwgPSBuZXcgS2VybmVsKHRyYW5zcG9ydCk7XG4gICAgICBzdG9yZS5uZXdLZXJuZWwoa2VybmVsLCBmaWxlUGF0aCwgZWRpdG9yLCBncmFtbWFyKTtcbiAgICAgIGlmIChvblN0YXJ0ZWQpIHtcbiAgICAgICAgb25TdGFydGVkKGtlcm5lbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoKTogUHJvbWlzZTxLZXJuZWxzcGVjTWV0YWRhdGFbXT4ge1xuICAgIGNvbnN0IGtlcm5lbFNwZWNzID0gYXdhaXQga2VybmVsU3BlY3NGaW5kQWxsKCk7XG4gICAgdGhpcy5rZXJuZWxTcGVjcyA9IF8uc29ydEJ5KFxuICAgICAgXy5tYXAoXG4gICAgICAgIF8ubWFwS2V5cyhrZXJuZWxTcGVjcywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgICByZXR1cm4gKHZhbHVlLnNwZWMubmFtZSA9IGtleSk7XG4gICAgICAgIH0pLFxuICAgICAgICBcInNwZWNcIlxuICAgICAgKSxcbiAgICAgIChzcGVjKSA9PiBzcGVjLmRpc3BsYXlfbmFtZVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMua2VybmVsU3BlY3M7XG4gIH1cblxuICBhc3luYyBnZXRBbGxLZXJuZWxTcGVjcyhncmFtbWFyOiBHcmFtbWFyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLmtlcm5lbFNwZWNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5rZXJuZWxTcGVjcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlS2VybmVsU3BlY3MoZ3JhbW1hcik7XG4gIH1cblxuICBhc3luYyBnZXRBbGxLZXJuZWxTcGVjc0ZvckdyYW1tYXIoXG4gICAgZ3JhbW1hcjogR3JhbW1hciB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxLZXJuZWxzcGVjTWV0YWRhdGFbXT4ge1xuICAgIGlmICghZ3JhbW1hcikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBrZXJuZWxTcGVjcyA9IGF3YWl0IHRoaXMuZ2V0QWxsS2VybmVsU3BlY3MoZ3JhbW1hcik7XG4gICAgcmV0dXJuIGtlcm5lbFNwZWNzLmZpbHRlcigoc3BlYykgPT5cbiAgICAgIGtlcm5lbFNwZWNQcm92aWRlc0dyYW1tYXIoc3BlYywgZ3JhbW1hcilcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0S2VybmVsU3BlY0ZvckdyYW1tYXIoZ3JhbW1hcjogR3JhbW1hcikge1xuICAgIGNvbnN0IGtlcm5lbFNwZWNzID0gYXdhaXQgdGhpcy5nZXRBbGxLZXJuZWxTcGVjc0ZvckdyYW1tYXIoZ3JhbW1hcik7XG5cbiAgICBpZiAoa2VybmVsU3BlY3MubGVuZ3RoIDw9IDEpIHtcbiAgICAgIHJldHVybiBrZXJuZWxTcGVjc1swXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5rZXJuZWxQaWNrZXIpIHtcbiAgICAgIHRoaXMua2VybmVsUGlja2VyLmtlcm5lbFNwZWNzID0ga2VybmVsU3BlY3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2VybmVsUGlja2VyID0gbmV3IEtlcm5lbFBpY2tlcihrZXJuZWxTcGVjcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEtlcm5lbHNwZWNNZXRhZGF0YT4oKHJlc29sdmUpID0+IHtcbiAgICAgIGlmICghdGhpcy5rZXJuZWxQaWNrZXIpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMua2VybmVsUGlja2VyLm9uQ29uZmlybWVkID0gKGtlcm5lbFNwZWMpID0+IHJlc29sdmUoa2VybmVsU3BlYyk7XG5cbiAgICAgIHRoaXMua2VybmVsUGlja2VyLnRvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlS2VybmVsU3BlY3MoZ3JhbW1hcj86IEdyYW1tYXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3Qga2VybmVsU3BlY3MgPSBhd2FpdCB0aGlzLnVwZGF0ZSgpO1xuXG4gICAgaWYgKGtlcm5lbFNwZWNzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IFwiTm8gS2VybmVscyBJbnN0YWxsZWRcIjtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiTm8ga2VybmVscyBhcmUgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtIHNvIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIGV4ZWN1dGUgY29kZSBpbiBhbnkgbGFuZ3VhZ2UuXCIsXG4gICAgICAgIGRpc21pc3NhYmxlOiB0cnVlLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogXCJJbnN0YWxsIEluc3RydWN0aW9uc1wiLFxuICAgICAgICAgICAgb25EaWRDbGljazogKCkgPT5cbiAgICAgICAgICAgICAgc2hlbGwub3BlbkV4dGVybmFsKFxuICAgICAgICAgICAgICAgIFwiaHR0cHM6Ly9udGVyYWN0LmdpdGJvb2tzLmlvL2h5ZHJvZ2VuL2RvY3MvSW5zdGFsbGF0aW9uLmh0bWxcIlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogXCJQb3B1bGFyIEtlcm5lbHNcIixcbiAgICAgICAgICAgIG9uRGlkQ2xpY2s6ICgpID0+IHNoZWxsLm9wZW5FeHRlcm5hbChcImh0dHBzOi8vbnRlcmFjdC5pby9rZXJuZWxzXCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogXCJBbGwgS2VybmVsc1wiLFxuICAgICAgICAgICAgb25EaWRDbGljazogKCkgPT5cbiAgICAgICAgICAgICAgc2hlbGwub3BlbkV4dGVybmFsKFxuICAgICAgICAgICAgICAgIFwiaHR0cHM6Ly9naXRodWIuY29tL2p1cHl0ZXIvanVweXRlci93aWtpL0p1cHl0ZXIta2VybmVsc1wiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IobWVzc2FnZSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBcIkh5ZHJvZ2VuIEtlcm5lbHMgdXBkYXRlZDpcIjtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGRldGFpbDogXy5tYXAoa2VybmVsU3BlY3MsIFwiZGlzcGxheV9uYW1lXCIpLmpvaW4oXCJcXG5cIiksXG4gICAgICB9O1xuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEluZm8obWVzc2FnZSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtlcm5lbFNwZWNzO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBuZXcgS2VybmVsTWFuYWdlcigpO1xuXG4vLyB1c2VkIGluIHRoZSB0ZXN0c1xuaWYgKGF0b20uaW5TcGVjTW9kZSgpKSB7XG4gIGV4cG9ydHMua3MgPSByZXF1aXJlKFwia2VybmVsc3BlY3NcIik7XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIva2VybmVsLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EscURBQTZCO0FBQzdCLDZEQUFxQztBQUNyQywyREFBbUM7QUFDbkMsNkNBQTREO0FBQzVELHVDQUFpQztBQUNqQyw4REFBcUM7QUFDckMsc0RBQThCO0FBQzlCLG9FQUEyQztBQUMzQyxvREFBNEI7QUFDNUIsbUNBQTZFO0FBRzdFLE1BQWEsYUFBYTtJQUExQjtRQUNFLGdCQUFXLEdBQWlELElBQUksQ0FBQztJQXVLbkUsQ0FBQztJQXBLQyxjQUFjLENBQ1osT0FBZ0IsRUFDaEIsTUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsU0FBbUM7UUFFbkMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2YsTUFBTSxPQUFPLEdBQUcsMkJBQTJCLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQztnQkFDbEUsTUFBTSxpQkFBaUIsR0FDckIsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztvQkFDMUMsQ0FBQyxDQUFDLCtJQUErSTtvQkFDakosQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDVCxNQUFNLFdBQVcsR0FBRyxvTEFBb0wsaUJBQWlCLEVBQUUsQ0FBQztnQkFDNU4sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO29CQUNuQyxXQUFXO29CQUNYLFdBQVcsRUFBRSxpQkFBaUIsS0FBSyxFQUFFO2lCQUN0QyxDQUFDLENBQUM7Z0JBQ0gsT0FBTzthQUNSO1lBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7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QWtHO2dCQUNwRyxXQUFXLEVBQUUsSUFBSTtnQkFDakIsT0FBTyxFQUFFO29CQUNQO3dCQUNFLElBQUksRUFBRSxzQkFBc0I7d0JBQzVCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FDZixnQkFBSyxDQUFDLFlBQVksQ0FDaEIsNkRBQTZELENBQzlEO3FCQUNKO29CQUNEO3dCQUNFLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBSyxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQztxQkFDbkU7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLGFBQWE7d0JBQ25CLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FDZixnQkFBSyxDQUFDLFlBQVksQ0FDaEIseURBQXlELENBQzFEO3FCQUNKO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvQzthQUFNO1lBQ0wsTUFBTSxPQUFPLEdBQUcsMkJBQTJCLENBQUM7WUFDNUMsTUFBTSxZQUFZLEdBQUcsYUFBRyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN0RCxNQUFNLE9BQU8sR0FBRztnQkFDZCxNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDaEMsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM5QztRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQXhLRCxzQ0F3S0M7QUFHRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRTtJQUNyQixPQUFPLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRFZGl0b3IsIEdyYW1tYXIgfSBmcm9tIFwiYXRvbVwiO1xyXG5pbXBvcnQgbWFwIGZyb20gXCJsb2Rhc2gvbWFwXCI7XHJcbmltcG9ydCBtYXBLZXlzIGZyb20gXCJsb2Rhc2gvbWFwS2V5c1wiO1xyXG5pbXBvcnQgc29ydEJ5IGZyb20gXCJsb2Rhc2gvc29ydEJ5XCI7XHJcbmltcG9ydCB7IGZpbmRBbGwgYXMga2VybmVsU3BlY3NGaW5kQWxsIH0gZnJvbSBcImtlcm5lbHNwZWNzXCI7XHJcbmltcG9ydCB7IHNoZWxsIH0gZnJvbSBcImVsZWN0cm9uXCI7XHJcbmltcG9ydCBaTVFLZXJuZWwgZnJvbSBcIi4vem1xLWtlcm5lbFwiO1xyXG5pbXBvcnQgS2VybmVsIGZyb20gXCIuL2tlcm5lbFwiO1xyXG5pbXBvcnQgS2VybmVsUGlja2VyIGZyb20gXCIuL2tlcm5lbC1waWNrZXJcIjtcclxuaW1wb3J0IHN0b3JlIGZyb20gXCIuL3N0b3JlXCI7XHJcbmltcG9ydCB7IGdldEVkaXRvckRpcmVjdG9yeSwga2VybmVsU3BlY1Byb3ZpZGVzR3JhbW1hciwgbG9nIH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgeyBLZXJuZWxzcGVjTWV0YWRhdGEgfSBmcm9tIFwiQG50ZXJhY3QvdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBLZXJuZWxNYW5hZ2VyIHtcclxuICBrZXJuZWxTcGVjczogQXJyYXk8S2VybmVsc3BlY01ldGFkYXRhPiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIGtlcm5lbFBpY2tlcjogS2VybmVsUGlja2VyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgc3RhcnRLZXJuZWxGb3IoXHJcbiAgICBncmFtbWFyOiBHcmFtbWFyLFxyXG4gICAgZWRpdG9yOiBUZXh0RWRpdG9yLFxyXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcclxuICAgIG9uU3RhcnRlZDogKGtlcm5lbDogS2VybmVsKSA9PiB2b2lkXHJcbiAgKSB7XHJcbiAgICB0aGlzLmdldEtlcm5lbFNwZWNGb3JHcmFtbWFyKGdyYW1tYXIpLnRoZW4oKGtlcm5lbFNwZWMpID0+IHtcclxuICAgICAgaWYgKCFrZXJuZWxTcGVjKSB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBObyBrZXJuZWwgZm9yIGdyYW1tYXIgXFxgJHtncmFtbWFyLm5hbWV9XFxgIGZvdW5kYDtcclxuICAgICAgICBjb25zdCBweXRob25EZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICBncmFtbWFyICYmIC9weXRob24vZy50ZXN0KGdyYW1tYXIuc2NvcGVOYW1lKVxyXG4gICAgICAgICAgICA/IFwiXFxuXFxuVG8gZGV0ZWN0IHlvdXIgY3VycmVudCBQeXRob24gaW5zdGFsbCB5b3Ugd2lsbCBuZWVkIHRvIHJ1bjo8cHJlPnB5dGhvbiAtbSBwaXAgaW5zdGFsbCBpcHlrZXJuZWxcXG5weXRob24gLW0gaXB5a2VybmVsIGluc3RhbGwgLS11c2VyPC9wcmU+XCJcclxuICAgICAgICAgICAgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYENoZWNrIHRoYXQgdGhlIGxhbmd1YWdlIGZvciB0aGlzIGZpbGUgaXMgc2V0IGluIEF0b20sIHRoYXQgeW91IGhhdmUgYSBKdXB5dGVyIGtlcm5lbCBpbnN0YWxsZWQgZm9yIGl0LCBhbmQgdGhhdCB5b3UgaGF2ZSBjb25maWd1cmVkIHRoZSBsYW5ndWFnZSBtYXBwaW5nIGluIEh5ZHJvZ2VuIHByZWZlcmVuY2VzLiR7cHl0aG9uRGVzY3JpcHRpb259YDtcclxuICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IobWVzc2FnZSwge1xyXG4gICAgICAgICAgZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICBkaXNtaXNzYWJsZTogcHl0aG9uRGVzY3JpcHRpb24gIT09IFwiXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN0YXJ0S2VybmVsKGtlcm5lbFNwZWMsIGdyYW1tYXIsIGVkaXRvciwgZmlsZVBhdGgsIG9uU3RhcnRlZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXJ0S2VybmVsKFxyXG4gICAga2VybmVsU3BlYzogS2VybmVsc3BlY01ldGFkYXRhLFxyXG4gICAgZ3JhbW1hcjogR3JhbW1hcixcclxuICAgIGVkaXRvcjogVGV4dEVkaXRvcixcclxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXHJcbiAgICBvblN0YXJ0ZWQ/OiAoKGtlcm5lbDogS2VybmVsKSA9PiB2b2lkKSB8IG51bGwgfCB1bmRlZmluZWRcclxuICApIHtcclxuICAgIGNvbnN0IGRpc3BsYXlOYW1lID0ga2VybmVsU3BlYy5kaXNwbGF5X25hbWU7XHJcbiAgICAvLyBpZiBrZXJuZWwgc3RhcnR1cCBhbHJlYWR5IGluIHByb2dyZXNzIGRvbid0IHN0YXJ0IGFkZGl0aW9uYWwga2VybmVsXHJcbiAgICBpZiAoc3RvcmUuc3RhcnRpbmdLZXJuZWxzLmdldChkaXNwbGF5TmFtZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3RvcmUuc3RhcnRLZXJuZWwoZGlzcGxheU5hbWUpO1xyXG4gICAgY29uc3QgY3VycmVudFBhdGggPSBnZXRFZGl0b3JEaXJlY3RvcnkoZWRpdG9yKTtcclxuICAgIGxldCBwcm9qZWN0UGF0aDtcclxuICAgIGxvZyhcIktlcm5lbE1hbmFnZXI6IHN0YXJ0S2VybmVsOlwiLCBkaXNwbGF5TmFtZSk7XHJcblxyXG4gICAgc3dpdGNoIChhdG9tLmNvbmZpZy5nZXQoXCJIeWRyb2dlbi5zdGFydERpclwiKSkge1xyXG4gICAgICBjYXNlIFwiZmlyc3RQcm9qZWN0RGlyXCI6XHJcbiAgICAgICAgcHJvamVjdFBhdGggPSBhdG9tLnByb2plY3QuZ2V0UGF0aHMoKVswXTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgXCJwcm9qZWN0RGlyT2ZGaWxlXCI6XHJcbiAgICAgICAgcHJvamVjdFBhdGggPSBhdG9tLnByb2plY3QucmVsYXRpdml6ZVBhdGgoY3VycmVudFBhdGgpWzBdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGtlcm5lbFN0YXJ0RGlyID0gcHJvamVjdFBhdGggIT0gbnVsbCA/IHByb2plY3RQYXRoIDogY3VycmVudFBhdGg7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBjd2Q6IGtlcm5lbFN0YXJ0RGlyLFxyXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgdHJhbnNwb3J0ID0gbmV3IFpNUUtlcm5lbChrZXJuZWxTcGVjLCBncmFtbWFyLCBvcHRpb25zLCAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGtlcm5lbCA9IG5ldyBLZXJuZWwodHJhbnNwb3J0KTtcclxuICAgICAgc3RvcmUubmV3S2VybmVsKGtlcm5lbCwgZmlsZVBhdGgsIGVkaXRvciwgZ3JhbW1hcik7XHJcbiAgICAgIGlmIChvblN0YXJ0ZWQpIHtcclxuICAgICAgICBvblN0YXJ0ZWQoa2VybmVsKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGUoKTogUHJvbWlzZTxLZXJuZWxzcGVjTWV0YWRhdGFbXT4ge1xyXG4gICAgY29uc3Qga2VybmVsU3BlY3MgPSBhd2FpdCBrZXJuZWxTcGVjc0ZpbmRBbGwoKTtcclxuXHJcbiAgICBjb25zdCBrZXJuZWxSZXNvdXJjZXNEaWN0ID0gbWFwS2V5cyhrZXJuZWxTcGVjcywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcclxuICAgICAgcmV0dXJuICh2YWx1ZS5zcGVjLm5hbWUgPSBrZXkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmtlcm5lbFNwZWNzID0gc29ydEJ5KFxyXG4gICAgICBtYXAoa2VybmVsUmVzb3VyY2VzRGljdCwgXCJzcGVjXCIpLFxyXG4gICAgICAoc3BlYykgPT4gc3BlYy5kaXNwbGF5X25hbWVcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5rZXJuZWxTcGVjcztcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEFsbEtlcm5lbFNwZWNzKGdyYW1tYXI6IEdyYW1tYXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5rZXJuZWxTcGVjcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5rZXJuZWxTcGVjcztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUtlcm5lbFNwZWNzKGdyYW1tYXIpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0QWxsS2VybmVsU3BlY3NGb3JHcmFtbWFyKFxyXG4gICAgZ3JhbW1hcjogR3JhbW1hciB8IG51bGwgfCB1bmRlZmluZWRcclxuICApOiBQcm9taXNlPEtlcm5lbHNwZWNNZXRhZGF0YVtdPiB7XHJcbiAgICBpZiAoIWdyYW1tYXIpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2VybmVsU3BlY3MgPSBhd2FpdCB0aGlzLmdldEFsbEtlcm5lbFNwZWNzKGdyYW1tYXIpO1xyXG4gICAgcmV0dXJuIGtlcm5lbFNwZWNzLmZpbHRlcigoc3BlYykgPT5cclxuICAgICAga2VybmVsU3BlY1Byb3ZpZGVzR3JhbW1hcihzcGVjLCBncmFtbWFyKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEtlcm5lbFNwZWNGb3JHcmFtbWFyKGdyYW1tYXI6IEdyYW1tYXIpIHtcclxuICAgIGNvbnN0IGtlcm5lbFNwZWNzID0gYXdhaXQgdGhpcy5nZXRBbGxLZXJuZWxTcGVjc0ZvckdyYW1tYXIoZ3JhbW1hcik7XHJcblxyXG4gICAgaWYgKGtlcm5lbFNwZWNzLmxlbmd0aCA8PSAxKSB7XHJcbiAgICAgIHJldHVybiBrZXJuZWxTcGVjc1swXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5rZXJuZWxQaWNrZXIpIHtcclxuICAgICAgdGhpcy5rZXJuZWxQaWNrZXIua2VybmVsU3BlY3MgPSBrZXJuZWxTcGVjcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMua2VybmVsUGlja2VyID0gbmV3IEtlcm5lbFBpY2tlcihrZXJuZWxTcGVjcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEtlcm5lbHNwZWNNZXRhZGF0YT4oKHJlc29sdmUpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmtlcm5lbFBpY2tlcikge1xyXG4gICAgICAgIHJldHVybiByZXNvbHZlKG51bGwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmtlcm5lbFBpY2tlci5vbkNvbmZpcm1lZCA9IChrZXJuZWxTcGVjKSA9PiByZXNvbHZlKGtlcm5lbFNwZWMpO1xyXG5cclxuICAgICAgdGhpcy5rZXJuZWxQaWNrZXIudG9nZ2xlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZUtlcm5lbFNwZWNzKGdyYW1tYXI/OiBHcmFtbWFyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3Qga2VybmVsU3BlY3MgPSBhd2FpdCB0aGlzLnVwZGF0ZSgpO1xyXG5cclxuICAgIGlmIChrZXJuZWxTcGVjcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgY29uc3QgbWVzc2FnZSA9IFwiTm8gS2VybmVscyBJbnN0YWxsZWRcIjtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgIFwiTm8ga2VybmVscyBhcmUgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtIHNvIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIGV4ZWN1dGUgY29kZSBpbiBhbnkgbGFuZ3VhZ2UuXCIsXHJcbiAgICAgICAgZGlzbWlzc2FibGU6IHRydWUsXHJcbiAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0ZXh0OiBcIkluc3RhbGwgSW5zdHJ1Y3Rpb25zXCIsXHJcbiAgICAgICAgICAgIG9uRGlkQ2xpY2s6ICgpID0+XHJcbiAgICAgICAgICAgICAgc2hlbGwub3BlbkV4dGVybmFsKFxyXG4gICAgICAgICAgICAgICAgXCJodHRwczovL250ZXJhY3QuZ2l0Ym9va3MuaW8vaHlkcm9nZW4vZG9jcy9JbnN0YWxsYXRpb24uaHRtbFwiXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRleHQ6IFwiUG9wdWxhciBLZXJuZWxzXCIsXHJcbiAgICAgICAgICAgIG9uRGlkQ2xpY2s6ICgpID0+IHNoZWxsLm9wZW5FeHRlcm5hbChcImh0dHBzOi8vbnRlcmFjdC5pby9rZXJuZWxzXCIpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGV4dDogXCJBbGwgS2VybmVsc1wiLFxyXG4gICAgICAgICAgICBvbkRpZENsaWNrOiAoKSA9PlxyXG4gICAgICAgICAgICAgIHNoZWxsLm9wZW5FeHRlcm5hbChcclxuICAgICAgICAgICAgICAgIFwiaHR0cHM6Ly9naXRodWIuY29tL2p1cHl0ZXIvanVweXRlci93aWtpL0p1cHl0ZXIta2VybmVsc1wiXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfTtcclxuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKG1lc3NhZ2UsIG9wdGlvbnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgbWVzc2FnZSA9IFwiSHlkcm9nZW4gS2VybmVscyB1cGRhdGVkOlwiO1xyXG4gICAgICBjb25zdCBkaXNwbGF5TmFtZXMgPSBtYXAoa2VybmVsU3BlY3MsIFwiZGlzcGxheV9uYW1lXCIpOyAvLyBrZXJuZWxTcGVjcy5tYXAoKGtlcm5lbFNwZWMpID0+IGtlcm5lbFNwZWMuZGlzcGxheV9uYW1lKVxyXG4gICAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICAgIGRldGFpbDogZGlzcGxheU5hbWVzLmpvaW4oXCJcXG5cIiksXHJcbiAgICAgIH07XHJcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRJbmZvKG1lc3NhZ2UsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBrZXJuZWxTcGVjcztcclxuICB9XHJcbn1cclxuXHJcbi8vIHVzZWQgaW4gdGhlIHRlc3RzXHJcbmlmIChhdG9tLmluU3BlY01vZGUoKSkge1xyXG4gIGV4cG9ydHMua3MgPSByZXF1aXJlKFwia2VybmVsc3BlY3NcIik7XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/kernel-picker.d.ts b/dist/kernel-picker.d.ts deleted file mode 100644 index bc6c5b519..000000000 --- a/dist/kernel-picker.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Panel } from "atom"; -import SelectListView from "atom-select-list"; -import type { KernelspecMetadata } from "@nteract/types"; -export default class KernelPicker { - kernelSpecs: Array; - onConfirmed: ((kernelSpecs: KernelspecMetadata) => void) | null | undefined; - selectListView: SelectListView; - panel: Panel | null | undefined; - previouslyFocusedElement: HTMLElement | null | undefined; - constructor(kernelSpecs: Array); - destroy(): any; - cancel(): void; - attach(): void; - toggle(): Promise; -} diff --git a/dist/kernel-picker.js b/dist/kernel-picker.js index 4411a1a21..e58e3ee5a 100644 --- a/dist/kernel-picker.js +++ b/dist/kernel-picker.js @@ -66,4 +66,4 @@ class KernelPicker { } } exports.default = KernelPicker; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsLXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9rZXJuZWwtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBQThDO0FBRTlDLG1DQUEyRDtBQUczRCxNQUFxQixZQUFZO0lBTy9CLFlBQVksV0FBc0M7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLDBCQUFjLENBQUM7WUFDdkMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQy9CLEtBQUssRUFBRSxFQUFFO1lBQ1QsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQzdDLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN2QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ3hDLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxtQkFBbUIsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM1QixXQUFHLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDeEI7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLFlBQVksRUFBRSxrQkFBa0I7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDdEI7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUVsQixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osbUNBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDMUIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjthQUFNO1lBQ0wsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQ3hCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO0lBQ0gsQ0FBQztDQUNGO0FBdEVELCtCQXNFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhbmVsIH0gZnJvbSBcImF0b21cIjtcbmltcG9ydCBTZWxlY3RMaXN0VmlldyBmcm9tIFwiYXRvbS1zZWxlY3QtbGlzdFwiO1xuaW1wb3J0IF8gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgbG9nLCBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXJuZWxzcGVjTWV0YWRhdGEgfSBmcm9tIFwiQG50ZXJhY3QvdHlwZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgS2VybmVsUGlja2VyIHtcbiAga2VybmVsU3BlY3M6IEFycmF5PEtlcm5lbHNwZWNNZXRhZGF0YT47XG4gIG9uQ29uZmlybWVkOiAoKGtlcm5lbFNwZWNzOiBLZXJuZWxzcGVjTWV0YWRhdGEpID0+IHZvaWQpIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgc2VsZWN0TGlzdFZpZXc6IFNlbGVjdExpc3RWaWV3O1xuICBwYW5lbDogUGFuZWwgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihrZXJuZWxTcGVjczogQXJyYXk8S2VybmVsc3BlY01ldGFkYXRhPikge1xuICAgIHRoaXMua2VybmVsU3BlY3MgPSBrZXJuZWxTcGVjcztcbiAgICB0aGlzLm9uQ29uZmlybWVkID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdExpc3RWaWV3ID0gbmV3IFNlbGVjdExpc3RWaWV3KHtcbiAgICAgIGl0ZW1zQ2xhc3NMaXN0OiBbXCJtYXJrLWFjdGl2ZVwiXSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIGZpbHRlcktleUZvckl0ZW06IChpdGVtKSA9PiBpdGVtLmRpc3BsYXlfbmFtZSxcbiAgICAgIGVsZW1lbnRGb3JJdGVtOiAoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xuICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gaXRlbS5kaXNwbGF5X25hbWU7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgfSxcbiAgICAgIGRpZENvbmZpcm1TZWxlY3Rpb246IChpdGVtKSA9PiB7XG4gICAgICAgIGxvZyhcIlNlbGVjdGVkIGtlcm5lbDpcIiwgaXRlbSk7XG4gICAgICAgIGlmICh0aGlzLm9uQ29uZmlybWVkKSB7XG4gICAgICAgICAgdGhpcy5vbkNvbmZpcm1lZChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgfSxcbiAgICAgIGRpZENhbmNlbFNlbGVjdGlvbjogKCkgPT4gdGhpcy5jYW5jZWwoKSxcbiAgICAgIGVtcHR5TWVzc2FnZTogXCJObyBrZXJuZWxzIGZvdW5kXCIsXG4gICAgfSk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0TGlzdFZpZXcuZGVzdHJveSgpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLnBhbmVsICE9IG51bGwpIHtcbiAgICAgIHRoaXMucGFuZWwuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMucGFuZWwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSB7XG4gICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpO1xuICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGF0dGFjaCgpIHtcbiAgICBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQodGhpcyk7XG4gICAgaWYgKHRoaXMucGFuZWwgPT0gbnVsbCkge1xuICAgICAgdGhpcy5wYW5lbCA9IGF0b20ud29ya3NwYWNlLmFkZE1vZGFsUGFuZWwoe1xuICAgICAgICBpdGVtOiB0aGlzLnNlbGVjdExpc3RWaWV3LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcuZm9jdXMoKTtcbiAgICB0aGlzLnNlbGVjdExpc3RWaWV3LnJlc2V0KCk7XG4gIH1cblxuICBhc3luYyB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMucGFuZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5zZWxlY3RMaXN0Vmlldy51cGRhdGUoe1xuICAgICAgICBpdGVtczogdGhpcy5rZXJuZWxTcGVjcyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdHRhY2goKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsLXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9rZXJuZWwtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBQXdFO0FBQ3hFLG1DQUEyRDtBQUczRCxNQUFxQixZQUFZO0lBTy9CLFlBQVksV0FBc0M7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLDBCQUFjLENBQUM7WUFDdkMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQy9CLEtBQUssRUFBRSxFQUEwQjtZQUNqQyxnQkFBZ0IsRUFBRSxDQUFDLElBQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ2pFLGNBQWMsRUFBRSxDQUFDLElBQXdCLEVBQUUsRUFBRTtnQkFDM0MsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN4QyxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1lBQ0QsbUJBQW1CLEVBQUUsQ0FBQyxJQUF3QixFQUFFLEVBQUU7Z0JBQ2hELFdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QjtnQkFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQztZQUNELGtCQUFrQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdkMsWUFBWSxFQUFFLGtCQUFrQjtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN0QjtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQ2pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixtQ0FBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYzthQUMxQixDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNmO2FBQU07WUFDTCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO2dCQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDQSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0NBQ0Y7QUF0RUQsK0JBc0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiYXRvbVwiO1xyXG5pbXBvcnQgU2VsZWN0TGlzdFZpZXcsIHsgU2VsZWN0TGlzdFByb3BlcnRpZXMgfSBmcm9tIFwiYXRvbS1zZWxlY3QtbGlzdFwiO1xyXG5pbXBvcnQgeyBsb2csIHNldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCB0eXBlIHsgS2VybmVsc3BlY01ldGFkYXRhIH0gZnJvbSBcIkBudGVyYWN0L3R5cGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBLZXJuZWxQaWNrZXIge1xyXG4gIGtlcm5lbFNwZWNzOiBBcnJheTxLZXJuZWxzcGVjTWV0YWRhdGE+O1xyXG4gIG9uQ29uZmlybWVkOiAoKGtlcm5lbFNwZWNzOiBLZXJuZWxzcGVjTWV0YWRhdGEpID0+IHZvaWQpIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBzZWxlY3RMaXN0VmlldzogU2VsZWN0TGlzdFZpZXc7XHJcbiAgcGFuZWw6IFBhbmVsIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3Ioa2VybmVsU3BlY3M6IEFycmF5PEtlcm5lbHNwZWNNZXRhZGF0YT4pIHtcclxuICAgIHRoaXMua2VybmVsU3BlY3MgPSBrZXJuZWxTcGVjcztcclxuICAgIHRoaXMub25Db25maXJtZWQgPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RMaXN0VmlldyA9IG5ldyBTZWxlY3RMaXN0Vmlldyh7XHJcbiAgICAgIGl0ZW1zQ2xhc3NMaXN0OiBbXCJtYXJrLWFjdGl2ZVwiXSxcclxuICAgICAgaXRlbXM6IFtdIGFzIEtlcm5lbHNwZWNNZXRhZGF0YVtdLFxyXG4gICAgICBmaWx0ZXJLZXlGb3JJdGVtOiAoaXRlbTogS2VybmVsc3BlY01ldGFkYXRhKSA9PiBpdGVtLmRpc3BsYXlfbmFtZSxcclxuICAgICAgZWxlbWVudEZvckl0ZW06IChpdGVtOiBLZXJuZWxzcGVjTWV0YWRhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xyXG4gICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBpdGVtLmRpc3BsYXlfbmFtZTtcclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgICAgfSxcclxuICAgICAgZGlkQ29uZmlybVNlbGVjdGlvbjogKGl0ZW06IEtlcm5lbHNwZWNNZXRhZGF0YSkgPT4ge1xyXG4gICAgICAgIGxvZyhcIlNlbGVjdGVkIGtlcm5lbDpcIiwgaXRlbSk7XHJcbiAgICAgICAgaWYgKHRoaXMub25Db25maXJtZWQpIHtcclxuICAgICAgICAgIHRoaXMub25Db25maXJtZWQoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGRpZENhbmNlbFNlbGVjdGlvbjogKCkgPT4gdGhpcy5jYW5jZWwoKSxcclxuICAgICAgZW1wdHlNZXNzYWdlOiBcIk5vIGtlcm5lbHMgZm91bmRcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RMaXN0Vmlldy5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICBpZiAodGhpcy5wYW5lbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucGFuZWwuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGFuZWwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhdHRhY2goKSB7XHJcbiAgICBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQodGhpcyk7XHJcbiAgICBpZiAodGhpcy5wYW5lbCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucGFuZWwgPSBhdG9tLndvcmtzcGFjZS5hZGRNb2RhbFBhbmVsKHtcclxuICAgICAgICBpdGVtOiB0aGlzLnNlbGVjdExpc3RWaWV3LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcuZm9jdXMoKTtcclxuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHRvZ2dsZSgpIHtcclxuICAgIGlmICh0aGlzLnBhbmVsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5jYW5jZWwoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2VsZWN0TGlzdFZpZXcudXBkYXRlKHtcclxuICAgICAgICBpdGVtczogdGhpcy5rZXJuZWxTcGVjcyxcclxuICAgICAgfSBhcyBTZWxlY3RMaXN0UHJvcGVydGllcyk7XHJcbiAgICAgIHRoaXMuYXR0YWNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== \ No newline at end of file diff --git a/dist/kernel-transport.d.ts b/dist/kernel-transport.d.ts deleted file mode 100644 index 74a8f7478..000000000 --- a/dist/kernel-transport.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Grammar } from "atom"; -import type { KernelspecMetadata } from "@nteract/types"; -import type { Kernel } from "@jupyterlab/services"; -export declare type ResultsCallback = (message: any, channel: "shell" | "iopub" | "stdin") => void; -export default class KernelTransport { - executionState: string; - executionCount: number; - lastExecutionTime: string; - inspector: { - bundle: {}; - }; - kernelSpec: Kernel.ISpecModel | KernelspecMetadata; - grammar: Grammar; - language: string; - displayName: string; - gatewayName: string | null | undefined; - constructor(kernelSpec: Kernel.ISpecModel | KernelspecMetadata, grammar: Grammar); - setExecutionState(state: string): void; - setExecutionCount(count: number): void; - setLastExecutionTime(timeString: string): void; - interrupt(): void; - shutdown(): void; - restart(onRestarted: ((...args: Array) => any) | null | undefined): void; - execute(code: string, onResults: ResultsCallback): void; - complete(code: string, onResults: ResultsCallback): void; - inspect(code: string, cursorPos: number, onResults: ResultsCallback): void; - inputReply(input: string): void; - destroy(): void; -} diff --git a/dist/kernel.d.ts b/dist/kernel.d.ts deleted file mode 100644 index 0c5333ba1..000000000 --- a/dist/kernel.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Emitter, TextEditor, Grammar } from "atom"; -import WatchesStore from "./store/watches"; -import OutputStore from "./store/output"; -import HydrogenKernel from "./plugin-api/hydrogen-kernel"; -import type { HydrogenKernelMiddlewareThunk, HydrogenKernelMiddleware } from "./plugin-api/hydrogen-types"; -import KernelTransport from "./kernel-transport"; -import type { ResultsCallback } from "./kernel-transport"; -import type { Kernel as JupyterlabKernel } from "@jupyterlab/services"; -import type { Message } from "./hydrogen"; -import type { KernelspecMetadata } from "@nteract/types"; -declare class MiddlewareAdapter implements HydrogenKernelMiddlewareThunk { - _middleware: HydrogenKernelMiddleware; - _next: MiddlewareAdapter | KernelTransport; - constructor(middleware: HydrogenKernelMiddleware, next: MiddlewareAdapter | KernelTransport); - get _nextAsPluginType(): HydrogenKernelMiddlewareThunk; - interrupt(): void; - shutdown(): void; - restart(onRestarted: ((...args: Array) => any) | null | undefined): void; - execute(code: string, onResults: ResultsCallback): void; - complete(code: string, onResults: ResultsCallback): void; - inspect(code: string, cursorPos: number, onResults: ResultsCallback): void; -} -export default class Kernel { - inspector: { - bundle: {}; - }; - outputStore: OutputStore; - watchesStore: WatchesStore; - watchCallbacks: Array<(...args: Array) => any>; - emitter: Emitter<{ - [key: string]: any; - }, {}>; - pluginWrapper: HydrogenKernel | null; - transport: KernelTransport; - middleware: Array; - constructor(kernel: KernelTransport); - get kernelSpec(): JupyterlabKernel.ISpecModel | KernelspecMetadata; - get grammar(): Grammar; - get language(): string; - get displayName(): string; - get firstMiddlewareAdapter(): MiddlewareAdapter; - addMiddleware(middleware: HydrogenKernelMiddleware): void; - get executionState(): string; - setExecutionState(state: string): void; - get executionCount(): number; - setExecutionCount(count: number): void; - get lastExecutionTime(): string; - setLastExecutionTime(timeString: string): void; - setInspectorResult(bundle: Record, editor: TextEditor | null | undefined): Promise; - getPluginWrapper(): HydrogenKernel; - addWatchCallback(watchCallback: (...args: Array) => any): void; - interrupt(): void; - shutdown(): void; - restart(onRestarted?: ((...args: Array) => any) | null | undefined): void; - execute(code: string, onResults: (...args: Array) => any): void; - executeWatch(code: string, onResults: (...args: Array) => any): void; - _callWatchCallbacks(): void; - _wrapExecutionResultsCallback(onResults: (...args: Array) => any): (message: Message, channel: string) => void; - complete(code: string, onResults: (...args: Array) => any): void; - inspect(code: string, cursorPos: number, onResults: (...args: Array) => any): void; - destroy(): void; -} -export {}; diff --git a/dist/kernel.js b/dist/kernel.js index e406270fb..6557fe35d 100644 --- a/dist/kernel.js +++ b/dist/kernel.js @@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); const atom_1 = require("atom"); const mobx_1 = require("mobx"); -const lodash_1 = require("lodash"); +const isEqual_1 = __importDefault(require("lodash/isEqual")); const utils_1 = require("./utils"); const store_1 = __importDefault(require("./store")); const watches_1 = __importDefault(require("./store/watches")); @@ -184,7 +184,7 @@ class Kernel { this.transport.setLastExecutionTime(timeString); } async setInspectorResult(bundle, editor) { - if (lodash_1.isEqual(this.inspector.bundle, bundle)) { + if (isEqual_1.default(this.inspector.bundle, bundle)) { await atom.workspace.toggle(utils_1.INSPECTOR_URI); } else if (bundle.size !== 0) { @@ -339,4 +339,4 @@ __decorate([ __metadata("design:returntype", Promise) ], Kernel.prototype, "setInspectorResult", null); exports.default = Kernel; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFvRDtBQUNwRCwrQkFBb0Q7QUFDcEQsbUNBQWlDO0FBQ2pDLG1DQU9pQjtBQUNqQixvREFBNEI7QUFDNUIsOERBQTJDO0FBQzNDLDREQUF5QztBQUN6QyxtRkFBMEQ7QUFLMUQsOERBQXFDO0FBQ3JDLDBFQUFpRDtBQU9qRCxTQUFTLDBCQUEwQixDQUNqQyxTQUEwQjtJQUUxQixNQUFNLGdCQUFnQixHQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM3RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osV0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDN0IsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEIsV0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDeEMsT0FBTztTQUNSO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxVQUFVLEVBQUU7WUFFbEQsV0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7WUFDMUMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDMUIsV0FBRyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDOUMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ2pDLFdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQ3JELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUNuQyxXQUFHLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUN2RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNuQixX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Z0JBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUs7YUFDN0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLFdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsZUFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQTNRQztJQURDLGlCQUFVOzt5Q0FHVDtBQWtERjtJQURDLGVBQVE7Ozs0Q0FHUjtBQU9EO0lBREMsZUFBUTs7OzRDQUdSO0FBT0Q7SUFEQyxlQUFROzs7K0NBR1I7QUFPRDtJQURDLGFBQU07OzZDQUdHLGlCQUFVOztnREFZbkI7QUEvRkgseUJBNlFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1pdHRlciwgVGV4dEVkaXRvciwgR3JhbW1hciB9IGZyb20gXCJhdG9tXCI7XG5pbXBvcnQgeyBvYnNlcnZhYmxlLCBhY3Rpb24sIGNvbXB1dGVkIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge1xuICBsb2csXG4gIGZvY3VzLFxuICBtc2dTcGVjVG9Ob3RlYm9va0Zvcm1hdCxcbiAgbXNnU3BlY1Y0dG9WNSxcbiAgSU5TUEVDVE9SX1VSSSxcbiAgZXhlY3V0aW9uVGltZSxcbn0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IFdhdGNoZXNTdG9yZSBmcm9tIFwiLi9zdG9yZS93YXRjaGVzXCI7XG5pbXBvcnQgT3V0cHV0U3RvcmUgZnJvbSBcIi4vc3RvcmUvb3V0cHV0XCI7XG5pbXBvcnQgSHlkcm9nZW5LZXJuZWwgZnJvbSBcIi4vcGx1Z2luLWFwaS9oeWRyb2dlbi1rZXJuZWxcIjtcbmltcG9ydCB0eXBlIHtcbiAgSHlkcm9nZW5LZXJuZWxNaWRkbGV3YXJlVGh1bmssXG4gIEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZSxcbn0gZnJvbSBcIi4vcGx1Z2luLWFwaS9oeWRyb2dlbi10eXBlc1wiO1xuaW1wb3J0IElucHV0VmlldyBmcm9tIFwiLi9pbnB1dC12aWV3XCI7XG5pbXBvcnQgS2VybmVsVHJhbnNwb3J0IGZyb20gXCIuL2tlcm5lbC10cmFuc3BvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVzdWx0c0NhbGxiYWNrIH0gZnJvbSBcIi4va2VybmVsLXRyYW5zcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBLZXJuZWwgYXMgSnVweXRlcmxhYktlcm5lbCB9IGZyb20gXCJAanVweXRlcmxhYi9zZXJ2aWNlc1wiO1xuXG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2UgfSBmcm9tIFwiLi9oeWRyb2dlblwiO1xuaW1wb3J0IHR5cGUgeyBLZXJuZWxzcGVjTWV0YWRhdGEgfSBmcm9tIFwiQG50ZXJhY3QvdHlwZXNcIjtcblxuZnVuY3Rpb24gcHJvdGVjdEZyb21JbnZhbGlkTWVzc2FnZXMoXG4gIG9uUmVzdWx0czogUmVzdWx0c0NhbGxiYWNrXG4pOiBSZXN1bHRzQ2FsbGJhY2sge1xuICBjb25zdCB3cmFwcGVkT25SZXN1bHRzOiBSZXN1bHRzQ2FsbGJhY2sgPSAobWVzc2FnZSwgY2hhbm5lbCkgPT4ge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgbG9nKFwiSW52YWxpZCBtZXNzYWdlOiBudWxsXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghbWVzc2FnZS5jb250ZW50KSB7XG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgY29udGVudFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZS5jb250ZW50LmV4ZWN1dGlvbl9zdGF0ZSA9PT0gXCJzdGFydGluZ1wiKSB7XG4gICAgICAvLyBLZXJuZWxzIHNlbmQgYSBzdGFydGluZyBzdGF0dXMgbWVzc2FnZSB3aXRoIGFuIGVtcHR5IHBhcmVudF9oZWFkZXJcbiAgICAgIGxvZyhcIkRyb3BwZWQgc3RhcnRpbmcgc3RhdHVzIElPIG1lc3NhZ2VcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFtZXNzYWdlLnBhcmVudF9oZWFkZXIpIHtcbiAgICAgIGxvZyhcIkludmFsaWQgbWVzc2FnZTogTWlzc2luZyBwYXJlbnRfaGVhZGVyXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghbWVzc2FnZS5wYXJlbnRfaGVhZGVyLm1zZ19pZCkge1xuICAgICAgbG9nKFwiSW52YWxpZCBtZXNzYWdlOiBNaXNzaW5nIHBhcmVudF9oZWFkZXIubXNnX2lkXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghbWVzc2FnZS5wYXJlbnRfaGVhZGVyLm1zZ190eXBlKSB7XG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgcGFyZW50X2hlYWRlci5tc2dfdHlwZVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIW1lc3NhZ2UuaGVhZGVyKSB7XG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgaGVhZGVyXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghbWVzc2FnZS5oZWFkZXIubXNnX2lkKSB7XG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgaGVhZGVyLm1zZ19pZFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIW1lc3NhZ2UuaGVhZGVyLm1zZ190eXBlKSB7XG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgaGVhZGVyLm1zZ190eXBlXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9uUmVzdWx0cyhtZXNzYWdlLCBjaGFubmVsKTtcbiAgfTtcblxuICByZXR1cm4gd3JhcHBlZE9uUmVzdWx0cztcbn0gLy8gQWRhcHRzIG1pZGRsZXdhcmUgb2JqZWN0cyBwcm92aWRlZCBieSBwbHVnaW5zIHRvIGFuIGludGVybmFsIGludGVyZmFjZS4gSW5cbi8vIHBhcnRpY3VsYXIsIHRoaXMgaW1wbGVtZW50cyBmYWxsdGhyb3VnaCBsb2dpYyBmb3Igd2hlbiBhIHBsdWdpbiBkZWZpbmVzIHNvbWVcbi8vIG1ldGhvZHMgKGUuZy4gZXhlY3V0ZSkgYnV0IGRvZXNuJ3QgaW1wbGVtZW50IG90aGVycyAoZS5nLiBpbnRlcnJ1cHQpLiBOb3RlXG4vLyB0aGF0IEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZSBvYmplY3RzIGFyZSBtdXRhYmxlOiB0aGV5IG1heSBsb3NlL2dhaW4gbWV0aG9kc1xuLy8gYXQgYW55IHRpbWUsIGluY2x1ZGluZyBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcgYSByZXF1ZXN0LiBUaGlzIGNsYXNzIGFsc29cbi8vIGFkZHMgYmFzaWMgY2hlY2tzIHRoYXQgbWVzc2FnZXMgcGFzc2VkIHZpYSB0aGUgYG9uUmVzdWx0c2AgY2FsbGJhY2tzIGFyZSBub3Rcbi8vIG1pc3Npbmcga2V5IG1hbmRhdG9yeSBmaWVsZHMgc3BlY2lmaWVkIGluIHRoZSBKdXB5dGVyIG1lc3NhZ2luZyBzcGVjLlxuXG5jbGFzcyBNaWRkbGV3YXJlQWRhcHRlciBpbXBsZW1lbnRzIEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZVRodW5rIHtcbiAgX21pZGRsZXdhcmU6IEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZTtcbiAgX25leHQ6IE1pZGRsZXdhcmVBZGFwdGVyIHwgS2VybmVsVHJhbnNwb3J0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1pZGRsZXdhcmU6IEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZSxcbiAgICBuZXh0OiBNaWRkbGV3YXJlQWRhcHRlciB8IEtlcm5lbFRyYW5zcG9ydFxuICApIHtcbiAgICB0aGlzLl9taWRkbGV3YXJlID0gbWlkZGxld2FyZTtcbiAgICB0aGlzLl9uZXh0ID0gbmV4dDtcbiAgfVxuXG4gIC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBtZXRob2QgZ2V0cyBwYXNzZWQgdG8gcGx1Z2lucyEgRm9yIG5vdyB3ZSBqdXN0XG4gIC8vIHJldHVybiB0aGUgTWlkZGxld2FyZUFkYXB0ZXIgb2JqZWN0IGl0c2VsZiwgd2hpY2ggaXMgd2h5IGFsbCBwcml2YXRlXG4gIC8vIGZ1bmN0aW9uYWxpdHkgaXMgcHJlZml4ZWQgd2l0aCBfLCBhbmQgd2h5IE1pZGRsZXdhcmVBZGFwdGVyIGlzIG1hcmtlZCBhc1xuICAvLyBpbXBsZW1lbnRpbmcgSHlkcm9nZW5LZXJuZWxNaWRkbGV3YXJlVGh1bmsuIE9uY2UgbXVsdGlwbGUgcGx1Z2luIEFQSVxuICAvLyB2ZXJzaW9ucyBleGlzdCwgd2UgbWF5IHdhbnQgdG8gZ2VuZXJhdGUgYSBIeWRyb2dlbktlcm5lbE1pZGRsZXdhcmVUaHVua1xuICAvLyBzcGVjaWFsaXplZCBmb3IgYSBwYXJ0aWN1bGFyIHBsdWdpbiBBUEkgdmVyc2lvbi5cbiAgZ2V0IF9uZXh0QXNQbHVnaW5UeXBlKCk6IEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZVRodW5rIHtcbiAgICBpZiAodGhpcy5fbmV4dCBpbnN0YW5jZW9mIEtlcm5lbFRyYW5zcG9ydCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk1pZGRsZXdhcmVBZGFwdGVyOiBfbmV4dEFzUGx1Z2luVHlwZSBtdXN0IG5ldmVyIGJlIGNhbGxlZCB3aGVuIF9uZXh0IGlzIEtlcm5lbFRyYW5zcG9ydFwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9uZXh0O1xuICB9XG5cbiAgaW50ZXJydXB0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9taWRkbGV3YXJlLmludGVycnVwdCkge1xuICAgICAgdGhpcy5fbWlkZGxld2FyZS5pbnRlcnJ1cHQodGhpcy5fbmV4dEFzUGx1Z2luVHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX25leHQuaW50ZXJydXB0KCk7XG4gICAgfVxuICB9XG5cbiAgc2h1dGRvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX21pZGRsZXdhcmUuc2h1dGRvd24pIHtcbiAgICAgIHRoaXMuX21pZGRsZXdhcmUuc2h1dGRvd24odGhpcy5fbmV4dEFzUGx1Z2luVHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX25leHQuc2h1dGRvd24oKTtcbiAgICB9XG4gIH1cblxuICByZXN0YXJ0KFxuICAgIG9uUmVzdGFydGVkOiAoKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueSkgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9taWRkbGV3YXJlLnJlc3RhcnQpIHtcbiAgICAgIHRoaXMuX21pZGRsZXdhcmUucmVzdGFydCh0aGlzLl9uZXh0QXNQbHVnaW5UeXBlLCBvblJlc3RhcnRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX25leHQucmVzdGFydChvblJlc3RhcnRlZCk7XG4gICAgfVxuICB9XG5cbiAgZXhlY3V0ZShjb2RlOiBzdHJpbmcsIG9uUmVzdWx0czogUmVzdWx0c0NhbGxiYWNrKTogdm9pZCB7XG4gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXBlYXRlZGx5IHdyYXAgdGhlIG9uUmVzdWx0cyBjYWxsYmFjayBldmVyeSB0aW1lIHdlXG4gICAgLy8gZmFsbCB0aHJvdWdoLCBidXQgd2UgbmVlZCB0byBkbyBpdCBhdCBsZWFzdCBvbmNlIGJlZm9yZSBkZWxlZ2F0aW5nIHRvXG4gICAgLy8gdGhlIEtlcm5lbFRyYW5zcG9ydC5cbiAgICBjb25zdCBzYWZlT25SZXN1bHRzID1cbiAgICAgIHRoaXMuX21pZGRsZXdhcmUuZXhlY3V0ZSB8fCB0aGlzLl9uZXh0IGluc3RhbmNlb2YgS2VybmVsVHJhbnNwb3J0XG4gICAgICAgID8gcHJvdGVjdEZyb21JbnZhbGlkTWVzc2FnZXMob25SZXN1bHRzKVxuICAgICAgICA6IG9uUmVzdWx0cztcblxuICAgIGlmICh0aGlzLl9taWRkbGV3YXJlLmV4ZWN1dGUpIHtcbiAgICAgIHRoaXMuX21pZGRsZXdhcmUuZXhlY3V0ZSh0aGlzLl9uZXh0QXNQbHVnaW5UeXBlLCBjb2RlLCBzYWZlT25SZXN1bHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbmV4dC5leGVjdXRlKGNvZGUsIHNhZmVPblJlc3VsdHMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBsZXRlKGNvZGU6IHN0cmluZywgb25SZXN1bHRzOiBSZXN1bHRzQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBzYWZlT25SZXN1bHRzID1cbiAgICAgIHRoaXMuX21pZGRsZXdhcmUuY29tcGxldGUgfHwgdGhpcy5fbmV4dCBpbnN0YW5jZW9mIEtlcm5lbFRyYW5zcG9ydFxuICAgICAgICA/IHByb3RlY3RGcm9tSW52YWxpZE1lc3NhZ2VzKG9uUmVzdWx0cylcbiAgICAgICAgOiBvblJlc3VsdHM7XG5cbiAgICBpZiAodGhpcy5fbWlkZGxld2FyZS5jb21wbGV0ZSkge1xuICAgICAgdGhpcy5fbWlkZGxld2FyZS5jb21wbGV0ZSh0aGlzLl9uZXh0QXNQbHVnaW5UeXBlLCBjb2RlLCBzYWZlT25SZXN1bHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbmV4dC5jb21wbGV0ZShjb2RlLCBzYWZlT25SZXN1bHRzKTtcbiAgICB9XG4gIH1cblxuICBpbnNwZWN0KGNvZGU6IHN0cmluZywgY3Vyc29yUG9zOiBudW1iZXIsIG9uUmVzdWx0czogUmVzdWx0c0NhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc2FmZU9uUmVzdWx0cyA9XG4gICAgICB0aGlzLl9taWRkbGV3YXJlLmluc3BlY3QgfHwgdGhpcy5fbmV4dCBpbnN0YW5jZW9mIEtlcm5lbFRyYW5zcG9ydFxuICAgICAgICA/IHByb3RlY3RGcm9tSW52YWxpZE1lc3NhZ2VzKG9uUmVzdWx0cylcbiAgICAgICAgOiBvblJlc3VsdHM7XG5cbiAgICBpZiAodGhpcy5fbWlkZGxld2FyZS5pbnNwZWN0KSB7XG4gICAgICB0aGlzLl9taWRkbGV3YXJlLmluc3BlY3QoXG4gICAgICAgIHRoaXMuX25leHRBc1BsdWdpblR5cGUsXG4gICAgICAgIGNvZGUsXG4gICAgICAgIGN1cnNvclBvcyxcbiAgICAgICAgc2FmZU9uUmVzdWx0c1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbmV4dC5pbnNwZWN0KGNvZGUsIGN1cnNvclBvcywgc2FmZU9uUmVzdWx0cyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEtlcm5lbCB7XG4gIEBvYnNlcnZhYmxlXG4gIGluc3BlY3RvciA9IHtcbiAgICBidW5kbGU6IHt9LFxuICB9O1xuICBvdXRwdXRTdG9yZSA9IG5ldyBPdXRwdXRTdG9yZSgpO1xuICB3YXRjaGVzU3RvcmU6IFdhdGNoZXNTdG9yZTtcbiAgd2F0Y2hDYWxsYmFja3M6IEFycmF5PCguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnk+ID0gW107XG4gIGVtaXR0ZXIgPSBuZXcgRW1pdHRlcigpO1xuICBwbHVnaW5XcmFwcGVyOiBIeWRyb2dlbktlcm5lbCB8IG51bGwgPSBudWxsO1xuICB0cmFuc3BvcnQ6IEtlcm5lbFRyYW5zcG9ydDtcbiAgLy8gSW52YXJpYW50OiB0aGUgYC5fbmV4dGAgb2YgZWFjaCBlbnRyeSBpbiB0aGlzIGFycmF5IG11c3QgcG9pbnQgdG8gdGhlIG5leHRcbiAgLy8gZWxlbWVudCBvZiB0aGUgYXJyYXkuIFRoZSBgLl9uZXh0YCBvZiB0aGUgbGFzdCBlbGVtZW50IG11c3QgcG9pbnQgdG9cbiAgLy8gYHRoaXMudHJhbnNwb3J0YC5cbiAgbWlkZGxld2FyZTogQXJyYXk8TWlkZGxld2FyZUFkYXB0ZXI+O1xuXG4gIGNvbnN0cnVjdG9yKGtlcm5lbDogS2VybmVsVHJhbnNwb3J0KSB7XG4gICAgdGhpcy50cmFuc3BvcnQgPSBrZXJuZWw7XG4gICAgdGhpcy53YXRjaGVzU3RvcmUgPSBuZXcgV2F0Y2hlc1N0b3JlKHRoaXMpO1xuICAgIC8vIEEgTWlkZGxld2FyZUFkYXB0ZXIgdGhhdCBmb3J3YXJkcyBhbGwgcmVxdWVzdHMgdG8gYHRoaXMudHJhbnNwb3J0YC5cbiAgICAvLyBOZWVkZWQgdG8gdGVybWluYXRlIHRoZSBtaWRkbGV3YXJlIGNoYWluIGluIGEgd2F5IHN1Y2ggdGhhdCB0aGUgYG5leHRgXG4gICAgLy8gb2JqZWN0IHBhc3NlZCB0byB0aGUgbGFzdCBtaWRkbGV3YXJlIGlzIG5vdCB0aGUgS2VybmVsVHJhbnNwb3J0IGluc3RhbmNlXG4gICAgLy8gaXRzZWxmICh3aGljaCB3b3VsZCBiZSB2aW9sYXRlIGlzb2xhdGlvbiBvZiBpbnRlcm5hbHMgZnJvbSBwbHVnaW5zKS5cbiAgICBjb25zdCBkZWxlZ2F0ZVRvVHJhbnNwb3J0ID0gbmV3IE1pZGRsZXdhcmVBZGFwdGVyKHt9LCB0aGlzLnRyYW5zcG9ydCk7XG4gICAgdGhpcy5taWRkbGV3YXJlID0gW2RlbGVnYXRlVG9UcmFuc3BvcnRdO1xuICB9XG5cbiAgZ2V0IGtlcm5lbFNwZWMoKTogSnVweXRlcmxhYktlcm5lbC5JU3BlY01vZGVsIHwgS2VybmVsc3BlY01ldGFkYXRhIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQua2VybmVsU3BlYztcbiAgfVxuXG4gIGdldCBncmFtbWFyKCk6IEdyYW1tYXIge1xuICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5ncmFtbWFyO1xuICB9XG5cbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0Lmxhbmd1YWdlO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LmRpc3BsYXlOYW1lO1xuICB9XG5cbiAgZ2V0IGZpcnN0TWlkZGxld2FyZUFkYXB0ZXIoKTogTWlkZGxld2FyZUFkYXB0ZXIge1xuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmVbMF07XG4gIH1cblxuICBhZGRNaWRkbGV3YXJlKG1pZGRsZXdhcmU6IEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZSkge1xuICAgIHRoaXMubWlkZGxld2FyZS51bnNoaWZ0KFxuICAgICAgbmV3IE1pZGRsZXdhcmVBZGFwdGVyKG1pZGRsZXdhcmUsIHRoaXMubWlkZGxld2FyZVswXSlcbiAgICApO1xuICB9XG5cbiAgQGNvbXB1dGVkXG4gIGdldCBleGVjdXRpb25TdGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5leGVjdXRpb25TdGF0ZTtcbiAgfVxuXG4gIHNldEV4ZWN1dGlvblN0YXRlKHN0YXRlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRyYW5zcG9ydC5zZXRFeGVjdXRpb25TdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBAY29tcHV0ZWRcbiAgZ2V0IGV4ZWN1dGlvbkNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LmV4ZWN1dGlvbkNvdW50O1xuICB9XG5cbiAgc2V0RXhlY3V0aW9uQ291bnQoY291bnQ6IG51bWJlcikge1xuICAgIHRoaXMudHJhbnNwb3J0LnNldEV4ZWN1dGlvbkNvdW50KGNvdW50KTtcbiAgfVxuXG4gIEBjb21wdXRlZFxuICBnZXQgbGFzdEV4ZWN1dGlvblRpbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQubGFzdEV4ZWN1dGlvblRpbWU7XG4gIH1cblxuICBzZXRMYXN0RXhlY3V0aW9uVGltZSh0aW1lU3RyaW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRyYW5zcG9ydC5zZXRMYXN0RXhlY3V0aW9uVGltZSh0aW1lU3RyaW5nKTtcbiAgfVxuXG4gIEBhY3Rpb25cbiAgYXN5bmMgc2V0SW5zcGVjdG9yUmVzdWx0KFxuICAgIGJ1bmRsZTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBlZGl0b3I6IFRleHRFZGl0b3IgfCBudWxsIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmIChpc0VxdWFsKHRoaXMuaW5zcGVjdG9yLmJ1bmRsZSwgYnVuZGxlKSkge1xuICAgICAgYXdhaXQgYXRvbS53b3Jrc3BhY2UudG9nZ2xlKElOU1BFQ1RPUl9VUkkpO1xuICAgIH0gZWxzZSBpZiAoYnVuZGxlLnNpemUgIT09IDApIHtcbiAgICAgIHRoaXMuaW5zcGVjdG9yLmJ1bmRsZSA9IGJ1bmRsZTtcbiAgICAgIGF3YWl0IGF0b20ud29ya3NwYWNlLm9wZW4oSU5TUEVDVE9SX1VSSSwge1xuICAgICAgICBzZWFyY2hBbGxQYW5lczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvY3VzKGVkaXRvcik7XG4gIH1cblxuICBnZXRQbHVnaW5XcmFwcGVyKCkge1xuICAgIGlmICghdGhpcy5wbHVnaW5XcmFwcGVyKSB7XG4gICAgICB0aGlzLnBsdWdpbldyYXBwZXIgPSBuZXcgSHlkcm9nZW5LZXJuZWwodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGx1Z2luV3JhcHBlcjtcbiAgfVxuXG4gIGFkZFdhdGNoQ2FsbGJhY2sod2F0Y2hDYWxsYmFjazogKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueSkge1xuICAgIHRoaXMud2F0Y2hDYWxsYmFja3MucHVzaCh3YXRjaENhbGxiYWNrKTtcbiAgfVxuXG4gIGludGVycnVwdCgpIHtcbiAgICB0aGlzLmZpcnN0TWlkZGxld2FyZUFkYXB0ZXIuaW50ZXJydXB0KCk7XG4gIH1cblxuICBzaHV0ZG93bigpIHtcbiAgICB0aGlzLmZpcnN0TWlkZGxld2FyZUFkYXB0ZXIuc2h1dGRvd24oKTtcbiAgfVxuXG4gIHJlc3RhcnQob25SZXN0YXJ0ZWQ/OiAoKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueSkgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5maXJzdE1pZGRsZXdhcmVBZGFwdGVyLnJlc3RhcnQob25SZXN0YXJ0ZWQpO1xuICAgIHRoaXMuc2V0RXhlY3V0aW9uQ291bnQoMCk7XG4gICAgdGhpcy5zZXRMYXN0RXhlY3V0aW9uVGltZShcIk5vIGV4ZWN1dGlvblwiKTtcbiAgfVxuXG4gIGV4ZWN1dGUoY29kZTogc3RyaW5nLCBvblJlc3VsdHM6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnkpIHtcbiAgICBjb25zdCB3cmFwcGVkT25SZXN1bHRzID0gdGhpcy5fd3JhcEV4ZWN1dGlvblJlc3VsdHNDYWxsYmFjayhvblJlc3VsdHMpO1xuXG4gICAgdGhpcy5maXJzdE1pZGRsZXdhcmVBZGFwdGVyLmV4ZWN1dGUoXG4gICAgICBjb2RlLFxuICAgICAgKG1lc3NhZ2U6IE1lc3NhZ2UsIGNoYW5uZWw6IHN0cmluZykgPT4ge1xuICAgICAgICB3cmFwcGVkT25SZXN1bHRzKG1lc3NhZ2UsIGNoYW5uZWwpO1xuICAgICAgICBjb25zdCB7IG1zZ190eXBlIH0gPSBtZXNzYWdlLmhlYWRlcjtcblxuICAgICAgICBpZiAobXNnX3R5cGUgPT09IFwiZXhlY3V0ZV9pbnB1dFwiKSB7XG4gICAgICAgICAgdGhpcy5zZXRMYXN0RXhlY3V0aW9uVGltZShcIlJ1bm5pbmcgLi4uXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1zZ190eXBlID09PSBcImV4ZWN1dGVfcmVwbHlcIikge1xuICAgICAgICAgIGNvbnN0IGNvdW50ID0gbWVzc2FnZS5jb250ZW50LmV4ZWN1dGlvbl9jb3VudDtcbiAgICAgICAgICB0aGlzLnNldEV4ZWN1dGlvbkNvdW50KGNvdW50KTtcbiAgICAgICAgICBjb25zdCB0aW1lU3RyaW5nID0gZXhlY3V0aW9uVGltZShtZXNzYWdlKTtcbiAgICAgICAgICB0aGlzLnNldExhc3RFeGVjdXRpb25UaW1lKHRpbWVTdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBleGVjdXRpb25fc3RhdGUgfSA9IG1lc3NhZ2UuY29udGVudDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2hhbm5lbCA9PSBcImlvcHViXCIgJiZcbiAgICAgICAgICBtc2dfdHlwZSA9PT0gXCJzdGF0dXNcIiAmJlxuICAgICAgICAgIGV4ZWN1dGlvbl9zdGF0ZSA9PT0gXCJpZGxlXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fY2FsbFdhdGNoQ2FsbGJhY2tzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZXhlY3V0ZVdhdGNoKGNvZGU6IHN0cmluZywgb25SZXN1bHRzOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB7XG4gICAgdGhpcy5maXJzdE1pZGRsZXdhcmVBZGFwdGVyLmV4ZWN1dGUoXG4gICAgICBjb2RlLFxuICAgICAgdGhpcy5fd3JhcEV4ZWN1dGlvblJlc3VsdHNDYWxsYmFjayhvblJlc3VsdHMpXG4gICAgKTtcbiAgfVxuXG4gIF9jYWxsV2F0Y2hDYWxsYmFja3MoKSB7XG4gICAgdGhpcy53YXRjaENhbGxiYWNrcy5mb3JFYWNoKCh3YXRjaENhbGxiYWNrKSA9PiB3YXRjaENhbGxiYWNrKCkpO1xuICB9XG5cbiAgLypcbiAgICogVGFrZXMgYSBjYWxsYmFjayB0aGF0IGFjY2VwdHMgZXhlY3V0aW9uIHJlc3VsdHMgaW4gYSBoeWRyb2dlbi1pbnRlcm5hbFxuICAgKiBmb3JtYXQgYW5kIHdyYXBzIGl0IHRvIGFjY2VwdCBKdXB5dGVyIG1lc3NhZ2UvY2hhbm5lbCBwYWlycyBpbnN0ZWFkLlxuICAgKiBLZXJuZWxzIGFuZCBwbHVnaW5zIGFsbCBvcGVyYXRlIG9uIHR5cGVzIHNwZWNpZmllZCBieSB0aGUgSnVweXRlciBtZXNzYWdpbmdcbiAgICogcHJvdG9jb2wgaW4gb3JkZXIgdG8gbWF4aW1pemUgY29tcGF0aWJpbGl0eSwgYnV0IGh5ZHJvZ2VuIGludGVybmFsbHkgdXNlc1xuICAgKiBpdHMgb3duIHR5cGVzLlxuICAgKi9cbiAgX3dyYXBFeGVjdXRpb25SZXN1bHRzQ2FsbGJhY2sob25SZXN1bHRzOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB7XG4gICAgcmV0dXJuIChtZXNzYWdlOiBNZXNzYWdlLCBjaGFubmVsOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChjaGFubmVsID09PSBcInNoZWxsXCIpIHtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IG1lc3NhZ2UuY29udGVudDtcblxuICAgICAgICBpZiAoc3RhdHVzID09PSBcImVycm9yXCIgfHwgc3RhdHVzID09PSBcIm9rXCIpIHtcbiAgICAgICAgICBvblJlc3VsdHMoe1xuICAgICAgICAgICAgZGF0YTogc3RhdHVzLFxuICAgICAgICAgICAgc3RyZWFtOiBcInN0YXR1c1wiLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhcIktlcm5lbDogaWdub3JpbmcgdW5leHBlY3RlZCB2YWx1ZSBmb3IgbWVzc2FnZS5jb250ZW50LnN0YXR1c1wiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGFubmVsID09PSBcImlvcHViXCIpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaGVhZGVyLm1zZ190eXBlID09PSBcImV4ZWN1dGVfaW5wdXRcIikge1xuICAgICAgICAgIG9uUmVzdWx0cyh7XG4gICAgICAgICAgICBkYXRhOiBtZXNzYWdlLmNvbnRlbnQuZXhlY3V0aW9uX2NvdW50LFxuICAgICAgICAgICAgc3RyZWFtOiBcImV4ZWN1dGlvbl9jb3VudFwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETyhuaWtpdGEpOiBDb25zaWRlciBjb252ZXJ0aW5nIHRvIFY1IGVsc2V3aGVyZSwgc28gdGhhdCBwbHVnaW5zXG4gICAgICAgIC8vIG5ldmVyIGhhdmUgdG8gZGVhbCB3aXRoIG1lc3NhZ2VzIGluIHRoZSBWNCBmb3JtYXRcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbXNnU3BlY1RvTm90ZWJvb2tGb3JtYXQobXNnU3BlY1Y0dG9WNShtZXNzYWdlKSk7XG4gICAgICAgIG9uUmVzdWx0cyhyZXN1bHQpO1xuICAgICAgfSBlbHNlIGlmIChjaGFubmVsID09PSBcInN0ZGluXCIpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaGVhZGVyLm1zZ190eXBlICE9PSBcImlucHV0X3JlcXVlc3RcIikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgcHJvbXB0LCBwYXNzd29yZCB9ID0gbWVzc2FnZS5jb250ZW50O1xuICAgICAgICAvLyBUT0RPKG5pa2l0YSk6IHBlcmhhcHMgaXQgd291bGQgbWFrZSBzZW5zZSB0byBpbnN0YWxsIG1pZGRsZXdhcmUgZm9yXG4gICAgICAgIC8vIHNlbmRpbmcgaW5wdXQgcmVwbGllc1xuICAgICAgICBjb25zdCBpbnB1dFZpZXcgPSBuZXcgSW5wdXRWaWV3KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb21wdCxcbiAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGlucHV0OiBzdHJpbmcpID0+IHRoaXMudHJhbnNwb3J0LmlucHV0UmVwbHkoaW5wdXQpXG4gICAgICAgICk7XG4gICAgICAgIGlucHV0Vmlldy5hdHRhY2goKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY29tcGxldGUoY29kZTogc3RyaW5nLCBvblJlc3VsdHM6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnkpIHtcbiAgICB0aGlzLmZpcnN0TWlkZGxld2FyZUFkYXB0ZXIuY29tcGxldGUoXG4gICAgICBjb2RlLFxuICAgICAgKG1lc3NhZ2U6IE1lc3NhZ2UsIGNoYW5uZWw6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoY2hhbm5lbCAhPT0gXCJzaGVsbFwiKSB7XG4gICAgICAgICAgbG9nKFwiSW52YWxpZCByZXBseTogd3JvbmcgY2hhbm5lbFwiKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBvblJlc3VsdHMobWVzc2FnZS5jb250ZW50KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgaW5zcGVjdChcbiAgICBjb2RlOiBzdHJpbmcsXG4gICAgY3Vyc29yUG9zOiBudW1iZXIsXG4gICAgb25SZXN1bHRzOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55XG4gICkge1xuICAgIHRoaXMuZmlyc3RNaWRkbGV3YXJlQWRhcHRlci5pbnNwZWN0KFxuICAgICAgY29kZSxcbiAgICAgIGN1cnNvclBvcyxcbiAgICAgIChtZXNzYWdlOiBNZXNzYWdlLCBjaGFubmVsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGNoYW5uZWwgIT09IFwic2hlbGxcIikge1xuICAgICAgICAgIGxvZyhcIkludmFsaWQgcmVwbHk6IHdyb25nIGNoYW5uZWxcIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgb25SZXN1bHRzKHtcbiAgICAgICAgICBkYXRhOiBtZXNzYWdlLmNvbnRlbnQuZGF0YSxcbiAgICAgICAgICBmb3VuZDogbWVzc2FnZS5jb250ZW50LmZvdW5kLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBsb2coXCJLZXJuZWw6IERlc3Ryb3lpbmdcIik7XG4gICAgLy8gVGhpcyBpcyBmb3IgY2xlYW51cCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG4gICAgdGhpcy53YXRjaGVzU3RvcmUuZGVzdHJveSgpO1xuICAgIHN0b3JlLmRlbGV0ZUtlcm5lbCh0aGlzKTtcbiAgICB0aGlzLnRyYW5zcG9ydC5kZXN0cm95KCk7XG5cbiAgICBpZiAodGhpcy5wbHVnaW5XcmFwcGVyKSB7XG4gICAgICB0aGlzLnBsdWdpbldyYXBwZXIuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXR0ZXIuZW1pdChcImRpZC1kZXN0cm95XCIpO1xuICAgIHRoaXMuZW1pdHRlci5kaXNwb3NlKCk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFvRDtBQUNwRCwrQkFBb0Q7QUFDcEQsNkRBQXFDO0FBQ3JDLG1DQU9pQjtBQUNqQixvREFBNEI7QUFDNUIsOERBQTJDO0FBQzNDLDREQUF5QztBQUN6QyxtRkFBMEQ7QUFLMUQsOERBQXFDO0FBQ3JDLDBFQUFpRDtBQU9qRCxTQUFTLDBCQUEwQixDQUNqQyxTQUEwQjtJQUUxQixNQUFNLGdCQUFnQixHQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM3RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osV0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDN0IsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEIsV0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDeEMsT0FBTztTQUNSO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxVQUFVLEVBQUU7WUFFbEQsV0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7WUFDMUMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDMUIsV0FBRyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDOUMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ2pDLFdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQ3JELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUNuQyxXQUFHLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUN2RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNuQixX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Z0JBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUs7YUFDN0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLFdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsZUFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQTNRQztJQURDLGlCQUFVOzt5Q0FHVDtBQWtERjtJQURDLGVBQVE7Ozs0Q0FHUjtBQU9EO0lBREMsZUFBUTs7OzRDQUdSO0FBT0Q7SUFEQyxlQUFROzs7K0NBR1I7QUFPRDtJQURDLGFBQU07OzZDQUdHLGlCQUFVOztnREFZbkI7QUEvRkgseUJBNlFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1pdHRlciwgVGV4dEVkaXRvciwgR3JhbW1hciB9IGZyb20gXCJhdG9tXCI7XHJcbmltcG9ydCB7IG9ic2VydmFibGUsIGFjdGlvbiwgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xyXG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoL2lzRXF1YWxcIjtcclxuaW1wb3J0IHtcclxuICBsb2csXHJcbiAgZm9jdXMsXHJcbiAgbXNnU3BlY1RvTm90ZWJvb2tGb3JtYXQsXHJcbiAgbXNnU3BlY1Y0dG9WNSxcclxuICBJTlNQRUNUT1JfVVJJLFxyXG4gIGV4ZWN1dGlvblRpbWUsXHJcbn0gZnJvbSBcIi4vdXRpbHNcIjtcclxuaW1wb3J0IHN0b3JlIGZyb20gXCIuL3N0b3JlXCI7XHJcbmltcG9ydCBXYXRjaGVzU3RvcmUgZnJvbSBcIi4vc3RvcmUvd2F0Y2hlc1wiO1xyXG5pbXBvcnQgT3V0cHV0U3RvcmUgZnJvbSBcIi4vc3RvcmUvb3V0cHV0XCI7XHJcbmltcG9ydCBIeWRyb2dlbktlcm5lbCBmcm9tIFwiLi9wbHVnaW4tYXBpL2h5ZHJvZ2VuLWtlcm5lbFwiO1xyXG5pbXBvcnQgdHlwZSB7XHJcbiAgSHlkcm9nZW5LZXJuZWxNaWRkbGV3YXJlVGh1bmssXHJcbiAgSHlkcm9nZW5LZXJuZWxNaWRkbGV3YXJlLFxyXG59IGZyb20gXCIuL3BsdWdpbi1hcGkvaHlkcm9nZW4tdHlwZXNcIjtcclxuaW1wb3J0IElucHV0VmlldyBmcm9tIFwiLi9pbnB1dC12aWV3XCI7XHJcbmltcG9ydCBLZXJuZWxUcmFuc3BvcnQgZnJvbSBcIi4va2VybmVsLXRyYW5zcG9ydFwiO1xyXG5pbXBvcnQgdHlwZSB7IFJlc3VsdHNDYWxsYmFjayB9IGZyb20gXCIuL2tlcm5lbC10cmFuc3BvcnRcIjtcclxuaW1wb3J0IHR5cGUgeyBLZXJuZWwgYXMgSnVweXRlcmxhYktlcm5lbCB9IGZyb20gXCJAanVweXRlcmxhYi9zZXJ2aWNlc1wiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcIi4vaHlkcm9nZW5cIjtcclxuaW1wb3J0IHR5cGUgeyBLZXJuZWxzcGVjTWV0YWRhdGEgfSBmcm9tIFwiQG50ZXJhY3QvdHlwZXNcIjtcclxuXHJcbmZ1bmN0aW9uIHByb3RlY3RGcm9tSW52YWxpZE1lc3NhZ2VzKFxyXG4gIG9uUmVzdWx0czogUmVzdWx0c0NhbGxiYWNrXHJcbik6IFJlc3VsdHNDYWxsYmFjayB7XHJcbiAgY29uc3Qgd3JhcHBlZE9uUmVzdWx0czogUmVzdWx0c0NhbGxiYWNrID0gKG1lc3NhZ2UsIGNoYW5uZWwpID0+IHtcclxuICAgIGlmICghbWVzc2FnZSkge1xyXG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IG51bGxcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW1lc3NhZ2UuY29udGVudCkge1xyXG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgY29udGVudFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtZXNzYWdlLmNvbnRlbnQuZXhlY3V0aW9uX3N0YXRlID09PSBcInN0YXJ0aW5nXCIpIHtcclxuICAgICAgLy8gS2VybmVscyBzZW5kIGEgc3RhcnRpbmcgc3RhdHVzIG1lc3NhZ2Ugd2l0aCBhbiBlbXB0eSBwYXJlbnRfaGVhZGVyXHJcbiAgICAgIGxvZyhcIkRyb3BwZWQgc3RhcnRpbmcgc3RhdHVzIElPIG1lc3NhZ2VcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW1lc3NhZ2UucGFyZW50X2hlYWRlcikge1xyXG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgcGFyZW50X2hlYWRlclwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghbWVzc2FnZS5wYXJlbnRfaGVhZGVyLm1zZ19pZCkge1xyXG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgcGFyZW50X2hlYWRlci5tc2dfaWRcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW1lc3NhZ2UucGFyZW50X2hlYWRlci5tc2dfdHlwZSkge1xyXG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgcGFyZW50X2hlYWRlci5tc2dfdHlwZVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghbWVzc2FnZS5oZWFkZXIpIHtcclxuICAgICAgbG9nKFwiSW52YWxpZCBtZXNzYWdlOiBNaXNzaW5nIGhlYWRlclwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghbWVzc2FnZS5oZWFkZXIubXNnX2lkKSB7XHJcbiAgICAgIGxvZyhcIkludmFsaWQgbWVzc2FnZTogTWlzc2luZyBoZWFkZXIubXNnX2lkXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFtZXNzYWdlLmhlYWRlci5tc2dfdHlwZSkge1xyXG4gICAgICBsb2coXCJJbnZhbGlkIG1lc3NhZ2U6IE1pc3NpbmcgaGVhZGVyLm1zZ190eXBlXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgb25SZXN1bHRzKG1lc3NhZ2UsIGNoYW5uZWwpO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiB3cmFwcGVkT25SZXN1bHRzO1xyXG59IC8vIEFkYXB0cyBtaWRkbGV3YXJlIG9iamVjdHMgcHJvdmlkZWQgYnkgcGx1Z2lucyB0byBhbiBpbnRlcm5hbCBpbnRlcmZhY2UuIEluXHJcbi8vIHBhcnRpY3VsYXIsIHRoaXMgaW1wbGVtZW50cyBmYWxsdGhyb3VnaCBsb2dpYyBmb3Igd2hlbiBhIHBsdWdpbiBkZWZpbmVzIHNvbWVcclxuLy8gbWV0aG9kcyAoZS5nLiBleGVjdXRlKSBidXQgZG9lc24ndCBpbXBsZW1lbnQgb3RoZXJzIChlLmcuIGludGVycnVwdCkuIE5vdGVcclxuLy8gdGhhdCBIeWRyb2dlbktlcm5lbE1pZGRsZXdhcmUgb2JqZWN0cyBhcmUgbXV0YWJsZTogdGhleSBtYXkgbG9zZS9nYWluIG1ldGhvZHNcclxuLy8gYXQgYW55IHRpbWUsIGluY2x1ZGluZyBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcgYSByZXF1ZXN0LiBUaGlzIGNsYXNzIGFsc29cclxuLy8gYWRkcyBiYXNpYyBjaGVja3MgdGhhdCBtZXNzYWdlcyBwYXNzZWQgdmlhIHRoZSBgb25SZXN1bHRzYCBjYWxsYmFja3MgYXJlIG5vdFxyXG4vLyBtaXNzaW5nIGtleSBtYW5kYXRvcnkgZmllbGRzIHNwZWNpZmllZCBpbiB0aGUgSnVweXRlciBtZXNzYWdpbmcgc3BlYy5cclxuXHJcbmNsYXNzIE1pZGRsZXdhcmVBZGFwdGVyIGltcGxlbWVudHMgSHlkcm9nZW5LZXJuZWxNaWRkbGV3YXJlVGh1bmsge1xyXG4gIF9taWRkbGV3YXJlOiBIeWRyb2dlbktlcm5lbE1pZGRsZXdhcmU7XHJcbiAgX25leHQ6IE1pZGRsZXdhcmVBZGFwdGVyIHwgS2VybmVsVHJhbnNwb3J0O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIG1pZGRsZXdhcmU6IEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZSxcclxuICAgIG5leHQ6IE1pZGRsZXdhcmVBZGFwdGVyIHwgS2VybmVsVHJhbnNwb3J0XHJcbiAgKSB7XHJcbiAgICB0aGlzLl9taWRkbGV3YXJlID0gbWlkZGxld2FyZTtcclxuICAgIHRoaXMuX25leHQgPSBuZXh0O1xyXG4gIH1cclxuXHJcbiAgLy8gVGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIG1ldGhvZCBnZXRzIHBhc3NlZCB0byBwbHVnaW5zISBGb3Igbm93IHdlIGp1c3RcclxuICAvLyByZXR1cm4gdGhlIE1pZGRsZXdhcmVBZGFwdGVyIG9iamVjdCBpdHNlbGYsIHdoaWNoIGlzIHdoeSBhbGwgcHJpdmF0ZVxyXG4gIC8vIGZ1bmN0aW9uYWxpdHkgaXMgcHJlZml4ZWQgd2l0aCBfLCBhbmQgd2h5IE1pZGRsZXdhcmVBZGFwdGVyIGlzIG1hcmtlZCBhc1xyXG4gIC8vIGltcGxlbWVudGluZyBIeWRyb2dlbktlcm5lbE1pZGRsZXdhcmVUaHVuay4gT25jZSBtdWx0aXBsZSBwbHVnaW4gQVBJXHJcbiAgLy8gdmVyc2lvbnMgZXhpc3QsIHdlIG1heSB3YW50IHRvIGdlbmVyYXRlIGEgSHlkcm9nZW5LZXJuZWxNaWRkbGV3YXJlVGh1bmtcclxuICAvLyBzcGVjaWFsaXplZCBmb3IgYSBwYXJ0aWN1bGFyIHBsdWdpbiBBUEkgdmVyc2lvbi5cclxuICBnZXQgX25leHRBc1BsdWdpblR5cGUoKTogSHlkcm9nZW5LZXJuZWxNaWRkbGV3YXJlVGh1bmsge1xyXG4gICAgaWYgKHRoaXMuX25leHQgaW5zdGFuY2VvZiBLZXJuZWxUcmFuc3BvcnQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIFwiTWlkZGxld2FyZUFkYXB0ZXI6IF9uZXh0QXNQbHVnaW5UeXBlIG11c3QgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gX25leHQgaXMgS2VybmVsVHJhbnNwb3J0XCJcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fbmV4dDtcclxuICB9XHJcblxyXG4gIGludGVycnVwdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9taWRkbGV3YXJlLmludGVycnVwdCkge1xyXG4gICAgICB0aGlzLl9taWRkbGV3YXJlLmludGVycnVwdCh0aGlzLl9uZXh0QXNQbHVnaW5UeXBlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX25leHQuaW50ZXJydXB0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaHV0ZG93bigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9taWRkbGV3YXJlLnNodXRkb3duKSB7XHJcbiAgICAgIHRoaXMuX21pZGRsZXdhcmUuc2h1dGRvd24odGhpcy5fbmV4dEFzUGx1Z2luVHlwZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9uZXh0LnNodXRkb3duKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXN0YXJ0KFxyXG4gICAgb25SZXN0YXJ0ZWQ6ICgoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB8IG51bGwgfCB1bmRlZmluZWRcclxuICApOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9taWRkbGV3YXJlLnJlc3RhcnQpIHtcclxuICAgICAgdGhpcy5fbWlkZGxld2FyZS5yZXN0YXJ0KHRoaXMuX25leHRBc1BsdWdpblR5cGUsIG9uUmVzdGFydGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX25leHQucmVzdGFydChvblJlc3RhcnRlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleGVjdXRlKGNvZGU6IHN0cmluZywgb25SZXN1bHRzOiBSZXN1bHRzQ2FsbGJhY2spOiB2b2lkIHtcclxuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmVwZWF0ZWRseSB3cmFwIHRoZSBvblJlc3VsdHMgY2FsbGJhY2sgZXZlcnkgdGltZSB3ZVxyXG4gICAgLy8gZmFsbCB0aHJvdWdoLCBidXQgd2UgbmVlZCB0byBkbyBpdCBhdCBsZWFzdCBvbmNlIGJlZm9yZSBkZWxlZ2F0aW5nIHRvXHJcbiAgICAvLyB0aGUgS2VybmVsVHJhbnNwb3J0LlxyXG4gICAgY29uc3Qgc2FmZU9uUmVzdWx0cyA9XHJcbiAgICAgIHRoaXMuX21pZGRsZXdhcmUuZXhlY3V0ZSB8fCB0aGlzLl9uZXh0IGluc3RhbmNlb2YgS2VybmVsVHJhbnNwb3J0XHJcbiAgICAgICAgPyBwcm90ZWN0RnJvbUludmFsaWRNZXNzYWdlcyhvblJlc3VsdHMpXHJcbiAgICAgICAgOiBvblJlc3VsdHM7XHJcblxyXG4gICAgaWYgKHRoaXMuX21pZGRsZXdhcmUuZXhlY3V0ZSkge1xyXG4gICAgICB0aGlzLl9taWRkbGV3YXJlLmV4ZWN1dGUodGhpcy5fbmV4dEFzUGx1Z2luVHlwZSwgY29kZSwgc2FmZU9uUmVzdWx0cyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9uZXh0LmV4ZWN1dGUoY29kZSwgc2FmZU9uUmVzdWx0cyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wbGV0ZShjb2RlOiBzdHJpbmcsIG9uUmVzdWx0czogUmVzdWx0c0NhbGxiYWNrKTogdm9pZCB7XHJcbiAgICBjb25zdCBzYWZlT25SZXN1bHRzID1cclxuICAgICAgdGhpcy5fbWlkZGxld2FyZS5jb21wbGV0ZSB8fCB0aGlzLl9uZXh0IGluc3RhbmNlb2YgS2VybmVsVHJhbnNwb3J0XHJcbiAgICAgICAgPyBwcm90ZWN0RnJvbUludmFsaWRNZXNzYWdlcyhvblJlc3VsdHMpXHJcbiAgICAgICAgOiBvblJlc3VsdHM7XHJcblxyXG4gICAgaWYgKHRoaXMuX21pZGRsZXdhcmUuY29tcGxldGUpIHtcclxuICAgICAgdGhpcy5fbWlkZGxld2FyZS5jb21wbGV0ZSh0aGlzLl9uZXh0QXNQbHVnaW5UeXBlLCBjb2RlLCBzYWZlT25SZXN1bHRzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX25leHQuY29tcGxldGUoY29kZSwgc2FmZU9uUmVzdWx0cyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnNwZWN0KGNvZGU6IHN0cmluZywgY3Vyc29yUG9zOiBudW1iZXIsIG9uUmVzdWx0czogUmVzdWx0c0NhbGxiYWNrKTogdm9pZCB7XHJcbiAgICBjb25zdCBzYWZlT25SZXN1bHRzID1cclxuICAgICAgdGhpcy5fbWlkZGxld2FyZS5pbnNwZWN0IHx8IHRoaXMuX25leHQgaW5zdGFuY2VvZiBLZXJuZWxUcmFuc3BvcnRcclxuICAgICAgICA/IHByb3RlY3RGcm9tSW52YWxpZE1lc3NhZ2VzKG9uUmVzdWx0cylcclxuICAgICAgICA6IG9uUmVzdWx0cztcclxuXHJcbiAgICBpZiAodGhpcy5fbWlkZGxld2FyZS5pbnNwZWN0KSB7XHJcbiAgICAgIHRoaXMuX21pZGRsZXdhcmUuaW5zcGVjdChcclxuICAgICAgICB0aGlzLl9uZXh0QXNQbHVnaW5UeXBlLFxyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgY3Vyc29yUG9zLFxyXG4gICAgICAgIHNhZmVPblJlc3VsdHNcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX25leHQuaW5zcGVjdChjb2RlLCBjdXJzb3JQb3MsIHNhZmVPblJlc3VsdHMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgS2VybmVsIHtcclxuICBAb2JzZXJ2YWJsZVxyXG4gIGluc3BlY3RvciA9IHtcclxuICAgIGJ1bmRsZToge30sXHJcbiAgfTtcclxuICBvdXRwdXRTdG9yZSA9IG5ldyBPdXRwdXRTdG9yZSgpO1xyXG4gIHdhdGNoZXNTdG9yZTogV2F0Y2hlc1N0b3JlO1xyXG4gIHdhdGNoQ2FsbGJhY2tzOiBBcnJheTwoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55PiA9IFtdO1xyXG4gIGVtaXR0ZXIgPSBuZXcgRW1pdHRlcigpO1xyXG4gIHBsdWdpbldyYXBwZXI6IEh5ZHJvZ2VuS2VybmVsIHwgbnVsbCA9IG51bGw7XHJcbiAgdHJhbnNwb3J0OiBLZXJuZWxUcmFuc3BvcnQ7XHJcbiAgLy8gSW52YXJpYW50OiB0aGUgYC5fbmV4dGAgb2YgZWFjaCBlbnRyeSBpbiB0aGlzIGFycmF5IG11c3QgcG9pbnQgdG8gdGhlIG5leHRcclxuICAvLyBlbGVtZW50IG9mIHRoZSBhcnJheS4gVGhlIGAuX25leHRgIG9mIHRoZSBsYXN0IGVsZW1lbnQgbXVzdCBwb2ludCB0b1xyXG4gIC8vIGB0aGlzLnRyYW5zcG9ydGAuXHJcbiAgbWlkZGxld2FyZTogQXJyYXk8TWlkZGxld2FyZUFkYXB0ZXI+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihrZXJuZWw6IEtlcm5lbFRyYW5zcG9ydCkge1xyXG4gICAgdGhpcy50cmFuc3BvcnQgPSBrZXJuZWw7XHJcbiAgICB0aGlzLndhdGNoZXNTdG9yZSA9IG5ldyBXYXRjaGVzU3RvcmUodGhpcyk7XHJcbiAgICAvLyBBIE1pZGRsZXdhcmVBZGFwdGVyIHRoYXQgZm9yd2FyZHMgYWxsIHJlcXVlc3RzIHRvIGB0aGlzLnRyYW5zcG9ydGAuXHJcbiAgICAvLyBOZWVkZWQgdG8gdGVybWluYXRlIHRoZSBtaWRkbGV3YXJlIGNoYWluIGluIGEgd2F5IHN1Y2ggdGhhdCB0aGUgYG5leHRgXHJcbiAgICAvLyBvYmplY3QgcGFzc2VkIHRvIHRoZSBsYXN0IG1pZGRsZXdhcmUgaXMgbm90IHRoZSBLZXJuZWxUcmFuc3BvcnQgaW5zdGFuY2VcclxuICAgIC8vIGl0c2VsZiAod2hpY2ggd291bGQgYmUgdmlvbGF0ZSBpc29sYXRpb24gb2YgaW50ZXJuYWxzIGZyb20gcGx1Z2lucykuXHJcbiAgICBjb25zdCBkZWxlZ2F0ZVRvVHJhbnNwb3J0ID0gbmV3IE1pZGRsZXdhcmVBZGFwdGVyKHt9LCB0aGlzLnRyYW5zcG9ydCk7XHJcbiAgICB0aGlzLm1pZGRsZXdhcmUgPSBbZGVsZWdhdGVUb1RyYW5zcG9ydF07XHJcbiAgfVxyXG5cclxuICBnZXQga2VybmVsU3BlYygpOiBKdXB5dGVybGFiS2VybmVsLklTcGVjTW9kZWwgfCBLZXJuZWxzcGVjTWV0YWRhdGEge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0Lmtlcm5lbFNwZWM7XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JhbW1hcigpOiBHcmFtbWFyIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5ncmFtbWFyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQubGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzcGxheU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5kaXNwbGF5TmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdE1pZGRsZXdhcmVBZGFwdGVyKCk6IE1pZGRsZXdhcmVBZGFwdGVyIHtcclxuICAgIHJldHVybiB0aGlzLm1pZGRsZXdhcmVbMF07XHJcbiAgfVxyXG5cclxuICBhZGRNaWRkbGV3YXJlKG1pZGRsZXdhcmU6IEh5ZHJvZ2VuS2VybmVsTWlkZGxld2FyZSkge1xyXG4gICAgdGhpcy5taWRkbGV3YXJlLnVuc2hpZnQoXHJcbiAgICAgIG5ldyBNaWRkbGV3YXJlQWRhcHRlcihtaWRkbGV3YXJlLCB0aGlzLm1pZGRsZXdhcmVbMF0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQGNvbXB1dGVkXHJcbiAgZ2V0IGV4ZWN1dGlvblN0YXRlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQuZXhlY3V0aW9uU3RhdGU7XHJcbiAgfVxyXG5cclxuICBzZXRFeGVjdXRpb25TdGF0ZShzdGF0ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRyYW5zcG9ydC5zZXRFeGVjdXRpb25TdGF0ZShzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBAY29tcHV0ZWRcclxuICBnZXQgZXhlY3V0aW9uQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5leGVjdXRpb25Db3VudDtcclxuICB9XHJcblxyXG4gIHNldEV4ZWN1dGlvbkNvdW50KGNvdW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMudHJhbnNwb3J0LnNldEV4ZWN1dGlvbkNvdW50KGNvdW50KTtcclxuICB9XHJcblxyXG4gIEBjb21wdXRlZFxyXG4gIGdldCBsYXN0RXhlY3V0aW9uVGltZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0Lmxhc3RFeGVjdXRpb25UaW1lO1xyXG4gIH1cclxuXHJcbiAgc2V0TGFzdEV4ZWN1dGlvblRpbWUodGltZVN0cmluZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRyYW5zcG9ydC5zZXRMYXN0RXhlY3V0aW9uVGltZSh0aW1lU3RyaW5nKTtcclxuICB9XHJcblxyXG4gIEBhY3Rpb25cclxuICBhc3luYyBzZXRJbnNwZWN0b3JSZXN1bHQoXHJcbiAgICBidW5kbGU6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBlZGl0b3I6IFRleHRFZGl0b3IgfCBudWxsIHwgdW5kZWZpbmVkXHJcbiAgKSB7XHJcbiAgICBpZiAoaXNFcXVhbCh0aGlzLmluc3BlY3Rvci5idW5kbGUsIGJ1bmRsZSkpIHtcclxuICAgICAgYXdhaXQgYXRvbS53b3Jrc3BhY2UudG9nZ2xlKElOU1BFQ1RPUl9VUkkpO1xyXG4gICAgfSBlbHNlIGlmIChidW5kbGUuc2l6ZSAhPT0gMCkge1xyXG4gICAgICB0aGlzLmluc3BlY3Rvci5idW5kbGUgPSBidW5kbGU7XHJcbiAgICAgIGF3YWl0IGF0b20ud29ya3NwYWNlLm9wZW4oSU5TUEVDVE9SX1VSSSwge1xyXG4gICAgICAgIHNlYXJjaEFsbFBhbmVzOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb2N1cyhlZGl0b3IpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGx1Z2luV3JhcHBlcigpIHtcclxuICAgIGlmICghdGhpcy5wbHVnaW5XcmFwcGVyKSB7XHJcbiAgICAgIHRoaXMucGx1Z2luV3JhcHBlciA9IG5ldyBIeWRyb2dlbktlcm5lbCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5wbHVnaW5XcmFwcGVyO1xyXG4gIH1cclxuXHJcbiAgYWRkV2F0Y2hDYWxsYmFjayh3YXRjaENhbGxiYWNrOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB7XHJcbiAgICB0aGlzLndhdGNoQ2FsbGJhY2tzLnB1c2god2F0Y2hDYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBpbnRlcnJ1cHQoKSB7XHJcbiAgICB0aGlzLmZpcnN0TWlkZGxld2FyZUFkYXB0ZXIuaW50ZXJydXB0KCk7XHJcbiAgfVxyXG5cclxuICBzaHV0ZG93bigpIHtcclxuICAgIHRoaXMuZmlyc3RNaWRkbGV3YXJlQWRhcHRlci5zaHV0ZG93bigpO1xyXG4gIH1cclxuXHJcbiAgcmVzdGFydChvblJlc3RhcnRlZD86ICgoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuZmlyc3RNaWRkbGV3YXJlQWRhcHRlci5yZXN0YXJ0KG9uUmVzdGFydGVkKTtcclxuICAgIHRoaXMuc2V0RXhlY3V0aW9uQ291bnQoMCk7XHJcbiAgICB0aGlzLnNldExhc3RFeGVjdXRpb25UaW1lKFwiTm8gZXhlY3V0aW9uXCIpO1xyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZShjb2RlOiBzdHJpbmcsIG9uUmVzdWx0czogKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueSkge1xyXG4gICAgY29uc3Qgd3JhcHBlZE9uUmVzdWx0cyA9IHRoaXMuX3dyYXBFeGVjdXRpb25SZXN1bHRzQ2FsbGJhY2sob25SZXN1bHRzKTtcclxuXHJcbiAgICB0aGlzLmZpcnN0TWlkZGxld2FyZUFkYXB0ZXIuZXhlY3V0ZShcclxuICAgICAgY29kZSxcclxuICAgICAgKG1lc3NhZ2U6IE1lc3NhZ2UsIGNoYW5uZWw6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHdyYXBwZWRPblJlc3VsdHMobWVzc2FnZSwgY2hhbm5lbCk7XHJcbiAgICAgICAgY29uc3QgeyBtc2dfdHlwZSB9ID0gbWVzc2FnZS5oZWFkZXI7XHJcblxyXG4gICAgICAgIGlmIChtc2dfdHlwZSA9PT0gXCJleGVjdXRlX2lucHV0XCIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0TGFzdEV4ZWN1dGlvblRpbWUoXCJSdW5uaW5nIC4uLlwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChtc2dfdHlwZSA9PT0gXCJleGVjdXRlX3JlcGx5XCIpIHtcclxuICAgICAgICAgIGNvbnN0IGNvdW50ID0gbWVzc2FnZS5jb250ZW50LmV4ZWN1dGlvbl9jb3VudDtcclxuICAgICAgICAgIHRoaXMuc2V0RXhlY3V0aW9uQ291bnQoY291bnQpO1xyXG4gICAgICAgICAgY29uc3QgdGltZVN0cmluZyA9IGV4ZWN1dGlvblRpbWUobWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLnNldExhc3RFeGVjdXRpb25UaW1lKHRpbWVTdHJpbmcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgeyBleGVjdXRpb25fc3RhdGUgfSA9IG1lc3NhZ2UuY29udGVudDtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY2hhbm5lbCA9PSBcImlvcHViXCIgJiZcclxuICAgICAgICAgIG1zZ190eXBlID09PSBcInN0YXR1c1wiICYmXHJcbiAgICAgICAgICBleGVjdXRpb25fc3RhdGUgPT09IFwiaWRsZVwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLl9jYWxsV2F0Y2hDYWxsYmFja3MoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleGVjdXRlV2F0Y2goY29kZTogc3RyaW5nLCBvblJlc3VsdHM6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnkpIHtcclxuICAgIHRoaXMuZmlyc3RNaWRkbGV3YXJlQWRhcHRlci5leGVjdXRlKFxyXG4gICAgICBjb2RlLFxyXG4gICAgICB0aGlzLl93cmFwRXhlY3V0aW9uUmVzdWx0c0NhbGxiYWNrKG9uUmVzdWx0cylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBfY2FsbFdhdGNoQ2FsbGJhY2tzKCkge1xyXG4gICAgdGhpcy53YXRjaENhbGxiYWNrcy5mb3JFYWNoKCh3YXRjaENhbGxiYWNrKSA9PiB3YXRjaENhbGxiYWNrKCkpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBUYWtlcyBhIGNhbGxiYWNrIHRoYXQgYWNjZXB0cyBleGVjdXRpb24gcmVzdWx0cyBpbiBhIGh5ZHJvZ2VuLWludGVybmFsXHJcbiAgICogZm9ybWF0IGFuZCB3cmFwcyBpdCB0byBhY2NlcHQgSnVweXRlciBtZXNzYWdlL2NoYW5uZWwgcGFpcnMgaW5zdGVhZC5cclxuICAgKiBLZXJuZWxzIGFuZCBwbHVnaW5zIGFsbCBvcGVyYXRlIG9uIHR5cGVzIHNwZWNpZmllZCBieSB0aGUgSnVweXRlciBtZXNzYWdpbmdcclxuICAgKiBwcm90b2NvbCBpbiBvcmRlciB0byBtYXhpbWl6ZSBjb21wYXRpYmlsaXR5LCBidXQgaHlkcm9nZW4gaW50ZXJuYWxseSB1c2VzXHJcbiAgICogaXRzIG93biB0eXBlcy5cclxuICAgKi9cclxuICBfd3JhcEV4ZWN1dGlvblJlc3VsdHNDYWxsYmFjayhvblJlc3VsdHM6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnkpIHtcclxuICAgIHJldHVybiAobWVzc2FnZTogTWVzc2FnZSwgY2hhbm5lbDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmIChjaGFubmVsID09PSBcInNoZWxsXCIpIHtcclxuICAgICAgICBjb25zdCB7IHN0YXR1cyB9ID0gbWVzc2FnZS5jb250ZW50O1xyXG5cclxuICAgICAgICBpZiAoc3RhdHVzID09PSBcImVycm9yXCIgfHwgc3RhdHVzID09PSBcIm9rXCIpIHtcclxuICAgICAgICAgIG9uUmVzdWx0cyh7XHJcbiAgICAgICAgICAgIGRhdGE6IHN0YXR1cyxcclxuICAgICAgICAgICAgc3RyZWFtOiBcInN0YXR1c1wiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZyhcIktlcm5lbDogaWdub3JpbmcgdW5leHBlY3RlZCB2YWx1ZSBmb3IgbWVzc2FnZS5jb250ZW50LnN0YXR1c1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY2hhbm5lbCA9PT0gXCJpb3B1YlwiKSB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuaGVhZGVyLm1zZ190eXBlID09PSBcImV4ZWN1dGVfaW5wdXRcIikge1xyXG4gICAgICAgICAgb25SZXN1bHRzKHtcclxuICAgICAgICAgICAgZGF0YTogbWVzc2FnZS5jb250ZW50LmV4ZWN1dGlvbl9jb3VudCxcclxuICAgICAgICAgICAgc3RyZWFtOiBcImV4ZWN1dGlvbl9jb3VudFwiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUT0RPKG5pa2l0YSk6IENvbnNpZGVyIGNvbnZlcnRpbmcgdG8gVjUgZWxzZXdoZXJlLCBzbyB0aGF0IHBsdWdpbnNcclxuICAgICAgICAvLyBuZXZlciBoYXZlIHRvIGRlYWwgd2l0aCBtZXNzYWdlcyBpbiB0aGUgVjQgZm9ybWF0XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbXNnU3BlY1RvTm90ZWJvb2tGb3JtYXQobXNnU3BlY1Y0dG9WNShtZXNzYWdlKSk7XHJcbiAgICAgICAgb25SZXN1bHRzKHJlc3VsdCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2hhbm5lbCA9PT0gXCJzdGRpblwiKSB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuaGVhZGVyLm1zZ190eXBlICE9PSBcImlucHV0X3JlcXVlc3RcIikge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgeyBwcm9tcHQsIHBhc3N3b3JkIH0gPSBtZXNzYWdlLmNvbnRlbnQ7XHJcbiAgICAgICAgLy8gVE9ETyhuaWtpdGEpOiBwZXJoYXBzIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gaW5zdGFsbCBtaWRkbGV3YXJlIGZvclxyXG4gICAgICAgIC8vIHNlbmRpbmcgaW5wdXQgcmVwbGllc1xyXG4gICAgICAgIGNvbnN0IGlucHV0VmlldyA9IG5ldyBJbnB1dFZpZXcoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb21wdCxcclxuICAgICAgICAgICAgcGFzc3dvcmQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGlucHV0OiBzdHJpbmcpID0+IHRoaXMudHJhbnNwb3J0LmlucHV0UmVwbHkoaW5wdXQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpbnB1dFZpZXcuYXR0YWNoKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb21wbGV0ZShjb2RlOiBzdHJpbmcsIG9uUmVzdWx0czogKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueSkge1xyXG4gICAgdGhpcy5maXJzdE1pZGRsZXdhcmVBZGFwdGVyLmNvbXBsZXRlKFxyXG4gICAgICBjb2RlLFxyXG4gICAgICAobWVzc2FnZTogTWVzc2FnZSwgY2hhbm5lbDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKGNoYW5uZWwgIT09IFwic2hlbGxcIikge1xyXG4gICAgICAgICAgbG9nKFwiSW52YWxpZCByZXBseTogd3JvbmcgY2hhbm5lbFwiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG9uUmVzdWx0cyhtZXNzYWdlLmNvbnRlbnQpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaW5zcGVjdChcclxuICAgIGNvZGU6IHN0cmluZyxcclxuICAgIGN1cnNvclBvczogbnVtYmVyLFxyXG4gICAgb25SZXN1bHRzOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55XHJcbiAgKSB7XHJcbiAgICB0aGlzLmZpcnN0TWlkZGxld2FyZUFkYXB0ZXIuaW5zcGVjdChcclxuICAgICAgY29kZSxcclxuICAgICAgY3Vyc29yUG9zLFxyXG4gICAgICAobWVzc2FnZTogTWVzc2FnZSwgY2hhbm5lbDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKGNoYW5uZWwgIT09IFwic2hlbGxcIikge1xyXG4gICAgICAgICAgbG9nKFwiSW52YWxpZCByZXBseTogd3JvbmcgY2hhbm5lbFwiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG9uUmVzdWx0cyh7XHJcbiAgICAgICAgICBkYXRhOiBtZXNzYWdlLmNvbnRlbnQuZGF0YSxcclxuICAgICAgICAgIGZvdW5kOiBtZXNzYWdlLmNvbnRlbnQuZm91bmQsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgbG9nKFwiS2VybmVsOiBEZXN0cm95aW5nXCIpO1xyXG4gICAgLy8gVGhpcyBpcyBmb3IgY2xlYW51cCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXHJcbiAgICB0aGlzLndhdGNoZXNTdG9yZS5kZXN0cm95KCk7XHJcbiAgICBzdG9yZS5kZWxldGVLZXJuZWwodGhpcyk7XHJcbiAgICB0aGlzLnRyYW5zcG9ydC5kZXN0cm95KCk7XHJcblxyXG4gICAgaWYgKHRoaXMucGx1Z2luV3JhcHBlcikge1xyXG4gICAgICB0aGlzLnBsdWdpbldyYXBwZXIuZGVzdHJveWVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVtaXR0ZXIuZW1pdChcImRpZC1kZXN0cm95XCIpO1xyXG4gICAgdGhpcy5lbWl0dGVyLmRpc3Bvc2UoKTtcclxuICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/main.d.ts b/dist/main.d.ts deleted file mode 100644 index af93af42e..000000000 --- a/dist/main.d.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { Disposable } from "atom"; -import { StatusBar } from "atom/status-bar"; -import HydrogenProvider from "./plugin-api/hydrogen-provider"; -export declare const config: { - autocomplete: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - autocompleteSuggestionPriority: { - title: string; - description: string; - type: string; - default: number; - order: number; - }; - showInspectorResultsInAutocomplete: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - importNotebookURI: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - importNotebookResults: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - statusBarDisable: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - statusBarKernelInfo: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - debug: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - autoScroll: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - centerOnMoveDown: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - wrapOutput: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - outputAreaDefault: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - outputAreaDock: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - outputAreaFontSize: { - title: string; - includeTitle: boolean; - description: string; - type: string; - minimum: number; - default: number; - order: number; - }; - globalMode: { - title: string; - description: string; - type: string; - default: boolean; - order: number; - }; - kernelNotifications: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: boolean; - order: number; - }; - startDir: { - title: string; - includeTitle: boolean; - description: string; - type: string; - enum: { - value: string; - description: string; - }[]; - default: string; - order: number; - }; - languageMappings: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: string; - order: number; - }; - startupCode: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: string; - order: number; - }; - gateways: { - title: string; - includeTitle: boolean; - description: string; - type: string; - default: string; - order: number; - }; -}; -export declare function activate(): void; -export declare function deactivate(): void; -export declare function provideHydrogen(): HydrogenProvider; -export declare function provideAutocompleteResults(): import("atom/autocomplete-plus").AutocompleteProvider; -export declare function consumeAutocompleteWatchEditor(watchEditor: (...args: Array) => any): Disposable; -export declare function consumeStatusBar(statusBar: StatusBar): Disposable; diff --git a/dist/main.js b/dist/main.js index 787861906..ab56627f7 100644 --- a/dist/main.js +++ b/dist/main.js @@ -24,7 +24,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.consumeStatusBar = exports.consumeAutocompleteWatchEditor = exports.provideAutocompleteResults = exports.provideHydrogen = exports.deactivate = exports.activate = exports.config = void 0; const atom_1 = require("atom"); -const lodash_1 = __importDefault(require("lodash")); +const debounce_1 = __importDefault(require("lodash/debounce")); const mobx_1 = require("mobx"); const inspector_1 = __importDefault(require("./panes/inspector")); const watches_1 = __importDefault(require("./panes/watches")); @@ -39,7 +39,7 @@ const ws_kernel_picker_1 = __importDefault(require("./ws-kernel-picker")); const existing_kernel_picker_1 = __importDefault(require("./existing-kernel-picker")); const hydrogen_provider_1 = __importDefault(require("./plugin-api/hydrogen-provider")); const store_1 = __importDefault(require("./store")); -const kernel_manager_1 = __importDefault(require("./kernel-manager")); +const kernel_manager_1 = require("./kernel-manager"); const services_1 = __importDefault(require("./services")); const commands = __importStar(require("./commands")); const codeManager = __importStar(require("./code-manager")); @@ -53,6 +53,7 @@ let kernelPicker; let existingKernelPicker; let wsKernelPicker; let hydrogenProvider; +const kernelManager = new kernel_manager_1.KernelManager(); function activate() { emitter = new atom_1.Emitter(); let skipLanguageMappingsChange = false; @@ -108,7 +109,7 @@ function activate() { } }, "hydrogen:update-kernels": async () => { - await kernel_manager_1.default.updateKernelSpecs(); + await kernelManager.updateKernelSpecs(); }, "hydrogen:toggle-inspector": () => commands.toggleInspector(store_1.default), "hydrogen:interrupt-kernel": () => handleKernelCommand({ @@ -143,7 +144,7 @@ function activate() { store_1.default.setGrammar(editor); })); if (utils_1.isMultilanguageGrammar(editor.getGrammar())) { - editorSubscriptions.add(editor.onDidChangeCursorPosition(lodash_1.default.debounce(() => { + editorSubscriptions.add(editor.onDidChangeCursorPosition(debounce_1.default(() => { store_1.default.setGrammar(editor); }, 75))); } @@ -267,7 +268,7 @@ function run(moveDown = false) { const code = cellType === "markdown" ? codeManager.removeCommentsMarkdownCell(editor, codeNullable) : codeNullable; - if (moveDown === true) { + if (moveDown) { codeManager.moveDown(editor, row); } checkForKernel(store_1.default, (kernel) => { @@ -291,7 +292,7 @@ function runAll(breakpoints) { _runAll(editor, kernel, breakpoints); return; } - kernel_manager_1.default.startKernelFor(grammar, editor, filePath, (kernel) => { + kernelManager.startKernelFor(grammar, editor, filePath, (kernel) => { _runAll(editor, kernel, breakpoints); }); } @@ -330,7 +331,7 @@ function runAllAbove() { _runAllAbove(editor, kernel); return; } - kernel_manager_1.default.startKernelFor(grammar, editor, filePath, (kernel) => { + kernelManager.startKernelFor(grammar, editor, filePath, (kernel) => { _runAllAbove(editor, kernel); }); } @@ -378,7 +379,7 @@ function runCell(moveDown = false) { const code = cellType === "markdown" ? codeManager.removeCommentsMarkdownCell(editor, codeNullable) : codeNullable; - if (moveDown === true) { + if (moveDown) { codeManager.moveDown(editor, row); } checkForKernel(store_1.default, (kernel) => { @@ -404,7 +405,7 @@ function foldAllButCurrentCell() { codeManager.foldAllButCurrentCell(editor); } function startZMQKernel() { - kernel_manager_1.default + kernelManager .getAllKernelSpecsForGrammar(store_1.default.grammar) .then((kernelSpecs) => { if (kernelPicker) { @@ -418,7 +419,7 @@ function startZMQKernel() { return; } markers.clear(); - kernel_manager_1.default.startKernel(kernelSpec, grammar, editor, filePath); + kernelManager.startKernel(kernelSpec, grammar, editor, filePath); }; } kernelPicker.toggle(); @@ -449,6 +450,6 @@ function checkForKernel({ editor, grammar, filePath, kernel, }, callback) { callback(kernel); return; } - kernel_manager_1.default.startKernelFor(grammar, editor, filePath, (newKernel) => callback(newKernel)); + kernelManager.startKernelFor(grammar, editor, filePath, (newKernel) => callback(newKernel)); } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFPYztBQUVkLG9EQUF1QjtBQUN2QiwrQkFBK0I7QUFFL0Isa0VBQThDO0FBQzlDLDhEQUEwQztBQUMxQyxzRUFBNkM7QUFDN0MsNEVBQXVEO0FBQ3ZELHNEQUE4QjtBQUM5Qiw4REFBcUM7QUFDckMsNERBQW1DO0FBQ25DLHNEQUE4QjtBQUM5QixvRUFBMkM7QUFDM0MsMEVBQWdEO0FBQ2hELHNGQUE0RDtBQUM1RCx1RkFBOEQ7QUFDOUQsb0RBQWtEO0FBQ2xELHNFQUE2QztBQUM3QywwREFBa0M7QUFDbEMscURBQXVDO0FBQ3ZDLDREQUE4QztBQUM5QyxpREFBbUM7QUFFbkMsbUNBV2lCO0FBQ2pCLHVEQUFtRDtBQUNuRCx1REFBZ0U7QUFHbkQsUUFBQSxNQUFNLEdBQUcsZ0JBQU0sQ0FBQyxNQUFNLENBQUM7QUFDcEMsSUFBSSxPQUFpRSxDQUFDO0FBQ3RFLElBQUksWUFBc0MsQ0FBQztBQUMzQyxJQUFJLG9CQUFzRCxDQUFDO0FBQzNELElBQUksY0FBMEMsQ0FBQztBQUMvQyxJQUFJLGdCQUE4QyxDQUFDO0FBRW5ELFNBQWdCLFFBQVE7SUFDdEIsT0FBTyxHQUFHLElBQUksY0FBTyxFQUFFLENBQUM7SUFDeEIsSUFBSSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7SUFDdkMsZUFBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUNyQiwyQkFBMkIsRUFDM0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBQ3pCLElBQUksMEJBQTBCLEVBQUU7WUFDOUIsMEJBQTBCLEdBQUcsS0FBSyxDQUFDO1lBQ25DLE9BQU87U0FDUjtRQUVELElBQUksZUFBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUks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Q0osQ0FBQztBQUdELFNBQVMsY0FBYyxDQUNyQixFQUNFLE1BQU0sRUFDTixPQUFPLEVBQ1AsUUFBUSxFQUNSLE1BQU0sR0FNUCxFQUNELFFBQWtDO0lBRWxDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDekIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FDaEMsOEdBQThHLENBQy9HLENBQUM7S0FDSDtJQUVELElBQUksTUFBTSxFQUFFO1FBQ1YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pCLE9BQU87S0FDUjtJQUVELHdCQUFhLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQzVFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FDcEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbWl0dGVyLFxuICBDb21wb3NpdGVEaXNwb3NhYmxlLFxuICBEaXNwb3NhYmxlLFxuICBQb2ludCxcbiAgVGV4dEVkaXRvcixcbiAgR3JhbW1hcixcbn0gZnJvbSBcImF0b21cIjtcbmltcG9ydCB7IFN0YXR1c0JhciB9IGZyb20gXCJhdG9tL3N0YXR1cy1iYXJcIjtcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IGF1dG9ydW4gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEluc3BlY3RvclBhbmUgZnJvbSBcIi4vcGFuZXMvaW5zcGVjdG9yXCI7XG5pbXBvcnQgV2F0Y2hlc1BhbmUgZnJvbSBcIi4vcGFuZXMvd2F0Y2hlc1wiO1xuaW1wb3J0IE91dHB1dFBhbmUgZnJvbSBcIi4vcGFuZXMvb3V0cHV0LWFyZWFcIjtcbmltcG9ydCBLZXJuZWxNb25pdG9yUGFuZSBmcm9tIFwiLi9wYW5lcy9rZXJuZWwtbW9uaXRvclwiO1xuaW1wb3J0IENvbmZpZyBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCBaTVFLZXJuZWwgZnJvbSBcIi4vem1xLWtlcm5lbFwiO1xuaW1wb3J0IFdTS2VybmVsIGZyb20gXCIuL3dzLWtlcm5lbFwiO1xuaW1wb3J0IEtlcm5lbCBmcm9tIFwiLi9rZXJuZWxcIjtcbmltcG9ydCBLZXJuZWxQaWNrZXIgZnJvbSBcIi4va2VybmVsLXBpY2tlclwiO1xuaW1wb3J0IFdTS2VybmVsUGlja2VyIGZyb20gXCIuL3dzLWtlcm5lbC1waWNrZXJcIjtcbmltcG9ydCBFeGlzdGluZ0tlcm5lbFBpY2tlciBmcm9tIFwiLi9leGlzdGluZy1rZXJuZWwtcGlja2VyXCI7XG5pbXBvcnQgSHlkcm9nZW5Qcm92aWRlciBmcm9tIFwiLi9wbHVnaW4tYXBpL2h5ZHJvZ2VuLXByb3ZpZGVyXCI7XG5pbXBvcnQgc3RvcmUsIHsgU3RvcmUsIFN0b3JlTGlrZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQga2VybmVsTWFuYWdlciBmcm9tIFwiLi9rZXJuZWwtbWFuYWdlclwiO1xuaW1wb3J0IHNlcnZpY2VzIGZyb20gXCIuL3NlcnZpY2VzXCI7XG5pbXBvcnQgKiBhcyBjb21tYW5kcyBmcm9tIFwiLi9jb21tYW5kc1wiO1xuaW1wb3J0ICogYXMgY29kZU1hbmFnZXIgZnJvbSBcIi4vY29kZS1tYW5hZ2VyXCI7XG5pbXBvcnQgKiBhcyByZXN1bHQgZnJvbSBcIi4vcmVzdWx0XCI7XG5pbXBvcnQgdHlwZSBNYXJrZXJTdG9yZSBmcm9tIFwiLi9zdG9yZS9tYXJrZXJzXCI7XG5pbXBvcnQge1xuICBsb2csXG4gIHJlYWN0RmFjdG9yeSxcbiAgaXNNdWx0aWxhbmd1YWdlR3JhbW1hcixcbiAgSU5TUEVDVE9SX1VSSSxcbiAgV0FUQ0hFU19VUkksXG4gIE9VVFBVVF9BUkVBX1VSSSxcbiAgS0VSTkVMX01PTklUT1JfVVJJLFxuICBob3RSZWxvYWRQYWNrYWdlLFxuICBvcGVuT3JTaG93RG9jayxcbiAga2VybmVsU3BlY1Byb3ZpZGVzR3JhbW1hcixcbn0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IGV4cG9ydE5vdGVib29rIH0gZnJvbSBcIi4vZXhwb3J0LW5vdGVib29rXCI7XG5pbXBvcnQgeyBpbXBvcnROb3RlYm9vaywgaXB5bmJPcGVuZXIgfSBmcm9tIFwiLi9pbXBvcnQtbm90ZWJvb2tcIjtcbmltcG9ydCB0eXBlIHsgS2VybmVsc3BlY01ldGFkYXRhIH0gZnJvbSBcIkBudGVyYWN0L3R5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSBDb25maWcuc2NoZW1hO1xubGV0IGVtaXR0ZXI6IEVtaXR0ZXI8e30sIHsgXCJkaWQtY2hhbmdlLWtlcm5lbFwiOiBLZXJuZWwgfT4gfCB1bmRlZmluZWQ7XG5sZXQga2VybmVsUGlja2VyOiBLZXJuZWxQaWNrZXIgfCB1bmRlZmluZWQ7XG5sZXQgZXhpc3RpbmdLZXJuZWxQaWNrZXI6IEV4aXN0aW5nS2VybmVsUGlja2VyIHwgdW5kZWZpbmVkO1xubGV0IHdzS2VybmVsUGlja2VyOiBXU0tlcm5lbFBpY2tlciB8IHVuZGVmaW5lZDtcbmxldCBoeWRyb2dlblByb3ZpZGVyOiBIeWRyb2dlblByb3ZpZGVyIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZhdGUoKSB7XG4gIGVtaXR0ZXIgPSBuZXcgRW1pdHRlcigpO1xuICBsZXQgc2tpcExhbmd1YWdlTWFwcGluZ3NDaGFuZ2UgPSBmYWxzZTtcbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgYXRvbS5jb25maWcub25EaWRDaGFuZ2UoXG4gICAgICBcIkh5ZHJvZ2VuLmxhbmd1YWdlTWFwcGluZ3NcIixcbiAgICAgICh7IG5ld1ZhbHVlLCBvbGRWYWx1ZSB9KSA9PiB7XG4gICAgICAgIGlmIChza2lwTGFuZ3VhZ2VNYXBwaW5nc0NoYW5nZSkge1xuICAgICAgICAgIHNraXBMYW5ndWFnZU1hcHBpbmdzQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0b3JlLnJ1bm5pbmdLZXJuZWxzLmxlbmd0aCAhPSAwKSB7XG4gICAgICAgICAgc2tpcExhbmd1YWdlTWFwcGluZ3NDaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgIGF0b20uY29uZmlnLnNldChcIkh5ZHJvZ2VuLmxhbmd1YWdlTWFwcGluZ3NcIiwgb2xkVmFsdWUpO1xuICAgICAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIkh5ZHJvZ2VuXCIsIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImBsYW5ndWFnZU1hcHBpbmdzYCBjYW5ub3QgYmUgdXBkYXRlZCB3aGlsZSBrZXJuZWxzIGFyZSBydW5uaW5nXCIsXG4gICAgICAgICAgICBkaXNtaXNzYWJsZTogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gICk7XG4gIHN0b3JlLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgIGF0b20uY29uZmlnLm9ic2VydmUoXCJIeWRyb2dlbi5zdGF0dXNCYXJEaXNhYmxlXCIsIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgc3RvcmUuc2V0Q29uZmlnVmFsdWUoXCJIeWRyb2dlbi5zdGF0dXNCYXJEaXNhYmxlXCIsIEJvb2xlYW4obmV3VmFsdWUpKTtcbiAgICB9KSxcbiAgICBhdG9tLmNvbmZpZy5vYnNlcnZlKFwiSHlkcm9nZW4uc3RhdHVzQmFyS2VybmVsSW5mb1wiLCAobmV3VmFsdWUpID0+IHtcbiAgICAgIHN0b3JlLnNldENvbmZpZ1ZhbHVlKFwiSHlkcm9nZW4uc3RhdHVzQmFyS2VybmVsSW5mb1wiLCBCb29sZWFuKG5ld1ZhbHVlKSk7XG4gICAgfSlcbiAgKTtcbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgYXRvbS5jb21tYW5kcy5hZGQ8XCJhdG9tLXRleHQtZWRpdG9yOm5vdChbbWluaV0pXCI+KFxuICAgICAgXCJhdG9tLXRleHQtZWRpdG9yOm5vdChbbWluaV0pXCIsXG4gICAgICB7XG4gICAgICAgIFwiaHlkcm9nZW46cnVuXCI6ICgpID0+IHJ1bigpLFxuICAgICAgICBcImh5ZHJvZ2VuOnJ1bi1hbGxcIjogKCkgPT4gcnVuQWxsKCksXG4gICAgICAgIFwiaHlkcm9nZW46cnVuLWFsbC1hYm92ZVwiOiAoKSA9PiBydW5BbGxBYm92ZSgpLFxuICAgICAgICBcImh5ZHJvZ2VuOnJ1bi1hbmQtbW92ZS1kb3duXCI6ICgpID0+IHJ1bih0cnVlKSxcbiAgICAgICAgXCJoeWRyb2dlbjpydW4tY2VsbFwiOiAoKSA9PiBydW5DZWxsKCksXG4gICAgICAgIFwiaHlkcm9nZW46cnVuLWNlbGwtYW5kLW1vdmUtZG93blwiOiAoKSA9PiBydW5DZWxsKHRydWUpLFxuICAgICAgICBcImh5ZHJvZ2VuOnRvZ2dsZS13YXRjaGVzXCI6ICgpID0+IGF0b20ud29ya3NwYWNlLnRvZ2dsZShXQVRDSEVTX1VSSSksXG4gICAgICAgIFwiaHlkcm9nZW46dG9nZ2xlLW91dHB1dC1hcmVhXCI6ICgpID0+IGNvbW1hbmRzLnRvZ2dsZU91dHB1dE1vZGUoKSxcbiAgICAgICAgXCJoeWRyb2dlbjp0b2dnbGUta2VybmVsLW1vbml0b3JcIjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxhc3RJdGVtID0gYXRvbS53b3Jrc3BhY2UuZ2V0QWN0aXZlUGFuZUl0ZW0oKTtcbiAgICAgICAgICBjb25zdCBsYXN0UGFuZSA9IGF0b20ud29ya3NwYWNlLnBhbmVGb3JJdGVtKGxhc3RJdGVtKTtcbiAgICAgICAgICBhd2FpdCBhdG9tLndvcmtzcGFjZS50b2dnbGUoS0VSTkVMX01PTklUT1JfVVJJKTtcbiAgICAgICAgICBpZiAobGFzdFBhbmUpIHtcbiAgICAgICAgICAgIGxhc3RQYW5lLmFjdGl2YXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImh5ZHJvZ2VuOnN0YXJ0LWxvY2FsLWtlcm5lbFwiOiAoKSA9PiBzdGFydFpNUUtlcm5lbCgpLFxuICAgICAgICBcImh5ZHJvZ2VuOmNvbm5lY3QtdG8tcmVtb3RlLWtlcm5lbFwiOiAoKSA9PiBjb25uZWN0VG9XU0tlcm5lbCgpLFxuICAgICAgICBcImh5ZHJvZ2VuOmNvbm5lY3QtdG8tZXhpc3Rpbmcta2VybmVsXCI6ICgpID0+IGNvbm5lY3RUb0V4aXN0aW5nS2VybmVsKCksXG4gICAgICAgIFwiaHlkcm9nZW46YWRkLXdhdGNoXCI6ICgpID0+IHtcbiAgICAgICAgICBpZiAoc3RvcmUua2VybmVsKSB7XG4gICAgICAgICAgICBzdG9yZS5rZXJuZWwud2F0Y2hlc1N0b3JlLmFkZFdhdGNoRnJvbUVkaXRvcihzdG9yZS5lZGl0b3IpO1xuICAgICAgICAgICAgb3Blbk9yU2hvd0RvY2soV0FUQ0hFU19VUkkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJoeWRyb2dlbjpyZW1vdmUtd2F0Y2hcIjogKCkgPT4ge1xuICAgICAgICAgIGlmIChzdG9yZS5rZXJuZWwpIHtcbiAgICAgICAgICAgIHN0b3JlLmtlcm5lbC53YXRjaGVzU3RvcmUucmVtb3ZlV2F0Y2goKTtcbiAgICAgICAgICAgIG9wZW5PclNob3dEb2NrKFdBVENIRVNfVVJJKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaHlkcm9nZW46dXBkYXRlLWtlcm5lbHNcIjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGtlcm5lbE1hbmFnZXIudXBkYXRlS2VybmVsU3BlY3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJoeWRyb2dlbjp0b2dnbGUtaW5zcGVjdG9yXCI6ICgpID0+IGNvbW1hbmRzLnRvZ2dsZUluc3BlY3RvcihzdG9yZSksXG4gICAgICAgIFwiaHlkcm9nZW46aW50ZXJydXB0LWtlcm5lbFwiOiAoKSA9PlxuICAgICAgICAgIGhhbmRsZUtlcm5lbENvbW1hbmQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbW1hbmQ6IFwiaW50ZXJydXB0LWtlcm5lbFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0b3JlXG4gICAgICAgICAgKSxcbiAgICAgICAgXCJoeWRyb2dlbjpyZXN0YXJ0LWtlcm5lbFwiOiAoKSA9PlxuICAgICAgICAgIGhhbmRsZUtlcm5lbENvbW1hbmQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbW1hbmQ6IFwicmVzdGFydC1rZXJuZWxcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdG9yZVxuICAgICAgICAgICksXG4gICAgICAgIFwiaHlkcm9nZW46c2h1dGRvd24ta2VybmVsXCI6ICgpID0+XG4gICAgICAgICAgaGFuZGxlS2VybmVsQ29tbWFuZChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29tbWFuZDogXCJzaHV0ZG93bi1rZXJuZWxcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdG9yZVxuICAgICAgICAgICksXG4gICAgICAgIFwiaHlkcm9nZW46Y2xlYXItcmVzdWx0XCI6ICgpID0+IHJlc3VsdC5jbGVhclJlc3VsdChzdG9yZSksXG4gICAgICAgIFwiaHlkcm9nZW46ZXhwb3J0LW5vdGVib29rXCI6ICgpID0+IGV4cG9ydE5vdGVib29rKCksXG4gICAgICAgIFwiaHlkcm9nZW46Zm9sZC1jdXJyZW50LWNlbGxcIjogKCkgPT4gZm9sZEN1cnJlbnRDZWxsKCksXG4gICAgICAgIFwiaHlkcm9nZW46Zm9sZC1hbGwtYnV0LWN1cnJlbnQtY2VsbFwiOiAoKSA9PiBmb2xkQWxsQnV0Q3VycmVudENlbGwoKSxcbiAgICAgICAgXCJoeWRyb2dlbjpjbGVhci1yZXN1bHRzXCI6ICgpID0+IHJlc3VsdC5jbGVhclJlc3VsdHMoc3RvcmUpLFxuICAgICAgfVxuICAgIClcbiAgKTtcbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgYXRvbS5jb21tYW5kcy5hZGQoXCJhdG9tLXdvcmtzcGFjZVwiLCB7XG4gICAgICBcImh5ZHJvZ2VuOmltcG9ydC1ub3RlYm9va1wiOiBpbXBvcnROb3RlYm9vayxcbiAgICB9KVxuICApO1xuXG4gIGlmIChhdG9tLmluRGV2TW9kZSgpKSB7XG4gICAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBhdG9tLmNvbW1hbmRzLmFkZChcImF0b20td29ya3NwYWNlXCIsIHtcbiAgICAgICAgXCJoeWRyb2dlbjpob3QtcmVsb2FkLXBhY2thZ2VcIjogKCkgPT4gaG90UmVsb2FkUGFja2FnZSgpLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgYXRvbS53b3Jrc3BhY2Uub2JzZXJ2ZUFjdGl2ZVRleHRFZGl0b3IoKGVkaXRvcikgPT4ge1xuICAgICAgc3RvcmUudXBkYXRlRWRpdG9yKGVkaXRvcik7XG4gICAgfSlcbiAgKTtcbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgYXRvbS53b3Jrc3BhY2Uub2JzZXJ2ZVRleHRFZGl0b3JzKChlZGl0b3IpID0+IHtcbiAgICAgIGNvbnN0IGVkaXRvclN1YnNjcmlwdGlvbnMgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpO1xuICAgICAgZWRpdG9yU3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIGVkaXRvci5vbkRpZENoYW5nZUdyYW1tYXIoKCkgPT4ge1xuICAgICAgICAgIHN0b3JlLnNldEdyYW1tYXIoZWRpdG9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc011bHRpbGFuZ3VhZ2VHcmFtbWFyKGVkaXRvci5nZXRHcmFtbWFyKCkpKSB7XG4gICAgICAgIGVkaXRvclN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgIGVkaXRvci5vbkRpZENoYW5nZUN1cnNvclBvc2l0aW9uKFxuICAgICAgICAgICAgXy5kZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHN0b3JlLnNldEdyYW1tYXIoZWRpdG9yKTtcbiAgICAgICAgICAgIH0sIDc1KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgZWRpdG9yU3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgIGVkaXRvci5vbkRpZERlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgIGVkaXRvclN1YnNjcmlwdGlvbnMuZGlzcG9zZSgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIGVkaXRvclN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICBlZGl0b3Iub25EaWRDaGFuZ2VUaXRsZSgobmV3VGl0bGUpID0+IHN0b3JlLmZvcmNlRWRpdG9yVXBkYXRlKCkpXG4gICAgICApO1xuICAgICAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoZWRpdG9yU3Vic2NyaXB0aW9ucyk7XG4gICAgfSlcbiAgKTtcbiAgaHlkcm9nZW5Qcm92aWRlciA9IG51bGw7XG4gIHN0b3JlLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgIGF0b20ud29ya3NwYWNlLmFkZE9wZW5lcigodXJpKSA9PiB7XG4gICAgICBzd2l0Y2ggKHVyaSkge1xuICAgICAgICBjYXNlIElOU1BFQ1RPUl9VUkk6XG4gICAgICAgICAgcmV0dXJuIG5ldyBJbnNwZWN0b3JQYW5lKHN0b3JlKTtcblxuICAgICAgICBjYXNlIFdBVENIRVNfVVJJOlxuICAgICAgICAgIHJldHVybiBuZXcgV2F0Y2hlc1BhbmUoc3RvcmUpO1xuXG4gICAgICAgIGNhc2UgT1VUUFVUX0FSRUFfVVJJOlxuICAgICAgICAgIHJldHVybiBuZXcgT3V0cHV0UGFuZShzdG9yZSk7XG5cbiAgICAgICAgY2FzZSBLRVJORUxfTU9OSVRPUl9VUkk6XG4gICAgICAgICAgcmV0dXJuIG5ldyBLZXJuZWxNb25pdG9yUGFuZShzdG9yZSk7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChhdG9tLndvcmtzcGFjZS5hZGRPcGVuZXIoaXB5bmJPcGVuZXIpKTtcbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgLy8gRGVzdHJveSBhbnkgUGFuZXMgd2hlbiB0aGUgcGFja2FnZSBpcyBkZWFjdGl2YXRlZC5cbiAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBhdG9tLndvcmtzcGFjZS5nZXRQYW5lSXRlbXMoKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpdGVtIGluc3RhbmNlb2YgSW5zcGVjdG9yUGFuZSB8fFxuICAgICAgICAgIGl0ZW0gaW5zdGFuY2VvZiBXYXRjaGVzUGFuZSB8fFxuICAgICAgICAgIGl0ZW0gaW5zdGFuY2VvZiBPdXRwdXRQYW5lIHx8XG4gICAgICAgICAgaXRlbSBpbnN0YW5jZW9mIEtlcm5lbE1vbml0b3JQYW5lXG4gICAgICAgICkge1xuICAgICAgICAgIGl0ZW0uZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVxuICApO1xuICBhdXRvcnVuKCgpID0+IHtcbiAgICBlbWl0dGVyLmVtaXQoXCJkaWQtY2hhbmdlLWtlcm5lbFwiLCBzdG9yZS5rZXJuZWwpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlYWN0aXZhdGUoKSB7XG4gIHN0b3JlLmRpc3Bvc2UoKTtcbn1cblxuLyotLS0tLS0tLS0tLS0tLSBTZXJ2aWNlIFByb3ZpZGVycyAtLS0tLS0tLS0tLS0tLSovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUh5ZHJvZ2VuKCkge1xuICBpZiAoIWh5ZHJvZ2VuUHJvdmlkZXIpIHtcbiAgICBoeWRyb2dlblByb3ZpZGVyID0gbmV3IEh5ZHJvZ2VuUHJvdmlkZXIoZW1pdHRlcik7XG4gIH1cblxuICByZXR1cm4gaHlkcm9nZW5Qcm92aWRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBdXRvY29tcGxldGVSZXN1bHRzKCkge1xuICByZXR1cm4gc2VydmljZXMucHJvdmlkZWQuYXV0b2NvbXBsZXRlLnByb3ZpZGVBdXRvY29tcGxldGVSZXN1bHRzKHN0b3JlKTtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qLS0tLS0tLS0tLS0tLS0gU2VydmljZSBDb25zdW1lcnMgLS0tLS0tLS0tLS0tLS0qL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN1bWVBdXRvY29tcGxldGVXYXRjaEVkaXRvcihcbiAgd2F0Y2hFZGl0b3I6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnlcbikge1xuICByZXR1cm4gc2VydmljZXMuY29uc3VtZWQuYXV0b2NvbXBsZXRlLmNvbnN1bWUoc3RvcmUsIHdhdGNoRWRpdG9yKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN1bWVTdGF0dXNCYXIoc3RhdHVzQmFyOiBTdGF0dXNCYXIpIHtcbiAgcmV0dXJuIHNlcnZpY2VzLmNvbnN1bWVkLnN0YXR1c0Jhci5hZGRTdGF0dXNCYXIoXG4gICAgc3RvcmUsXG4gICAgc3RhdHVzQmFyLFxuICAgIGhhbmRsZUtlcm5lbENvbW1hbmRcbiAgKTtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5mdW5jdGlvbiBjb25uZWN0VG9FeGlzdGluZ0tlcm5lbCgpIHtcbiAgaWYgKCFleGlzdGluZ0tlcm5lbFBpY2tlcikge1xuICAgIGV4aXN0aW5nS2VybmVsUGlja2VyID0gbmV3IEV4aXN0aW5nS2VybmVsUGlja2VyKCk7XG4gIH1cblxuICBleGlzdGluZ0tlcm5lbFBpY2tlci50b2dnbGUoKTtcbn1cblxuaW50ZXJmYWNlIEtlcm5lbENvbW1hbmQge1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIHBheWxvYWQ/OiBLZXJuZWxzcGVjTWV0YWRhdGEgfCBudWxsIHwgdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVLZXJuZWxDb21tYW5kKFxuICB7IGNvbW1hbmQsIHBheWxvYWQgfTogS2VybmVsQ29tbWFuZCwgLy8gVE9ETyBwYXlsb2FkIGlzIG5vdCB1c2VkIVxuICB7IGtlcm5lbCwgbWFya2VycyB9OiBTdG9yZSB8IFN0b3JlTGlrZVxuKSB7XG4gIGxvZyhcImhhbmRsZUtlcm5lbENvbW1hbmQ6XCIsIFtcbiAgICB7IGNvbW1hbmQsIHBheWxvYWQgfSxcbiAgICB7IGtlcm5lbCwgbWFya2VycyB9LFxuICBdKTtcblxuICBpZiAoIWtlcm5lbCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBcIk5vIHJ1bm5pbmcga2VybmVsIGZvciBncmFtbWFyIG9yIGVkaXRvciBmb3VuZFwiO1xuICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihtZXNzYWdlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoY29tbWFuZCA9PT0gXCJpbnRlcnJ1cHQta2VybmVsXCIpIHtcbiAgICBrZXJuZWwuaW50ZXJydXB0KCk7XG4gIH0gZWxzZSBpZiAoY29tbWFuZCA9PT0gXCJyZXN0YXJ0LWtlcm5lbFwiKSB7XG4gICAga2VybmVsLnJlc3RhcnQoKTtcbiAgfSBlbHNlIGlmIChjb21tYW5kID09PSBcInNodXRkb3duLWtlcm5lbFwiKSB7XG4gICAgaWYgKG1hcmtlcnMpIHtcbiAgICAgIG1hcmtlcnMuY2xlYXIoKTtcbiAgICB9XG4gICAgLy8gTm90ZSB0aGF0IGRlc3Ryb3kgYWxvbmUgZG9lcyBub3Qgc2h1dCBkb3duIGEgV1NLZXJuZWxcbiAgICBrZXJuZWwuc2h1dGRvd24oKTtcbiAgICBrZXJuZWwuZGVzdHJveSgpO1xuICB9IGVsc2UgaWYgKFxuICAgIGNvbW1hbmQgPT09IFwicmVuYW1lLWtlcm5lbFwiICYmXG4gICAga2VybmVsLnRyYW5zcG9ydCBpbnN0YW5jZW9mIFdTS2VybmVsXG4gICkge1xuICAgIGtlcm5lbC50cmFuc3BvcnQucHJvbXB0UmVuYW1lKCk7XG4gIH0gZWxzZSBpZiAoY29tbWFuZCA9PT0gXCJkaXNjb25uZWN0LWtlcm5lbFwiKSB7XG4gICAgaWYgKG1hcmtlcnMpIHtcbiAgICAgIG1hcmtlcnMuY2xlYXIoKTtcbiAgICB9XG4gICAga2VybmVsLmRlc3Ryb3koKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBydW4obW92ZURvd246IGJvb2xlYW4gPSBmYWxzZSkge1xuICBjb25zdCBlZGl0b3IgPSBzdG9yZS5lZGl0b3I7XG4gIGlmICghZWRpdG9yKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9udGVyYWN0L2h5ZHJvZ2VuL2lzc3Vlcy8xNDUyXG4gIGF0b20uY29tbWFuZHMuZGlzcGF0Y2goZWRpdG9yLmVsZW1lbnQsIFwiYXV0b2NvbXBsZXRlLXBsdXM6Y2FuY2VsXCIpO1xuICBjb25zdCBjb2RlQmxvY2sgPSBjb2RlTWFuYWdlci5maW5kQ29kZUJsb2NrKGVkaXRvcik7XG5cbiAgaWYgKCFjb2RlQmxvY2spIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb2RlTnVsbGFibGUgPSBjb2RlQmxvY2suY29kZTtcbiAgaWYgKGNvZGVOdWxsYWJsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB7IHJvdyB9ID0gY29kZUJsb2NrO1xuICBjb25zdCBjZWxsVHlwZSA9IGNvZGVNYW5hZ2VyLmdldE1ldGFkYXRhRm9yUm93KGVkaXRvciwgbmV3IFBvaW50KHJvdywgMCkpO1xuICBjb25zdCBjb2RlID1cbiAgICBjZWxsVHlwZSA9PT0gXCJtYXJrZG93blwiXG4gICAgICA/IGNvZGVNYW5hZ2VyLnJlbW92ZUNvbW1lbnRzTWFya2Rvd25DZWxsKGVkaXRvciwgY29kZU51bGxhYmxlKVxuICAgICAgOiBjb2RlTnVsbGFibGU7XG5cbiAgaWYgKG1vdmVEb3duID09PSB0cnVlKSB7XG4gICAgY29kZU1hbmFnZXIubW92ZURvd24oZWRpdG9yLCByb3cpO1xuICB9XG5cbiAgY2hlY2tGb3JLZXJuZWwoc3RvcmUsIChrZXJuZWwpID0+IHtcbiAgICByZXN1bHQuY3JlYXRlUmVzdWx0KHN0b3JlLCB7XG4gICAgICBjb2RlLFxuICAgICAgcm93LFxuICAgICAgY2VsbFR5cGUsXG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBydW5BbGwoYnJlYWtwb2ludHM/OiBBcnJheTxQb2ludD4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IHsgZWRpdG9yLCBrZXJuZWwsIGdyYW1tYXIsIGZpbGVQYXRoIH0gPSBzdG9yZTtcbiAgaWYgKCFlZGl0b3IgfHwgIWdyYW1tYXIgfHwgIWZpbGVQYXRoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGlzTXVsdGlsYW5ndWFnZUdyYW1tYXIoZWRpdG9yLmdldEdyYW1tYXIoKSkpIHtcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXG4gICAgICAnXCJSdW4gQWxsXCIgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBmaWxlIHR5cGUhJ1xuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGVkaXRvciAmJiBrZXJuZWwpIHtcbiAgICBfcnVuQWxsKGVkaXRvciwga2VybmVsLCBicmVha3BvaW50cyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBrZXJuZWxNYW5hZ2VyLnN0YXJ0S2VybmVsRm9yKGdyYW1tYXIsIGVkaXRvciwgZmlsZVBhdGgsIChrZXJuZWw6IEtlcm5lbCkgPT4ge1xuICAgIF9ydW5BbGwoZWRpdG9yLCBrZXJuZWwsIGJyZWFrcG9pbnRzKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIF9ydW5BbGwoXG4gIGVkaXRvcjogVGV4dEVkaXRvcixcbiAga2VybmVsOiBLZXJuZWwsXG4gIGJyZWFrcG9pbnRzPzogQXJyYXk8UG9pbnQ+XG4pIHtcbiAgY29uc3QgY2VsbHMgPSBjb2RlTWFuYWdlci5nZXRDZWxscyhlZGl0b3IsIGJyZWFrcG9pbnRzKTtcblxuICBmb3IgKGNvbnN0IGNlbGwgb2YgY2VsbHMpIHtcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGNlbGw7XG4gICAgY29uc3QgY29kZU51bGxhYmxlID0gY29kZU1hbmFnZXIuZ2V0VGV4dEluUmFuZ2UoZWRpdG9yLCBzdGFydCwgZW5kKTtcbiAgICBpZiAoY29kZU51bGxhYmxlID09PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qgcm93ID0gY29kZU1hbmFnZXIuZXNjYXBlQmxhbmtSb3dzKFxuICAgICAgZWRpdG9yLFxuICAgICAgc3RhcnQucm93LFxuICAgICAgY29kZU1hbmFnZXIuZ2V0RXNjYXBlQmxhbmtSb3dzRW5kUm93KGVkaXRvciwgZW5kKVxuICAgICk7XG4gICAgY29uc3QgY2VsbFR5cGUgPSBjb2RlTWFuYWdlci5nZXRNZXRhZGF0YUZvclJvdyhlZGl0b3IsIHN0YXJ0KTtcbiAgICBjb25zdCBjb2RlID1cbiAgICAgIGNlbGxUeXBlID09PSBcIm1hcmtkb3duXCJcbiAgICAgICAgPyBjb2RlTWFuYWdlci5yZW1vdmVDb21tZW50c01hcmtkb3duQ2VsbChlZGl0b3IsIGNvZGVOdWxsYWJsZSlcbiAgICAgICAgOiBjb2RlTnVsbGFibGU7XG4gICAgY2hlY2tGb3JLZXJuZWwoc3RvcmUsIChrZXJuZWwpID0+IHtcbiAgICAgIHJlc3VsdC5jcmVhdGVSZXN1bHQoc3RvcmUsIHtcbiAgICAgICAgY29kZSxcbiAgICAgICAgcm93LFxuICAgICAgICBjZWxsVHlwZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJ1bkFsbEFib3ZlKCkge1xuICBjb25zdCB7IGVkaXRvciwga2VybmVsLCBncmFtbWFyLCBmaWxlUGF0aCB9ID0gc3RvcmU7XG4gIGlmICghZWRpdG9yIHx8ICFncmFtbWFyIHx8ICFmaWxlUGF0aCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpc011bHRpbGFuZ3VhZ2VHcmFtbWFyKGVkaXRvci5nZXRHcmFtbWFyKCkpKSB7XG4gICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFxuICAgICAgJ1wiUnVuIEFsbCBBYm92ZVwiIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgZmlsZSB0eXBlISdcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChlZGl0b3IgJiYga2VybmVsKSB7XG4gICAgX3J1bkFsbEFib3ZlKGVkaXRvciwga2VybmVsKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGtlcm5lbE1hbmFnZXIuc3RhcnRLZXJuZWxGb3IoZ3JhbW1hciwgZWRpdG9yLCBmaWxlUGF0aCwgKGtlcm5lbDogS2VybmVsKSA9PiB7XG4gICAgX3J1bkFsbEFib3ZlKGVkaXRvciwga2VybmVsKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIF9ydW5BbGxBYm92ZShlZGl0b3I6IFRleHRFZGl0b3IsIGtlcm5lbDogS2VybmVsKSB7XG4gIGNvbnN0IGN1cnNvciA9IGVkaXRvci5nZXRDdXJzb3JCdWZmZXJQb3NpdGlvbigpO1xuICBjdXJzb3IuY29sdW1uID0gZWRpdG9yLmdldEJ1ZmZlcigpLmxpbmVMZW5ndGhGb3JSb3coY3Vyc29yLnJvdyk7XG4gIGNvbnN0IGJyZWFrcG9pbnRzID0gY29kZU1hbmFnZXIuZ2V0QnJlYWtwb2ludHMoZWRpdG9yKTtcbiAgYnJlYWtwb2ludHMucHVzaChjdXJzb3IpO1xuICBjb25zdCBjZWxscyA9IGNvZGVNYW5hZ2VyLmdldENlbGxzKGVkaXRvciwgYnJlYWtwb2ludHMpO1xuXG4gIGZvciAoY29uc3QgY2VsbCBvZiBjZWxscykge1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gY2VsbDtcbiAgICBjb25zdCBjb2RlTnVsbGFibGUgPSBjb2RlTWFuYWdlci5nZXRUZXh0SW5SYW5nZShlZGl0b3IsIHN0YXJ0LCBlbmQpO1xuICAgIGNvbnN0IHJvdyA9IGNvZGVNYW5hZ2VyLmVzY2FwZUJsYW5rUm93cyhcbiAgICAgIGVkaXRvcixcbiAgICAgIHN0YXJ0LnJvdyxcbiAgICAgIGNvZGVNYW5hZ2VyLmdldEVzY2FwZUJsYW5rUm93c0VuZFJvdyhlZGl0b3IsIGVuZClcbiAgICApO1xuICAgIGNvbnN0IGNlbGxUeXBlID0gY29kZU1hbmFnZXIuZ2V0TWV0YWRhdGFGb3JSb3coZWRpdG9yLCBzdGFydCk7XG5cbiAgICBpZiAoY29kZU51bGxhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjb2RlID1cbiAgICAgICAgY2VsbFR5cGUgPT09IFwibWFya2Rvd25cIlxuICAgICAgICAgID8gY29kZU1hbmFnZXIucmVtb3ZlQ29tbWVudHNNYXJrZG93bkNlbGwoZWRpdG9yLCBjb2RlTnVsbGFibGUpXG4gICAgICAgICAgOiBjb2RlTnVsbGFibGU7XG4gICAgICBjaGVja0Zvcktlcm5lbChzdG9yZSwgKGtlcm5lbCkgPT4ge1xuICAgICAgICByZXN1bHQuY3JlYXRlUmVzdWx0KHN0b3JlLCB7XG4gICAgICAgICAgY29kZSxcbiAgICAgICAgICByb3csXG4gICAgICAgICAgY2VsbFR5cGUsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNlbGwuY29udGFpbnNQb2ludChjdXJzb3IpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuQ2VsbChtb3ZlRG93bjogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIGNvbnN0IGVkaXRvciA9IHN0b3JlLmVkaXRvcjtcbiAgaWYgKCFlZGl0b3IpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL250ZXJhY3QvaHlkcm9nZW4vaXNzdWVzLzE0NTJcbiAgYXRvbS5jb21tYW5kcy5kaXNwYXRjaChlZGl0b3IuZWxlbWVudCwgXCJhdXRvY29tcGxldGUtcGx1czpjYW5jZWxcIik7XG4gIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gY29kZU1hbmFnZXIuZ2V0Q3VycmVudENlbGwoZWRpdG9yKTtcbiAgY29uc3QgY29kZU51bGxhYmxlID0gY29kZU1hbmFnZXIuZ2V0VGV4dEluUmFuZ2UoZWRpdG9yLCBzdGFydCwgZW5kKTtcbiAgaWYgKGNvZGVOdWxsYWJsZSA9PT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCByb3cgPSBjb2RlTWFuYWdlci5lc2NhcGVCbGFua1Jvd3MoXG4gICAgZWRpdG9yLFxuICAgIHN0YXJ0LnJvdyxcbiAgICBjb2RlTWFuYWdlci5nZXRFc2NhcGVCbGFua1Jvd3NFbmRSb3coZWRpdG9yLCBlbmQpXG4gICk7XG4gIGNvbnN0IGNlbGxUeXBlID0gY29kZU1hbmFnZXIuZ2V0TWV0YWRhdGFGb3JSb3coZWRpdG9yLCBzdGFydCk7XG4gIGNvbnN0IGNvZGUgPVxuICAgIGNlbGxUeXBlID09PSBcIm1hcmtkb3duXCJcbiAgICAgID8gY29kZU1hbmFnZXIucmVtb3ZlQ29tbWVudHNNYXJrZG93bkNlbGwoZWRpdG9yLCBjb2RlTnVsbGFibGUpXG4gICAgICA6IGNvZGVOdWxsYWJsZTtcblxuICBpZiAobW92ZURvd24gPT09IHRydWUpIHtcbiAgICBjb2RlTWFuYWdlci5tb3ZlRG93bihlZGl0b3IsIHJvdyk7XG4gIH1cblxuICBjaGVja0Zvcktlcm5lbChzdG9yZSwgKGtlcm5lbCkgPT4ge1xuICAgIHJlc3VsdC5jcmVhdGVSZXN1bHQoc3RvcmUsIHtcbiAgICAgIGNvZGUsXG4gICAgICByb3csXG4gICAgICBjZWxsVHlwZSxcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZvbGRDdXJyZW50Q2VsbCgpIHtcbiAgY29uc3QgZWRpdG9yID0gc3RvcmUuZWRpdG9yO1xuICBpZiAoIWVkaXRvcikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb2RlTWFuYWdlci5mb2xkQ3VycmVudENlbGwoZWRpdG9yKTtcbn1cblxuZnVuY3Rpb24gZm9sZEFsbEJ1dEN1cnJlbnRDZWxsKCkge1xuICBjb25zdCBlZGl0b3IgPSBzdG9yZS5lZGl0b3I7XG4gIGlmICghZWRpdG9yKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvZGVNYW5hZ2VyLmZvbGRBbGxCdXRDdXJyZW50Q2VsbChlZGl0b3IpO1xufVxuXG5mdW5jdGlvbiBzdGFydFpNUUtlcm5lbCgpIHtcbiAga2VybmVsTWFuYWdlclxuICAgIC5nZXRBbGxLZXJuZWxTcGVjc0ZvckdyYW1tYXIoc3RvcmUuZ3JhbW1hcilcbiAgICAudGhlbigoa2VybmVsU3BlY3MpID0+IHtcbiAgICAgIGlmIChrZXJuZWxQaWNrZXIpIHtcbiAgICAgICAga2VybmVsUGlja2VyLmtlcm5lbFNwZWNzID0ga2VybmVsU3BlY3M7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXJuZWxQaWNrZXIgPSBuZXcgS2VybmVsUGlja2VyKGtlcm5lbFNwZWNzKTtcblxuICAgICAgICBrZXJuZWxQaWNrZXIub25Db25maXJtZWQgPSAoa2VybmVsU3BlYzogS2VybmVsc3BlY01ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBlZGl0b3IsIGdyYW1tYXIsIGZpbGVQYXRoLCBtYXJrZXJzIH0gPSBzdG9yZTtcbiAgICAgICAgICBpZiAoIWVkaXRvciB8fCAhZ3JhbW1hciB8fCAhZmlsZVBhdGggfHwgIW1hcmtlcnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWFya2Vycy5jbGVhcigpO1xuICAgICAgICAgIGtlcm5lbE1hbmFnZXIuc3RhcnRLZXJuZWwoa2VybmVsU3BlYywgZ3JhbW1hciwgZWRpdG9yLCBmaWxlUGF0aCk7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGtlcm5lbFBpY2tlci50b2dnbGUoKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gY29ubmVjdFRvV1NLZXJuZWwoKSB7XG4gIGlmICghd3NLZXJuZWxQaWNrZXIpIHtcbiAgICB3c0tlcm5lbFBpY2tlciA9IG5ldyBXU0tlcm5lbFBpY2tlcigodHJhbnNwb3J0OiBXU0tlcm5lbCkgPT4ge1xuICAgICAgY29uc3Qga2VybmVsID0gbmV3IEtlcm5lbCh0cmFuc3BvcnQpO1xuICAgICAgY29uc3QgeyBlZGl0b3IsIGdyYW1tYXIsIGZpbGVQYXRoLCBtYXJrZXJzIH0gPSBzdG9yZTtcbiAgICAgIGlmICghZWRpdG9yIHx8ICFncmFtbWFyIHx8ICFmaWxlUGF0aCB8fCAhbWFya2Vycykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBtYXJrZXJzLmNsZWFyKCk7XG4gICAgICBpZiAoa2VybmVsLnRyYW5zcG9ydCBpbnN0YW5jZW9mIFpNUUtlcm5lbCkge1xuICAgICAgICBrZXJuZWwuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgc3RvcmUubmV3S2VybmVsKGtlcm5lbCwgZmlsZVBhdGgsIGVkaXRvciwgZ3JhbW1hcik7XG4gICAgfSk7XG4gIH1cblxuICB3c0tlcm5lbFBpY2tlci50b2dnbGUoKGtlcm5lbFNwZWM6IEtlcm5lbHNwZWNNZXRhZGF0YSkgPT5cbiAgICBrZXJuZWxTcGVjUHJvdmlkZXNHcmFtbWFyKGtlcm5lbFNwZWMsIHN0b3JlLmdyYW1tYXIpXG4gICk7XG59XG5cbi8vIEFjY2VwdHMgc3RvcmUgYXMgYW4gYXJnXG5mdW5jdGlvbiBjaGVja0Zvcktlcm5lbChcbiAge1xuICAgIGVkaXRvcixcbiAgICBncmFtbWFyLFxuICAgIGZpbGVQYXRoLFxuICAgIGtlcm5lbCxcbiAgfToge1xuICAgIGVkaXRvcjogVGV4dEVkaXRvcjtcbiAgICBncmFtbWFyOiBHcmFtbWFyO1xuICAgIGZpbGVQYXRoOiBzdHJpbmc7XG4gICAga2VybmVsPzogS2VybmVsO1xuICB9LFxuICBjYWxsYmFjazogKGtlcm5lbDogS2VybmVsKSA9PiB2b2lkXG4pIHtcbiAgaWYgKCFmaWxlUGF0aCB8fCAhZ3JhbW1hcikge1xuICAgIHJldHVybiBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXG4gICAgICBcIlRoZSBsYW5ndWFnZSBncmFtbWFyIG11c3QgYmUgc2V0IGluIG9yZGVyIHRvIHN0YXJ0IGEga2VybmVsLiBUaGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byBzYXZlIHRoZSBmaWxlLlwiXG4gICAgKTtcbiAgfVxuXG4gIGlmIChrZXJuZWwpIHtcbiAgICBjYWxsYmFjayhrZXJuZWwpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGtlcm5lbE1hbmFnZXIuc3RhcnRLZXJuZWxGb3IoZ3JhbW1hciwgZWRpdG9yLCBmaWxlUGF0aCwgKG5ld0tlcm5lbDogS2VybmVsKSA9PlxuICAgIGNhbGxiYWNrKG5ld0tlcm5lbClcbiAgKTtcbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFPYztBQUVkLCtEQUF1QztBQUN2QywrQkFBK0I7QUFFL0Isa0VBQThDO0FBQzlDLDhEQUEwQztBQUMxQyxzRUFBNkM7QUFDN0MsNEVBQXVEO0FBQ3ZELHNEQUE4QjtBQUM5Qiw4REFBcUM7QUFDckMsNERBQW1DO0FBQ25DLHNEQUE4QjtBQUM5QixvRUFBMkM7QUFDM0MsMEVBQWdEO0FBQ2hELHNGQUE0RDtBQUM1RCx1RkFBOEQ7QUFDOUQsb0RBQWtEO0FBQ2xELHFEQUFpRDtBQUNqRCwwREFBa0M7QUFDbEMscURBQXVDO0FBQ3ZDLDREQUE4QztBQUM5QyxpREFBbUM7QUFDbkMsbUNBVWlCO0FBQ2pCLHVEQUFtRDtBQUNuRCx1REFBZ0U7QUFHbkQsUUFBQSxNQUFNLEdBQUcsZ0JBQU0sQ0FBQyxNQUFNLENBQUM7QUFDcEMsSUFBSSxPQUFpRSxDQUFDO0FBQ3RFLElBQUksWUFBc0MsQ0FBQztBQUMzQyxJQUFJLG9CQUFzRCxDQUFDO0FBQzNELElBQUksY0FBMEMsQ0FBQztBQUMvQyxJQUFJLGdCQUE4QyxDQUFDO0FBQ25ELE1BQU0sYUFBYSxHQUFHLElBQUksOEJBQWEsRUFBRSxDQUFDO0FBRTFDLFNBQWdCLFFBQVE7SUFDdEIsT0FBTyxHQUFHLElBQUksY0FBTyxFQUFFLENBQUM7SUFDeEIsSUFBSSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7SUFDdkMsZUFBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUNyQiwyQkFBMkIsRUFDM0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBQ3pCLElBQUksMEJBQTBCLEVBQUU7WUFDOUIsMEJBQTBCLEdBQUcsS0FBSyxDQUFDO1lBQ25DLE9BQU87U0FD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QUM7QUFDSixDQUFDO0FBR0QsU0FBUyxjQUFjLENBQ3JCLEVBQ0UsTUFBTSxFQUNOLE9BQU8sRUFDUCxRQUFRLEVBQ1IsTUFBTSxHQU1QLEVBQ0QsUUFBa0M7SUFFbEMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUNoQyw4R0FBOEcsQ0FDL0csQ0FBQztLQUNIO0lBRUQsSUFBSSxNQUFNLEVBQUU7UUFDVixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakIsT0FBTztLQUNSO0lBRUQsYUFBYSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQWlCLEVBQUUsRUFBRSxDQUM1RSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQ3BCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBFbWl0dGVyLFxyXG4gIENvbXBvc2l0ZURpc3Bvc2FibGUsXHJcbiAgRGlzcG9zYWJsZSxcclxuICBQb2ludCxcclxuICBUZXh0RWRpdG9yLFxyXG4gIEdyYW1tYXIsXHJcbn0gZnJvbSBcImF0b21cIjtcclxuaW1wb3J0IHsgU3RhdHVzQmFyIH0gZnJvbSBcImF0b20vc3RhdHVzLWJhclwiO1xyXG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcImxvZGFzaC9kZWJvdW5jZVwiO1xyXG5pbXBvcnQgeyBhdXRvcnVuIH0gZnJvbSBcIm1vYnhcIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgSW5zcGVjdG9yUGFuZSBmcm9tIFwiLi9wYW5lcy9pbnNwZWN0b3JcIjtcclxuaW1wb3J0IFdhdGNoZXNQYW5lIGZyb20gXCIuL3BhbmVzL3dhdGNoZXNcIjtcclxuaW1wb3J0IE91dHB1dFBhbmUgZnJvbSBcIi4vcGFuZXMvb3V0cHV0LWFyZWFcIjtcclxuaW1wb3J0IEtlcm5lbE1vbml0b3JQYW5lIGZyb20gXCIuL3BhbmVzL2tlcm5lbC1tb25pdG9yXCI7XHJcbmltcG9ydCBDb25maWcgZnJvbSBcIi4vY29uZmlnXCI7XHJcbmltcG9ydCBaTVFLZXJuZWwgZnJvbSBcIi4vem1xLWtlcm5lbFwiO1xyXG5pbXBvcnQgV1NLZXJuZWwgZnJvbSBcIi4vd3Mta2VybmVsXCI7XHJcbmltcG9ydCBLZXJuZWwgZnJvbSBcIi4va2VybmVsXCI7XHJcbmltcG9ydCBLZXJuZWxQaWNrZXIgZnJvbSBcIi4va2VybmVsLXBpY2tlclwiO1xyXG5pbXBvcnQgV1NLZXJuZWxQaWNrZXIgZnJvbSBcIi4vd3Mta2VybmVsLXBpY2tlclwiO1xyXG5pbXBvcnQgRXhpc3RpbmdLZXJuZWxQaWNrZXIgZnJvbSBcIi4vZXhpc3Rpbmcta2VybmVsLXBpY2tlclwiO1xyXG5pbXBvcnQgSHlkcm9nZW5Qcm92aWRlciBmcm9tIFwiLi9wbHVnaW4tYXBpL2h5ZHJvZ2VuLXByb3ZpZGVyXCI7XHJcbmltcG9ydCBzdG9yZSwgeyBTdG9yZSwgU3RvcmVMaWtlIH0gZnJvbSBcIi4vc3RvcmVcIjtcclxuaW1wb3J0IHsgS2VybmVsTWFuYWdlciB9IGZyb20gXCIuL2tlcm5lbC1tYW5hZ2VyXCI7XHJcbmltcG9ydCBzZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgKiBhcyBjb21tYW5kcyBmcm9tIFwiLi9jb21tYW5kc1wiO1xyXG5pbXBvcnQgKiBhcyBjb2RlTWFuYWdlciBmcm9tIFwiLi9jb2RlLW1hbmFnZXJcIjtcclxuaW1wb3J0ICogYXMgcmVzdWx0IGZyb20gXCIuL3Jlc3VsdFwiO1xyXG5pbXBvcnQge1xyXG4gIGxvZyxcclxuICBpc011bHRpbGFuZ3VhZ2VHcmFtbWFyLFxyXG4gIElOU1BFQ1RPUl9VUkksXHJcbiAgV0FUQ0hFU19VUkksXHJcbiAgT1VUUFVUX0FSRUFfVVJJLFxyXG4gIEtFUk5FTF9NT05JVE9SX1VSSSxcclxuICBob3RSZWxvYWRQYWNrYWdlLFxyXG4gIG9wZW5PclNob3dEb2NrLFxyXG4gIGtlcm5lbFNwZWNQcm92aWRlc0dyYW1tYXIsXHJcbn0gZnJvbSBcIi4vdXRpbHNcIjtcclxuaW1wb3J0IHsgZXhwb3J0Tm90ZWJvb2sgfSBmcm9tIFwiLi9leHBvcnQtbm90ZWJvb2tcIjtcclxuaW1wb3J0IHsgaW1wb3J0Tm90ZWJvb2ssIGlweW5iT3BlbmVyIH0gZnJvbSBcIi4vaW1wb3J0LW5vdGVib29rXCI7XHJcbmltcG9ydCB0eXBlIHsgS2VybmVsc3BlY01ldGFkYXRhIH0gZnJvbSBcIkBudGVyYWN0L3R5cGVzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY29uZmlnID0gQ29uZmlnLnNjaGVtYTtcclxubGV0IGVtaXR0ZXI6IEVtaXR0ZXI8e30sIHsgXCJkaWQtY2hhbmdlLWtlcm5lbFwiOiBLZXJuZWwgfT4gfCB1bmRlZmluZWQ7XHJcbmxldCBrZXJuZWxQaWNrZXI6IEtlcm5lbFBpY2tlciB8IHVuZGVmaW5lZDtcclxubGV0IGV4aXN0aW5nS2VybmVsUGlja2VyOiBFeGlzdGluZ0tlcm5lbFBpY2tlciB8IHVuZGVmaW5lZDtcclxubGV0IHdzS2VybmVsUGlja2VyOiBXU0tlcm5lbFBpY2tlciB8IHVuZGVmaW5lZDtcclxubGV0IGh5ZHJvZ2VuUHJvdmlkZXI6IEh5ZHJvZ2VuUHJvdmlkZXIgfCB1bmRlZmluZWQ7XHJcbmNvbnN0IGtlcm5lbE1hbmFnZXIgPSBuZXcgS2VybmVsTWFuYWdlcigpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFjdGl2YXRlKCkge1xyXG4gIGVtaXR0ZXIgPSBuZXcgRW1pdHRlcigpO1xyXG4gIGxldCBza2lwTGFuZ3VhZ2VNYXBwaW5nc0NoYW5nZSA9IGZhbHNlO1xyXG4gIHN0b3JlLnN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgYXRvbS5jb25maWcub25EaWRDaGFuZ2UoXHJcbiAgICAgIFwiSHlkcm9nZW4ubGFuZ3VhZ2VNYXBwaW5nc1wiLFxyXG4gICAgICAoeyBuZXdWYWx1ZSwgb2xkVmFsdWUgfSkgPT4ge1xyXG4gICAgICAgIGlmIChza2lwTGFuZ3VhZ2VNYXBwaW5nc0NoYW5nZSkge1xyXG4gICAgICAgICAgc2tpcExhbmd1YWdlTWFwcGluZ3NDaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzdG9yZS5ydW5uaW5nS2VybmVscy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgc2tpcExhbmd1YWdlTWFwcGluZ3NDaGFuZ2UgPSB0cnVlO1xyXG4gICAgICAgICAgYXRvbS5jb25maWcuc2V0KFwiSHlkcm9nZW4ubGFuZ3VhZ2VNYXBwaW5nc1wiLCBvbGRWYWx1ZSk7XHJcbiAgICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXCJIeWRyb2dlblwiLCB7XHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxyXG4gICAgICAgICAgICAgIFwiYGxhbmd1YWdlTWFwcGluZ3NgIGNhbm5vdCBiZSB1cGRhdGVkIHdoaWxlIGtlcm5lbHMgYXJlIHJ1bm5pbmdcIixcclxuICAgICAgICAgICAgZGlzbWlzc2FibGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgKTtcclxuICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgIGF0b20uY29uZmlnLm9ic2VydmUoXCJIeWRyb2dlbi5zdGF0dXNCYXJEaXNhYmxlXCIsIChuZXdWYWx1ZSkgPT4ge1xyXG4gICAgICBzdG9yZS5zZXRDb25maWdWYWx1ZShcIkh5ZHJvZ2VuLnN0YXR1c0JhckRpc2FibGVcIiwgQm9vbGVhbihuZXdWYWx1ZSkpO1xyXG4gICAgfSksXHJcbiAgICBhdG9tLmNvbmZpZy5vYnNlcnZlKFwiSHlkcm9nZW4uc3RhdHVzQmFyS2VybmVsSW5mb1wiLCAobmV3VmFsdWUpID0+IHtcclxuICAgICAgc3RvcmUuc2V0Q29uZmlnVmFsdWUoXCJIeWRyb2dlbi5zdGF0dXNCYXJLZXJuZWxJbmZvXCIsIEJvb2xlYW4obmV3VmFsdWUpKTtcclxuICAgIH0pXHJcbiAgKTtcclxuICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgIGF0b20uY29tbWFuZHMuYWRkPFwiYXRvbS10ZXh0LWVkaXRvcjpub3QoW21pbmldKVwiPihcclxuICAgICAgXCJhdG9tLXRleHQtZWRpdG9yOm5vdChbbWluaV0pXCIsXHJcbiAgICAgIHtcclxuICAgICAgICBcImh5ZHJvZ2VuOnJ1blwiOiAoKSA9PiBydW4oKSxcclxuICAgICAgICBcImh5ZHJvZ2VuOnJ1bi1hbGxcIjogKCkgPT4gcnVuQWxsKCksXHJcbiAgICAgICAgXCJoeWRyb2dlbjpydW4tYWxsLWFib3ZlXCI6ICgpID0+IHJ1bkFsbEFib3ZlKCksXHJcbiAgICAgICAgXCJoeWRyb2dlbjpydW4tYW5kLW1vdmUtZG93blwiOiAoKSA9PiBydW4odHJ1ZSksXHJcbiAgICAgICAgXCJoeWRyb2dlbjpydW4tY2VsbFwiOiAoKSA9PiBydW5DZWxsKCksXHJcbiAgICAgICAgXCJoeWRyb2dlbjpydW4tY2VsbC1hbmQtbW92ZS1kb3duXCI6ICgpID0+IHJ1bkNlbGwodHJ1ZSksXHJcbiAgICAgICAgXCJoeWRyb2dlbjp0b2dnbGUtd2F0Y2hlc1wiOiAoKSA9PiBhdG9tLndvcmtzcGFjZS50b2dnbGUoV0FUQ0hFU19VUkkpLFxyXG4gICAgICAgIFwiaHlkcm9nZW46dG9nZ2xlLW91dHB1dC1hcmVhXCI6ICgpID0+IGNvbW1hbmRzLnRvZ2dsZU91dHB1dE1vZGUoKSxcclxuICAgICAgICBcImh5ZHJvZ2VuOnRvZ2dsZS1rZXJuZWwtbW9uaXRvclwiOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBsYXN0SXRlbSA9IGF0b20ud29ya3NwYWNlLmdldEFjdGl2ZVBhbmVJdGVtKCk7XHJcbiAgICAgICAgICBjb25zdCBsYXN0UGFuZSA9IGF0b20ud29ya3NwYWNlLnBhbmVGb3JJdGVtKGxhc3RJdGVtKTtcclxuICAgICAgICAgIGF3YWl0IGF0b20ud29ya3NwYWNlLnRvZ2dsZShLRVJORUxfTU9OSVRPUl9VUkkpO1xyXG4gICAgICAgICAgaWYgKGxhc3RQYW5lKSB7XHJcbiAgICAgICAgICAgIGxhc3RQYW5lLmFjdGl2YXRlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImh5ZHJvZ2VuOnN0YXJ0LWxvY2FsLWtlcm5lbFwiOiAoKSA9PiBzdGFydFpNUUtlcm5lbCgpLFxyXG4gICAgICAgIFwiaHlkcm9nZW46Y29ubmVjdC10by1yZW1vdGUta2VybmVsXCI6ICgpID0+IGNvbm5lY3RUb1dTS2VybmVsKCksXHJcbiAgICAgICAgXCJoeWRyb2dlbjpjb25uZWN0LXRvLWV4aXN0aW5nLWtlcm5lbFwiOiAoKSA9PiBjb25uZWN0VG9FeGlzdGluZ0tlcm5lbCgpLFxyXG4gICAgICAgIFwiaHlkcm9nZW46YWRkLXdhdGNoXCI6ICgpID0+IHtcclxuICAgICAgICAgIGlmIChzdG9yZS5rZXJuZWwpIHtcclxuICAgICAgICAgICAgc3RvcmUua2VybmVsLndhdGNoZXNTdG9yZS5hZGRXYXRjaEZyb21FZGl0b3Ioc3RvcmUuZWRpdG9yKTtcclxuICAgICAgICAgICAgb3Blbk9yU2hvd0RvY2soV0FUQ0hFU19VUkkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJoeWRyb2dlbjpyZW1vdmUtd2F0Y2hcIjogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0b3JlLmtlcm5lbCkge1xyXG4gICAgICAgICAgICBzdG9yZS5rZXJuZWwud2F0Y2hlc1N0b3JlLnJlbW92ZVdhdGNoKCk7XHJcbiAgICAgICAgICAgIG9wZW5PclNob3dEb2NrKFdBVENIRVNfVVJJKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiaHlkcm9nZW46dXBkYXRlLWtlcm5lbHNcIjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgYXdhaXQga2VybmVsTWFuYWdlci51cGRhdGVLZXJuZWxTcGVjcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJoeWRyb2dlbjp0b2dnbGUtaW5zcGVjdG9yXCI6ICgpID0+IGNvbW1hbmRzLnRvZ2dsZUluc3BlY3RvcihzdG9yZSksXHJcbiAgICAgICAgXCJoeWRyb2dlbjppbnRlcnJ1cHQta2VybmVsXCI6ICgpID0+XHJcbiAgICAgICAgICBoYW5kbGVLZXJuZWxDb21tYW5kKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgY29tbWFuZDogXCJpbnRlcnJ1cHQta2VybmVsXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0b3JlXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIFwiaHlkcm9nZW46cmVzdGFydC1rZXJuZWxcIjogKCkgPT5cclxuICAgICAgICAgIGhhbmRsZUtlcm5lbENvbW1hbmQoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBjb21tYW5kOiBcInJlc3RhcnQta2VybmVsXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0b3JlXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIFwiaHlkcm9nZW46c2h1dGRvd24ta2VybmVsXCI6ICgpID0+XHJcbiAgICAgICAgICBoYW5kbGVLZXJuZWxDb21tYW5kKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgY29tbWFuZDogXCJzaHV0ZG93bi1rZXJuZWxcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RvcmVcclxuICAgICAgICAgICksXHJcbiAgICAgICAgXCJoeWRyb2dlbjpjbGVhci1yZXN1bHRcIjogKCkgPT4gcmVzdWx0LmNsZWFyUmVzdWx0KHN0b3JlKSxcclxuICAgICAgICBcImh5ZHJvZ2VuOmV4cG9ydC1ub3RlYm9va1wiOiAoKSA9PiBleHBvcnROb3RlYm9vaygpLFxyXG4gICAgICAgIFwiaHlkcm9nZW46Zm9sZC1jdXJyZW50LWNlbGxcIjogKCkgPT4gZm9sZEN1cnJlbnRDZWxsKCksXHJcbiAgICAgICAgXCJoeWRyb2dlbjpmb2xkLWFsbC1idXQtY3VycmVudC1jZWxsXCI6ICgpID0+IGZvbGRBbGxCdXRDdXJyZW50Q2VsbCgpLFxyXG4gICAgICAgIFwiaHlkcm9nZW46Y2xlYXItcmVzdWx0c1wiOiAoKSA9PiByZXN1bHQuY2xlYXJSZXN1bHRzKHN0b3JlKSxcclxuICAgICAgfVxyXG4gICAgKVxyXG4gICk7XHJcbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXHJcbiAgICBhdG9tLmNvbW1hbmRzLmFkZChcImF0b20td29ya3NwYWNlXCIsIHtcclxuICAgICAgXCJoeWRyb2dlbjppbXBvcnQtbm90ZWJvb2tcIjogaW1wb3J0Tm90ZWJvb2ssXHJcbiAgICB9KVxyXG4gICk7XHJcblxyXG4gIGlmIChhdG9tLmluRGV2TW9kZSgpKSB7XHJcbiAgICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgYXRvbS5jb21tYW5kcy5hZGQoXCJhdG9tLXdvcmtzcGFjZVwiLCB7XHJcbiAgICAgICAgXCJoeWRyb2dlbjpob3QtcmVsb2FkLXBhY2thZ2VcIjogKCkgPT4gaG90UmVsb2FkUGFja2FnZSgpLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHN0b3JlLnN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgYXRvbS53b3Jrc3BhY2Uub2JzZXJ2ZUFjdGl2ZVRleHRFZGl0b3IoKGVkaXRvcikgPT4ge1xyXG4gICAgICBzdG9yZS51cGRhdGVFZGl0b3IoZWRpdG9yKTtcclxuICAgIH0pXHJcbiAgKTtcclxuICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgIGF0b20ud29ya3NwYWNlLm9ic2VydmVUZXh0RWRpdG9ycygoZWRpdG9yKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVkaXRvclN1YnNjcmlwdGlvbnMgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpO1xyXG4gICAgICBlZGl0b3JTdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgICBlZGl0b3Iub25EaWRDaGFuZ2VHcmFtbWFyKCgpID0+IHtcclxuICAgICAgICAgIHN0b3JlLnNldEdyYW1tYXIoZWRpdG9yKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKGlzTXVsdGlsYW5ndWFnZUdyYW1tYXIoZWRpdG9yLmdldEdyYW1tYXIoKSkpIHtcclxuICAgICAgICBlZGl0b3JTdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgICAgIGVkaXRvci5vbkRpZENoYW5nZUN1cnNvclBvc2l0aW9uKFxyXG4gICAgICAgICAgICBkZWJvdW5jZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgc3RvcmUuc2V0R3JhbW1hcihlZGl0b3IpO1xyXG4gICAgICAgICAgICB9LCA3NSlcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBlZGl0b3JTdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgICBlZGl0b3Iub25EaWREZXN0cm95KCgpID0+IHtcclxuICAgICAgICAgIGVkaXRvclN1YnNjcmlwdGlvbnMuZGlzcG9zZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGVkaXRvclN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgICAgIGVkaXRvci5vbkRpZENoYW5nZVRpdGxlKChuZXdUaXRsZSkgPT4gc3RvcmUuZm9yY2VFZGl0b3JVcGRhdGUoKSlcclxuICAgICAgKTtcclxuICAgICAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoZWRpdG9yU3Vic2NyaXB0aW9ucyk7XHJcbiAgICB9KVxyXG4gICk7XHJcbiAgaHlkcm9nZW5Qcm92aWRlciA9IG51bGw7XHJcbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXHJcbiAgICBhdG9tLndvcmtzcGFjZS5hZGRPcGVuZXIoKHVyaSkgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHVyaSkge1xyXG4gICAgICAgIGNhc2UgSU5TUEVDVE9SX1VSSTpcclxuICAgICAgICAgIHJldHVybiBuZXcgSW5zcGVjdG9yUGFuZShzdG9yZSk7XHJcblxyXG4gICAgICAgIGNhc2UgV0FUQ0hFU19VUkk6XHJcbiAgICAgICAgICByZXR1cm4gbmV3IFdhdGNoZXNQYW5lKHN0b3JlKTtcclxuXHJcbiAgICAgICAgY2FzZSBPVVRQVVRfQVJFQV9VUkk6XHJcbiAgICAgICAgICByZXR1cm4gbmV3IE91dHB1dFBhbmUoc3RvcmUpO1xyXG5cclxuICAgICAgICBjYXNlIEtFUk5FTF9NT05JVE9SX1VSSTpcclxuICAgICAgICAgIHJldHVybiBuZXcgS2VybmVsTW9uaXRvclBhbmUoc3RvcmUpO1xyXG4gICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgKTtcclxuICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChhdG9tLndvcmtzcGFjZS5hZGRPcGVuZXIoaXB5bmJPcGVuZXIpKTtcclxuICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgIC8vIERlc3Ryb3kgYW55IFBhbmVzIHdoZW4gdGhlIHBhY2thZ2UgaXMgZGVhY3RpdmF0ZWQuXHJcbiAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XHJcbiAgICAgIGF0b20ud29ya3NwYWNlLmdldFBhbmVJdGVtcygpLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpdGVtIGluc3RhbmNlb2YgSW5zcGVjdG9yUGFuZSB8fFxyXG4gICAgICAgICAgaXRlbSBpbnN0YW5jZW9mIFdhdGNoZXNQYW5lIHx8XHJcbiAgICAgICAgICBpdGVtIGluc3RhbmNlb2YgT3V0cHV0UGFuZSB8fFxyXG4gICAgICAgICAgaXRlbSBpbnN0YW5jZW9mIEtlcm5lbE1vbml0b3JQYW5lXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpdGVtLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSlcclxuICApO1xyXG4gIGF1dG9ydW4oKCkgPT4ge1xyXG4gICAgZW1pdHRlci5lbWl0KFwiZGlkLWNoYW5nZS1rZXJuZWxcIiwgc3RvcmUua2VybmVsKTtcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlYWN0aXZhdGUoKSB7XHJcbiAgc3RvcmUuZGlzcG9zZSgpO1xyXG59XHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tIFNlcnZpY2UgUHJvdmlkZXJzIC0tLS0tLS0tLS0tLS0tKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVIeWRyb2dlbigpIHtcclxuICBpZiAoIWh5ZHJvZ2VuUHJvdmlkZXIpIHtcclxuICAgIGh5ZHJvZ2VuUHJvdmlkZXIgPSBuZXcgSHlkcm9nZW5Qcm92aWRlcihlbWl0dGVyKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBoeWRyb2dlblByb3ZpZGVyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUF1dG9jb21wbGV0ZVJlc3VsdHMoKSB7XHJcbiAgcmV0dXJuIHNlcnZpY2VzLnByb3ZpZGVkLmF1dG9jb21wbGV0ZS5wcm92aWRlQXV0b2NvbXBsZXRlUmVzdWx0cyhzdG9yZSk7XHJcbn1cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyotLS0tLS0tLS0tLS0tLSBTZXJ2aWNlIENvbnN1bWVycyAtLS0tLS0tLS0tLS0tLSovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lQXV0b2NvbXBsZXRlV2F0Y2hFZGl0b3IoXHJcbiAgd2F0Y2hFZGl0b3I6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnlcclxuKSB7XHJcbiAgcmV0dXJuIHNlcnZpY2VzLmNvbnN1bWVkLmF1dG9jb21wbGV0ZS5jb25zdW1lKHN0b3JlLCB3YXRjaEVkaXRvcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lU3RhdHVzQmFyKHN0YXR1c0JhcjogU3RhdHVzQmFyKSB7XHJcbiAgcmV0dXJuIHNlcnZpY2VzLmNvbnN1bWVkLnN0YXR1c0Jhci5hZGRTdGF0dXNCYXIoXHJcbiAgICBzdG9yZSxcclxuICAgIHN0YXR1c0JhcixcclxuICAgIGhhbmRsZUtlcm5lbENvbW1hbmRcclxuICApO1xyXG59XHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuZnVuY3Rpb24gY29ubmVjdFRvRXhpc3RpbmdLZXJuZWwoKSB7XHJcbiAgaWYgKCFleGlzdGluZ0tlcm5lbFBpY2tlcikge1xyXG4gICAgZXhpc3RpbmdLZXJuZWxQaWNrZXIgPSBuZXcgRXhpc3RpbmdLZXJuZWxQaWNrZXIoKTtcclxuICB9XHJcblxyXG4gIGV4aXN0aW5nS2VybmVsUGlja2VyLnRvZ2dsZSgpO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgS2VybmVsQ29tbWFuZCB7XHJcbiAgY29tbWFuZDogc3RyaW5nO1xyXG4gIHBheWxvYWQ/OiBLZXJuZWxzcGVjTWV0YWRhdGEgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVLZXJuZWxDb21tYW5kKFxyXG4gIHsgY29tbWFuZCwgcGF5bG9hZCB9OiBLZXJuZWxDb21tYW5kLCAvLyBUT0RPIHBheWxvYWQgaXMgbm90IHVzZWQhXHJcbiAgeyBrZXJuZWwsIG1hcmtlcnMgfTogU3RvcmUgfCBTdG9yZUxpa2VcclxuKSB7XHJcbiAgbG9nKFwiaGFuZGxlS2VybmVsQ29tbWFuZDpcIiwgW1xyXG4gICAgeyBjb21tYW5kLCBwYXlsb2FkIH0sXHJcbiAgICB7IGtlcm5lbCwgbWFya2VycyB9LFxyXG4gIF0pO1xyXG5cclxuICBpZiAoIWtlcm5lbCkge1xyXG4gICAgY29uc3QgbWVzc2FnZSA9IFwiTm8gcnVubmluZyBrZXJuZWwgZm9yIGdyYW1tYXIgb3IgZWRpdG9yIGZvdW5kXCI7XHJcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IobWVzc2FnZSk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoY29tbWFuZCA9PT0gXCJpbnRlcnJ1cHQta2VybmVsXCIpIHtcclxuICAgIGtlcm5lbC5pbnRlcnJ1cHQoKTtcclxuICB9IGVsc2UgaWYgKGNvbW1hbmQgPT09IFwicmVzdGFydC1rZXJuZWxcIikge1xyXG4gICAga2VybmVsLnJlc3RhcnQoKTtcclxuICB9IGVsc2UgaWYgKGNvbW1hbmQgPT09IFwic2h1dGRvd24ta2VybmVsXCIpIHtcclxuICAgIGlmIChtYXJrZXJzKSB7XHJcbiAgICAgIG1hcmtlcnMuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIC8vIE5vdGUgdGhhdCBkZXN0cm95IGFsb25lIGRvZXMgbm90IHNodXQgZG93biBhIFdTS2VybmVsXHJcbiAgICBrZXJuZWwuc2h1dGRvd24oKTtcclxuICAgIGtlcm5lbC5kZXN0cm95KCk7XHJcbiAgfSBlbHNlIGlmIChcclxuICAgIGNvbW1hbmQgPT09IFwicmVuYW1lLWtlcm5lbFwiICYmXHJcbiAgICBrZXJuZWwudHJhbnNwb3J0IGluc3RhbmNlb2YgV1NLZXJuZWxcclxuICApIHtcclxuICAgIGtlcm5lbC50cmFuc3BvcnQucHJvbXB0UmVuYW1lKCk7XHJcbiAgfSBlbHNlIGlmIChjb21tYW5kID09PSBcImRpc2Nvbm5lY3Qta2VybmVsXCIpIHtcclxuICAgIGlmIChtYXJrZXJzKSB7XHJcbiAgICAgIG1hcmtlcnMuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIGtlcm5lbC5kZXN0cm95KCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBydW4obW92ZURvd246IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gIGNvbnN0IGVkaXRvciA9IHN0b3JlLmVkaXRvcjtcclxuICBpZiAoIWVkaXRvcikge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbnRlcmFjdC9oeWRyb2dlbi9pc3N1ZXMvMTQ1MlxyXG4gIGF0b20uY29tbWFuZHMuZGlzcGF0Y2goZWRpdG9yLmVsZW1lbnQsIFwiYXV0b2NvbXBsZXRlLXBsdXM6Y2FuY2VsXCIpO1xyXG4gIGNvbnN0IGNvZGVCbG9jayA9IGNvZGVNYW5hZ2VyLmZpbmRDb2RlQmxvY2soZWRpdG9yKTtcclxuXHJcbiAgaWYgKCFjb2RlQmxvY2spIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IGNvZGVOdWxsYWJsZSA9IGNvZGVCbG9jay5jb2RlO1xyXG4gIGlmIChjb2RlTnVsbGFibGUgPT09IG51bGwpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3QgeyByb3cgfSA9IGNvZGVCbG9jaztcclxuICBjb25zdCBjZWxsVHlwZSA9IGNvZGVNYW5hZ2VyLmdldE1ldGFkYXRhRm9yUm93KGVkaXRvciwgbmV3IFBvaW50KHJvdywgMCkpO1xyXG4gIGNvbnN0IGNvZGUgPVxyXG4gICAgY2VsbFR5cGUgPT09IFwibWFya2Rvd25cIlxyXG4gICAgICA/IGNvZGVNYW5hZ2VyLnJlbW92ZUNvbW1lbnRzTWFya2Rvd25DZWxsKGVkaXRvciwgY29kZU51bGxhYmxlKVxyXG4gICAgICA6IGNvZGVOdWxsYWJsZTtcclxuXHJcbiAgaWYgKG1vdmVEb3duKSB7XHJcbiAgICBjb2RlTWFuYWdlci5tb3ZlRG93bihlZGl0b3IsIHJvdyk7XHJcbiAgfVxyXG5cclxuICBjaGVja0Zvcktlcm5lbChzdG9yZSwgKGtlcm5lbCkgPT4ge1xyXG4gICAgcmVzdWx0LmNyZWF0ZVJlc3VsdChzdG9yZSwge1xyXG4gICAgICBjb2RlLFxyXG4gICAgICByb3csXHJcbiAgICAgIGNlbGxUeXBlLFxyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJ1bkFsbChicmVha3BvaW50cz86IEFycmF5PFBvaW50PiB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICBjb25zdCB7IGVkaXRvciwga2VybmVsLCBncmFtbWFyLCBmaWxlUGF0aCB9ID0gc3RvcmU7XHJcbiAgaWYgKCFlZGl0b3IgfHwgIWdyYW1tYXIgfHwgIWZpbGVQYXRoKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoaXNNdWx0aWxhbmd1YWdlR3JhbW1hcihlZGl0b3IuZ2V0R3JhbW1hcigpKSkge1xyXG4gICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFxyXG4gICAgICAnXCJSdW4gQWxsXCIgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBmaWxlIHR5cGUhJ1xyXG4gICAgKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChlZGl0b3IgJiYga2VybmVsKSB7XHJcbiAgICBfcnVuQWxsKGVkaXRvciwga2VybmVsLCBicmVha3BvaW50cyk7XHJcblxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAga2VybmVsTWFuYWdlci5zdGFydEtlcm5lbEZvcihncmFtbWFyLCBlZGl0b3IsIGZpbGVQYXRoLCAoa2VybmVsOiBLZXJuZWwpID0+IHtcclxuICAgIF9ydW5BbGwoZWRpdG9yLCBrZXJuZWwsIGJyZWFrcG9pbnRzKTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gX3J1bkFsbChcclxuICBlZGl0b3I6IFRleHRFZGl0b3IsXHJcbiAga2VybmVsOiBLZXJuZWwsXHJcbiAgYnJlYWtwb2ludHM/OiBBcnJheTxQb2ludD5cclxuKSB7XHJcbiAgY29uc3QgY2VsbHMgPSBjb2RlTWFuYWdlci5nZXRDZWxscyhlZGl0b3IsIGJyZWFrcG9pbnRzKTtcclxuXHJcbiAgZm9yIChjb25zdCBjZWxsIG9mIGNlbGxzKSB7XHJcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGNlbGw7XHJcbiAgICBjb25zdCBjb2RlTnVsbGFibGUgPSBjb2RlTWFuYWdlci5nZXRUZXh0SW5SYW5nZShlZGl0b3IsIHN0YXJ0LCBlbmQpO1xyXG4gICAgaWYgKGNvZGVOdWxsYWJsZSA9PT0gbnVsbCkge1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJvdyA9IGNvZGVNYW5hZ2VyLmVzY2FwZUJsYW5rUm93cyhcclxuICAgICAgZWRpdG9yLFxyXG4gICAgICBzdGFydC5yb3csXHJcbiAgICAgIGNvZGVNYW5hZ2VyLmdldEVzY2FwZUJsYW5rUm93c0VuZFJvdyhlZGl0b3IsIGVuZClcclxuICAgICk7XHJcbiAgICBjb25zdCBjZWxsVHlwZSA9IGNvZGVNYW5hZ2VyLmdldE1ldGFkYXRhRm9yUm93KGVkaXRvciwgc3RhcnQpO1xyXG4gICAgY29uc3QgY29kZSA9XHJcbiAgICAgIGNlbGxUeXBlID09PSBcIm1hcmtkb3duXCJcclxuICAgICAgICA/IGNvZGVNYW5hZ2VyLnJlbW92ZUNvbW1lbnRzTWFya2Rvd25DZWxsKGVkaXRvciwgY29kZU51bGxhYmxlKVxyXG4gICAgICAgIDogY29kZU51bGxhYmxlO1xyXG4gICAgY2hlY2tGb3JLZXJuZWwoc3RvcmUsIChrZXJuZWwpID0+IHtcclxuICAgICAgcmVzdWx0LmNyZWF0ZVJlc3VsdChzdG9yZSwge1xyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgcm93LFxyXG4gICAgICAgIGNlbGxUeXBlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcnVuQWxsQWJvdmUoKSB7XHJcbiAgY29uc3QgeyBlZGl0b3IsIGtlcm5lbCwgZ3JhbW1hciwgZmlsZVBhdGggfSA9IHN0b3JlO1xyXG4gIGlmICghZWRpdG9yIHx8ICFncmFtbWFyIHx8ICFmaWxlUGF0aCkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGlzTXVsdGlsYW5ndWFnZUdyYW1tYXIoZWRpdG9yLmdldEdyYW1tYXIoKSkpIHtcclxuICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcclxuICAgICAgJ1wiUnVuIEFsbCBBYm92ZVwiIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgZmlsZSB0eXBlISdcclxuICAgICk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoZWRpdG9yICYmIGtlcm5lbCkge1xyXG4gICAgX3J1bkFsbEFib3ZlKGVkaXRvciwga2VybmVsKTtcclxuXHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBrZXJuZWxNYW5hZ2VyLnN0YXJ0S2VybmVsRm9yKGdyYW1tYXIsIGVkaXRvciwgZmlsZVBhdGgsIChrZXJuZWw6IEtlcm5lbCkgPT4ge1xyXG4gICAgX3J1bkFsbEFib3ZlKGVkaXRvciwga2VybmVsKTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gX3J1bkFsbEFib3ZlKGVkaXRvcjogVGV4dEVkaXRvciwga2VybmVsOiBLZXJuZWwpIHtcclxuICBjb25zdCBjdXJzb3IgPSBlZGl0b3IuZ2V0Q3Vyc29yQnVmZmVyUG9zaXRpb24oKTtcclxuICBjdXJzb3IuY29sdW1uID0gZWRpdG9yLmdldEJ1ZmZlcigpLmxpbmVMZW5ndGhGb3JSb3coY3Vyc29yLnJvdyk7XHJcbiAgY29uc3QgYnJlYWtwb2ludHMgPSBjb2RlTWFuYWdlci5nZXRCcmVha3BvaW50cyhlZGl0b3IpO1xyXG4gIGJyZWFrcG9pbnRzLnB1c2goY3Vyc29yKTtcclxuICBjb25zdCBjZWxscyA9IGNvZGVNYW5hZ2VyLmdldENlbGxzKGVkaXRvciwgYnJlYWtwb2ludHMpO1xyXG5cclxuICBmb3IgKGNvbnN0IGNlbGwgb2YgY2VsbHMpIHtcclxuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gY2VsbDtcclxuICAgIGNvbnN0IGNvZGVOdWxsYWJsZSA9IGNvZGVNYW5hZ2VyLmdldFRleHRJblJhbmdlKGVkaXRvciwgc3RhcnQsIGVuZCk7XHJcbiAgICBjb25zdCByb3cgPSBjb2RlTWFuYWdlci5lc2NhcGVCbGFua1Jvd3MoXHJcbiAgICAgIGVkaXRvcixcclxuICAgICAgc3RhcnQucm93LFxyXG4gICAgICBjb2RlTWFuYWdlci5nZXRFc2NhcGVCbGFua1Jvd3NFbmRSb3coZWRpdG9yLCBlbmQpXHJcbiAgICApO1xyXG4gICAgY29uc3QgY2VsbFR5cGUgPSBjb2RlTWFuYWdlci5nZXRNZXRhZGF0YUZvclJvdyhlZGl0b3IsIHN0YXJ0KTtcclxuXHJcbiAgICBpZiAoY29kZU51bGxhYmxlICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGNvZGUgPVxyXG4gICAgICAgIGNlbGxUeXBlID09PSBcIm1hcmtkb3duXCJcclxuICAgICAgICAgID8gY29kZU1hbmFnZXIucmVtb3ZlQ29tbWVudHNNYXJrZG93bkNlbGwoZWRpdG9yLCBjb2RlTnVsbGFibGUpXHJcbiAgICAgICAgICA6IGNvZGVOdWxsYWJsZTtcclxuICAgICAgY2hlY2tGb3JLZXJuZWwoc3RvcmUsIChrZXJuZWwpID0+IHtcclxuICAgICAgICByZXN1bHQuY3JlYXRlUmVzdWx0KHN0b3JlLCB7XHJcbiAgICAgICAgICBjb2RlLFxyXG4gICAgICAgICAgcm93LFxyXG4gICAgICAgICAgY2VsbFR5cGUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjZWxsLmNvbnRhaW5zUG9pbnQoY3Vyc29yKSkge1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJ1bkNlbGwobW92ZURvd246IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gIGNvbnN0IGVkaXRvciA9IHN0b3JlLmVkaXRvcjtcclxuICBpZiAoIWVkaXRvcikge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbnRlcmFjdC9oeWRyb2dlbi9pc3N1ZXMvMTQ1MlxyXG4gIGF0b20uY29tbWFuZHMuZGlzcGF0Y2goZWRpdG9yLmVsZW1lbnQsIFwiYXV0b2NvbXBsZXRlLXBsdXM6Y2FuY2VsXCIpO1xyXG4gIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gY29kZU1hbmFnZXIuZ2V0Q3VycmVudENlbGwoZWRpdG9yKTtcclxuICBjb25zdCBjb2RlTnVsbGFibGUgPSBjb2RlTWFuYWdlci5nZXRUZXh0SW5SYW5nZShlZGl0b3IsIHN0YXJ0LCBlbmQpO1xyXG4gIGlmIChjb2RlTnVsbGFibGUgPT09IG51bGwpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3Qgcm93ID0gY29kZU1hbmFnZXIuZXNjYXBlQmxhbmtSb3dzKFxyXG4gICAgZWRpdG9yLFxyXG4gICAgc3RhcnQucm93LFxyXG4gICAgY29kZU1hbmFnZXIuZ2V0RXNjYXBlQmxhbmtSb3dzRW5kUm93KGVkaXRvciwgZW5kKVxyXG4gICk7XHJcbiAgY29uc3QgY2VsbFR5cGUgPSBjb2RlTWFuYWdlci5nZXRNZXRhZGF0YUZvclJvdyhlZGl0b3IsIHN0YXJ0KTtcclxuICBjb25zdCBjb2RlID1cclxuICAgIGNlbGxUeXBlID09PSBcIm1hcmtkb3duXCJcclxuICAgICAgPyBjb2RlTWFuYWdlci5yZW1vdmVDb21tZW50c01hcmtkb3duQ2VsbChlZGl0b3IsIGNvZGVOdWxsYWJsZSlcclxuICAgICAgOiBjb2RlTnVsbGFibGU7XHJcblxyXG4gIGlmIChtb3ZlRG93bikge1xyXG4gICAgY29kZU1hbmFnZXIubW92ZURvd24oZWRpdG9yLCByb3cpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JLZXJuZWwoc3RvcmUsIChrZXJuZWwpID0+IHtcclxuICAgIHJlc3VsdC5jcmVhdGVSZXN1bHQoc3RvcmUsIHtcclxuICAgICAgY29kZSxcclxuICAgICAgcm93LFxyXG4gICAgICBjZWxsVHlwZSxcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmb2xkQ3VycmVudENlbGwoKSB7XHJcbiAgY29uc3QgZWRpdG9yID0gc3RvcmUuZWRpdG9yO1xyXG4gIGlmICghZWRpdG9yKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvZGVNYW5hZ2VyLmZvbGRDdXJyZW50Q2VsbChlZGl0b3IpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmb2xkQWxsQnV0Q3VycmVudENlbGwoKSB7XHJcbiAgY29uc3QgZWRpdG9yID0gc3RvcmUuZWRpdG9yO1xyXG4gIGlmICghZWRpdG9yKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvZGVNYW5hZ2VyLmZvbGRBbGxCdXRDdXJyZW50Q2VsbChlZGl0b3IpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzdGFydFpNUUtlcm5lbCgpIHtcclxuICBrZXJuZWxNYW5hZ2VyXHJcbiAgICAuZ2V0QWxsS2VybmVsU3BlY3NGb3JHcmFtbWFyKHN0b3JlLmdyYW1tYXIpXHJcbiAgICAudGhlbigoa2VybmVsU3BlY3MpID0+IHtcclxuICAgICAgaWYgKGtlcm5lbFBpY2tlcikge1xyXG4gICAgICAgIGtlcm5lbFBpY2tlci5rZXJuZWxTcGVjcyA9IGtlcm5lbFNwZWNzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGtlcm5lbFBpY2tlciA9IG5ldyBLZXJuZWxQaWNrZXIoa2VybmVsU3BlY3MpO1xyXG5cclxuICAgICAgICBrZXJuZWxQaWNrZXIub25Db25maXJtZWQgPSAoa2VybmVsU3BlYzogS2VybmVsc3BlY01ldGFkYXRhKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IGVkaXRvciwgZ3JhbW1hciwgZmlsZVBhdGgsIG1hcmtlcnMgfSA9IHN0b3JlO1xyXG4gICAgICAgICAgaWYgKCFlZGl0b3IgfHwgIWdyYW1tYXIgfHwgIWZpbGVQYXRoIHx8ICFtYXJrZXJzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG1hcmtlcnMuY2xlYXIoKTtcclxuICAgICAgICAgIGtlcm5lbE1hbmFnZXIuc3RhcnRLZXJuZWwoa2VybmVsU3BlYywgZ3JhbW1hciwgZWRpdG9yLCBmaWxlUGF0aCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAga2VybmVsUGlja2VyLnRvZ2dsZSgpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbm5lY3RUb1dTS2VybmVsKCkge1xyXG4gIGlmICghd3NLZXJuZWxQaWNrZXIpIHtcclxuICAgIHdzS2VybmVsUGlja2VyID0gbmV3IFdTS2VybmVsUGlja2VyKCh0cmFuc3BvcnQ6IFdTS2VybmVsKSA9PiB7XHJcbiAgICAgIGNvbnN0IGtlcm5lbCA9IG5ldyBLZXJuZWwodHJhbnNwb3J0KTtcclxuICAgICAgY29uc3QgeyBlZGl0b3IsIGdyYW1tYXIsIGZpbGVQYXRoLCBtYXJrZXJzIH0gPSBzdG9yZTtcclxuICAgICAgaWYgKCFlZGl0b3IgfHwgIWdyYW1tYXIgfHwgIWZpbGVQYXRoIHx8ICFtYXJrZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIG1hcmtlcnMuY2xlYXIoKTtcclxuICAgICAgaWYgKGtlcm5lbC50cmFuc3BvcnQgaW5zdGFuY2VvZiBaTVFLZXJuZWwpIHtcclxuICAgICAgICBrZXJuZWwuZGVzdHJveSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHN0b3JlLm5ld0tlcm5lbChrZXJuZWwsIGZpbGVQYXRoLCBlZGl0b3IsIGdyYW1tYXIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB3c0tlcm5lbFBpY2tlci50b2dnbGUoKGtlcm5lbFNwZWM6IEtlcm5lbHNwZWNNZXRhZGF0YSkgPT5cclxuICAgIGtlcm5lbFNwZWNQcm92aWRlc0dyYW1tYXIoa2VybmVsU3BlYywgc3RvcmUuZ3JhbW1hcilcclxuICApO1xyXG59XHJcblxyXG4vLyBBY2NlcHRzIHN0b3JlIGFzIGFuIGFyZ1xyXG5mdW5jdGlvbiBjaGVja0Zvcktlcm5lbChcclxuICB7XHJcbiAgICBlZGl0b3IsXHJcbiAgICBncmFtbWFyLFxyXG4gICAgZmlsZVBhdGgsXHJcbiAgICBrZXJuZWwsXHJcbiAgfToge1xyXG4gICAgZWRpdG9yOiBUZXh0RWRpdG9yO1xyXG4gICAgZ3JhbW1hcjogR3JhbW1hcjtcclxuICAgIGZpbGVQYXRoOiBzdHJpbmc7XHJcbiAgICBrZXJuZWw/OiBLZXJuZWw7XHJcbiAgfSxcclxuICBjYWxsYmFjazogKGtlcm5lbDogS2VybmVsKSA9PiB2b2lkXHJcbikge1xyXG4gIGlmICghZmlsZVBhdGggfHwgIWdyYW1tYXIpIHtcclxuICAgIHJldHVybiBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXHJcbiAgICAgIFwiVGhlIGxhbmd1YWdlIGdyYW1tYXIgbXVzdCBiZSBzZXQgaW4gb3JkZXIgdG8gc3RhcnQgYSBrZXJuZWwuIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIHNhdmUgdGhlIGZpbGUuXCJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoa2VybmVsKSB7XHJcbiAgICBjYWxsYmFjayhrZXJuZWwpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAga2VybmVsTWFuYWdlci5zdGFydEtlcm5lbEZvcihncmFtbWFyLCBlZGl0b3IsIGZpbGVQYXRoLCAobmV3S2VybmVsOiBLZXJuZWwpID0+XHJcbiAgICBjYWxsYmFjayhuZXdLZXJuZWwpXHJcbiAgKTtcclxufVxyXG4iXX0= \ No newline at end of file diff --git a/dist/panes/inspector.d.ts b/dist/panes/inspector.d.ts deleted file mode 100644 index 6cd7c53d2..000000000 --- a/dist/panes/inspector.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CompositeDisposable } from "atom"; -declare type store = typeof import("../store").default; -export default class InspectorPane { - element: HTMLDivElement; - disposer: CompositeDisposable; - constructor(store: store); - getTitle: () => string; - getURI: () => string; - getDefaultLocation: () => string; - getAllowedLocations: () => string[]; - destroy(): void; -} -export {}; diff --git a/dist/panes/kernel-monitor.d.ts b/dist/panes/kernel-monitor.d.ts deleted file mode 100644 index 3b6df2813..000000000 --- a/dist/panes/kernel-monitor.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CompositeDisposable } from "atom"; -declare type store = typeof import("../store").default; -export default class KernelMonitorPane { - element: HTMLDivElement; - disposer: CompositeDisposable; - constructor(store: store); - getTitle: () => string; - getURI: () => string; - getDefaultLocation: () => string; - getAllowedLocations: () => string[]; - destroy(): void; -} -export {}; diff --git a/dist/panes/output-area.d.ts b/dist/panes/output-area.d.ts deleted file mode 100644 index ed71e9c7e..000000000 --- a/dist/panes/output-area.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CompositeDisposable } from "atom"; -declare type store = typeof import("../store").default; -export default class OutputPane { - element: HTMLDivElement; - disposer: CompositeDisposable; - constructor(store: store); - getTitle: () => string; - getURI: () => string; - getDefaultLocation: () => string; - getAllowedLocations: () => string[]; - destroy(): void; -} -export {}; diff --git a/dist/panes/watches.d.ts b/dist/panes/watches.d.ts deleted file mode 100644 index 788e2bb3f..000000000 --- a/dist/panes/watches.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CompositeDisposable } from "atom"; -declare type store = typeof import("../store").default; -export default class WatchesPane { - element: HTMLDivElement; - disposer: CompositeDisposable; - constructor(store: store); - getTitle: () => string; - getURI: () => string; - getDefaultLocation: () => string; - getAllowedLocations: () => string[]; - destroy(): void; -} -export {}; diff --git a/dist/plugin-api/hydrogen-kernel.d.ts b/dist/plugin-api/hydrogen-kernel.d.ts deleted file mode 100644 index ec88d27ec..000000000 --- a/dist/plugin-api/hydrogen-kernel.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type Kernel from "../kernel"; -import type { HydrogenKernelMiddleware } from "./hydrogen-types"; -export default class HydrogenKernel { - _kernel: Kernel; - destroyed: boolean; - constructor(_kernel: Kernel); - _assertNotDestroyed(): void; - get language(): string; - get displayName(): string; - addMiddleware(middleware: HydrogenKernelMiddleware): void; - onDidDestroy(callback: (...args: Array) => any): void; - getConnectionFile(): any; -} diff --git a/dist/plugin-api/hydrogen-provider.d.ts b/dist/plugin-api/hydrogen-provider.d.ts deleted file mode 100644 index 6bba61625..000000000 --- a/dist/plugin-api/hydrogen-provider.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { TextEditor, Range, Emitter } from "atom"; -import type Kernel from "../kernel"; -export default class HydrogenProvider { - private _emitter; - constructor(emitter: Emitter<{}, { - "did-change-kernel": Kernel; - }>); - onDidChangeKernel(callback: (...args: Array) => any): void; - getActiveKernel(): import("./hydrogen-kernel").default; - getCellRange(editor: TextEditor | null | undefined): Range; -} diff --git a/dist/plugin-api/hydrogen-provider.js b/dist/plugin-api/hydrogen-provider.js index 37d04927a..d5f3f53f3 100644 --- a/dist/plugin-api/hydrogen-provider.js +++ b/dist/plugin-api/hydrogen-provider.js @@ -32,4 +32,4 @@ class HydrogenProvider { } } exports.default = HydrogenProvider; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcm9nZW4tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcGx1Z2luLWFwaS9oeWRyb2dlbi1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHFEQUE2QjtBQUc3QixrREFBaUQ7QUFhakQsTUFBcUIsZ0JBQWdCO0lBRW5DLFlBQVksT0FBcUQ7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQU1ELGlCQUFpQixDQUFDLFFBQXNDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNkLG1CQUFtQixFQUNuQixDQUFDLE1BQWlDLEVBQUUsRUFBRTtZQUNwQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2FBQzVDO1lBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBTUQsZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsT0FBTyxVQUFVLENBQUMsQ0FBQztTQUN2RTtRQUVELE9BQU8sZUFBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFPRCxZQUFZLENBQUMsTUFBcUM7UUFDaEQsSUFBSSxDQUFDLGVBQUssQ0FBQyxNQUFNLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sNkJBQWMsQ0FBQyxlQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUlGO0FBbERELG1DQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRFZGl0b3IsIFJhbmdlLCBFbWl0dGVyIH0gZnJvbSBcImF0b21cIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vc3RvcmVcIjtcbmltcG9ydCB0eXBlIEtlcm5lbCBmcm9tIFwiLi4va2VybmVsXCI7XG5pbXBvcnQgdHlwZSBaTVFLZXJuZWwgZnJvbSBcIi4uL3ptcS1rZXJuZWxcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRDZWxsIH0gZnJvbSBcIi4uL2NvZGUtbWFuYWdlclwiO1xuLyoqXG4gKiBAdmVyc2lvbiAxLjAuMCBUaGUgUGx1Z2luIEFQSSBhbGxvd3MgeW91IHRvIG1ha2UgSHlkcm9nZW4gYXdlc29tZS4gWW91IHdpbGxcbiAqICAgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoIHRoaXMgY2xhc3MgaW4geW91ciBIeWRyb2dlbiBQbHVnaW4gdXNpbmcgQXRvbSdzXG4gKiAgIFtTZXJ2aWNlIEFQSV0oaHR0cDovL2Jsb2cuYXRvbS5pby8yMDE1LzAzLzI1L25ldy1zZXJ2aWNlcy1BUEkuaHRtbCkuXG4gKlxuICogICBUYWtlIGEgbG9vayBhdCBvdXIgW0V4YW1wbGVcbiAqICAgUGx1Z2luXShodHRwczovL2dpdGh1Yi5jb20vbGdlaWdlci9oeWRyb2dlbi1leGFtcGxlLXBsdWdpbikgYW5kIHRoZSBbQXRvbVxuICogICBGbGlnaHQgTWFudWFsXShodHRwOi8vZmxpZ2h0LW1hbnVhbC5hdG9tLmlvL2hhY2tpbmctYXRvbS8pIGZvciBsZWFybmluZyBob3dcbiAqICAgdG8gaW50ZXJhY3Qgd2l0aCBIeWRyb2dlbiBpbiB5b3VyIG93biBwbHVnaW4uXG4gKiBAY2xhc3MgSHlkcm9nZW5Qcm92aWRlclxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh5ZHJvZ2VuUHJvdmlkZXIge1xuICBwcml2YXRlIF9lbWl0dGVyOiBFbWl0dGVyPHt9LCB7IFwiZGlkLWNoYW5nZS1rZXJuZWxcIjogS2VybmVsIH0+IHwgdW5kZWZpbmVkO1xuICBjb25zdHJ1Y3RvcihlbWl0dGVyOiBFbWl0dGVyPHt9LCB7IFwiZGlkLWNoYW5nZS1rZXJuZWxcIjogS2VybmVsIH0+KSB7XG4gICAgdGhpcy5fZW1pdHRlciA9IGVtaXR0ZXI7XG4gIH1cblxuICAvKlxuICAgKiBDYWxscyB5b3VyIGNhbGxiYWNrIHdoZW4gdGhlIGtlcm5lbCBoYXMgY2hhbmdlZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ2FsbGJhY2tcbiAgICovXG4gIG9uRGlkQ2hhbmdlS2VybmVsKGNhbGxiYWNrOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB7XG4gICAgdGhpcy5fZW1pdHRlci5vbihcbiAgICAgIFwiZGlkLWNoYW5nZS1rZXJuZWxcIixcbiAgICAgIChrZXJuZWw6IEtlcm5lbCB8IG51bGwgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKGtlcm5lbCkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhrZXJuZWwuZ2V0UGx1Z2luV3JhcHBlcigpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLypcbiAgICogR2V0IHRoZSBgSHlkcm9nZW5LZXJuZWxgIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHQgZWRpdG9yLlxuICAgKiBAcmV0dXJuIHtDbGFzc30gYEh5ZHJvZ2VuS2VybmVsYFxuICAgKi9cbiAgZ2V0QWN0aXZlS2VybmVsKCkge1xuICAgIGlmICghc3RvcmUua2VybmVsKSB7XG4gICAgICBjb25zdCBncmFtbWFyID0gc3RvcmUuZWRpdG9yID8gc3RvcmUuZWRpdG9yLmdldEdyYW1tYXIoKS5uYW1lIDogXCJcIjtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gcnVubmluZyBrZXJuZWwgZm9yIGdyYW1tYXIgXFxgJHtncmFtbWFyfVxcYCBmb3VuZGApO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9yZS5rZXJuZWwuZ2V0UGx1Z2luV3JhcHBlcigpO1xuICB9XG5cbiAgLypcbiAgICogR2V0IHRoZSBgUmFuZ2VgIHRoYXQgd2lsbCBydW4gaWYgYGh5ZHJvZ2VuOnJ1bi1jZWxsYCBpcyBjYWxsZWQuXG4gICAqIGBudWxsYCBpcyByZXR1cm5lZCBpZiBubyBhY3RpdmUgdGV4dCBlZGl0b3IuXG4gICAqIEByZXR1cm4ge0NsYXNzfSBgUmFuZ2VgXG4gICAqL1xuICBnZXRDZWxsUmFuZ2UoZWRpdG9yOiBUZXh0RWRpdG9yIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghc3RvcmUuZWRpdG9yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGdldEN1cnJlbnRDZWxsKHN0b3JlLmVkaXRvcik7XG4gIH1cbiAgLypcbiAgICotLS0tLS0tLVxuICAgKi9cbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcm9nZW4tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcGx1Z2luLWFwaS9oeWRyb2dlbi1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHFEQUE2QjtBQUU3QixrREFBaUQ7QUFhakQsTUFBcUIsZ0JBQWdCO0lBRW5DLFlBQVksT0FBcUQ7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQU1ELGlCQUFpQixDQUFDLFFBQXNDO1FBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNkLG1CQUFtQixFQUNuQixDQUFDLE1BQWlDLEVBQUUsRUFBRTtZQUNwQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2FBQzVDO1lBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBTUQsZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsT0FBTyxVQUFVLENBQUMsQ0FBQztTQUN2RTtRQUVELE9BQU8sZUFBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFPRCxZQUFZLENBQUMsTUFBcUM7UUFDaEQsSUFBSSxDQUFDLGVBQUssQ0FBQyxNQUFNLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sNkJBQWMsQ0FBQyxlQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUlGO0FBbERELG1DQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRFZGl0b3IsIFJhbmdlLCBFbWl0dGVyIH0gZnJvbSBcImF0b21cIjtcclxuaW1wb3J0IHN0b3JlIGZyb20gXCIuLi9zdG9yZVwiO1xyXG5pbXBvcnQgdHlwZSBLZXJuZWwgZnJvbSBcIi4uL2tlcm5lbFwiO1xyXG5pbXBvcnQgeyBnZXRDdXJyZW50Q2VsbCB9IGZyb20gXCIuLi9jb2RlLW1hbmFnZXJcIjtcclxuLyoqXHJcbiAqIEB2ZXJzaW9uIDEuMC4wIFRoZSBQbHVnaW4gQVBJIGFsbG93cyB5b3UgdG8gbWFrZSBIeWRyb2dlbiBhd2Vzb21lLiBZb3Ugd2lsbFxyXG4gKiAgIGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGNsYXNzIGluIHlvdXIgSHlkcm9nZW4gUGx1Z2luIHVzaW5nIEF0b20nc1xyXG4gKiAgIFtTZXJ2aWNlIEFQSV0oaHR0cDovL2Jsb2cuYXRvbS5pby8yMDE1LzAzLzI1L25ldy1zZXJ2aWNlcy1BUEkuaHRtbCkuXHJcbiAqXHJcbiAqICAgVGFrZSBhIGxvb2sgYXQgb3VyIFtFeGFtcGxlXHJcbiAqICAgUGx1Z2luXShodHRwczovL2dpdGh1Yi5jb20vbGdlaWdlci9oeWRyb2dlbi1leGFtcGxlLXBsdWdpbikgYW5kIHRoZSBbQXRvbVxyXG4gKiAgIEZsaWdodCBNYW51YWxdKGh0dHA6Ly9mbGlnaHQtbWFudWFsLmF0b20uaW8vaGFja2luZy1hdG9tLykgZm9yIGxlYXJuaW5nIGhvd1xyXG4gKiAgIHRvIGludGVyYWN0IHdpdGggSHlkcm9nZW4gaW4geW91ciBvd24gcGx1Z2luLlxyXG4gKiBAY2xhc3MgSHlkcm9nZW5Qcm92aWRlclxyXG4gKi9cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh5ZHJvZ2VuUHJvdmlkZXIge1xyXG4gIHByaXZhdGUgX2VtaXR0ZXI6IEVtaXR0ZXI8e30sIHsgXCJkaWQtY2hhbmdlLWtlcm5lbFwiOiBLZXJuZWwgfT4gfCB1bmRlZmluZWQ7XHJcbiAgY29uc3RydWN0b3IoZW1pdHRlcjogRW1pdHRlcjx7fSwgeyBcImRpZC1jaGFuZ2Uta2VybmVsXCI6IEtlcm5lbCB9Pikge1xyXG4gICAgdGhpcy5fZW1pdHRlciA9IGVtaXR0ZXI7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIENhbGxzIHlvdXIgY2FsbGJhY2sgd2hlbiB0aGUga2VybmVsIGhhcyBjaGFuZ2VkLlxyXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IENhbGxiYWNrXHJcbiAgICovXHJcbiAgb25EaWRDaGFuZ2VLZXJuZWwoY2FsbGJhY2s6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnkpIHtcclxuICAgIHRoaXMuX2VtaXR0ZXIub24oXHJcbiAgICAgIFwiZGlkLWNoYW5nZS1rZXJuZWxcIixcclxuICAgICAgKGtlcm5lbDogS2VybmVsIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgICAgIGlmIChrZXJuZWwpIHtcclxuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhrZXJuZWwuZ2V0UGx1Z2luV3JhcHBlcigpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogR2V0IHRoZSBgSHlkcm9nZW5LZXJuZWxgIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHQgZWRpdG9yLlxyXG4gICAqIEByZXR1cm4ge0NsYXNzfSBgSHlkcm9nZW5LZXJuZWxgXHJcbiAgICovXHJcbiAgZ2V0QWN0aXZlS2VybmVsKCkge1xyXG4gICAgaWYgKCFzdG9yZS5rZXJuZWwpIHtcclxuICAgICAgY29uc3QgZ3JhbW1hciA9IHN0b3JlLmVkaXRvciA/IHN0b3JlLmVkaXRvci5nZXRHcmFtbWFyKCkubmFtZSA6IFwiXCI7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gcnVubmluZyBrZXJuZWwgZm9yIGdyYW1tYXIgXFxgJHtncmFtbWFyfVxcYCBmb3VuZGApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdG9yZS5rZXJuZWwuZ2V0UGx1Z2luV3JhcHBlcigpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBHZXQgdGhlIGBSYW5nZWAgdGhhdCB3aWxsIHJ1biBpZiBgaHlkcm9nZW46cnVuLWNlbGxgIGlzIGNhbGxlZC5cclxuICAgKiBgbnVsbGAgaXMgcmV0dXJuZWQgaWYgbm8gYWN0aXZlIHRleHQgZWRpdG9yLlxyXG4gICAqIEByZXR1cm4ge0NsYXNzfSBgUmFuZ2VgXHJcbiAgICovXHJcbiAgZ2V0Q2VsbFJhbmdlKGVkaXRvcjogVGV4dEVkaXRvciB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICghc3RvcmUuZWRpdG9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldEN1cnJlbnRDZWxsKHN0b3JlLmVkaXRvcik7XHJcbiAgfVxyXG4gIC8qXHJcbiAgICotLS0tLS0tLVxyXG4gICAqL1xyXG59XHJcbiJdfQ== \ No newline at end of file diff --git a/dist/plugin-api/hydrogen-types.d.ts b/dist/plugin-api/hydrogen-types.d.ts deleted file mode 100644 index 9186abe2d..000000000 --- a/dist/plugin-api/hydrogen-types.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export declare type HydrogenResultsCallback = (message: any, channel: "shell" | "iopub" | "stdin") => void; -export interface HydrogenKernelMiddlewareThunk { - readonly interrupt: () => void; - readonly shutdown: () => void; - readonly restart: (onRestarted: ((...args: Array) => any) | null | undefined) => void; - readonly execute: (code: string, onResults: HydrogenResultsCallback) => void; - readonly complete: (code: string, onResults: HydrogenResultsCallback) => void; - readonly inspect: (code: string, cursorPos: number, onResults: HydrogenResultsCallback) => void; -} -export interface HydrogenKernelMiddleware { - readonly interrupt?: (next: HydrogenKernelMiddlewareThunk) => void; - readonly shutdown?: (next: HydrogenKernelMiddlewareThunk) => void; - readonly restart?: (next: HydrogenKernelMiddlewareThunk, onRestarted: ((...args: Array) => any) | null | undefined) => void; - readonly execute?: (next: HydrogenKernelMiddlewareThunk, code: string, onResults: HydrogenResultsCallback) => void; - readonly complete?: (next: HydrogenKernelMiddlewareThunk, code: string, onResults: HydrogenResultsCallback) => void; - readonly inspect?: (next: HydrogenKernelMiddlewareThunk, code: string, cursorPos: number, onResults: HydrogenResultsCallback) => void; -} diff --git a/dist/result.d.ts b/dist/result.d.ts deleted file mode 100644 index 03206b72f..000000000 --- a/dist/result.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { TextEditor } from "atom"; -import type MarkerStore from "./store/markers"; -import type Kernel from "./kernel"; -import type { HydrogenCellType } from "./hydrogen"; -export declare function createResult({ editor, kernel, markers, }: Readonly<{ - editor: TextEditor | null | undefined; - kernel: Kernel | null | undefined; - markers: MarkerStore | null | undefined; -}>, { code, row, cellType, }: { - code: string; - row: number; - cellType: HydrogenCellType; -}): void; -export declare function importResult({ editor, markers, }: { - editor: TextEditor | null | undefined; - markers: MarkerStore | null | undefined; -}, { outputs, row, }: { - outputs: Array>; - row: number; -}): void; -export declare function clearResult({ editor, markers, }: Readonly<{ - editor: TextEditor | null | undefined; - markers: MarkerStore | null | undefined; -}>): void; -export declare function clearResults({ kernel, markers, }: Readonly<{ - kernel: Kernel | null | undefined; - markers: MarkerStore | null | undefined; -}>): void; -export declare function convertMarkdownToOutput(markdownString: string): { - output_type: string; - data: { - "text/markdown": string; - }; - metadata: {}; -}; diff --git a/dist/services/consumed/autocomplete.d.ts b/dist/services/consumed/autocomplete.d.ts deleted file mode 100644 index c532bda87..000000000 --- a/dist/services/consumed/autocomplete.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { TextEditor, CompositeDisposable, Disposable } from "atom"; -import { AutocompleteWatchEditor as AtomAutocompleteWatchEditor } from "atom/autocomplete-plus"; -import type { Store } from "../../store"; -import type WatchesStore from "../../store/watches"; -import type WatchStore from "../../store/watch"; -export declare class AutocompleteWatchEditor { - disposables: CompositeDisposable; - addAutocompleteToEditor: (editor: TextEditor, labels: Array) => Disposable; - isEnabeled: boolean; - consume(store: Store, watchEditor: AtomAutocompleteWatchEditor): Disposable; - disable(store: Store): void; - addAutocompleteToWatch(watchesStore: WatchesStore, watch: WatchStore): void; - removeAutocompleteFromWatch(watchesStore: WatchesStore, watch: WatchStore): void; - dispose(disposable: Disposable | CompositeDisposable): void; - register(disposable: Disposable | CompositeDisposable): void; -} -declare const autocompleteConsumer: AutocompleteWatchEditor; -export default autocompleteConsumer; diff --git a/dist/services/consumed/index.d.ts b/dist/services/consumed/index.d.ts deleted file mode 100644 index 3fa5c8b5d..000000000 --- a/dist/services/consumed/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare const _default: { - statusBar: import("./status-bar/status-bar").StatusBarConsumer; - autocomplete: import("./autocomplete").AutocompleteWatchEditor; -}; -export default _default; diff --git a/dist/services/consumed/status-bar/index.d.ts b/dist/services/consumed/status-bar/index.d.ts deleted file mode 100644 index 73f8f54d1..000000000 --- a/dist/services/consumed/status-bar/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as StatusBar } from "./status-bar-component"; -export { default as SignalListView } from "./signal-list-view"; -export { default } from "./status-bar"; diff --git a/dist/services/consumed/status-bar/signal-list-view.d.ts b/dist/services/consumed/status-bar/signal-list-view.d.ts deleted file mode 100644 index a3e12ada1..000000000 --- a/dist/services/consumed/status-bar/signal-list-view.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Panel } from "atom"; -import SelectListView from "atom-select-list"; -import type { Store } from "../../../store"; -export default class SignalListView { - panel: Panel | null | undefined; - previouslyFocusedElement: HTMLElement | null | undefined; - selectListView: SelectListView; - store: Store | null | undefined; - handleKernelCommand: ((...args: Array) => any) | null | undefined; - constructor(store: Store, handleKernelCommand: (...args: Array) => any); - onConfirmed(kernelCommand: { - command: string; - }): void; - toggle(): Promise; - attach(): void; - destroy(): any; - cancel(): void; -} diff --git a/dist/services/consumed/status-bar/signal-list-view.js b/dist/services/consumed/status-bar/signal-list-view.js index 355a44b62..c785ed3f1 100644 --- a/dist/services/consumed/status-bar/signal-list-view.js +++ b/dist/services/consumed/status-bar/signal-list-view.js @@ -106,4 +106,4 @@ class SignalListView { } } exports.default = SignalListView; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLWxpc3Qtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9zZXJ2aWNlcy9jb25zdW1lZC9zdGF0dXMtYmFyL3NpZ25hbC1saXN0LXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx3RUFBOEM7QUFDOUMsbUVBQTBDO0FBQzFDLDBDQUFrRTtBQUdsRSxNQUFNLGFBQWEsR0FBRztJQUNwQjtRQUNFLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxrQkFBa0I7S0FDMUI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLGdCQUFnQjtLQUN4QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLGlCQUFpQjtLQUN6QjtDQUNGLENBQUM7QUFDRixNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCO1FBQ0UsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixLQUFLLEVBQUUsZUFBZTtLQUN2QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixLQUFLLEVBQUUsbUJBQW1CO0tBQzNCO0NBQ0YsQ0FBQztBQUNGLE1BQXFCLGNBQWM7SUFPakMsWUFBWSxLQUFZLEVBQUUsbUJBQWlEO1FBQ3pFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksMEJBQWMsQ0FBQztZQUN2QyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDL0IsS0FBSyxFQUFFLEVBQUU7WUFDVCxnQkFBZ0IsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDckMsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3ZCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENB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QUNGO0FBekZELGlDQXlGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhbmVsIH0gZnJvbSBcImF0b21cIjtcbmltcG9ydCBTZWxlY3RMaXN0VmlldyBmcm9tIFwiYXRvbS1zZWxlY3QtbGlzdFwiO1xuaW1wb3J0IFdTS2VybmVsIGZyb20gXCIuLi8uLi8uLi93cy1rZXJuZWxcIjtcbmltcG9ydCB7IGxvZywgc2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50IH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IFN0b3JlIH0gZnJvbSBcIi4uLy4uLy4uL3N0b3JlXCI7XG5cbmNvbnN0IGJhc2ljQ29tbWFuZHMgPSBbXG4gIHtcbiAgICBuYW1lOiBcIkludGVycnVwdFwiLFxuICAgIHZhbHVlOiBcImludGVycnVwdC1rZXJuZWxcIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IFwiUmVzdGFydFwiLFxuICAgIHZhbHVlOiBcInJlc3RhcnQta2VybmVsXCIsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBcIlNodXQgRG93blwiLFxuICAgIHZhbHVlOiBcInNodXRkb3duLWtlcm5lbFwiLFxuICB9LFxuXTtcbmNvbnN0IHdzS2VybmVsQ29tbWFuZHMgPSBbXG4gIHtcbiAgICBuYW1lOiBcIlJlbmFtZSBzZXNzaW9uIGZvclwiLFxuICAgIHZhbHVlOiBcInJlbmFtZS1rZXJuZWxcIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IFwiRGlzY29ubmVjdCBmcm9tXCIsXG4gICAgdmFsdWU6IFwiZGlzY29ubmVjdC1rZXJuZWxcIixcbiAgfSxcbl07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaWduYWxMaXN0VmlldyB7XG4gIHBhbmVsOiBQYW5lbCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RMaXN0VmlldzogU2VsZWN0TGlzdFZpZXc7XG4gIHN0b3JlOiBTdG9yZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGhhbmRsZUtlcm5lbENvbW1hbmQ6ICgoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlLCBoYW5kbGVLZXJuZWxDb21tYW5kOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB7XG4gICAgdGhpcy5zdG9yZSA9IHN0b3JlO1xuICAgIHRoaXMuaGFuZGxlS2VybmVsQ29tbWFuZCA9IGhhbmRsZUtlcm5lbENvbW1hbmQ7XG4gICAgdGhpcy5zZWxlY3RMaXN0VmlldyA9IG5ldyBTZWxlY3RMaXN0Vmlldyh7XG4gICAgICBpdGVtc0NsYXNzTGlzdDogW1wibWFyay1hY3RpdmVcIl0sXG4gICAgICBpdGVtczogW10sXG4gICAgICBmaWx0ZXJLZXlGb3JJdGVtOiAoaXRlbSkgPT4gaXRlbS5uYW1lLFxuICAgICAgZWxlbWVudEZvckl0ZW06IChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlcIik7XG4gICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBpdGVtLm5hbWU7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgfSxcbiAgICAgIGRpZENvbmZpcm1TZWxlY3Rpb246IChpdGVtKSA9PiB7XG4gICAgICAgIGxvZyhcIlNlbGVjdGVkIGNvbW1hbmQ6XCIsIGl0ZW0pO1xuICAgICAgICB0aGlzLm9uQ29uZmlybWVkKGl0ZW0pO1xuICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgfSxcbiAgICAgIGRpZENhbmNlbFNlbGVjdGlvbjogKCkgPT4gdGhpcy5jYW5jZWwoKSxcbiAgICAgIGVtcHR5TWVzc2FnZTogXCJObyBydW5uaW5nIGtlcm5lbHMgZm9yIHRoaXMgZmlsZSB0eXBlLlwiLFxuICAgIH0pO1xuICB9XG5cbiAgb25Db25maXJtZWQoa2VybmVsQ29tbWFuZDogeyBjb21tYW5kOiBzdHJpbmcgfSkge1xuICAgIGlmICh0aGlzLmhhbmRsZUtlcm5lbENvbW1hbmQpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2VybmVsQ29tbWFuZChrZXJuZWxDb21tYW5kLCB0aGlzLnN0b3JlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMucGFuZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc3RvcmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2VybmVsID0gdGhpcy5zdG9yZS5rZXJuZWw7XG4gICAgaWYgKCFrZXJuZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tbWFuZHMgPVxuICAgICAga2VybmVsLnRyYW5zcG9ydCBpbnN0YW5jZW9mIFdTS2VybmVsXG4gICAgICAgID8gWy4uLmJhc2ljQ29tbWFuZHMsIC4uLndzS2VybmVsQ29tbWFuZHNdXG4gICAgICAgIDogYmFzaWNDb21tYW5kcztcbiAgICBjb25zdCBsaXN0SXRlbXMgPSBjb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+ICh7XG4gICAgICBuYW1lOiBgJHtjb21tYW5kLm5hbWV9ICR7a2VybmVsLmtlcm5lbFNwZWMuZGlzcGxheV9uYW1lfSBrZXJuZWxgLFxuICAgICAgY29tbWFuZDogY29tbWFuZC52YWx1ZSxcbiAgICB9KSk7XG4gICAgYXdhaXQgdGhpcy5zZWxlY3RMaXN0Vmlldy51cGRhdGUoe1xuICAgICAgaXRlbXM6IGxpc3RJdGVtcyxcbiAgICB9KTtcbiAgICB0aGlzLmF0dGFjaCgpO1xuICB9XG5cbiAgYXR0YWNoKCkge1xuICAgIHNldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCh0aGlzKTtcbiAgICBpZiAodGhpcy5wYW5lbCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnBhbmVsID0gYXRvbS53b3Jrc3BhY2UuYWRkTW9kYWxQYW5lbCh7XG4gICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0TGlzdFZpZXcsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RMaXN0Vmlldy5mb2N1cygpO1xuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcucmVzZXQoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5jYW5jZWwoKTtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RMaXN0Vmlldy5kZXN0cm95KCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMucGFuZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5wYW5lbC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wYW5lbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLWxpc3Qtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9zZXJ2aWNlcy9jb25zdW1lZC9zdGF0dXMtYmFyL3NpZ25hbC1saXN0LXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx3RUFBOEM7QUFDOUMsbUVBQTBDO0FBQzFDLDBDQUFrRTtBQUdsRSxNQUFNLGFBQWEsR0FBRztJQUNwQjtRQUNFLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxrQkFBa0I7S0FDMUI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLGdCQUFnQjtLQUN4QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLGlCQUFpQjtLQUN6QjtDQUNGLENBQUM7QUFDRixNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCO1FBQ0UsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixLQUFLLEVBQUUsZUFBZTtLQUN2QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixLQUFLLEVBQUUsbUJBQW1CO0tBQzNCO0NBQ0YsQ0FBQztBQU1GLE1BQXFCLGNBQWM7SUFPakMsWUFBWSxLQUFZLEVBQUUsbUJBQWlEO1FBQ3pFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksMEJBQWMsQ0FBQztZQUN2QyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDL0IsS0FBSyxFQUFFLEVBQXNCO1lBQzdCLGdCQUFnQixFQUFFLENBQUMsSUFBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDckQsY0FBYyxFQUFFLENBQUMsSUFBb0IsRUFBRSxFQUFFO2dCQUN2QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FB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QUFDO0NBQ0Y7QUF6RkQsaUNBeUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiYXRvbVwiO1xyXG5pbXBvcnQgU2VsZWN0TGlzdFZpZXcgZnJvbSBcImF0b20tc2VsZWN0LWxpc3RcIjtcclxuaW1wb3J0IFdTS2VybmVsIGZyb20gXCIuLi8uLi8uLi93cy1rZXJuZWxcIjtcclxuaW1wb3J0IHsgbG9nLCBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgeyBTdG9yZSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZVwiO1xyXG5cclxuY29uc3QgYmFzaWNDb21tYW5kcyA9IFtcclxuICB7XHJcbiAgICBuYW1lOiBcIkludGVycnVwdFwiLFxyXG4gICAgdmFsdWU6IFwiaW50ZXJydXB0LWtlcm5lbFwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogXCJSZXN0YXJ0XCIsXHJcbiAgICB2YWx1ZTogXCJyZXN0YXJ0LWtlcm5lbFwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgbmFtZTogXCJTaHV0IERvd25cIixcclxuICAgIHZhbHVlOiBcInNodXRkb3duLWtlcm5lbFwiLFxyXG4gIH0sXHJcbl07XHJcbmNvbnN0IHdzS2VybmVsQ29tbWFuZHMgPSBbXHJcbiAge1xyXG4gICAgbmFtZTogXCJSZW5hbWUgc2Vzc2lvbiBmb3JcIixcclxuICAgIHZhbHVlOiBcInJlbmFtZS1rZXJuZWxcIixcclxuICB9LFxyXG4gIHtcclxuICAgIG5hbWU6IFwiRGlzY29ubmVjdCBmcm9tXCIsXHJcbiAgICB2YWx1ZTogXCJkaXNjb25uZWN0LWtlcm5lbFwiLFxyXG4gIH0sXHJcbl07XHJcblxyXG5pbnRlcmZhY2UgU2VsZWN0TGlzdEl0ZW0ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb21tYW5kOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2lnbmFsTGlzdFZpZXcge1xyXG4gIHBhbmVsOiBQYW5lbCB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgc2VsZWN0TGlzdFZpZXc6IFNlbGVjdExpc3RWaWV3O1xyXG4gIHN0b3JlOiBTdG9yZSB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgaGFuZGxlS2VybmVsQ29tbWFuZDogKCguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnkpIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlLCBoYW5kbGVLZXJuZWxDb21tYW5kOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gYW55KSB7XHJcbiAgICB0aGlzLnN0b3JlID0gc3RvcmU7XHJcbiAgICB0aGlzLmhhbmRsZUtlcm5lbENvbW1hbmQgPSBoYW5kbGVLZXJuZWxDb21tYW5kO1xyXG4gICAgdGhpcy5zZWxlY3RMaXN0VmlldyA9IG5ldyBTZWxlY3RMaXN0Vmlldyh7XHJcbiAgICAgIGl0ZW1zQ2xhc3NMaXN0OiBbXCJtYXJrLWFjdGl2ZVwiXSxcclxuICAgICAgaXRlbXM6IFtdIGFzIFNlbGVjdExpc3RJdGVtW10sXHJcbiAgICAgIGZpbHRlcktleUZvckl0ZW06IChpdGVtOiBTZWxlY3RMaXN0SXRlbSkgPT4gaXRlbS5uYW1lLFxyXG4gICAgICBlbGVtZW50Rm9ySXRlbTogKGl0ZW06IFNlbGVjdExpc3RJdGVtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaVwiKTtcclxuICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gaXRlbS5uYW1lO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgICB9LFxyXG4gICAgICBkaWRDb25maXJtU2VsZWN0aW9uOiAoaXRlbTogU2VsZWN0TGlzdEl0ZW0pID0+IHtcclxuICAgICAgICBsb2coXCJTZWxlY3RlZCBjb21tYW5kOlwiLCBpdGVtKTtcclxuICAgICAgICB0aGlzLm9uQ29uZmlybWVkKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGRpZENhbmNlbFNlbGVjdGlvbjogKCkgPT4gdGhpcy5jYW5jZWwoKSxcclxuICAgICAgZW1wdHlNZXNzYWdlOiBcIk5vIHJ1bm5pbmcga2VybmVscyBmb3IgdGhpcyBmaWxlIHR5cGUuXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ29uZmlybWVkKGtlcm5lbENvbW1hbmQ6IHsgY29tbWFuZDogc3RyaW5nIH0pIHtcclxuICAgIGlmICh0aGlzLmhhbmRsZUtlcm5lbENvbW1hbmQpIHtcclxuICAgICAgdGhpcy5oYW5kbGVLZXJuZWxDb21tYW5kKGtlcm5lbENvbW1hbmQsIHRoaXMuc3RvcmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdG9nZ2xlKCkge1xyXG4gICAgaWYgKHRoaXMucGFuZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zdG9yZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBrZXJuZWwgPSB0aGlzLnN0b3JlLmtlcm5lbDtcclxuICAgIGlmICgha2VybmVsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbW1hbmRzID1cclxuICAgICAga2VybmVsLnRyYW5zcG9ydCBpbnN0YW5jZW9mIFdTS2VybmVsXHJcbiAgICAgICAgPyBbLi4uYmFzaWNDb21tYW5kcywgLi4ud3NLZXJuZWxDb21tYW5kc11cclxuICAgICAgICA6IGJhc2ljQ29tbWFuZHM7XHJcbiAgICBjb25zdCBsaXN0SXRlbXMgPSBjb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+ICh7XHJcbiAgICAgIG5hbWU6IGAke2NvbW1hbmQubmFtZX0gJHtrZXJuZWwua2VybmVsU3BlYy5kaXNwbGF5X25hbWV9IGtlcm5lbGAsXHJcbiAgICAgIGNvbW1hbmQ6IGNvbW1hbmQudmFsdWUsXHJcbiAgICB9KSk7XHJcbiAgICBhd2FpdCB0aGlzLnNlbGVjdExpc3RWaWV3LnVwZGF0ZSh7XHJcbiAgICAgIGl0ZW1zOiBsaXN0SXRlbXMsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuYXR0YWNoKCk7XHJcbiAgfVxyXG5cclxuICBhdHRhY2goKSB7XHJcbiAgICBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQodGhpcyk7XHJcbiAgICBpZiAodGhpcy5wYW5lbCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucGFuZWwgPSBhdG9tLndvcmtzcGFjZS5hZGRNb2RhbFBhbmVsKHtcclxuICAgICAgICBpdGVtOiB0aGlzLnNlbGVjdExpc3RWaWV3LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcuZm9jdXMoKTtcclxuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0TGlzdFZpZXcuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgaWYgKHRoaXMucGFuZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnBhbmVsLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBhbmVsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/dist/services/consumed/status-bar/status-bar-component.d.ts b/dist/services/consumed/status-bar/status-bar-component.d.ts deleted file mode 100644 index 7ce5a95ef..000000000 --- a/dist/services/consumed/status-bar/status-bar-component.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import React from "react"; -import type { Store } from "../../../store"; -declare type Props = { - store: Store; - onClick: (...args: Array) => any; -}; -declare class StatusBar extends React.Component { - render(): JSX.Element; -} -export default StatusBar; diff --git a/dist/services/consumed/status-bar/status-bar-component.js b/dist/services/consumed/status-bar/status-bar-component.js index 9d477cd6d..1fcb3da2f 100644 --- a/dist/services/consumed/status-bar/status-bar-component.js +++ b/dist/services/consumed/status-bar/status-bar-component.js @@ -53,4 +53,4 @@ StatusBar = __decorate([ mobx_react_1.observer ], StatusBar); exports.default = StatusBar; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWJhci1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvc2VydmljZXMvY29uc3VtZWQvc3RhdHVzLWJhci9zdGF0dXMtYmFyLWNvbXBvbmVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsMkNBQXNDO0FBR3RDLDBDQUFvRDtBQU9wRCxJQUFNLFNBQVMsR0FBZixNQUFNLFNBQVUsU0FBUSxlQUFLLENBQUMsU0FBZ0I7SUFDNUMsTUFBTTtRQUNKLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFO1lBQzdELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9ELE1BQU0sQ0FBQyxjQUFjLEtBQUssQ0FBQztZQUMzQixNQUFNLENBQUMsaUJBQWlCLEtBQUssMEJBQWtCLENBQUMsQ0FBQyxDQUFDLENBQ2hELHFDQUNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDakIsTUFBTTtnQkFDTixPQUFPO2FBQ1IsQ0FBQztZQUdILE1BQU0sQ0FBQyxXQUFXOztZQUFLLE1BQU0sQ0FBQyxjQUFjOztZQUFJLEdBQUc7WUFDbkQsTUFBTSxDQUFDLGNBQWMsQ0FDcEIsQ0FDTCxDQUFDLENBQUMsQ0FBQyxDQUNGLHFDQUNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDakIsTUFBTTtnQkFDTixPQUFPO2FBQ1IsQ0FBQztZQUdILE1BQU0sQ0FBQyxXQUFXOztZQUFLLE1BQU0sQ0FBQyxjQUFjOztZQUFJLEdBQUc7WUFDbkQsTUFBTSxDQUFDLGNBQWM7O1lBQUssTUFBTSxDQUFDLGlCQUFpQixDQUNqRCxDQUNMLENBQ0YsQ0FBQyxDQUFDLENBQUMsQ0FDRixxQ0FDRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQ2pCLE1BQU07Z0JBQ04sT0FBTzthQUNSLENBQUM7WUFHSCxNQUFNLENBQUMsV0FBVzs7WUFBSyxNQUFNLENBQUMsY0FBYyxDQUMzQyxDQUNMLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRixDQUFBO0FBL0NLLFNBQVM7SUFEZCxxQkFBUTtHQUNILFNBQVMsQ0ErQ2Q7QUFDRCxrQkFBZSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0XCI7XG5pbXBvcnQgdHlwZSBLZXJuZWwgZnJvbSBcIi4uLy4uLy4uL2tlcm5lbFwiO1xuaW1wb3J0IHR5cGUgeyBTdG9yZSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZVwiO1xuaW1wb3J0IHsgTk9fRVhFQ1RJTUVfU1RSSU5HIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzXCI7XG50eXBlIFByb3BzID0ge1xuICBzdG9yZTogU3RvcmU7XG4gIG9uQ2xpY2s6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnk7XG59O1xuXG5Ab2JzZXJ2ZXJcbmNsYXNzIFN0YXR1c0JhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcz4ge1xuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBrZXJuZWwsIG1hcmtlcnMsIGNvbmZpZ01hcHBpbmcgfSA9IHRoaXMucHJvcHMuc3RvcmU7XG4gICAgaWYgKCFrZXJuZWwgfHwgY29uZmlnTWFwcGluZy5nZXQoXCJIeWRyb2dlbi5zdGF0dXNCYXJEaXNhYmxlXCIpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgdmlldyA9IGNvbmZpZ01hcHBpbmcuZ2V0KFwiSHlkcm9nZW4uc3RhdHVzQmFyS2VybmVsSW5mb1wiKSA/ICggLy8gYnJhbmNoIG9uIGlmIGV4ZWMgdGltZSBpcyBub3QgYXZhaWxhYmxlIG9yIG5vIGV4ZWN1dGlvbiBoYXMgaGFwcGVuZWRcbiAgICAgIGtlcm5lbC5leGVjdXRpb25Db3VudCA9PT0gMCB8fFxuICAgICAga2VybmVsLmxhc3RFeGVjdXRpb25UaW1lID09PSBOT19FWEVDVElNRV9TVFJJTkcgPyAoXG4gICAgICAgIDxhXG4gICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DbGljayh7XG4gICAgICAgICAgICAgIGtlcm5lbCxcbiAgICAgICAgICAgICAgbWFya2VycyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge2tlcm5lbC5kaXNwbGF5TmFtZX0gfCB7a2VybmVsLmV4ZWN1dGlvblN0YXRlfSB8e1wiIFwifVxuICAgICAgICAgIHtrZXJuZWwuZXhlY3V0aW9uQ291bnR9XG4gICAgICAgIDwvYT5cbiAgICAgICkgOiAoXG4gICAgICAgIDxhXG4gICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DbGljayh7XG4gICAgICAgICAgICAgIGtlcm5lbCxcbiAgICAgICAgICAgICAgbWFya2VycyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge2tlcm5lbC5kaXNwbGF5TmFtZX0gfCB7a2VybmVsLmV4ZWN1dGlvblN0YXRlfSB8e1wiIFwifVxuICAgICAgICAgIHtrZXJuZWwuZXhlY3V0aW9uQ291bnR9IHwge2tlcm5lbC5sYXN0RXhlY3V0aW9uVGltZX1cbiAgICAgICAgPC9hPlxuICAgICAgKVxuICAgICkgOiAoXG4gICAgICA8YVxuICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgIHRoaXMucHJvcHMub25DbGljayh7XG4gICAgICAgICAgICBrZXJuZWwsXG4gICAgICAgICAgICBtYXJrZXJzLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAge2tlcm5lbC5kaXNwbGF5TmFtZX0gfCB7a2VybmVsLmV4ZWN1dGlvblN0YXRlfVxuICAgICAgPC9hPlxuICAgICk7XG4gICAgcmV0dXJuIHZpZXc7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0JhcjtcbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWJhci1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvc2VydmljZXMvY29uc3VtZWQvc3RhdHVzLWJhci9zdGF0dXMtYmFyLWNvbXBvbmVudC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsMkNBQXNDO0FBRXRDLDBDQUFvRDtBQU9wRCxJQUFNLFNBQVMsR0FBZixNQUFNLFNBQVUsU0FBUSxlQUFLLENBQUMsU0FBZ0I7SUFDNUMsTUFBTTtRQUNKLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFO1lBQzdELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9ELE1BQU0sQ0FBQyxjQUFjLEtBQUssQ0FBQztZQUMzQixNQUFNLENBQUMsaUJBQWlCLEtBQUssMEJBQWtCLENBQUMsQ0FBQyxDQUFDLENBQ2hELHFDQUNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDakIsTUFBTTtnQkFDTixPQUFPO2FBQ1IsQ0FBQztZQUdILE1BQU0sQ0FBQyxXQUFXOztZQUFLLE1BQU0sQ0FBQyxjQUFjOztZQUFJLEdBQUc7WUFDbkQsTUFBTSxDQUFDLGNBQWMsQ0FDcEIsQ0FDTCxDQUFDLENBQUMsQ0FBQyxDQUNGLHFDQUNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDakIsTUFBTTtnQkFDTixPQUFPO2FBQ1IsQ0FBQztZQUdILE1BQU0sQ0FBQyxXQUFXOztZQUFLLE1BQU0sQ0FBQyxjQUFjOztZQUFJLEdBQUc7WUFDbkQsTUFBTSxDQUFDLGNBQWM7O1lBQUssTUFBTSxDQUFDLGlCQUFpQixDQUNqRCxDQUNMLENBQ0YsQ0FBQyxDQUFDLENBQUMsQ0FDRixxQ0FDRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQ2pCLE1BQU07Z0JBQ04sT0FBTzthQUNSLENBQUM7WUFHSCxNQUFNLENBQUMsV0FBVzs7WUFBSyxNQUFNLENBQUMsY0FBYyxDQUMzQyxDQUNMLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRixDQUFBO0FBL0NLLFNBQVM7SUFEZCxxQkFBUTtHQUNILFNBQVMsQ0ErQ2Q7QUFDRCxrQkFBZSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcclxuaW1wb3J0IHR5cGUgeyBTdG9yZSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZVwiO1xyXG5pbXBvcnQgeyBOT19FWEVDVElNRV9TVFJJTkcgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHNcIjtcclxudHlwZSBQcm9wcyA9IHtcclxuICBzdG9yZTogU3RvcmU7XHJcbiAgb25DbGljazogKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueTtcclxufTtcclxuXHJcbkBvYnNlcnZlclxyXG5jbGFzcyBTdGF0dXNCYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHM+IHtcclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGtlcm5lbCwgbWFya2VycywgY29uZmlnTWFwcGluZyB9ID0gdGhpcy5wcm9wcy5zdG9yZTtcclxuICAgIGlmICgha2VybmVsIHx8IGNvbmZpZ01hcHBpbmcuZ2V0KFwiSHlkcm9nZW4uc3RhdHVzQmFyRGlzYWJsZVwiKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHZpZXcgPSBjb25maWdNYXBwaW5nLmdldChcIkh5ZHJvZ2VuLnN0YXR1c0Jhcktlcm5lbEluZm9cIikgPyAoIC8vIGJyYW5jaCBvbiBpZiBleGVjIHRpbWUgaXMgbm90IGF2YWlsYWJsZSBvciBubyBleGVjdXRpb24gaGFzIGhhcHBlbmVkXHJcbiAgICAgIGtlcm5lbC5leGVjdXRpb25Db3VudCA9PT0gMCB8fFxyXG4gICAgICBrZXJuZWwubGFzdEV4ZWN1dGlvblRpbWUgPT09IE5PX0VYRUNUSU1FX1NUUklORyA/IChcclxuICAgICAgICA8YVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrKHtcclxuICAgICAgICAgICAgICBrZXJuZWwsXHJcbiAgICAgICAgICAgICAgbWFya2VycyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7a2VybmVsLmRpc3BsYXlOYW1lfSB8IHtrZXJuZWwuZXhlY3V0aW9uU3RhdGV9IHx7XCIgXCJ9XHJcbiAgICAgICAgICB7a2VybmVsLmV4ZWN1dGlvbkNvdW50fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgKSA6IChcclxuICAgICAgICA8YVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrKHtcclxuICAgICAgICAgICAgICBrZXJuZWwsXHJcbiAgICAgICAgICAgICAgbWFya2VycyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7a2VybmVsLmRpc3BsYXlOYW1lfSB8IHtrZXJuZWwuZXhlY3V0aW9uU3RhdGV9IHx7XCIgXCJ9XHJcbiAgICAgICAgICB7a2VybmVsLmV4ZWN1dGlvbkNvdW50fSB8IHtrZXJuZWwubGFzdEV4ZWN1dGlvblRpbWV9XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICApXHJcbiAgICApIDogKFxyXG4gICAgICA8YVxyXG4gICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICB0aGlzLnByb3BzLm9uQ2xpY2soe1xyXG4gICAgICAgICAgICBrZXJuZWwsXHJcbiAgICAgICAgICAgIG1hcmtlcnMsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIHtrZXJuZWwuZGlzcGxheU5hbWV9IHwge2tlcm5lbC5leGVjdXRpb25TdGF0ZX1cclxuICAgICAgPC9hPlxyXG4gICAgKTtcclxuICAgIHJldHVybiB2aWV3O1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBTdGF0dXNCYXI7XHJcbiJdfQ== \ No newline at end of file diff --git a/dist/services/consumed/status-bar/status-bar.d.ts b/dist/services/consumed/status-bar/status-bar.d.ts deleted file mode 100644 index 94279cd53..000000000 --- a/dist/services/consumed/status-bar/status-bar.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Disposable } from "atom"; -import { StatusBar as AtomStatusBar } from "atom/status-bar"; -import SignalListView from "./signal-list-view"; -import type { Store } from "../../../store"; -export declare class StatusBarConsumer { - signalListView: SignalListView; - addStatusBar(store: Store, statusBar: AtomStatusBar, handleKernelCommand: (...args: Array) => any): Disposable; - showKernelCommands(store: Store, handleKernelCommand: (...args: Array) => any): void; -} -declare const statusBarConsumer: StatusBarConsumer; -export default statusBarConsumer; diff --git a/dist/services/consumed/status-bar/status-bar.js b/dist/services/consumed/status-bar/status-bar.js index 8d3ce5df3..e6b293bd8 100644 --- a/dist/services/consumed/status-bar/status-bar.js +++ b/dist/services/consumed/status-bar/status-bar.js @@ -40,4 +40,4 @@ class StatusBarConsumer { exports.StatusBarConsumer = StatusBarConsumer; const statusBarConsumer = new StatusBarConsumer(); exports.default = statusBarConsumer; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9zZXJ2aWNlcy9jb25zdW1lZC9zdGF0dXMtYmFyL3N0YXR1cy1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQiwrQkFBa0M7QUFFbEMsa0ZBQStDO0FBQy9DLDBFQUFnRDtBQUNoRCwwQ0FBOEM7QUFJOUMsTUFBYSxpQkFBaUI7SUFHNUIsWUFBWSxDQUNWLEtBQVksRUFDWixTQUF3QixFQUN4QixtQkFBaUQ7UUFFakQsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDMUMsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixRQUFRLEVBQUUsR0FBRztTQUNkLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQztRQUVGLG9CQUFZLENBQ1YsOEJBQUMsOEJBQVMsSUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUksRUFDN0MsZ0JBQWdCLENBQ2pCLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDakUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQixDQUNoQixLQUFZLEVBQ1osbUJBQWlEO1FBRWpELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFFekMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixjQUFjLEdBQUcsSUFBSSwwQkFBYyxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxjQUFjLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUM5QjtRQUVELGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUEzQ0QsOENBMkNDO0FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDbEQsa0JBQWUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBEaXNwb3NhYmxlIH0gZnJvbSBcImF0b21cIjtcbmltcG9ydCB7IFN0YXR1c0JhciBhcyBBdG9tU3RhdHVzQmFyIH0gZnJvbSBcImF0b20vc3RhdHVzLWJhclwiO1xuaW1wb3J0IFN0YXR1c0JhciBmcm9tIFwiLi9zdGF0dXMtYmFyLWNvbXBvbmVudFwiO1xuaW1wb3J0IFNpZ25hbExpc3RWaWV3IGZyb20gXCIuL3NpZ25hbC1saXN0LXZpZXdcIjtcbmltcG9ydCB7IHJlYWN0RmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBTdG9yZSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZVwiO1xuaW1wb3J0IHR5cGUgS2VybmVsIGZyb20gXCIuLi8uLi8uLi9rZXJuZWxcIjtcbmltcG9ydCB0eXBlIE1hcmtlclN0b3JlIGZyb20gXCIuLi8uLi8uLi9zdG9yZS9tYXJrZXJzXCI7XG5leHBvcnQgY2xhc3MgU3RhdHVzQmFyQ29uc3VtZXIge1xuICBzaWduYWxMaXN0VmlldzogU2lnbmFsTGlzdFZpZXc7XG5cbiAgYWRkU3RhdHVzQmFyKFxuICAgIHN0b3JlOiBTdG9yZSxcbiAgICBzdGF0dXNCYXI6IEF0b21TdGF0dXNCYXIsXG4gICAgaGFuZGxlS2VybmVsQ29tbWFuZDogKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueVxuICApIHtcbiAgICBjb25zdCBzdGF0dXNCYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBzdGF0dXNCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJpbmxpbmUtYmxvY2tcIiwgXCJoeWRyb2dlblwiKTtcbiAgICBjb25zdCBzdGF0dXNCYXJUaWxlID0gc3RhdHVzQmFyLmFkZExlZnRUaWxlKHtcbiAgICAgIGl0ZW06IHN0YXR1c0JhckVsZW1lbnQsXG4gICAgICBwcmlvcml0eTogMTAwLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb25DbGljayA9IChzdG9yZTogU3RvcmUpID0+IHtcbiAgICAgIHRoaXMuc2hvd0tlcm5lbENvbW1hbmRzKHN0b3JlLCBoYW5kbGVLZXJuZWxDb21tYW5kKTtcbiAgICB9O1xuXG4gICAgcmVhY3RGYWN0b3J5KFxuICAgICAgPFN0YXR1c0JhciBzdG9yZT17c3RvcmV9IG9uQ2xpY2s9e29uQ2xpY2t9IC8+LFxuICAgICAgc3RhdHVzQmFyRWxlbWVudFxuICAgICk7XG4gICAgY29uc3QgZGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHN0YXR1c0JhclRpbGUuZGVzdHJveSgpKTtcbiAgICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChkaXNwb3NhYmxlKTtcbiAgICByZXR1cm4gZGlzcG9zYWJsZTtcbiAgfVxuXG4gIHNob3dLZXJuZWxDb21tYW5kcyhcbiAgICBzdG9yZTogU3RvcmUsXG4gICAgaGFuZGxlS2VybmVsQ29tbWFuZDogKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueVxuICApIHtcbiAgICBsZXQgc2lnbmFsTGlzdFZpZXcgPSB0aGlzLnNpZ25hbExpc3RWaWV3O1xuXG4gICAgaWYgKCFzaWduYWxMaXN0Vmlldykge1xuICAgICAgc2lnbmFsTGlzdFZpZXcgPSBuZXcgU2lnbmFsTGlzdFZpZXcoc3RvcmUsIGhhbmRsZUtlcm5lbENvbW1hbmQpO1xuICAgICAgdGhpcy5zaWduYWxMaXN0VmlldyA9IHNpZ25hbExpc3RWaWV3O1xuICAgIH0gZWxzZSB7XG4gICAgICBzaWduYWxMaXN0Vmlldy5zdG9yZSA9IHN0b3JlO1xuICAgIH1cblxuICAgIHNpZ25hbExpc3RWaWV3LnRvZ2dsZSgpO1xuICB9XG59XG5jb25zdCBzdGF0dXNCYXJDb25zdW1lciA9IG5ldyBTdGF0dXNCYXJDb25zdW1lcigpO1xuZXhwb3J0IGRlZmF1bHQgc3RhdHVzQmFyQ29uc3VtZXI7XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9zZXJ2aWNlcy9jb25zdW1lZC9zdGF0dXMtYmFyL3N0YXR1cy1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQiwrQkFBa0M7QUFFbEMsa0ZBQStDO0FBQy9DLDBFQUFnRDtBQUNoRCwwQ0FBOEM7QUFHOUMsTUFBYSxpQkFBaUI7SUFHNUIsWUFBWSxDQUNWLEtBQVksRUFDWixTQUF3QixFQUN4QixtQkFBaUQ7UUFFakQsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDMUMsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixRQUFRLEVBQUUsR0FBRztTQUNkLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQztRQUVGLG9CQUFZLENBQ1YsOEJBQUMsOEJBQVMsSUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUksRUFDN0MsZ0JBQWdCLENBQ2pCLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDakUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQixDQUNoQixLQUFZLEVBQ1osbUJBQWlEO1FBRWpELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFFekMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixjQUFjLEdBQUcsSUFBSSwwQkFBYyxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxjQUFjLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUM5QjtRQUVELGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUEzQ0QsOENBMkNDO0FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDbEQsa0JBQWUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERpc3Bvc2FibGUgfSBmcm9tIFwiYXRvbVwiO1xyXG5pbXBvcnQgeyBTdGF0dXNCYXIgYXMgQXRvbVN0YXR1c0JhciB9IGZyb20gXCJhdG9tL3N0YXR1cy1iYXJcIjtcclxuaW1wb3J0IFN0YXR1c0JhciBmcm9tIFwiLi9zdGF0dXMtYmFyLWNvbXBvbmVudFwiO1xyXG5pbXBvcnQgU2lnbmFsTGlzdFZpZXcgZnJvbSBcIi4vc2lnbmFsLWxpc3Qtdmlld1wiO1xyXG5pbXBvcnQgeyByZWFjdEZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgeyBTdG9yZSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFN0YXR1c0JhckNvbnN1bWVyIHtcclxuICBzaWduYWxMaXN0VmlldzogU2lnbmFsTGlzdFZpZXc7XHJcblxyXG4gIGFkZFN0YXR1c0JhcihcclxuICAgIHN0b3JlOiBTdG9yZSxcclxuICAgIHN0YXR1c0JhcjogQXRvbVN0YXR1c0JhcixcclxuICAgIGhhbmRsZUtlcm5lbENvbW1hbmQ6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnlcclxuICApIHtcclxuICAgIGNvbnN0IHN0YXR1c0JhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgc3RhdHVzQmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiaW5saW5lLWJsb2NrXCIsIFwiaHlkcm9nZW5cIik7XHJcbiAgICBjb25zdCBzdGF0dXNCYXJUaWxlID0gc3RhdHVzQmFyLmFkZExlZnRUaWxlKHtcclxuICAgICAgaXRlbTogc3RhdHVzQmFyRWxlbWVudCxcclxuICAgICAgcHJpb3JpdHk6IDEwMCxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uQ2xpY2sgPSAoc3RvcmU6IFN0b3JlKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd0tlcm5lbENvbW1hbmRzKHN0b3JlLCBoYW5kbGVLZXJuZWxDb21tYW5kKTtcclxuICAgIH07XHJcblxyXG4gICAgcmVhY3RGYWN0b3J5KFxyXG4gICAgICA8U3RhdHVzQmFyIHN0b3JlPXtzdG9yZX0gb25DbGljaz17b25DbGlja30gLz4sXHJcbiAgICAgIHN0YXR1c0JhckVsZW1lbnRcclxuICAgICk7XHJcbiAgICBjb25zdCBkaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gc3RhdHVzQmFyVGlsZS5kZXN0cm95KCkpO1xyXG4gICAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoZGlzcG9zYWJsZSk7XHJcbiAgICByZXR1cm4gZGlzcG9zYWJsZTtcclxuICB9XHJcblxyXG4gIHNob3dLZXJuZWxDb21tYW5kcyhcclxuICAgIHN0b3JlOiBTdG9yZSxcclxuICAgIGhhbmRsZUtlcm5lbENvbW1hbmQ6ICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiBhbnlcclxuICApIHtcclxuICAgIGxldCBzaWduYWxMaXN0VmlldyA9IHRoaXMuc2lnbmFsTGlzdFZpZXc7XHJcblxyXG4gICAgaWYgKCFzaWduYWxMaXN0Vmlldykge1xyXG4gICAgICBzaWduYWxMaXN0VmlldyA9IG5ldyBTaWduYWxMaXN0VmlldyhzdG9yZSwgaGFuZGxlS2VybmVsQ29tbWFuZCk7XHJcbiAgICAgIHRoaXMuc2lnbmFsTGlzdFZpZXcgPSBzaWduYWxMaXN0VmlldztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNpZ25hbExpc3RWaWV3LnN0b3JlID0gc3RvcmU7XHJcbiAgICB9XHJcblxyXG4gICAgc2lnbmFsTGlzdFZpZXcudG9nZ2xlKCk7XHJcbiAgfVxyXG59XHJcbmNvbnN0IHN0YXR1c0JhckNvbnN1bWVyID0gbmV3IFN0YXR1c0JhckNvbnN1bWVyKCk7XHJcbmV4cG9ydCBkZWZhdWx0IHN0YXR1c0JhckNvbnN1bWVyO1xyXG4iXX0= \ No newline at end of file diff --git a/dist/services/index.d.ts b/dist/services/index.d.ts deleted file mode 100644 index 7af8dd557..000000000 --- a/dist/services/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -declare const _default: { - consumed: { - statusBar: import("./consumed/status-bar/status-bar").StatusBarConsumer; - autocomplete: import("./consumed/autocomplete").AutocompleteWatchEditor; - }; - provided: { - autocomplete: typeof import("./provided/autocomplete"); - }; -}; -export default _default; diff --git a/dist/services/provided/autocomplete.d.ts b/dist/services/provided/autocomplete.d.ts deleted file mode 100644 index bdfc1aab7..000000000 --- a/dist/services/provided/autocomplete.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { AutocompleteProvider } from "atom/autocomplete-plus"; -import type { Store } from "../../store"; -export declare function provideAutocompleteResults(store: Store): AutocompleteProvider; diff --git a/dist/services/provided/autocomplete.js b/dist/services/provided/autocomplete.js index 04af0b13e..77cfcdc96 100644 --- a/dist/services/provided/autocomplete.js +++ b/dist/services/provided/autocomplete.js @@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.provideAutocompleteResults = void 0; -const lodash_1 = __importDefault(require("lodash")); +const head_1 = __importDefault(require("lodash/head")); const anser_1 = __importDefault(require("anser")); const utils_1 = require("../../utils"); const iconHTML = ``; @@ -20,7 +20,7 @@ function parseCompletions(results, prefix) { if (metadata && metadata._jupyter_types_experimental) { const comps = metadata._jupyter_types_experimental; if (comps.length > 0 && comps[0].text) { - return lodash_1.default.map(comps, (match) => { + return comps.map((match) => { const text = match.text; const start = match.start && match.end ? match.start : cursor_start; const end = match.start && match.end ? match.end : cursor_end; @@ -38,7 +38,7 @@ function parseCompletions(results, prefix) { } } const replacementPrefix = prefix.slice(cursor_start, cursor_end); - return lodash_1.default.map(matches, (match) => { + return matches.map((match) => { const text = match; const replacedText = prefix.slice(0, cursor_start) + text; return { @@ -72,7 +72,7 @@ function provideAutocompleteResults(store) { ]); const regex = regexes[kernel.language]; if (regex) { - prefix = lodash_1.default.head(line.match(regex)) || ""; + prefix = head_1.default(line.match(regex)) || ""; } else { prefix = line; @@ -140,4 +140,4 @@ function provideAutocompleteResults(store) { return autocompleteProvider; } exports.provideAutocompleteResults = provideAutocompleteResults; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3NlcnZpY2VzL3Byb3ZpZGVkL2F1dG9jb21wbGV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxvREFBdUI7QUFDdkIsa0RBQTBCO0FBQzFCLHVDQUFzRDtBQWV0RCxNQUFNLFFBQVEsR0FBRyxhQUFhLFNBQVMsa0RBQWtELENBQUM7QUFDMUYsTUFBTSxPQUFPLEdBQUc7SUFFZCxDQUFDLEVBQUUsc0JBQXNCO0lBRXpCLE1BQU0sRUFBRSwrQ0FBK0M7SUFFdkQsR0FBRyxFQUFFLG9DQUFvQztDQUMxQyxDQUFDO0FBRUYsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFzQixFQUFFLE1BQWM7SUFDOUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFHdEMsTUFBTSxZQUFZLEdBQUcsMEJBQWtCLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLFVBQVUsR0FBRywwQkFBa0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRWxFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQywyQkFBMkIsRUFBRTtRQUNwRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsMkJBQTJCLENBQUM7UUFFbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQ3JDLE9BQU8sZ0JBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtB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QUFPLENBQUMseUNBQXlDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNuRSxvQkFBb0IsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsNkNBQTZDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN2RSxvQkFBb0IsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNGLE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQXJIRCxnRUFxSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRvY29tcGxldGVQcm92aWRlciB9IGZyb20gXCJhdG9tL2F1dG9jb21wbGV0ZS1wbHVzXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgQW5zZXIgZnJvbSBcImFuc2VyXCI7XG5pbXBvcnQgeyBsb2csIGNoYXJfaWR4X3RvX2pzX2lkeCB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBTdG9yZSB9IGZyb20gXCIuLi8uLi9zdG9yZVwiO1xudHlwZSBDb21wbGV0ZVJlcGx5ID0ge1xuICBtYXRjaGVzOiBBcnJheTxzdHJpbmc+O1xuICBjdXJzb3Jfc3RhcnQ6IG51bWJlcjtcbiAgY3Vyc29yX2VuZDogbnVtYmVyO1xuICBtZXRhZGF0YT86IHtcbiAgICBfanVweXRlcl90eXBlc19leHBlcmltZW50YWw/OiBBcnJheTx7XG4gICAgICBzdGFydD86IG51bWJlcjtcbiAgICAgIGVuZD86IG51bWJlcjtcbiAgICAgIHRleHQ6IHN0cmluZztcbiAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgfT47XG4gIH07XG59O1xuY29uc3QgaWNvbkhUTUwgPSBgPGltZyBzcmM9JyR7X19kaXJuYW1lfS8uLi8uLi8uLi9zdGF0aWMvbG9nby5zdmcnIHN0eWxlPSd3aWR0aDogMTAwJTsnPmA7XG5jb25zdCByZWdleGVzID0ge1xuICAvLyBwcmV0dHkgZG9kZ3ksIGFkYXB0ZWQgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS84Mzk2NjU4XG4gIHI6IC8oW15cXFdcXGRdfFxcLilbXFx3JC5dKiQvLFxuICAvLyBhZGFwdGVkIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvNTQ3NDAwOFxuICBweXRob246IC8oW15cXFdcXGRdfFtcXHUwMEEwLVxcdUZGRkZdKVtcXHcuXFx1MDBBMC1cXHVGRkZGXSokLyxcbiAgLy8gYWRhcHRlZCBmcm9tIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS52YXJpYWJsZXMuYmFzaWNzLnBocFxuICBwaHA6IC9bJEEtWl9hLXpcXHg3Zi1cXHhmZl1bXFx3XFx4N2YtXFx4ZmZdKiQvLFxufTtcblxuZnVuY3Rpb24gcGFyc2VDb21wbGV0aW9ucyhyZXN1bHRzOiBDb21wbGV0ZVJlcGx5LCBwcmVmaXg6IHN0cmluZykge1xuICBjb25zdCB7IG1hdGNoZXMsIG1ldGFkYXRhIH0gPSByZXN1bHRzO1xuICAvLyBATk9URTogVGhpcyBjYW4gbWFrZSBpbnZhbGlkIGByZXBsYWNlZFByZWZpeGAgYW5kIGByZXBsYWNlZFRleHRgIHdoZW4gYSBsaW5lIGluY2x1ZGVzIHVuaWNvZGUgY2hhcmFjdGVyc1xuICAvLyBAVE9ETyAoQGF2aWF0ZXNrKTogVXNlIGBSZWdleGAgdG8gZGV0ZWN0IHRoZW0gcmVnYXJkbGVzcyBvZiB0aGUgYHJlc3VsdHMuY3Vyc29yXypgIGZlZWRiYWNrcyBmcm9tIGtlcm5lbHNcbiAgY29uc3QgY3Vyc29yX3N0YXJ0ID0gY2hhcl9pZHhfdG9fanNfaWR4KHJlc3VsdHMuY3Vyc29yX3N0YXJ0LCBwcmVmaXgpO1xuICBjb25zdCBjdXJzb3JfZW5kID0gY2hhcl9pZHhfdG9fanNfaWR4KHJlc3VsdHMuY3Vyc29yX2VuZCwgcHJlZml4KTtcblxuICBpZiAobWV0YWRhdGEgJiYgbWV0YWRhdGEuX2p1cHl0ZXJfdHlwZXNfZXhwZXJpbWVudGFsKSB7XG4gICAgY29uc3QgY29tcHMgPSBtZXRhZGF0YS5fanVweXRlcl90eXBlc19leHBlcmltZW50YWw7XG5cbiAgICBpZiAoY29tcHMubGVuZ3RoID4gMCAmJiBjb21wc1swXS50ZXh0KSB7XG4gICAgICByZXR1cm4gXy5tYXAoY29tcHMsIChtYXRjaCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXh0ID0gbWF0Y2gudGV4dDtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBtYXRjaC5zdGFydCAmJiBtYXRjaC5lbmQgPyBtYXRjaC5zdGFydCA6IGN1cnNvcl9zdGFydDtcbiAgICAgICAgY29uc3QgZW5kID0gbWF0Y2guc3RhcnQgJiYgbWF0Y2guZW5kID8gbWF0Y2guZW5kIDogY3Vyc29yX2VuZDtcbiAgICAgICAgY29uc3QgcmVwbGFjZW1lbnRQcmVmaXggPSBwcmVmaXguc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkVGV4dCA9IHByZWZpeC5zbGljZSgwLCBzdGFydCkgKyB0ZXh0O1xuICAgICAgICBjb25zdCB0eXBlID0gbWF0Y2gudHlwZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICAgIHJlcGxhY2VtZW50UHJlZml4LFxuICAgICAgICAgIHJlcGxhY2VkVGV4dCxcbiAgICAgICAgICBpY29uSFRNTDogIXR5cGUgfHwgdHlwZSA9PT0gXCI8dW5rbm93bj5cIiA/IGljb25IVE1MIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXBsYWNlbWVudFByZWZpeCA9IHByZWZpeC5zbGljZShjdXJzb3Jfc3RhcnQsIGN1cnNvcl9lbmQpO1xuICByZXR1cm4gXy5tYXAobWF0Y2hlcywgKG1hdGNoKSA9PiB7XG4gICAgY29uc3QgdGV4dCA9IG1hdGNoO1xuICAgIGNvbnN0IHJlcGxhY2VkVGV4dCA9IHByZWZpeC5zbGljZSgwLCBjdXJzb3Jfc3RhcnQpICsgdGV4dDtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dCxcbiAgICAgIHJlcGxhY2VtZW50UHJlZml4LFxuICAgICAgcmVwbGFjZWRUZXh0LFxuICAgICAgaWNvbkhUTUwsXG4gICAgfTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXV0b2NvbXBsZXRlUmVzdWx0cyhzdG9yZTogU3RvcmUpOiBBdXRvY29tcGxldGVQcm92aWRlciB7XG4gIGNvbnN0IGF1dG9jb21wbGV0ZVByb3ZpZGVyID0ge1xuICAgIGVuYWJsZWQ6IGF0b20uY29uZmlnLmdldChcIkh5ZHJvZ2VuLmF1dG9jb21wbGV0ZVwiKSxcbiAgICBzZWxlY3RvcjogXCIuc291cmNlXCIsXG4gICAgZGlzYWJsZUZvclNlbGVjdG9yOiBcIi5jb21tZW50XCIsXG4gICAgLy8gVGhlIGRlZmF1bHQgcHJvdmlkZXIgaGFzIGFuIGluY2x1c2lvbiBwcmlvcml0eSBvZiAwLlxuICAgIGluY2x1c2lvblByaW9yaXR5OiAxLFxuICAgIC8vIFRoZSBkZWZhdWx0IHByb3ZpZGVyIGhhcyBhIHN1Z2dlc3Rpb24gcHJpb3JpdHkgb2YgMS5cbiAgICBzdWdnZXN0aW9uUHJpb3JpdHk6IGF0b20uY29uZmlnLmdldChcbiAgICAgIFwiSHlkcm9nZW4uYXV0b2NvbXBsZXRlU3VnZ2VzdGlvblByaW9yaXR5XCJcbiAgICApLFxuICAgIC8vIEl0IHdvbid0IHN1cHByZXNzIHByb3ZpZGVycyB3aXRoIGxvd2VyIHByaW9yaXR5LlxuICAgIGV4Y2x1ZGVMb3dlclByaW9yaXR5OiBmYWxzZSxcbiAgICBzdWdnZXN0aW9uRGV0YWlsc0VuYWJsZWQ6IGF0b20uY29uZmlnLmdldChcbiAgICAgIFwiSHlkcm9nZW4uc2hvd0luc3BlY3RvclJlc3VsdHNJbkF1dG9jb21wbGV0ZVwiXG4gICAgKSxcblxuICAgIC8vIFJlcXVpcmVkOiBSZXR1cm4gYSBwcm9taXNlLCBhbiBhcnJheSBvZiBzdWdnZXN0aW9ucywgb3IgbnVsbC5cbiAgICBnZXRTdWdnZXN0aW9ucyh7IGVkaXRvciwgYnVmZmVyUG9zaXRpb24sIHByZWZpeCB9KSB7XG4gICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtlcm5lbCA9IHN0b3JlLmtlcm5lbDtcbiAgICAgIGlmICgha2VybmVsIHx8IGtlcm5lbC5leGVjdXRpb25TdGF0ZSAhPT0gXCJpZGxlXCIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW5lID0gZWRpdG9yLmdldFRleHRJbkJ1ZmZlclJhbmdlKFtcbiAgICAgICAgW2J1ZmZlclBvc2l0aW9uLnJvdywgMF0sXG4gICAgICAgIGJ1ZmZlclBvc2l0aW9uLFxuICAgICAgXSk7XG4gICAgICBjb25zdCByZWdleCA9IHJlZ2V4ZXNba2VybmVsLmxhbmd1YWdlXTtcblxuICAgICAgaWYgKHJlZ2V4KSB7XG4gICAgICAgIHByZWZpeCA9IF8uaGVhZChsaW5lLm1hdGNoKHJlZ2V4KSkgfHwgXCJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZWZpeCA9IGxpbmU7XG4gICAgICB9XG5cbiAgICAgIC8vIHJldHVybiBpZiBjdXJzb3IgaXMgYXQgd2hpdGVzcGFjZVxuICAgICAgaWYgKHByZWZpeC50cmltUmlnaHQoKS5sZW5ndGggPCBwcmVmaXgubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgbGV0IG1pbmltdW1Xb3JkTGVuZ3RoID0gYXRvbS5jb25maWcuZ2V0KFxuICAgICAgICBcImF1dG9jb21wbGV0ZS1wbHVzLm1pbmltdW1Xb3JkTGVuZ3RoXCJcbiAgICAgICk7XG5cbiAgICAgIGlmICh0eXBlb2YgbWluaW11bVdvcmRMZW5ndGggIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgbWluaW11bVdvcmRMZW5ndGggPSAzO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJlZml4LnRyaW0oKS5sZW5ndGggPCBtaW5pbXVtV29yZExlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGxvZyhcImF1dG9jb21wbGV0ZVByb3ZpZGVyOiByZXF1ZXN0OlwiLCBsaW5lLCBidWZmZXJQb3NpdGlvbiwgcHJlZml4KTtcbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBrZXJuZWwuY29tcGxldGUocHJlZml4LCAocmVzdWx0cykgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKHBhcnNlQ29tcGxldGlvbnMocmVzdWx0cywgcHJlZml4KSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtwcm9taXNlLCB0aGlzLnRpbWVvdXQoKV0pO1xuICAgIH0sXG5cbiAgICBnZXRTdWdnZXN0aW9uRGV0YWlsc09uU2VsZWN0KHtcbiAgICAgIHRleHQsXG4gICAgICByZXBsYWNlbWVudFByZWZpeCxcbiAgICAgIHJlcGxhY2VkVGV4dCxcbiAgICAgIGljb25IVE1MLFxuICAgICAgdHlwZSxcbiAgICB9KSB7XG4gICAgICBpZiAoIXRoaXMuc3VnZ2VzdGlvbkRldGFpbHNFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qga2VybmVsID0gc3RvcmUua2VybmVsO1xuICAgICAgaWYgKCFrZXJuZWwgfHwga2VybmVsLmV4ZWN1dGlvblN0YXRlICE9PSBcImlkbGVcIikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBrZXJuZWwuaW5zcGVjdChyZXBsYWNlZFRleHQsIHJlcGxhY2VkVGV4dC5sZW5ndGgsICh7IGZvdW5kLCBkYXRhIH0pID0+IHtcbiAgICAgICAgICBpZiAoIWZvdW5kIHx8ICFkYXRhW1widGV4dC9wbGFpblwiXSkge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IEFuc2VyLmFuc2lUb1RleHQoZGF0YVtcInRleHQvcGxhaW5cIl0pO1xuICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIHJlcGxhY2VtZW50UHJlZml4LFxuICAgICAgICAgICAgcmVwbGFjZWRUZXh0LFxuICAgICAgICAgICAgaWNvbkhUTUwsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtwcm9taXNlLCB0aGlzLnRpbWVvdXQoKV0pO1xuICAgIH0sXG5cbiAgICB0aW1lb3V0KCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbiAgc3RvcmUuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgYXRvbS5jb25maWcub2JzZXJ2ZShcIkh5ZHJvZ2VuLmF1dG9jb21wbGV0ZVwiLCAodikgPT4ge1xuICAgICAgYXV0b2NvbXBsZXRlUHJvdmlkZXIuZW5hYmxlZCA9IHY7XG4gICAgfSksXG4gICAgYXRvbS5jb25maWcub2JzZXJ2ZShcIkh5ZHJvZ2VuLmF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25Qcmlvcml0eVwiLCAodikgPT4ge1xuICAgICAgYXV0b2NvbXBsZXRlUHJvdmlkZXIuc3VnZ2VzdGlvblByaW9yaXR5ID0gdjtcbiAgICB9KSxcbiAgICBhdG9tLmNvbmZpZy5vYnNlcnZlKFwiSHlkcm9nZW4uc2hvd0luc3BlY3RvclJlc3VsdHNJbkF1dG9jb21wbGV0ZVwiLCAodikgPT4ge1xuICAgICAgYXV0b2NvbXBsZXRlUHJvdmlkZXIuc3VnZ2VzdGlvbkRldGFpbHNFbmFibGVkID0gdjtcbiAgICB9KVxuICApO1xuICByZXR1cm4gYXV0b2NvbXBsZXRlUHJvdmlkZXI7XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3NlcnZpY2VzL3Byb3ZpZGVkL2F1dG9jb21wbGV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSx1REFBK0I7QUFDL0Isa0RBQTBCO0FBQzFCLHVDQUFzRDtBQWV0RCxNQUFNLFFBQVEsR0FBRyxhQUFhLFNBQVMsa0RBQWtELENBQUM7QUFDMUYsTUFBTSxPQUFPLEdBQUc7SUFFZCxDQUFDLEVBQUUsc0JBQXNCO0lBRXpCLE1BQU0sRUFBRSwrQ0FBK0M7SUFFdkQsR0FBRyxFQUFFLG9DQUFvQztDQUMxQyxDQUFDO0FBRUYsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFzQixFQUFFLE1BQWM7SUFDOUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFHdEMsTUFBTSxZQUFZLEdBQUcsMEJBQWtCLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLFVBQVUsR0FBRywwQkFBa0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRWxFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQywyQkFBMkIsRUFBRTtRQUNwRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsMkJBQTJCLENBQUM7UUFFbkQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQ3JDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN6QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUN4QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FB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QUUsRUFBRTtRQUNuRSxvQkFBb0IsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsNkNBQTZDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN2RSxvQkFBb0IsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNGLE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQXJIRCxnRUFxSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRvY29tcGxldGVQcm92aWRlciB9IGZyb20gXCJhdG9tL2F1dG9jb21wbGV0ZS1wbHVzXCI7XHJcbmltcG9ydCBoZWFkIGZyb20gXCJsb2Rhc2gvaGVhZFwiO1xyXG5pbXBvcnQgQW5zZXIgZnJvbSBcImFuc2VyXCI7XHJcbmltcG9ydCB7IGxvZywgY2hhcl9pZHhfdG9fanNfaWR4IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCB0eXBlIHsgU3RvcmUgfSBmcm9tIFwiLi4vLi4vc3RvcmVcIjtcclxudHlwZSBDb21wbGV0ZVJlcGx5ID0ge1xyXG4gIG1hdGNoZXM6IEFycmF5PHN0cmluZz47XHJcbiAgY3Vyc29yX3N0YXJ0OiBudW1iZXI7XHJcbiAgY3Vyc29yX2VuZDogbnVtYmVyO1xyXG4gIG1ldGFkYXRhPzoge1xyXG4gICAgX2p1cHl0ZXJfdHlwZXNfZXhwZXJpbWVudGFsPzogQXJyYXk8e1xyXG4gICAgICBzdGFydD86IG51bWJlcjtcclxuICAgICAgZW5kPzogbnVtYmVyO1xyXG4gICAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICAgIHR5cGU/OiBzdHJpbmc7XHJcbiAgICB9PjtcclxuICB9O1xyXG59O1xyXG5jb25zdCBpY29uSFRNTCA9IGA8aW1nIHNyYz0nJHtfX2Rpcm5hbWV9Ly4uLy4uLy4uL3N0YXRpYy9sb2dvLnN2Zycgc3R5bGU9J3dpZHRoOiAxMDAlOyc+YDtcclxuY29uc3QgcmVnZXhlcyA9IHtcclxuICAvLyBwcmV0dHkgZG9kZ3ksIGFkYXB0ZWQgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS84Mzk2NjU4XHJcbiAgcjogLyhbXlxcV1xcZF18XFwuKVtcXHckLl0qJC8sXHJcbiAgLy8gYWRhcHRlZCBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xLzU0NzQwMDhcclxuICBweXRob246IC8oW15cXFdcXGRdfFtcXHUwMEEwLVxcdUZGRkZdKVtcXHcuXFx1MDBBMC1cXHVGRkZGXSokLyxcclxuICAvLyBhZGFwdGVkIGZyb20gaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2xhbmd1YWdlLnZhcmlhYmxlcy5iYXNpY3MucGhwXHJcbiAgcGhwOiAvWyRBLVpfYS16XFx4N2YtXFx4ZmZdW1xcd1xceDdmLVxceGZmXSokLyxcclxufTtcclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ29tcGxldGlvbnMocmVzdWx0czogQ29tcGxldGVSZXBseSwgcHJlZml4OiBzdHJpbmcpIHtcclxuICBjb25zdCB7IG1hdGNoZXMsIG1ldGFkYXRhIH0gPSByZXN1bHRzO1xyXG4gIC8vIEBOT1RFOiBUaGlzIGNhbiBtYWtlIGludmFsaWQgYHJlcGxhY2VkUHJlZml4YCBhbmQgYHJlcGxhY2VkVGV4dGAgd2hlbiBhIGxpbmUgaW5jbHVkZXMgdW5pY29kZSBjaGFyYWN0ZXJzXHJcbiAgLy8gQFRPRE8gKEBhdmlhdGVzayk6IFVzZSBgUmVnZXhgIHRvIGRldGVjdCB0aGVtIHJlZ2FyZGxlc3Mgb2YgdGhlIGByZXN1bHRzLmN1cnNvcl8qYCBmZWVkYmFja3MgZnJvbSBrZXJuZWxzXHJcbiAgY29uc3QgY3Vyc29yX3N0YXJ0ID0gY2hhcl9pZHhfdG9fanNfaWR4KHJlc3VsdHMuY3Vyc29yX3N0YXJ0LCBwcmVmaXgpO1xyXG4gIGNvbnN0IGN1cnNvcl9lbmQgPSBjaGFyX2lkeF90b19qc19pZHgocmVzdWx0cy5jdXJzb3JfZW5kLCBwcmVmaXgpO1xyXG5cclxuICBpZiAobWV0YWRhdGEgJiYgbWV0YWRhdGEuX2p1cHl0ZXJfdHlwZXNfZXhwZXJpbWVudGFsKSB7XHJcbiAgICBjb25zdCBjb21wcyA9IG1ldGFkYXRhLl9qdXB5dGVyX3R5cGVzX2V4cGVyaW1lbnRhbDtcclxuXHJcbiAgICBpZiAoY29tcHMubGVuZ3RoID4gMCAmJiBjb21wc1swXS50ZXh0KSB7XHJcbiAgICAgIHJldHVybiBjb21wcy5tYXAoKG1hdGNoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IG1hdGNoLnRleHQ7XHJcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBtYXRjaC5zdGFydCAmJiBtYXRjaC5lbmQgPyBtYXRjaC5zdGFydCA6IGN1cnNvcl9zdGFydDtcclxuICAgICAgICBjb25zdCBlbmQgPSBtYXRjaC5zdGFydCAmJiBtYXRjaC5lbmQgPyBtYXRjaC5lbmQgOiBjdXJzb3JfZW5kO1xyXG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50UHJlZml4ID0gcHJlZml4LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkVGV4dCA9IHByZWZpeC5zbGljZSgwLCBzdGFydCkgKyB0ZXh0O1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBtYXRjaC50eXBlO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB0ZXh0LFxyXG4gICAgICAgICAgcmVwbGFjZW1lbnRQcmVmaXgsXHJcbiAgICAgICAgICByZXBsYWNlZFRleHQsXHJcbiAgICAgICAgICBpY29uSFRNTDogIXR5cGUgfHwgdHlwZSA9PT0gXCI8dW5rbm93bj5cIiA/IGljb25IVE1MIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdHlwZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IHJlcGxhY2VtZW50UHJlZml4ID0gcHJlZml4LnNsaWNlKGN1cnNvcl9zdGFydCwgY3Vyc29yX2VuZCk7XHJcbiAgcmV0dXJuIG1hdGNoZXMubWFwKChtYXRjaCkgPT4ge1xyXG4gICAgY29uc3QgdGV4dCA9IG1hdGNoO1xyXG4gICAgY29uc3QgcmVwbGFjZWRUZXh0ID0gcHJlZml4LnNsaWNlKDAsIGN1cnNvcl9zdGFydCkgKyB0ZXh0O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGV4dCxcclxuICAgICAgcmVwbGFjZW1lbnRQcmVmaXgsXHJcbiAgICAgIHJlcGxhY2VkVGV4dCxcclxuICAgICAgaWNvbkhUTUwsXHJcbiAgICB9O1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUF1dG9jb21wbGV0ZVJlc3VsdHMoc3RvcmU6IFN0b3JlKTogQXV0b2NvbXBsZXRlUHJvdmlkZXIge1xyXG4gIGNvbnN0IGF1dG9jb21wbGV0ZVByb3ZpZGVyID0ge1xyXG4gICAgZW5hYmxlZDogYXRvbS5jb25maWcuZ2V0KFwiSHlkcm9nZW4uYXV0b2NvbXBsZXRlXCIpLFxyXG4gICAgc2VsZWN0b3I6IFwiLnNvdXJjZVwiLFxyXG4gICAgZGlzYWJsZUZvclNlbGVjdG9yOiBcIi5jb21tZW50XCIsXHJcbiAgICAvLyBUaGUgZGVmYXVsdCBwcm92aWRlciBoYXMgYW4gaW5jbHVzaW9uIHByaW9yaXR5IG9mIDAuXHJcbiAgICBpbmNsdXNpb25Qcmlvcml0eTogMSxcclxuICAgIC8vIFRoZSBkZWZhdWx0IHByb3ZpZGVyIGhhcyBhIHN1Z2dlc3Rpb24gcHJpb3JpdHkgb2YgMS5cclxuICAgIHN1Z2dlc3Rpb25Qcmlvcml0eTogYXRvbS5jb25maWcuZ2V0KFxyXG4gICAgICBcIkh5ZHJvZ2VuLmF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25Qcmlvcml0eVwiXHJcbiAgICApLFxyXG4gICAgLy8gSXQgd29uJ3Qgc3VwcHJlc3MgcHJvdmlkZXJzIHdpdGggbG93ZXIgcHJpb3JpdHkuXHJcbiAgICBleGNsdWRlTG93ZXJQcmlvcml0eTogZmFsc2UsXHJcbiAgICBzdWdnZXN0aW9uRGV0YWlsc0VuYWJsZWQ6IGF0b20uY29uZmlnLmdldChcclxuICAgICAgXCJIeWRyb2dlbi5zaG93SW5zcGVjdG9yUmVzdWx0c0luQXV0b2NvbXBsZXRlXCJcclxuICAgICksXHJcblxyXG4gICAgLy8gUmVxdWlyZWQ6IFJldHVybiBhIHByb21pc2UsIGFuIGFycmF5IG9mIHN1Z2dlc3Rpb25zLCBvciBudWxsLlxyXG4gICAgZ2V0U3VnZ2VzdGlvbnMoeyBlZGl0b3IsIGJ1ZmZlclBvc2l0aW9uLCBwcmVmaXggfSkge1xyXG4gICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGtlcm5lbCA9IHN0b3JlLmtlcm5lbDtcclxuICAgICAgaWYgKCFrZXJuZWwgfHwga2VybmVsLmV4ZWN1dGlvblN0YXRlICE9PSBcImlkbGVcIikge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGxpbmUgPSBlZGl0b3IuZ2V0VGV4dEluQnVmZmVyUmFuZ2UoW1xyXG4gICAgICAgIFtidWZmZXJQb3NpdGlvbi5yb3csIDBdLFxyXG4gICAgICAgIGJ1ZmZlclBvc2l0aW9uLFxyXG4gICAgICBdKTtcclxuICAgICAgY29uc3QgcmVnZXggPSByZWdleGVzW2tlcm5lbC5sYW5ndWFnZV07XHJcblxyXG4gICAgICBpZiAocmVnZXgpIHtcclxuICAgICAgICBwcmVmaXggPSBoZWFkKGxpbmUubWF0Y2gocmVnZXgpKSB8fCBcIlwiO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHByZWZpeCA9IGxpbmU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHJldHVybiBpZiBjdXJzb3IgaXMgYXQgd2hpdGVzcGFjZVxyXG4gICAgICBpZiAocHJlZml4LnRyaW1SaWdodCgpLmxlbmd0aCA8IHByZWZpeC5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbWluaW11bVdvcmRMZW5ndGggPSBhdG9tLmNvbmZpZy5nZXQoXHJcbiAgICAgICAgXCJhdXRvY29tcGxldGUtcGx1cy5taW5pbXVtV29yZExlbmd0aFwiXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIG1pbmltdW1Xb3JkTGVuZ3RoICE9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgbWluaW11bVdvcmRMZW5ndGggPSAzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocHJlZml4LnRyaW0oKS5sZW5ndGggPCBtaW5pbXVtV29yZExlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGxvZyhcImF1dG9jb21wbGV0ZVByb3ZpZGVyOiByZXF1ZXN0OlwiLCBsaW5lLCBidWZmZXJQb3NpdGlvbiwgcHJlZml4KTtcclxuICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAga2VybmVsLmNvbXBsZXRlKHByZWZpeCwgKHJlc3VsdHMpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNvbHZlKHBhcnNlQ29tcGxldGlvbnMocmVzdWx0cywgcHJlZml4KSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtwcm9taXNlLCB0aGlzLnRpbWVvdXQoKV0pO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRTdWdnZXN0aW9uRGV0YWlsc09uU2VsZWN0KHtcclxuICAgICAgdGV4dCxcclxuICAgICAgcmVwbGFjZW1lbnRQcmVmaXgsXHJcbiAgICAgIHJlcGxhY2VkVGV4dCxcclxuICAgICAgaWNvbkhUTUwsXHJcbiAgICAgIHR5cGUsXHJcbiAgICB9KSB7XHJcbiAgICAgIGlmICghdGhpcy5zdWdnZXN0aW9uRGV0YWlsc0VuYWJsZWQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBrZXJuZWwgPSBzdG9yZS5rZXJuZWw7XHJcbiAgICAgIGlmICgha2VybmVsIHx8IGtlcm5lbC5leGVjdXRpb25TdGF0ZSAhPT0gXCJpZGxlXCIpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICBrZXJuZWwuaW5zcGVjdChyZXBsYWNlZFRleHQsIHJlcGxhY2VkVGV4dC5sZW5ndGgsICh7IGZvdW5kLCBkYXRhIH0pID0+IHtcclxuICAgICAgICAgIGlmICghZm91bmQgfHwgIWRhdGFbXCJ0ZXh0L3BsYWluXCJdKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IEFuc2VyLmFuc2lUb1RleHQoZGF0YVtcInRleHQvcGxhaW5cIl0pO1xyXG4gICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgIHRleHQsXHJcbiAgICAgICAgICAgIHJlcGxhY2VtZW50UHJlZml4LFxyXG4gICAgICAgICAgICByZXBsYWNlZFRleHQsXHJcbiAgICAgICAgICAgIGljb25IVE1MLFxyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmFjZShbcHJvbWlzZSwgdGhpcy50aW1lb3V0KCldKTtcclxuICAgIH0sXHJcblxyXG4gICAgdGltZW91dCgpIHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgfTtcclxuICBzdG9yZS5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgIGF0b20uY29uZmlnLm9ic2VydmUoXCJIeWRyb2dlbi5hdXRvY29tcGxldGVcIiwgKHYpID0+IHtcclxuICAgICAgYXV0b2NvbXBsZXRlUHJvdmlkZXIuZW5hYmxlZCA9IHY7XHJcbiAgICB9KSxcclxuICAgIGF0b20uY29uZmlnLm9ic2VydmUoXCJIeWRyb2dlbi5hdXRvY29tcGxldGVTdWdnZXN0aW9uUHJpb3JpdHlcIiwgKHYpID0+IHtcclxuICAgICAgYXV0b2NvbXBsZXRlUHJvdmlkZXIuc3VnZ2VzdGlvblByaW9yaXR5ID0gdjtcclxuICAgIH0pLFxyXG4gICAgYXRvbS5jb25maWcub2JzZXJ2ZShcIkh5ZHJvZ2VuLnNob3dJbnNwZWN0b3JSZXN1bHRzSW5BdXRvY29tcGxldGVcIiwgKHYpID0+IHtcclxuICAgICAgYXV0b2NvbXBsZXRlUHJvdmlkZXIuc3VnZ2VzdGlvbkRldGFpbHNFbmFibGVkID0gdjtcclxuICAgIH0pXHJcbiAgKTtcclxuICByZXR1cm4gYXV0b2NvbXBsZXRlUHJvdmlkZXI7XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/services/provided/index.d.ts b/dist/services/provided/index.d.ts deleted file mode 100644 index f11bbd1b8..000000000 --- a/dist/services/provided/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as autocomplete from "./autocomplete"; -declare const _default: { - autocomplete: typeof autocomplete; -}; -export default _default; diff --git a/dist/store/index.d.ts b/dist/store/index.d.ts deleted file mode 100644 index 132580d23..000000000 --- a/dist/store/index.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { TextEditor, CompositeDisposable, Grammar } from "atom"; -import MarkerStore from "./markers"; -import Kernel from "../kernel"; -export declare type KernelMap = Map; -export declare type KernelMapping = Map; -export declare class Store { - subscriptions: CompositeDisposable; - markersMapping: Map; - runningKernels: Array; - kernelMapping: KernelMapping; - startingKernels: Map; - editor: TextEditor; - grammar: Grammar | null | undefined; - configMapping: Map; - globalMode: boolean; - get kernel(): Kernel | null | undefined; - get filePath(): string | null | undefined; - get filePaths(): Array; - get notebook(): import("@nteract/commutable/lib/v4").NotebookV4; - get markers(): MarkerStore | null | undefined; - newMarkerStore(editorId: number): MarkerStore; - startKernel(kernelDisplayName: string): void; - addFileDisposer(editor: TextEditor, filePath: string): void; - newKernel(kernel: Kernel, filePath: string, editor: TextEditor, grammar: Grammar): void; - deleteKernel(kernel: Kernel): void; - getFilesForKernel(kernel: Kernel): Array; - dispose(): void; - updateEditor(editor: TextEditor | null | undefined): void; - getEmbeddedGrammar(editor: TextEditor): Grammar | null | undefined; - setGrammar(editor: TextEditor | null | undefined): void; - setConfigValue(keyPath: string, newValue: unknown | null | undefined): void; - forceEditorUpdate(): void; -} -declare const store: Store; -export default store; -export interface StoreLike { - kernel?: Kernel | null | undefined; - markers?: MarkerStore | null | undefined; -} diff --git a/dist/store/index.js b/dist/store/index.js index 0c13c92f0..aa366f04a 100644 --- a/dist/store/index.js +++ b/dist/store/index.js @@ -35,7 +35,6 @@ exports.Store = void 0; const atom_1 = require("atom"); const mobx_1 = require("mobx"); const utils_1 = require("../utils"); -const lodash_1 = __importDefault(require("lodash")); const codeManager = __importStar(require("../code-manager")); const markers_1 = __importDefault(require("./markers")); const kernel_1 = __importDefault(require("../kernel")); @@ -95,7 +94,7 @@ class Store { notebook = notebook.setIn(["metadata", "kernelspec"], this.kernel.transport.kernelSpec); } const cellRanges = codeManager.getCells(editor); - lodash_1.default.forEach(cellRanges, (cell) => { + cellRanges.forEach((cell) => { const { start, end } = cell; let source = codeManager.getTextInRange(editor, start, end); source = source ? source : ""; @@ -369,4 +368,4 @@ exports.Store = Store; const store = new Store(); exports.default = store; window.hydrogen_store = store; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFzRTtBQUN0RSwrQkFPYztBQUNkLG9DQUlrQjtBQUNsQixvREFBdUI7QUFFdkIsNkRBQStDO0FBQy9DLHdEQUFvQztBQUVwQyx1REFBK0I7QUFDL0IsZ0VBQWtEO0FBS2xELE1BQWEsS0FBSztJQUFsQjtRQUNFLGtCQUFhLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFDO1FBRTFDLG1CQUFjLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFckQsbUJBQWMsR0FBa0IsRUFBRSxDQUFDO1FBRW5DLGtCQUFhLEdBQWtCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFekMsb0JBQWUsR0FBeUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVsRCxXQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBSTlDLGtCQUFhLEdBQTRDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbkUsZUFBVSxHQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUErUnhFLENBQUM7SUE1UkMsSUFBSSxNQUFNO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNoRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM3QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLENBQ2hELENBQUM7U0FDSDtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLFdBQVcsWUFBWSxnQkFBTSxFQUFFO1lBQ2pDLE9BQU8sV0FBVyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtZQUN0QyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUdELElBQUksUUFBUTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBSUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxXQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFHRCxJQUFJLFFBQVE7UUFDVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUV4QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FDdkIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEVBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FDakMsQ0FBQztTQUNIO1FBRUQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoRCxnQkFBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFJOUIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUM3QixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QjtZQUNELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUQsSUFBSSxPQUFPLENBQUM7WUFFWixJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQzNCLE9BQU8sR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDMUQ7aUJBQU0sSUFBSSxRQUFRLEtBQUssVUFBVSxFQUFFO2dCQUNsQyxNQUFNLEdBQUcsV0FBVyxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDaEUsT0FBTyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzlEO1lBRUQsUUFBUSxHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUdELElBQUksT0FBTztRQUNULE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUdELGNBQWMsQ0FBQyxRQUFnQjtRQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFXLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0MsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUdELFdBQVcsQ0FBQyxpQkFBeUI7UUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFrQixFQUFFLFFBQWdCO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksMEJBQW1CLEVBQUUsQ0FBQztRQUUvQyxJQUFJLHlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLFlBQVksQ0FBQyxHQUFHLENBQ2QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN6QixZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBQ0YsWUFBWSxDQUFDLEdBQUcsQ0FDZCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7YUFBTTtZQUNMLE1BQU0sSUFBSSxHQUFTLElBQUksV0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLFlBQVksQ0FBQyxHQUFHLENBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdELFNBQVMsQ0FDUCxNQUFjLEVBQ2QsUUFBZ0IsRUFDaEIsTUFBa0IsRUFDbEIsT0FBZ0I7UUFFaEIsSUFBSSw4QkFBc0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDN0M7WUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFELElBQUksZ0JBQWdCLElBQUksT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFFO2dCQUNqRSxnQkFBOEIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMzRDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBRWpFLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBR0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBR0QsWUFBWSxDQUFDLE1BQWM7UUFDekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixPQUFPO2FBQ1I7WUFFRCxJQUFJLFdBQVcsWUFBWSxnQkFBTSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQztpQkFBTTtnQkFDTCxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFDRCxPQUFPLFdBQVcsWUFBWSxnQkFBTTtnQkFDbEMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxNQUFNO2dCQUN4QixDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxNQUFNLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsT0FBTztRQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUdELFlBQVksQ0FBQyxNQUFxQztRQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRTtZQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDYixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUdELGtCQUFrQixDQUFDLE1BQWtCO1FBQ25DLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUMsOEJBQXNCLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxNQUFNLGFBQWEsR0FBRyx3QkFBZ0IsQ0FDcEMsTUFBTSxFQUNOLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxDQUNqQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUNELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBR0QsVUFBVSxDQUFDLE1BQXFDO1FBQzlDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBR0QsY0FBYyxDQUFDLE9BQWUsRUFBRSxRQUFvQztRQUNsRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFHRCxpQkFBaUI7UUFDZixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU3QixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQTVTQztJQURDLGlCQUFVOzhCQUNLLEdBQUc7NkNBQWtDO0FBRXJEO0lBREMsaUJBQVU7OEJBQ0ssS0FBSzs2Q0FBYztBQUVuQztJQURDLGlCQUFVOzs0Q0FDOEI7QUFFekM7SUFEQyxpQkFBVTs4QkFDTSxHQUFHOzhDQUE4QjtBQUVsRDtJQURDLGlCQUFVOztxQ0FDbUM7QUFFOUM7SUFEQyxpQkFBVTs7c0NBQ3lCO0FBRXBDO0lBREMsaUJBQVU7OEJBQ0ksR0FBRzs0Q0FBaUQ7QUFJbkU7SUFEQyxlQUFROzhCQUNLLGdCQUFNOzttQ0EwQm5CO0FBR0Q7SUFEQyxlQUFROzs7cUNBUVI7QUFJRDtJQURDLGVBQVE7OEJBQ1EsS0FBSzs7c0NBRXJCO0FBR0Q7SUFEQyxlQUFROzs7cUNBeUNSO0FBR0Q7SUFEQyxlQUFROzhCQUNNLGlCQUFXOztvQ0FPekI7QUFHRDtJQURDLGFBQU07Ozs7MkNBS047QUFHRDtJQURDLGFBQU07Ozs7d0NBR047QUFnQ0Q7SUFEQyxhQUFNOztxQ0FFRyxnQkFBTSxVQUVOLGlCQUFVOztzQ0F5Qm5CO0FBR0Q7SUFEQyxhQUFNOztxQ0FDYyxnQkFBTTs7eUNBZ0IxQjtBQWdCRDtJQURDLGFBQU07Ozs7b0NBUU47QUFHRDtJQURDLGFBQU07O3FDQUNjLGlCQUFVOzt5Q0FXOUI7QUFzQkQ7SUFEQyxhQUFNOztxQ0FDWSxpQkFBVTs7dUNBTzVCO0FBR0Q7SUFEQyxhQUFNOzs7OzJDQU9OO0FBeFJILHNCQStTQztBQUNELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFDMUIsa0JBQWUsS0FBSyxDQUFDO0FBRXJCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEVkaXRvciwgQ29tcG9zaXRlRGlzcG9zYWJsZSwgRmlsZSwgR3JhbW1hciB9IGZyb20gXCJhdG9tXCI7XG5pbXBvcnQge1xuICBvYnNlcnZhYmxlLFxuICBjb21wdXRlZCxcbiAgYWN0aW9uLFxuICBpc09ic2VydmFibGVNYXAsXG4gIGtleXMsXG4gIHZhbHVlcyxcbn0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7XG4gIGlzTXVsdGlsYW5ndWFnZUdyYW1tYXIsXG4gIGdldEVtYmVkZGVkU2NvcGUsXG4gIGlzVW5zYXZlZEZpbGVQYXRoLFxufSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBDb25maWcgZnJvbSBcIi4uL2NvbmZpZ1wiO1xuaW1wb3J0ICogYXMgY29kZU1hbmFnZXIgZnJvbSBcIi4uL2NvZGUtbWFuYWdlclwiO1xuaW1wb3J0IE1hcmtlclN0b3JlIGZyb20gXCIuL21hcmtlcnNcIjtcbmltcG9ydCBrZXJuZWxNYW5hZ2VyIGZyb20gXCIuLi9rZXJuZWwtbWFuYWdlclwiO1xuaW1wb3J0IEtlcm5lbCBmcm9tIFwiLi4va2VybmVsXCI7XG5pbXBvcnQgKiBhcyBjb21tdXRhYmxlIGZyb20gXCJAbnRlcmFjdC9jb21tdXRhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIEtlcm5lbE1hcCA9IE1hcDxzdHJpbmcsIEtlcm5lbD47XG5leHBvcnQgdHlwZSBLZXJuZWxNYXBwaW5nID0gTWFwPHN0cmluZywgS2VybmVsIHwgS2VybmVsTWFwPjtcblxuZXhwb3J0IGNsYXNzIFN0b3JlIHtcbiAgc3Vic2NyaXB0aW9ucyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKCk7XG4gIEBvYnNlcnZhYmxlXG4gIG1hcmtlcnNNYXBwaW5nOiBNYXA8bnVtYmVyLCBNYXJrZXJTdG9yZT4gPSBuZXcgTWFwKCk7XG4gIEBvYnNlcnZhYmxlXG4gIHJ1bm5pbmdLZXJuZWxzOiBBcnJheTxLZXJuZWw+ID0gW107XG4gIEBvYnNlcnZhYmxlXG4gIGtlcm5lbE1hcHBpbmc6IEtlcm5lbE1hcHBpbmcgPSBuZXcgTWFwKCk7XG4gIEBvYnNlcnZhYmxlXG4gIHN0YXJ0aW5nS2VybmVsczogTWFwPHN0cmluZywgYm9vbGVhbj4gPSBuZXcgTWFwKCk7XG4gIEBvYnNlcnZhYmxlXG4gIGVkaXRvciA9IGF0b20ud29ya3NwYWNlLmdldEFjdGl2ZVRleHRFZGl0b3IoKTtcbiAgQG9ic2VydmFibGVcbiAgZ3JhbW1hcjogR3JhbW1hciB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIEBvYnNlcnZhYmxlXG4gIGNvbmZpZ01hcHBpbmc6IE1hcDxzdHJpbmcsIHVua25vd24gfCBudWxsIHwgdW5kZWZpbmVkPiA9IG5ldyBNYXAoKTtcbiAgZ2xvYmFsTW9kZTogYm9vbGVhbiA9IEJvb2xlYW4oYXRvbS5jb25maWcuZ2V0KFwiSHlkcm9nZW4uZ2xvYmFsTW9kZVwiKSk7XG5cbiAgQGNvbXB1dGVkXG4gIGdldCBrZXJuZWwoKTogS2VybmVsIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmdyYW1tYXIgfHwgIXRoaXMuZWRpdG9yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nbG9iYWxNb2RlKSB7XG4gICAgICBjb25zdCBjdXJyZW50U2NvcGVOYW1lID0gdGhpcy5ncmFtbWFyLnNjb3BlTmFtZTtcbiAgICAgIHJldHVybiB0aGlzLnJ1bm5pbmdLZXJuZWxzLmZpbmQoXG4gICAgICAgIChrKSA9PiBrLmdyYW1tYXIuc2NvcGVOYW1lID09PSBjdXJyZW50U2NvcGVOYW1lXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmZpbGVQYXRoO1xuICAgIGlmICghZmlsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGtlcm5lbE9yTWFwID0gdGhpcy5rZXJuZWxNYXBwaW5nLmdldChmaWxlKTtcbiAgICBpZiAoIWtlcm5lbE9yTWFwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGtlcm5lbE9yTWFwIGluc3RhbmNlb2YgS2VybmVsKSB7XG4gICAgICByZXR1cm4ga2VybmVsT3JNYXA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdyYW1tYXIgJiYgdGhpcy5ncmFtbWFyLm5hbWVcbiAgICAgID8ga2VybmVsT3JNYXAuZ2V0KHRoaXMuZ3JhbW1hci5uYW1lKVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgQGNvbXB1dGVkXG4gIGdldCBmaWxlUGF0aCgpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNhdmVkRmlsZVBhdGggPSBlZGl0b3IuZ2V0UGF0aCgpO1xuICAgIHJldHVybiBzYXZlZEZpbGVQYXRoID8gc2F2ZWRGaWxlUGF0aCA6IGBVbnNhdmVkIEVkaXRvciAke2VkaXRvci5pZH1gO1xuICB9XG5cbiAgLy8gVE9ETyBmaXggdGhlIHR5cGVzIHVzaW5nIG1vYnggdHlwZXNcbiAgQGNvbXB1dGVkXG4gIGdldCBmaWxlUGF0aHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGtleXModGhpcy5rZXJuZWxNYXBwaW5nKTtcbiAgfVxuXG4gIEBjb21wdXRlZFxuICBnZXQgbm90ZWJvb2soKSB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgbm90ZWJvb2sgPSBjb21tdXRhYmxlLmVtcHR5Tm90ZWJvb2s7XG5cbiAgICBpZiAodGhpcy5rZXJuZWwpIHtcbiAgICAgIG5vdGVib29rID0gbm90ZWJvb2suc2V0SW4oXG4gICAgICAgIFtcIm1ldGFkYXRhXCIsIFwia2VybmVsc3BlY1wiXSxcbiAgICAgICAgdGhpcy5rZXJuZWwudHJhbnNwb3J0Lmtlcm5lbFNwZWNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY2VsbFJhbmdlcyA9IGNvZGVNYW5hZ2VyLmdldENlbGxzKGVkaXRvcik7XG5cbiAgICBfLmZvckVhY2goY2VsbFJhbmdlcywgKGNlbGwpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gY2VsbDtcbiAgICAgIGxldCBzb3VyY2UgPSBjb2RlTWFuYWdlci5nZXRUZXh0SW5SYW5nZShlZGl0b3IsIHN0YXJ0LCBlbmQpO1xuICAgICAgc291cmNlID0gc291cmNlID8gc291cmNlIDogXCJcIjtcbiAgICAgIC8vIFdoZW4gdGhlIGNlbGwgbWFya2VyIGZvbGxvd2luZyBhIGdpdmVuIGNlbGwgcmFuZ2UgaXMgb24gaXRzIG93biBsaW5lLFxuICAgICAgLy8gdGhlIG5ld2xpbmUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoYXQgY2VsbCBtYXJrZXIgaXMgaW5jbHVkZWQgaW5cbiAgICAgIC8vIGBzb3VyY2VgLiBXZSByZW1vdmUgdGhhdCBoZXJlLiBTZWUgIzE1MTIgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGlmIChzb3VyY2Uuc2xpY2UoLTEpID09PSBcIlxcblwiKSB7XG4gICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zbGljZSgwLCAtMSk7XG4gICAgICB9XG4gICAgICBjb25zdCBjZWxsVHlwZSA9IGNvZGVNYW5hZ2VyLmdldE1ldGFkYXRhRm9yUm93KGVkaXRvciwgc3RhcnQpO1xuICAgICAgbGV0IG5ld0NlbGw7XG5cbiAgICAgIGlmIChjZWxsVHlwZSA9PT0gXCJjb2RlY2VsbFwiKSB7XG4gICAgICAgIG5ld0NlbGwgPSBjb21tdXRhYmxlLmVtcHR5Q29kZUNlbGwuc2V0KFwic291cmNlXCIsIHNvdXJjZSk7XG4gICAgICB9IGVsc2UgaWYgKGNlbGxUeXBlID09PSBcIm1hcmtkb3duXCIpIHtcbiAgICAgICAgc291cmNlID0gY29kZU1hbmFnZXIucmVtb3ZlQ29tbWVudHNNYXJrZG93bkNlbGwoZWRpdG9yLCBzb3VyY2UpO1xuICAgICAgICBuZXdDZWxsID0gY29tbXV0YWJsZS5lbXB0eU1hcmtkb3duQ2VsbC5zZXQoXCJzb3VyY2VcIiwgc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgbm90ZWJvb2sgPSBjb21tdXRhYmxlLmFwcGVuZENlbGxUb05vdGVib29rKG5vdGVib29rLCBuZXdDZWxsKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb21tdXRhYmxlLnRvSlMobm90ZWJvb2spO1xuICB9XG5cbiAgQGNvbXB1dGVkXG4gIGdldCBtYXJrZXJzKCk6IE1hcmtlclN0b3JlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBtYXJrZXJTdG9yZSA9IHRoaXMubWFya2Vyc01hcHBpbmcuZ2V0KGVkaXRvci5pZCk7XG4gICAgcmV0dXJuIG1hcmtlclN0b3JlID8gbWFya2VyU3RvcmUgOiB0aGlzLm5ld01hcmtlclN0b3JlKGVkaXRvci5pZCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIG5ld01hcmtlclN0b3JlKGVkaXRvcklkOiBudW1iZXIpIHtcbiAgICBjb25zdCBtYXJrZXJTdG9yZSA9IG5ldyBNYXJrZXJTdG9yZSgpO1xuICAgIHRoaXMubWFya2Vyc01hcHBpbmcuc2V0KGVkaXRvcklkLCBtYXJrZXJTdG9yZSk7XG4gICAgcmV0dXJuIG1hcmtlclN0b3JlO1xuICB9XG5cbiAgQGFjdGlvblxuICBzdGFydEtlcm5lbChrZXJuZWxEaXNwbGF5TmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdGFydGluZ0tlcm5lbHMuc2V0KGtlcm5lbERpc3BsYXlOYW1lLCB0cnVlKTtcbiAgfVxuXG4gIGFkZEZpbGVEaXNwb3NlcihlZGl0b3I6IFRleHRFZGl0b3IsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWxlRGlzcG9zZXIgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpO1xuXG4gICAgaWYgKGlzVW5zYXZlZEZpbGVQYXRoKGZpbGVQYXRoKSkge1xuICAgICAgZmlsZURpc3Bvc2VyLmFkZChcbiAgICAgICAgZWRpdG9yLm9uRGlkU2F2ZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICBmaWxlRGlzcG9zZXIuZGlzcG9zZSgpO1xuICAgICAgICAgIHRoaXMuYWRkRmlsZURpc3Bvc2VyKGVkaXRvciwgZXZlbnQucGF0aCk7IC8vIEFkZCBhbm90aGVyIGBmaWxlRGlzcG9zZXJgIG9uY2UgaXQncyBzYXZlZFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIGZpbGVEaXNwb3Nlci5hZGQoXG4gICAgICAgIGVkaXRvci5vbkRpZERlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgIHRoaXMua2VybmVsTWFwcGluZy5kZWxldGUoZmlsZVBhdGgpO1xuICAgICAgICAgIGZpbGVEaXNwb3Nlci5kaXNwb3NlKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWxlOiBGaWxlID0gbmV3IEZpbGUoZmlsZVBhdGgpO1xuICAgICAgZmlsZURpc3Bvc2VyLmFkZChcbiAgICAgICAgZmlsZS5vbkRpZERlbGV0ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5rZXJuZWxNYXBwaW5nLmRlbGV0ZShmaWxlUGF0aCk7XG4gICAgICAgICAgZmlsZURpc3Bvc2VyLmRpc3Bvc2UoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChmaWxlRGlzcG9zZXIpO1xuICB9XG5cbiAgQGFjdGlvblxuICBuZXdLZXJuZWwoXG4gICAga2VybmVsOiBLZXJuZWwsXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBlZGl0b3I6IFRleHRFZGl0b3IsXG4gICAgZ3JhbW1hcjogR3JhbW1hclxuICApIHtcbiAgICBpZiAoaXNNdWx0aWxhbmd1YWdlR3JhbW1hcihlZGl0b3IuZ2V0R3JhbW1hcigpKSkge1xuICAgICAgaWYgKCF0aGlzLmtlcm5lbE1hcHBpbmcuaGFzKGZpbGVQYXRoKSkge1xuICAgICAgICB0aGlzLmtlcm5lbE1hcHBpbmcuc2V0KGZpbGVQYXRoLCBuZXcgTWFwKCkpO1xuICAgICAgfVxuICAgICAgLy8gVE9ETyB3aGVuIHdpbGwgdGhpcyBiZSBhIEtlcm5lbD9cbiAgICAgIGNvbnN0IG11bHRpTGFuZ3VhZ2VNYXAgPSB0aGlzLmtlcm5lbE1hcHBpbmcuZ2V0KGZpbGVQYXRoKTtcbiAgICAgIGlmIChtdWx0aUxhbmd1YWdlTWFwICYmIHR5cGVvZiBtdWx0aUxhbmd1YWdlTWFwLnNldCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIChtdWx0aUxhbmd1YWdlTWFwIGFzIEtlcm5lbE1hcCkuc2V0KGdyYW1tYXIubmFtZSwga2VybmVsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXJuZWxNYXBwaW5nLnNldChmaWxlUGF0aCwga2VybmVsKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZEZpbGVEaXNwb3NlcihlZGl0b3IsIGZpbGVQYXRoKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucnVubmluZ0tlcm5lbHMuZmluZEluZGV4KChrKSA9PiBrID09PSBrZXJuZWwpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgdGhpcy5ydW5uaW5nS2VybmVscy5wdXNoKGtlcm5lbCk7XG4gICAgfVxuXG4gICAgLy8gZGVsZXRlIHN0YXJ0aW5nS2VybmVsIHNpbmNlIHN0b3JlLmtlcm5lbCBub3cgaW4gcGxhY2UgdG8gcHJldmVudCBkdXBsaWNhdGUga2VybmVsXG4gICAgdGhpcy5zdGFydGluZ0tlcm5lbHMuZGVsZXRlKGtlcm5lbC5rZXJuZWxTcGVjLmRpc3BsYXlfbmFtZSk7XG4gIH1cblxuICBAYWN0aW9uXG4gIGRlbGV0ZUtlcm5lbChrZXJuZWw6IEtlcm5lbCkge1xuICAgIGNvbnN0IGdyYW1tYXIgPSBrZXJuZWwuZ3JhbW1hci5uYW1lO1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5nZXRGaWxlc0Zvcktlcm5lbChrZXJuZWwpO1xuICAgIGZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgIGNvbnN0IGtlcm5lbE9yTWFwID0gdGhpcy5rZXJuZWxNYXBwaW5nLmdldChmaWxlKTtcbiAgICAgIGlmICgha2VybmVsT3JNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoa2VybmVsT3JNYXAgaW5zdGFuY2VvZiBLZXJuZWwpIHtcbiAgICAgICAgdGhpcy5rZXJuZWxNYXBwaW5nLmRlbGV0ZShmaWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtlcm5lbE9yTWFwLmRlbGV0ZShncmFtbWFyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJ1bm5pbmdLZXJuZWxzID0gdGhpcy5ydW5uaW5nS2VybmVscy5maWx0ZXIoKGspID0+IGsgIT09IGtlcm5lbCk7XG4gIH1cblxuICBnZXRGaWxlc0Zvcktlcm5lbChrZXJuZWw6IEtlcm5lbCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IGdyYW1tYXIgPSBrZXJuZWwuZ3JhbW1hci5uYW1lO1xuICAgIHJldHVybiB0aGlzLmZpbGVQYXRocy5maWx0ZXIoKGZpbGUpID0+IHtcbiAgICAgIGNvbnN0IGtlcm5lbE9yTWFwID0gdGhpcy5rZXJuZWxNYXBwaW5nLmdldChmaWxlKTtcbiAgICAgIGlmICgha2VybmVsT3JNYXApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGtlcm5lbE9yTWFwIGluc3RhbmNlb2YgS2VybmVsXG4gICAgICAgID8ga2VybmVsT3JNYXAgPT09IGtlcm5lbFxuICAgICAgICA6IGtlcm5lbE9yTWFwLmdldChncmFtbWFyKSA9PT0ga2VybmVsO1xuICAgIH0pO1xuICB9XG5cbiAgQGFjdGlvblxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5kaXNwb3NlKCk7XG4gICAgdGhpcy5tYXJrZXJzTWFwcGluZy5mb3JFYWNoKChtYXJrZXJTdG9yZSkgPT4gbWFya2VyU3RvcmUuY2xlYXIoKSk7XG4gICAgdGhpcy5tYXJrZXJzTWFwcGluZy5jbGVhcigpO1xuICAgIHRoaXMucnVubmluZ0tlcm5lbHMuZm9yRWFjaCgoa2VybmVsKSA9PiBrZXJuZWwuZGVzdHJveSgpKTtcbiAgICB0aGlzLnJ1bm5pbmdLZXJuZWxzID0gW107XG4gICAgdGhpcy5rZXJuZWxNYXBwaW5nLmNsZWFyKCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIHVwZGF0ZUVkaXRvcihlZGl0b3I6IFRleHRFZGl0b3IgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgdGhpcy5zZXRHcmFtbWFyKGVkaXRvcik7XG5cbiAgICBpZiAodGhpcy5nbG9iYWxNb2RlICYmIHRoaXMua2VybmVsICYmIGVkaXRvcikge1xuICAgICAgY29uc3QgZmlsZU5hbWUgPSBlZGl0b3IuZ2V0UGF0aCgpO1xuICAgICAgaWYgKCFmaWxlTmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmtlcm5lbE1hcHBpbmcuc2V0KGZpbGVOYW1lLCB0aGlzLmtlcm5lbCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0dXJucyB0aGUgZW1iZWRkZWQgZ3JhbW1hciBmb3IgbXVsdGlsYW5ndWFnZSwgbm9ybWFsIGdyYW1tYXIgb3RoZXJ3aXNlXG4gIGdldEVtYmVkZGVkR3JhbW1hcihlZGl0b3I6IFRleHRFZGl0b3IpOiBHcmFtbWFyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZ3JhbW1hciA9IGVkaXRvci5nZXRHcmFtbWFyKCk7XG5cbiAgICBpZiAoIWlzTXVsdGlsYW5ndWFnZUdyYW1tYXIoZ3JhbW1hcikpIHtcbiAgICAgIHJldHVybiBncmFtbWFyO1xuICAgIH1cblxuICAgIGNvbnN0IGVtYmVkZGVkU2NvcGUgPSBnZXRFbWJlZGRlZFNjb3BlKFxuICAgICAgZWRpdG9yLFxuICAgICAgZWRpdG9yLmdldEN1cnNvckJ1ZmZlclBvc2l0aW9uKClcbiAgICApO1xuICAgIGlmICghZW1iZWRkZWRTY29wZSkge1xuICAgICAgcmV0dXJuIGdyYW1tYXI7XG4gICAgfVxuICAgIGNvbnN0IHNjb3BlID0gZW1iZWRkZWRTY29wZS5yZXBsYWNlKFwiLmVtYmVkZGVkXCIsIFwiXCIpO1xuICAgIHJldHVybiBhdG9tLmdyYW1tYXJzLmdyYW1tYXJGb3JTY29wZU5hbWUoc2NvcGUpO1xuICB9XG5cbiAgQGFjdGlvblxuICBzZXRHcmFtbWFyKGVkaXRvcjogVGV4dEVkaXRvciB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgdGhpcy5ncmFtbWFyID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmdyYW1tYXIgPSB0aGlzLmdldEVtYmVkZGVkR3JhbW1hcihlZGl0b3IpO1xuICB9XG5cbiAgQGFjdGlvblxuICBzZXRDb25maWdWYWx1ZShrZXlQYXRoOiBzdHJpbmcsIG5ld1ZhbHVlOiB1bmtub3duIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghbmV3VmFsdWUpIHtcbiAgICAgIG5ld1ZhbHVlID0gYXRvbS5jb25maWcuZ2V0KGtleVBhdGgpO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlnTWFwcGluZy5zZXQoa2V5UGF0aCwgbmV3VmFsdWUpO1xuICB9XG5cbiAgLyoqIEZvcmNlIG1vYnggdG8gcmVjYWxjdWxhdGUgZmlsZVBhdGggKHdoaWNoIGRlcGVuZHMgb24gZWRpdG9yIG9ic2VydmFibGUpICovXG4gIGZvcmNlRWRpdG9yVXBkYXRlKCkge1xuICAgIGNvbnN0IGN1cnJlbnRFZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoIWN1cnJlbnRFZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb2xkS2V5ID0gdGhpcy5maWxlUGF0aDtcbiAgICAvLyBSZXR1cm4gYmFjayBpZiB0aGUga2VybmVsIGZvciB0aGlzIGVkaXRvciBpcyBhbHJlYWR5IGRpc3Bvc2VkLlxuICAgIGlmICghb2xkS2V5IHx8ICF0aGlzLmtlcm5lbE1hcHBpbmcuaGFzKG9sZEtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVFZGl0b3IobnVsbCk7XG4gICAgdGhpcy51cGRhdGVFZGl0b3IoY3VycmVudEVkaXRvcik7XG4gICAgY29uc3QgbmV3S2V5ID0gdGhpcy5maWxlUGF0aDtcbiAgICBpZiAoIW5ld0tleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDaGFuZ2Uga2V5IG9mIGtlcm5lbE1hcHBpbmcgZnJvbSBlZGl0b3IgSUQgdG8gZmlsZSBwYXRoXG4gICAgdGhpcy5rZXJuZWxNYXBwaW5nLnNldChuZXdLZXksIHRoaXMua2VybmVsTWFwcGluZy5nZXQob2xkS2V5KSk7XG4gICAgdGhpcy5rZXJuZWxNYXBwaW5nLmRlbGV0ZShvbGRLZXkpO1xuICB9XG59XG5jb25zdCBzdG9yZSA9IG5ldyBTdG9yZSgpO1xuZXhwb3J0IGRlZmF1bHQgc3RvcmU7IC8vIEZvciBkZWJ1Z2dpbmdcblxud2luZG93Lmh5ZHJvZ2VuX3N0b3JlID0gc3RvcmU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVMaWtlIHtcbiAga2VybmVsPzogS2VybmVsIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgbWFya2Vycz86IE1hcmtlclN0b3JlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFzRTtBQUN0RSwrQkFBMEQ7QUFDMUQsb0NBSWtCO0FBQ2xCLDZEQUErQztBQUMvQyx3REFBb0M7QUFDcEMsdURBQStCO0FBQy9CLGdFQUFrRDtBQUtsRCxNQUFhLEtBQUs7SUFBbEI7UUFDRSxrQkFBYSxHQUFHLElBQUksMEJBQW1CLEVBQUUsQ0FBQztRQUUxQyxtQkFBYyxHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXJELG1CQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUVuQyxrQkFBYSxHQUFrQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXpDLG9CQUFlLEdBQXlCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFbEQsV0FBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUk5QyxrQkFBYSxHQUE0QyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25FLGVBQVUsR0FBWSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBK1J4RSxDQUFDO0lBNVJDLElBQUksTUFBTTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDN0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLGdC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QUM4QjtBQUV6QztJQURDLGlCQUFVOzhCQUNNLEdBQUc7OENBQThCO0FBRWxEO0lBREMsaUJBQVU7O3FDQUNtQztBQUU5QztJQURDLGlCQUFVOztzQ0FDeUI7QUFFcEM7SUFEQyxpQkFBVTs4QkFDSSxHQUFHOzRDQUFpRDtBQUluRTtJQURDLGVBQVE7OEJBQ0ssZ0JBQU07O21DQTBCbkI7QUFHRDtJQURDLGVBQVE7OztxQ0FRUjtBQUlEO0lBREMsZUFBUTs4QkFDUSxLQUFLOztzQ0FFckI7QUFHRDtJQURDLGVBQVE7OztxQ0F5Q1I7QUFHRDtJQURDLGVBQVE7OEJBQ00saUJBQVc7O29DQU96QjtBQUdEO0lBREMsYUFBTTs7OzsyQ0FLTjtBQUdEO0lBREMsYUFBTTs7Ozt3Q0FHTjtBQWdDRDtJQURDLGFBQU07O3FDQUVHLGdCQUFNLFVBRU4saUJBQVU7O3NDQXlCbkI7QUFHRDtJQURDLGFBQU07O3FDQUNjLGdCQUFNOzt5Q0FnQjFCO0FBZ0JEO0lBREMsYUFBTTs7OztvQ0FRTjtBQUdEO0lBREMsYUFBTTs7cUNBQ2MsaUJBQVU7O3lDQVc5QjtBQXNCRDtJQURDLGFBQU07O3FDQUNZLGlCQUFVOzt1Q0FPNUI7QUFHRDtJQURDLGFBQU07Ozs7MkNBT047QUF4Ukgsc0JBK1NDO0FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUMxQixrQkFBZSxLQUFLLENBQUM7QUFFckIsTUFBTSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RWRpdG9yLCBDb21wb3NpdGVEaXNwb3NhYmxlLCBGaWxlLCBHcmFtbWFyIH0gZnJvbSBcImF0b21cIjtcclxuaW1wb3J0IHsgb2JzZXJ2YWJsZSwgY29tcHV0ZWQsIGFjdGlvbiwga2V5cyB9IGZyb20gXCJtb2J4XCI7XHJcbmltcG9ydCB7XHJcbiAgaXNNdWx0aWxhbmd1YWdlR3JhbW1hcixcclxuICBnZXRFbWJlZGRlZFNjb3BlLFxyXG4gIGlzVW5zYXZlZEZpbGVQYXRoLFxyXG59IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQgKiBhcyBjb2RlTWFuYWdlciBmcm9tIFwiLi4vY29kZS1tYW5hZ2VyXCI7XHJcbmltcG9ydCBNYXJrZXJTdG9yZSBmcm9tIFwiLi9tYXJrZXJzXCI7XHJcbmltcG9ydCBLZXJuZWwgZnJvbSBcIi4uL2tlcm5lbFwiO1xyXG5pbXBvcnQgKiBhcyBjb21tdXRhYmxlIGZyb20gXCJAbnRlcmFjdC9jb21tdXRhYmxlXCI7XHJcblxyXG5leHBvcnQgdHlwZSBLZXJuZWxNYXAgPSBNYXA8c3RyaW5nLCBLZXJuZWw+O1xyXG5leHBvcnQgdHlwZSBLZXJuZWxNYXBwaW5nID0gTWFwPHN0cmluZywgS2VybmVsIHwgS2VybmVsTWFwPjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTdG9yZSB7XHJcbiAgc3Vic2NyaXB0aW9ucyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKCk7XHJcbiAgQG9ic2VydmFibGVcclxuICBtYXJrZXJzTWFwcGluZzogTWFwPG51bWJlciwgTWFya2VyU3RvcmU+ID0gbmV3IE1hcCgpO1xyXG4gIEBvYnNlcnZhYmxlXHJcbiAgcnVubmluZ0tlcm5lbHM6IEFycmF5PEtlcm5lbD4gPSBbXTtcclxuICBAb2JzZXJ2YWJsZVxyXG4gIGtlcm5lbE1hcHBpbmc6IEtlcm5lbE1hcHBpbmcgPSBuZXcgTWFwKCk7XHJcbiAgQG9ic2VydmFibGVcclxuICBzdGFydGluZ0tlcm5lbHM6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xyXG4gIEBvYnNlcnZhYmxlXHJcbiAgZWRpdG9yID0gYXRvbS53b3Jrc3BhY2UuZ2V0QWN0aXZlVGV4dEVkaXRvcigpO1xyXG4gIEBvYnNlcnZhYmxlXHJcbiAgZ3JhbW1hcjogR3JhbW1hciB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgQG9ic2VydmFibGVcclxuICBjb25maWdNYXBwaW5nOiBNYXA8c3RyaW5nLCB1bmtub3duIHwgbnVsbCB8IHVuZGVmaW5lZD4gPSBuZXcgTWFwKCk7XHJcbiAgZ2xvYmFsTW9kZTogYm9vbGVhbiA9IEJvb2xlYW4oYXRvbS5jb25maWcuZ2V0KFwiSHlkcm9nZW4uZ2xvYmFsTW9kZVwiKSk7XHJcblxyXG4gIEBjb21wdXRlZFxyXG4gIGdldCBrZXJuZWwoKTogS2VybmVsIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXRoaXMuZ3JhbW1hciB8fCAhdGhpcy5lZGl0b3IpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZ2xvYmFsTW9kZSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50U2NvcGVOYW1lID0gdGhpcy5ncmFtbWFyLnNjb3BlTmFtZTtcclxuICAgICAgcmV0dXJuIHRoaXMucnVubmluZ0tlcm5lbHMuZmluZChcclxuICAgICAgICAoaykgPT4gay5ncmFtbWFyLnNjb3BlTmFtZSA9PT0gY3VycmVudFNjb3BlTmFtZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmZpbGVQYXRoO1xyXG4gICAgaWYgKCFmaWxlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2VybmVsT3JNYXAgPSB0aGlzLmtlcm5lbE1hcHBpbmcuZ2V0KGZpbGUpO1xyXG4gICAgaWYgKCFrZXJuZWxPck1hcCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChrZXJuZWxPck1hcCBpbnN0YW5jZW9mIEtlcm5lbCkge1xyXG4gICAgICByZXR1cm4ga2VybmVsT3JNYXA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5ncmFtbWFyICYmIHRoaXMuZ3JhbW1hci5uYW1lXHJcbiAgICAgID8ga2VybmVsT3JNYXAuZ2V0KHRoaXMuZ3JhbW1hci5uYW1lKVxyXG4gICAgICA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBAY29tcHV0ZWRcclxuICBnZXQgZmlsZVBhdGgoKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcclxuICAgIGlmICghZWRpdG9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2F2ZWRGaWxlUGF0aCA9IGVkaXRvci5nZXRQYXRoKCk7XHJcbiAgICByZXR1cm4gc2F2ZWRGaWxlUGF0aCA/IHNhdmVkRmlsZVBhdGggOiBgVW5zYXZlZCBFZGl0b3IgJHtlZGl0b3IuaWR9YDtcclxuICB9XHJcblxyXG4gIC8vIFRPRE8gZml4IHRoZSB0eXBlcyB1c2luZyBtb2J4IHR5cGVzXHJcbiAgQGNvbXB1dGVkXHJcbiAgZ2V0IGZpbGVQYXRocygpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBrZXlzKHRoaXMua2VybmVsTWFwcGluZyk7XHJcbiAgfVxyXG5cclxuICBAY29tcHV0ZWRcclxuICBnZXQgbm90ZWJvb2soKSB7XHJcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcclxuICAgIGlmICghZWRpdG9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgbGV0IG5vdGVib29rID0gY29tbXV0YWJsZS5lbXB0eU5vdGVib29rO1xyXG5cclxuICAgIGlmICh0aGlzLmtlcm5lbCkge1xyXG4gICAgICBub3RlYm9vayA9IG5vdGVib29rLnNldEluKFxyXG4gICAgICAgIFtcIm1ldGFkYXRhXCIsIFwia2VybmVsc3BlY1wiXSxcclxuICAgICAgICB0aGlzLmtlcm5lbC50cmFuc3BvcnQua2VybmVsU3BlY1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNlbGxSYW5nZXMgPSBjb2RlTWFuYWdlci5nZXRDZWxscyhlZGl0b3IpO1xyXG5cclxuICAgIGNlbGxSYW5nZXMuZm9yRWFjaCgoY2VsbCkgPT4ge1xyXG4gICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGNlbGw7XHJcbiAgICAgIGxldCBzb3VyY2UgPSBjb2RlTWFuYWdlci5nZXRUZXh0SW5SYW5nZShlZGl0b3IsIHN0YXJ0LCBlbmQpO1xyXG4gICAgICBzb3VyY2UgPSBzb3VyY2UgPyBzb3VyY2UgOiBcIlwiO1xyXG4gICAgICAvLyBXaGVuIHRoZSBjZWxsIG1hcmtlciBmb2xsb3dpbmcgYSBnaXZlbiBjZWxsIHJhbmdlIGlzIG9uIGl0cyBvd24gbGluZSxcclxuICAgICAgLy8gdGhlIG5ld2xpbmUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoYXQgY2VsbCBtYXJrZXIgaXMgaW5jbHVkZWQgaW5cclxuICAgICAgLy8gYHNvdXJjZWAuIFdlIHJlbW92ZSB0aGF0IGhlcmUuIFNlZSAjMTUxMiBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gICAgICBpZiAoc291cmNlLnNsaWNlKC0xKSA9PT0gXCJcXG5cIikge1xyXG4gICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zbGljZSgwLCAtMSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY2VsbFR5cGUgPSBjb2RlTWFuYWdlci5nZXRNZXRhZGF0YUZvclJvdyhlZGl0b3IsIHN0YXJ0KTtcclxuICAgICAgbGV0IG5ld0NlbGw7XHJcblxyXG4gICAgICBpZiAoY2VsbFR5cGUgPT09IFwiY29kZWNlbGxcIikge1xyXG4gICAgICAgIG5ld0NlbGwgPSBjb21tdXRhYmxlLmVtcHR5Q29kZUNlbGwuc2V0KFwic291cmNlXCIsIHNvdXJjZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY2VsbFR5cGUgPT09IFwibWFya2Rvd25cIikge1xyXG4gICAgICAgIHNvdXJjZSA9IGNvZGVNYW5hZ2VyLnJlbW92ZUNvbW1lbnRzTWFya2Rvd25DZWxsKGVkaXRvciwgc291cmNlKTtcclxuICAgICAgICBuZXdDZWxsID0gY29tbXV0YWJsZS5lbXB0eU1hcmtkb3duQ2VsbC5zZXQoXCJzb3VyY2VcIiwgc291cmNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbm90ZWJvb2sgPSBjb21tdXRhYmxlLmFwcGVuZENlbGxUb05vdGVib29rKG5vdGVib29rLCBuZXdDZWxsKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjb21tdXRhYmxlLnRvSlMobm90ZWJvb2spO1xyXG4gIH1cclxuXHJcbiAgQGNvbXB1dGVkXHJcbiAgZ2V0IG1hcmtlcnMoKTogTWFya2VyU3RvcmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xyXG4gICAgaWYgKCFlZGl0b3IpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtYXJrZXJTdG9yZSA9IHRoaXMubWFya2Vyc01hcHBpbmcuZ2V0KGVkaXRvci5pZCk7XHJcbiAgICByZXR1cm4gbWFya2VyU3RvcmUgPyBtYXJrZXJTdG9yZSA6IHRoaXMubmV3TWFya2VyU3RvcmUoZWRpdG9yLmlkKTtcclxuICB9XHJcblxyXG4gIEBhY3Rpb25cclxuICBuZXdNYXJrZXJTdG9yZShlZGl0b3JJZDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBtYXJrZXJTdG9yZSA9IG5ldyBNYXJrZXJTdG9yZSgpO1xyXG4gICAgdGhpcy5tYXJrZXJzTWFwcGluZy5zZXQoZWRpdG9ySWQsIG1hcmtlclN0b3JlKTtcclxuICAgIHJldHVybiBtYXJrZXJTdG9yZTtcclxuICB9XHJcblxyXG4gIEBhY3Rpb25cclxuICBzdGFydEtlcm5lbChrZXJuZWxEaXNwbGF5TmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN0YXJ0aW5nS2VybmVscy5zZXQoa2VybmVsRGlzcGxheU5hbWUsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgYWRkRmlsZURpc3Bvc2VyKGVkaXRvcjogVGV4dEVkaXRvciwgZmlsZVBhdGg6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsZURpc3Bvc2VyID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKTtcclxuXHJcbiAgICBpZiAoaXNVbnNhdmVkRmlsZVBhdGgoZmlsZVBhdGgpKSB7XHJcbiAgICAgIGZpbGVEaXNwb3Nlci5hZGQoXHJcbiAgICAgICAgZWRpdG9yLm9uRGlkU2F2ZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgIGZpbGVEaXNwb3Nlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICB0aGlzLmFkZEZpbGVEaXNwb3NlcihlZGl0b3IsIGV2ZW50LnBhdGgpOyAvLyBBZGQgYW5vdGhlciBgZmlsZURpc3Bvc2VyYCBvbmNlIGl0J3Mgc2F2ZWRcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBmaWxlRGlzcG9zZXIuYWRkKFxyXG4gICAgICAgIGVkaXRvci5vbkRpZERlc3Ryb3koKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rZXJuZWxNYXBwaW5nLmRlbGV0ZShmaWxlUGF0aCk7XHJcbiAgICAgICAgICBmaWxlRGlzcG9zZXIuZGlzcG9zZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWxlOiBGaWxlID0gbmV3IEZpbGUoZmlsZVBhdGgpO1xyXG4gICAgICBmaWxlRGlzcG9zZXIuYWRkKFxyXG4gICAgICAgIGZpbGUub25EaWREZWxldGUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rZXJuZWxNYXBwaW5nLmRlbGV0ZShmaWxlUGF0aCk7XHJcbiAgICAgICAgICBmaWxlRGlzcG9zZXIuZGlzcG9zZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChmaWxlRGlzcG9zZXIpO1xyXG4gIH1cclxuXHJcbiAgQGFjdGlvblxyXG4gIG5ld0tlcm5lbChcclxuICAgIGtlcm5lbDogS2VybmVsLFxyXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcclxuICAgIGVkaXRvcjogVGV4dEVkaXRvcixcclxuICAgIGdyYW1tYXI6IEdyYW1tYXJcclxuICApIHtcclxuICAgIGlmIChpc011bHRpbGFuZ3VhZ2VHcmFtbWFyKGVkaXRvci5nZXRHcmFtbWFyKCkpKSB7XHJcbiAgICAgIGlmICghdGhpcy5rZXJuZWxNYXBwaW5nLmhhcyhmaWxlUGF0aCkpIHtcclxuICAgICAgICB0aGlzLmtlcm5lbE1hcHBpbmcuc2V0KGZpbGVQYXRoLCBuZXcgTWFwKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFRPRE8gd2hlbiB3aWxsIHRoaXMgYmUgYSBLZXJuZWw/XHJcbiAgICAgIGNvbnN0IG11bHRpTGFuZ3VhZ2VNYXAgPSB0aGlzLmtlcm5lbE1hcHBpbmcuZ2V0KGZpbGVQYXRoKTtcclxuICAgICAgaWYgKG11bHRpTGFuZ3VhZ2VNYXAgJiYgdHlwZW9mIG11bHRpTGFuZ3VhZ2VNYXAuc2V0ID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAobXVsdGlMYW5ndWFnZU1hcCBhcyBLZXJuZWxNYXApLnNldChncmFtbWFyLm5hbWUsIGtlcm5lbCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMua2VybmVsTWFwcGluZy5zZXQoZmlsZVBhdGgsIGtlcm5lbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZGRGaWxlRGlzcG9zZXIoZWRpdG9yLCBmaWxlUGF0aCk7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucnVubmluZ0tlcm5lbHMuZmluZEluZGV4KChrKSA9PiBrID09PSBrZXJuZWwpO1xyXG5cclxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgdGhpcy5ydW5uaW5nS2VybmVscy5wdXNoKGtlcm5lbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGVsZXRlIHN0YXJ0aW5nS2VybmVsIHNpbmNlIHN0b3JlLmtlcm5lbCBub3cgaW4gcGxhY2UgdG8gcHJldmVudCBkdXBsaWNhdGUga2VybmVsXHJcbiAgICB0aGlzLnN0YXJ0aW5nS2VybmVscy5kZWxldGUoa2VybmVsLmtlcm5lbFNwZWMuZGlzcGxheV9uYW1lKTtcclxuICB9XHJcblxyXG4gIEBhY3Rpb25cclxuICBkZWxldGVLZXJuZWwoa2VybmVsOiBLZXJuZWwpIHtcclxuICAgIGNvbnN0IGdyYW1tYXIgPSBrZXJuZWwuZ3JhbW1hci5uYW1lO1xyXG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzRm9yS2VybmVsKGtlcm5lbCk7XHJcbiAgICBmaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGtlcm5lbE9yTWFwID0gdGhpcy5rZXJuZWxNYXBwaW5nLmdldChmaWxlKTtcclxuICAgICAgaWYgKCFrZXJuZWxPck1hcCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGtlcm5lbE9yTWFwIGluc3RhbmNlb2YgS2VybmVsKSB7XHJcbiAgICAgICAgdGhpcy5rZXJuZWxNYXBwaW5nLmRlbGV0ZShmaWxlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBrZXJuZWxPck1hcC5kZWxldGUoZ3JhbW1hcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ydW5uaW5nS2VybmVscyA9IHRoaXMucnVubmluZ0tlcm5lbHMuZmlsdGVyKChrKSA9PiBrICE9PSBrZXJuZWwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZXNGb3JLZXJuZWwoa2VybmVsOiBLZXJuZWwpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IGdyYW1tYXIgPSBrZXJuZWwuZ3JhbW1hci5uYW1lO1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZVBhdGhzLmZpbHRlcigoZmlsZSkgPT4ge1xyXG4gICAgICBjb25zdCBrZXJuZWxPck1hcCA9IHRoaXMua2VybmVsTWFwcGluZy5nZXQoZmlsZSk7XHJcbiAgICAgIGlmICgha2VybmVsT3JNYXApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGtlcm5lbE9yTWFwIGluc3RhbmNlb2YgS2VybmVsXHJcbiAgICAgICAgPyBrZXJuZWxPck1hcCA9PT0ga2VybmVsXHJcbiAgICAgICAgOiBrZXJuZWxPck1hcC5nZXQoZ3JhbW1hcikgPT09IGtlcm5lbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQGFjdGlvblxyXG4gIGRpc3Bvc2UoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZGlzcG9zZSgpO1xyXG4gICAgdGhpcy5tYXJrZXJzTWFwcGluZy5mb3JFYWNoKChtYXJrZXJTdG9yZSkgPT4gbWFya2VyU3RvcmUuY2xlYXIoKSk7XHJcbiAgICB0aGlzLm1hcmtlcnNNYXBwaW5nLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJ1bm5pbmdLZXJuZWxzLmZvckVhY2goKGtlcm5lbCkgPT4ga2VybmVsLmRlc3Ryb3koKSk7XHJcbiAgICB0aGlzLnJ1bm5pbmdLZXJuZWxzID0gW107XHJcbiAgICB0aGlzLmtlcm5lbE1hcHBpbmcuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIEBhY3Rpb25cclxuICB1cGRhdGVFZGl0b3IoZWRpdG9yOiBUZXh0RWRpdG9yIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XHJcbiAgICB0aGlzLnNldEdyYW1tYXIoZWRpdG9yKTtcclxuXHJcbiAgICBpZiAodGhpcy5nbG9iYWxNb2RlICYmIHRoaXMua2VybmVsICYmIGVkaXRvcikge1xyXG4gICAgICBjb25zdCBmaWxlTmFtZSA9IGVkaXRvci5nZXRQYXRoKCk7XHJcbiAgICAgIGlmICghZmlsZU5hbWUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5rZXJuZWxNYXBwaW5nLnNldChmaWxlTmFtZSwgdGhpcy5rZXJuZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmV0dXJucyB0aGUgZW1iZWRkZWQgZ3JhbW1hciBmb3IgbXVsdGlsYW5ndWFnZSwgbm9ybWFsIGdyYW1tYXIgb3RoZXJ3aXNlXHJcbiAgZ2V0RW1iZWRkZWRHcmFtbWFyKGVkaXRvcjogVGV4dEVkaXRvcik6IEdyYW1tYXIgfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGdyYW1tYXIgPSBlZGl0b3IuZ2V0R3JhbW1hcigpO1xyXG5cclxuICAgIGlmICghaXNNdWx0aWxhbmd1YWdlR3JhbW1hcihncmFtbWFyKSkge1xyXG4gICAgICByZXR1cm4gZ3JhbW1hcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlbWJlZGRlZFNjb3BlID0gZ2V0RW1iZWRkZWRTY29wZShcclxuICAgICAgZWRpdG9yLFxyXG4gICAgICBlZGl0b3IuZ2V0Q3Vyc29yQnVmZmVyUG9zaXRpb24oKVxyXG4gICAgKTtcclxuICAgIGlmICghZW1iZWRkZWRTY29wZSkge1xyXG4gICAgICByZXR1cm4gZ3JhbW1hcjtcclxuICAgIH1cclxuICAgIGNvbnN0IHNjb3BlID0gZW1iZWRkZWRTY29wZS5yZXBsYWNlKFwiLmVtYmVkZGVkXCIsIFwiXCIpO1xyXG4gICAgcmV0dXJuIGF0b20uZ3JhbW1hcnMuZ3JhbW1hckZvclNjb3BlTmFtZShzY29wZSk7XHJcbiAgfVxyXG5cclxuICBAYWN0aW9uXHJcbiAgc2V0R3JhbW1hcihlZGl0b3I6IFRleHRFZGl0b3IgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIWVkaXRvcikge1xyXG4gICAgICB0aGlzLmdyYW1tYXIgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ncmFtbWFyID0gdGhpcy5nZXRFbWJlZGRlZEdyYW1tYXIoZWRpdG9yKTtcclxuICB9XHJcblxyXG4gIEBhY3Rpb25cclxuICBzZXRDb25maWdWYWx1ZShrZXlQYXRoOiBzdHJpbmcsIG5ld1ZhbHVlOiB1bmtub3duIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKCFuZXdWYWx1ZSkge1xyXG4gICAgICBuZXdWYWx1ZSA9IGF0b20uY29uZmlnLmdldChrZXlQYXRoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbmZpZ01hcHBpbmcuc2V0KGtleVBhdGgsIG5ld1ZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKiBGb3JjZSBtb2J4IHRvIHJlY2FsY3VsYXRlIGZpbGVQYXRoICh3aGljaCBkZXBlbmRzIG9uIGVkaXRvciBvYnNlcnZhYmxlKSAqL1xyXG4gIGZvcmNlRWRpdG9yVXBkYXRlKCkge1xyXG4gICAgY29uc3QgY3VycmVudEVkaXRvciA9IHRoaXMuZWRpdG9yO1xyXG4gICAgaWYgKCFjdXJyZW50RWRpdG9yKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IG9sZEtleSA9IHRoaXMuZmlsZVBhdGg7XHJcbiAgICAvLyBSZXR1cm4gYmFjayBpZiB0aGUga2VybmVsIGZvciB0aGlzIGVkaXRvciBpcyBhbHJlYWR5IGRpc3Bvc2VkLlxyXG4gICAgaWYgKCFvbGRLZXkgfHwgIXRoaXMua2VybmVsTWFwcGluZy5oYXMob2xkS2V5KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUVkaXRvcihudWxsKTtcclxuICAgIHRoaXMudXBkYXRlRWRpdG9yKGN1cnJlbnRFZGl0b3IpO1xyXG4gICAgY29uc3QgbmV3S2V5ID0gdGhpcy5maWxlUGF0aDtcclxuICAgIGlmICghbmV3S2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIENoYW5nZSBrZXkgb2Yga2VybmVsTWFwcGluZyBmcm9tIGVkaXRvciBJRCB0byBmaWxlIHBhdGhcclxuICAgIHRoaXMua2VybmVsTWFwcGluZy5zZXQobmV3S2V5LCB0aGlzLmtlcm5lbE1hcHBpbmcuZ2V0KG9sZEtleSkpO1xyXG4gICAgdGhpcy5rZXJuZWxNYXBwaW5nLmRlbGV0ZShvbGRLZXkpO1xyXG4gIH1cclxufVxyXG5jb25zdCBzdG9yZSA9IG5ldyBTdG9yZSgpO1xyXG5leHBvcnQgZGVmYXVsdCBzdG9yZTsgLy8gRm9yIGRlYnVnZ2luZ1xyXG5cclxud2luZG93Lmh5ZHJvZ2VuX3N0b3JlID0gc3RvcmU7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlTGlrZSB7XHJcbiAga2VybmVsPzogS2VybmVsIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBtYXJrZXJzPzogTWFya2VyU3RvcmUgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG59XHJcbiJdfQ== \ No newline at end of file diff --git a/dist/store/markers.d.ts b/dist/store/markers.d.ts deleted file mode 100644 index 7f883fbe6..000000000 --- a/dist/store/markers.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type ResultView from "../components/result-view"; -export default class MarkerStore { - markers: Map; - clear(): void; - clearOnRow(row: number): boolean; - new(bubble: ResultView): void; - delete(key: number): void; -} diff --git a/dist/store/output.d.ts b/dist/store/output.d.ts deleted file mode 100644 index 11cca3be8..000000000 --- a/dist/store/output.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -export declare function reduceOutputs(outputs: Array>, output: Record): Array>; -export declare function isSingleLine(text: string | null | undefined, availableSpace: number): boolean; -export default class OutputStore { - outputs: Array>; - status: string; - executionCount: number | null | undefined; - index: number; - position: { - lineHeight: number; - lineLength: number; - editorWidth: number; - charWidth: number; - }; - get isPlain(): boolean; - appendOutput(message: Record): void; - updatePosition(position: { - lineHeight?: number; - lineLength?: number; - editorWidth?: number; - }): void; - setIndex: (index: number) => void; - incrementIndex: () => void; - decrementIndex: () => void; - clear: () => void; -} diff --git a/dist/store/output.js b/dist/store/output.js index 198590465..c9b974ca8 100644 --- a/dist/store/output.js +++ b/dist/store/output.js @@ -36,9 +36,7 @@ function reduceOutputs(outputs, output) { } exports.reduceOutputs = reduceOutputs; function isSingleLine(text, availableSpace) { - return ((!text || - text.indexOf("\n") === -1 || - text.indexOf("\n") === text.length - 1) && + return ((!text || !text.includes("\n") || text.indexOf("\n") === text.length - 1) && availableSpace > escape_carriage_1.escapeCarriageReturn(text).length); } exports.isSingleLine = isSingleLine; @@ -112,7 +110,7 @@ class OutputStore { else if (message.stream === "status") { this.status = message.data; } - else if (outputTypes.indexOf(message.output_type) > -1) { + else if (outputTypes.includes(message.output_type)) { reduceOutputs(this.outputs, message); this.setIndex(this.outputs.length - 1); } @@ -175,4 +173,4 @@ __decorate([ __metadata("design:type", Object) ], OutputStore.prototype, "clear", void 0); exports.default = OutputStore; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3N0b3JlL291dHB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrQkFBb0Q7QUFFcEQscURBR3lCO0FBRXpCLCtEQUFxRTtBQUNyRSxNQUFNLFdBQVcsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFZMUUsU0FBZ0IsYUFBYSxDQUMzQixPQUFtQyxFQUNuQyxNQUEyQjtJQUUzQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVoQyxJQUNFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNsQixNQUFNLENBQUMsV0FBVyxLQUFLLFFBQVE7UUFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQ3RDO1FBQ0EsU0FBUyxVQUFVLENBQ2pCLFFBQTZCLEVBQzdCLElBQXlCO1lBRXpCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsMENBQXdCLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3RDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEMsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEMsT0FBTyxPQUFPLENBQUM7U0FDaEI7S0FDRjtJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckIsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQS9CRCxzQ0ErQkM7QUFDRCxTQUFnQixZQUFZLENBQzFCLElBQStCLEVBQy9CLGNBQXNCO0lBR3RCLE9BQU8sQ0FDTCxDQUFDLENBQUMsSUFBSTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDekMsY0FBYyxHQUFHLHNDQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FDbkQsQ0FBQztBQUNKLENBQUM7QUFYRCxvQ0FXQztBQUNELE1BQXFCLFdBQVc7SUFBaEM7UUFFRSxZQUFPLEdBQStCLEVBQUUsQ0FBQztRQUV6QyxXQUFNLEdBQVcsU0FBUyxDQUFDO1FBRTNCLG1CQUFjLEdBQThCLElBQUksQ0FBQztRQUVqRCxVQUFLLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFbkIsYUFBUSxHQUFHO1lBQ1QsVUFBVSxFQUFFLENBQUM7WUFDYixVQUFVLEVBQUUsQ0FBQztZQUNiLFdBQVcsRUFBRSxDQUFDO1lBQ2QsU0FBUyxFQUFFLENBQUM7U0FDYixDQUFDO1FBeURGLGFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzNCLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzthQUNoQjtpQkFBTSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7YUFDdEM7UUFDSCxDQUFDLENBQUM7UUFFRixtQkFBYyxHQUFHLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsS0FBSztnQkFDUixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO1FBRUYsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUM7UUFFRixVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUM7SUFDSixDQUFDO0lBL0VDLElBQUksT0FBTztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUMvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUMxQixDQUFDO1FBQ0YsSUFBSSxjQUFjLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9CLFFBQVEsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUMxQixLQUFLLGdCQUFnQixDQUFDO1lBQ3RCLEtBQUssY0FBYyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQzNCLE9BQU8sMEJBQWdCLENBQUMsTUFBTSxDQUFDO29CQUM3QixDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxjQUFjLENBQUM7b0JBQ3BELENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDWDtZQUVELEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2IsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQzthQUNsRDtZQUVELE9BQU8sQ0FBQyxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtJQUNILENBQUM7SUFHRCxZQUFZLENBQUMsT0FBNEI7UUFDdkMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLGlCQUFpQixFQUFFO1lBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztTQUNwQzthQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1NBQzVCO2FBQU0sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN4RCxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUdELGNBQWMsQ0FBQyxRQUlkO1FBQ0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0E0QkY7QUEvRkM7SUFEQyxpQkFBVTs4QkFDRixLQUFLOzRDQUEyQjtBQUV6QztJQURDLGlCQUFVOzsyQ0FDZ0I7QUFFM0I7SUFEQyxpQkFBVTs7bURBQ3NDO0FBRWpEO0lBREMsaUJBQVU7OzBDQUNRO0FBRW5CO0lBREMsaUJBQVU7OzZDQU1UO0FBR0Y7SUFEQyxlQUFROzs7MENBK0JSO0FBR0Q7SUFEQyxhQUFNOzs7OytDQVVOO0FBR0Q7SUFEQyxhQUFNOzs7O2lEQU9OO0FBR0Q7SUFEQyxhQUFNOzs2Q0FTTDtBQUVGO0lBREMsYUFBTTs7bURBTUw7QUFFRjtJQURDLGFBQU07O21EQUdMO0FBRUY7SUFEQyxhQUFNOzswQ0FJTDtBQWhHSiw4QkFpR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhY3Rpb24sIGNvbXB1dGVkLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7XG4gIGVzY2FwZUNhcnJpYWdlUmV0dXJuLFxuICBlc2NhcGVDYXJyaWFnZVJldHVyblNhZmUsXG59IGZyb20gXCJlc2NhcGUtY2FycmlhZ2VcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVBcnJheSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBpc1RleHRPdXRwdXRPbmx5IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvcmVzdWx0LXZpZXcvZGlzcGxheVwiO1xuY29uc3Qgb3V0cHV0VHlwZXMgPSBbXCJleGVjdXRlX3Jlc3VsdFwiLCBcImRpc3BsYXlfZGF0YVwiLCBcInN0cmVhbVwiLCBcImVycm9yXCJdO1xuXG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9udGVyYWN0L2h5ZHJvZ2VuL2lzc3Vlcy80NjYjaXNzdWVjb21tZW50LTI3NDgyMjkzNyBBblxuICogb3V0cHV0IGNhbiBiZSBhIHN0cmVhbSBvZiBkYXRhIHRoYXQgZG9lcyBub3QgYXJyaXZlIGF0IGEgc2luZ2xlIHRpbWUuIFRoaXNcbiAqIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBvdXRwdXRzIGFuZCBhY2N1bXVsYXRlcyB0aGUgZGF0YSBpbnRvXG4gKiBhIHJlZHVjZWQgb3V0cHV0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0W119IG91dHB1dHMgLSBLZXJuZWwgb3V0cHV0IG1lc3NhZ2VzXG4gKiBAcGFyYW0ge09iamVjdH0gb3V0cHV0IC0gT3V0cHV0dGVkIHRvIGJlIHJlZHVjZWQgaW50byBsaXN0IG9mIG91dHB1dHNcbiAqIEByZXR1cm5zIHtPYmplY3RbXX0gVXBkYXRlZC1vdXRwdXRzIC0gT3V0cHV0cyArIE91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlT3V0cHV0cyhcbiAgb3V0cHV0czogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4sXG4gIG91dHB1dDogUmVjb3JkPHN0cmluZywgYW55PlxuKTogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICBjb25zdCBsYXN0ID0gb3V0cHV0cy5sZW5ndGggLSAxO1xuXG4gIGlmIChcbiAgICBvdXRwdXRzLmxlbmd0aCA+IDAgJiZcbiAgICBvdXRwdXQub3V0cHV0X3R5cGUgPT09IFwic3RyZWFtXCIgJiZcbiAgICBvdXRwdXRzW2xhc3RdLm91dHB1dF90eXBlID09PSBcInN0cmVhbVwiXG4gICkge1xuICAgIGZ1bmN0aW9uIGFwcGVuZFRleHQoXG4gICAgICBwcmV2aW91czogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIG5leHQ6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApIHtcbiAgICAgIHByZXZpb3VzLnRleHQgPSBlc2NhcGVDYXJyaWFnZVJldHVyblNhZmUocHJldmlvdXMudGV4dCArIG5leHQudGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKG91dHB1dHNbbGFzdF0ubmFtZSA9PT0gb3V0cHV0Lm5hbWUpIHtcbiAgICAgIGFwcGVuZFRleHQob3V0cHV0c1tsYXN0XSwgb3V0cHV0KTtcbiAgICAgIHJldHVybiBvdXRwdXRzO1xuICAgIH1cblxuICAgIGlmIChvdXRwdXRzLmxlbmd0aCA+IDEgJiYgb3V0cHV0c1tsYXN0IC0gMV0ubmFtZSA9PT0gb3V0cHV0Lm5hbWUpIHtcbiAgICAgIGFwcGVuZFRleHQob3V0cHV0c1tsYXN0IC0gMV0sIG91dHB1dCk7XG4gICAgICByZXR1cm4gb3V0cHV0cztcbiAgICB9XG4gIH1cblxuICBvdXRwdXRzLnB1c2gob3V0cHV0KTtcbiAgcmV0dXJuIG91dHB1dHM7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTaW5nbGVMaW5lKFxuICB0ZXh0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBhdmFpbGFibGVTcGFjZTogbnVtYmVyXG4pIHtcbiAgLy8gSWYgaXQgdHVybnMgb3V0IGVzY2FwZUNhcnJpYWdlUmV0dXJuIGlzIGEgYm90dGxlbmVjaywgd2Ugc2hvdWxkIHJlbW92ZSBpdC5cbiAgcmV0dXJuIChcbiAgICAoIXRleHQgfHxcbiAgICAgIHRleHQuaW5kZXhPZihcIlxcblwiKSA9PT0gLTEgfHxcbiAgICAgIHRleHQuaW5kZXhPZihcIlxcblwiKSA9PT0gdGV4dC5sZW5ndGggLSAxKSAmJlxuICAgIGF2YWlsYWJsZVNwYWNlID4gZXNjYXBlQ2FycmlhZ2VSZXR1cm4odGV4dCkubGVuZ3RoXG4gICk7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPdXRwdXRTdG9yZSB7XG4gIEBvYnNlcnZhYmxlXG4gIG91dHB1dHM6IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+ID0gW107XG4gIEBvYnNlcnZhYmxlXG4gIHN0YXR1czogc3RyaW5nID0gXCJydW5uaW5nXCI7XG4gIEBvYnNlcnZhYmxlXG4gIGV4ZWN1dGlvbkNvdW50OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcbiAgQG9ic2VydmFibGVcbiAgaW5kZXg6IG51bWJlciA9IC0xO1xuICBAb2JzZXJ2YWJsZVxuICBwb3NpdGlvbiA9IHtcbiAgICBsaW5lSGVpZ2h0OiAwLFxuICAgIGxpbmVMZW5ndGg6IDAsXG4gICAgZWRpdG9yV2lkdGg6IDAsXG4gICAgY2hhcldpZHRoOiAwLFxuICB9O1xuXG4gIEBjb21wdXRlZFxuICBnZXQgaXNQbGFpbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5vdXRwdXRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBhdmFpbGFibGVTcGFjZSA9IE1hdGguZmxvb3IoXG4gICAgICAodGhpcy5wb3NpdGlvbi5lZGl0b3JXaWR0aCAtIHRoaXMucG9zaXRpb24ubGluZUxlbmd0aCkgL1xuICAgICAgICB0aGlzLnBvc2l0aW9uLmNoYXJXaWR0aFxuICAgICk7XG4gICAgaWYgKGF2YWlsYWJsZVNwYWNlIDw9IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5vdXRwdXRzWzBdO1xuXG4gICAgc3dpdGNoIChvdXRwdXQub3V0cHV0X3R5cGUpIHtcbiAgICAgIGNhc2UgXCJleGVjdXRlX3Jlc3VsdFwiOlxuICAgICAgY2FzZSBcImRpc3BsYXlfZGF0YVwiOiB7XG4gICAgICAgIGNvbnN0IGJ1bmRsZSA9IG91dHB1dC5kYXRhO1xuICAgICAgICByZXR1cm4gaXNUZXh0T3V0cHV0T25seShidW5kbGUpXG4gICAgICAgICAgPyBpc1NpbmdsZUxpbmUoYnVuZGxlW1widGV4dC9wbGFpblwiXSwgYXZhaWxhYmxlU3BhY2UpXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBcInN0cmVhbVwiOiB7XG4gICAgICAgIHJldHVybiBpc1NpbmdsZUxpbmUob3V0cHV0LnRleHQsIGF2YWlsYWJsZVNwYWNlKTtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICBhcHBlbmRPdXRwdXQobWVzc2FnZTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmIChtZXNzYWdlLnN0cmVhbSA9PT0gXCJleGVjdXRpb25fY291bnRcIikge1xuICAgICAgdGhpcy5leGVjdXRpb25Db3VudCA9IG1lc3NhZ2UuZGF0YTtcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2Uuc3RyZWFtID09PSBcInN0YXR1c1wiKSB7XG4gICAgICB0aGlzLnN0YXR1cyA9IG1lc3NhZ2UuZGF0YTtcbiAgICB9IGVsc2UgaWYgKG91dHB1dFR5cGVzLmluZGV4T2YobWVzc2FnZS5vdXRwdXRfdHlwZSkgPiAtMSkge1xuICAgICAgcmVkdWNlT3V0cHV0cyh0aGlzLm91dHB1dHMsIG1lc3NhZ2UpO1xuICAgICAgdGhpcy5zZXRJbmRleCh0aGlzLm91dHB1dHMubGVuZ3RoIC0gMSk7XG4gICAgfVxuICB9XG5cbiAgQGFjdGlvblxuICB1cGRhdGVQb3NpdGlvbihwb3NpdGlvbjoge1xuICAgIGxpbmVIZWlnaHQ/OiBudW1iZXI7XG4gICAgbGluZUxlbmd0aD86IG51bWJlcjtcbiAgICBlZGl0b3JXaWR0aD86IG51bWJlcjtcbiAgfSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5wb3NpdGlvbiwgcG9zaXRpb24pO1xuICB9XG5cbiAgQGFjdGlvblxuICBzZXRJbmRleCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfSBlbHNlIGlmIChpbmRleCA8IHRoaXMub3V0cHV0cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5kZXggPSBpbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmRleCA9IHRoaXMub3V0cHV0cy5sZW5ndGggLSAxO1xuICAgIH1cbiAgfTtcbiAgQGFjdGlvblxuICBpbmNyZW1lbnRJbmRleCA9ICgpID0+IHtcbiAgICB0aGlzLmluZGV4ID1cbiAgICAgIHRoaXMuaW5kZXggPCB0aGlzLm91dHB1dHMubGVuZ3RoIC0gMVxuICAgICAgICA/IHRoaXMuaW5kZXggKyAxXG4gICAgICAgIDogdGhpcy5vdXRwdXRzLmxlbmd0aCAtIDE7XG4gIH07XG4gIEBhY3Rpb25cbiAgZGVjcmVtZW50SW5kZXggPSAoKSA9PiB7XG4gICAgdGhpcy5pbmRleCA9IHRoaXMuaW5kZXggPiAwID8gdGhpcy5pbmRleCAtIDEgOiAwO1xuICB9O1xuICBAYWN0aW9uXG4gIGNsZWFyID0gKCkgPT4ge1xuICAgIHRoaXMub3V0cHV0cyA9IFtdO1xuICAgIHRoaXMuaW5kZXggPSAtMTtcbiAgfTtcbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3N0b3JlL291dHB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrQkFBb0Q7QUFDcEQscURBR3lCO0FBQ3pCLCtEQUFxRTtBQUNyRSxNQUFNLFdBQVcsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFZMUUsU0FBZ0IsYUFBYSxDQUMzQixPQUFtQyxFQUNuQyxNQUEyQjtJQUUzQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVoQyxJQUNFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNsQixNQUFNLENBQUMsV0FBVyxLQUFLLFFBQVE7UUFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQ3RDO1FBQ0EsU0FBUyxVQUFVLENBQ2pCLFFBQTZCLEVBQzdCLElBQXlCO1lBRXpCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsMENBQXdCLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3RDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEMsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFD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QUFFekM7SUFEQyxpQkFBVTs7MkNBQ2dCO0FBRTNCO0lBREMsaUJBQVU7O21EQUNzQztBQUVqRDtJQURDLGlCQUFVOzswQ0FDUTtBQUVuQjtJQURDLGlCQUFVOzs2Q0FNVDtBQUdGO0lBREMsZUFBUTs7OzBDQStCUjtBQUdEO0lBREMsYUFBTTs7OzsrQ0FVTjtBQUdEO0lBREMsYUFBTTs7OztpREFPTjtBQUdEO0lBREMsYUFBTTs7NkNBU0w7QUFFRjtJQURDLGFBQU07O21EQU1MO0FBRUY7SUFEQyxhQUFNOzttREFHTDtBQUVGO0lBREMsYUFBTTs7MENBSUw7QUFoR0osOEJBaUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWN0aW9uLCBjb21wdXRlZCwgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XHJcbmltcG9ydCB7XHJcbiAgZXNjYXBlQ2FycmlhZ2VSZXR1cm4sXHJcbiAgZXNjYXBlQ2FycmlhZ2VSZXR1cm5TYWZlLFxyXG59IGZyb20gXCJlc2NhcGUtY2FycmlhZ2VcIjtcclxuaW1wb3J0IHsgaXNUZXh0T3V0cHV0T25seSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3Jlc3VsdC12aWV3L2Rpc3BsYXlcIjtcclxuY29uc3Qgb3V0cHV0VHlwZXMgPSBbXCJleGVjdXRlX3Jlc3VsdFwiLCBcImRpc3BsYXlfZGF0YVwiLCBcInN0cmVhbVwiLCBcImVycm9yXCJdO1xyXG5cclxuLyoqXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9udGVyYWN0L2h5ZHJvZ2VuL2lzc3Vlcy80NjYjaXNzdWVjb21tZW50LTI3NDgyMjkzNyBBblxyXG4gKiBvdXRwdXQgY2FuIGJlIGEgc3RyZWFtIG9mIGRhdGEgdGhhdCBkb2VzIG5vdCBhcnJpdmUgYXQgYSBzaW5nbGUgdGltZS4gVGhpc1xyXG4gKiBmdW5jdGlvbiBoYW5kbGVzIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2Ygb3V0cHV0cyBhbmQgYWNjdW11bGF0ZXMgdGhlIGRhdGEgaW50b1xyXG4gKiBhIHJlZHVjZWQgb3V0cHV0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdFtdfSBvdXRwdXRzIC0gS2VybmVsIG91dHB1dCBtZXNzYWdlc1xyXG4gKiBAcGFyYW0ge09iamVjdH0gb3V0cHV0IC0gT3V0cHV0dGVkIHRvIGJlIHJlZHVjZWQgaW50byBsaXN0IG9mIG91dHB1dHNcclxuICogQHJldHVybnMge09iamVjdFtdfSBVcGRhdGVkLW91dHB1dHMgLSBPdXRwdXRzICsgT3V0cHV0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlT3V0cHV0cyhcclxuICBvdXRwdXRzOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PixcclxuICBvdXRwdXQ6IFJlY29yZDxzdHJpbmcsIGFueT5cclxuKTogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xyXG4gIGNvbnN0IGxhc3QgPSBvdXRwdXRzLmxlbmd0aCAtIDE7XHJcblxyXG4gIGlmIChcclxuICAgIG91dHB1dHMubGVuZ3RoID4gMCAmJlxyXG4gICAgb3V0cHV0Lm91dHB1dF90eXBlID09PSBcInN0cmVhbVwiICYmXHJcbiAgICBvdXRwdXRzW2xhc3RdLm91dHB1dF90eXBlID09PSBcInN0cmVhbVwiXHJcbiAgKSB7XHJcbiAgICBmdW5jdGlvbiBhcHBlbmRUZXh0KFxyXG4gICAgICBwcmV2aW91czogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgICAgbmV4dDogUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICAgKSB7XHJcbiAgICAgIHByZXZpb3VzLnRleHQgPSBlc2NhcGVDYXJyaWFnZVJldHVyblNhZmUocHJldmlvdXMudGV4dCArIG5leHQudGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG91dHB1dHNbbGFzdF0ubmFtZSA9PT0gb3V0cHV0Lm5hbWUpIHtcclxuICAgICAgYXBwZW5kVGV4dChvdXRwdXRzW2xhc3RdLCBvdXRwdXQpO1xyXG4gICAgICByZXR1cm4gb3V0cHV0cztcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3V0cHV0cy5sZW5ndGggPiAxICYmIG91dHB1dHNbbGFzdCAtIDFdLm5hbWUgPT09IG91dHB1dC5uYW1lKSB7XHJcbiAgICAgIGFwcGVuZFRleHQob3V0cHV0c1tsYXN0IC0gMV0sIG91dHB1dCk7XHJcbiAgICAgIHJldHVybiBvdXRwdXRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3V0cHV0cy5wdXNoKG91dHB1dCk7XHJcbiAgcmV0dXJuIG91dHB1dHM7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzU2luZ2xlTGluZShcclxuICB0ZXh0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gIGF2YWlsYWJsZVNwYWNlOiBudW1iZXJcclxuKSB7XHJcbiAgLy8gSWYgaXQgdHVybnMgb3V0IGVzY2FwZUNhcnJpYWdlUmV0dXJuIGlzIGEgYm90dGxlbmVjaywgd2Ugc2hvdWxkIHJlbW92ZSBpdC5cclxuICByZXR1cm4gKFxyXG4gICAgKCF0ZXh0IHx8ICF0ZXh0LmluY2x1ZGVzKFwiXFxuXCIpIHx8IHRleHQuaW5kZXhPZihcIlxcblwiKSA9PT0gdGV4dC5sZW5ndGggLSAxKSAmJlxyXG4gICAgYXZhaWxhYmxlU3BhY2UgPiBlc2NhcGVDYXJyaWFnZVJldHVybih0ZXh0KS5sZW5ndGhcclxuICApO1xyXG59XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE91dHB1dFN0b3JlIHtcclxuICBAb2JzZXJ2YWJsZVxyXG4gIG91dHB1dHM6IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+ID0gW107XHJcbiAgQG9ic2VydmFibGVcclxuICBzdGF0dXM6IHN0cmluZyA9IFwicnVubmluZ1wiO1xyXG4gIEBvYnNlcnZhYmxlXHJcbiAgZXhlY3V0aW9uQ291bnQ6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIEBvYnNlcnZhYmxlXHJcbiAgaW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIEBvYnNlcnZhYmxlXHJcbiAgcG9zaXRpb24gPSB7XHJcbiAgICBsaW5lSGVpZ2h0OiAwLFxyXG4gICAgbGluZUxlbmd0aDogMCxcclxuICAgIGVkaXRvcldpZHRoOiAwLFxyXG4gICAgY2hhcldpZHRoOiAwLFxyXG4gIH07XHJcblxyXG4gIEBjb21wdXRlZFxyXG4gIGdldCBpc1BsYWluKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMub3V0cHV0cy5sZW5ndGggIT09IDEpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXZhaWxhYmxlU3BhY2UgPSBNYXRoLmZsb29yKFxyXG4gICAgICAodGhpcy5wb3NpdGlvbi5lZGl0b3JXaWR0aCAtIHRoaXMucG9zaXRpb24ubGluZUxlbmd0aCkgL1xyXG4gICAgICAgIHRoaXMucG9zaXRpb24uY2hhcldpZHRoXHJcbiAgICApO1xyXG4gICAgaWYgKGF2YWlsYWJsZVNwYWNlIDw9IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5vdXRwdXRzWzBdO1xyXG5cclxuICAgIHN3aXRjaCAob3V0cHV0Lm91dHB1dF90eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJleGVjdXRlX3Jlc3VsdFwiOlxyXG4gICAgICBjYXNlIFwiZGlzcGxheV9kYXRhXCI6IHtcclxuICAgICAgICBjb25zdCBidW5kbGUgPSBvdXRwdXQuZGF0YTtcclxuICAgICAgICByZXR1cm4gaXNUZXh0T3V0cHV0T25seShidW5kbGUpXHJcbiAgICAgICAgICA/IGlzU2luZ2xlTGluZShidW5kbGVbXCJ0ZXh0L3BsYWluXCJdLCBhdmFpbGFibGVTcGFjZSlcclxuICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNhc2UgXCJzdHJlYW1cIjoge1xyXG4gICAgICAgIHJldHVybiBpc1NpbmdsZUxpbmUob3V0cHV0LnRleHQsIGF2YWlsYWJsZVNwYWNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGFjdGlvblxyXG4gIGFwcGVuZE91dHB1dChtZXNzYWdlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBpZiAobWVzc2FnZS5zdHJlYW0gPT09IFwiZXhlY3V0aW9uX2NvdW50XCIpIHtcclxuICAgICAgdGhpcy5leGVjdXRpb25Db3VudCA9IG1lc3NhZ2UuZGF0YTtcclxuICAgIH0gZWxzZSBpZiAobWVzc2FnZS5zdHJlYW0gPT09IFwic3RhdHVzXCIpIHtcclxuICAgICAgdGhpcy5zdGF0dXMgPSBtZXNzYWdlLmRhdGE7XHJcbiAgICB9IGVsc2UgaWYgKG91dHB1dFR5cGVzLmluY2x1ZGVzKG1lc3NhZ2Uub3V0cHV0X3R5cGUpKSB7XHJcbiAgICAgIHJlZHVjZU91dHB1dHModGhpcy5vdXRwdXRzLCBtZXNzYWdlKTtcclxuICAgICAgdGhpcy5zZXRJbmRleCh0aGlzLm91dHB1dHMubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAYWN0aW9uXHJcbiAgdXBkYXRlUG9zaXRpb24ocG9zaXRpb246IHtcclxuICAgIGxpbmVIZWlnaHQ/OiBudW1iZXI7XHJcbiAgICBsaW5lTGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgZWRpdG9yV2lkdGg/OiBudW1iZXI7XHJcbiAgfSkge1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnBvc2l0aW9uLCBwb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICBAYWN0aW9uXHJcbiAgc2V0SW5kZXggPSAoaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICB0aGlzLmluZGV4ID0gMDtcclxuICAgIH0gZWxzZSBpZiAoaW5kZXggPCB0aGlzLm91dHB1dHMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaW5kZXggPSBpbmRleDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5kZXggPSB0aGlzLm91dHB1dHMubGVuZ3RoIC0gMTtcclxuICAgIH1cclxuICB9O1xyXG4gIEBhY3Rpb25cclxuICBpbmNyZW1lbnRJbmRleCA9ICgpID0+IHtcclxuICAgIHRoaXMuaW5kZXggPVxyXG4gICAgICB0aGlzLmluZGV4IDwgdGhpcy5vdXRwdXRzLmxlbmd0aCAtIDFcclxuICAgICAgICA/IHRoaXMuaW5kZXggKyAxXHJcbiAgICAgICAgOiB0aGlzLm91dHB1dHMubGVuZ3RoIC0gMTtcclxuICB9O1xyXG4gIEBhY3Rpb25cclxuICBkZWNyZW1lbnRJbmRleCA9ICgpID0+IHtcclxuICAgIHRoaXMuaW5kZXggPSB0aGlzLmluZGV4ID4gMCA/IHRoaXMuaW5kZXggLSAxIDogMDtcclxuICB9O1xyXG4gIEBhY3Rpb25cclxuICBjbGVhciA9ICgpID0+IHtcclxuICAgIHRoaXMub3V0cHV0cyA9IFtdO1xyXG4gICAgdGhpcy5pbmRleCA9IC0xO1xyXG4gIH07XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/store/watch.d.ts b/dist/store/watch.d.ts deleted file mode 100644 index 1901d4f1e..000000000 --- a/dist/store/watch.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { TextEditor, Disposable } from "atom"; -import OutputStore from "./output"; -import type Kernel from "../kernel"; -export default class WatchStore { - kernel: Kernel; - editor: TextEditor; - outputStore: OutputStore; - autocompleteDisposable: Disposable | null | undefined; - constructor(kernel: Kernel); - run: () => void; - setCode: (code: string) => void; - getCode: () => string; - focus: () => void; -} diff --git a/dist/store/watches.d.ts b/dist/store/watches.d.ts deleted file mode 100644 index ae506911f..000000000 --- a/dist/store/watches.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TextEditor, CompositeDisposable } from "atom"; -import WatchStore from "./watch"; -import type Kernel from "../kernel"; -export default class WatchesStore { - kernel: Kernel; - watches: Array; - autocompleteDisposables: CompositeDisposable | null | undefined; - previouslyFocusedElement: HTMLElement | null | undefined; - constructor(kernel: Kernel); - createWatch: () => WatchStore; - addWatch: () => void; - addWatchFromEditor: (editor: TextEditor) => void; - removeWatch: () => void; - run: () => void; - destroy(): void; -} diff --git a/dist/store/watches.js b/dist/store/watches.js index db9aaad21..75ce0e7b3 100644 --- a/dist/store/watches.js +++ b/dist/store/watches.js @@ -138,4 +138,4 @@ __decorate([ __metadata("design:type", Object) ], WatchesStore.prototype, "run", void 0); exports.default = WatchesStore; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zdG9yZS93YXRjaGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQXVEO0FBQ3ZELCtCQUEwQztBQUMxQyx3RUFBOEM7QUFDOUMsb0RBQWlDO0FBQ2pDLHFGQUFxRTtBQUNyRSxvQ0FBdUQ7QUFJdkQsTUFBcUIsWUFBWTtJQU8vQixZQUFZLE1BQWM7UUFKMUIsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFrQmhDLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFeEQsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLGVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixJQUFJLHNCQUFvQixDQUFDLFVBQVUsRUFBRTtvQkFDbkMsc0JBQW9CLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDO1FBRUYsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRix1QkFBa0IsR0FBRyxDQUFDLE1BQWtCLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE9BQU87YUFDUjtZQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUUzQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNkLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3pCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNiO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsZ0JBQVcsR0FBRyxHQUFHLEVBQUU7WUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU87aUJBQ3pCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pCLEtBQUssRUFBRSxDQUFDO2FBQ1QsQ0FBQyxDQUFDO2lCQUNGLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLDBCQUFjLENBQUM7Z0JBQ3ZDLEtBQUssRUFBRSxPQUFPO2dCQUNkLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN4QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM3QyxPQUFPLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDO29CQUM5QyxPQUFPLE9BQU8sQ0FBQztnQkFDakIsQ0FBQztnQkFDRCxtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFaEQsSUFBSSxzQkFBb0IsQ0FBQyxVQUFVLEVBQUU7d0JBQ25DLHNCQUFvQixDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztxQkFDdkU7b0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDcEMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNyQixhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3hCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUM3QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ2pCO3lCQUFNLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFO3dCQUN4QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLENBQUM7cUJBQ3ZDO2dCQUNILENBQUM7Z0JBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUN2QyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7b0JBQ3ZCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7d0JBQ2pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDdkM7b0JBQ0QsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixDQUFDO2dCQUNELFlBQVksRUFBRSxpQ0FBaUM7YUFDaEQsQ0FBQyxDQUFDO1lBQ0gsbUNBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7Z0JBQzlDLElBQUksRUFBRSxhQUFhO2FBQ3BCLENBQUMsQ0FBQztZQUNILGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUM7UUFFRixRQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztRQS9GQSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV2QyxJQUFJLHNCQUFvQixDQUFDLFVBQVUsRUFBRTtZQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLDBCQUFtQixFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFVBQVUsQ0FBQztZQUMxQyxzQkFBb0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0M7UUFFRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQXVGRCxPQUFPO1FBQ0wsSUFBSSxzQkFBb0IsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQ25FLHNCQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7Q0FDRjtBQTNHQztJQURDLGlCQUFVOzhCQUNGLEtBQUs7NkNBQWtCO0FBa0JoQztJQURDLGFBQU07O2lEQWNMO0FBRUY7SUFEQyxhQUFNOzs4Q0FHTDtBQUVGO0lBREMsYUFBTTs7d0RBY0w7QUFFRjtJQURDLGFBQU07O2lEQTZDTDtBQUVGO0lBREMsYUFBTTs7eUNBR0w7QUF2R0osK0JBOEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEVkaXRvciwgQ29tcG9zaXRlRGlzcG9zYWJsZSB9IGZyb20gXCJhdG9tXCI7XG5pbXBvcnQgeyBhY3Rpb24sIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IFNlbGVjdExpc3RWaWV3IGZyb20gXCJhdG9tLXNlbGVjdC1saXN0XCI7XG5pbXBvcnQgV2F0Y2hTdG9yZSBmcm9tIFwiLi93YXRjaFwiO1xuaW1wb3J0IEF1dG9jb21wbGV0ZUNvbnN1bWVyIGZyb20gXCIuLi9zZXJ2aWNlcy9jb25zdW1lZC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IHNldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgS2VybmVsIGZyb20gXCIuLi9rZXJuZWxcIjtcbnR5cGUgc3RvcmUgPSB0eXBlb2YgaW1wb3J0KFwiLi9pbmRleFwiKS5kZWZhdWx0O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXYXRjaGVzU3RvcmUge1xuICBrZXJuZWw6IEtlcm5lbDtcbiAgQG9ic2VydmFibGVcbiAgd2F0Y2hlczogQXJyYXk8V2F0Y2hTdG9yZT4gPSBbXTtcbiAgYXV0b2NvbXBsZXRlRGlzcG9zYWJsZXM6IENvbXBvc2l0ZURpc3Bvc2FibGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihrZXJuZWw6IEtlcm5lbCkge1xuICAgIHRoaXMua2VybmVsID0ga2VybmVsO1xuICAgIHRoaXMua2VybmVsLmFkZFdhdGNoQ2FsbGJhY2sodGhpcy5ydW4pO1xuXG4gICAgaWYgKEF1dG9jb21wbGV0ZUNvbnN1bWVyLmlzRW5hYmVsZWQpIHtcbiAgICAgIGNvbnN0IGRpc3Bvc2FibGUgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVEaXNwb3NhYmxlcyA9IGRpc3Bvc2FibGU7XG4gICAgICBBdXRvY29tcGxldGVDb25zdW1lci5yZWdpc3RlcihkaXNwb3NhYmxlKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZFdhdGNoKCk7XG4gIH1cblxuICBAYWN0aW9uXG4gIGNyZWF0ZVdhdGNoID0gKCkgPT4ge1xuICAgIGNvbnN0IGxhc3RXYXRjaCA9IHRoaXMud2F0Y2hlc1t0aGlzLndhdGNoZXMubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoIWxhc3RXYXRjaCB8fCBsYXN0V2F0Y2guZ2V0Q29kZSgpLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgY29uc3Qgd2F0Y2ggPSBuZXcgV2F0Y2hTdG9yZSh0aGlzLmtlcm5lbCk7XG4gICAgICB0aGlzLndhdGNoZXMucHVzaCh3YXRjaCk7XG4gICAgICBpZiAoQXV0b2NvbXBsZXRlQ29uc3VtZXIuaXNFbmFiZWxlZCkge1xuICAgICAgICBBdXRvY29tcGxldGVDb25zdW1lci5hZGRBdXRvY29tcGxldGVUb1dhdGNoKHRoaXMsIHdhdGNoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3YXRjaDtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdFdhdGNoO1xuICB9O1xuICBAYWN0aW9uXG4gIGFkZFdhdGNoID0gKCkgPT4ge1xuICAgIHRoaXMuY3JlYXRlV2F0Y2goKS5mb2N1cygpO1xuICB9O1xuICBAYWN0aW9uXG4gIGFkZFdhdGNoRnJvbUVkaXRvciA9IChlZGl0b3I6IFRleHRFZGl0b3IpID0+IHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB3YXRjaFRleHQgPSBlZGl0b3IuZ2V0U2VsZWN0ZWRUZXh0KCk7XG5cbiAgICBpZiAoIXdhdGNoVGV4dCkge1xuICAgICAgdGhpcy5hZGRXYXRjaCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB3YXRjaCA9IHRoaXMuY3JlYXRlV2F0Y2goKTtcbiAgICAgIHdhdGNoLnNldENvZGUod2F0Y2hUZXh0KTtcbiAgICAgIHdhdGNoLnJ1bigpO1xuICAgIH1cbiAgfTtcbiAgQGFjdGlvblxuICByZW1vdmVXYXRjaCA9ICgpID0+IHtcbiAgICBjb25zdCB3YXRjaGVzID0gdGhpcy53YXRjaGVzXG4gICAgICAubWFwKCh2LCBrKSA9PiAoe1xuICAgICAgICBuYW1lOiB2LmdldENvZGUoKSxcbiAgICAgICAgdmFsdWU6IGssXG4gICAgICB9KSlcbiAgICAgIC5maWx0ZXIoKG9iaikgPT4gb2JqLnZhbHVlICE9PSAwIHx8IG9iai5uYW1lICE9PSBcIlwiKTtcbiAgICBjb25zdCB3YXRjaGVzUGlja2VyID0gbmV3IFNlbGVjdExpc3RWaWV3KHtcbiAgICAgIGl0ZW1zOiB3YXRjaGVzLFxuICAgICAgZWxlbWVudEZvckl0ZW06ICh3YXRjaCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xuICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gd2F0Y2gubmFtZSB8fCBcIjxlbXB0eT5cIjtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICB9LFxuICAgICAgZGlkQ29uZmlybVNlbGVjdGlvbjogKHdhdGNoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkV2F0Y2ggPSB0aGlzLndhdGNoZXNbd2F0Y2gudmFsdWVdO1xuICAgICAgICAvLyBUaGlzIGlzIGZvciBjbGVhbnVwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcbiAgICAgICAgaWYgKEF1dG9jb21wbGV0ZUNvbnN1bWVyLmlzRW5hYmVsZWQpIHtcbiAgICAgICAgICBBdXRvY29tcGxldGVDb25zdW1lci5yZW1vdmVBdXRvY29tcGxldGVGcm9tV2F0Y2godGhpcywgc2VsZWN0ZWRXYXRjaCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53YXRjaGVzLnNwbGljZSh3YXRjaC52YWx1ZSwgMSk7XG4gICAgICAgIG1vZGFsUGFuZWwuZGVzdHJveSgpO1xuICAgICAgICB3YXRjaGVzUGlja2VyLmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmFkZFdhdGNoKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZmlsdGVyS2V5Rm9ySXRlbTogKHdhdGNoKSA9PiB3YXRjaC5uYW1lLFxuICAgICAgZGlkQ2FuY2VsU2VsZWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIG1vZGFsUGFuZWwuZGVzdHJveSgpO1xuICAgICAgICBpZiAodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHdhdGNoZXNQaWNrZXIuZGVzdHJveSgpO1xuICAgICAgfSxcbiAgICAgIGVtcHR5TWVzc2FnZTogXCJUaGVyZSBhcmUgbm8gd2F0Y2hlcyB0byByZW1vdmUhXCIsXG4gICAgfSk7XG4gICAgc2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KHRoaXMpO1xuICAgIGNvbnN0IG1vZGFsUGFuZWwgPSBhdG9tLndvcmtzcGFjZS5hZGRNb2RhbFBhbmVsKHtcbiAgICAgIGl0ZW06IHdhdGNoZXNQaWNrZXIsXG4gICAgfSk7XG4gICAgd2F0Y2hlc1BpY2tlci5mb2N1cygpO1xuICB9O1xuICBAYWN0aW9uXG4gIHJ1biA9ICgpID0+IHtcbiAgICB0aGlzLndhdGNoZXMuZm9yRWFjaCgod2F0Y2gpID0+IHdhdGNoLnJ1bigpKTtcbiAgfTtcblxuICBkZXN0cm95KCkge1xuICAgIGlmIChBdXRvY29tcGxldGVDb25zdW1lci5pc0VuYWJlbGVkICYmIHRoaXMuYXV0b2NvbXBsZXRlRGlzcG9zYWJsZXMpIHtcbiAgICAgIEF1dG9jb21wbGV0ZUNvbnN1bWVyLmRpc3Bvc2UodGhpcy5hdXRvY29tcGxldGVEaXNwb3NhYmxlcyk7XG4gICAgfVxuICB9XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zdG9yZS93YXRjaGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQXVEO0FBQ3ZELCtCQUEwQztBQUMxQyx3RUFBOEM7QUFDOUMsb0RBQWlDO0FBQ2pDLHFGQUFxRTtBQUNyRSxvQ0FBdUQ7QUFRdkQsTUFBcUIsWUFBWTtJQU8vQixZQUFZLE1BQWM7UUFKMUIsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFrQmhDLGdCQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFeEQsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLGVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixJQUFJLHNCQUFvQixDQUFDLFVBQVUsRUFBRTtvQkFDbkMsc0JBQW9CLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDO1FBRUYsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRix1QkFBa0IsR0FBRyxDQUFDLE1BQWtCLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLE9BQU87YUFDUjtZQUNELE1B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QUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO1FBL0ZBLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXZDLElBQUksc0JBQW9CLENBQUMsVUFBVSxFQUFFO1lBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksMEJBQW1CLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxDQUFDO1lBQzFDLHNCQUFvQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBdUZELE9BQU87UUFDTCxJQUFJLHNCQUFvQixDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDbkUsc0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztDQUNGO0FBM0dDO0lBREMsaUJBQVU7OEJBQ0YsS0FBSzs2Q0FBa0I7QUFrQmhDO0lBREMsYUFBTTs7aURBY0w7QUFFRjtJQURDLGFBQU07OzhDQUdMO0FBRUY7SUFEQyxhQUFNOzt3REFjTDtBQUVGO0lBREMsYUFBTTs7aURBNkNMO0FBRUY7SUFEQyxhQUFNOzt5Q0FHTDtBQXZHSiwrQkE4R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RWRpdG9yLCBDb21wb3NpdGVEaXNwb3NhYmxlIH0gZnJvbSBcImF0b21cIjtcclxuaW1wb3J0IHsgYWN0aW9uLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcclxuaW1wb3J0IFNlbGVjdExpc3RWaWV3IGZyb20gXCJhdG9tLXNlbGVjdC1saXN0XCI7XHJcbmltcG9ydCBXYXRjaFN0b3JlIGZyb20gXCIuL3dhdGNoXCI7XHJcbmltcG9ydCBBdXRvY29tcGxldGVDb25zdW1lciBmcm9tIFwiLi4vc2VydmljZXMvY29uc3VtZWQvYXV0b2NvbXBsZXRlXCI7XHJcbmltcG9ydCB7IHNldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCB9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQgdHlwZSBLZXJuZWwgZnJvbSBcIi4uL2tlcm5lbFwiO1xyXG5cclxuaW50ZXJmYWNlIFNlbGVjdExpc3RJdGVtIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2F0Y2hlc1N0b3JlIHtcclxuICBrZXJuZWw6IEtlcm5lbDtcclxuICBAb2JzZXJ2YWJsZVxyXG4gIHdhdGNoZXM6IEFycmF5PFdhdGNoU3RvcmU+ID0gW107XHJcbiAgYXV0b2NvbXBsZXRlRGlzcG9zYWJsZXM6IENvbXBvc2l0ZURpc3Bvc2FibGUgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihrZXJuZWw6IEtlcm5lbCkge1xyXG4gICAgdGhpcy5rZXJuZWwgPSBrZXJuZWw7XHJcbiAgICB0aGlzLmtlcm5lbC5hZGRXYXRjaENhbGxiYWNrKHRoaXMucnVuKTtcclxuXHJcbiAgICBpZiAoQXV0b2NvbXBsZXRlQ29uc3VtZXIuaXNFbmFiZWxlZCkge1xyXG4gICAgICBjb25zdCBkaXNwb3NhYmxlID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKTtcclxuICAgICAgdGhpcy5hdXRvY29tcGxldGVEaXNwb3NhYmxlcyA9IGRpc3Bvc2FibGU7XHJcbiAgICAgIEF1dG9jb21wbGV0ZUNvbnN1bWVyLnJlZ2lzdGVyKGRpc3Bvc2FibGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWRkV2F0Y2goKTtcclxuICB9XHJcblxyXG4gIEBhY3Rpb25cclxuICBjcmVhdGVXYXRjaCA9ICgpID0+IHtcclxuICAgIGNvbnN0IGxhc3RXYXRjaCA9IHRoaXMud2F0Y2hlc1t0aGlzLndhdGNoZXMubGVuZ3RoIC0gMV07XHJcblxyXG4gICAgaWYgKCFsYXN0V2F0Y2ggfHwgbGFzdFdhdGNoLmdldENvZGUoKS50cmltKCkgIT09IFwiXCIpIHtcclxuICAgICAgY29uc3Qgd2F0Y2ggPSBuZXcgV2F0Y2hTdG9yZSh0aGlzLmtlcm5lbCk7XHJcbiAgICAgIHRoaXMud2F0Y2hlcy5wdXNoKHdhdGNoKTtcclxuICAgICAgaWYgKEF1dG9jb21wbGV0ZUNvbnN1bWVyLmlzRW5hYmVsZWQpIHtcclxuICAgICAgICBBdXRvY29tcGxldGVDb25zdW1lci5hZGRBdXRvY29tcGxldGVUb1dhdGNoKHRoaXMsIHdhdGNoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gd2F0Y2g7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxhc3RXYXRjaDtcclxuICB9O1xyXG4gIEBhY3Rpb25cclxuICBhZGRXYXRjaCA9ICgpID0+IHtcclxuICAgIHRoaXMuY3JlYXRlV2F0Y2goKS5mb2N1cygpO1xyXG4gIH07XHJcbiAgQGFjdGlvblxyXG4gIGFkZFdhdGNoRnJvbUVkaXRvciA9IChlZGl0b3I6IFRleHRFZGl0b3IpID0+IHtcclxuICAgIGlmICghZWRpdG9yKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHdhdGNoVGV4dCA9IGVkaXRvci5nZXRTZWxlY3RlZFRleHQoKTtcclxuXHJcbiAgICBpZiAoIXdhdGNoVGV4dCkge1xyXG4gICAgICB0aGlzLmFkZFdhdGNoKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB3YXRjaCA9IHRoaXMuY3JlYXRlV2F0Y2goKTtcclxuICAgICAgd2F0Y2guc2V0Q29kZSh3YXRjaFRleHQpO1xyXG4gICAgICB3YXRjaC5ydW4oKTtcclxuICAgIH1cclxuICB9O1xyXG4gIEBhY3Rpb25cclxuICByZW1vdmVXYXRjaCA9ICgpID0+IHtcclxuICAgIGNvbnN0IHdhdGNoZXMgPSB0aGlzLndhdGNoZXNcclxuICAgICAgLm1hcCgodiwgaykgPT4gKHtcclxuICAgICAgICBuYW1lOiB2LmdldENvZGUoKSxcclxuICAgICAgICB2YWx1ZTogayxcclxuICAgICAgfSkpXHJcbiAgICAgIC5maWx0ZXIoKG9iaikgPT4gb2JqLnZhbHVlICE9PSAwIHx8IG9iai5uYW1lICE9PSBcIlwiKTtcclxuICAgIGNvbnN0IHdhdGNoZXNQaWNrZXIgPSBuZXcgU2VsZWN0TGlzdFZpZXcoe1xyXG4gICAgICBpdGVtczogd2F0Y2hlcyBhcyBTZWxlY3RMaXN0SXRlbVtdLFxyXG4gICAgICBlbGVtZW50Rm9ySXRlbTogKHdhdGNoOiBTZWxlY3RMaXN0SXRlbSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlcIik7XHJcbiAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IHdhdGNoLm5hbWUgfHwgXCI8ZW1wdHk+XCI7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICAgIH0sXHJcbiAgICAgIGRpZENvbmZpcm1TZWxlY3Rpb246ICh3YXRjaDogU2VsZWN0TGlzdEl0ZW0pID0+IHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZFdhdGNoID0gdGhpcy53YXRjaGVzW3dhdGNoLnZhbHVlXTtcclxuICAgICAgICAvLyBUaGlzIGlzIGZvciBjbGVhbnVwIHRvIGltcHJvdmUgcGVyZm9ybWFuY2VcclxuICAgICAgICBpZiAoQXV0b2NvbXBsZXRlQ29uc3VtZXIuaXNFbmFiZWxlZCkge1xyXG4gICAgICAgICAgQXV0b2NvbXBsZXRlQ29uc3VtZXIucmVtb3ZlQXV0b2NvbXBsZXRlRnJvbVdhdGNoKHRoaXMsIHNlbGVjdGVkV2F0Y2gpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLndhdGNoZXMuc3BsaWNlKHdhdGNoLnZhbHVlLCAxKTtcclxuICAgICAgICBtb2RhbFBhbmVsLmRlc3Ryb3koKTtcclxuICAgICAgICB3YXRjaGVzUGlja2VyLmRlc3Ryb3koKTtcclxuICAgICAgICBpZiAodGhpcy53YXRjaGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5hZGRXYXRjaCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBmaWx0ZXJLZXlGb3JJdGVtOiAod2F0Y2g6IFNlbGVjdExpc3RJdGVtKSA9PiB3YXRjaC5uYW1lLFxyXG4gICAgICBkaWRDYW5jZWxTZWxlY3Rpb246ICgpID0+IHtcclxuICAgICAgICBtb2RhbFBhbmVsLmRlc3Ryb3koKTtcclxuICAgICAgICBpZiAodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdhdGNoZXNQaWNrZXIuZGVzdHJveSgpO1xyXG4gICAgICB9LFxyXG4gICAgICBlbXB0eU1lc3NhZ2U6IFwiVGhlcmUgYXJlIG5vIHdhdGNoZXMgdG8gcmVtb3ZlIVwiLFxyXG4gICAgfSk7XHJcbiAgICBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQodGhpcyk7XHJcbiAgICBjb25zdCBtb2RhbFBhbmVsID0gYXRvbS53b3Jrc3BhY2UuYWRkTW9kYWxQYW5lbCh7XHJcbiAgICAgIGl0ZW06IHdhdGNoZXNQaWNrZXIsXHJcbiAgICB9KTtcclxuICAgIHdhdGNoZXNQaWNrZXIuZm9jdXMoKTtcclxuICB9O1xyXG4gIEBhY3Rpb25cclxuICBydW4gPSAoKSA9PiB7XHJcbiAgICB0aGlzLndhdGNoZXMuZm9yRWFjaCgod2F0Y2gpID0+IHdhdGNoLnJ1bigpKTtcclxuICB9O1xyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgaWYgKEF1dG9jb21wbGV0ZUNvbnN1bWVyLmlzRW5hYmVsZWQgJiYgdGhpcy5hdXRvY29tcGxldGVEaXNwb3NhYmxlcykge1xyXG4gICAgICBBdXRvY29tcGxldGVDb25zdW1lci5kaXNwb3NlKHRoaXMuYXV0b2NvbXBsZXRlRGlzcG9zYWJsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/dist/tsconfig.tsbuildinfo b/dist/tsconfig.tsbuildinfo deleted file mode 100644 index cfbd0774c..000000000 --- a/dist/tsconfig.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/ts3.6/base.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/base.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/atom/src/atom-environment.d.ts","../node_modules/@types/atom/src/text-editor-element.d.ts","../node_modules/@types/atom/dependencies/event-kit/index.d.ts","../node_modules/@types/atom/dependencies/first-mate/src/grammar.d.ts","../node_modules/@types/atom/dependencies/first-mate/src/first-mate.d.ts","../node_modules/@types/atom/dependencies/first-mate/index.d.ts","../node_modules/@types/atom/dependencies/pathwatcher/src/file.d.ts","../node_modules/@types/atom/dependencies/pathwatcher/src/directory.d.ts","../node_modules/@types/atom/dependencies/pathwatcher/src/main.d.ts","../node_modules/@types/atom/dependencies/pathwatcher/index.d.ts","../node_modules/@types/atom/dependencies/text-buffer/src/display-marker.d.ts","../node_modules/@types/atom/dependencies/text-buffer/src/display-marker-layer.d.ts","../node_modules/@types/atom/dependencies/text-buffer/src/helpers.d.ts","../node_modules/@types/atom/dependencies/text-buffer/src/marker.d.ts","../node_modules/@types/atom/dependencies/text-buffer/src/marker-layer.d.ts","../node_modules/@types/atom/dependencies/text-buffer/src/point.d.ts","../node_modules/@types/atom/dependencies/text-buffer/src/range.d.ts","../node_modules/@types/atom/dependencies/text-buffer/src/text-buffer.d.ts","../node_modules/@types/atom/dependencies/text-buffer/index.d.ts","../node_modules/@types/atom/src/buffered-node-process.d.ts","../node_modules/@types/atom/src/buffered-process.d.ts","../node_modules/@types/atom/src/clipboard.d.ts","../node_modules/@types/atom/src/color.d.ts","../node_modules/@types/atom/src/command-registry.d.ts","../node_modules/@types/atom/src/config.d.ts","../node_modules/@types/atom/src/config-schema.d.ts","../node_modules/@types/atom/src/context-menu-manager.d.ts","../node_modules/@types/atom/src/cursor.d.ts","../node_modules/@types/atom/src/decoration.d.ts","../node_modules/@types/atom/src/deserializer-manager.d.ts","../node_modules/@types/atom/src/dock.d.ts","../node_modules/@types/atom/src/get-window-load-settings.d.ts","../node_modules/@types/atom/src/git-repository.d.ts","../node_modules/@types/atom/src/grammar-registry.d.ts","../node_modules/@types/atom/src/gutter.d.ts","../node_modules/@types/atom/src/history-manager.d.ts","../node_modules/@types/atom/src/keymap-extensions.d.ts","../node_modules/@types/atom/src/layer-decoration.d.ts","../node_modules/@types/atom/src/menu-manager.d.ts","../node_modules/@types/atom/src/notification.d.ts","../node_modules/@types/atom/src/notification-manager.d.ts","../node_modules/@types/atom/src/other-types.d.ts","../node_modules/@types/atom/src/package.d.ts","../node_modules/@types/atom/src/package-manager.d.ts","../node_modules/@types/atom/src/pane.d.ts","../node_modules/@types/atom/src/panel.d.ts","../node_modules/@types/atom/src/path-watcher.d.ts","../node_modules/@types/atom/src/project.d.ts","../node_modules/@types/atom/src/scope-descriptor.d.ts","../node_modules/@types/atom/src/selection.d.ts","../node_modules/@types/atom/src/style-manager.d.ts","../node_modules/@types/atom/src/task.d.ts","../node_modules/@types/atom/src/text-editor.d.ts","../node_modules/@types/atom/src/text-editor-component.d.ts","../node_modules/@types/atom/src/text-editor-registry.d.ts","../node_modules/@types/atom/src/theme-manager.d.ts","../node_modules/@types/atom/src/tooltip.d.ts","../node_modules/@types/atom/src/tooltip-manager.d.ts","../node_modules/@types/atom/src/view-registry.d.ts","../node_modules/@types/atom/src/workspace.d.ts","../node_modules/@types/atom/src/workspace-center.d.ts","../node_modules/@types/atom/index.d.ts","../node_modules/escape-string-regexp/index.d.ts","../node_modules/strip-indent/index.d.ts","../node_modules/@types/lodash/common/common.d.ts","../node_modules/@types/lodash/common/array.d.ts","../node_modules/@types/lodash/common/collection.d.ts","../node_modules/@types/lodash/common/date.d.ts","../node_modules/@types/lodash/common/function.d.ts","../node_modules/@types/lodash/common/lang.d.ts","../node_modules/@types/lodash/common/math.d.ts","../node_modules/@types/lodash/common/number.d.ts","../node_modules/@types/lodash/common/object.d.ts","../node_modules/@types/lodash/common/seq.d.ts","../node_modules/@types/lodash/common/string.d.ts","../node_modules/@types/lodash/common/util.d.ts","../node_modules/@types/lodash/index.d.ts","../node_modules/@types/react/global.d.ts","../node_modules/csstype/index.d.ts","../node_modules/@types/prop-types/index.d.ts","../node_modules/@types/scheduler/tracing.d.ts","../node_modules/@types/react/index.d.ts","../node_modules/@types/react-dom/index.d.ts","../lib/config.ts","../node_modules/mobx/lib/utils/utils.d.ts","../node_modules/mobx/lib/core/atom.d.ts","../node_modules/mobx/lib/utils/comparer.d.ts","../node_modules/mobx/lib/utils/decorators.d.ts","../node_modules/mobx/lib/types/modifiers.d.ts","../node_modules/mobx/lib/api/observabledecorator.d.ts","../node_modules/mobx/lib/api/observable.d.ts","../node_modules/mobx/lib/api/computed.d.ts","../node_modules/mobx/lib/core/action.d.ts","../node_modules/mobx/lib/types/observablevalue.d.ts","../node_modules/mobx/lib/core/computedvalue.d.ts","../node_modules/mobx/lib/core/derivation.d.ts","../node_modules/mobx/lib/core/globalstate.d.ts","../node_modules/mobx/lib/core/observable.d.ts","../node_modules/mobx/lib/core/reaction.d.ts","../node_modules/mobx/lib/core/spy.d.ts","../node_modules/mobx/lib/api/actiondecorator.d.ts","../node_modules/mobx/lib/api/action.d.ts","../node_modules/mobx/lib/api/autorun.d.ts","../node_modules/mobx/lib/api/become-observed.d.ts","../node_modules/mobx/lib/api/configure.d.ts","../node_modules/mobx/lib/api/decorate.d.ts","../node_modules/mobx/lib/api/extendobservable.d.ts","../node_modules/mobx/lib/api/extras.d.ts","../node_modules/mobx/lib/api/flow.d.ts","../node_modules/mobx/lib/api/intercept-read.d.ts","../node_modules/mobx/lib/api/intercept.d.ts","../node_modules/mobx/lib/api/iscomputed.d.ts","../node_modules/mobx/lib/api/isobservable.d.ts","../node_modules/mobx/lib/api/object-api.d.ts","../node_modules/mobx/lib/api/observe.d.ts","../node_modules/mobx/lib/api/tojs.d.ts","../node_modules/mobx/lib/api/trace.d.ts","../node_modules/mobx/lib/api/transaction.d.ts","../node_modules/mobx/lib/api/when.d.ts","../node_modules/mobx/lib/types/dynamicobject.d.ts","../node_modules/mobx/lib/types/intercept-utils.d.ts","../node_modules/mobx/lib/types/listen-utils.d.ts","../node_modules/mobx/lib/types/observablearray.d.ts","../node_modules/mobx/lib/types/observablemap.d.ts","../node_modules/mobx/lib/types/observableset.d.ts","../node_modules/mobx/lib/types/observableobject.d.ts","../node_modules/mobx/lib/types/type-utils.d.ts","../node_modules/mobx/lib/utils/eq.d.ts","../node_modules/mobx/lib/utils/iterable.d.ts","../node_modules/mobx/lib/internal.d.ts","../node_modules/mobx/lib/mobx.d.ts","../node_modules/@nteract/mathjax/lib/context.d.ts","../node_modules/@nteract/mathjax/lib/node.d.ts","../node_modules/@nteract/mathjax/lib/text.d.ts","../node_modules/@nteract/mathjax/lib/provider.d.ts","../node_modules/@nteract/mathjax/lib/index.d.ts","../node_modules/escape-carriage/index.d.ts","../node_modules/mobx-react-lite/dist/assertenvironment.d.ts","../node_modules/mobx-react-lite/dist/staticrendering.d.ts","../node_modules/mobx-react-lite/dist/observer.d.ts","../node_modules/mobx-react-lite/dist/useobserver.d.ts","../node_modules/mobx-react-lite/dist/observercomponent.d.ts","../node_modules/mobx-react-lite/dist/utils.d.ts","../node_modules/mobx-react-lite/dist/useasobservablesource.d.ts","../node_modules/mobx-react-lite/dist/uselocalstore.d.ts","../node_modules/mobx-react-lite/dist/usequeuedforceupdate.d.ts","../node_modules/mobx-react-lite/dist/observerbatching.d.ts","../node_modules/mobx-react-lite/dist/index.d.ts","../node_modules/mobx-react/dist/types/ireactcomponent.d.ts","../node_modules/mobx-react/dist/observer.d.ts","../node_modules/mobx-react/dist/types/ivaluemap.d.ts","../node_modules/mobx-react/dist/provider.d.ts","../node_modules/mobx-react/dist/types/iwrappedcomponent.d.ts","../node_modules/mobx-react/dist/types/istorestoprops.d.ts","../node_modules/mobx-react/dist/inject.d.ts","../node_modules/mobx-react/dist/disposeonunmount.d.ts","../node_modules/mobx-react/dist/proptypes.d.ts","../node_modules/mobx-react/dist/index.d.ts","../node_modules/immutable/dist/immutable-nonambient.d.ts","../node_modules/@nteract/commutable/lib/primitives.d.ts","../node_modules/@nteract/commutable/lib/outputs.d.ts","../node_modules/@nteract/commutable/lib/cells.d.ts","../node_modules/@nteract/commutable/lib/structures.d.ts","../node_modules/@nteract/commutable/lib/v4.d.ts","../node_modules/@nteract/commutable/lib/v3.d.ts","../node_modules/@nteract/commutable/lib/notebook.d.ts","../node_modules/@nteract/commutable/lib/index.d.ts","../node_modules/@nteract/outputs/lib/components/rich-media.d.ts","../node_modules/@nteract/outputs/lib/components/output.d.ts","../node_modules/@types/hoist-non-react-statics/index.d.ts","../node_modules/@types/styled-components/index.d.ts","../node_modules/@nteract/outputs/lib/components/kernel-output-error.d.ts","../node_modules/@nteract/outputs/lib/components/display-data.d.ts","../node_modules/@nteract/outputs/lib/components/execute-result.d.ts","../node_modules/@nteract/outputs/lib/components/stream-text.d.ts","../node_modules/@nteract/outputs/lib/components/prompt.d.ts","../node_modules/@nteract/outputs/lib/components/media/html.d.ts","../node_modules/@nteract/outputs/lib/components/media/json.d.ts","../node_modules/@nteract/outputs/lib/components/media/svg.d.ts","../node_modules/@nteract/outputs/lib/components/media/plain.d.ts","../node_modules/@nteract/outputs/lib/components/media/markdown.d.ts","../node_modules/@nteract/outputs/lib/components/media/latex.d.ts","../node_modules/@nteract/outputs/lib/components/media/image.d.ts","../node_modules/@nteract/outputs/lib/components/media/javascript.d.ts","../node_modules/@nteract/outputs/lib/components/media/index.d.ts","../node_modules/@nteract/outputs/lib/index.d.ts","../node_modules/electron/electron.d.ts","../lib/components/result-view/plotly.tsx","../node_modules/@nteract/transform-vega/lib/mime.d.ts","../node_modules/@nteract/transform-vega/lib/external.d.ts","../node_modules/@nteract/transform-vega/lib/index.d.ts","../node_modules/react-markdown/index.d.ts","../node_modules/@nteract/markdown/lib/attachment/attachment-transformer.d.ts","../node_modules/@nteract/markdown/lib/markdown-render.d.ts","../node_modules/@nteract/markdown/lib/markdown-previewer.d.ts","../node_modules/@nteract/markdown/lib/index.d.ts","../lib/components/result-view/markdown.tsx","../lib/components/result-view/display.tsx","../lib/store/output.ts","../lib/components/result-view/status.tsx","../lib/store/watch.ts","../node_modules/@types/atom/autocomplete-plus/config.d.ts","../node_modules/@types/atom/autocomplete-plus/index.d.ts","../lib/services/consumed/autocomplete.ts","../lib/store/watches.ts","../lib/plugin-api/hydrogen-types.ts","../lib/plugin-api/hydrogen-kernel.ts","../lib/input-view.ts","../node_modules/@nteract/types/lib/refs.d.ts","../node_modules/@nteract/types/lib/entities/contents/directory.d.ts","../node_modules/@nteract/types/lib/entities/contents/dummy.d.ts","../node_modules/@nteract/types/lib/entities/contents/file.d.ts","../node_modules/@nteract/types/lib/entities/contents/notebook.d.ts","../node_modules/@nteract/types/lib/entities/contents/index.d.ts","../node_modules/@nteract/types/lib/ids.d.ts","../node_modules/rxjs/internal/subscription.d.ts","../node_modules/rxjs/internal/types.d.ts","../node_modules/rxjs/internal/subscriber.d.ts","../node_modules/rxjs/internal/operator.d.ts","../node_modules/rxjs/internal/observable/iif.d.ts","../node_modules/rxjs/internal/observable/throwerror.d.ts","../node_modules/rxjs/internal/observable.d.ts","../node_modules/rxjs/internal/subject.d.ts","../node_modules/rxjs/internal/observable/connectableobservable.d.ts","../node_modules/rxjs/internal/operators/groupby.d.ts","../node_modules/rxjs/internal/symbol/observable.d.ts","../node_modules/rxjs/internal/behaviorsubject.d.ts","../node_modules/rxjs/internal/replaysubject.d.ts","../node_modules/rxjs/internal/asyncsubject.d.ts","../node_modules/rxjs/internal/scheduler.d.ts","../node_modules/rxjs/internal/scheduler/action.d.ts","../node_modules/rxjs/internal/scheduler/asyncscheduler.d.ts","../node_modules/rxjs/internal/scheduler/asyncaction.d.ts","../node_modules/rxjs/internal/scheduler/asapscheduler.d.ts","../node_modules/rxjs/internal/scheduler/asap.d.ts","../node_modules/rxjs/internal/scheduler/async.d.ts","../node_modules/rxjs/internal/scheduler/queuescheduler.d.ts","../node_modules/rxjs/internal/scheduler/queue.d.ts","../node_modules/rxjs/internal/scheduler/animationframescheduler.d.ts","../node_modules/rxjs/internal/scheduler/animationframe.d.ts","../node_modules/rxjs/internal/scheduler/virtualtimescheduler.d.ts","../node_modules/rxjs/internal/notification.d.ts","../node_modules/rxjs/internal/util/pipe.d.ts","../node_modules/rxjs/internal/util/noop.d.ts","../node_modules/rxjs/internal/util/identity.d.ts","../node_modules/rxjs/internal/util/isobservable.d.ts","../node_modules/rxjs/internal/util/argumentoutofrangeerror.d.ts","../node_modules/rxjs/internal/util/emptyerror.d.ts","../node_modules/rxjs/internal/util/objectunsubscribederror.d.ts","../node_modules/rxjs/internal/util/unsubscriptionerror.d.ts","../node_modules/rxjs/internal/util/timeouterror.d.ts","../node_modules/rxjs/internal/observable/bindcallback.d.ts","../node_modules/rxjs/internal/observable/bindnodecallback.d.ts","../node_modules/rxjs/internal/innersubscriber.d.ts","../node_modules/rxjs/internal/outersubscriber.d.ts","../node_modules/rxjs/internal/observable/combinelatest.d.ts","../node_modules/rxjs/internal/observable/concat.d.ts","../node_modules/rxjs/internal/observable/defer.d.ts","../node_modules/rxjs/internal/observable/empty.d.ts","../node_modules/rxjs/internal/observable/forkjoin.d.ts","../node_modules/rxjs/internal/observable/from.d.ts","../node_modules/rxjs/internal/observable/fromevent.d.ts","../node_modules/rxjs/internal/observable/fromeventpattern.d.ts","../node_modules/rxjs/internal/observable/generate.d.ts","../node_modules/rxjs/internal/observable/interval.d.ts","../node_modules/rxjs/internal/observable/merge.d.ts","../node_modules/rxjs/internal/observable/never.d.ts","../node_modules/rxjs/internal/observable/of.d.ts","../node_modules/rxjs/internal/observable/onerrorresumenext.d.ts","../node_modules/rxjs/internal/observable/pairs.d.ts","../node_modules/rxjs/internal/observable/partition.d.ts","../node_modules/rxjs/internal/observable/race.d.ts","../node_modules/rxjs/internal/observable/range.d.ts","../node_modules/rxjs/internal/observable/timer.d.ts","../node_modules/rxjs/internal/observable/using.d.ts","../node_modules/rxjs/internal/observable/zip.d.ts","../node_modules/rxjs/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/internal/config.d.ts","../node_modules/rxjs/index.d.ts","../node_modules/@nteract/types/lib/entities/hosts/base.d.ts","../node_modules/@nteract/types/lib/entities/hosts/local-jupyter.d.ts","../node_modules/rxjs/internal/observable/dom/ajaxobservable.d.ts","../node_modules/rxjs/internal/observable/dom/ajax.d.ts","../node_modules/rxjs/ajax/index.d.ts","../node_modules/@nteract/types/lib/entities/hosts/remote-jupyter.d.ts","../node_modules/@nteract/types/lib/entities/hosts/empty.d.ts","../node_modules/@nteract/types/lib/entities/hosts/index.d.ts","../node_modules/@nteract/types/lib/entities/kernel-info.d.ts","../node_modules/@nteract/types/lib/entities/kernels.d.ts","../node_modules/@nteract/types/lib/entities/kernelspecs.d.ts","../node_modules/@nteract/types/lib/entities/messages.d.ts","../node_modules/@nteract/types/lib/entities/modals.d.ts","../node_modules/@nteract/types/lib/entities/sidebar.d.ts","../node_modules/@nteract/types/lib/entities/transforms.d.ts","../node_modules/@nteract/types/lib/entities/comms.d.ts","../node_modules/@nteract/types/lib/entities/editors.d.ts","../node_modules/@nteract/types/lib/entities/index.d.ts","../node_modules/@nteract/types/lib/content-provider.d.ts","../node_modules/@nteract/types/lib/errors/execute.d.ts","../node_modules/@nteract/types/lib/errors/launch.d.ts","../node_modules/@nteract/types/lib/errors/index.d.ts","../node_modules/@nteract/types/lib/index.d.ts","../node_modules/@phosphor/coreutils/lib/json.d.ts","../node_modules/@phosphor/coreutils/lib/mime.d.ts","../node_modules/@phosphor/coreutils/lib/promise.d.ts","../node_modules/@phosphor/coreutils/lib/random.d.ts","../node_modules/@phosphor/coreutils/lib/token.d.ts","../node_modules/@phosphor/coreutils/lib/uuid.d.ts","../node_modules/@phosphor/coreutils/lib/index.d.ts","../node_modules/@jupyterlab/services/lib/config/index.d.ts","../node_modules/@phosphor/algorithm/lib/array.d.ts","../node_modules/@phosphor/algorithm/lib/iter.d.ts","../node_modules/@phosphor/algorithm/lib/chain.d.ts","../node_modules/@phosphor/algorithm/lib/empty.d.ts","../node_modules/@phosphor/algorithm/lib/enumerate.d.ts","../node_modules/@phosphor/algorithm/lib/filter.d.ts","../node_modules/@phosphor/algorithm/lib/find.d.ts","../node_modules/@phosphor/algorithm/lib/map.d.ts","../node_modules/@phosphor/algorithm/lib/range.d.ts","../node_modules/@phosphor/algorithm/lib/reduce.d.ts","../node_modules/@phosphor/algorithm/lib/repeat.d.ts","../node_modules/@phosphor/algorithm/lib/retro.d.ts","../node_modules/@phosphor/algorithm/lib/sort.d.ts","../node_modules/@phosphor/algorithm/lib/stride.d.ts","../node_modules/@phosphor/algorithm/lib/string.d.ts","../node_modules/@phosphor/algorithm/lib/take.d.ts","../node_modules/@phosphor/algorithm/lib/zip.d.ts","../node_modules/@phosphor/algorithm/lib/index.d.ts","../node_modules/@phosphor/signaling/lib/index.d.ts","../node_modules/@phosphor/disposable/lib/index.d.ts","../node_modules/@phosphor/messaging/lib/index.d.ts","../node_modules/@jupyterlab/observables/lib/observablemap.d.ts","../node_modules/@jupyterlab/observables/lib/observablejson.d.ts","../node_modules/@jupyterlab/observables/lib/observablestring.d.ts","../node_modules/@jupyterlab/observables/lib/observablelist.d.ts","../node_modules/@jupyterlab/observables/lib/undoablelist.d.ts","../node_modules/@jupyterlab/observables/lib/modeldb.d.ts","../node_modules/@jupyterlab/observables/lib/index.d.ts","../node_modules/@jupyterlab/services/lib/contents/index.d.ts","../node_modules/@jupyterlab/coreutils/lib/activitymonitor.d.ts","../node_modules/@jupyterlab/coreutils/lib/interfaces.d.ts","../node_modules/@jupyterlab/coreutils/lib/dataconnector.d.ts","../node_modules/@jupyterlab/coreutils/lib/markdowncodeblocks.d.ts","../node_modules/@jupyterlab/coreutils/lib/nbformat.d.ts","../node_modules/@jupyterlab/coreutils/lib/pageconfig.d.ts","../node_modules/@jupyterlab/coreutils/lib/path.d.ts","../node_modules/@jupyterlab/coreutils/lib/settingregistry.d.ts","../node_modules/@jupyterlab/coreutils/lib/statedb.d.ts","../node_modules/@jupyterlab/coreutils/lib/text.d.ts","../node_modules/@jupyterlab/coreutils/lib/time.d.ts","../node_modules/@jupyterlab/coreutils/lib/url.d.ts","../node_modules/@jupyterlab/coreutils/lib/uuid.d.ts","../node_modules/@jupyterlab/coreutils/lib/index.d.ts","../node_modules/@jupyterlab/services/lib/kernel/messages.d.ts","../node_modules/@jupyterlab/services/lib/kernel/kernel.d.ts","../node_modules/@jupyterlab/services/lib/kernel/manager.d.ts","../node_modules/@jupyterlab/services/lib/kernel/index.d.ts","../node_modules/@jupyterlab/services/lib/serverconnection.d.ts","../node_modules/@jupyterlab/services/lib/builder/index.d.ts","../node_modules/@jupyterlab/services/lib/session/session.d.ts","../node_modules/@jupyterlab/services/lib/session/manager.d.ts","../node_modules/@jupyterlab/services/lib/session/index.d.ts","../node_modules/@jupyterlab/services/lib/setting/index.d.ts","../node_modules/@jupyterlab/services/lib/terminal/terminal.d.ts","../node_modules/@jupyterlab/services/lib/terminal/manager.d.ts","../node_modules/@jupyterlab/services/lib/terminal/index.d.ts","../node_modules/@jupyterlab/services/lib/manager.d.ts","../node_modules/@jupyterlab/services/lib/index.d.ts","../lib/kernel-transport.ts","../lib/hydrogen.ts","../lib/kernel.ts","../lib/components/result-view/result-view.tsx","../lib/components/result-view/index.tsx","../lib/store/markers.ts","../node_modules/kernelspecs/index.d.ts","../node_modules/@types/uuid/index.d.ts","../lib/zmq-kernel.ts","../lib/kernel-picker.ts","../lib/kernel-manager.ts","../lib/store/index.ts","../lib/utils.tsx","../lib/code-manager.ts","../node_modules/anser/lib/index.d.ts","../lib/components/result-view/history.tsx","../lib/components/result-view/list.tsx","../lib/components/output-area.tsx","../lib/panes/output-area.tsx","../lib/commands.ts","../node_modules/tildify/index.d.ts","../lib/existing-kernel-picker.ts","../lib/export-notebook.ts","../lib/components/watch-sidebar/watch.tsx","../lib/components/watch-sidebar/index.tsx","../lib/panes/watches.tsx","../lib/result.ts","../lib/import-notebook.ts","../node_modules/@types/atom/status-bar/config.d.ts","../node_modules/@types/atom/status-bar/index.d.ts","../lib/components/inspector.tsx","../lib/panes/inspector.tsx","../node_modules/@types/react-table/node_modules/@types/react/global.d.ts","../node_modules/@types/react-table/node_modules/@types/react/index.d.ts","../node_modules/@types/react-table/index.d.ts","../lib/components/kernel-monitor.tsx","../lib/panes/kernel-monitor.tsx","../lib/ws-kernel.ts","../node_modules/@types/ws/index.d.ts","../lib/ws-kernel-picker.ts","../lib/plugin-api/hydrogen-provider.ts","../lib/services/consumed/status-bar/status-bar-component.tsx","../lib/services/consumed/status-bar/signal-list-view.ts","../lib/services/consumed/status-bar/status-bar.tsx","../lib/services/consumed/status-bar/index.ts","../lib/services/consumed/index.ts","../lib/services/provided/autocomplete.ts","../lib/services/provided/index.ts","../lib/services/index.ts","../lib/main.ts","../lib/module_types/atom/index.d.ts","../lib/module_types/atom/autocomplete-plus/index.d.ts","../lib/module_types/jupyter-paths/index.d.ts","../lib/module_types/kernelspecs/index.d.ts","../node_modules/@types/cheerio/index.d.ts","../node_modules/@types/dom4/index.d.ts","../node_modules/@types/enzyme/index.d.ts","../node_modules/@types/enzyme-adapter-react-16/index.d.ts","../node_modules/@types/unist/index.d.ts","../node_modules/@types/hast/index.d.ts","../node_modules/@types/jasmine/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/mdast/index.d.ts","../node_modules/@types/react-test-renderer/index.d.ts","../node_modules/@types/scheduler/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d","affectsGlobalScope":true},"e23424b97418eca3226fd24de079f1203eb70360622e4e093af2aff14d4be6ec","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","a668dfae917097b30fc29bbebeeb869cee22529f2aa9976cea03c7e834a1b841","04eaa93bd75f937f9184dcb95a7983800c5770cf8ddd8ac0f3734dc02f5b20ef",{"version":"c8155caf28fc7b0a564156a5df28ad8a844a3bd32d331d148d8f3ce88025c870","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","aab38abd210255237d4dc101c9e5b5f8d746fd75aeb30cc77b6a4d322b06693d","797a9d37eb1f76143311c3f0a186ce5c0d8735e94c0ca08ff8712a876c9b4f9e","bc31e01146eec89eb870b9ad8c55d759bcbc8989a894e6f0f81f832e0d10eb04",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"153d835dc32985120790e10102834b0a5bd979bb5e42bfbb33c0ff6260cf03ce","affectsGlobalScope":true},"a44c87a409b60f211a240341905d818f5f173420dcf7f989ee6c8a1a3d812ae9","bdaf554ae2d9d09e2a42f58a29ef7f80e5b5c1d7b96bfb717243dc91a477216e","ea194ae7fee69ab77ee0ff7b7f35227eb09515583f6c08988a59fa65661af990","321ea733ae7f611077a2d7b4bc378ac4a6b7e365e1a51c71a7e5b2818e1e310a","13257840c0850d4ebd7c2b17604a9e006f752de76c2400ebc752bc465c330452","42176966283d3835c34278b9b5c0f470d484c0c0c6a55c20a2c916a1ce69b6e8","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","ae7b9d7ab1652cc1866ba6e269d0eeaf1708d07327714124ed2cbd059f5e4766","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","21e64a125f65dff99cc3ed366c96e922b90daed343eb52ecdace5f220401dcda","4982d94cb6427263c8839d8d6324a8bbe129e931deb61a7380f8fad17ba2cfc0",{"version":"b0b00cf2e8107ab671243a73d2fbd6296a853bebe3fcfaaca293f65aaa245eaf","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","992c6f6be16c0a1d2eec13ece33adeea2c747ba27fcd078353a8f4bb5b4fea58","3b790d08129aca55fd5ae1672d1d26594147ac0d5f2eedc30c7575eb18daef7e","a6b0abdb67d63ebe964ba5fee31bc3daf10c12eecd46b24d778426010c04c67e","e7b5a3f40f19d9eea71890c70dfb37ac5dd82cbffe5f95bc8f23c536455732d0","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","f89a6d56f0267f6e73c707f8a89d2f38e9928e10bfa505f39a4f4bf954093aee","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","dcc6910d95a3625fd2b0487fda055988e46ab46c357a1b3618c27b4a8dd739c9","e649840284bab8c4d09cadc125cd7fbde7529690cc1a0881872b6a9cd202819b","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","60c9e27816ec8ac8df7240598bb086e95b47edfb454c5cbf4003c812e0ed6e39","6c63cb179eda2be5ab45dc146fa4151bec8ce4781986935fe40adfc69cbbf214","4926467de88a92a4fc9971d8c6f21b91eca1c0e7fc2a46cc4638ab9440c73875",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"4e0a4d84b15692ea8669fe4f3d05a4f204567906b1347da7a58b75f45bae48d3","ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c","b3593bd345ebea5e4d0a894c03251a3774b34df3d6db57075c18e089a599ba76","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","49daf80661034e07d919f1c716aef69324e34d18a63a282f8100f52c961b58a7","538743c4a70f32d2f6af137ff44a043c49dc8da6ebe2ad5e7da60cc953630e29","d2104c54b34158356c4c17dd37c7dd29e1c7dc4c77d9077e921f37d0b0f5cb87","8989b83d1d34dc4ef1100cbcc0f983f69d63118aeca3de5947e1c431ccd21ccc","35c935b77ca1da8fbf901931e0d8f25bff1cdedc9cbc01d98180cb496c445c21","3d1ffbc8fc8790ce6eef1e4ce1e79bfd5e9d0bc7d4f7cac0e95c54a7e1141875","128307a9785a229de861f811864e872ccc7b98da7953f6a67168addf64164fae","79d8197c490b07c732957dfc053b0a1bceaeba6cca9d3de6ce784d6b949fca4b","a49b47dfb004f10f3b23bb790de0c74667dfd053f7eda02ac831c351c7875498","5af3737dddb6e952a498672892404be1105ec2751b09467fbb5fd4b95efbd99b","9a1aef5196a946220a7ef874a7bc7424efef78d23ba8ff20df281b36ef62837a","3e587a8ba8dccc8217a1dfe64ca76e132ed54fdcc794765d090e0aa0147aad67","4d6e6619818eca8ab323f7b2199d9f2b324492bbf8e28dd29e3be90eb3530e8e","05d99f695e6424963c16f8a990e2fd0b703a8079baa1445ef2915fe525efc85b","acf2768b45d187b81284aa4f8e716413ce8776a90a72e755403faba08eef7dbe","8acaecb37a96026cb6d1ddb3ca4ddb32722890d18f35bc6e019dc9703dd72529","88d9da0dab92c994d171a7999ca48974be8f99c041622a78d0b1f3ff27588fc1","dc172eb5106eefa395d091bdb0d8b1963a86aae82a6a7192c1910e7f11083ccd","edaf342a2f1528da49e69e479132a88102b8d9866b129bdcf1e59d86cbd6341f","2cb11a971470a03e828df7520b3153e514bfc5065597d0690a0439f7a5e4284a","839f9c729f3bfd673257683bb86879ba1c3f8b41f01c2a6a33295ebf14927ab5","9b37c5e6e6c985efb20425b725034100d4240afe789b2ea7c5760ab6205ab645","4d74b98b593856085848bde7d83f400ad2fe5a2c36ac9dfe863f96ac206ae55d","27656836bf9547d24ed317c044fe1a3feeb58aff8433ba7813d50e8f69088034","e42db4296d48fa63531ac389627d0577a0dd6f6491b47fd7398b17ff6abd2f6c","bddc0d81daa46345e19c159cbc90638380b24e8d6ddd89d1542c6d9e31ebeddc","a204b31c3672914ff68bb20bfdaae933bf7f8f943687c371b0fd32a3482fc5d4","aeed82530b6398bccd5920a2d4c19011102927c19ce0682dc94f70ecd457a4bb","c129f26b2f8b768c7fc6c5edfd7353599d2fa9fbd19c9175192a608d687ca9a4","41507092ec15c44f72df77d95847b87dccff5f9cce4a11ff6a6f0270f3df3e74","ef048a1d0f1a5f33453b2481987a0f5011e158b757fe4f4def16a2a31efd4623","0534a685ecb1022ec62f19fe7252137f652dde0d86404723e021ed714d44c442","0be9967f0df1fd5673b743b218dde9378b8d0aa0e4a8f364f567b0bd3f004d27","867d4bc564691a35170c6620b658d0f745229a3cc30016e08520181bb1a7f1d3","429c0ccb47f85fab9f0096859a31f2bc20e2b8a814022cd71f6e5cc88ee550f1","060abd605f5f3a963d04ce8a5242f751294d4ad135ad349751089e7c29aec0d0","6c83ec67f9e4afb6ca82b7be9548cc004e8d9ef6ac6aa29b2a6846cb9e5adb5d","23782509c8247596fc3cd2080fc4491e548e1b4587939b68eb4e390eca48b971","f50fa063598d47694feba8f4d91f9fcac813b2c6fdaa5981c6ff466952faaf48","69977ff2a9fb72635702a1d7bf86fab73cf5184d45921f27affac20bb0c3ceae","5a4381be6da0f0383519663bb25660e094c9fc7cb658bf60a2cc221ffa8c7cda","b193ed7441b78595000bcd07c92bfa1b36493910579f1c33daafe42a90600537","e0196a20e6956f17ecf8f04188d34e4b3102e2b6f068b68fdfcecdefaa506e7a","e3d78def8d4e6bb8397b25068fdae6eac9d181a75c78dcf20227a251ee00bce3","0d70c986f1a71c38bf3c3c6b54425c4ba624642231ea8471a21adcd69ecbdd4d","13508efda3383aae203a1a8b5b90b79f99fea1920b65db9ff4a39538934b6c10","3a46c481fc512cce568b39ab364bb02ec588fc276240caf34e015444a5fd26d2","9098640c076d1bdbe6daf7b48d08bb2200ac28cce6db7d08118ae676a99406c9","b64113de8d7989a04f8f94e2c125ac426b9a5797fc2245bf70b96e25c1a06d76","7916e7c886d2088f3a9cad90c7967426d23a92930baf4f9e3b027cb904bc5c09","833a669fdba855086b045a3021b9b51040bd46c565a44f5cae5393cf1e8093b8","c6e2264465eb2e8cb2e12b67adc878e3a397efd6328e550b0a1a5bffabcad66d","048f40812b2a786d92fc8db2f174d35fa64581859cef090087a0f392d4010a3d","b130b6175f23bb5d9e5006ea959b78db664fe4f01abb377258e789c49c4c7cfd","2163bfddb0e1569e330731191e593feb3582cd0d27518993b6970aa8d62016ed","d302ecc0b3d2c60e6408fd2469e726967c7114d5f89b97d82f316feb8557c69d","4782235ebc38ab1dada9c9bb80ee43982f076c6d420bb0772c40fe615901889c","8f3a97edf479a690f731502f11179ec8264e11876a2b5b960a8ed64201392d86","fe9b9da3ace303035d4492d77bfed0260b3d50a04e0fbb128f6c47dcc97e8618","26062553cec8ef883a3617e98d29b395419287e48f4102105a2ee80c1997bac1","13972f1ccb5602c28eba0b02e7f6012f9eaaa0a1d56fb091996a33d67df5b3f0","f2b32e966e35467d563af676842b4e0718f1cd634f2dfdce3972ae101e5a8564",{"version":"00ef4a4324556eab6e45809e757354899d1ded0f5b2134465ee10e450f9c8d61","affectsGlobalScope":true},"a9fd76613c52aa62a036e7d85d6503601ac3aae1444f4765c738567e5f687f4f","808f34beed9f00ab3acc06abe97a60f060e38ec10b06d9dcd6cacbf045714b9d","3594c022901a1c8993b0f78a3f534cfb81e7b619ed215348f7f6882f3db02abc","438284c7c455a29b9c0e2d1e72abc62ee93d9a163029ffe918a34c5db3b92da2","0c75b204aed9cf6ff1c7b4bed87a3ece0d9d6fc857a6350c0c95ed0c38c814e8","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","782abf371043fc65a987f835a3acfd80602a30c3e2122f6d5756a86bf6913352","509235563ea2b939e1bbe92aae17e71e6a82ceab8f568b45fb4fce7d72523a32","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","82251920b05f30981c9a4109cb5f3169dce4b477effc845c6d781044a30e7672","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","4908e4c00832b26ce77a629de8501b0e23a903c094f9e79a7fec313a15da796a","2630a7cbb597e85d713b7ef47f2946d4280d3d4c02733282770741d40672b1a5",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"4ee363f83d7be2202f34fcd84c44da71bf3a9329fee8a05f976f75083a52ea94","a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"3264032a4141e0ce43727634c9a136b7e9cbf3292e6097b8d17ba8ec8d2a29bd","affectsGlobalScope":true},"c45d6f4d3a20be54e46237608f537a8d85397f87b9c3318d68ed925c2f1d0b51","983b055016a8412ba6d54c971219805038fbc7861c52388e0f205f134356182f","63ddff320a89f6871034933fec3d04e68bfb428e9c78c543ea13c510b363bc42","19d56d852739d209835dc7c64f6d508310d4018376cf8bb9c8febda362ca8f78","33c337de15324843b658d00995db674f9c618fe9ad6ad6b43f0fe6835984fa0b","835eac23d8469562ee8b6cb46a875c694a29a196dbf3d075d850972ecc834620","98d0a7a057191ce8f111a5b8ecc7107ff9ab45d63ead4ce29a07296d31b5e91c","4041620e27e40e45b2245c7b4a8c71f61ca3fa3c4a13ee90d09cc63ca77869a8","b85b721978ea4bb7624ac8e7e6cb512a5cb290a85cf44e524f242fba25d476fa","e73468f0faf1cc6da95dcffc4533896c0cf91c4a8e4b3f9f65f87fab36d7e174","3b5d72a128afa26b8636e191b082947ea1e1ccd799543e3ce7a57adc35697eb8","efa8f798ccfc988c480922f64a92968a862a8ea200bfe88982edf46dad94bc28","79e715a58ae3ee0470cb55d55653c4dc89f7d8ef4f5a7b5720b7be08a998f649","6a2b74f0ec5c05b43dcea9d05433739900b7052a483f0dba4c515cdd29734942","4609c547e1956bee7974fc845dea2eb9be4292a943bf3cc9964ba2b041759b4b","740bacc689be6f431d28f32ff98278810840de1869b4f03dc47b8c92a6d860fa","78dc572c57915fa4a3172b59a3cf590a86b4e7e65dff5c27d2438f578b5d9ffc","501485ac42f4a9298ee77c4ba6c3eaa818041e63066003ef88b87a7ac3f62beb","228f1b1845cf8eab22806df7fdfd57803cb4161d190ce930491fe80d8a2b6e98","5b0b345017f6b471b620f1c8fbdbf0e04c3721375d3e800c52618dabfeef1f07","ce662439cb897a60ae7657ac19cfa47dfeb558e13ecb30ee84a3112d0fd466fa","470a0fb853080bdd226587e7b4bd403c21b3dc7ff41b598622518e0308934b87","4655c6622f6d0bb3182ee903b35013605425b421c24b17d3e826782c773dd75f","c6e88565b597b47d3d2a304af8b99f2b2b818e2136815ff473cd9e371899fbf7","ff51bf727325b7ae84d7296a0f6f701b9db4c1950c83ef389ac3b7dcdcb5efd7","bfca9c2cc975dd04310c02d200c61baac194b8ebb52d26ea83c50092ae005f88","0f2fc3b17287c4bbf75b2acc39ab504b794ea332972d914c17ec7f1dd95efe25","05e9a6cc3630bb41f3bd0a2cd86627fd19afe4837f34062e24ec799f1748def9","292404c1008d69cb301e9cdc821fdecd347a574da87cf5041c166041a7b1a2e9","6d4f8e81b0c78a3282862d631b067c8857feb438ffb804ab16ec6787a984f07e","8558b13817b7ff64d16f004ec1f8503baf48b0257428de64ce67646da6dd2142","aa0a1c26b1f6ae3d55a9942ea119b301e2a455a601ca868a1bc84372c1d3f045","5ad10a0a2db50586db554af700cb48fe317f80d881428d5473807a9ebbf3d738","44074878bfdc747b948feef53cd672bca37675bb885127bc6c2669d5baf57902","f2ecf41bea9d32be3e27c71b7d1d9e3f58083b45fd36bd25980899a1168ee109","0adcb5db0aa0de1425495b135dacaf6f2240e3ad48b905cd8139f730fedaa4ca","ad0a9f226ccbba7ea6b2b991a0bec5d95f0b1e8104f12d691c1a407710a7a832","2f96180e51009103c6f383ddd03c1452229f514b585c2ad1a4dc25ac7ec7ab7a","70f1bfeb39734149e329e52e51f28b88f3f83ff25c6e3a43c1441981ac318126","05129db68d57fbb85476b7e6e164e8b292efe68d5fdc544b70ee3a32233b2487","5d3838dbbcfda003fbc39f2716a106f2b514a54dd2def9ea08ab04c8e7db4835","b86b288947dd561b5cb2d62c7ec02a83a00858e6673719699f960f48121116b0","b5c3e2baa5d632f3489ecb4f6d9ad8e2c914cda3f11a98570c7100d6ac52615b","ff2ece145bb888655363773f3c781ea9f6a06bdc0f35f125f159dfd4ecfb37df","f14823adf03c5cd507c4d7a8cbb242e02c6e2835424e1183e729464bdf4f3f73","118d80f9540cfa2b110c2835648059d35660b02250e6ac64b7d81791ccb5a5e1","99b6d4c09e9743dc5b57ed14d1cb75434539838ba5f53de259693de8f5027d8d","5577f642fe5b71710a4fe4b8a3d5f1bdcb9760d7b6162f0184d97267f31dd6e3","fb8e8e664c26078702764fa8efe1ba1a3125f1c32995821800a94f01a3273fa1","d1c2921a49b20bc830e1f288a41d29deffb65a629e77e7d5e9a981f331297a34","576db8c61a68aeaca86dfb43d4963fc6ee5d5f77e8874cc70c4ef7568f590731","124ad91ffda83fbd3afbe654a1ff708caaa8828128fd4c189644f28df6412743","4cbbab467863aae8abdafd506d0d950263065c3bfde07feace7280ed858aebcf","e309ec774381f07a91fba05854110b9fc5c6e13390b70068bf3ccff99188889c","9971300f0622080bcd990574d9f5b599512cd6268e3170867ce369f7418e39be","f761c91419d0a89422a0004ef1a92929dd4d2d5e5c16758654d8b0467d1998c6","f0cf46afbdff530923e8eaa10ae909d0fc4894d3beeab71be5972660d0f94657","20423b338529dc6c08091a31dfd4c8eb59c43618add12be380bc5c2c1defdefa","322aa16c6c143f1d818c5971d3f7641ab15cd726daed0c3bc4e344fa3377ef6b","32a6a915cfd763b55a3fdd52a1be4c33d0d6ff2b8b4e31477e522f983c168c32","5c5975a57f974dea93b814baaa9e001f0bc4a832d9f3d75a8193c2e12331171b","7f9b0d5e3fa15ab156fdc7967b7cde90bc655199c9f27bfd529dc8936f0ed5d0","c1fc7bc6a2c8ed40e9d17abba1c515923a7d860916611171b1f78019e4c75ec5","7a736da957c9a1d576a5a4dd4ce145b782944bc8e9470b8ad2ac3c4a349fb666","960e9a6f3844831c0b827ad4c116c1d5ae2eb4ee6a364f55650ecf0f4b358254","53825c0d7205506faa91825612373dacb25f70fc05776c69c998f4081cc67da7","bfdcbaa21d9ceeb25394c1d67836a3355660a9cc38dd790fb138c801ecfc10a6","3dda11e0c7b1da55fb3576a8c863d1e8067004060d844b6e3ab9cbb2522ee6d4","be6b8e95eaad887b3e26da22215f188ac01ec13d8e6fe89c57d671a04f241e09","a0772a49c68c8ad09fd9b41f73fe542e52535e14f7825db9d605c3c99166c377","9e7a6963251629b917820b5c2ed4e3d78a20e9918efe2b6615fd484fa0cb6523","55447554cf27022611a95091556b48ba78e962b8e2a5ef0572f3dbaef1c9ec8d","ed1d1e789510fb8a6956f82b0160c069846c35e23ee3bb65f3cdbfcda319742d","26851ae9962b794c44cb4d3c7ac2abf88e7c09104011c0158613358fcc6949e6","6d13ddfedb26a0ebe0ab867e22db3064640b350edd7f29e4736475ec273c21eb","a825fab8128556b9f2cfca1de0e65bef960a4cd8123ead23f5f735dac1bf28bf","e5e65d1d223b004f5c19145b39f1359d233cbdbaaa6dd576e42e87fd0a5a66e6","540fca79b8b30092983469137f6398890cf52caacd019b97cdcd06f8b01de145","cdb3c3fae7a4f20443850e06ab11e5d57d2baf06d474159908a91ff0e4a2c624","6b5b606a13efa3ab0ef1b9885a9df353a972c82eb69203f5aeae04f002f08692","b45d65f0a5fbe79f4ce2c5e0788c42710658134d13090142954f1fe2f1f6edf8","fbe00df82d77f8c14a6923170654cfb28cb46ecf3c1af6ad3e851f5aafe70f43","0af30493c8bd4f5ec4f462e4881d5355157e4f07e1c90502da3c72d89e22f662","73e82f1fe24c38b8616cf49db49cabab77887a904bc91808e81fe32bce493bcf","2d5385cc4c6b85a831e828d6761b880c747d15e403f90ba9385d3ea9f5b59c32","7b1fbe1d46ad67315d73bd52a172a752c4c05bf18bfaf7a86d18ffbb33c19cae","e9796a4beccc5293ab4fc32d73333311640645a209a5f298be0877dbe79b96d3","bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4",{"version":"6839e1779e1f61e0ed62b1ca3ff7e74dc70479a5455077a38434d0e404103c28","affectsGlobalScope":true},"e927087d0e2432ca048f7e4db004a2548282befce0ff919c0a6f9a376400b6c2","93aebe83466496340ef8b003c196f7e6fe325fbe6ee98c08ed715ac3ea61567d","47a85f99c4b4f9dc691c76b037a861a9f429c75e580d9262c68d739cd02a27c4","2b497f5fa54fed8de6a0e935e5d3cd55a4cbd2531c426a343aebf24d2dccc2d7","abf31cf4e16b7b9e29fcba2b970a7c5e5fbb0f53b092a11d5dd92cf714b653fb","9227936c4b5cb4e7dc7ef102f52f8a3ead02d270230ad81b9c79df1b3bcf5908","41e938c10a11ba59df74a150166274021bb456af2e77761b74e7a96dfcf67596","64d2153231dc1152827eafc3281d562b8560529441cc9bdd0f35947234a234a3","c44d61dc883e72e84ad75a5135f2f9fe98708ab5a56ca6d35371cba902439e61","8cf06b3c48224540274cc19d2c75f4cb117a177ac444ef5c9b0d04836067b57f","dae16886c7d2bdd5a9774c0885c1b2cac93026328fdc6b64ab6810c225f22c52","2ff61910daf993742d6e5c83816a249b58f4f97ff93b37fa4b1c98253e174f92","e9223cc22ec1be13bab6e2562f3a6086e203c2983c382408a2d6fd741c67f20c","f60c30119651a9779a7fb605d0387190699331734a5049a42d0b009951a3f707","40e7db95904ee001e2c8d69de60edc32c346f9895063210adca2ceac076e9d8e",{"version":"1fa918c9b9d80b206812f511ba564c3de70de0a438bf277e3cee67209135c872","affectsGlobalScope":true},"25944ee83d9315cf7c875ff7a7a67b3190fe23799ea4f908f829fa098a4ae7fd","63dabc2c7a61884c12711baf51f280632c8912fa9470be64f12293c70a08dcd7","1725e5d46dc7469cda6011ef6e258bf2bb3ddb1885426ed6e318f99de3e3abe3","d37af09d956230822f7d7426e015ab7ad50202d24c28fe1df59c5e7a2cdebe0a","db6e02fd3d77ebe45d9328da83772787481e0982dcc53723d7a5ba8c6b25bfa1","67d3da96c7d8720637854b0accfb59132e850601657567f3e790100057583ab6","16ae3c942dfc70db648761230549f4c5ea71171cdc2f544cece7dabe968ee4a5","9ff47561507e36916d8eff69e827c60f0634ae19bf2454c5e5aac4614000ad88","839d07ae78ff176526907baf25b3b28fc6f9193e965e275a60917e8ef0034d23","8cfbfcbbf0fa67402908a4e6cd6f4af0742e5321dc170dc8eed0b7ad572db6dc","730cbe6975b496e341b91c0af2bc6aaa7fdbb9f80952288ef9461e9ebf795e8e","b3d2a1a6e51fcab32219cdfc8aab5d01a63392a1bac233fb58bc5dc96b058062","a237952822d8063012701664c9b19e16870dbad6e5b00d1f531152f805bea0ac","1f9991c2c5ba79a1c65f15bd7c475d9d49ed03d834606f90f7c865f50b4405e6","cd715ad1bdab30da9b91b985780d5b9696262d0e9fe5f390a7e6468b828a751c","d21a01533cbd8e4fd8ca51ddb3e7ca1f9b958bcd22bd98f3ba9f2739b90f47a1","1562149ff2ce2c0bc2825bfeeb8ba6a32bcb205dedd4ee95d274c908870da179","f278b7ba2ca4f3e96c51ebec8a977c5cc31883a145f60b05b6cc972aaa9ec5f2","21ea5b9a5dabf424b51aac168db18e2be2666449cc4f120329d0fc1ef66dcd1f","fc96e5b1029b3c61491bc241e6727676f890eb14c1a56a786255ad76b5e94650","2d924cfaaac52cf88256d7a23b62d8831011207e7caee1ee0a8949bc5c25593f","5479e864cf80c2c6b48354d2ff1f70e76c7196d31a1538fc12306b8f6dbb3366","a6647b2803a444342815a70f34694cc6c61393463237fadfddbf4c320f631429","971eb4d6b600ef600a360fb55e0d684e36f14754ba2b7847827769934ae6368b","d2c5b0dfb932b4a7b4d8d1dc44b241c5096ff93bdd11fe6357bd1c2c938fd5d5","2a7303938915735d760facb158e9fd5aa6d04ea0f7b79fd4d1bbf085c4fbfd36","4990dc465a1bb5cc9eb1ede7050b2b5ee7407b8ef51d3460707bc3f50339a17c","d59d7c33ea06333290cb024f6ccb32169fa9d8243f69353b5aae78da0f72b837","6cb35d83d21a7e72bd00398c93302749bcd38349d0cc5e76ff3a90c6d1498a4d",{"version":"369dd7668d0e6c91550bce0c325f37ce6402e5dd40ecfca66fbb5283e23e559d","affectsGlobalScope":true},"2632057d8b983ee33295566088c080384d7d69a492bc60b008d6a6dfd3508d6b","4bf71cf2a94492fc71e97800bdf2bcb0a9a0fa5fce921c8fe42c67060780cbfa","0996ff06f64cb05b6dac158a6ada2e16f8c2ccd20f9ff6f3c3e871f1ba5fb6d9","5c492d01a19fea5ebfff9d27e786bc533e5078909521ca17ae41236f16f9686a","a6ee930b81c65ec79aca49025b797817dde6f2d2e9b0e0106f0844e18e2cc819","84fce15473e993e6b656db9dd3c9196b80f545647458e6621675e840fd700d29","7d5336ee766aa72dffb1cc2a515f61d18a4fb61b7a2757cbccfb7b286b783dfb","63e96248ab63f6e7a86e31aa3e654ed6de1c3f99e3b668e04800df05874e8b77","80da0f61195385d22b666408f6cccbc261c066d401611a286f07dfddf7764017","06a20cc7d937074863861ea1159ac783ff97b13952b4b5d1811c7d8ab5c94776","ab6de4af0e293eae73b67dad251af097d7bcc0b8b62de84e3674e831514cb056","18cbd79079af97af66c9c07c61b481fce14a4e7282eca078c474b40c970ba1d0","e7b45405689d87e745a217b648d3646fb47a6aaba9c8d775204de90c7ea9ff35","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","bcfaca4a8ff50f57fd36df91fba5d34056883f213baff7192cbfc4d3805d2084","76a564b360b267502219a89514953058494713ee0923a63b2024e542c18b40e5","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","a20629551ed7923f35f7556c4c15d0c8b2ebe7afaa68ceaab079a1707ba64be2","d6de66600c97cd499526ddecea6e12166ab1c0e8d9bf36fb2339fd39c8b3372a","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","a8932876de2e3138a5a27f9426b225a4d27f0ba0a1e2764ba20930b4c3faf4b9","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","027d600e00c5f5e1816c207854285d736f2f5fa28276e2829db746d5d6811ba1","5443113a16ef378446e08d6500bb48b35de582426459abdb5c9704f5c7d327d9","0fb581ecb53304a3c95bb930160b4fa610537470cce850371cbaad5a458ca0d9","7da4e290c009d7967343a7f8c3f145a3d2c157c62483362183ba9f637a536489","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","914560d0c4c6aa947cfe7489fe970c94ba25383c414bbe0168b44fd20dbf0df4","4fb3405055b54566dea2135845c3a776339e7e170d692401d97fd41ad9a20e5d","8d607832a6ef0eac30657173441367dd76c96bf7800d77193428b922e060c3af","20ff7207f0bb5cdde5fee8e83315ade7e5b8100cfa2087d20d39069a3d7d06f4","7ca4c534eab7cff43d81327e369a23464bc37ef38ce5337ceff24a42c6c84eb2","5252dec18a34078398be4e321dee884dc7f47930e5225262543a799b591b36d2","23caed4dff98bd28157d2b798b43f1dfefe727f18641648c01ce4e0e929a1630","f67e013d5374826596d7c23dbae1cdb14375a27cd72e16c5fb46a4b445059329","ea3401b70e2302683bbf4c18b69ef2292b60f4d8f8e6d920413b81fb7bde0f65","71afe26642c0fb86b9f8b1af4af5deb5181b43b6542a3ff2314871b53d04c749","0d7f01634e6234d84cf0106508efdb8ae00e5ed126eff9606d37b031ac1de654","f8d209086bad78af6bd7fef063c1ed449c815e6f8d36058115f222d9f788b848","3ad003278d569d1953779e2f838f7798f02e793f6a1eceac8e0065f1a202669b","fb2c5eceffcd918dbb86332afa0199f5e7b6cf6ee42809e930a827b28ef25afe","f664aaff6a981eeca68f1ff2d9fd21b6664f47bf45f3ae19874df5a6683a8d8a","ce066f85d73e09e9adbd0049bcf6471c7eefbfc2ec4b5692b5bcef1e36babd2a","09d302513cacfbcc54b67088739bd8ac1c3c57917f83f510b2d1adcb99fd7d2a","3faa54e978b92a6f726440c13fe3ab35993dc74d697c7709681dc1764a25219f","2bd0489e968925eb0c4c0fb12ef090be5165c86bd088e1e803102c38d4a717d8","88924207132b9ba339c1adb1ed3ea07e47b3149ff8a2e21a3ea1f91cee68589d","b8800b93d8ab532f8915be73f8195b9d4ef06376d8a82e8cdc17c400553172d6","d7d469703b78beba76d511957f8c8b534c3bbb02bea7ab4705c65ef573532fb8","74c8c3057669c03264263d911d0f82e876cef50b05be21c54fef23c900de0420","b303eda2ff2d582a9c3c5ecb708fb57355cdc25e8c8197a9f66d4d1bf09fda19","4e5dc89fa22ff43da3dee1db97d5add0591ebaff9e4adef6c8b6f0b41f0f60f0","ec4e82cb42a902fe83dc13153c7a260bee95684541f8d7ef26cb0629a2f4ca31","5f36e24cd92b0ff3e2a243685a8a780c9413941c36739f04b428cc4e15de629d","40a26494e6ab10a91851791169582ab77fed4fbd799518968177e7eefe08c7a9","208e125b45bc561765a74f6f1019d88e44e94678769824cf93726e1bac457961","b3985971de086ef3aa698ef19009a53527b72e65851b782dc188ac341a1e1390","c81d421aabb6113cd98b9d4f11e9a03273b363b841f294b457f37c15d513151d","30063e3a184ff31254bbafa782c78a2d6636943dfe59e1a34f451827fd7a68dc","c05d4cae0bceed02c9d013360d3e65658297acb1b7a90252fe366f2bf4f9ccc9","6f14b92848889abba03a474e0750f7350cc91fc190c107408ca48679a03975ae","a588d0765b1d18bf00a498b75a83e095aef75a9300b6c1e91cbf39e408f2fe2f","8129db80142b929e65ac20b8337ee3d88011edbefb8bd33f335581ade1a5db87","bf14094068461b3c2b210071eb3f4f8f08c488872beea2b7b1cc43734edafbbf","7f6d3ef2715d5ca5404eb107e84e7ec3ee818d9cd1e0a5604e4448a2d73bbf8d","6e46df9fad03883b826f4c82b1d70a653a68769602aee73eef3e00e5b4d89cf3","126e5f9333536df4e732dd64205ab46500d7e6b5b2dd9c7143fb5015e70c8165","a19c55b24a4621ccf4ae14316383569def5162753792c427d424345302b5f399","a9dd05f9fb6799e317c62813e14a65a4f30a0a55d81c4d5e4ac41227c6bff13e","1d2657bba64f3e8725c3b35be632fe0d71a3ce35e78ed52182f58bcd41afd752","d60ce8095de1d45b6d2559aa8cf9dfe16e1b55811f96c28fb7fb4627af57f9b9","2277539cba1b02b37291d16e8aee38fe24ca22844e3044b2adfa1258c42d4037","b12ebd802c1646abf9f0f1b07b05b69201fc663c2c5caefe2784ab96dca753c1","dea0469c0e165652927fbfd91d0b9282d37e9b193c9b7da0e20b48fa5232287a","7449560ad7c67f1fdad19f56d9f51d6b5342f93a48fd04d816165b74d39c8a68","c5c8a2407ac43eb5debe5212b8b5dd5513f4eba2d01f1dacf0124d28b0a05f18","b659ce794cac98acec5e3931b6993772ba47945f7260f4070bfe64b59f40be96","fd74d70a5f477febafc3edf168d8c4e43168b76e0010ffdf5456d263f9f208ce","70f4e50fbf19ba08332601e1f2b948e88e8ef2b456edae48c9aa55e7c296aa97","d0e8e558bb4f592bcc6ffe508ac011cc86c84f26803cff8e923c0ec3165c6e2f","b0a568c21e5e65772db1adf0e519f46251f611377b74ae63c7b715d3cad6a6a1","29f408c8d39eafae2b653ab39c744469930ffe924370aea437842933a7c77c37","e4688174022aacb54290d599672c637c9eb0209fa0bac72390c3cd22ec664ada","02039050b052d7d7f53898ef909a279bb4999dd09022bce4e9fe16f4ad9303ce","e63061c7de68c3ff61633469684dcc89a904dc387ab1f3178ca24777848b213f","9d441989d1cbb52939625e57621620524bf19c3c223f01007941ecd10335d0d1","28e06b63c3f364ef754eedfb0cb0f5127011f3d685e102f07ff5c56aa87d1562","b0ee12813f8d26468aba1fd860db8180eb9e332183ad839dd554a2f19c8983cc","b407b6761debdcd11022f0157535e7bc4977433fc09b6c188cd7c324ded64a5d","4873fe69c2bd7be609e6f3f033db4534b88735ff0769e18cb100cbf24f25e0f1","094815f0e8d3c53c1b983debb0559cb347ad78142419654b6093ce285aa150cd","cc0fca544c9ee63d754899e93ebae35c8ba8304a100126b9c3dadee2c91a2250","74f4099cbce8fa62b18ea314b7b13693753a4d97620ded963fc064b39288acb8","5275faae938513e793a5ea551efa77b43a47bbfac8ed8550753ec217376f24ca","b0fe7c947694eb4f0f736af28a853b0a8dc59074329a3d9a3eb5967fbe83c10d","5d3db7107b3138edf0ddb9851bbba99caeb6b3e32074da4c7b45e751c296183b","b86137c60e0c62f7acfd8f0e761170bc6920c105ef03868c0518be562a5c5908","7ba39fedc2104c6d69f7f583e10ced54256f8d8e42770c754097e75f041cfb7d","69d5afc46850b54ef3388769cd339f8dc88e15cd74a189bf71dac3937b4e8850","a8db70d3ad601f4cf3c779623a3ca232606db0c1d052cf3f1d7a3a695bcbd368","6256ad6e7c41a9f9ecb6349b5d5be72ea2c60ba1c6c6b3954929eb59a6980688","77596a948c8deffc8f059fa0f3c38688f3b05caefa303506074034b5cb1a56ae","81ef0fab583499ba45dab44490620e7b870597d90c5e562ec5a9b38b6bd3fcdf","f2b309d4f1bdf8e9f4fa03bf2183eb1b2f7cb66efb5b16da52e378ce75ac17bb","9cbaf0317ec49acb6c84d142077670a301015979260c4ecded7705fd2141379c","5a49d16b6f7d3ca5c66569784290c0ed7a3d74821095e2ab91e17ea444ac4657","2e5fab5fe6e398cb14f695da07044a65f4e32c8d0fe9b31f5fe52d2cc7656230","92e581f3d154511056bfba03e72ed3cffa92681b4b9bb1953b0b724f67a664bc","c9deb61903fd8318e6845e4e0f03b3bd813cdae1778f8dc9ee0ec05f9ca22094","7bc3152a4c8adf395ad486da44acb6e8c98dedd2becc83810b076114338a5045","30a8688575aeada46c1268d671b2a1de78705ebc0d5343e75b96c25f149caa98","e29b5eb559a057d36584ec480d49711f0c81bed176bb6256df584e800c453760","57e52fd41767e09990c28cd092037736625b3c492c412d7b5c72282a4a97e2be","6d4bce054cce22306edccc85e738a800ea0364a82e85f9bf61156ed03604d24f","6b51c27c5dee2f6d6bca502a669e3941bc220c68cc66f4e45b4134ad6cc29231","b3e5a0fc169f8b45bf7e4f70d473f0f9b8eab10562fff98d33f9bfa6e66508cb","7439ab76b375658a0a5bdb5081f9f22a556e34953916522b18d6d7e01d20a798","6cef1daa7bd7f8b888d15512fe2a698d76f2d3442e8d4cbb2f108624e575759c","f97e467e4afcc9621184bed99bdaa280377267127864b3776055c765cd6dbe9b","48de3719157ebe5730b125e224564d90754707bc2dd19a34fe8f75861dd73ded","14272cf5e560df638409e768e655862b5b9524ecd34a3f6a6ea5f7854af76bb0","6b3e18cfa2c3ee15b6c1d3c1d3aeb00e4cd7a77af28c92ba86fa53413250066c","1ba7e65640b42ceccaabcabe41291822a115a70cdeae5f1a96787f35c3e61239","9da1bb7d7d75a154f8318acb566b708d9995e5a4ef4c4e850c890c838e5197a2","02c6d397e3195ff769db5cc1329a8b74402da41aace067fac8933195812258cf","bf0cb3efde539de4939ebe42263ccb9ba5c3f5e939ea2959f7ffc97971e54373","92177db67a88b744edbc56b299e43861f66c51091414827dcdf339e9c5541920","3332be2c229d8f6d56dc22b9bd0b07f360721df6bda0ddcf232b2360a413b818","168cc8abb6f1f425ed19a7b57a090fe5bf6ac8d5c98f8cfb7b5b3cd72db7653a","4ffff8f24a3e59b2a5817aece6db40c11a948445495b79048537461a8306b2c5","1197a604d0cfb7186469abe5d505d7602132ca7aeb1537a6b3693199808c15e1","e28a8692adefbf2526584f9216a4c10f141be127fdd62eef1d0ee5a9bdbfab66","334f9ae53412059c64018d80ba32e1e83afbd4473398ad3b1aec4459769362f2","ed67ec8ed00124ae16a321148e8de22b39b072a8f24c5deb4985ecd2c036fb2e","d9768f85d47804c972749dfebe23b9ffbb952d982d20021737dbfe286fd74e0a","10f3fbd0884a207e791a00961b96a89518855f242fd37a3a52567d9d01d3c24f","37ffdafaf785f906fcd892f364fda95656d2349d505628c363b304b2afe38679","21fe1e6a43e8ab2d9889fe7f48051386d681fadc7d36fe4125e10c8eb7deb48e","3e3559f9ff59e28ce2a59105d3bd9c2c4b18c931566a365623ab2ff6fe93e9ae","3acabafe6eec986efe95227705c43ea32c28787c9c25fdd79f13c6cf1ad2188e","75462ad980377f947ffb66d62eb78cdc15b1806cb00a7c30ec72f5951cdcf276","8e43855426fea44f3e5dfc8dc444d7e19010a2f9ec37f4c89ad4617401f742f1","ad92ddfbc6fa81b85bdfa71376e61eee16f0c2a24d35eb68562626c28d62931b","97a09540667d7e16502bee30f5d43d797467d07aa0f1dbbbbfda89d7a00df07d","f210d989255927604f6303ad355f7eb2deff241afaff4d6be201534f4404595a","9a885a50833aac4e51357dd2bf6af9bfcc6548f4ba02036d8ace920ae5d91da5","663c4708616caceb9ef4649fcd61f65c1f78e15b82b86849cb8c56fcff62aacb","63373086b50634ce0a05b462af6f5a60dfe9f97b4fc620a698bc61d9c18520f0","33711880e40cb3d480fdcef5f756a3254701cc80a3a22ffd7c60909d0febed1c","9a922ed188aa3276a02d02682910ee16a8f55778479866809bb31fb27ca69685","ddd9c986bdf8544f0820dfd089517ced9e156d4eb04b67133e98915a1587f772","96b8feb4bf414bafaefefcdb8f6800a52d37f8dd119a3e9e10ce7b449e8df2ff","5d86bc849a31c45293d00ba65f1ded267f2190da8cb697857e91a52bf257f61c","a84742a0a3631caffa9fa88f9b0b7a7c734f1eff94cfef2204b28235635d5112","4728fb06e16c721ff1c9aab48c8806717312fe7f8b231d61f7831696fbefcc94","5324462bb92fb6ae96818cdb029f7f52c4f084597684a8cf259a1987d9811a07","3ba07fff151d09b86f61669be488396c262c16c348e18488c5f2330e7d0342b0","b765a494b8d25b5a4eef3f7e19783bc1d947e837107b6e78339b3cf6398fe38e","96b49a9de749afcf92b5bce1d8cc42cfae6816cdf5ea36584fd9256b8b2e5292","357d034190d5cc5c266c75555d5cb3bb292f93cbac32065ece021ddc9d7d91ed","430734a56295be33efe847f698c1b2fb79022b6df80b40026acf82d63b8c86a2","4ba8d26292a2c39b0fec0b17d38a81fbb0927c0a3c91d1875461cfcd1f65e6b9","f62d9734a99f146b6d7b4b8930ea6520540b473d836ddbe867d9621c6b28405c","e918f9225d0673b7d3f4ef93cce434525852a19503a8ac09b0cf4ca8c9c6b2b9","d62ae5c1b6563f1dd3b018fb19db1c8561dcd8f2caeb9eae8a1a0b68a775d46b","698d5aac0597f8fd4ee2fad488d313ce81c5bb5be2646c6a4a10f21eb77b4694","d8c170966417eface5e75a3f06a7c37e6044c837fa19a8b6d3c5ad7394a46ad2","cd65c407470b249f49d6a289eefbb54096196a5b5138ee322a10b9059393349c","7d4c36cfc48eb69f9229759d0af49ac39cbc0b6b3af1fecda3e91b8cfa004d5f","ff7868e2791c5503cdf563fca52aeb98c2225ac1adaf0cbdd332b9ce2ea567c8","cef101ccd2ef143e701ea225e595b781eab40d8592120c31741e009b8475ca2e","7d3d38cf16ff534fd26953fc48838321902a4cf66715a7f150e9955dd35feaf4","60d7b44277bde760af8ca1c3c1042ef476687abfb59daaa5cb65249e320f1a10","88600d460c97e29f21c9fd07eff75c03bd01a963a40a1447c93fcd4c58a6d6a5","06ee6d29c1bae8f30c9a1d4fed554bba52f2459b5859637c5556438fb9a0b5be","20ee941925aeed2eb219f0acf0f5dea511fa085951a2a993b53dd310f4f1e477","a6ca36cd95d8774c7d3765d425fc8ab89a8c977ac495408d2ad997fbe697bd57","a21b56480277184c87a55dc48b2980cea7b0e01e15037c79e1cc26cdcbdcfe5c","eeb62e40165f251c3abb06c45908c0e38b56fa739faedc27c5e056b2897041f9","564bc1cd1794d1ac395f4a608c33ec7ac9ec4434aa6c6306be64af0222e0deb4","aaca5c9dd91047a4fb74a022bdb37979f22795767b062ba984a7cf4d76e93155","7ce610fb5a07d9ce89e209941fd334767dd70aa2493fcc03f5a9a8dece6c8243","703e1fc97b9007d9343ecfa57e38c2d3a293d0fdfd541e31e1af22f3767330ed",{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},{"version":"09f93eb1a5f70b195569f58a3d7852d64e3b293d773cd35f332079efc75ded56","affectsGlobalScope":true},"be31c3317fe12e1f3726e00422ee332bebd6efc0261cac566582802eb8715cbb","7acd44106f898821bcbebff9813000576d338b9461b7f28d12bd74d9e8108a39","7197a8960376471722aaf50a7fe75d44e39e149a701567f66e9af2ed977fab7b","ce0aa16b579972d9da970ae2ee6c2666a0280351c5820124b1ea09aa9381b5aa","9a10439ce132d4f650d17564c408bcad6617081d54cd1c9723a109dad8568ce2","03648936cd13eec6982836a87dee4cf481f85c6ffff7948824e5c09aad366250","ca866a32fafce03faf07289759cf3a45943689875eb43144a8fbe4afe5c33384","62ebca9802d16ac3ee1982871f269da13f65d5d741e52e2310132f277463aead","fe56c408e0e46dfac3e52cf7499d90b4d47ddce5c022368e52f3b36b9eb71dbe","a6970337b6efac95c78f105b7a728f3d248ea09cfc2f24840820fb6bdb2977f0","6bd6f03490f99fab45426282d1bfcc7910d696c6ca55f30bd20dc34546a584fc","4619b6efacef6894c0d59e0aa99c12688c8b1ddf0392f319ba9473e30b36495a","946519c8965f53045b495de62168ad26613fef364918b032fe0e13568130c546","a08d9e1ab62ae0408e71f060bcc5547c311fc8d336e89c365ceb6ae0ca48468a","73852d9fe02ad31a96356a0fdf650a7150d6f2a8bae9da2eb6f624dd3bac93a2","c76dbe863b05c49ca4ddd103e44aa24983dd6630b1fc4366d71bd8864c7da539","79df7b5ddf96977f9df768f8022ad69c5eddfbf6837a06b59e66d4b906d302c9","3f12148ba1cd1a366fd92398040ee83b60d41206e95003accb5df721a5dafae9","b2d331d8b0aeb87453995ba703762d2d8d715f7c5a23bff5a9f69f6489fdffc8","94fa872ac9fef40dc317bdae42415da2b3a2069bda4fae381034140369af751f",{"version":"745456954d9f4a5054c30b0da14049719a97ed6d9aa819cdc0d3e68f768b0bcb","affectsGlobalScope":true},{"version":"31b90311d2c4ea7ef010df2f0639b2cdebad655ee4e709218cc4b0269b36fb0c","affectsGlobalScope":true},"c9f092fa413eb709080f1494dcbb4a18757e84eb5d2b8bb0cc84f73d84a70dd7","b6167e00019a8db27428651c58358d8cfac239107f25744e608816ed04361df7","1320ee42b30487cceb6da9f230354fc34826111f76bf12f0ad76c717c12625b0","b6e83cdeca61289e5ffd770e55ed035babdffadd87d1ffa42b03e9fe8411333f",{"version":"84515d6e021bcbce12d5f6e14f577f0004c5ec4d56f8ab21e26c081bbdfe659c","affectsGlobalScope":true},"3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","9a6d65d77455efaaaeff945bea30c38b8fe0922b807ba45cd23792392f1bfe76","ef6cede608fc396d0ad86d0240c40989a080c6a4c5b2ac5c84072c7e0ff2942e","3169db033165677f1d414baf0c82ba27801089ca1b66d97af464512a47df31b5"],"options":{"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":false,"inlineSourceMap":true,"inlineSources":true,"jsx":2,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":false,"noImplicitReturns":false,"noImplicitThis":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"strictNullChecks":false,"target":5},"fileIdsList":[[136,137,138,151,444,455],[454,455,456,461],[156,232,260,271,445,455],[151,156,232,376,445,454,455,463,477],[156,205,210,232,454,455,457,458,459],[156,205,232,260,262,265,271],[136,156,232,272,273],[136,156,210,273,445,446,448,455],[156,232,272],[156,270],[151,156,261],[136,156,205,232,272,273,274,445],[156,232],[136,156,232,445,454,455,466],[136,156,275,458],[136,151,376,445,454,455,463],[41,50,241,261,454],[41,50,136,151,241,261,444,454,456,469],[136,455],[136,151,261,376,445,449,451,452,454,455],[136,151,376,455],[136,205,376,442,455],[136,151,205,273,279,280,281,282,376,442,443,444,454,455],[136,151,156,158,205,376,445,448,451,452,453,454,455,456,461,462,464,465,468,469,470,472,474,479,480,482,483,491],[136,277],[77,118,127,136],[376],[136,156,454,455,473],[136,156,454,455,478],[136,156,454,455,460],[136,156,454,455,467],[280,445],[136,445,451,454,456],[136,444,445,447,448,455,461,468],[136,275,277,279,454],[278,487],[484,485,486],[136,454,455,480],[156,232,445,454,455],[136,156,445,448,454,455,472,484,485],[488,490],[151,277,454,455,457],[489],[136,151,158,205,241,445,448,453,455,456],[447],[151,205,211,272],[136,205,273,445,455],[136,205,275,278,445,454,455],[49,50,136,151,156,157,158,376,444,454],[63,136,151,158,282,376,442,450,454,455,463,480,481],[136,282,376,442,443,444,455],[32,41,136,158,376,443,450,455],[403,404],[415],[414,415,416,417,418,419,420,421,422,423,424,425,426],[383],[383,403,404,415],[383,415],[406,407,408,409,410,411],[383,403,404,406,407,408,410],[383,405,406],[402,403,404],[403,404,411],[383,409],[432],[383,442],[403,404,412,442],[384,413,431,432,436,437,440,441],[428,429,430],[383,402,403,404,428,442],[402,403,429,442],[383,427,429],[403,404,413,431,432,433,436,437,440],[434,435],[402,403,431,434,442],[383,402,403,404,431,442],[427,432],[438,439],[402,403,438,442],[383,402,403,404,442],[233,234,235],[234,235,236,237,240],[237,238,239],[233,234],[233],[233,234,236],[234,238],[233,234,235,236,237],[266],[268,269],[156,266],[156,266,267],[156],[206,207,208,209],[156,206],[156,241,242],[156,241,245],[251,252,253,254,255,256,257,258],[156,241],[242,243,246,247,248,249,250,259],[263],[156,263,264],[241,353,358,371],[233,283],[233,283,284,285,286,287],[233,238,241,376],[289,353],[233,283,354,355,359,360],[233,354],[233,353,354,358],[233,288,361,362,363,364,365,366,367,368,369,370],[233,241],[32,74,233,283,289,353,362],[373,374],[233,241,283,289,361,371,372,375],[386],[385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401],[377,378,379,380,381,382],[402,403],[100,136,471],[136,276],[79],[78],[136],[83],[81,136],[41,82,136],[81,82],[92],[92,136],[41,85,86,87,88,89,90,91,92,136],[74,75,76,77,80,84,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135],[32,136],[136,276,471],[100,136,276],[471],[74],[499],[156,497],[501],[139,141,142,143,144,145,146,147,148,149,150,151],[139,140,142,143,144,145,146,147,148,149,150,151],[140,141,142,143,144,145,146,147,148,149,150,151],[139,140,141,143,144,145,146,147,148,149,150,151],[139,140,141,142,144,145,146,147,148,149,150,151],[139,140,141,142,143,145,146,147,148,149,150,151],[139,140,141,142,143,144,146,147,148,149,150,151],[139,140,141,142,143,144,145,147,148,149,150,151],[139,140,141,142,143,144,145,146,148,149,150,151],[139,140,141,142,143,144,145,146,147,149,150,151],[139,140,141,142,143,144,145,146,147,148,150,151],[139,140,141,142,143,144,145,146,147,148,149,151],[139,140,141,142,143,144,145,146,147,148,149,150],[71,72],[40,41,48,57],[32,40,48],[64],[36,41,49],[57],[38,40,48],[40],[40,42,57,63],[41],[48,57,63],[40,41,43,48,57,60,63],[43,60,63],[73],[63],[38,40,57],[30],[62],[55,64,66],[48],[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70],[54],[40,42,57,63,66],[476],[153,154,155,475],[152,153,154,155],[153,156,244],[40,43,45,48,57,60,63,68,74],[41,74],[212,213,214,215,216,217,218,219,220,221],[222,224,226,227,229,230,231],[223,227,228],[223],[156,225],[225],[204],[164,204],[159,204],[159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203],[356,357],[290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,309,310,312,314,315,316,317,318,319,320,321,322,323,324,325,326,327,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352],[290,292,297],[292,329],[291,296],[290,291,292,293,294,295],[291,292,293,296,329],[290,292,296,297],[356],[291,292,296],[296],[296,336],[290,291,292,296],[291,292,293,296],[291,292],[290,291,292,296,297],[292,328],[290,291,292,297],[353],[290,291,305],[290,291,304],[313],[306,307],[308],[306],[290,291,305,306],[290,291,304,305,307],[311],[290,291,306,307],[290,291,292,293,296],[290,291],[291],[290,296]],"referencedMap":[[456,1],[462,2],[473,3],[478,4],[460,5],[272,6],[458,7],[447,8],[459,9],[271,10],[262,11],[446,12],[274,13],[467,14],[466,15],[464,16],[465,17],[470,18],[282,19],[453,20],[452,21],[443,22],[445,23],[492,24],[494,25],[493,26],[496,27],[474,28],[479,29],[461,30],[468,31],[281,32],[483,33],[469,34],[278,35],[488,36],[487,37],[485,38],[484,39],[486,40],[491,41],[489,42],[490,43],[454,44],[448,45],[273,46],[275,47],[279,48],[455,49],[482,50],[480,51],[451,52],[414,53],[416,54],[427,55],[418,56],[421,57],[422,58],[425,56],[412,59],[411,60],[407,61],[409,62],[406,63],[408,63],[410,64],[433,65],[384,66],[413,67],[442,68],[431,69],[429,70],[430,71],[428,72],[441,73],[436,74],[435,75],[434,76],[437,77],[440,78],[439,79],[438,80],[236,81],[241,82],[240,83],[235,84],[234,85],[237,86],[239,87],[238,88],[267,89],[270,90],[269,91],[268,92],[206,93],[210,94],[207,95],[209,95],[208,95],[247,96],[248,96],[246,97],[251,93],[257,93],[259,98],[258,93],[252,93],[256,93],[255,93],[254,93],[253,93],[243,99],[250,93],[242,99],[249,99],[260,100],[264,101],[265,102],[372,103],[369,85],[284,104],[285,85],[286,85],[288,105],[287,106],[370,85],[354,107],[360,85],[361,108],[355,109],[359,110],[371,111],[362,112],[363,113],[364,104],[365,85],[366,85],[367,85],[368,85],[375,114],[376,115],[387,116],[388,116],[389,116],[390,116],[391,116],[402,117],[392,116],[393,116],[394,116],[395,116],[396,116],[397,116],[398,116],[400,116],[401,116],[383,118],[404,119],[276,120],[277,121],[80,122],[79,123],[78,124],[84,125],[82,126],[81,127],[83,128],[93,129],[86,130],[85,130],[87,129],[89,130],[88,130],[91,129],[92,131],[136,132],[75,124],[94,124],[95,133],[98,124],[100,134],[99,124],[101,124],[102,124],[103,124],[104,124],[105,124],[107,124],[108,124],[109,124],[110,124],[111,124],[112,124],[113,124],[115,124],[114,124],[116,124],[118,124],[117,124],[119,124],[120,124],[121,124],[122,124],[124,124],[125,124],[126,124],[128,124],[76,124],[129,124],[127,124],[130,124],[132,124],[133,124],[135,124],[134,124],[471,135],[472,136],[497,137],[500,138],[499,139],[502,140],[244,93],[140,141],[141,142],[139,143],[142,144],[143,145],[144,146],[145,147],[146,148],[147,149],[148,150],[149,151],[150,152],[151,153],[506,140],[73,154],[32,155],[33,156],[34,157],[35,158],[36,159],[37,160],[39,161],[40,161],[41,162],[42,163],[43,164],[44,165],[45,166],[74,167],[46,161],[47,168],[48,169],[51,170],[52,171],[55,161],[56,172],[57,161],[60,173],[71,174],[62,173],[63,175],[65,159],[67,176],[68,159],[157,93],[477,177],[476,178],[507,93],[156,179],[245,180],[481,181],[261,182],[449,27],[222,183],[214,93],[216,93],[230,93],[232,184],[229,185],[224,186],[231,93],[226,187],[223,93],[228,188],[227,186],[176,189],[175,189],[177,189],[178,189],[166,189],[181,190],[184,189],[185,189],[188,189],[165,189],[164,189],[189,189],[193,189],[167,189],[160,191],[169,189],[170,189],[171,189],[172,189],[173,189],[174,189],[204,192],[205,189],[195,189],[196,189],[197,189],[198,189],[200,189],[199,189],[168,189],[201,189],[159,189],[266,93],[358,193],[353,194],[303,195],[301,195],[328,196],[316,197],[296,198],[326,197],[327,197],[330,199],[331,197],[298,200],[332,197],[357,201],[356,202],[333,197],[334,197],[335,197],[336,203],[337,204],[338,197],[294,197],[339,197],[340,197],[341,203],[342,197],[343,197],[344,205],[345,197],[346,199],[347,197],[295,197],[348,197],[349,197],[350,206],[293,207],[299,208],[329,209],[302,210],[351,211],[304,212],[305,213],[314,214],[313,215],[309,216],[308,215],[310,217],[307,218],[306,219],[312,220],[311,217],[315,221],[297,222],[292,223],[290,224],[291,225],[320,203],[317,224]],"exportedModulesMap":[[456,1],[462,2],[473,3],[478,4],[460,5],[272,6],[458,7],[447,8],[459,9],[271,10],[262,11],[446,12],[274,13],[467,14],[466,15],[464,16],[465,17],[470,18],[282,19],[453,20],[452,21],[443,22],[445,23],[492,24],[494,25],[493,26],[496,27],[474,28],[479,29],[461,30],[468,31],[281,32],[483,33],[469,34],[278,35],[488,36],[487,37],[485,38],[484,39],[486,40],[491,41],[489,42],[490,43],[454,44],[448,45],[273,46],[275,47],[279,48],[455,49],[482,50],[480,51],[451,52],[414,53],[416,54],[427,55],[418,56],[421,57],[422,58],[425,56],[412,59],[411,60],[407,61],[409,62],[406,63],[408,63],[410,64],[433,65],[384,66],[413,67],[442,68],[431,69],[429,70],[430,71],[428,72],[441,73],[436,74],[435,75],[434,76],[437,77],[440,78],[439,79],[438,80],[236,81],[241,82],[240,83],[235,84],[234,85],[237,86],[239,87],[238,88],[267,89],[270,90],[269,91],[268,92],[206,93],[210,94],[207,95],[209,95],[208,95],[247,96],[248,96],[246,97],[251,93],[257,93],[259,98],[258,93],[252,93],[256,93],[255,93],[254,93],[253,93],[243,99],[250,93],[242,99],[249,99],[260,100],[264,101],[265,102],[372,103],[369,85],[284,104],[285,85],[286,85],[288,105],[287,106],[370,85],[354,107],[360,85],[361,108],[355,109],[359,110],[371,111],[362,112],[363,113],[364,104],[365,85],[366,85],[367,85],[368,85],[375,114],[376,115],[387,116],[388,116],[389,116],[390,116],[391,116],[402,117],[392,116],[393,116],[394,116],[395,116],[396,116],[397,116],[398,116],[400,116],[401,116],[383,118],[404,119],[276,120],[277,121],[80,122],[79,123],[78,124],[84,125],[82,126],[81,127],[83,128],[93,129],[86,130],[85,130],[87,129],[89,130],[88,130],[91,129],[92,131],[136,132],[75,124],[94,124],[95,133],[98,124],[100,134],[99,124],[101,124],[102,124],[103,124],[104,124],[105,124],[107,124],[108,124],[109,124],[110,124],[111,124],[112,124],[113,124],[115,124],[114,124],[116,124],[118,124],[117,124],[119,124],[120,124],[121,124],[122,124],[124,124],[125,124],[126,124],[128,124],[76,124],[129,124],[127,124],[130,124],[132,124],[133,124],[135,124],[134,124],[471,135],[472,136],[497,137],[500,138],[499,139],[502,140],[244,93],[140,141],[141,142],[139,143],[142,144],[143,145],[144,146],[145,147],[146,148],[147,149],[148,150],[149,151],[150,152],[151,153],[506,140],[73,154],[32,155],[33,156],[34,157],[35,158],[36,159],[37,160],[39,161],[40,161],[41,162],[42,163],[43,164],[44,165],[45,166],[74,167],[46,161],[47,168],[48,169],[51,170],[52,171],[55,161],[56,172],[57,161],[60,173],[71,174],[62,173],[63,175],[65,159],[67,176],[68,159],[157,93],[477,177],[476,178],[507,93],[156,179],[245,180],[481,181],[261,182],[449,27],[222,183],[214,93],[216,93],[230,93],[232,184],[229,185],[224,186],[231,93],[226,187],[223,93],[228,188],[227,186],[176,189],[175,189],[177,189],[178,189],[166,189],[181,190],[184,189],[185,189],[188,189],[165,189],[164,189],[189,189],[193,189],[167,189],[160,191],[169,189],[170,189],[171,189],[172,189],[173,189],[174,189],[204,192],[205,189],[195,189],[196,189],[197,189],[198,189],[200,189],[199,189],[168,189],[201,189],[159,189],[266,93],[358,193],[353,194],[303,195],[301,195],[328,196],[316,197],[296,198],[326,197],[327,197],[330,199],[331,197],[298,200],[332,197],[357,201],[356,202],[333,197],[334,197],[335,197],[336,203],[337,204],[338,197],[294,197],[339,197],[340,197],[341,203],[342,197],[343,197],[344,205],[345,197],[346,199],[347,197],[295,197],[348,197],[349,197],[350,206],[293,207],[299,208],[329,209],[302,210],[351,211],[304,212],[305,213],[314,214],[313,215],[309,216],[308,215],[310,217],[307,218],[306,219],[312,220],[311,217],[315,221],[297,222],[292,223],[290,224],[291,225],[320,203],[317,224]],"semanticDiagnosticsPerFile":[[456,[{"file":"../lib/code-manager.ts","start":2921,"length":13,"code":2339,"category":1,"messageText":"Property 'getScopeChain' does not exist on type 'ScopeDescriptor'."},{"file":"../lib/code-manager.ts","start":4756,"length":15,"code":2339,"category":1,"messageText":"Property 'tokenizedBuffer' does not exist on type 'TextEditor'."},{"file":"../lib/code-manager.ts","start":8834,"length":9,"code":2339,"category":1,"messageText":"Property 'getHeight' does not exist on type 'TextEditorElement'."}]],462,473,[478,[{"file":"../lib/components/kernel-monitor.tsx","start":5678,"length":11,"code":2339,"category":1,"messageText":"Property 'displayName' does not exist on type '({ store }: { store: Store; }) => Element'."}]],460,[272,[{"file":"../lib/components/result-view/display.tsx","start":531,"length":5,"code":2741,"category":1,"messageText":"Property 'data' is missing in type '{}' but required in type 'Pick'.","relatedInformation":[{"file":"../node_modules/@nteract/transform-vega/lib/index.d.ts","start":186,"length":4,"messageText":"'data' is declared here.","category":3,"code":2728}]},{"file":"../lib/components/result-view/display.tsx","start":545,"length":5,"code":2741,"category":1,"messageText":"Property 'data' is missing in type '{}' but required in type 'Pick'.","relatedInformation":[{"file":"../node_modules/@nteract/transform-vega/lib/index.d.ts","start":186,"length":4,"messageText":"'data' is declared here.","category":3,"code":2728}]},{"file":"../lib/components/result-view/display.tsx","start":559,"length":5,"code":2741,"category":1,"messageText":"Property 'data' is missing in type '{}' but required in type 'Pick'.","relatedInformation":[{"file":"../node_modules/@nteract/transform-vega/lib/index.d.ts","start":186,"length":4,"messageText":"'data' is declared here.","category":3,"code":2728}]},{"file":"../lib/components/result-view/display.tsx","start":573,"length":5,"code":2741,"category":1,"messageText":"Property 'data' is missing in type '{}' but required in type 'Pick'.","relatedInformation":[{"file":"../node_modules/@nteract/transform-vega/lib/index.d.ts","start":186,"length":4,"messageText":"'data' is declared here.","category":3,"code":2728}]},{"file":"../lib/components/result-view/display.tsx","start":602,"length":9,"code":2741,"category":1,"messageText":"Property 'data' is missing in type '{}' but required in type 'Pick'.","relatedInformation":[{"file":"../node_modules/@nteract/transform-vega/lib/index.d.ts","start":186,"length":4,"messageText":"'data' is declared here.","category":3,"code":2728}]},{"file":"../lib/components/result-view/display.tsx","start":620,"length":9,"code":2741,"category":1,"messageText":"Property 'data' is missing in type '{}' but required in type 'Pick'.","relatedInformation":[{"file":"../node_modules/@nteract/transform-vega/lib/index.d.ts","start":186,"length":4,"messageText":"'data' is declared here.","category":3,"code":2728}]},{"file":"../lib/components/result-view/display.tsx","start":638,"length":9,"code":2741,"category":1,"messageText":"Property 'data' is missing in type '{}' but required in type 'Pick'.","relatedInformation":[{"file":"../node_modules/@nteract/transform-vega/lib/index.d.ts","start":186,"length":4,"messageText":"'data' is declared here.","category":3,"code":2728}]},{"file":"../lib/components/result-view/display.tsx","start":656,"length":9,"code":2741,"category":1,"messageText":"Property 'data' is missing in type '{}' but required in type 'Pick'.","relatedInformation":[{"file":"../node_modules/@nteract/transform-vega/lib/index.d.ts","start":186,"length":4,"messageText":"'data' is declared here.","category":3,"code":2728}]},{"file":"../lib/components/result-view/display.tsx","start":1538,"length":8,"code":2322,"category":1,"messageText":{"messageText":"Type '{ children: Element; expanded: true; }' is not assignable to type 'IntrinsicAttributes & Pick, \"children\"> & Partial, \"output\" | \"output_type\">> & Partial<...>'.","category":1,"code":2322,"next":[{"messageText":"Property 'expanded' does not exist on type 'IntrinsicAttributes & Pick, \"children\"> & Partial, \"output\" | \"output_type\">> & Partial<...>'.","category":1,"code":2339}]}},{"file":"../lib/components/result-view/display.tsx","start":1606,"length":8,"code":2322,"category":1,"messageText":{"messageText":"Type '{ children: Element; expanded: true; }' is not assignable to type 'IntrinsicAttributes & Pick & Partial> & Partial>'.","category":1,"code":2322,"next":[{"messageText":"Property 'expanded' does not exist on type 'IntrinsicAttributes & Pick & Partial> & Partial>'.","category":1,"code":2339}]}},{"file":"../lib/components/result-view/display.tsx","start":1671,"length":8,"code":2769,"category":1,"messageText":{"messageText":"No overload matches this call.","category":1,"code":2769,"next":[{"messageText":"Overload 1 of 2, '(props: Props | Readonly): StreamText', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Type '{ expanded: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Pick & Readonly<{ children?: ReactNode; }>, \"children\"> & Partial<...> & Partial<...>'.","category":1,"code":2322,"next":[{"messageText":"Property 'expanded' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Pick & Readonly<{ children?: ReactNode; }>, \"children\"> & Partial<...> & Partial<...>'.","category":1,"code":2339}]}]},{"messageText":"Overload 2 of 2, '(props: Props, context: any): StreamText', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Type '{ expanded: true; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Pick & Readonly<{ children?: ReactNode; }>, \"children\"> & Partial<...> & Partial<...>'.","category":1,"code":2322,"next":[{"messageText":"Property 'expanded' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes & Pick & Readonly<{ children?: ReactNode; }>, \"children\"> & Partial<...> & Partial<...>'.","category":1,"code":2339}]}]}]},"relatedInformation":[]},{"file":"../lib/components/result-view/display.tsx","start":1710,"length":8,"code":2769,"category":1,"messageText":{"messageText":"No overload matches this call.","category":1,"code":2769,"next":[{"messageText":"Overload 1 of 2, '(props: Omit, never> & Partial, never>>, \"theme\"> & { theme?: any; } & { as?: never; forwardedAs?: never; }): ReactElement<...>', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Type '{ expanded: true; }' is not assignable to type 'IntrinsicAttributes & Omit, never> & Partial, never>>, \"theme\"> & { ...; } & { ...; }'.","category":1,"code":2322,"next":[{"messageText":"Property 'expanded' does not exist on type 'IntrinsicAttributes & Omit, never> & Partial, never>>, \"theme\"> & { ...; } & { ...; }'.","category":1,"code":2339}]}]},{"messageText":"Overload 2 of 2, '(props: StyledComponentPropsWithAs<(props: Partial) => Element, any, {}, never, (props: Partial) => Element>): ReactElement<...>', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Type '{ expanded: true; }' is not assignable to type 'IntrinsicAttributes & Omit, never> & Partial, never>>, \"theme\"> & { ...; } & { ...; }'.","category":1,"code":2322,"next":[{"messageText":"Property 'expanded' does not exist on type 'IntrinsicAttributes & Omit, never> & Partial, never>>, \"theme\"> & { ...; } & { ...; }'.","category":1,"code":2339}]}]}]},"relatedInformation":[]}]],458,[447,[{"file":"../lib/components/result-view/index.tsx","start":1329,"length":15,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'number[]' is not assignable to parameter of type 'PointLike'.","category":1,"code":2345,"next":[{"messageText":"Type 'number[]' is missing the following properties from type 'PointLike': row, column","category":1,"code":2739}]}},{"file":"../lib/components/result-view/index.tsx","start":1445,"length":8,"code":2339,"category":1,"messageText":"Property 'getWidth' does not exist on type 'TextEditorElement'."},{"file":"../lib/components/result-view/index.tsx","start":1463,"length":39,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ lineLength: number; lineHeight: number; editorWidth: any; charWidth: any; }' is not assignable to parameter of type '{ lineHeight?: number; lineLength?: number; editorWidth?: number; }'.","category":1,"code":2345,"next":[{"messageText":"Object literal may only specify known properties, and 'charWidth' does not exist in type '{ lineHeight?: number; lineLength?: number; editorWidth?: number; }'.","category":1,"code":2353}]}},{"file":"../lib/components/result-view/index.tsx","start":1481,"length":19,"code":2339,"category":1,"messageText":"Property 'getDefaultCharWidth' does not exist on type 'TextEditor'."},{"file":"../lib/components/result-view/index.tsx","start":1736,"length":2,"code":2339,"category":1,"messageText":"Property 'id' does not exist on type 'DisplayMarker'."},{"file":"../lib/components/result-view/index.tsx","start":2026,"length":8,"code":2339,"category":1,"messageText":"Property 'getWidth' does not exist on type 'TextEditorElement'."},{"file":"../lib/components/result-view/index.tsx","start":2048,"length":39,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ lineLength: number; lineHeight: number; editorWidth: any; charWidth: any; }' is not assignable to parameter of type '{ lineHeight?: number; lineLength?: number; editorWidth?: number; }'.","category":1,"code":2345,"next":[{"messageText":"Object literal may only specify known properties, and 'charWidth' does not exist in type '{ lineHeight?: number; lineLength?: number; editorWidth?: number; }'.","category":1,"code":2353}]}},{"file":"../lib/components/result-view/index.tsx","start":2066,"length":19,"code":2339,"category":1,"messageText":"Property 'getDefaultCharWidth' does not exist on type 'TextEditor'."}]],459,271,[262,[{"file":"../lib/components/result-view/plotly.tsx","start":1901,"length":230,"messageText":"Expected 3 arguments, but got 4.","category":1,"code":2554},{"file":"../lib/components/result-view/plotly.tsx","start":2055,"length":5,"code":2339,"category":1,"messageText":"Property 'Icons' does not exist on type '{ newPlot: (div: void | HTMLDivElement, data: Record, layout: FigureLayout) => void; redraw: (div?: PlotlyHTMLElement) => void; toImage: (gd: any) => Promise<...>; }'."},{"file":"../lib/components/result-view/plotly.tsx","start":2912,"length":25,"code":2739,"category":1,"messageText":"Type 'Record' is missing the following properties from type 'Figure': data, layout"}]],446,274,467,466,158,[464,[{"file":"../lib/existing-kernel-picker.ts","start":2384,"length":17,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'ISpecModel | KernelspecMetadata' is not assignable to parameter of type 'KernelspecMetadata'.","category":1,"code":2345,"next":[{"messageText":"Type 'ISpecModel' is not assignable to type 'KernelspecMetadata'.","category":1,"code":2322,"next":[{"messageText":"Types of property 'env' are incompatible.","category":1,"code":2326,"next":[{"messageText":"Type 'JSONObject' is not assignable to type '{ [variable: string]: string; }'.","category":1,"code":2322,"next":[{"messageText":"Index signatures are incompatible.","category":1,"code":2330,"next":[{"messageText":"Type 'JSONValue' is not assignable to type 'string'.","category":1,"code":2322,"next":[{"messageText":"Type 'number' is not assignable to type 'string'.","category":1,"code":2322}]}]}]}]}]}]}}]],465,444,[470,[{"file":"../lib/import-notebook.ts","start":358,"length":4,"messageText":"Module '\"@nteract/commutable\"' has no exported member 'Cell'.","category":1,"code":2305},{"file":"../lib/import-notebook.ts","start":4949,"length":4,"code":2339,"category":1,"messageText":{"messageText":"Property 'toJS' does not exist on type 'object | JSONObject'.","category":1,"code":2339,"next":[{"messageText":"Property 'toJS' does not exist on type 'object'.","category":1,"code":2339}]}},{"file":"../lib/import-notebook.ts","start":4980,"length":4,"code":2339,"category":1,"messageText":{"messageText":"Property 'toJS' does not exist on type 'object | JSONObject'.","category":1,"code":2339,"next":[{"messageText":"Property 'toJS' does not exist on type 'object'.","category":1,"code":2339}]}},{"file":"../lib/import-notebook.ts","start":7591,"length":9,"code":2339,"category":1,"messageText":"Property 'fileTypes' does not exist on type 'Grammar'."}]],282,453,452,443,445,[492,[{"file":"../lib/main.ts","start":7242,"length":11,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '(uri: string) => Promise' is not assignable to parameter of type '(uri: string, options?: WorkspaceOpenOptions) => ViewModel'.","category":1,"code":2345,"next":[{"messageText":"Property 'getTitle' is missing in type 'Promise' but required in type 'ViewModel'.","category":1,"code":2741}]},"relatedInformation":[{"file":"../node_modules/@types/atom/src/view-registry.d.ts","start":1216,"length":8,"messageText":"'getTitle' is declared here.","category":3,"code":2728}]}]],494,493,495,496,474,479,461,468,[281,[{"file":"../lib/plugin-api/hydrogen-kernel.ts","start":2196,"length":14,"code":2339,"category":1,"messageText":"Property 'connectionFile' does not exist on type 'KernelTransport'."},{"file":"../lib/plugin-api/hydrogen-kernel.ts","start":2242,"length":14,"code":2339,"category":1,"messageText":"Property 'connectionFile' does not exist on type 'KernelTransport'."}]],483,280,469,278,488,487,485,484,486,491,[489,[{"file":"../lib/services/provided/autocomplete.ts","start":5832,"length":28,"code":2322,"category":1,"messageText":{"messageText":"Type '{ enabled: any; selector: string; disableForSelector: string; inclusionPriority: number; suggestionPriority: any; excludeLowerPriority: boolean; suggestionDetailsEnabled: any; getSuggestions({ editor, bufferPosition, prefix }: { ...; }): Promise<...>; getSuggestionDetailsOnSelect({ text, replacementPrefix, replacedT...' is not assignable to type 'AutocompleteProvider'.","category":1,"code":2322,"next":[{"messageText":"The types returned by 'getSuggestions(...)' are incompatible between these types.","category":1,"code":2201,"next":[{"messageText":"Type 'Promise' is not assignable to type 'Suggestions | Promise'.","category":1,"code":2322,"next":[{"messageText":"Type 'Promise' is not assignable to type 'Promise'.","category":1,"code":2322,"next":[{"messageText":"Type '{}' is missing the following properties from type 'AnySuggestion[]': length, pop, push, concat, and 26 more.","category":1,"code":2740}]}]}]}]}}]],490,[454,[{"file":"../lib/store/index.ts","start":2251,"length":32,"code":4104,"category":1,"messageText":"The type 'readonly PropertyKey[]' is 'readonly' and cannot be assigned to the mutable type 'string[]'."},{"file":"../lib/store/index.ts","start":5431,"length":3,"code":2339,"category":1,"messageText":{"messageText":"Property 'set' does not exist on type 'Kernel | KernelMap'.","category":1,"code":2339,"next":[{"messageText":"Property 'set' does not exist on type 'Kernel'.","category":1,"code":2339}]}},{"file":"../lib/store/index.ts","start":9140,"length":14,"code":2339,"category":1,"messageText":"Property 'hydrogen_store' does not exist on type 'Window & typeof globalThis'."}]],[448,[{"file":"../lib/store/markers.ts","start":639,"length":2,"code":2339,"category":1,"messageText":"Property 'id' does not exist on type 'DisplayMarker'."}]],273,275,279,[455,[{"file":"../lib/utils.tsx","start":1840,"length":4,"code":2339,"category":1,"messageText":{"messageText":"Property 'show' does not exist on type 'Dock | WorkspaceCenter'.","category":1,"code":2339,"next":[{"messageText":"Property 'show' does not exist on type 'WorkspaceCenter'.","category":1,"code":2339}]}},{"file":"../lib/utils.tsx","start":2247,"length":4,"code":2339,"category":1,"messageText":{"messageText":"Property 'show' does not exist on type 'Dock | WorkspaceCenter'.","category":1,"code":2339,"next":[{"messageText":"Property 'show' does not exist on type 'WorkspaceCenter'.","category":1,"code":2339}]}},{"file":"../lib/utils.tsx","start":6741,"length":12,"code":2339,"category":1,"messageText":"Property 'languageMode' does not exist on type 'TextEditor'."},{"file":"../lib/utils.tsx","start":6845,"length":15,"code":2339,"category":1,"messageText":"Property 'tokenizedBuffer' does not exist on type 'TextEditor'."}]],[482,[{"file":"../lib/ws-kernel-picker.ts","start":8426,"length":14,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ baseUrl?: string; wsUrl?: string; withCredentials?: boolean; user?: string; password?: string; timeout?: number; token?: string; requestHeaders?: { readonly [key: string]: string; }; xhrFactory: (() => XMLHttpRequest) | (() => XMLHttpRequest); wsFactory: ((url: string, protocols?: string | string[]) => WebSocket) ...' is not assignable to parameter of type 'Partial'.","category":1,"code":2345,"next":[{"messageText":"Types of property 'wsFactory' are incompatible.","category":1,"code":2326,"next":[{"messageText":"Type '((url: string, protocols?: string | string[]) => WebSocket) | ((url: string, protocol?: string | string[]) => WebSocket)' is not assignable to type '(url: string, protocols?: string | string[]) => WebSocket'.","category":1,"code":2322,"next":[{"messageText":"Type '(url: string, protocol?: string | string[]) => ws' is not assignable to type '(url: string, protocols?: string | string[]) => WebSocket'.","category":1,"code":2322,"next":[{"messageText":"Property 'dispatchEvent' is missing in type 'import(\"C:/Users/aminy/Documents/GitHub/JavaScript/@nteract/hydrogen/node_modules/@types/ws/index\")' but required in type 'WebSocket'.","category":1,"code":2741}]}]}]}]},"relatedInformation":[{"file":"../node_modules/typescript/lib/lib.dom.d.ts","start":186005,"length":37,"messageText":"'dispatchEvent' is declared here.","category":3,"code":2728}]},{"file":"../lib/ws-kernel-picker.ts","start":9389,"length":14,"code":2345,"category":1,"messageText":"Argument of type '{ baseUrl?: string; wsUrl?: string; withCredentials?: boolean; user?: string; password?: string; timeout?: number; token?: string; requestHeaders?: { readonly [key: string]: string; }; xhrFactory: (() => XMLHttpRequest) | (() => XMLHttpRequest); wsFactory: ((url: string, protocols?: string | string[]) => WebSocket) ...' is not assignable to parameter of type 'Partial'."},{"file":"../lib/ws-kernel-picker.ts","start":10426,"length":4,"code":2339,"category":1,"messageText":{"messageText":"Property 'path' does not exist on type 'JSONValue'.","category":1,"code":2339,"next":[{"messageText":"Property 'path' does not exist on type 'string'.","category":1,"code":2339}]}},{"file":"../lib/ws-kernel-picker.ts","start":10478,"length":4,"code":2339,"category":1,"messageText":{"messageText":"Property 'path' does not exist on type 'JSONValue'.","category":1,"code":2339,"next":[{"messageText":"Property 'path' does not exist on type 'string'.","category":1,"code":2339}]}},{"file":"../lib/ws-kernel-picker.ts","start":10839,"length":11,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ name: string; model: null; options: ServerConnection.ISettings; kernelSpecs: Kernel.ISpecModel[]; }' is not assignable to parameter of type '{ name: string; model: Session.IModel; options: ServerConnection.ISettings; }'.","category":1,"code":2345,"next":[{"messageText":"Object literal may only specify known properties, and 'kernelSpecs' does not exist in type '{ name: string; model: IModel; options: ISettings; }'.","category":1,"code":2353}]}}]],[480,[{"file":"../lib/ws-kernel.ts","start":1122,"length":8,"code":2339,"category":1,"messageText":"Property 'shutdown' does not exist on type 'IKernelConnection'."}]],451,414,416,427,415,417,418,419,420,421,422,423,424,425,426,412,411,407,409,406,408,410,433,384,413,442,431,429,430,428,441,432,436,435,434,437,440,439,438,236,241,240,235,234,237,239,238,267,270,269,268,206,210,207,209,208,247,248,246,251,257,259,258,252,256,255,254,253,243,250,242,249,260,264,265,263,372,369,284,285,286,288,287,370,354,360,361,355,359,371,362,363,364,365,366,367,368,373,375,374,289,376,283,385,387,388,389,390,391,402,386,392,393,394,395,396,397,398,399,400,401,383,377,378,379,380,381,382,404,405,403,276,277,77,80,79,78,84,82,81,83,93,86,85,87,89,88,90,91,92,136,75,94,95,96,97,98,100,99,101,102,103,104,105,106,107,108,109,110,111,112,113,115,114,116,118,117,119,120,121,122,123,124,125,126,128,76,129,127,130,132,131,133,135,134,471,472,497,498,500,499,502,244,503,504,505,140,141,139,142,143,144,145,146,147,148,149,150,151,506,72,30,73,31,32,33,34,35,36,37,38,39,40,41,42,29,69,43,44,45,74,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,71,62,63,64,65,66,70,67,68,154,157,477,475,476,507,152,156,508,155,245,501,450,481,457,153,261,211,137,233,449,212,222,214,221,216,213,218,219,215,220,217,230,232,229,224,231,226,223,228,225,227,176,175,177,178,166,179,180,181,182,183,184,185,186,187,188,165,164,189,190,191,192,193,167,160,169,170,171,172,173,174,204,205,194,195,196,163,197,198,200,199,168,201,161,162,202,203,159,266,358,353,303,301,352,328,316,296,326,327,330,331,298,332,357,356,333,334,335,336,337,338,294,339,340,341,342,343,344,345,346,347,295,348,349,350,293,299,329,302,351,304,305,314,313,309,308,310,307,306,312,311,315,297,292,290,300,291,321,322,319,320,318,323,317,325,324,138,463,6,8,7,2,9,10,11,12,13,14,15,16,3,4,20,17,18,19,21,22,23,5,24,25,26,27,1,28]},"version":"4.3.2"} \ No newline at end of file diff --git a/dist/utils.d.ts b/dist/utils.d.ts deleted file mode 100644 index 96644420d..000000000 --- a/dist/utils.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TextEditor, CompositeDisposable, Point, Grammar } from "atom"; -import React from "react"; -import type { Message } from "./hydrogen"; -import type { KernelspecMetadata } from "@nteract/types"; -export declare const INSPECTOR_URI = "atom://hydrogen/inspector"; -export declare const WATCHES_URI = "atom://hydrogen/watch-sidebar"; -export declare const OUTPUT_AREA_URI = "atom://hydrogen/output-area"; -export declare const KERNEL_MONITOR_URI = "atom://hydrogen/kernel-monitor"; -export declare const NO_EXECTIME_STRING = "Not available"; -export declare function reactFactory(reactElement: React.ReactElement, any>, domElement: HTMLElement, additionalTeardown?: ((...args: Array) => any) | null | undefined, disposer?: CompositeDisposable): void; -export declare function focus(item: unknown | null | undefined): void; -export declare function openOrShowDock(URI: string): Promise; -export declare function grammarToLanguage(grammar: Grammar | null | undefined): string; -export declare function msgSpecToNotebookFormat(message: Message): Record & { - output_type: any; -}; -export declare function msgSpecV4toV5(message: Message): Message; -export declare function isMultilanguageGrammar(grammar: Grammar): boolean; -export declare const isUnsavedFilePath: (filePath: string) => boolean; -export declare function kernelSpecProvidesGrammar(kernelSpec: KernelspecMetadata, grammar: Grammar | null | undefined): boolean; -export declare function getEmbeddedScope(editor: TextEditor, position: Point): string | null | undefined; -export declare function getEditorDirectory(editor: TextEditor | null | undefined): string; -export declare function log(...message: Array): void; -export declare function hotReloadPackage(): void; -export declare function rowRangeForCodeFoldAtBufferRow(editor: TextEditor, row: number): any; -export declare const EmptyMessage: () => JSX.Element; -export declare function executionTime(message: Message): string; -export declare function js_idx_to_char_idx(js_idx: number, text: string | null): number; -export declare function char_idx_to_js_idx(char_idx: number, text: string | null): number; -export declare function setPreviouslyFocusedElement(obj: { - previouslyFocusedElement: HTMLElement | null | undefined; -}): void; -export declare type Writeable = { - -readonly [P in keyof T]: T[P]; -}; -export declare type DeepWriteable = { - -readonly [P in keyof T]: DeepWriteable; -}; diff --git a/dist/utils.js b/dist/utils.js index e495f4ed6..b0bd121c4 100644 --- a/dist/utils.js +++ b/dist/utils.js @@ -7,7 +7,7 @@ exports.setPreviouslyFocusedElement = exports.char_idx_to_js_idx = exports.js_id const atom_1 = require("atom"); const react_1 = __importDefault(require("react")); const react_dom_1 = __importDefault(require("react-dom")); -const lodash_1 = __importDefault(require("lodash")); +const findKey_1 = __importDefault(require("lodash/findKey")); const os_1 = __importDefault(require("os")); const path_1 = __importDefault(require("path")); const config_1 = __importDefault(require("./config")); @@ -60,7 +60,7 @@ function grammarToLanguage(grammar) { } const grammarLanguage = grammar.name.toLowerCase(); const mappings = config_1.default.getJson("languageMappings"); - const kernelLanguage = lodash_1.default.findKey(mappings, (l) => l.toLowerCase() === grammarLanguage); + const kernelLanguage = findKey_1.default(mappings, (l) => l.toLowerCase() === grammarLanguage); return kernelLanguage ? kernelLanguage.toLowerCase() : grammarLanguage; } exports.grammarToLanguage = grammarToLanguage; @@ -134,7 +134,7 @@ function getEmbeddedScope(editor, position) { const scopes = editor .scopeDescriptorForBufferPosition(position) .getScopesArray(); - return lodash_1.default.find(scopes, (s) => s.indexOf("source.embedded.") === 0); + return scopes.find((s) => s.indexOf("source.embedded.") === 0); } exports.getEmbeddedScope = getEmbeddedScope; function getEditorDirectory(editor) { @@ -243,4 +243,4 @@ function setPreviouslyFocusedElement(obj) { } } exports.setPreviouslyFocusedElement = setPreviouslyFocusedElement; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdXRpbHMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtCQU9jO0FBQ2Qsa0RBQTBCO0FBQzFCLDBEQUFpQztBQUNqQyxvREFBdUI7QUFDdkIsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFDOUIsb0RBQTRCO0FBSWYsUUFBQSxhQUFhLEdBQUcsMkJBQTJCLENBQUM7QUFDNUMsUUFBQSxXQUFXLEdBQUcsK0JBQStCLENBQUM7QUFDOUMsUUFBQSxlQUFlLEdBQUcsNkJBQTZCLENBQUM7QUFDaEQsUUFBQSxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxRQUFBLGtCQUFrQixHQUFHLGVBQWUsQ0FBQztBQUNsRCxTQUFnQixZQUFZLENBQzFCLFlBQWdFLEVBQ2hFLFVBQXVCLEVBQ3ZCLGtCQUFzRSxFQUN0RSxXQUFnQyxlQUFLLENBQUMsYUFBYTtJQUVuRCxtQkFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQkFBVSxDQUFDLEdBQUcsRUFBRTtRQUNyQyxtQkFBUSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxrQkFBa0IsS0FBSyxVQUFVLEVBQUU7WUFDNUMsa0JBQWtCLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBZEQsb0NBY0M7QUFDRCxTQUFnQixLQUFLLENBQUMsSUFBZ0M7SUFDcEQsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksVUFB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Q0FBQztLQUNYO0lBQ0QsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBRXRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUdyQyxJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUksU0FBUyxHQUFHLE1BQU0sRUFBRTtZQUM3QyxNQUFNLElBQUksQ0FBQyxDQUFDO1NBQ2I7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFoQkQsZ0RBZ0JDO0FBTUQsU0FBZ0IsMkJBQTJCLENBQUMsR0FFM0M7SUFDQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQzdDLElBQUksYUFBYSxZQUFZLFdBQVcsRUFBRTtRQUN4QyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsYUFBYSxDQUFDO0tBQzlDO0FBQ0gsQ0FBQztBQVBELGtFQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVGV4dEVkaXRvcixcbiAgQ29tcG9zaXRlRGlzcG9zYWJsZSxcbiAgRGlzcG9zYWJsZSxcbiAgUG9pbnQsXG4gIEdyYW1tYXIsXG4gIERvY2ssXG59IGZyb20gXCJhdG9tXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IF8gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IG9zIGZyb20gXCJvc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBDb25maWcgZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gXCIuL2h5ZHJvZ2VuXCI7XG5pbXBvcnQgdHlwZSB7IEtlcm5lbHNwZWNNZXRhZGF0YSB9IGZyb20gXCJAbnRlcmFjdC90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgSU5TUEVDVE9SX1VSSSA9IFwiYXRvbTovL2h5ZHJvZ2VuL2luc3BlY3RvclwiO1xuZXhwb3J0IGNvbnN0IFdBVENIRVNfVVJJID0gXCJhdG9tOi8vaHlkcm9nZW4vd2F0Y2gtc2lkZWJhclwiO1xuZXhwb3J0IGNvbnN0IE9VVFBVVF9BUkVBX1VSSSA9IFwiYXRvbTovL2h5ZHJvZ2VuL291dHB1dC1hcmVhXCI7XG5leHBvcnQgY29uc3QgS0VSTkVMX01PTklUT1JfVVJJID0gXCJhdG9tOi8vaHlkcm9nZW4va2VybmVsLW1vbml0b3JcIjtcbmV4cG9ydCBjb25zdCBOT19FWEVDVElNRV9TVFJJTkcgPSBcIk5vdCBhdmFpbGFibGVcIjtcbmV4cG9ydCBmdW5jdGlvbiByZWFjdEZhY3RvcnkoXG4gIHJlYWN0RWxlbWVudDogUmVhY3QuUmVhY3RFbGVtZW50PFJlYWN0LkNvbXBvbmVudFByb3BzPGFueT4sIGFueT4sXG4gIGRvbUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBhZGRpdGlvbmFsVGVhcmRvd24/OiAoKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueSkgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBkaXNwb3NlcjogQ29tcG9zaXRlRGlzcG9zYWJsZSA9IHN0b3JlLnN1YnNjcmlwdGlvbnNcbikge1xuICBSZWFjdERPTS5yZW5kZXIocmVhY3RFbGVtZW50LCBkb21FbGVtZW50KTtcbiAgY29uc3QgZGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKGRvbUVsZW1lbnQpO1xuICAgIGlmICh0eXBlb2YgYWRkaXRpb25hbFRlYXJkb3duID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGFkZGl0aW9uYWxUZWFyZG93bigpO1xuICAgIH1cbiAgfSk7XG4gIGRpc3Bvc2VyLmFkZChkaXNwb3NhYmxlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb2N1cyhpdGVtOiB1bmtub3duIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICBpZiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IGVkaXRvclBhbmUgPSBhdG9tLndvcmtzcGFjZS5wYW5lRm9ySXRlbShpdGVtKTtcbiAgICBpZiAoZWRpdG9yUGFuZSkge1xuICAgICAgZWRpdG9yUGFuZS5hY3RpdmF0ZSgpO1xuICAgIH1cbiAgfVxufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5PclNob3dEb2NrKFxuICBVUkk6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkIHwgbnVsbCB8IHVuZGVmaW5lZD4ge1xuICAvLyBhdG9tLndvcmtzcGFjZS5vcGVuKFVSSSkgd2lsbCBhY3RpdmF0ZS9mb2N1cyB0aGUgZG9jayBieSBkZWZhdWx0XG4gIC8vIGRvY2sudG9nZ2xlKCkgb3IgZG9jay5zaG93KCkgd2lsbCBsZWF2ZSBmb2N1cyB3aGVyZXZlciBpdCB3YXNcbiAgLy8gdGhpcyBmdW5jdGlvbiBpcyBiYXNpY2FsbHkgd29ya3NwYWNlLm9wZW4sIGV4Y2VwdCBpdFxuICAvLyB3aWxsIG5vdCBmb2N1cyB0aGUgbmV3bHkgb3BlbmVkIHBhbmVcbiAgbGV0IGRvY2sgPSBhdG9tLndvcmtzcGFjZS5wYW5lQ29udGFpbmVyRm9yVVJJKFVSSSk7XG5cbiAgaWYgKGRvY2sgJiYgdHlwZW9mIGRvY2suc2hvdyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgLy8gSWYgdGhlIHRhcmdldCBpdGVtIGFscmVhZHkgZXhpc3QsIGFjdGl2YXRlIGl0IGFuZCBzaG93IGRvY2tcbiAgICBjb25zdCBwYW5lID0gYXRvbS53b3Jrc3BhY2UucGFuZUZvclVSSShVUkkpO1xuICAgIGlmIChwYW5lKSB7XG4gICAgICBwYW5lLmFjdGl2YXRlSXRlbUZvclVSSShVUkkpO1xuICAgIH1cbiAgICByZXR1cm4gKGRvY2sgYXMgRG9jaykuc2hvdygpO1xuICB9XG5cbiAgYXdhaXQgYXRvbS53b3Jrc3BhY2Uub3BlbihVUkksIHtcbiAgICBzZWFyY2hBbGxQYW5lczogdHJ1ZSxcbiAgICBhY3RpdmF0ZVBhbmU6IGZhbHNlLFxuICB9KTtcbiAgZG9jayA9IGF0b20ud29ya3NwYWNlLnBhbmVDb250YWluZXJGb3JVUkkoVVJJKTtcbiAgcmV0dXJuIGRvY2sgJiYgdHlwZW9mIGRvY2suc2hvdyA9PT0gXCJmdW5jdGlvblwiID8gKGRvY2sgYXMgRG9jaykuc2hvdygpIDogbnVsbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBncmFtbWFyVG9MYW5ndWFnZShncmFtbWFyOiBHcmFtbWFyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWdyYW1tYXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBncmFtbWFyTGFuZ3VhZ2UgPSBncmFtbWFyLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgbWFwcGluZ3MgPSBDb25maWcuZ2V0SnNvbihcImxhbmd1YWdlTWFwcGluZ3NcIik7XG5cbiAgY29uc3Qga2VybmVsTGFuZ3VhZ2UgPSBfLmZpbmRLZXkoXG4gICAgbWFwcGluZ3MsXG4gICAgKGwpID0+IGwudG9Mb3dlckNhc2UoKSA9PT0gZ3JhbW1hckxhbmd1YWdlXG4gICk7XG5cbiAgcmV0dXJuIGtlcm5lbExhbmd1YWdlID8ga2VybmVsTGFuZ3VhZ2UudG9Mb3dlckNhc2UoKSA6IGdyYW1tYXJMYW5ndWFnZTtcbn1cblxuLyoqXG4gKiBDb3BpZWQgZnJvbVxuICogaHR0cHM6Ly9naXRodWIuY29tL250ZXJhY3QvbnRlcmFjdC9ibG9iL21hc3Rlci9zcmMvbm90ZWJvb2svZXBpY3MvZXhlY3V0ZS5qcyNMMzdcbiAqIENyZWF0ZSBhbiBvYmplY3QgdGhhdCBhZGhlcmVzIHRvIHRoZSBqdXB5dGVyIG5vdGVib29rIHNwZWNpZmljYXRpb24uXG4gKiBodHRwOi8vanVweXRlci1jbGllbnQucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21lc3NhZ2luZy5odG1sXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG1zZyAtIE1lc3NhZ2UgdGhhdCBoYXMgY29udGVudCB3aGljaCBjYW4gYmUgY29udmVydGVkIHRvIG5iZm9ybWF0XG4gKiBAcmV0dXJucyB7T2JqZWN0fSBGb3JtYXR0ZWRNc2cgLSBNZXNzYWdlIHdpdGggdGhlIGFzc29jaWF0ZWQgb3V0cHV0IHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1zZ1NwZWNUb05vdGVib29rRm9ybWF0KG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIG1lc3NhZ2UuY29udGVudCwge1xuICAgIG91dHB1dF90eXBlOiBtZXNzYWdlLmhlYWRlci5tc2dfdHlwZSxcbiAgfSk7XG59XG5cbi8qKiBBIHZlcnkgYmFzaWMgY29udmVydGVyIGZvciBzdXBwb3J0aW5nIGp1cHl0ZXIgbWVzc2FnaW5nIHByb3RvY29sIHY0IHJlcGxpZXMgKi9cbmV4cG9ydCBmdW5jdGlvbiBtc2dTcGVjVjR0b1Y1KG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgc3dpdGNoIChtZXNzYWdlLmhlYWRlci5tc2dfdHlwZSkge1xuICAgIGNhc2UgXCJweW91dFwiOlxuICAgICAgbWVzc2FnZS5oZWFkZXIubXNnX3R5cGUgPSBcImV4ZWN1dGVfcmVzdWx0XCI7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJweWVyclwiOlxuICAgICAgbWVzc2FnZS5oZWFkZXIubXNnX3R5cGUgPSBcImVycm9yXCI7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgXCJzdHJlYW1cIjpcbiAgICAgIGlmICghbWVzc2FnZS5jb250ZW50LnRleHQpIHtcbiAgICAgICAgbWVzc2FnZS5jb250ZW50LnRleHQgPSBtZXNzYWdlLmNvbnRlbnQuZGF0YTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIC8vIG5vIGNvbnZlcnNpb24gbmVlZGVkXG4gICAgfVxuICB9XG4gIHJldHVybiBtZXNzYWdlO1xufVxuY29uc3QgbWFya3VwR3JhbW1hcnMgPSBuZXcgU2V0KFtcbiAgXCJzb3VyY2UuZ2ZtXCIsXG4gIFwic291cmNlLmFzY2lpZG9jXCIsXG4gIFwidGV4dC5yZXN0cnVjdHVyZWR0ZXh0XCIsXG4gIFwidGV4dC50ZXgubGF0ZXgua25pdHJcIixcbiAgXCJ0ZXh0Lm1kXCIsXG4gIFwic291cmNlLndlYXZlLm5vd2ViXCIsXG4gIFwic291cmNlLndlYXZlLm1kXCIsXG4gIFwic291cmNlLndlYXZlLmxhdGV4XCIsXG4gIFwic291cmNlLndlYXZlLnJlc3RydWN0dXJlZHRleHRcIixcbiAgXCJzb3VyY2UucHdlYXZlLm5vd2ViXCIsXG4gIFwic291cmNlLnB3ZWF2ZS5tZFwiLFxuICBcInNvdXJjZS5wd2VhdmUubGF0ZXhcIixcbiAgXCJzb3VyY2UucHdlYXZlLnJlc3RydWN0dXJlZHRleHRcIixcbiAgXCJzb3VyY2UuZHluZG9jLm1kLnN0YXRhXCIsXG4gIFwic291cmNlLmR5bmRvYy5sYXRleC5zdGF0YVwiLFxuXSk7XG5leHBvcnQgZnVuY3Rpb24gaXNNdWx0aWxhbmd1YWdlR3JhbW1hcihncmFtbWFyOiBHcmFtbWFyKSB7XG4gIHJldHVybiBtYXJrdXBHcmFtbWFycy5oYXMoZ3JhbW1hci5zY29wZU5hbWUpO1xufVxuZXhwb3J0IGNvbnN0IGlzVW5zYXZlZEZpbGVQYXRoID0gKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGZpbGVQYXRoLm1hdGNoKC9VbnNhdmVkXFxzRWRpdG9yXFxzXFxkKy8pID8gdHJ1ZSA6IGZhbHNlO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBrZXJuZWxTcGVjUHJvdmlkZXNHcmFtbWFyKFxuICBrZXJuZWxTcGVjOiBLZXJuZWxzcGVjTWV0YWRhdGEsXG4gIGdyYW1tYXI6IEdyYW1tYXIgfCBudWxsIHwgdW5kZWZpbmVkXG4pIHtcbiAgaWYgKCFncmFtbWFyIHx8ICFncmFtbWFyLm5hbWUgfHwgIWtlcm5lbFNwZWMgfHwgIWtlcm5lbFNwZWMubGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBncmFtbWFyTGFuZ3VhZ2UgPSBncmFtbWFyLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qga2VybmVsTGFuZ3VhZ2UgPSBrZXJuZWxTcGVjLmxhbmd1YWdlLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKGtlcm5lbExhbmd1YWdlID09PSBncmFtbWFyTGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IG1hcHBlZExhbmd1YWdlID0gQ29uZmlnLmdldEpzb24oXCJsYW5ndWFnZU1hcHBpbmdzXCIpW2tlcm5lbExhbmd1YWdlXTtcblxuICBpZiAoIW1hcHBlZExhbmd1YWdlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBlZExhbmd1YWdlLnRvTG93ZXJDYXNlKCkgPT09IGdyYW1tYXJMYW5ndWFnZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWJlZGRlZFNjb3BlKFxuICBlZGl0b3I6IFRleHRFZGl0b3IsXG4gIHBvc2l0aW9uOiBQb2ludFxuKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHNjb3BlcyA9IGVkaXRvclxuICAgIC5zY29wZURlc2NyaXB0b3JGb3JCdWZmZXJQb3NpdGlvbihwb3NpdGlvbilcbiAgICAuZ2V0U2NvcGVzQXJyYXkoKTtcbiAgcmV0dXJuIF8uZmluZChzY29wZXMsIChzKSA9PiBzLmluZGV4T2YoXCJzb3VyY2UuZW1iZWRkZWQuXCIpID09PSAwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0b3JEaXJlY3RvcnkoZWRpdG9yOiBUZXh0RWRpdG9yIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICBpZiAoIWVkaXRvcikge1xuICAgIHJldHVybiBvcy5ob21lZGlyKCk7XG4gIH1cbiAgY29uc3QgZWRpdG9yUGF0aCA9IGVkaXRvci5nZXRQYXRoKCk7XG4gIHJldHVybiBlZGl0b3JQYXRoID8gcGF0aC5kaXJuYW1lKGVkaXRvclBhdGgpIDogb3MuaG9tZWRpcigpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxvZyguLi5tZXNzYWdlOiBBcnJheTxhbnk+KSB7XG4gIGlmIChhdG9tLmNvbmZpZy5nZXQoXCJIeWRyb2dlbi5kZWJ1Z1wiKSkge1xuICAgIGNvbnNvbGUubG9nKFwiSHlkcm9nZW46XCIsIC4uLm1lc3NhZ2UpO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaG90UmVsb2FkUGFja2FnZSgpIHtcbiAgY29uc3QgcGFja05hbWUgPSBcIkh5ZHJvZ2VuXCI7XG4gIGNvbnN0IHBhY2tQYXRoID0gYXRvbS5wYWNrYWdlcy5yZXNvbHZlUGFja2FnZVBhdGgocGFja05hbWUpO1xuICBpZiAoIXBhY2tQYXRoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHBhY2tQYXRoUHJlZml4ID0gcGFja1BhdGggKyBwYXRoLnNlcDtcbiAgY29uc3QgemVyb21xUGF0aFByZWZpeCA9XG4gICAgcGF0aC5qb2luKHBhY2tQYXRoLCBcIm5vZGVfbW9kdWxlc1wiLCBcInplcm9tcVwiKSArIHBhdGguc2VwO1xuICBsb2coYGRlYWN0aXZhdGluZyAke3BhY2tOYW1lfWApO1xuICBhdG9tLnBhY2thZ2VzLmRlYWN0aXZhdGVQYWNrYWdlKHBhY2tOYW1lKTtcbiAgYXRvbS5wYWNrYWdlcy51bmxvYWRQYWNrYWdlKHBhY2tOYW1lKTtcblxuICAvLyBEZWxldGUgcmVxdWlyZSBjYWNoZSB0byByZS1yZXF1aXJlIG9uIGFjdGl2YXRpb24uXG4gIC8vIEJ1dCBleGNlcHQgemVyb21xIG5hdGl2ZSBtb2R1bGUgd2hpY2ggaXMgbm90IHJlLXJlcXVpcmVhYmxlLlxuICBjb25zdCBwYWNrYWdlTGlic0V4Y2VwdFplcm9tcSA9IChmaWxlUGF0aCkgPT5cbiAgICBmaWxlUGF0aC5zdGFydHNXaXRoKHBhY2tQYXRoUHJlZml4KSAmJlxuICAgICFmaWxlUGF0aC5zdGFydHNXaXRoKHplcm9tcVBhdGhQcmVmaXgpO1xuXG4gIE9iamVjdC5rZXlzKHJlcXVpcmUuY2FjaGUpXG4gICAgLmZpbHRlcihwYWNrYWdlTGlic0V4Y2VwdFplcm9tcSlcbiAgICAuZm9yRWFjaCgoZmlsZVBhdGgpID0+IGRlbGV0ZSByZXF1aXJlLmNhY2hlW2ZpbGVQYXRoXSk7XG4gIGF0b20ucGFja2FnZXMubG9hZFBhY2thZ2UocGFja05hbWUpO1xuICBhdG9tLnBhY2thZ2VzLmFjdGl2YXRlUGFja2FnZShwYWNrTmFtZSk7XG4gIGxvZyhgYWN0aXZhdGVkICR7cGFja05hbWV9YCk7XG59XG5leHBvcnQgZnVuY3Rpb24gcm93UmFuZ2VGb3JDb2RlRm9sZEF0QnVmZmVyUm93KFxuICBlZGl0b3I6IFRleHRFZGl0b3IsXG4gIHJvdzogbnVtYmVyXG4pIHtcbiAgaWYgKHBhcnNlRmxvYXQoYXRvbS5nZXRWZXJzaW9uKCkpIDwgMS4yMikge1xuICAgIHJldHVybiBlZGl0b3IubGFuZ3VhZ2VNb2RlLnJvd1JhbmdlRm9yQ29kZUZvbGRBdEJ1ZmZlclJvdyhyb3cpO1xuICB9IGVsc2Uge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICBjb25zdCByYW5nZSA9IGVkaXRvci50b2tlbml6ZWRCdWZmZXIuZ2V0Rm9sZGFibGVSYW5nZUNvbnRhaW5pbmdQb2ludChcbiAgICAgIG5ldyBQb2ludChyb3csIEluZmluaXR5KSxcbiAgICAgIGVkaXRvci5nZXRUYWJMZW5ndGgoKVxuICAgICk7XG4gICAgcmV0dXJuIHJhbmdlID8gW3JhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvd10gOiBudWxsO1xuICB9XG59XG5leHBvcnQgY29uc3QgRW1wdHlNZXNzYWdlID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDx1bCBjbGFzc05hbWU9XCJiYWNrZ3JvdW5kLW1lc3NhZ2UgY2VudGVyZWRcIj5cbiAgICAgIDxsaT5ObyBvdXRwdXQgdG8gZGlzcGxheTwvbGk+XG4gICAgPC91bD5cbiAgKTtcbn07XG4vLyBUT0RPOiB1c2UgbnBtIHBhY2thZ2UgLS0gbWF5YmUgaXQgb2ZmZXJzIG1vcmUgcm9idXN0IGltcGxlbWVudGF0aW9uXG5cbi8qKlxuICogR2l2ZW4gYSBtZXNzYWdlIHdob3NlIHR5cGUgaWYgYGV4ZWN1dGVfcmVwbHlgLCBjYWxjdWxhdGVzIGV4ZWN0aW9uIHRpbWUgYW5kXG4gKiByZXR1cm5zIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gKlxuICogQHBhcmFtIHtNZXNzYWdlfSBtZXNzYWdlIC0gQSBNZXNzYWdlIG9iamVjdCB3aG9zZSB0eXBlIGlzIGBleGVjdXRlX3JlcGx5YFxuICogQHJldHVybnMge1N0cmluZ30gLSBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXhlY3V0aW9uIHRpbWUuIFJldHVybnNcbiAqICAgYE5PX0VYRUNUSU1FX1NUUklOR2AgaWYgZXhlY3V0aW9uIHRpbWUgaXMgdW5hdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRpb25UaW1lKG1lc3NhZ2U6IE1lc3NhZ2UpOiBzdHJpbmcge1xuICBpZiAoIW1lc3NhZ2UucGFyZW50X2hlYWRlci5kYXRlIHx8ICFtZXNzYWdlLmhlYWRlci5kYXRlKSB7XG4gICAgcmV0dXJuIE5PX0VYRUNUSU1FX1NUUklORztcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5wYXJzZShtZXNzYWdlLnBhcmVudF9oZWFkZXIuZGF0ZSk7XG4gIGNvbnN0IGVuZCA9IERhdGUucGFyc2UobWVzc2FnZS5oZWFkZXIuZGF0ZSk7XG4gIGNvbnN0IHRpbWUgPSBlbmQgLSBzdGFydDsgLy8gbWlsbGlzZWNvbmRzXG5cbiAgbGV0IHNlYyA9IHRpbWUgLyAxMDAwOyAvLyBzZWNvbmRzXG5cbiAgaWYgKHNlYyA8IDYwKSB7XG4gICAgcmV0dXJuIGAke3NlYy50b0ZpeGVkKDMpfSBzZWNgO1xuICB9XG5cbiAgbGV0IG1pbiA9IChzZWMgLSAoc2VjICUgNjApKSAvIDYwO1xuICBzZWMgPSBNYXRoLnJvdW5kKHNlYyAlIDYwKTtcblxuICBpZiAobWluIDwgNjApIHtcbiAgICByZXR1cm4gYCR7bWlufSBtaW4gJHtzZWN9IHNlY2A7XG4gIH1cblxuICBjb25zdCBob3VyID0gKG1pbiAtIChtaW4gJSA2MCkpIC8gNjA7XG4gIG1pbiAlPSA2MDtcbiAgcmV0dXJuIGAke2hvdXJ9IGggJHttaW59IG0gJHtzZWN9IHNgO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGpzX2lkeF90b19jaGFyX2lkeChqc19pZHg6IG51bWJlciwgdGV4dDogc3RyaW5nIHwgbnVsbCkge1xuICBpZiAodGV4dCA9PT0gbnVsbCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBsZXQgY2hhcl9pZHggPSBqc19pZHg7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCAmJiBpIDwganNfaWR4OyBpKyspIHtcbiAgICBjb25zdCBjaGFyX2NvZGUgPSB0ZXh0LmNoYXJDb2RlQXQoaSk7XG5cbiAgICAvLyBjaGVjayBmb3IgdGhlIGZpcnN0IGhhbGYgb2YgYSBzdXJyb2dhdGUgcGFpclxuICAgIGlmIChjaGFyX2NvZGUgPj0gMHhkODAwICYmIGNoYXJfY29kZSA8IDB4ZGMwMCkge1xuICAgICAgY2hhcl9pZHggLT0gMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2hhcl9pZHg7XG59XG5leHBvcnQgZnVuY3Rpb24gY2hhcl9pZHhfdG9fanNfaWR4KGNoYXJfaWR4OiBudW1iZXIsIHRleHQ6IHN0cmluZyB8IG51bGwpIHtcbiAgaWYgKHRleHQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgbGV0IGpzX2lkeCA9IGNoYXJfaWR4O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGggJiYgaSA8IGpzX2lkeDsgaSsrKSB7XG4gICAgY29uc3QgY2hhcl9jb2RlID0gdGV4dC5jaGFyQ29kZUF0KGkpO1xuXG4gICAgLy8gY2hlY2sgZm9yIHRoZSBmaXJzdCBoYWxmIG9mIGEgc3Vycm9nYXRlIHBhaXJcbiAgICBpZiAoY2hhcl9jb2RlID49IDB4ZDgwMCAmJiBjaGFyX2NvZGUgPCAweGRjMDApIHtcbiAgICAgIGpzX2lkeCArPSAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBqc19pZHg7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgYHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudGAgcHJvcGVydHkgb2YgdGhlIGdpdmVuIG9iamVjdCB0b1xuICogYWN0aXZlRWxlbWVudCBpZiBpdCBpcyBhbiBIVE1MRWxlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KG9iajoge1xuICBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbn0pIHtcbiAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gIGlmIChhY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICBvYmoucHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gYWN0aXZlRWxlbWVudDtcbiAgfVxufVxuXG4vKiogTWFrZSB0aGUgcHJvcGVydGllcyBvZiBhIHR5cGUgV3JpdGFibGUgKi9cbmV4cG9ydCB0eXBlIFdyaXRlYWJsZTxUPiA9IHsgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBUW1BdIH07XG5cbi8qKiBNYWtlIHRoZSBwcm9wZXJ0aWVzIG9mIGFleHBvcnQgdHlwZSBXcml0YWJsZSByZWN1cnNpdmVseSAqL1xuZXhwb3J0IHR5cGUgRGVlcFdyaXRlYWJsZTxUPiA9IHtcbiAgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBEZWVwV3JpdGVhYmxlPFRbUF0+O1xufTtcbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdXRpbHMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtCQU9jO0FBQ2Qsa0RBQTBCO0FBQzFCLDBEQUFpQztBQUNqQyw2REFBcUM7QUFDckMsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFDOUIsb0RBQTRCO0FBSWYsUUFBQSxhQUFhLEdBQUcsMkJBQTJCLENBQUM7QUFDNUMsUUFBQSxXQUFXLEdBQUcsK0JBQStCLENBQUM7QUFDOUMsUUFBQSxlQUFlLEdBQUcsNkJBQTZCLENBQUM7QUFDaEQsUUFBQSxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxRQUFBLGtCQUFrQixHQUFHLGVBQWUsQ0FBQztBQUNsRCxTQUFnQixZQUFZLENBQzFCLFlBQWdFLEVBQ2hFLFVBQXVCLEVBQ3ZCLGtCQUFzRSxFQUN0RSxXQUFnQyxlQUFLLENBQUMsYUFBYTtJQUVuRCxtQkFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQkFBVSxDQUFDLEdBQUcsRUFBRTtRQUNyQyxtQkFBUSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxrQkFBa0IsS0FBSyxVQUFVLEVBQUU7WUFDNUMsa0JBQWtCLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBZEQsb0NBY0M7QUFDRCxTQUFnQixLQUFLLENBQUMsSUFBZ0M7SUFDcEQsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksVUFB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QUFNLEdBQUcsUUFBUSxDQUFDO0lBRXRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUdyQyxJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUksU0FBUyxHQUFHLE1BQU0sRUFBRTtZQUM3QyxNQUFNLElBQUksQ0FBQyxDQUFDO1NBQ2I7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFoQkQsZ0RBZ0JDO0FBTUQsU0FBZ0IsMkJBQTJCLENBQUMsR0FFM0M7SUFDQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQzdDLElBQUksYUFBYSxZQUFZLFdBQVcsRUFBRTtRQUN4QyxHQUFHLENBQUMsd0JBQXdCLEdBQUcsYUFBYSxDQUFDO0tBQzlDO0FBQ0gsQ0FBQztBQVBELGtFQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBUZXh0RWRpdG9yLFxyXG4gIENvbXBvc2l0ZURpc3Bvc2FibGUsXHJcbiAgRGlzcG9zYWJsZSxcclxuICBQb2ludCxcclxuICBHcmFtbWFyLFxyXG4gIERvY2ssXHJcbn0gZnJvbSBcImF0b21cIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbVwiO1xyXG5pbXBvcnQgZmluZEtleSBmcm9tIFwibG9kYXNoL2ZpbmRLZXlcIjtcclxuaW1wb3J0IG9zIGZyb20gXCJvc1wiO1xyXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xyXG5pbXBvcnQgQ29uZmlnIGZyb20gXCIuL2NvbmZpZ1wiO1xyXG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4vc3RvcmVcIjtcclxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcIi4vaHlkcm9nZW5cIjtcclxuaW1wb3J0IHR5cGUgeyBLZXJuZWxzcGVjTWV0YWRhdGEgfSBmcm9tIFwiQG50ZXJhY3QvdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBJTlNQRUNUT1JfVVJJID0gXCJhdG9tOi8vaHlkcm9nZW4vaW5zcGVjdG9yXCI7XHJcbmV4cG9ydCBjb25zdCBXQVRDSEVTX1VSSSA9IFwiYXRvbTovL2h5ZHJvZ2VuL3dhdGNoLXNpZGViYXJcIjtcclxuZXhwb3J0IGNvbnN0IE9VVFBVVF9BUkVBX1VSSSA9IFwiYXRvbTovL2h5ZHJvZ2VuL291dHB1dC1hcmVhXCI7XHJcbmV4cG9ydCBjb25zdCBLRVJORUxfTU9OSVRPUl9VUkkgPSBcImF0b206Ly9oeWRyb2dlbi9rZXJuZWwtbW9uaXRvclwiO1xyXG5leHBvcnQgY29uc3QgTk9fRVhFQ1RJTUVfU1RSSU5HID0gXCJOb3QgYXZhaWxhYmxlXCI7XHJcbmV4cG9ydCBmdW5jdGlvbiByZWFjdEZhY3RvcnkoXHJcbiAgcmVhY3RFbGVtZW50OiBSZWFjdC5SZWFjdEVsZW1lbnQ8UmVhY3QuQ29tcG9uZW50UHJvcHM8YW55PiwgYW55PixcclxuICBkb21FbGVtZW50OiBIVE1MRWxlbWVudCxcclxuICBhZGRpdGlvbmFsVGVhcmRvd24/OiAoKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IGFueSkgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gIGRpc3Bvc2VyOiBDb21wb3NpdGVEaXNwb3NhYmxlID0gc3RvcmUuc3Vic2NyaXB0aW9uc1xyXG4pIHtcclxuICBSZWFjdERPTS5yZW5kZXIocmVhY3RFbGVtZW50LCBkb21FbGVtZW50KTtcclxuICBjb25zdCBkaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xyXG4gICAgUmVhY3RET00udW5tb3VudENvbXBvbmVudEF0Tm9kZShkb21FbGVtZW50KTtcclxuICAgIGlmICh0eXBlb2YgYWRkaXRpb25hbFRlYXJkb3duID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgYWRkaXRpb25hbFRlYXJkb3duKCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgZGlzcG9zZXIuYWRkKGRpc3Bvc2FibGUpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBmb2N1cyhpdGVtOiB1bmtub3duIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gIGlmIChpdGVtICYmIHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICBjb25zdCBlZGl0b3JQYW5lID0gYXRvbS53b3Jrc3BhY2UucGFuZUZvckl0ZW0oaXRlbSk7XHJcbiAgICBpZiAoZWRpdG9yUGFuZSkge1xyXG4gICAgICBlZGl0b3JQYW5lLmFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuT3JTaG93RG9jayhcclxuICBVUkk6IHN0cmluZ1xyXG4pOiBQcm9taXNlPHZvaWQgfCBudWxsIHwgdW5kZWZpbmVkPiB7XHJcbiAgLy8gYXRvbS53b3Jrc3BhY2Uub3BlbihVUkkpIHdpbGwgYWN0aXZhdGUvZm9jdXMgdGhlIGRvY2sgYnkgZGVmYXVsdFxyXG4gIC8vIGRvY2sudG9nZ2xlKCkgb3IgZG9jay5zaG93KCkgd2lsbCBsZWF2ZSBmb2N1cyB3aGVyZXZlciBpdCB3YXNcclxuICAvLyB0aGlzIGZ1bmN0aW9uIGlzIGJhc2ljYWxseSB3b3Jrc3BhY2Uub3BlbiwgZXhjZXB0IGl0XHJcbiAgLy8gd2lsbCBub3QgZm9jdXMgdGhlIG5ld2x5IG9wZW5lZCBwYW5lXHJcbiAgbGV0IGRvY2sgPSBhdG9tLndvcmtzcGFjZS5wYW5lQ29udGFpbmVyRm9yVVJJKFVSSSk7XHJcblxyXG4gIGlmIChkb2NrICYmIHR5cGVvZiBkb2NrLnNob3cgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgLy8gSWYgdGhlIHRhcmdldCBpdGVtIGFscmVhZHkgZXhpc3QsIGFjdGl2YXRlIGl0IGFuZCBzaG93IGRvY2tcclxuICAgIGNvbnN0IHBhbmUgPSBhdG9tLndvcmtzcGFjZS5wYW5lRm9yVVJJKFVSSSk7XHJcbiAgICBpZiAocGFuZSkge1xyXG4gICAgICBwYW5lLmFjdGl2YXRlSXRlbUZvclVSSShVUkkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChkb2NrIGFzIERvY2spLnNob3coKTtcclxuICB9XHJcblxyXG4gIGF3YWl0IGF0b20ud29ya3NwYWNlLm9wZW4oVVJJLCB7XHJcbiAgICBzZWFyY2hBbGxQYW5lczogdHJ1ZSxcclxuICAgIGFjdGl2YXRlUGFuZTogZmFsc2UsXHJcbiAgfSk7XHJcbiAgZG9jayA9IGF0b20ud29ya3NwYWNlLnBhbmVDb250YWluZXJGb3JVUkkoVVJJKTtcclxuICByZXR1cm4gZG9jayAmJiB0eXBlb2YgZG9jay5zaG93ID09PSBcImZ1bmN0aW9uXCIgPyAoZG9jayBhcyBEb2NrKS5zaG93KCkgOiBudWxsO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBncmFtbWFyVG9MYW5ndWFnZShncmFtbWFyOiBHcmFtbWFyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gIGlmICghZ3JhbW1hcikge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGNvbnN0IGdyYW1tYXJMYW5ndWFnZSA9IGdyYW1tYXIubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gIGNvbnN0IG1hcHBpbmdzID0gQ29uZmlnLmdldEpzb24oXCJsYW5ndWFnZU1hcHBpbmdzXCIpO1xyXG5cclxuICBjb25zdCBrZXJuZWxMYW5ndWFnZSA9IGZpbmRLZXkoXHJcbiAgICBtYXBwaW5ncyxcclxuICAgIChsKSA9PiBsLnRvTG93ZXJDYXNlKCkgPT09IGdyYW1tYXJMYW5ndWFnZVxyXG4gICk7XHJcblxyXG4gIHJldHVybiBrZXJuZWxMYW5ndWFnZSA/IGtlcm5lbExhbmd1YWdlLnRvTG93ZXJDYXNlKCkgOiBncmFtbWFyTGFuZ3VhZ2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3BpZWQgZnJvbVxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbnRlcmFjdC9udGVyYWN0L2Jsb2IvbWFzdGVyL3NyYy9ub3RlYm9vay9lcGljcy9leGVjdXRlLmpzI0wzN1xyXG4gKiBDcmVhdGUgYW4gb2JqZWN0IHRoYXQgYWRoZXJlcyB0byB0aGUganVweXRlciBub3RlYm9vayBzcGVjaWZpY2F0aW9uLlxyXG4gKiBodHRwOi8vanVweXRlci1jbGllbnQucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21lc3NhZ2luZy5odG1sXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBtc2cgLSBNZXNzYWdlIHRoYXQgaGFzIGNvbnRlbnQgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBuYmZvcm1hdFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBGb3JtYXR0ZWRNc2cgLSBNZXNzYWdlIHdpdGggdGhlIGFzc29jaWF0ZWQgb3V0cHV0IHR5cGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtc2dTcGVjVG9Ob3RlYm9va0Zvcm1hdChtZXNzYWdlOiBNZXNzYWdlKSB7XHJcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIG1lc3NhZ2UuY29udGVudCwge1xyXG4gICAgb3V0cHV0X3R5cGU6IG1lc3NhZ2UuaGVhZGVyLm1zZ190eXBlLFxyXG4gIH0pO1xyXG59XHJcblxyXG4vKiogQSB2ZXJ5IGJhc2ljIGNvbnZlcnRlciBmb3Igc3VwcG9ydGluZyBqdXB5dGVyIG1lc3NhZ2luZyBwcm90b2NvbCB2NCByZXBsaWVzICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtc2dTcGVjVjR0b1Y1KG1lc3NhZ2U6IE1lc3NhZ2UpIHtcclxuICBzd2l0Y2ggKG1lc3NhZ2UuaGVhZGVyLm1zZ190eXBlKSB7XHJcbiAgICBjYXNlIFwicHlvdXRcIjpcclxuICAgICAgbWVzc2FnZS5oZWFkZXIubXNnX3R5cGUgPSBcImV4ZWN1dGVfcmVzdWx0XCI7XHJcbiAgICAgIGJyZWFrO1xyXG5cclxuICAgIGNhc2UgXCJweWVyclwiOlxyXG4gICAgICBtZXNzYWdlLmhlYWRlci5tc2dfdHlwZSA9IFwiZXJyb3JcIjtcclxuICAgICAgYnJlYWs7XHJcblxyXG4gICAgY2FzZSBcInN0cmVhbVwiOlxyXG4gICAgICBpZiAoIW1lc3NhZ2UuY29udGVudC50ZXh0KSB7XHJcbiAgICAgICAgbWVzc2FnZS5jb250ZW50LnRleHQgPSBtZXNzYWdlLmNvbnRlbnQuZGF0YTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIGRlZmF1bHQ6IHtcclxuICAgICAgLy8gbm8gY29udmVyc2lvbiBuZWVkZWRcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG1lc3NhZ2U7XHJcbn1cclxuY29uc3QgbWFya3VwR3JhbW1hcnMgPSBuZXcgU2V0KFtcclxuICBcInNvdXJjZS5nZm1cIixcclxuICBcInNvdXJjZS5hc2NpaWRvY1wiLFxyXG4gIFwidGV4dC5yZXN0cnVjdHVyZWR0ZXh0XCIsXHJcbiAgXCJ0ZXh0LnRleC5sYXRleC5rbml0clwiLFxyXG4gIFwidGV4dC5tZFwiLFxyXG4gIFwic291cmNlLndlYXZlLm5vd2ViXCIsXHJcbiAgXCJzb3VyY2Uud2VhdmUubWRcIixcclxuICBcInNvdXJjZS53ZWF2ZS5sYXRleFwiLFxyXG4gIFwic291cmNlLndlYXZlLnJlc3RydWN0dXJlZHRleHRcIixcclxuICBcInNvdXJjZS5wd2VhdmUubm93ZWJcIixcclxuICBcInNvdXJjZS5wd2VhdmUubWRcIixcclxuICBcInNvdXJjZS5wd2VhdmUubGF0ZXhcIixcclxuICBcInNvdXJjZS5wd2VhdmUucmVzdHJ1Y3R1cmVkdGV4dFwiLFxyXG4gIFwic291cmNlLmR5bmRvYy5tZC5zdGF0YVwiLFxyXG4gIFwic291cmNlLmR5bmRvYy5sYXRleC5zdGF0YVwiLFxyXG5dKTtcclxuZXhwb3J0IGZ1bmN0aW9uIGlzTXVsdGlsYW5ndWFnZUdyYW1tYXIoZ3JhbW1hcjogR3JhbW1hcikge1xyXG4gIHJldHVybiBtYXJrdXBHcmFtbWFycy5oYXMoZ3JhbW1hci5zY29wZU5hbWUpO1xyXG59XHJcbmV4cG9ydCBjb25zdCBpc1Vuc2F2ZWRGaWxlUGF0aCA9IChmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XHJcbiAgcmV0dXJuIGZpbGVQYXRoLm1hdGNoKC9VbnNhdmVkXFxzRWRpdG9yXFxzXFxkKy8pID8gdHJ1ZSA6IGZhbHNlO1xyXG59O1xyXG5leHBvcnQgZnVuY3Rpb24ga2VybmVsU3BlY1Byb3ZpZGVzR3JhbW1hcihcclxuICBrZXJuZWxTcGVjOiBLZXJuZWxzcGVjTWV0YWRhdGEsXHJcbiAgZ3JhbW1hcjogR3JhbW1hciB8IG51bGwgfCB1bmRlZmluZWRcclxuKSB7XHJcbiAgaWYgKCFncmFtbWFyIHx8ICFncmFtbWFyLm5hbWUgfHwgIWtlcm5lbFNwZWMgfHwgIWtlcm5lbFNwZWMubGFuZ3VhZ2UpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGdyYW1tYXJMYW5ndWFnZSA9IGdyYW1tYXIubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gIGNvbnN0IGtlcm5lbExhbmd1YWdlID0ga2VybmVsU3BlYy5sYW5ndWFnZS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICBpZiAoa2VybmVsTGFuZ3VhZ2UgPT09IGdyYW1tYXJMYW5ndWFnZSkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdCBtYXBwZWRMYW5ndWFnZSA9IENvbmZpZy5nZXRKc29uKFwibGFuZ3VhZ2VNYXBwaW5nc1wiKVtrZXJuZWxMYW5ndWFnZV07XHJcblxyXG4gIGlmICghbWFwcGVkTGFuZ3VhZ2UpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJldHVybiBtYXBwZWRMYW5ndWFnZS50b0xvd2VyQ2FzZSgpID09PSBncmFtbWFyTGFuZ3VhZ2U7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEVtYmVkZGVkU2NvcGUoXHJcbiAgZWRpdG9yOiBUZXh0RWRpdG9yLFxyXG4gIHBvc2l0aW9uOiBQb2ludFxyXG4pOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCBzY29wZXMgPSBlZGl0b3JcclxuICAgIC5zY29wZURlc2NyaXB0b3JGb3JCdWZmZXJQb3NpdGlvbihwb3NpdGlvbilcclxuICAgIC5nZXRTY29wZXNBcnJheSgpO1xyXG4gIHJldHVybiBzY29wZXMuZmluZCgocykgPT4gcy5pbmRleE9mKFwic291cmNlLmVtYmVkZGVkLlwiKSA9PT0gMCk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRvckRpcmVjdG9yeShlZGl0b3I6IFRleHRFZGl0b3IgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgaWYgKCFlZGl0b3IpIHtcclxuICAgIHJldHVybiBvcy5ob21lZGlyKCk7XHJcbiAgfVxyXG4gIGNvbnN0IGVkaXRvclBhdGggPSBlZGl0b3IuZ2V0UGF0aCgpO1xyXG4gIHJldHVybiBlZGl0b3JQYXRoID8gcGF0aC5kaXJuYW1lKGVkaXRvclBhdGgpIDogb3MuaG9tZWRpcigpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBsb2coLi4ubWVzc2FnZTogQXJyYXk8YW55Pikge1xyXG4gIGlmIChhdG9tLmNvbmZpZy5nZXQoXCJIeWRyb2dlbi5kZWJ1Z1wiKSkge1xyXG4gICAgY29uc29sZS5sb2coXCJIeWRyb2dlbjpcIiwgLi4ubWVzc2FnZSk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBob3RSZWxvYWRQYWNrYWdlKCkge1xyXG4gIGNvbnN0IHBhY2tOYW1lID0gXCJIeWRyb2dlblwiO1xyXG4gIGNvbnN0IHBhY2tQYXRoID0gYXRvbS5wYWNrYWdlcy5yZXNvbHZlUGFja2FnZVBhdGgocGFja05hbWUpO1xyXG4gIGlmICghcGFja1BhdGgpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3QgcGFja1BhdGhQcmVmaXggPSBwYWNrUGF0aCArIHBhdGguc2VwO1xyXG4gIGNvbnN0IHplcm9tcVBhdGhQcmVmaXggPVxyXG4gICAgcGF0aC5qb2luKHBhY2tQYXRoLCBcIm5vZGVfbW9kdWxlc1wiLCBcInplcm9tcVwiKSArIHBhdGguc2VwO1xyXG4gIGxvZyhgZGVhY3RpdmF0aW5nICR7cGFja05hbWV9YCk7XHJcbiAgYXRvbS5wYWNrYWdlcy5kZWFjdGl2YXRlUGFja2FnZShwYWNrTmFtZSk7XHJcbiAgYXRvbS5wYWNrYWdlcy51bmxvYWRQYWNrYWdlKHBhY2tOYW1lKTtcclxuXHJcbiAgLy8gRGVsZXRlIHJlcXVpcmUgY2FjaGUgdG8gcmUtcmVxdWlyZSBvbiBhY3RpdmF0aW9uLlxyXG4gIC8vIEJ1dCBleGNlcHQgemVyb21xIG5hdGl2ZSBtb2R1bGUgd2hpY2ggaXMgbm90IHJlLXJlcXVpcmVhYmxlLlxyXG4gIGNvbnN0IHBhY2thZ2VMaWJzRXhjZXB0WmVyb21xID0gKGZpbGVQYXRoKSA9PlxyXG4gICAgZmlsZVBhdGguc3RhcnRzV2l0aChwYWNrUGF0aFByZWZpeCkgJiZcclxuICAgICFmaWxlUGF0aC5zdGFydHNXaXRoKHplcm9tcVBhdGhQcmVmaXgpO1xyXG5cclxuICBPYmplY3Qua2V5cyhyZXF1aXJlLmNhY2hlKVxyXG4gICAgLmZpbHRlcihwYWNrYWdlTGlic0V4Y2VwdFplcm9tcSlcclxuICAgIC5mb3JFYWNoKChmaWxlUGF0aCkgPT4gZGVsZXRlIHJlcXVpcmUuY2FjaGVbZmlsZVBhdGhdKTtcclxuICBhdG9tLnBhY2thZ2VzLmxvYWRQYWNrYWdlKHBhY2tOYW1lKTtcclxuICBhdG9tLnBhY2thZ2VzLmFjdGl2YXRlUGFja2FnZShwYWNrTmFtZSk7XHJcbiAgbG9nKGBhY3RpdmF0ZWQgJHtwYWNrTmFtZX1gKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gcm93UmFuZ2VGb3JDb2RlRm9sZEF0QnVmZmVyUm93KFxyXG4gIGVkaXRvcjogVGV4dEVkaXRvcixcclxuICByb3c6IG51bWJlclxyXG4pIHtcclxuICBpZiAocGFyc2VGbG9hdChhdG9tLmdldFZlcnNpb24oKSkgPCAxLjIyKSB7XHJcbiAgICByZXR1cm4gZWRpdG9yLmxhbmd1YWdlTW9kZS5yb3dSYW5nZUZvckNvZGVGb2xkQXRCdWZmZXJSb3cocm93KTtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gJEZsb3dGaXhNZVxyXG4gICAgY29uc3QgcmFuZ2UgPSBlZGl0b3IudG9rZW5pemVkQnVmZmVyLmdldEZvbGRhYmxlUmFuZ2VDb250YWluaW5nUG9pbnQoXHJcbiAgICAgIG5ldyBQb2ludChyb3csIEluZmluaXR5KSxcclxuICAgICAgZWRpdG9yLmdldFRhYkxlbmd0aCgpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHJhbmdlID8gW3JhbmdlLnN0YXJ0LnJvdywgcmFuZ2UuZW5kLnJvd10gOiBudWxsO1xyXG4gIH1cclxufVxyXG5leHBvcnQgY29uc3QgRW1wdHlNZXNzYWdlID0gKCkgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8dWwgY2xhc3NOYW1lPVwiYmFja2dyb3VuZC1tZXNzYWdlIGNlbnRlcmVkXCI+XHJcbiAgICAgIDxsaT5ObyBvdXRwdXQgdG8gZGlzcGxheTwvbGk+XHJcbiAgICA8L3VsPlxyXG4gICk7XHJcbn07XHJcbi8vIFRPRE86IHVzZSBucG0gcGFja2FnZSAtLSBtYXliZSBpdCBvZmZlcnMgbW9yZSByb2J1c3QgaW1wbGVtZW50YXRpb25cclxuXHJcbi8qKlxyXG4gKiBHaXZlbiBhIG1lc3NhZ2Ugd2hvc2UgdHlwZSBpZiBgZXhlY3V0ZV9yZXBseWAsIGNhbGN1bGF0ZXMgZXhlY3Rpb24gdGltZSBhbmRcclxuICogcmV0dXJucyBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLlxyXG4gKlxyXG4gKiBAcGFyYW0ge01lc3NhZ2V9IG1lc3NhZ2UgLSBBIE1lc3NhZ2Ugb2JqZWN0IHdob3NlIHR5cGUgaXMgYGV4ZWN1dGVfcmVwbHlgXHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9IC0gQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGV4ZWN1dGlvbiB0aW1lLiBSZXR1cm5zXHJcbiAqICAgYE5PX0VYRUNUSU1FX1NUUklOR2AgaWYgZXhlY3V0aW9uIHRpbWUgaXMgdW5hdmFpbGFibGUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0aW9uVGltZShtZXNzYWdlOiBNZXNzYWdlKTogc3RyaW5nIHtcclxuICBpZiAoIW1lc3NhZ2UucGFyZW50X2hlYWRlci5kYXRlIHx8ICFtZXNzYWdlLmhlYWRlci5kYXRlKSB7XHJcbiAgICByZXR1cm4gTk9fRVhFQ1RJTUVfU1RSSU5HO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgc3RhcnQgPSBEYXRlLnBhcnNlKG1lc3NhZ2UucGFyZW50X2hlYWRlci5kYXRlKTtcclxuICBjb25zdCBlbmQgPSBEYXRlLnBhcnNlKG1lc3NhZ2UuaGVhZGVyLmRhdGUpO1xyXG4gIGNvbnN0IHRpbWUgPSBlbmQgLSBzdGFydDsgLy8gbWlsbGlzZWNvbmRzXHJcblxyXG4gIGxldCBzZWMgPSB0aW1lIC8gMTAwMDsgLy8gc2Vjb25kc1xyXG5cclxuICBpZiAoc2VjIDwgNjApIHtcclxuICAgIHJldHVybiBgJHtzZWMudG9GaXhlZCgzKX0gc2VjYDtcclxuICB9XHJcblxyXG4gIGxldCBtaW4gPSAoc2VjIC0gKHNlYyAlIDYwKSkgLyA2MDtcclxuICBzZWMgPSBNYXRoLnJvdW5kKHNlYyAlIDYwKTtcclxuXHJcbiAgaWYgKG1pbiA8IDYwKSB7XHJcbiAgICByZXR1cm4gYCR7bWlufSBtaW4gJHtzZWN9IHNlY2A7XHJcbiAgfVxyXG5cclxuICBjb25zdCBob3VyID0gKG1pbiAtIChtaW4gJSA2MCkpIC8gNjA7XHJcbiAgbWluICU9IDYwO1xyXG4gIHJldHVybiBgJHtob3VyfSBoICR7bWlufSBtICR7c2VjfSBzYDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24ganNfaWR4X3RvX2NoYXJfaWR4KGpzX2lkeDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgaWYgKHRleHQgPT09IG51bGwpIHtcclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcbiAgbGV0IGNoYXJfaWR4ID0ganNfaWR4O1xyXG5cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoICYmIGkgPCBqc19pZHg7IGkrKykge1xyXG4gICAgY29uc3QgY2hhcl9jb2RlID0gdGV4dC5jaGFyQ29kZUF0KGkpO1xyXG5cclxuICAgIC8vIGNoZWNrIGZvciB0aGUgZmlyc3QgaGFsZiBvZiBhIHN1cnJvZ2F0ZSBwYWlyXHJcbiAgICBpZiAoY2hhcl9jb2RlID49IDB4ZDgwMCAmJiBjaGFyX2NvZGUgPCAweGRjMDApIHtcclxuICAgICAgY2hhcl9pZHggLT0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBjaGFyX2lkeDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gY2hhcl9pZHhfdG9fanNfaWR4KGNoYXJfaWR4OiBudW1iZXIsIHRleHQ6IHN0cmluZyB8IG51bGwpIHtcclxuICBpZiAodGV4dCA9PT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuICBsZXQganNfaWR4ID0gY2hhcl9pZHg7XHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGggJiYgaSA8IGpzX2lkeDsgaSsrKSB7XHJcbiAgICBjb25zdCBjaGFyX2NvZGUgPSB0ZXh0LmNoYXJDb2RlQXQoaSk7XHJcblxyXG4gICAgLy8gY2hlY2sgZm9yIHRoZSBmaXJzdCBoYWxmIG9mIGEgc3Vycm9nYXRlIHBhaXJcclxuICAgIGlmIChjaGFyX2NvZGUgPj0gMHhkODAwICYmIGNoYXJfY29kZSA8IDB4ZGMwMCkge1xyXG4gICAgICBqc19pZHggKz0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBqc19pZHg7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXRzIHRoZSBgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50YCBwcm9wZXJ0eSBvZiB0aGUgZ2l2ZW4gb2JqZWN0IHRvXHJcbiAqIGFjdGl2ZUVsZW1lbnQgaWYgaXQgaXMgYW4gSFRNTEVsZW1lbnRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQob2JqOiB7XHJcbiAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbn0pIHtcclxuICBjb25zdCBhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICBpZiAoYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcbiAgICBvYmoucHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gYWN0aXZlRWxlbWVudDtcclxuICB9XHJcbn1cclxuXHJcbi8qKiBNYWtlIHRoZSBwcm9wZXJ0aWVzIG9mIGEgdHlwZSBXcml0YWJsZSAqL1xyXG5leHBvcnQgdHlwZSBXcml0ZWFibGU8VD4gPSB7IC1yZWFkb25seSBbUCBpbiBrZXlvZiBUXTogVFtQXSB9O1xyXG5cclxuLyoqIE1ha2UgdGhlIHByb3BlcnRpZXMgb2YgYWV4cG9ydCB0eXBlIFdyaXRhYmxlIHJlY3Vyc2l2ZWx5ICovXHJcbmV4cG9ydCB0eXBlIERlZXBXcml0ZWFibGU8VD4gPSB7XHJcbiAgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBEZWVwV3JpdGVhYmxlPFRbUF0+O1xyXG59O1xyXG4iXX0= \ No newline at end of file diff --git a/dist/ws-kernel-picker.d.ts b/dist/ws-kernel-picker.d.ts deleted file mode 100644 index 475aaa9e7..000000000 --- a/dist/ws-kernel-picker.d.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Panel } from "atom"; -import SelectListView from "atom-select-list"; -import { Kernel, Session, ServerConnection } from "@jupyterlab/services"; -import WSKernel from "./ws-kernel"; -import type { KernelspecMetadata } from "@nteract/types"; -import { DeepWriteable } from "./utils"; -declare type SelectListItem = any; -export declare type KernelGatewayOptions = Parameters[0]; -export declare type MinimalServerConnectionSettings = Pick; -export interface KernelGateway { - name: string; - options: KernelGatewayOptions; -} -export interface SessionInfoWithModel { - model: Kernel.IModel; - options: Parameters[1]; -} -export interface SessionInfoWithoutModel { - name?: string; - kernelSpecs: Kernel.ISpecModel[]; - options: Parameters[0]; - model?: never | null | undefined; -} -declare class CustomListView { - onConfirmed: (item: SelectListItem) => void | null | undefined; - onCancelled: () => void | null | undefined; - previouslyFocusedElement: HTMLElement | null | undefined; - selectListView: SelectListView; - panel: Panel | null | undefined; - constructor(); - show(): void; - destroy(): any; - cancel(): void; -} -export default class WSKernelPicker { - _onChosen: (kernel: WSKernel) => void; - _kernelSpecFilter: (kernelSpec: Kernel.ISpecModel) => boolean; - _path: string; - listView: CustomListView; - constructor(onChosen: (kernel: WSKernel) => void); - toggle(_kernelSpecFilter: (kernelSpec: Kernel.ISpecModel | KernelspecMetadata) => boolean): Promise; - promptForText(prompt: string): Promise; - promptForCookie(options: DeepWriteable): Promise; - promptForToken(options: DeepWriteable): Promise; - promptForCredentials(options: DeepWriteable): Promise; - onGateway(gatewayInfo: KernelGateway): Promise; - onSession(gatewayName: string, sessionInfo: SessionInfoWithModel | SessionInfoWithoutModel): Promise; - onSessionWithModel(gatewayName: string, sessionInfo: SessionInfoWithModel): Promise; - onSessionWitouthModel(gatewayName: string, sessionInfo: SessionInfoWithoutModel): Promise; - startSession(gatewayName: string, sessionInfo: SessionInfoWithoutModel): void; - onSessionChosen(gatewayName: string, session: Session.ISession): Promise; -} -export {}; diff --git a/dist/ws-kernel-picker.js b/dist/ws-kernel-picker.js index 293f108c8..695f85ae7 100644 --- a/dist/ws-kernel-picker.js +++ b/dist/ws-kernel-picker.js @@ -4,7 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const atom_select_list_1 = __importDefault(require("atom-select-list")); -const lodash_1 = __importDefault(require("lodash")); +const filter_1 = __importDefault(require("lodash/filter")); +const isEmpty_1 = __importDefault(require("lodash/isEmpty")); const tildify_1 = __importDefault(require("tildify")); const uuid_1 = require("uuid"); const ws_1 = __importDefault(require("ws")); @@ -76,7 +77,7 @@ class WSKernelPicker { utils_1.setPreviouslyFocusedElement(this.listView); this._kernelSpecFilter = _kernelSpecFilter; const gateways = config_1.default.getJson("gateways") || []; - if (lodash_1.default.isEmpty(gateways)) { + if (isEmpty_1.default(gateways)) { atom.notifications.addError("No remote kernel gateways available", { description: "Use the Hydrogen package settings to specify the list of remote servers. Hydrogen can use remote kernels on either a Jupyter Kernel Gateway or Jupyter notebook server.", }); @@ -88,7 +89,7 @@ class WSKernelPicker { items: gateways, infoMessage: "Select a gateway", emptyMessage: "No gateways available", - loadingMessage: null, + loadingMessage: undefined, }); this.listView.show(); } @@ -180,7 +181,7 @@ class WSKernelPicker { action: "cancel", }, ], - infoMessage: "Connection to gateway failed. Your settings may be incorrect, the server may be unavailable, or you may lack sufficient privileges to complete the connection.", + infoMessage: "You may need to authenticate to complete the connection, or your settings may be incorrect, or the server may be unavailable.", loadingMessage: null, emptyMessage: null, }); @@ -201,7 +202,7 @@ class WSKernelPicker { this.listView.onConfirmed = null; await this.listView.selectListView.update({ items: [], - infoMessage: null, + infoMessage: undefined, loadingMessage: "Loading sessions...", emptyMessage: "No sessions available", }); @@ -232,7 +233,7 @@ class WSKernelPicker { serverSettings = services_1.ServerConnection.makeSettings(gatewayOptions); await this.listView.selectListView.update({ items: [], - infoMessage: null, + infoMessage: undefined, loadingMessage: "Loading sessions...", emptyMessage: "No sessions available", }); @@ -242,21 +243,32 @@ class WSKernelPicker { if (!specModels) { specModels = await services_1.Kernel.getSpecs(serverSettings); } - const kernelSpecs = lodash_1.default.filter(specModels.kernelspecs, (spec) => this._kernelSpecFilter(spec)); - const kernelNames = lodash_1.default.map(kernelSpecs, (specModel) => specModel.name); + const kernelSpecs = filter_1.default(specModels.kernelspecs, (spec) => this._kernelSpecFilter(spec)); + if (kernelSpecs.length === 0) { + this.listView.cancel(); + atom.notifications.addError(`Therer are no kernels that matches the grammar of the currently open file. + Open the file you intend to use the remote kernel for and try again. + You might also need to choose the correct grammar for the file.`); + return; + } + const kernelNames = kernelSpecs.map((specModel) => specModel.name); try { let sessionModels = await services_1.Session.listRunning(serverSettings); + if (sessionModels.length === 0) { + await this.promptForCredentials(gatewayOptions); + serverSettings = services_1.ServerConnection.makeSettings(gatewayOptions); + sessionModels = await services_1.Session.listRunning(serverSettings); + } sessionModels = sessionModels.filter((model) => { const name = model.kernel ? model.kernel.name : null; return name ? kernelNames.includes(name) : true; }); const items = sessionModels.map((model) => { - var _a; let name; if (model.path) { name = tildify_1.default(model.path); } - else if ((_a = model.notebook) === null || _a === void 0 ? void 0 : _a.path) { + else if (model.notebook.path) { name = tildify_1.default(model.notebook.path); } else { @@ -314,11 +326,11 @@ class WSKernelPicker { await this.listView.selectListView.update({ items: [], errorMessage: "This gateway does not support listing sessions", - loadingMessage: null, - infoMessage: null, + loadingMessage: undefined, + infoMessage: undefined, }); } - const items = lodash_1.default.map(sessionInfo.kernelSpecs, (spec) => { + const items = sessionInfo.kernelSpecs.map((spec) => { const options = { serverSettings: sessionInfo.options, kernelName: spec.name, @@ -334,7 +346,7 @@ class WSKernelPicker { items, emptyMessage: "No kernel specs available", infoMessage: "Select a session", - loadingMessage: null, + loadingMessage: undefined, }); } startSession(gatewayName, sessionInfo) { @@ -351,4 +363,4 @@ class WSKernelPicker { } } exports.default = WSKernelPicker; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Mta2VybmVsLXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi93cy1rZXJuZWwtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBQThDO0FBQzlDLG9EQUF1QjtBQUN2QixzREFBOEI7QUFDOUIsK0JBQTBCO0FBQzFCLDRDQUFvQjtBQUNwQixtREFBc0U7QUFDdEUsNkJBQTBCO0FBQzFCLG1EQUF5RTtBQUN6RSxzREFBOEI7QUFDOUIsNERBQW1DO0FBQ25DLDhEQUFxQztBQUNyQyxvREFBNEI7QUFFNUIsbUNBQXFFO0FBaUNyRSxNQUFNLGNBQWM7SUFPbEI7UUFOQSxnQkFBVyxHQUFzRCxJQUFJLENBQUM7UUFDdEUsZ0JBQVcsR0FBa0MsSUFBSSxDQUFDO1FBTWhELG1DQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSwwQkFBYyxDQUFDO1lBQ3ZDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUMvQixLQUFLLEVBQUUsRUFBRTtZQUNULGdCQUFnQixFQUFFLENBQUMsSUFBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDckQsY0FBYyxFQUFFLENBQUMsSUFBb0IsRUFBRSxFQUFFO2dCQUN2QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxtQkFBbUIsRUFBRSxDQUFDLElBQW9CLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QjtZQUNILENBQUM7WUFDRCxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZCLElBQUks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QU87U0FDUjtRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQVEsQ0FDekIsV0FBVyxFQUNYLFVBQVUsRUFDVixlQUFLLENBQUMsT0FBTyxFQUNiLE9BQU8sQ0FDUixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFqWEQsaUNBaVhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiYXRvbVwiO1xyXG5pbXBvcnQgU2VsZWN0TGlzdFZpZXcgZnJvbSBcImF0b20tc2VsZWN0LWxpc3RcIjtcclxuaW1wb3J0IF8gZnJvbSBcImxvZGFzaFwiO1xyXG5pbXBvcnQgdGlsZGlmeSBmcm9tIFwidGlsZGlmeVwiO1xyXG5pbXBvcnQgeyB2NCB9IGZyb20gXCJ1dWlkXCI7XHJcbmltcG9ydCB3cyBmcm9tIFwid3NcIjtcclxuaW1wb3J0IHsgWE1MSHR0cFJlcXVlc3QgYXMgTm9kZVhNTEh0dHBSZXF1ZXN0IH0gZnJvbSBcInhtbGh0dHByZXF1ZXN0XCI7IC8vIFRPRE8gdXNlIEBhbWlueWEveG1saHR0cHJlcXVlc3RcclxuaW1wb3J0IHsgVVJMIH0gZnJvbSBcInVybFwiO1xyXG5pbXBvcnQgeyBLZXJuZWwsIFNlc3Npb24sIFNlcnZlckNvbm5lY3Rpb24gfSBmcm9tIFwiQGp1cHl0ZXJsYWIvc2VydmljZXNcIjtcclxuaW1wb3J0IENvbmZpZyBmcm9tIFwiLi9jb25maWdcIjtcclxuaW1wb3J0IFdTS2VybmVsIGZyb20gXCIuL3dzLWtlcm5lbFwiO1xyXG5pbXBvcnQgSW5wdXRWaWV3IGZyb20gXCIuL2lucHV0LXZpZXdcIjtcclxuaW1wb3J0IHN0b3JlIGZyb20gXCIuL3N0b3JlXCI7XHJcbmltcG9ydCB0eXBlIHsgS2VybmVsc3BlY01ldGFkYXRhIH0gZnJvbSBcIkBudGVyYWN0L3R5cGVzXCI7XHJcbmltcG9ydCB7IHNldFByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCwgRGVlcFdyaXRlYWJsZSB9IGZyb20gXCIuL3V0aWxzXCI7XHJcblxyXG50eXBlIFNlbGVjdExpc3RJdGVtID0gYW55O1xyXG5cclxuZXhwb3J0IHR5cGUgS2VybmVsR2F0ZXdheU9wdGlvbnMgPSBQYXJhbWV0ZXJzPFxyXG4gIHR5cGVvZiBTZXJ2ZXJDb25uZWN0aW9uW1wibWFrZVNldHRpbmdzXCJdXHJcbj5bMF07XHJcblxyXG4vLyBCYXNlZCBvbiB0aGUgY29uZmlnIGRvY3VtZW50YXRpb25cclxuLy8gVE9ETyB2ZXJpZnkgdGhpc1xyXG5leHBvcnQgdHlwZSBNaW5pbWFsU2VydmVyQ29ubmVjdGlvblNldHRpbmdzID0gUGljazxcclxuICBLZXJuZWxHYXRld2F5T3B0aW9ucyxcclxuICBcImJhc2VVcmxcIlxyXG4+O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBLZXJuZWxHYXRld2F5IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgb3B0aW9uczogS2VybmVsR2F0ZXdheU9wdGlvbnM7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkluZm9XaXRoTW9kZWwge1xyXG4gIG1vZGVsOiBLZXJuZWwuSU1vZGVsO1xyXG4gIG9wdGlvbnM6IFBhcmFtZXRlcnM8dHlwZW9mIFNlc3Npb24uY29ubmVjdFRvPlsxXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uSW5mb1dpdGhvdXRNb2RlbCB7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICBrZXJuZWxTcGVjczogS2VybmVsLklTcGVjTW9kZWxbXTtcclxuICBvcHRpb25zOiBQYXJhbWV0ZXJzPHR5cGVvZiBTZXNzaW9uLnN0YXJ0TmV3PlswXTtcclxuICAvLyBubyBtb2RlbFxyXG4gIG1vZGVsPzogbmV2ZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5jbGFzcyBDdXN0b21MaXN0VmlldyB7XHJcbiAgb25Db25maXJtZWQ6IChpdGVtOiBTZWxlY3RMaXN0SXRlbSkgPT4gdm9pZCB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xyXG4gIG9uQ2FuY2VsbGVkOiAoKSA9PiB2b2lkIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XHJcbiAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgc2VsZWN0TGlzdFZpZXc6IFNlbGVjdExpc3RWaWV3O1xyXG4gIHBhbmVsOiBQYW5lbCB8IG51bGwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KHRoaXMpO1xyXG4gICAgdGhpcy5zZWxlY3RMaXN0VmlldyA9IG5ldyBTZWxlY3RMaXN0Vmlldyh7XHJcbiAgICAgIGl0ZW1zQ2xhc3NMaXN0OiBbXCJtYXJrLWFjdGl2ZVwiXSxcclxuICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICBmaWx0ZXJLZXlGb3JJdGVtOiAoaXRlbTogU2VsZWN0TGlzdEl0ZW0pID0+IGl0ZW0ubmFtZSxcclxuICAgICAgZWxlbWVudEZvckl0ZW06IChpdGVtOiBTZWxlY3RMaXN0SXRlbSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlcIik7XHJcbiAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IGl0ZW0ubmFtZTtcclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgICAgfSxcclxuICAgICAgZGlkQ29uZmlybVNlbGVjdGlvbjogKGl0ZW06IFNlbGVjdExpc3RJdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub25Db25maXJtZWQpIHtcclxuICAgICAgICAgIHRoaXMub25Db25maXJtZWQoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkaWRDYW5jZWxTZWxlY3Rpb246ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgICAgIGlmICh0aGlzLm9uQ2FuY2VsbGVkKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2FuY2VsbGVkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93KCkge1xyXG4gICAgaWYgKCF0aGlzLnBhbmVsKSB7XHJcbiAgICAgIHRoaXMucGFuZWwgPSBhdG9tLndvcmtzcGFjZS5hZGRNb2RhbFBhbmVsKHtcclxuICAgICAgICBpdGVtOiB0aGlzLnNlbGVjdExpc3RWaWV3LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBhbmVsLnNob3coKTtcclxuICAgIHRoaXMuc2VsZWN0TGlzdFZpZXcuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNhbmNlbCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0TGlzdFZpZXcuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCkge1xyXG4gICAgaWYgKHRoaXMucGFuZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnBhbmVsLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBhbmVsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV1NLZXJuZWxQaWNrZXIge1xyXG4gIF9vbkNob3NlbjogKGtlcm5lbDogV1NLZXJuZWwpID0+IHZvaWQ7XHJcbiAgX2tlcm5lbFNwZWNGaWx0ZXI6IChrZXJuZWxTcGVjOiBLZXJuZWwuSVNwZWNNb2RlbCkgPT4gYm9vbGVhbjtcclxuICBfcGF0aDogc3RyaW5nO1xyXG4gIGxpc3RWaWV3OiBDdXN0b21MaXN0VmlldztcclxuXHJcbiAgY29uc3RydWN0b3Iob25DaG9zZW46IChrZXJuZWw6IFdTS2VybmVsKSA9PiB2b2lkKSB7XHJcbiAgICB0aGlzLl9vbkNob3NlbiA9IG9uQ2hvc2VuO1xyXG4gICAgdGhpcy5saXN0VmlldyA9IG5ldyBDdXN0b21MaXN0VmlldygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdG9nZ2xlKFxyXG4gICAgX2tlcm5lbFNwZWNGaWx0ZXI6IChcclxuICAgICAga2VybmVsU3BlYzogS2VybmVsLklTcGVjTW9kZWwgfCBLZXJuZWxzcGVjTWV0YWRhdGFcclxuICAgICkgPT4gYm9vbGVhblxyXG4gICkge1xyXG4gICAgc2V0UHJldmlvdXNseUZvY3VzZWRFbGVtZW50KHRoaXMubGlzdFZpZXcpO1xyXG4gICAgdGhpcy5fa2VybmVsU3BlY0ZpbHRlciA9IF9rZXJuZWxTcGVjRmlsdGVyO1xyXG4gICAgY29uc3QgZ2F0ZXdheXMgPSBDb25maWcuZ2V0SnNvbihcImdhdGV3YXlzXCIpIHx8IFtdO1xyXG5cclxuICAgIGlmIChfLmlzRW1wdHkoZ2F0ZXdheXMpKSB7XHJcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIk5vIHJlbW90ZSBrZXJuZWwgZ2F0ZXdheXMgYXZhaWxhYmxlXCIsIHtcclxuICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgIFwiVXNlIHRoZSBIeWRyb2dlbiBwYWNrYWdlIHNldHRpbmdzIHRvIHNwZWNpZnkgdGhlIGxpc3Qgb2YgcmVtb3RlIHNlcnZlcnMuIEh5ZHJvZ2VuIGNhbiB1c2UgcmVtb3RlIGtlcm5lbHMgb24gZWl0aGVyIGEgSnVweXRlciBLZXJuZWwgR2F0ZXdheSBvciBKdXB5dGVyIG5vdGVib29rIHNlcnZlci5cIixcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9wYXRoID0gYCR7c3RvcmUuZmlsZVBhdGggfHwgXCJ1bnNhdmVkXCJ9LSR7djQoKX1gO1xyXG4gICAgdGhpcy5saXN0Vmlldy5vbkNvbmZpcm1lZCA9IHRoaXMub25HYXRld2F5LmJpbmQodGhpcyk7XHJcbiAgICBhd2FpdCB0aGlzLmxpc3RWaWV3LnNlbGVjdExpc3RWaWV3LnVwZGF0ZSh7XHJcbiAgICAgIGl0ZW1zOiBnYXRld2F5cyxcclxuICAgICAgaW5mb01lc3NhZ2U6IFwiU2VsZWN0IGEgZ2F0ZXdheVwiLFxyXG4gICAgICBlbXB0eU1lc3NhZ2U6IFwiTm8gZ2F0ZXdheXMgYXZhaWxhYmxlXCIsXHJcbiAgICAgIGxvYWRpbmdNZXNzYWdlOiBudWxsLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxpc3RWaWV3LnNob3coKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByb21wdEZvclRleHQocHJvbXB0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IHRoaXMubGlzdFZpZXcucHJldmlvdXNseUZvY3VzZWRFbGVtZW50O1xyXG4gICAgdGhpcy5saXN0Vmlldy5jYW5jZWwoKTtcclxuICAgIGNvbnN0IGlucHV0UHJvbWlzZSA9IG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCBpbnB1dFZpZXcgPSBuZXcgSW5wdXRWaWV3KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb21wdCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc29sdmVcclxuICAgICAgKTtcclxuICAgICAgYXRvbS5jb21tYW5kcy5hZGQoaW5wdXRWaWV3LmVsZW1lbnQsIHtcclxuICAgICAgICBcImNvcmU6Y2FuY2VsXCI6ICgpID0+IHtcclxuICAgICAgICAgIGlucHV0Vmlldy5jbG9zZSgpO1xyXG4gICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIGlucHV0Vmlldy5hdHRhY2goKTtcclxuICAgIH0pO1xyXG4gICAgbGV0IHJlc3BvbnNlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgaW5wdXRQcm9taXNlO1xyXG5cclxuICAgICAgaWYgKHJlc3BvbnNlID09PSBcIlwiKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQXNzdW1lIHRoYXQgbm8gcmVzcG9uc2UgdG8gdGhlIHByb21wdCB3aWxsIGNhbmNlbCB0aGUgZW50aXJlIGZsb3csIHNvXHJcbiAgICAvLyBvbmx5IHJlc3RvcmUgbGlzdFZpZXcgaWYgYSByZXNwb25zZSB3YXMgcmVjZWl2ZWRcclxuICAgIHRoaXMubGlzdFZpZXcuc2hvdygpO1xyXG4gICAgdGhpcy5saXN0Vmlldy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ7XHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcm9tcHRGb3JDb29raWUob3B0aW9uczogRGVlcFdyaXRlYWJsZTxLZXJuZWxHYXRld2F5T3B0aW9ucz4pIHtcclxuICAgIGNvbnN0IGNvb2tpZSA9IGF3YWl0IHRoaXMucHJvbXB0Rm9yVGV4dChcIkNvb2tpZTpcIik7XHJcblxyXG4gICAgaWYgKGNvb2tpZSA9PT0gbnVsbCB8fCBjb29raWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMucmVxdWVzdEhlYWRlcnMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvcHRpb25zLnJlcXVlc3RIZWFkZXJzID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgb3B0aW9ucy5yZXF1ZXN0SGVhZGVycy5Db29raWUgPSBjb29raWU7XHJcblxyXG4gICAgb3B0aW9ucy54aHJGYWN0b3J5ID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IE5vZGVYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgICAvLyBEaXNhYmxlIHByb3RlY3Rpb25zIGFnYWluc3Qgc2V0dGluZyB0aGUgQ29va2llIGhlYWRlclxyXG4gICAgICByZXF1ZXN0LnNldERpc2FibGVIZWFkZXJDaGVjayh0cnVlKTtcclxuICAgICAgcmV0dXJuIHJlcXVlc3QgYXMgWE1MSHR0cFJlcXVlc3Q7IC8vIFRPRE8gZml4IHRoZSB0eXBlc1xyXG4gICAgfTtcclxuXHJcbiAgICBvcHRpb25zLndzRmFjdG9yeSA9ICh1cmw6IHN0cmluZywgcHJvdG9jb2w/OiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAvLyBBdXRoZW50aWNhdGlvbiByZXF1aXJlcyByZXF1ZXN0cyB0byBhcHBlYXIgdG8gYmUgc2FtZS1vcmlnaW5cclxuICAgICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xyXG5cclxuICAgICAgaWYgKHBhcnNlZFVybC5wcm90b2NvbCA9PT0gXCJ3c3M6XCIpIHtcclxuICAgICAgICBwYXJzZWRVcmwucHJvdG9jb2wgPSBcImh0dHBzOlwiO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcnNlZFVybC5wcm90b2NvbCA9IFwiaHR0cDpcIjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaGVhZGVycyA9IHtcclxuICAgICAgICBDb29raWU6IGNvb2tpZSxcclxuICAgICAgfTtcclxuICAgICAgY29uc3Qgb3JpZ2luID0gcGFyc2VkVXJsLm9yaWdpbjtcclxuICAgICAgY29uc3QgaG9zdCA9IHBhcnNlZFVybC5ob3N0O1xyXG4gICAgICByZXR1cm4gbmV3IHdzKHVybCwgcHJvdG9jb2wsIHtcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgIG9yaWdpbixcclxuICAgICAgICBob3N0LFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBhc3luYyBwcm9tcHRGb3JUb2tlbihvcHRpb25zOiBEZWVwV3JpdGVhYmxlPEtlcm5lbEdhdGV3YXlPcHRpb25zPikge1xyXG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLnByb21wdEZvclRleHQoXCJUb2tlbjpcIik7XHJcblxyXG4gICAgaWYgKHRva2VuID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpb25zLnRva2VuID0gdG9rZW47XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByb21wdEZvckNyZWRlbnRpYWxzKG9wdGlvbnM6IERlZXBXcml0ZWFibGU8S2VybmVsR2F0ZXdheU9wdGlvbnM+KSB7XHJcbiAgICBhd2FpdCB0aGlzLmxpc3RWaWV3LnNlbGVjdExpc3RWaWV3LnVwZGF0ZSh7XHJcbiAgICAgIGl0ZW1zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCJBdXRoZW50aWNhdGUgd2l0aCBhIHRva2VuXCIsXHJcbiAgICAgICAgICBhY3Rpb246IFwidG9rZW5cIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IFwiQXV0aGVudGljYXRlIHdpdGggYSBjb29raWVcIixcclxuICAgICAgICAgIGFjdGlvbjogXCJjb29raWVcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IFwiQ2FuY2VsXCIsXHJcbiAgICAgICAgICBhY3Rpb246IFwiY2FuY2VsXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgaW5mb01lc3NhZ2U6XHJcbiAgICAgICAgXCJDb25uZWN0aW9uIHRvIGdhdGV3YXkgZmFpbGVkLiBZb3VyIHNldHRpbmdzIG1heSBiZSBpbmNvcnJlY3QsIHRoZSBzZXJ2ZXIgbWF5IGJlIHVuYXZhaWxhYmxlLCBvciB5b3UgbWF5IGxhY2sgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIGNvbXBsZXRlIHRoZSBjb25uZWN0aW9uLlwiLFxyXG4gICAgICBsb2FkaW5nTWVzc2FnZTogbnVsbCxcclxuICAgICAgZW1wdHlNZXNzYWdlOiBudWxsLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBhY3Rpb24gPSBhd2FpdCBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5saXN0Vmlldy5vbkNvbmZpcm1lZCA9IChpdGVtOiB7IGFjdGlvbjogc3RyaW5nIH0pID0+XHJcbiAgICAgICAgcmVzb2x2ZShpdGVtLmFjdGlvbik7XHJcblxyXG4gICAgICB0aGlzLmxpc3RWaWV3Lm9uQ2FuY2VsbGVkID0gKCkgPT4gcmVzb2x2ZShcImNhbmNlbFwiKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChhY3Rpb24gPT09IFwidG9rZW5cIikge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9tcHRGb3JUb2tlbihvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0aW9uID09PSBcImNvb2tpZVwiKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb21wdEZvckNvb2tpZShvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhY3Rpb24gPT09IFwiY2FuY2VsXCJcclxuICAgIHRoaXMubGlzdFZpZXcuY2FuY2VsKCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkdhdGV3YXkoZ2F0ZXdheUluZm86IEtlcm5lbEdhdGV3YXkpIHtcclxuICAgIHRoaXMubGlzdFZpZXcub25Db25maXJtZWQgPSBudWxsO1xyXG4gICAgYXdhaXQgdGhpcy5saXN0Vmlldy5zZWxlY3RMaXN0Vmlldy51cGRhdGUoe1xyXG4gICAgICBpdGVtczogW10sXHJcbiAgICAgIGluZm9NZXNzYWdlOiBudWxsLFxyXG4gICAgICBsb2FkaW5nTWVzc2FnZTogXCJMb2FkaW5nIHNlc3Npb25zLi4uXCIsXHJcbiAgICAgIGVtcHR5TWVzc2FnZTogXCJObyBzZXNzaW9ucyBhdmFpbGFibGVcIixcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZ2F0ZXdheU9wdGlvbnMgPSB7XHJcbiAgICAgIHhockZhY3Rvcnk6ICgpID0+IG5ldyBYTUxIdHRwUmVxdWVzdCgpLFxyXG4gICAgICB3c0ZhY3Rvcnk6ICh1cmw6IHN0cmluZywgcHJvdG9jb2w/OiBzdHJpbmcgfCBzdHJpbmdbXSkgPT5cclxuICAgICAgICBuZXcgd3ModXJsLCBwcm90b2NvbCksXHJcbiAgICAgIC4uLmdhdGV3YXlJbmZvLm9wdGlvbnMsXHJcbiAgICB9O1xyXG4gICAgbGV0IHNlcnZlclNldHRpbmdzID0gU2VydmVyQ29ubmVjdGlvbi5tYWtlU2V0dGluZ3MoZ2F0ZXdheU9wdGlvbnMpO1xyXG4gICAgbGV0IHNwZWNNb2RlbHM6IEtlcm5lbC5JU3BlY01vZGVscyB8IHVuZGVmaW5lZDtcclxuICAgIHRyeSB7XHJcbiAgICAgIHNwZWNNb2RlbHMgPSBhd2FpdCBLZXJuZWwuZ2V0U3BlY3Moc2VydmVyU2V0dGluZ3MpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gVGhlIGVycm9yIHR5cGVzIHlvdSBnZXQgYmFjayBhdCB0aGlzIHN0YWdlIGFyZSBmYWlybHkgb3BhcXVlLiBJblxyXG4gICAgICAvLyBwYXJ0aWN1bGFyLCBoYXZpbmcgaW52YWxpZCBjcmVkZW50aWFscyB0eXBpY2FsbHkgdHJpZ2dlcnMgRUNPTk5SRUZVU0VEXHJcbiAgICAgIC8vIHJhdGhlciB0aGFuIDQwMyBGb3JiaWRkZW4uIFRoaXMgZG9lcyBzb21lIGJhc2ljIGNoZWNrcyBhbmQgdGhlbiBhc3N1bWVzXHJcbiAgICAgIC8vIHRoYXQgYWxsIHJlbWFpbmluZyBlcnJvciB0eXBlcyBjb3VsZCBiZSBjYXVzZWQgYnkgaW52YWxpZCBjcmVkZW50aWFscy5cclxuICAgICAgaWYgKCFlcnJvci54aHIgfHwgIWVycm9yLnhoci5yZXNwb25zZVRleHQpIHtcclxuICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgfSBlbHNlIGlmIChlcnJvci54aHIucmVzcG9uc2VUZXh0LmluY2x1ZGVzKFwiRVRJTUVET1VUXCIpKSB7XHJcbiAgICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiQ29ubmVjdGlvbiB0byBnYXRld2F5IGZhaWxlZFwiKTtcclxuICAgICAgICB0aGlzLmxpc3RWaWV3LmNhbmNlbCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBwcm9tcHRTdWNjZWVkZWQgPSBhd2FpdCB0aGlzLnByb21wdEZvckNyZWRlbnRpYWxzKGdhdGV3YXlPcHRpb25zKTtcclxuXHJcbiAgICAgICAgaWYgKCFwcm9tcHRTdWNjZWVkZWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlcnZlclNldHRpbmdzID0gU2VydmVyQ29ubmVjdGlvbi5tYWtlU2V0dGluZ3MoZ2F0ZXdheU9wdGlvbnMpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubGlzdFZpZXcuc2VsZWN0TGlzdFZpZXcudXBkYXRlKHtcclxuICAgICAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgICAgIGluZm9NZXNzYWdlOiBudWxsLFxyXG4gICAgICAgICAgbG9hZGluZ01lc3NhZ2U6IFwiTG9hZGluZyBzZXNzaW9ucy4uLlwiLFxyXG4gICAgICAgICAgZW1wdHlNZXNzYWdlOiBcIk5vIHNlc3Npb25zIGF2YWlsYWJsZVwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCFzcGVjTW9kZWxzKSB7XHJcbiAgICAgICAgc3BlY01vZGVscyA9IGF3YWl0IEtlcm5lbC5nZXRTcGVjcyhzZXJ2ZXJTZXR0aW5ncyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGtlcm5lbFNwZWNzID0gXy5maWx0ZXIoc3BlY01vZGVscy5rZXJuZWxzcGVjcywgKHNwZWMpID0+XHJcbiAgICAgICAgdGhpcy5fa2VybmVsU3BlY0ZpbHRlcihzcGVjKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3Qga2VybmVsTmFtZXMgPSBfLm1hcChrZXJuZWxTcGVjcywgKHNwZWNNb2RlbCkgPT4gc3BlY01vZGVsLm5hbWUpO1xyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgc2Vzc2lvbk1vZGVscyA9IGF3YWl0IFNlc3Npb24ubGlzdFJ1bm5pbmcoc2VydmVyU2V0dGluZ3MpO1xyXG4gICAgICAgIHNlc3Npb25Nb2RlbHMgPSBzZXNzaW9uTW9kZWxzLmZpbHRlcigobW9kZWwpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBtb2RlbC5rZXJuZWwgPyBtb2RlbC5rZXJuZWwubmFtZSA6IG51bGw7XHJcbiAgICAgICAgICByZXR1cm4gbmFtZSA/IGtlcm5lbE5hbWVzLmluY2x1ZGVzKG5hbWUpIDogdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBpdGVtcyA9IHNlc3Npb25Nb2RlbHMubWFwKChtb2RlbCkgPT4ge1xyXG4gICAgICAgICAgbGV0IG5hbWU6IHN0cmluZztcclxuXHJcbiAgICAgICAgICBpZiAobW9kZWwucGF0aCkge1xyXG4gICAgICAgICAgICBuYW1lID0gdGlsZGlmeShtb2RlbC5wYXRoKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobW9kZWwubm90ZWJvb2s/LnBhdGgpIHtcclxuICAgICAgICAgICAgbmFtZSA9IHRpbGRpZnkobW9kZWwubm90ZWJvb2shLnBhdGgpOyAvLyBUT0RPIGZpeCB0aGUgdHlwZXNcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBgU2Vzc2lvbiAke21vZGVsLmlkfWA7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgbW9kZWwsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHNlcnZlclNldHRpbmdzLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdGVtcy51bnNoaWZ0KHtcclxuICAgICAgICAgIG5hbWU6IFwiW25ldyBzZXNzaW9uXVwiLFxyXG4gICAgICAgICAgbW9kZWw6IG51bGwsXHJcbiAgICAgICAgICBvcHRpb25zOiBzZXJ2ZXJTZXR0aW5ncyxcclxuICAgICAgICAgIGtlcm5lbFNwZWNzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubGlzdFZpZXcub25Db25maXJtZWQgPSB0aGlzLm9uU2Vzc2lvbi5iaW5kKHRoaXMsIGdhdGV3YXlJbmZvLm5hbWUpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubGlzdFZpZXcuc2VsZWN0TGlzdFZpZXcudXBkYXRlKHtcclxuICAgICAgICAgIGl0ZW1zLFxyXG4gICAgICAgICAgbG9hZGluZ01lc3NhZ2U6IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgaWYgKCFlcnJvci54aHIgfHwgZXJyb3IueGhyLnN0YXR1cyAhPT0gNDAzKSB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gR2F0ZXdheXMgb2ZmZXIgdGhlIG9wdGlvbiBvZiBuZXZlciBsaXN0aW5nIHNlc3Npb25zLCBmb3Igc2VjdXJpdHlcclxuICAgICAgICAvLyByZWFzb25zLlxyXG4gICAgICAgIC8vIEFzc3VtZSB0aGlzIGlzIHRoZSBjYXNlIGFuZCBwcm9jZWVkIHRvIGNyZWF0aW5nIGEgbmV3IHNlc3Npb24uXHJcbiAgICAgICAgdGhpcy5vblNlc3Npb24oZ2F0ZXdheUluZm8ubmFtZSwge1xyXG4gICAgICAgICAgbmFtZTogXCJbbmV3IHNlc3Npb25dXCIsXHJcbiAgICAgICAgICBtb2RlbDogbnVsbCxcclxuICAgICAgICAgIG9wdGlvbnM6IHNlcnZlclNldHRpbmdzLFxyXG4gICAgICAgICAga2VybmVsU3BlY3MsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiQ29ubmVjdGlvbiB0byBnYXRld2F5IGZhaWxlZFwiKTtcclxuICAgICAgdGhpcy5saXN0Vmlldy5jYW5jZWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2Vzc2lvbihcclxuICAgIGdhdGV3YXlOYW1lOiBzdHJpbmcsXHJcbiAgICBzZXNzaW9uSW5mbzogU2Vzc2lvbkluZm9XaXRoTW9kZWwgfCBTZXNzaW9uSW5mb1dpdGhvdXRNb2RlbFxyXG4gICkge1xyXG4gICAgY29uc3QgbW9kZWwgPSBzZXNzaW9uSW5mby5tb2RlbDtcclxuICAgIGlmIChtb2RlbCA9PT0gbnVsbCB8fCBtb2RlbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIC8vIG1vZGVsIG5vdCBwcm92aWRlZFxyXG4gICAgICByZXR1cm4gdGhpcy5vblNlc3Npb25XaXRvdXRoTW9kZWwoXHJcbiAgICAgICAgZ2F0ZXdheU5hbWUsXHJcbiAgICAgICAgc2Vzc2lvbkluZm8gYXMgU2Vzc2lvbkluZm9XaXRob3V0TW9kZWxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHdpdGggbW9kZWxcclxuICAgICAgcmV0dXJuIHRoaXMub25TZXNzaW9uV2l0aE1vZGVsKFxyXG4gICAgICAgIGdhdGV3YXlOYW1lLFxyXG4gICAgICAgIHNlc3Npb25JbmZvIGFzIFNlc3Npb25JbmZvV2l0aE1vZGVsXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblNlc3Npb25XaXRoTW9kZWwoXHJcbiAgICBnYXRld2F5TmFtZTogc3RyaW5nLFxyXG4gICAgc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvV2l0aE1vZGVsXHJcbiAgKSB7XHJcbiAgICB0aGlzLm9uU2Vzc2lvbkNob3NlbihcclxuICAgICAgZ2F0ZXdheU5hbWUsXHJcbiAgICAgIGF3YWl0IFNlc3Npb24uY29ubmVjdFRvKHNlc3Npb25JbmZvLm1vZGVsLmlkLCBzZXNzaW9uSW5mby5vcHRpb25zKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU2Vzc2lvbldpdG91dGhNb2RlbChcclxuICAgIGdhdGV3YXlOYW1lOiBzdHJpbmcsXHJcbiAgICBzZXNzaW9uSW5mbzogU2Vzc2lvbkluZm9XaXRob3V0TW9kZWxcclxuICApIHtcclxuICAgIGlmICghc2Vzc2lvbkluZm8ubmFtZSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmxpc3RWaWV3LnNlbGVjdExpc3RWaWV3LnVwZGF0ZSh7XHJcbiAgICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICAgIGVycm9yTWVzc2FnZTogXCJUaGlzIGdhdGV3YXkgZG9lcyBub3Qgc3VwcG9ydCBsaXN0aW5nIHNlc3Npb25zXCIsXHJcbiAgICAgICAgbG9hZGluZ01lc3NhZ2U6IG51bGwsXHJcbiAgICAgICAgaW5mb01lc3NhZ2U6IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGl0ZW1zID0gXy5tYXAoc2Vzc2lvbkluZm8ua2VybmVsU3BlY3MsIChzcGVjKSA9PiB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgc2VydmVyU2V0dGluZ3M6IHNlc3Npb25JbmZvLm9wdGlvbnMsXHJcbiAgICAgICAga2VybmVsTmFtZTogc3BlYy5uYW1lLFxyXG4gICAgICAgIHBhdGg6IHRoaXMuX3BhdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogc3BlYy5kaXNwbGF5X25hbWUsXHJcbiAgICAgICAgb3B0aW9ucyxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubGlzdFZpZXcub25Db25maXJtZWQgPSB0aGlzLnN0YXJ0U2Vzc2lvbi5iaW5kKHRoaXMsIGdhdGV3YXlOYW1lKTtcclxuICAgIGF3YWl0IHRoaXMubGlzdFZpZXcuc2VsZWN0TGlzdFZpZXcudXBkYXRlKHtcclxuICAgICAgaXRlbXMsXHJcbiAgICAgIGVtcHR5TWVzc2FnZTogXCJObyBrZXJuZWwgc3BlY3MgYXZhaWxhYmxlXCIsXHJcbiAgICAgIGluZm9NZXNzYWdlOiBcIlNlbGVjdCBhIHNlc3Npb25cIixcclxuICAgICAgbG9hZGluZ01lc3NhZ2U6IG51bGwsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXJ0U2Vzc2lvbihnYXRld2F5TmFtZTogc3RyaW5nLCBzZXNzaW9uSW5mbzogU2Vzc2lvbkluZm9XaXRob3V0TW9kZWwpIHtcclxuICAgIFNlc3Npb24uc3RhcnROZXcoc2Vzc2lvbkluZm8ub3B0aW9ucykudGhlbihcclxuICAgICAgdGhpcy5vblNlc3Npb25DaG9zZW4uYmluZCh0aGlzLCBnYXRld2F5TmFtZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblNlc3Npb25DaG9zZW4oZ2F0ZXdheU5hbWU6IHN0cmluZywgc2Vzc2lvbjogU2Vzc2lvbi5JU2Vzc2lvbikge1xyXG4gICAgdGhpcy5saXN0Vmlldy5jYW5jZWwoKTtcclxuICAgIGNvbnN0IGtlcm5lbFNwZWMgPSBhd2FpdCBzZXNzaW9uLmtlcm5lbC5nZXRTcGVjKCk7XHJcbiAgICBpZiAoIXN0b3JlLmdyYW1tYXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2VybmVsID0gbmV3IFdTS2VybmVsKFxyXG4gICAgICBnYXRld2F5TmFtZSxcclxuICAgICAga2VybmVsU3BlYyxcclxuICAgICAgc3RvcmUuZ3JhbW1hcixcclxuICAgICAgc2Vzc2lvblxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLl9vbkNob3NlbihrZXJuZWwpO1xyXG4gIH1cclxufVxyXG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Mta2VybmVsLXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi93cy1rZXJuZWwtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0VBQXdFO0FBQ3hFLDJEQUFtQztBQUNuQyw2REFBcUM7QUFDckMsc0RBQThCO0FBQzlCLCtCQUEwQjtBQUMxQiw0Q0FBb0I7QUFDcEIsbURBQXNFO0FBQ3RFLDZCQUEwQjtBQUMxQixtREFBeUU7QUFDekUsc0RBQThCO0FBQzlCLDREQUFtQztBQUNuQyw4REFBcUM7QUFDckMsb0RBQTRCO0FBRTVCLG1DQUFxRTtBQWlDckUsTUFBTSxjQUFjO0lBT2xCO1FBTkEsZ0JBQVcsR0FBc0QsSUFBSSxDQUFDO1FBQ3RFLGdCQUFXLEdBQWtDLElBQUksQ0FBQztRQU1oRCxtQ0FBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksMEJBQWMsQ0FBQztZQUN2QyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDL0IsS0FBSyxFQUFFLEVBQUU7WUFDVCxnQkFBZ0IsRUFBRSxDQUFDLElBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ3JELGNBQWMsRUFBRSxDQUFDLElBQW9CLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDO1lBQ0QsbUJBQW1CLEVBQUUsQ0FBQyxJQUFvQixFQUFFLEVBQUU7Z0JBQzVDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDeEI7WUFDSCxDQUFDO1lBQ0Qsa0JBQWtCLEVBQUUsR0FBRyxFQUFF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V0FBb0M7UUFDcEUsa0JBQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBbUIsRUFBRSxPQUF5QjtRQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsZUFBSyxDQUFDLE9BQU8sRUFBRTtZQUNsQixPQUFPO1NBQ1I7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLG1CQUFRLENBQ3pCLFdBQVcsRUFDWCxVQUFVLEVBQ1YsZUFBSyxDQUFDLE9BQU8sRUFDYixPQUFPLENBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBcFlELGlDQW9ZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhbmVsIH0gZnJvbSBcImF0b21cIjtcclxuaW1wb3J0IFNlbGVjdExpc3RWaWV3LCB7IFNlbGVjdExpc3RQcm9wZXJ0aWVzIH0gZnJvbSBcImF0b20tc2VsZWN0LWxpc3RcIjtcclxuaW1wb3J0IGZpbHRlciBmcm9tIFwibG9kYXNoL2ZpbHRlclwiO1xyXG5pbXBvcnQgaXNFbXB0eSBmcm9tIFwibG9kYXNoL2lzRW1wdHlcIjtcclxuaW1wb3J0IHRpbGRpZnkgZnJvbSBcInRpbGRpZnlcIjtcclxuaW1wb3J0IHsgdjQgfSBmcm9tIFwidXVpZFwiO1xyXG5pbXBvcnQgd3MgZnJvbSBcIndzXCI7XHJcbmltcG9ydCB7IFhNTEh0dHBSZXF1ZXN0IGFzIE5vZGVYTUxIdHRwUmVxdWVzdCB9IGZyb20gXCJ4bWxodHRwcmVxdWVzdFwiOyAvLyBUT0RPIHVzZSBAYW1pbnlhL3htbGh0dHByZXF1ZXN0XHJcbmltcG9ydCB7IFVSTCB9IGZyb20gXCJ1cmxcIjtcclxuaW1wb3J0IHsgS2VybmVsLCBTZXNzaW9uLCBTZXJ2ZXJDb25uZWN0aW9uIH0gZnJvbSBcIkBqdXB5dGVybGFiL3NlcnZpY2VzXCI7XHJcbmltcG9ydCBDb25maWcgZnJvbSBcIi4vY29uZmlnXCI7XHJcbmltcG9ydCBXU0tlcm5lbCBmcm9tIFwiLi93cy1rZXJuZWxcIjtcclxuaW1wb3J0IElucHV0VmlldyBmcm9tIFwiLi9pbnB1dC12aWV3XCI7XHJcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi9zdG9yZVwiO1xyXG5pbXBvcnQgdHlwZSB7IEtlcm5lbHNwZWNNZXRhZGF0YSB9IGZyb20gXCJAbnRlcmFjdC90eXBlc1wiO1xyXG5pbXBvcnQgeyBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQsIERlZXBXcml0ZWFibGUgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IHR5cGUgS2VybmVsR2F0ZXdheU9wdGlvbnMgPSBQYXJhbWV0ZXJzPFxyXG4gIHR5cGVvZiBTZXJ2ZXJDb25uZWN0aW9uW1wibWFrZVNldHRpbmdzXCJdXHJcbj5bMF07XHJcblxyXG4vLyBCYXNlZCBvbiB0aGUgY29uZmlnIGRvY3VtZW50YXRpb25cclxuLy8gVE9ETyB2ZXJpZnkgdGhpc1xyXG5leHBvcnQgdHlwZSBNaW5pbWFsU2VydmVyQ29ubmVjdGlvblNldHRpbmdzID0gUGljazxcclxuICBLZXJuZWxHYXRld2F5T3B0aW9ucyxcclxuICBcImJhc2VVcmxcIlxyXG4+O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBLZXJuZWxHYXRld2F5IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgb3B0aW9uczogS2VybmVsR2F0ZXdheU9wdGlvbnM7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkluZm9XaXRoTW9kZWwge1xyXG4gIG1vZGVsOiBLZXJuZWwuSU1vZGVsO1xyXG4gIG9wdGlvbnM6IFBhcmFtZXRlcnM8dHlwZW9mIFNlc3Npb24uY29ubmVjdFRvPlsxXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uSW5mb1dpdGhvdXRNb2RlbCB7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICBrZXJuZWxTcGVjczogS2VybmVsLklTcGVjTW9kZWxbXTtcclxuICBvcHRpb25zOiBQYXJhbWV0ZXJzPHR5cGVvZiBTZXNzaW9uLnN0YXJ0TmV3PlswXTtcclxuICAvLyBubyBtb2RlbFxyXG4gIG1vZGVsPzogbmV2ZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG50eXBlIFNlbGVjdExpc3RJdGVtID0gS2VybmVsR2F0ZXdheTtcclxuXHJcbmNsYXNzIEN1c3RvbUxpc3RWaWV3IHtcclxuICBvbkNvbmZpcm1lZDogKGl0ZW06IFNlbGVjdExpc3RJdGVtKSA9PiB2b2lkIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XHJcbiAgb25DYW5jZWxsZWQ6ICgpID0+IHZvaWQgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcclxuICBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBzZWxlY3RMaXN0VmlldzogU2VsZWN0TGlzdFZpZXc7XHJcbiAgcGFuZWw6IFBhbmVsIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQodGhpcyk7XHJcbiAgICB0aGlzLnNlbGVjdExpc3RWaWV3ID0gbmV3IFNlbGVjdExpc3RWaWV3KHtcclxuICAgICAgaXRlbXNDbGFzc0xpc3Q6IFtcIm1hcmstYWN0aXZlXCJdLFxyXG4gICAgICBpdGVtczogW10sXHJcbiAgICAgIGZpbHRlcktleUZvckl0ZW06IChpdGVtOiBTZWxlY3RMaXN0SXRlbSkgPT4gaXRlbS5uYW1lLFxyXG4gICAgICBlbGVtZW50Rm9ySXRlbTogKGl0ZW06IFNlbGVjdExpc3RJdGVtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaVwiKTtcclxuICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gaXRlbS5uYW1lO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgICB9LFxyXG4gICAgICBkaWRDb25maXJtU2VsZWN0aW9uOiAoaXRlbTogU2VsZWN0TGlzdEl0ZW0pID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vbkNvbmZpcm1lZCkge1xyXG4gICAgICAgICAgdGhpcy5vbkNvbmZpcm1lZChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRpZENhbmNlbFNlbGVjdGlvbjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICAgICAgaWYgKHRoaXMub25DYW5jZWxsZWQpIHtcclxuICAgICAgICAgIHRoaXMub25DYW5jZWxsZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3coKSB7XHJcbiAgICBpZiAoIXRoaXMucGFuZWwpIHtcclxuICAgICAgdGhpcy5wYW5lbCA9IGF0b20ud29ya3NwYWNlLmFkZE1vZGFsUGFuZWwoe1xyXG4gICAgICAgIGl0ZW06IHRoaXMuc2VsZWN0TGlzdFZpZXcsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGFuZWwuc2hvdygpO1xyXG4gICAgdGhpcy5zZWxlY3RMaXN0Vmlldy5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RMaXN0Vmlldy5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICBpZiAodGhpcy5wYW5lbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucGFuZWwuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGFuZWwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXU0tlcm5lbFBpY2tlciB7XHJcbiAgX29uQ2hvc2VuOiAoa2VybmVsOiBXU0tlcm5lbCkgPT4gdm9pZDtcclxuICBfa2VybmVsU3BlY0ZpbHRlcjogKGtlcm5lbFNwZWM6IEtlcm5lbC5JU3BlY01vZGVsKSA9PiBib29sZWFuO1xyXG4gIF9wYXRoOiBzdHJpbmc7XHJcbiAgbGlzdFZpZXc6IEN1c3RvbUxpc3RWaWV3O1xyXG5cclxuICBjb25zdHJ1Y3RvcihvbkNob3NlbjogKGtlcm5lbDogV1NLZXJuZWwpID0+IHZvaWQpIHtcclxuICAgIHRoaXMuX29uQ2hvc2VuID0gb25DaG9zZW47XHJcbiAgICB0aGlzLmxpc3RWaWV3ID0gbmV3IEN1c3RvbUxpc3RWaWV3KCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB0b2dnbGUoXHJcbiAgICBfa2VybmVsU3BlY0ZpbHRlcjogKFxyXG4gICAgICBrZXJuZWxTcGVjOiBLZXJuZWwuSVNwZWNNb2RlbCB8IEtlcm5lbHNwZWNNZXRhZGF0YVxyXG4gICAgKSA9PiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBzZXRQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQodGhpcy5saXN0Vmlldyk7XHJcbiAgICB0aGlzLl9rZXJuZWxTcGVjRmlsdGVyID0gX2tlcm5lbFNwZWNGaWx0ZXI7XHJcbiAgICBjb25zdCBnYXRld2F5cyA9IENvbmZpZy5nZXRKc29uKFwiZ2F0ZXdheXNcIikgfHwgW107XHJcblxyXG4gICAgaWYgKGlzRW1wdHkoZ2F0ZXdheXMpKSB7XHJcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIk5vIHJlbW90ZSBrZXJuZWwgZ2F0ZXdheXMgYXZhaWxhYmxlXCIsIHtcclxuICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgIFwiVXNlIHRoZSBIeWRyb2dlbiBwYWNrYWdlIHNldHRpbmdzIHRvIHNwZWNpZnkgdGhlIGxpc3Qgb2YgcmVtb3RlIHNlcnZlcnMuIEh5ZHJvZ2VuIGNhbiB1c2UgcmVtb3RlIGtlcm5lbHMgb24gZWl0aGVyIGEgSnVweXRlciBLZXJuZWwgR2F0ZXdheSBvciBKdXB5dGVyIG5vdGVib29rIHNlcnZlci5cIixcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9wYXRoID0gYCR7c3RvcmUuZmlsZVBhdGggfHwgXCJ1bnNhdmVkXCJ9LSR7djQoKX1gO1xyXG4gICAgdGhpcy5saXN0Vmlldy5vbkNvbmZpcm1lZCA9IHRoaXMub25HYXRld2F5LmJpbmQodGhpcyk7XHJcbiAgICBhd2FpdCB0aGlzLmxpc3RWaWV3LnNlbGVjdExpc3RWaWV3LnVwZGF0ZSh7XHJcbiAgICAgIGl0ZW1zOiBnYXRld2F5cyxcclxuICAgICAgaW5mb01lc3NhZ2U6IFwiU2VsZWN0IGEgZ2F0ZXdheVwiLFxyXG4gICAgICBlbXB0eU1lc3NhZ2U6IFwiTm8gZ2F0ZXdheXMgYXZhaWxhYmxlXCIsXHJcbiAgICAgIGxvYWRpbmdNZXNzYWdlOiB1bmRlZmluZWQsXHJcbiAgICB9IGFzIFNlbGVjdExpc3RQcm9wZXJ0aWVzKTtcclxuICAgIHRoaXMubGlzdFZpZXcuc2hvdygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJvbXB0Rm9yVGV4dChwcm9tcHQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gdGhpcy5saXN0Vmlldy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ7XHJcbiAgICB0aGlzLmxpc3RWaWV3LmNhbmNlbCgpO1xyXG4gICAgY29uc3QgaW5wdXRQcm9taXNlID0gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlucHV0VmlldyA9IG5ldyBJbnB1dFZpZXcoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvbXB0LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzb2x2ZVxyXG4gICAgICApO1xyXG4gICAgICBhdG9tLmNvbW1hbmRzLmFkZChpbnB1dFZpZXcuZWxlbWVudCwge1xyXG4gICAgICAgIFwiY29yZTpjYW5jZWxcIjogKCkgPT4ge1xyXG4gICAgICAgICAgaW5wdXRWaWV3LmNsb3NlKCk7XHJcbiAgICAgICAgICByZWplY3QoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgaW5wdXRWaWV3LmF0dGFjaCgpO1xyXG4gICAgfSk7XHJcbiAgICBsZXQgcmVzcG9uc2U6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBpbnB1dFByb21pc2U7XHJcblxyXG4gICAgICBpZiAocmVzcG9uc2UgPT09IFwiXCIpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBc3N1bWUgdGhhdCBubyByZXNwb25zZSB0byB0aGUgcHJvbXB0IHdpbGwgY2FuY2VsIHRoZSBlbnRpcmUgZmxvdywgc29cclxuICAgIC8vIG9ubHkgcmVzdG9yZSBsaXN0VmlldyBpZiBhIHJlc3BvbnNlIHdhcyByZWNlaXZlZFxyXG4gICAgdGhpcy5saXN0Vmlldy5zaG93KCk7XHJcbiAgICB0aGlzLmxpc3RWaWV3LnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudDtcclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByb21wdEZvckNvb2tpZShvcHRpb25zOiBEZWVwV3JpdGVhYmxlPEtlcm5lbEdhdGV3YXlPcHRpb25zPikge1xyXG4gICAgY29uc3QgY29va2llID0gYXdhaXQgdGhpcy5wcm9tcHRGb3JUZXh0KFwiQ29va2llOlwiKTtcclxuXHJcbiAgICBpZiAoY29va2llID09PSBudWxsIHx8IGNvb2tpZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucy5yZXF1ZXN0SGVhZGVycyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9wdGlvbnMucmVxdWVzdEhlYWRlcnMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpb25zLnJlcXVlc3RIZWFkZXJzLkNvb2tpZSA9IGNvb2tpZTtcclxuXHJcbiAgICBvcHRpb25zLnhockZhY3RvcnkgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgTm9kZVhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICAgIC8vIERpc2FibGUgcHJvdGVjdGlvbnMgYWdhaW5zdCBzZXR0aW5nIHRoZSBDb29raWUgaGVhZGVyXHJcbiAgICAgIHJlcXVlc3Quc2V0RGlzYWJsZUhlYWRlckNoZWNrKHRydWUpO1xyXG4gICAgICByZXR1cm4gcmVxdWVzdCBhcyBYTUxIdHRwUmVxdWVzdDsgLy8gVE9ETyBmaXggdGhlIHR5cGVzXHJcbiAgICB9O1xyXG5cclxuICAgIG9wdGlvbnMud3NGYWN0b3J5ID0gKHVybDogc3RyaW5nLCBwcm90b2NvbD86IHN0cmluZyB8IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgIC8vIEF1dGhlbnRpY2F0aW9uIHJlcXVpcmVzIHJlcXVlc3RzIHRvIGFwcGVhciB0byBiZSBzYW1lLW9yaWdpblxyXG4gICAgICBjb25zdCBwYXJzZWRVcmwgPSBuZXcgVVJMKHVybCk7XHJcblxyXG4gICAgICBpZiAocGFyc2VkVXJsLnByb3RvY29sID09PSBcIndzczpcIikge1xyXG4gICAgICAgIHBhcnNlZFVybC5wcm90b2NvbCA9IFwiaHR0cHM6XCI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyc2VkVXJsLnByb3RvY29sID0gXCJodHRwOlwiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBoZWFkZXJzID0ge1xyXG4gICAgICAgIENvb2tpZTogY29va2llLFxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBvcmlnaW4gPSBwYXJzZWRVcmwub3JpZ2luO1xyXG4gICAgICBjb25zdCBob3N0ID0gcGFyc2VkVXJsLmhvc3Q7XHJcbiAgICAgIHJldHVybiBuZXcgd3ModXJsLCBwcm90b2NvbCwge1xyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgb3JpZ2luLFxyXG4gICAgICAgIGhvc3QsXHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByb21wdEZvclRva2VuKG9wdGlvbnM6IERlZXBXcml0ZWFibGU8S2VybmVsR2F0ZXdheU9wdGlvbnM+KSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHRoaXMucHJvbXB0Rm9yVGV4dChcIlRva2VuOlwiKTtcclxuXHJcbiAgICBpZiAodG9rZW4gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9wdGlvbnMudG9rZW4gPSB0b2tlbjtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJvbXB0Rm9yQ3JlZGVudGlhbHMob3B0aW9uczogRGVlcFdyaXRlYWJsZTxLZXJuZWxHYXRld2F5T3B0aW9ucz4pIHtcclxuICAgIGF3YWl0IHRoaXMubGlzdFZpZXcuc2VsZWN0TGlzdFZpZXcudXBkYXRlKHtcclxuICAgICAgaXRlbXM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBcIkF1dGhlbnRpY2F0ZSB3aXRoIGEgdG9rZW5cIixcclxuICAgICAgICAgIGFjdGlvbjogXCJ0b2tlblwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCJBdXRoZW50aWNhdGUgd2l0aCBhIGNvb2tpZVwiLFxyXG4gICAgICAgICAgYWN0aW9uOiBcImNvb2tpZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCJDYW5jZWxcIixcclxuICAgICAgICAgIGFjdGlvbjogXCJjYW5jZWxcIixcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBpbmZvTWVzc2FnZTpcclxuICAgICAgICBcIllvdSBtYXkgbmVlZCB0byBhdXRoZW50aWNhdGUgdG8gY29tcGxldGUgdGhlIGNvbm5lY3Rpb24sIG9yIHlvdXIgc2V0dGluZ3MgbWF5IGJlIGluY29ycmVjdCwgb3IgdGhlIHNlcnZlciBtYXkgYmUgdW5hdmFpbGFibGUuXCIsXHJcbiAgICAgIGxvYWRpbmdNZXNzYWdlOiBudWxsLFxyXG4gICAgICBlbXB0eU1lc3NhZ2U6IG51bGwsXHJcbiAgICB9IGFzIFNlbGVjdExpc3RQcm9wZXJ0aWVzKTtcclxuICAgIGNvbnN0IGFjdGlvbiA9IGF3YWl0IG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAvLyBUT0RPIHJldXNlcyB0aGUgU2VsZWN0TGlzdFZpZXchXHJcbiAgICAgIHR5cGUgTmV3U2VsZWN0TGlzdEl0ZW0gPSB7IGFjdGlvbjogc3RyaW5nIH07XHJcbiAgICAgIHRoaXMubGlzdFZpZXcub25Db25maXJtZWQgPSAoaXRlbTogTmV3U2VsZWN0TGlzdEl0ZW0pID0+XHJcbiAgICAgICAgcmVzb2x2ZShpdGVtLmFjdGlvbik7XHJcblxyXG4gICAgICB0aGlzLmxpc3RWaWV3Lm9uQ2FuY2VsbGVkID0gKCkgPT4gcmVzb2x2ZShcImNhbmNlbFwiKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChhY3Rpb24gPT09IFwidG9rZW5cIikge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9tcHRGb3JUb2tlbihvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0aW9uID09PSBcImNvb2tpZVwiKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb21wdEZvckNvb2tpZShvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhY3Rpb24gPT09IFwiY2FuY2VsXCJcclxuICAgIHRoaXMubGlzdFZpZXcuY2FuY2VsKCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkdhdGV3YXkoZ2F0ZXdheUluZm86IEtlcm5lbEdhdGV3YXkpIHtcclxuICAgIHRoaXMubGlzdFZpZXcub25Db25maXJtZWQgPSBudWxsO1xyXG4gICAgYXdhaXQgdGhpcy5saXN0Vmlldy5zZWxlY3RMaXN0Vmlldy51cGRhdGUoe1xyXG4gICAgICBpdGVtczogW10sXHJcbiAgICAgIGluZm9NZXNzYWdlOiB1bmRlZmluZWQsXHJcbiAgICAgIGxvYWRpbmdNZXNzYWdlOiBcIkxvYWRpbmcgc2Vzc2lvbnMuLi5cIixcclxuICAgICAgZW1wdHlNZXNzYWdlOiBcIk5vIHNlc3Npb25zIGF2YWlsYWJsZVwiLFxyXG4gICAgfSBhcyBTZWxlY3RMaXN0UHJvcGVydGllcyk7XHJcbiAgICBjb25zdCBnYXRld2F5T3B0aW9ucyA9IHtcclxuICAgICAgeGhyRmFjdG9yeTogKCkgPT4gbmV3IFhNTEh0dHBSZXF1ZXN0KCksXHJcbiAgICAgIHdzRmFjdG9yeTogKHVybDogc3RyaW5nLCBwcm90b2NvbD86IHN0cmluZyB8IHN0cmluZ1tdKSA9PlxyXG4gICAgICAgIG5ldyB3cyh1cmwsIHByb3RvY29sKSxcclxuICAgICAgLi4uZ2F0ZXdheUluZm8ub3B0aW9ucyxcclxuICAgIH07XHJcbiAgICBsZXQgc2VydmVyU2V0dGluZ3MgPSBTZXJ2ZXJDb25uZWN0aW9uLm1ha2VTZXR0aW5ncyhnYXRld2F5T3B0aW9ucyk7XHJcbiAgICBsZXQgc3BlY01vZGVsczogS2VybmVsLklTcGVjTW9kZWxzIHwgdW5kZWZpbmVkO1xyXG4gICAgdHJ5IHtcclxuICAgICAgc3BlY01vZGVscyA9IGF3YWl0IEtlcm5lbC5nZXRTcGVjcyhzZXJ2ZXJTZXR0aW5ncyk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyBUaGUgZXJyb3IgdHlwZXMgeW91IGdldCBiYWNrIGF0IHRoaXMgc3RhZ2UgYXJlIGZhaXJseSBvcGFxdWUuIEluXHJcbiAgICAgIC8vIHBhcnRpY3VsYXIsIGhhdmluZyBpbnZhbGlkIGNyZWRlbnRpYWxzIHR5cGljYWxseSB0cmlnZ2VycyBFQ09OTlJFRlVTRURcclxuICAgICAgLy8gcmF0aGVyIHRoYW4gNDAzIEZvcmJpZGRlbi4gVGhpcyBkb2VzIHNvbWUgYmFzaWMgY2hlY2tzIGFuZCB0aGVuIGFzc3VtZXNcclxuICAgICAgLy8gdGhhdCBhbGwgcmVtYWluaW5nIGVycm9yIHR5cGVzIGNvdWxkIGJlIGNhdXNlZCBieSBpbnZhbGlkIGNyZWRlbnRpYWxzLlxyXG4gICAgICBpZiAoIWVycm9yLnhociB8fCAhZXJyb3IueGhyLnJlc3BvbnNlVGV4dCkge1xyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICB9IGVsc2UgaWYgKGVycm9yLnhoci5yZXNwb25zZVRleHQuaW5jbHVkZXMoXCJFVElNRURPVVRcIikpIHtcclxuICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXCJDb25uZWN0aW9uIHRvIGdhdGV3YXkgZmFpbGVkXCIpO1xyXG4gICAgICAgIHRoaXMubGlzdFZpZXcuY2FuY2VsKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHByb21wdFN1Y2NlZWRlZCA9IGF3YWl0IHRoaXMucHJvbXB0Rm9yQ3JlZGVudGlhbHMoZ2F0ZXdheU9wdGlvbnMpO1xyXG5cclxuICAgICAgICBpZiAoIXByb21wdFN1Y2NlZWRlZCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VydmVyU2V0dGluZ3MgPSBTZXJ2ZXJDb25uZWN0aW9uLm1ha2VTZXR0aW5ncyhnYXRld2F5T3B0aW9ucyk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5saXN0Vmlldy5zZWxlY3RMaXN0Vmlldy51cGRhdGUoe1xyXG4gICAgICAgICAgaXRlbXM6IFtdLFxyXG4gICAgICAgICAgaW5mb01lc3NhZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGxvYWRpbmdNZXNzYWdlOiBcIkxvYWRpbmcgc2Vzc2lvbnMuLi5cIixcclxuICAgICAgICAgIGVtcHR5TWVzc2FnZTogXCJObyBzZXNzaW9ucyBhdmFpbGFibGVcIixcclxuICAgICAgICB9IGFzIFNlbGVjdExpc3RQcm9wZXJ0aWVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghc3BlY01vZGVscykge1xyXG4gICAgICAgIHNwZWNNb2RlbHMgPSBhd2FpdCBLZXJuZWwuZ2V0U3BlY3Moc2VydmVyU2V0dGluZ3MpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBrZXJuZWxTcGVjcyA9IGZpbHRlcihzcGVjTW9kZWxzLmtlcm5lbHNwZWNzLCAoc3BlYykgPT5cclxuICAgICAgICB0aGlzLl9rZXJuZWxTcGVjRmlsdGVyKHNwZWMpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoa2VybmVsU3BlY3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5saXN0Vmlldy5jYW5jZWwoKTtcclxuICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoXHJcbiAgICAgICAgICBgVGhlcmVyIGFyZSBubyBrZXJuZWxzIHRoYXQgbWF0Y2hlcyB0aGUgZ3JhbW1hciBvZiB0aGUgY3VycmVudGx5IG9wZW4gZmlsZS5cclxuICAgICAgICAgICBPcGVuIHRoZSBmaWxlIHlvdSBpbnRlbmQgdG8gdXNlIHRoZSByZW1vdGUga2VybmVsIGZvciBhbmQgdHJ5IGFnYWluLlxyXG4gICAgICAgICAgIFlvdSBtaWdodCBhbHNvIG5lZWQgdG8gY2hvb3NlIHRoZSBjb3JyZWN0IGdyYW1tYXIgZm9yIHRoZSBmaWxlLmBcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qga2VybmVsTmFtZXMgPSBrZXJuZWxTcGVjcy5tYXAoKHNwZWNNb2RlbCkgPT4gc3BlY01vZGVsLm5hbWUpO1xyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgc2Vzc2lvbk1vZGVscyA9IGF3YWl0IFNlc3Npb24ubGlzdFJ1bm5pbmcoc2VydmVyU2V0dGluZ3MpO1xyXG4gICAgICAgIC8vIGlmIG5vIHNlZXNzaW9uIHByb3BtdCBmb3IgdGhlIGNyZW5kaWFsc1xyXG4gICAgICAgIC8vIGlmIHRoZSBrZXJuZWwgc3RpbGwgcmVmdXNlZCwgdGhlbiBnbyB0byBjYXRjaCBibG9ja1xyXG4gICAgICAgIGlmIChzZXNzaW9uTW9kZWxzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm9tcHRGb3JDcmVkZW50aWFscyhnYXRld2F5T3B0aW9ucyk7XHJcbiAgICAgICAgICBzZXJ2ZXJTZXR0aW5ncyA9IFNlcnZlckNvbm5lY3Rpb24ubWFrZVNldHRpbmdzKGdhdGV3YXlPcHRpb25zKTtcclxuICAgICAgICAgIHNlc3Npb25Nb2RlbHMgPSBhd2FpdCBTZXNzaW9uLmxpc3RSdW5uaW5nKHNlcnZlclNldHRpbmdzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2Vzc2lvbk1vZGVscyA9IHNlc3Npb25Nb2RlbHMuZmlsdGVyKChtb2RlbCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbmFtZSA9IG1vZGVsLmtlcm5lbCA/IG1vZGVsLmtlcm5lbC5uYW1lIDogbnVsbDtcclxuICAgICAgICAgIHJldHVybiBuYW1lID8ga2VybmVsTmFtZXMuaW5jbHVkZXMobmFtZSkgOiB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gc2Vzc2lvbk1vZGVscy5tYXAoKG1vZGVsKSA9PiB7XHJcbiAgICAgICAgICBsZXQgbmFtZTogc3RyaW5nO1xyXG5cclxuICAgICAgICAgIGlmIChtb2RlbC5wYXRoKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSB0aWxkaWZ5KG1vZGVsLnBhdGgpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5ub3RlYm9vay5wYXRoKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSB0aWxkaWZ5KG1vZGVsLm5vdGVib29rIS5wYXRoKTsgLy8gVE9ETyBmaXggdGhlIHR5cGVzXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBuYW1lID0gYFNlc3Npb24gJHttb2RlbC5pZH1gO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgIG1vZGVsLFxyXG4gICAgICAgICAgICBvcHRpb25zOiBzZXJ2ZXJTZXR0aW5ncyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXRlbXMudW5zaGlmdCh7XHJcbiAgICAgICAgICBuYW1lOiBcIltuZXcgc2Vzc2lvbl1cIixcclxuICAgICAgICAgIG1vZGVsOiBudWxsLFxyXG4gICAgICAgICAgb3B0aW9uczogc2VydmVyU2V0dGluZ3MsXHJcbiAgICAgICAgICBrZXJuZWxTcGVjcyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmxpc3RWaWV3Lm9uQ29uZmlybWVkID0gdGhpcy5vblNlc3Npb24uYmluZCh0aGlzLCBnYXRld2F5SW5mby5uYW1lKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmxpc3RWaWV3LnNlbGVjdExpc3RWaWV3LnVwZGF0ZSh7XHJcbiAgICAgICAgICBpdGVtcyxcclxuICAgICAgICAgIGxvYWRpbmdNZXNzYWdlOiBudWxsLFxyXG4gICAgICAgIH0gYXMgU2VsZWN0TGlzdFByb3BlcnRpZXMpO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGlmICghZXJyb3IueGhyIHx8IGVycm9yLnhoci5zdGF0dXMgIT09IDQwMykge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEdhdGV3YXlzIG9mZmVyIHRoZSBvcHRpb24gb2YgbmV2ZXIgbGlzdGluZyBzZXNzaW9ucywgZm9yIHNlY3VyaXR5XHJcbiAgICAgICAgLy8gcmVhc29ucy5cclxuICAgICAgICAvLyBBc3N1bWUgdGhpcyBpcyB0aGUgY2FzZSBhbmQgcHJvY2VlZCB0byBjcmVhdGluZyBhIG5ldyBzZXNzaW9uLlxyXG4gICAgICAgIHRoaXMub25TZXNzaW9uKGdhdGV3YXlJbmZvLm5hbWUsIHtcclxuICAgICAgICAgIG5hbWU6IFwiW25ldyBzZXNzaW9uXVwiLFxyXG4gICAgICAgICAgbW9kZWw6IG51bGwsXHJcbiAgICAgICAgICBvcHRpb25zOiBzZXJ2ZXJTZXR0aW5ncyxcclxuICAgICAgICAgIGtlcm5lbFNwZWNzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIkNvbm5lY3Rpb24gdG8gZ2F0ZXdheSBmYWlsZWRcIik7XHJcbiAgICAgIHRoaXMubGlzdFZpZXcuY2FuY2VsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlc3Npb24oXHJcbiAgICBnYXRld2F5TmFtZTogc3RyaW5nLFxyXG4gICAgc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvV2l0aE1vZGVsIHwgU2Vzc2lvbkluZm9XaXRob3V0TW9kZWxcclxuICApIHtcclxuICAgIGNvbnN0IG1vZGVsID0gc2Vzc2lvbkluZm8ubW9kZWw7XHJcbiAgICBpZiAobW9kZWwgPT09IG51bGwgfHwgbW9kZWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAvLyBtb2RlbCBub3QgcHJvdmlkZWRcclxuICAgICAgcmV0dXJuIHRoaXMub25TZXNzaW9uV2l0b3V0aE1vZGVsKFxyXG4gICAgICAgIGdhdGV3YXlOYW1lLFxyXG4gICAgICAgIHNlc3Npb25JbmZvIGFzIFNlc3Npb25JbmZvV2l0aG91dE1vZGVsXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB3aXRoIG1vZGVsXHJcbiAgICAgIHJldHVybiB0aGlzLm9uU2Vzc2lvbldpdGhNb2RlbChcclxuICAgICAgICBnYXRld2F5TmFtZSxcclxuICAgICAgICBzZXNzaW9uSW5mbyBhcyBTZXNzaW9uSW5mb1dpdGhNb2RlbFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TZXNzaW9uV2l0aE1vZGVsKFxyXG4gICAgZ2F0ZXdheU5hbWU6IHN0cmluZyxcclxuICAgIHNlc3Npb25JbmZvOiBTZXNzaW9uSW5mb1dpdGhNb2RlbFxyXG4gICkge1xyXG4gICAgdGhpcy5vblNlc3Npb25DaG9zZW4oXHJcbiAgICAgIGdhdGV3YXlOYW1lLFxyXG4gICAgICBhd2FpdCBTZXNzaW9uLmNvbm5lY3RUbyhzZXNzaW9uSW5mby5tb2RlbC5pZCwgc2Vzc2lvbkluZm8ub3B0aW9ucylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblNlc3Npb25XaXRvdXRoTW9kZWwoXHJcbiAgICBnYXRld2F5TmFtZTogc3RyaW5nLFxyXG4gICAgc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvV2l0aG91dE1vZGVsXHJcbiAgKSB7XHJcbiAgICBpZiAoIXNlc3Npb25JbmZvLm5hbWUpIHtcclxuICAgICAgYXdhaXQgdGhpcy5saXN0Vmlldy5zZWxlY3RMaXN0Vmlldy51cGRhdGUoe1xyXG4gICAgICAgIGl0ZW1zOiBbXSxcclxuICAgICAgICBlcnJvck1lc3NhZ2U6IFwiVGhpcyBnYXRld2F5IGRvZXMgbm90IHN1cHBvcnQgbGlzdGluZyBzZXNzaW9uc1wiLFxyXG4gICAgICAgIGxvYWRpbmdNZXNzYWdlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgaW5mb01lc3NhZ2U6IHVuZGVmaW5lZCxcclxuICAgICAgfSBhcyBTZWxlY3RMaXN0UHJvcGVydGllcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXRlbXMgPSBzZXNzaW9uSW5mby5rZXJuZWxTcGVjcy5tYXAoKHNwZWMpID0+IHtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICBzZXJ2ZXJTZXR0aW5nczogc2Vzc2lvbkluZm8ub3B0aW9ucyxcclxuICAgICAgICBrZXJuZWxOYW1lOiBzcGVjLm5hbWUsXHJcbiAgICAgICAgcGF0aDogdGhpcy5fcGF0aCxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuYW1lOiBzcGVjLmRpc3BsYXlfbmFtZSxcclxuICAgICAgICBvcHRpb25zLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5saXN0Vmlldy5vbkNvbmZpcm1lZCA9IHRoaXMuc3RhcnRTZXNzaW9uLmJpbmQodGhpcywgZ2F0ZXdheU5hbWUpO1xyXG4gICAgYXdhaXQgdGhpcy5saXN0Vmlldy5zZWxlY3RMaXN0Vmlldy51cGRhdGUoe1xyXG4gICAgICBpdGVtcyxcclxuICAgICAgZW1wdHlNZXNzYWdlOiBcIk5vIGtlcm5lbCBzcGVjcyBhdmFpbGFibGVcIixcclxuICAgICAgaW5mb01lc3NhZ2U6IFwiU2VsZWN0IGEgc2Vzc2lvblwiLFxyXG4gICAgICBsb2FkaW5nTWVzc2FnZTogdW5kZWZpbmVkLFxyXG4gICAgfSBhcyBTZWxlY3RMaXN0UHJvcGVydGllcyk7XHJcbiAgfVxyXG5cclxuICBzdGFydFNlc3Npb24oZ2F0ZXdheU5hbWU6IHN0cmluZywgc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvV2l0aG91dE1vZGVsKSB7XHJcbiAgICBTZXNzaW9uLnN0YXJ0TmV3KHNlc3Npb25JbmZvLm9wdGlvbnMpLnRoZW4oXHJcbiAgICAgIHRoaXMub25TZXNzaW9uQ2hvc2VuLmJpbmQodGhpcywgZ2F0ZXdheU5hbWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TZXNzaW9uQ2hvc2VuKGdhdGV3YXlOYW1lOiBzdHJpbmcsIHNlc3Npb246IFNlc3Npb24uSVNlc3Npb24pIHtcclxuICAgIHRoaXMubGlzdFZpZXcuY2FuY2VsKCk7XHJcbiAgICBjb25zdCBrZXJuZWxTcGVjID0gYXdhaXQgc2Vzc2lvbi5rZXJuZWwuZ2V0U3BlYygpO1xyXG4gICAgaWYgKCFzdG9yZS5ncmFtbWFyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGtlcm5lbCA9IG5ldyBXU0tlcm5lbChcclxuICAgICAgZ2F0ZXdheU5hbWUsXHJcbiAgICAgIGtlcm5lbFNwZWMsXHJcbiAgICAgIHN0b3JlLmdyYW1tYXIsXHJcbiAgICAgIHNlc3Npb25cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5fb25DaG9zZW4oa2VybmVsKTtcclxuICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/ws-kernel.d.ts b/dist/ws-kernel.d.ts deleted file mode 100644 index 3304783f9..000000000 --- a/dist/ws-kernel.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Grammar } from "atom"; -import KernelTransport from "./kernel-transport"; -import type { ResultsCallback } from "./kernel-transport"; -import type { Session, Kernel } from "@jupyterlab/services"; -import type { KernelspecMetadata } from "@nteract/types"; -export default class WSKernel extends KernelTransport { - session: Session.ISession; - constructor(gatewayName: string, kernelSpec: Kernel.ISpecModel | KernelspecMetadata, grammar: Grammar, session: Session.ISession); - interrupt(): void; - shutdown(): Promise; - restart(onRestarted: () => void | null | undefined): void; - execute(code: string, onResults: ResultsCallback): void; - complete(code: string, onResults: ResultsCallback): void; - inspect(code: string, cursorPos: number, onResults: ResultsCallback): void; - inputReply(input: string): void; - promptRename(): void; - destroy(): void; -} diff --git a/dist/ws-kernel.js b/dist/ws-kernel.js index c369def5f..89b84d1c3 100644 --- a/dist/ws-kernel.js +++ b/dist/ws-kernel.js @@ -18,8 +18,8 @@ class WSKernel extends kernel_transport_1.default { this.session.kernel.interrupt(); } async shutdown() { - var _a, _b, _c; - await ((_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.shutdown()) !== null && _b !== void 0 ? _b : (_c = this.session.kernel) === null || _c === void 0 ? void 0 : _c.shutdown()); + var _a; + await ((_a = this.session.shutdown()) !== null && _a !== void 0 ? _a : this.session.kernel.shutdown()); } restart(onRestarted) { const future = this.session.kernel.restart(); @@ -77,4 +77,4 @@ class WSKernel extends kernel_transport_1.default { } } exports.default = WSKernel; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Mta2VybmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3dzLWtlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDBFQUFpRDtBQUVqRCw4REFBcUM7QUFDckMsbUNBQWtEO0FBS2xELE1BQXFCLFFBQVMsU0FBUSwwQkFBZTtJQUduRCxZQUNFLFdBQW1CLEVBQ25CLFVBQWtELEVBQ2xELE9BQWdCLEVBQ2hCLE9BQXlCO1FBRXpCLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FDNUMsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFROztRQUVaLE1BQU0sQ0FBQyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsUUFBUSxFQUFFLG1DQUFJLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLDBDQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUEwQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksV0FBVyxFQUFFO2dCQUNmLFdBQVcsRUFBRSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLFNBQTBCO1FBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUNoRCxJQUFJO1NBQ0wsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwQyxXQUFHLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVuRSxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVksRUFBRSxTQUEwQjtRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07YUFDaEIsZUFBZSxDQUFDO1lBQ2YsSUFBSTtZQUNKLFVBQVUsRUFBRSwwQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztTQUNsRCxDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLFNBQWlCLEVBQUUsU0FBMEI7UUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2FBQ2hCLGNBQWMsQ0FBQztZQUNkLElBQUk7WUFDSixVQUFVLEVBQUUsU0FBUztZQUNyQixZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDakMsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sSUFBSSxHQUFHLElBQUksb0JBQVMsQ0FDeEI7WUFDRSxNQUFNLEVBQUUsMkJBQTJCO1lBQ25DLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDOUIsV0FBVyxFQUFFLElBQUk7U0FDbEIsRUFDRCxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQy9DLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU87UUFDTCxXQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUE3RkQsMkJBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhbW1hciB9IGZyb20gXCJhdG9tXCI7XG5pbXBvcnQgS2VybmVsVHJhbnNwb3J0IGZyb20gXCIuL2tlcm5lbC10cmFuc3BvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVzdWx0c0NhbGxiYWNrIH0gZnJvbSBcIi4va2VybmVsLXRyYW5zcG9ydFwiO1xuaW1wb3J0IElucHV0VmlldyBmcm9tIFwiLi9pbnB1dC12aWV3XCI7XG5pbXBvcnQgeyBsb2csIGpzX2lkeF90b19jaGFyX2lkeCB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IFNlc3Npb24sIEtlcm5lbCB9IGZyb20gXCJAanVweXRlcmxhYi9zZXJ2aWNlc1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcIi4vaHlkcm9nZW5cIjtcbmltcG9ydCB0eXBlIHsgS2VybmVsc3BlY01ldGFkYXRhIH0gZnJvbSBcIkBudGVyYWN0L3R5cGVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdTS2VybmVsIGV4dGVuZHMgS2VybmVsVHJhbnNwb3J0IHtcbiAgc2Vzc2lvbjogU2Vzc2lvbi5JU2Vzc2lvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBnYXRld2F5TmFtZTogc3RyaW5nLFxuICAgIGtlcm5lbFNwZWM6IEtlcm5lbC5JU3BlY01vZGVsIHwgS2VybmVsc3BlY01ldGFkYXRhLFxuICAgIGdyYW1tYXI6IEdyYW1tYXIsXG4gICAgc2Vzc2lvbjogU2Vzc2lvbi5JU2Vzc2lvblxuICApIHtcbiAgICBzdXBlcihrZXJuZWxTcGVjLCBncmFtbWFyKTtcbiAgICB0aGlzLnNlc3Npb24gPSBzZXNzaW9uO1xuICAgIHRoaXMuZ2F0ZXdheU5hbWUgPSBnYXRld2F5TmFtZTtcbiAgICB0aGlzLnNlc3Npb24uc3RhdHVzQ2hhbmdlZC5jb25uZWN0KCgpID0+XG4gICAgICB0aGlzLnNldEV4ZWN1dGlvblN0YXRlKHRoaXMuc2Vzc2lvbi5zdGF0dXMpXG4gICAgKTtcbiAgICB0aGlzLnNldEV4ZWN1dGlvblN0YXRlKHRoaXMuc2Vzc2lvbi5zdGF0dXMpOyAvLyBTZXQgaW5pdGlhbCBzdGF0dXMgY29ycmVjdGx5XG4gIH1cblxuICBpbnRlcnJ1cHQoKSB7XG4gICAgdGhpcy5zZXNzaW9uLmtlcm5lbC5pbnRlcnJ1cHQoKTtcbiAgfVxuXG4gIGFzeW5jIHNodXRkb3duKCkge1xuICAgIC8vIFRPRE8gJ3NodXRkb3duJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICdJS2VybmVsQ29ubmVjdGlvbidcbiAgICBhd2FpdCAodGhpcy5zZXNzaW9uPy5zaHV0ZG93bigpID8/IHRoaXMuc2Vzc2lvbi5rZXJuZWw/LnNodXRkb3duKCkpO1xuICB9XG5cbiAgcmVzdGFydChvblJlc3RhcnRlZDogKCkgPT4gdm9pZCB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBmdXR1cmUgPSB0aGlzLnNlc3Npb24ua2VybmVsLnJlc3RhcnQoKTtcbiAgICBmdXR1cmUudGhlbigoKSA9PiB7XG4gICAgICBpZiAob25SZXN0YXJ0ZWQpIHtcbiAgICAgICAgb25SZXN0YXJ0ZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGV4ZWN1dGUoY29kZTogc3RyaW5nLCBvblJlc3VsdHM6IFJlc3VsdHNDYWxsYmFjaykge1xuICAgIGNvbnN0IGZ1dHVyZSA9IHRoaXMuc2Vzc2lvbi5rZXJuZWwucmVxdWVzdEV4ZWN1dGUoe1xuICAgICAgY29kZSxcbiAgICB9KTtcblxuICAgIGZ1dHVyZS5vbklPUHViID0gKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcbiAgICAgIGxvZyhcIldTS2VybmVsOiBleGVjdXRlOlwiLCBtZXNzYWdlKTtcbiAgICAgIG9uUmVzdWx0cyhtZXNzYWdlLCBcImlvcHViXCIpO1xuICAgIH07XG5cbiAgICBmdXR1cmUub25SZXBseSA9IChtZXNzYWdlOiBNZXNzYWdlKSA9PiBvblJlc3VsdHMobWVzc2FnZSwgXCJzaGVsbFwiKTtcblxuICAgIGZ1dHVyZS5vblN0ZGluID0gKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IG9uUmVzdWx0cyhtZXNzYWdlLCBcInN0ZGluXCIpO1xuICB9XG5cbiAgY29tcGxldGUoY29kZTogc3RyaW5nLCBvblJlc3VsdHM6IFJlc3VsdHNDYWxsYmFjaykge1xuICAgIHRoaXMuc2Vzc2lvbi5rZXJuZWxcbiAgICAgIC5yZXF1ZXN0Q29tcGxldGUoe1xuICAgICAgICBjb2RlLFxuICAgICAgICBjdXJzb3JfcG9zOiBqc19pZHhfdG9fY2hhcl9pZHgoY29kZS5sZW5ndGgsIGNvZGUpLFxuICAgICAgfSlcbiAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlKSA9PiBvblJlc3VsdHMobWVzc2FnZSwgXCJzaGVsbFwiKSk7XG4gIH1cblxuICBpbnNwZWN0KGNvZGU6IHN0cmluZywgY3Vyc29yUG9zOiBudW1iZXIsIG9uUmVzdWx0czogUmVzdWx0c0NhbGxiYWNrKSB7XG4gICAgdGhpcy5zZXNzaW9uLmtlcm5lbFxuICAgICAgLnJlcXVlc3RJbnNwZWN0KHtcbiAgICAgICAgY29kZSxcbiAgICAgICAgY3Vyc29yX3BvczogY3Vyc29yUG9zLFxuICAgICAgICBkZXRhaWxfbGV2ZWw6IDAsXG4gICAgICB9KVxuICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IG9uUmVzdWx0cyhtZXNzYWdlLCBcInNoZWxsXCIpKTtcbiAgfVxuXG4gIGlucHV0UmVwbHkoaW5wdXQ6IHN0cmluZykge1xuICAgIHRoaXMuc2Vzc2lvbi5rZXJuZWwuc2VuZElucHV0UmVwbHkoe1xuICAgICAgdmFsdWU6IGlucHV0LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvbXB0UmVuYW1lKCkge1xuICAgIGNvbnN0IHZpZXcgPSBuZXcgSW5wdXRWaWV3KFxuICAgICAge1xuICAgICAgICBwcm9tcHQ6IFwiTmFtZSB5b3VyIGN1cnJlbnQgc2Vzc2lvblwiLFxuICAgICAgICBkZWZhdWx0VGV4dDogdGhpcy5zZXNzaW9uLnBhdGgsXG4gICAgICAgIGFsbG93Q2FuY2VsOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIChpbnB1dDogc3RyaW5nKSA9PiB0aGlzLnNlc3Npb24uc2V0UGF0aChpbnB1dClcbiAgICApO1xuICAgIHZpZXcuYXR0YWNoKCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIGxvZyhcIldTS2VybmVsOiBkZXN0cm95aW5nIGp1cHl0ZXItanMtc2VydmljZXMgU2Vzc2lvblwiKTtcbiAgICB0aGlzLnNlc3Npb24uZGlzcG9zZSgpO1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Mta2VybmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3dzLWtlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDBFQUFpRDtBQUVqRCw4REFBcUM7QUFDckMsbUNBQWtEO0FBS2xELE1BQXFCLFFBQVMsU0FBUSwwQkFBZTtJQUduRCxZQUNFLFdBQW1CLEVBQ25CLFVBQWtELEVBQ2xELE9BQWdCLEVBQ2hCLE9BQXlCO1FBRXpCLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FDNUMsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFROztRQUVaLE1BQU0sQ0FBQyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLG1DQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUEwQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksV0FBVyxFQUFFO2dCQUNmLFdBQVcsRUFBRSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLFNBQTBCO1FBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUNoRCxJQUFJO1NBQ0wsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwQyxXQUFHLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVuRSxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVksRUFBRSxTQUEwQjtRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07YUFDaEIsZUFBZSxDQUFDO1lBQ2YsSUFBSTtZQUNKLFVBQVUsRUFBRSwwQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztTQUNsRCxDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLFNBQWlCLEVBQUUsU0FBMEI7UUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2FBQ2hCLGNBQWMsQ0FBQztZQUNkLElBQUk7WUFDSixVQUFVLEVBQUUsU0FBUztZQUNyQixZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDakMsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sSUFBSSxHQUFHLElBQUksb0JBQVMsQ0FDeEI7WUFDRSxNQUFNLEVBQUUsMkJBQTJCO1lBQ25DLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDOUIsV0FBVyxFQUFFLElBQUk7U0FDbEIsRUFDRCxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQy9DLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU87UUFDTCxXQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUE3RkQsMkJBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhbW1hciB9IGZyb20gXCJhdG9tXCI7XHJcbmltcG9ydCBLZXJuZWxUcmFuc3BvcnQgZnJvbSBcIi4va2VybmVsLXRyYW5zcG9ydFwiO1xyXG5pbXBvcnQgdHlwZSB7IFJlc3VsdHNDYWxsYmFjayB9IGZyb20gXCIuL2tlcm5lbC10cmFuc3BvcnRcIjtcclxuaW1wb3J0IElucHV0VmlldyBmcm9tIFwiLi9pbnB1dC12aWV3XCI7XHJcbmltcG9ydCB7IGxvZywganNfaWR4X3RvX2NoYXJfaWR4IH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuaW1wb3J0IHR5cGUgeyBTZXNzaW9uLCBLZXJuZWwgfSBmcm9tIFwiQGp1cHl0ZXJsYWIvc2VydmljZXNcIjtcclxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcIi4vaHlkcm9nZW5cIjtcclxuaW1wb3J0IHR5cGUgeyBLZXJuZWxzcGVjTWV0YWRhdGEgfSBmcm9tIFwiQG50ZXJhY3QvdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdTS2VybmVsIGV4dGVuZHMgS2VybmVsVHJhbnNwb3J0IHtcclxuICBzZXNzaW9uOiBTZXNzaW9uLklTZXNzaW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGdhdGV3YXlOYW1lOiBzdHJpbmcsXHJcbiAgICBrZXJuZWxTcGVjOiBLZXJuZWwuSVNwZWNNb2RlbCB8IEtlcm5lbHNwZWNNZXRhZGF0YSxcclxuICAgIGdyYW1tYXI6IEdyYW1tYXIsXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uLklTZXNzaW9uXHJcbiAgKSB7XHJcbiAgICBzdXBlcihrZXJuZWxTcGVjLCBncmFtbWFyKTtcclxuICAgIHRoaXMuc2Vzc2lvbiA9IHNlc3Npb247XHJcbiAgICB0aGlzLmdhdGV3YXlOYW1lID0gZ2F0ZXdheU5hbWU7XHJcbiAgICB0aGlzLnNlc3Npb24uc3RhdHVzQ2hhbmdlZC5jb25uZWN0KCgpID0+XHJcbiAgICAgIHRoaXMuc2V0RXhlY3V0aW9uU3RhdGUodGhpcy5zZXNzaW9uLnN0YXR1cylcclxuICAgICk7XHJcbiAgICB0aGlzLnNldEV4ZWN1dGlvblN0YXRlKHRoaXMuc2Vzc2lvbi5zdGF0dXMpOyAvLyBTZXQgaW5pdGlhbCBzdGF0dXMgY29ycmVjdGx5XHJcbiAgfVxyXG5cclxuICBpbnRlcnJ1cHQoKSB7XHJcbiAgICB0aGlzLnNlc3Npb24ua2VybmVsLmludGVycnVwdCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2h1dGRvd24oKSB7XHJcbiAgICAvLyBUT0RPICdzaHV0ZG93bicgZG9lcyBub3QgZXhpc3Qgb24gdHlwZSAnSUtlcm5lbENvbm5lY3Rpb24nXHJcbiAgICBhd2FpdCAodGhpcy5zZXNzaW9uLnNodXRkb3duKCkgPz8gdGhpcy5zZXNzaW9uLmtlcm5lbC5zaHV0ZG93bigpKTtcclxuICB9XHJcblxyXG4gIHJlc3RhcnQob25SZXN0YXJ0ZWQ6ICgpID0+IHZvaWQgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBjb25zdCBmdXR1cmUgPSB0aGlzLnNlc3Npb24ua2VybmVsLnJlc3RhcnQoKTtcclxuICAgIGZ1dHVyZS50aGVuKCgpID0+IHtcclxuICAgICAgaWYgKG9uUmVzdGFydGVkKSB7XHJcbiAgICAgICAgb25SZXN0YXJ0ZWQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBleGVjdXRlKGNvZGU6IHN0cmluZywgb25SZXN1bHRzOiBSZXN1bHRzQ2FsbGJhY2spIHtcclxuICAgIGNvbnN0IGZ1dHVyZSA9IHRoaXMuc2Vzc2lvbi5rZXJuZWwucmVxdWVzdEV4ZWN1dGUoe1xyXG4gICAgICBjb2RlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZnV0dXJlLm9uSU9QdWIgPSAobWVzc2FnZTogTWVzc2FnZSkgPT4ge1xyXG4gICAgICBsb2coXCJXU0tlcm5lbDogZXhlY3V0ZTpcIiwgbWVzc2FnZSk7XHJcbiAgICAgIG9uUmVzdWx0cyhtZXNzYWdlLCBcImlvcHViXCIpO1xyXG4gICAgfTtcclxuXHJcbiAgICBmdXR1cmUub25SZXBseSA9IChtZXNzYWdlOiBNZXNzYWdlKSA9PiBvblJlc3VsdHMobWVzc2FnZSwgXCJzaGVsbFwiKTtcclxuXHJcbiAgICBmdXR1cmUub25TdGRpbiA9IChtZXNzYWdlOiBNZXNzYWdlKSA9PiBvblJlc3VsdHMobWVzc2FnZSwgXCJzdGRpblwiKTtcclxuICB9XHJcblxyXG4gIGNvbXBsZXRlKGNvZGU6IHN0cmluZywgb25SZXN1bHRzOiBSZXN1bHRzQ2FsbGJhY2spIHtcclxuICAgIHRoaXMuc2Vzc2lvbi5rZXJuZWxcclxuICAgICAgLnJlcXVlc3RDb21wbGV0ZSh7XHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICBjdXJzb3JfcG9zOiBqc19pZHhfdG9fY2hhcl9pZHgoY29kZS5sZW5ndGgsIGNvZGUpLFxyXG4gICAgICB9KVxyXG4gICAgICAudGhlbigobWVzc2FnZTogTWVzc2FnZSkgPT4gb25SZXN1bHRzKG1lc3NhZ2UsIFwic2hlbGxcIikpO1xyXG4gIH1cclxuXHJcbiAgaW5zcGVjdChjb2RlOiBzdHJpbmcsIGN1cnNvclBvczogbnVtYmVyLCBvblJlc3VsdHM6IFJlc3VsdHNDYWxsYmFjaykge1xyXG4gICAgdGhpcy5zZXNzaW9uLmtlcm5lbFxyXG4gICAgICAucmVxdWVzdEluc3BlY3Qoe1xyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgY3Vyc29yX3BvczogY3Vyc29yUG9zLFxyXG4gICAgICAgIGRldGFpbF9sZXZlbDogMCxcclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IG9uUmVzdWx0cyhtZXNzYWdlLCBcInNoZWxsXCIpKTtcclxuICB9XHJcblxyXG4gIGlucHV0UmVwbHkoaW5wdXQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZXNzaW9uLmtlcm5lbC5zZW5kSW5wdXRSZXBseSh7XHJcbiAgICAgIHZhbHVlOiBpbnB1dCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvbXB0UmVuYW1lKCkge1xyXG4gICAgY29uc3QgdmlldyA9IG5ldyBJbnB1dFZpZXcoXHJcbiAgICAgIHtcclxuICAgICAgICBwcm9tcHQ6IFwiTmFtZSB5b3VyIGN1cnJlbnQgc2Vzc2lvblwiLFxyXG4gICAgICAgIGRlZmF1bHRUZXh0OiB0aGlzLnNlc3Npb24ucGF0aCxcclxuICAgICAgICBhbGxvd0NhbmNlbDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgKGlucHV0OiBzdHJpbmcpID0+IHRoaXMuc2Vzc2lvbi5zZXRQYXRoKGlucHV0KVxyXG4gICAgKTtcclxuICAgIHZpZXcuYXR0YWNoKCk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgbG9nKFwiV1NLZXJuZWw6IGRlc3Ryb3lpbmcganVweXRlci1qcy1zZXJ2aWNlcyBTZXNzaW9uXCIpO1xyXG4gICAgdGhpcy5zZXNzaW9uLmRpc3Bvc2UoKTtcclxuICAgIHN1cGVyLmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/zmq-kernel.d.ts b/dist/zmq-kernel.d.ts deleted file mode 100644 index 6d134fa51..000000000 --- a/dist/zmq-kernel.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/// -import { Grammar } from "atom"; -import { ChildProcess } from "child_process"; -import { Message, Socket } from "@aminya/jmp"; -import KernelTransport from "./kernel-transport"; -import type { ResultsCallback } from "./kernel-transport"; -import type { KernelspecMetadata } from "@nteract/types"; -export declare type Connection = { - control_port: number; - hb_port: number; - iopub_port: number; - ip: string; - key: string; - shell_port: number; - signature_scheme: string; - stdin_port: number; - transport: string; - version: number; -}; -export default class ZMQKernel extends KernelTransport { - executionCallbacks: Record; - connection: Connection; - connectionFile: string; - kernelProcess: ChildProcess; - options: Record; - shellSocket: Socket; - stdinSocket: Socket; - ioSocket: Socket; - constructor(kernelSpec: KernelspecMetadata, grammar: Grammar, options: Record, onStarted: ((...args: Array) => any) | null | undefined); - connect(done: ((...args: Array) => any) | null | undefined): void; - monitorNotifications(childProcess: ChildProcess): void; - monitor(done: ((...args: Array) => any) | null | undefined): void; - interrupt(): void; - _kill(): void; - _executeStartupCode(): void; - shutdown(): void; - restart(onRestarted: ((...args: Array) => any) | null | undefined): void; - _socketShutdown(restart?: boolean | null | undefined): void; - _socketRestart(onRestarted: ((...args: Array) => any) | null | undefined): void; - execute(code: string, onResults: ResultsCallback): void; - complete(code: string, onResults: ResultsCallback): void; - inspect(code: string, cursorPos: number, onResults: ResultsCallback): void; - inputReply(input: string): void; - onShellMessage(message: Message): void; - onStdinMessage(message: Message): void; - onIOMessage(message: Message): void; - destroy(): void; -}