experimental-agent 0.0.3 → 0.0.5
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/agent-workflow.d.mts +1 -1
- package/dist/agent-workflow.d.ts +1 -1
- package/dist/agent-workflow.js +739 -319
- package/dist/agent-workflow.mjs +1 -1
- package/dist/chunk-2IIWVPZB.mjs +334 -0
- package/dist/{chunk-TQRCSTCF.mjs → chunk-CQB6AOJ7.mjs} +2 -2
- package/dist/{chunk-UFVWOC5L.mjs → chunk-CRDAPJEY.mjs} +3 -3
- package/dist/chunk-GJETDXOU.mjs +361 -0
- package/dist/chunk-M2XPBOZD.mjs +1980 -0
- package/dist/chunk-ZWP7RQZT.mjs +1239 -0
- package/dist/{client-SREKHM6I.mjs → client-5C4CNU6H.mjs} +1 -1
- package/dist/{client-BlSrVoPI.d.mts → client-9A8NO6x9.d.mts} +268 -7
- package/dist/{client-BlSrVoPI.d.ts → client-9A8NO6x9.d.ts} +268 -7
- package/dist/{handler-36FM5H35.mjs → handler-SZDTM3MC.mjs} +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +875 -341
- package/dist/index.mjs +96 -24
- package/dist/lifecycle-workflow.d.mts +1 -1
- package/dist/lifecycle-workflow.d.ts +1 -1
- package/dist/lifecycle-workflow.js +97 -4
- package/dist/lifecycle-workflow.mjs +1 -1
- package/dist/local-fs-handlers-BZVA3XAU.mjs +277 -0
- package/dist/next/loader.js +3 -3
- package/dist/next/loader.mjs +1 -1
- package/dist/next.js +6 -3
- package/dist/next.mjs +5 -2
- package/dist/{sandbox-QAPGBVYM.mjs → sandbox-M24R3JLM.mjs} +2 -2
- package/dist/{storage-Q376OZH3.mjs → storage-TMZQJ2OQ.mjs} +2 -2
- package/dist/vercel-WGN2NY3D.mjs +20 -0
- package/dist/{vercel-sdk-VHKEX2GQ.mjs → vercel-sdk-UKBD5JDI.mjs} +2 -2
- package/package.json +2 -2
- package/dist/chunk-GSRJYPWF.mjs +0 -284
- package/dist/chunk-JEE2FQ4O.mjs +0 -844
- package/dist/chunk-VBLZWXVE.mjs +0 -318
- package/dist/chunk-ZASQBPOI.mjs +0 -2057
- package/dist/local-fs-handlers-P4WGW3QY.mjs +0 -235
- package/dist/vercel-LLXAHKVJ.mjs +0 -20
package/dist/next.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
package_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CRDAPJEY.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__require
|
|
6
6
|
} from "./chunk-3ODWQVIA.mjs";
|
|
@@ -144,6 +144,9 @@ export function GET() {
|
|
|
144
144
|
}
|
|
145
145
|
function withAgent(configOrFn, agentConfig) {
|
|
146
146
|
const debug = agentConfig?.debug ?? false;
|
|
147
|
+
if (debug) {
|
|
148
|
+
process.env.AGENT_DEBUG = "1";
|
|
149
|
+
}
|
|
147
150
|
const cwd = process.cwd();
|
|
148
151
|
const appDir = getAppDir(cwd);
|
|
149
152
|
const agentDir = `${appDir}/.well-known/agent/${AGENT_PROTOCOL_VERSION}`;
|
|
@@ -221,4 +224,4 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
221
224
|
export {
|
|
222
225
|
withAgent
|
|
223
226
|
};
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTmV4dENvbmZpZyB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuZXhwb3J0IHR5cGUgV2l0aEFnZW50Q29uZmlnID0ge1xuICAvKiogRW5hYmxlIGRlYnVnIGxvZ2dpbmcgKi9cbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgRklMRV9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxqc3xqc3gpJC87XG5jb25zdCBBR0VOVF9FWFBPUlRfUkVHRVggPSAvZXhwb3J0XFxzK2NvbnN0XFxzKyhcXHcrKVxccyo9XFxzKmFnZW50XFxzKlxcKC9nO1xuY29uc3QgREVGQVVMVF9XT1JLRkxPV19ESVJTID0gW1wicGFnZXNcIiwgXCJhcHBcIiwgXCJzcmMvcGFnZXNcIiwgXCJzcmMvYXBwXCJdO1xuXG50eXBlIERldGVjdGVkQWdlbnQgPSB7XG4gIGV4cG9ydE5hbWU6IHN0cmluZztcbiAgZmlsZVBhdGg6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyOiBleHBvcnROYW1lIG9yIGV4cG9ydE5hbWVfaGFzaCBpZiBkdXBsaWNhdGVzIGV4aXN0ICovXG4gIHVuaXF1ZUlkOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBzaG9ydEhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9CaXR3aXNlT3BlcmF0b3JzOiBpbnRlbnRpb25hbCBoYXNoIGNvbXB1dGF0aW9uXG4gICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNoYXI7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXJcbiAgICBoYXNoICY9IGhhc2g7XG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA2KTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgdGhlIHByb2plY3QgdXNlcyBzcmMvYXBwIG9yIGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlLlxuICogUmV0dXJucyB0aGUgYXBwIGRpcmVjdG9yeSBwYXRoIHJlbGF0aXZlIHRvIGN3ZC5cbiAqL1xuZnVuY3Rpb24gZ2V0QXBwRGlyKGN3ZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3JjQXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiwgXCJhcHBcIik7XG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBleHBvcnRNYXRjaGVzID0gY29udGVudC5tYXRjaEFsbChBR0VOVF9FWFBPUlRfUkVHRVgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBleHBvcnRNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIGFnZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBvcnROYW1lOiBtYXRjaFsxXSxcbiAgICAgICAgICAgICAgICBmaWxlUGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICAgICAgdW5pcXVlSWQ6IFwiXCIsIC8vIFdpbGwgYmUgc2V0IGFmdGVyIGFsbCBhZ2VudHMgYXJlIGZvdW5kXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGBbd2l0aEFnZW50XSBGb3VuZCBhZ2VudDogJHttYXRjaFsxXX0gaW4gJHtmdWxsUGF0aH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHJlYWQgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzVG9TY2FuKSB7XG4gICAgc2NhbkRpcihkaXIpO1xuICB9XG5cbiAgLy8gQXNzaWduIHVuaXF1ZSBJRHMgLSBhZGQgaGFzaCBzdWZmaXggaWYgZHVwbGljYXRlIGV4cG9ydCBuYW1lcyBleGlzdFxuICBjb25zdCBuYW1lQ291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBuYW1lQ291bnRzLnNldChcbiAgICAgIGFnZW50LmV4cG9ydE5hbWUsXG4gICAgICAobmFtZUNvdW50cy5nZXQoYWdlbnQuZXhwb3J0TmFtZSkgfHwgMCkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYWdlbnQgb2YgYWdlbnRzKSB7XG4gICAgY29uc3QgY291bnQgPSBuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSA/PyAwO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYCR7YWdlbnQuZXhwb3J0TmFtZX1fJHtzaG9ydEhhc2goYWdlbnQuZmlsZVBhdGgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYWdlbnQuZXhwb3J0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWdlbnRzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbGwgYWdlbnQgZmlsZXMgaW4gLndlbGwta25vd24vYWdlbnQvdjEvOlxuICogLSBzdGVwcy5qczogUlBDIHN0ZXAgZnVuY3Rpb25zIHdpdGggXCJ1c2Ugc3RlcFwiXG4gKiAtIHJvdXRlLmpzOiB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVBZ2VudEZpbGVzKFxuICBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4gIF9jd2Q6IHN0cmluZyxcbiAgZGVidWc6IGJvb2xlYW5cbik6IHZvaWQge1xuICBpZiAoYWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBObyBhZ2VudHMgZm91bmQsIHNraXBwaW5nIGdlbmVyYXRpb25cIik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXREaXIpKSB7XG4gICAgZnMubWtkaXJTeW5jKG91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc3RlcCBmdW5jdGlvbnMgdGhhdCB1c2UgZHluYW1pYyBpbXBvcnQuXG4gICAqIER5bmFtaWMgaW1wb3J0IGVuc3VyZXMgdGhlIGFnZW50IG1vZHVsZSBsb2FkcyAoaW5jbHVkaW5nIGxvYWRlci1pbmplY3RlZCBpbml0KVxuICAgKiB3aGVuIHRoZSBzdGVwIHJ1bnMgaW4gd29ya2Zsb3cgY29udGV4dCwgYXZvaWRpbmcgdGhlIFwibm90IGluaXRpYWxpemVkXCIgZXJyb3IuXG4gICAqXG4gICAqIFVzZXMgdW5pcXVlSWQgZm9yIGZ1bmN0aW9uIG5hbWVzIHRvIGhhbmRsZSBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGFjcm9zcyBmaWxlcy5cbiAgICovXG4gIGNvbnN0IHJwY0Z1bmN0aW9ucyA9IGFnZW50c1xuICAgIC5tYXAoKGEpID0+IHtcbiAgICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBwYXRoIGZyb20gc3RlcHMuanMgdG8gdGhlIGFnZW50IGZpbGVcbiAgICAgIGxldCBhZ2VudFJlbFBhdGggPSBwYXRoXG4gICAgICAgIC5yZWxhdGl2ZShvdXRwdXREaXIsIGEuZmlsZVBhdGgpXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgaWYgKCFhZ2VudFJlbFBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgYWdlbnRSZWxQYXRoID0gYC4vJHthZ2VudFJlbFBhdGh9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGBcbmV4cG9ydCBjb25zdCAke2EudW5pcXVlSWR9UnBjID0gYXN5bmMgKHBhcmFtcykgPT4ge1xuICBcInVzZSBzdGVwXCI7XG4gIGNvbnN0IHsgJHthLmV4cG9ydE5hbWV9IH0gPSBhd2FpdCBpbXBvcnQoXCIke2FnZW50UmVsUGF0aH1cIik7XG4gIGNvbnN0IHJlcyA9IGF3YWl0ICR7YS5leHBvcnROYW1lfS5oYW5kbGVyKHBhcmFtcyk7XG4gIGlmIChyZXMgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgIHJldHVybiByZXMuanNvbigpO1xuICB9XG4gIHJldHVybiByZXM7XG59O2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICAvKipcbiAgICogSW5pdCBmdW5jdGlvbnMgd2lyZSB1cCBhZ2VudC5ycGMgaW4gdGhlIG1haW4gYXBwIGNvbnRleHQuXG4gICAqIFVzZXMgZXhwb3J0TmFtZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgKGxvYWRlciBtYXRjaGVzIGJ5IGV4cG9ydCBuYW1lKSxcbiAgICogYnV0IHJlZmVyZW5jZXMgdW5pcXVlSWQgZm9yIHRoZSBScGMgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdCBpbml0RnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcChcbiAgICAgIChhKSA9PiBgXG5leHBvcnQgZnVuY3Rpb24gX19pbml0JHthLmV4cG9ydE5hbWVbMF0udG9VcHBlckNhc2UoKX0ke2EuZXhwb3J0TmFtZS5zbGljZShcbiAgICAgICAgMVxuICAgICAgKX0oYWdlbnQpIHtcbiAgYWdlbnQucnBjID0gJHthLnVuaXF1ZUlkfVJwYztcbn1gXG4gICAgKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IHN0ZXBzQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSBkbyBub3QgZWRpdFxuJHtycGNGdW5jdGlvbnN9XG4ke2luaXRGdW5jdGlvbnN9XG5gO1xuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwic3RlcHMuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMoc3RlcHNQYXRoLCBzdGVwc0NvbnRlbnQpO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByb3V0ZS5qcyB0aGF0IGltcG9ydHMgc3RlcHMuanMuXG4gICAqIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlIFwidXNlIHN0ZXBcIiBmdW5jdGlvbnMuXG4gICAqIE5vIGFjdHVhbCBoYW5kbGVyIG5lZWRlZCAtIHN0b3JhZ2UgUlBDIHVzZXMgdGhlIHN0ZXAgZnVuY3Rpb24gZGlyZWN0bHkuXG4gICAqL1xuICBjb25zdCByb3V0ZUNvbnRlbnQgPSBgLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50IC0gdHJpZ2dlcnMgd29ya2Zsb3cgZGlzY292ZXJ5XG5pbXBvcnQgXCIuL3N0ZXBzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gR0VUKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwib2tcIik7XG59XG5gO1xuXG4gIGNvbnN0IHJvdXRlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwicm91dGUuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMocm91dGVQYXRoLCByb3V0ZUNvbnRlbnQpO1xuXG4gIC8vIEFkZCAuZ2l0aWdub3JlXG4gIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coYFt3aXRoQWdlbnRdIEdlbmVyYXRlZCBhZ2VudCBmaWxlcyBhdCAke291dHB1dERpcn1gKTtcbiAgfVxufVxuXG50eXBlIFR1cmJvcGFja1J1bGUgPSB7XG4gIGxvYWRlcnM/OiBzdHJpbmdbXTtcbiAgY29uZGl0aW9uPzoge1xuICAgIGFsbD86IHVua25vd25bXTtcbiAgICBhbnk/OiB1bmtub3duW107XG4gICAgcGF0aD86IFJlZ0V4cDtcbiAgICBjb250ZW50PzogUmVnRXhwO1xuICAgIG5vdD86IHVua25vd247XG4gIH07XG59O1xuXG50eXBlIFdvcmtmbG93Q29uZmlnRm4gPSAoXG4gIHBoYXNlOiBzdHJpbmcsXG4gIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbikgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPjtcblxudHlwZSBOZXh0Q29uZmlnSW5wdXQgPVxuICB8IE5leHRDb25maWdcbiAgfCAoKFxuICAgICAgcGhhc2U6IHN0cmluZyxcbiAgICAgIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbiAgICApID0+IFByb21pc2U8TmV4dENvbmZpZz4pO1xuXG4vKipcbiAqIE5leHQuanMgcGx1Z2luIHRoYXQgY29uZmlndXJlcyBhZ2VudCBzdXBwb3J0LlxuICpcbiAqIC0gRGV0ZWN0cyBhZ2VudHMgYW5kIGdlbmVyYXRlcyBSUEMgc3RlcHMgd2l0aCBcInVzZSBzdGVwXCIgaW4gLndlbGwta25vd24vYWdlbnQvdjEvXG4gKiAtIEdlbmVyYXRlcyBBR0VOVF9TRUNSRVQgZm9yIHNlY3VyZSBSUEMgY2FsbHNcbiAqIC0gV3JhcHMgd2l0aFdvcmtmbG93IGZvciB3b3JrZmxvdyBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBuZXh0LmNvbmZpZy50c1xuICogaW1wb3J0IHsgd2l0aEFnZW50IH0gZnJvbSBcImV4cGVyaW1lbnRhbC1hZ2VudC9uZXh0XCI7XG4gKlxuICogLy8gT3B0aW9uIDE6IHdpdGhBZ2VudCBoYW5kbGVzIGV2ZXJ5dGhpbmcgKHJlY29tbWVuZGVkKVxuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHt9KTtcbiAqXG4gKiAvLyBPcHRpb24gMjogQ29tcG9zZSB3aXRoIG90aGVyIHBsdWdpbnNcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh3aXRoU29tZU90aGVyUGx1Z2luKHt9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBZ2VudChcbiAgY29uZmlnT3JGbjogTmV4dENvbmZpZ0lucHV0LFxuICBhZ2VudENvbmZpZz86IFdpdGhBZ2VudENvbmZpZ1xuKTogV29ya2Zsb3dDb25maWdGbiB7XG4gIGNvbnN0IGRlYnVnID0gYWdlbnRDb25maWc/LmRlYnVnID8/IGZhbHNlO1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIERldGVjdCBhcHAgZGlyZWN0b3J5IHN0cnVjdHVyZSAoc3JjL2FwcCB2cyBhcHApXG4gIGNvbnN0IGFwcERpciA9IGdldEFwcERpcihjd2QpO1xuICBjb25zdCBhZ2VudERpciA9IGAke2FwcERpcn0vLndlbGwta25vd24vYWdlbnQvJHtBR0VOVF9QUk9UT0NPTF9WRVJTSU9OfWA7XG5cbiAgLy8gRGV0ZWN0IGFnZW50cyBhbmQgZ2VuZXJhdGUgZmlsZXMgRklSU1QgKGJlZm9yZSB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlbSlcbiAgY29uc3QgYWdlbnRzID0gZGV0ZWN0QWdlbnRzKGN3ZCwgZGVidWcpO1xuICBjb25zdCBvdXRwdXREaXIgPSBwYXRoLmpvaW4oY3dkLCBhZ2VudERpcik7XG4gIGdlbmVyYXRlQWdlbnRGaWxlcyhhZ2VudHMsIG91dHB1dERpciwgY3dkLCBkZWJ1Zyk7XG5cbiAgY29uc3QgYWdlbnRGaWxlUGF0aHMgPSBhZ2VudHMubWFwKChhKSA9PiBhLmZpbGVQYXRoKTtcbiAgY29uc3QgbG9hZGVyUGF0aCA9IHJlcXVpcmUucmVzb2x2ZShcIi4vbmV4dC9sb2FkZXJcIik7XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBsb2FkZXIgcGF0aDpcIiwgbG9hZGVyUGF0aCk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBmaWxlczpcIiwgYWdlbnRGaWxlUGF0aHMpO1xuICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gYWdlbnQgZGlyOlwiLCBhZ2VudERpcik7XG4gIH1cblxuICAvLyBCdWlsZCByZWdleCB0byBtYXRjaCBhZ2VudCBmaWxlIHBhdGhzXG4gIGNvbnN0IGFnZW50UGF0aFJlZ2V4ID1cbiAgICBhZ2VudEZpbGVQYXRocy5sZW5ndGggPiAwXG4gICAgICA/IG5ldyBSZWdFeHAoXG4gICAgICAgICAgYCR7YWdlbnRGaWxlUGF0aHNcbiAgICAgICAgICAgIC5tYXAoKHApID0+XG4gICAgICAgICAgICAgIHBhdGhcbiAgICAgICAgICAgICAgICAucmVsYXRpdmUoY3dkLCBwKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKFwifFwiKX0kYFxuICAgICAgICApXG4gICAgICA6IG51bGw7XG5cbiAgLyoqXG4gICAqIEFsd2F5cyBwYXNzIHRocm91Z2ggd2l0aFdvcmtmbG93IC0gaXQgaGFuZGxlcyBib3RoIE5leHRDb25maWcgYW5kIGFzeW5jIGZ1bmN0aW9ucy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGlzIGFsd2F5cyBjb25maWd1cmVkLCByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIHVzZXIgcGFzc2VkLlxuICAgKi9cbiAgbGV0IHdpdGhXb3JrZmxvdzogKFxuICAgIGNvbmZpZzogTmV4dENvbmZpZ0lucHV0LFxuICAgIG9wdGlvbnM/OiB7IHdvcmtmbG93cz86IHsgZGlycz86IHN0cmluZ1tdIH0gfVxuICApID0+IFdvcmtmbG93Q29uZmlnRm47XG4gIHRyeSB7XG4gICAgd2l0aFdvcmtmbG93ID0gcmVxdWlyZShcIndvcmtmbG93L25leHRcIikud2l0aFdvcmtmbG93O1xuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIlt3aXRoQWdlbnRdIHdvcmtmbG93L25leHQgbm90IGZvdW5kLiBNYWtlIHN1cmUgd29ya2Zsb3cgaXMgaW5zdGFsbGVkLlwiXG4gICAgKTtcbiAgICByZXR1cm4gdHlwZW9mIGNvbmZpZ09yRm4gPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBjb25maWdPckZuXG4gICAgICA6IGFzeW5jICgpID0+IGNvbmZpZ09yRm47XG4gIH1cblxuICBjb25zdCBiYXNlQ29uZmlnRm4gPSB3aXRoV29ya2Zsb3coY29uZmlnT3JGbiwge1xuICAgIHdvcmtmbG93czoge1xuICAgICAgZGlyczogWy4uLkRFRkFVTFRfV09SS0ZMT1dfRElSUywgYWdlbnREaXJdLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSB3cmFwcGVyIHRoYXQgcnVucyBBRlRFUiB3b3JrZmxvdyBwcm9jZXNzZXMsIHRoZW4gYWRkcyBvdXIgbG9hZGVyLlxuICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdvcmtmbG93IG92ZXJ3cml0ZXMgdHVyYm9wYWNrIHJ1bGVzIC0gd2UgbmVlZCB0b1xuICAgKiBtb2RpZnkgdGhlbSBhZnRlciB3b3JrZmxvdyBpcyBkb25lLlxuICAgKi9cbiAgcmV0dXJuIGFzeW5jIChwaGFzZSwgY3R4KSA9PiB7XG4gICAgY29uc3QgbmV4dENvbmZpZyA9IGF3YWl0IGJhc2VDb25maWdGbihwaGFzZSwgY3R4KTtcblxuICAgIC8vIFNldCB1cCBBR0VOVF9TRUNSRVQgaWYgbm90IGFscmVhZHkgc2V0XG4gICAgaWYgKCFwcm9jZXNzLmVudi5BR0VOVF9TRUNSRVQpIHtcbiAgICAgIG5leHRDb25maWcuZW52ID0ge1xuICAgICAgICAuLi5uZXh0Q29uZmlnLmVudixcbiAgICAgICAgQUdFTlRfU0VDUkVUOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgfTtcbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEdlbmVyYXRlZCBBR0VOVF9TRUNSRVRcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFhZ2VudFBhdGhSZWdleCB8fCBhZ2VudEZpbGVQYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXh0Q29uZmlnO1xuICAgIH1cblxuICAgIC8vIE1vZGlmeSB0dXJib3BhY2sgcnVsZXMgdG8gaW5jbHVkZSBvdXIgbG9hZGVyIGZvciBhZ2VudCBmaWxlc1xuICAgIGNvbnN0IHJ1bGVzID0gKG5leHRDb25maWcudHVyYm9wYWNrPy5ydWxlcyB8fCB7fSkgYXMgUmVjb3JkPFxuICAgICAgc3RyaW5nLFxuICAgICAgVHVyYm9wYWNrUnVsZVxuICAgID47XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBbXCIqLnRzXCIsIFwiKi50c3hcIiwgXCIqLmpzXCIsIFwiKi5qc3hcIl0pIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nUnVsZSA9IHJ1bGVzW2tleV07XG4gICAgICBpZiAoIWV4aXN0aW5nUnVsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBXb3JrZmxvdydzIHJ1bGUgaGFzOiBjb25kaXRpb24uYWxsID0gW3sgbm90OiBwYXRoIH0sIHsgY29udGVudDogL3VzZSBzdGVwfC4uLi8gfV1cbiAgICAgICAqIFdlIHdhbnQ6IHJ1biBsb2FkZXIgaWYgd29ya2Zsb3cncyBjb25kaXRpb25zIG1hdGNoIE9SIGl0J3MgYW4gYWdlbnQgZmlsZS5cbiAgICAgICAqIFNvIHdlIHdyYXAgaW46IGNvbmRpdGlvbi5hbnkgPSBbZXhpc3RpbmdDb25kaXRpb24sIHsgcGF0aDogYWdlbnRQYXRoUmVnZXggfV1cbiAgICAgICAqL1xuICAgICAgcnVsZXNba2V5XSA9IHtcbiAgICAgICAgLi4uZXhpc3RpbmdSdWxlLFxuICAgICAgICBsb2FkZXJzOiBbbG9hZGVyUGF0aCwgLi4uKGV4aXN0aW5nUnVsZS5sb2FkZXJzIHx8IFtdKV0sXG4gICAgICAgIGNvbmRpdGlvbjoge1xuICAgICAgICAgIGFueTogW2V4aXN0aW5nUnVsZS5jb25kaXRpb24sIHsgcGF0aDogYWdlbnRQYXRoUmVnZXggfV0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEFsc28gY29uZmlndXJlIHdlYnBhY2sgZm9yIG5vbi10dXJib3BhY2sgYnVpbGRzXG4gICAgY29uc3QgZXhpc3RpbmdXZWJwYWNrID0gbmV4dENvbmZpZy53ZWJwYWNrO1xuICAgIG5leHRDb25maWcud2VicGFjayA9ICh3ZWJwYWNrQ29uZmlnLCBjb250ZXh0KSA9PiB7XG4gICAgICB3ZWJwYWNrQ29uZmlnLm1vZHVsZS5ydWxlcy5wdXNoKHtcbiAgICAgICAgdGVzdDogKHJlc291cmNlUGF0aDogc3RyaW5nKSA9PiBhZ2VudEZpbGVQYXRocy5pbmNsdWRlcyhyZXNvdXJjZVBhdGgpLFxuICAgICAgICB1c2U6IFt7IGxvYWRlcjogbG9hZGVyUGF0aCB9XSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGV4aXN0aW5nV2VicGFjaz8uKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID8/IHdlYnBhY2tDb25maWc7XG4gICAgfTtcblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBBZGRlZCBhZ2VudCBsb2FkZXIgdG8gdHVyYm9wYWNrIHJ1bGVzXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0Q29uZmlnO1xuICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7QUFBQSxZQUFZLFlBQVk7QUFDeEIsWUFBWSxRQUFRO0FBQ3BCLFlBQVksVUFBVTtBQVN0QixJQUFNLGVBQWUsZ0JBQUk7QUFDekIsSUFBTSx5QkFBeUI7QUFDL0IsSUFBTSxpQkFBaUI7QUFDdkIsSUFBTSxxQkFBcUI7QUFDM0IsSUFBTSx3QkFBd0IsQ0FBQyxTQUFTLE9BQU8sYUFBYSxTQUFTO0FBU3JFLFNBQVMsVUFBVSxLQUFxQjtBQUN0QyxNQUFJLE9BQU87QUFDWCxXQUFTLElBQUksR0FBRyxJQUFJLElBQUksUUFBUSxLQUFLO0FBQ25DLFVBQU0sT0FBTyxJQUFJLFdBQVcsQ0FBQztBQUU3QixZQUFRLFFBQVEsS0FBSyxPQUFPO0FBRTVCLFlBQVE7QUFBQSxFQUNWO0FBQ0EsU0FBTyxLQUFLLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sR0FBRyxDQUFDO0FBQy9DO0FBTUEsU0FBUyxVQUFVLEtBQXFCO0FBQ3RDLFFBQU0sWUFBaUIsVUFBSyxLQUFLLE9BQU8sS0FBSztBQUM3QyxNQUFPLGNBQVcsU0FBUyxHQUFHO0FBQzVCLFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTztBQUNUO0FBS0EsU0FBUyxhQUFhLEtBQWEsT0FBaUM7QUFDbEUsUUFBTSxTQUEwQixDQUFDO0FBRWpDLFFBQU0sYUFBYSxDQUFNLFVBQUssS0FBSyxLQUFLLEdBQUcsR0FBRztBQUU5QyxXQUFTLFFBQVEsS0FBYTtBQUM1QixRQUFJLENBQUksY0FBVyxHQUFHLEdBQUc7QUFDdkI7QUFBQSxJQUNGO0FBRUEsVUFBTSxVQUFhLGVBQVksS0FBSyxFQUFFLGVBQWUsS0FBSyxDQUFDO0FBQzNELGVBQVcsU0FBUyxTQUFTO0FBQzNCLFlBQU0sV0FBZ0IsVUFBSyxLQUFL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
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTmV4dENvbmZpZyB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuZXhwb3J0IHR5cGUgV2l0aEFnZW50Q29uZmlnID0ge1xuICAvKiogRW5hYmxlIGRlYnVnIGxvZ2dpbmcgKi9cbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgRklMRV9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxqc3xqc3gpJC87XG5jb25zdCBBR0VOVF9FWFBPUlRfUkVHRVggPSAvZXhwb3J0XFxzK2NvbnN0XFxzKyhcXHcrKVxccyo9XFxzKmFnZW50XFxzKlxcKC9nO1xuY29uc3QgREVGQVVMVF9XT1JLRkxPV19ESVJTID0gW1wicGFnZXNcIiwgXCJhcHBcIiwgXCJzcmMvcGFnZXNcIiwgXCJzcmMvYXBwXCJdO1xuXG50eXBlIERldGVjdGVkQWdlbnQgPSB7XG4gIGV4cG9ydE5hbWU6IHN0cmluZztcbiAgZmlsZVBhdGg6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyOiBleHBvcnROYW1lIG9yIGV4cG9ydE5hbWVfaGFzaCBpZiBkdXBsaWNhdGVzIGV4aXN0ICovXG4gIHVuaXF1ZUlkOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBzaG9ydEhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9CaXR3aXNlT3BlcmF0b3JzOiBpbnRlbnRpb25hbCBoYXNoIGNvbXB1dGF0aW9uXG4gICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNoYXI7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXJcbiAgICBoYXNoICY9IGhhc2g7XG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA2KTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgdGhlIHByb2plY3QgdXNlcyBzcmMvYXBwIG9yIGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlLlxuICogUmV0dXJucyB0aGUgYXBwIGRpcmVjdG9yeSBwYXRoIHJlbGF0aXZlIHRvIGN3ZC5cbiAqL1xuZnVuY3Rpb24gZ2V0QXBwRGlyKGN3ZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3JjQXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiwgXCJhcHBcIik7XG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBleHBvcnRNYXRjaGVzID0gY29udGVudC5tYXRjaEFsbChBR0VOVF9FWFBPUlRfUkVHRVgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBleHBvcnRNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIGFnZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBvcnROYW1lOiBtYXRjaFsxXSxcbiAgICAgICAgICAgICAgICBmaWxlUGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICAgICAgdW5pcXVlSWQ6IFwiXCIsIC8vIFdpbGwgYmUgc2V0IGFmdGVyIGFsbCBhZ2VudHMgYXJlIGZvdW5kXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGBbd2l0aEFnZW50XSBGb3VuZCBhZ2VudDogJHttYXRjaFsxXX0gaW4gJHtmdWxsUGF0aH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHJlYWQgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzVG9TY2FuKSB7XG4gICAgc2NhbkRpcihkaXIpO1xuICB9XG5cbiAgLy8gQXNzaWduIHVuaXF1ZSBJRHMgLSBhZGQgaGFzaCBzdWZmaXggaWYgZHVwbGljYXRlIGV4cG9ydCBuYW1lcyBleGlzdFxuICBjb25zdCBuYW1lQ291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBuYW1lQ291bnRzLnNldChcbiAgICAgIGFnZW50LmV4cG9ydE5hbWUsXG4gICAgICAobmFtZUNvdW50cy5nZXQoYWdlbnQuZXhwb3J0TmFtZSkgfHwgMCkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYWdlbnQgb2YgYWdlbnRzKSB7XG4gICAgY29uc3QgY291bnQgPSBuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSA/PyAwO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYCR7YWdlbnQuZXhwb3J0TmFtZX1fJHtzaG9ydEhhc2goYWdlbnQuZmlsZVBhdGgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYWdlbnQuZXhwb3J0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWdlbnRzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbGwgYWdlbnQgZmlsZXMgaW4gLndlbGwta25vd24vYWdlbnQvdjEvOlxuICogLSBzdGVwcy5qczogUlBDIHN0ZXAgZnVuY3Rpb25zIHdpdGggXCJ1c2Ugc3RlcFwiXG4gKiAtIHJvdXRlLmpzOiB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVBZ2VudEZpbGVzKFxuICBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4gIF9jd2Q6IHN0cmluZyxcbiAgZGVidWc6IGJvb2xlYW5cbik6IHZvaWQge1xuICBpZiAoYWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBObyBhZ2VudHMgZm91bmQsIHNraXBwaW5nIGdlbmVyYXRpb25cIik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXREaXIpKSB7XG4gICAgZnMubWtkaXJTeW5jKG91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc3RlcCBmdW5jdGlvbnMgdGhhdCB1c2UgZHluYW1pYyBpbXBvcnQuXG4gICAqIER5bmFtaWMgaW1wb3J0IGVuc3VyZXMgdGhlIGFnZW50IG1vZHVsZSBsb2FkcyAoaW5jbHVkaW5nIGxvYWRlci1pbmplY3RlZCBpbml0KVxuICAgKiB3aGVuIHRoZSBzdGVwIHJ1bnMgaW4gd29ya2Zsb3cgY29udGV4dCwgYXZvaWRpbmcgdGhlIFwibm90IGluaXRpYWxpemVkXCIgZXJyb3IuXG4gICAqXG4gICAqIFVzZXMgdW5pcXVlSWQgZm9yIGZ1bmN0aW9uIG5hbWVzIHRvIGhhbmRsZSBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGFjcm9zcyBmaWxlcy5cbiAgICovXG4gIGNvbnN0IHJwY0Z1bmN0aW9ucyA9IGFnZW50c1xuICAgIC5tYXAoKGEpID0+IHtcbiAgICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBwYXRoIGZyb20gc3RlcHMuanMgdG8gdGhlIGFnZW50IGZpbGVcbiAgICAgIGxldCBhZ2VudFJlbFBhdGggPSBwYXRoXG4gICAgICAgIC5yZWxhdGl2ZShvdXRwdXREaXIsIGEuZmlsZVBhdGgpXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgaWYgKCFhZ2VudFJlbFBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgYWdlbnRSZWxQYXRoID0gYC4vJHthZ2VudFJlbFBhdGh9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGBcbmV4cG9ydCBjb25zdCAke2EudW5pcXVlSWR9UnBjID0gYXN5bmMgKHBhcmFtcykgPT4ge1xuICBcInVzZSBzdGVwXCI7XG4gIGNvbnN0IHsgJHthLmV4cG9ydE5hbWV9IH0gPSBhd2FpdCBpbXBvcnQoXCIke2FnZW50UmVsUGF0aH1cIik7XG4gIGNvbnN0IHJlcyA9IGF3YWl0ICR7YS5leHBvcnROYW1lfS5oYW5kbGVyKHBhcmFtcyk7XG4gIGlmIChyZXMgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgIHJldHVybiByZXMuanNvbigpO1xuICB9XG4gIHJldHVybiByZXM7XG59O2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICAvKipcbiAgICogSW5pdCBmdW5jdGlvbnMgd2lyZSB1cCBhZ2VudC5ycGMgaW4gdGhlIG1haW4gYXBwIGNvbnRleHQuXG4gICAqIFVzZXMgZXhwb3J0TmFtZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgKGxvYWRlciBtYXRjaGVzIGJ5IGV4cG9ydCBuYW1lKSxcbiAgICogYnV0IHJlZmVyZW5jZXMgdW5pcXVlSWQgZm9yIHRoZSBScGMgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdCBpbml0RnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcChcbiAgICAgIChhKSA9PiBgXG5leHBvcnQgZnVuY3Rpb24gX19pbml0JHthLmV4cG9ydE5hbWVbMF0udG9VcHBlckNhc2UoKX0ke2EuZXhwb3J0TmFtZS5zbGljZShcbiAgICAgICAgMVxuICAgICAgKX0oYWdlbnQpIHtcbiAgYWdlbnQucnBjID0gJHthLnVuaXF1ZUlkfVJwYztcbn1gXG4gICAgKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IHN0ZXBzQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSBkbyBub3QgZWRpdFxuJHtycGNGdW5jdGlvbnN9XG4ke2luaXRGdW5jdGlvbnN9XG5gO1xuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwic3RlcHMuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMoc3RlcHNQYXRoLCBzdGVwc0NvbnRlbnQpO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByb3V0ZS5qcyB0aGF0IGltcG9ydHMgc3RlcHMuanMuXG4gICAqIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlIFwidXNlIHN0ZXBcIiBmdW5jdGlvbnMuXG4gICAqIE5vIGFjdHVhbCBoYW5kbGVyIG5lZWRlZCAtIHN0b3JhZ2UgUlBDIHVzZXMgdGhlIHN0ZXAgZnVuY3Rpb24gZGlyZWN0bHkuXG4gICAqL1xuICBjb25zdCByb3V0ZUNvbnRlbnQgPSBgLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50IC0gdHJpZ2dlcnMgd29ya2Zsb3cgZGlzY292ZXJ5XG5pbXBvcnQgXCIuL3N0ZXBzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gR0VUKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwib2tcIik7XG59XG5gO1xuXG4gIGNvbnN0IHJvdXRlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwicm91dGUuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMocm91dGVQYXRoLCByb3V0ZUNvbnRlbnQpO1xuXG4gIC8vIEFkZCAuZ2l0aWdub3JlXG4gIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coYFt3aXRoQWdlbnRdIEdlbmVyYXRlZCBhZ2VudCBmaWxlcyBhdCAke291dHB1dERpcn1gKTtcbiAgfVxufVxuXG50eXBlIFR1cmJvcGFja1J1bGUgPSB7XG4gIGxvYWRlcnM/OiBzdHJpbmdbXTtcbiAgY29uZGl0aW9uPzoge1xuICAgIGFsbD86IHVua25vd25bXTtcbiAgICBhbnk/OiB1bmtub3duW107XG4gICAgcGF0aD86IFJlZ0V4cDtcbiAgICBjb250ZW50PzogUmVnRXhwO1xuICAgIG5vdD86IHVua25vd247XG4gIH07XG59O1xuXG50eXBlIFdvcmtmbG93Q29uZmlnRm4gPSAoXG4gIHBoYXNlOiBzdHJpbmcsXG4gIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbikgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPjtcblxudHlwZSBOZXh0Q29uZmlnSW5wdXQgPVxuICB8IE5leHRDb25maWdcbiAgfCAoKFxuICAgICAgcGhhc2U6IHN0cmluZyxcbiAgICAgIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbiAgICApID0+IFByb21pc2U8TmV4dENvbmZpZz4pO1xuXG4vKipcbiAqIE5leHQuanMgcGx1Z2luIHRoYXQgY29uZmlndXJlcyBhZ2VudCBzdXBwb3J0LlxuICpcbiAqIC0gRGV0ZWN0cyBhZ2VudHMgYW5kIGdlbmVyYXRlcyBSUEMgc3RlcHMgd2l0aCBcInVzZSBzdGVwXCIgaW4gLndlbGwta25vd24vYWdlbnQvdjEvXG4gKiAtIEdlbmVyYXRlcyBBR0VOVF9TRUNSRVQgZm9yIHNlY3VyZSBSUEMgY2FsbHNcbiAqIC0gV3JhcHMgd2l0aFdvcmtmbG93IGZvciB3b3JrZmxvdyBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBuZXh0LmNvbmZpZy50c1xuICogaW1wb3J0IHsgd2l0aEFnZW50IH0gZnJvbSBcImV4cGVyaW1lbnRhbC1hZ2VudC9uZXh0XCI7XG4gKlxuICogLy8gT3B0aW9uIDE6IHdpdGhBZ2VudCBoYW5kbGVzIGV2ZXJ5dGhpbmcgKHJlY29tbWVuZGVkKVxuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHt9KTtcbiAqXG4gKiAvLyBPcHRpb24gMjogQ29tcG9zZSB3aXRoIG90aGVyIHBsdWdpbnNcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh3aXRoU29tZU90aGVyUGx1Z2luKHt9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBZ2VudChcbiAgY29uZmlnT3JGbjogTmV4dENvbmZpZ0lucHV0LFxuICBhZ2VudENvbmZpZz86IFdpdGhBZ2VudENvbmZpZ1xuKTogV29ya2Zsb3dDb25maWdGbiB7XG4gIGNvbnN0IGRlYnVnID0gYWdlbnRDb25maWc/LmRlYnVnID8/IGZhbHNlO1xuICBpZiAoZGVidWcpIHtcbiAgICBwcm9jZXNzLmVudi5BR0VOVF9ERUJVRyA9IFwiMVwiO1xuICB9XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gRGV0ZWN0IGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlIChzcmMvYXBwIHZzIGFwcClcbiAgY29uc3QgYXBwRGlyID0gZ2V0QXBwRGlyKGN3ZCk7XG4gIGNvbnN0IGFnZW50RGlyID0gYCR7YXBwRGlyfS8ud2VsbC1rbm93bi9hZ2VudC8ke0FHRU5UX1BST1RPQ09MX1ZFUlNJT059YDtcblxuICAvLyBEZXRlY3QgYWdlbnRzIGFuZCBnZW5lcmF0ZSBmaWxlcyBGSVJTVCAoYmVmb3JlIHdvcmtmbG93IGRpc2NvdmVycyB0aGVtKVxuICBjb25zdCBhZ2VudHMgPSBkZXRlY3RBZ2VudHMoY3dkLCBkZWJ1Zyk7XG4gIGNvbnN0IG91dHB1dERpciA9IHBhdGguam9pbihjd2QsIGFnZW50RGlyKTtcbiAgZ2VuZXJhdGVBZ2VudEZpbGVzKGFnZW50cywgb3V0cHV0RGlyLCBjd2QsIGRlYnVnKTtcblxuICBjb25zdCBhZ2VudEZpbGVQYXRocyA9IGFnZW50cy5tYXAoKGEpID0+IGEuZmlsZVBhdGgpO1xuICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFwiLi9uZXh0L2xvYWRlclwiKTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGxvYWRlciBwYXRoOlwiLCBsb2FkZXJQYXRoKTtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGFnZW50IGZpbGVzOlwiLCBhZ2VudEZpbGVQYXRocyk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBkaXI6XCIsIGFnZW50RGlyKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHJlZ2V4IHRvIG1hdGNoIGFnZW50IGZpbGUgcGF0aHNcbiAgY29uc3QgYWdlbnRQYXRoUmVnZXggPVxuICAgIGFnZW50RmlsZVBhdGhzLmxlbmd0aCA+IDBcbiAgICAgID8gbmV3IFJlZ0V4cChcbiAgICAgICAgICBgJHthZ2VudEZpbGVQYXRoc1xuICAgICAgICAgICAgLm1hcCgocCkgPT5cbiAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIC5yZWxhdGl2ZShjd2QsIHApXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oXCJ8XCIpfSRgXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAvKipcbiAgICogQWx3YXlzIHBhc3MgdGhyb3VnaCB3aXRoV29ya2Zsb3cgLSBpdCBoYW5kbGVzIGJvdGggTmV4dENvbmZpZyBhbmQgYXN5bmMgZnVuY3Rpb25zLlxuICAgKiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgaXMgYWx3YXlzIGNvbmZpZ3VyZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgdXNlciBwYXNzZWQuXG4gICAqL1xuICBsZXQgd2l0aFdvcmtmbG93OiAoXG4gICAgY29uZmlnOiBOZXh0Q29uZmlnSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgd29ya2Zsb3dzPzogeyBkaXJzPzogc3RyaW5nW10gfSB9XG4gICkgPT4gV29ya2Zsb3dDb25maWdGbjtcbiAgdHJ5IHtcbiAgICB3aXRoV29ya2Zsb3cgPSByZXF1aXJlKFwid29ya2Zsb3cvbmV4dFwiKS53aXRoV29ya2Zsb3c7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3dpdGhBZ2VudF0gd29ya2Zsb3cvbmV4dCBub3QgZm91bmQuIE1ha2Ugc3VyZSB3b3JrZmxvdyBpcyBpbnN0YWxsZWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0eXBlb2YgY29uZmlnT3JGbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNvbmZpZ09yRm5cbiAgICAgIDogYXN5bmMgKCkgPT4gY29uZmlnT3JGbjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb25maWdGbiA9IHdpdGhXb3JrZmxvdyhjb25maWdPckZuLCB7XG4gICAgd29ya2Zsb3dzOiB7XG4gICAgICBkaXJzOiBbLi4uREVGQVVMVF9XT1JLRkxPV19ESVJTLCBhZ2VudERpcl0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHdyYXBwZXIgdGhhdCBydW5zIEFGVEVSIHdvcmtmbG93IHByb2Nlc3NlcywgdGhlbiBhZGRzIG91ciBsb2FkZXIuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd29ya2Zsb3cgb3ZlcndyaXRlcyB0dXJib3BhY2sgcnVsZXMgLSB3ZSBuZWVkIHRvXG4gICAqIG1vZGlmeSB0aGVtIGFmdGVyIHdvcmtmbG93IGlzIGRvbmUuXG4gICAqL1xuICByZXR1cm4gYXN5bmMgKHBoYXNlLCBjdHgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29uZmlnID0gYXdhaXQgYmFzZUNvbmZpZ0ZuKHBoYXNlLCBjdHgpO1xuXG4gICAgLy8gU2V0IHVwIEFHRU5UX1NFQ1JFVCBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICBpZiAoIXByb2Nlc3MuZW52LkFHRU5UX1NFQ1JFVCkge1xuICAgICAgbmV4dENvbmZpZy5lbnYgPSB7XG4gICAgICAgIC4uLm5leHRDb25maWcuZW52LFxuICAgICAgICBBR0VOVF9TRUNSRVQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9O1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gR2VuZXJhdGVkIEFHRU5UX1NFQ1JFVFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWFnZW50UGF0aFJlZ2V4IHx8IGFnZW50RmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5leHRDb25maWc7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZ5IHR1cmJvcGFjayBydWxlcyB0byBpbmNsdWRlIG91ciBsb2FkZXIgZm9yIGFnZW50IGZpbGVzXG4gICAgY29uc3QgcnVsZXMgPSAobmV4dENvbmZpZy50dXJib3BhY2s/LnJ1bGVzIHx8IHt9KSBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBUdXJib3BhY2tSdWxlXG4gICAgPjtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIFtcIioudHNcIiwgXCIqLnRzeFwiLCBcIiouanNcIiwgXCIqLmpzeFwiXSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSdWxlID0gcnVsZXNba2V5XTtcbiAgICAgIGlmICghZXhpc3RpbmdSdWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdvcmtmbG93J3MgcnVsZSBoYXM6IGNvbmRpdGlvbi5hbGwgPSBbeyBub3Q6IHBhdGggfSwgeyBjb250ZW50OiAvdXNlIHN0ZXB8Li4uLyB9XVxuICAgICAgICogV2Ugd2FudDogcnVuIGxvYWRlciBpZiB3b3JrZmxvdydzIGNvbmRpdGlvbnMgbWF0Y2ggT1IgaXQncyBhbiBhZ2VudCBmaWxlLlxuICAgICAgICogU28gd2Ugd3JhcCBpbjogY29uZGl0aW9uLmFueSA9IFtleGlzdGluZ0NvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XVxuICAgICAgICovXG4gICAgICBydWxlc1trZXldID0ge1xuICAgICAgICAuLi5leGlzdGluZ1J1bGUsXG4gICAgICAgIGxvYWRlcnM6IFtsb2FkZXJQYXRoLCAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pXSxcbiAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgYW55OiBbZXhpc3RpbmdSdWxlLmNvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQWxzbyBjb25maWd1cmUgd2VicGFjayBmb3Igbm9uLXR1cmJvcGFjayBidWlsZHNcbiAgICBjb25zdCBleGlzdGluZ1dlYnBhY2sgPSBuZXh0Q29uZmlnLndlYnBhY2s7XG4gICAgbmV4dENvbmZpZy53ZWJwYWNrID0gKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID0+IHtcbiAgICAgIHdlYnBhY2tDb25maWcubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAocmVzb3VyY2VQYXRoOiBzdHJpbmcpID0+IGFnZW50RmlsZVBhdGhzLmluY2x1ZGVzKHJlc291cmNlUGF0aCksXG4gICAgICAgIHVzZTogW3sgbG9hZGVyOiBsb2FkZXJQYXRoIH1dLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmdXZWJwYWNrPy4od2VicGFja0NvbmZpZywgY29udGV4dCkgPz8gd2VicGFja0NvbmZpZztcbiAgICB9O1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEFkZGVkIGFnZW50IGxvYWRlciB0byB0dXJib3BhY2sgcnVsZXNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRDb25maWc7XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OztBQUFBLFlBQVksWUFBWTtBQUN4QixZQUFZLFFBQVE7QUFDcEIsWUFBWSxVQUFVO0FBU3RCLElBQU0sZUFBZSxnQkFBSTtBQUN6QixJQUFNLHlCQUF5QjtBQUMvQixJQUFNLGlCQUFpQjtBQUN2QixJQUFNLHFCQUFxQjtBQUMzQixJQUFNLHdCQUF3QixDQUFDLFNBQVMsT0FBTyxhQUFhLFNBQVM7QUFTckUsU0FBUyxVQUFVLEtBQXFCO0FBQ3RDLE1BQUksT0FBTztBQUNYLFdBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLEtBQUs7QUFDbkMsVUFBTSxPQUFPLElBQUksV0FBVyxDQUFDO0FBRTdCLFlBQVEsUUFBUSxLQUFLLE9BQU87QUFFNUIsWUFBUTtBQUFBLEVBQ1Y7QUFDQSxTQUFPLEtBQUssSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDL0M7QUFNQSxTQUFTLFVBQVUsS0FBcUI7QUFDdEMsUUFBTSxZQUFpQixVQUFLLEtBQUssT0FBTyxLQUFLO0FBQzdDLE1BQU8sY0FBVyxTQUFTLEdBQUc7QUFDNUIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPO0FBQ1Q7QUFLQSxTQUFTLGFBQWEsS0FBYSxPQUFpQztBQUNsRSxRQUFNLFNBQTBCLENBQUM7QUFFakMsUUFBTSxhQUFhLENBQU0sVUFBSyxLQUFLLEtBQUssR0FBRyxHQUFHO0FBRTlDLFdBQVMsUUFBUSxLQUFhO0FBQzVCLFFBQUksQ0FBSSxjQUFXLEdBQUcsR0FBRztBQUN2QjtBQUFBLElBQ0Y7QUFFQSxVQUFNLFVBQWEsZUFBWSxLQUFLLEVBQUUsZUFB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
|
|
@@ -2,12 +2,12 @@ import "./chunk-TAXLUVIC.mjs";
|
|
|
2
2
|
import {
|
|
3
3
|
STORAGE_RPC_METHODS,
|
|
4
4
|
handleStorageRpc
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-GJETDXOU.mjs";
|
|
6
6
|
import {
|
|
7
7
|
DEFAULT_NAMESPACE,
|
|
8
8
|
LOCAL_STORAGE_VERSION,
|
|
9
9
|
getStorage
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-2IIWVPZB.mjs";
|
|
11
11
|
import "./chunk-HJGPUEFC.mjs";
|
|
12
12
|
import "./chunk-3ODWQVIA.mjs";
|
|
13
13
|
export {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import "./chunk-3ODWQVIA.mjs";
|
|
2
|
+
|
|
3
|
+
// src/storage/bindings/vercel.ts
|
|
4
|
+
var VERCEL_STORAGE_URL = process.env.AGENT_VERCEL_STORAGE_URL ?? "https://agent-sdk-storage-nine.labs.vercel.dev/api/storage";
|
|
5
|
+
async function getVercelStorageConfig() {
|
|
6
|
+
let token = null;
|
|
7
|
+
try {
|
|
8
|
+
const { getVercelOidcToken } = await import("@vercel/oidc");
|
|
9
|
+
token = await getVercelOidcToken();
|
|
10
|
+
} catch {
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
url: VERCEL_STORAGE_URL,
|
|
14
|
+
headers: token ? { Authorization: `Bearer ${token}` } : {}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
getVercelStorageConfig
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvYmluZGluZ3MvdmVyY2VsLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBWRVJDRUxfU1RPUkFHRV9VUkwgPVxuICBwcm9jZXNzLmVudi5BR0VOVF9WRVJDRUxfU1RPUkFHRV9VUkwgPz9cbiAgXCJodHRwczovL2FnZW50LXNkay1zdG9yYWdlLW5pbmUubGFicy52ZXJjZWwuZGV2L2FwaS9zdG9yYWdlXCI7XG5cbmV4cG9ydCB0eXBlIFZlcmNlbFN0b3JhZ2VDb25maWcgPSB7XG4gIHVybDogc3RyaW5nO1xuICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFZlcmNlbFN0b3JhZ2VDb25maWcoKTogUHJvbWlzZTxWZXJjZWxTdG9yYWdlQ29uZmlnPiB7XG4gIGxldCB0b2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7IGdldFZlcmNlbE9pZGNUb2tlbiB9ID0gYXdhaXQgaW1wb3J0KFwiQHZlcmNlbC9vaWRjXCIpO1xuICAgIHRva2VuID0gYXdhaXQgZ2V0VmVyY2VsT2lkY1Rva2VuKCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIE9JREMgbm90IGF2YWlsYWJsZSAobG9jYWwgZGV2LCBub24tVmVyY2VsIGVudmlyb25tZW50KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB1cmw6IFZFUkNFTF9TVE9SQUdFX1VSTCxcbiAgICBoZWFkZXJzOiB0b2tlbiA/IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfSA6IHt9LFxuICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7O0FBQUEsSUFBTSxxQkFDSixRQUFRLElBQUksNEJBQ1o7QUFPRixlQUFzQix5QkFBdUQ7QUFDM0UsTUFBSSxRQUF1QjtBQUUzQixNQUFJO0FBQ0YsVUFBTSxFQUFFLG1CQUFtQixJQUFJLE1BQU0sT0FBTyxjQUFjO0FBQzFELFlBQVEsTUFBTSxtQkFBbUI7QUFBQSxFQUNuQyxRQUFRO0FBQUEsRUFFUjtBQUVBLFNBQU87QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLFNBQVMsUUFBUSxFQUFFLGVBQWUsVUFBVSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQUEsRUFDM0Q7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./chunk-3ODWQVIA.mjs";
|
|
2
2
|
|
|
3
3
|
// src/sandbox/bindings/vercel-sdk.ts
|
|
4
|
-
import { Sandbox } from "sandbox";
|
|
4
|
+
import { Sandbox } from "@vercel/sandbox";
|
|
5
5
|
export {
|
|
6
6
|
Sandbox
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3NhbmRib3gvYmluZGluZ3MvdmVyY2VsLXNkay50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0IHsgU2FuZGJveCB9IGZyb20gXCJAdmVyY2VsL3NhbmRib3hcIjtcbiJdLAogICJtYXBwaW5ncyI6ICI7OztBQUFBLFNBQVMsZUFBZTsiLAogICJuYW1lcyI6IFtdCn0K
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "experimental-agent",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"fast-deep-equal": "^3.1.3",
|
|
41
41
|
"glob": "^11.0.0",
|
|
42
42
|
"hono": "^4.11.6",
|
|
43
|
-
"sandbox": "^1.0
|
|
43
|
+
"@vercel/sandbox": "^1.5.0",
|
|
44
44
|
"ulid": "^3.0.2",
|
|
45
45
|
"zod": "^4.3.6"
|
|
46
46
|
},
|
package/dist/chunk-GSRJYPWF.mjs
DELETED
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MessageNotFoundError,
|
|
3
|
-
SandboxNotFoundError,
|
|
4
|
-
SessionNotFoundError,
|
|
5
|
-
StorageError
|
|
6
|
-
} from "./chunk-HJGPUEFC.mjs";
|
|
7
|
-
|
|
8
|
-
// src/storage/client.ts
|
|
9
|
-
function getStorageClient(rpcFn, name) {
|
|
10
|
-
async function rpc(method, params) {
|
|
11
|
-
const result = await rpcFn({ name, method, params });
|
|
12
|
-
if ("error" in result) {
|
|
13
|
-
throw new StorageError({ reason: result.error.message });
|
|
14
|
-
}
|
|
15
|
-
return result.result;
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
session: {
|
|
19
|
-
get: async (id) => {
|
|
20
|
-
try {
|
|
21
|
-
const result = await rpc("session.get", { id });
|
|
22
|
-
if (result === null) {
|
|
23
|
-
return new SessionNotFoundError({ id });
|
|
24
|
-
}
|
|
25
|
-
return result;
|
|
26
|
-
} catch (e) {
|
|
27
|
-
if (e instanceof StorageError) {
|
|
28
|
-
return e;
|
|
29
|
-
}
|
|
30
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
set: async (session) => {
|
|
34
|
-
try {
|
|
35
|
-
return await rpc("session.set", session);
|
|
36
|
-
} catch (e) {
|
|
37
|
-
if (e instanceof StorageError) {
|
|
38
|
-
return e;
|
|
39
|
-
}
|
|
40
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
list: async (opts) => {
|
|
44
|
-
try {
|
|
45
|
-
return await rpc("session.list", {
|
|
46
|
-
tags: opts?.tags,
|
|
47
|
-
order: opts?.order,
|
|
48
|
-
cursor: opts?.cursor,
|
|
49
|
-
limit: opts?.limit
|
|
50
|
-
});
|
|
51
|
-
} catch (e) {
|
|
52
|
-
if (e instanceof StorageError) {
|
|
53
|
-
return e;
|
|
54
|
-
}
|
|
55
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
tag: {
|
|
59
|
-
set: async ({ sessionId, tags }) => {
|
|
60
|
-
try {
|
|
61
|
-
return await rpc("session.tag.set", { sessionId, tags });
|
|
62
|
-
} catch (e) {
|
|
63
|
-
if (e instanceof StorageError) {
|
|
64
|
-
return e;
|
|
65
|
-
}
|
|
66
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
message: {
|
|
72
|
-
list: async (sessionId, opts) => {
|
|
73
|
-
try {
|
|
74
|
-
return await rpc("message.list", {
|
|
75
|
-
sessionId,
|
|
76
|
-
cursor: opts?.cursor,
|
|
77
|
-
limit: opts?.limit
|
|
78
|
-
});
|
|
79
|
-
} catch (e) {
|
|
80
|
-
if (e instanceof StorageError) {
|
|
81
|
-
return e;
|
|
82
|
-
}
|
|
83
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
get: async (id) => {
|
|
87
|
-
try {
|
|
88
|
-
const result = await rpc("message.get", { id });
|
|
89
|
-
if (result === null) {
|
|
90
|
-
return new MessageNotFoundError({ id });
|
|
91
|
-
}
|
|
92
|
-
return result;
|
|
93
|
-
} catch (e) {
|
|
94
|
-
if (e instanceof StorageError) {
|
|
95
|
-
return e;
|
|
96
|
-
}
|
|
97
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
set: async (message) => {
|
|
101
|
-
try {
|
|
102
|
-
return await rpc("message.set", message);
|
|
103
|
-
} catch (e) {
|
|
104
|
-
if (e instanceof StorageError) {
|
|
105
|
-
return e;
|
|
106
|
-
}
|
|
107
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
part: {
|
|
112
|
-
listByMessage: async (messageId, opts) => {
|
|
113
|
-
try {
|
|
114
|
-
const result = await rpc("part.listByMessage", {
|
|
115
|
-
messageId,
|
|
116
|
-
cursor: opts?.cursor,
|
|
117
|
-
limit: opts?.limit
|
|
118
|
-
});
|
|
119
|
-
return result;
|
|
120
|
-
} catch (e) {
|
|
121
|
-
if (e instanceof StorageError) {
|
|
122
|
-
return e;
|
|
123
|
-
}
|
|
124
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
listBySession: async (sessionId, opts) => {
|
|
128
|
-
try {
|
|
129
|
-
const result = await rpc("part.listBySession", {
|
|
130
|
-
sessionId,
|
|
131
|
-
cursor: opts?.cursor,
|
|
132
|
-
limit: opts?.limit
|
|
133
|
-
});
|
|
134
|
-
return result;
|
|
135
|
-
} catch (e) {
|
|
136
|
-
if (e instanceof StorageError) {
|
|
137
|
-
return e;
|
|
138
|
-
}
|
|
139
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
set: async (part) => {
|
|
143
|
-
try {
|
|
144
|
-
return await rpc("part.set", part);
|
|
145
|
-
} catch (e) {
|
|
146
|
-
if (e instanceof StorageError) {
|
|
147
|
-
return e;
|
|
148
|
-
}
|
|
149
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
150
|
-
}
|
|
151
|
-
},
|
|
152
|
-
delete: async (id) => {
|
|
153
|
-
try {
|
|
154
|
-
await rpc("part.delete", { id });
|
|
155
|
-
} catch (e) {
|
|
156
|
-
if (e instanceof StorageError) {
|
|
157
|
-
return e;
|
|
158
|
-
}
|
|
159
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
},
|
|
163
|
-
sandbox: {
|
|
164
|
-
get: async (key) => {
|
|
165
|
-
try {
|
|
166
|
-
const result = await rpc("sandbox.get", { key });
|
|
167
|
-
if (result === null) {
|
|
168
|
-
return new SandboxNotFoundError({ id: key });
|
|
169
|
-
}
|
|
170
|
-
return result;
|
|
171
|
-
} catch (e) {
|
|
172
|
-
if (e instanceof StorageError) {
|
|
173
|
-
return e;
|
|
174
|
-
}
|
|
175
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
getBySession: async (sessionId) => {
|
|
179
|
-
try {
|
|
180
|
-
const result = await rpc("sandbox.getBySession", { sessionId });
|
|
181
|
-
if (result === null) {
|
|
182
|
-
return new SandboxNotFoundError({ id: sessionId });
|
|
183
|
-
}
|
|
184
|
-
return result;
|
|
185
|
-
} catch (e) {
|
|
186
|
-
if (e instanceof StorageError) {
|
|
187
|
-
return e;
|
|
188
|
-
}
|
|
189
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
set: async (record) => {
|
|
193
|
-
try {
|
|
194
|
-
await rpc("sandbox.set", record);
|
|
195
|
-
return record;
|
|
196
|
-
} catch (e) {
|
|
197
|
-
if (e instanceof StorageError) {
|
|
198
|
-
return e;
|
|
199
|
-
}
|
|
200
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
list: async (opts) => {
|
|
204
|
-
try {
|
|
205
|
-
return await rpc("sandbox.list", {
|
|
206
|
-
tags: opts?.tags,
|
|
207
|
-
order: opts?.order,
|
|
208
|
-
cursor: opts?.cursor,
|
|
209
|
-
limit: opts?.limit
|
|
210
|
-
});
|
|
211
|
-
} catch (e) {
|
|
212
|
-
if (e instanceof StorageError) {
|
|
213
|
-
return e;
|
|
214
|
-
}
|
|
215
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
tag: {
|
|
219
|
-
set: async ({ sandboxId, tags }) => {
|
|
220
|
-
try {
|
|
221
|
-
return await rpc("sandbox.tag.set", { sandboxId, tags });
|
|
222
|
-
} catch (e) {
|
|
223
|
-
if (e instanceof StorageError) {
|
|
224
|
-
return e;
|
|
225
|
-
}
|
|
226
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
},
|
|
231
|
-
command: {
|
|
232
|
-
get: async (id) => {
|
|
233
|
-
try {
|
|
234
|
-
return await rpc("command.get", { id });
|
|
235
|
-
} catch (e) {
|
|
236
|
-
if (e instanceof StorageError) {
|
|
237
|
-
return e;
|
|
238
|
-
}
|
|
239
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
240
|
-
}
|
|
241
|
-
},
|
|
242
|
-
set: async (command) => {
|
|
243
|
-
try {
|
|
244
|
-
return await rpc("command.set", command);
|
|
245
|
-
} catch (e) {
|
|
246
|
-
if (e instanceof StorageError) {
|
|
247
|
-
return e;
|
|
248
|
-
}
|
|
249
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
250
|
-
}
|
|
251
|
-
},
|
|
252
|
-
list: async (sessionId, opts) => {
|
|
253
|
-
try {
|
|
254
|
-
const result = await rpc("command.list", {
|
|
255
|
-
sessionId,
|
|
256
|
-
includeFinished: opts?.includeFinished,
|
|
257
|
-
cursor: opts?.cursor,
|
|
258
|
-
limit: opts?.limit
|
|
259
|
-
});
|
|
260
|
-
return result;
|
|
261
|
-
} catch (e) {
|
|
262
|
-
if (e instanceof StorageError) {
|
|
263
|
-
return e;
|
|
264
|
-
}
|
|
265
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
var DEFAULT_NAMESPACE = "default";
|
|
272
|
-
var LOCAL_STORAGE_VERSION = "v1";
|
|
273
|
-
function getStorage(opts) {
|
|
274
|
-
const name = opts.config.name ?? DEFAULT_NAMESPACE;
|
|
275
|
-
return getStorageClient(opts.rpc, name);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
export {
|
|
279
|
-
getStorageClient,
|
|
280
|
-
DEFAULT_NAMESPACE,
|
|
281
|
-
LOCAL_STORAGE_VERSION,
|
|
282
|
-
getStorage
|
|
283
|
-
};
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQge1xuICBNZXNzYWdlTm90Rm91bmRFcnJvcixcbiAgU2FuZGJveE5vdEZvdW5kRXJyb3IsXG4gIFNlc3Npb25Ob3RGb3VuZEVycm9yLFxuICBTdG9yYWdlRXJyb3IsXG59IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmFnZU1ldGhvZHMgfSBmcm9tIFwiLi9ycGNcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgTGlzdFJlc3VsdCxcbiAgUGFydCxcbiAgU3RvcmFnZSxcbiAgU3RvcmFnZUNvbmZpZyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxudHlwZSBScGNSZXNwb25zZTxUPiA9XG4gIHwgeyByZXN1bHQ6IFQgfVxuICB8IHsgZXJyb3I6IHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB9O1xuXG5leHBvcnQgdHlwZSBScGNGbiA9IChwYXJhbXM6IHtcbiAgbmFtZT86IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhcmFtczogdW5rbm93bjtcbn0pID0+IFByb21pc2U8UnBjUmVzcG9uc2U8dW5rbm93bj4+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZUNsaWVudChycGNGbjogUnBjRm4sIG5hbWU/OiBzdHJpbmcpOiBTdG9yYWdlIHtcbiAgYXN5bmMgZnVuY3Rpb24gcnBjPE0gZXh0ZW5kcyBrZXlvZiBTdG9yYWdlTWV0aG9kcz4oXG4gICAgbWV0aG9kOiBNLFxuICAgIHBhcmFtczogei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tNXVtcInBhcmFtc1wiXT5cbiAgKTogUHJvbWlzZTx6LmluZmVyPFN0b3JhZ2VNZXRob2RzW01dW1wicmVzdWx0XCJdPj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0ZuKHsgbmFtZSwgbWV0aG9kLCBwYXJhbXMgfSk7XG5cbiAgICBpZiAoXCJlcnJvclwiIGluIHJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogcmVzdWx0LmVycm9yLm1lc3NhZ2UgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQgYXMgei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tNXVtcInJlc3VsdFwiXT47XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNlc3Npb246IHtcbiAgICAgIGdldDogYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwic2Vzc2lvbi5nZXRcIiwgeyBpZCB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNlc3Npb25Ob3RGb3VuZEVycm9yKHsgaWQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBhc3luYyAoc2Vzc2lvbikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzZXNzaW9uLnNldFwiLCBzZXNzaW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsaXN0OiBhc3luYyAob3B0cykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzZXNzaW9uLmxpc3RcIiwge1xuICAgICAgICAgICAgdGFnczogb3B0cz8udGFncyxcbiAgICAgICAgICAgIG9yZGVyOiBvcHRzPy5vcmRlcixcbiAgICAgICAgICAgIGN1cnNvcjogb3B0cz8uY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IG9wdHM/LmxpbWl0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRhZzoge1xuICAgICAgICBzZXQ6IGFzeW5jICh7IHNlc3Npb25JZCwgdGFncyB9KSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzZXNzaW9uLnRhZy5zZXRcIiwgeyBzZXNzaW9uSWQsIHRhZ3MgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgbGlzdDogYXN5bmMgKHNlc3Npb25JZCwgb3B0cykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJtZXNzYWdlLmxpc3RcIiwge1xuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZ2V0OiBhc3luYyAoaWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJtZXNzYWdlLmdldFwiLCB7IGlkIH0pO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTWVzc2FnZU5vdEZvdW5kRXJyb3IoeyBpZCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChtZXNzYWdlKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJwYyhcIm1lc3NhZ2Uuc2V0XCIsIG1lc3NhZ2UpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHBhcnQ6IHtcbiAgICAgIGxpc3RCeU1lc3NhZ2U6IGFzeW5jIChtZXNzYWdlSWQsIG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJwYXJ0Lmxpc3RCeU1lc3NhZ2VcIiwge1xuICAgICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBMaXN0UmVzdWx0PFBhcnQ+O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxpc3RCeVNlc3Npb246IGFzeW5jIChzZXNzaW9uSWQsIG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJwYXJ0Lmxpc3RCeVNlc3Npb25cIiwge1xuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBMaXN0UmVzdWx0PFBhcnQ+O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNldDogYXN5bmMgKHBhcnQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHJwYyhcInBhcnQuc2V0XCIsIHBhcnQpKSBhcyBQYXJ0O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlbGV0ZTogYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcnBjKFwicGFydC5kZWxldGVcIiwgeyBpZCB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICBnZXQ6IGFzeW5jIChrZXkpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJzYW5kYm94LmdldFwiLCB7IGtleSB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNhbmRib3hOb3RGb3VuZEVycm9yKHsgaWQ6IGtleSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXRCeVNlc3Npb246IGFzeW5jIChzZXNzaW9uSWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJzYW5kYm94LmdldEJ5U2Vzc2lvblwiLCB7IHNlc3Npb25JZCB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNhbmRib3hOb3RGb3VuZEVycm9yKHsgaWQ6IHNlc3Npb25JZCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChyZWNvcmQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBycGMoXCJzYW5kYm94LnNldFwiLCByZWNvcmQpO1xuICAgICAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbGlzdDogYXN5bmMgKG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcnBjKFwic2FuZGJveC5saXN0XCIsIHtcbiAgICAgICAgICAgIHRhZ3M6IG9wdHM/LnRhZ3MsXG4gICAgICAgICAgICBvcmRlcjogb3B0cz8ub3JkZXIsXG4gICAgICAgICAgICBjdXJzb3I6IG9wdHM/LmN1cnNvcixcbiAgICAgICAgICAgIGxpbWl0OiBvcHRzPy5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0YWc6IHtcbiAgICAgICAgc2V0OiBhc3luYyAoeyBzYW5kYm94SWQsIHRhZ3MgfSkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnBjKFwic2FuZGJveC50YWcuc2V0XCIsIHsgc2FuZGJveElkLCB0YWdzIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNvbW1hbmQ6IHtcbiAgICAgIGdldDogYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBycGMoXCJjb21tYW5kLmdldFwiLCB7IGlkIH0pKSBhcyBDb21tYW5kIHwgbnVsbDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChjb21tYW5kKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBycGMoXCJjb21tYW5kLnNldFwiLCBjb21tYW5kKSkgYXMgQ29tbWFuZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsaXN0OiBhc3luYyAoc2Vzc2lvbklkLCBvcHRzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwiY29tbWFuZC5saXN0XCIsIHtcbiAgICAgICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgICAgIGluY2x1ZGVGaW5pc2hlZDogb3B0cz8uaW5jbHVkZUZpbmlzaGVkLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBMaXN0UmVzdWx0PENvbW1hbmQ+O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSBcImRlZmF1bHRcIjtcbmV4cG9ydCBjb25zdCBMT0NBTF9TVE9SQUdFX1ZFUlNJT04gPSBcInYxXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yYWdlKG9wdHM6IHtcbiAgY29uZmlnOiBTdG9yYWdlQ29uZmlnO1xuICBycGM6IFJwY0ZuO1xufSk6IFN0b3JhZ2Uge1xuICBjb25zdCBuYW1lID0gb3B0cy5jb25maWcubmFtZSA/PyBERUZBVUxUX05BTUVTUEFDRTtcbiAgcmV0dXJuIGdldFN0b3JhZ2VDbGllbnQob3B0cy5ycGMsIG5hbWUpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7QUEwQk8sU0FBUyxpQkFBaUIsT0FBYyxNQUF3QjtBQUNyRSxpQkFBZSxJQUNiLFFBQ0EsUUFDK0M7QUFDL0MsVUFBTSxTQUFTLE1BQU0sTUFBTSxFQUFFLE1BQU0sUUFBUSxPQUFP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
|