jderobot-ide-interface 0.3.17 → 0.3.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/a5a14e7d119e89dea736.wasm +0 -0
- package/dist/components/Explorer/file_explorer/TreeNode.styles.d.ts +1 -1
- package/dist/components/FileEditor/FileEditor.d.ts +2 -1
- package/dist/components/FileEditor/IdeInterface.stories.d.ts +5 -0
- package/dist/components/FileEditor/TextEditor.d.ts +2 -1
- package/dist/components/FileEditor/lsp-client.d.ts +1 -0
- package/dist/components/IdeInterface/IdeInterface.stories.d.ts +1 -1
- package/dist/components/Modals/Modal.styles.d.ts +2 -2
- package/dist/d94e0a7c7ed2cbcaeba4.html +123 -0
- package/dist/main.js +10 -4
- package/dist/node_fs_promises.main.js +13 -0
- package/dist/node_modules_vscode_diff_dist_worker_js_esm.main.js +397 -0
- package/dist/package.json +1 -1
- package/dist/vendors-node_modules_jschardet_index_js.main.js +8224 -0
- package/dist/vendors-node_modules_vscode_diff_dist_index_js.main.js +626 -0
- package/dist/vendors-node_modules_vscode_diff_dist_wire_js.main.js +2233 -0
- package/dist/vendors-node_modules_vscode_iconv-lite-umd_lib_iconv-lite-umd_js.main.js +18 -0
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
(this["webpackChunkjderobot_ide_interface"] = this["webpackChunkjderobot_ide_interface"] || []).push([["node_fs_promises"],{
|
|
2
|
+
|
|
3
|
+
/***/ "node:fs/promises"
|
|
4
|
+
/*!************************!*\
|
|
5
|
+
!*** node:fs/promises ***!
|
|
6
|
+
\************************/
|
|
7
|
+
() {
|
|
8
|
+
|
|
9
|
+
throw new Error("Module build failed: UnhandledSchemeError: Reading from \"node:fs/promises\" is not handled by plugins (Unhandled scheme).\nWebpack supports \"data:\" and \"file:\" URIs by default.\nYou may need an additional plugin to handle \"node:\" URIs.\n at /home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/NormalModule.js:1577:13\n at Hook.eval [as callAsync] (eval at create (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/tapable/lib/HookCodeFactory.js:31:10), <anonymous>:6:1)\n at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/tapable/lib/Hook.js:21:14)\n at /home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/NormalModule.js:1571:10\n at new Promise (<anonymous>)\n at readResource (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/NormalModule.js:1568:14)\n at Object.processResource (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/NormalModule.js:1590:28)\n at processResource (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/loader-runner/lib/LoaderRunner.js:295:10)\n at iteratePitchingLoaders (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/loader-runner/lib/LoaderRunner.js:358:9)\n at runLoaders (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/loader-runner/lib/LoaderRunner.js:525:2)\n at JavascriptModule._doBuild (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/NormalModule.js:1553:3)\n at JavascriptModule.build (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/NormalModule.js:1806:15)\n at /home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/Compilation.js:1717:12\n at JavascriptModule.needBuild (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/NormalModule.js:2139:32)\n at Compilation._buildModule (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/Compilation.js:1698:10)\n at /home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/util/AsyncQueue.js:370:10\n at Hook.eval [as callAsync] (eval at create (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/tapable/lib/HookCodeFactory.js:31:10), <anonymous>:6:1)\n at AsyncQueue._startProcessing (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/util/AsyncQueue.js:360:26)\n at AsyncQueue._ensureProcessing (/home/javizqh/jderobot/jderobot-ide-interface/node_modules/webpack/lib/util/AsyncQueue.js:346:12)\n at process.processImmediate (node:internal/timers:574:21)");
|
|
10
|
+
|
|
11
|
+
/***/ }
|
|
12
|
+
|
|
13
|
+
}]);
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
(function webpackUniversalModuleDefinition(root, factory) {
|
|
2
|
+
if(typeof exports === 'object' && typeof module === 'object')
|
|
3
|
+
module.exports = factory();
|
|
4
|
+
else if(typeof define === 'function' && define.amd)
|
|
5
|
+
define([], factory);
|
|
6
|
+
else {
|
|
7
|
+
var a = factory();
|
|
8
|
+
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
|
|
9
|
+
}
|
|
10
|
+
})(this, () => {
|
|
11
|
+
return /******/ (() => { // webpackBootstrap
|
|
12
|
+
/******/ "use strict";
|
|
13
|
+
/******/ var __webpack_modules__ = ({
|
|
14
|
+
|
|
15
|
+
/***/ "./node_modules/@vscode/diff/dist/worker.js?esm"
|
|
16
|
+
/*!******************************************************!*\
|
|
17
|
+
!*** ./node_modules/@vscode/diff/dist/worker.js?esm ***!
|
|
18
|
+
\******************************************************/
|
|
19
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
20
|
+
|
|
21
|
+
__webpack_require__.r(__webpack_exports__);
|
|
22
|
+
/* harmony import */ var _wire_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wire.js */ "./node_modules/@vscode/diff/dist/wire.js");
|
|
23
|
+
/*---------------------------------------------------------------------------------------------
|
|
24
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
25
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
26
|
+
*--------------------------------------------------------------------------------------------*/
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
/// <reference lib="WebWorker" />
|
|
30
|
+
/**
|
|
31
|
+
* Diff worker entry. Built as a separate rollup output (`dist/worker.js`).
|
|
32
|
+
*
|
|
33
|
+
* The worker is intentionally narrow: it consumes a `ComputeRequest`,
|
|
34
|
+
* produces a `LinesDiff`, converts it to the wire shape, and posts it back.
|
|
35
|
+
* All `LinesDiff -> DiffResult` adapter work happens on the main thread,
|
|
36
|
+
* which already has the input strings.
|
|
37
|
+
*/
|
|
38
|
+
const tsImpl = new _wire_js__WEBPACK_IMPORTED_MODULE_0__.D();
|
|
39
|
+
self.addEventListener('message', (ev) => {
|
|
40
|
+
const msg = ev.data;
|
|
41
|
+
if (msg.kind === 'init') {
|
|
42
|
+
void handleInit(msg);
|
|
43
|
+
}
|
|
44
|
+
else if (msg.kind === 'computeDiff') {
|
|
45
|
+
void handleCompute(msg);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
async function handleInit(req) {
|
|
49
|
+
try {
|
|
50
|
+
if (req.backend === 'wasm') {
|
|
51
|
+
await (0,_wire_js__WEBPACK_IMPORTED_MODULE_0__.i)();
|
|
52
|
+
}
|
|
53
|
+
const resp = { kind: 'init', id: req.id, ok: true };
|
|
54
|
+
self.postMessage(resp);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
const resp = {
|
|
58
|
+
kind: 'computeDiff',
|
|
59
|
+
id: req.id,
|
|
60
|
+
ok: false,
|
|
61
|
+
error: String(err instanceof Error ? err.message : err),
|
|
62
|
+
};
|
|
63
|
+
self.postMessage(resp);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async function handleCompute(req) {
|
|
67
|
+
try {
|
|
68
|
+
let linesDiff;
|
|
69
|
+
if (req.backend === 'ts') {
|
|
70
|
+
linesDiff = computeTs(req.originalLines, req.modifiedLines, req.options);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
await (0,_wire_js__WEBPACK_IMPORTED_MODULE_0__.i)();
|
|
74
|
+
linesDiff = computeWasm(req.originalLines, req.modifiedLines, req.options);
|
|
75
|
+
}
|
|
76
|
+
const result = (0,_wire_js__WEBPACK_IMPORTED_MODULE_0__.l)(linesDiff);
|
|
77
|
+
const resp = { kind: 'computeDiff', id: req.id, ok: true, result };
|
|
78
|
+
self.postMessage(resp);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
const resp = {
|
|
82
|
+
kind: 'computeDiff',
|
|
83
|
+
id: req.id,
|
|
84
|
+
ok: false,
|
|
85
|
+
error: String(err instanceof Error ? err.message : err),
|
|
86
|
+
};
|
|
87
|
+
self.postMessage(resp);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function computeTs(original, modified, options) {
|
|
91
|
+
const internal = toInternalOptions(options);
|
|
92
|
+
return tsImpl.computeDiff(original, modified, internal);
|
|
93
|
+
}
|
|
94
|
+
function computeWasm(original, modified, options) {
|
|
95
|
+
const wasm = (0,_wire_js__WEBPACK_IMPORTED_MODULE_0__.g)();
|
|
96
|
+
const wasmOptions = toWasmOptions(options);
|
|
97
|
+
const wasmResult = wasm.computeDiffLines(original, modified, wasmOptions);
|
|
98
|
+
return wasmLinesDiffToLinesDiff(wasmResult);
|
|
99
|
+
}
|
|
100
|
+
function wasmLinesDiffToLinesDiff(wasmResult) {
|
|
101
|
+
const changes = wasmResult.changes.map((c) => {
|
|
102
|
+
const inner = c.innerChanges?.map((ic) => new _wire_js__WEBPACK_IMPORTED_MODULE_0__.R(new _wire_js__WEBPACK_IMPORTED_MODULE_0__.a(ic.originalStartLine, ic.originalStartColumn, ic.originalEndLine, ic.originalEndColumn), new _wire_js__WEBPACK_IMPORTED_MODULE_0__.a(ic.modifiedStartLine, ic.modifiedStartColumn, ic.modifiedEndLine, ic.modifiedEndColumn)));
|
|
103
|
+
return new _wire_js__WEBPACK_IMPORTED_MODULE_0__.b(new _wire_js__WEBPACK_IMPORTED_MODULE_0__.L(c.original.startLineNumber, c.original.endLineNumberExclusive), new _wire_js__WEBPACK_IMPORTED_MODULE_0__.L(c.modified.startLineNumber, c.modified.endLineNumberExclusive), inner);
|
|
104
|
+
});
|
|
105
|
+
return new _wire_js__WEBPACK_IMPORTED_MODULE_0__.c(changes, [], wasmResult.hitTimeout);
|
|
106
|
+
}
|
|
107
|
+
function toInternalOptions(options) {
|
|
108
|
+
return {
|
|
109
|
+
maxComputationTimeMs: options?.maxComputationTimeMs ?? 0,
|
|
110
|
+
ignoreTrimWhitespace: options?.ignoreTrimWhitespace ?? false,
|
|
111
|
+
computeMoves: options?.computeMoves ?? false,
|
|
112
|
+
extendToSubwords: options?.extendToSubwords ?? false,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function toWasmOptions(options) {
|
|
116
|
+
const out = {};
|
|
117
|
+
if (options?.maxComputationTimeMs !== undefined)
|
|
118
|
+
out.maxComputationTimeMs = options.maxComputationTimeMs;
|
|
119
|
+
if (options?.ignoreTrimWhitespace !== undefined)
|
|
120
|
+
out.ignoreTrimWhitespace = options.ignoreTrimWhitespace;
|
|
121
|
+
if (options?.computeMoves !== undefined)
|
|
122
|
+
out.computeMoves = options.computeMoves;
|
|
123
|
+
if (options?.extendToSubwords !== undefined)
|
|
124
|
+
out.extendToSubwords = options.extendToSubwords;
|
|
125
|
+
return out;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=worker.js.map
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
/***/ }
|
|
131
|
+
|
|
132
|
+
/******/ });
|
|
133
|
+
/************************************************************************/
|
|
134
|
+
/******/ // The module cache
|
|
135
|
+
/******/ const __webpack_module_cache__ = {};
|
|
136
|
+
/******/
|
|
137
|
+
/******/ // The require function
|
|
138
|
+
/******/ function __webpack_require__(moduleId) {
|
|
139
|
+
/******/ // Check if module is in cache
|
|
140
|
+
/******/ const cachedModule = __webpack_module_cache__[moduleId];
|
|
141
|
+
/******/ if (cachedModule !== undefined) {
|
|
142
|
+
/******/ return cachedModule.exports;
|
|
143
|
+
/******/ }
|
|
144
|
+
/******/ // Create a new module (and put it into the cache)
|
|
145
|
+
/******/ const module = __webpack_module_cache__[moduleId] = {
|
|
146
|
+
/******/ // no module.id needed
|
|
147
|
+
/******/ // no module.loaded needed
|
|
148
|
+
/******/ exports: {}
|
|
149
|
+
/******/ };
|
|
150
|
+
/******/
|
|
151
|
+
/******/ // Execute the module function
|
|
152
|
+
/******/ if (!(moduleId in __webpack_modules__)) {
|
|
153
|
+
/******/ delete __webpack_module_cache__[moduleId];
|
|
154
|
+
/******/ const e = new Error("Cannot find module '" + moduleId + "'");
|
|
155
|
+
/******/ e.code = 'MODULE_NOT_FOUND';
|
|
156
|
+
/******/ throw e;
|
|
157
|
+
/******/ }
|
|
158
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
159
|
+
/******/
|
|
160
|
+
/******/ // Return the exports of the module
|
|
161
|
+
/******/ return module.exports;
|
|
162
|
+
/******/ }
|
|
163
|
+
/******/
|
|
164
|
+
/******/ // expose the modules object (__webpack_modules__)
|
|
165
|
+
/******/ __webpack_require__.m = __webpack_modules__;
|
|
166
|
+
/******/
|
|
167
|
+
/******/ // the startup function
|
|
168
|
+
/******/ __webpack_require__.x = () => {
|
|
169
|
+
/******/ // Load entry module and return exports
|
|
170
|
+
/******/ // This entry module depends on other loaded chunks and execution need to be delayed
|
|
171
|
+
/******/ let __webpack_exports__ = __webpack_require__.O(undefined, ["vendors-node_modules_vscode_diff_dist_wire_js"], () => (__webpack_require__("./node_modules/@vscode/diff/dist/worker.js?esm")))
|
|
172
|
+
/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
|
|
173
|
+
/******/ return __webpack_exports__;
|
|
174
|
+
/******/ };
|
|
175
|
+
/******/
|
|
176
|
+
/************************************************************************/
|
|
177
|
+
/******/ /* webpack/runtime/chunk loaded */
|
|
178
|
+
/******/ (() => {
|
|
179
|
+
/******/ const deferred = [];
|
|
180
|
+
/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => {
|
|
181
|
+
/******/ if(chunkIds) {
|
|
182
|
+
/******/ priority = priority || 0;
|
|
183
|
+
/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
|
|
184
|
+
/******/ deferred[i] = [chunkIds, fn, priority];
|
|
185
|
+
/******/ return;
|
|
186
|
+
/******/ }
|
|
187
|
+
/******/ let notFulfilled = Infinity;
|
|
188
|
+
/******/ for (var i = 0; i < deferred.length; i++) {
|
|
189
|
+
/******/ let [chunkIds, fn, priority] = deferred[i];
|
|
190
|
+
/******/ let fulfilled = true;
|
|
191
|
+
/******/ for (var j = 0; j < chunkIds.length; j++) {
|
|
192
|
+
/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
|
|
193
|
+
/******/ chunkIds.splice(j--, 1);
|
|
194
|
+
/******/ } else {
|
|
195
|
+
/******/ fulfilled = false;
|
|
196
|
+
/******/ if(priority < notFulfilled) notFulfilled = priority;
|
|
197
|
+
/******/ }
|
|
198
|
+
/******/ }
|
|
199
|
+
/******/ if(fulfilled) {
|
|
200
|
+
/******/ deferred.splice(i--, 1)
|
|
201
|
+
/******/ const r = fn();
|
|
202
|
+
/******/ if (r !== undefined) result = r;
|
|
203
|
+
/******/ }
|
|
204
|
+
/******/ }
|
|
205
|
+
/******/ return result;
|
|
206
|
+
/******/ };
|
|
207
|
+
/******/ })();
|
|
208
|
+
/******/
|
|
209
|
+
/******/ /* webpack/runtime/create fake namespace object */
|
|
210
|
+
/******/ (() => {
|
|
211
|
+
/******/ const getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
|
|
212
|
+
/******/ let leafPrototypes;
|
|
213
|
+
/******/ // create a fake namespace object
|
|
214
|
+
/******/ // mode & 1: value is a module id, require it
|
|
215
|
+
/******/ // mode & 2: merge all properties of value into the ns
|
|
216
|
+
/******/ // mode & 4: return value when already ns object
|
|
217
|
+
/******/ // mode & 16: return value when it's Promise-like
|
|
218
|
+
/******/ // mode & 8|1: behave like require
|
|
219
|
+
/******/ __webpack_require__.t = function(value, mode) {
|
|
220
|
+
/******/ if(mode & 1) value = this(value);
|
|
221
|
+
/******/ if(mode & 8) return value;
|
|
222
|
+
/******/ if(typeof value === 'object' && value) {
|
|
223
|
+
/******/ if((mode & 4) && value.__esModule) return value;
|
|
224
|
+
/******/ if((mode & 16) && typeof value.then === 'function') return value;
|
|
225
|
+
/******/ }
|
|
226
|
+
/******/ const ns = Object.create(null);
|
|
227
|
+
/******/ __webpack_require__.r(ns);
|
|
228
|
+
/******/ const def = {};
|
|
229
|
+
/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
|
|
230
|
+
/******/ for(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {
|
|
231
|
+
/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
|
|
232
|
+
/******/ }
|
|
233
|
+
/******/ def['default'] = () => (value);
|
|
234
|
+
/******/ __webpack_require__.d(ns, def);
|
|
235
|
+
/******/ return ns;
|
|
236
|
+
/******/ };
|
|
237
|
+
/******/ })();
|
|
238
|
+
/******/
|
|
239
|
+
/******/ /* webpack/runtime/define property getters */
|
|
240
|
+
/******/ (() => {
|
|
241
|
+
/******/ // define getter/value functions for harmony exports
|
|
242
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
243
|
+
/******/ if(Array.isArray(definition)) {
|
|
244
|
+
/******/ var i = 0;
|
|
245
|
+
/******/ while(i < definition.length) {
|
|
246
|
+
/******/ var key = definition[i++];
|
|
247
|
+
/******/ var binding = definition[i++];
|
|
248
|
+
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
249
|
+
/******/ if(binding === 0) {
|
|
250
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
251
|
+
/******/ } else {
|
|
252
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
253
|
+
/******/ }
|
|
254
|
+
/******/ } else if(binding === 0) { i++; }
|
|
255
|
+
/******/ }
|
|
256
|
+
/******/ } else {
|
|
257
|
+
/******/ for(var key in definition) {
|
|
258
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
259
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
260
|
+
/******/ }
|
|
261
|
+
/******/ }
|
|
262
|
+
/******/ }
|
|
263
|
+
/******/ };
|
|
264
|
+
/******/ })();
|
|
265
|
+
/******/
|
|
266
|
+
/******/ /* webpack/runtime/ensure chunk */
|
|
267
|
+
/******/ (() => {
|
|
268
|
+
/******/ __webpack_require__.f = {};
|
|
269
|
+
/******/ // This file contains only the entry chunk.
|
|
270
|
+
/******/ // The chunk loading function for additional chunks
|
|
271
|
+
/******/ __webpack_require__.e = (chunkId) => {
|
|
272
|
+
/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
|
|
273
|
+
/******/ __webpack_require__.f[key](chunkId, promises);
|
|
274
|
+
/******/ return promises;
|
|
275
|
+
/******/ }, []));
|
|
276
|
+
/******/ };
|
|
277
|
+
/******/ })();
|
|
278
|
+
/******/
|
|
279
|
+
/******/ /* webpack/runtime/get javascript chunk filename */
|
|
280
|
+
/******/ (() => {
|
|
281
|
+
/******/ // This function allow to reference async chunks and chunks that the entrypoint depends on
|
|
282
|
+
/******/ __webpack_require__.u = (chunkId) => {
|
|
283
|
+
/******/ // return url for filenames based on template
|
|
284
|
+
/******/ return "" + chunkId + ".main.js";
|
|
285
|
+
/******/ };
|
|
286
|
+
/******/ })();
|
|
287
|
+
/******/
|
|
288
|
+
/******/ /* webpack/runtime/global */
|
|
289
|
+
/******/ (() => {
|
|
290
|
+
/******/ __webpack_require__.g = (function() {
|
|
291
|
+
/******/ if (typeof globalThis === 'object') return globalThis;
|
|
292
|
+
/******/ try {
|
|
293
|
+
/******/ return this || new Function('return this')();
|
|
294
|
+
/******/ } catch (e) {
|
|
295
|
+
/******/ if (typeof window === 'object') return window;
|
|
296
|
+
/******/ }
|
|
297
|
+
/******/ })();
|
|
298
|
+
/******/ })();
|
|
299
|
+
/******/
|
|
300
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
301
|
+
/******/ (() => {
|
|
302
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
303
|
+
/******/ })();
|
|
304
|
+
/******/
|
|
305
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
306
|
+
/******/ (() => {
|
|
307
|
+
/******/ // define __esModule on exports
|
|
308
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
309
|
+
/******/ if(Symbol.toStringTag) {
|
|
310
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
311
|
+
/******/ }
|
|
312
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
313
|
+
/******/ };
|
|
314
|
+
/******/ })();
|
|
315
|
+
/******/
|
|
316
|
+
/******/ /* webpack/runtime/publicPath */
|
|
317
|
+
/******/ (() => {
|
|
318
|
+
/******/ let scriptUrl;
|
|
319
|
+
/******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
|
|
320
|
+
/******/ const document = __webpack_require__.g.document;
|
|
321
|
+
/******/ if (!scriptUrl && document) {
|
|
322
|
+
/******/ if (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')
|
|
323
|
+
/******/ scriptUrl = document.currentScript.src;
|
|
324
|
+
/******/ if (!scriptUrl) {
|
|
325
|
+
/******/ const scripts = document.getElementsByTagName("script");
|
|
326
|
+
/******/ if(scripts.length) {
|
|
327
|
+
/******/ let i = scripts.length - 1;
|
|
328
|
+
/******/ while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;
|
|
329
|
+
/******/ }
|
|
330
|
+
/******/ }
|
|
331
|
+
/******/ }
|
|
332
|
+
/******/ // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration
|
|
333
|
+
/******/ // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.
|
|
334
|
+
/******/ if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
|
|
335
|
+
/******/ scriptUrl = scriptUrl.replace(/^blob:/, "").replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/");
|
|
336
|
+
/******/ __webpack_require__.p = scriptUrl;
|
|
337
|
+
/******/ })();
|
|
338
|
+
/******/
|
|
339
|
+
/******/ /* webpack/runtime/importScripts chunk loading */
|
|
340
|
+
/******/ (() => {
|
|
341
|
+
/******/ __webpack_require__.b = self.location + "";
|
|
342
|
+
/******/
|
|
343
|
+
/******/ // object to store loaded chunks
|
|
344
|
+
/******/ // "1" means "already loaded"
|
|
345
|
+
/******/ var installedChunks = {
|
|
346
|
+
/******/ "node_modules_vscode_diff_dist_worker_js_esm": 1
|
|
347
|
+
/******/ };
|
|
348
|
+
/******/
|
|
349
|
+
/******/ // importScripts chunk loading
|
|
350
|
+
/******/ var installChunk = (data) => {
|
|
351
|
+
/******/ let [chunkIds, moreModules, runtime] = data;
|
|
352
|
+
/******/ for(var moduleId in moreModules) {
|
|
353
|
+
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
|
|
354
|
+
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
|
|
355
|
+
/******/ }
|
|
356
|
+
/******/ }
|
|
357
|
+
/******/ if(runtime) runtime(__webpack_require__);
|
|
358
|
+
/******/ while(chunkIds.length)
|
|
359
|
+
/******/ installedChunks[chunkIds.pop()] = 1;
|
|
360
|
+
/******/ parentChunkLoadingFunction(data);
|
|
361
|
+
/******/ };
|
|
362
|
+
/******/ __webpack_require__.f.i = (chunkId, promises) => {
|
|
363
|
+
/******/ // "1" is the signal for "already loaded"
|
|
364
|
+
/******/ if(!installedChunks[chunkId]) {
|
|
365
|
+
/******/ if(true) { // all chunks have JS
|
|
366
|
+
/******/ importScripts(__webpack_require__.p + __webpack_require__.u(chunkId));
|
|
367
|
+
/******/ }
|
|
368
|
+
/******/ }
|
|
369
|
+
/******/ };
|
|
370
|
+
/******/
|
|
371
|
+
/******/ var chunkLoadingGlobal = this["webpackChunkjderobot_ide_interface"] = this["webpackChunkjderobot_ide_interface"] || [];
|
|
372
|
+
/******/ var parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);
|
|
373
|
+
/******/ chunkLoadingGlobal.push = installChunk;
|
|
374
|
+
/******/
|
|
375
|
+
/******/ // no HMR
|
|
376
|
+
/******/
|
|
377
|
+
/******/ // no HMR manifest
|
|
378
|
+
/******/ })();
|
|
379
|
+
/******/
|
|
380
|
+
/******/ /* webpack/runtime/startup chunk dependencies */
|
|
381
|
+
/******/ (() => {
|
|
382
|
+
/******/ const next = __webpack_require__.x;
|
|
383
|
+
/******/ __webpack_require__.x = () => {
|
|
384
|
+
/******/ return __webpack_require__.e("vendors-node_modules_vscode_diff_dist_wire_js").then(next);
|
|
385
|
+
/******/ };
|
|
386
|
+
/******/ })();
|
|
387
|
+
/******/
|
|
388
|
+
/************************************************************************/
|
|
389
|
+
/******/
|
|
390
|
+
/******/ // run startup
|
|
391
|
+
/******/ var __webpack_exports__ = __webpack_require__.x();
|
|
392
|
+
/******/
|
|
393
|
+
/******/ return __webpack_exports__;
|
|
394
|
+
/******/ })()
|
|
395
|
+
;
|
|
396
|
+
});
|
|
397
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9tb2R1bGVzX3ZzY29kZV9kaWZmX2Rpc3Rfd29ya2VyX2pzX2VzbS5tYWluLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxPOzs7Ozs7Ozs7Ozs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUMyTTs7QUFFM007QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVDQUF3QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwyQ0FBUTtBQUMxQjtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwyQ0FBUTtBQUMxQjtBQUNBO0FBQ0EsdUJBQXVCLDJDQUFlO0FBQ3RDLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJDQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCx1Q0FBWSxLQUFLLHVDQUFLLDhGQUE4Rix1Q0FBSztBQUMvSyxtQkFBbUIsdUNBQXdCLEtBQUssdUNBQVMscUVBQXFFLHVDQUFTO0FBQ3ZJLEtBQUs7QUFDTCxlQUFlLHVDQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O1VDeEdBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOzs7OztXQ3hDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLCtCQUErQix3Q0FBd0M7V0FDdkU7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQkFBaUIscUJBQXFCO1dBQ3RDO1dBQ0E7V0FDQSxrQkFBa0IscUJBQXFCO1dBQ3ZDO1dBQ0E7V0FDQSxLQUFLO1dBQ0w7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLEU7Ozs7O1dDM0JBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHNEQUFzRDtXQUN0RCxzQ0FBc0MsbUdBQW1HO1dBQ3pJO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxFOzs7OztXQ3pCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSwyQ0FBMkMsMENBQTBDO1dBQ3JGLE1BQU07V0FDTiwyQ0FBMkMsZ0NBQWdDO1dBQzNFO1dBQ0EsS0FBSyx5QkFBeUI7V0FDOUI7V0FDQSxHQUFHO1dBQ0g7V0FDQTtXQUNBLDBDQUEwQyx3Q0FBd0M7V0FDbEY7V0FDQTtXQUNBO1dBQ0EsRTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxFQUFFO1dBQ0YsRTs7Ozs7V0NSQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLEU7Ozs7O1dDSkE7V0FDQTtXQUNBO1dBQ0E7V0FDQSxHQUFHO1dBQ0g7V0FDQTtXQUNBLENBQUMsSTs7Ozs7V0NQRCx3Rjs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0QsRTs7Ozs7V0NOQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxrQzs7Ozs7V0NsQkE7O1dBRUE7V0FDQTtXQUNBO1dBQ0E7V0FDQTs7V0FFQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGFBQWE7V0FDYjtXQUNBO1dBQ0E7V0FDQTs7V0FFQTtXQUNBO1dBQ0E7O1dBRUE7O1dBRUEsa0I7Ozs7O1dDcENBO1dBQ0E7V0FDQTtXQUNBLEU7Ozs7O1VFSEE7VUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2Uvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2UvLi9ub2RlX21vZHVsZXMvQHZzY29kZS9kaWZmL2Rpc3Qvd29ya2VyLmpzIiwid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2Uvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vamRlcm9ib3QtaWRlLWludGVyZmFjZS93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2Uvd2VicGFjay9ydW50aW1lL2NyZWF0ZSBmYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vamRlcm9ib3QtaWRlLWludGVyZmFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vamRlcm9ib3QtaWRlLWludGVyZmFjZS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2Uvd2VicGFjay9ydW50aW1lL2dldCBqYXZhc2NyaXB0IGNodW5rIGZpbGVuYW1lIiwid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9qZGVyb2JvdC1pZGUtaW50ZXJmYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vamRlcm9ib3QtaWRlLWludGVyZmFjZS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2Uvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vamRlcm9ib3QtaWRlLWludGVyZmFjZS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2Uvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2pkZXJvYm90LWlkZS1pbnRlcmZhY2Uvd2VicGFjay9iZWZvcmUtc3RhcnR1cCIsIndlYnBhY2s6Ly9qZGVyb2JvdC1pZGUtaW50ZXJmYWNlL3dlYnBhY2svc3RhcnR1cCIsIndlYnBhY2s6Ly9qZGVyb2JvdC1pZGUtaW50ZXJmYWNlL3dlYnBhY2svYWZ0ZXItc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gZmFjdG9yeSgpO1xuXHRcdGZvcih2YXIgaSBpbiBhKSAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZXhwb3J0cyA6IHJvb3QpW2ldID0gYVtpXTtcblx0fVxufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuaW1wb3J0IHsgaSBhcyBpbml0V2FzbSwgbCBhcyBsaW5lc0RpZmZUb1dpcmUsIEQgYXMgRGVmYXVsdExpbmVzRGlmZkNvbXB1dGVyLCBnIGFzIGdldFdhc20sIFIgYXMgUmFuZ2VNYXBwaW5nLCBhIGFzIFJhbmdlLCBiIGFzIERldGFpbGVkTGluZVJhbmdlTWFwcGluZywgTCBhcyBMaW5lUmFuZ2UsIGMgYXMgTGluZXNEaWZmIH0gZnJvbSAnLi93aXJlLmpzJztcblxuLy8vIDxyZWZlcmVuY2UgbGliPVwiV2ViV29ya2VyXCIgLz5cbi8qKlxuICogRGlmZiB3b3JrZXIgZW50cnkuIEJ1aWx0IGFzIGEgc2VwYXJhdGUgcm9sbHVwIG91dHB1dCAoYGRpc3Qvd29ya2VyLmpzYCkuXG4gKlxuICogVGhlIHdvcmtlciBpcyBpbnRlbnRpb25hbGx5IG5hcnJvdzogaXQgY29uc3VtZXMgYSBgQ29tcHV0ZVJlcXVlc3RgLFxuICogcHJvZHVjZXMgYSBgTGluZXNEaWZmYCwgY29udmVydHMgaXQgdG8gdGhlIHdpcmUgc2hhcGUsIGFuZCBwb3N0cyBpdCBiYWNrLlxuICogQWxsIGBMaW5lc0RpZmYgLT4gRGlmZlJlc3VsdGAgYWRhcHRlciB3b3JrIGhhcHBlbnMgb24gdGhlIG1haW4gdGhyZWFkLFxuICogd2hpY2ggYWxyZWFkeSBoYXMgdGhlIGlucHV0IHN0cmluZ3MuXG4gKi9cbmNvbnN0IHRzSW1wbCA9IG5ldyBEZWZhdWx0TGluZXNEaWZmQ29tcHV0ZXIoKTtcbnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIChldikgPT4ge1xuICAgIGNvbnN0IG1zZyA9IGV2LmRhdGE7XG4gICAgaWYgKG1zZy5raW5kID09PSAnaW5pdCcpIHtcbiAgICAgICAgdm9pZCBoYW5kbGVJbml0KG1zZyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1zZy5raW5kID09PSAnY29tcHV0ZURpZmYnKSB7XG4gICAgICAgIHZvaWQgaGFuZGxlQ29tcHV0ZShtc2cpO1xuICAgIH1cbn0pO1xuYXN5bmMgZnVuY3Rpb24gaGFuZGxlSW5pdChyZXEpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAocmVxLmJhY2tlbmQgPT09ICd3YXNtJykge1xuICAgICAgICAgICAgYXdhaXQgaW5pdFdhc20oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwID0geyBraW5kOiAnaW5pdCcsIGlkOiByZXEuaWQsIG9rOiB0cnVlIH07XG4gICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgcmVzcCA9IHtcbiAgICAgICAgICAgIGtpbmQ6ICdjb21wdXRlRGlmZicsXG4gICAgICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IFN0cmluZyhlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyKSxcbiAgICAgICAgfTtcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwKTtcbiAgICB9XG59XG5hc3luYyBmdW5jdGlvbiBoYW5kbGVDb21wdXRlKHJlcSkge1xuICAgIHRyeSB7XG4gICAgICAgIGxldCBsaW5lc0RpZmY7XG4gICAgICAgIGlmIChyZXEuYmFja2VuZCA9PT0gJ3RzJykge1xuICAgICAgICAgICAgbGluZXNEaWZmID0gY29tcHV0ZVRzKHJlcS5vcmlnaW5hbExpbmVzLCByZXEubW9kaWZpZWRMaW5lcywgcmVxLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgaW5pdFdhc20oKTtcbiAgICAgICAgICAgIGxpbmVzRGlmZiA9IGNvbXB1dGVXYXNtKHJlcS5vcmlnaW5hbExpbmVzLCByZXEubW9kaWZpZWRMaW5lcywgcmVxLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGxpbmVzRGlmZlRvV2lyZShsaW5lc0RpZmYpO1xuICAgICAgICBjb25zdCByZXNwID0geyBraW5kOiAnY29tcHV0ZURpZmYnLCBpZDogcmVxLmlkLCBvazogdHJ1ZSwgcmVzdWx0IH07XG4gICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgcmVzcCA9IHtcbiAgICAgICAgICAgIGtpbmQ6ICdjb21wdXRlRGlmZicsXG4gICAgICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IFN0cmluZyhlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyKSxcbiAgICAgICAgfTtcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjb21wdXRlVHMob3JpZ2luYWwsIG1vZGlmaWVkLCBvcHRpb25zKSB7XG4gICAgY29uc3QgaW50ZXJuYWwgPSB0b0ludGVybmFsT3B0aW9ucyhvcHRpb25zKTtcbiAgICByZXR1cm4gdHNJbXBsLmNvbXB1dGVEaWZmKG9yaWdpbmFsLCBtb2RpZmllZCwgaW50ZXJuYWwpO1xufVxuZnVuY3Rpb24gY29tcHV0ZVdhc20ob3JpZ2luYWwsIG1vZGlmaWVkLCBvcHRpb25zKSB7XG4gICAgY29uc3Qgd2FzbSA9IGdldFdhc20oKTtcbiAgICBjb25zdCB3YXNtT3B0aW9ucyA9IHRvV2FzbU9wdGlvbnMob3B0aW9ucyk7XG4gICAgY29uc3Qgd2FzbVJlc3VsdCA9IHdhc20uY29tcHV0ZURpZmZMaW5lcyhvcmlnaW5hbCwgbW9kaWZpZWQsIHdhc21PcHRpb25zKTtcbiAgICByZXR1cm4gd2FzbUxpbmVzRGlmZlRvTGluZXNEaWZmKHdhc21SZXN1bHQpO1xufVxuZnVuY3Rpb24gd2FzbUxpbmVzRGlmZlRvTGluZXNEaWZmKHdhc21SZXN1bHQpIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gd2FzbVJlc3VsdC5jaGFuZ2VzLm1hcCgoYykgPT4ge1xuICAgICAgICBjb25zdCBpbm5lciA9IGMuaW5uZXJDaGFuZ2VzPy5tYXAoKGljKSA9PiBuZXcgUmFuZ2VNYXBwaW5nKG5ldyBSYW5nZShpYy5vcmlnaW5hbFN0YXJ0TGluZSwgaWMub3JpZ2luYWxTdGFydENvbHVtbiwgaWMub3JpZ2luYWxFbmRMaW5lLCBpYy5vcmlnaW5hbEVuZENvbHVtbiksIG5ldyBSYW5nZShpYy5tb2RpZmllZFN0YXJ0TGluZSwgaWMubW9kaWZpZWRTdGFydENvbHVtbiwgaWMubW9kaWZpZWRFbmRMaW5lLCBpYy5tb2RpZmllZEVuZENvbHVtbikpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEZXRhaWxlZExpbmVSYW5nZU1hcHBpbmcobmV3IExpbmVSYW5nZShjLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlciwgYy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSwgbmV3IExpbmVSYW5nZShjLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciwgYy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSwgaW5uZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgTGluZXNEaWZmKGNoYW5nZXMsIFtdLCB3YXNtUmVzdWx0LmhpdFRpbWVvdXQpO1xufVxuZnVuY3Rpb24gdG9JbnRlcm5hbE9wdGlvbnMob3B0aW9ucykge1xuICAgIHJldHVybiB7XG4gICAgICAgIG1heENvbXB1dGF0aW9uVGltZU1zOiBvcHRpb25zPy5tYXhDb21wdXRhdGlvblRpbWVNcyA/PyAwLFxuICAgICAgICBpZ25vcmVUcmltV2hpdGVzcGFjZTogb3B0aW9ucz8uaWdub3JlVHJpbVdoaXRlc3BhY2UgPz8gZmFsc2UsXG4gICAgICAgIGNvbXB1dGVNb3Zlczogb3B0aW9ucz8uY29tcHV0ZU1vdmVzID8/IGZhbHNlLFxuICAgICAgICBleHRlbmRUb1N1YndvcmRzOiBvcHRpb25zPy5leHRlbmRUb1N1YndvcmRzID8/IGZhbHNlLFxuICAgIH07XG59XG5mdW5jdGlvbiB0b1dhc21PcHRpb25zKG9wdGlvbnMpIHtcbiAgICBjb25zdCBvdXQgPSB7fTtcbiAgICBpZiAob3B0aW9ucz8ubWF4Q29tcHV0YXRpb25UaW1lTXMgIT09IHVuZGVmaW5lZClcbiAgICAgICAgb3V0Lm1heENvbXB1dGF0aW9uVGltZU1zID0gb3B0aW9ucy5tYXhDb21wdXRhdGlvblRpbWVNcztcbiAgICBpZiAob3B0aW9ucz8uaWdub3JlVHJpbVdoaXRlc3BhY2UgIT09IHVuZGVmaW5lZClcbiAgICAgICAgb3V0Lmlnbm9yZVRyaW1XaGl0ZXNwYWNlID0gb3B0aW9ucy5pZ25vcmVUcmltV2hpdGVzcGFjZTtcbiAgICBpZiAob3B0aW9ucz8uY29tcHV0ZU1vdmVzICE9PSB1bmRlZmluZWQpXG4gICAgICAgIG91dC5jb21wdXRlTW92ZXMgPSBvcHRpb25zLmNvbXB1dGVNb3ZlcztcbiAgICBpZiAob3B0aW9ucz8uZXh0ZW5kVG9TdWJ3b3JkcyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICBvdXQuZXh0ZW5kVG9TdWJ3b3JkcyA9IG9wdGlvbnMuZXh0ZW5kVG9TdWJ3b3JkcztcbiAgICByZXR1cm4gb3V0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9d29ya2VyLmpzLm1hcFxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxuY29uc3QgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHRjb25zdCBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0Y29uc3QgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRpZiAoIShtb2R1bGVJZCBpbiBfX3dlYnBhY2tfbW9kdWxlc19fKSkge1xuXHRcdGRlbGV0ZSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRcdGNvbnN0IGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiICsgbW9kdWxlSWQgKyBcIidcIik7XG5cdFx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHRcdHRocm93IGU7XG5cdH1cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuLy8gdGhlIHN0YXJ0dXAgZnVuY3Rpb25cbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG5cdC8vIFRoaXMgZW50cnkgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIgbG9hZGVkIGNodW5rcyBhbmQgZXhlY3V0aW9uIG5lZWQgdG8gYmUgZGVsYXllZFxuXHRsZXQgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyh1bmRlZmluZWQsIFtcInZlbmRvcnMtbm9kZV9tb2R1bGVzX3ZzY29kZV9kaWZmX2Rpc3Rfd2lyZV9qc1wiXSwgKCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18oXCIuL25vZGVfbW9kdWxlcy9AdnNjb2RlL2RpZmYvZGlzdC93b3JrZXIuanM/ZXNtXCIpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCJjb25zdCBkZWZlcnJlZCA9IFtdO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5PID0gKHJlc3VsdCwgY2h1bmtJZHMsIGZuLCBwcmlvcml0eSkgPT4ge1xuXHRpZihjaHVua0lkcykge1xuXHRcdHByaW9yaXR5ID0gcHJpb3JpdHkgfHwgMDtcblx0XHRmb3IodmFyIGkgPSBkZWZlcnJlZC5sZW5ndGg7IGkgPiAwICYmIGRlZmVycmVkW2kgLSAxXVsyXSA+IHByaW9yaXR5OyBpLS0pIGRlZmVycmVkW2ldID0gZGVmZXJyZWRbaSAtIDFdO1xuXHRcdGRlZmVycmVkW2ldID0gW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldO1xuXHRcdHJldHVybjtcblx0fVxuXHRsZXQgbm90RnVsZmlsbGVkID0gSW5maW5pdHk7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgZGVmZXJyZWQubGVuZ3RoOyBpKyspIHtcblx0XHRsZXQgW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldID0gZGVmZXJyZWRbaV07XG5cdFx0bGV0IGZ1bGZpbGxlZCA9IHRydWU7XG5cdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBjaHVua0lkcy5sZW5ndGg7IGorKykge1xuXHRcdFx0aWYgKChwcmlvcml0eSAmIDEgPT09IDAgfHwgbm90RnVsZmlsbGVkID49IHByaW9yaXR5KSAmJiBPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLk8pLmV2ZXJ5KChrZXkpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fLk9ba2V5XShjaHVua0lkc1tqXSkpKSkge1xuXHRcdFx0XHRjaHVua0lkcy5zcGxpY2Uoai0tLCAxKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZ1bGZpbGxlZCA9IGZhbHNlO1xuXHRcdFx0XHRpZihwcmlvcml0eSA8IG5vdEZ1bGZpbGxlZCkgbm90RnVsZmlsbGVkID0gcHJpb3JpdHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKGZ1bGZpbGxlZCkge1xuXHRcdFx0ZGVmZXJyZWQuc3BsaWNlKGktLSwgMSlcblx0XHRcdGNvbnN0IHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwiY29uc3QgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgPyAob2JqKSA9PiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpIDogKG9iaikgPT4gKG9iai5fX3Byb3RvX18pO1xubGV0IGxlYWZQcm90b3R5cGVzO1xuLy8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4vLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbi8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLy8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4vLyBtb2RlICYgMTY6IHJldHVybiB2YWx1ZSB3aGVuIGl0J3MgUHJvbWlzZS1saWtlXG4vLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuXHRpZihtb2RlICYgMSkgdmFsdWUgPSB0aGlzKHZhbHVlKTtcblx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcblx0aWYodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSkge1xuXHRcdGlmKChtb2RlICYgNCkgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuXHRcdGlmKChtb2RlICYgMTYpICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nKSByZXR1cm4gdmFsdWU7XG5cdH1cblx0Y29uc3QgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuXHRjb25zdCBkZWYgPSB7fTtcblx0bGVhZlByb3RvdHlwZXMgPSBsZWFmUHJvdG90eXBlcyB8fCBbbnVsbCwgZ2V0UHJvdG8oe30pLCBnZXRQcm90byhbXSksIGdldFByb3RvKGdldFByb3RvKV07XG5cdGZvcih2YXIgY3VycmVudCA9IG1vZGUgJiAyICYmIHZhbHVlOyAodHlwZW9mIGN1cnJlbnQgPT0gJ29iamVjdCcgfHwgdHlwZW9mIGN1cnJlbnQgPT0gJ2Z1bmN0aW9uJykgJiYgIX5sZWFmUHJvdG90eXBlcy5pbmRleE9mKGN1cnJlbnQpOyBjdXJyZW50ID0gZ2V0UHJvdG8oY3VycmVudCkpIHtcblx0XHRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdXJyZW50KS5mb3JFYWNoKChrZXkpID0+IChkZWZba2V5XSA9ICgpID0+ICh2YWx1ZVtrZXldKSkpO1xuXHR9XG5cdGRlZlsnZGVmYXVsdCddID0gKCkgPT4gKHZhbHVlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBkZWYpO1xuXHRyZXR1cm4gbnM7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIvdmFsdWUgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGlmKEFycmF5LmlzQXJyYXkoZGVmaW5pdGlvbikpIHtcblx0XHR2YXIgaSA9IDA7XG5cdFx0d2hpbGUoaSA8IGRlZmluaXRpb24ubGVuZ3RoKSB7XG5cdFx0XHR2YXIga2V5ID0gZGVmaW5pdGlvbltpKytdO1xuXHRcdFx0dmFyIGJpbmRpbmcgPSBkZWZpbml0aW9uW2krK107XG5cdFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdFx0aWYoYmluZGluZyA9PT0gMCkge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IGRlZmluaXRpb25baSsrXSB9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogYmluZGluZyB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmKGJpbmRpbmcgPT09IDApIHsgaSsrOyB9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBjaHVua3MgdGhhdCB0aGUgZW50cnlwb2ludCBkZXBlbmRzIG9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIubWFpbi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZihTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJsZXQgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xuY29uc3QgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdD8udGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnU0NSSVBUJylcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYztcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHRjb25zdCBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHtcblx0XHRcdGxldCBpID0gc2NyaXB0cy5sZW5ndGggLSAxO1xuXHRcdFx0d2hpbGUgKGkgPiAtMSAmJiAoIXNjcmlwdFVybCB8fCAhL15odHRwKHM/KTovLnRlc3Qoc2NyaXB0VXJsKSkpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoL15ibG9iOi8sIFwiXCIpLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBzZWxmLmxvY2F0aW9uICsgXCJcIjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBjaHVua3Ncbi8vIFwiMVwiIG1lYW5zIFwiYWxyZWFkeSBsb2FkZWRcIlxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJub2RlX21vZHVsZXNfdnNjb2RlX2RpZmZfZGlzdF93b3JrZXJfanNfZXNtXCI6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdGxldCBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gdGhpc1tcIndlYnBhY2tDaHVua2pkZXJvYm90X2lkZV9pbnRlcmZhY2VcIl0gPSB0aGlzW1wid2VicGFja0NodW5ramRlcm9ib3RfaWRlX2ludGVyZmFjZVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiY29uc3QgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZShcInZlbmRvcnMtbm9kZV9tb2R1bGVzX3ZzY29kZV9kaWZmX2Rpc3Rfd2lyZV9qc1wiKS50aGVuKG5leHQpO1xufTsiLCIiLCIvLyBydW4gc3RhcnR1cFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLngoKTtcbiIsIiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
|