@workflow/core 5.0.0-beta.47 → 5.0.0-beta.49

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 (47) hide show
  1. package/dist/classify-error.d.ts.map +1 -1
  2. package/dist/classify-error.js +13 -3
  3. package/dist/describe-error.d.ts.map +1 -1
  4. package/dist/describe-error.js +16 -1
  5. package/dist/private.d.ts +2 -4
  6. package/dist/private.d.ts.map +1 -1
  7. package/dist/private.js +1 -1
  8. package/dist/runtime/constants.d.ts +9 -7
  9. package/dist/runtime/constants.d.ts.map +1 -1
  10. package/dist/runtime/constants.js +10 -8
  11. package/dist/runtime/helpers.d.ts +13 -0
  12. package/dist/runtime/helpers.d.ts.map +1 -1
  13. package/dist/runtime/helpers.js +14 -1
  14. package/dist/runtime/quickjs-serde.d.ts.map +1 -1
  15. package/dist/runtime/quickjs-serde.js +62 -1
  16. package/dist/runtime/run.d.ts +42 -0
  17. package/dist/runtime/run.d.ts.map +1 -1
  18. package/dist/runtime/run.js +102 -17
  19. package/dist/runtime/runs.d.ts.map +1 -1
  20. package/dist/runtime/runs.js +8 -4
  21. package/dist/runtime/start.d.ts +31 -1
  22. package/dist/runtime/start.d.ts.map +1 -1
  23. package/dist/runtime/start.js +38 -6
  24. package/dist/runtime/suspension-handler.d.ts +54 -1
  25. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  26. package/dist/runtime/suspension-handler.js +83 -20
  27. package/dist/runtime.d.ts +1 -1
  28. package/dist/runtime.d.ts.map +1 -1
  29. package/dist/runtime.js +174 -61
  30. package/dist/serialization/reducers/common-vm.d.ts.map +1 -1
  31. package/dist/serialization/reducers/common-vm.js +38 -1
  32. package/dist/serialization/reducers/common.d.ts.map +1 -1
  33. package/dist/serialization/reducers/common.js +26 -2
  34. package/dist/serialization/types.d.ts +7 -0
  35. package/dist/serialization/types.d.ts.map +1 -1
  36. package/dist/serialization/types.js +1 -1
  37. package/dist/serialization.d.ts +46 -2
  38. package/dist/serialization.d.ts.map +1 -1
  39. package/dist/serialization.js +249 -75
  40. package/dist/version.d.ts +1 -1
  41. package/dist/version.js +2 -2
  42. package/dist/workflow/sleep.d.ts.map +1 -1
  43. package/dist/workflow/sleep.js +3 -6
  44. package/dist/workflow.js +6 -6
  45. package/docs/foundations/streaming.mdx +28 -0
  46. package/docs/how-it-works/understanding-directives.mdx +1 -1
  47. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"classify-error.d.ts","sourceRoot":"","sources":["../src/classify-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAOjB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAsC1B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAe5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAW3D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAkC3D"}
1
+ {"version":3,"file":"classify-error.d.ts","sourceRoot":"","sources":["../src/classify-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAQjB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AA0C1B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAe5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAc3D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAsC3D"}
@@ -1,4 +1,4 @@
1
- import { CorruptedEventLogError, MaxEventsExceededError, ReplayDivergenceError, RUN_ERROR_CODES, RuntimeDecryptionError, StepNotRegisteredError, ThrottleError, WorkflowDeploymentMismatchError, WorkflowNotRegisteredError, WorkflowRuntimeError, WorkflowWorldError, } from '@workflow/errors';
1
+ import { CorruptedEventLogError, MaxEventsExceededError, ReplayDivergenceError, RUN_ERROR_CODES, RuntimeDecryptionError, StepNotRegisteredError, StreamError, ThrottleError, WorkflowDeploymentMismatchError, WorkflowNotRegisteredError, WorkflowRuntimeError, WorkflowWorldError, } from '@workflow/errors';
2
2
  const WORLD_CONTRACT_ERROR_CODES = new Set([
3
3
  'PARSE_ERROR',
4
4
  'SCHEMA_VALIDATION',
@@ -14,7 +14,11 @@ const WORLD_CONTRACT_ERROR_CODES = new Set([
14
14
  * from. Kept distinct from `WORLD_CONTRACT_ERROR_CODES` so a transport blip is
15
15
  * never misclassified as the server returning a malformed response.
16
16
  */
17
- const RETRYABLE_WORLD_ERROR_CODES = new Set(['TRANSPORT', 'TIMEOUT']);
17
+ const RETRYABLE_WORLD_ERROR_CODES = new Set([
18
+ 'TRANSPORT',
19
+ 'TIMEOUT',
20
+ RUN_ERROR_CODES.STREAM_ERROR,
21
+ ]);
18
22
  /**
19
23
  * Set of error names that should classify as generic `RUNTIME_ERROR`. Each
20
24
  * `*.is()` static does a name-based duck check, so subclassing alone is
@@ -79,6 +83,9 @@ export function isRetryableWorldError(err) {
79
83
  if (ThrottleError.is(err)) {
80
84
  return true;
81
85
  }
86
+ if (StreamError.is(err)) {
87
+ return err.status === undefined || err.status >= 500;
88
+ }
82
89
  if (!WorkflowWorldError.is(err)) {
83
90
  return false;
84
91
  }
@@ -107,6 +114,9 @@ export function classifyRunError(err) {
107
114
  // attribute an outage correctly. Note the retryable variants are normally
108
115
  // redelivered via the queue (see `isRetryableWorldError`) and only reach this
109
116
  // terminal classification if the run ultimately gives up.
117
+ if (StreamError.is(err)) {
118
+ return RUN_ERROR_CODES.STREAM_ERROR;
119
+ }
110
120
  if (isWorldContractError(err) || isRetryableWorldError(err)) {
111
121
  return RUN_ERROR_CODES.WORLD_CONTRACT_ERROR;
112
122
  }
@@ -117,4 +127,4 @@ export function classifyRunError(err) {
117
127
  }
118
128
  return RUN_ERROR_CODES.USER_ERROR;
119
129
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NpZnktZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xhc3NpZnktZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFFZixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYiwrQkFBK0IsRUFDL0IsMEJBQTBCLEVBQzFCLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixNQUFNLDBCQUEwQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3pDLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsZUFBZSxDQUFDLG9CQUFvQjtDQUNyQyxDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLDJCQUEyQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdEU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixvQkFBb0IsQ0FBQyxFQUFFO0lBQ3ZCLHNCQUFzQixDQUFDLEVBQUU7SUFDekIsMEJBQTBCLENBQUMsRUFBRTtJQUM3QiwrREFBK0Q7SUFDL0QseURBQXlEO0lBQ3pELG9FQUFvRTtJQUNwRSxrQ0FBa0M7SUFDbEMsc0JBQXNCLENBQUMsRUFBRTtDQUMxQixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEdBQVk7SUFDL0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRCxPQUFPLENBQ0wsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSwwQkFBMEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BFLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLG9DQUFvQyxDQUFDO1FBQzVELEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLCtCQUErQixDQUFDO1FBQ3ZELENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUTtZQUN4QixLQUFLLEtBQUssSUFBSTtZQUNkLE1BQU0sSUFBSSxLQUFLO1lBQ2YsS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQVk7SUFDaEQsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFZO0lBQzNDLElBQUkscUJBQXFCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxlQUFlLENBQUMsaUJBQWlCLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksc0JBQXNCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTyxlQUFlLENBQUMsbUJBQW1CLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksc0JBQXNCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTyxlQUFlLENBQUMsbUJBQW1CLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksK0JBQStCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUMsT0FBTyxlQUFlLENBQUMsbUJBQW1CLENBQUM7SUFDN0MsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSwwRUFBMEU7SUFDMUUsdUVBQXVFO0lBQ3ZFLDhFQUE4RTtJQUM5RSwwRUFBMEU7SUFDMUUsOEVBQThFO0lBQzlFLDBEQUEwRDtJQUMxRCxJQUFJLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUQsT0FBTyxlQUFlLENBQUMsb0JBQW9CLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssTUFBTSxPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUMzQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29ycnVwdGVkRXZlbnRMb2dFcnJvcixcbiAgTWF4RXZlbnRzRXhjZWVkZWRFcnJvcixcbiAgUmVwbGF5RGl2ZXJnZW5jZUVycm9yLFxuICBSVU5fRVJST1JfQ09ERVMsXG4gIHR5cGUgUnVuRXJyb3JDb2RlLFxuICBSdW50aW1lRGVjcnlwdGlvbkVycm9yLFxuICBTdGVwTm90UmVnaXN0ZXJlZEVycm9yLFxuICBUaHJvdHRsZUVycm9yLFxuICBXb3JrZmxvd0RlcGxveW1lbnRNaXNtYXRjaEVycm9yLFxuICBXb3JrZmxvd05vdFJlZ2lzdGVyZWRFcnJvcixcbiAgV29ya2Zsb3dSdW50aW1lRXJyb3IsXG4gIFdvcmtmbG93V29ybGRFcnJvcixcbn0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5cbmNvbnN0IFdPUkxEX0NPTlRSQUNUX0VSUk9SX0NPREVTID0gbmV3IFNldChbXG4gICdQQVJTRV9FUlJPUicsXG4gICdTQ0hFTUFfVkFMSURBVElPTicsXG4gIFJVTl9FUlJPUl9DT0RFUy5XT1JMRF9DT05UUkFDVF9FUlJPUixcbl0pO1xuXG4vKipcbiAqIGBXb3JrZmxvd1dvcmxkRXJyb3IuY29kZWAgdmFsdWVzIHRoYXQgbWFyayBhIHRyYW5zaWVudCB0cmFuc3BvcnQgZmFpbHVyZVxuICogKHNldCBieSB3b3JsZC12ZXJjZWwncyBIVFRQIGNsaWVudCk6IGBUUkFOU1BPUlRgIGNvdmVycyBhbiBleGhhdXN0ZWRcbiAqIFJldHJ5QWdlbnQgKGBVTkRfRVJSX1JFUV9SRVRSWWAsIGUuZy4gdGhlIGZpcmV3YWxsIGluIGZyb250IG9mXG4gKiB3b3JrZmxvdy1zZXJ2ZXIgc2hlZGRpbmcgbG9hZCB3aXRoIDQyOS81MDMpLCBhIGRyb3BwZWQgc29ja2V0LCBvciBhXG4gKiBjb25uZWN0L0ROUyBmYWlsdXJlOyBgVElNRU9VVGAgY292ZXJzIGEgcmVxdWVzdCB0aGF0IGV4Y2VlZGVkIHRoZSBjbGllbnRcbiAqIHRpbWVvdXQuIEJvdGggYXJlIGluZnJhc3RydWN0dXJlIGZhaWx1cmVzIGEgZnJlc2ggaW52b2NhdGlvbiBjYW4gcmVjb3ZlclxuICogZnJvbS4gS2VwdCBkaXN0aW5jdCBmcm9tIGBXT1JMRF9DT05UUkFDVF9FUlJPUl9DT0RFU2Agc28gYSB0cmFuc3BvcnQgYmxpcCBpc1xuICogbmV2ZXIgbWlzY2xhc3NpZmllZCBhcyB0aGUgc2VydmVyIHJldHVybmluZyBhIG1hbGZvcm1lZCByZXNwb25zZS5cbiAqL1xuY29uc3QgUkVUUllBQkxFX1dPUkxEX0VSUk9SX0NPREVTID0gbmV3IFNldChbJ1RSQU5TUE9SVCcsICdUSU1FT1VUJ10pO1xuXG4vKipcbiAqIFNldCBvZiBlcnJvciBuYW1lcyB0aGF0IHNob3VsZCBjbGFzc2lmeSBhcyBnZW5lcmljIGBSVU5USU1FX0VSUk9SYC4gRWFjaFxuICogYCouaXMoKWAgc3RhdGljIGRvZXMgYSBuYW1lLWJhc2VkIGR1Y2sgY2hlY2ssIHNvIHN1YmNsYXNzaW5nIGFsb25lIGlzXG4gKiBub3QgZW5vdWdoLCBzbyB3ZSBoYXZlIHRvIGVudW1lcmF0ZSBldmVyeSBjb25jcmV0ZSBzdWJjbGFzcyB3ZSB3YW50IHRvXG4gKiByZWNvZ25pemUuIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBgV29ya2Zsb3dSdW50aW1lRXJyb3JgIGNsYXNzIGhpZXJhcmNoeVxuICogaW4gYEB3b3JrZmxvdy9lcnJvcnNgLlxuICovXG5jb25zdCBSVU5USU1FX0VSUk9SX0NIRUNLUyA9IFtcbiAgV29ya2Zsb3dSdW50aW1lRXJyb3IuaXMsXG4gIFN0ZXBOb3RSZWdpc3RlcmVkRXJyb3IuaXMsXG4gIFdvcmtmbG93Tm90UmVnaXN0ZXJlZEVycm9yLmlzLFxuICAvLyBTREstbGV2ZWwgZW5jcnlwdGlvbiBmYWlsdXJlcyAobW9zdCBub3RhYmx5IEFFUy1HQ00gYXV0aC10YWdcbiAgLy8gbWlzbWF0Y2hlcyBzdXJmYWNpbmcgYXMgYSBuYXRpdmUgYE9wZXJhdGlvbkVycm9yYCBmcm9tXG4gIC8vIGBBRVNDaXBoZXJKb2Iub25Eb25lYCkgYXJlIHdyYXBwZWQgaW4gYFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3JgIGF0XG4gIC8vIHRoZSBlbmNyeXB0aW9uIG1vZHVsZSBib3VuZGFyeS5cbiAgUnVudGltZURlY3J5cHRpb25FcnJvci5pcyxcbl07XG5cbi8qKlxuICogQ2xhc3NpZnkgYW4gZXJyb3IgdGhhdCBjYXVzZWQgYSB3b3JrZmxvdyBydW4gdG8gZmFpbC5cbiAqXG4gKiBBZnRlciB0aGUgc3RydWN0dXJhbCBzZXBhcmF0aW9uIG9mIGluZnJhc3RydWN0dXJlIHZzIHVzZXIgY29kZSBlcnJvclxuICogaGFuZGxpbmcsIHRoZSBvbmx5IGVycm9ycyB0aGF0IHJlYWNoIHRoZSBgcnVuX2ZhaWxlZGAgdHJ5L2NhdGNoIGFyZTpcbiAqIC0gVXNlciBjb2RlIGVycm9ycyAodGhyb3dzIGZyb20gd29ya2Zsb3cgZnVuY3Rpb25zLCBwcm9wYWdhdGVkIHN0ZXAgZmFpbHVyZXMpXG4gKiAtIFdvcmtmbG93UnVudGltZUVycm9yIGFuZCBzdWJjbGFzc2VzIChtaXNzaW5nIHRpbWVzdGFtcHMsIHdvcmtmbG93L3N0ZXBcbiAqICAgbm90IHJlZ2lzdGVyZWQsIGNvcnJ1cHRlZCBldmVudCBsb2csIGV0Yy4pXG4gKlxuICogVXNlcyBlYWNoIHN1YmNsYXNzJ3MgYC5pcygpYCBzdGF0aWMgKGEgbmFtZS1iYXNlZCBkdWNrIGNoZWNrKSBpbnN0ZWFkIG9mXG4gKiBhIHNpbmdsZSBgaW5zdGFuY2VvZmAgY2hlY2sgYmVjYXVzZSB3b3JrZmxvd3MgZXhlY3V0ZSBpbiBhIHNlcGFyYXRlXG4gKiBgdm1gIHJlYWxtOiB0aGUgVk0tY29udGV4dCBgV29ya2Zsb3dSdW50aW1lRXJyb3JgIGFuZCB0aGUgaG9zdC1jb250ZXh0XG4gKiBvbmUgYXJlIGRpc3RpbmN0IGNsYXNzZXMsIHNvIGBpbnN0YW5jZW9mYCByZXR1cm5zIGBmYWxzZWAgZm9yIGFueSBlcnJvclxuICogdGhyb3duIGluc2lkZSB0aGUgd29ya2Zsb3cgVk0gYW5kIHdlJ2QgbWlzY2xhc3NpZnkgZ2VudWluZSBydW50aW1lXG4gKiBlcnJvcnMgYXMgdXNlciBlcnJvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1dvcmxkQ29udHJhY3RFcnJvcihlcnI6IHVua25vd24pOiBlcnIgaXMgV29ya2Zsb3dXb3JsZEVycm9yIHtcbiAgaWYgKCFXb3JrZmxvd1dvcmxkRXJyb3IuaXMoZXJyKSB8fCBlcnIuc3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjYXVzZSA9ICdjYXVzZScgaW4gZXJyID8gZXJyLmNhdXNlIDogdW5kZWZpbmVkO1xuICByZXR1cm4gKFxuICAgIChlcnIuY29kZSAhPT0gdW5kZWZpbmVkICYmIFdPUkxEX0NPTlRSQUNUX0VSUk9SX0NPREVTLmhhcyhlcnIuY29kZSkpIHx8XG4gICAgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnRmFpbGVkIHRvIHBhcnNlIHJlc3BvbnNlIGJvZHkgZm9yICcpIHx8XG4gICAgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnU2NoZW1hIHZhbGlkYXRpb24gZmFpbGVkIGZvciAnKSB8fFxuICAgICh0eXBlb2YgY2F1c2UgPT09ICdvYmplY3QnICYmXG4gICAgICBjYXVzZSAhPT0gbnVsbCAmJlxuICAgICAgJ25hbWUnIGluIGNhdXNlICYmXG4gICAgICBjYXVzZS5uYW1lID09PSAnWm9kRXJyb3InKVxuICApO1xufVxuXG4vKipcbiAqIFRydWUgd2hlbiBhbiBlcnJvciBmcm9tIGEgd29ybGQgKHdvcmtmbG93LXNlcnZlcikgY2FsbCBpcyBhIHRyYW5zaWVudFxuICogaW5mcmFzdHJ1Y3R1cmUgZmFpbHVyZSB0aGF0IHNob3VsZCBiZSByZXRyaWVkIGJ5IHJlZGVsaXZlcmluZyB0aGUgcXVldWVcbiAqIG1lc3NhZ2UsIHJhdGhlciB0aGFuIGZhaWxpbmcgdGhlIHJ1bi4gQSBmcmVzaCBpbnZvY2F0aW9uIHdpbGwgbGlrZWx5XG4gKiBzdWNjZWVkIG9uY2UgdGhlIGJhY2tlbmQgKG9yIHRoZSBmaXJld2FsbCBpbiBmcm9udCBvZiBpdCkgcmVjb3ZlcnMuXG4gKlxuICogLSBgVGhyb3R0bGVFcnJvcmAgKDQyOSk6IHJhdGUgbGltaXRlZCAvIGxvYWQgc2hlZFxuICogLSBgV29ya2Zsb3dXb3JsZEVycm9yYCB3aXRoIGBzdGF0dXMgPj0gNTAwYDogc2VydmVyLXNpZGUgZXJyb3JcbiAqIC0gYFdvcmtmbG93V29ybGRFcnJvcmAgd2l0aCBhIHJldHJ5YWJsZSB0cmFuc3BvcnQgYGNvZGVgIChgVFJBTlNQT1JUYCAvXG4gKiAgIGBUSU1FT1VUYCk6IHRoZSByZXF1ZXN0IG5ldmVyIHByb2R1Y2VkIGEgdXNhYmxlIHJlc3BvbnNlXG4gKlxuICogVXNlcyBgLmlzKClgIG5hbWUtYmFzZWQgZHVjayBjaGVja3MgKG5vdCBgaW5zdGFuY2VvZmApIGZvciB0aGUgc2FtZVxuICogY3Jvc3MtYHZtYC1yZWFsbSByZWFzb24gZGVzY3JpYmVkIG9uIGBjbGFzc2lmeVJ1bkVycm9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmV0cnlhYmxlV29ybGRFcnJvcihlcnI6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKFRocm90dGxlRXJyb3IuaXMoZXJyKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghV29ya2Zsb3dXb3JsZEVycm9yLmlzKGVycikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGVyci5zdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBlcnIuc3RhdHVzID49IDUwMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBlcnIuY29kZSAhPT0gdW5kZWZpbmVkICYmIFJFVFJZQUJMRV9XT1JMRF9FUlJPUl9DT0RFUy5oYXMoZXJyLmNvZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlSdW5FcnJvcihlcnI6IHVua25vd24pOiBSdW5FcnJvckNvZGUge1xuICBpZiAoUmVwbGF5RGl2ZXJnZW5jZUVycm9yLmlzKGVycikpIHtcbiAgICByZXR1cm4gUlVOX0VSUk9SX0NPREVTLlJFUExBWV9ESVZFUkdFTkNFO1xuICB9XG5cbiAgaWYgKENvcnJ1cHRlZEV2ZW50TG9nRXJyb3IuaXMoZXJyKSkge1xuICAgIHJldHVybiBSVU5fRVJST1JfQ09ERVMuQ09SUlVQVEVEX0VWRU5UX0xPRztcbiAgfVxuXG4gIGlmIChNYXhFdmVudHNFeGNlZWRlZEVycm9yLmlzKGVycikpIHtcbiAgICByZXR1cm4gUlVOX0VSUk9SX0NPREVTLk1BWF9FVkVOVFNfRVhDRUVERUQ7XG4gIH1cblxuICBpZiAoV29ya2Zsb3dEZXBsb3ltZW50TWlzbWF0Y2hFcnJvci5pcyhlcnIpKSB7XG4gICAgcmV0dXJuIFJVTl9FUlJPUl9DT0RFUy5ERVBMT1lNRU5UX01JU01BVENIO1xuICB9XG5cbiAgLy8gV29ybGQtbGF5ZXIgZmF1bHRzLCBib3RoIGEgbWFsZm9ybWVkIHJlc3BvbnNlIChjb250cmFjdCB2aW9sYXRpb24pIGFuZCBhXG4gIC8vIHRyYW5zaWVudCBpbmZyYXN0cnVjdHVyZSBmYWlsdXJlICh0aHJvdHRsZSAvIDV4eCAvIHRyYW5zcG9ydCAvIHRpbWVvdXQsXG4gIC8vIGUuZy4gYSBmaXJld2FsbCBjaGFsbGVuZ2UpLCBhcmUgdGhlIGJhY2tlbmQncyBmYXVsdCwgbm90IHRoZSB1c2VyJ3MuXG4gIC8vIEJ1Y2tldCB0aGVtIHVuZGVyIFdPUkxEX0NPTlRSQUNUX0VSUk9SIHJhdGhlciB0aGFuIFVTRVJfRVJST1Igc28gZGFzaGJvYXJkc1xuICAvLyBhdHRyaWJ1dGUgYW4gb3V0YWdlIGNvcnJlY3RseS4gTm90ZSB0aGUgcmV0cnlhYmxlIHZhcmlhbnRzIGFyZSBub3JtYWxseVxuICAvLyByZWRlbGl2ZXJlZCB2aWEgdGhlIHF1ZXVlIChzZWUgYGlzUmV0cnlhYmxlV29ybGRFcnJvcmApIGFuZCBvbmx5IHJlYWNoIHRoaXNcbiAgLy8gdGVybWluYWwgY2xhc3NpZmljYXRpb24gaWYgdGhlIHJ1biB1bHRpbWF0ZWx5IGdpdmVzIHVwLlxuICBpZiAoaXNXb3JsZENvbnRyYWN0RXJyb3IoZXJyKSB8fCBpc1JldHJ5YWJsZVdvcmxkRXJyb3IoZXJyKSkge1xuICAgIHJldHVybiBSVU5fRVJST1JfQ09ERVMuV09STERfQ09OVFJBQ1RfRVJST1I7XG4gIH1cblxuICBmb3IgKGNvbnN0IGlzTWF0Y2ggb2YgUlVOVElNRV9FUlJPUl9DSEVDS1MpIHtcbiAgICBpZiAoaXNNYXRjaChlcnIpKSB7XG4gICAgICByZXR1cm4gUlVOX0VSUk9SX0NPREVTLlJVTlRJTUVfRVJST1I7XG4gICAgfVxuICB9XG4gIHJldHVybiBSVU5fRVJST1JfQ09ERVMuVVNFUl9FUlJPUjtcbn1cbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NpZnktZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xhc3NpZnktZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFFZixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsa0JBQWtCLEdBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUN6QyxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGVBQWUsQ0FBQyxvQkFBb0I7Q0FDckMsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUMxQyxXQUFXO0lBQ1gsU0FBUztJQUNULGVBQWUsQ0FBQyxZQUFZO0NBQzdCLENBQUMsQ0FBQztBQUVIOzs7Ozs7R0FNRztBQUNILE1BQU0sb0JBQW9CLEdBQUc7SUFDM0Isb0JBQW9CLENBQUMsRUFBRTtJQUN2QixzQkFBc0IsQ0FBQyxFQUFFO0lBQ3pCLDBCQUEwQixDQUFDLEVBQUU7SUFDN0IsK0RBQStEO0lBQy9ELHlEQUF5RDtJQUN6RCxvRUFBb0U7SUFDcEUsa0NBQWtDO0lBQ2xDLHNCQUFzQixDQUFDLEVBQUU7Q0FDMUIsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFZO0lBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxPQUFP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LE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29ycnVwdGVkRXZlbnRMb2dFcnJvcixcbiAgTWF4RXZlbnRzRXhjZWVkZWRFcnJvcixcbiAgUmVwbGF5RGl2ZXJnZW5jZUVycm9yLFxuICBSVU5fRVJST1JfQ09ERVMsXG4gIHR5cGUgUnVuRXJyb3JDb2RlLFxuICBSdW50aW1lRGVjcnlwdGlvbkVycm9yLFxuICBTdGVwTm90UmVnaXN0ZXJlZEVycm9yLFxuICBTdHJlYW1FcnJvcixcbiAgVGhyb3R0bGVFcnJvcixcbiAgV29ya2Zsb3dEZXBsb3ltZW50TWlzbWF0Y2hFcnJvcixcbiAgV29ya2Zsb3dOb3RSZWdpc3RlcmVkRXJyb3IsXG4gIFdvcmtmbG93UnVudGltZUVycm9yLFxuICBXb3JrZmxvd1dvcmxkRXJyb3IsXG59IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuXG5jb25zdCBXT1JMRF9DT05UUkFDVF9FUlJPUl9DT0RFUyA9IG5ldyBTZXQoW1xuICAnUEFSU0VfRVJST1InLFxuICAnU0NIRU1BX1ZBTElEQVRJT04nLFxuICBSVU5fRVJST1JfQ09ERVMuV09STERfQ09OVFJBQ1RfRVJST1IsXG5dKTtcblxuLyoqXG4gKiBgV29ya2Zsb3dXb3JsZEVycm9yLmNvZGVgIHZhbHVlcyB0aGF0IG1hcmsgYSB0cmFuc2llbnQgdHJhbnNwb3J0IGZhaWx1cmVcbiAqIChzZXQgYnkgd29ybGQtdmVyY2VsJ3MgSFRUUCBjbGllbnQpOiBgVFJBTlNQT1JUYCBjb3ZlcnMgYW4gZXhoYXVzdGVkXG4gKiBSZXRyeUFnZW50IChgVU5EX0VSUl9SRVFfUkVUUllgLCBlLmcuIHRoZSBmaXJld2FsbCBpbiBmcm9udCBvZlxuICogd29ya2Zsb3ctc2VydmVyIHNoZWRkaW5nIGxvYWQgd2l0aCA0MjkvNTAzKSwgYSBkcm9wcGVkIHNvY2tldCwgb3IgYVxuICogY29ubmVjdC9ETlMgZmFpbHVyZTsgYFRJTUVPVVRgIGNvdmVycyBhIHJlcXVlc3QgdGhhdCBleGNlZWRlZCB0aGUgY2xpZW50XG4gKiB0aW1lb3V0LiBCb3RoIGFyZSBpbmZyYXN0cnVjdHVyZSBmYWlsdXJlcyBhIGZyZXNoIGludm9jYXRpb24gY2FuIHJlY292ZXJcbiAqIGZyb20uIEtlcHQgZGlzdGluY3QgZnJvbSBgV09STERfQ09OVFJBQ1RfRVJST1JfQ09ERVNgIHNvIGEgdHJhbnNwb3J0IGJsaXAgaXNcbiAqIG5ldmVyIG1pc2NsYXNzaWZpZWQgYXMgdGhlIHNlcnZlciByZXR1cm5pbmcgYSBtYWxmb3JtZWQgcmVzcG9uc2UuXG4gKi9cbmNvbnN0IFJFVFJZQUJMRV9XT1JMRF9FUlJPUl9DT0RFUyA9IG5ldyBTZXQoW1xuICAnVFJBTlNQT1JUJyxcbiAgJ1RJTUVPVVQnLFxuICBSVU5fRVJST1JfQ09ERVMuU1RSRUFNX0VSUk9SLFxuXSk7XG5cbi8qKlxuICogU2V0IG9mIGVycm9yIG5hbWVzIHRoYXQgc2hvdWxkIGNsYXNzaWZ5IGFzIGdlbmVyaWMgYFJVTlRJTUVfRVJST1JgLiBFYWNoXG4gKiBgKi5pcygpYCBzdGF0aWMgZG9lcyBhIG5hbWUtYmFzZWQgZHVjayBjaGVjaywgc28gc3ViY2xhc3NpbmcgYWxvbmUgaXNcbiAqIG5vdCBlbm91Z2gsIHNvIHdlIGhhdmUgdG8gZW51bWVyYXRlIGV2ZXJ5IGNvbmNyZXRlIHN1YmNsYXNzIHdlIHdhbnQgdG9cbiAqIHJlY29nbml6ZS4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIGBXb3JrZmxvd1J1bnRpbWVFcnJvcmAgY2xhc3MgaGllcmFyY2h5XG4gKiBpbiBgQHdvcmtmbG93L2Vycm9yc2AuXG4gKi9cbmNvbnN0IFJVTlRJTUVfRVJST1JfQ0hFQ0tTID0gW1xuICBXb3JrZmxvd1J1bnRpbWVFcnJvci5pcyxcbiAgU3RlcE5vdFJlZ2lzdGVyZWRFcnJvci5pcyxcbiAgV29ya2Zsb3dOb3RSZWdpc3RlcmVkRXJyb3IuaXMsXG4gIC8vIFNESy1sZXZlbCBlbmNyeXB0aW9uIGZhaWx1cmVzIChtb3N0IG5vdGFibHkgQUVTLUdDTSBhdXRoLXRhZ1xuICAvLyBtaXNtYXRjaGVzIHN1cmZhY2luZyBhcyBhIG5hdGl2ZSBgT3BlcmF0aW9uRXJyb3JgIGZyb21cbiAgLy8gYEFFU0NpcGhlckpvYi5vbkRvbmVgKSBhcmUgd3JhcHBlZCBpbiBgUnVudGltZURlY3J5cHRpb25FcnJvcmAgYXRcbiAgLy8gdGhlIGVuY3J5cHRpb24gbW9kdWxlIGJvdW5kYXJ5LlxuICBSdW50aW1lRGVjcnlwdGlvbkVycm9yLmlzLFxuXTtcblxuLyoqXG4gKiBDbGFzc2lmeSBhbiBlcnJvciB0aGF0IGNhdXNlZCBhIHdvcmtmbG93IHJ1biB0byBmYWlsLlxuICpcbiAqIEFmdGVyIHRoZSBzdHJ1Y3R1cmFsIHNlcGFyYXRpb24gb2YgaW5mcmFzdHJ1Y3R1cmUgdnMgdXNlciBjb2RlIGVycm9yXG4gKiBoYW5kbGluZywgdGhlIG9ubHkgZXJyb3JzIHRoYXQgcmVhY2ggdGhlIGBydW5fZmFpbGVkYCB0cnkvY2F0Y2ggYXJlOlxuICogLSBVc2VyIGNvZGUgZXJyb3JzICh0aHJvd3MgZnJvbSB3b3JrZmxvdyBmdW5jdGlvbnMsIHByb3BhZ2F0ZWQgc3RlcCBmYWlsdXJlcylcbiAqIC0gV29ya2Zsb3dSdW50aW1lRXJyb3IgYW5kIHN1YmNsYXNzZXMgKG1pc3NpbmcgdGltZXN0YW1wcywgd29ya2Zsb3cvc3RlcFxuICogICBub3QgcmVnaXN0ZXJlZCwgY29ycnVwdGVkIGV2ZW50IGxvZywgZXRjLilcbiAqXG4gKiBVc2VzIGVhY2ggc3ViY2xhc3MncyBgLmlzKClgIHN0YXRpYyAoYSBuYW1lLWJhc2VkIGR1Y2sgY2hlY2spIGluc3RlYWQgb2ZcbiAqIGEgc2luZ2xlIGBpbnN0YW5jZW9mYCBjaGVjayBiZWNhdXNlIHdvcmtmbG93cyBleGVjdXRlIGluIGEgc2VwYXJhdGVcbiAqIGB2bWAgcmVhbG06IHRoZSBWTS1jb250ZXh0IGBXb3JrZmxvd1J1bnRpbWVFcnJvcmAgYW5kIHRoZSBob3N0LWNvbnRleHRcbiAqIG9uZSBhcmUgZGlzdGluY3QgY2xhc3Nlcywgc28gYGluc3RhbmNlb2ZgIHJldHVybnMgYGZhbHNlYCBmb3IgYW55IGVycm9yXG4gKiB0aHJvd24gaW5zaWRlIHRoZSB3b3JrZmxvdyBWTSBhbmQgd2UnZCBtaXNjbGFzc2lmeSBnZW51aW5lIHJ1bnRpbWVcbiAqIGVycm9ycyBhcyB1c2VyIGVycm9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV29ybGRDb250cmFjdEVycm9yKGVycjogdW5rbm93bik6IGVyciBpcyBXb3JrZmxvd1dvcmxkRXJyb3Ige1xuICBpZiAoIVdvcmtmbG93V29ybGRFcnJvci5pcyhlcnIpIHx8IGVyci5zdGF0dXMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNhdXNlID0gJ2NhdXNlJyBpbiBlcnIgPyBlcnIuY2F1c2UgOiB1bmRlZmluZWQ7XG4gIHJldHVybiAoXG4gICAgKGVyci5jb2RlICE9PSB1bmRlZmluZWQgJiYgV09STERfQ09OVFJBQ1RfRVJST1JfQ09ERVMuaGFzKGVyci5jb2RlKSkgfHxcbiAgICBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdGYWlsZWQgdG8gcGFyc2UgcmVzcG9uc2UgYm9keSBmb3IgJykgfHxcbiAgICBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdTY2hlbWEgdmFsaWRhdGlvbiBmYWlsZWQgZm9yICcpIHx8XG4gICAgKHR5cGVvZiBjYXVzZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIGNhdXNlICE9PSBudWxsICYmXG4gICAgICAnbmFtZScgaW4gY2F1c2UgJiZcbiAgICAgIGNhdXNlLm5hbWUgPT09ICdab2RFcnJvcicpXG4gICk7XG59XG5cbi8qKlxuICogVHJ1ZSB3aGVuIGFuIGVycm9yIGZyb20gYSB3b3JsZCAod29ya2Zsb3ctc2VydmVyKSBjYWxsIGlzIGEgdHJhbnNpZW50XG4gKiBpbmZyYXN0cnVjdHVyZSBmYWlsdXJlIHRoYXQgc2hvdWxkIGJlIHJldHJpZWQgYnkgcmVkZWxpdmVyaW5nIHRoZSBxdWV1ZVxuICogbWVzc2FnZSwgcmF0aGVyIHRoYW4gZmFpbGluZyB0aGUgcnVuLiBBIGZyZXNoIGludm9jYXRpb24gd2lsbCBsaWtlbHlcbiAqIHN1Y2NlZWQgb25jZSB0aGUgYmFja2VuZCAob3IgdGhlIGZpcmV3YWxsIGluIGZyb250IG9mIGl0KSByZWNvdmVycy5cbiAqXG4gKiAtIGBUaHJvdHRsZUVycm9yYCAoNDI5KTogcmF0ZSBsaW1pdGVkIC8gbG9hZCBzaGVkXG4gKiAtIGBXb3JrZmxvd1dvcmxkRXJyb3JgIHdpdGggYHN0YXR1cyA+PSA1MDBgOiBzZXJ2ZXItc2lkZSBlcnJvclxuICogLSBgV29ya2Zsb3dXb3JsZEVycm9yYCB3aXRoIGEgcmV0cnlhYmxlIHRyYW5zcG9ydCBgY29kZWAgKGBUUkFOU1BPUlRgIC9cbiAqICAgYFRJTUVPVVRgKTogdGhlIHJlcXVlc3QgbmV2ZXIgcHJvZHVjZWQgYSB1c2FibGUgcmVzcG9uc2VcbiAqXG4gKiBVc2VzIGAuaXMoKWAgbmFtZS1iYXNlZCBkdWNrIGNoZWNrcyAobm90IGBpbnN0YW5jZW9mYCkgZm9yIHRoZSBzYW1lXG4gKiBjcm9zcy1gdm1gLXJlYWxtIHJlYXNvbiBkZXNjcmliZWQgb24gYGNsYXNzaWZ5UnVuRXJyb3JgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZXRyeWFibGVXb3JsZEVycm9yKGVycjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoVGhyb3R0bGVFcnJvci5pcyhlcnIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKFN0cmVhbUVycm9yLmlzKGVycikpIHtcbiAgICByZXR1cm4gZXJyLnN0YXR1cyA9PT0gdW5kZWZpbmVkIHx8IGVyci5zdGF0dXMgPj0gNTAwO1xuICB9XG4gIGlmICghV29ya2Zsb3dXb3JsZEVycm9yLmlzKGVycikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGVyci5zdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBlcnIuc3RhdHVzID49IDUwMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBlcnIuY29kZSAhPT0gdW5kZWZpbmVkICYmIFJFVFJZQUJMRV9XT1JMRF9FUlJPUl9DT0RFUy5oYXMoZXJyLmNvZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlSdW5FcnJvcihlcnI6IHVua25vd24pOiBSdW5FcnJvckNvZGUge1xuICBpZiAoUmVwbGF5RGl2ZXJnZW5jZUVycm9yLmlzKGVycikpIHtcbiAgICByZXR1cm4gUlVOX0VSUk9SX0NPREVTLlJFUExBWV9ESVZFUkdFTkNFO1xuICB9XG5cbiAgaWYgKENvcnJ1cHRlZEV2ZW50TG9nRXJyb3IuaXMoZXJyKSkge1xuICAgIHJldHVybiBSVU5fRVJST1JfQ09ERVMuQ09SUlVQVEVEX0VWRU5UX0xPRztcbiAgfVxuXG4gIGlmIChNYXhFdmVudHNFeGNlZWRlZEVycm9yLmlzKGVycikpIHtcbiAgICByZXR1cm4gUlVOX0VSUk9SX0NPREVTLk1BWF9FVkVOVFNfRVhDRUVERUQ7XG4gIH1cblxuICBpZiAoV29ya2Zsb3dEZXBsb3ltZW50TWlzbWF0Y2hFcnJvci5pcyhlcnIpKSB7XG4gICAgcmV0dXJuIFJVTl9FUlJPUl9DT0RFUy5ERVBMT1lNRU5UX01JU01BVENIO1xuICB9XG5cbiAgLy8gV29ybGQtbGF5ZXIgZmF1bHRzLCBib3RoIGEgbWFsZm9ybWVkIHJlc3BvbnNlIChjb250cmFjdCB2aW9sYXRpb24pIGFuZCBhXG4gIC8vIHRyYW5zaWVudCBpbmZyYXN0cnVjdHVyZSBmYWlsdXJlICh0aHJvdHRsZSAvIDV4eCAvIHRyYW5zcG9ydCAvIHRpbWVvdXQsXG4gIC8vIGUuZy4gYSBmaXJld2FsbCBjaGFsbGVuZ2UpLCBhcmUgdGhlIGJhY2tlbmQncyBmYXVsdCwgbm90IHRoZSB1c2VyJ3MuXG4gIC8vIEJ1Y2tldCB0aGVtIHVuZGVyIFdPUkxEX0NPTlRSQUNUX0VSUk9SIHJhdGhlciB0aGFuIFVTRVJfRVJST1Igc28gZGFzaGJvYXJkc1xuICAvLyBhdHRyaWJ1dGUgYW4gb3V0YWdlIGNvcnJlY3RseS4gTm90ZSB0aGUgcmV0cnlhYmxlIHZhcmlhbnRzIGFyZSBub3JtYWxseVxuICAvLyByZWRlbGl2ZXJlZCB2aWEgdGhlIHF1ZXVlIChzZWUgYGlzUmV0cnlhYmxlV29ybGRFcnJvcmApIGFuZCBvbmx5IHJlYWNoIHRoaXNcbiAgLy8gdGVybWluYWwgY2xhc3NpZmljYXRpb24gaWYgdGhlIHJ1biB1bHRpbWF0ZWx5IGdpdmVzIHVwLlxuICBpZiAoU3RyZWFtRXJyb3IuaXMoZXJyKSkge1xuICAgIHJldHVybiBSVU5fRVJST1JfQ09ERVMuU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgaWYgKGlzV29ybGRDb250cmFjdEVycm9yKGVycikgfHwgaXNSZXRyeWFibGVXb3JsZEVycm9yKGVycikpIHtcbiAgICByZXR1cm4gUlVOX0VSUk9SX0NPREVTLldPUkxEX0NPTlRSQUNUX0VSUk9SO1xuICB9XG5cbiAgZm9yIChjb25zdCBpc01hdGNoIG9mIFJVTlRJTUVfRVJST1JfQ0hFQ0tTKSB7XG4gICAgaWYgKGlzTWF0Y2goZXJyKSkge1xuICAgICAgcmV0dXJuIFJVTl9FUlJPUl9DT0RFUy5SVU5USU1FX0VSUk9SO1xuICAgIH1cbiAgfVxuICByZXR1cm4gUlVOX0VSUk9SX0NPREVTLlVTRVJfRVJST1I7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"describe-error.d.ts","sourceRoot":"","sources":["../src/describe-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAC;AAS1B;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,YAAY,CAAC;IACxB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,oBAAoB,GAC3B,gBAAgB,CAqDlB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,SAAS,CAAC,EAAE,YAAY,GACvB,gBAAgB,CAsFlB"}
1
+ {"version":3,"file":"describe-error.d.ts","sourceRoot":"","sources":["../src/describe-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAC;AAS1B;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,YAAY,CAAC;IACxB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiDD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,oBAAoB,GAC3B,gBAAgB,CA4DlB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,SAAS,CAAC,EAAE,YAAY,GACvB,gBAAgB,CA8FlB"}
@@ -20,6 +20,7 @@ const CORRUPTED_EVENT_LOG_HINT = 'The workflow event log contains orphaned or mi
20
20
  const REPLAY_TIMEOUT_HINT = 'The workflow replay between step boundaries took too long. This bounds workflow-VM and event-log replay time only — step bodies (`"use step"` functions) are excluded. This usually means the event log is unusually large or the workflow function is doing heavy synchronous work in workflow code outside of step bodies. Override the default budget via the WORKFLOW_REPLAY_TIMEOUT_MS env var if needed.';
21
21
  const MAX_DELIVERIES_HINT = 'The workflow queue exceeded its max-delivery budget. This usually indicates a persistent runtime failure — check the most recent stack traces for the underlying cause.';
22
22
  const MAX_EVENTS_HINT = 'The workflow exceeded the maximum number of events per run. This usually means unbounded work in the workflow function — e.g. a loop that keeps creating steps without terminating. Break long-running workflows into child workflows to stay under the limit.';
23
+ const STREAM_ERROR_HINT = 'Workflow stream infrastructure failed while reading or writing data. This is an SDK or backend failure, not an error in your workflow code; please retry the run and report persistent failures with the runId.';
23
24
  const WORLD_CONTRACT_HINT = 'The workflow backend returned data that violated the SDK contract. This is not retryable; please report it with the stack trace and runId.';
24
25
  const DEPLOYMENT_MISMATCH_HINT = "The run was delivered to a deployment other than the deployment it is pinned to, and was stopped to protect against code-skew errors after the runtime failed to re-route it there. Verify that the run's deployment is still available and that queue callbacks route to it.";
25
26
  function normalizeErrorCode(code) {
@@ -71,6 +72,13 @@ export function describeRunError(signal) {
71
72
  hint: CORRUPTED_EVENT_LOG_HINT,
72
73
  };
73
74
  }
75
+ if (errorCode === RUN_ERROR_CODES.STREAM_ERROR) {
76
+ return {
77
+ attribution: 'sdk',
78
+ errorCode,
79
+ hint: STREAM_ERROR_HINT,
80
+ };
81
+ }
74
82
  if (errorCode === RUN_ERROR_CODES.WORLD_CONTRACT_ERROR) {
75
83
  return {
76
84
  attribution: 'sdk',
@@ -177,6 +185,13 @@ export function describeError(err, errorCode) {
177
185
  hint: CORRUPTED_EVENT_LOG_HINT,
178
186
  };
179
187
  }
188
+ if (effectiveCode === RUN_ERROR_CODES.STREAM_ERROR) {
189
+ return {
190
+ attribution: 'sdk',
191
+ errorCode: effectiveCode,
192
+ hint: STREAM_ERROR_HINT,
193
+ };
194
+ }
180
195
  if (effectiveCode === RUN_ERROR_CODES.WORLD_CONTRACT_ERROR) {
181
196
  return {
182
197
  attribution: 'sdk',
@@ -186,4 +201,4 @@ export function describeError(err, errorCode) {
186
201
  }
187
202
  return { attribution: 'user', errorCode: effectiveCode };
188
203
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVzY3JpYmUtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixlQUFlLEVBRWYsa0JBQWtCLEVBQ2xCLG9CQUFvQixHQUNyQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQixpQ0FBaUMsR0FDbEMsTUFBTSxxQkFBcUIsQ0FBQztBQTRDN0IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNsQywyQkFBMkI7SUFDM0IsdUJBQXVCO0lBQ3ZCLGlDQUFpQztJQUNqQyxtQ0FBbUM7Q0FDcEMsQ0FBQyxDQUFDO0FBRUgsU0FBUyx1QkFBdUIsQ0FBQyxHQUFZO0lBQzNDLE9BQU8sQ0FDTCxHQUFHLFlBQVkseUJBQXlCO1FBQ3hDLEdBQUcsWUFBWSxxQkFBcUI7UUFDcEMsR0FBRyxZQUFZLCtCQUErQjtRQUM5QyxHQUFHLFlBQVksaUNBQWlDLENBQ2pELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSx3QkFBd0IsR0FDNUIsMkpBQTJKLENBQUM7QUFDOUosTUFBTSxrQkFBa0IsR0FDdEIsd0lBQXdJLENBQUM7QUFDM0ksTUFBTSxrQkFBa0IsR0FDdEIsNklBQTZJLENBQUM7QUFDaEosTUFBTSx3QkFBd0IsR0FDNUIsZ0tBQWdLLENBQUM7QUFDbkssTUFBTSxtQkFBbUIsR0FDdkIsZ1pBQWdaLENBQUM7QUFDblosTUFBTSxtQkFBbUIsR0FDdkIseUtBQXlLLENBQUM7QUFDNUssTUFBTSxlQUFlLEdBQ25CLGdRQUFnUSxDQUFDO0FBQ25RLE1BQU0sbUJBQW1CLEdBQ3ZCLDRJQUE0SSxDQUFDO0FBQy9JLE1BQU0sd0JBQXdCLEdBQzVCLCtRQUEr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YSxFQUFFLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvcnJ1cHRlZEV2ZW50TG9nRXJyb3IsXG4gIFJVTl9FUlJPUl9DT0RFUyxcbiAgdHlwZSBSdW5FcnJvckNvZGUsXG4gIFNlcmlhbGl6YXRpb25FcnJvcixcbiAgV29ya2Zsb3dSdW50aW1lRXJyb3IsXG59IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHsgY2xhc3NpZnlSdW5FcnJvciB9IGZyb20gJy4vY2xhc3NpZnktZXJyb3IuanMnO1xuaW1wb3J0IHtcbiAgTm90SW5TdGVwQ29udGV4dEVycm9yLFxuICBOb3RJbldvcmtmbG93Q29udGV4dEVycm9yLFxuICBOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yLFxuICBVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0RXJyb3IsXG59IGZyb20gJy4vY29udGV4dC1lcnJvcnMuanMnO1xuXG4vKipcbiAqIEF0dHJpYnV0aW9uIG9mIGEgd29ya2Zsb3cvc3RlcCBmYWlsdXJlIGZvciBwcmVzZW50YXRpb24uXG4gKlxuICogLSBgdXNlcmA6IHRoZSBlcnJvciBjYW1lIGZyb20gY3VzdG9tZXIgY29kZSAoYSBzdGVwIG9yIHdvcmtmbG93IGZ1bmN0aW9uXG4gKiAgIHRocmV3LCBvciBhIHZhbHVlIHRoZXkgcGFzc2VkIGFjcm9zcyBhIGJvdW5kYXJ5IHdhc24ndCBzZXJpYWxpemFibGUpLlxuICogLSBgc2RrYDogdGhlIFNESyBwcm9kdWNlZCB0aGUgZXJyb3IgaXRzZWxmOiBhbiBpbnRlcm5hbCBpbnZhcmlhbnQgYnJva2UsXG4gKiAgIG9yIGEgcnVudGltZSBndWFyZCByZWplY3RlZCB0aGUgY2FsbC4gVGhlc2Ugc2hvdWxkIGJlIHJhcmU7IHdoZW4gdGhleVxuICogICBoYXBwZW4gd2Ugd2FudCB0byBmcmFtZSB0aGUgdGVybWluYWwgb3V0cHV0IGFzIFwidGhpcyBpcyB1cywgbm90IHlvdS5cIlxuICovXG5leHBvcnQgdHlwZSBFcnJvckF0dHJpYnV0aW9uID0gJ3VzZXInIHwgJ3Nkayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JEZXNjcmlwdGlvbiB7XG4gIGF0dHJpYnV0aW9uOiBFcnJvckF0dHJpYnV0aW9uO1xuICBlcnJvckNvZGU6IFJ1bkVycm9yQ29kZTtcbiAgLyoqXG4gICAqIFNob3J0LCBjbGFzcy1hd2FyZSBoaW50IHRvIGhlbHAgYSB1c2VyIHVuZGVyc3RhbmQgd2hhdCB0aGUgZXJyb3IgbWVhbnMuXG4gICAqIE9ubHkgc2V0IGZvciB3ZWxsLWtub3duIFNESyBlcnJvciBjbGFzc2VzIChTZXJpYWxpemF0aW9uRXJyb3IsXG4gICAqIFdvcmtmbG93UnVudGltZUVycm9yLCBjb250ZXh0LXZpb2xhdGlvbiBlcnJvcnMpOyBgdW5kZWZpbmVkYCBmb3IgcGxhaW5cbiAgICogdXNlciBlcnJvcnMsIHdoZXJlIHRoZSBzdGFjayBpcyBhbHJlYWR5IHRoZSBtb3N0IHVzZWZ1bCB0aGluZyB0byBzaG93LlxuICAgKi9cbiAgaGludD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFcnJvciBzaWduYWwgZmllbGRzIGNhcnJpZWQgb24gcGVyc2lzdGVkIGZhaWx1cmUgZXZlbnRzIChlLmcuXG4gKiBgcnVuX2ZhaWxlZGAgLyBgc3RlcF9mYWlsZWRgKS4gVGhlIHNoYXBlIGlzIGludGVudGlvbmFsbHkgbG9vc2U6XG4gKlxuICogLSBgZXJyb3JDb2RlYCBpcyB0eXBlZCBhcyBgc3RyaW5nYCByYXRoZXIgdGhhbiBgUnVuRXJyb3JDb2RlYCBiZWNhdXNlXG4gKiAgIHRoZSB2YWx1ZSBjb21lcyBmcm9tIHN0b3JlZCBKU09OL0NCT1IgYW5kIG1heSBwcmVkYXRlIHRoZSBjdXJyZW50XG4gKiAgIGVudW0sIHNvIGNhbGxlcnMgc2hvdWxkIG5vdCBuYXJyb3cgb24gaXQgYmxpbmRseS4gVmFsdWVzIHRoYXQgZG9uJ3RcbiAqICAgbWF0Y2ggYSBrbm93biBgUlVOX0VSUk9SX0NPREVTYCBlbnRyeSBmYWxsIHRocm91Z2ggdG8gVVNFUl9FUlJPUi5cbiAqIC0gYGVycm9yTmFtZWAgaXMgdGhlIHRocm93biBgRXJyb3IjbmFtZWAuIEl0IGlzIG5vdCB1bml2ZXJzYWxseVxuICogICBwZXJzaXN0ZWQgdG9kYXk7IGNhbGxlcnMgdGhhdCBoYXZlIGFjY2VzcyB0byBpdCAoZWl0aGVyIHZpYSBhblxuICogICBpbi1tZW1vcnkgdGhyb3cgb3IgYSByaWNoZXIgcGF5bG9hZCkgY2FuIHBhc3MgaXQgaW4gdG8gc2hhcnBlblxuICogICB0aGUgYXR0cmlidXRpb24gYW5kIGhpbnQuIFdoZW4gYWJzZW50LCBgZGVzY3JpYmVSdW5FcnJvcmAgc3RpbGxcbiAqICAgcmV0dXJucyBhIHNlbnNpYmxlIGF0dHJpYnV0aW9uIGZyb20gYGVycm9yQ29kZWAgYWxvbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVyc2lzdGVkRXJyb3JTaWduYWwge1xuICBlcnJvckNvZGU/OiBzdHJpbmc7XG4gIGVycm9yTmFtZT86IHN0cmluZztcbn1cblxuY29uc3QgQ09OVEVYVF9FUlJPUl9OQU1FUyA9IG5ldyBTZXQoW1xuICAnTm90SW5Xb3JrZmxvd0NvbnRleHRFcnJvcicsXG4gICdOb3RJblN0ZXBDb250ZXh0RXJyb3InLFxuICAnTm90SW5Xb3JrZmxvd09yU3RlcENvbnRleHRFcnJvcicsXG4gICdVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0RXJyb3InLFxuXSk7XG5cbmZ1bmN0aW9uIGlzQ29udGV4dFZpb2xhdGlvbkVycm9yKGVycjogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGVyciBpbnN0YW5jZW9mIE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3IgfHxcbiAgICBlcnIgaW5zdGFuY2VvZiBOb3RJblN0ZXBDb250ZXh0RXJyb3IgfHxcbiAgICBlcnIgaW5zdGFuY2VvZiBOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yIHx8XG4gICAgZXJyIGluc3RhbmNlb2YgVW5hdmFpbGFibGVJbldvcmtmbG93Q29udGV4dEVycm9yXG4gICk7XG59XG5cbmNvbnN0IFNFUklBTElaQVRJT05fRVJST1JfSElOVCA9XG4gICdBIHZhbHVlIHBhc3NlZCBhY3Jvc3MgYSB3b3JrZmxvdy9zdGVwIGJvdW5kYXJ5IGNvdWxkIG5vdCBiZSBzZXJpYWxpemVkLiBTZWUgdGhlIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBvZmZlbmRpbmcgcGF0aCBhbmQgdGhlIExlYXJuIE1vcmUgbGluayBmb3IgZGV0YWlscy4nO1xuY29uc3QgQ09OVEVYVF9FUlJPUl9ISU5UID1cbiAgJ0Egd29ya2Zsb3ctb25seSBvciBzdGVwLW9ubHkgQVBJIHdhcyBjYWxsZWQgZnJvbSB0aGUgd3JvbmcgY29udGV4dC4gVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4YWN0IEFQSSBhbmQgaG93IHRvIG1vdmUgdGhlIGNhbGwuJztcbmNvbnN0IFJVTlRJTUVfRVJST1JfSElOVCA9XG4gICdUaGlzIGlzIGFuIGludGVybmFsIHdvcmtmbG93IFNESyBlcnJvciwgbm90IGEgYnVnIGluIHlvdXIgY29kZS4gSWYgaXQga2VlcHMgaGFwcGVuaW5nLCBwbGVhc2UgcmVwb3J0IGl0IHdpdGggdGhlIHN0YWNrIHRyYWNlIGFuZCB0aGUgcnVuSWQuJztcbmNvbnN0IENPUlJVUFRFRF9FVkVOVF9MT0dfSElOVCA9XG4gICdUaGUgd29ya2Zsb3cgZXZlbnQgbG9nIGNvbnRhaW5zIG9ycGhhbmVkIG9yIG1pc21hdGNoZWQgZXZlbnRzIGFuZCBjYW5ub3QgYmUgcmVwbGF5ZWQuIFRoaXMgaXMgYW4gaW50ZXJuYWwgd29ya2Zsb3cgU0RLIGVycm9yOyBwbGVhc2UgcmVwb3J0IGl0IHdpdGggdGhlIHJ1bklkLic7XG5jb25zdCBSRVBMQVlfVElNRU9VVF9ISU5UID1cbiAgJ1RoZSB3b3JrZmxvdyByZXBsYXkgYmV0d2VlbiBzdGVwIGJvdW5kYXJpZXMgdG9vayB0b28gbG9uZy4gVGhpcyBib3VuZHMgd29ya2Zsb3ctVk0gYW5kIGV2ZW50LWxvZyByZXBsYXkgdGltZSBvbmx5IOKAlCBzdGVwIGJvZGllcyAoYFwidXNlIHN0ZXBcImAgZnVuY3Rpb25zKSBhcmUgZXhjbHVkZWQuIFRoaXMgdXN1YWxseSBtZWFucyB0aGUgZXZlbnQgbG9nIGlzIHVudXN1YWxseSBsYXJnZSBvciB0aGUgd29ya2Zsb3cgZnVuY3Rpb24gaXMgZG9pbmcgaGVhdnkgc3luY2hyb25vdXMgd29yayBpbiB3b3JrZmxvdyBjb2RlIG91dHNpZGUgb2Ygc3RlcCBib2RpZXMuIE92ZXJyaWRlIHRoZSBkZWZhdWx0IGJ1ZGdldCB2aWEgdGhlIFdPUktGTE9XX1JFUExBWV9USU1FT1VUX01TIGVudiB2YXIgaWYgbmVlZGVkLic7XG5jb25zdCBNQVhfREVMSVZFUklFU19ISU5UID1cbiAgJ1RoZSB3b3JrZmxvdyBxdWV1ZSBleGNlZWRlZCBpdHMgbWF4LWRlbGl2ZXJ5IGJ1ZGdldC4gVGhpcyB1c3VhbGx5IGluZGljYXRlcyBhIHBlcnNpc3RlbnQgcnVudGltZSBmYWlsdXJlIOKAlCBjaGVjayB0aGUgbW9zdCByZWNlbnQgc3RhY2sgdHJhY2VzIGZvciB0aGUgdW5kZXJseWluZyBjYXVzZS4nO1xuY29uc3QgTUFYX0VWRU5UU19ISU5UID1cbiAgJ1RoZSB3b3JrZmxvdyBleGNlZWRlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIHBlciBydW4uIFRoaXMgdXN1YWxseSBtZWFucyB1bmJvdW5kZWQgd29yayBpbiB0aGUgd29ya2Zsb3cgZnVuY3Rpb24g4oCUIGUuZy4gYSBsb29wIHRoYXQga2VlcHMgY3JlYXRpbmcgc3RlcHMgd2l0aG91dCB0ZXJtaW5hdGluZy4gQnJlYWsgbG9uZy1ydW5uaW5nIHdvcmtmbG93cyBpbnRvIGNoaWxkIHdvcmtmbG93cyB0byBzdGF5IHVuZGVyIHRoZSBsaW1pdC4nO1xuY29uc3QgV09STERfQ09OVFJBQ1RfSElOVCA9XG4gICdUaGUgd29ya2Zsb3cgYmFja2VuZCByZXR1cm5lZCBkYXRhIHRoYXQgdmlvbGF0ZWQgdGhlIFNESyBjb250cmFjdC4gVGhpcyBpcyBub3QgcmV0cnlhYmxlOyBwbGVhc2UgcmVwb3J0IGl0IHdpdGggdGhlIHN0YWNrIHRyYWNlIGFuZCBydW5JZC4nO1xuY29uc3QgREVQTE9ZTUVOVF9NSVNNQVRDSF9ISU5UID1cbiAgXCJUaGUgcnVuIHdhcyBkZWxpdmVyZWQgdG8gYSBkZXBsb3ltZW50IG90aGVyIHRoYW4gdGhlIGRlcGxveW1lbnQgaXQgaXMgcGlubmVkIHRvLCBhbmQgd2FzIHN0b3BwZWQgdG8gcHJvdGVjdCBhZ2FpbnN0IGNvZGUtc2tldyBlcnJvcnMgYWZ0ZXIgdGhlIHJ1bnRpbWUgZmFpbGVkIHRvIHJlLXJvdXRlIGl0IHRoZXJlLiBWZXJpZnkgdGhhdCB0aGUgcnVuJ3MgZGVwbG95bWVudCBpcyBzdGlsbCBhdmFpbGFibGUgYW5kIHRoYXQgcXVldWUgY2FsbGJhY2tzIHJvdXRlIHRvIGl0LlwiO1xuXG5mdW5jdGlvbiBub3JtYWxpemVFcnJvckNvZGUoY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogUnVuRXJyb3JDb2RlIHtcbiAgLy8gVmFsdWVzIHJlYWQgYmFjayBmcm9tIHBlcnNpc3RlZCBldmVudHMgYXJlIGBzdHJpbmcgfCB1bmRlZmluZWRgLCBzbyB3ZVxuICAvLyBvbmx5IHRydXN0IGNvZGVzIHRoYXQgbWF0Y2ggYSBrbm93biBlbnRyeSBpbiBgUlVOX0VSUk9SX0NPREVTYC5cbiAgY29uc3Qga25vd24gPSBPYmplY3QudmFsdWVzKFJVTl9FUlJPUl9DT0RFUykgYXMgcmVhZG9ubHkgc3RyaW5nW107XG4gIGlmIChjb2RlICYmIGtub3duLmluY2x1ZGVzKGNvZGUpKSB7XG4gICAgcmV0dXJuIGNvZGUgYXMgUnVuRXJyb3JDb2RlO1xuICB9XG4gIHJldHVybiBSVU5fRVJST1JfQ09ERVMuVVNFUl9FUlJPUjtcbn1cblxuLyoqXG4gKiBEYXRhLWRyaXZlbiB2YXJpYW50IG9mIHtAbGluayBkZXNjcmliZUVycm9yfSB0aGF0IHdvcmtzIGZyb20gcGVyc2lzdGVkXG4gKiBldmVudCBmaWVsZHMgaW5zdGVhZCBvZiBhIGxpdmUgYEVycm9yYCBpbnN0YW5jZS4gSW50ZW5kZWQgZm9yIGNvbW1hbmQtbGluZVxuICogaW50ZXJmYWNlIChDTEkpIGFuZCB3ZWIgcmVuZGVyZXJzIHRoYXQgcmVhZCBmYWlsdXJlIGV2ZW50cyBhbmQgbm8gbG9uZ2VyXG4gKiBoYXZlIHRoZSBvcmlnaW5hbCB0aHJvd24gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVSdW5FcnJvcihcbiAgc2lnbmFsOiBQZXJzaXN0ZWRFcnJvclNpZ25hbFxuKTogRXJyb3JEZXNjcmlwdGlvbiB7XG4gIGNvbnN0IG5hbWUgPSBzaWduYWwuZXJyb3JOYW1lO1xuICBjb25zdCBlcnJvckNvZGUgPVxuICAgIG5hbWUgPT09ICdDb3JydXB0ZWRFdmVudExvZ0Vycm9yJ1xuICAgICAgPyBSVU5fRVJST1JfQ09ERVMuQ09SUlVQVEVEX0VWRU5UX0xPR1xuICAgICAgOiBub3JtYWxpemVFcnJvckNvZGUoc2lnbmFsLmVycm9yQ29kZSk7XG5cbiAgaWYgKG5hbWUgPT09ICdTZXJpYWxpemF0aW9uRXJyb3InKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRpb246ICd1c2VyJywgZXJyb3JDb2RlLCBoaW50OiBTRVJJQUxJWkFUSU9OX0VSUk9SX0hJTlQgfTtcbiAgfVxuICBpZiAobmFtZSAmJiBDT05URVhUX0VSUk9SX05BTUVTLmhhcyhuYW1lKSkge1xuICAgIHJldHVybiB7IGF0dHJpYnV0aW9uOiAndXNlcicsIGVycm9yQ29kZSwgaGludDogQ09OVEVYVF9FUlJPUl9ISU5UIH07XG4gIH1cbiAgaWYgKG5hbWUgPT09ICdDb3JydXB0ZWRFdmVudExvZ0Vycm9yJykge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3NkaycsXG4gICAgICBlcnJvckNvZGUsXG4gICAgICBoaW50OiBDT1JSVVBURURfRVZFTlRfTE9HX0hJTlQsXG4gICAgfTtcbiAgfVxuICBpZiAoZXJyb3JDb2RlID09PSBSVU5fRVJST1JfQ09ERVMuUkVQTEFZX1RJTUVPVVQpIHtcbiAgICByZXR1cm4geyBhdHRyaWJ1dGlvbjogJ3NkaycsIGVycm9yQ29kZSwgaGludDogUkVQTEFZX1RJTUVPVVRfSElOVCB9O1xuICB9XG4gIGlmIChlcnJvckNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5NQVhfREVMSVZFUklFU19FWENFRURFRCkge1xuICAgIHJldHVybiB7IGF0dHJpYnV0aW9uOiAnc2RrJywgZXJyb3JDb2RlLCBoaW50OiBNQVhfREVMSVZFUklFU19ISU5UIH07XG4gIH1cbiAgaWYgKGVycm9yQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLk1BWF9FVkVOVFNfRVhDRUVERUQpIHtcbiAgICByZXR1cm4geyBhdHRyaWJ1dGlvbjogJ3VzZXInLCBlcnJvckNvZGUsIGhpbnQ6IE1BWF9FVkVOVFNfSElOVCB9O1xuICB9XG4gIGlmIChlcnJvckNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5DT1JSVVBURURfRVZFTlRfTE9HKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZSxcbiAgICAgIGhpbnQ6IENPUlJVUFRFRF9FVkVOVF9MT0dfSElOVCxcbiAgICB9O1xuICB9XG4gIGlmIChlcnJvckNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5XT1JMRF9DT05UUkFDVF9FUlJPUikge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3NkaycsXG4gICAgICBlcnJvckNvZGUsXG4gICAgICBoaW50OiBXT1JMRF9DT05UUkFDVF9ISU5ULFxuICAgIH07XG4gIH1cbiAgaWYgKGVycm9yQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLkRFUExPWU1FTlRfTUlTTUFUQ0gpIHtcbiAgICByZXR1cm4geyBhdHRyaWJ1dGlvbjogJ3NkaycsIGVycm9yQ29kZSwgaGludDogREVQTE9ZTUVOVF9NSVNNQVRDSF9ISU5UIH07XG4gIH1cbiAgaWYgKG5hbWUgPT09ICdXb3JrZmxvd1J1bnRpbWVFcnJvcicgfHwgbmFtZSA9PT0gJ1N0ZXBOb3RSZWdpc3RlcmVkRXJyb3InKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRpb246ICdzZGsnLCBlcnJvckNvZGUsIGhpbnQ6IFJVTlRJTUVfRVJST1JfSElOVCB9O1xuICB9XG4gIGlmIChlcnJvckNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5SVU5USU1FX0VSUk9SKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRpb246ICdzZGsnLCBlcnJvckNvZGUsIGhpbnQ6IFJVTlRJTUVfRVJST1JfSElOVCB9O1xuICB9XG4gIHJldHVybiB7IGF0dHJpYnV0aW9uOiAndXNlcicsIGVycm9yQ29kZSB9O1xufVxuXG4vKipcbiAqIERlc2NyaWJlIGFuIGVycm9yIGZvciB1c2VyLWZhY2luZyBwcmVzZW50YXRpb24uIFB1cmVseSBpbmZvcm1hdGlvbmFsOiBpdFxuICogZG9lcyBub3QgY2hhbmdlIGFueSBwZXJzaXN0ZWQgZXZlbnQgZGF0YSBvciBlcnJvciBjbGFzc2lmaWNhdGlvbiB1c2VkIGJ5XG4gKiB0aGUgcnVudGltZS5cbiAqXG4gKiBUaGUgYXR0cmlidXRpb24gaGVyZSBpcyBtb3JlIG51YW5jZWQgdGhhbiBgY2xhc3NpZnlSdW5FcnJvcmA6XG4gKlxuICogLSBgU2VyaWFsaXphdGlvbkVycm9yYCBpcyB0ZWNobmljYWxseSByYWlzZWQgYnkgdGhlIFNESywgYnV0IGl0IGFsbW9zdFxuICogICBhbHdheXMgcG9pbnRzIGF0IHNvbWV0aGluZyB0aGUgY2FsbGVyIGRpZCAocGFzc2VkIGEgbm9uLXNlcmlhbGl6YWJsZVxuICogICB2YWx1ZSwgZGlkbid0IHJlZ2lzdGVyIGEgY2xhc3MpLiBXZSBhdHRyaWJ1dGUgaXQgdG8gdGhlIHVzZXIuXG4gKiAtIENvbnRleHQtdmlvbGF0aW9uIGVycm9ycyAoYE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3JgLCBldGMuKSBsaWtld2lzZVxuICogICBkZXNjcmliZSBhIHVzZXIgbWlzdGFrZS5cbiAqIC0gYFdvcmtmbG93UnVudGltZUVycm9yYCAoYW5kIHN1YmNsYXNzZXMgbGlrZSBgU3RlcE5vdFJlZ2lzdGVyZWRFcnJvcmApXG4gKiAgIGluZGljYXRlcyBhbiBpbnRlcm5hbCBTREsgaW52YXJpYW50IGJyb2tlLCBzbyBzdXJmYWNlIHRoYXQgYXMgYHNka2AuXG4gKlxuICogQHBhcmFtIGVyciBUaGUgZXJyb3IgdmFsdWUgdGhyb3duIGJ5IHRoZSB3b3JrZmxvdyAvIHN0ZXAuXG4gKiBAcGFyYW0gZXJyb3JDb2RlIE9wdGlvbmFsIHByZWNvbXB1dGVkIGVycm9yIGNvZGUuIENhbGxlcnMgdGhhdCBhbHJlYWR5XG4gKiAgIGtub3cgdGhlIGNvZGUgKGUuZy4gYFJFUExBWV9USU1FT1VUYCBvciBgTUFYX0RFTElWRVJJRVNfRVhDRUVERURgLCB3aGljaFxuICogICBgY2xhc3NpZnlSdW5FcnJvcmAgY2FuJ3QgZGVyaXZlIGZyb20gdGhlIGVycm9yIGFsb25lKSBzaG91bGQgcGFzcyBpdCBzb1xuICogICB0aGUgYXR0cmlidXRpb24gYW5kIGhpbnQgcmVmbGVjdCB0aGUgYWN0dWFsIGZhaWx1cmUgY2F0ZWdvcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNjcmliZUVycm9yKFxuICBlcnI6IHVua25vd24sXG4gIGVycm9yQ29kZT86IFJ1bkVycm9yQ29kZVxuKTogRXJyb3JEZXNjcmlwdGlvbiB7XG4gIGNvbnN0IGVmZmVjdGl2ZUNvZGUgPSBlcnJvckNvZGUgPz8gY2xhc3NpZnlSdW5FcnJvcihlcnIpO1xuXG4gIGlmIChTZXJpYWxpemF0aW9uRXJyb3IuaXMoZXJyKSkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3VzZXInLFxuICAgICAgZXJyb3JDb2RlOiBlZmZlY3RpdmVDb2RlLFxuICAgICAgaGludDogU0VSSUFMSVpBVElPTl9FUlJPUl9ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoaXNDb250ZXh0VmlvbGF0aW9uRXJyb3IoZXJyKSkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3VzZXInLFxuICAgICAgZXJyb3JDb2RlOiBlZmZlY3RpdmVDb2RlLFxuICAgICAgaGludDogQ09OVEVYVF9FUlJPUl9ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoQ29ycnVwdGVkRXZlbnRMb2dFcnJvci5pcyhlcnIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IENPUlJVUFRFRF9FVkVOVF9MT0dfSElOVCxcbiAgICB9O1xuICB9XG5cbiAgLy8gQ2hlY2sgREVQTE9ZTUVOVF9NSVNNQVRDSCBiZWZvcmUgdGhlIGdlbmVyaWMgV29ya2Zsb3dSdW50aW1lRXJyb3IgYnJhbmNoOlxuICAvLyBXb3JrZmxvd0RlcGxveW1lbnRNaXNtYXRjaEVycm9yIHN1YmNsYXNzZXMgaXQsIGJ1dCBoYXMgaXRzIG93biBjb2RlICsgaGludC5cbiAgaWYgKGVmZmVjdGl2ZUNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5ERVBMT1lNRU5UX01JU01BVENIKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IERFUExPWU1FTlRfTUlTTUFUQ0hfSElOVCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGVyciBpbnN0YW5jZW9mIFdvcmtmbG93UnVudGltZUVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IFJVTlRJTUVfRVJST1JfSElOVCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGVmZmVjdGl2ZUNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5SRVBMQVlfVElNRU9VVCkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3NkaycsXG4gICAgICBlcnJvckNvZGU6IGVmZmVjdGl2ZUNvZGUsXG4gICAgICBoaW50OiBSRVBMQVlfVElNRU9VVF9ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoZWZmZWN0aXZlQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLk1BWF9ERUxJVkVSSUVTX0VYQ0VFREVEKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IE1BWF9ERUxJVkVSSUVTX0hJTlQsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChlZmZlY3RpdmVDb2RlID09PSBSVU5fRVJST1JfQ09ERVMuTUFYX0VWRU5UU19FWENFRURFRCkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3VzZXInLFxuICAgICAgZXJyb3JDb2RlOiBlZmZlY3RpdmVDb2RlLFxuICAgICAgaGludDogTUFYX0VWRU5UU19ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoZWZmZWN0aXZlQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLkNPUlJVUFRFRF9FVkVOVF9MT0cpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXR0cmlidXRpb246ICdzZGsnLFxuICAgICAgZXJyb3JDb2RlOiBlZmZlY3RpdmVDb2RlLFxuICAgICAgaGludDogQ09SUlVQVEVEX0VWRU5UX0xPR19ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoZWZmZWN0aXZlQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLldPUkxEX0NPTlRSQUNUX0VSUk9SKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IFdPUkxEX0NPTlRSQUNUX0hJTlQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7IGF0dHJpYnV0aW9uOiAndXNlcicsIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSB9O1xufVxuIl19
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVzY3JpYmUtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixlQUFlLEVBRWYsa0JBQWtCLEVBQ2xCLG9CQUFvQixHQUNyQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQixpQ0FBaUMsR0FDbEMsTUFBTSxxQkFBcUIsQ0FBQztBQTRDN0IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNsQywyQkFBMkI7SUFDM0IsdUJBQXVCO0lBQ3ZCLGlDQUFpQztJQUNqQyxtQ0FBbUM7Q0FDcEMsQ0FBQyxDQUFDO0FBRUgsU0FBUyx1QkFBdUIsQ0FBQyxHQUFZO0lBQzNDLE9BQU8sQ0FDTCxHQUFHLFlBQVkseUJBQXlCO1FBQ3hDLEdBQUcsWUFBWSxxQkFBcUI7UUFDcEMsR0FBRyxZQUFZLCtCQUErQjtRQUM5QyxHQUFHLFlBQVksaUNBQWlDLENBQ2pELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSx3QkFBd0IsR0FDNUIsMkpBQTJKLENBQUM7QUFDOUosTUFBTSxrQkFBa0IsR0FDdEIsd0lBQXdJLENBQUM7QUFDM0ksTUFBTSxrQkFBa0IsR0FDdEIsNklBQTZJLENBQUM7QUFDaEosTUFBTSx3QkFBd0IsR0FDNUIsZ0tBQWdLLENBQUM7QUFDbkssTUFBTSxtQkFBbUIsR0FDdkIsZ1pBQWdaLENBQUM7QUFDblosTUFBTSxtQkFBbUIsR0FDdkIseUtBQXlLLENBQUM7QUFDNUssTUFBTSxlQUFlLEdBQ25CLGdRQUFnUSxDQUFDO0FBQ25RLE1BQU0saUJBQWlCLEdBQ3JCLGlOQUFpTixDQUFDO0FBQ3BOLE1BQU0sbUJBQW1CLEdBQ3ZCLDRJQUE0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Q0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuRCxPQUFPO1lBQ0wsV0FBVyxFQUFFLEtBQUs7WUFDbEIsU0FBUyxFQUFFLGFBQWE7WUFDeEIsSUFBSSxFQUFFLGlCQUFpQjtTQUN4QixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksYUFBYSxLQUFLLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzNELE9BQU87WUFDTCxXQUFXLEVBQUUsS0FBSztZQUNsQixTQUFTLEVBQUUsYUFBYTtZQUN4QixJQUFJLEVBQUUsbUJBQW1CO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb3JydXB0ZWRFdmVudExvZ0Vycm9yLFxuICBSVU5fRVJST1JfQ09ERVMsXG4gIHR5cGUgUnVuRXJyb3JDb2RlLFxuICBTZXJpYWxpemF0aW9uRXJyb3IsXG4gIFdvcmtmbG93UnVudGltZUVycm9yLFxufSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzJztcbmltcG9ydCB7IGNsYXNzaWZ5UnVuRXJyb3IgfSBmcm9tICcuL2NsYXNzaWZ5LWVycm9yLmpzJztcbmltcG9ydCB7XG4gIE5vdEluU3RlcENvbnRleHRFcnJvcixcbiAgTm90SW5Xb3JrZmxvd0NvbnRleHRFcnJvcixcbiAgTm90SW5Xb3JrZmxvd09yU3RlcENvbnRleHRFcnJvcixcbiAgVW5hdmFpbGFibGVJbldvcmtmbG93Q29udGV4dEVycm9yLFxufSBmcm9tICcuL2NvbnRleHQtZXJyb3JzLmpzJztcblxuLyoqXG4gKiBBdHRyaWJ1dGlvbiBvZiBhIHdvcmtmbG93L3N0ZXAgZmFpbHVyZSBmb3IgcHJlc2VudGF0aW9uLlxuICpcbiAqIC0gYHVzZXJgOiB0aGUgZXJyb3IgY2FtZSBmcm9tIGN1c3RvbWVyIGNvZGUgKGEgc3RlcCBvciB3b3JrZmxvdyBmdW5jdGlvblxuICogICB0aHJldywgb3IgYSB2YWx1ZSB0aGV5IHBhc3NlZCBhY3Jvc3MgYSBib3VuZGFyeSB3YXNuJ3Qgc2VyaWFsaXphYmxlKS5cbiAqIC0gYHNka2A6IHRoZSBTREsgcHJvZHVjZWQgdGhlIGVycm9yIGl0c2VsZjogYW4gaW50ZXJuYWwgaW52YXJpYW50IGJyb2tlLFxuICogICBvciBhIHJ1bnRpbWUgZ3VhcmQgcmVqZWN0ZWQgdGhlIGNhbGwuIFRoZXNlIHNob3VsZCBiZSByYXJlOyB3aGVuIHRoZXlcbiAqICAgaGFwcGVuIHdlIHdhbnQgdG8gZnJhbWUgdGhlIHRlcm1pbmFsIG91dHB1dCBhcyBcInRoaXMgaXMgdXMsIG5vdCB5b3UuXCJcbiAqL1xuZXhwb3J0IHR5cGUgRXJyb3JBdHRyaWJ1dGlvbiA9ICd1c2VyJyB8ICdzZGsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yRGVzY3JpcHRpb24ge1xuICBhdHRyaWJ1dGlvbjogRXJyb3JBdHRyaWJ1dGlvbjtcbiAgZXJyb3JDb2RlOiBSdW5FcnJvckNvZGU7XG4gIC8qKlxuICAgKiBTaG9ydCwgY2xhc3MtYXdhcmUgaGludCB0byBoZWxwIGEgdXNlciB1bmRlcnN0YW5kIHdoYXQgdGhlIGVycm9yIG1lYW5zLlxuICAgKiBPbmx5IHNldCBmb3Igd2VsbC1rbm93biBTREsgZXJyb3IgY2xhc3NlcyAoU2VyaWFsaXphdGlvbkVycm9yLFxuICAgKiBXb3JrZmxvd1J1bnRpbWVFcnJvciwgY29udGV4dC12aW9sYXRpb24gZXJyb3JzKTsgYHVuZGVmaW5lZGAgZm9yIHBsYWluXG4gICAqIHVzZXIgZXJyb3JzLCB3aGVyZSB0aGUgc3RhY2sgaXMgYWxyZWFkeSB0aGUgbW9zdCB1c2VmdWwgdGhpbmcgdG8gc2hvdy5cbiAgICovXG4gIGhpbnQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXJyb3Igc2lnbmFsIGZpZWxkcyBjYXJyaWVkIG9uIHBlcnNpc3RlZCBmYWlsdXJlIGV2ZW50cyAoZS5nLlxuICogYHJ1bl9mYWlsZWRgIC8gYHN0ZXBfZmFpbGVkYCkuIFRoZSBzaGFwZSBpcyBpbnRlbnRpb25hbGx5IGxvb3NlOlxuICpcbiAqIC0gYGVycm9yQ29kZWAgaXMgdHlwZWQgYXMgYHN0cmluZ2AgcmF0aGVyIHRoYW4gYFJ1bkVycm9yQ29kZWAgYmVjYXVzZVxuICogICB0aGUgdmFsdWUgY29tZXMgZnJvbSBzdG9yZWQgSlNPTi9DQk9SIGFuZCBtYXkgcHJlZGF0ZSB0aGUgY3VycmVudFxuICogICBlbnVtLCBzbyBjYWxsZXJzIHNob3VsZCBub3QgbmFycm93IG9uIGl0IGJsaW5kbHkuIFZhbHVlcyB0aGF0IGRvbid0XG4gKiAgIG1hdGNoIGEga25vd24gYFJVTl9FUlJPUl9DT0RFU2AgZW50cnkgZmFsbCB0aHJvdWdoIHRvIFVTRVJfRVJST1IuXG4gKiAtIGBlcnJvck5hbWVgIGlzIHRoZSB0aHJvd24gYEVycm9yI25hbWVgLiBJdCBpcyBub3QgdW5pdmVyc2FsbHlcbiAqICAgcGVyc2lzdGVkIHRvZGF5OyBjYWxsZXJzIHRoYXQgaGF2ZSBhY2Nlc3MgdG8gaXQgKGVpdGhlciB2aWEgYW5cbiAqICAgaW4tbWVtb3J5IHRocm93IG9yIGEgcmljaGVyIHBheWxvYWQpIGNhbiBwYXNzIGl0IGluIHRvIHNoYXJwZW5cbiAqICAgdGhlIGF0dHJpYnV0aW9uIGFuZCBoaW50LiBXaGVuIGFic2VudCwgYGRlc2NyaWJlUnVuRXJyb3JgIHN0aWxsXG4gKiAgIHJldHVybnMgYSBzZW5zaWJsZSBhdHRyaWJ1dGlvbiBmcm9tIGBlcnJvckNvZGVgIGFsb25lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBlcnNpc3RlZEVycm9yU2lnbmFsIHtcbiAgZXJyb3JDb2RlPzogc3RyaW5nO1xuICBlcnJvck5hbWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IENPTlRFWFRfRVJST1JfTkFNRVMgPSBuZXcgU2V0KFtcbiAgJ05vdEluV29ya2Zsb3dDb250ZXh0RXJyb3InLFxuICAnTm90SW5TdGVwQ29udGV4dEVycm9yJyxcbiAgJ05vdEluV29ya2Zsb3dPclN0ZXBDb250ZXh0RXJyb3InLFxuICAnVW5hdmFpbGFibGVJbldvcmtmbG93Q29udGV4dEVycm9yJyxcbl0pO1xuXG5mdW5jdGlvbiBpc0NvbnRleHRWaW9sYXRpb25FcnJvcihlcnI6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBlcnIgaW5zdGFuY2VvZiBOb3RJbldvcmtmbG93Q29udGV4dEVycm9yIHx8XG4gICAgZXJyIGluc3RhbmNlb2YgTm90SW5TdGVwQ29udGV4dEVycm9yIHx8XG4gICAgZXJyIGluc3RhbmNlb2YgTm90SW5Xb3JrZmxvd09yU3RlcENvbnRleHRFcnJvciB8fFxuICAgIGVyciBpbnN0YW5jZW9mIFVuYXZhaWxhYmxlSW5Xb3JrZmxvd0NvbnRleHRFcnJvclxuICApO1xufVxuXG5jb25zdCBTRVJJQUxJWkFUSU9OX0VSUk9SX0hJTlQgPVxuICAnQSB2YWx1ZSBwYXNzZWQgYWNyb3NzIGEgd29ya2Zsb3cvc3RlcCBib3VuZGFyeSBjb3VsZCBub3QgYmUgc2VyaWFsaXplZC4gU2VlIHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGUgb2ZmZW5kaW5nIHBhdGggYW5kIHRoZSBMZWFybiBNb3JlIGxpbmsgZm9yIGRldGFpbHMuJztcbmNvbnN0IENPTlRFWFRfRVJST1JfSElOVCA9XG4gICdBIHdvcmtmbG93LW9ubHkgb3Igc3RlcC1vbmx5IEFQSSB3YXMgY2FsbGVkIGZyb20gdGhlIHdyb25nIGNvbnRleHQuIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGFjdCBBUEkgYW5kIGhvdyB0byBtb3ZlIHRoZSBjYWxsLic7XG5jb25zdCBSVU5USU1FX0VSUk9SX0hJTlQgPVxuICAnVGhpcyBpcyBhbiBpbnRlcm5hbCB3b3JrZmxvdyBTREsgZXJyb3IsIG5vdCBhIGJ1ZyBpbiB5b3VyIGNvZGUuIElmIGl0IGtlZXBzIGhhcHBlbmluZywgcGxlYXNlIHJlcG9ydCBpdCB3aXRoIHRoZSBzdGFjayB0cmFjZSBhbmQgdGhlIHJ1bklkLic7XG5jb25zdCBDT1JSVVBURURfRVZFTlRfTE9HX0hJTlQgPVxuICAnVGhlIHdvcmtmbG93IGV2ZW50IGxvZyBjb250YWlucyBvcnBoYW5lZCBvciBtaXNtYXRjaGVkIGV2ZW50cyBhbmQgY2Fubm90IGJlIHJlcGxheWVkLiBUaGlzIGlzIGFuIGludGVybmFsIHdvcmtmbG93IFNESyBlcnJvcjsgcGxlYXNlIHJlcG9ydCBpdCB3aXRoIHRoZSBydW5JZC4nO1xuY29uc3QgUkVQTEFZX1RJTUVPVVRfSElOVCA9XG4gICdUaGUgd29ya2Zsb3cgcmVwbGF5IGJldHdlZW4gc3RlcCBib3VuZGFyaWVzIHRvb2sgdG9vIGxvbmcuIFRoaXMgYm91bmRzIHdvcmtmbG93LVZNIGFuZCBldmVudC1sb2cgcmVwbGF5IHRpbWUgb25seSDigJQgc3RlcCBib2RpZXMgKGBcInVzZSBzdGVwXCJgIGZ1bmN0aW9ucykgYXJlIGV4Y2x1ZGVkLiBUaGlzIHVzdWFsbHkgbWVhbnMgdGhlIGV2ZW50IGxvZyBpcyB1bnVzdWFsbHkgbGFyZ2Ugb3IgdGhlIHdvcmtmbG93IGZ1bmN0aW9uIGlzIGRvaW5nIGhlYXZ5IHN5bmNocm9ub3VzIHdvcmsgaW4gd29ya2Zsb3cgY29kZSBvdXRzaWRlIG9mIHN0ZXAgYm9kaWVzLiBPdmVycmlkZSB0aGUgZGVmYXVsdCBidWRnZXQgdmlhIHRoZSBXT1JLRkxPV19SRVBMQVlfVElNRU9VVF9NUyBlbnYgdmFyIGlmIG5lZWRlZC4nO1xuY29uc3QgTUFYX0RFTElWRVJJRVNfSElOVCA9XG4gICdUaGUgd29ya2Zsb3cgcXVldWUgZXhjZWVkZWQgaXRzIG1heC1kZWxpdmVyeSBidWRnZXQuIFRoaXMgdXN1YWxseSBpbmRpY2F0ZXMgYSBwZXJzaXN0ZW50IHJ1bnRpbWUgZmFpbHVyZSDigJQgY2hlY2sgdGhlIG1vc3QgcmVjZW50IHN0YWNrIHRyYWNlcyBmb3IgdGhlIHVuZGVybHlpbmcgY2F1c2UuJztcbmNvbnN0IE1BWF9FVkVOVFNfSElOVCA9XG4gICdUaGUgd29ya2Zsb3cgZXhjZWVkZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGV2ZW50cyBwZXIgcnVuLiBUaGlzIHVzdWFsbHkgbWVhbnMgdW5ib3VuZGVkIHdvcmsgaW4gdGhlIHdvcmtmbG93IGZ1bmN0aW9uIOKAlCBlLmcuIGEgbG9vcCB0aGF0IGtlZXBzIGNyZWF0aW5nIHN0ZXBzIHdpdGhvdXQgdGVybWluYXRpbmcuIEJyZWFrIGxvbmctcnVubmluZyB3b3JrZmxvd3MgaW50byBjaGlsZCB3b3JrZmxvd3MgdG8gc3RheSB1bmRlciB0aGUgbGltaXQuJztcbmNvbnN0IFNUUkVBTV9FUlJPUl9ISU5UID1cbiAgJ1dvcmtmbG93IHN0cmVhbSBpbmZyYXN0cnVjdHVyZSBmYWlsZWQgd2hpbGUgcmVhZGluZyBvciB3cml0aW5nIGRhdGEuIFRoaXMgaXMgYW4gU0RLIG9yIGJhY2tlbmQgZmFpbHVyZSwgbm90IGFuIGVycm9yIGluIHlvdXIgd29ya2Zsb3cgY29kZTsgcGxlYXNlIHJldHJ5IHRoZSBydW4gYW5kIHJlcG9ydCBwZXJzaXN0ZW50IGZhaWx1cmVzIHdpdGggdGhlIHJ1bklkLic7XG5jb25zdCBXT1JMRF9DT05UUkFDVF9ISU5UID1cbiAgJ1RoZSB3b3JrZmxvdyBiYWNrZW5kIHJldHVybmVkIGRhdGEgdGhhdCB2aW9sYXRlZCB0aGUgU0RLIGNvbnRyYWN0LiBUaGlzIGlzIG5vdCByZXRyeWFibGU7IHBsZWFzZSByZXBvcnQgaXQgd2l0aCB0aGUgc3RhY2sgdHJhY2UgYW5kIHJ1bklkLic7XG5jb25zdCBERVBMT1lNRU5UX01JU01BVENIX0hJTlQgPVxuICBcIlRoZSBydW4gd2FzIGRlbGl2ZXJlZCB0byBhIGRlcGxveW1lbnQgb3RoZXIgdGhhbiB0aGUgZGVwbG95bWVudCBpdCBpcyBwaW5uZWQgdG8sIGFuZCB3YXMgc3RvcHBlZCB0byBwcm90ZWN0IGFnYWluc3QgY29kZS1za2V3IGVycm9ycyBhZnRlciB0aGUgcnVudGltZSBmYWlsZWQgdG8gcmUtcm91dGUgaXQgdGhlcmUuIFZlcmlmeSB0aGF0IHRoZSBydW4ncyBkZXBsb3ltZW50IGlzIHN0aWxsIGF2YWlsYWJsZSBhbmQgdGhhdCBxdWV1ZSBjYWxsYmFja3Mgcm91dGUgdG8gaXQuXCI7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUVycm9yQ29kZShjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBSdW5FcnJvckNvZGUge1xuICAvLyBWYWx1ZXMgcmVhZCBiYWNrIGZyb20gcGVyc2lzdGVkIGV2ZW50cyBhcmUgYHN0cmluZyB8IHVuZGVmaW5lZGAsIHNvIHdlXG4gIC8vIG9ubHkgdHJ1c3QgY29kZXMgdGhhdCBtYXRjaCBhIGtub3duIGVudHJ5IGluIGBSVU5fRVJST1JfQ09ERVNgLlxuICBjb25zdCBrbm93biA9IE9iamVjdC52YWx1ZXMoUlVOX0VSUk9SX0NPREVTKSBhcyByZWFkb25seSBzdHJpbmdbXTtcbiAgaWYgKGNvZGUgJiYga25vd24uaW5jbHVkZXMoY29kZSkpIHtcbiAgICByZXR1cm4gY29kZSBhcyBSdW5FcnJvckNvZGU7XG4gIH1cbiAgcmV0dXJuIFJVTl9FUlJPUl9DT0RFUy5VU0VSX0VSUk9SO1xufVxuXG4vKipcbiAqIERhdGEtZHJpdmVuIHZhcmlhbnQgb2Yge0BsaW5rIGRlc2NyaWJlRXJyb3J9IHRoYXQgd29ya3MgZnJvbSBwZXJzaXN0ZWRcbiAqIGV2ZW50IGZpZWxkcyBpbnN0ZWFkIG9mIGEgbGl2ZSBgRXJyb3JgIGluc3RhbmNlLiBJbnRlbmRlZCBmb3IgY29tbWFuZC1saW5lXG4gKiBpbnRlcmZhY2UgKENMSSkgYW5kIHdlYiByZW5kZXJlcnMgdGhhdCByZWFkIGZhaWx1cmUgZXZlbnRzIGFuZCBubyBsb25nZXJcbiAqIGhhdmUgdGhlIG9yaWdpbmFsIHRocm93biBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNjcmliZVJ1bkVycm9yKFxuICBzaWduYWw6IFBlcnNpc3RlZEVycm9yU2lnbmFsXG4pOiBFcnJvckRlc2NyaXB0aW9uIHtcbiAgY29uc3QgbmFtZSA9IHNpZ25hbC5lcnJvck5hbWU7XG4gIGNvbnN0IGVycm9yQ29kZSA9XG4gICAgbmFtZSA9PT0gJ0NvcnJ1cHRlZEV2ZW50TG9nRXJyb3InXG4gICAgICA/IFJVTl9FUlJPUl9DT0RFUy5DT1JSVVBURURfRVZFTlRfTE9HXG4gICAgICA6IG5vcm1hbGl6ZUVycm9yQ29kZShzaWduYWwuZXJyb3JDb2RlKTtcblxuICBpZiAobmFtZSA9PT0gJ1NlcmlhbGl6YXRpb25FcnJvcicpIHtcbiAgICByZXR1cm4geyBhdHRyaWJ1dGlvbjogJ3VzZXInLCBlcnJvckNvZGUsIGhpbnQ6IFNFUklBTElaQVRJT05fRVJST1JfSElOVCB9O1xuICB9XG4gIGlmIChuYW1lICYmIENPTlRFWFRfRVJST1JfTkFNRVMuaGFzKG5hbWUpKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRpb246ICd1c2VyJywgZXJyb3JDb2RlLCBoaW50OiBDT05URVhUX0VSUk9SX0hJTlQgfTtcbiAgfVxuICBpZiAobmFtZSA9PT0gJ0NvcnJ1cHRlZEV2ZW50TG9nRXJyb3InKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZSxcbiAgICAgIGhpbnQ6IENPUlJVUFRFRF9FVkVOVF9MT0dfSElOVCxcbiAgICB9O1xuICB9XG4gIGlmIChlcnJvckNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5SRVBMQVlfVElNRU9VVCkge1xuICAgIHJldHVybiB7IGF0dHJpYnV0aW9uOiAnc2RrJywgZXJyb3JDb2RlLCBoaW50OiBSRVBMQVlfVElNRU9VVF9ISU5UIH07XG4gIH1cbiAgaWYgKGVycm9yQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLk1BWF9ERUxJVkVSSUVTX0VYQ0VFREVEKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRpb246ICdzZGsnLCBlcnJvckNvZGUsIGhpbnQ6IE1BWF9ERUxJVkVSSUVTX0hJTlQgfTtcbiAgfVxuICBpZiAoZXJyb3JDb2RlID09PSBSVU5fRVJST1JfQ09ERVMuTUFYX0VWRU5UU19FWENFRURFRCkge1xuICAgIHJldHVybiB7IGF0dHJpYnV0aW9uOiAndXNlcicsIGVycm9yQ29kZSwgaGludDogTUFYX0VWRU5UU19ISU5UIH07XG4gIH1cbiAgaWYgKGVycm9yQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLkNPUlJVUFRFRF9FVkVOVF9MT0cpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXR0cmlidXRpb246ICdzZGsnLFxuICAgICAgZXJyb3JDb2RlLFxuICAgICAgaGludDogQ09SUlVQVEVEX0VWRU5UX0xPR19ISU5ULFxuICAgIH07XG4gIH1cbiAgaWYgKGVycm9yQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLlNUUkVBTV9FUlJPUikge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3NkaycsXG4gICAgICBlcnJvckNvZGUsXG4gICAgICBoaW50OiBTVFJFQU1fRVJST1JfSElOVCxcbiAgICB9O1xuICB9XG4gIGlmIChlcnJvckNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5XT1JMRF9DT05UUkFDVF9FUlJPUikge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3NkaycsXG4gICAgICBlcnJvckNvZGUsXG4gICAgICBoaW50OiBXT1JMRF9DT05UUkFDVF9ISU5ULFxuICAgIH07XG4gIH1cbiAgaWYgKGVycm9yQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLkRFUExPWU1FTlRfTUlTTUFUQ0gpIHtcbiAgICByZXR1cm4geyBhdHRyaWJ1dGlvbjogJ3NkaycsIGVycm9yQ29kZSwgaGludDogREVQTE9ZTUVOVF9NSVNNQVRDSF9ISU5UIH07XG4gIH1cbiAgaWYgKG5hbWUgPT09ICdXb3JrZmxvd1J1bnRpbWVFcnJvcicgfHwgbmFtZSA9PT0gJ1N0ZXBOb3RSZWdpc3RlcmVkRXJyb3InKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRpb246ICdzZGsnLCBlcnJvckNvZGUsIGhpbnQ6IFJVTlRJTUVfRVJST1JfSElOVCB9O1xuICB9XG4gIGlmIChlcnJvckNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5SVU5USU1FX0VSUk9SKSB7XG4gICAgcmV0dXJuIHsgYXR0cmlidXRpb246ICdzZGsnLCBlcnJvckNvZGUsIGhpbnQ6IFJVTlRJTUVfRVJST1JfSElOVCB9O1xuICB9XG4gIHJldHVybiB7IGF0dHJpYnV0aW9uOiAndXNlcicsIGVycm9yQ29kZSB9O1xufVxuXG4vKipcbiAqIERlc2NyaWJlIGFuIGVycm9yIGZvciB1c2VyLWZhY2luZyBwcmVzZW50YXRpb24uIFB1cmVseSBpbmZvcm1hdGlvbmFsOiBpdFxuICogZG9lcyBub3QgY2hhbmdlIGFueSBwZXJzaXN0ZWQgZXZlbnQgZGF0YSBvciBlcnJvciBjbGFzc2lmaWNhdGlvbiB1c2VkIGJ5XG4gKiB0aGUgcnVudGltZS5cbiAqXG4gKiBUaGUgYXR0cmlidXRpb24gaGVyZSBpcyBtb3JlIG51YW5jZWQgdGhhbiBgY2xhc3NpZnlSdW5FcnJvcmA6XG4gKlxuICogLSBgU2VyaWFsaXphdGlvbkVycm9yYCBpcyB0ZWNobmljYWxseSByYWlzZWQgYnkgdGhlIFNESywgYnV0IGl0IGFsbW9zdFxuICogICBhbHdheXMgcG9pbnRzIGF0IHNvbWV0aGluZyB0aGUgY2FsbGVyIGRpZCAocGFzc2VkIGEgbm9uLXNlcmlhbGl6YWJsZVxuICogICB2YWx1ZSwgZGlkbid0IHJlZ2lzdGVyIGEgY2xhc3MpLiBXZSBhdHRyaWJ1dGUgaXQgdG8gdGhlIHVzZXIuXG4gKiAtIENvbnRleHQtdmlvbGF0aW9uIGVycm9ycyAoYE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3JgLCBldGMuKSBsaWtld2lzZVxuICogICBkZXNjcmliZSBhIHVzZXIgbWlzdGFrZS5cbiAqIC0gYFdvcmtmbG93UnVudGltZUVycm9yYCAoYW5kIHN1YmNsYXNzZXMgbGlrZSBgU3RlcE5vdFJlZ2lzdGVyZWRFcnJvcmApXG4gKiAgIGluZGljYXRlcyBhbiBpbnRlcm5hbCBTREsgaW52YXJpYW50IGJyb2tlLCBzbyBzdXJmYWNlIHRoYXQgYXMgYHNka2AuXG4gKlxuICogQHBhcmFtIGVyciBUaGUgZXJyb3IgdmFsdWUgdGhyb3duIGJ5IHRoZSB3b3JrZmxvdyAvIHN0ZXAuXG4gKiBAcGFyYW0gZXJyb3JDb2RlIE9wdGlvbmFsIHByZWNvbXB1dGVkIGVycm9yIGNvZGUuIENhbGxlcnMgdGhhdCBhbHJlYWR5XG4gKiAgIGtub3cgdGhlIGNvZGUgKGUuZy4gYFJFUExBWV9USU1FT1VUYCBvciBgTUFYX0RFTElWRVJJRVNfRVhDRUVERURgLCB3aGljaFxuICogICBgY2xhc3NpZnlSdW5FcnJvcmAgY2FuJ3QgZGVyaXZlIGZyb20gdGhlIGVycm9yIGFsb25lKSBzaG91bGQgcGFzcyBpdCBzb1xuICogICB0aGUgYXR0cmlidXRpb24gYW5kIGhpbnQgcmVmbGVjdCB0aGUgYWN0dWFsIGZhaWx1cmUgY2F0ZWdvcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNjcmliZUVycm9yKFxuICBlcnI6IHVua25vd24sXG4gIGVycm9yQ29kZT86IFJ1bkVycm9yQ29kZVxuKTogRXJyb3JEZXNjcmlwdGlvbiB7XG4gIGNvbnN0IGVmZmVjdGl2ZUNvZGUgPSBlcnJvckNvZGUgPz8gY2xhc3NpZnlSdW5FcnJvcihlcnIpO1xuXG4gIGlmIChTZXJpYWxpemF0aW9uRXJyb3IuaXMoZXJyKSkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3VzZXInLFxuICAgICAgZXJyb3JDb2RlOiBlZmZlY3RpdmVDb2RlLFxuICAgICAgaGludDogU0VSSUFMSVpBVElPTl9FUlJPUl9ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoaXNDb250ZXh0VmlvbGF0aW9uRXJyb3IoZXJyKSkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3VzZXInLFxuICAgICAgZXJyb3JDb2RlOiBlZmZlY3RpdmVDb2RlLFxuICAgICAgaGludDogQ09OVEVYVF9FUlJPUl9ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoQ29ycnVwdGVkRXZlbnRMb2dFcnJvci5pcyhlcnIpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IENPUlJVUFRFRF9FVkVOVF9MT0dfSElOVCxcbiAgICB9O1xuICB9XG5cbiAgLy8gQ2hlY2sgREVQTE9ZTUVOVF9NSVNNQVRDSCBiZWZvcmUgdGhlIGdlbmVyaWMgV29ya2Zsb3dSdW50aW1lRXJyb3IgYnJhbmNoOlxuICAvLyBXb3JrZmxvd0RlcGxveW1lbnRNaXNtYXRjaEVycm9yIHN1YmNsYXNzZXMgaXQsIGJ1dCBoYXMgaXRzIG93biBjb2RlICsgaGludC5cbiAgaWYgKGVmZmVjdGl2ZUNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5ERVBMT1lNRU5UX01JU01BVENIKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IERFUExPWU1FTlRfTUlTTUFUQ0hfSElOVCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGVyciBpbnN0YW5jZW9mIFdvcmtmbG93UnVudGltZUVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IFJVTlRJTUVfRVJST1JfSElOVCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGVmZmVjdGl2ZUNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5SRVBMQVlfVElNRU9VVCkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3NkaycsXG4gICAgICBlcnJvckNvZGU6IGVmZmVjdGl2ZUNvZGUsXG4gICAgICBoaW50OiBSRVBMQVlfVElNRU9VVF9ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoZWZmZWN0aXZlQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLk1BWF9ERUxJVkVSSUVTX0VYQ0VFREVEKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnc2RrJyxcbiAgICAgIGVycm9yQ29kZTogZWZmZWN0aXZlQ29kZSxcbiAgICAgIGhpbnQ6IE1BWF9ERUxJVkVSSUVTX0hJTlQsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChlZmZlY3RpdmVDb2RlID09PSBSVU5fRVJST1JfQ09ERVMuTUFYX0VWRU5UU19FWENFRURFRCkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3VzZXInLFxuICAgICAgZXJyb3JDb2RlOiBlZmZlY3RpdmVDb2RlLFxuICAgICAgaGludDogTUFYX0VWRU5UU19ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoZWZmZWN0aXZlQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLkNPUlJVUFRFRF9FVkVOVF9MT0cpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXR0cmlidXRpb246ICdzZGsnLFxuICAgICAgZXJyb3JDb2RlOiBlZmZlY3RpdmVDb2RlLFxuICAgICAgaGludDogQ09SUlVQVEVEX0VWRU5UX0xPR19ISU5ULFxuICAgIH07XG4gIH1cblxuICBpZiAoZWZmZWN0aXZlQ29kZSA9PT0gUlVOX0VSUk9SX0NPREVTLlNUUkVBTV9FUlJPUikge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3NkaycsXG4gICAgICBlcnJvckNvZGU6IGVmZmVjdGl2ZUNvZGUsXG4gICAgICBoaW50OiBTVFJFQU1fRVJST1JfSElOVCxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGVmZmVjdGl2ZUNvZGUgPT09IFJVTl9FUlJPUl9DT0RFUy5XT1JMRF9DT05UUkFDVF9FUlJPUikge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGlvbjogJ3NkaycsXG4gICAgICBlcnJvckNvZGU6IGVmZmVjdGl2ZUNvZGUsXG4gICAgICBoaW50OiBXT1JMRF9DT05UUkFDVF9ISU5ULFxuICAgIH07XG4gIH1cblxuICByZXR1cm4geyBhdHRyaWJ1dGlvbjogJ3VzZXInLCBlcnJvckNvZGU6IGVmZmVjdGl2ZUNvZGUgfTtcbn1cbiJdfQ==
package/dist/private.d.ts CHANGED
@@ -32,12 +32,10 @@ export interface WorkflowOrchestratorContext {
32
32
  globalThis: typeof globalThis;
33
33
  /**
34
34
  * Increments when a suspension is accepted and on every retained-session
35
- * resume. Step, hook, and attribute suspension signals capture it when
35
+ * resume. Step, hook, wait, and attribute suspension signals capture it when
36
36
  * scheduled and no-op if it moved, which drops same-boundary sibling signals
37
37
  * and timers queued at boundary N that would fire after the session resumed
38
- * into boundary N+1. Sleep signals are intentionally unguarded: their
39
- * presence makes the boundary unretainable, so a late signal correctly
40
- * demotes the session (workflow.ts `onWorkflowError`).
38
+ * into boundary N+1.
41
39
  */
42
40
  suspensionGeneration: number;
43
41
  eventsConsumer: EventsConsumer;
@@ -1 +1 @@
1
- {"version":3,"file":"private.d.ts","sourceRoot":"","sources":["../src/private.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"private.d.ts","sourceRoot":"","sources":["../src/private.ts"],"names":[],"mappings":"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"}