@workflow/cli 5.0.0-beta.3 → 5.0.0-beta.31

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.
Files changed (98) hide show
  1. package/dist/base.d.ts.map +1 -1
  2. package/dist/base.js +8 -2
  3. package/dist/commands/build.js +1 -1
  4. package/dist/commands/cancel.d.ts.map +1 -1
  5. package/dist/commands/cancel.js +56 -10
  6. package/dist/commands/dev.js +1 -1
  7. package/dist/commands/health.js +1 -1
  8. package/dist/commands/init.js +1 -1
  9. package/dist/commands/inspect.d.ts +3 -0
  10. package/dist/commands/inspect.d.ts.map +1 -1
  11. package/dist/commands/inspect.js +37 -7
  12. package/dist/commands/start.d.ts.map +1 -1
  13. package/dist/commands/start.js +8 -3
  14. package/dist/commands/transform.js +1 -1
  15. package/dist/commands/validate.js +1 -1
  16. package/dist/commands/web.d.ts +1 -0
  17. package/dist/commands/web.d.ts.map +1 -1
  18. package/dist/commands/web.js +9 -3
  19. package/dist/lib/config/log.js +1 -1
  20. package/dist/lib/config/types.d.ts +6 -1
  21. package/dist/lib/config/types.d.ts.map +1 -1
  22. package/dist/lib/config/types.js +1 -1
  23. package/dist/lib/config/workflow-config.js +1 -1
  24. package/dist/lib/inspect/auth.js +1 -1
  25. package/dist/lib/inspect/env.d.ts +1 -1
  26. package/dist/lib/inspect/env.js +2 -2
  27. package/dist/lib/inspect/errors.d.ts +3 -0
  28. package/dist/lib/inspect/errors.d.ts.map +1 -0
  29. package/dist/lib/inspect/errors.js +27 -0
  30. package/dist/lib/inspect/flags.d.ts +8 -0
  31. package/dist/lib/inspect/flags.d.ts.map +1 -1
  32. package/dist/lib/inspect/flags.js +15 -1
  33. package/dist/lib/inspect/hydration.d.ts +22 -0
  34. package/dist/lib/inspect/hydration.d.ts.map +1 -1
  35. package/dist/lib/inspect/hydration.js +102 -47
  36. package/dist/lib/inspect/hydration.test.d.ts +2 -0
  37. package/dist/lib/inspect/hydration.test.d.ts.map +1 -0
  38. package/dist/lib/inspect/hydration.test.js +23 -0
  39. package/dist/lib/inspect/output.d.ts +2 -2
  40. package/dist/lib/inspect/output.d.ts.map +1 -1
  41. package/dist/lib/inspect/output.js +255 -131
  42. package/dist/lib/inspect/output.test.js +403 -3
  43. package/dist/lib/inspect/pagination.d.ts +10 -1
  44. package/dist/lib/inspect/pagination.d.ts.map +1 -1
  45. package/dist/lib/inspect/pagination.js +20 -4
  46. package/dist/lib/inspect/run.d.ts.map +1 -1
  47. package/dist/lib/inspect/run.js +32 -9
  48. package/dist/lib/inspect/setup.d.ts.map +1 -1
  49. package/dist/lib/inspect/setup.js +42 -6
  50. package/dist/lib/inspect/stream.js +1 -1
  51. package/dist/lib/inspect/terminal-utils.js +1 -1
  52. package/dist/lib/inspect/time-window.d.ts +28 -0
  53. package/dist/lib/inspect/time-window.d.ts.map +1 -0
  54. package/dist/lib/inspect/time-window.js +61 -0
  55. package/dist/lib/inspect/time-window.test.d.ts +2 -0
  56. package/dist/lib/inspect/time-window.test.d.ts.map +1 -0
  57. package/dist/lib/inspect/time-window.test.js +58 -0
  58. package/dist/lib/inspect/vercel-api.d.ts +5 -2
  59. package/dist/lib/inspect/vercel-api.d.ts.map +1 -1
  60. package/dist/lib/inspect/vercel-api.js +12 -37
  61. package/dist/lib/inspect/vercel-api.test.d.ts +2 -0
  62. package/dist/lib/inspect/vercel-api.test.d.ts.map +1 -0
  63. package/dist/lib/inspect/vercel-api.test.js +21 -0
  64. package/dist/lib/inspect/vercel-link.js +1 -1
  65. package/dist/lib/inspect/web.d.ts +24 -0
  66. package/dist/lib/inspect/web.d.ts.map +1 -1
  67. package/dist/lib/inspect/web.js +47 -3
  68. package/dist/lib/update-check.js +1 -1
  69. package/package.json +14 -14
  70. package/dist/base.js.map +0 -1
  71. package/dist/commands/build.js.map +0 -1
  72. package/dist/commands/cancel.js.map +0 -1
  73. package/dist/commands/dev.js.map +0 -1
  74. package/dist/commands/health.js.map +0 -1
  75. package/dist/commands/init.js.map +0 -1
  76. package/dist/commands/inspect.js.map +0 -1
  77. package/dist/commands/start.js.map +0 -1
  78. package/dist/commands/transform.js.map +0 -1
  79. package/dist/commands/validate.js.map +0 -1
  80. package/dist/commands/web.js.map +0 -1
  81. package/dist/lib/config/log.js.map +0 -1
  82. package/dist/lib/config/types.js.map +0 -1
  83. package/dist/lib/config/workflow-config.js.map +0 -1
  84. package/dist/lib/inspect/auth.js.map +0 -1
  85. package/dist/lib/inspect/env.js.map +0 -1
  86. package/dist/lib/inspect/flags.js.map +0 -1
  87. package/dist/lib/inspect/hydration.js.map +0 -1
  88. package/dist/lib/inspect/output.js.map +0 -1
  89. package/dist/lib/inspect/output.test.js.map +0 -1
  90. package/dist/lib/inspect/pagination.js.map +0 -1
  91. package/dist/lib/inspect/run.js.map +0 -1
  92. package/dist/lib/inspect/setup.js.map +0 -1
  93. package/dist/lib/inspect/stream.js.map +0 -1
  94. package/dist/lib/inspect/terminal-utils.js.map +0 -1
  95. package/dist/lib/inspect/vercel-api.js.map +0 -1
  96. package/dist/lib/inspect/vercel-link.js.map +0 -1
  97. package/dist/lib/inspect/web.js.map +0 -1
  98. package/dist/lib/update-check.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA6BtC,8BAAsB,WAAY,SAAQ,OAAO;IAC/C,MAAM,CAAC,cAAc,UAAQ;IAE7B;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpD,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG1C"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAoCtC,8BAAsB,WAAY,SAAQ,OAAO;IAC/C,MAAM,CAAC,cAAc,UAAQ;IAE7B;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBpD,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG1C"}
package/dist/base.js CHANGED
@@ -1,5 +1,9 @@
1
1
  import { Command } from '@oclif/core';
2
2
  import { getWorld } from '@workflow/core/runtime';
3
+ function isMissingStaticWorldInjectionError(err) {
4
+ return (err instanceof Error &&
5
+ err.message.includes('Workflow target world was not statically injected'));
6
+ }
3
7
  async function flushStream(stream) {
4
8
  if (!stream.writable ||
5
9
  stream.destroyed ||
@@ -36,7 +40,9 @@ export class BaseCommand extends Command {
36
40
  await world.close?.();
37
41
  }
38
42
  catch (closeErr) {
39
- this.warn(`Failed to close world: ${closeErr instanceof Error ? closeErr.message : String(closeErr)}`);
43
+ if (!isMissingStaticWorldInjectionError(closeErr)) {
44
+ this.warn(`Failed to close world: ${closeErr instanceof Error ? closeErr.message : String(closeErr)}`);
45
+ }
40
46
  }
41
47
  await super.finally(err);
42
48
  // Force exit. World.close() cleaned up database connections and HTTP
@@ -59,4 +65,4 @@ export class BaseCommand extends Command {
59
65
  this.error(message);
60
66
  }
61
67
  }
62
- //# sourceMappingURL=base.js.map
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxELFNBQVMsa0NBQWtDLENBQUMsR0FBWTtJQUN0RCxPQUFPLENBQ0wsR0FBRyxZQUFZLEtBQUs7UUFDcEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsbURBQW1ELENBQUMsQ0FDMUUsQ0FBQztBQUNKLENBQUM7QUFFRCxLQUFLLFVBQVUsV0FBVyxDQUFDLE1BQTBCO0lBQ25ELElBQ0UsQ0FBQyxNQUFNLENBQUMsUUFBUTtRQUNoQixNQUFNLENBQUMsU0FBUztRQUNoQixNQUFNLENBQUMsTUFBTTtRQUNiLE1BQU0sQ0FBQyxhQUFhO1FBQ3BCLE1BQU0sQ0FBQyxnQkFBZ0IsRUFDdkIsQ0FBQztRQUNELE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQztZQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRTtnQkFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0IsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxPQUFnQixXQUFZLFNBQVEsT0FBTztJQUMvQyxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUU3Qjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFzQjtRQUNsQyxJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxJQUFJLENBQ1AsMEJBQTBCLFFBQVEsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUM1RixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIscUVBQXFFO1FBQ3JFLHdFQUF3RTtRQUN4RSx5RUFBeUU7UUFDekUscUVBQXFFO1FBQ3JFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNoQixXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMzQixXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUM1QixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRVMsT0FBTyxDQUFDLE9BQWU7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRVMsT0FBTyxDQUFDLE9BQWU7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRVMsUUFBUSxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ0BvY2xpZi9jb3JlJztcbmltcG9ydCB7IGdldFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvcnVudGltZSc7XG5cbmZ1bmN0aW9uIGlzTWlzc2luZ1N0YXRpY1dvcmxkSW5qZWN0aW9uRXJyb3IoZXJyOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgJiZcbiAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnV29ya2Zsb3cgdGFyZ2V0IHdvcmxkIHdhcyBub3Qgc3RhdGljYWxseSBpbmplY3RlZCcpXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZsdXNoU3RyZWFtKHN0cmVhbTogTm9kZUpTLldyaXRlU3RyZWFtKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChcbiAgICAhc3RyZWFtLndyaXRhYmxlIHx8XG4gICAgc3RyZWFtLmRlc3Ryb3llZCB8fFxuICAgIHN0cmVhbS5jbG9zZWQgfHxcbiAgICBzdHJlYW0ud3JpdGFibGVFbmRlZCB8fFxuICAgIHN0cmVhbS53cml0YWJsZUZpbmlzaGVkXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3Qgb25FcnJvciA9ICgpID0+IHJlc29sdmUoKTtcbiAgICBzdHJlYW0ub25jZSgnZXJyb3InLCBvbkVycm9yKTtcbiAgICB0cnkge1xuICAgICAgc3RyZWFtLndyaXRlKCcnLCAoKSA9PiB7XG4gICAgICAgIHN0cmVhbS5vZmYoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgc3RyZWFtLm9mZignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIGVuYWJsZUpzb25GbGFnID0gdHJ1ZTtcblxuICAvKipcbiAgICogQ2FsbGVkIGJ5IG9jbGlmIGFmdGVyIGBydW4oKWAgY29tcGxldGVzIChvciB0aHJvd3MpLlxuICAgKiBDbG9zZXMgdGhlIGNhY2hlZCBXb3JsZCBpbnN0YW5jZSBzbyB0aGUgcHJvY2VzcyBjYW4gZXhpdCBjbGVhbmx5XG4gICAqIHdpdGhvdXQgcmVseWluZyBvbiBgcHJvY2Vzcy5leGl0KClgLlxuICAgKi9cbiAgYXN5bmMgZmluYWxseShlcnI6IEVycm9yIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHdvcmxkID0gYXdhaXQgZ2V0V29ybGQoKTtcbiAgICAgIGF3YWl0IHdvcmxkLmNsb3NlPy4oKTtcbiAgICB9IGNhdGNoIChjbG9zZUVycikge1xuICAgICAgaWYgKCFpc01pc3NpbmdTdGF0aWNXb3JsZEluamVjdGlvbkVycm9yKGNsb3NlRXJyKSkge1xuICAgICAgICB0aGlzLndhcm4oXG4gICAgICAgICAgYEZhaWxlZCB0byBjbG9zZSB3b3JsZDogJHtjbG9zZUVyciBpbnN0YW5jZW9mIEVycm9yID8gY2xvc2VFcnIubWVzc2FnZSA6IFN0cmluZyhjbG9zZUVycil9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCBzdXBlci5maW5hbGx5KGVycik7XG4gICAgLy8gRm9yY2UgZXhpdC4gV29ybGQuY2xvc2UoKSBjbGVhbmVkIHVwIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGFuZCBIVFRQXG4gICAgLy8gYWdlbnRzLCBidXQgdGhpcmQtcGFydHkgbGlicmFyaWVzIChvY2xpZiB1cGRhdGUgY2hlY2tlciwgcG9zdGdyZXMuanMpXG4gICAgLy8gbWF5IGxlYXZlIHRpbWVycyBvciBzb2NrZXRzIHRoYXQgcHJldmVudCB0aGUgZXZlbnQgbG9vcCBmcm9tIGRyYWluaW5nLlxuICAgIC8vIFRoaXMgaXMgc2FmZSBiZWNhdXNlIGFsbCBidXNpbmVzcyBsb2dpYyBhbmQgY2xlYW51cCBoYXMgY29tcGxldGVkLlxuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIGZsdXNoU3RyZWFtKHByb2Nlc3Muc3Rkb3V0KSxcbiAgICAgIGZsdXNoU3RyZWFtKHByb2Nlc3Muc3RkZXJyKSxcbiAgICBdKTtcbiAgICBwcm9jZXNzLmV4aXQoZXJyID8gMSA6IChwcm9jZXNzLmV4aXRDb2RlID8/IDApKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsb2dJbmZvKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9nKG1lc3NhZ2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxvZ1dhcm4obWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53YXJuKG1lc3NhZ2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxvZ0Vycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cbiJdfQ==
@@ -74,4 +74,4 @@ export default class Build extends BaseCommand {
74
74
  }
75
75
  }
76
76
  }
77
- //# sourceMappingURL=build.js.map
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQiwyQkFBMkIsR0FDNUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBb0Isa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVyRSxNQUFNLENBQUMsT0FBTyxPQUFPLEtBQU0sU0FBUSxXQUFXO0lBQzVDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsdUNBQXVDLENBQUM7SUFFN0QsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixrQkFBa0I7UUFDbEIsbURBQW1EO1FBQ25ELDZCQUE2QjtLQUM5QixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ25CLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLGNBQWM7WUFDM0IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHlCQUF5QixDQUFDO1lBQ2xELE9BQU8sRUFBRSxZQUFZO1NBQ3RCLENBQUM7UUFDRixtQkFBbUIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2hDLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHVDQUF1QztZQUNwRCxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLElBQUksR0FBRztRQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2xCLFdBQVcsRUFBRSw4Q0FBOEM7WUFDM0QsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztLQUNILENBQUM7SUFFSyxLQUFLLENBQUMsR0FBRztRQUNkLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELGtFQUFrRTtRQUNsRSxJQUFJLFdBQVcsR0FBVyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUNWLGdGQUFnRixDQUNqRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQ0UsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1lBQzFCLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEVBQ3pELENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDZFQUE2RSxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUMxRyxDQUFDO1FBQ0osQ0FBQztRQUVELHdCQUF3QjtRQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsT0FBTyxDQUNWLG1CQUFtQixXQUFXLGdDQUFnQyxDQUMvRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBQ25FLFdBQVcsR0FBRyxZQUFZLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFN0MsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUM7WUFDL0IsV0FBVyxFQUFFLFdBQTBCO1lBQ3ZDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztTQUM3QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUM7WUFDSCxrQ0FBa0M7WUFDbEMsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlDLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLHlCQUF5QixFQUFFLENBQUM7Z0JBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDMUQsTUFBTSxPQUFPLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUNSLGlCQUNFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ3ZELEVBQUUsQ0FDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gJ0BvY2xpZi9jb3JlJztcbmltcG9ydCB7XG4gIFN0YW5kYWxvbmVCdWlsZGVyLFxuICBWZXJjZWxCdWlsZE91dHB1dEFQSUJ1aWxkZXIsXG59IGZyb20gJ0B3b3JrZmxvdy9idWlsZGVycyc7XG5pbXBvcnQgeyBCYXNlQ29tbWFuZCB9IGZyb20gJy4uL2Jhc2UuanMnO1xuaW1wb3J0IHsgdHlwZSBCdWlsZFRhcmdldCwgaXNWYWxpZEJ1aWxkVGFyZ2V0IH0gZnJvbSAnLi4vbGliL2NvbmZpZy90eXBlcy5qcyc7XG5pbXBvcnQgeyBnZXRXb3JrZmxvd0NvbmZpZyB9IGZyb20gJy4uL2xpYi9jb25maWcvd29ya2Zsb3ctY29uZmlnLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGQgZXh0ZW5kcyBCYXNlQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9ICdCdWlsZCB3b3JrZmxvdyBidW5kbGVzIGZvciBkZXBsb3ltZW50JztcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJyQgd29ya2Zsb3cgYnVpbGQnLFxuICAgICckIHdvcmtmbG93IGJ1aWxkIC0tdGFyZ2V0IHZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJyxcbiAgICAnJCB3b3JrZmxvdyBidWlsZCBzdGFuZGFsb25lJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgdGFyZ2V0OiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogJ3QnLFxuICAgICAgZGVzY3JpcHRpb246ICdidWlsZCB0YXJnZXQnLFxuICAgICAgb3B0aW9uczogWydzdGFuZGFsb25lJywgJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJ10sXG4gICAgICBkZWZhdWx0OiAnc3RhbmRhbG9uZScsXG4gICAgfSksXG4gICAgJ3dvcmtmbG93LW1hbmlmZXN0JzogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGNoYXI6ICdtJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnb3V0cHV0IGxvY2F0aW9uIGZvciB3b3JrZmxvdyBtYW5pZmVzdCcsXG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICB9KSxcbiAgfTtcblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICB0YXJnZXQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnYnVpbGQgdGFyZ2V0IChkZXByZWNhdGVkLCB1c2UgLS10YXJnZXQgZmxhZyknLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pLFxuICB9O1xuXG4gIHB1YmxpYyBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShCdWlsZCk7XG5cbiAgICAvLyBHZXQgYnVpbGQgdGFyZ2V0IGZyb20gZmxhZyBvciBhcmcgKHdpdGggZmxhZyB0YWtpbmcgcHJlY2VkZW5jZSlcbiAgICBsZXQgYnVpbGRUYXJnZXQ6IHN0cmluZyA9IGZsYWdzLnRhcmdldDtcbiAgICBpZiAoYXJncy50YXJnZXQgJiYgIWZsYWdzLnRhcmdldCkge1xuICAgICAgYnVpbGRUYXJnZXQgPSBhcmdzLnRhcmdldDtcbiAgICAgIHRoaXMubG9nV2FybihcbiAgICAgICAgJ1VzaW5nIHBvc2l0aW9uYWwgYXJndW1lbnQgZm9yIHRhcmdldCBpcyBkZXByZWNhdGVkLiBVc2UgLS10YXJnZXQgZmxhZyBpbnN0ZWFkLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZmxhZ3NbJ3dvcmtmbG93LW1hbmlmZXN0J10gJiZcbiAgICAgICFmbGFnc1snd29ya2Zsb3ctbWFuaWZlc3QnXS5tYXRjaCgvXFwuKGpzb258anN8Y2pzfG1qcykkLylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgLS13b3JrZmxvdy1tYW5pZmVzdCBwcm92aWRlZCwgbXVzdCBlbmQgaW4gLmpzb24gb3IgLmpzLiBSZWNlaXZlZDogJHtmbGFnc1snd29ya2Zsb3ctbWFuaWZlc3QnXX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGJ1aWxkIHRhcmdldFxuICAgIGlmICghaXNWYWxpZEJ1aWxkVGFyZ2V0KGJ1aWxkVGFyZ2V0KSkge1xuICAgICAgdGhpcy5sb2dXYXJuKFxuICAgICAgICBgSW52YWxpZCB0YXJnZXQgXCIke2J1aWxkVGFyZ2V0fVwiLiBVc2luZyBkZWZhdWx0IFwic3RhbmRhbG9uZVwiLmBcbiAgICAgICk7XG4gICAgICB0aGlzLmxvZ1dhcm4oJ1ZhbGlkIHRhcmdldHM6IHN0YW5kYWxvbmUsIHZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJyk7XG4gICAgICBidWlsZFRhcmdldCA9ICdzdGFuZGFsb25lJztcbiAgICB9XG5cbiAgICB0aGlzLmxvZ0luZm8oYFVzaW5nIHRhcmdldDogJHtidWlsZFRhcmdldH1gKTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IGdldFdvcmtmbG93Q29uZmlnKHtcbiAgICAgIGJ1aWxkVGFyZ2V0OiBidWlsZFRhcmdldCBhcyBCdWlsZFRhcmdldCxcbiAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IGZsYWdzWyd3b3JrZmxvdy1tYW5pZmVzdCddLFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEJ1aWxkIHVzaW5nIGFwcHJvcHJpYXRlIGJ1aWxkZXJcbiAgICAgIGlmIChjb25maWcuYnVpbGRUYXJnZXQgPT09ICdzdGFuZGFsb25lJykge1xuICAgICAgICB0aGlzLmxvZ0luZm8oJ0J1aWxkaW5nIHdpdGggU3RhbmRhbG9uZUJ1aWxkZXInKTtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBTdGFuZGFsb25lQnVpbGRlcihjb25maWcpO1xuICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbmZpZy5idWlsZFRhcmdldCA9PT0gJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJykge1xuICAgICAgICB0aGlzLmxvZ0luZm8oJ0J1aWxkaW5nIHdpdGggVmVyY2VsQnVpbGRPdXRwdXRBUElCdWlsZGVyJyk7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVmVyY2VsQnVpbGRPdXRwdXRBUElCdWlsZGVyKGNvbmZpZyk7XG4gICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXJyb3IoYFVua25vd24gYnVpbGQgdGFyZ2V0OiAke2NvbmZpZy5idWlsZFRhcmdldH1gKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2dJbmZvKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBgQnVpbGQgZmFpbGVkOiAke1xuICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKVxuICAgICAgICB9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../src/commands/cancel.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,WAAW,SAC4C;IAE9D,MAAM,CAAC,OAAO,WAAS;IAEvB,MAAM,CAAC,QAAQ,WAKb;IAEI,KAAK,CAAC,KAAK,EAAE,GAAG;IAOtB,MAAM,CAAC,IAAI;;MAKA;IAEX,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;MAgCV;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiGlC"}
1
+ {"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../src/commands/cancel.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAUzC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,WAAW,SAC4C;IAE9D,MAAM,CAAC,OAAO,WAAS;IAEvB,MAAM,CAAC,QAAQ,WAKb;IAEI,KAAK,CAAC,KAAK,EAAE,GAAG;IAUtB,MAAM,CAAC,IAAI;;MAKA;IAEX,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;MAgCV;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwIlC"}
@@ -2,12 +2,15 @@ import readline from 'node:readline';
2
2
  import { Args, Flags } from '@oclif/core';
3
3
  import { cancelRun } from '@workflow/core/runtime';
4
4
  import { parseWorkflowName } from '@workflow/utils/parse-name';
5
+ import { WorkflowRunStatusSchema } from '@workflow/world';
5
6
  import chalk from 'chalk';
6
7
  import Table from 'easy-table';
7
8
  import { BaseCommand } from '../base.js';
8
9
  import { LOGGING_CONFIG, logger } from '../lib/config/log.js';
10
+ import { getObservabilityUpgradeRequiredMessage, isObservabilityUpgradeRequiredError, } from '../lib/inspect/errors.js';
9
11
  import { cliFlags } from '../lib/inspect/flags.js';
10
12
  import { setupCliWorld } from '../lib/inspect/setup.js';
13
+ import { planWindowStartFromResponse } from '../lib/inspect/time-window.js';
11
14
  export default class Cancel extends BaseCommand {
12
15
  static description = 'Cancel a workflow run, or bulk-cancel runs by status/name';
13
16
  static aliases = ['c'];
@@ -18,7 +21,11 @@ export default class Cancel extends BaseCommand {
18
21
  '$ workflow cancel --status=running -y',
19
22
  ];
20
23
  async catch(error) {
21
- if (LOGGING_CONFIG.VERBOSE_MODE) {
24
+ if (isObservabilityUpgradeRequiredError(error)) {
25
+ logger.error(getObservabilityUpgradeRequiredMessage());
26
+ process.exit(1);
27
+ }
28
+ else if (LOGGING_CONFIG.VERBOSE_MODE) {
22
29
  console.error(error);
23
30
  }
24
31
  throw error;
@@ -34,7 +41,7 @@ export default class Cancel extends BaseCommand {
34
41
  status: Flags.string({
35
42
  description: 'Filter runs by status for bulk cancel',
36
43
  required: false,
37
- options: ['running', 'completed', 'failed', 'cancelled', 'pending'],
44
+ options: [...WorkflowRunStatusSchema.options],
38
45
  helpGroup: 'Bulk Cancel',
39
46
  helpLabel: '--status',
40
47
  }),
@@ -83,13 +90,52 @@ export default class Cancel extends BaseCommand {
83
90
  ' workflow cancel --status=running --workflowName=myWorkflow');
84
91
  process.exit(1);
85
92
  }
86
- // Fetch matching runs
87
- const runs = await world.runs.list({
88
- status: flags.status,
89
- workflowName: flags.workflowName,
90
- pagination: { limit: flags.limit || 50 },
91
- resolveData: 'none',
92
- });
93
+ // Fetch matching runs. Only metadata is needed to display and cancel, so
94
+ // prefer the analytics read path when the backend provides one.
95
+ const status = flags.status
96
+ ? WorkflowRunStatusSchema.parse(flags.status)
97
+ : undefined;
98
+ const limit = flags.limit || 50;
99
+ const analytics = world.analytics;
100
+ const fetchMatches = async () => {
101
+ if (!analytics) {
102
+ return world.runs.list({
103
+ status,
104
+ workflowName: flags.workflowName,
105
+ pagination: { limit },
106
+ resolveData: 'none',
107
+ });
108
+ }
109
+ // The analytics backend defaults its listing to a recent window
110
+ // (trailing 24h on the Vercel backend), but bulk cancel must match
111
+ // across the plan's whole observability window — a run can sleep or
112
+ // wait on a hook for days without emitting recent events. Probe for
113
+ // the plan window bounds first, then match across them.
114
+ const probe = await analytics.runs.list({
115
+ status,
116
+ workflowName: flags.workflowName,
117
+ pagination: { limit: 1 },
118
+ });
119
+ const windowStart = planWindowStartFromResponse(probe);
120
+ return analytics.runs.list({
121
+ status,
122
+ workflowName: flags.workflowName,
123
+ ...(windowStart
124
+ ? { startTime: windowStart, endTime: new Date().toISOString() }
125
+ : {}),
126
+ pagination: { limit },
127
+ });
128
+ };
129
+ const runList = await fetchMatches();
130
+ const runs = {
131
+ data: runList.data.map((run) => ({
132
+ runId: run.runId,
133
+ workflowName: run.workflowName,
134
+ status: run.status,
135
+ startedAt: run.startedAt,
136
+ })),
137
+ hasMore: runList.hasMore,
138
+ };
93
139
  if (runs.data.length === 0) {
94
140
  logger.warn('No matching runs found.');
95
141
  return;
@@ -151,4 +197,4 @@ async function promptConfirm(message) {
151
197
  });
152
198
  });
153
199
  }
154
- //# sourceMappingURL=cancel.js.map
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NhbmNlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFDTCxzQ0FBc0MsRUFDdEMsbUNBQW1DLEdBQ3BDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSxNQUFNLENBQUMsT0FBTyxPQUFPLE1BQU8sU0FBUSxXQUFXO0lBQzdDLE1BQU0sQ0FBQyxXQUFXLEdBQ2hCLDJEQUEyRCxDQUFDO0lBRTlELE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2QixNQUFNLENBQUMsUUFBUSxHQUFHO1FBQ2hCLDRCQUE0QjtRQUM1QixvQ0FBb0M7UUFDcEMsOERBQThEO1FBQzlELHVDQUF1QztLQUN4QyxDQUFDO0lBRUYsS0FBSyxD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S0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksT0FBTyxDQUFVLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDdEMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWFkbGluZSBmcm9tICdub2RlOnJlYWRsaW5lJztcbmltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSAnQG9jbGlmL2NvcmUnO1xuaW1wb3J0IHsgY2FuY2VsUnVuIH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvcnVudGltZSc7XG5pbXBvcnQgeyBwYXJzZVdvcmtmbG93TmFtZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmltcG9ydCB7IFdvcmtmbG93UnVuU3RhdHVzU2NoZW1hIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgVGFibGUgZnJvbSAnZWFzeS10YWJsZSc7XG5pbXBvcnQgeyBCYXNlQ29tbWFuZCB9IGZyb20gJy4uL2Jhc2UuanMnO1xuaW1wb3J0IHsgTE9HR0lOR19DT05GSUcsIGxvZ2dlciB9IGZyb20gJy4uL2xpYi9jb25maWcvbG9nLmpzJztcbmltcG9ydCB7XG4gIGdldE9ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRNZXNzYWdlLFxuICBpc09ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRFcnJvcixcbn0gZnJvbSAnLi4vbGliL2luc3BlY3QvZXJyb3JzLmpzJztcbmltcG9ydCB7IGNsaUZsYWdzIH0gZnJvbSAnLi4vbGliL2luc3BlY3QvZmxhZ3MuanMnO1xuaW1wb3J0IHsgc2V0dXBDbGlXb3JsZCB9IGZyb20gJy4uL2xpYi9pbnNwZWN0L3NldHVwLmpzJztcbmltcG9ydCB7IHBsYW5XaW5kb3dTdGFydEZyb21SZXNwb25zZSB9IGZyb20gJy4uL2xpYi9pbnNwZWN0L3RpbWUtd2luZG93LmpzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FuY2VsIGV4dGVuZHMgQmFzZUNvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgICdDYW5jZWwgYSB3b3JrZmxvdyBydW4sIG9yIGJ1bGstY2FuY2VsIHJ1bnMgYnkgc3RhdHVzL25hbWUnO1xuXG4gIHN0YXRpYyBhbGlhc2VzID0gWydjJ107XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICckIHdvcmtmbG93IGNhbmNlbCA8cnVuLWlkPicsXG4gICAgJyQgd29ya2Zsb3cgY2FuY2VsIC0tc3RhdHVzPXJ1bm5pbmcnLFxuICAgICckIHdvcmtmbG93IGNhbmNlbCAtLXN0YXR1cz1ydW5uaW5nIC0td29ya2Zsb3dOYW1lPW15V29ya2Zsb3cnLFxuICAgICckIHdvcmtmbG93IGNhbmNlbCAtLXN0YXR1cz1ydW5uaW5nIC15JyxcbiAgXTtcblxuICBhc3luYyBjYXRjaChlcnJvcjogYW55KSB7XG4gICAgaWYgKGlzT2JzZXJ2YWJpbGl0eVVwZ3JhZGVSZXF1aXJlZEVycm9yKGVycm9yKSkge1xuICAgICAgbG9nZ2VyLmVycm9yKGdldE9ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRNZXNzYWdlKCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0gZWxzZSBpZiAoTE9HR0lOR19DT05GSUcuVkVSQk9TRV9NT0RFKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICBydW5JZDogQXJncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246ICdJRCBvZiB0aGUgcnVuIHRvIGNhbmNlbCAob21pdCBmb3IgYnVsayBtb2RlIHdpdGggZmlsdGVycyknLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pLFxuICB9IGFzIGNvbnN0O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICAuLi5jbGlGbGFncyxcbiAgICBzdGF0dXM6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZpbHRlciBydW5zIGJ5IHN0YXR1cyBmb3IgYnVsayBjYW5jZWwnLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgb3B0aW9uczogWy4uLldvcmtmbG93UnVuU3RhdHVzU2NoZW1hLm9wdGlvbnNdLFxuICAgICAgaGVscEdyb3VwOiAnQnVsayBDYW5jZWwnLFxuICAgICAgaGVscExhYmVsOiAnLS1zdGF0dXMnLFxuICAgIH0pLFxuICAgIHdvcmtmbG93TmFtZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRmlsdGVyIHJ1bnMgYnkgd29ya2Zsb3cgbmFtZSBmb3IgYnVsayBjYW5jZWwnLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgY2hhcjogJ24nLFxuICAgICAgaGVscEdyb3VwOiAnQnVsayBDYW5jZWwnLFxuICAgICAgaGVscExhYmVsOiAnLW4sIC0td29ya2Zsb3dOYW1lJyxcbiAgICB9KSxcbiAgICBsaW1pdDogRmxhZ3MuaW50ZWdlcih7XG4gICAgICBkZXNjcmlwdGlvbjogJ01heCBydW5zIHRvIGNhbmNlbCBpbiBidWxrIG1vZGUnLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogNTAsXG4gICAgICBoZWxwR3JvdXA6ICdCdWxrIENhbmNlbCcsXG4gICAgICBoZWxwTGFiZWw6ICctLWxpbWl0JyxcbiAgICAgIGhlbHBWYWx1ZTogJ05VTUJFUicsXG4gICAgfSksXG4gICAgY29uZmlybTogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBkZXNjcmlwdGlvbjogJ1NraXAgaW50ZXJhY3RpdmUgY29uZmlybWF0aW9uIHByb21wdCcsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBjaGFyOiAneScsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIGhlbHBHcm91cDogJ0J1bGsgQ2FuY2VsJyxcbiAgICAgIGhlbHBMYWJlbDogJy15LCAtLWNvbmZpcm0nLFxuICAgIH0pLFxuICB9O1xuXG4gIHB1YmxpYyBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncywgYXJncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShDYW5jZWwpO1xuXG4gICAgY29uc3Qgd29ybGQgPSBhd2FpdCBzZXR1cENsaVdvcmxkKGZsYWdzLCB0aGlzLmNvbmZpZy52ZXJzaW9uKTtcbiAgICBpZiAoIXdvcmxkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdGYWlsZWQgdG8gY29ubmVjdCB0byBiYWNrZW5kLiBDaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24uJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTaW5nbGUtcnVuIGNhbmNlbCAoZXhpc3RpbmcgYmVoYXZpb3IpXG4gICAgaWYgKGFyZ3MucnVuSWQpIHtcbiAgICAgIGF3YWl0IGNhbmNlbFJ1bih3b3JsZCwgYXJncy5ydW5JZCk7XG4gICAgICBsb2dnZXIubG9nKGNoYWxrLmdyZWVuKGBDYW5jZWxsZWQgcnVuICR7YXJncy5ydW5JZH1gKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQnVsayBtb2RlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBmaWx0ZXJcbiAgICBpZiAoIWZsYWdzLnN0YXR1cyAmJiAhZmxhZ3Mud29ya2Zsb3dOYW1lKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICdQcm92aWRlIGEgcnVuIElEIG9yIHVzZSAtLXN0YXR1cy8tLXdvcmtmbG93TmFtZSB0byBidWxrIGNhbmNlbC5cXG4nICtcbiAgICAgICAgICAnRXhhbXBsZXM6XFxuJyArXG4gICAgICAgICAgJyAgd29ya2Zsb3cgY2FuY2VsIDxydW4taWQ+XFxuJyArXG4gICAgICAgICAgJyAgd29ya2Zsb3cgY2FuY2VsIC0tc3RhdHVzPXJ1bm5pbmdcXG4nICtcbiAgICAgICAgICAnICB3b3JrZmxvdyBjYW5jZWwgLS1zdGF0dXM9cnVubmluZyAtLXdvcmtmbG93TmFtZT1teVdvcmtmbG93J1xuICAgICAgKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICAvLyBGZXRjaCBtYXRjaGluZyBydW5zLiBPbmx5IG1ldGFkYXRhIGlzIG5lZWRlZCB0byBkaXNwbGF5IGFuZCBjYW5jZWwsIHNvXG4gICAgLy8gcHJlZmVyIHRoZSBhbmFseXRpY3MgcmVhZCBwYXRoIHdoZW4gdGhlIGJhY2tlbmQgcHJvdmlkZXMgb25lLlxuICAgIGNvbnN0IHN0YXR1cyA9IGZsYWdzLnN0YXR1c1xuICAgICAgPyBXb3JrZmxvd1J1blN0YXR1c1NjaGVtYS5wYXJzZShmbGFncy5zdGF0dXMpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsaW1pdCA9IGZsYWdzLmxpbWl0IHx8IDUwO1xuICAgIGNvbnN0IGFuYWx5dGljcyA9IHdvcmxkLmFuYWx5dGljcztcbiAgICBjb25zdCBmZXRjaE1hdGNoZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIWFuYWx5dGljcykge1xuICAgICAgICByZXR1cm4gd29ybGQucnVucy5saXN0KHtcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgd29ya2Zsb3dOYW1lOiBmbGFncy53b3JrZmxvd05hbWUsXG4gICAgICAgICAgcGFnaW5hdGlvbjogeyBsaW1pdCB9LFxuICAgICAgICAgIHJlc29sdmVEYXRhOiAnbm9uZScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gVGhlIGFuYWx5dGljcyBiYWNrZW5kIGRlZmF1bHRzIGl0cyBsaXN0aW5nIHRvIGEgcmVjZW50IHdpbmRvd1xuICAgICAgLy8gKHRyYWlsaW5nIDI0aCBvbiB0aGUgVmVyY2VsIGJhY2tlbmQpLCBidXQgYnVsayBjYW5jZWwgbXVzdCBtYXRjaFxuICAgICAgLy8gYWNyb3NzIHRoZSBwbGFuJ3Mgd2hvbGUgb2JzZXJ2YWJpbGl0eSB3aW5kb3cg4oCUIGEgcnVuIGNhbiBzbGVlcCBvclxuICAgICAgLy8gd2FpdCBvbiBhIGhvb2sgZm9yIGRheXMgd2l0aG91dCBlbWl0dGluZyByZWNlbnQgZXZlbnRzLiBQcm9iZSBmb3JcbiAgICAgIC8vIHRoZSBwbGFuIHdpbmRvdyBib3VuZHMgZmlyc3QsIHRoZW4gbWF0Y2ggYWNyb3NzIHRoZW0uXG4gICAgICBjb25zdCBwcm9iZSA9IGF3YWl0IGFuYWx5dGljcy5ydW5zLmxpc3Qoe1xuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHdvcmtmbG93TmFtZTogZmxhZ3Mud29ya2Zsb3dOYW1lLFxuICAgICAgICBwYWdpbmF0aW9uOiB7IGxpbWl0OiAxIH0sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHdpbmRvd1N0YXJ0ID0gcGxhbldpbmRvd1N0YXJ0RnJvbVJlc3BvbnNlKHByb2JlKTtcbiAgICAgIHJldHVybiBhbmFseXRpY3MucnVucy5saXN0KHtcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICB3b3JrZmxvd05hbWU6IGZsYWdzLndvcmtmbG93TmFtZSxcbiAgICAgICAgLi4uKHdpbmRvd1N0YXJ0XG4gICAgICAgICAgPyB7IHN0YXJ0VGltZTogd2luZG93U3RhcnQsIGVuZFRpbWU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIHBhZ2luYXRpb246IHsgbGltaXQgfSxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgY29uc3QgcnVuTGlzdCA9IGF3YWl0IGZldGNoTWF0Y2hlcygpO1xuICAgIGNvbnN0IHJ1bnMgPSB7XG4gICAgICBkYXRhOiBydW5MaXN0LmRhdGEubWFwKChydW4pID0+ICh7XG4gICAgICAgIHJ1bklkOiBydW4ucnVuSWQsXG4gICAgICAgIHdvcmtmbG93TmFtZTogcnVuLndvcmtmbG93TmFtZSxcbiAgICAgICAgc3RhdHVzOiBydW4uc3RhdHVzLFxuICAgICAgICBzdGFydGVkQXQ6IHJ1bi5zdGFydGVkQXQsXG4gICAgICB9KSksXG4gICAgICBoYXNNb3JlOiBydW5MaXN0Lmhhc01vcmUsXG4gICAgfTtcblxuICAgIGlmIChydW5zLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICBsb2dnZXIud2FybignTm8gbWF0Y2hpbmcgcnVucyBmb3VuZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEaXNwbGF5IHdoYXQgd2lsbCBiZSBjYW5jZWxsZWRcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZSgpO1xuICAgIGZvciAoY29uc3QgcnVuIG9mIHJ1bnMuZGF0YSkge1xuICAgICAgY29uc3Qgc2hvcnROYW1lID1cbiAgICAgICAgcGFyc2VXb3JrZmxvd05hbWUocnVuLndvcmtmbG93TmFtZSk/LnNob3J0TmFtZSB8fCBydW4ud29ya2Zsb3dOYW1lO1xuICAgICAgdGFibGUuY2VsbCgncnVuSWQnLCBydW4ucnVuSWQpO1xuICAgICAgdGFibGUuY2VsbCgnd29ya2Zsb3cnLCBjaGFsay5ibHVlQnJpZ2h0KHNob3J0TmFtZSkpO1xuICAgICAgdGFibGUuY2VsbCgnc3RhdHVzJywgcnVuLnN0YXR1cyk7XG4gICAgICB0YWJsZS5jZWxsKFxuICAgICAgICAnc3RhcnRlZEF0JyxcbiAgICAgICAgcnVuLnN0YXJ0ZWRBdCA/IG5ldyBEYXRlKHJ1bi5zdGFydGVkQXQpLnRvSVNPU3RyaW5nKCkgOiAnLSdcbiAgICAgICk7XG4gICAgICB0YWJsZS5uZXdSb3coKTtcbiAgICB9XG4gICAgbG9nZ2VyLmxvZyhgXFxuRm91bmQgJHtjaGFsay5ib2xkKHJ1bnMuZGF0YS5sZW5ndGgpfSBydW5zIHRvIGNhbmNlbDpcXG5gKTtcbiAgICBsb2dnZXIubG9nKHRhYmxlLnRvU3RyaW5nKCkpO1xuXG4gICAgaWYgKHJ1bnMuaGFzTW9yZSkge1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgIGBNb3JlIHJ1bnMgbWF0Y2ggdGhlc2UgZmlsdGVycy4gSW5jcmVhc2UgLS1saW1pdCAoY3VycmVudGx5ICR7ZmxhZ3MubGltaXQgfHwgNTB9KSBvciByZS1ydW4gdG8gY2FuY2VsIGFkZGl0aW9uYWwgcnVucy5gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENvbmZpcm0gdW5sZXNzIC0tY29uZmlybS8teVxuICAgIGlmICghZmxhZ3MuY29uZmlybSkge1xuICAgICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgcHJvbXB0Q29uZmlybShcbiAgICAgICAgYENhbmNlbCAke3J1bnMuZGF0YS5sZW5ndGh9IHJ1biR7cnVucy5kYXRhLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfT9gXG4gICAgICApO1xuICAgICAgaWYgKCFjb25maXJtZWQpIHtcbiAgICAgICAgbG9nZ2VyLmxvZygnQWJvcnRlZC4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENhbmNlbCBlYWNoIHJ1biB3aXRoIHByb2dyZXNzXG4gICAgbGV0IGNhbmNlbGxlZCA9IDA7XG4gICAgbGV0IGZhaWxlZCA9IDA7XG4gICAgZm9yIChjb25zdCBydW4gb2YgcnVucy5kYXRhKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBjYW5jZWxSdW4od29ybGQsIHJ1bi5ydW5JZCk7XG4gICAgICAgIGNhbmNlbGxlZCsrO1xuICAgICAgICBsb2dnZXIubG9nKFxuICAgICAgICAgIGNoYWxrLmdyZWVuKGAgIOKckyAke3J1bi5ydW5JZH1gKSArXG4gICAgICAgICAgICBjaGFsay5ncmF5KGAgKCR7Y2FuY2VsbGVkfS8ke3J1bnMuZGF0YS5sZW5ndGh9KWApXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICBmYWlsZWQrKztcbiAgICAgICAgbG9nZ2VyLndhcm4oYCAg4pyXICR7cnVuLnJ1bklkfTogJHtlcnIubWVzc2FnZSB8fCBTdHJpbmcoZXJyKX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2dnZXIubG9nKFxuICAgICAgYFxcbkRvbmU6ICR7Y2hhbGsuZ3JlZW4oYCR7Y2FuY2VsbGVkfSBjYW5jZWxsZWRgKX0ke2ZhaWxlZCA+IDAgPyBgLCAke2NoYWxrLnJlZChgJHtmYWlsZWR9IGZhaWxlZGApfWAgOiAnJ31gXG4gICAgKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBwcm9tcHRDb25maXJtKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAvLyBOb24tVFRZOiBhYm9ydCBzaW5jZSB1c2VyIGNhbm5vdCBjb25maXJtIGludGVyYWN0aXZlbHkgKHVzZSAteS8tLWNvbmZpcm0gdG8gc2tpcCBwcm9tcHQpXG4gIGlmICghcHJvY2Vzcy5zdGRpbi5pc1RUWSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICB9KTtcblxuICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUpID0+IHtcbiAgICBybC5xdWVzdGlvbihgJHttZXNzYWdlfSBbeS9OXSBgLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgcmVzb2x2ZShhbnN3ZXIudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09ICd5Jyk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19
@@ -31,4 +31,4 @@ export default class Dev extends BaseCommand {
31
31
  this.logInfo('For now, use: workflow build --target <target>');
32
32
  }
33
33
  }
34
- //# sourceMappingURL=dev.js.map
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Rldi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsTUFBTSxDQUFDLE9BQU8sT0FBTyxHQUFJLFNBQVEsV0FBVztJQUMxQyxNQUFNLENBQUMsV0FBVyxHQUNoQiwyREFBMkQsQ0FBQztJQUU5RCxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztJQUVuRSxNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2IsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxXQUFXLEVBQUUsMkJBQTJCO1lBQ3hDLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQUNGLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ25CLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLDhCQUE4QjtZQUMzQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUseUJBQXlCLENBQUM7WUFDbEQsT0FBTyxFQUFFLFlBQVk7U0FDdEIsQ0FBQztLQUNILENBQUM7SUFFSyxLQUFLLENBQUMsR0FBRztRQUNkLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYWdzIH0gZnJvbSAnQG9jbGlmL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUNvbW1hbmQgfSBmcm9tICcuLi9iYXNlLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGV2IGV4dGVuZHMgQmFzZUNvbW1hbmQge1xuICBzdGF0aWMgZGVzY3JpcHRpb24gPVxuICAgICdTdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIgd2l0aCBmaWxlIHdhdGNoaW5nIChDb21pbmcgc29vbiknO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFsnJCB3b3JrZmxvdyBkZXYnLCAnJCB3b3JrZmxvdyBkZXYgLS1wb3J0IDMwMDEnXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgcG9ydDogRmxhZ3MuaW50ZWdlcih7XG4gICAgICBjaGFyOiAncCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ3BvcnQgdG8gcnVuIGRldiBzZXJ2ZXIgb24nLFxuICAgICAgZGVmYXVsdDogMzAwMCxcbiAgICB9KSxcbiAgICB0YXJnZXQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBjaGFyOiAndCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ2J1aWxkIHRhcmdldCBmb3IgZGV2ZWxvcG1lbnQnLFxuICAgICAgb3B0aW9uczogWydzdGFuZGFsb25lJywgJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJ10sXG4gICAgICBkZWZhdWx0OiAnc3RhbmRhbG9uZScsXG4gICAgfSksXG4gIH07XG5cbiAgcHVibGljIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGZsYWdzIH0gPSBhd2FpdCB0aGlzLnBhcnNlKERldik7XG5cbiAgICB0aGlzLmxvZ0luZm8oJ/CfmqcgRGV2ZWxvcG1lbnQgc2VydmVyIGlzIGNvbWluZyBzb29uIScpO1xuICAgIHRoaXMubG9nSW5mbygnJyk7XG4gICAgdGhpcy5sb2dJbmZvKCdUaGlzIGNvbW1hbmQgd2lsbCBwcm92aWRlOicpO1xuICAgIHRoaXMubG9nSW5mbygn4oCiIEZpbGUgd2F0Y2hpbmcnKTtcbiAgICB0aGlzLmxvZ0luZm8oJ+KAoiBEZXZlbG9wbWVudCBzZXJ2ZXIgZm9yIGxvY2FsIHdvcmtmbG93cycpO1xuICAgIHRoaXMubG9nSW5mbygn4oCiIEJldHRlciBlcnJvciBtZXNzYWdlcyBhbmQgZGVidWdnaW5nJyk7XG4gICAgdGhpcy5sb2dJbmZvKCcnKTtcbiAgICB0aGlzLmxvZ0luZm8oYENvbmZpZ3VyZWQgdG8gcnVuIG9uIHBvcnQ6ICR7ZmxhZ3MucG9ydH1gKTtcbiAgICB0aGlzLmxvZ0luZm8oYEJ1aWxkIHRhcmdldDogJHtmbGFncy50YXJnZXR9YCk7XG4gICAgdGhpcy5sb2dJbmZvKCcnKTtcbiAgICB0aGlzLmxvZ0luZm8oJ0ZvciBub3csIHVzZTogd29ya2Zsb3cgYnVpbGQgLS10YXJnZXQgPHRhcmdldD4nKTtcbiAgfVxufVxuIl19
@@ -307,4 +307,4 @@ function handleHealthCheckError(error) {
307
307
  }
308
308
  process.exit(1);
309
309
  }
310
- //# sourceMappingURL=health.js.map
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhbHRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2hlYWx0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFpQnhELFNBQVMsbUJBQW1CLENBQUMsUUFBZ0IsRUFBRSxTQUFpQjtJQUM5RCxPQUFPLENBQ0wsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLFFBQVEsc0JBQXNCLENBQUM7UUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsS0FBSyxDQUFDLENBQ2hDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxRQUFnQixFQUFFLEtBQWM7SUFDN0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLFFBQVEsd0JBQXdCLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDMUUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsWUFBb0I7SUFDL0MsT0FBTyxZQUFZLEtBQUssTUFBTTtRQUM1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QUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhZ3MgfSBmcm9tICdAb2NsaWYvY29yZSc7XG5pbXBvcnQgeyBWRVJDRUxfNDAzX0VSUk9SX01FU1NBR0UgfSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7IGdldFdvcmtmbG93UG9ydCB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9nZXQtcG9ydCc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgQmFzZUNvbW1hbmQgfSBmcm9tICcuLi9iYXNlLmpzJztcbmltcG9ydCB7IExPR0dJTkdfQ09ORklHLCBsb2dnZXIgfSBmcm9tICcuLi9saWIvY29uZmlnL2xvZy5qcyc7XG5pbXBvcnQgeyBjbGlGbGFncyB9IGZyb20gJy4uL2xpYi9pbnNwZWN0L2ZsYWdzLmpzJztcbmltcG9ydCB7IHNldHVwQ2xpV29ybGQgfSBmcm9tICcuLi9saWIvaW5zcGVjdC9zZXR1cC5qcyc7XG5cbnR5cGUgSGVhbHRoQ2hlY2tFbmRwb2ludCA9ICd3b3JrZmxvdycgfCAnc3RlcCc7XG5cbmludGVyZmFjZSBIZWFsdGhDaGVja1Jlc3VsdCB7XG4gIGhlYWx0aHk6IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nO1xuICBsYXRlbmN5TXM/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBFbmRwb2ludEhlYWx0aFJlc3VsdCB7XG4gIGVuZHBvaW50OiBIZWFsdGhDaGVja0VuZHBvaW50O1xuICBoZWFsdGh5OiBib29sZWFuO1xuICBlcnJvcj86IHN0cmluZztcbiAgbGF0ZW5jeU1zPzogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRIZWFsdGh5UmVzdWx0KGVuZHBvaW50OiBzdHJpbmcsIGxhdGVuY3lNczogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIChcbiAgICBjaGFsay5ncmVlbihgICDinJMgJHtlbmRwb2ludH0gZW5kcG9pbnQgaXMgaGVhbHRoeWApICtcbiAgICBjaGFsay5ncmF5KGAgKCR7bGF0ZW5jeU1zfW1zKWApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVuaGVhbHRoeVJlc3VsdChlbmRwb2ludDogc3RyaW5nLCBlcnJvcj86IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGVycm9yU3VmZml4ID0gZXJyb3IgPyBjaGFsay5ncmF5KGAgLSAke2Vycm9yfWApIDogJyc7XG4gIHJldHVybiBjaGFsay5yZWQoYCAg4pyXICR7ZW5kcG9pbnR9IGVuZHBvaW50IGlzIHVuaGVhbHRoeWApICsgZXJyb3JTdWZmaXg7XG59XG5cbmZ1bmN0aW9uIGdldEVuZHBvaW50c1RvQ2hlY2soZW5kcG9pbnRGbGFnOiBzdHJpbmcpOiBIZWFsdGhDaGVja0VuZHBvaW50W10ge1xuICByZXR1cm4gZW5kcG9pbnRGbGFnID09PSAnYm90aCdcbiAgICA/IFsnd29ya2Zsb3cnLCAnc3RlcCddXG4gICAgOiBbZW5kcG9pbnRGbGFnIGFzIEhlYWx0aENoZWNrRW5kcG9pbnRdO1xufVxuXG5mdW5jdGlvbiBwcmludFN1bW1hcnkocmVzdWx0czogRW5kcG9pbnRIZWFsdGhSZXN1bHRbXSwgYmFja2VuZDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGFsbEhlYWx0aHkgPSByZXN1bHRzLmV2ZXJ5KChyKSA9PiByLmhlYWx0aHkpO1xuICBsb2dnZXIubG9nKCcnKTtcbiAgaWYgKGFsbEhlYWx0aHkpIHtcbiAgICBsb2dnZXIubG9nKGNoYWxrLmdyZWVuKCdBbGwgZW5kcG9pbnRzIGFyZSBoZWFsdGh5IScpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB1bmhlYWx0aHlDb3VudCA9IHJlc3VsdHMuZmlsdGVyKChyKSA9PiAhci5oZWFsdGh5KS5sZW5ndGg7XG4gICAgbG9nZ2VyLmxvZyhcbiAgICAgIGNoYWxrLnJlZChgJHt1bmhlYWx0aHlDb3VudH0gb2YgJHtyZXN1bHRzLmxlbmd0aH0gZW5kcG9pbnQocykgdW5oZWFsdGh5YClcbiAgICApO1xuICAgIC8vIFByb3ZpZGUgaGVscGZ1bCBoaW50cyBmb3IgY29tbW9uIGlzc3Vlc1xuICAgIGlmIChiYWNrZW5kID09PSAnbG9jYWwnIHx8IGJhY2tlbmQgPT09ICdAd29ya2Zsb3cvd29ybGQtbG9jYWwnKSB7XG4gICAgICBsb2dnZXIubG9nKCcnKTtcbiAgICAgIGxvZ2dlci5sb2coY2hhbGsueWVsbG93KCdIaW50OiBGb3IgbG9jYWwgaGVhbHRoIGNoZWNrcywgZW5zdXJlOicpKTtcbiAgICAgIGxvZ2dlci5sb2coY2hhbGsueWVsbG93KCcgIDEuIFlvdXIgZGV2ZWxvcG1lbnQgc2VydmVyIGlzIHJ1bm5pbmcnKSk7XG4gICAgICBsb2dnZXIubG9nKFxuICAgICAgICBjaGFsay55ZWxsb3coJyAgMi4gVGhlIHNlcnZlciBpcyBhY2Nlc3NpYmxlIGF0IHRoZSBjb25maWd1cmVkIFVSTCcpXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBsb2dQb3J0RGV0ZWN0aW9uRGVidWcoXG4gIGV4cGxpY2l0UG9ydDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBkZXRlY3RlZFBvcnQ6IG51bWJlciB8IHVuZGVmaW5lZFxuKTogdm9pZCB7XG4gIGxvZ2dlci5kZWJ1ZyhgRXhwbGljaXQgcG9ydCBmbGFnOiAke2V4cGxpY2l0UG9ydCB8fCAnKG5vdCBzZXQpJ31gKTtcbiAgbG9nZ2VyLmRlYnVnKGBQT1JUIGVudjogJHtwcm9jZXNzLmVudi5QT1JUIHx8ICcobm90IHNldCknfWApO1xuICBsb2dnZXIuZGVidWcoXG4gICAgYFdPUktGTE9XX0xPQ0FMX0JBU0VfVVJMIGVudjogJHtwcm9jZXNzLmVudi5XT1JLRkxPV19MT0NBTF9CQVNFX1VSTCB8fCAnKG5vdCBzZXQpJ31gXG4gICk7XG4gIGxvZ2dlci5kZWJ1ZyhgRGV0ZWN0ZWQvcmVzb2x2ZWQgcG9ydDogJHtkZXRlY3RlZFBvcnQgfHwgJyhub25lKSd9YCk7XG59XG5cbi8vIERlZmF1bHQgcG9ydCBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQgc2VydmVyc1xuY29uc3QgREVGQVVMVF9MT0NBTF9QT1JUID0gMzAwMDtcblxuZnVuY3Rpb24gcmVzb2x2ZUxvY2FsQmFzZVVybChcbiAgZXhwbGljaXRQb3J0OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGRldGVjdGVkUG9ydDogbnVtYmVyIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcge1xuICBpZiAoZXhwbGljaXRQb3J0KSB7XG4gICAgcmV0dXJuIGBodHRwOi8vbG9jYWxob3N0OiR7ZXhwbGljaXRQb3J0fWA7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5QT1JUKSB7XG4gICAgcmV0dXJuIGBodHRwOi8vbG9jYWxob3N0OiR7cHJvY2Vzcy5lbnYuUE9SVH1gO1xuICB9XG4gIGlmIChkZXRlY3RlZFBvcnQpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtkZXRlY3RlZFBvcnR9YDtcbiAgfVxuICAvLyBGYWxsIGJhY2sgdG8gZGVmYXVsdCBwb3J0IDMwMDAgKGNvbW1vbiBmb3IgTmV4dC5qcywgTnV4dCwgZXRjLilcbiAgcmV0dXJuIGBodHRwOi8vbG9jYWxob3N0OiR7REVGQVVMVF9MT0NBTF9QT1JUfWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRlc3RIdHRwSGVhbHRoRW5kcG9pbnQoXG4gIGJhc2VVcmw6IHN0cmluZyxcbiAgZW5kcG9pbnQ6ICdmbG93JyB8ICdzdGVwJyxcbiAgdmVyYm9zZTogYm9vbGVhblxuKTogUHJvbWlzZTx7IG9rOiBib29sZWFuOyBzdGF0dXM/OiBudW1iZXI7IGVycm9yPzogc3RyaW5nIH0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBoZWFsdGhVcmwgPSBgJHtiYXNlVXJsfS8ud2VsbC1rbm93bi93b3JrZmxvdy92MS8ke2VuZHBvaW50fT9fX2hlYWx0aGA7XG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgVGVzdGluZyBIVFRQIGhlYWx0aCBhdDogJHtoZWFsdGhVcmx9YCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goaGVhbHRoVXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCg1MDAwKSxcbiAgICB9KTtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyB9O1xuICAgIH1cbiAgICBpZiAodmVyYm9zZSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBIVFRQIGhlYWx0aCBjaGVjayByZXR1cm5lZCBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIH1cbiAgICByZXR1cm4geyBvazogZmFsc2UsIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcbiAgICBpZiAodmVyYm9zZSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBIVFRQIGhlYWx0aCBjaGVjayBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfWApO1xuICAgIH1cbiAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiBlcnJvck1lc3NhZ2UgfTtcbiAgfVxufVxuXG4vKipcbiAqIEZvciBsb2NhbCBiYWNrZW5kLCB2ZXJpZnkgdGhlIHNlcnZlciBpcyBhY2Nlc3NpYmxlIGJlZm9yZSBhdHRlbXB0aW5nIGhlYWx0aCBjaGVjay5cbiAqIFJldHVybnMgdGhlIGJhc2UgVVJMIGlmIGFjY2Vzc2libGUsIG9yIHRocm93cyBhbiBlcnJvciB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlLlxuICovXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlMb2NhbFNlcnZlckFjY2Vzc2libGUoXG4gIHZlcmJvc2U6IGJvb2xlYW4sXG4gIGV4cGxpY2l0UG9ydD86IG51bWJlclxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZGV0ZWN0ZWRQb3J0ID0gZXhwbGljaXRQb3J0ID8/IChhd2FpdCBnZXRXb3JrZmxvd1BvcnQoKSk7XG5cbiAgaWYgKHZlcmJvc2UpIHtcbiAgICBsb2dQb3J0RGV0ZWN0aW9uRGVidWcoZXhwbGljaXRQb3J0LCBkZXRlY3RlZFBvcnQpO1xuICB9XG5cbiAgY29uc3QgYmFzZVVybCA9IHJlc29sdmVMb2NhbEJhc2VVcmwoZXhwbGljaXRQb3J0LCBkZXRlY3RlZFBvcnQpO1xuXG4gIGlmICh2ZXJib3NlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBSZXNvbHZlZCBiYXNlIFVSTDogJHtiYXNlVXJsfWApO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGVzdEh0dHBIZWFsdGhFbmRwb2ludChiYXNlVXJsLCAnZmxvdycsIHZlcmJvc2UpO1xuICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgcmV0dXJuIGJhc2VVcmw7XG4gIH1cblxuICBjb25zdCBwb3J0SGludCA9XG4gICAgYmFzZVVybCA9PT0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtERUZBVUxUX0xPQ0FMX1BPUlR9YFxuICAgICAgPyAnSWYgeW91ciBzZXJ2ZXIgcnVucyBvbiBhIGRpZmZlcmVudCBwb3J0LCB1c2UgLS1wb3J0IDxwb3J0PiBvciBzZXQgV09SS0ZMT1dfTE9DQUxfQkFTRV9VUkwnXG4gICAgICA6IGBIaW50OiBVc2UgLS1wb3J0IDxwb3J0PiBvciBzZXQgV09SS0ZMT1dfTE9DQUxfQkFTRV9VUkw9aHR0cDovL2xvY2FsaG9zdDo8cG9ydD5gO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYENhbm5vdCByZWFjaCBsb2NhbCBzZXJ2ZXIgYXQgJHtiYXNlVXJsfS4gTWFrZSBzdXJlIHlvdXIgZGV2ZWxvcG1lbnQgc2VydmVyIGlzIHJ1bm5pbmcuXFxuYCArXG4gICAgICBwb3J0SGludFxuICApO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsQmFja2VuZChiYWNrZW5kOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGJhY2tlbmQgPT09ICdsb2NhbCcgfHwgYmFja2VuZCA9PT0gJ0B3b3JrZmxvdy93b3JsZC1sb2NhbCc7XG59XG5cbmZ1bmN0aW9uIGxvZ1dvcmxkQ29uZmlnKCk6IHZvaWQge1xuICBsb2dnZXIuZGVidWcoXG4gICAgYERhdGEgZGlyZWN0b3J5OiAke3Byb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0RBVEFfRElSIHx8ICcobm90IHNldCknfWBcbiAgKTtcbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGBCYXNlIFVSTDogJHtwcm9jZXNzLmVudi5XT1JLRkxPV19MT0NBTF9CQVNFX1VSTCB8fCAnKG5vdCBzZXQpJ31gXG4gICk7XG4gIGxvZ2dlci5kZWJ1ZyhgUE9SVDogJHtwcm9jZXNzLmVudi5QT1JUIHx8ICcobm90IHNldCknfWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBydW5IZWFsdGhDaGVja1dpdGhMb2dnaW5nKFxuICBoZWFsdGhDaGVjazogKFxuICAgIHdvcmxkOiBhbnksXG4gICAgZW5kcG9pbnQ6IEhlYWx0aENoZWNrRW5kcG9pbnQsXG4gICAgb3B0aW9uczogeyB0aW1lb3V0OiBudW1iZXIgfVxuICApID0+IFByb21pc2U8SGVhbHRoQ2hlY2tSZXN1bHQ+LFxuICB3b3JsZDogYW55LFxuICBlbmRwb2ludDogSGVhbHRoQ2hlY2tFbmRwb2ludCxcbiAgdGltZW91dDogbnVtYmVyLFxuICB2ZXJib3NlOiBib29sZWFuXG4pOiBQcm9taXNlPEhlYWx0aENoZWNrUmVzdWx0PiB7XG4gIHRyeSB7XG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgU3RhcnRpbmcgaGVhbHRoIGNoZWNrIGZvciAke2VuZHBvaW50fS4uLmApO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoZWFsdGhDaGVjayh3b3JsZCwgZW5kcG9pbnQsIHsgdGltZW91dCB9KTtcbiAgICBpZiAodmVyYm9zZSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICBgSGVhbHRoIGNoZWNrIGZvciAke2VuZHBvaW50fSBjb21wbGV0ZWQ6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX1gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICBpZiAodmVyYm9zZSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBIZWFsdGggY2hlY2sgZm9yICR7ZW5kcG9pbnR9IHRocmV3OiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWx0aHk6IGZhbHNlLFxuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZSB8fCAnVW5rbm93biBlcnJvciBkdXJpbmcgaGVhbHRoIGNoZWNrJyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhlYWx0aCBleHRlbmRzIEJhc2VDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICAnQ2hlY2sgaGVhbHRoIG9mIHdvcmtmbG93IGFuZCBzdGVwIGVuZHBvaW50cyB2aWEgcXVldWUtYmFzZWQgaGVhbHRoIGNoZWNrJztcblxuICBzdGF0aWMgZXhhbXBsZXMgPSBbXG4gICAgJyQgd29ya2Zsb3cgaGVhbHRoJyxcbiAgICAnJCB3b3JrZmxvdyBoZWFsdGggLS1lbmRwb2ludCB3b3JrZmxvdycsXG4gICAgJyQgd29ya2Zsb3cgaGVhbHRoIC0tZW5kcG9pbnQgc3RlcCAtLXRpbWVvdXQgNjAwMDAnLFxuICAgICckIHdvcmtmbG93IGhlYWx0aCAtLWJhY2tlbmQgdmVyY2VsIC0tcHJvamVjdCBteS1wcm9qZWN0IC0tdGVhbSBteS10ZWFtJyxcbiAgXTtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgZW5kcG9pbnQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogJ1doaWNoIGVuZHBvaW50KHMpIHRvIGNoZWNrJyxcbiAgICAgIG9wdGlvbnM6IFsnd29ya2Zsb3cnLCAnc3RlcCcsICdib3RoJ10sXG4gICAgICBkZWZhdWx0OiAnYm90aCcsXG4gICAgICBoZWxwR3JvdXA6ICdIZWFsdGggQ2hlY2snLFxuICAgICAgaGVscExhYmVsOiAnLS1lbmRwb2ludCcsXG4gICAgICBoZWxwVmFsdWU6IFsnd29ya2Zsb3cnLCAnc3RlcCcsICdib3RoJ10sXG4gICAgfSksXG4gICAgdGltZW91dDogRmxhZ3MuaW50ZWdlcih7XG4gICAgICBjaGFyOiAndCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBoZWFsdGggY2hlY2snLFxuICAgICAgZGVmYXVsdDogMzAwMDAsXG4gICAgICBoZWxwR3JvdXA6ICdIZWFsdGggQ2hlY2snLFxuICAgICAgaGVscExhYmVsOiAnLXQsIC0tdGltZW91dCcsXG4gICAgICBoZWxwVmFsdWU6ICdNUycsXG4gICAgfSksXG4gICAgcG9ydDogRmxhZ3MuaW50ZWdlcih7XG4gICAgICBjaGFyOiAncCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2FsIHNlcnZlciBwb3J0IChmb3IgbG9jYWwgYmFja2VuZCknLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscEdyb3VwOiAnSGVhbHRoIENoZWNrJyxcbiAgICAgIGhlbHBMYWJlbDogJy1wLCAtLXBvcnQnLFxuICAgICAgaGVscFZhbHVlOiAnUE9SVCcsXG4gICAgfSksXG4gICAgLy8gSW5jbHVkZSByZWxldmFudCBmbGFncyBmcm9tIGNsaUZsYWdzIChleGNsdWRpbmcgb25lcyBub3QgcmVsZXZhbnQgdG8gaGVhbHRoIGNoZWNrKVxuICAgIHZlcmJvc2U6IGNsaUZsYWdzLnZlcmJvc2UsXG4gICAganNvbjogY2xpRmxhZ3MuanNvbixcbiAgICBiYWNrZW5kOiBjbGlGbGFncy5iYWNrZW5kLFxuICAgIGF1dGhUb2tlbjogY2xpRmxhZ3MuYXV0aFRva2VuLFxuICAgIHByb2plY3Q6IGNsaUZsYWdzLnByb2plY3QsXG4gICAgdGVhbTogY2xpRmxhZ3MudGVhbSxcbiAgICBlbnY6IGNsaUZsYWdzLmVudixcbiAgfSBhcyBjb25zdDtcblxuICBhc3luYyBjYXRjaChlcnJvcjogYW55KSB7XG4gICAgaGFuZGxlSGVhbHRoQ2hlY2tFcnJvcihlcnJvcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoSGVhbHRoKTtcblxuICAgIC8vIEZvciBsb2NhbCBiYWNrZW5kLCBzZXQgdXAgcG9ydCBjb25maWd1cmF0aW9uIGVhcmx5XG4gICAgaWYgKGlzTG9jYWxCYWNrZW5kKGZsYWdzLmJhY2tlbmQpKSB7XG4gICAgICAvLyBJZiB1c2VyIHNwZWNpZmllcyBhIHBvcnQsIHNldCB0aGUgZW52IHZhciBzbyB0aGUgV29ybGQgdXNlcyBpdFxuICAgICAgaWYgKGZsYWdzLnBvcnQpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfTE9DQUxfQkFTRV9VUkwgPSBgaHR0cDovL2xvY2FsaG9zdDoke2ZsYWdzLnBvcnR9YDtcbiAgICAgIH1cbiAgICAgIC8vIFNldCBkZWZhdWx0IFdPUktGTE9XX0xPQ0FMX0JBU0VfVVJMIGlmIG5vdCBhbHJlYWR5IHNldFxuICAgICAgLy8gV2UgdXNlIFdPUktGTE9XX0xPQ0FMX0JBU0VfVVJMIGluc3RlYWQgb2YgUE9SVCB0byBhdm9pZCBjb25mbGljdHNcbiAgICAgIC8vIHdpdGggb3RoZXIgdG9vbHMgKGxpa2UgTmV4dC5qcykgdGhhdCBhbHNvIHVzZSB0aGUgUE9SVCBlbnYgdmFyXG4gICAgICBpZiAoIXByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMICYmICFwcm9jZXNzLmVudi5QT1JUKSB7XG4gICAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX0xPQ0FMX0JBU0VfVVJMID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtERUZBVUxUX0xPQ0FMX1BPUlR9YDtcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZ5IHRoZSBzZXJ2ZXIgaXMgYWNjZXNzaWJsZSBiZWZvcmUgcHJvY2VlZGluZ1xuICAgICAgY29uc3QgYWNjZXNzaWJsZSA9IGF3YWl0IHRoaXMudmVyaWZ5TG9jYWxTZXJ2ZXIoXG4gICAgICAgIGZsYWdzLmpzb24sXG4gICAgICAgIGZsYWdzLnZlcmJvc2UsXG4gICAgICAgIGZsYWdzLnBvcnRcbiAgICAgICk7XG4gICAgICBpZiAoIWFjY2Vzc2libGUpIHtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHdvcmxkID0gYXdhaXQgc2V0dXBDbGlXb3JsZChmbGFncywgdGhpcy5jb25maWcudmVyc2lvbik7XG4gICAgaWYgKCF3b3JsZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnRmFpbGVkIHRvIGNvbm5lY3QgdG8gYmFja2VuZC4gQ2hlY2sgeW91ciBjb25maWd1cmF0aW9uLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBoZWFsdGhDaGVjayB9ID0gYXdhaXQgaW1wb3J0KCdAd29ya2Zsb3cvY29yZS9ydW50aW1lJyk7XG4gICAgY29uc3QgZW5kcG9pbnRzID0gZ2V0RW5kcG9pbnRzVG9DaGVjayhmbGFncy5lbmRwb2ludCk7XG5cbiAgICBpZiAoIWZsYWdzLmpzb24pIHtcbiAgICAgIGNvbnN0IGJhY2tlbmROYW1lID1cbiAgICAgICAgZmxhZ3MuYmFja2VuZCA9PT0gJ2xvY2FsJyA/ICdsb2NhbCBzZXJ2ZXInIDogZmxhZ3MuYmFja2VuZDtcbiAgICAgIGxvZ2dlci5sb2coXG4gICAgICAgIGNoYWxrLmdyYXkoYFJ1bm5pbmcgcXVldWUtYmFzZWQgaGVhbHRoIGNoZWNrIGFnYWluc3QgJHtiYWNrZW5kTmFtZX0uLi5gKVxuICAgICAgKTtcbiAgICAgIGxvZ2dlci5sb2coJycpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmNoZWNrRW5kcG9pbnRzKGVuZHBvaW50cywgaGVhbHRoQ2hlY2ssIHdvcmxkLCB7XG4gICAgICB0aW1lb3V0OiBmbGFncy50aW1lb3V0LFxuICAgICAganNvbjogZmxhZ3MuanNvbixcbiAgICAgIHZlcmJvc2U6IGZsYWdzLnZlcmJvc2UsXG4gICAgfSk7XG5cbiAgICB0aGlzLm91dHB1dFJlc3VsdHMocmVzdWx0cywgZmxhZ3MuanNvbiwgZmxhZ3MuYmFja2VuZCk7XG5cbiAgICBjb25zdCBhbGxIZWFsdGh5ID0gcmVzdWx0cy5ldmVyeSgocikgPT4gci5oZWFsdGh5KTtcbiAgICBwcm9jZXNzLmV4aXQoYWxsSGVhbHRoeSA/IDAgOiAxKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmVyaWZ5TG9jYWxTZXJ2ZXIoXG4gICAganNvbk1vZGU6IGJvb2xlYW4sXG4gICAgdmVyYm9zZTogYm9vbGVhbixcbiAgICBwb3J0PzogbnVtYmVyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghanNvbk1vZGUpIHtcbiAgICAgIGxvZ2dlci5sb2coY2hhbGsuZ3JheSgnQ2hlY2tpbmcgbG9jYWwgc2VydmVyIGFjY2Vzc2liaWxpdHkuLi4nKSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVXJsID0gYXdhaXQgdmVyaWZ5TG9jYWxTZXJ2ZXJBY2Nlc3NpYmxlKHZlcmJvc2UsIHBvcnQpO1xuICAgICAgaWYgKCFqc29uTW9kZSkge1xuICAgICAgICBsb2dnZXIubG9nKGNoYWxrLmdyZWVuKGAgIOKckyBMb2NhbCBzZXJ2ZXIgYWNjZXNzaWJsZSBhdCAke2Jhc2VVcmx9YCkpO1xuICAgICAgICBsb2dnZXIubG9nKCcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPVxuICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICBpZiAoanNvbk1vZGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgcmVzdWx0czogW10sXG4gICAgICAgICAgICBhbGxIZWFsdGh5OiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tFbmRwb2ludHMoXG4gICAgZW5kcG9pbnRzOiBIZWFsdGhDaGVja0VuZHBvaW50W10sXG4gICAgaGVhbHRoQ2hlY2s6IChcbiAgICAgIHdvcmxkOiBhbnksXG4gICAgICBlbmRwb2ludDogSGVhbHRoQ2hlY2tFbmRwb2ludCxcbiAgICAgIG9wdGlvbnM6IHsgdGltZW91dDogbnVtYmVyIH1cbiAgICApID0+IFByb21pc2U8SGVhbHRoQ2hlY2tSZXN1bHQ+LFxuICAgIHdvcmxkOiBhbnksXG4gICAgZmxhZ3M6IHsgdGltZW91dDogbnVtYmVyOyBqc29uOiBib29sZWFuOyB2ZXJib3NlOiBib29sZWFuIH1cbiAgKTogUHJvbWlzZTxFbmRwb2ludEhlYWx0aFJlc3VsdFtdPiB7XG4gICAgaWYgKGZsYWdzLnZlcmJvc2UpIHtcbiAgICAgIGxvZ1dvcmxkQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0czogRW5kcG9pbnRIZWFsdGhSZXN1bHRbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZW5kcG9pbnQgb2YgZW5kcG9pbnRzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNoZWNrU2luZ2xlRW5kcG9pbnQoXG4gICAgICAgIGVuZHBvaW50LFxuICAgICAgICBoZWFsdGhDaGVjayxcbiAgICAgICAgd29ybGQsXG4gICAgICAgIGZsYWdzXG4gICAgICApO1xuICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja1NpbmdsZUVuZHBvaW50KFxuICAgIGVuZHBvaW50OiBIZWFsdGhDaGVja0VuZHBvaW50LFxuICAgIGhlYWx0aENoZWNrOiAoXG4gICAgICB3b3JsZDogYW55LFxuICAgICAgZW5kcG9pbnQ6IEhlYWx0aENoZWNrRW5kcG9pbnQsXG4gICAgICBvcHRpb25zOiB7IHRpbWVvdXQ6IG51bWJlciB9XG4gICAgKSA9PiBQcm9taXNlPEhlYWx0aENoZWNrUmVzdWx0PixcbiAgICB3b3JsZDogYW55LFxuICAgIGZsYWdzOiB7IHRpbWVvdXQ6IG51bWJlcjsganNvbjogYm9vbGVhbjsgdmVyYm9zZTogYm9vbGVhbiB9XG4gICk6IFByb21pc2U8RW5kcG9pbnRIZWFsdGhSZXN1bHQ+IHtcbiAgICBpZiAoIWZsYWdzLmpzb24pIHtcbiAgICAgIGxvZ2dlci5sb2coYENoZWNraW5nICR7ZW5kcG9pbnR9IGVuZHBvaW50Li4uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuSGVhbHRoQ2hlY2tXaXRoTG9nZ2luZyhcbiAgICAgIGhlYWx0aENoZWNrLFxuICAgICAgd29ybGQsXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGZsYWdzLnRpbWVvdXQsXG4gICAgICBmbGFncy52ZXJib3NlXG4gICAgKTtcblxuICAgIGlmICghZmxhZ3MuanNvbikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHJlc3VsdC5oZWFsdGh5XG4gICAgICAgID8gZm9ybWF0SGVhbHRoeVJlc3VsdChlbmRwb2ludCwgcmVzdWx0LmxhdGVuY3lNcyA/PyAwKVxuICAgICAgICA6IGZvcm1hdFVuaGVhbHRoeVJlc3VsdChlbmRwb2ludCwgcmVzdWx0LmVycm9yKTtcbiAgICAgIGxvZ2dlci5sb2cobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVuZHBvaW50LFxuICAgICAgaGVhbHRoeTogcmVzdWx0LmhlYWx0aHksXG4gICAgICBlcnJvcjogcmVzdWx0LmVycm9yLFxuICAgICAgbGF0ZW5jeU1zOiByZXN1bHQubGF0ZW5jeU1zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG91dHB1dFJlc3VsdHMoXG4gICAgcmVzdWx0czogRW5kcG9pbnRIZWFsdGhSZXN1bHRbXSxcbiAgICBqc29uTW9kZTogYm9vbGVhbixcbiAgICBiYWNrZW5kOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgaWYgKGpzb25Nb2RlKSB7XG4gICAgICBjb25zdCBqc29uT3V0cHV0ID0ge1xuICAgICAgICByZXN1bHRzLFxuICAgICAgICBhbGxIZWFsdGh5OiByZXN1bHRzLmV2ZXJ5KChyKSA9PiByLmhlYWx0aHkpLFxuICAgICAgfTtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGpzb25PdXRwdXQsIG51bGwsIDIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJpbnRTdW1tYXJ5KHJlc3VsdHMsIGJhY2tlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVIZWFsdGhDaGVja0Vycm9yKGVycm9yOiBhbnkpOiBuZXZlciB7XG4gIGlmIChlcnJvcj8uc3RhdHVzID09PSA0MDMpIHtcbiAgICBsb2dnZXIuZXJyb3IoVkVSQ0VMXzQwM19FUlJPUl9NRVNTQUdFKTtcbiAgfSBlbHNlIGlmIChMT0dHSU5HX0NPTkZJRy5WRVJCT1NFX01PREUpIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyb3IpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yPy5tZXNzYWdlIHx8IFN0cmluZyhlcnJvcikgfHwgJ1Vua25vd24gZXJyb3InO1xuICAgIGxvZ2dlci5lcnJvcihgRXJyb3I6ICR7ZXJyb3JNZXNzYWdlfWApO1xuICB9XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cbiJdfQ==
@@ -39,4 +39,4 @@ export default class Init extends BaseCommand {
39
39
  this.logInfo('For now, manually create your workflow files in a ./workflows directory');
40
40
  }
41
41
  }
42
- //# sourceMappingURL=init.js.map
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6QyxNQUFNLENBQUMsT0FBTyxPQUFPLElBQUssU0FBUSxXQUFXO0lBQzNDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsaURBQWlELENBQUM7SUFFdkUsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixpQkFBaUI7UUFDakIsbUNBQW1DO1FBQ25DLHVCQUF1QjtLQUN4QixDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3JCLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7U0FDN0MsQ0FBQztRQUNGLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLCtCQUErQjtTQUM3QyxDQUFDO0tBQ0gsQ0FBQztJQUVLLEtBQUssQ0FBQyxHQUFHO1FBQ2QsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FDVix5RUFBeUUsQ0FDMUUsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFncyB9IGZyb20gJ0BvY2xpZi9jb3JlJztcbmltcG9ydCB7IEJhc2VDb21tYW5kIH0gZnJvbSAnLi4vYmFzZS5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluaXQgZXh0ZW5kcyBCYXNlQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9ICdJbml0aWFsaXplIGEgbmV3IHdvcmtmbG93IHByb2plY3QgKENvbWluZyBzb29uKSc7XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICckIHdvcmtmbG93IGluaXQnLFxuICAgICckIHdvcmtmbG93IGluaXQgLS10ZW1wbGF0ZSBuZXh0anMnLFxuICAgICckIHdvcmtmbG93IGluaXQgLS15ZXMnLFxuICBdO1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICB0ZW1wbGF0ZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiAndGVtcGxhdGUgdG8gdXNlJyxcbiAgICAgIG9wdGlvbnM6IFsnc3RhbmRhbG9uZScsICduZXh0anMnLCAnZXhwcmVzcyddLFxuICAgIH0pLFxuICAgIHllczogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBjaGFyOiAneScsXG4gICAgICBkZXNjcmlwdGlvbjogJ3NraXAgcHJvbXB0cyBhbmQgdXNlIGRlZmF1bHRzJyxcbiAgICB9KSxcbiAgfTtcblxuICBwdWJsaWMgYXN5bmMgcnVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgZmxhZ3MgfSA9IGF3YWl0IHRoaXMucGFyc2UoSW5pdCk7XG5cbiAgICB0aGlzLmxvZ0luZm8oJ/CfmqcgUHJvamVjdCBpbml0aWFsaXphdGlvbiBpcyBjb21pbmcgc29vbiEnKTtcbiAgICB0aGlzLmxvZ0luZm8oJycpO1xuICAgIHRoaXMubG9nSW5mbygnVGhpcyBjb21tYW5kIHdpbGwgcHJvdmlkZTonKTtcbiAgICB0aGlzLmxvZ0luZm8oJ+KAoiBJbnRlcmFjdGl2ZSBwcm9qZWN0IHNldHVwJyk7XG4gICAgdGhpcy5sb2dJbmZvKCfigKIgTXVsdGlwbGUgcHJvamVjdCB0ZW1wbGF0ZXMnKTtcbiAgICB0aGlzLmxvZ0luZm8oJ+KAoiBBdXRvbWF0aWMgY29uZmlndXJhdGlvbiBmaWxlIGdlbmVyYXRpb24nKTtcbiAgICB0aGlzLmxvZ0luZm8oJ+KAoiBEZXBlbmRlbmN5IGluc3RhbGxhdGlvbicpO1xuICAgIHRoaXMubG9nSW5mbygn4oCiIEV4YW1wbGUgd29ya2Zsb3dzIGFuZCBzdGVwcycpO1xuICAgIHRoaXMubG9nSW5mbygnT3Igd2UgbWlnaHQgZG8gYSBjcmVhdGUtd29ya2Zsb3ctYXBwIHBhY2thZ2UnKTtcbiAgICB0aGlzLmxvZ0luZm8oJycpO1xuXG4gICAgaWYgKGZsYWdzLnRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmxvZ0luZm8oYFNlbGVjdGVkIHRlbXBsYXRlOiAke2ZsYWdzLnRlbXBsYXRlfWApO1xuICAgIH1cblxuICAgIGlmIChmbGFncy55ZXMpIHtcbiAgICAgIHRoaXMubG9nSW5mbygnQXV0by1hY2NlcHQgbW9kZSBlbmFibGVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dJbmZvKCcnKTtcbiAgICB0aGlzLmxvZ0luZm8oXG4gICAgICAnRm9yIG5vdywgbWFudWFsbHkgY3JlYXRlIHlvdXIgd29ya2Zsb3cgZmlsZXMgaW4gYSAuL3dvcmtmbG93cyBkaXJlY3RvcnknXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -9,6 +9,7 @@ export default class Inspect extends BaseCommand {
9
9
  readonly id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
10
10
  };
11
11
  static flags: {
12
+ readonly url: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
13
  readonly verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
14
  readonly json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
15
  readonly cursor: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
@@ -29,6 +30,8 @@ export default class Inspect extends BaseCommand {
29
30
  readonly hookId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
30
31
  readonly workflowName: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
31
32
  readonly status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
33
+ readonly since: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
34
+ readonly until: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
32
35
  readonly withData: import("@oclif/core/interfaces").BooleanFlag<boolean>;
33
36
  readonly decrypt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
34
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmBzC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,MAAM,CAAC,WAAW,SAA6C;IAE/D,MAAM,CAAC,OAAO,WAAS;IAEvB,MAAM,CAAC,QAAQ,WAOb;IAEI,KAAK,CAAC,KAAK,EAAE,GAAG;IActB,MAAM,CAAC,IAAI;;;MA+BA;IAEX,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;MA4DD;IAEE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiHlC"}
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAuBzC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,MAAM,CAAC,WAAW,SAA6C;IAE/D,MAAM,CAAC,OAAO,WAAS;IAEvB,MAAM,CAAC,QAAQ,WAOb;IAEI,KAAK,CAAC,KAAK,EAAE,GAAG;IAgBtB,MAAM,CAAC,IAAI;;;MA+BA;IAEX,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;MA8ED;IAEE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwHlC"}
@@ -1,11 +1,13 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { VERCEL_403_ERROR_MESSAGE } from '@workflow/errors';
3
+ import { WorkflowRunStatusSchema } from '@workflow/world';
3
4
  import { BaseCommand } from '../base.js';
4
5
  import { LOGGING_CONFIG, logger } from '../lib/config/log.js';
5
- import { cliFlags } from '../lib/inspect/flags.js';
6
+ import { getObservabilityUpgradeRequiredMessage, isObservabilityUpgradeRequiredError, } from '../lib/inspect/errors.js';
7
+ import { cliFlags, urlFlag } from '../lib/inspect/flags.js';
6
8
  import { listEvents, listHooks, listRuns, listSleeps, listSteps, listStreamsByRunId, showHook, showRun, showStep, showStream, } from '../lib/inspect/output.js';
7
9
  import { setupCliWorld } from '../lib/inspect/setup.js';
8
- import { launchWebUI } from '../lib/inspect/web.js';
10
+ import { launchWebUI, printDeepLink } from '../lib/inspect/web.js';
9
11
  export default class Inspect extends BaseCommand {
10
12
  static description = 'Inspect runs, steps, streams, or events';
11
13
  static aliases = ['i'];
@@ -19,7 +21,10 @@ export default class Inspect extends BaseCommand {
19
21
  ];
20
22
  async catch(error) {
21
23
  // Check if this is a 403 error from the Vercel backend
22
- if (error?.status === 403) {
24
+ if (isObservabilityUpgradeRequiredError(error)) {
25
+ logger.error(getObservabilityUpgradeRequiredMessage());
26
+ }
27
+ else if (error?.status === 403) {
23
28
  const message = VERCEL_403_ERROR_MESSAGE;
24
29
  logger.error(message);
25
30
  }
@@ -101,12 +106,26 @@ export default class Inspect extends BaseCommand {
101
106
  status: Flags.string({
102
107
  description: 'filter runs by status (only for runs)',
103
108
  required: false,
104
- options: ['running', 'completed', 'failed', 'cancelled', 'pending'],
109
+ options: [...WorkflowRunStatusSchema.options],
105
110
  helpGroup: 'Filtering',
106
111
  helpLabel: '--status',
107
112
  }),
113
+ since: Flags.string({
114
+ description: 'list runs active since a relative duration (30m, 12h, 7d, 2w) or timestamp; defaults to the backend window (only for runs)',
115
+ required: false,
116
+ helpGroup: 'Filtering',
117
+ helpLabel: '--since',
118
+ helpValue: 'DURATION|TIMESTAMP',
119
+ }),
120
+ until: Flags.string({
121
+ description: 'end of the --since listing window, as a relative duration or timestamp; defaults to now (only for runs)',
122
+ required: false,
123
+ helpGroup: 'Filtering',
124
+ helpLabel: '--until',
125
+ helpValue: 'DURATION|TIMESTAMP',
126
+ }),
108
127
  withData: Flags.boolean({
109
- description: 'include full input/output data in list views',
128
+ description: 'include full input/output data in list views (deprecated for list views — use `inspect <resource> <id>` to view payloads)',
110
129
  required: false,
111
130
  char: 'd',
112
131
  default: false,
@@ -121,6 +140,7 @@ export default class Inspect extends BaseCommand {
121
140
  helpLabel: '--decrypt',
122
141
  }),
123
142
  ...cliFlags,
143
+ ...urlFlag,
124
144
  };
125
145
  async run() {
126
146
  try {
@@ -132,6 +152,12 @@ export default class Inspect extends BaseCommand {
132
152
  return;
133
153
  }
134
154
  const id = args.id;
155
+ // Print-only deep link: resolve config and emit the URL, no browser/server.
156
+ if (flags.url) {
157
+ const actualResource = resource === 'web' ? 'run' : resource;
158
+ await printDeepLink(actualResource, id, flags, this.config.version);
159
+ return;
160
+ }
135
161
  // For web mode, allow config errors so we can open the web UI for configuration
136
162
  const isWebMode = flags.web || resource === 'web';
137
163
  const world = await setupCliWorld(flags, this.config.version, isWebMode);
@@ -225,7 +251,11 @@ function toInspectOptions(flags) {
225
251
  sort: flags.sort,
226
252
  limit: flags.limit,
227
253
  workflowName: flags.workflowName,
228
- status: flags.status,
254
+ status: flags.status
255
+ ? WorkflowRunStatusSchema.parse(flags.status)
256
+ : undefined,
257
+ since: flags.since,
258
+ until: flags.until,
229
259
  withData: flags.withData,
230
260
  decrypt: flags.decrypt,
231
261
  backend: flags.backend,
@@ -252,4 +282,4 @@ function normalizeResource(value) {
252
282
  return 'web';
253
283
  return undefined;
254
284
  }
255
- //# sourceMappingURL=inspect.js.map
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zcGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbnNwZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsc0NBQXNDLEVBQ3RDLG1DQUFtQyxHQUNwQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLFFBQVEsRUFDUixPQUFPLEVBQ1AsUUFBUSxFQUNSLFVBQVUsR0FDWCxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxPQUFPLE9BQU8sT0FBUSxTQUFRLFdBQVc7SUFDOUMsTUFBTSxDQUFDLFdBQVcsR0FBRyx5Q0FBeUMsQ0FBQztJQUUvRCxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdkIsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQix5QkFBeUI7UUFDekIseUJBQXlCO1FBQ3pCLGtFQUFrRTtRQUNsRSwwQkFBMEI7UUFD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T0FBTyxLQUFLLENBQUM7SUFDcEMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sT0FBTyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUN6QyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFDdkMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ3JDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNyQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDcEMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MsIEZsYWdzIH0gZnJvbSAnQG9jbGlmL2NvcmUnO1xuaW1wb3J0IHsgVkVSQ0VMXzQwM19FUlJPUl9NRVNTQUdFIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgeyBXb3JrZmxvd1J1blN0YXR1c1NjaGVtYSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBCYXNlQ29tbWFuZCB9IGZyb20gJy4uL2Jhc2UuanMnO1xuaW1wb3J0IHsgTE9HR0lOR19DT05GSUcsIGxvZ2dlciB9IGZyb20gJy4uL2xpYi9jb25maWcvbG9nLmpzJztcbmltcG9ydCB0eXBlIHsgSW5zcGVjdENMSU9wdGlvbnMgfSBmcm9tICcuLi9saWIvY29uZmlnL3R5cGVzLmpzJztcbmltcG9ydCB7XG4gIGdldE9ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRNZXNzYWdlLFxuICBpc09ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRFcnJvcixcbn0gZnJvbSAnLi4vbGliL2luc3BlY3QvZXJyb3JzLmpzJztcbmltcG9ydCB7IGNsaUZsYWdzLCB1cmxGbGFnIH0gZnJvbSAnLi4vbGliL2luc3BlY3QvZmxhZ3MuanMnO1xuaW1wb3J0IHtcbiAgbGlzdEV2ZW50cyxcbiAgbGlzdEhvb2tzLFxuICBsaXN0UnVucyxcbiAgbGlzdFNsZWVwcyxcbiAgbGlzdFN0ZXBzLFxuICBsaXN0U3RyZWFtc0J5UnVuSWQsXG4gIHNob3dIb29rLFxuICBzaG93UnVuLFxuICBzaG93U3RlcCxcbiAgc2hvd1N0cmVhbSxcbn0gZnJvbSAnLi4vbGliL2luc3BlY3Qvb3V0cHV0LmpzJztcbmltcG9ydCB7IHNldHVwQ2xpV29ybGQgfSBmcm9tICcuLi9saWIvaW5zcGVjdC9zZXR1cC5qcyc7XG5pbXBvcnQgeyBsYXVuY2hXZWJVSSwgcHJpbnREZWVwTGluayB9IGZyb20gJy4uL2xpYi9pbnNwZWN0L3dlYi5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluc3BlY3QgZXh0ZW5kcyBCYXNlQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9ICdJbnNwZWN0IHJ1bnMsIHN0ZXBzLCBzdHJlYW1zLCBvciBldmVudHMnO1xuXG4gIHN0YXRpYyBhbGlhc2VzID0gWydpJ107XG5cbiAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICckIHdvcmtmbG93IGluc3BlY3QgcnVucycsXG4gICAgJyQgd29ya2Zsb3cgaW5zcGVjdCBydW5zJyxcbiAgICAnJCB3b3JrZmxvdyBpbnNwZWN0IGV2ZW50cyAtLXN0ZXA9c3RlcF8wMUs1V0FKWjhXMzY3Q1YyUkZLRFNETldCOCcsXG4gICAgJyQgd29ya2Zsb3cgaW5zcGVjdCBob29rcycsXG4gICAgJyQgd29ya2Zsb3cgaW5zcGVjdCBob29rIGhvb2tfMDFLNVdBSlo4VzM2N0NWMlJGS0RTRE5XQjgnLFxuICAgICckIHdvcmtmbG93IGluc3BlY3Qgc2xlZXBzIC0tcnVuSWQ9cnVuXzAxSzVXQUpaOFczNjdDVjJSRktEU0ROV0I4JyxcbiAgXTtcblxuICBhc3luYyBjYXRjaChlcnJvcjogYW55KSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIDQwMyBlcnJvciBmcm9tIHRoZSBWZXJjZWwgYmFja2VuZFxuICAgIGlmIChpc09ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRFcnJvcihlcnJvcikpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihnZXRPYnNlcnZhYmlsaXR5VXBncmFkZVJlcXVpcmVkTWVzc2FnZSgpKTtcbiAgICB9IGVsc2UgaWYgKGVycm9yPy5zdGF0dXMgPT09IDQwMykge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IFZFUkNFTF80MDNfRVJST1JfTUVTU0FHRTtcbiAgICAgIGxvZ2dlci5lcnJvcihtZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKExPR0dJTkdfQ09ORklHLlZFUkJPU0VfTU9ERSkge1xuICAgICAgbG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3I/Lm1lc3NhZ2UgfHwgU3RyaW5nKGVycm9yKSB8fCAnVW5rbm93biBlcnJvcic7XG4gICAgICBsb2dnZXIuZXJyb3IoYEVycm9yOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgc3RhdGljIGFyZ3MgPSB7XG4gICAgcmVzb3VyY2U6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnd2hhdCB0byBpbnNwZWN0OiBydW4ocykgfCBzdGVwKHMpIHwgc3RyZWFtKHMpIHwgZXZlbnQocykgfCBob29rKHMpIHwgc2xlZXAocyknLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBvcHRpb25zOiBbXG4gICAgICAgICdyJyxcbiAgICAgICAgJ3J1bicsXG4gICAgICAgICdydW5zJyxcbiAgICAgICAgJ3MnLFxuICAgICAgICAnc3RlcCcsXG4gICAgICAgICdzdGVwcycsXG4gICAgICAgICdlJyxcbiAgICAgICAgJ2V2ZW50JyxcbiAgICAgICAgJ2V2ZW50cycsXG4gICAgICAgICdzdCcsXG4gICAgICAgICdzdHJlYW0nLFxuICAgICAgICAnc3RyZWFtcycsXG4gICAgICAgICdoJyxcbiAgICAgICAgJ2hvb2snLFxuICAgICAgICAnaG9va3MnLFxuICAgICAgICAndycsXG4gICAgICAgICd3ZWInLFxuICAgICAgICAnc2xlZXAnLFxuICAgICAgICAnc2xlZXBzJyxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgaWQ6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnSUQgb2YgdGhlIHJlc291cmNlIGlmIGluc3BlY3RpbmcgYSBzcGVjaWZpYyBpdGVtJyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICB9KSxcbiAgfSBhcyBjb25zdDtcblxuICBzdGF0aWMgZmxhZ3MgPSB7XG4gICAgcnVuSWQ6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1J1biBJRCB0byBmaWx0ZXIgYnkgKHJlcXVpcmVkIGZvciBzdGVwcywgc2xlZXBzLCBhbmQgZXZlbnRzLiBPcHRpb25hbCBmb3IgaG9va3MuKScsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBjaGFyOiAncicsXG4gICAgICBhbGlhc2VzOiBbJ3J1biddLFxuICAgICAgaGVscEdyb3VwOiAnRmlsdGVyaW5nJyxcbiAgICAgIGhlbHBMYWJlbDogJy1yLCAtLXJ1bklkJyxcbiAgICAgIGhlbHBWYWx1ZTogJ1JVTl9JRCcsXG4gICAgfSksXG4gICAgc3RlcElkOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246ICdzdGVwIElEIHRvIGZpbHRlciBieSAob25seSBmb3IgZXZlbnRzKScsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBjaGFyOiAncycsXG4gICAgICBhbGlhc2VzOiBbJ3N0ZXAnXSxcbiAgICAgIGhlbHBHcm91cDogJ0ZpbHRlcmluZycsXG4gICAgICBoZWxwTGFiZWw6ICctcywgLS1zdGVwSWQnLFxuICAgICAgaGVscFZhbHVlOiAnU1RFUF9JRCcsXG4gICAgfSksXG4gICAgaG9va0lkOiBGbGFncy5zdHJpbmcoe1xuICAgICAgZGVzY3JpcHRpb246ICdob29rIElEIHRvIGZpbHRlciBieSAob25seSBmb3IgZXZlbnRzKScsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBhbGlhc2VzOiBbJ2hvb2snXSxcbiAgICAgIGhlbHBHcm91cDogJ0ZpbHRlcmluZycsXG4gICAgICBoZWxwTGFiZWw6ICctLWhvb2tJZCcsXG4gICAgICBoZWxwVmFsdWU6ICdIT09LX0lEJyxcbiAgICB9KSxcbiAgICB3b3JrZmxvd05hbWU6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogJ3dvcmtmbG93IG5hbWUgdG8gZmlsdGVyIGJ5IChvbmx5IGZvciBydW5zKScsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBjaGFyOiAnbicsXG4gICAgICBhbGlhc2VzOiBbJ3dvcmtmbG93J10sXG4gICAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgICAgaGVscExhYmVsOiAnLW4sIC0td29ya2Zsb3dOYW1lJyxcbiAgICB9KSxcbiAgICBzdGF0dXM6IEZsYWdzLnN0cmluZyh7XG4gICAgICBkZXNjcmlwdGlvbjogJ2ZpbHRlciBydW5zIGJ5IHN0YXR1cyAob25seSBmb3IgcnVucyknLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgb3B0aW9uczogWy4uLldvcmtmbG93UnVuU3RhdHVzU2NoZW1hLm9wdGlvbnNdLFxuICAgICAgaGVscEdyb3VwOiAnRmlsdGVyaW5nJyxcbiAgICAgIGhlbHBMYWJlbDogJy0tc3RhdHVzJyxcbiAgICB9KSxcbiAgICBzaW5jZTogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnbGlzdCBydW5zIGFjdGl2ZSBzaW5jZSBhIHJlbGF0aXZlIGR1cmF0aW9uICgzMG0sIDEyaCwgN2QsIDJ3KSBvciB0aW1lc3RhbXA7IGRlZmF1bHRzIHRvIHRoZSBiYWNrZW5kIHdpbmRvdyAob25seSBmb3IgcnVucyknLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscEdyb3VwOiAnRmlsdGVyaW5nJyxcbiAgICAgIGhlbHBMYWJlbDogJy0tc2luY2UnLFxuICAgICAgaGVscFZhbHVlOiAnRFVSQVRJT058VElNRVNUQU1QJyxcbiAgICB9KSxcbiAgICB1bnRpbDogRmxhZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnZW5kIG9mIHRoZSAtLXNpbmNlIGxpc3Rpbmcgd2luZG93LCBhcyBhIHJlbGF0aXZlIGR1cmF0aW9uIG9yIHRpbWVzdGFtcDsgZGVmYXVsdHMgdG8gbm93IChvbmx5IGZvciBydW5zKScsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoZWxwR3JvdXA6ICdGaWx0ZXJpbmcnLFxuICAgICAgaGVscExhYmVsOiAnLS11bnRpbCcsXG4gICAgICBoZWxwVmFsdWU6ICdEVVJBVElPTnxUSU1FU1RBTVAnLFxuICAgIH0pLFxuICAgIHdpdGhEYXRhOiBGbGFncy5ib29sZWFuKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnaW5jbHVkZSBmdWxsIGlucHV0L291dHB1dCBkYXRhIGluIGxpc3Qgdmlld3MgKGRlcHJlY2F0ZWQgZm9yIGxpc3Qgdmlld3Mg4oCUIHVzZSBgaW5zcGVjdCA8cmVzb3VyY2U+IDxpZD5gIHRvIHZpZXcgcGF5bG9hZHMpJyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGNoYXI6ICdkJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgaGVscEdyb3VwOiAnRGlzcGxheScsXG4gICAgICBoZWxwTGFiZWw6ICctZCwgLS13aXRoRGF0YScsXG4gICAgfSksXG4gICAgZGVjcnlwdDogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ2RlY3J5cHQgZW5jcnlwdGVkIHZhbHVlcyAodHJpZ2dlcnMgYXVkaXQtbG9nZ2VkIGtleSByZXRyaWV2YWwpJyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgaGVscEdyb3VwOiAnRGlzcGxheScsXG4gICAgICBoZWxwTGFiZWw6ICctLWRlY3J5cHQnLFxuICAgIH0pLFxuICAgIC4uLmNsaUZsYWdzLFxuICAgIC4uLnVybEZsYWcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHVibGljIGFzeW5jIHJ1bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShJbnNwZWN0KTtcblxuICAgICAgY29uc3QgcmVzb3VyY2UgPSBub3JtYWxpemVSZXNvdXJjZShhcmdzLnJlc291cmNlKTtcbiAgICAgIGlmICghcmVzb3VyY2UpIHtcbiAgICAgICAgdGhpcy5sb2dFcnJvcihcbiAgICAgICAgICBgVW5rbm93biByZXNvdXJjZSBcIiR7YXJncy5yZXNvdXJjZX1cIjogbXVzdCBiZSBvbmUgb2Y6IHJ1bihzKSwgc3RlcChzKSwgc3RyZWFtKHMpLCBldmVudChzKSwgaG9vayhzKSwgc2xlZXAocylgXG4gICAgICAgICk7XG4gICAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlkID0gYXJncy5pZDtcblxuICAgICAgLy8gUHJpbnQtb25seSBkZWVwIGxpbms6IHJlc29sdmUgY29uZmlnIGFuZCBlbWl0IHRoZSBVUkwsIG5vIGJyb3dzZXIvc2VydmVyLlxuICAgICAgaWYgKGZsYWdzLnVybCkge1xuICAgICAgICBjb25zdCBhY3R1YWxSZXNvdXJjZSA9IHJlc291cmNlID09PSAnd2ViJyA/ICdydW4nIDogcmVzb3VyY2U7XG4gICAgICAgIGF3YWl0IHByaW50RGVlcExpbmsoYWN0dWFsUmVzb3VyY2UsIGlkLCBmbGFncywgdGhpcy5jb25maWcudmVyc2lvbik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIHdlYiBtb2RlLCBhbGxvdyBjb25maWcgZXJyb3JzIHNvIHdlIGNhbiBvcGVuIHRoZSB3ZWIgVUkgZm9yIGNvbmZpZ3VyYXRpb25cbiAgICAgIGNvbnN0IGlzV2ViTW9kZSA9IGZsYWdzLndlYiB8fCByZXNvdXJjZSA9PT0gJ3dlYic7XG4gICAgICBjb25zdCB3b3JsZCA9IGF3YWl0IHNldHVwQ2xpV29ybGQoZmxhZ3MsIHRoaXMuY29uZmlnLnZlcnNpb24sIGlzV2ViTW9kZSk7XG5cbiAgICAgIC8vIEhhbmRsZSB3ZWIgVUkgbW9kZVxuICAgICAgaWYgKGlzV2ViTW9kZSkge1xuICAgICAgICBjb25zdCBhY3R1YWxSZXNvdXJjZSA9IHJlc291cmNlID09PSAnd2ViJyA/ICdydW4nIDogcmVzb3VyY2U7XG4gICAgICAgIGF3YWl0IGxhdW5jaFdlYlVJKGFjdHVhbFJlc291cmNlLCBpZCwgZmxhZ3MsIHRoaXMuY29uZmlnLnZlcnNpb24pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEZvciBub24td2ViIGNvbW1hbmRzLCB3ZSBuZWVkIGEgdmFsaWQgd29ybGRcbiAgICAgIGlmICghd29ybGQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdGYWlsZWQgdG8gY29ubmVjdCB0byBiYWNrZW5kLiBDaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24uJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBDb252ZXJ0IGZsYWdzIHRvIEluc3BlY3RDTElPcHRpb25zIHdpdGggcHJvcGVyIHR5cGluZ1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRvSW5zcGVjdE9wdGlvbnMoZmxhZ3MpO1xuXG4gICAgICBpZiAocmVzb3VyY2UgPT09ICdydW4nKSB7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgIGF3YWl0IHNob3dSdW4od29ybGQsIGlkLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCBsaXN0UnVucyh3b3JsZCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2UgPT09ICdzdGVwJykge1xuICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICBhd2FpdCBzaG93U3RlcCh3b3JsZCwgaWQsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGxpc3RTdGVwcyh3b3JsZCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2UgPT09ICdzdHJlYW0nKSB7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgIGF3YWl0IHNob3dTdHJlYW0od29ybGQsIGlkLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCBsaXN0U3RyZWFtc0J5UnVuSWQod29ybGQsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc291cmNlID09PSAnZXZlbnQnKSB7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgIHRoaXMubG9nRXJyb3IoXG4gICAgICAgICAgICAnRXZlbnQtSUQgaXMgbm90IHN1cHBvcnRlZCBmb3IgZXZlbnRzLiBGaWx0ZXIgYnkgcnVuLWlkIG9yIHN0ZXAtaWQgaW5zdGVhZC4gVXNhZ2U6IGB3b3JrZmxvdyBpbnNwZWN0IGV2ZW50cyAtLXJ1bklkPTxpZD5gJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGxpc3RFdmVudHMod29ybGQsIG9wdGlvbnMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNvdXJjZSA9PT0gJ2hvb2snKSB7XG4gICAgICAgIGlmIChpZCkge1xuICAgICAgICAgIGF3YWl0IHNob3dIb29rKHdvcmxkLCBpZCwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgbGlzdEhvb2tzKHdvcmxkLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNvdXJjZSA9PT0gJ3NsZWVwJykge1xuICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ0Vycm9yKFxuICAgICAgICAgICAgJ1NsZWVwLUlEIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNsZWVwcy4gRmlsdGVyIGJ5IHJ1bi1pZCBpbnN0ZWFkLiBVc2FnZTogYHdvcmtmbG93IGluc3BlY3Qgc2xlZXBzIC0tcnVuSWQ9PGlkPmAnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXRDb2RlID0gMTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmbGFncy5ydW5JZCkge1xuICAgICAgICAgIHRoaXMubG9nRXJyb3IoXG4gICAgICAgICAgICAncnVuLWlkIGlzIHJlcXVpcmVkIGZvciBsaXN0aW5nIHNsZWVwcy4gVXNhZ2U6IGB3b3JrZmxvdyBpbnNwZWN0IHNsZWVwcyAtLXJ1bklkPTxpZD5gJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGxpc3RTbGVlcHMod29ybGQsIG9wdGlvbnMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nRXJyb3IoXG4gICAgICAgIGBVbmtub3duIHJlc291cmNlOiAke3Jlc291cmNlfS4gVXNhZ2U6ICR7SW5zcGVjdC5leGFtcGxlcy5qb2luKCdcXG4nKX1gXG4gICAgICApO1xuICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIExldCB0aGUgY2F0Y2ggaGFuZGxlciBkZWFsIHdpdGggaXQsIGJ1dCBlbnN1cmUgd2UgZXhpdFxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvSW5zcGVjdE9wdGlvbnMoZmxhZ3M6IGFueSk6IEluc3BlY3RDTElPcHRpb25zIHtcbiAgcmV0dXJuIHtcbiAgICBqc29uOiBmbGFncy5qc29uLFxuICAgIHJ1bklkOiBmbGFncy5ydW5JZCxcbiAgICBzdGVwSWQ6IGZsYWdzLnN0ZXBJZCxcbiAgICBjdXJzb3I6IGZsYWdzLmN1cnNvcixcbiAgICBzb3J0OiBmbGFncy5zb3J0IGFzICdhc2MnIHwgJ2Rlc2MnIHwgdW5kZWZpbmVkLFxuICAgIGxpbWl0OiBmbGFncy5saW1pdCxcbiAgICB3b3JrZmxvd05hbWU6IGZsYWdzLndvcmtmbG93TmFtZSxcbiAgICBzdGF0dXM6IGZsYWdzLnN0YXR1c1xuICAgICAgPyBXb3JrZmxvd1J1blN0YXR1c1NjaGVtYS5wYXJzZShmbGFncy5zdGF0dXMpXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBzaW5jZTogZmxhZ3Muc2luY2UsXG4gICAgdW50aWw6IGZsYWdzLnVudGlsLFxuICAgIHdpdGhEYXRhOiBmbGFncy53aXRoRGF0YSxcbiAgICBkZWNyeXB0OiBmbGFncy5kZWNyeXB0LFxuICAgIGJhY2tlbmQ6IGZsYWdzLmJhY2tlbmQsXG4gICAgaW50ZXJhY3RpdmU6IGZsYWdzLmludGVyYWN0aXZlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVSZXNvdXJjZShcbiAgdmFsdWU/OiBzdHJpbmdcbik6ICdydW4nIHwgJ3N0ZXAnIHwgJ3N0cmVhbScgfCAnZXZlbnQnIHwgJ2hvb2snIHwgJ3dlYicgfCAnc2xlZXAnIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgdiA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gIGlmICh2LnN0YXJ0c1dpdGgoJ3InKSkgcmV0dXJuICdydW4nO1xuICBpZiAodi5zdGFydHNXaXRoKCdlJykpIHJldHVybiAnZXZlbnQnO1xuICBpZiAodi5zdGFydHNXaXRoKCdzdHInKSkgcmV0dXJuICdzdHJlYW0nO1xuICBpZiAodi5zdGFydHNXaXRoKCdzbCcpKSByZXR1cm4gJ3NsZWVwJztcbiAgaWYgKHYuc3RhcnRzV2l0aCgncycpKSByZXR1cm4gJ3N0ZXAnO1xuICBpZiAodi5zdGFydHNXaXRoKCdoJykpIHJldHVybiAnaG9vayc7XG4gIGlmICh2LnN0YXJ0c1dpdGgoJ3cnKSkgcmV0dXJuICd3ZWInO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMzC,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,SAAsB;IAExC,MAAM,CAAC,OAAO,WAAS;IAEvB,MAAM,CAAC,QAAQ,WAGb;IAEI,KAAK,CAAC,KAAK,EAAE,GAAG;IAOtB,MAAM,CAAC,IAAI;;;MAaA;IAEX,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;MAAY;IAEX,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBlC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAUzC,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,SAAsB;IAExC,MAAM,CAAC,OAAO,WAAS;IAEvB,MAAM,CAAC,QAAQ,WAGb;IAEI,KAAK,CAAC,KAAK,EAAE,GAAG;IAUtB,MAAM,CAAC,IAAI;;;MAaA;IAEX,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;MAAY;IAEX,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgBlC"}
@@ -1,6 +1,7 @@
1
1
  import { Args } from '@oclif/core';
2
2
  import { BaseCommand } from '../base.js';
3
- import { LOGGING_CONFIG } from '../lib/config/log.js';
3
+ import { LOGGING_CONFIG, logger } from '../lib/config/log.js';
4
+ import { getObservabilityUpgradeRequiredMessage, isObservabilityUpgradeRequiredError, } from '../lib/inspect/errors.js';
4
5
  import { cliFlags } from '../lib/inspect/flags.js';
5
6
  import { startRun } from '../lib/inspect/run.js';
6
7
  import { setupCliWorld } from '../lib/inspect/setup.js';
@@ -12,7 +13,11 @@ export default class Start extends BaseCommand {
12
13
  '$ wf start <workflow-name> <args>',
13
14
  ];
14
15
  async catch(error) {
15
- if (LOGGING_CONFIG.VERBOSE_MODE) {
16
+ if (isObservabilityUpgradeRequiredError(error)) {
17
+ logger.error(getObservabilityUpgradeRequiredMessage());
18
+ process.exit(1);
19
+ }
20
+ else if (LOGGING_CONFIG.VERBOSE_MODE) {
16
21
  console.error(error);
17
22
  }
18
23
  throw error;
@@ -43,4 +48,4 @@ export default class Start extends BaseCommand {
43
48
  await startRun(world, args.workflowName, flags, stringArgs);
44
49
  }
45
50
  }
46
- //# sourceMappingURL=start.js.map
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3RhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUNMLHNDQUFzQyxFQUN0QyxtQ0FBbUMsR0FDcEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxNQUFNLENBQUMsT0FBTyxPQUFPLEtBQU0sU0FBUSxXQUFXO0lBQzVDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFFeEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZCLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIseUNBQXlDO1FBQ3pDLG1DQUFtQztLQUNwQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFVO1FBQ3BCLElBQUksbUNBQW1DLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLENBQUMsQ0FBQztZQUN2RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7YUFBTSxJQUFJLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDeEIsV0FBVyxFQUNULHlGQUF5RjtZQUMzRixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFDRixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNoQixXQUFXLEVBQUU7Z0JBQ1gsMEVBQTBFO2dCQUMxRSxvSkFBb0o7YUFDckosQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1osUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztLQUNNLENBQUM7SUFFWCxNQUFNLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUVqQixLQUFLLENBQUMsR0FBRztRQUNkLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0UsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFdEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYix5REFBeUQsQ0FDMUQsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3MgfSBmcm9tICdAb2NsaWYvY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29tbWFuZCB9IGZyb20gJy4uL2Jhc2UuanMnO1xuaW1wb3J0IHsgTE9HR0lOR19DT05GSUcsIGxvZ2dlciB9IGZyb20gJy4uL2xpYi9jb25maWcvbG9nLmpzJztcbmltcG9ydCB7XG4gIGdldE9ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRNZXNzYWdlLFxuICBpc09ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRFcnJvcixcbn0gZnJvbSAnLi4vbGliL2luc3BlY3QvZXJyb3JzLmpzJztcbmltcG9ydCB7IGNsaUZsYWdzIH0gZnJvbSAnLi4vbGliL2luc3BlY3QvZmxhZ3MuanMnO1xuaW1wb3J0IHsgc3RhcnRSdW4gfSBmcm9tICcuLi9saWIvaW5zcGVjdC9ydW4uanMnO1xuaW1wb3J0IHsgc2V0dXBDbGlXb3JsZCB9IGZyb20gJy4uL2xpYi9pbnNwZWN0L3NldHVwLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhcnQgZXh0ZW5kcyBCYXNlQ29tbWFuZCB7XG4gIHN0YXRpYyBkZXNjcmlwdGlvbiA9ICdTdGFydCBhIHdvcmtmbG93JztcblxuICBzdGF0aWMgYWxpYXNlcyA9IFsncyddO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnJCB3b3JrZmxvdyBzdGFydCA8d29ya2Zsb3ctbmFtZT4gPGFyZ3M+JyxcbiAgICAnJCB3ZiBzdGFydCA8d29ya2Zsb3ctbmFtZT4gPGFyZ3M+JyxcbiAgXTtcblxuICBhc3luYyBjYXRjaChlcnJvcjogYW55KSB7XG4gICAgaWYgKGlzT2JzZXJ2YWJpbGl0eVVwZ3JhZGVSZXF1aXJlZEVycm9yKGVycm9yKSkge1xuICAgICAgbG9nZ2VyLmVycm9yKGdldE9ic2VydmFiaWxpdHlVcGdyYWRlUmVxdWlyZWRNZXNzYWdlKCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0gZWxzZSBpZiAoTE9HR0lOR19DT05GSUcuVkVSQk9TRV9NT0RFKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBzdGF0aWMgYXJncyA9IHtcbiAgICB3b3JrZmxvd05hbWU6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnTmFtZSBvZiBhIHdvcmtmbG93IHRvIHN0YXJ0LiBQcm92aWRpbmcgYSBydW4gSUQgd2lsbCBjcmVhdGUgYSBuZXcgcnVuIG9uIHRoYXQgd29ya2Zsb3cuJyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICAgIGFyZ3M6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICdBcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgd29ya2Zsb3cuIEFsbCBhcmd1bWVudHMgd2lsbCBiZSBwYXJzZWQgYXMgSlNPTi4nLFxuICAgICAgICAnRS5nLiBgd2Ygc3RhcnQgZXhhbXBsZSAxMjMgXCJcXCcxMjNcXCdcIiBcIntcImFcIjogMX1cImAgd2lsbCBzdGFydCB0aGUgXCJleGFtcGxlXCIgd29ya2Zsb3cgd2l0aCAxMjMgKGEgbnVtYmVyKSwgXCIxMjNcIiAoYSBzdHJpbmcpLCBhbmQge1wiYVwiOiAxfSAoYW4gb2JqZWN0KScsXG4gICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIH0pLFxuICB9IGFzIGNvbnN0O1xuXG4gIHN0YXRpYyBmbGFncyA9IGNsaUZsYWdzO1xuXG4gIHB1YmxpYyBhc3luYyBydW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBmbGFncywgYXJncywgYXJndiB9ID0gYXdhaXQgdGhpcy5wYXJzZShTdGFydCk7XG5cbiAgICBjb25zdCBmaXhlZEFyZ0luZGV4ID0gYXJndi5pbmRleE9mKGFyZ3Mud29ya2Zsb3dOYW1lKTtcbiAgICBjb25zdCByZXN0QXJncyA9IGZpeGVkQXJnSW5kZXggIT09IC0xID8gYXJndi5zbGljZShmaXhlZEFyZ0luZGV4ICsgMSkgOiBbXTtcbiAgICBjb25zdCBzdHJpbmdBcmdzID0gcmVzdEFyZ3MubWFwKChhcmcpID0+IFN0cmluZyhhcmcpKTtcblxuICAgIGNvbnN0IHdvcmxkID0gYXdhaXQgc2V0dXBDbGlXb3JsZChmbGFncywgdGhpcy5jb25maWcudmVyc2lvbik7XG4gICAgaWYgKCF3b3JsZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnRmFpbGVkIHRvIGNvbm5lY3QgdG8gYmFja2VuZC4gQ2hlY2sgeW91ciBjb25maWd1cmF0aW9uLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgc3RhcnRSdW4od29ybGQsIGFyZ3Mud29ya2Zsb3dOYW1lLCBmbGFncywgc3RyaW5nQXJncyk7XG4gIH1cbn1cbiJdfQ==
@@ -165,4 +165,4 @@ export default class Transform extends BaseCommand {
165
165
  return {};
166
166
  }
167
167
  }
168
- //# sourceMappingURL=transform.js.map
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsc0JBQXNCLEdBQ3ZCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJekMsTUFBTSxTQUFTLEdBQW9CLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXhELE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBVSxTQUFRLFdBQVc7SUFDaEQsTUFBTSxDQUFDLFdBQVcsR0FDaEIsZ0hBQWdILENBQUM7SUFFbkgsTUFBTSxDQUFDLFFBQVEsR0FBRztRQUNoQixxQ0FBcUM7UUFDckMscURBQXFEO1FBQ3JELGlEQUFpRDtRQUNqRCxtREFBbUQ7UUFDbkQsNENBQTRDO0tBQzdDLENBQUM7SUFFRixNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDaEIsV0FBVyxFQUFFLHVCQUF1QjtZQUNwQyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7S0FDSCxDQUFDO0lBRUYsTUFBTSxDQUFDLEtBQUssR0FBRztRQUNiLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsV0FBVyxFQUFFLHlDQUF5QztZQUN0RCxPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8s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TUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNqQixJQUFJLENBQUMsT0FBTyxDQUNWLEtBQUssQ0FBQyxNQUFNLENBQ1Ysc0RBQXNELGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbkcsQ0FDRixDQUFDO29CQUNGLElBQUksQ0FBQyxPQUFPLENBQ1YsS0FBSyxDQUFDLE1BQU0sQ0FDVix5REFBeUQsQ0FDMUQsQ0FDRixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBBcmdzLCBGbGFncyB9IGZyb20gJ0BvY2xpZi9jb3JlJztcbmltcG9ydCB7XG4gIGFuYWx5emVTZXJkZUNvbXBsaWFuY2UsXG4gIGFwcGx5U3djVHJhbnNmb3JtLFxuICBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zLFxufSBmcm9tICdAd29ya2Zsb3cvYnVpbGRlcnMnO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IEJhc2VDb21tYW5kIH0gZnJvbSAnLi4vYmFzZS5qcyc7XG5cbnR5cGUgVHJhbnNmb3JtTW9kZSA9ICd3b3JrZmxvdycgfCAnc3RlcCc7XG5cbmNvbnN0IEFMTF9NT0RFUzogVHJhbnNmb3JtTW9kZVtdID0gWyd3b3JrZmxvdycsICdzdGVwJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRyYW5zZm9ybSBleHRlbmRzIEJhc2VDb21tYW5kIHtcbiAgc3RhdGljIGRlc2NyaXB0aW9uID1cbiAgICAnU2hvdyBTV0MgdHJhbnNmb3JtIG91dHB1dCBmb3IgYSB3b3JrZmxvdyBmaWxlLiBVc2VmdWwgZm9yIGluc3BlY3Rpbmcgd2hhdCBjb2RlIHJ1bnMgaW4gZWFjaCBleGVjdXRpb24gY29udGV4dC4nO1xuXG4gIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAnJCB3b3JrZmxvdyB0cmFuc2Zvcm0gc3JjL015Q2xhc3MudHMnLFxuICAgICckIHdvcmtmbG93IHRyYW5zZm9ybSBzcmMvTXlDbGFzcy50cyAtLW1vZGUgd29ya2Zsb3cnLFxuICAgICckIHdvcmtmbG93IHRyYW5zZm9ybSBzcmMvTXlDbGFzcy50cyAtLW1vZGUgc3RlcCcsXG4gICAgJyQgd29ya2Zsb3cgdHJhbnNmb3JtIHNyYy9NeUNsYXNzLnRzIC0tY2hlY2stc2VyZGUnLFxuICAgICckIHdvcmtmbG93IHRyYW5zZm9ybSBzcmMvTXlDbGFzcy50cyAtLWpzb24nLFxuICBdO1xuXG4gIHN0YXRpYyBhcmdzID0ge1xuICAgIGZpbGU6IEFyZ3Muc3RyaW5nKHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGZpbGUgdG8gdHJhbnNmb3JtJyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRpYyBmbGFncyA9IHtcbiAgICBtb2RlOiBGbGFncy5zdHJpbmcoe1xuICAgICAgY2hhcjogJ20nLFxuICAgICAgZGVzY3JpcHRpb246ICdUcmFuc2Zvcm0gbW9kZSAod29ya2Zsb3csIHN0ZXAsIG9yIGFsbCknLFxuICAgICAgZGVmYXVsdDogJ2FsbCcsXG4gICAgICBvcHRpb25zOiBbJ3dvcmtmbG93JywgJ3N0ZXAnLCAnYWxsJ10sXG4gICAgfSksXG4gICAgJ2NoZWNrLXNlcmRlJzogRmxhZ3MuYm9vbGVhbih7XG4gICAgICBkZXNjcmlwdGlvbjogJ1J1biBzZXJkZSBjb21wbGlhbmNlIGFuYWx5c2lzIG9uIHRoZSB0cmFuc2Zvcm1lZCBvdXRwdXQnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSksXG4gIH07XG5cbiAgcHVibGljIGFzeW5jIHJ1bigpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgY29uc3QgeyBhcmdzLCBmbGFncyB9ID0gYXdhaXQgdGhpcy5wYXJzZShUcmFuc2Zvcm0pO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gcmVzb2x2ZShhcmdzLmZpbGUpO1xuICAgIGNvbnN0IHJlbFBhdGggPSByZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlUGF0aCk7XG5cbiAgICBsZXQgc291cmNlOiBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHNvdXJjZSA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCAndXRmLTgnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuZXJyb3IoYENvdWxkIG5vdCByZWFkIGZpbGU6ICR7ZmlsZVBhdGh9YCk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZWN0IGlmIHRoaXMgZmlsZSBoYXMgd29ya2Zsb3cgcGF0dGVybnNcbiAgICBjb25zdCBwYXR0ZXJucyA9IGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlKTtcbiAgICBpZiAoIXBhdHRlcm5zLmhhc0RpcmVjdGl2ZSAmJiAhcGF0dGVybnMuaGFzU2VyZGUpIHtcbiAgICAgIHRoaXMubG9nSW5mbyhcbiAgICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICAgIGBXYXJuaW5nOiAke3JlbFBhdGh9IGRvZXMgbm90IGNvbnRhaW4gXCJ1c2Ugd29ya2Zsb3dcIiwgXCJ1c2Ugc3RlcFwiLCBvciBzZXJkZSBwYXR0ZXJucy5gXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZXM6IFRyYW5zZm9ybU1vZGVbXSA9XG4gICAgICBmbGFncy5tb2RlID09PSAnYWxsJyA/IEFMTF9NT0RFUyA6IFtmbGFncy5tb2RlIGFzIFRyYW5zZm9ybU1vZGVdO1xuXG4gICAgY29uc3QgcmVzdWx0czogUmVjb3JkPHN0cmluZywgeyBjb2RlOiBzdHJpbmc7IGVycm9yPzogc3RyaW5nIH0+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IG1vZGUgb2YgbW9kZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgY29kZSB9ID0gYXdhaXQgYXBwbHlTd2NUcmFuc2Zvcm0oXG4gICAgICAgICAgcmVsUGF0aCxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgbW9kZSxcbiAgICAgICAgICBmaWxlUGF0aFxuICAgICAgICApO1xuICAgICAgICByZXN1bHRzW21vZGVdID0geyBjb2RlIH07XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVzdWx0c1ttb2RlXSA9IHtcbiAgICAgICAgICBjb2RlOiAnJyxcbiAgICAgICAgICBlcnJvcjogZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdUcmFuc2Zvcm0gZmFpbGVkJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXJkZSBhbmFseXNpc1xuICAgIGxldCBzZXJkZUFuYWx5c2lzID0gbnVsbDtcbiAgICBpZiAoZmxhZ3NbJ2NoZWNrLXNlcmRlJ10gfHwgcGF0dGVybnMuaGFzU2VyZGUpIHtcbiAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIHdvcmtmbG93IG1vZGUgb3V0cHV0IGZvciBzZXJkZSBhbmFseXNpc1xuICAgICAgbGV0IHdvcmtmbG93Q29kZSA9IHJlc3VsdHMud29ya2Zsb3c/LmNvZGU7XG4gICAgICBsZXQgd29ya2Zsb3dNYW5pZmVzdCA9IG51bGw7XG5cbiAgICAgIGlmICghd29ya2Zsb3dDb2RlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwbHlTd2NUcmFuc2Zvcm0oXG4gICAgICAgICAgICByZWxQYXRoLFxuICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgJ3dvcmtmbG93JyxcbiAgICAgICAgICAgIGZpbGVQYXRoXG4gICAgICAgICAgKTtcbiAgICAgICAgICB3b3JrZmxvd0NvZGUgPSByZXN1bHQuY29kZTtcbiAgICAgICAgICB3b3JrZmxvd01hbmlmZXN0ID0gcmVzdWx0LndvcmtmbG93TWFuaWZlc3Q7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHdvcmtmbG93Q29kZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZS1ydW4gdG8gZ2V0IHRoZSBtYW5pZmVzdFxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcGx5U3djVHJhbnNmb3JtKFxuICAgICAgICAgICAgcmVsUGF0aCxcbiAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICd3b3JrZmxvdycsXG4gICAgICAgICAgICBmaWxlUGF0aFxuICAgICAgICAgICk7XG4gICAgICAgICAgd29ya2Zsb3dNYW5pZmVzdCA9IHJlc3VsdC53b3JrZmxvd01hbmlmZXN0O1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAod29ya2Zsb3dDb2RlICYmIHdvcmtmbG93TWFuaWZlc3QpIHtcbiAgICAgICAgc2VyZGVBbmFseXNpcyA9IGFuYWx5emVTZXJkZUNvbXBsaWFuY2Uoe1xuICAgICAgICAgIHNvdXJjZUNvZGU6IHNvdXJjZSxcbiAgICAgICAgICB3b3JrZmxvd0NvZGUsXG4gICAgICAgICAgbWFuaWZlc3Q6IHdvcmtmbG93TWFuaWZlc3QsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEpTT04gb3V0cHV0XG4gICAgaWYgKGZsYWdzLmpzb24pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IHJlbFBhdGgsXG4gICAgICAgIHBhdHRlcm5zOiB7XG4gICAgICAgICAgaGFzVXNlV29ya2Zsb3c6IHBhdHRlcm5zLmhhc1VzZVdvcmtmbG93LFxuICAgICAgICAgIGhhc1VzZVN0ZXA6IHBhdHRlcm5zLmhhc1VzZVN0ZXAsXG4gICAgICAgICAgaGFzU2VyZGU6IHBhdHRlcm5zLmhhc1NlcmRlLFxuICAgICAgICB9LFxuICAgICAgICB0cmFuc2Zvcm1zOiByZXN1bHRzLFxuICAgICAgICAuLi4oc2VyZGVBbmFseXNpc1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBzZXJkZUFuYWx5c2lzOiB7XG4gICAgICAgICAgICAgICAgaGFzU2VyZGVDbGFzc2VzOiBzZXJkZUFuYWx5c2lzLmhhc1NlcmRlQ2xhc3NlcyxcbiAgICAgICAgICAgICAgICBnbG9iYWxOb2RlSW1wb3J0czogc2VyZGVBbmFseXNpcy5nbG9iYWxOb2RlSW1wb3J0cyxcbiAgICAgICAgICAgICAgICBjbGFzc2VzOiBzZXJkZUFuYWx5c2lzLmNsYXNzZXMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEh1bWFuLXJlYWRhYmxlIG91dHB1dFxuICAgIGZvciAoY29uc3QgbW9kZSBvZiBtb2Rlcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzdWx0c1ttb2RlXTtcbiAgICAgIHRoaXMubG9nSW5mbygnJyk7XG4gICAgICB0aGlzLmxvZ0luZm8oY2hhbGsuYm9sZC5jeWFuKGDilZDilZDilZAgJHttb2RlLnRvVXBwZXJDYXNlKCl9IE1PREUg4pWQ4pWQ4pWQYCkpO1xuICAgICAgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgICAgICB0aGlzLmxvZ0luZm8oY2hhbGsucmVkKGBFcnJvcjogJHtyZXN1bHQuZXJyb3J9YCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dJbmZvKHJlc3VsdC5jb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXJkZSBhbmFseXNpcyBvdXRwdXRcbiAgICBpZiAoc2VyZGVBbmFseXNpcykge1xuICAgICAgdGhpcy5sb2dJbmZvKCcnKTtcbiAgICAgIHRoaXMubG9nSW5mbyhjaGFsay5ib2xkLmN5YW4oJ+KVkOKVkOKVkCBTRVJERSBBTkFMWVNJUyDilZDilZDilZAnKSk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgIXNlcmRlQW5hbHlzaXMuaGFzU2VyZGVDbGFzc2VzICYmXG4gICAgICAgIHNlcmRlQW5hbHlzaXMuY2xhc3Nlcy5sZW5ndGggPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxvZ0luZm8oY2hhbGsuZ3JheSgnTm8gc2VyZGUtZW5hYmxlZCBjbGFzc2VzIGRldGVjdGVkLicpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgY2xzIG9mIHNlcmRlQW5hbHlzaXMuY2xhc3Nlcykge1xuICAgICAgICAgIHRoaXMubG9nSW5mbygnJyk7XG4gICAgICAgICAgdGhpcy5sb2dJbmZvKFxuICAgICAgICAgICAgY2xzLmNvbXBsaWFudFxuICAgICAgICAgICAgICA/IGNoYWxrLmdyZWVuKGDinJMgQ2xhc3MgXCIke2Nscy5jbGFzc05hbWV9XCIgaXMgc2VyZGUtY29tcGxpYW50YClcbiAgICAgICAgICAgICAgOiBjaGFsay5yZWQoYOKclyBDbGFzcyBcIiR7Y2xzLmNsYXNzTmFtZX1cIiBpcyBOT1Qgc2VyZGUtY29tcGxpYW50YClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGNscy5jbGFzc0lkKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ0luZm8oY2hhbGsuZ3JheShgICBjbGFzc0lkOiAke2Nscy5jbGFzc0lkfWApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sb2dJbmZvKFxuICAgICAgICAgICAgYCAgRGV0ZWN0ZWQgYnkgU1dDOiAke2Nscy5kZXRlY3RlZCA/IGNoYWxrLmdyZWVuKCd5ZXMnKSA6IGNoYWxrLnJlZCgnbm8nKX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxvZ0luZm8oXG4gICAgICAgICAgICBgICBSZWdpc3RyYXRpb24gSUlGRTogJHtjbHMucmVnaXN0ZXJlZCA/IGNoYWxrLmdyZWVuKCd5ZXMnKSA6IGNoYWxrLnJlZCgnbm8nKX1gXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChjbHMubm9kZUltcG9ydHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sb2dJbmZvKFxuICAgICAgICAgICAgICBjaGFsay55ZWxsb3coXG4gICAgICAgICAgICAgICAgYCAgTm9kZS5qcyBpbXBvcnRzIGluIHdvcmtmbG93IGJ1bmRsZTogJHtjbHMubm9kZUltcG9ydHMuam9pbignLCAnKX1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBjbHMuaXNzdWVzKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ0luZm8oY2hhbGsueWVsbG93KGAgIOKaoCAke2lzc3VlfWApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VyZGVBbmFseXNpcy5nbG9iYWxOb2RlSW1wb3J0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5sb2dJbmZvKCcnKTtcbiAgICAgICAgICB0aGlzLmxvZ0luZm8oXG4gICAgICAgICAgICBjaGFsay55ZWxsb3coXG4gICAgICAgICAgICAgIGBOb2RlLmpzIGJ1aWx0LWluIGltcG9ydHMgZm91bmQgaW4gd29ya2Zsb3cgb3V0cHV0OiAke3NlcmRlQW5hbHlzaXMuZ2xvYmFsTm9kZUltcG9ydHMuam9pbignLCAnKX1gXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxvZ0luZm8oXG4gICAgICAgICAgICBjaGFsay55ZWxsb3coXG4gICAgICAgICAgICAgICdBZGQgXCJ1c2Ugc3RlcFwiIHRvIG1ldGhvZHMgdGhhdCBkZXBlbmQgb24gdGhlc2UgbW9kdWxlcy4nXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuIl19