experimental-agent 0.8.0-alpha.2 → 0.8.0

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/next.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "./chunk-LMYEJDMD.mjs";
3
+ } from "./chunk-5N2UOGXY.mjs";
4
4
  import {
5
5
  __require
6
6
  } from "./chunk-BJTO5JO5.mjs";
@@ -59,7 +59,9 @@ function detectAgents(cwd, debug) {
59
59
  const content = fs.readFileSync(fullPath, "utf-8");
60
60
  if (content.includes(PACKAGE_NAME) && content.includes("agent(")) {
61
61
  const stripped = content.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "");
62
- const exportMatches = stripped.matchAll(AGENT_EXPORT_REGEX);
62
+ const exportMatches = Array.from(
63
+ stripped.matchAll(AGENT_EXPORT_REGEX)
64
+ );
63
65
  const seen = /* @__PURE__ */ new Set();
64
66
  for (const match of exportMatches) {
65
67
  if (seen.has(match[1])) {
@@ -244,4 +246,4 @@ function withAgent(configOrFn, agentConfig) {
244
246
  export {
245
247
  withAgent
246
248
  };
247
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTmV4dENvbmZpZyB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuZXhwb3J0IHR5cGUgV2l0aEFnZW50Q29uZmlnID0ge1xuICAvKiogRW5hYmxlIGRlYnVnIGxvZ2dpbmcgZm9yIHRoZSBOZXh0LmpzIGxvYWRlciAoYWdlbnQgZGV0ZWN0aW9uLCBmaWxlIGdlbmVyYXRpb24pLiAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBQQUNLQUdFX05BTUUgPSBwa2cubmFtZTtcbmNvbnN0IEFHRU5UX1BST1RPQ09MX1ZFUlNJT04gPSBcInYxXCI7XG5jb25zdCBGSUxFX0VYVF9SRUdFWCA9IC9cXC4odHN8dHN4fGpzfGpzeCkkLztcbmNvbnN0IEFHRU5UX0VYUE9SVF9SRUdFWCA9IC9leHBvcnRcXHMrY29uc3RcXHMrKFxcdyspXFxzKj1cXHMqYWdlbnRcXHMqXFwoL2c7XG5jb25zdCBERUZBVUxUX1dPUktGTE9XX0RJUlMgPSBbXCJwYWdlc1wiLCBcImFwcFwiLCBcInNyYy9wYWdlc1wiLCBcInNyYy9hcHBcIl07XG5cbnR5cGUgRGV0ZWN0ZWRBZ2VudCA9IHtcbiAgZXhwb3J0TmFtZTogc3RyaW5nO1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXI6IGV4cG9ydE5hbWUgb3IgZXhwb3J0TmFtZV9oYXNoIGlmIGR1cGxpY2F0ZXMgZXhpc3QgKi9cbiAgdW5pcXVlSWQ6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIHNob3J0SGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBoYXNoID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGludGVudGlvbmFsIGhhc2ggY29tcHV0YXRpb25cbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQml0d2lzZU9wZXJhdG9yczogY29udmVydCB0byAzMi1iaXQgaW50ZWdlclxuICAgIGhhc2ggJj0gaGFzaDtcbiAgfVxuICByZXR1cm4gTWF0aC5hYnMoaGFzaCkudG9TdHJpbmcoMzYpLnNsaWNlKDAsIDYpO1xufVxuXG5mdW5jdGlvbiBoYXNOZXh0QXBwTGF5b3V0KGRpcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBbXCJsYXlvdXQudHN4XCIsIFwibGF5b3V0LnRzXCIsIFwibGF5b3V0LmpzXCIsIFwibGF5b3V0LmpzeFwiXS5zb21lKChmKSA9PlxuICAgIGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKGRpciwgZikpXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBwcm9qZWN0IHVzZXMgc3JjL2FwcCBvciBhcHAgZGlyZWN0b3J5IHN0cnVjdHVyZVxuICogYnkgY2hlY2tpbmcgd2hpY2ggZGlyZWN0b3J5IGNvbnRhaW5zIGEgTmV4dC5qcyBsYXlvdXQgZmlsZS5cbiAqIFJldHVybnMgdGhlIGFwcCBkaXJlY3RvcnkgcGF0aCByZWxhdGl2ZSB0byBjd2QuXG4gKi9cbmZ1bmN0aW9uIGdldEFwcERpcihjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNyY0FwcERpciA9IHBhdGguam9pbihjd2QsIFwic3JjXCIsIFwiYXBwXCIpO1xuICBjb25zdCByb290QXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJhcHBcIik7XG5cbiAgaWYgKGhhc05leHRBcHBMYXlvdXQoc3JjQXBwRGlyKSkge1xuICAgIHJldHVybiBcInNyYy9hcHBcIjtcbiAgfVxuICBpZiAoaGFzTmV4dEFwcExheW91dChyb290QXBwRGlyKSkge1xuICAgIHJldHVybiBcImFwcFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhbGxiYWNrIHdoZW4gbmVpdGhlciBkaXJlY3RvcnkgaGFzIGEgbGF5b3V0IGZpbGUgeWV0XG4gICAqIChlLmcuIGZyZXNoIHByb2plY3QpLiBQcmVmZXIgc3JjL2FwcCBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cy5cbiAgICovXG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCBzaW5nbGUtbGluZSBjb21tZW50cyBhbmQgYmxvY2sgY29tbWVudHMgdG8gYXZvaWRcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGNvbW1lbnRlZC1vdXQgYWdlbnQgZXhwb3J0c1xuICAgICAgICAgICAgY29uc3Qgc3RyaXBwZWQgPSBjb250ZW50XG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXC8uKiQvZ20sIFwiXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csIFwiXCIpO1xuICAgICAgICAgICAgY29uc3QgZXhwb3J0TWF0Y2hlcyA9IHN0cmlwcGVkLm1hdGNoQWxsKEFHRU5UX0VYUE9SVF9SRUdFWCk7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIGV4cG9ydE1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgaWYgKHNlZW4uaGFzKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNlZW4uYWRkKG1hdGNoWzFdKTtcbiAgICAgICAgICAgICAgYWdlbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cG9ydE5hbWU6IG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgIGZpbGVQYXRoOiBmdWxsUGF0aCxcbiAgICAgICAgICAgICAgICB1bmlxdWVJZDogXCJcIiwgLy8gV2lsbCBiZSBzZXQgYWZ0ZXIgYWxsIGFnZW50cyBhcmUgZm91bmRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYFt3aXRoQWdlbnRdIEZvdW5kIGFnZW50OiAke21hdGNoWzFdfSBpbiAke2Z1bGxQYXRofWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJZ25vcmUgcmVhZCBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZGlyIG9mIGRpcnNUb1NjYW4pIHtcbiAgICBzY2FuRGlyKGRpcik7XG4gIH1cblxuICAvLyBBc3NpZ24gdW5pcXVlIElEcyAtIGFkZCBoYXNoIHN1ZmZpeCBpZiBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGV4aXN0XG4gIGNvbnN0IG5hbWVDb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IGFnZW50IG9mIGFnZW50cykge1xuICAgIG5hbWVDb3VudHMuc2V0KFxuICAgICAgYWdlbnQuZXhwb3J0TmFtZSxcbiAgICAgIChuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSB8fCAwKSArIDFcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBjb25zdCBjb3VudCA9IG5hbWVDb3VudHMuZ2V0KGFnZW50LmV4cG9ydE5hbWUpID8/IDA7XG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBgJHthZ2VudC5leHBvcnROYW1lfV8ke3Nob3J0SGFzaChhZ2VudC5maWxlUGF0aCl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBhZ2VudC5leHBvcnROYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZ2VudHM7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFsbCBhZ2VudCBmaWxlcyBpbiAud2VsbC1rbm93bi9hZ2VudC92MS86XG4gKiAtIHN0ZXBzLmpzOiBSUEMgc3RlcCBmdW5jdGlvbnMgd2l0aCBcInVzZSBzdGVwXCJcbiAqIC0gcm91dGUuanM6IHRyaWdnZXJzIHdvcmtmbG93IGRpc2NvdmVyeVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUFnZW50RmlsZXMoXG4gIGFnZW50czogRGV0ZWN0ZWRBZ2VudFtdLFxuICBvdXRwdXREaXI6IHN0cmluZyxcbiAgX2N3ZDogc3RyaW5nLFxuICBkZWJ1ZzogYm9vbGVhblxuKTogdm9pZCB7XG4gIGlmIChhZ2VudHMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIE5vIGFnZW50cyBmb3VuZCwgc2tpcHBpbmcgZ2VuZXJhdGlvblwiKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG91dHB1dERpcikpIHtcbiAgICBmcy5ta2RpclN5bmMob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBzdGVwIGZ1bmN0aW9ucyB0aGF0IHVzZSBkeW5hbWljIGltcG9ydC5cbiAgICogRHluYW1pYyBpbXBvcnQgZW5zdXJlcyB0aGUgYWdlbnQgbW9kdWxlIGxvYWRzIChpbmNsdWRpbmcgbG9hZGVyLWluamVjdGVkIGluaXQpXG4gICAqIHdoZW4gdGhlIHN0ZXAgcnVucyBpbiB3b3JrZmxvdyBjb250ZXh0LCBhdm9pZGluZyB0aGUgXCJub3QgaW5pdGlhbGl6ZWRcIiBlcnJvci5cbiAgICpcbiAgICogVXNlcyB1bmlxdWVJZCBmb3IgZnVuY3Rpb24gbmFtZXMgdG8gaGFuZGxlIGR1cGxpY2F0ZSBleHBvcnQgbmFtZXMgYWNyb3NzIGZpbGVzLlxuICAgKi9cbiAgY29uc3QgcnBjRnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcCgoYSkgPT4ge1xuICAgICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIHBhdGggZnJvbSBzdGVwcy5qcyB0byB0aGUgYWdlbnQgZmlsZVxuICAgICAgbGV0IGFnZW50UmVsUGF0aCA9IHBhdGhcbiAgICAgICAgLnJlbGF0aXZlKG91dHB1dERpciwgYS5maWxlUGF0aClcbiAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gICAgICBpZiAoIWFnZW50UmVsUGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICBhZ2VudFJlbFBhdGggPSBgLi8ke2FnZW50UmVsUGF0aH1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYFxuZXhwb3J0IGNvbnN0ICR7YS51bmlxdWVJZH1ScGMgPSBhc3luYyAocGFyYW1zKSA9PiB7XG4gIFwidXNlIHN0ZXBcIjtcbiAgY29uc3QgeyAke2EuZXhwb3J0TmFtZX0gfSA9IGF3YWl0IGltcG9ydChcIiR7YWdlbnRSZWxQYXRofVwiKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgJHthLmV4cG9ydE5hbWV9LmhhbmRsZXIocGFyYW1zKTtcbiAgaWYgKHJlcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHJlcy5qc29uKCk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIC8qKlxuICAgKiBJbml0IGZ1bmN0aW9ucyB3aXJlIHVwIGFnZW50LnJwYyBpbiB0aGUgbWFpbiBhcHAgY29udGV4dC5cbiAgICogVXNlcyBleHBvcnROYW1lIGZvciB0aGUgZnVuY3Rpb24gbmFtZSAobG9hZGVyIG1hdGNoZXMgYnkgZXhwb3J0IG5hbWUpLFxuICAgKiBidXQgcmVmZXJlbmNlcyB1bmlxdWVJZCBmb3IgdGhlIFJwYyBmdW5jdGlvbi5cbiAgICovXG4gIGNvbnN0IGluaXRGdW5jdGlvbnMgPSBhZ2VudHNcbiAgICAubWFwKFxuICAgICAgKGEpID0+IGBcbmV4cG9ydCBmdW5jdGlvbiBfX2luaXQke2EuZXhwb3J0TmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7YS5leHBvcnROYW1lLnNsaWNlKFxuICAgICAgICAxXG4gICAgICApfShhZ2VudCkge1xuICBhZ2VudC5ycGMgPSAke2EudW5pcXVlSWR9UnBjO1xufWBcbiAgICApXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgY29uc3Qgc3RlcHNDb250ZW50ID0gYC8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHdpdGhBZ2VudCAtIGRvIG5vdCBlZGl0XG4ke3JwY0Z1bmN0aW9uc31cbiR7aW5pdEZ1bmN0aW9uc31cbmA7XG5cbiAgY29uc3Qgc3RlcHNQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJzdGVwcy5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhzdGVwc1BhdGgsIHN0ZXBzQ29udGVudCk7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJvdXRlLmpzIHRoYXQgaW1wb3J0cyBzdGVwcy5qcy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGRpc2NvdmVycyB0aGUgXCJ1c2Ugc3RlcFwiIGZ1bmN0aW9ucy5cbiAgICogTm8gYWN0dWFsIGhhbmRsZXIgbmVlZGVkIC0gc3RvcmFnZSBSUEMgdXNlcyB0aGUgc3RlcCBmdW5jdGlvbiBkaXJlY3RseS5cbiAgICovXG4gIGNvbnN0IHJvdXRlQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbmltcG9ydCBcIi4vc3RlcHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBHRVQoKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXCJva1wiKTtcbn1cbmA7XG5cbiAgY29uc3Qgcm91dGVQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJyb3V0ZS5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhyb3V0ZVBhdGgsIHJvdXRlQ29udGVudCk7XG5cbiAgLy8gQWRkIC5naXRpZ25vcmVcbiAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhnaXRpZ25vcmVQYXRoLCBcIipcXG5cIik7XG4gIH1cblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhgW3dpdGhBZ2VudF0gR2VuZXJhdGVkIGFnZW50IGZpbGVzIGF0ICR7b3V0cHV0RGlyfWApO1xuICB9XG59XG5cbnR5cGUgVHVyYm9wYWNrTG9hZGVyID1cbiAgfCBzdHJpbmdcbiAgfCB7IGxvYWRlcjogc3RyaW5nOyBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfTtcblxudHlwZSBUdXJib3BhY2tSdWxlID0ge1xuICBsb2FkZXJzPzogVHVyYm9wYWNrTG9hZGVyW107XG4gIGNvbmRpdGlvbj86IHtcbiAgICBhbGw/OiB1bmtub3duW107XG4gICAgYW55PzogdW5rbm93bltdO1xuICAgIHBhdGg/OiBSZWdFeHA7XG4gICAgY29udGVudD86IFJlZ0V4cDtcbiAgICBub3Q/OiB1bmtub3duO1xuICB9O1xufTtcblxudHlwZSBXb3JrZmxvd0NvbmZpZ0ZuID0gKFxuICBwaGFzZTogc3RyaW5nLFxuICBjdHg6IHsgZGVmYXVsdENvbmZpZzogTmV4dENvbmZpZyB9XG4pID0+IFByb21pc2U8TmV4dENvbmZpZz47XG5cbnR5cGUgTmV4dENvbmZpZ0lucHV0ID1cbiAgfCBOZXh0Q29uZmlnXG4gIHwgKChcbiAgICAgIHBoYXNlOiBzdHJpbmcsXG4gICAgICBjdHg6IHsgZGVmYXVsdENvbmZpZzogTmV4dENvbmZpZyB9XG4gICAgKSA9PiBQcm9taXNlPE5leHRDb25maWc+KTtcblxuLyoqXG4gKiBOZXh0LmpzIHBsdWdpbiB0aGF0IGNvbmZpZ3VyZXMgYWdlbnQgc3VwcG9ydC5cbiAqXG4gKiAtIERldGVjdHMgYWdlbnRzIGFuZCBnZW5lcmF0ZXMgUlBDIHN0ZXBzIHdpdGggXCJ1c2Ugc3RlcFwiIGluIC53ZWxsLWtub3duL2FnZW50L3YxL1xuICogLSBHZW5lcmF0ZXMgQUdFTlRfU0VDUkVUIGZvciBzZWN1cmUgUlBDIGNhbGxzXG4gKiAtIFdyYXBzIHdpdGhXb3JrZmxvdyBmb3Igd29ya2Zsb3cgc3VwcG9ydFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gbmV4dC5jb25maWcudHNcbiAqIGltcG9ydCB7IHdpdGhBZ2VudCB9IGZyb20gXCJleHBlcmltZW50YWwtYWdlbnQvbmV4dFwiO1xuICpcbiAqIC8vIE9wdGlvbiAxOiB3aXRoQWdlbnQgaGFuZGxlcyBldmVyeXRoaW5nIChyZWNvbW1lbmRlZClcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh7fSk7XG4gKlxuICogLy8gT3B0aW9uIDI6IENvbXBvc2Ugd2l0aCBvdGhlciBwbHVnaW5zXG4gKiBleHBvcnQgZGVmYXVsdCB3aXRoQWdlbnQod2l0aFNvbWVPdGhlclBsdWdpbih7fSkpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQWdlbnQoXG4gIGNvbmZpZ09yRm46IE5leHRDb25maWdJbnB1dCxcbiAgYWdlbnRDb25maWc/OiBXaXRoQWdlbnRDb25maWdcbik6IFdvcmtmbG93Q29uZmlnRm4ge1xuICBjb25zdCBkZWJ1ZyA9IGFnZW50Q29uZmlnPy5kZWJ1ZyA/PyBmYWxzZTtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcblxuICAvLyBEZXRlY3QgYXBwIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgKHNyYy9hcHAgdnMgYXBwKVxuICBjb25zdCBhcHBEaXIgPSBnZXRBcHBEaXIoY3dkKTtcbiAgY29uc3QgYWdlbnREaXIgPSBgJHthcHBEaXJ9Ly53ZWxsLWtub3duL2FnZW50LyR7QUdFTlRfUFJPVE9DT0xfVkVSU0lPTn1gO1xuXG4gIC8vIERldGVjdCBhZ2VudHMgYW5kIGdlbmVyYXRlIGZpbGVzIEZJUlNUIChiZWZvcmUgd29ya2Zsb3cgZGlzY292ZXJzIHRoZW0pXG4gIGNvbnN0IGFnZW50cyA9IGRldGVjdEFnZW50cyhjd2QsIGRlYnVnKTtcbiAgY29uc3Qgb3V0cHV0RGlyID0gcGF0aC5qb2luKGN3ZCwgYWdlbnREaXIpO1xuICBnZW5lcmF0ZUFnZW50RmlsZXMoYWdlbnRzLCBvdXRwdXREaXIsIGN3ZCwgZGVidWcpO1xuXG4gIGNvbnN0IGFnZW50RmlsZVBhdGhzID0gYWdlbnRzLm1hcCgoYSkgPT4gYS5maWxlUGF0aCk7XG4gIGNvbnN0IGxvYWRlclBhdGggPSByZXF1aXJlLnJlc29sdmUoXCIuL25leHQvbG9hZGVyXCIpO1xuICBjb25zdCBhYnNvbHV0ZUFwcERpciA9IHBhdGguam9pbihjd2QsIGFwcERpcik7XG4gIGNvbnN0IGxvYWRlck9wdGlvbnMgPSB7IGFwcERpcjogYWJzb2x1dGVBcHBEaXIsIGRlYnVnIH07XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBsb2FkZXIgcGF0aDpcIiwgbG9hZGVyUGF0aCk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBmaWxlczpcIiwgYWdlbnRGaWxlUGF0aHMpO1xuICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gYWdlbnQgZGlyOlwiLCBhZ2VudERpcik7XG4gIH1cblxuICAvLyBCdWlsZCByZWdleCB0byBtYXRjaCBhZ2VudCBmaWxlIHBhdGhzXG4gIGNvbnN0IGFnZW50UGF0aFJlZ2V4ID1cbiAgICBhZ2VudEZpbGVQYXRocy5sZW5ndGggPiAwXG4gICAgICA/IG5ldyBSZWdFeHAoXG4gICAgICAgICAgYCR7YWdlbnRGaWxlUGF0aHNcbiAgICAgICAgICAgIC5tYXAoKHApID0+XG4gICAgICAgICAgICAgIHBhdGhcbiAgICAgICAgICAgICAgICAucmVsYXRpdmUoY3dkLCBwKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKFwifFwiKX0kYFxuICAgICAgICApXG4gICAgICA6IG51bGw7XG5cbiAgLyoqXG4gICAqIEFsd2F5cyBwYXNzIHRocm91Z2ggd2l0aFdvcmtmbG93IC0gaXQgaGFuZGxlcyBib3RoIE5leHRDb25maWcgYW5kIGFzeW5jIGZ1bmN0aW9ucy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGlzIGFsd2F5cyBjb25maWd1cmVkLCByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIHVzZXIgcGFzc2VkLlxuICAgKi9cbiAgbGV0IHdpdGhXb3JrZmxvdzogKFxuICAgIGNvbmZpZzogTmV4dENvbmZpZ0lucHV0LFxuICAgIG9wdGlvbnM/OiB7IHdvcmtmbG93cz86IHsgZGlycz86IHN0cmluZ1tdIH0gfVxuICApID0+IFdvcmtmbG93Q29uZmlnRm47XG4gIHRyeSB7XG4gICAgd2l0aFdvcmtmbG93ID0gcmVxdWlyZShcIndvcmtmbG93L25leHRcIikud2l0aFdvcmtmbG93O1xuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIlt3aXRoQWdlbnRdIHdvcmtmbG93L25leHQgbm90IGZvdW5kLiBNYWtlIHN1cmUgd29ya2Zsb3cgaXMgaW5zdGFsbGVkLlwiXG4gICAgKTtcbiAgICByZXR1cm4gdHlwZW9mIGNvbmZpZ09yRm4gPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBjb25maWdPckZuXG4gICAgICA6IGFzeW5jICgpID0+IGNvbmZpZ09yRm47XG4gIH1cblxuICBjb25zdCBiYXNlQ29uZmlnRm4gPSB3aXRoV29ya2Zsb3coY29uZmlnT3JGbiwge1xuICAgIHdvcmtmbG93czoge1xuICAgICAgZGlyczogWy4uLkRFRkFVTFRfV09SS0ZMT1dfRElSUywgYWdlbnREaXJdLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSB3cmFwcGVyIHRoYXQgcnVucyBBRlRFUiB3b3JrZmxvdyBwcm9jZXNzZXMsIHRoZW4gYWRkcyBvdXIgbG9hZGVyLlxuICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdvcmtmbG93IG92ZXJ3cml0ZXMgdHVyYm9wYWNrIHJ1bGVzIC0gd2UgbmVlZCB0b1xuICAgKiBtb2RpZnkgdGhlbSBhZnRlciB3b3JrZmxvdyBpcyBkb25lLlxuICAgKi9cbiAgcmV0dXJuIGFzeW5jIChwaGFzZSwgY3R4KSA9PiB7XG4gICAgY29uc3QgbmV4dENvbmZpZyA9IGF3YWl0IGJhc2VDb25maWdGbihwaGFzZSwgY3R4KTtcblxuICAgIC8vIFNldCB1cCBBR0VOVF9TRUNSRVQgaWYgbm90IGFscmVhZHkgc2V0XG4gICAgaWYgKCFwcm9jZXNzLmVudi5BR0VOVF9TRUNSRVQpIHtcbiAgICAgIG5leHRDb25maWcuZW52ID0ge1xuICAgICAgICAuLi5uZXh0Q29uZmlnLmVudixcbiAgICAgICAgQUdFTlRfU0VDUkVUOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgfTtcbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEdlbmVyYXRlZCBBR0VOVF9TRUNSRVRcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFhZ2VudFBhdGhSZWdleCB8fCBhZ2VudEZpbGVQYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXh0Q29uZmlnO1xuICAgIH1cblxuICAgIC8vIE1vZGlmeSB0dXJib3BhY2sgcnVsZXMgdG8gaW5jbHVkZSBvdXIgbG9hZGVyIGZvciBhZ2VudCBmaWxlc1xuICAgIGNvbnN0IHJ1bGVzID0gKG5leHRDb25maWcudHVyYm9wYWNrPy5ydWxlcyB8fCB7fSkgYXMgUmVjb3JkPFxuICAgICAgc3RyaW5nLFxuICAgICAgVHVyYm9wYWNrUnVsZVxuICAgID47XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBbXCIqLnRzXCIsIFwiKi50c3hcIiwgXCIqLmpzXCIsIFwiKi5qc3hcIl0pIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nUnVsZSA9IHJ1bGVzW2tleV07XG4gICAgICBpZiAoIWV4aXN0aW5nUnVsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBXb3JrZmxvdydzIHJ1bGUgaGFzOiBjb25kaXRpb24uYWxsID0gW3sgbm90OiBwYXRoIH0sIHsgY29udGVudDogL3VzZSBzdGVwfC4uLi8gfV1cbiAgICAgICAqIFdlIHdhbnQ6IHJ1biBsb2FkZXIgaWYgd29ya2Zsb3cncyBjb25kaXRpb25zIG1hdGNoIE9SIGl0J3MgYW4gYWdlbnQgZmlsZS5cbiAgICAgICAqIFNvIHdlIHdyYXAgaW46IGNvbmRpdGlvbi5hbnkgPSBbZXhpc3RpbmdDb25kaXRpb24sIHsgcGF0aDogYWdlbnRQYXRoUmVnZXggfV1cbiAgICAgICAqL1xuICAgICAgcnVsZXNba2V5XSA9IHtcbiAgICAgICAgLi4uZXhpc3RpbmdSdWxlLFxuICAgICAgICBsb2FkZXJzOiBbXG4gICAgICAgICAgeyBsb2FkZXI6IGxvYWRlclBhdGgsIG9wdGlvbnM6IGxvYWRlck9wdGlvbnMgfSxcbiAgICAgICAgICAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pLFxuICAgICAgICBdLFxuICAgICAgICBjb25kaXRpb246IHtcbiAgICAgICAgICBhbnk6IFtleGlzdGluZ1J1bGUuY29uZGl0aW9uLCB7IHBhdGg6IGFnZW50UGF0aFJlZ2V4IH1dLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBbHNvIGNvbmZpZ3VyZSB3ZWJwYWNrIGZvciBub24tdHVyYm9wYWNrIGJ1aWxkc1xuICAgIGNvbnN0IGV4aXN0aW5nV2VicGFjayA9IG5leHRDb25maWcud2VicGFjaztcbiAgICBuZXh0Q29uZmlnLndlYnBhY2sgPSAod2VicGFja0NvbmZpZywgY29udGV4dCkgPT4ge1xuICAgICAgd2VicGFja0NvbmZpZy5tb2R1bGUucnVsZXMucHVzaCh7XG4gICAgICAgIHRlc3Q6IChyZXNvdXJjZVBhdGg6IHN0cmluZykgPT4gYWdlbnRGaWxlUGF0aHMuaW5jbHVkZXMocmVzb3VyY2VQYXRoKSxcbiAgICAgICAgdXNlOiBbeyBsb2FkZXI6IGxvYWRlclBhdGgsIG9wdGlvbnM6IGxvYWRlck9wdGlvbnMgfV0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBleGlzdGluZ1dlYnBhY2s/Lih3ZWJwYWNrQ29uZmlnLCBjb250ZXh0KSA/PyB3ZWJwYWNrQ29uZmlnO1xuICAgIH07XG5cbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gQWRkZWQgYWdlbnQgbG9hZGVyIHRvIHR1cmJvcGFjayBydWxlc1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dENvbmZpZztcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O0FBQUEsWUFBWSxZQUFZO0FBQ3hCLFlBQVksUUFBUTtBQUNwQixZQUFZLFVBQVU7QUFTdEIsSUFBTSxlQUFlLGdCQUFJO0FBQ3pCLElBQU0seUJBQXlCO0FBQy9CLElBQU0saUJBQWlCO0FBQ3ZCLElBQU0scUJBQXFCO0FBQzNCLElBQU0sd0JBQXdCLENBQUMsU0FBUyxPQUFPLGFBQWEsU0FBUztBQVNyRSxTQUFTLFVBQVUsS0FBcUI7QUFDdEMsTUFBSSxPQUFPO0FBQ1gsV0FBUyxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsS0FBSztBQUNuQyxVQUFNLE9BQU8sSUFBSSxXQUFXLENBQUM7QUFFN0IsWUFBUSxRQUFRLEtBQUssT0FBTztBQUU1QixZQUFRO0FBQUEsRUFDVjtBQUNBLFNBQU8sS0FBSyxJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUMvQztBQUVBLFNBQVMsaUJBQWlCLEtBQXNCO0FBQzlDLFNBQU8sQ0FBQyxjQUFjLGFBQWEsYUFBYSxZQUFZLEVBQUU7QUFBQSxJQUFLLENBQUMsTUFDL0QsY0FBZ0IsVUFBSyxLQUFLLENBQUMsQ0FBQztBQUFBLEVBQ2pDO0FBQ0Y7QUFPQSxTQUFTLFVBQVUsS0FBcUI7QUFDdEMsUUFBTSxZQUFpQixVQUFLLEtBQUssT0FBTyxLQUFLO0FBQzdDLFFBQU0sYUFBa0IsVUFBSyxLQUFLLEtBQUs7QUFFdkMsTUFBSSxpQkFBaUIsU0FBUyxHQUFHO0FBQy9CLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxpQkFBaUIsVUFBVSxHQUFHO0FBQ2hDLFdBQU87QUFBQSxFQUNUO0FBTUEsTUFBTyxjQUFXLFNBQVMsR0FBRztBQUM1QixXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU87QUFDVDtBQUtBLFNBQVMsYUFBYSxLQUFhLE9BQWlDO0FBQ2xFLFFBQU0sU0FBMEIsQ0FBQztBQUVqQyxRQUFNLGFBQWEsQ0FBTSxVQUFLLEtBQUssS0FBSyxHQUFHLEdBQUc7QUFFOUMsV0FBUyxRQUFRLEtBQWE7QUFDNUIsUUFBSSxDQUFJLGNBQVcsR0FBRyxHQUFHO0FBQ3ZCO0FBQUEsSUFDRjtBQUVBLFVBQU0sVUFBYSxlQUFZLEtBQUssRUFBRSxlQUFlLEtBQUssQ0FBQztBQUMzRCxlQUFXLFNBQVMsU0FBUztBQUMzQixZQUFNLFdBQWdCLFVBQUssS0FBSyxNQUFNLElBQUk7QUFDMUMsVUFDRSxNQUFNLFlBQVksS0FDbEIsQ0FBQyxNQUFNLEtBQUssV0FBVyxHQUFHLEtBQzFCLE1BQU0sU0FBUyxrQkFDZixNQUFNLFNBQVMsT0FDZjtBQUNBLGdCQUFRLFFBQVE7QUFBQSxNQUNsQixXQUFXLE1BQU0sT0FBTyxLQUFLLGVBQWUsS0FBSyxNQUFNLElBQUksR0FBRztBQUM1RCxZQUFJO0FBQ0YsZ0JBQU0sVUFBYSxnQkFBYSxVQUFVLE9BQU87QUFDakQsY0FBSSxRQUFRLFNBQVMsWUFBWSxLQUFLLFFBQVEsU0FBUyxRQUFRLEdBQUc7QUFHaEUsa0JBQU0sV0FBVyxRQUNkLFFBQVEsYUFBYSxFQUFFLEVBQ3ZCLFFBQVEscUJBQXFCLEVBQUU7QUFDbEMsa0JBQU0sZ0JBQWdCLFNBQVMsU0FBUyxrQkFBa0I7QUFDMUQsa0JBQU0sT0FBTyxvQkFBSSxJQUFZO0FBQzdCLHVCQUFXLFNBQVMsZUFBZTtBQUNqQyxrQkFBSSxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRztBQUN0QjtBQUFBLGNBQ0Y7QUFDQSxtQkFBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDO0FBQ2pCLHFCQUFPLEtBQUs7QUFBQSxnQkFDVixZQUFZLE1BQU0sQ0FBQztBQUFBLGdCQUNuQixVQUFVO0FBQUEsZ0JBQ1YsVUFBVTtBQUFBO0FBQUEsY0FDWixDQUFDO0FBQ0Qsa0JBQUksT0FBTztBQUNULHdCQUFRO0FBQUEsa0JBQ04sNEJBQTRCLE1BQU0sQ0FBQyxDQUFDLE9BQU8sUUFBUTtBQUFBLGdCQUNyRDtBQUFBLGNBQ0Y7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBLFFBQ0YsUUFBUTtBQUFBLFFBRVI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxhQUFXLE9BQU8sWUFBWTtBQUM1QixZQUFRLEdBQUc7QUFBQSxFQUNiO0FBR0EsUUFBTSxhQUFhLG9CQUFJLElBQW9CO0FBQzNDLGFBQVcsU0FBUyxRQUFRO0FBQzFCLGVBQVc7QUFBQSxNQUNULE1BQU07QUFBQSxPQUNMLFdBQVcsSUFBSSxNQUFNLFVBQVUsS0FBSyxLQUFLO0FBQUEsSUFDNUM7QUFBQSxFQUNGO0FBRUEsYUFBVyxTQUFTLFFBQVE7QUFDMUIsVUFBTSxRQUFRLFdBQVcsSUFBSSxNQUFNLFVBQVUsS0FBSztBQUNsRCxRQUFJLFFBQVEsR0FBRztBQUNiLFlBQU0sV0FBVyxHQUFHLE1BQU0sVUFBVSxJQUFJLFVBQVUsTUFBTSxRQUFRLENBQUM7QUFBQSxJQUNuRSxPQUFPO0FBQ0wsWUFBTSxXQUFXLE1BQU07QUFBQSxJQUN6QjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFPQSxTQUFTLG1CQUNQLFFBQ0EsV0FDQSxNQUNBLE9BQ007QUFDTixNQUFJLE9BQU8sV0FBVyxHQUFHO0FBQ3ZCLFFBQUksT0FBTztBQUNULGNBQVEsSUFBSSxrREFBa0Q7QUFBQSxJQUNoRTtBQUNBO0FBQUEsRUFDRjtBQUVBLE1BQUksQ0FBSSxjQUFXLFNBQVMsR0FBRztBQUM3QixJQUFHLGFBQVUsV0FBVyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQUEsRUFDN0M7QUFTQSxRQUFNLGVBQWUsT0FDbEIsSUFBSSxDQUFDLE1BQU07QUFFVixRQUFJLGVBQ0QsY0FBUyxXQUFXLEVBQUUsUUFBUSxFQUM5QixRQUFRLE9BQU8sR0FBRztBQUVyQixRQUFJLENBQUMsYUFBYSxXQUFXLEdBQUcsR0FBRztBQUNqQyxxQkFBZSxLQUFLLFlBQVk7QUFBQSxJQUNsQztBQUVBLFdBQU87QUFBQSxlQUNFLEVBQUUsUUFBUTtBQUFBO0FBQUEsWUFFYixFQUFFLFVBQVUsc0JBQXNCLFlBQVk7QUFBQSxzQkFDcEMsRUFBRSxVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTlCLENBQUMsRUFDQSxLQUFLLElBQUk7QUFPWixRQUFNLGdCQUFnQixPQUNuQjtBQUFBLElBQ0MsQ0FBQyxNQUFNO0FBQUEsd0JBQ1csRUFBRSxXQUFXLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxFQUFFLFdBQVc7QUFBQSxNQUM3RDtBQUFBLElBQ0YsQ0FBQztBQUFBLGdCQUNTLEVBQUUsUUFBUTtBQUFBO0FBQUEsRUFFdEIsRUFDQyxLQUFLLElBQUk7QUFFWixRQUFNLGVBQWU7QUFBQSxFQUNyQixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUE7QUFHYixRQUFNLFlBQWlCLFVBQUssV0FBVyxVQUFVO0FBQ2pELEVBQUcsaUJBQWMsV0FBVyxZQUFZO0FBT3hDLFFBQU0sZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPckIsUUFBTSxZQUFpQixVQUFLLFdBQVcsVUFBVTtBQUNqRCxFQUFHLGlCQUFjLFdBQVcsWUFBWTtBQUd4QyxRQUFNLGdCQUFxQixVQUFLLFdBQVcsWUFBWTtBQUN2RCxNQUFJLENBQUksY0FBVyxhQUFhLEdBQUc7QUFDakMsSUFBRyxpQkFBYyxlQUFlLEtBQUs7QUFBQSxFQUN2QztBQUVBLE1BQUksT0FBTztBQUNULFlBQVEsSUFBSSx3Q0FBd0MsU0FBUyxFQUFFO0FBQUEsRUFDakU7QUFDRjtBQWdETyxTQUFTLFVBQ2QsWUFDQSxhQUNrQjtBQUNsQixRQUFNLFFBQVEsYUFBYSxTQUFTO0FBQ3BDLFFBQU0sTUFBTSxRQUFRLElBQUk7QUFHeEIsUUFBTSxTQUFTLFVBQVUsR0FBRztBQUM1QixRQUFNLFdBQVcsR0FBRyxNQUFNLHNCQUFzQixzQkFBc0I7QUFHdEUsUUFBTSxTQUFTLGFBQWEsS0FBSyxLQUFLO0FBQ3RDLFFBQU0sWUFBaUIsVUFBSyxLQUFLLFFBQVE7QUFDekMscUJBQW1CLFFBQVEsV0FBVyxLQUFLLEtBQUs7QUFFaEQsUUFBTSxpQkFBaUIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVE7QUFDbkQsUUFBTSxhQUFhLFVBQVEsUUFBUSxlQUFlO0FBQ2xELFFBQU0saUJBQXNCLFVBQUssS0FBSyxNQUFNO0FBQzVDLFFBQU0sZ0JBQWdCLEVBQUUsUUFBUSxnQkFBZ0IsTUFBTTtBQUV0RCxNQUFJLE9BQU87QUFDVCxZQUFRLElBQUksNEJBQTRCLFVBQVU7QUFDbEQsWUFBUSxJQUFJLDRCQUE0QixjQUFjO0FBQ3RELFlBQVEsSUFBSSwwQkFBMEIsUUFBUTtBQUFBLEVBQ2hEO0FBR0EsUUFBTSxpQkFDSixlQUFlLFNBQVMsSUFDcEIsSUFBSTtBQUFBLElBQ0YsR0FBRyxlQUNBO0FBQUEsTUFBSSxDQUFDLE1BRUQsY0FBUyxLQUFLLENBQUMsRUFDZixRQUFRLE9BQU8sR0FBRyxFQUNsQixRQUFRLHVCQUF1QixNQUFNO0FBQUEsSUFDMUMsRUFDQyxLQUFLLEdBQUcsQ0FBQztBQUFBLEVBQ2QsSUFDQTtBQU1OLE1BQUk7QUFJSixNQUFJO0FBQ0YsbUJBQWUsVUFBUSxlQUFlLEVBQUU7QUFBQSxFQUMxQyxRQUFRO0FBQ04sWUFBUTtBQUFBLE1BQ047QUFBQSxJQUNGO0FBQ0EsV0FBTyxPQUFPLGVBQWUsYUFDekIsYUFDQSxZQUFZO0FBQUEsRUFDbEI7QUFFQSxRQUFNLGVBQWUsYUFBYSxZQUFZO0FBQUEsSUFDNUMsV0FBVztBQUFBLE1BQ1QsTUFBTSxDQUFDLEdBQUcsdUJBQXVCLFFBQVE7QUFBQSxJQUMzQztBQUFBLEVBQ0YsQ0FBQztBQU9ELFNBQU8sT0FBTyxPQUFPLFFBQVE7QUFDM0IsVUFBTSxhQUFhLE1BQU0sYUFBYSxPQUFPLEdBQUc7QUFHaEQsUUFBSSxDQUFDLFFBQVEsSUFBSSxjQUFjO0FBQzdCLGlCQUFXLE1BQU07QUFBQSxRQUNmLEdBQUcsV0FBVztBQUFBLFFBQ2QsY0FBcUIsa0JBQVc7QUFBQSxNQUNsQztBQUNBLFVBQUksT0FBTztBQUNULGdCQUFRLElBQUksb0NBQW9DO0FBQUEsTUFDbEQ7QUFBQSxJQUNGO0FBRUEsUUFBSSxDQUFDLGtCQUFrQixlQUFlLFdBQVcsR0FBRztBQUNsRCxhQUFPO0FBQUEsSUFDVDtBQUdBLFVBQU0sUUFBUyxXQUFXLFdBQVcsU0FBUyxDQUFDO0FBSy9DLGVBQVcsT0FBTyxDQUFDLFFBQVEsU0FBUyxRQUFRLE9BQU8sR0FBRztBQUNwRCxZQUFNLGVBQWUsTUFBTSxHQUFHO0FBQzlCLFVBQUksQ0FBQyxjQUFjO0FBQ2pCO0FBQUEsTUFDRjtBQU9BLFlBQU0sR0FBRyxJQUFJO0FBQUEsUUFDWCxHQUFHO0FBQUEsUUFDSCxTQUFTO0FBQUEsVUFDUCxFQUFFLFFBQVEsWUFBWSxTQUFTLGNBQWM7QUFBQSxVQUM3QyxHQUFJLGFBQWEsV0FBVyxDQUFDO0FBQUEsUUFDL0I7QUFBQSxRQUNBLFdBQVc7QUFBQSxVQUNULEtBQUssQ0FBQyxhQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUFBLFFBQ3hEO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFHQSxVQUFNLGtCQUFrQixXQUFXO0FBQ25DLGVBQVcsVUFBVSxDQUFDLGVBQWUsWUFBWTtBQUMvQyxvQkFBYyxPQUFPLE1BQU0sS0FBSztBQUFBLFFBQzlCLE1BQU0sQ0FBQyxpQkFBeUIsZUFBZSxTQUFTLFlBQVk7QUFBQSxRQUNwRSxLQUFLLENBQUMsRUFBRSxRQUFRLFlBQVksU0FBUyxjQUFjLENBQUM7QUFBQSxNQUN0RCxDQUFDO0FBQ0QsYUFBTyxrQkFBa0IsZUFBZSxPQUFPLEtBQUs7QUFBQSxJQUN0RDtBQUVBLFFBQUksT0FBTztBQUNULGNBQVEsSUFBSSxtREFBbUQ7QUFBQSxJQUNqRTtBQUVBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
249
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTmV4dENvbmZpZyB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuZXhwb3J0IHR5cGUgV2l0aEFnZW50Q29uZmlnID0ge1xuICAvKiogRW5hYmxlIGRlYnVnIGxvZ2dpbmcgZm9yIHRoZSBOZXh0LmpzIGxvYWRlciAoYWdlbnQgZGV0ZWN0aW9uLCBmaWxlIGdlbmVyYXRpb24pLiAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBQQUNLQUdFX05BTUUgPSBwa2cubmFtZTtcbmNvbnN0IEFHRU5UX1BST1RPQ09MX1ZFUlNJT04gPSBcInYxXCI7XG5jb25zdCBGSUxFX0VYVF9SRUdFWCA9IC9cXC4odHN8dHN4fGpzfGpzeCkkLztcbmNvbnN0IEFHRU5UX0VYUE9SVF9SRUdFWCA9IC9leHBvcnRcXHMrY29uc3RcXHMrKFxcdyspXFxzKj1cXHMqYWdlbnRcXHMqXFwoL2c7XG5jb25zdCBERUZBVUxUX1dPUktGTE9XX0RJUlMgPSBbXCJwYWdlc1wiLCBcImFwcFwiLCBcInNyYy9wYWdlc1wiLCBcInNyYy9hcHBcIl07XG5cbnR5cGUgRGV0ZWN0ZWRBZ2VudCA9IHtcbiAgZXhwb3J0TmFtZTogc3RyaW5nO1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXI6IGV4cG9ydE5hbWUgb3IgZXhwb3J0TmFtZV9oYXNoIGlmIGR1cGxpY2F0ZXMgZXhpc3QgKi9cbiAgdW5pcXVlSWQ6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIHNob3J0SGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBoYXNoID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGludGVudGlvbmFsIGhhc2ggY29tcHV0YXRpb25cbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQml0d2lzZU9wZXJhdG9yczogY29udmVydCB0byAzMi1iaXQgaW50ZWdlclxuICAgIGhhc2ggJj0gaGFzaDtcbiAgfVxuICByZXR1cm4gTWF0aC5hYnMoaGFzaCkudG9TdHJpbmcoMzYpLnNsaWNlKDAsIDYpO1xufVxuXG5mdW5jdGlvbiBoYXNOZXh0QXBwTGF5b3V0KGRpcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBbXCJsYXlvdXQudHN4XCIsIFwibGF5b3V0LnRzXCIsIFwibGF5b3V0LmpzXCIsIFwibGF5b3V0LmpzeFwiXS5zb21lKChmKSA9PlxuICAgIGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKGRpciwgZikpXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBwcm9qZWN0IHVzZXMgc3JjL2FwcCBvciBhcHAgZGlyZWN0b3J5IHN0cnVjdHVyZVxuICogYnkgY2hlY2tpbmcgd2hpY2ggZGlyZWN0b3J5IGNvbnRhaW5zIGEgTmV4dC5qcyBsYXlvdXQgZmlsZS5cbiAqIFJldHVybnMgdGhlIGFwcCBkaXJlY3RvcnkgcGF0aCByZWxhdGl2ZSB0byBjd2QuXG4gKi9cbmZ1bmN0aW9uIGdldEFwcERpcihjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNyY0FwcERpciA9IHBhdGguam9pbihjd2QsIFwic3JjXCIsIFwiYXBwXCIpO1xuICBjb25zdCByb290QXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJhcHBcIik7XG5cbiAgaWYgKGhhc05leHRBcHBMYXlvdXQoc3JjQXBwRGlyKSkge1xuICAgIHJldHVybiBcInNyYy9hcHBcIjtcbiAgfVxuICBpZiAoaGFzTmV4dEFwcExheW91dChyb290QXBwRGlyKSkge1xuICAgIHJldHVybiBcImFwcFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhbGxiYWNrIHdoZW4gbmVpdGhlciBkaXJlY3RvcnkgaGFzIGEgbGF5b3V0IGZpbGUgeWV0XG4gICAqIChlLmcuIGZyZXNoIHByb2plY3QpLiBQcmVmZXIgc3JjL2FwcCBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cy5cbiAgICovXG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCBzaW5nbGUtbGluZSBjb21tZW50cyBhbmQgYmxvY2sgY29tbWVudHMgdG8gYXZvaWRcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGNvbW1lbnRlZC1vdXQgYWdlbnQgZXhwb3J0c1xuICAgICAgICAgICAgY29uc3Qgc3RyaXBwZWQgPSBjb250ZW50XG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXC8uKiQvZ20sIFwiXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csIFwiXCIpO1xuICAgICAgICAgICAgY29uc3QgZXhwb3J0TWF0Y2hlcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgIHN0cmlwcGVkLm1hdGNoQWxsKEFHRU5UX0VYUE9SVF9SRUdFWClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIGV4cG9ydE1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgaWYgKHNlZW4uaGFzKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNlZW4uYWRkKG1hdGNoWzFdKTtcbiAgICAgICAgICAgICAgYWdlbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cG9ydE5hbWU6IG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgIGZpbGVQYXRoOiBmdWxsUGF0aCxcbiAgICAgICAgICAgICAgICB1bmlxdWVJZDogXCJcIiwgLy8gV2lsbCBiZSBzZXQgYWZ0ZXIgYWxsIGFnZW50cyBhcmUgZm91bmRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYFt3aXRoQWdlbnRdIEZvdW5kIGFnZW50OiAke21hdGNoWzFdfSBpbiAke2Z1bGxQYXRofWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJZ25vcmUgcmVhZCBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZGlyIG9mIGRpcnNUb1NjYW4pIHtcbiAgICBzY2FuRGlyKGRpcik7XG4gIH1cblxuICAvLyBBc3NpZ24gdW5pcXVlIElEcyAtIGFkZCBoYXNoIHN1ZmZpeCBpZiBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGV4aXN0XG4gIGNvbnN0IG5hbWVDb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IGFnZW50IG9mIGFnZW50cykge1xuICAgIG5hbWVDb3VudHMuc2V0KFxuICAgICAgYWdlbnQuZXhwb3J0TmFtZSxcbiAgICAgIChuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSB8fCAwKSArIDFcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBjb25zdCBjb3VudCA9IG5hbWVDb3VudHMuZ2V0KGFnZW50LmV4cG9ydE5hbWUpID8/IDA7XG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBgJHthZ2VudC5leHBvcnROYW1lfV8ke3Nob3J0SGFzaChhZ2VudC5maWxlUGF0aCl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBhZ2VudC5leHBvcnROYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZ2VudHM7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFsbCBhZ2VudCBmaWxlcyBpbiAud2VsbC1rbm93bi9hZ2VudC92MS86XG4gKiAtIHN0ZXBzLmpzOiBSUEMgc3RlcCBmdW5jdGlvbnMgd2l0aCBcInVzZSBzdGVwXCJcbiAqIC0gcm91dGUuanM6IHRyaWdnZXJzIHdvcmtmbG93IGRpc2NvdmVyeVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUFnZW50RmlsZXMoXG4gIGFnZW50czogRGV0ZWN0ZWRBZ2VudFtdLFxuICBvdXRwdXREaXI6IHN0cmluZyxcbiAgX2N3ZDogc3RyaW5nLFxuICBkZWJ1ZzogYm9vbGVhblxuKTogdm9pZCB7XG4gIGlmIChhZ2VudHMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIE5vIGFnZW50cyBmb3VuZCwgc2tpcHBpbmcgZ2VuZXJhdGlvblwiKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG91dHB1dERpcikpIHtcbiAgICBmcy5ta2RpclN5bmMob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBzdGVwIGZ1bmN0aW9ucyB0aGF0IHVzZSBkeW5hbWljIGltcG9ydC5cbiAgICogRHluYW1pYyBpbXBvcnQgZW5zdXJlcyB0aGUgYWdlbnQgbW9kdWxlIGxvYWRzIChpbmNsdWRpbmcgbG9hZGVyLWluamVjdGVkIGluaXQpXG4gICAqIHdoZW4gdGhlIHN0ZXAgcnVucyBpbiB3b3JrZmxvdyBjb250ZXh0LCBhdm9pZGluZyB0aGUgXCJub3QgaW5pdGlhbGl6ZWRcIiBlcnJvci5cbiAgICpcbiAgICogVXNlcyB1bmlxdWVJZCBmb3IgZnVuY3Rpb24gbmFtZXMgdG8gaGFuZGxlIGR1cGxpY2F0ZSBleHBvcnQgbmFtZXMgYWNyb3NzIGZpbGVzLlxuICAgKi9cbiAgY29uc3QgcnBjRnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcCgoYSkgPT4ge1xuICAgICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIHBhdGggZnJvbSBzdGVwcy5qcyB0byB0aGUgYWdlbnQgZmlsZVxuICAgICAgbGV0IGFnZW50UmVsUGF0aCA9IHBhdGhcbiAgICAgICAgLnJlbGF0aXZlKG91dHB1dERpciwgYS5maWxlUGF0aClcbiAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gICAgICBpZiAoIWFnZW50UmVsUGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICBhZ2VudFJlbFBhdGggPSBgLi8ke2FnZW50UmVsUGF0aH1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYFxuZXhwb3J0IGNvbnN0ICR7YS51bmlxdWVJZH1ScGMgPSBhc3luYyAocGFyYW1zKSA9PiB7XG4gIFwidXNlIHN0ZXBcIjtcbiAgY29uc3QgeyAke2EuZXhwb3J0TmFtZX0gfSA9IGF3YWl0IGltcG9ydChcIiR7YWdlbnRSZWxQYXRofVwiKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgJHthLmV4cG9ydE5hbWV9LmhhbmRsZXIocGFyYW1zKTtcbiAgaWYgKHJlcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHJlcy5qc29uKCk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIC8qKlxuICAgKiBJbml0IGZ1bmN0aW9ucyB3aXJlIHVwIGFnZW50LnJwYyBpbiB0aGUgbWFpbiBhcHAgY29udGV4dC5cbiAgICogVXNlcyBleHBvcnROYW1lIGZvciB0aGUgZnVuY3Rpb24gbmFtZSAobG9hZGVyIG1hdGNoZXMgYnkgZXhwb3J0IG5hbWUpLFxuICAgKiBidXQgcmVmZXJlbmNlcyB1bmlxdWVJZCBmb3IgdGhlIFJwYyBmdW5jdGlvbi5cbiAgICovXG4gIGNvbnN0IGluaXRGdW5jdGlvbnMgPSBhZ2VudHNcbiAgICAubWFwKFxuICAgICAgKGEpID0+IGBcbmV4cG9ydCBmdW5jdGlvbiBfX2luaXQke2EuZXhwb3J0TmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7YS5leHBvcnROYW1lLnNsaWNlKFxuICAgICAgICAxXG4gICAgICApfShhZ2VudCkge1xuICBhZ2VudC5ycGMgPSAke2EudW5pcXVlSWR9UnBjO1xufWBcbiAgICApXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgY29uc3Qgc3RlcHNDb250ZW50ID0gYC8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHdpdGhBZ2VudCAtIGRvIG5vdCBlZGl0XG4ke3JwY0Z1bmN0aW9uc31cbiR7aW5pdEZ1bmN0aW9uc31cbmA7XG5cbiAgY29uc3Qgc3RlcHNQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJzdGVwcy5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhzdGVwc1BhdGgsIHN0ZXBzQ29udGVudCk7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJvdXRlLmpzIHRoYXQgaW1wb3J0cyBzdGVwcy5qcy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGRpc2NvdmVycyB0aGUgXCJ1c2Ugc3RlcFwiIGZ1bmN0aW9ucy5cbiAgICogTm8gYWN0dWFsIGhhbmRsZXIgbmVlZGVkIC0gc3RvcmFnZSBSUEMgdXNlcyB0aGUgc3RlcCBmdW5jdGlvbiBkaXJlY3RseS5cbiAgICovXG4gIGNvbnN0IHJvdXRlQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbmltcG9ydCBcIi4vc3RlcHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBHRVQoKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXCJva1wiKTtcbn1cbmA7XG5cbiAgY29uc3Qgcm91dGVQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJyb3V0ZS5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhyb3V0ZVBhdGgsIHJvdXRlQ29udGVudCk7XG5cbiAgLy8gQWRkIC5naXRpZ25vcmVcbiAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhnaXRpZ25vcmVQYXRoLCBcIipcXG5cIik7XG4gIH1cblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhgW3dpdGhBZ2VudF0gR2VuZXJhdGVkIGFnZW50IGZpbGVzIGF0ICR7b3V0cHV0RGlyfWApO1xuICB9XG59XG5cbnR5cGUgVHVyYm9wYWNrTG9hZGVyID1cbiAgfCBzdHJpbmdcbiAgfCB7IGxvYWRlcjogc3RyaW5nOyBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfTtcblxudHlwZSBUdXJib3BhY2tSdWxlID0ge1xuICBsb2FkZXJzPzogVHVyYm9wYWNrTG9hZGVyW107XG4gIGNvbmRpdGlvbj86IHtcbiAgICBhbGw/OiB1bmtub3duW107XG4gICAgYW55PzogdW5rbm93bltdO1xuICAgIHBhdGg/OiBSZWdFeHA7XG4gICAgY29udGVudD86IFJlZ0V4cDtcbiAgICBub3Q/OiB1bmtub3duO1xuICB9O1xufTtcblxudHlwZSBXb3JrZmxvd0NvbmZpZ0ZuID0gKFxuICBwaGFzZTogc3RyaW5nLFxuICBjdHg6IHsgZGVmYXVsdENvbmZpZzogTmV4dENvbmZpZyB9XG4pID0+IFByb21pc2U8TmV4dENvbmZpZz47XG5cbnR5cGUgTmV4dENvbmZpZ0lucHV0ID1cbiAgfCBOZXh0Q29uZmlnXG4gIHwgKChcbiAgICAgIHBoYXNlOiBzdHJpbmcsXG4gICAgICBjdHg6IHsgZGVmYXVsdENvbmZpZzogTmV4dENvbmZpZyB9XG4gICAgKSA9PiBQcm9taXNlPE5leHRDb25maWc+KTtcblxuLyoqXG4gKiBOZXh0LmpzIHBsdWdpbiB0aGF0IGNvbmZpZ3VyZXMgYWdlbnQgc3VwcG9ydC5cbiAqXG4gKiAtIERldGVjdHMgYWdlbnRzIGFuZCBnZW5lcmF0ZXMgUlBDIHN0ZXBzIHdpdGggXCJ1c2Ugc3RlcFwiIGluIC53ZWxsLWtub3duL2FnZW50L3YxL1xuICogLSBHZW5lcmF0ZXMgQUdFTlRfU0VDUkVUIGZvciBzZWN1cmUgUlBDIGNhbGxzXG4gKiAtIFdyYXBzIHdpdGhXb3JrZmxvdyBmb3Igd29ya2Zsb3cgc3VwcG9ydFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gbmV4dC5jb25maWcudHNcbiAqIGltcG9ydCB7IHdpdGhBZ2VudCB9IGZyb20gXCJleHBlcmltZW50YWwtYWdlbnQvbmV4dFwiO1xuICpcbiAqIC8vIE9wdGlvbiAxOiB3aXRoQWdlbnQgaGFuZGxlcyBldmVyeXRoaW5nIChyZWNvbW1lbmRlZClcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh7fSk7XG4gKlxuICogLy8gT3B0aW9uIDI6IENvbXBvc2Ugd2l0aCBvdGhlciBwbHVnaW5zXG4gKiBleHBvcnQgZGVmYXVsdCB3aXRoQWdlbnQod2l0aFNvbWVPdGhlclBsdWdpbih7fSkpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQWdlbnQoXG4gIGNvbmZpZ09yRm46IE5leHRDb25maWdJbnB1dCxcbiAgYWdlbnRDb25maWc/OiBXaXRoQWdlbnRDb25maWdcbik6IFdvcmtmbG93Q29uZmlnRm4ge1xuICBjb25zdCBkZWJ1ZyA9IGFnZW50Q29uZmlnPy5kZWJ1ZyA/PyBmYWxzZTtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcblxuICAvLyBEZXRlY3QgYXBwIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgKHNyYy9hcHAgdnMgYXBwKVxuICBjb25zdCBhcHBEaXIgPSBnZXRBcHBEaXIoY3dkKTtcbiAgY29uc3QgYWdlbnREaXIgPSBgJHthcHBEaXJ9Ly53ZWxsLWtub3duL2FnZW50LyR7QUdFTlRfUFJPVE9DT0xfVkVSU0lPTn1gO1xuXG4gIC8vIERldGVjdCBhZ2VudHMgYW5kIGdlbmVyYXRlIGZpbGVzIEZJUlNUIChiZWZvcmUgd29ya2Zsb3cgZGlzY292ZXJzIHRoZW0pXG4gIGNvbnN0IGFnZW50cyA9IGRldGVjdEFnZW50cyhjd2QsIGRlYnVnKTtcbiAgY29uc3Qgb3V0cHV0RGlyID0gcGF0aC5qb2luKGN3ZCwgYWdlbnREaXIpO1xuICBnZW5lcmF0ZUFnZW50RmlsZXMoYWdlbnRzLCBvdXRwdXREaXIsIGN3ZCwgZGVidWcpO1xuXG4gIGNvbnN0IGFnZW50RmlsZVBhdGhzID0gYWdlbnRzLm1hcCgoYSkgPT4gYS5maWxlUGF0aCk7XG4gIGNvbnN0IGxvYWRlclBhdGggPSByZXF1aXJlLnJlc29sdmUoXCIuL25leHQvbG9hZGVyXCIpO1xuICBjb25zdCBhYnNvbHV0ZUFwcERpciA9IHBhdGguam9pbihjd2QsIGFwcERpcik7XG4gIGNvbnN0IGxvYWRlck9wdGlvbnMgPSB7IGFwcERpcjogYWJzb2x1dGVBcHBEaXIsIGRlYnVnIH07XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBsb2FkZXIgcGF0aDpcIiwgbG9hZGVyUGF0aCk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBmaWxlczpcIiwgYWdlbnRGaWxlUGF0aHMpO1xuICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gYWdlbnQgZGlyOlwiLCBhZ2VudERpcik7XG4gIH1cblxuICAvLyBCdWlsZCByZWdleCB0byBtYXRjaCBhZ2VudCBmaWxlIHBhdGhzXG4gIGNvbnN0IGFnZW50UGF0aFJlZ2V4ID1cbiAgICBhZ2VudEZpbGVQYXRocy5sZW5ndGggPiAwXG4gICAgICA/IG5ldyBSZWdFeHAoXG4gICAgICAgICAgYCR7YWdlbnRGaWxlUGF0aHNcbiAgICAgICAgICAgIC5tYXAoKHApID0+XG4gICAgICAgICAgICAgIHBhdGhcbiAgICAgICAgICAgICAgICAucmVsYXRpdmUoY3dkLCBwKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKFwifFwiKX0kYFxuICAgICAgICApXG4gICAgICA6IG51bGw7XG5cbiAgLyoqXG4gICAqIEFsd2F5cyBwYXNzIHRocm91Z2ggd2l0aFdvcmtmbG93IC0gaXQgaGFuZGxlcyBib3RoIE5leHRDb25maWcgYW5kIGFzeW5jIGZ1bmN0aW9ucy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGlzIGFsd2F5cyBjb25maWd1cmVkLCByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIHVzZXIgcGFzc2VkLlxuICAgKi9cbiAgbGV0IHdpdGhXb3JrZmxvdzogKFxuICAgIGNvbmZpZzogTmV4dENvbmZpZ0lucHV0LFxuICAgIG9wdGlvbnM/OiB7IHdvcmtmbG93cz86IHsgZGlycz86IHN0cmluZ1tdIH0gfVxuICApID0+IFdvcmtmbG93Q29uZmlnRm47XG4gIHRyeSB7XG4gICAgd2l0aFdvcmtmbG93ID0gcmVxdWlyZShcIndvcmtmbG93L25leHRcIikud2l0aFdvcmtmbG93O1xuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIlt3aXRoQWdlbnRdIHdvcmtmbG93L25leHQgbm90IGZvdW5kLiBNYWtlIHN1cmUgd29ya2Zsb3cgaXMgaW5zdGFsbGVkLlwiXG4gICAgKTtcbiAgICByZXR1cm4gdHlwZW9mIGNvbmZpZ09yRm4gPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBjb25maWdPckZuXG4gICAgICA6IGFzeW5jICgpID0+IGNvbmZpZ09yRm47XG4gIH1cblxuICBjb25zdCBiYXNlQ29uZmlnRm4gPSB3aXRoV29ya2Zsb3coY29uZmlnT3JGbiwge1xuICAgIHdvcmtmbG93czoge1xuICAgICAgZGlyczogWy4uLkRFRkFVTFRfV09SS0ZMT1dfRElSUywgYWdlbnREaXJdLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSB3cmFwcGVyIHRoYXQgcnVucyBBRlRFUiB3b3JrZmxvdyBwcm9jZXNzZXMsIHRoZW4gYWRkcyBvdXIgbG9hZGVyLlxuICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdvcmtmbG93IG92ZXJ3cml0ZXMgdHVyYm9wYWNrIHJ1bGVzIC0gd2UgbmVlZCB0b1xuICAgKiBtb2RpZnkgdGhlbSBhZnRlciB3b3JrZmxvdyBpcyBkb25lLlxuICAgKi9cbiAgcmV0dXJuIGFzeW5jIChwaGFzZSwgY3R4KSA9PiB7XG4gICAgY29uc3QgbmV4dENvbmZpZyA9IGF3YWl0IGJhc2VDb25maWdGbihwaGFzZSwgY3R4KTtcblxuICAgIC8vIFNldCB1cCBBR0VOVF9TRUNSRVQgaWYgbm90IGFscmVhZHkgc2V0XG4gICAgaWYgKCFwcm9jZXNzLmVudi5BR0VOVF9TRUNSRVQpIHtcbiAgICAgIG5leHRDb25maWcuZW52ID0ge1xuICAgICAgICAuLi5uZXh0Q29uZmlnLmVudixcbiAgICAgICAgQUdFTlRfU0VDUkVUOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgfTtcbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEdlbmVyYXRlZCBBR0VOVF9TRUNSRVRcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFhZ2VudFBhdGhSZWdleCB8fCBhZ2VudEZpbGVQYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXh0Q29uZmlnO1xuICAgIH1cblxuICAgIC8vIE1vZGlmeSB0dXJib3BhY2sgcnVsZXMgdG8gaW5jbHVkZSBvdXIgbG9hZGVyIGZvciBhZ2VudCBmaWxlc1xuICAgIGNvbnN0IHJ1bGVzID0gKG5leHRDb25maWcudHVyYm9wYWNrPy5ydWxlcyB8fCB7fSkgYXMgUmVjb3JkPFxuICAgICAgc3RyaW5nLFxuICAgICAgVHVyYm9wYWNrUnVsZVxuICAgID47XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBbXCIqLnRzXCIsIFwiKi50c3hcIiwgXCIqLmpzXCIsIFwiKi5qc3hcIl0pIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nUnVsZSA9IHJ1bGVzW2tleV07XG4gICAgICBpZiAoIWV4aXN0aW5nUnVsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBXb3JrZmxvdydzIHJ1bGUgaGFzOiBjb25kaXRpb24uYWxsID0gW3sgbm90OiBwYXRoIH0sIHsgY29udGVudDogL3VzZSBzdGVwfC4uLi8gfV1cbiAgICAgICAqIFdlIHdhbnQ6IHJ1biBsb2FkZXIgaWYgd29ya2Zsb3cncyBjb25kaXRpb25zIG1hdGNoIE9SIGl0J3MgYW4gYWdlbnQgZmlsZS5cbiAgICAgICAqIFNvIHdlIHdyYXAgaW46IGNvbmRpdGlvbi5hbnkgPSBbZXhpc3RpbmdDb25kaXRpb24sIHsgcGF0aDogYWdlbnRQYXRoUmVnZXggfV1cbiAgICAgICAqL1xuICAgICAgcnVsZXNba2V5XSA9IHtcbiAgICAgICAgLi4uZXhpc3RpbmdSdWxlLFxuICAgICAgICBsb2FkZXJzOiBbXG4gICAgICAgICAgeyBsb2FkZXI6IGxvYWRlclBhdGgsIG9wdGlvbnM6IGxvYWRlck9wdGlvbnMgfSxcbiAgICAgICAgICAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pLFxuICAgICAgICBdLFxuICAgICAgICBjb25kaXRpb246IHtcbiAgICAgICAgICBhbnk6IFtleGlzdGluZ1J1bGUuY29uZGl0aW9uLCB7IHBhdGg6IGFnZW50UGF0aFJlZ2V4IH1dLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBbHNvIGNvbmZpZ3VyZSB3ZWJwYWNrIGZvciBub24tdHVyYm9wYWNrIGJ1aWxkc1xuICAgIGNvbnN0IGV4aXN0aW5nV2VicGFjayA9IG5leHRDb25maWcud2VicGFjaztcbiAgICBuZXh0Q29uZmlnLndlYnBhY2sgPSAod2VicGFja0NvbmZpZywgY29udGV4dCkgPT4ge1xuICAgICAgd2VicGFja0NvbmZpZy5tb2R1bGUucnVsZXMucHVzaCh7XG4gICAgICAgIHRlc3Q6IChyZXNvdXJjZVBhdGg6IHN0cmluZykgPT4gYWdlbnRGaWxlUGF0aHMuaW5jbHVkZXMocmVzb3VyY2VQYXRoKSxcbiAgICAgICAgdXNlOiBbeyBsb2FkZXI6IGxvYWRlclBhdGgsIG9wdGlvbnM6IGxvYWRlck9wdGlvbnMgfV0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBleGlzdGluZ1dlYnBhY2s/Lih3ZWJwYWNrQ29uZmlnLCBjb250ZXh0KSA/PyB3ZWJwYWNrQ29uZmlnO1xuICAgIH07XG5cbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gQWRkZWQgYWdlbnQgbG9hZGVyIHRvIHR1cmJvcGFjayBydWxlc1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dENvbmZpZztcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O0FBQUEsWUFBWSxZQUFZO0FBQ3hCLFlBQVksUUFBUTtBQUNwQixZQUFZLFVBQVU7QUFTdEIsSUFBTSxlQUFlLGdCQUFJO0FBQ3pCLElBQU0seUJBQXlCO0FBQy9CLElBQU0saUJBQWlCO0FBQ3ZCLElBQU0scUJBQXFCO0FBQzNCLElBQU0sd0JBQXdCLENBQUMsU0FBUyxPQUFPLGFBQWEsU0FBUztBQVNyRSxTQUFTLFVBQVUsS0FBcUI7QUFDdEMsTUFBSSxPQUFPO0FBQ1gsV0FBUyxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsS0FBSztB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
package/dist/react.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _ai_sdk_react from '@ai-sdk/react';
2
- import { A as AnyAgent, a as AgentStatus } from './client-PuttJd6O.mjs';
2
+ import { A as AnyAgent, a as AgentStatus } from './client-BaItaOx5.mjs';
3
3
  import * as _tanstack_react_query from '@tanstack/react-query';
4
4
  import { QueryOptions } from '@tanstack/react-query';
5
5
  import '@vercel/sandbox';
package/dist/react.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _ai_sdk_react from '@ai-sdk/react';
2
- import { A as AnyAgent, a as AgentStatus } from './client-DIanpEQ_.js';
2
+ import { A as AnyAgent, a as AgentStatus } from './client-BY6gceox.js';
3
3
  import * as _tanstack_react_query from '@tanstack/react-query';
4
4
  import { QueryOptions } from '@tanstack/react-query';
5
5
  import '@vercel/sandbox';
@@ -1,4 +1,5 @@
1
- import { A as AnyAgent } from './client-DIanpEQ_.js';
1
+ import { ToolSet } from 'ai';
2
+ import { A as AnyAgent } from './client-BY6gceox.js';
2
3
  import { S as SkillInput } from './types-B3lbsOa7.js';
3
4
 
4
5
  /**
@@ -8,6 +9,19 @@ import { S as SkillInput } from './types-B3lbsOa7.js';
8
9
  type FsAgentConfig = {
9
10
  system?: string;
10
11
  skills?: SkillInput[];
12
+ tools?: ToolSet;
13
+ };
14
+ type ModuleLoader = () => Promise<{
15
+ default?: unknown;
16
+ }>;
17
+ /**
18
+ * Dynamic import loaders for filesystem modules that can't be
19
+ * serialized into `config`. Keyed by category, then by name.
20
+ * Currently only `tools` is populated; `skills` and `system`
21
+ * will follow the same pattern for `.ts` modules.
22
+ */
23
+ type RegistryImports = {
24
+ tools?: Record<string, ModuleLoader>;
11
25
  };
12
26
  /**
13
27
  * A single entry in the generated agent registry.
@@ -16,9 +30,8 @@ type FsAgentConfig = {
16
30
  */
17
31
  type AgentRegistryEntry = {
18
32
  config: FsAgentConfig;
19
- import?: () => Promise<{
20
- default?: unknown;
21
- }>;
33
+ import?: ModuleLoader;
34
+ imports?: RegistryImports;
22
35
  };
23
36
  /**
24
37
  * Map of agent name to registry entry, produced by the generated
@@ -1,4 +1,5 @@
1
- import { A as AnyAgent } from './client-PuttJd6O.mjs';
1
+ import { ToolSet } from 'ai';
2
+ import { A as AnyAgent } from './client-BaItaOx5.mjs';
2
3
  import { S as SkillInput } from './types-B3lbsOa7.mjs';
3
4
 
4
5
  /**
@@ -8,6 +9,19 @@ import { S as SkillInput } from './types-B3lbsOa7.mjs';
8
9
  type FsAgentConfig = {
9
10
  system?: string;
10
11
  skills?: SkillInput[];
12
+ tools?: ToolSet;
13
+ };
14
+ type ModuleLoader = () => Promise<{
15
+ default?: unknown;
16
+ }>;
17
+ /**
18
+ * Dynamic import loaders for filesystem modules that can't be
19
+ * serialized into `config`. Keyed by category, then by name.
20
+ * Currently only `tools` is populated; `skills` and `system`
21
+ * will follow the same pattern for `.ts` modules.
22
+ */
23
+ type RegistryImports = {
24
+ tools?: Record<string, ModuleLoader>;
11
25
  };
12
26
  /**
13
27
  * A single entry in the generated agent registry.
@@ -16,9 +30,8 @@ type FsAgentConfig = {
16
30
  */
17
31
  type AgentRegistryEntry = {
18
32
  config: FsAgentConfig;
19
- import?: () => Promise<{
20
- default?: unknown;
21
- }>;
33
+ import?: ModuleLoader;
34
+ imports?: RegistryImports;
22
35
  };
23
36
  /**
24
37
  * Map of agent name to registry entry, produced by the generated
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "experimental-agent",
3
- "version": "0.8.0-alpha.2",
3
+ "version": "0.8.0",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -71,15 +71,6 @@
71
71
  "require": "./dist/react.js"
72
72
  }
73
73
  },
74
- "scripts": {
75
- "build": "tsup",
76
- "dev": "tsup --watch",
77
- "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
78
- "release": "pnpm build && npm publish",
79
- "typecheck": "tsc --noEmit",
80
- "test": "vitest run",
81
- "test:watch": "vitest"
82
- },
83
74
  "dependencies": {
84
75
  "@elysiajs/openapi": "^1.4.14",
85
76
  "@swc/core": "^1.10.0",
@@ -96,7 +87,6 @@
96
87
  "zod": "^4.3.6"
97
88
  },
98
89
  "devDependencies": {
99
- "@agent/tsconfig": "workspace:*",
100
90
  "@ai-sdk/react": "^3.0.88",
101
91
  "@types/node": "^20.11.24",
102
92
  "@types/react": "^19.2.14",
@@ -106,12 +96,22 @@
106
96
  "tsup": "^8.0.2",
107
97
  "typescript": "5.5.4",
108
98
  "vitest": "^3.0.0",
109
- "workflow": "4.2.0-beta.70"
99
+ "workflow": "4.2.0-beta.70",
100
+ "@agent/tsconfig": "0.0.0"
110
101
  },
111
102
  "peerDependencies": {
112
103
  "ai": "^6.0.0"
113
104
  },
114
105
  "publishConfig": {
115
106
  "access": "public"
107
+ },
108
+ "scripts": {
109
+ "build": "tsup",
110
+ "dev": "tsup --watch",
111
+ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
112
+ "release": "pnpm build && npm publish",
113
+ "typecheck": "tsc --noEmit",
114
+ "test": "vitest run",
115
+ "test:watch": "vitest"
116
116
  }
117
- }
117
+ }
@@ -1,199 +0,0 @@
1
- // src/framework/generate.ts
2
- import * as fs from "fs";
3
- import * as path from "path";
4
- var TS_IMPORT_EXT = /\.(ts|mts)$/;
5
- function generateRegistry(opts) {
6
- const entries = opts.agents.map(
7
- (agent) => inlineEntry({ agent, outputDir: opts.outputDir })
8
- );
9
- return [
10
- "// Auto-generated by withAgents - do not edit",
11
- 'import type { AgentRegistry } from "experimental-agent/framework";',
12
- "",
13
- "export const agents = {",
14
- ...entries,
15
- "} satisfies AgentRegistry;",
16
- ""
17
- ].join("\n");
18
- }
19
- function inlineEntry(opts) {
20
- const config = buildConfig(opts.agent);
21
- const configStr = JSON.stringify(config, null, 2).split("\n").map((line, i) => i === 0 ? line : ` ${line}`).join("\n");
22
- const parts = [` config: ${configStr}`];
23
- if (opts.agent.hasAgentConfig) {
24
- const configPath = findAgentConfigPath(opts.agent.absolutePath);
25
- const relativePath = relativeImportPath({
26
- from: opts.outputDir,
27
- to: configPath
28
- });
29
- parts.push(` import: () => import(${JSON.stringify(relativePath)})`);
30
- }
31
- return ` ${JSON.stringify(opts.agent.name)}: {
32
- ${parts.join(",\n")}
33
- },`;
34
- }
35
- function buildConfig(agent) {
36
- const config = {};
37
- if (agent.systemPrompt) {
38
- config.system = agent.systemPrompt;
39
- }
40
- if (agent.skills.length > 0) {
41
- config.skills = agent.skills;
42
- }
43
- return config;
44
- }
45
- function findAgentConfigPath(agentDir) {
46
- const extensions = [".ts", ".js", ".mts", ".mjs"];
47
- for (const ext of extensions) {
48
- const candidate = path.join(agentDir, `agent${ext}`);
49
- if (fs.existsSync(candidate)) {
50
- return candidate;
51
- }
52
- }
53
- return path.join(agentDir, "agent");
54
- }
55
- function relativeImportPath(opts) {
56
- let rel = path.relative(opts.from, opts.to).replace(/\\/g, "/");
57
- rel = rel.replace(TS_IMPORT_EXT, "");
58
- if (!rel.startsWith(".")) {
59
- rel = `./${rel}`;
60
- }
61
- return rel;
62
- }
63
-
64
- // src/framework/scan.ts
65
- import * as fs2 from "fs";
66
- import * as path2 from "path";
67
- var AGENT_CONFIG_FILES = ["agent.ts", "agent.js", "agent.mts", "agent.mjs"];
68
- var MD_EXT = /\.md$/;
69
- var TS_EXT = /\.(ts|js|mts|mjs)$/;
70
- function listDir(dir) {
71
- if (!fs2.existsSync(dir)) {
72
- return [];
73
- }
74
- return fs2.readdirSync(dir);
75
- }
76
- function readFile(filePath) {
77
- return fs2.readFileSync(filePath, "utf-8");
78
- }
79
- function fileExists(filePath) {
80
- return fs2.existsSync(filePath);
81
- }
82
- function isDirectory(filePath) {
83
- return fs2.existsSync(filePath) && fs2.statSync(filePath).isDirectory();
84
- }
85
- function discoverAgentDirs(agentsRoot) {
86
- const entries = listDir(agentsRoot);
87
- const dirs = [];
88
- for (const entry of entries) {
89
- const absolutePath = path2.join(agentsRoot, entry);
90
- if (!isDirectory(absolutePath)) {
91
- continue;
92
- }
93
- if (entry.startsWith(".")) {
94
- continue;
95
- }
96
- dirs.push({
97
- name: entry,
98
- absolutePath,
99
- hasAgentConfig: hasAgentConfig(absolutePath)
100
- });
101
- }
102
- return dirs;
103
- }
104
- function hasAgentConfig(agentDir) {
105
- return AGENT_CONFIG_FILES.some((f) => fileExists(path2.join(agentDir, f)));
106
- }
107
- function getSkills(agentDir) {
108
- const skillsDir = path2.join(agentDir, "skills");
109
- const entries = listDir(skillsDir);
110
- const skills = [];
111
- const tsSkillImportPaths = [];
112
- for (const entry of entries.sort()) {
113
- const absolutePath = path2.join(skillsDir, entry);
114
- if (MD_EXT.test(entry)) {
115
- skills.push({
116
- type: "host",
117
- path: absolutePath
118
- });
119
- } else if (TS_EXT.test(entry)) {
120
- tsSkillImportPaths.push(absolutePath);
121
- }
122
- }
123
- return { skills, tsSkillImportPaths };
124
- }
125
- function getSystemPrompt(agentDir) {
126
- const systemDir = path2.join(agentDir, "system");
127
- const entries = listDir(systemDir);
128
- const mdFiles = entries.filter((e) => MD_EXT.test(e)).sort();
129
- if (mdFiles.length === 0) {
130
- return void 0;
131
- }
132
- const parts = [];
133
- for (const file of mdFiles) {
134
- const content = readFile(path2.join(systemDir, file)).trim();
135
- if (content) {
136
- parts.push(content);
137
- }
138
- }
139
- return parts.length > 0 ? parts.join("\n\n") : void 0;
140
- }
141
- function scanAgent(agentDir) {
142
- const { skills, tsSkillImportPaths } = getSkills(agentDir.absolutePath);
143
- const systemPrompt = getSystemPrompt(agentDir.absolutePath);
144
- return { ...agentDir, skills, systemPrompt, tsSkillImportPaths };
145
- }
146
- function findAgentsRoot(cwd, userDefinedAgentsDir) {
147
- if (userDefinedAgentsDir) {
148
- return path2.resolve(cwd, userDefinedAgentsDir);
149
- }
150
- const candidates = [
151
- path2.join(cwd, "src", "agents"),
152
- path2.join(cwd, "agents")
153
- ];
154
- for (const candidate of candidates) {
155
- if (isDirectory(candidate)) {
156
- return candidate;
157
- }
158
- }
159
- return null;
160
- }
161
-
162
- // src/framework/framework.ts
163
- var Framework = class {
164
- cwd;
165
- agentsDir;
166
- log;
167
- constructor(opts) {
168
- this.cwd = opts.cwd ?? process.cwd();
169
- this.agentsDir = opts.agentsDir;
170
- this.log = opts.debug ? console.log.bind(console, "[Framework]") : () => void 0;
171
- }
172
- /**
173
- * Scan the agents directory and return metadata for every agent found.
174
- * Each subfolder inside the agents directory becomes one agent.
175
- * Returns an empty array when no agents directory exists.
176
- */
177
- discoverAgents() {
178
- const root = findAgentsRoot(this.cwd, this.agentsDir);
179
- if (!root) {
180
- return [];
181
- }
182
- const dirs = discoverAgentDirs(root);
183
- return dirs.map(scanAgent);
184
- }
185
- /**
186
- * Generate the TypeScript source for an agent registry module.
187
- *
188
- * @param opts.agents - Scanned agents to include in the registry.
189
- * @param opts.outputDir - Directory where the registry file will be written
190
- * (used to compute relative import paths to each agent's config module).
191
- * @returns The full source text of the generated `_registry.ts` file.
192
- */
193
- generateRegistrySource = generateRegistry;
194
- };
195
-
196
- export {
197
- Framework
198
- };
199
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ZyYW1ld29yay9nZW5lcmF0ZS50cyIsICIuLi9zcmMvZnJhbWV3b3JrL3NjYW4udHMiLCAiLi4vc3JjL2ZyYW1ld29yay9mcmFtZXdvcmsudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgU2Nhbm5lZEFnZW50IH0gZnJvbSBcIi4vc2NhblwiO1xuXG5jb25zdCBUU19JTVBPUlRfRVhUID0gL1xcLih0c3xtdHMpJC87XG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSZWdpc3RyeShvcHRzOiB7XG4gIGFnZW50czogU2Nhbm5lZEFnZW50W107XG4gIG91dHB1dERpcjogc3RyaW5nO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IGVudHJpZXMgPSBvcHRzLmFnZW50cy5tYXAoKGFnZW50KSA9PlxuICAgIGlubGluZUVudHJ5KHsgYWdlbnQsIG91dHB1dERpcjogb3B0cy5vdXRwdXREaXIgfSlcbiAgKTtcblxuICByZXR1cm4gW1xuICAgIFwiLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50cyAtIGRvIG5vdCBlZGl0XCIsXG4gICAgJ2ltcG9ydCB0eXBlIHsgQWdlbnRSZWdpc3RyeSB9IGZyb20gXCJleHBlcmltZW50YWwtYWdlbnQvZnJhbWV3b3JrXCI7JyxcbiAgICBcIlwiLFxuICAgIFwiZXhwb3J0IGNvbnN0IGFnZW50cyA9IHtcIixcbiAgICAuLi5lbnRyaWVzLFxuICAgIFwifSBzYXRpc2ZpZXMgQWdlbnRSZWdpc3RyeTtcIixcbiAgICBcIlwiLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG5cbmZ1bmN0aW9uIGlubGluZUVudHJ5KG9wdHM6IHtcbiAgYWdlbnQ6IFNjYW5uZWRBZ2VudDtcbiAgb3V0cHV0RGlyOiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgY29uc3QgY29uZmlnID0gYnVpbGRDb25maWcob3B0cy5hZ2VudCk7XG4gIGNvbnN0IGNvbmZpZ1N0ciA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMilcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAubWFwKChsaW5lLCBpKSA9PiAoaSA9PT0gMCA/IGxpbmUgOiBgICAgICAgJHtsaW5lfWApKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IHBhcnRzID0gW2AgICAgY29uZmlnOiAke2NvbmZpZ1N0cn1gXTtcblxuICBpZiAob3B0cy5hZ2VudC5oYXNBZ2VudENvbmZpZykge1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBmaW5kQWdlbnRDb25maWdQYXRoKG9wdHMuYWdlbnQuYWJzb2x1dGVQYXRoKTtcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZUltcG9ydFBhdGgoe1xuICAgICAgZnJvbTogb3B0cy5vdXRwdXREaXIsXG4gICAgICB0bzogY29uZmlnUGF0aCxcbiAgICB9KTtcbiAgICBwYXJ0cy5wdXNoKGAgICAgaW1wb3J0OiAoKSA9PiBpbXBvcnQoJHtKU09OLnN0cmluZ2lmeShyZWxhdGl2ZVBhdGgpfSlgKTtcbiAgfVxuXG4gIHJldHVybiBgICAke0pTT04uc3RyaW5naWZ5KG9wdHMuYWdlbnQubmFtZSl9OiB7XFxuJHtwYXJ0cy5qb2luKFwiLFxcblwiKX1cXG4gIH0sYDtcbn1cblxuZnVuY3Rpb24gYnVpbGRDb25maWcoYWdlbnQ6IFNjYW5uZWRBZ2VudCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIGlmIChhZ2VudC5zeXN0ZW1Qcm9tcHQpIHtcbiAgICBjb25maWcuc3lzdGVtID0gYWdlbnQuc3lzdGVtUHJvbXB0O1xuICB9XG5cbiAgaWYgKGFnZW50LnNraWxscy5sZW5ndGggPiAwKSB7XG4gICAgY29uZmlnLnNraWxscyA9IGFnZW50LnNraWxscztcbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59XG5cbmZ1bmN0aW9uIGZpbmRBZ2VudENvbmZpZ1BhdGgoYWdlbnREaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBbXCIudHNcIiwgXCIuanNcIiwgXCIubXRzXCIsIFwiLm1qc1wiXTtcbiAgZm9yIChjb25zdCBleHQgb2YgZXh0ZW5zaW9ucykge1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHBhdGguam9pbihhZ2VudERpciwgYGFnZW50JHtleHR9YCk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoY2FuZGlkYXRlKSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhdGguam9pbihhZ2VudERpciwgXCJhZ2VudFwiKTtcbn1cblxuZnVuY3Rpb24gcmVsYXRpdmVJbXBvcnRQYXRoKG9wdHM6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH0pOiBzdHJpbmcge1xuICBsZXQgcmVsID0gcGF0aC5yZWxhdGl2ZShvcHRzLmZyb20sIG9wdHMudG8pLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuICByZWwgPSByZWwucmVwbGFjZShUU19JTVBPUlRfRVhULCBcIlwiKTtcbiAgaWYgKCFyZWwuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICByZWwgPSBgLi8ke3JlbH1gO1xuICB9XG4gIHJldHVybiByZWw7XG59XG5cbiIsICJpbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IEhvc3RTa2lsbElucHV0LCBTa2lsbElucHV0IH0gZnJvbSBcIi4uL3NraWxscy90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBBZ2VudERpciA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhYnNvbHV0ZVBhdGg6IHN0cmluZztcbiAgaGFzQWdlbnRDb25maWc6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBTY2FubmVkQWdlbnQgPSBBZ2VudERpciAmIHtcbiAgc2tpbGxzOiBTa2lsbElucHV0W107XG4gIHN5c3RlbVByb21wdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB0c1NraWxsSW1wb3J0UGF0aHM6IHN0cmluZ1tdO1xufTtcblxuY29uc3QgQUdFTlRfQ09ORklHX0ZJTEVTID0gW1wiYWdlbnQudHNcIiwgXCJhZ2VudC5qc1wiLCBcImFnZW50Lm10c1wiLCBcImFnZW50Lm1qc1wiXTtcbmNvbnN0IE1EX0VYVCA9IC9cXC5tZCQvO1xuY29uc3QgVFNfRVhUID0gL1xcLih0c3xqc3xtdHN8bWpzKSQvO1xuXG5leHBvcnQgZnVuY3Rpb24gbGlzdERpcihkaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGRpcikpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIGZzLnJlYWRkaXJTeW5jKGRpcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRmlsZShmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgXCJ1dGYtOFwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVFeGlzdHMoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZnMuZXhpc3RzU3luYyhmaWxlUGF0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpcmVjdG9yeShmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSAmJiBmcy5zdGF0U3luYyhmaWxlUGF0aCkuaXNEaXJlY3RvcnkoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2NvdmVyQWdlbnREaXJzKGFnZW50c1Jvb3Q6IHN0cmluZyk6IEFnZW50RGlyW10ge1xuICBjb25zdCBlbnRyaWVzID0gbGlzdERpcihhZ2VudHNSb290KTtcbiAgY29uc3QgZGlyczogQWdlbnREaXJbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGguam9pbihhZ2VudHNSb290LCBlbnRyeSk7XG4gICAgaWYgKCFpc0RpcmVjdG9yeShhYnNvbHV0ZVBhdGgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVudHJ5LnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBkaXJzLnB1c2goe1xuICAgICAgbmFtZTogZW50cnksXG4gICAgICBhYnNvbHV0ZVBhdGgsXG4gICAgICBoYXNBZ2VudENvbmZpZzogaGFzQWdlbnRDb25maWcoYWJzb2x1dGVQYXRoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBkaXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzQWdlbnRDb25maWcoYWdlbnREaXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gQUdFTlRfQ09ORklHX0ZJTEVTLnNvbWUoKGYpID0+IGZpbGVFeGlzdHMocGF0aC5qb2luKGFnZW50RGlyLCBmKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2tpbGxzKGFnZW50RGlyOiBzdHJpbmcpOiB7XG4gIHNraWxsczogU2tpbGxJbnB1dFtdO1xuICB0c1NraWxsSW1wb3J0UGF0aHM6IHN0cmluZ1tdO1xufSB7XG4gIGNvbnN0IHNraWxsc0RpciA9IHBhdGguam9pbihhZ2VudERpciwgXCJza2lsbHNcIik7XG4gIGNvbnN0IGVudHJpZXMgPSBsaXN0RGlyKHNraWxsc0Rpcik7XG4gIGNvbnN0IHNraWxsczogU2tpbGxJbnB1dFtdID0gW107XG4gIGNvbnN0IHRzU2tpbGxJbXBvcnRQYXRoczogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMuc29ydCgpKSB7XG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcGF0aC5qb2luKHNraWxsc0RpciwgZW50cnkpO1xuXG4gICAgaWYgKE1EX0VYVC50ZXN0KGVudHJ5KSkge1xuICAgICAgc2tpbGxzLnB1c2goe1xuICAgICAgICB0eXBlOiBcImhvc3RcIixcbiAgICAgICAgcGF0aDogYWJzb2x1dGVQYXRoLFxuICAgICAgfSBzYXRpc2ZpZXMgSG9zdFNraWxsSW5wdXQpO1xuICAgIH0gZWxzZSBpZiAoVFNfRVhULnRlc3QoZW50cnkpKSB7XG4gICAgICB0c1NraWxsSW1wb3J0UGF0aHMucHVzaChhYnNvbHV0ZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IHNraWxscywgdHNTa2lsbEltcG9ydFBhdGhzIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTeXN0ZW1Qcm9tcHQoYWdlbnREaXI6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN5c3RlbURpciA9IHBhdGguam9pbihhZ2VudERpciwgXCJzeXN0ZW1cIik7XG4gIGNvbnN0IGVudHJpZXMgPSBsaXN0RGlyKHN5c3RlbURpcik7XG4gIGNvbnN0IG1kRmlsZXMgPSBlbnRyaWVzLmZpbHRlcigoZSkgPT4gTURfRVhULnRlc3QoZSkpLnNvcnQoKTtcblxuICBpZiAobWRGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgZmlsZSBvZiBtZEZpbGVzKSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlKHBhdGguam9pbihzeXN0ZW1EaXIsIGZpbGUpKS50cmltKCk7XG4gICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgIHBhcnRzLnB1c2goY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDAgPyBwYXJ0cy5qb2luKFwiXFxuXFxuXCIpIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbkFnZW50KGFnZW50RGlyOiBBZ2VudERpcik6IFNjYW5uZWRBZ2VudCB7XG4gIGNvbnN0IHsgc2tpbGxzLCB0c1NraWxsSW1wb3J0UGF0aHMgfSA9IGdldFNraWxscyhhZ2VudERpci5hYnNvbHV0ZVBhdGgpO1xuICBjb25zdCBzeXN0ZW1Qcm9tcHQgPSBnZXRTeXN0ZW1Qcm9tcHQoYWdlbnREaXIuYWJzb2x1dGVQYXRoKTtcblxuICByZXR1cm4geyAuLi5hZ2VudERpciwgc2tpbGxzLCBzeXN0ZW1Qcm9tcHQsIHRzU2tpbGxJbXBvcnRQYXRocyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEFnZW50c1Jvb3QoXG4gIGN3ZDogc3RyaW5nLFxuICB1c2VyRGVmaW5lZEFnZW50c0Rpcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHVzZXJEZWZpbmVkQWdlbnRzRGlyKSB7XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZShjd2QsIHVzZXJEZWZpbmVkQWdlbnRzRGlyKTtcbiAgfVxuICBjb25zdCBjYW5kaWRhdGVzID0gW1xuICAgIHBhdGguam9pbihjd2QsIFwic3JjXCIsIFwiYWdlbnRzXCIpLFxuICAgIHBhdGguam9pbihjd2QsIFwiYWdlbnRzXCIpLFxuICBdO1xuXG4gIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAoaXNEaXJlY3RvcnkoY2FuZGlkYXRlKSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiIsICJpbXBvcnQgeyBnZW5lcmF0ZVJlZ2lzdHJ5IH0gZnJvbSBcIi4vZ2VuZXJhdGVcIjtcbmltcG9ydCB0eXBlIHsgU2Nhbm5lZEFnZW50IH0gZnJvbSBcIi4vc2NhblwiO1xuaW1wb3J0IHsgZGlzY292ZXJBZ2VudERpcnMsIGZpbmRBZ2VudHNSb290LCBzY2FuQWdlbnQgfSBmcm9tIFwiLi9zY2FuXCI7XG5cbi8qKlxuICogRnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgZm9yIGZpbGVzeXN0ZW0tYmFzZWQgYWdlbnQgZGlzY292ZXJ5IGFuZFxuICogcmVnaXN0cnkgY29kZSBnZW5lcmF0aW9uLiBBZGFwdGVycyBsaWtlIHtAbGluayBOZXh0fSByZWNlaXZlIGFcbiAqIGBGcmFtZXdvcmtgIGluc3RhbmNlIGFuZCB1c2UgaXQgdG8gc2NhbiBhZ2VudHMgYW5kIHByb2R1Y2UgcmVnaXN0cnlcbiAqIHNvdXJjZSBjb2RlLlxuICovXG5leHBvcnQgY2xhc3MgRnJhbWV3b3JrIHtcbiAgcmVhZG9ubHkgY3dkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFnZW50c0Rpcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBsb2c6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Iob3B0czoge1xuICAgIC8qKlxuICAgICAqIFByb2plY3Qgcm9vdCBkaXJlY3RvcnkuXG4gICAgICogQGRlZmF1bHRWYWx1ZSBgcHJvY2Vzcy5jd2QoKWBcbiAgICAgKi9cbiAgICBjd2Q/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCB0byB0aGUgYWdlbnRzIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gYGN3ZGAuXG4gICAgICogV2hlbiBvbWl0dGVkLCBhdXRvLWRldGVjdGVkIGFzIHRoZSBmaXJzdCBleGlzdGluZyBkaXJlY3RvcnlcbiAgICAgKiBhbW9uZyBgc3JjL2FnZW50c2AgYW5kIGBhZ2VudHNgLlxuICAgICAqL1xuICAgIGFnZW50c0Rpcj86IHN0cmluZztcbiAgICAvKiogRW5hYmxlIHZlcmJvc2UgbG9nZ2luZyB0byBzdGRvdXQuICovXG4gICAgZGVidWc/OiBib29sZWFuO1xuICB9KSB7XG4gICAgdGhpcy5jd2QgPSBvcHRzLmN3ZCA/PyBwcm9jZXNzLmN3ZCgpO1xuICAgIHRoaXMuYWdlbnRzRGlyID0gb3B0cy5hZ2VudHNEaXI7XG4gICAgdGhpcy5sb2cgPSBvcHRzLmRlYnVnXG4gICAgICA/IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwgXCJbRnJhbWV3b3JrXVwiKVxuICAgICAgOiAoKSA9PiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2NhbiB0aGUgYWdlbnRzIGRpcmVjdG9yeSBhbmQgcmV0dXJuIG1ldGFkYXRhIGZvciBldmVyeSBhZ2VudCBmb3VuZC5cbiAgICogRWFjaCBzdWJmb2xkZXIgaW5zaWRlIHRoZSBhZ2VudHMgZGlyZWN0b3J5IGJlY29tZXMgb25lIGFnZW50LlxuICAgKiBSZXR1cm5zIGFuIGVtcHR5IGFycmF5IHdoZW4gbm8gYWdlbnRzIGRpcmVjdG9yeSBleGlzdHMuXG4gICAqL1xuICBkaXNjb3ZlckFnZW50cygpOiBTY2FubmVkQWdlbnRbXSB7XG4gICAgY29uc3Qgcm9vdCA9IGZpbmRBZ2VudHNSb290KHRoaXMuY3dkLCB0aGlzLmFnZW50c0Rpcik7XG4gICAgaWYgKCFyb290KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGRpcnMgPSBkaXNjb3ZlckFnZW50RGlycyhyb290KTtcbiAgICByZXR1cm4gZGlycy5tYXAoc2NhbkFnZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgVHlwZVNjcmlwdCBzb3VyY2UgZm9yIGFuIGFnZW50IHJlZ2lzdHJ5IG1vZHVsZS5cbiAgICpcbiAgICogQHBhcmFtIG9wdHMuYWdlbnRzIC0gU2Nhbm5lZCBhZ2VudHMgdG8gaW5jbHVkZSBpbiB0aGUgcmVnaXN0cnkuXG4gICAqIEBwYXJhbSBvcHRzLm91dHB1dERpciAtIERpcmVjdG9yeSB3aGVyZSB0aGUgcmVnaXN0cnkgZmlsZSB3aWxsIGJlIHdyaXR0ZW5cbiAgICogICAodXNlZCB0byBjb21wdXRlIHJlbGF0aXZlIGltcG9ydCBwYXRocyB0byBlYWNoIGFnZW50J3MgY29uZmlnIG1vZHVsZSkuXG4gICAqIEByZXR1cm5zIFRoZSBmdWxsIHNvdXJjZSB0ZXh0IG9mIHRoZSBnZW5lcmF0ZWQgYF9yZWdpc3RyeS50c2AgZmlsZS5cbiAgICovXG4gIGdlbmVyYXRlUmVnaXN0cnlTb3VyY2UgPSBnZW5lcmF0ZVJlZ2lzdHJ5O1xufVxu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TyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUs7QUFFM0QsTUFBSSxRQUFRLFdBQVcsR0FBRztBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sUUFBa0IsQ0FBQztBQUN6QixhQUFXLFFBQVEsU0FBUztBQUMxQixVQUFNLFVBQVUsU0FBYyxXQUFLLFdBQVcsSUFBSSxDQUFDLEVBQUUsS0FBSztBQUMxRCxRQUFJLFNBQVM7QUFDWCxZQUFNLEtBQUssT0FBTztBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUVBLFNBQU8sTUFBTSxTQUFTLElBQUksTUFBTSxLQUFLLE1BQU0sSUFBSTtBQUNqRDtBQUVPLFNBQVMsVUFBVSxVQUFrQztBQUMxRCxRQUFNLEVBQUUsUUFBUSxtQkFBbUIsSUFBSSxVQUFVLFNBQVMsWUFBWTtBQUN0RSxRQUFNLGVBQWUsZ0JBQWdCLFNBQVMsWUFBWTtBQUUxRCxTQUFPLEVBQUUsR0FBRyxVQUFVLFFBQVEsY0FBYyxtQkFBbUI7QUFDakU7QUFFTyxTQUFTLGVBQ2QsS0FDQSxzQkFDZTtBQUNmLE1BQUksc0JBQXNCO0FBQ3hCLFdBQVksY0FBUSxLQUFLLG9CQUFvQjtBQUFBLEVBQy9DO0FBQ0EsUUFBTSxhQUFhO0FBQUEsSUFDWixXQUFLLEtBQUssT0FBTyxRQUFRO0FBQUEsSUFDekIsV0FBSyxLQUFLLFFBQVE7QUFBQSxFQUN6QjtBQUVBLGFBQVcsYUFBYSxZQUFZO0FBQ2xDLFFBQUksWUFBWSxTQUFTLEdBQUc7QUFDMUIsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOzs7QUMvSE8sSUFBTSxZQUFOLE1BQWdCO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFFVCxZQUFZLE1BY1Q7QUFDRCxTQUFLLE1BQU0sS0FBSyxPQUFPLFFBQVEsSUFBSTtBQUNuQyxTQUFLLFlBQVksS0FBSztBQUN0QixTQUFLLE1BQU0sS0FBSyxRQUNaLFFBQVEsSUFBSSxLQUFLLFNBQVMsYUFBYSxJQUN2QyxNQUFNO0FBQUEsRUFDWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLGlCQUFpQztBQUMvQixVQUFNLE9BQU8sZUFBZSxLQUFLLEtBQUssS0FBSyxTQUFTO0FBQ3BELFFBQUksQ0FBQyxNQUFNO0FBQ1QsYUFBTyxDQUFDO0FBQUEsSUFDVjtBQUNBLFVBQU0sT0FBTyxrQkFBa0IsSUFBSTtBQUNuQyxXQUFPLEtBQUssSUFBSSxTQUFTO0FBQUEsRUFDM0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVQSx5QkFBeUI7QUFDM0I7IiwKICAibmFtZXMiOiBbImZzIiwgInBhdGgiXQp9Cg==
@@ -1,123 +0,0 @@
1
- // package.json
2
- var package_default = {
3
- name: "experimental-agent",
4
- version: "0.8.0-alpha.1",
5
- main: "./dist/index.js",
6
- module: "./dist/index.mjs",
7
- types: "./dist/index.d.ts",
8
- sideEffects: true,
9
- license: "MIT",
10
- files: [
11
- "dist/**"
12
- ],
13
- exports: {
14
- ".": {
15
- types: "./dist/index.d.ts",
16
- import: "./dist/index.mjs",
17
- require: "./dist/index.js"
18
- },
19
- "./storage": {
20
- types: "./dist/storage.d.ts",
21
- import: "./dist/storage.mjs",
22
- require: "./dist/storage.js"
23
- },
24
- "./sandbox": {
25
- types: "./dist/sandbox.d.ts",
26
- import: "./dist/sandbox.mjs",
27
- require: "./dist/sandbox.js"
28
- },
29
- "./next": {
30
- types: "./dist/next.d.ts",
31
- import: "./dist/next.mjs",
32
- require: "./dist/next.js"
33
- },
34
- "./next/loader": {
35
- types: "./dist/next/loader.d.ts",
36
- import: "./dist/next/loader.mjs",
37
- require: "./dist/next/loader.js"
38
- },
39
- "./next/agents": {
40
- types: "./dist/next/agents.d.ts",
41
- import: "./dist/next/agents.mjs",
42
- require: "./dist/next/agents.js"
43
- },
44
- "./framework": {
45
- types: "./dist/framework.d.ts",
46
- import: "./dist/framework.mjs",
47
- require: "./dist/framework.js"
48
- },
49
- "./framework-runtime": {
50
- types: "./dist/framework-runtime.d.ts",
51
- import: "./dist/framework-runtime.mjs",
52
- require: "./dist/framework-runtime.js"
53
- },
54
- "./client": {
55
- types: "./dist/client.d.ts",
56
- import: "./dist/client.mjs",
57
- require: "./dist/client.js"
58
- },
59
- "./lifecycle-workflow": {
60
- types: "./dist/lifecycle-workflow.d.ts",
61
- import: "./dist/lifecycle-workflow.mjs",
62
- require: "./dist/lifecycle-workflow.js"
63
- },
64
- "./lifecycle-workflow-steps": {
65
- types: "./dist/lifecycle-workflow-steps.d.ts",
66
- import: "./dist/lifecycle-workflow-steps.mjs",
67
- require: "./dist/lifecycle-workflow-steps.js"
68
- },
69
- "./react": {
70
- types: "./dist/react.d.ts",
71
- import: "./dist/react.mjs",
72
- require: "./dist/react.js"
73
- }
74
- },
75
- scripts: {
76
- build: "tsup",
77
- dev: "tsup --watch",
78
- clean: "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
79
- release: "pnpm build && npm publish",
80
- typecheck: "tsc --noEmit",
81
- test: "vitest run",
82
- "test:watch": "vitest"
83
- },
84
- dependencies: {
85
- "@elysiajs/openapi": "^1.4.14",
86
- "@swc/core": "^1.10.0",
87
- "@tanstack/react-query": "^5.90.21",
88
- "@vercel/kv2": "^0.0.18",
89
- "@vercel/oidc": "^3.1.0",
90
- "@vercel/sandbox": "1.7.1",
91
- "@workflow/serde": "4.1.0-beta.2",
92
- "better-all": "^0.0.5",
93
- elysia: "^1.4.25",
94
- errore: "^0.14.0",
95
- "fast-deep-equal": "^3.1.3",
96
- ulid: "^3.0.2",
97
- zod: "^4.3.6"
98
- },
99
- devDependencies: {
100
- "@agent/tsconfig": "workspace:*",
101
- "@ai-sdk/react": "^3.0.88",
102
- "@types/node": "^20.11.24",
103
- "@types/react": "^19.2.14",
104
- dotenv: "^17.2.3",
105
- next: "^16.0.0",
106
- react: "^19.2.4",
107
- tsup: "^8.0.2",
108
- typescript: "5.5.4",
109
- vitest: "^3.0.0",
110
- workflow: "4.2.0-beta.70"
111
- },
112
- peerDependencies: {
113
- ai: "^6.0.0"
114
- },
115
- publishConfig: {
116
- access: "public"
117
- }
118
- };
119
-
120
- export {
121
- package_default
122
- };
123
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vcGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ7XG4gIFwibmFtZVwiOiBcImV4cGVyaW1lbnRhbC1hZ2VudFwiLFxuICBcInZlcnNpb25cIjogXCIwLjguMC1hbHBoYS4xXCIsXG4gIFwibWFpblwiOiBcIi4vZGlzdC9pbmRleC5qc1wiLFxuICBcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcbiAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gIFwic2lkZUVmZmVjdHNcIjogdHJ1ZSxcbiAgXCJsaWNlbnNlXCI6IFwiTUlUXCIsXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiZGlzdC8qKlwiXG4gIF0sXG4gIFwiZXhwb3J0c1wiOiB7XG4gICAgXCIuXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXgubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvaW5kZXguanNcIlxuICAgIH0sXG4gICAgXCIuL3N0b3JhZ2VcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9zdG9yYWdlLmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L3N0b3JhZ2UubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3Qvc3RvcmFnZS5qc1wiXG4gICAgfSxcbiAgICBcIi4vc2FuZGJveFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L3NhbmRib3guZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3Qvc2FuZGJveC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9zYW5kYm94LmpzXCJcbiAgICB9LFxuICAgIFwiLi9uZXh0XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9uZXh0Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L25leHQuanNcIlxuICAgIH0sXG4gICAgXCIuL25leHQvbG9hZGVyXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuanNcIlxuICAgIH0sXG4gICAgXCIuL25leHQvYWdlbnRzXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC9hZ2VudHMuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC9hZ2VudHMubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC9hZ2VudHMuanNcIlxuICAgIH0sXG4gICAgXCIuL2ZyYW1ld29ya1wiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2ZyYW1ld29yay5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9mcmFtZXdvcmsubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvZnJhbWV3b3JrLmpzXCJcbiAgICB9LFxuICAgIFwiLi9mcmFtZXdvcmstcnVudGltZVwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2ZyYW1ld29yay1ydW50aW1lLmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2ZyYW1ld29yay1ydW50aW1lLm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2ZyYW1ld29yay1ydW50aW1lLmpzXCJcbiAgICB9LFxuICAgIFwiLi9jbGllbnRcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9jbGllbnQuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvY2xpZW50Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2NsaWVudC5qc1wiXG4gICAgfSxcbiAgICBcIi4vbGlmZWN5Y2xlLXdvcmtmbG93XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbGlmZWN5Y2xlLXdvcmtmbG93LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2xpZmVjeWNsZS13b3JrZmxvdy5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9saWZlY3ljbGUtd29ya2Zsb3cuanNcIlxuICAgIH0sXG4gICAgXCIuL2xpZmVjeWNsZS13b3JrZmxvdy1zdGVwc1wiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2xpZmVjeWNsZS13b3JrZmxvdy1zdGVwcy5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9saWZlY3ljbGUtd29ya2Zsb3ctc3RlcHMubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbGlmZWN5Y2xlLXdvcmtmbG93LXN0ZXBzLmpzXCJcbiAgICB9LFxuICAgIFwiLi9yZWFjdFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L3JlYWN0LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L3JlYWN0Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L3JlYWN0LmpzXCJcbiAgICB9XG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImRldlwiOiBcInRzdXAgLS13YXRjaFwiLFxuICAgIFwiY2xlYW5cIjogXCJybSAtcmYgLnR1cmJvICYmIHJtIC1yZiBub2RlX21vZHVsZXMgJiYgcm0gLXJmIGRpc3RcIixcbiAgICBcInJlbGVhc2VcIjogXCJwbnBtIGJ1aWxkICYmIG5wbSBwdWJsaXNoXCIsXG4gICAgXCJ0eXBlY2hlY2tcIjogXCJ0c2MgLS1ub0VtaXRcIixcbiAgICBcInRlc3RcIjogXCJ2aXRlc3QgcnVuXCIsXG4gICAgXCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0XCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGVseXNpYWpzL29wZW5hcGlcIjogXCJeMS40LjE0XCIsXG4gICAgXCJAc3djL2NvcmVcIjogXCJeMS4xMC4wXCIsXG4gICAgXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjogXCJeNS45MC4yMVwiLFxuICAgIFwiQHZlcmNlbC9rdjJcIjogXCJeMC4wLjE4XCIsXG4gICAgXCJAdmVyY2VsL29pZGNcIjogXCJeMy4xLjBcIixcbiAgICBcIkB2ZXJjZWwvc2FuZGJveFwiOiBcIjEuNy4xXCIsXG4gICAgXCJAd29ya2Zsb3cvc2VyZGVcIjogXCI0LjEuMC1iZXRhLjJcIixcbiAgICBcImJldHRlci1hbGxcIjogXCJeMC4wLjVcIixcbiAgICBcImVseXNpYVwiOiBcIl4xLjQuMjVcIixcbiAgICBcImVycm9yZVwiOiBcIl4wLjE0LjBcIixcbiAgICBcImZhc3QtZGVlcC1lcXVhbFwiOiBcIl4zLjEuM1wiLFxuICAgIFwidWxpZFwiOiBcIl4zLjAuMlwiLFxuICAgIFwiem9kXCI6IFwiXjQuMy42XCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGFnZW50L3RzY29uZmlnXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkBhaS1zZGsvcmVhY3RcIjogXCJeMy4wLjg4XCIsXG4gICAgXCJAdHlwZXMvbm9kZVwiOiBcIl4yMC4xMS4yNFwiLFxuICAgIFwiQHR5cGVzL3JlYWN0XCI6IFwiXjE5LjIuMTRcIixcbiAgICBcImRvdGVudlwiOiBcIl4xNy4yLjNcIixcbiAgICBcIm5leHRcIjogXCJeMTYuMC4wXCIsXG4gICAgXCJyZWFjdFwiOiBcIl4xOS4yLjRcIixcbiAgICBcInRzdXBcIjogXCJeOC4wLjJcIixcbiAgICBcInR5cGVzY3JpcHRcIjogXCI1LjUuNFwiLFxuICAgIFwidml0ZXN0XCI6IFwiXjMuMC4wXCIsXG4gICAgXCJ3b3JrZmxvd1wiOiBcIjQuMi4wLWJldGEuNzBcIlxuICB9LFxuICBcInBlZXJEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYWlcIjogXCJeNi4wLjBcIlxuICB9LFxuICBcInB1Ymxpc2hDb25maWdcIjoge1xuICAgIFwiYWNjZXNzXCI6IFwicHVibGljXCJcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBO0FBQUEsRUFDRSxNQUFRO0FBQUEsRUFDUixTQUFXO0FBQUEsRUFDWCxNQUFRO0FBQUEsRUFDUixRQUFVO0FBQUEsRUFDVixPQUFTO0FBQUEsRUFDVCxhQUFlO0FBQUEsRUFDZixTQUFXO0FBQUEsRUFDWCxPQUFTO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVc7QUFBQSxJQUNULEtBQUs7QUFBQSxNQUNILE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsYUFBYTtBQUFBLE1BQ1gsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxpQkFBaUI7QUFBQSxNQUNmLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxpQkFBaUI7QUFBQSxNQUNmLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxlQUFlO0FBQUEsTUFDYixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsdUJBQXVCO0FBQUEsTUFDckIsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFlBQVk7QUFBQSxNQUNWLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSx3QkFBd0I7QUFBQSxNQUN0QixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsOEJBQThCO0FBQUEsTUFDNUIsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFdBQVc7QUFBQSxNQUNULE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBVztBQUFBLElBQ1QsT0FBUztBQUFBLElBQ1QsS0FBTztBQUFBLElBQ1AsT0FBUztBQUFBLElBQ1QsU0FBVztBQUFBLElBQ1gsV0FBYTtBQUFBLElBQ2IsTUFBUTtBQUFBLElBQ1IsY0FBYztBQUFBLEVBQ2hCO0FBQUEsRUFDQSxjQUFnQjtBQUFBLElBQ2QscUJBQXFCO0FBQUEsSUFDckIsYUFBYTtBQUFBLElBQ2IseUJBQXlCO0FBQUEsSUFDekIsZUFBZTtBQUFBLElBQ2YsZ0JBQWdCO0FBQUEsSUFDaEIsbUJBQW1CO0FBQUEsSUFDbkIsbUJBQW1CO0FBQUEsSUFDbkIsY0FBYztBQUFBLElBQ2QsUUFBVTtBQUFBLElBQ1YsUUFBVTtBQUFBLElBQ1YsbUJBQW1CO0FBQUEsSUFDbkIsTUFBUTtBQUFBLElBQ1IsS0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLGlCQUFtQjtBQUFBLElBQ2pCLG1CQUFtQjtBQUFBLElBQ25CLGlCQUFpQjtBQUFBLElBQ2pCLGVBQWU7QUFBQSxJQUNmLGdCQUFnQjtBQUFBLElBQ2hCLFFBQVU7QUFBQSxJQUNWLE1BQVE7QUFBQSxJQUNSLE9BQVM7QUFBQSxJQUNULE1BQVE7QUFBQSxJQUNSLFlBQWM7QUFBQSxJQUNkLFFBQVU7QUFBQSxJQUNWLFVBQVk7QUFBQSxFQUNkO0FBQUEsRUFDQSxrQkFBb0I7QUFBQSxJQUNsQixJQUFNO0FBQUEsRUFDUjtBQUFBLEVBQ0EsZUFBaUI7QUFBQSxJQUNmLFFBQVU7QUFBQSxFQUNaO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==