@workflow/core 5.0.0-beta.5 → 5.0.0-beta.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/serialization/reducers/common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAuB,MAAM,aAAa,CAAC;AAgC3E,iBAAS,MAAM,CAAC,GAAG,EAAE,MAAM,OAM1B;AAmHD,wBAAgB,iBAAiB,CAC/B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,GACvC,OAAO,CAAC,QAAQ,CAAC,CAsJnB;AAID,wBAAgB,iBAAiB,CAC/B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,GACvC,OAAO,CAAC,QAAQ,CAAC,CAmHnB;AAGD,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/serialization/reducers/common.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAuB,MAAM,aAAa,CAAC;AAgC3E,iBAAS,MAAM,CAAC,GAAG,EAAE,MAAM,OAM1B;AAmHD,wBAAgB,iBAAiB,CAC/B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,GACvC,OAAO,CAAC,QAAQ,CAAC,CAmKnB;AAID,wBAAgB,iBAAiB,CAC/B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,GACvC,OAAO,CAAC,QAAQ,CAAC,CA+HnB;AAGD,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -9,7 +9,7 @@
9
9
  * implementation will be needed.
10
10
  */
11
11
  import { types } from 'node:util';
12
- import { FatalError, RetryableError } from '@workflow/errors';
12
+ import { FatalError, HookConflictError, RetryableError, } from '@workflow/errors';
13
13
  // ---- Base64 helpers ----
14
14
  function arrayBufferToBase64(value, offset, length) {
15
15
  // Avoid returning falsy value for zero-length buffers
@@ -157,6 +157,20 @@ export function getCommonReducers(global = globalThis) {
157
157
  // See `makeErrorSubclassReducer` for implementation details.
158
158
  EvalError: makeErrorSubclassReducer('EvalError'),
159
159
  FatalError: makeErrorSubclassReducer('FatalError'),
160
+ HookConflictError: (value) => {
161
+ const base = reduceNamedErrorSubclassBase('HookConflictError', value);
162
+ if (!base)
163
+ return false;
164
+ const error = value;
165
+ const reduced = {
166
+ ...base,
167
+ token: error.token,
168
+ };
169
+ if (error.conflictingRunId !== undefined) {
170
+ reduced.conflictingRunId = error.conflictingRunId;
171
+ }
172
+ return reduced;
173
+ },
160
174
  RangeError: makeErrorSubclassReducer('RangeError'),
161
175
  ReferenceError: makeErrorSubclassReducer('ReferenceError'),
162
176
  // RetryableError carries an extra `retryAfter` Date that we serialize as
@@ -299,6 +313,16 @@ export function getCommonRevivers(global = globalThis) {
299
313
  error.cause = value.cause;
300
314
  return error;
301
315
  },
316
+ HookConflictError: (value) => {
317
+ const Ctor = global[Symbol.for('@workflow/errors//HookConflictError')] ?? HookConflictError;
318
+ const error = new Ctor(value.token, value.conflictingRunId);
319
+ if (value.stack !== undefined)
320
+ error.stack = value.stack;
321
+ if ('cause' in value) {
322
+ error.cause = value.cause;
323
+ }
324
+ return error;
325
+ },
302
326
  RangeError: makeErrorSubclassReviver(global, 'RangeError'),
303
327
  ReferenceError: makeErrorSubclassReviver(global, 'ReferenceError'),
304
328
  RetryableError: (value) => {
@@ -359,4 +383,4 @@ export function getCommonRevivers(global = globalThis) {
359
383
  }
360
384
  // Re-export for use in legacy compat
361
385
  export { revive };
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6YXRpb24vcmVkdWNlcnMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc5RCwyQkFBMkI7QUFFM0IsU0FBUyxtQkFBbUIsQ0FDMUIsS0FBc0IsRUFDdEIsTUFBYyxFQUNkLE1BQWM7SUFFZCxzREFBc0Q7SUFDdEQsSUFBSSxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQzdCLDhEQUE4RDtJQUM5RCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEtBQXNCO0lBQzFDLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FDeEIsS0FBYSxFQUNiLE1BQTJCO0lBRTNCLE1BQU0sTUFBTSxHQUFHLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sV0FBVyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFB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LEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUNuQyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsV0FBVyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDN0IsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRCxXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUM3QixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzNELENBQUM7QUFDSixDQUFDO0FBRUQscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tbW9uIHJlZHVjZXJzIGFuZCByZXZpdmVycyBmb3IgdHlwZXMgc2hhcmVkIGFjcm9zcyBhbGwgc2VyaWFsaXphdGlvbiBtb2Rlcy5cbiAqXG4gKiBIYW5kbGVzOiBBcnJheUJ1ZmZlciwgQmlnSW50LCB0eXBlZCBhcnJheXMsIERhdGUsIEVycm9yLCBIZWFkZXJzLCBNYXAsIFNldCxcbiAqIFJlZ0V4cCwgUmVxdWVzdCwgUmVzcG9uc2UsIFVSTCwgVVJMU2VhcmNoUGFyYW1zLlxuICpcbiAqIE5vdGU6IFVzZXMgTm9kZS5qcyBCdWZmZXIgZm9yIGJhc2U2NCBlbmNvZGluZy9kZWNvZGluZy4gRm9yIGVudmlyb25tZW50c1xuICogd2l0aG91dCBCdWZmZXIgKGUuZy4gUXVpY2tKUyBWTSksIGEgcG9seWZpbGwgb3IgYWx0ZXJuYXRpdmUgYmFzZTY0XG4gKiBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIG5lZWRlZC5cbiAqL1xuXG5pbXBvcnQgeyB0eXBlcyB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgeyBGYXRhbEVycm9yLCBSZXRyeWFibGVFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBSZWR1Y2VycywgUmV2aXZlcnMsIFNlcmlhbGl6YWJsZVNwZWNpYWwgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIC0tLS0gQmFzZTY0IGhlbHBlcnMgLS0tLVxuXG5mdW5jdGlvbiBhcnJheUJ1ZmZlclRvQmFzZTY0KFxuICB2YWx1ZTogQXJyYXlCdWZmZXJMaWtlLFxuICBvZmZzZXQ6IG51bWJlcixcbiAgbGVuZ3RoOiBudW1iZXJcbik6IHN0cmluZyB7XG4gIC8vIEF2b2lkIHJldHVybmluZyBmYWxzeSB2YWx1ZSBmb3IgemVyby1sZW5ndGggYnVmZmVyc1xuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJy4nO1xuICAvLyBDcmVhdGUgYSBwcm9wZXIgY29weSB0byBhdm9pZCBBcnJheUJ1ZmZlciBkZXRhY2htZW50IGlzc3Vlc1xuICBjb25zdCB1aW50OCA9IG5ldyBVaW50OEFycmF5KHZhbHVlLCBvZmZzZXQsIGxlbmd0aCk7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh1aW50OCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufVxuXG5mdW5jdGlvbiB2aWV3VG9CYXNlNjQodmFsdWU6IEFycmF5QnVmZmVyVmlldyk6IHN0cmluZyB7XG4gIHJldHVybiBhcnJheUJ1ZmZlclRvQmFzZTY0KHZhbHVlLmJ1ZmZlciwgdmFsdWUuYnl0ZU9mZnNldCwgdmFsdWUuYnl0ZUxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHJldml2ZUFycmF5QnVmZmVyKFxuICB2YWx1ZTogc3RyaW5nLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IEFycmF5QnVmZmVyIHtcbiAgY29uc3QgYmFzZTY0ID0gdmFsdWUgPT09ICcuJyA/ICcnIDogdmFsdWU7XG4gIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBnbG9iYWwuQXJyYXlCdWZmZXIoYnVmZmVyLmxlbmd0aCk7XG4gIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgZ2xvYmFsLlVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICB1aW50OEFycmF5LnNldChidWZmZXIpO1xuICByZXR1cm4gYXJyYXlCdWZmZXI7XG59XG5cbmZ1bmN0aW9uIHJldml2ZShzdHI6IHN0cmluZykge1xuICAvLyBkZXZhbHVlLnN0cmluZ2lmeSgpIGFsd2F5cyBwcm9kdWNlcyB2YWxpZCBKU09OOiBzcGVjaWFsIHZhbHVlc1xuICAvLyAodW5kZWZpbmVkLCBOYU4sIEluZmluaXR5LCAtMCkgYXJlIGVuY29kZWQgYXMgbmVnYXRpdmUgaW50ZWdlclxuICAvLyBzZW50aW5lbHMgYW5kIHRoZSByZW1haW5pbmcgc3RydWN0dXJlIGlzIG9yZGluYXJ5IEpTT04uIFBhcnNpbmdcbiAgLy8gd2l0aCBKU09OLnBhcnNlIHlpZWxkcyB0aGUgZmxhdHRlbmVkIGZvcm0gdGhhdCB1bmZsYXR0ZW4oKSBleHBlY3RzLlxuICByZXR1cm4gSlNPTi5wYXJzZShzdHIpO1xufVxuXG4vLyAtLS0tIEVycm9yIHN1YmNsYXNzIGhlbHBlcnMgLS0tLVxuXG4vKipcbiAqIFRoZSBzaGFyZWQgc2hhcGUgdGhhdCBldmVyeSBFcnJvci1zdWJjbGFzcyByZWR1Y2VyIGluIHRoaXMgbW9kdWxlXG4gKiBwcm9kdWNlcy4gU29tZSBzdWJjbGFzc2VzIChlLmcuIGBBZ2dyZWdhdGVFcnJvcmAsIGBSZXRyeWFibGVFcnJvcmApIGV4dGVuZFxuICogdGhpcyB3aXRoIGFkZGl0aW9uYWwgZmllbGRzIGJ5IHNwcmVhZGluZyB0aGUgYmFzZSBwYXlsb2FkLlxuICovXG50eXBlIEJhc2VFcnJvclBheWxvYWQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG4gIGNhdXNlPzogdW5rbm93bjtcbn07XG5cbi8qKlxuICogU3Vic2V0IG9mIGBTZXJpYWxpemFibGVTcGVjaWFsYCBrZXlzIHdob3NlIHBheWxvYWQgc2hhcGUgaXMgZXhhY3RseSB0aGVcbiAqIGBCYXNlRXJyb3JQYXlsb2FkYC4gYG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcmAgaXMgY29uc3RyYWluZWQgdG8gb25seVxuICogdGhlc2Uga2V5cyBzbyBpdHMgcmV0dXJuIHR5cGUgaXMgc291bmQg4oCUIHN1YmNsYXNzZXMgdGhhdCBuZWVkIGV4dHJhXG4gKiBmaWVsZHMgKGxpa2UgYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2Agb3IgYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgKSB1c2VcbiAqIGByZWR1Y2VFcnJvckJhc2VgIGRpcmVjdGx5IGFuZCBleHRlbmQgdGhlIHJlc3VsdC5cbiAqL1xudHlwZSBTaW1wbGVFcnJvclN1YmNsYXNzS2V5ID0ge1xuICBbSyBpbiBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSBleHRlbmRzIEJhc2VFcnJvclBheWxvYWRcbiAgICA/IEJhc2VFcnJvclBheWxvYWQgZXh0ZW5kcyBTZXJpYWxpemFibGVTcGVjaWFsW0tdXG4gICAgICA/IEtcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTtcblxuLyoqXG4gKiBSZWR1Y2VzIGFueSBuYXRpdmUgRXJyb3IgaW5zdGFuY2UgdG8gdGhlIHNoYXJlZCBgQmFzZUVycm9yUGF5bG9hZGAgc2hhcGUsXG4gKiBwcmVzZXJ2aW5nIGBjYXVzZWAgb25seSB3aGVuIHByZXNlbnQgKHRvIGRpc3Rpbmd1aXNoIFwibm8gY2F1c2VcIiBmcm9tXG4gKiBcImNhdXNlIGlzIHVuZGVmaW5lZFwiKS4gVXNlZCBkaXJlY3RseSBieSByZWR1Y2VycyBmb3Igc3ViY2xhc3NlcyB0aGF0IG5lZWRcbiAqIHRvIGV4dGVuZCB0aGUgc2hhcGUgd2l0aCBhZGRpdGlvbmFsIGZpZWxkcy5cbiAqXG4gKiBgdHlwZXMuaXNOYXRpdmVFcnJvcigpYCBpcyB1c2VkIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIGZvciBjcm9zcy1WTSBzYWZldHk6XG4gKiBlcnJvcnMgbWF5IG9yaWdpbmF0ZSBmcm9tIGEgZGlmZmVyZW50IFZNIGNvbnRleHQsIGFuZCBgaW5zdGFuY2VvZmAgZmFpbHNcbiAqIGFjcm9zcyBWTSBib3VuZGFyaWVzIHNpbmNlIGVhY2ggY29udGV4dCBoYXMgaXRzIG93biBFcnJvciBjb25zdHJ1Y3Rvci5cbiAqL1xuZnVuY3Rpb24gcmVkdWNlRXJyb3JCYXNlKHZhbHVlOiB1bmtub3duKTogQmFzZUVycm9yUGF5bG9hZCB8IGZhbHNlIHtcbiAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCByZWR1Y2VkOiBCYXNlRXJyb3JQYXlsb2FkID0ge1xuICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsXG4gICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxuICB9O1xuICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkgcmVkdWNlZC5jYXVzZSA9ICh2YWx1ZSBhcyB7IGNhdXNlOiB1bmtub3duIH0pLmNhdXNlO1xuICByZXR1cm4gcmVkdWNlZDtcbn1cblxuLyoqXG4gKiBSZWR1Y2VzIGEgbmF0aXZlIGVycm9yIHRvIHRoZSBzaGFyZWQgYEJhc2VFcnJvclBheWxvYWRgLCBidXQgb25seSB3aGVuIGl0c1xuICogYG5hbWVgIGluc3RhbmNlIHByb3BlcnR5IG1hdGNoZXMgYHN1YmNsYXNzTmFtZWAuIFVzZWQgYnk6XG4gKiAgIC0gYG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcmAsIGZvciBzdWJjbGFzc2VzIHdob3NlIHNlcmlhbGl6ZWQgc2hhcGUgaXNcbiAqICAgICBleGFjdGx5IGBCYXNlRXJyb3JQYXlsb2FkYC5cbiAqICAgLSBJbmxpbmUgcmVkdWNlcnMgZm9yIHN1YmNsYXNzZXMgdGhhdCBleHRlbmQgdGhlIHNoYXBlIHdpdGggYWRkaXRpb25hbFxuICogICAgIGZpZWxkcyAoZS5nLiBgQWdncmVnYXRlRXJyb3IuZXJyb3JzYCwgYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgKS5cbiAqXG4gKiBNYXRjaGluZyBieSBgdmFsdWUubmFtZWAgKGluc3RlYWQgb2YgYHZhbHVlLmNvbnN0cnVjdG9yPy5uYW1lYCkgaXMgcm9idXN0XG4gKiB0byBidW5kbGVycyB0aGF0IGVtaXQgdGhlIGNsYXNzIGFzIGFuIGFub255bW91cyBleHByZXNzaW9uIOKAlCBlLmcuIFR1cmJvcGFja1xuICogY29tcGlsZXMgYGV4cG9ydCBjbGFzcyBGYXRhbEVycm9yIGV4dGVuZHMgRXJyb3Ige+KApn1gIHRvIGEgcmVnaXN0cmF0aW9uIGNhbGxcbiAqIGxpa2UgYGUucyhbXCJGYXRhbEVycm9yXCIsIDAsIGNsYXNzIGV4dGVuZHMgRXJyb3Ige+KApn1dKWAsIGFuZCB0aGUgcmVzdWx0aW5nXG4gKiBjb25zdHJ1Y3RvciBoYXMgYG5hbWUgPT09ICcnYC4gU2luY2UgZXZlcnkgRXJyb3Igc3ViY2xhc3Mgd2UgY2FyZSBhYm91dFxuICogc2V0cyBgdGhpcy5uYW1lYCBleHBsaWNpdGx5IGluIGl0cyBjb25zdHJ1Y3RvciAoYnVpbHQtaW4gc3ViY2xhc3NlcyBkbyB0aGlzXG4gKiBhdXRvbWF0aWNhbGx5OyBgRmF0YWxFcnJvcmAvYFJldHJ5YWJsZUVycm9yYCBkbyBpdCBpbiB1c2VyIGNvZGUpLCB0aGVcbiAqIGluc3RhbmNlIHByb3BlcnR5IGlzIHRoZSByZWxpYWJsZSBpZGVudGl0eSBtYXJrZXIgYWNyb3NzIHJlYWxtcyBhbmRcbiAqIGJ1bmRsZXJzLlxuICovXG5mdW5jdGlvbiByZWR1Y2VOYW1lZEVycm9yU3ViY2xhc3NCYXNlKFxuICBzdWJjbGFzc05hbWU6IHN0cmluZyxcbiAgdmFsdWU6IHVua25vd25cbik6IEJhc2VFcnJvclBheWxvYWQgfCBmYWxzZSB7XG4gIGlmICghdHlwZXMuaXNOYXRpdmVFcnJvcih2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKHZhbHVlLm5hbWUgIT09IHN1YmNsYXNzTmFtZSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gcmVkdWNlRXJyb3JCYXNlKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVkdWNlciBmb3IgYSBidWlsdC1pbiBFcnJvciBzdWJjbGFzcyB3aG9zZSBzZXJpYWxpemVkIHNoYXBlIGlzXG4gKiBleGFjdGx5IGBCYXNlRXJyb3JQYXlsb2FkYCAobm8gZXh0cmEgZmllbGRzKS4gVGhlIHJlZHVjZXIgbWF0Y2hlcyBieVxuICogY29uc3RydWN0b3IgbmFtZSAoYWZ0ZXIgdGhlIGlzTmF0aXZlRXJyb3IgZ2F0ZSksIHNpbmNlIGBpbnN0YW5jZW9mYCBtYXlcbiAqIGZhaWwgYWNyb3NzIFZNIGJvdW5kYXJpZXMuXG4gKi9cbmZ1bmN0aW9uIG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcjxLIGV4dGVuZHMgU2ltcGxlRXJyb3JTdWJjbGFzc0tleT4oXG4gIHN1YmNsYXNzTmFtZTogS1xuKSB7XG4gIHJldHVybiAodmFsdWU6IHVua25vd24pOiBTZXJpYWxpemFibGVTcGVjaWFsW0tdIHwgZmFsc2UgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSByZWR1Y2VOYW1lZEVycm9yU3ViY2xhc3NCYXNlKHN1YmNsYXNzTmFtZSwgdmFsdWUpO1xuICAgIGlmICghYmFzZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBiYXNlIGFzIFNlcmlhbGl6YWJsZVNwZWNpYWxbS107XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJldml2ZXIgZm9yIGEgYnVpbHQtaW4gRXJyb3Igc3ViY2xhc3MuIFJlY29uc3RydWN0cyB0aGUgY29ycmVjdFxuICogYnVpbHQtaW4gRXJyb3IgdHlwZSB1c2luZyB0aGUgY29udGV4dCdzIGNvbnN0cnVjdG9yLiBUaGUgYGNhdXNlYCBvcHRpb24gaXNcbiAqIG9ubHkgcGFzc2VkIHdoZW4gdGhlIHNlcmlhbGl6ZWQgZGF0YSBpbmNsdWRlcyBpdCwgcHJlc2VydmluZyB0aGUgZGlzdGluY3Rpb25cbiAqIGJldHdlZW4gXCJubyBjYXVzZVwiIGFuZCBcImNhdXNlIGlzIHVuZGVmaW5lZFwiLlxuICovXG5mdW5jdGlvbiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXI8SyBleHRlbmRzIGtleW9mIFNlcmlhbGl6YWJsZVNwZWNpYWw+KFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGN0b3JOYW1lOiBzdHJpbmdcbikge1xuICByZXR1cm4gKHZhbHVlOiBTZXJpYWxpemFibGVTcGVjaWFsW0tdKSA9PiB7XG4gICAgY29uc3QgdiA9IHZhbHVlIGFzIEJhc2VFcnJvclBheWxvYWQ7XG4gICAgY29uc3Qgb3B0cyA9ICdjYXVzZScgaW4gdiA/IHsgY2F1c2U6IHYuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBDdG9yID0gZ2xvYmFsW2N0b3JOYW1lXTtcbiAgICBjb25zdCBlcnJvcjogRXJyb3IgPSBuZXcgQ3Rvcih2Lm1lc3NhZ2UsIG9wdHMpO1xuICAgIGlmICh2LnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdi5zdGFjaztcbiAgICByZXR1cm4gZXJyb3I7XG4gIH07XG59XG5cbi8vIC0tLS0gUmVkdWNlcnMgLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbW9uUmVkdWNlcnMoXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbik6IFBhcnRpYWw8UmVkdWNlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICBBcnJheUJ1ZmZlcjogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuQXJyYXlCdWZmZXIgJiZcbiAgICAgIGFycmF5QnVmZmVyVG9CYXNlNjQodmFsdWUsIDAsIHZhbHVlLmJ5dGVMZW5ndGgpLFxuICAgIEJpZ0ludDogKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnICYmIHZhbHVlLnRvU3RyaW5nKCksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuQmlnSW50NjRBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIEJpZ1VpbnQ2NEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5CaWdVaW50NjRBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIERhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuRGF0ZSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHZhbGlkID0gIU51bWJlci5pc05hTih2YWx1ZS5nZXREYXRlKCkpO1xuICAgICAgcmV0dXJuIHZhbGlkID8gdmFsdWUudG9JU09TdHJpbmcoKSA6ICcuJztcbiAgICB9LFxuICAgIC8vIERPTUV4Y2VwdGlvbiBpcyBhIHNwZWNpYWwgY2FzZTogaXQgYGluc3RhbmNlb2YgRXJyb3JgIGlzIHRydWUgaW4gTm9kZSxcbiAgICAvLyBidXQgYHR5cGVzLmlzTmF0aXZlRXJyb3IoKWAgcmV0dXJucyBGQUxTRSBmb3IgaXQsIHNvIHRoZSBnZW5lcmljIEVycm9yXG4gICAgLy8gcmVkdWNlciAod2hpY2ggZ2F0ZXMgb24gaXNOYXRpdmVFcnJvcikgd29uJ3QgbWF0Y2guIENoZWNrIGl0IGV4cGxpY2l0bHlcbiAgICAvLyBieSBjb25zdHJ1Y3RvciBuYW1lICsgRXJyb3IgaW5oZXJpdGFuY2Ugc28gd2UgY2F0Y2ggRE9NRXhjZXB0aW9ucyBmcm9tXG4gICAgLy8gYW55IHJlYWxtIChjcm9zcy1WTSBzYWZldHk6IGluc3RhbmNlb2YgZ2xvYmFsLkRPTUV4Y2VwdGlvbiB3b3VsZCBmYWlsXG4gICAgLy8gZm9yIGluc3RhbmNlcyBtaW50ZWQgaW4gYW5vdGhlciBjb250ZXh0KS5cbiAgICBET01FeGNlcHRpb246ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmIChcbiAgICAgICAgKHZhbHVlIGFzIHsgY29uc3RydWN0b3I/OiB7IG5hbWU/OiBzdHJpbmcgfSB9KS5jb25zdHJ1Y3Rvcj8ubmFtZSAhPT1cbiAgICAgICAgJ0RPTUV4Y2VwdGlvbidcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgZSA9IHZhbHVlIGFzIEVycm9yICYgeyBjYXVzZT86IHVua25vd24gfTtcbiAgICAgIGNvbnN0IHJlZHVjZWQ6IFNlcmlhbGl6YWJsZVNwZWNpYWxbJ0RPTUV4Y2VwdGlvbiddID0ge1xuICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgIG5hbWU6IGUubmFtZSxcbiAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICB9O1xuICAgICAgaWYgKCdjYXVzZScgaW4gZSkgcmVkdWNlZC5jYXVzZSA9IGUuY2F1c2U7XG4gICAgICByZXR1cm4gcmVkdWNlZDtcbiAgICB9LFxuICAgIC8vIEVycm9yIHN1YmNsYXNzIHJlZHVjZXJzIGFyZSBpbnRlbnRpb25hbGx5IHBsYWNlZCBiZWZvcmUgdGhlIGJhc2UgRXJyb3JcbiAgICAvLyByZWR1Y2VyIGJlY2F1c2UgZGV2YWx1ZSB1c2VzIGZpcnN0LW1hdGNoLXdpbnMuIFN1YmNsYXNzLXNwZWNpZmljIHJlZHVjZXJzXG4gICAgLy8gbXVzdCBiZSBjaGVja2VkIGZpcnN0IHNvIHRoYXQgZS5nLiBhIFR5cGVFcnJvciBpcyBzZXJpYWxpemVkIGFzIFwiVHlwZUVycm9yXCJcbiAgICAvLyByYXRoZXIgdGhhbiBmYWxsaW5nIHRocm91Z2ggdG8gdGhlIGdlbmVyaWMgXCJFcnJvclwiIHJlZHVjZXIuXG4gICAgLy8gU2VlIGBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXJgIGZvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuICAgIEV2YWxFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdFdmFsRXJyb3InKSxcbiAgICBGYXRhbEVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXIoJ0ZhdGFsRXJyb3InKSxcbiAgICBSYW5nZUVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXIoJ1JhbmdlRXJyb3InKSxcbiAgICBSZWZlcmVuY2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdSZWZlcmVuY2VFcnJvcicpLFxuICAgIC8vIFJldHJ5YWJsZUVycm9yIGNhcnJpZXMgYW4gZXh0cmEgYHJldHJ5QWZ0ZXJgIERhdGUgdGhhdCB3ZSBzZXJpYWxpemUgYXNcbiAgICAvLyBhIG51bWVyaWMgZXBvY2ggdGltZXN0YW1wLiBUaGUgRGF0ZSByZWR1Y2VyIHVzZXMgYGluc3RhbmNlb2YgZ2xvYmFsLkRhdGVgLFxuICAgIC8vIHdoaWNoIGZhaWxzIGZvciBEYXRlcyBmcm9tIGEgZGlmZmVyZW50IFZNIHJlYWxtOyBzZXJpYWxpemluZyBhcyBhXG4gICAgLy8gbnVtYmVyIHNpZGVzdGVwcyB0aGF0IGlzc3VlLlxuICAgIFJldHJ5YWJsZUVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGJhc2UgPSByZWR1Y2VOYW1lZEVycm9yU3ViY2xhc3NCYXNlKCdSZXRyeWFibGVFcnJvcicsIHZhbHVlKTtcbiAgICAgIGlmICghYmFzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgcmV0cnlBZnRlclJhdyA9ICh2YWx1ZSBhcyBSZXRyeWFibGVFcnJvcikucmV0cnlBZnRlciBhcyB1bmtub3duO1xuICAgICAgbGV0IHJldHJ5QWZ0ZXI6IG51bWJlcjtcbiAgICAgIGlmIChcbiAgICAgICAgcmV0cnlBZnRlclJhdyAmJlxuICAgICAgICB0eXBlb2YgcmV0cnlBZnRlclJhdyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdHlwZW9mIChyZXRyeUFmdGVyUmF3IGFzIHsgZ2V0VGltZT86IHVua25vd24gfSkuZ2V0VGltZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHQgPSAocmV0cnlBZnRlclJhdyBhcyBEYXRlKS5nZXRUaW1lKCk7XG4gICAgICAgIHJldHJ5QWZ0ZXIgPSBOdW1iZXIuaXNOYU4odCkgPyBEYXRlLm5vdygpICsgMTAwMCA6IHQ7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2YgcmV0cnlBZnRlclJhdyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIHJldHJ5QWZ0ZXJSYXcgPT09ICdudW1iZXInXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdCA9IG5ldyBEYXRlKHJldHJ5QWZ0ZXJSYXcpLmdldFRpbWUoKTtcbiAgICAgICAgcmV0cnlBZnRlciA9IE51bWJlci5pc05hTih0KSA/IERhdGUubm93KCkgKyAxMDAwIDogdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHJ5QWZ0ZXIgPSBEYXRlLm5vdygpICsgMTAwMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2UsXG4gICAgICAgIHJldHJ5QWZ0ZXIsXG4gICAgICB9IHNhdGlzZmllcyBTZXJpYWxpemFibGVTcGVjaWFsWydSZXRyeWFibGVFcnJvciddO1xuICAgIH0sXG4gICAgU3ludGF4RXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignU3ludGF4RXJyb3InKSxcbiAgICBUeXBlRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignVHlwZUVycm9yJyksXG4gICAgVVJJRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignVVJJRXJyb3InKSxcbiAgICAvLyBBZ2dyZWdhdGVFcnJvciBpcyBzaW1pbGFyIHRvIG90aGVyIHN1YmNsYXNzZXMgYnV0IGFsc28gcHJlc2VydmVzIHRoZVxuICAgIC8vIGBlcnJvcnNgIGFycmF5LiBXZSBleHRlbmQgdGhlIGJhc2UgaGVscGVyJ3Mgb3V0cHV0IGhlcmUuXG4gICAgQWdncmVnYXRlRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgYmFzZSA9IHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoJ0FnZ3JlZ2F0ZUVycm9yJywgdmFsdWUpO1xuICAgICAgaWYgKCFiYXNlKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlLFxuICAgICAgICBlcnJvcnM6ICh2YWx1ZSBhcyBBZ2dyZWdhdGVFcnJvcikuZXJyb3JzLFxuICAgICAgfSBzYXRpc2ZpZXMgU2VyaWFsaXphYmxlU3BlY2lhbFsnQWdncmVnYXRlRXJyb3InXTtcbiAgICB9LFxuICAgIC8vIEJhc2UgRXJyb3IgcmVkdWNlciDigJQgY2F0Y2gtYWxsIGZvciBhbnkgRXJyb3IgaW5zdGFuY2Ugbm90IG1hdGNoZWQgYnkgYVxuICAgIC8vIHNwZWNpZmljIHN1YmNsYXNzIHJlZHVjZXIgYWJvdmUgKGluY2x1ZGluZyB1c2VyIEVycm9yIHN1YmNsYXNzZXMgd2l0aG91dFxuICAgIC8vIFdPUktGTE9XX1NFUklBTElaRSkuIFByZXNlcnZlcyBgbmFtZWAgc28gdGhlIGVycm9yJ3MgaWRlbnRpdHkgaXMgcmV0YWluZWRcbiAgICAvLyBldmVuIHRob3VnaCB0aGUgZXhhY3QgY2xhc3MgY2Fubm90IGJlIHJlY29uc3RydWN0ZWQuXG4gICAgRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgcmVkdWNlZDogU2VyaWFsaXphYmxlU3BlY2lhbFsnRXJyb3InXSA9IHtcbiAgICAgICAgbmFtZTogdmFsdWUubmFtZSxcbiAgICAgICAgbWVzc2FnZTogdmFsdWUubWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxuICAgICAgfTtcbiAgICAgIGlmICgnY2F1c2UnIGluIHZhbHVlKSByZWR1Y2VkLmNhdXNlID0gdmFsdWUuY2F1c2U7XG4gICAgICByZXR1cm4gcmVkdWNlZDtcbiAgICB9LFxuICAgIEZsb2F0MzJBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuRmxvYXQzMkFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgRmxvYXQ2NEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5GbG9hdDY0QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBIZWFkZXJzOiAodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLkhlYWRlcnMgJiYgQXJyYXkuZnJvbSh2YWx1ZSksXG4gICAgSW50OEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5JbnQ4QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBJbnQxNkFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5JbnQxNkFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgSW50MzJBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuSW50MzJBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIE1hcDogKHZhbHVlKSA9PiB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5NYXAgJiYgQXJyYXkuZnJvbSh2YWx1ZSksXG4gICAgUmVnRXhwOiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5SZWdFeHAgJiYge1xuICAgICAgICBzb3VyY2U6IHZhbHVlLnNvdXJjZSxcbiAgICAgICAgZmxhZ3M6IHZhbHVlLmZsYWdzLFxuICAgICAgfSxcbiAgICAvLyBSZXF1ZXN0IGFuZCBSZXNwb25zZSBhcmUgaW50ZW50aW9uYWxseSBOT1QgaW4gY29tbW9uIHJlZHVjZXJzLlxuICAgIC8vIFRoZXkgcmVxdWlyZSBtb2RlLXNwZWNpZmljIHJldml2ZXJzIChzdHJlYW0gaGFuZGxpbmcsIGV0Yy4pIGFuZFxuICAgIC8vIGluY2x1ZGluZyB0aGVtIGhlcmUgd2l0aG91dCBtYXRjaGluZyByZXZpdmVycyB3b3VsZCBjYXVzZSB0aGVtXG4gICAgLy8gdG8gZGVzZXJpYWxpemUgYXMgcGxhaW4gb2JqZWN0cy5cbiAgICBTZXQ6ICh2YWx1ZSkgPT4gdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuU2V0ICYmIEFycmF5LmZyb20odmFsdWUpLFxuICAgIFVSTDogKHZhbHVlKSA9PiB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5VUkwgJiYgdmFsdWUuaHJlZixcbiAgICBXb3JrZmxvd0Z1bmN0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIE9ubHkgbWF0Y2ggZnVuY3Rpb24gcmVmZXJlbmNlcyB3aXRoIGEgd29ya2Zsb3dJZCBwcm9wZXJ0eSAoc2V0IGJ5XG4gICAgICAvLyB0aGUgU1dDIGNvbXBpbGVyIG9uIHdvcmtmbG93IGZ1bmN0aW9ucykuIFBsYWluIHsgd29ya2Zsb3dJZCB9IG9iamVjdHNcbiAgICAgIC8vIGFyZSBOT1QgbWF0Y2hlZCDigJQgdGhpcyBwcmV2ZW50cyBpbmZpbml0ZSByZWN1cnNpb24gc2luY2UgdGhlIHJlZHVjZWRcbiAgICAgIC8vIGZvcm0geyB3b3JrZmxvd0lkIH0gaXMgYSBwbGFpbiBvYmplY3QsIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3Qgd29ya2Zsb3dJZCA9ICh2YWx1ZSBhcyBhbnkpLndvcmtmbG93SWQ7XG4gICAgICBpZiAodHlwZW9mIHdvcmtmbG93SWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4geyB3b3JrZmxvd0lkIH07XG4gICAgfSxcbiAgICBVUkxTZWFyY2hQYXJhbXM6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVVJMU2VhcmNoUGFyYW1zKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKHZhbHVlLnNpemUgPT09IDApIHJldHVybiAnLic7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9LFxuICAgIFVpbnQ4QXJyYXk6ICh2YWx1ZSkgPT5cbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBVaW50OENsYW1wZWRBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVWludDhDbGFtcGVkQXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBVaW50MTZBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVWludDE2QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBVaW50MzJBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVWludDMyQXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgfTtcbn1cblxuLy8gLS0tLSBSZXZpdmVycyAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb25SZXZpdmVycyhcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpc1xuKTogUGFydGlhbDxSZXZpdmVycz4ge1xuICByZXR1cm4ge1xuICAgIEFycmF5QnVmZmVyOiAodmFsdWU6IHN0cmluZykgPT4gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCksXG4gICAgQmlnSW50OiAodmFsdWU6IHN0cmluZykgPT4gZ2xvYmFsLkJpZ0ludCh2YWx1ZSksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkJpZ0ludDY0QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEJpZ1VpbnQ2NEFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuQmlnVWludDY0QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIERhdGU6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5EYXRlKHZhbHVlKSxcbiAgICBET01FeGNlcHRpb246ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZ2xvYmFsLkRPTUV4Y2VwdGlvbih2YWx1ZS5tZXNzYWdlLCB2YWx1ZS5uYW1lKTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgLy8gRE9NRXhjZXB0aW9uJ3MgY29uc3RydWN0b3IgZG9lc24ndCBhY2NlcHQgYSBjYXVzZSBvcHRpb24sIHNvXG4gICAgICAvLyB3ZSBzZXQgaXQgbWFudWFsbHkgd2hlbiBwcmVzZW50IGluIHRoZSBzZXJpYWxpemVkIGRhdGEuXG4gICAgICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkgZXJyb3IuY2F1c2UgPSB2YWx1ZS5jYXVzZTtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIC8vIEVycm9yIHN1YmNsYXNzIHJldml2ZXJzIHJlY29uc3RydWN0IHRoZSBjb3JyZWN0IGJ1aWx0LWluIEVycm9yIHR5cGUuXG4gICAgLy8gU2VlIGBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXJgIGZvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuICAgIEV2YWxFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ0V2YWxFcnJvcicpLFxuICAgIC8vIGBGYXRhbEVycm9yYCBhbmQgYFJldHJ5YWJsZUVycm9yYCBhcmUgbm90IGJ1aWx0LWlucywgc28gd2UgcmVzb2x2ZSB0aGVtXG4gICAgLy8gZnJvbSB0aGUgY29uc3VtZXIncyBgZ2xvYmFsVGhpc2AgdmlhIGEgYFN5bWJvbC5mb3IoLi4uKWAga2V5IHJlZ2lzdGVyZWRcbiAgICAvLyBieSBgQHdvcmtmbG93L2Vycm9yc2Agb24gbG9hZC4gVGhpcyBtYWtlcyBgaW5zdGFuY2VvZiBGYXRhbEVycm9yYCB3b3JrXG4gICAgLy8gaW4gdXNlciBjb2RlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgcmVhbG0gdGhhbiB0aGlzIHJlZHVjZXIgbW9kdWxlXG4gICAgLy8gKGUuZy4gd2hlbiB0aGUgaG9zdCBoeWRyYXRlcyBhIHZhbHVlIGRlc3RpbmVkIGZvciBhIHdvcmtmbG93IFZNXG4gICAgLy8gY29udGV4dCkuIFNlZSB0aGUgcmVnaXN0cmF0aW9uIGJsb2NrIGF0IHRoZSBib3R0b20gb2ZcbiAgICAvLyBgcGFja2FnZXMvZXJyb3JzL3NyYy9pbmRleC50c2AgZm9yIGRldGFpbHMuIEZhbGxzIGJhY2sgdG8gdGhlIGltcG9ydGVkXG4gICAgLy8gY2xhc3MgZm9yIGVudmlyb25tZW50cyB3aGVyZSBubyBidW5kbGVkIGBAd29ya2Zsb3cvZXJyb3JzYCBoYXMgbG9hZGVkXG4gICAgLy8gaW4gdGhlIGNvbnN1bWVyIHJlYWxtLlxuICAgIEZhdGFsRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgQ3RvciA9XG4gICAgICAgICgoZ2xvYmFsIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtcbiAgICAgICAgICBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvZXJyb3JzLy9GYXRhbEVycm9yJylcbiAgICAgICAgXSBhcyB0eXBlb2YgRmF0YWxFcnJvciB8IHVuZGVmaW5lZCkgPz8gRmF0YWxFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUubWVzc2FnZSk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIGlmICgnY2F1c2UnIGluIHZhbHVlKSBlcnJvci5jYXVzZSA9IHZhbHVlLmNhdXNlO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgUmFuZ2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1JhbmdlRXJyb3InKSxcbiAgICBSZWZlcmVuY2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1JlZmVyZW5jZUVycm9yJyksXG4gICAgUmV0cnlhYmxlRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBjb250ZXh0J3MgYERhdGVgIGNvbnN0cnVjdG9yIChtYXRjaGluZyB0aGUgcmVzdCBvZiB0aGlzXG4gICAgICAvLyBtb2R1bGUpIHNvIHRoZSByZXN1bHRpbmcgYHJldHJ5QWZ0ZXJgIERhdGUgcGFzc2VzIGBpbnN0YW5jZW9mXG4gICAgICAvLyBnbG9iYWwuRGF0ZWAgY2hlY2tzIGluIHRoZSB0YXJnZXQgcmVhbG0uIFNlZSB0aGUgRmF0YWxFcnJvciByZXZpdmVyXG4gICAgICAvLyBhYm92ZSBmb3Igd2h5IHdlIHJlc29sdmUgYFJldHJ5YWJsZUVycm9yYCBmcm9tIHRoZSBjb25zdW1lcidzXG4gICAgICAvLyBnbG9iYWxUaGlzIGluc3RlYWQgb2YgdGhlIGltcG9ydGVkIGNsYXNzLlxuICAgICAgY29uc3QgQ3RvciA9XG4gICAgICAgICgoZ2xvYmFsIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtcbiAgICAgICAgICBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvZXJyb3JzLy9SZXRyeWFibGVFcnJvcicpXG4gICAgICAgIF0gYXMgdHlwZW9mIFJldHJ5YWJsZUVycm9yIHwgdW5kZWZpbmVkKSA/PyBSZXRyeWFibGVFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUubWVzc2FnZSwge1xuICAgICAgICByZXRyeUFmdGVyOiBuZXcgZ2xvYmFsLkRhdGUodmFsdWUucmV0cnlBZnRlciksXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgaWYgKCdjYXVzZScgaW4gdmFsdWUpIGVycm9yLmNhdXNlID0gdmFsdWUuY2F1c2U7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBTeW50YXhFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1N5bnRheEVycm9yJyksXG4gICAgVHlwZUVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXIoZ2xvYmFsLCAnVHlwZUVycm9yJyksXG4gICAgVVJJRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmV2aXZlcihnbG9iYWwsICdVUklFcnJvcicpLFxuICAgIEFnZ3JlZ2F0ZUVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHZhbHVlID8geyBjYXVzZTogdmFsdWUuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IGdsb2JhbC5BZ2dyZWdhdGVFcnJvcihcbiAgICAgICAgdmFsdWUuZXJyb3JzLFxuICAgICAgICB2YWx1ZS5tZXNzYWdlLFxuICAgICAgICBvcHRzXG4gICAgICApO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICAvLyBCYXNlIEVycm9yIHJldml2ZXIg4oCUIHVzZWQgZm9yIHBsYWluIEVycm9yIGluc3RhbmNlcyBhbmQgdW5yZWNvZ25pemVkXG4gICAgLy8gRXJyb3Igc3ViY2xhc3Nlcy4gUHJlc2VydmVzIGBuYW1lYCBzbyB0aGUgZXJyb3IncyBpZGVudGl0eSBpcyByZXRhaW5lZC5cbiAgICBFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0gJ2NhdXNlJyBpbiB2YWx1ZSA/IHsgY2F1c2U6IHZhbHVlLmNhdXNlIH0gOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBnbG9iYWwuRXJyb3IodmFsdWUubWVzc2FnZSwgb3B0cyk7XG4gICAgICBlcnJvci5uYW1lID0gdmFsdWUubmFtZTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgRmxvYXQzMkFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuRmxvYXQzMkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBGbG9hdDY0QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5GbG9hdDY0QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEhlYWRlcnM6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5IZWFkZXJzKHZhbHVlKSxcbiAgICBJbnQ4QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5JbnQ4QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEludDE2QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5JbnQxNkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBJbnQzMkFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuSW50MzJBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgTWFwOiAodmFsdWUpID0+IG5ldyBnbG9iYWwuTWFwKHZhbHVlKSxcbiAgICBSZWdFeHA6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5SZWdFeHAodmFsdWUuc291cmNlLCB2YWx1ZS5mbGFncyksXG4gICAgU2V0OiAodmFsdWUpID0+IG5ldyBnbG9iYWwuU2V0KHZhbHVlKSxcbiAgICBVUkw6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5VUkwodmFsdWUpLFxuICAgIFdvcmtmbG93RnVuY3Rpb246ICh2YWx1ZSkgPT5cbiAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnV29ya2Zsb3cgZnVuY3Rpb25zIGNhbm5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuIFVzZSBzdGFydCgpIHRvIGludm9rZSB0aGVtLidcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICB7IHdvcmtmbG93SWQ6IHZhbHVlLndvcmtmbG93SWQgfVxuICAgICAgKSxcbiAgICBVUkxTZWFyY2hQYXJhbXM6ICh2YWx1ZSkgPT5cbiAgICAgIG5ldyBnbG9iYWwuVVJMU2VhcmNoUGFyYW1zKHZhbHVlID09PSAnLicgPyAnJyA6IHZhbHVlKSxcbiAgICBVaW50OEFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuVWludDhBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgVWludDhDbGFtcGVkQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VaW50OENsYW1wZWRBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgVWludDE2QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VaW50MTZBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgVWludDMyQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VaW50MzJBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gIH07XG59XG5cbi8vIFJlLWV4cG9ydCBmb3IgdXNlIGluIGxlZ2FjeSBjb21wYXRcbmV4cG9ydCB7IHJldml2ZSB9O1xuIl19
386
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6YXRpb24vcmVkdWNlcnMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsY0FBYyxHQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFHMUIsMkJBQTJCO0FBRTNCLFNBQVMsbUJBQW1CLENBQzFCLEtBQXNCLEVBQ3RCLE1BQWMsRUFDZCxNQUFjO0lBRWQsc0RBQXNEO0lBQ3RELElBQUksTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUM3Qiw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUFzQjtJQUMxQyxPQUFPLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQ3hCLEtBQWEsRUFDYixNQUEyQjtJQUUzQixNQUFNLE1BQU0sR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMs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TUFBTSxDQUFDLENBQUM7UUFDaEUsV0FBVyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDN0IsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRCxXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUM3QixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzNELENBQUM7QUFDSixDQUFDO0FBRUQscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tbW9uIHJlZHVjZXJzIGFuZCByZXZpdmVycyBmb3IgdHlwZXMgc2hhcmVkIGFjcm9zcyBhbGwgc2VyaWFsaXphdGlvbiBtb2Rlcy5cbiAqXG4gKiBIYW5kbGVzOiBBcnJheUJ1ZmZlciwgQmlnSW50LCB0eXBlZCBhcnJheXMsIERhdGUsIEVycm9yLCBIZWFkZXJzLCBNYXAsIFNldCxcbiAqIFJlZ0V4cCwgUmVxdWVzdCwgUmVzcG9uc2UsIFVSTCwgVVJMU2VhcmNoUGFyYW1zLlxuICpcbiAqIE5vdGU6IFVzZXMgTm9kZS5qcyBCdWZmZXIgZm9yIGJhc2U2NCBlbmNvZGluZy9kZWNvZGluZy4gRm9yIGVudmlyb25tZW50c1xuICogd2l0aG91dCBCdWZmZXIgKGUuZy4gUXVpY2tKUyBWTSksIGEgcG9seWZpbGwgb3IgYWx0ZXJuYXRpdmUgYmFzZTY0XG4gKiBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIG5lZWRlZC5cbiAqL1xuXG5pbXBvcnQgeyB0eXBlcyB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQge1xuICBGYXRhbEVycm9yLFxuICBIb29rQ29uZmxpY3RFcnJvcixcbiAgUmV0cnlhYmxlRXJyb3IsXG59IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBSZWR1Y2VycywgUmV2aXZlcnMsIFNlcmlhbGl6YWJsZVNwZWNpYWwgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIC0tLS0gQmFzZTY0IGhlbHBlcnMgLS0tLVxuXG5mdW5jdGlvbiBhcnJheUJ1ZmZlclRvQmFzZTY0KFxuICB2YWx1ZTogQXJyYXlCdWZmZXJMaWtlLFxuICBvZmZzZXQ6IG51bWJlcixcbiAgbGVuZ3RoOiBudW1iZXJcbik6IHN0cmluZyB7XG4gIC8vIEF2b2lkIHJldHVybmluZyBmYWxzeSB2YWx1ZSBmb3IgemVyby1sZW5ndGggYnVmZmVyc1xuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJy4nO1xuICAvLyBDcmVhdGUgYSBwcm9wZXIgY29weSB0byBhdm9pZCBBcnJheUJ1ZmZlciBkZXRhY2htZW50IGlzc3Vlc1xuICBjb25zdCB1aW50OCA9IG5ldyBVaW50OEFycmF5KHZhbHVlLCBvZmZzZXQsIGxlbmd0aCk7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh1aW50OCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufVxuXG5mdW5jdGlvbiB2aWV3VG9CYXNlNjQodmFsdWU6IEFycmF5QnVmZmVyVmlldyk6IHN0cmluZyB7XG4gIHJldHVybiBhcnJheUJ1ZmZlclRvQmFzZTY0KHZhbHVlLmJ1ZmZlciwgdmFsdWUuYnl0ZU9mZnNldCwgdmFsdWUuYnl0ZUxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHJldml2ZUFycmF5QnVmZmVyKFxuICB2YWx1ZTogc3RyaW5nLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IEFycmF5QnVmZmVyIHtcbiAgY29uc3QgYmFzZTY0ID0gdmFsdWUgPT09ICcuJyA/ICcnIDogdmFsdWU7XG4gIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBnbG9iYWwuQXJyYXlCdWZmZXIoYnVmZmVyLmxlbmd0aCk7XG4gIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgZ2xvYmFsLlVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICB1aW50OEFycmF5LnNldChidWZmZXIpO1xuICByZXR1cm4gYXJyYXlCdWZmZXI7XG59XG5cbmZ1bmN0aW9uIHJldml2ZShzdHI6IHN0cmluZykge1xuICAvLyBkZXZhbHVlLnN0cmluZ2lmeSgpIGFsd2F5cyBwcm9kdWNlcyB2YWxpZCBKU09OOiBzcGVjaWFsIHZhbHVlc1xuICAvLyAodW5kZWZpbmVkLCBOYU4sIEluZmluaXR5LCAtMCkgYXJlIGVuY29kZWQgYXMgbmVnYXRpdmUgaW50ZWdlclxuICAvLyBzZW50aW5lbHMgYW5kIHRoZSByZW1haW5pbmcgc3RydWN0dXJlIGlzIG9yZGluYXJ5IEpTT04uIFBhcnNpbmdcbiAgLy8gd2l0aCBKU09OLnBhcnNlIHlpZWxkcyB0aGUgZmxhdHRlbmVkIGZvcm0gdGhhdCB1bmZsYXR0ZW4oKSBleHBlY3RzLlxuICByZXR1cm4gSlNPTi5wYXJzZShzdHIpO1xufVxuXG4vLyAtLS0tIEVycm9yIHN1YmNsYXNzIGhlbHBlcnMgLS0tLVxuXG4vKipcbiAqIFRoZSBzaGFyZWQgc2hhcGUgdGhhdCBldmVyeSBFcnJvci1zdWJjbGFzcyByZWR1Y2VyIGluIHRoaXMgbW9kdWxlXG4gKiBwcm9kdWNlcy4gU29tZSBzdWJjbGFzc2VzIChlLmcuIGBBZ2dyZWdhdGVFcnJvcmAsIGBSZXRyeWFibGVFcnJvcmApIGV4dGVuZFxuICogdGhpcyB3aXRoIGFkZGl0aW9uYWwgZmllbGRzIGJ5IHNwcmVhZGluZyB0aGUgYmFzZSBwYXlsb2FkLlxuICovXG50eXBlIEJhc2VFcnJvclBheWxvYWQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG4gIGNhdXNlPzogdW5rbm93bjtcbn07XG5cbi8qKlxuICogU3Vic2V0IG9mIGBTZXJpYWxpemFibGVTcGVjaWFsYCBrZXlzIHdob3NlIHBheWxvYWQgc2hhcGUgaXMgZXhhY3RseSB0aGVcbiAqIGBCYXNlRXJyb3JQYXlsb2FkYC4gYG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcmAgaXMgY29uc3RyYWluZWQgdG8gb25seVxuICogdGhlc2Uga2V5cyBzbyBpdHMgcmV0dXJuIHR5cGUgaXMgc291bmQg4oCUIHN1YmNsYXNzZXMgdGhhdCBuZWVkIGV4dHJhXG4gKiBmaWVsZHMgKGxpa2UgYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2Agb3IgYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgKSB1c2VcbiAqIGByZWR1Y2VFcnJvckJhc2VgIGRpcmVjdGx5IGFuZCBleHRlbmQgdGhlIHJlc3VsdC5cbiAqL1xudHlwZSBTaW1wbGVFcnJvclN1YmNsYXNzS2V5ID0ge1xuICBbSyBpbiBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSBleHRlbmRzIEJhc2VFcnJvclBheWxvYWRcbiAgICA/IEJhc2VFcnJvclBheWxvYWQgZXh0ZW5kcyBTZXJpYWxpemFibGVTcGVjaWFsW0tdXG4gICAgICA/IEtcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTtcblxuLyoqXG4gKiBSZWR1Y2VzIGFueSBuYXRpdmUgRXJyb3IgaW5zdGFuY2UgdG8gdGhlIHNoYXJlZCBgQmFzZUVycm9yUGF5bG9hZGAgc2hhcGUsXG4gKiBwcmVzZXJ2aW5nIGBjYXVzZWAgb25seSB3aGVuIHByZXNlbnQgKHRvIGRpc3Rpbmd1aXNoIFwibm8gY2F1c2VcIiBmcm9tXG4gKiBcImNhdXNlIGlzIHVuZGVmaW5lZFwiKS4gVXNlZCBkaXJlY3RseSBieSByZWR1Y2VycyBmb3Igc3ViY2xhc3NlcyB0aGF0IG5lZWRcbiAqIHRvIGV4dGVuZCB0aGUgc2hhcGUgd2l0aCBhZGRpdGlvbmFsIGZpZWxkcy5cbiAqXG4gKiBgdHlwZXMuaXNOYXRpdmVFcnJvcigpYCBpcyB1c2VkIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIGZvciBjcm9zcy1WTSBzYWZldHk6XG4gKiBlcnJvcnMgbWF5IG9yaWdpbmF0ZSBmcm9tIGEgZGlmZmVyZW50IFZNIGNvbnRleHQsIGFuZCBgaW5zdGFuY2VvZmAgZmFpbHNcbiAqIGFjcm9zcyBWTSBib3VuZGFyaWVzIHNpbmNlIGVhY2ggY29udGV4dCBoYXMgaXRzIG93biBFcnJvciBjb25zdHJ1Y3Rvci5cbiAqL1xuZnVuY3Rpb24gcmVkdWNlRXJyb3JCYXNlKHZhbHVlOiB1bmtub3duKTogQmFzZUVycm9yUGF5bG9hZCB8IGZhbHNlIHtcbiAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCByZWR1Y2VkOiBCYXNlRXJyb3JQYXlsb2FkID0ge1xuICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsXG4gICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxuICB9O1xuICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkgcmVkdWNlZC5jYXVzZSA9ICh2YWx1ZSBhcyB7IGNhdXNlOiB1bmtub3duIH0pLmNhdXNlO1xuICByZXR1cm4gcmVkdWNlZDtcbn1cblxuLyoqXG4gKiBSZWR1Y2VzIGEgbmF0aXZlIGVycm9yIHRvIHRoZSBzaGFyZWQgYEJhc2VFcnJvclBheWxvYWRgLCBidXQgb25seSB3aGVuIGl0c1xuICogYG5hbWVgIGluc3RhbmNlIHByb3BlcnR5IG1hdGNoZXMgYHN1YmNsYXNzTmFtZWAuIFVzZWQgYnk6XG4gKiAgIC0gYG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcmAsIGZvciBzdWJjbGFzc2VzIHdob3NlIHNlcmlhbGl6ZWQgc2hhcGUgaXNcbiAqICAgICBleGFjdGx5IGBCYXNlRXJyb3JQYXlsb2FkYC5cbiAqICAgLSBJbmxpbmUgcmVkdWNlcnMgZm9yIHN1YmNsYXNzZXMgdGhhdCBleHRlbmQgdGhlIHNoYXBlIHdpdGggYWRkaXRpb25hbFxuICogICAgIGZpZWxkcyAoZS5nLiBgQWdncmVnYXRlRXJyb3IuZXJyb3JzYCwgYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgKS5cbiAqXG4gKiBNYXRjaGluZyBieSBgdmFsdWUubmFtZWAgKGluc3RlYWQgb2YgYHZhbHVlLmNvbnN0cnVjdG9yPy5uYW1lYCkgaXMgcm9idXN0XG4gKiB0byBidW5kbGVycyB0aGF0IGVtaXQgdGhlIGNsYXNzIGFzIGFuIGFub255bW91cyBleHByZXNzaW9uIOKAlCBlLmcuIFR1cmJvcGFja1xuICogY29tcGlsZXMgYGV4cG9ydCBjbGFzcyBGYXRhbEVycm9yIGV4dGVuZHMgRXJyb3Ige+KApn1gIHRvIGEgcmVnaXN0cmF0aW9uIGNhbGxcbiAqIGxpa2UgYGUucyhbXCJGYXRhbEVycm9yXCIsIDAsIGNsYXNzIGV4dGVuZHMgRXJyb3Ige+KApn1dKWAsIGFuZCB0aGUgcmVzdWx0aW5nXG4gKiBjb25zdHJ1Y3RvciBoYXMgYG5hbWUgPT09ICcnYC4gU2luY2UgZXZlcnkgRXJyb3Igc3ViY2xhc3Mgd2UgY2FyZSBhYm91dFxuICogc2V0cyBgdGhpcy5uYW1lYCBleHBsaWNpdGx5IGluIGl0cyBjb25zdHJ1Y3RvciAoYnVpbHQtaW4gc3ViY2xhc3NlcyBkbyB0aGlzXG4gKiBhdXRvbWF0aWNhbGx5OyBgRmF0YWxFcnJvcmAvYFJldHJ5YWJsZUVycm9yYCBkbyBpdCBpbiB1c2VyIGNvZGUpLCB0aGVcbiAqIGluc3RhbmNlIHByb3BlcnR5IGlzIHRoZSByZWxpYWJsZSBpZGVudGl0eSBtYXJrZXIgYWNyb3NzIHJlYWxtcyBhbmRcbiAqIGJ1bmRsZXJzLlxuICovXG5mdW5jdGlvbiByZWR1Y2VOYW1lZEVycm9yU3ViY2xhc3NCYXNlKFxuICBzdWJjbGFzc05hbWU6IHN0cmluZyxcbiAgdmFsdWU6IHVua25vd25cbik6IEJhc2VFcnJvclBheWxvYWQgfCBmYWxzZSB7XG4gIGlmICghdHlwZXMuaXNOYXRpdmVFcnJvcih2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKHZhbHVlLm5hbWUgIT09IHN1YmNsYXNzTmFtZSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gcmVkdWNlRXJyb3JCYXNlKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVkdWNlciBmb3IgYSBidWlsdC1pbiBFcnJvciBzdWJjbGFzcyB3aG9zZSBzZXJpYWxpemVkIHNoYXBlIGlzXG4gKiBleGFjdGx5IGBCYXNlRXJyb3JQYXlsb2FkYCAobm8gZXh0cmEgZmllbGRzKS4gVGhlIHJlZHVjZXIgbWF0Y2hlcyBieVxuICogY29uc3RydWN0b3IgbmFtZSAoYWZ0ZXIgdGhlIGlzTmF0aXZlRXJyb3IgZ2F0ZSksIHNpbmNlIGBpbnN0YW5jZW9mYCBtYXlcbiAqIGZhaWwgYWNyb3NzIFZNIGJvdW5kYXJpZXMuXG4gKi9cbmZ1bmN0aW9uIG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcjxLIGV4dGVuZHMgU2ltcGxlRXJyb3JTdWJjbGFzc0tleT4oXG4gIHN1YmNsYXNzTmFtZTogS1xuKSB7XG4gIHJldHVybiAodmFsdWU6IHVua25vd24pOiBTZXJpYWxpemFibGVTcGVjaWFsW0tdIHwgZmFsc2UgPT4ge1xuICAgIGNvbnN0IGJhc2UgPSByZWR1Y2VOYW1lZEVycm9yU3ViY2xhc3NCYXNlKHN1YmNsYXNzTmFtZSwgdmFsdWUpO1xuICAgIGlmICghYmFzZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBiYXNlIGFzIFNlcmlhbGl6YWJsZVNwZWNpYWxbS107XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJldml2ZXIgZm9yIGEgYnVpbHQtaW4gRXJyb3Igc3ViY2xhc3MuIFJlY29uc3RydWN0cyB0aGUgY29ycmVjdFxuICogYnVpbHQtaW4gRXJyb3IgdHlwZSB1c2luZyB0aGUgY29udGV4dCdzIGNvbnN0cnVjdG9yLiBUaGUgYGNhdXNlYCBvcHRpb24gaXNcbiAqIG9ubHkgcGFzc2VkIHdoZW4gdGhlIHNlcmlhbGl6ZWQgZGF0YSBpbmNsdWRlcyBpdCwgcHJlc2VydmluZyB0aGUgZGlzdGluY3Rpb25cbiAqIGJldHdlZW4gXCJubyBjYXVzZVwiIGFuZCBcImNhdXNlIGlzIHVuZGVmaW5lZFwiLlxuICovXG5mdW5jdGlvbiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXI8SyBleHRlbmRzIGtleW9mIFNlcmlhbGl6YWJsZVNwZWNpYWw+KFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGN0b3JOYW1lOiBzdHJpbmdcbikge1xuICByZXR1cm4gKHZhbHVlOiBTZXJpYWxpemFibGVTcGVjaWFsW0tdKSA9PiB7XG4gICAgY29uc3QgdiA9IHZhbHVlIGFzIEJhc2VFcnJvclBheWxvYWQ7XG4gICAgY29uc3Qgb3B0cyA9ICdjYXVzZScgaW4gdiA/IHsgY2F1c2U6IHYuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBDdG9yID0gZ2xvYmFsW2N0b3JOYW1lXTtcbiAgICBjb25zdCBlcnJvcjogRXJyb3IgPSBuZXcgQ3Rvcih2Lm1lc3NhZ2UsIG9wdHMpO1xuICAgIGlmICh2LnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdi5zdGFjaztcbiAgICByZXR1cm4gZXJyb3I7XG4gIH07XG59XG5cbi8vIC0tLS0gUmVkdWNlcnMgLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbW9uUmVkdWNlcnMoXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbik6IFBhcnRpYWw8UmVkdWNlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICBBcnJheUJ1ZmZlcjogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuQXJyYXlCdWZmZXIgJiZcbiAgICAgIGFycmF5QnVmZmVyVG9CYXNlNjQodmFsdWUsIDAsIHZhbHVlLmJ5dGVMZW5ndGgpLFxuICAgIEJpZ0ludDogKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnICYmIHZhbHVlLnRvU3RyaW5nKCksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuQmlnSW50NjRBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIEJpZ1VpbnQ2NEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5CaWdVaW50NjRBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIERhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuRGF0ZSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHZhbGlkID0gIU51bWJlci5pc05hTih2YWx1ZS5nZXREYXRlKCkpO1xuICAgICAgcmV0dXJuIHZhbGlkID8gdmFsdWUudG9JU09TdHJpbmcoKSA6ICcuJztcbiAgICB9LFxuICAgIC8vIERPTUV4Y2VwdGlvbiBpcyBhIHNwZWNpYWwgY2FzZTogaXQgYGluc3RhbmNlb2YgRXJyb3JgIGlzIHRydWUgaW4gTm9kZSxcbiAgICAvLyBidXQgYHR5cGVzLmlzTmF0aXZlRXJyb3IoKWAgcmV0dXJucyBGQUxTRSBmb3IgaXQsIHNvIHRoZSBnZW5lcmljIEVycm9yXG4gICAgLy8gcmVkdWNlciAod2hpY2ggZ2F0ZXMgb24gaXNOYXRpdmVFcnJvcikgd29uJ3QgbWF0Y2guIENoZWNrIGl0IGV4cGxpY2l0bHlcbiAgICAvLyBieSBjb25zdHJ1Y3RvciBuYW1lICsgRXJyb3IgaW5oZXJpdGFuY2Ugc28gd2UgY2F0Y2ggRE9NRXhjZXB0aW9ucyBmcm9tXG4gICAgLy8gYW55IHJlYWxtIChjcm9zcy1WTSBzYWZldHk6IGluc3RhbmNlb2YgZ2xvYmFsLkRPTUV4Y2VwdGlvbiB3b3VsZCBmYWlsXG4gICAgLy8gZm9yIGluc3RhbmNlcyBtaW50ZWQgaW4gYW5vdGhlciBjb250ZXh0KS5cbiAgICBET01FeGNlcHRpb246ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmIChcbiAgICAgICAgKHZhbHVlIGFzIHsgY29uc3RydWN0b3I/OiB7IG5hbWU/OiBzdHJpbmcgfSB9KS5jb25zdHJ1Y3Rvcj8ubmFtZSAhPT1cbiAgICAgICAgJ0RPTUV4Y2VwdGlvbidcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgZSA9IHZhbHVlIGFzIEVycm9yICYgeyBjYXVzZT86IHVua25vd24gfTtcbiAgICAgIGNvbnN0IHJlZHVjZWQ6IFNlcmlhbGl6YWJsZVNwZWNpYWxbJ0RPTUV4Y2VwdGlvbiddID0ge1xuICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgIG5hbWU6IGUubmFtZSxcbiAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICB9O1xuICAgICAgaWYgKCdjYXVzZScgaW4gZSkgcmVkdWNlZC5jYXVzZSA9IGUuY2F1c2U7XG4gICAgICByZXR1cm4gcmVkdWNlZDtcbiAgICB9LFxuICAgIC8vIEVycm9yIHN1YmNsYXNzIHJlZHVjZXJzIGFyZSBpbnRlbnRpb25hbGx5IHBsYWNlZCBiZWZvcmUgdGhlIGJhc2UgRXJyb3JcbiAgICAvLyByZWR1Y2VyIGJlY2F1c2UgZGV2YWx1ZSB1c2VzIGZpcnN0LW1hdGNoLXdpbnMuIFN1YmNsYXNzLXNwZWNpZmljIHJlZHVjZXJzXG4gICAgLy8gbXVzdCBiZSBjaGVja2VkIGZpcnN0IHNvIHRoYXQgZS5nLiBhIFR5cGVFcnJvciBpcyBzZXJpYWxpemVkIGFzIFwiVHlwZUVycm9yXCJcbiAgICAvLyByYXRoZXIgdGhhbiBmYWxsaW5nIHRocm91Z2ggdG8gdGhlIGdlbmVyaWMgXCJFcnJvclwiIHJlZHVjZXIuXG4gICAgLy8gU2VlIGBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXJgIGZvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuICAgIEV2YWxFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdFdmFsRXJyb3InKSxcbiAgICBGYXRhbEVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXIoJ0ZhdGFsRXJyb3InKSxcbiAgICBIb29rQ29uZmxpY3RFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBiYXNlID0gcmVkdWNlTmFtZWRFcnJvclN1YmNsYXNzQmFzZSgnSG9va0NvbmZsaWN0RXJyb3InLCB2YWx1ZSk7XG4gICAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGVycm9yID0gdmFsdWUgYXMgSG9va0NvbmZsaWN0RXJyb3I7XG4gICAgICBjb25zdCByZWR1Y2VkOiBTZXJpYWxpemFibGVTcGVjaWFsWydIb29rQ29uZmxpY3RFcnJvciddID0ge1xuICAgICAgICAuLi5iYXNlLFxuICAgICAgICB0b2tlbjogZXJyb3IudG9rZW4sXG4gICAgICB9O1xuICAgICAgaWYgKGVycm9yLmNvbmZsaWN0aW5nUnVuSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZWR1Y2VkLmNvbmZsaWN0aW5nUnVuSWQgPSBlcnJvci5jb25mbGljdGluZ1J1bklkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZHVjZWQ7XG4gICAgfSxcbiAgICBSYW5nZUVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXIoJ1JhbmdlRXJyb3InKSxcbiAgICBSZWZlcmVuY2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdSZWZlcmVuY2VFcnJvcicpLFxuICAgIC8vIFJldHJ5YWJsZUVycm9yIGNhcnJpZXMgYW4gZXh0cmEgYHJldHJ5QWZ0ZXJgIERhdGUgdGhhdCB3ZSBzZXJpYWxpemUgYXNcbiAgICAvLyBhIG51bWVyaWMgZXBvY2ggdGltZXN0YW1wLiBUaGUgRGF0ZSByZWR1Y2VyIHVzZXMgYGluc3RhbmNlb2YgZ2xvYmFsLkRhdGVgLFxuICAgIC8vIHdoaWNoIGZhaWxzIGZvciBEYXRlcyBmcm9tIGEgZGlmZmVyZW50IFZNIHJlYWxtOyBzZXJpYWxpemluZyBhcyBhXG4gICAgLy8gbnVtYmVyIHNpZGVzdGVwcyB0aGF0IGlzc3VlLlxuICAgIFJldHJ5YWJsZUVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGJhc2UgPSByZWR1Y2VOYW1lZEVycm9yU3ViY2xhc3NCYXNlKCdSZXRyeWFibGVFcnJvcicsIHZhbHVlKTtcbiAgICAgIGlmICghYmFzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgcmV0cnlBZnRlclJhdyA9ICh2YWx1ZSBhcyBSZXRyeWFibGVFcnJvcikucmV0cnlBZnRlciBhcyB1bmtub3duO1xuICAgICAgbGV0IHJldHJ5QWZ0ZXI6IG51bWJlcjtcbiAgICAgIGlmIChcbiAgICAgICAgcmV0cnlBZnRlclJhdyAmJlxuICAgICAgICB0eXBlb2YgcmV0cnlBZnRlclJhdyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdHlwZW9mIChyZXRyeUFmdGVyUmF3IGFzIHsgZ2V0VGltZT86IHVua25vd24gfSkuZ2V0VGltZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHQgPSAocmV0cnlBZnRlclJhdyBhcyBEYXRlKS5nZXRUaW1lKCk7XG4gICAgICAgIHJldHJ5QWZ0ZXIgPSBOdW1iZXIuaXNOYU4odCkgPyBEYXRlLm5vdygpICsgMTAwMCA6IHQ7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2YgcmV0cnlBZnRlclJhdyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIHJldHJ5QWZ0ZXJSYXcgPT09ICdudW1iZXInXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdCA9IG5ldyBEYXRlKHJldHJ5QWZ0ZXJSYXcpLmdldFRpbWUoKTtcbiAgICAgICAgcmV0cnlBZnRlciA9IE51bWJlci5pc05hTih0KSA/IERhdGUubm93KCkgKyAxMDAwIDogdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHJ5QWZ0ZXIgPSBEYXRlLm5vdygpICsgMTAwMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2UsXG4gICAgICAgIHJldHJ5QWZ0ZXIsXG4gICAgICB9IHNhdGlzZmllcyBTZXJpYWxpemFibGVTcGVjaWFsWydSZXRyeWFibGVFcnJvciddO1xuICAgIH0sXG4gICAgU3ludGF4RXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignU3ludGF4RXJyb3InKSxcbiAgICBUeXBlRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignVHlwZUVycm9yJyksXG4gICAgVVJJRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignVVJJRXJyb3InKSxcbiAgICAvLyBBZ2dyZWdhdGVFcnJvciBpcyBzaW1pbGFyIHRvIG90aGVyIHN1YmNsYXNzZXMgYnV0IGFsc28gcHJlc2VydmVzIHRoZVxuICAgIC8vIGBlcnJvcnNgIGFycmF5LiBXZSBleHRlbmQgdGhlIGJhc2UgaGVscGVyJ3Mgb3V0cHV0IGhlcmUuXG4gICAgQWdncmVnYXRlRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgYmFzZSA9IHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoJ0FnZ3JlZ2F0ZUVycm9yJywgdmFsdWUpO1xuICAgICAgaWYgKCFiYXNlKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlLFxuICAgICAgICBlcnJvcnM6ICh2YWx1ZSBhcyBBZ2dyZWdhdGVFcnJvcikuZXJyb3JzLFxuICAgICAgfSBzYXRpc2ZpZXMgU2VyaWFsaXphYmxlU3BlY2lhbFsnQWdncmVnYXRlRXJyb3InXTtcbiAgICB9LFxuICAgIC8vIEJhc2UgRXJyb3IgcmVkdWNlciDigJQgY2F0Y2gtYWxsIGZvciBhbnkgRXJyb3IgaW5zdGFuY2Ugbm90IG1hdGNoZWQgYnkgYVxuICAgIC8vIHNwZWNpZmljIHN1YmNsYXNzIHJlZHVjZXIgYWJvdmUgKGluY2x1ZGluZyB1c2VyIEVycm9yIHN1YmNsYXNzZXMgd2l0aG91dFxuICAgIC8vIFdPUktGTE9XX1NFUklBTElaRSkuIFByZXNlcnZlcyBgbmFtZWAgc28gdGhlIGVycm9yJ3MgaWRlbnRpdHkgaXMgcmV0YWluZWRcbiAgICAvLyBldmVuIHRob3VnaCB0aGUgZXhhY3QgY2xhc3MgY2Fubm90IGJlIHJlY29uc3RydWN0ZWQuXG4gICAgRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgcmVkdWNlZDogU2VyaWFsaXphYmxlU3BlY2lhbFsnRXJyb3InXSA9IHtcbiAgICAgICAgbmFtZTogdmFsdWUubmFtZSxcbiAgICAgICAgbWVzc2FnZTogdmFsdWUubWVzc2FnZSxcbiAgICAgICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxuICAgICAgfTtcbiAgICAgIGlmICgnY2F1c2UnIGluIHZhbHVlKSByZWR1Y2VkLmNhdXNlID0gdmFsdWUuY2F1c2U7XG4gICAgICByZXR1cm4gcmVkdWNlZDtcbiAgICB9LFxuICAgIEZsb2F0MzJBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuRmxvYXQzMkFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgRmxvYXQ2NEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5GbG9hdDY0QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBIZWFkZXJzOiAodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLkhlYWRlcnMgJiYgQXJyYXkuZnJvbSh2YWx1ZSksXG4gICAgSW50OEFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5JbnQ4QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBJbnQxNkFycmF5OiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5JbnQxNkFycmF5ICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgSW50MzJBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuSW50MzJBcnJheSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIE1hcDogKHZhbHVlKSA9PiB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5NYXAgJiYgQXJyYXkuZnJvbSh2YWx1ZSksXG4gICAgUmVnRXhwOiAodmFsdWUpID0+XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5SZWdFeHAgJiYge1xuICAgICAgICBzb3VyY2U6IHZhbHVlLnNvdXJjZSxcbiAgICAgICAgZmxhZ3M6IHZhbHVlLmZsYWdzLFxuICAgICAgfSxcbiAgICAvLyBSZXF1ZXN0IGFuZCBSZXNwb25zZSBhcmUgaW50ZW50aW9uYWxseSBOT1QgaW4gY29tbW9uIHJlZHVjZXJzLlxuICAgIC8vIFRoZXkgcmVxdWlyZSBtb2RlLXNwZWNpZmljIHJldml2ZXJzIChzdHJlYW0gaGFuZGxpbmcsIGV0Yy4pIGFuZFxuICAgIC8vIGluY2x1ZGluZyB0aGVtIGhlcmUgd2l0aG91dCBtYXRjaGluZyByZXZpdmVycyB3b3VsZCBjYXVzZSB0aGVtXG4gICAgLy8gdG8gZGVzZXJpYWxpemUgYXMgcGxhaW4gb2JqZWN0cy5cbiAgICBTZXQ6ICh2YWx1ZSkgPT4gdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuU2V0ICYmIEFycmF5LmZyb20odmFsdWUpLFxuICAgIFVSTDogKHZhbHVlKSA9PiB2YWx1ZSBpbnN0YW5jZW9mIGdsb2JhbC5VUkwgJiYgdmFsdWUuaHJlZixcbiAgICBXb3JrZmxvd0Z1bmN0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIE9ubHkgbWF0Y2ggZnVuY3Rpb24gcmVmZXJlbmNlcyB3aXRoIGEgd29ya2Zsb3dJZCBwcm9wZXJ0eSAoc2V0IGJ5XG4gICAgICAvLyB0aGUgU1dDIGNvbXBpbGVyIG9uIHdvcmtmbG93IGZ1bmN0aW9ucykuIFBsYWluIHsgd29ya2Zsb3dJZCB9IG9iamVjdHNcbiAgICAgIC8vIGFyZSBOT1QgbWF0Y2hlZCDigJQgdGhpcyBwcmV2ZW50cyBpbmZpbml0ZSByZWN1cnNpb24gc2luY2UgdGhlIHJlZHVjZWRcbiAgICAgIC8vIGZvcm0geyB3b3JrZmxvd0lkIH0gaXMgYSBwbGFpbiBvYmplY3QsIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3Qgd29ya2Zsb3dJZCA9ICh2YWx1ZSBhcyBhbnkpLndvcmtmbG93SWQ7XG4gICAgICBpZiAodHlwZW9mIHdvcmtmbG93SWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4geyB3b3JrZmxvd0lkIH07XG4gICAgfSxcbiAgICBVUkxTZWFyY2hQYXJhbXM6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVVJMU2VhcmNoUGFyYW1zKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKHZhbHVlLnNpemUgPT09IDApIHJldHVybiAnLic7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9LFxuICAgIFVpbnQ4QXJyYXk6ICh2YWx1ZSkgPT5cbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBVaW50OENsYW1wZWRBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVWludDhDbGFtcGVkQXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBVaW50MTZBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVWludDE2QXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBVaW50MzJBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBnbG9iYWwuVWludDMyQXJyYXkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgfTtcbn1cblxuLy8gLS0tLSBSZXZpdmVycyAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb25SZXZpdmVycyhcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpc1xuKTogUGFydGlhbDxSZXZpdmVycz4ge1xuICByZXR1cm4ge1xuICAgIEFycmF5QnVmZmVyOiAodmFsdWU6IHN0cmluZykgPT4gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCksXG4gICAgQmlnSW50OiAodmFsdWU6IHN0cmluZykgPT4gZ2xvYmFsLkJpZ0ludCh2YWx1ZSksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkJpZ0ludDY0QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEJpZ1VpbnQ2NEFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuQmlnVWludDY0QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIERhdGU6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5EYXRlKHZhbHVlKSxcbiAgICBET01FeGNlcHRpb246ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZ2xvYmFsLkRPTUV4Y2VwdGlvbih2YWx1ZS5tZXNzYWdlLCB2YWx1ZS5uYW1lKTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgLy8gRE9NRXhjZXB0aW9uJ3MgY29uc3RydWN0b3IgZG9lc24ndCBhY2NlcHQgYSBjYXVzZSBvcHRpb24sIHNvXG4gICAgICAvLyB3ZSBzZXQgaXQgbWFudWFsbHkgd2hlbiBwcmVzZW50IGluIHRoZSBzZXJpYWxpemVkIGRhdGEuXG4gICAgICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkgZXJyb3IuY2F1c2UgPSB2YWx1ZS5jYXVzZTtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIC8vIEVycm9yIHN1YmNsYXNzIHJldml2ZXJzIHJlY29uc3RydWN0IHRoZSBjb3JyZWN0IGJ1aWx0LWluIEVycm9yIHR5cGUuXG4gICAgLy8gU2VlIGBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXJgIGZvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuICAgIEV2YWxFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ0V2YWxFcnJvcicpLFxuICAgIC8vIGBGYXRhbEVycm9yYCBhbmQgYFJldHJ5YWJsZUVycm9yYCBhcmUgbm90IGJ1aWx0LWlucywgc28gd2UgcmVzb2x2ZSB0aGVtXG4gICAgLy8gZnJvbSB0aGUgY29uc3VtZXIncyBgZ2xvYmFsVGhpc2AgdmlhIGEgYFN5bWJvbC5mb3IoLi4uKWAga2V5IHJlZ2lzdGVyZWRcbiAgICAvLyBieSBgQHdvcmtmbG93L2Vycm9yc2Agb24gbG9hZC4gVGhpcyBtYWtlcyBgaW5zdGFuY2VvZiBGYXRhbEVycm9yYCB3b3JrXG4gICAgLy8gaW4gdXNlciBjb2RlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgcmVhbG0gdGhhbiB0aGlzIHJlZHVjZXIgbW9kdWxlXG4gICAgLy8gKGUuZy4gd2hlbiB0aGUgaG9zdCBoeWRyYXRlcyBhIHZhbHVlIGRlc3RpbmVkIGZvciBhIHdvcmtmbG93IFZNXG4gICAgLy8gY29udGV4dCkuIFNlZSB0aGUgcmVnaXN0cmF0aW9uIGJsb2NrIGF0IHRoZSBib3R0b20gb2ZcbiAgICAvLyBgcGFja2FnZXMvZXJyb3JzL3NyYy9pbmRleC50c2AgZm9yIGRldGFpbHMuIEZhbGxzIGJhY2sgdG8gdGhlIGltcG9ydGVkXG4gICAgLy8gY2xhc3MgZm9yIGVudmlyb25tZW50cyB3aGVyZSBubyBidW5kbGVkIGBAd29ya2Zsb3cvZXJyb3JzYCBoYXMgbG9hZGVkXG4gICAgLy8gaW4gdGhlIGNvbnN1bWVyIHJlYWxtLlxuICAgIEZhdGFsRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgQ3RvciA9XG4gICAgICAgICgoZ2xvYmFsIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtcbiAgICAgICAgICBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvZXJyb3JzLy9GYXRhbEVycm9yJylcbiAgICAgICAgXSBhcyB0eXBlb2YgRmF0YWxFcnJvciB8IHVuZGVmaW5lZCkgPz8gRmF0YWxFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUubWVzc2FnZSk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIGlmICgnY2F1c2UnIGluIHZhbHVlKSBlcnJvci5jYXVzZSA9IHZhbHVlLmNhdXNlO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgSG9va0NvbmZsaWN0RXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgQ3RvciA9XG4gICAgICAgICgoZ2xvYmFsIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtcbiAgICAgICAgICBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvZXJyb3JzLy9Ib29rQ29uZmxpY3RFcnJvcicpXG4gICAgICAgIF0gYXMgdHlwZW9mIEhvb2tDb25mbGljdEVycm9yIHwgdW5kZWZpbmVkKSA/PyBIb29rQ29uZmxpY3RFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUudG9rZW4sIHZhbHVlLmNvbmZsaWN0aW5nUnVuSWQpO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkge1xuICAgICAgICAoZXJyb3IgYXMgRXJyb3IgJiB7IGNhdXNlPzogdW5rbm93biB9KS5jYXVzZSA9IHZhbHVlLmNhdXNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgUmFuZ2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1JhbmdlRXJyb3InKSxcbiAgICBSZWZlcmVuY2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1JlZmVyZW5jZUVycm9yJyksXG4gICAgUmV0cnlhYmxlRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBjb250ZXh0J3MgYERhdGVgIGNvbnN0cnVjdG9yIChtYXRjaGluZyB0aGUgcmVzdCBvZiB0aGlzXG4gICAgICAvLyBtb2R1bGUpIHNvIHRoZSByZXN1bHRpbmcgYHJldHJ5QWZ0ZXJgIERhdGUgcGFzc2VzIGBpbnN0YW5jZW9mXG4gICAgICAvLyBnbG9iYWwuRGF0ZWAgY2hlY2tzIGluIHRoZSB0YXJnZXQgcmVhbG0uIFNlZSB0aGUgRmF0YWxFcnJvciByZXZpdmVyXG4gICAgICAvLyBhYm92ZSBmb3Igd2h5IHdlIHJlc29sdmUgYFJldHJ5YWJsZUVycm9yYCBmcm9tIHRoZSBjb25zdW1lcidzXG4gICAgICAvLyBnbG9iYWxUaGlzIGluc3RlYWQgb2YgdGhlIGltcG9ydGVkIGNsYXNzLlxuICAgICAgY29uc3QgQ3RvciA9XG4gICAgICAgICgoZ2xvYmFsIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtcbiAgICAgICAgICBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvZXJyb3JzLy9SZXRyeWFibGVFcnJvcicpXG4gICAgICAgIF0gYXMgdHlwZW9mIFJldHJ5YWJsZUVycm9yIHwgdW5kZWZpbmVkKSA/PyBSZXRyeWFibGVFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUubWVzc2FnZSwge1xuICAgICAgICByZXRyeUFmdGVyOiBuZXcgZ2xvYmFsLkRhdGUodmFsdWUucmV0cnlBZnRlciksXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgaWYgKCdjYXVzZScgaW4gdmFsdWUpIGVycm9yLmNhdXNlID0gdmFsdWUuY2F1c2U7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBTeW50YXhFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1N5bnRheEVycm9yJyksXG4gICAgVHlwZUVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXIoZ2xvYmFsLCAnVHlwZUVycm9yJyksXG4gICAgVVJJRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmV2aXZlcihnbG9iYWwsICdVUklFcnJvcicpLFxuICAgIEFnZ3JlZ2F0ZUVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHZhbHVlID8geyBjYXVzZTogdmFsdWUuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IGdsb2JhbC5BZ2dyZWdhdGVFcnJvcihcbiAgICAgICAgdmFsdWUuZXJyb3JzLFxuICAgICAgICB2YWx1ZS5tZXNzYWdlLFxuICAgICAgICBvcHRzXG4gICAgICApO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICAvLyBCYXNlIEVycm9yIHJldml2ZXIg4oCUIHVzZWQgZm9yIHBsYWluIEVycm9yIGluc3RhbmNlcyBhbmQgdW5yZWNvZ25pemVkXG4gICAgLy8gRXJyb3Igc3ViY2xhc3Nlcy4gUHJlc2VydmVzIGBuYW1lYCBzbyB0aGUgZXJyb3IncyBpZGVudGl0eSBpcyByZXRhaW5lZC5cbiAgICBFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0gJ2NhdXNlJyBpbiB2YWx1ZSA/IHsgY2F1c2U6IHZhbHVlLmNhdXNlIH0gOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBnbG9iYWwuRXJyb3IodmFsdWUubWVzc2FnZSwgb3B0cyk7XG4gICAgICBlcnJvci5uYW1lID0gdmFsdWUubmFtZTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgRmxvYXQzMkFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuRmxvYXQzMkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBGbG9hdDY0QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5GbG9hdDY0QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEhlYWRlcnM6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5IZWFkZXJzKHZhbHVlKSxcbiAgICBJbnQ4QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5JbnQ4QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEludDE2QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5JbnQxNkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBJbnQzMkFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuSW50MzJBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgTWFwOiAodmFsdWUpID0+IG5ldyBnbG9iYWwuTWFwKHZhbHVlKSxcbiAgICBSZWdFeHA6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5SZWdFeHAodmFsdWUuc291cmNlLCB2YWx1ZS5mbGFncyksXG4gICAgU2V0OiAodmFsdWUpID0+IG5ldyBnbG9iYWwuU2V0KHZhbHVlKSxcbiAgICBVUkw6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5VUkwodmFsdWUpLFxuICAgIFdvcmtmbG93RnVuY3Rpb246ICh2YWx1ZSkgPT5cbiAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnV29ya2Zsb3cgZnVuY3Rpb25zIGNhbm5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuIFVzZSBzdGFydCgpIHRvIGludm9rZSB0aGVtLidcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICB7IHdvcmtmbG93SWQ6IHZhbHVlLndvcmtmbG93SWQgfVxuICAgICAgKSxcbiAgICBVUkxTZWFyY2hQYXJhbXM6ICh2YWx1ZSkgPT5cbiAgICAgIG5ldyBnbG9iYWwuVVJMU2VhcmNoUGFyYW1zKHZhbHVlID09PSAnLicgPyAnJyA6IHZhbHVlKSxcbiAgICBVaW50OEFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuVWludDhBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgVWludDhDbGFtcGVkQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VaW50OENsYW1wZWRBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgVWludDE2QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VaW50MTZBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgVWludDMyQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VaW50MzJBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gIH07XG59XG5cbi8vIFJlLWV4cG9ydCBmb3IgdXNlIGluIGxlZ2FjeSBjb21wYXRcbmV4cG9ydCB7IHJldml2ZSB9O1xuIl19
@@ -62,6 +62,13 @@ export interface SerializableSpecial {
62
62
  cause?: unknown;
63
63
  };
64
64
  Headers: [string, string][];
65
+ HookConflictError: {
66
+ message: string;
67
+ stack?: string;
68
+ cause?: unknown;
69
+ token: string;
70
+ conflictingRunId?: string;
71
+ };
65
72
  Int8Array: string;
66
73
  Int16Array: string;
67
74
  Int32Array: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/serialization/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/serialization/types.ts"],"names":[],"mappings":"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"}
@@ -18,4 +18,4 @@ export const SerializationFormat = {
18
18
  /** Encrypted payload (inner payload has its own format prefix) */
19
19
  ENCRYPTED: 'encr',
20
20
  };
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQWFIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLDJEQUEyRDtJQUMzRCxVQUFVLEVBQUUsTUFBc0I7SUFDbEMsa0VBQWtFO0lBQ2xFLFNBQVMsRUFBRSxNQUFzQjtDQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgdHlwZXMgZm9yIHRoZSBzZXJpYWxpemF0aW9uIHN5c3RlbS5cbiAqL1xuXG4vLyAtLS0tIEZvcm1hdCBQcmVmaXggLS0tLVxuXG4vKipcbiAqIEEgZm9ybWF0IHByZWZpeCBpcyBleGFjdGx5IDQgbG93ZXJjYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIFthLXowLTldLlxuICpcbiAqIFRoaXMgaXMgYSBicmFuZGVkIHN0cmluZyB0eXBlIOKAlCB1c2UgYGlzRm9ybWF0UHJlZml4KClgIHRvIHZhbGlkYXRlXG4gKiBhdCBydW50aW1lLiBUaGUgYFNlcmlhbGl6YXRpb25Gb3JtYXRgIG9iamVjdCBwcm92aWRlcyB3ZWxsLWtub3duXG4gKiBjb25zdGFudHMsIGJ1dCBjb2RlY3MgbWF5IGRlZmluZSBhZGRpdGlvbmFsIHByZWZpeGVzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtYXRQcmVmaXggPSBzdHJpbmcgJiB7IHJlYWRvbmx5IF9fYnJhbmQ6ICdGb3JtYXRQcmVmaXgnIH07XG5cbi8qKlxuICogUnVudGltZSB0eXBlIGd1YXJkIGZvciBmb3JtYXQgcHJlZml4IHN0cmluZ3MuXG4gKlxuICogVmFsaWRhdGVzIHRoYXQgYSBzdHJpbmcgaXMgZXhhY3RseSA0IGNoYXJhY3RlcnMgb2YgW2EtejAtOV0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1hdFByZWZpeCh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRm9ybWF0UHJlZml4IHtcbiAgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gNCAmJiAvXlthLXowLTldezR9JC8udGVzdCh2YWx1ZSk7XG59XG5cbi8qKlxuICogV2VsbC1rbm93biBmb3JtYXQgcHJlZml4IGNvbnN0YW50cy4gQ29kZWNzIG1heSBkZWZpbmUgYWRkaXRpb25hbCBvbmVzLlxuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkZvcm1hdCA9IHtcbiAgLyoqIGRldmFsdWUgc3RyaW5naWZ5L3BhcnNlIHdpdGggVGV4dEVuY29kZXIvVGV4dERlY29kZXIgKi9cbiAgREVWQUxVRV9WMTogJ2RldmwnIGFzIEZvcm1hdFByZWZpeCxcbiAgLyoqIEVuY3J5cHRlZCBwYXlsb2FkIChpbm5lciBwYXlsb2FkIGhhcyBpdHMgb3duIGZvcm1hdCBwcmVmaXgpICovXG4gIEVOQ1JZUFRFRDogJ2VuY3InIGFzIEZvcm1hdFByZWZpeCxcbn0gYXMgY29uc3Q7XG5cbi8vIC0tLS0gU2VyaWFsaXphYmxlIFR5cGVzIC0tLS1cblxuLyoqXG4gKiBUeXBlcyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFuZGxpbmcgd2hlbiBzZXJpYWxpemVkL2Rlc2VyaWFsaXplZC5cbiAqIElmIGEgdHlwZSBpcyBhZGRlZCBoZXJlLCBpdCBNVVNUIGFsc28gYmUgYWRkZWQgdG8gdGhlIGBTZXJpYWxpemFibGVgXG4gKiB0eXBlIGluIGBzY2hlbWFzLnRzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemFibGVTcGVjaWFsIHtcbiAgQXJyYXlCdWZmZXI6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBCaWdJbnQ6IHN0cmluZzsgLy8gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGJpZ2ludFxuICBCaWdJbnQ2NEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgQmlnVWludDY0QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBEYXRlOiBzdHJpbmc7IC8vIElTTyBzdHJpbmdcbiAgRE9NRXhjZXB0aW9uOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gIH07XG4gIEZhdGFsRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIEZsb2F0MzJBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEZsb2F0NjRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEVycm9yOiB7IG5hbWU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIEV2YWxFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgSGVhZGVyczogW3N0cmluZywgc3RyaW5nXVtdO1xuICBJbnQ4QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBJbnQxNkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgSW50MzJBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIE1hcDogW2FueSwgYW55XVtdO1xuICBSYW5nZUVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBSZWFkYWJsZVN0cmVhbTpcbiAgICB8IHsgbmFtZTogc3RyaW5nOyB0eXBlPzogJ2J5dGVzJzsgc3RhcnRJbmRleD86IG51bWJlciB9XG4gICAgfCB7IGJvZHlJbml0OiBhbnkgfTtcbiAgUmVmZXJlbmNlRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIFJlZ0V4cDogeyBzb3VyY2U6IHN0cmluZzsgZmxhZ3M6IHN0cmluZyB9O1xuICAvKipcbiAgICogYHJldHJ5QWZ0ZXJgIGlzIHNlcmlhbGl6ZWQgYXMgYSBudW1lcmljIGVwb2NoIHRpbWVzdGFtcCByYXRoZXIgdGhhbiBhXG4gICAqIGBEYXRlYCB0byBiZSByZWFsbS1zYWZlLiBUaGUgRGF0ZSByZWR1Y2VyIHVzZXMgYGluc3RhbmNlb2YgZ2xvYmFsLkRhdGVgLFxuICAgKiB3aGljaCBmYWlscyBmb3IgRGF0ZXMgZnJvbSBhIGRpZmZlcmVudCBWTSByZWFsbS5cbiAgICovXG4gIFJldHJ5YWJsZUVycm9yOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICAgIGNhdXNlPzogdW5rbm93bjtcbiAgICByZXRyeUFmdGVyOiBudW1iZXI7XG4gIH07XG4gIFJlcXVlc3Q6IHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgICBoZWFkZXJzOiBIZWFkZXJzO1xuICAgIGJvZHk6IFJlcXVlc3RbJ2JvZHknXTtcbiAgICBkdXBsZXg6IFJlcXVlc3RbJ2R1cGxleCddO1xuICAgIHJlc3BvbnNlV3JpdGFibGU/OiBXcml0YWJsZVN0cmVhbTxSZXNwb25zZT47XG4gICAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIH07XG4gIFJlc3BvbnNlOiB7XG4gICAgdHlwZTogUmVzcG9uc2VbJ3R5cGUnXTtcbiAgICB1cmw6IHN0cmluZztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgaGVhZGVyczogSGVhZGVycztcbiAgICBib2R5OiBSZXNwb25zZVsnYm9keSddO1xuICAgIHJlZGlyZWN0ZWQ6IGJvb2xlYW47XG4gIH07XG4gIENsYXNzOiB7XG4gICAgY2xhc3NJZDogc3RyaW5nO1xuICB9O1xuICBJbnN0YW5jZToge1xuICAgIGNsYXNzSWQ6IHN0cmluZztcbiAgICBkYXRhOiB1bmtub3duO1xuICB9O1xuICBTZXQ6IGFueVtdO1xuICBTeW50YXhFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgU3RlcEZ1bmN0aW9uOiB7XG4gICAgc3RlcElkOiBzdHJpbmc7XG4gICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIC8qKlxuICAgICAqIENhcHR1cmVkIGxleGljYWwgYHRoaXNgIGZvciBzdGVwIHByb3hpZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgdmlhXG4gICAgICogYHVzZVN0ZXAoLi4uKS5iaW5kKHRoaXNBcmcpYCAodGhlIFNXQyBwbHVnaW4gZW1pdHMgdGhpcyBmb3IgbmVzdGVkXG4gICAgICogYXJyb3cgc3RlcHMgdGhhdCBjbG9zZSBvdmVyIHRoZWlyIGVuY2xvc2luZyBmdW5jdGlvbidzIGB0aGlzYCkuXG4gICAgICogVGhlIHJldml2ZXIgcmUtYmluZHMgdGhlIGZyZXNobHktY3JlYXRlZCBwcm94eSB0byB0aGlzIHZhbHVlIHNvIHRoZVxuICAgICAqIGJpbmRpbmcgc3Vydml2ZXMgc2VyaWFsaXphdGlvbiByb3VuZC10cmlwcy5cbiAgICAgKi9cbiAgICBib3VuZFRoaXM/OiB1bmtub3duO1xuICAgIC8qKlxuICAgICAqIFByZWZpbGxlZCBhcmd1bWVudHMgY2FwdHVyZWQgd2hlbiB0aGUgdXNlciAocmF0aGVyIHRoYW4gdGhlIFNXQ1xuICAgICAqIHBsdWdpbikgY2FsbGVkIGB1c2VTdGVwKC4uLikuYmluZCh0aGlzQXJnLCB4LCB5KWAuIFRoZSByZXZpdmVyXG4gICAgICogcmUtYXBwbGllcyB0aGVzZSBhbG9uZ3NpZGUgYGJvdW5kVGhpc2Agc28gcGFydGlhbCBhcHBsaWNhdGlvblxuICAgICAqIHN1cnZpdmVzIHNlcmlhbGl6YXRpb24uIFRoZSBTV0MgcGx1Z2luIG9ubHkgZXZlciBlbWl0c1xuICAgICAqIGAuYmluZCh0aGlzKWAgd2l0aCBubyBleHRyYSBhcmdzIHRvZGF5OyB0aGlzIHNsb3QgZXhpc3RzIHNvIGFcbiAgICAgKiBoYW5kLXdyaXR0ZW4gYC5iaW5kKHRoaXNBcmcsIHgpYCBkb2Vzbid0IHNpbGVudGx5IGxvc2UgYHhgIGFmdGVyXG4gICAgICogcm91bmQtdHJpcHBpbmcgdGhyb3VnaCB0aGUgcmVkdWNlci9yZXZpdmVyLlxuICAgICAqL1xuICAgIGJvdW5kQXJncz86IHVua25vd25bXTtcbiAgfTtcbiAgVHlwZUVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBVUklFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgVVJMOiBzdHJpbmc7XG4gIFdvcmtmbG93RnVuY3Rpb246IHtcbiAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gIH07XG4gIFVSTFNlYXJjaFBhcmFtczogc3RyaW5nO1xuICBVaW50OEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgVWludDhDbGFtcGVkQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBVaW50MTZBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIFVpbnQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgQWdncmVnYXRlRXJyb3I6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgY2F1c2U/OiB1bmtub3duO1xuICAgIGVycm9yczogdW5rbm93bltdO1xuICB9O1xuICBXcml0YWJsZVN0cmVhbTogeyBuYW1lOiBzdHJpbmcgfTtcbiAgQWJvcnRDb250cm9sbGVyOiB7XG4gICAgc3RyZWFtTmFtZTogc3RyaW5nO1xuICAgIGhvb2tUb2tlbjogc3RyaW5nO1xuICAgIGFib3J0ZWQ6IGJvb2xlYW47XG4gICAgcmVhc29uPzogdW5rbm93bjtcbiAgfTtcbiAgQWJvcnRTaWduYWw6IHtcbiAgICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gICAgaG9va1Rva2VuOiBzdHJpbmc7XG4gICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiB1bmtub3duO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZWR1Y2VycyA9IHtcbiAgW0sgaW4ga2V5b2YgU2VyaWFsaXphYmxlU3BlY2lhbF06IChcbiAgICB2YWx1ZTogYW55XG4gICkgPT4gU2VyaWFsaXphYmxlU3BlY2lhbFtLXSB8IGZhbHNlO1xufTtcblxuZXhwb3J0IHR5cGUgUmV2aXZlcnMgPSB7XG4gIFtLIGluIGtleW9mIFNlcmlhbGl6YWJsZVNwZWNpYWxdOiAodmFsdWU6IFNlcmlhbGl6YWJsZVNwZWNpYWxbS10pID0+IGFueTtcbn07XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQWFIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLDJEQUEyRDtJQUMzRCxVQUFVLEVBQUUsTUFBc0I7SUFDbEMsa0VBQWtFO0lBQ2xFLFNBQVMsRUFBRSxNQUFzQjtDQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgdHlwZXMgZm9yIHRoZSBzZXJpYWxpemF0aW9uIHN5c3RlbS5cbiAqL1xuXG4vLyAtLS0tIEZvcm1hdCBQcmVmaXggLS0tLVxuXG4vKipcbiAqIEEgZm9ybWF0IHByZWZpeCBpcyBleGFjdGx5IDQgbG93ZXJjYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIFthLXowLTldLlxuICpcbiAqIFRoaXMgaXMgYSBicmFuZGVkIHN0cmluZyB0eXBlIOKAlCB1c2UgYGlzRm9ybWF0UHJlZml4KClgIHRvIHZhbGlkYXRlXG4gKiBhdCBydW50aW1lLiBUaGUgYFNlcmlhbGl6YXRpb25Gb3JtYXRgIG9iamVjdCBwcm92aWRlcyB3ZWxsLWtub3duXG4gKiBjb25zdGFudHMsIGJ1dCBjb2RlY3MgbWF5IGRlZmluZSBhZGRpdGlvbmFsIHByZWZpeGVzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtYXRQcmVmaXggPSBzdHJpbmcgJiB7IHJlYWRvbmx5IF9fYnJhbmQ6ICdGb3JtYXRQcmVmaXgnIH07XG5cbi8qKlxuICogUnVudGltZSB0eXBlIGd1YXJkIGZvciBmb3JtYXQgcHJlZml4IHN0cmluZ3MuXG4gKlxuICogVmFsaWRhdGVzIHRoYXQgYSBzdHJpbmcgaXMgZXhhY3RseSA0IGNoYXJhY3RlcnMgb2YgW2EtejAtOV0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1hdFByZWZpeCh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRm9ybWF0UHJlZml4IHtcbiAgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gNCAmJiAvXlthLXowLTldezR9JC8udGVzdCh2YWx1ZSk7XG59XG5cbi8qKlxuICogV2VsbC1rbm93biBmb3JtYXQgcHJlZml4IGNvbnN0YW50cy4gQ29kZWNzIG1heSBkZWZpbmUgYWRkaXRpb25hbCBvbmVzLlxuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkZvcm1hdCA9IHtcbiAgLyoqIGRldmFsdWUgc3RyaW5naWZ5L3BhcnNlIHdpdGggVGV4dEVuY29kZXIvVGV4dERlY29kZXIgKi9cbiAgREVWQUxVRV9WMTogJ2RldmwnIGFzIEZvcm1hdFByZWZpeCxcbiAgLyoqIEVuY3J5cHRlZCBwYXlsb2FkIChpbm5lciBwYXlsb2FkIGhhcyBpdHMgb3duIGZvcm1hdCBwcmVmaXgpICovXG4gIEVOQ1JZUFRFRDogJ2VuY3InIGFzIEZvcm1hdFByZWZpeCxcbn0gYXMgY29uc3Q7XG5cbi8vIC0tLS0gU2VyaWFsaXphYmxlIFR5cGVzIC0tLS1cblxuLyoqXG4gKiBUeXBlcyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFuZGxpbmcgd2hlbiBzZXJpYWxpemVkL2Rlc2VyaWFsaXplZC5cbiAqIElmIGEgdHlwZSBpcyBhZGRlZCBoZXJlLCBpdCBNVVNUIGFsc28gYmUgYWRkZWQgdG8gdGhlIGBTZXJpYWxpemFibGVgXG4gKiB0eXBlIGluIGBzY2hlbWFzLnRzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemFibGVTcGVjaWFsIHtcbiAgQXJyYXlCdWZmZXI6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBCaWdJbnQ6IHN0cmluZzsgLy8gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGJpZ2ludFxuICBCaWdJbnQ2NEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgQmlnVWludDY0QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBEYXRlOiBzdHJpbmc7IC8vIElTTyBzdHJpbmdcbiAgRE9NRXhjZXB0aW9uOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gIH07XG4gIEZhdGFsRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIEZsb2F0MzJBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEZsb2F0NjRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEVycm9yOiB7IG5hbWU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIEV2YWxFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgSGVhZGVyczogW3N0cmluZywgc3RyaW5nXVtdO1xuICBIb29rQ29uZmxpY3RFcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgdG9rZW46IHN0cmluZztcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgcmVxdWlyZWQgd2hlbiBIb29rQ29uZmxpY3RFcnJvci5jb25mbGljdGluZ1J1bklkIGlzIHJlcXVpcmVkLlxuICAgIGNvbmZsaWN0aW5nUnVuSWQ/OiBzdHJpbmc7XG4gIH07XG4gIEludDhBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEludDE2QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBJbnQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgTWFwOiBbYW55LCBhbnldW107XG4gIFJhbmdlRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIFJlYWRhYmxlU3RyZWFtOlxuICAgIHwgeyBuYW1lOiBzdHJpbmc7IHR5cGU/OiAnYnl0ZXMnOyBzdGFydEluZGV4PzogbnVtYmVyIH1cbiAgICB8IHsgYm9keUluaXQ6IGFueSB9O1xuICBSZWZlcmVuY2VFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgUmVnRXhwOiB7IHNvdXJjZTogc3RyaW5nOyBmbGFnczogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBgcmV0cnlBZnRlcmAgaXMgc2VyaWFsaXplZCBhcyBhIG51bWVyaWMgZXBvY2ggdGltZXN0YW1wIHJhdGhlciB0aGFuIGFcbiAgICogYERhdGVgIHRvIGJlIHJlYWxtLXNhZmUuIFRoZSBEYXRlIHJlZHVjZXIgdXNlcyBgaW5zdGFuY2VvZiBnbG9iYWwuRGF0ZWAsXG4gICAqIHdoaWNoIGZhaWxzIGZvciBEYXRlcyBmcm9tIGEgZGlmZmVyZW50IFZNIHJlYWxtLlxuICAgKi9cbiAgUmV0cnlhYmxlRXJyb3I6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgY2F1c2U/OiB1bmtub3duO1xuICAgIHJldHJ5QWZ0ZXI6IG51bWJlcjtcbiAgfTtcbiAgUmVxdWVzdDoge1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICAgIGhlYWRlcnM6IEhlYWRlcnM7XG4gICAgYm9keTogUmVxdWVzdFsnYm9keSddO1xuICAgIGR1cGxleDogUmVxdWVzdFsnZHVwbGV4J107XG4gICAgcmVzcG9uc2VXcml0YWJsZT86IFdyaXRhYmxlU3RyZWFtPFJlc3BvbnNlPjtcbiAgICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgfTtcbiAgUmVzcG9uc2U6IHtcbiAgICB0eXBlOiBSZXNwb25zZVsndHlwZSddO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICBoZWFkZXJzOiBIZWFkZXJzO1xuICAgIGJvZHk6IFJlc3BvbnNlWydib2R5J107XG4gICAgcmVkaXJlY3RlZDogYm9vbGVhbjtcbiAgfTtcbiAgQ2xhc3M6IHtcbiAgICBjbGFzc0lkOiBzdHJpbmc7XG4gIH07XG4gIEluc3RhbmNlOiB7XG4gICAgY2xhc3NJZDogc3RyaW5nO1xuICAgIGRhdGE6IHVua25vd247XG4gIH07XG4gIFNldDogYW55W107XG4gIFN5bnRheEVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBTdGVwRnVuY3Rpb246IHtcbiAgICBzdGVwSWQ6IHN0cmluZztcbiAgICBjbG9zdXJlVmFycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgLyoqXG4gICAgICogQ2FwdHVyZWQgbGV4aWNhbCBgdGhpc2AgZm9yIHN0ZXAgcHJveGllcyB0aGF0IHdlcmUgY3JlYXRlZCB2aWFcbiAgICAgKiBgdXNlU3RlcCguLi4pLmJpbmQodGhpc0FyZylgICh0aGUgU1dDIHBsdWdpbiBlbWl0cyB0aGlzIGZvciBuZXN0ZWRcbiAgICAgKiBhcnJvdyBzdGVwcyB0aGF0IGNsb3NlIG92ZXIgdGhlaXIgZW5jbG9zaW5nIGZ1bmN0aW9uJ3MgYHRoaXNgKS5cbiAgICAgKiBUaGUgcmV2aXZlciByZS1iaW5kcyB0aGUgZnJlc2hseS1jcmVhdGVkIHByb3h5IHRvIHRoaXMgdmFsdWUgc28gdGhlXG4gICAgICogYmluZGluZyBzdXJ2aXZlcyBzZXJpYWxpemF0aW9uIHJvdW5kLXRyaXBzLlxuICAgICAqL1xuICAgIGJvdW5kVGhpcz86IHVua25vd247XG4gICAgLyoqXG4gICAgICogUHJlZmlsbGVkIGFyZ3VtZW50cyBjYXB0dXJlZCB3aGVuIHRoZSB1c2VyIChyYXRoZXIgdGhhbiB0aGUgU1dDXG4gICAgICogcGx1Z2luKSBjYWxsZWQgYHVzZVN0ZXAoLi4uKS5iaW5kKHRoaXNBcmcsIHgsIHkpYC4gVGhlIHJldml2ZXJcbiAgICAgKiByZS1hcHBsaWVzIHRoZXNlIGFsb25nc2lkZSBgYm91bmRUaGlzYCBzbyBwYXJ0aWFsIGFwcGxpY2F0aW9uXG4gICAgICogc3Vydml2ZXMgc2VyaWFsaXphdGlvbi4gVGhlIFNXQyBwbHVnaW4gb25seSBldmVyIGVtaXRzXG4gICAgICogYC5iaW5kKHRoaXMpYCB3aXRoIG5vIGV4dHJhIGFyZ3MgdG9kYXk7IHRoaXMgc2xvdCBleGlzdHMgc28gYVxuICAgICAqIGhhbmQtd3JpdHRlbiBgLmJpbmQodGhpc0FyZywgeClgIGRvZXNuJ3Qgc2lsZW50bHkgbG9zZSBgeGAgYWZ0ZXJcbiAgICAgKiByb3VuZC10cmlwcGluZyB0aHJvdWdoIHRoZSByZWR1Y2VyL3Jldml2ZXIuXG4gICAgICovXG4gICAgYm91bmRBcmdzPzogdW5rbm93bltdO1xuICB9O1xuICBUeXBlRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIFVSSUVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBVUkw6IHN0cmluZztcbiAgV29ya2Zsb3dGdW5jdGlvbjoge1xuICAgIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgfTtcbiAgVVJMU2VhcmNoUGFyYW1zOiBzdHJpbmc7XG4gIFVpbnQ4QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBVaW50OENsYW1wZWRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIFVpbnQxNkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgVWludDMyQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBBZ2dyZWdhdGVFcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgZXJyb3JzOiB1bmtub3duW107XG4gIH07XG4gIFdyaXRhYmxlU3RyZWFtOiB7IG5hbWU6IHN0cmluZyB9O1xuICBBYm9ydENvbnRyb2xsZXI6IHtcbiAgICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gICAgaG9va1Rva2VuOiBzdHJpbmc7XG4gICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiB1bmtub3duO1xuICB9O1xuICBBYm9ydFNpZ25hbDoge1xuICAgIHN0cmVhbU5hbWU6IHN0cmluZztcbiAgICBob29rVG9rZW46IHN0cmluZztcbiAgICBhYm9ydGVkOiBib29sZWFuO1xuICAgIHJlYXNvbj86IHVua25vd247XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlZHVjZXJzID0ge1xuICBbSyBpbiBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTogKFxuICAgIHZhbHVlOiBhbnlcbiAgKSA9PiBTZXJpYWxpemFibGVTcGVjaWFsW0tdIHwgZmFsc2U7XG59O1xuXG5leHBvcnQgdHlwZSBSZXZpdmVycyA9IHtcbiAgW0sgaW4ga2V5b2YgU2VyaWFsaXphYmxlU3BlY2lhbF06ICh2YWx1ZTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSkgPT4gYW55O1xufTtcbiJdfQ==
@@ -83,6 +83,13 @@ export declare function getCommonRevivers(global?: Record<string, any>): {
83
83
  cause?: unknown;
84
84
  }) => any) | undefined;
85
85
  Headers?: ((value: [string, string][]) => any) | undefined;
86
+ HookConflictError?: ((value: {
87
+ message: string;
88
+ stack?: string;
89
+ cause?: unknown;
90
+ token: string;
91
+ conflictingRunId?: string;
92
+ }) => any) | undefined;
86
93
  Int8Array?: ((value: string) => any) | undefined;
87
94
  Int16Array?: ((value: string) => any) | undefined;
88
95
  Int32Array?: ((value: string) => any) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "5.0.0-beta.5";
1
+ export declare const version = "5.0.0-beta.6";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export const version = '5.0.0-beta.5';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjUnXG4iXX0=
2
+ export const version = '5.0.0-beta.6';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjYnXG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/workflow/hook.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAI3D,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,eAAe,CAAC;AAGvB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,2BAA2B,IAChC,CAAC,GAAG,GAAG,EAAE,UAAS,WAAgB,KAAG,IAAI,CAAC,CAAC,CAAC,CA0Q5E"}
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/workflow/hook.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAI3D,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,eAAe,CAAC;AAGvB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,2BAA2B,IAChC,CAAC,GAAG,GAAG,EAAE,UAAS,WAAgB,KAAG,IAAI,CAAC,CAAC,CAAC,CA2Q5E"}
@@ -62,7 +62,7 @@ export function createCreateHook(ctx) {
62
62
  // Store the conflict event so we can reject any awaited promises.
63
63
  // Chain through promiseQueue to ensure deterministic ordering.
64
64
  const conflictEvent = event;
65
- const conflictError = new HookConflictError(conflictEvent.eventData.token);
65
+ const conflictError = new HookConflictError(conflictEvent.eventData.token, conflictEvent.eventData.conflictingRunId);
66
66
  // Mark that we have a conflict so future awaits also reject
67
67
  hasConflict = true;
68
68
  conflictErrorRef = conflictError;
@@ -213,4 +213,4 @@ export function createCreateHook(ctx) {
213
213
  return hook;
214
214
  };
215
215
  }
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvdy9ob29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNFLE9BQU8sRUFBNkIsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUNMLGdCQUFnQixHQUVqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBZ0M7SUFDL0QsT0FBTyxTQUFTLGNBQWMsQ0FBVSxVQUF1QixFQUFFO1FBQy9ELDZCQUE2QjtRQUM3QixNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXBELHlFQUF5RTtRQUN6RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztRQUU3QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRTtZQUN0QyxJQUFJLEVBQUUsTUFBTTtZQUNaLGFBQWE7WUFDYixLQUFLO1lBQ0wsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLFNBQVM7U0FDVixDQUFDLENBQUM7UUFFSCxxRUFBcUU7UUFDckUsTUFBTSxhQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUU5QywwREFBMEQ7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LENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVc7U0FDOUIsQ0FBQztRQUVGLHFFQUFxRTtRQUNyRSxvRUFBb0U7UUFDcEUsaUNBQWlDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNoRCxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdDLElBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDekMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhvb2tDb25mbGljdEVycm9yLCBXb3JrZmxvd1J1bnRpbWVFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBQcm9taXNlV2l0aFJlc29sdmVycywgd2l0aFJlc29sdmVycyB9IGZyb20gJ0B3b3JrZmxvdy91dGlscyc7XG5pbXBvcnQgdHlwZSB7IEhvb2tDb25mbGljdEV2ZW50LCBIb29rUmVjZWl2ZWRFdmVudCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgdHlwZSB7IEhvb2ssIEhvb2tPcHRpb25zIH0gZnJvbSAnLi4vY3JlYXRlLWhvb2suanMnO1xuaW1wb3J0IHsgRXZlbnRDb25zdW1lclJlc3VsdCB9IGZyb20gJy4uL2V2ZW50cy1jb25zdW1lci5qcyc7XG5pbXBvcnQgeyBXb3JrZmxvd1N1c3BlbnNpb24gfSBmcm9tICcuLi9nbG9iYWwuanMnO1xuaW1wb3J0IHsgd2ViaG9va0xvZ2dlciB9IGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBzY2hlZHVsZVdoZW5JZGxlLFxuICB0eXBlIFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCxcbn0gZnJvbSAnLi4vcHJpdmF0ZS5qcyc7XG5pbXBvcnQgeyBoeWRyYXRlU3RlcFJldHVyblZhbHVlIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcmVhdGVIb29rKGN0eDogV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVIb29rSW1wbDxUID0gYW55PihvcHRpb25zOiBIb29rT3B0aW9ucyA9IHt9KTogSG9vazxUPiB7XG4gICAgLy8gR2VuZXJhdGUgaG9vayBJRCBhbmQgdG9rZW5cbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gYGhvb2tfJHtjdHguZ2VuZXJhdGVVbGlkKCl9YDtcbiAgICBjb25zdCB0b2tlbiA9IG9wdGlvbnMudG9rZW4gPz8gY3R4LmdlbmVyYXRlTmFub2lkKCk7XG5cbiAgICAvLyBBZGQgaG9vayBjcmVhdGlvbiB0byBpbnZvY2F0aW9ucyBxdWV1ZSAodXNpbmcgTWFwIGZvciBPKDEpIG9wZXJhdGlvbnMpXG4gICAgY29uc3QgaXNXZWJob29rID0gb3B0aW9ucy5pc1dlYmhvb2sgPz8gZmFsc2U7XG5cbiAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5zZXQoY29ycmVsYXRpb25JZCwge1xuICAgICAgdHlwZTogJ2hvb2snLFxuICAgICAgY29ycmVsYXRpb25JZCxcbiAgICAgIHRva2VuLFxuICAgICAgbWV0YWRhdGE6IG9wdGlvbnMubWV0YWRhdGEsXG4gICAgICBpc1dlYmhvb2ssXG4gICAgfSk7XG5cbiAgICAvLyBRdWV1ZSBvZiBob29rIGV2ZW50cyB0aGF0IGhhdmUgYmVlbiByZWNlaXZlZCBidXQgbm90IHlldCBwcm9jZXNzZWRcbiAgICBjb25zdCBwYXlsb2Fkc1F1ZXVlOiBIb29rUmVjZWl2ZWRFdmVudFtdID0gW107XG5cbiAgICAvLyBRdWV1ZSBvZiBwcm9taXNlcyB0aGF0IHJlc29sdmUgdG8gdGhlIG5leHQgaG9vayBwYXlsb2FkXG4gICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+W10gPSBbXTtcblxuICAgIGxldCBldmVudExvZ0VtcHR5ID0gZmFsc2U7XG5cbiAgICAvLyBUcmFjayBpZiB0aGUgZXZlbnQgbG9nIGNvbmZpcm1zIGRpc3Bvc2FsIGhhcHBlbmVkIChyZXBsYXkgbm8tb3ApXG4gICAgbGV0IGhhc0Rpc3Bvc2VkRXZlbnQgPSBmYWxzZTtcblxuICAgIC8vIFRyYWNrIGlmIHdlIGhhdmUgYSBjb25mbGljdCBzbyB3ZSBjYW4gcmVqZWN0IGZ1dHVyZSBhd2FpdHNcbiAgICBsZXQgaGFzQ29uZmxpY3QgPSBmYWxzZTtcbiAgICBsZXQgY29uZmxpY3RFcnJvclJlZjogSG9va0NvbmZsaWN0RXJyb3IgfCBudWxsID0gbnVsbDtcblxuICAgIHdlYmhvb2tMb2dnZXIuZGVidWcoJ0hvb2sgY29uc3VtZXIgc2V0dXAnLCB7IGNvcnJlbGF0aW9uSWQsIHRva2VuIH0pO1xuICAgIGN0eC5ldmVudHNDb25zdW1lci5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZXZlbnRzIGFuZCB0aGVyZSBhcmUgcHJvbWlzZXMgd2FpdGluZyxcbiAgICAgIC8vIGl0IG1lYW5zIHRoZSBob29rIGhhcyBiZWVuIGF3YWl0ZWQsIGJ1dCBhbiBpbmNvbWluZyBwYXlsb2FkIGhhcyBub3QgeWV0IGJlZW4gcmVjZWl2ZWQuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSB3b3JrZmxvdyBzaG91bGQgYmUgc3VzcGVuZGVkIHVudGlsIHRoZSBob29rIGlzIHJlc3VtZWQuXG4gICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgIGV2ZW50TG9nRW1wdHkgPSB0cnVlO1xuXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPiAwICYmIHBheWxvYWRzUXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc2NoZWR1bGVXaGVuSWRsZShjdHgsICgpID0+IHtcbiAgICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBXb3JrZmxvd1N1c3BlbnNpb24oY3R4Lmludm9jYXRpb25zUXVldWUsIGN0eC5nbG9iYWxUaGlzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IGNvcnJlbGF0aW9uSWQpIHtcbiAgICAgICAgLy8gV2UncmUgbm90IGludGVyZXN0ZWQgaW4gdGhpcyBldmVudCAtIHRoZSBjb3JyZWxhdGlvbklkIGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQgZW50aXR5XG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgaG9va19jcmVhdGVkIGV2ZW50IHRvIG1hcmsgdGhpcyBob29rIGFzIGFscmVhZHkgY3JlYXRlZFxuICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfY3JlYXRlZCcpIHtcbiAgICAgICAgY29uc3QgcXVldWVJdGVtID0gY3R4Lmludm9jYXRpb25zUXVldWUuZ2V0KGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICBpZiAocXVldWVJdGVtICYmIHF1ZXVlSXRlbS50eXBlID09PSAnaG9vaycpIHtcbiAgICAgICAgICBxdWV1ZUl0ZW0uaGFzQ3JlYXRlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGhvb2tfY29uZmxpY3QgZXZlbnQgLSBhbm90aGVyIHdvcmtmbG93IGlzIHVzaW5nIHRoaXMgdG9rZW5cbiAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX2NvbmZsaWN0Jykge1xuICAgICAgICAvLyBSZW1vdmUgdGhpcyBob29rIGZyb20gdGhlIGludm9jYXRpb25zIHF1ZXVlXG4gICAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmRlbGV0ZShjb3JyZWxhdGlvbklkKTtcblxuICAgICAgICAvLyBTdG9yZSB0aGUgY29uZmxpY3QgZXZlbnQgc28gd2UgY2FuIHJlamVjdCBhbnkgYXdhaXRlZCBwcm9taXNlcy5cbiAgICAgICAgLy8gQ2hhaW4gdGhyb3VnaCBwcm9taXNlUXVldWUgdG8gZW5zdXJlIGRldGVybWluaXN0aWMgb3JkZXJpbmcuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0RXZlbnQgPSBldmVudCBhcyBIb29rQ29uZmxpY3RFdmVudDtcbiAgICAgICAgY29uc3QgY29uZmxpY3RFcnJvciA9IG5ldyBIb29rQ29uZmxpY3RFcnJvcihcbiAgICAgICAgICBjb25mbGljdEV2ZW50LmV2ZW50RGF0YS50b2tlblxuICAgICAgICApO1xuXG4gICAgICAgIC8vIE1hcmsgdGhhdCB3ZSBoYXZlIGEgY29uZmxpY3Qgc28gZnV0dXJlIGF3YWl0cyBhbHNvIHJlamVjdFxuICAgICAgICBoYXNDb25mbGljdCA9IHRydWU7XG4gICAgICAgIGNvbmZsaWN0RXJyb3JSZWYgPSBjb25mbGljdEVycm9yO1xuXG4gICAgICAgIC8vIENhcHR1cmUgYW5kIGRyYWluIHBlbmRpbmcgcHJvbWlzZXMgc3luY2hyb25vdXNseSBzbyB0aGUgbnVsbCBldmVudFxuICAgICAgICAvLyBoYW5kbGVyIHdvbid0IHNlZSB0aGVtIGFuZCB0cmlnZ2VyIGEgc3B1cmlvdXMgV29ya2Zsb3dTdXNwZW5zaW9uLlxuICAgICAgICAvLyBUaGUgYWN0dWFsIHJlamVjdGlvbnMgYXJlIGRlZmVycmVkIHRocm91Z2ggcHJvbWlzZVF1ZXVlIGZvciBvcmRlcmluZy5cbiAgICAgICAgY29uc3QgcGVuZGluZ1Byb21pc2VzID0gcHJvbWlzZXMuc2xpY2UoKTtcbiAgICAgICAgcHJvbWlzZXMubGVuZ3RoID0gMDtcblxuICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKCgpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJlc29sdmVyIG9mIHBlbmRpbmdQcm9taXNlcykge1xuICAgICAgICAgICAgcmVzb2x2ZXIucmVqZWN0KGNvbmZsaWN0RXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX3JlY2VpdmVkJykge1xuICAgICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBwcm9taXNlcy5zaGlmdCgpO1xuICAgICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICAvLyBSZWNvbnN0cnVjdCB0aGUgcGF5bG9hZCBmcm9tIHRoZSBldmVudCBkYXRhLlxuICAgICAgICAgICAgLy8gQ2hhaW4gdGhyb3VnaCBjdHgucHJvbWlzZVF1ZXVlIHRvIGVuc3VyZSB0aGF0IGFzeW5jXG4gICAgICAgICAgICAvLyBkZXNlcmlhbGl6YXRpb24gKGUuZy4sIGRlY3J5cHRpb24pIHJlc29sdmVzIGluIGV2ZW50IGxvZyBvcmRlci5cbiAgICAgICAgICAgIGN0eC5wZW5kaW5nRGVsaXZlcmllcysrO1xuICAgICAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGh5ZHJhdGVTdGVwUmV0dXJuVmFsdWUoXG4gICAgICAgICAgICAgICAgICBldmVudC5ldmVudERhdGEucGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICAgIGN0eC5lbmNyeXB0aW9uS2V5LFxuICAgICAgICAgICAgICAgICAgY3R4Lmdsb2JhbFRoaXNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIG5leHQucmVzb2x2ZShwYXlsb2FkIGFzIFQpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIG5leHQucmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMtLTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBheWxvYWRzUXVldWUucHVzaChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfZGlzcG9zZWQnKSB7XG4gICAgICAgIC8vIFRlcm1pbmFsIHN0YXRlIC0gcmVtb3ZlIGZyb20gcXVldWUgKGxpa2Ugc3RlcF9jb21wbGV0ZWQvd2FpdF9jb21wbGV0ZWQpXG4gICAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmRlbGV0ZShjb3JyZWxhdGlvbklkKTtcbiAgICAgICAgLy8gTWFyayB0aGF0IHRoZSBldmVudCBsb2cgY29uZmlybXMgZGlzcG9zYWwgaGFwcGVuZWRcbiAgICAgICAgaGFzRGlzcG9zZWRFdmVudCA9IHRydWU7XG4gICAgICAgIC8vIFdlJ3JlIGRvbmUgcHJvY2Vzc2luZyBhbnkgbW9yZSBldmVudHMgZm9yIHRoaXMgaG9va1xuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZDtcbiAgICAgIH1cblxuICAgICAgLy8gQW4gdW5leHBlY3RlZCBldmVudCB0eXBlIGhhcyBiZWVuIHJlY2VpdmVkLCB0aGlzIGV2ZW50IGxvZyBsb29rcyBjb3JydXB0ZWQuIExldCdzIGZhaWwgaW1tZWRpYXRlbHkuXG4gICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKCgpID0+IHtcbiAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICBuZXcgV29ya2Zsb3dSdW50aW1lRXJyb3IoXG4gICAgICAgICAgICBgVW5leHBlY3RlZCBldmVudCB0eXBlIGZvciBob29rICR7Y29ycmVsYXRpb25JZH0gKHRva2VuOiAke3Rva2VufSkgXCIke2V2ZW50LmV2ZW50VHlwZX1cImBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgIH0pO1xuXG4gICAgLy8gVHJhY2sgaWYgdGhlIGhvb2sgaGFzIGJlZW4gZGlzcG9zZWRcbiAgICBsZXQgaXNEaXNwb3NlZCA9IGZhbHNlO1xuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBwcm9taXNlIHRoYXQgd2FpdHMgZm9yIHRoZSBuZXh0IGhvb2sgcGF5bG9hZFxuICAgIGZ1bmN0aW9uIGNyZWF0ZUhvb2tQcm9taXNlKCk6IFByb21pc2U8VD4ge1xuICAgICAgY29uc3QgcmVzb2x2ZXJzID0gd2l0aFJlc29sdmVyczxUPigpO1xuXG4gICAgICAvLyBJZiB3ZSBoYXZlIGEgY29uZmxpY3QsIHJlamVjdCB0aHJvdWdoIHRoZSBwcm9taXNlUXVldWUgdG8gbWFpbnRhaW5cbiAgICAgIC8vIGRldGVybWluaXN0aWMgb3JkZXJpbmcgd2l0aCBhbnkgcHJpb3IgcXVldWVkIHJlc29sdXRpb25zLlxuICAgICAgaWYgKGhhc0NvbmZsaWN0ICYmIGNvbmZsaWN0RXJyb3JSZWYpIHtcbiAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZXJzLnJlamVjdChjb25mbGljdEVycm9yUmVmKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXNvbHZlcnMucHJvbWlzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBheWxvYWRzUXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBuZXh0UGF5bG9hZCA9IHBheWxvYWRzUXVldWUuc2hpZnQoKTtcbiAgICAgICAgaWYgKG5leHRQYXlsb2FkKSB7XG4gICAgICAgICAgLy8gQ2hhaW4gdGhyb3VnaCBjdHgucHJvbWlzZVF1ZXVlIHRvIGVuc3VyZSB0aGF0IGFzeW5jXG4gICAgICAgICAgLy8gZGVzZXJpYWxpemF0aW9uIChlLmcuLCBkZWNyeXB0aW9uKSByZXNvbHZlcyBpbiBldmVudCBsb2cgb3JkZXIuXG4gICAgICAgICAgY3R4LnBlbmRpbmdEZWxpdmVyaWVzKys7XG4gICAgICAgICAgY3R4LnByb21pc2VRdWV1ZSA9IGN0eC5wcm9taXNlUXVldWUudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZShcbiAgICAgICAgICAgICAgICBuZXh0UGF5bG9hZC5ldmVudERhdGEucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBjdHgucnVuSWQsXG4gICAgICAgICAgICAgICAgY3R4LmVuY3J5cHRpb25LZXksXG4gICAgICAgICAgICAgICAgY3R4Lmdsb2JhbFRoaXNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZXJzLnJlc29sdmUocGF5bG9hZCBhcyBUKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJlc29sdmVycy5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgY3R4LnBlbmRpbmdEZWxpdmVyaWVzLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmVycy5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudExvZ0VtcHR5KSB7XG4gICAgICAgIHNjaGVkdWxlV2hlbklkbGUoY3R4LCAoKSA9PiB7XG4gICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgIG5ldyBXb3JrZmxvd1N1c3BlbnNpb24oY3R4Lmludm9jYXRpb25zUXVldWUsIGN0eC5nbG9iYWxUaGlzKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBwcm9taXNlcy5wdXNoKHJlc29sdmVycyk7XG5cbiAgICAgIHJldHVybiByZXNvbHZlcnMucHJvbWlzZTtcbiAgICB9XG5cbiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZGlzcG9zZSB0aGUgaG9va1xuICAgIGZ1bmN0aW9uIGRpc3Bvc2VIb29rKCk6IHZvaWQge1xuICAgICAgaWYgKGlzRGlzcG9zZWQpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBBbHJlYWR5IGRpc3Bvc2VkLCBub3RoaW5nIHRvIGRvXG4gICAgICB9XG4gICAgICBpc0Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgICAgLy8gSWYgdGhlIGV2ZW50IGxvZyBhbHJlYWR5IGNvbnRhaW5zIGhvb2tfZGlzcG9zZWQsIHRoaXMgaXMgYSByZXBsYXkg4oCUIG5vLW9wXG4gICAgICBpZiAoaGFzRGlzcG9zZWRFdmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCBkaXNwb3NlZCBmbGFnIG9uIHRoZSBleGlzdGluZyBxdWV1ZSBpdGVtXG4gICAgICBjb25zdCBxdWV1ZUl0ZW0gPSBjdHguaW52b2NhdGlvbnNRdWV1ZS5nZXQoY29ycmVsYXRpb25JZCk7XG4gICAgICBpZiAocXVldWVJdGVtICYmIHF1ZXVlSXRlbS50eXBlID09PSAnaG9vaycpIHtcbiAgICAgICAgcXVldWVJdGVtLmRpc3Bvc2VkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gRHJhaW4gYW55IHBlbmRpbmcgcHJvbWlzZXMgdGhhdCBhcmUgd2FpdGluZyBmb3IgcGF5bG9hZHMuXG4gICAgICAvLyBXaXRob3V0IHRoaXMsIHByb21pc2VzIGNyZWF0ZWQgYnkgYGF3YWl0IGhvb2tgIG9yIHRoZSBhc3luYyBpdGVyYXRvcidzXG4gICAgICAvLyBgeWllbGQgYXdhaXQgdGhpc2Agd291bGQgaGFuZyBmb3JldmVyIHNpbmNlIHRoZSBldmVudCBjb25zdW1lciB3aWxsXG4gICAgICAvLyBuZXZlciBkZWxpdmVyIGFub3RoZXIgaG9va19yZWNlaXZlZCBhZnRlciBkaXNwb3NhbC5cbiAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHByb21pc2VzLmxlbmd0aCA9IDA7XG4gICAgICAgIHNjaGVkdWxlV2hlbklkbGUoY3R4LCAoKSA9PiB7XG4gICAgICAgICAgY3R4Lm9uV29ya2Zsb3dFcnJvcihcbiAgICAgICAgICAgIG5ldyBXb3JrZmxvd1N1c3BlbnNpb24oY3R4Lmludm9jYXRpb25zUXVldWUsIGN0eC5nbG9iYWxUaGlzKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB3ZWJob29rTG9nZ2VyLmRlYnVnKCdIb29rIGRpc3Bvc2VkJywgeyBjb3JyZWxhdGlvbklkLCB0b2tlbiB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBob29rOiBIb29rPFQ+ID0ge1xuICAgICAgdG9rZW4sXG5cbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UaGVuUHJvcGVydHk6IEludGVudGlvbmFsbHkgdGhlbmFibGVcbiAgICAgIHRoZW48VFJlc3VsdDEgPSBULCBUUmVzdWx0MiA9IG5ldmVyPihcbiAgICAgICAgb25mdWxmaWxsZWQ/OiAoKHZhbHVlOiBUKSA9PiBUUmVzdWx0MSB8IFByb21pc2VMaWtlPFRSZXN1bHQxPikgfCBudWxsLFxuICAgICAgICBvbnJlamVjdGVkPzogKChyZWFzb246IGFueSkgPT4gVFJlc3VsdDIgfCBQcm9taXNlTGlrZTxUUmVzdWx0Mj4pIHwgbnVsbFxuICAgICAgKTogUHJvbWlzZTxUUmVzdWx0MSB8IFRSZXN1bHQyPiB7XG4gICAgICAgIHJldHVybiBjcmVhdGVIb29rUHJvbWlzZSgpLnRoZW4ob25mdWxmaWxsZWQsIG9ucmVqZWN0ZWQpO1xuICAgICAgfSxcblxuICAgICAgLy8gU3VwcG9ydCBgZm9yIGF3YWl0IChjb25zdCBwYXlsb2FkIG9mIGhvb2spIHsg4oCmIH1gIHN5bnRheFxuICAgICAgYXN5bmMgKltTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSB7XG4gICAgICAgIHdoaWxlICghaXNEaXNwb3NlZCkge1xuICAgICAgICAgIHlpZWxkIGF3YWl0IHRoaXM7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIGRpc3Bvc2U6IGRpc3Bvc2VIb29rLFxuXG4gICAgICBbU3ltYm9sLmRpc3Bvc2VdOiBkaXNwb3NlSG9vayxcbiAgICB9O1xuXG4gICAgLy8gQWxzbyByZWdpc3RlciB3aXRoIHRoZSBWTSdzIFN5bWJvbC5kaXNwb3NlIHNvIGB1c2luZ2Agd29ya3MgaW5zaWRlXG4gICAgLy8gdGhlIHdvcmtmbG93IHNhbmRib3ggKHRoZSBWTSBtYXkgaGF2ZSBhIHBvbHlmaWxsZWQgU3ltYm9sLmRpc3Bvc2VcbiAgICAvLyB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgaG9zdCdzKS5cbiAgICBjb25zdCB2bURpc3Bvc2UgPSBjdHguZ2xvYmFsVGhpcy5TeW1ib2wuZGlzcG9zZTtcbiAgICBpZiAodm1EaXNwb3NlICYmIHZtRGlzcG9zZSAhPT0gU3ltYm9sLmRpc3Bvc2UpIHtcbiAgICAgIChob29rIGFzIGFueSlbdm1EaXNwb3NlXSA9IGRpc3Bvc2VIb29rO1xuICAgIH1cblxuICAgIHJldHVybiBob29rO1xuICB9O1xufVxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZmxvdy9ob29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNFLE9BQU8sRUFBNkIsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUNMLGdCQUFnQixHQUVqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBZ0M7SUFDL0QsT0FBTyxTQUFTLGNBQWMsQ0FBVSxVQUF1QixFQUFFO1FBQy9ELDZCQUE2QjtRQUM3QixNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXBELHlFQUF5RTtRQUN6RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztRQUU3QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRTtZQUN0QyxJQUFJLEVBQUUsTUFBTTtZQUNaLGFBQWE7WUFDYixLQUFLO1lBQ0wsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLFNBQVM7U0FDVixDQUFDLENBQUM7UUFFSCxxRUFBcUU7UUFDckUsTUFBTSxhQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUU5QywwREFBMEQ7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Q0gsQ0FBQztZQUVELE9BQU8sRUFBRSxXQUFXO1lBRXBCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVc7U0FDOUIsQ0FBQztRQUVGLHFFQUFxRTtRQUNyRSxvRUFBb0U7UUFDcEUsaUNBQWlDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNoRCxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdDLElBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDekMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhvb2tDb25mbGljdEVycm9yLCBXb3JrZmxvd1J1bnRpbWVFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBQcm9taXNlV2l0aFJlc29sdmVycywgd2l0aFJlc29sdmVycyB9IGZyb20gJ0B3b3JrZmxvdy91dGlscyc7XG5pbXBvcnQgdHlwZSB7IEhvb2tDb25mbGljdEV2ZW50LCBIb29rUmVjZWl2ZWRFdmVudCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgdHlwZSB7IEhvb2ssIEhvb2tPcHRpb25zIH0gZnJvbSAnLi4vY3JlYXRlLWhvb2suanMnO1xuaW1wb3J0IHsgRXZlbnRDb25zdW1lclJlc3VsdCB9IGZyb20gJy4uL2V2ZW50cy1jb25zdW1lci5qcyc7XG5pbXBvcnQgeyBXb3JrZmxvd1N1c3BlbnNpb24gfSBmcm9tICcuLi9nbG9iYWwuanMnO1xuaW1wb3J0IHsgd2ViaG9va0xvZ2dlciB9IGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBzY2hlZHVsZVdoZW5JZGxlLFxuICB0eXBlIFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCxcbn0gZnJvbSAnLi4vcHJpdmF0ZS5qcyc7XG5pbXBvcnQgeyBoeWRyYXRlU3RlcFJldHVyblZhbHVlIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbi5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcmVhdGVIb29rKGN0eDogV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVIb29rSW1wbDxUID0gYW55PihvcHRpb25zOiBIb29rT3B0aW9ucyA9IHt9KTogSG9vazxUPiB7XG4gICAgLy8gR2VuZXJhdGUgaG9vayBJRCBhbmQgdG9rZW5cbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gYGhvb2tfJHtjdHguZ2VuZXJhdGVVbGlkKCl9YDtcbiAgICBjb25zdCB0b2tlbiA9IG9wdGlvbnMudG9rZW4gPz8gY3R4LmdlbmVyYXRlTmFub2lkKCk7XG5cbiAgICAvLyBBZGQgaG9vayBjcmVhdGlvbiB0byBpbnZvY2F0aW9ucyBxdWV1ZSAodXNpbmcgTWFwIGZvciBPKDEpIG9wZXJhdGlvbnMpXG4gICAgY29uc3QgaXNXZWJob29rID0gb3B0aW9ucy5pc1dlYmhvb2sgPz8gZmFsc2U7XG5cbiAgICBjdHguaW52b2NhdGlvbnNRdWV1ZS5zZXQoY29ycmVsYXRpb25JZCwge1xuICAgICAgdHlwZTogJ2hvb2snLFxuICAgICAgY29ycmVsYXRpb25JZCxcbiAgICAgIHRva2VuLFxuICAgICAgbWV0YWRhdGE6IG9wdGlvbnMubWV0YWRhdGEsXG4gICAgICBpc1dlYmhvb2ssXG4gICAgfSk7XG5cbiAgICAvLyBRdWV1ZSBvZiBob29rIGV2ZW50cyB0aGF0IGhhdmUgYmVlbiByZWNlaXZlZCBidXQgbm90IHlldCBwcm9jZXNzZWRcbiAgICBjb25zdCBwYXlsb2Fkc1F1ZXVlOiBIb29rUmVjZWl2ZWRFdmVudFtdID0gW107XG5cbiAgICAvLyBRdWV1ZSBvZiBwcm9taXNlcyB0aGF0IHJlc29sdmUgdG8gdGhlIG5leHQgaG9vayBwYXlsb2FkXG4gICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+W10gPSBbXTtcblxuICAgIGxldCBldmVudExvZ0VtcHR5ID0gZmFsc2U7XG5cbiAgICAvLyBUcmFjayBpZiB0aGUgZXZlbnQgbG9nIGNvbmZpcm1zIGRpc3Bvc2FsIGhhcHBlbmVkIChyZXBsYXkgbm8tb3ApXG4gICAgbGV0IGhhc0Rpc3Bvc2VkRXZlbnQgPSBmYWxzZTtcblxuICAgIC8vIFRyYWNrIGlmIHdlIGhhdmUgYSBjb25mbGljdCBzbyB3ZSBjYW4gcmVqZWN0IGZ1dHVyZSBhd2FpdHNcbiAgICBsZXQgaGFzQ29uZmxpY3QgPSBmYWxzZTtcbiAgICBsZXQgY29uZmxpY3RFcnJvclJlZjogSG9va0NvbmZsaWN0RXJyb3IgfCBudWxsID0gbnVsbDtcblxuICAgIHdlYmhvb2tMb2dnZXIuZGVidWcoJ0hvb2sgY29uc3VtZXIgc2V0dXAnLCB7IGNvcnJlbGF0aW9uSWQsIHRva2VuIH0pO1xuICAgIGN0eC5ldmVudHNDb25zdW1lci5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZXZlbnRzIGFuZCB0aGVyZSBhcmUgcHJvbWlzZXMgd2FpdGluZyxcbiAgICAgIC8vIGl0IG1lYW5zIHRoZSBob29rIGhhcyBiZWVuIGF3YWl0ZWQsIGJ1dCBhbiBpbmNvbWluZyBwYXlsb2FkIGhhcyBub3QgeWV0IGJlZW4gcmVjZWl2ZWQuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSB3b3JrZmxvdyBzaG91bGQgYmUgc3VzcGVuZGVkIHVudGlsIHRoZSBob29rIGlzIHJlc3VtZWQuXG4gICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgIGV2ZW50TG9nRW1wdHkgPSB0cnVlO1xuXG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPiAwICYmIHBheWxvYWRzUXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc2NoZWR1bGVXaGVuSWRsZShjdHgsICgpID0+IHtcbiAgICAgICAgICAgIGN0eC5vbldvcmtmbG93RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBXb3JrZmxvd1N1c3BlbnNpb24oY3R4Lmludm9jYXRpb25zUXVldWUsIGN0eC5nbG9iYWxUaGlzKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmNvcnJlbGF0aW9uSWQgIT09IGNvcnJlbGF0aW9uSWQpIHtcbiAgICAgICAgLy8gV2UncmUgbm90IGludGVyZXN0ZWQgaW4gdGhpcyBldmVudCAtIHRoZSBjb3JyZWxhdGlvbklkIGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQgZW50aXR5XG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0Lk5vdENvbnN1bWVkO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgaG9va19jcmVhdGVkIGV2ZW50IHRvIG1hcmsgdGhpcyBob29rIGFzIGFscmVhZHkgY3JlYXRlZFxuICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfY3JlYXRlZCcpIHtcbiAgICAgICAgY29uc3QgcXVldWVJdGVtID0gY3R4Lmludm9jYXRpb25zUXVldWUuZ2V0KGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICBpZiAocXVldWVJdGVtICYmIHF1ZXVlSXRlbS50eXBlID09PSAnaG9vaycpIHtcbiAgICAgICAgICBxdWV1ZUl0ZW0uaGFzQ3JlYXRlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGhvb2tfY29uZmxpY3QgZXZlbnQgLSBhbm90aGVyIHdvcmtmbG93IGlzIHVzaW5nIHRoaXMgdG9rZW5cbiAgICAgIGlmIChldmVudC5ldmVudFR5cGUgPT09ICdob29rX2NvbmZsaWN0Jykge1xuICAgICAgICAvLyBSZW1vdmUgdGhpcyBob29rIGZyb20gdGhlIGludm9jYXRpb25zIHF1ZXVlXG4gICAgICAgIGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmRlbGV0ZShjb3JyZWxhdGlvbklkKTtcblxuICAgICAgICAvLyBTdG9yZSB0aGUgY29uZmxpY3QgZXZlbnQgc28gd2UgY2FuIHJlamVjdCBhbnkgYXdhaXRlZCBwcm9taXNlcy5cbiAgICAgICAgLy8gQ2hhaW4gdGhyb3VnaCBwcm9taXNlUXVldWUgdG8gZW5zdXJlIGRldGVybWluaXN0aWMgb3JkZXJpbmcuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0RXZlbnQgPSBldmVudCBhcyBIb29rQ29uZmxpY3RFdmVudDtcbiAgICAgICAgY29uc3QgY29uZmxpY3RFcnJvciA9IG5ldyBIb29rQ29uZmxpY3RFcnJvcihcbiAgICAgICAgICBjb25mbGljdEV2ZW50LmV2ZW50RGF0YS50b2tlbixcbiAgICAgICAgICBjb25mbGljdEV2ZW50LmV2ZW50RGF0YS5jb25mbGljdGluZ1J1bklkXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gTWFyayB0aGF0IHdlIGhhdmUgYSBjb25mbGljdCBzbyBmdXR1cmUgYXdhaXRzIGFsc28gcmVqZWN0XG4gICAgICAgIGhhc0NvbmZsaWN0ID0gdHJ1ZTtcbiAgICAgICAgY29uZmxpY3RFcnJvclJlZiA9IGNvbmZsaWN0RXJyb3I7XG5cbiAgICAgICAgLy8gQ2FwdHVyZSBhbmQgZHJhaW4gcGVuZGluZyBwcm9taXNlcyBzeW5jaHJvbm91c2x5IHNvIHRoZSBudWxsIGV2ZW50XG4gICAgICAgIC8vIGhhbmRsZXIgd29uJ3Qgc2VlIHRoZW0gYW5kIHRyaWdnZXIgYSBzcHVyaW91cyBXb3JrZmxvd1N1c3BlbnNpb24uXG4gICAgICAgIC8vIFRoZSBhY3R1YWwgcmVqZWN0aW9ucyBhcmUgZGVmZXJyZWQgdGhyb3VnaCBwcm9taXNlUXVldWUgZm9yIG9yZGVyaW5nLlxuICAgICAgICBjb25zdCBwZW5kaW5nUHJvbWlzZXMgPSBwcm9taXNlcy5zbGljZSgpO1xuICAgICAgICBwcm9taXNlcy5sZW5ndGggPSAwO1xuXG4gICAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgcmVzb2x2ZXIgb2YgcGVuZGluZ1Byb21pc2VzKSB7XG4gICAgICAgICAgICByZXNvbHZlci5yZWplY3QoY29uZmxpY3RFcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ2hvb2tfcmVjZWl2ZWQnKSB7XG4gICAgICAgIGlmIChwcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHByb21pc2VzLnNoaWZ0KCk7XG4gICAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICAgIC8vIFJlY29uc3RydWN0IHRoZSBwYXlsb2FkIGZyb20gdGhlIGV2ZW50IGRhdGEuXG4gICAgICAgICAgICAvLyBDaGFpbiB0aHJvdWdoIGN0eC5wcm9taXNlUXVldWUgdG8gZW5zdXJlIHRoYXQgYXN5bmNcbiAgICAgICAgICAgIC8vIGRlc2VyaWFsaXphdGlvbiAoZS5nLiwgZGVjcnlwdGlvbikgcmVzb2x2ZXMgaW4gZXZlbnQgbG9nIG9yZGVyLlxuICAgICAgICAgICAgY3R4LnBlbmRpbmdEZWxpdmVyaWVzKys7XG4gICAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgaHlkcmF0ZVN0ZXBSZXR1cm5WYWx1ZShcbiAgICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50RGF0YS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgY3R4LnJ1bklkLFxuICAgICAgICAgICAgICAgICAgY3R4LmVuY3J5cHRpb25LZXksXG4gICAgICAgICAgICAgICAgICBjdHguZ2xvYmFsVGhpc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbmV4dC5yZXNvbHZlKHBheWxvYWQgYXMgVCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgbmV4dC5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGN0eC5wZW5kaW5nRGVsaXZlcmllcy0tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF5bG9hZHNRdWV1ZS5wdXNoKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkNvbnN1bWVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQuZXZlbnRUeXBlID09PSAnaG9va19kaXNwb3NlZCcpIHtcbiAgICAgICAgLy8gVGVybWluYWwgc3RhdGUgLSByZW1vdmUgZnJvbSBxdWV1ZSAobGlrZSBzdGVwX2NvbXBsZXRlZC93YWl0X2NvbXBsZXRlZClcbiAgICAgICAgY3R4Lmludm9jYXRpb25zUXVldWUuZGVsZXRlKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICAvLyBNYXJrIHRoYXQgdGhlIGV2ZW50IGxvZyBjb25maXJtcyBkaXNwb3NhbCBoYXBwZW5lZFxuICAgICAgICBoYXNEaXNwb3NlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgLy8gV2UncmUgZG9uZSBwcm9jZXNzaW5nIGFueSBtb3JlIGV2ZW50cyBmb3IgdGhpcyBob29rXG4gICAgICAgIHJldHVybiBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkO1xuICAgICAgfVxuXG4gICAgICAvLyBBbiB1bmV4cGVjdGVkIGV2ZW50IHR5cGUgaGFzIGJlZW4gcmVjZWl2ZWQsIHRoaXMgZXZlbnQgbG9nIGxvb2tzIGNvcnJ1cHRlZC4gTGV0J3MgZmFpbCBpbW1lZGlhdGVseS5cbiAgICAgIGN0eC5wcm9taXNlUXVldWUgPSBjdHgucHJvbWlzZVF1ZXVlLnRoZW4oKCkgPT4ge1xuICAgICAgICBjdHgub25Xb3JrZmxvd0Vycm9yKFxuICAgICAgICAgIG5ldyBXb3JrZmxvd1J1bnRpbWVFcnJvcihcbiAgICAgICAgICAgIGBVbmV4cGVjdGVkIGV2ZW50IHR5cGUgZm9yIGhvb2sgJHtjb3JyZWxhdGlvbklkfSAodG9rZW46ICR7dG9rZW59KSBcIiR7ZXZlbnQuZXZlbnRUeXBlfVwiYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQ7XG4gICAgfSk7XG5cbiAgICAvLyBUcmFjayBpZiB0aGUgaG9vayBoYXMgYmVlbiBkaXNwb3NlZFxuICAgIGxldCBpc0Rpc3Bvc2VkID0gZmFsc2U7XG5cbiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IHByb21pc2UgdGhhdCB3YWl0cyBmb3IgdGhlIG5leHQgaG9vayBwYXlsb2FkXG4gICAgZnVuY3Rpb24gY3JlYXRlSG9va1Byb21pc2UoKTogUHJvbWlzZTxUPiB7XG4gICAgICBjb25zdCByZXNvbHZlcnMgPSB3aXRoUmVzb2x2ZXJzPFQ+KCk7XG5cbiAgICAgIC8vIElmIHdlIGhhdmUgYSBjb25mbGljdCwgcmVqZWN0IHRocm91Z2ggdGhlIHByb21pc2VRdWV1ZSB0byBtYWludGFpblxuICAgICAgLy8gZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyB3aXRoIGFueSBwcmlvciBxdWV1ZWQgcmVzb2x1dGlvbnMuXG4gICAgICBpZiAoaGFzQ29uZmxpY3QgJiYgY29uZmxpY3RFcnJvclJlZikge1xuICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlcnMucmVqZWN0KGNvbmZsaWN0RXJyb3JSZWYpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVycy5wcm9taXNlO1xuICAgICAgfVxuXG4gICAgICBpZiAocGF5bG9hZHNRdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5leHRQYXlsb2FkID0gcGF5bG9hZHNRdWV1ZS5zaGlmdCgpO1xuICAgICAgICBpZiAobmV4dFBheWxvYWQpIHtcbiAgICAgICAgICAvLyBDaGFpbiB0aHJvdWdoIGN0eC5wcm9taXNlUXVldWUgdG8gZW5zdXJlIHRoYXQgYXN5bmNcbiAgICAgICAgICAvLyBkZXNlcmlhbGl6YXRpb24gKGUuZy4sIGRlY3J5cHRpb24pIHJlc29sdmVzIGluIGV2ZW50IGxvZyBvcmRlci5cbiAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMrKztcbiAgICAgICAgICBjdHgucHJvbWlzZVF1ZXVlID0gY3R4LnByb21pc2VRdWV1ZS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBoeWRyYXRlU3RlcFJldHVyblZhbHVlKFxuICAgICAgICAgICAgICAgIG5leHRQYXlsb2FkLmV2ZW50RGF0YS5wYXlsb2FkLFxuICAgICAgICAgICAgICAgIGN0eC5ydW5JZCxcbiAgICAgICAgICAgICAgICBjdHguZW5jcnlwdGlvbktleSxcbiAgICAgICAgICAgICAgICBjdHguZ2xvYmFsVGhpc1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXNvbHZlcnMucmVzb2x2ZShwYXlsb2FkIGFzIFQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZXJzLnJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBjdHgucGVuZGluZ0RlbGl2ZXJpZXMtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZXJzLnByb21pc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50TG9nRW1wdHkpIHtcbiAgICAgICAgc2NoZWR1bGVXaGVuSWRsZShjdHgsICgpID0+IHtcbiAgICAgICAgICBjdHgub25Xb3JrZmxvd0Vycm9yKFxuICAgICAgICAgICAgbmV3IFdvcmtmbG93U3VzcGVuc2lvbihjdHguaW52b2NhdGlvbnNRdWV1ZSwgY3R4Lmdsb2JhbFRoaXMpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHByb21pc2VzLnB1c2gocmVzb2x2ZXJzKTtcblxuICAgICAgcmV0dXJuIHJlc29sdmVycy5wcm9taXNlO1xuICAgIH1cblxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBkaXNwb3NlIHRoZSBob29rXG4gICAgZnVuY3Rpb24gZGlzcG9zZUhvb2soKTogdm9pZCB7XG4gICAgICBpZiAoaXNEaXNwb3NlZCkge1xuICAgICAgICByZXR1cm47IC8vIEFscmVhZHkgZGlzcG9zZWQsIG5vdGhpbmcgdG8gZG9cbiAgICAgIH1cbiAgICAgIGlzRGlzcG9zZWQgPSB0cnVlO1xuXG4gICAgICAvLyBJZiB0aGUgZXZlbnQgbG9nIGFscmVhZHkgY29udGFpbnMgaG9va19kaXNwb3NlZCwgdGhpcyBpcyBhIHJlcGxheSDigJQgbm8tb3BcbiAgICAgIGlmIChoYXNEaXNwb3NlZEV2ZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IGRpc3Bvc2VkIGZsYWcgb24gdGhlIGV4aXN0aW5nIHF1ZXVlIGl0ZW1cbiAgICAgIGNvbnN0IHF1ZXVlSXRlbSA9IGN0eC5pbnZvY2F0aW9uc1F1ZXVlLmdldChjb3JyZWxhdGlvbklkKTtcbiAgICAgIGlmIChxdWV1ZUl0ZW0gJiYgcXVldWVJdGVtLnR5cGUgPT09ICdob29rJykge1xuICAgICAgICBxdWV1ZUl0ZW0uZGlzcG9zZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBEcmFpbiBhbnkgcGVuZGluZyBwcm9taXNlcyB0aGF0IGFyZSB3YWl0aW5nIGZvciBwYXlsb2Fkcy5cbiAgICAgIC8vIFdpdGhvdXQgdGhpcywgcHJvbWlzZXMgY3JlYXRlZCBieSBgYXdhaXQgaG9va2Agb3IgdGhlIGFzeW5jIGl0ZXJhdG9yJ3NcbiAgICAgIC8vIGB5aWVsZCBhd2FpdCB0aGlzYCB3b3VsZCBoYW5nIGZvcmV2ZXIgc2luY2UgdGhlIGV2ZW50IGNvbnN1bWVyIHdpbGxcbiAgICAgIC8vIG5ldmVyIGRlbGl2ZXIgYW5vdGhlciBob29rX3JlY2VpdmVkIGFmdGVyIGRpc3Bvc2FsLlxuICAgICAgaWYgKHByb21pc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcHJvbWlzZXMubGVuZ3RoID0gMDtcbiAgICAgICAgc2NoZWR1bGVXaGVuSWRsZShjdHgsICgpID0+IHtcbiAgICAgICAgICBjdHgub25Xb3JrZmxvd0Vycm9yKFxuICAgICAgICAgICAgbmV3IFdvcmtmbG93U3VzcGVuc2lvbihjdHguaW52b2NhdGlvbnNRdWV1ZSwgY3R4Lmdsb2JhbFRoaXMpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHdlYmhvb2tMb2dnZXIuZGVidWcoJ0hvb2sgZGlzcG9zZWQnLCB7IGNvcnJlbGF0aW9uSWQsIHRva2VuIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGhvb2s6IEhvb2s8VD4gPSB7XG4gICAgICB0b2tlbixcblxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub1RoZW5Qcm9wZXJ0eTogSW50ZW50aW9uYWxseSB0aGVuYWJsZVxuICAgICAgdGhlbjxUUmVzdWx0MSA9IFQsIFRSZXN1bHQyID0gbmV2ZXI+KFxuICAgICAgICBvbmZ1bGZpbGxlZD86ICgodmFsdWU6IFQpID0+IFRSZXN1bHQxIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDE+KSB8IG51bGwsXG4gICAgICAgIG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPikgfCBudWxsXG4gICAgICApOiBQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUhvb2tQcm9taXNlKCkudGhlbihvbmZ1bGZpbGxlZCwgb25yZWplY3RlZCk7XG4gICAgICB9LFxuXG4gICAgICAvLyBTdXBwb3J0IGBmb3IgYXdhaXQgKGNvbnN0IHBheWxvYWQgb2YgaG9vaykgeyDigKYgfWAgc3ludGF4XG4gICAgICBhc3luYyAqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgd2hpbGUgKCFpc0Rpc3Bvc2VkKSB7XG4gICAgICAgICAgeWllbGQgYXdhaXQgdGhpcztcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgZGlzcG9zZTogZGlzcG9zZUhvb2ssXG5cbiAgICAgIFtTeW1ib2wuZGlzcG9zZV06IGRpc3Bvc2VIb29rLFxuICAgIH07XG5cbiAgICAvLyBBbHNvIHJlZ2lzdGVyIHdpdGggdGhlIFZNJ3MgU3ltYm9sLmRpc3Bvc2Ugc28gYHVzaW5nYCB3b3JrcyBpbnNpZGVcbiAgICAvLyB0aGUgd29ya2Zsb3cgc2FuZGJveCAodGhlIFZNIG1heSBoYXZlIGEgcG9seWZpbGxlZCBTeW1ib2wuZGlzcG9zZVxuICAgIC8vIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBob3N0J3MpLlxuICAgIGNvbnN0IHZtRGlzcG9zZSA9IGN0eC5nbG9iYWxUaGlzLlN5bWJvbC5kaXNwb3NlO1xuICAgIGlmICh2bURpc3Bvc2UgJiYgdm1EaXNwb3NlICE9PSBTeW1ib2wuZGlzcG9zZSkge1xuICAgICAgKGhvb2sgYXMgYW55KVt2bURpc3Bvc2VdID0gZGlzcG9zZUhvb2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2s7XG4gIH07XG59XG4iXX0=
@@ -32,4 +32,7 @@ Workflow programming can be a slight shift from how you traditionally write real
32
32
  <Card href="/docs/foundations/idempotency" title="Idempotency">
33
33
  Prevent duplicate side effects when retrying operations.
34
34
  </Card>
35
+ <Card href="/docs/foundations/versioning" title="Versioning">
36
+ Understand how runs stay pinned to deployments and when to opt in to newer code.
37
+ </Card>
35
38
  </Cards>
@@ -8,7 +8,8 @@
8
8
  "streaming",
9
9
  "cancellation",
10
10
  "serialization",
11
- "idempotency"
11
+ "idempotency",
12
+ "versioning"
12
13
  ],
13
14
  "defaultOpen": true
14
15
  }
@@ -13,7 +13,7 @@ Once you've defined your workflow functions, you need to trigger them to begin e
13
13
 
14
14
  ## The `start()` Function
15
15
 
16
- The [`start()`](/docs/api-reference/workflow-api/start) function is used to programmatically trigger workflow executions from runtime contexts like API routes, Server Actions, or any server-side code.
16
+ The [`start()`](/docs/api-reference/workflow-api/start) function is used to programmatically trigger workflow executions from runtime contexts like API routes, Server Actions, or any server-side code. In v5, you can also call `start()` from inside a workflow function when you want to spawn a child run or continue work in a new run.
17
17
 
18
18
  ```typescript lineNumbers
19
19
  import { start } from "workflow/api";
@@ -41,6 +41,10 @@ export async function POST(request: Request) {
41
41
 
42
42
  **Learn more**: [`start()` API Reference](/docs/api-reference/workflow-api/start)
43
43
 
44
+ <Callout type="info">
45
+ For parent-child workflow patterns, see [Workflow Composition](/cookbook/common-patterns/workflow-composition). For long-lived workflows that intentionally hand off to newer deployments with `deploymentId: "latest"`, see [Versioning](/docs/foundations/versioning).
46
+ </Callout>
47
+
44
48
  ## The `Run` Object
45
49
 
46
50
  When you call `start()`, it returns a [`Run`](/docs/api-reference/workflow-api/start#returns) object that provides access to the workflow's status and results.
@@ -0,0 +1,263 @@
1
+ ---
2
+ title: Versioning
3
+ description: Understand how workflow runs are pinned to deployments, how to recover runs after a fix, and how to opt in to newer code explicitly.
4
+ type: guide
5
+ summary: Keep in-flight runs stable by default, then choose explicit upgrade boundaries when you need them.
6
+ prerequisites:
7
+ - /docs/foundations/starting-workflows
8
+ related:
9
+ - /docs/api-reference/workflow-api/start
10
+ - /docs/foundations/cancellation
11
+ - /cookbook/common-patterns/workflow-composition
12
+ ---
13
+
14
+ Workflow runs are pinned to the deployment that starts them. When a run begins, Workflow SDK records the deployment for that run and continues executing the run on that same copy of your code.
15
+
16
+ That default is intentional. Durable workflows can pause for minutes, days, or months. If the code underneath a paused run changed every time you deployed, an in-flight run could resume into a different function body, different step names, or different input types than the ones it started with. That can make type safety fragile and can break long-running work in hard-to-debug ways.
17
+
18
+ With Workflow SDK, you can keep shipping. New runs use new deployments, while existing runs keep the version they already understand.
19
+
20
+ ## Default behavior
21
+
22
+ Start a workflow normally:
23
+
24
+ ```typescript title="app/api/orders/route.ts" lineNumbers
25
+ import { start } from "workflow/api";
26
+ import { fulfillOrder } from "@/workflows/fulfill-order";
27
+
28
+ export async function POST(request: Request) {
29
+ const { orderId } = await request.json();
30
+
31
+ const run = await start(fulfillOrder, [orderId]); // [!code highlight]
32
+
33
+ return Response.json({ runId: run.runId });
34
+ }
35
+ ```
36
+
37
+ The run is tied to the deployment that handled this request. If you deploy a new version while the workflow is [sleeping](/docs/api-reference/workflow/sleep), [waiting on a hook](/docs/foundations/hooks), [retrying a step](/docs/foundations/errors-and-retries), or processing later queue messages, that existing run still resumes on the original deployment.
38
+
39
+ ```typescript title="workflows/fulfill-order.ts" lineNumbers
40
+ import { sleep } from "workflow";
41
+
42
+ export async function fulfillOrder(orderId: string) {
43
+ "use workflow";
44
+
45
+ await reserveInventory(orderId);
46
+ await sleep("2d");
47
+ await chargeCustomer(orderId);
48
+ await shipOrder(orderId);
49
+ }
50
+
51
+ async function reserveInventory(orderId: string) {
52
+ "use step";
53
+ // ...
54
+ }
55
+
56
+ async function chargeCustomer(orderId: string) {
57
+ "use step";
58
+ // ...
59
+ }
60
+
61
+ async function shipOrder(orderId: string) {
62
+ "use step";
63
+ // ...
64
+ }
65
+ ```
66
+
67
+ If you deploy a change to `chargeCustomer()` while a run is in the two-day sleep, the existing run does not suddenly resume into the new implementation. It continues on the deployment it started on. The next order starts on the latest deployment and uses the new code from the beginning.
68
+
69
+ ## Fixing in-flight runs
70
+
71
+ Sometimes you deploy because the old code had a bug. The safest fix is usually explicit:
72
+
73
+ 1. Deploy the fixed code.
74
+ 2. Find the affected runs in [observability](/docs/observability) or with the CLI.
75
+ 3. Cancel the old runs if they are still running.
76
+ 4. Rerun them on the latest deployment with the same inputs.
77
+
78
+ This keeps the version boundary visible. The old run ends as cancelled or failed, and the replacement run starts fresh on the fixed deployment. This is a good fit for one-off, ad-hoc upgrades where you explicitly opt in to moving affected runs onto a new version.
79
+
80
+ ```bash
81
+ # Inspect affected runs and copy the exact workflowName value.
82
+ npx workflow inspect runs \
83
+ --backend vercel \
84
+ --status running
85
+
86
+ # Cancel one run.
87
+ npx workflow cancel <run-id> \
88
+ --backend vercel
89
+
90
+ # Or bulk-cancel matching running runs.
91
+ npx workflow cancel \
92
+ --status running \
93
+ --workflowName "workflow//./workflows/fulfill-order//fulfillOrder" \
94
+ --backend vercel
95
+ ```
96
+
97
+ The `--workflowName` filter expects the generated workflow ID, not only the exported function's short name. Use the `workflowName` value from `workflow inspect runs`, and use [`parseWorkflowName()`](/docs/api-reference/workflow-api/world/observability) when you need display-friendly names.
98
+
99
+ In the [observability UI](/docs/observability), use **Rerun on latest** to enqueue the workflow again with the same inputs against the latest deployment.
100
+
101
+ If you are writing your own recovery route, call `start()` with the same arguments and `deploymentId: "latest"`:
102
+
103
+ ```typescript title="app/api/orders/rerun/route.ts" lineNumbers
104
+ import { start } from "workflow/api";
105
+ import { fulfillOrder } from "@/workflows/fulfill-order";
106
+
107
+ export async function POST(request: Request) {
108
+ const { orderId } = await request.json();
109
+
110
+ const run = await start(fulfillOrder, [orderId], {
111
+ deploymentId: "latest", // [!code highlight]
112
+ });
113
+
114
+ return Response.json({ runId: run.runId });
115
+ }
116
+ ```
117
+
118
+ <Callout type="warn">
119
+ `deploymentId: "latest"` is currently a Vercel-specific feature. Other Worlds may implement this option differently to match their own deployment runtimes, and the World spec may rename it from `deploymentId` to `version` in a future SDK version. On Vercel, `"latest"` resolves to the most recent deployment matching your current environment. Because the caller and target deployment can be different, keep the [workflow function name and file path](/docs/errors/workflow-not-registered), arguments, and return value backward-compatible across the deployments you plan to bridge.
120
+ </Callout>
121
+
122
+ ## Self upgrading workflows
123
+
124
+ Some workflows are expected to run for a very long time. Scheduled loops, recurring jobs, agents, and chat sessions often should not stay on one deployment forever.
125
+
126
+ Model those as a sequence of runs. Each run does a bounded piece of work, then starts the next run on the latest deployment and exits. This is similar to `continueAsNew` in other durable execution systems, but in Workflow SDK it is just [explicit recursion through `start()`](/cookbook/common-patterns/workflow-composition).
127
+
128
+ ```typescript title="workflows/daily-digest.ts" lineNumbers
129
+ import { sleep } from "workflow";
130
+ import { start } from "workflow/api";
131
+
132
+ type DigestState = {
133
+ userId: string;
134
+ lastSentAt?: string;
135
+ };
136
+
137
+ export async function dailyDigest(state: DigestState) {
138
+ "use workflow";
139
+
140
+ const sentAt = await sendDigest(state.userId);
141
+ await sleep("1d");
142
+
143
+ const run = await start(
144
+ dailyDigest,
145
+ [{ ...state, lastSentAt: sentAt }],
146
+ {
147
+ deploymentId: "latest", // [!code highlight]
148
+ }
149
+ );
150
+
151
+ return { continuedAs: run.runId };
152
+ }
153
+
154
+ async function sendDigest(userId: string) {
155
+ "use step";
156
+ // ...
157
+ return new Date().toISOString();
158
+ }
159
+ ```
160
+
161
+ This pattern gives every run a clear lifecycle:
162
+
163
+ - The current run stays on its original deployment.
164
+ - The next run starts on the latest deployment.
165
+ - The [serialized `state`](/docs/foundations/serialization) is the migration boundary between versions.
166
+ - Observability can link parent and child runs when a workflow starts another run.
167
+
168
+ ## Carrying context forward
169
+
170
+ Anything that is [serializable by Workflow SDK](/docs/foundations/serialization) can be passed from one run to the next as an argument. That includes plain state objects, `ReadableStream`, `WritableStream`, `AbortSignal`, and other supported serialized values.
171
+
172
+ For example, a long export can register its [output stream](/docs/foundations/streaming) once, write progress from each run, and pass the same stream plus updated state into the next run:
173
+
174
+ ```typescript title="workflows/export-report.ts" lineNumbers
175
+ import { getWritable } from "workflow";
176
+ import { start } from "workflow/api";
177
+
178
+ type ExportState = {
179
+ exportId: string;
180
+ page: number;
181
+ };
182
+
183
+ export async function exportReport(
184
+ state: ExportState,
185
+ progress?: WritableStream<string>
186
+ ) {
187
+ "use workflow";
188
+
189
+ // Register the stream once. Continuation runs receive this same stream
190
+ // as an argument and keep writing to it.
191
+ const stream =
192
+ progress !== undefined ? progress : getWritable<string>();
193
+
194
+ const hasMore = await exportPage(state, stream);
195
+
196
+ if (!hasMore) {
197
+ await writeProgress(stream, { type: "done", totalPages: state.page });
198
+ return { totalPages: state.page };
199
+ }
200
+
201
+ const run = await start(exportReport, [
202
+ { ...state, page: state.page + 1 },
203
+ stream,
204
+ ], {
205
+ deploymentId: "latest", // [!code highlight]
206
+ });
207
+
208
+ return { continuedAs: run.runId };
209
+ }
210
+
211
+ async function exportPage(
212
+ state: ExportState,
213
+ stream: WritableStream<string>
214
+ ) {
215
+ "use step";
216
+
217
+ // Do work for this version boundary.
218
+ const hasMore = state.page < 10;
219
+ const writer = stream.getWriter();
220
+
221
+ try {
222
+ await writer.write(
223
+ JSON.stringify({ type: "page", page: state.page }) + "\n"
224
+ );
225
+ return hasMore;
226
+ } finally {
227
+ writer.releaseLock();
228
+ }
229
+ }
230
+
231
+ async function writeProgress(
232
+ stream: WritableStream<string>,
233
+ event: { type: "done"; totalPages: number }
234
+ ) {
235
+ "use step";
236
+
237
+ const writer = stream.getWriter();
238
+ try {
239
+ await writer.write(JSON.stringify(event) + "\n");
240
+ } finally {
241
+ writer.releaseLock();
242
+ }
243
+ }
244
+ ```
245
+
246
+ ```typescript title="app/api/export/route.ts" lineNumbers
247
+ import { start } from "workflow/api";
248
+ import { exportReport } from "@/workflows/export-report";
249
+
250
+ export async function POST(request: Request) {
251
+ const { exportId } = await request.json();
252
+
253
+ const run = await start(exportReport, [{ exportId, page: 1 }]);
254
+
255
+ // Linked continuation runs keep writing to the stream registered by
256
+ // the parent run, because that stream is passed forward as an argument.
257
+ return new Response(run.readable, {
258
+ headers: { "Content-Type": "application/jsonl" },
259
+ });
260
+ }
261
+ ```
262
+
263
+ Each run still has one clear version boundary: the current run stays on its original deployment, the next run starts on the latest deployment, and only the explicit state and stream handle are carried forward.
@@ -193,7 +193,7 @@ handleUserSignup.workflowId = "workflow//workflows/user.js//handleUserSignup"; /
193
193
  - The `workflowId` property is added (same as workflow mode)
194
194
  - Step functions are not transformed in client mode
195
195
 
196
- **Why this transformation?** Workflow functions cannot be called directly—they must be started using [`start()`](/docs/api-reference/workflow-api/start). The error prevents accidental direct execution while the `workflowId` property allows the `start()` function to identify which workflow to launch.
196
+ **Why this transformation?** Workflow functions cannot be called directly from application code—they must be started using [`start()`](/docs/api-reference/workflow-api/start). The error prevents accidental direct execution while the `workflowId` property allows the `start()` function to identify which workflow to launch.
197
197
 
198
198
  The IDs are generated exactly like in workflow mode to ensure they can be directly referenced at runtime.
199
199
 
@@ -321,7 +321,7 @@ The compiler generates stable IDs for workflows and steps based on file paths an
321
321
  - **Portable**: Works across different runtimes and deployments
322
322
 
323
323
  <Callout type="info">
324
- Although IDs can change when files are moved or functions are renamed, Workflow SDK function assume atomic versioning in the World. This means changing IDs won't break old workflows from running, but will prevent run from being upgraded and will cause your workflow/step names to change in the observability across deployments.
324
+ Although IDs can change when files are moved or functions are renamed, Workflow SDK functions assume [atomic versioning](/docs/foundations/versioning) in the World. This means changing IDs won't break old workflows from running, but will prevent runs from being upgraded and will cause your workflow/step names to change in observability across deployments.
325
325
  </Callout>
326
326
 
327
327
  ## Framework Integration
@@ -127,7 +127,7 @@ flowchart TD
127
127
 
128
128
  Unlike other entities, hooks don't have a `status` field—the states above are conceptual. An "active" hook is one that exists in storage, while "disposed" means the hook has been deleted. When a `hook_disposed` event is created, the hook record is removed rather than updated.
129
129
 
130
- While a hook is active, its token is reserved and cannot be used by other workflows. If a workflow attempts to create a hook with a token that is already in use by another active hook, a `hook_conflict` event is recorded instead of `hook_created`. This causes the hook's promise to reject with a `HookConflictError`, which you can detect with `HookConflictError.is(error)`. See the [hook-conflict error](/docs/errors/hook-conflict) documentation for more details.
130
+ While a hook is active, its token is reserved and cannot be used by other workflows. If a workflow attempts to create a hook with a token that is already in use by another active hook, a `hook_conflict` event is recorded instead of `hook_created`. Current worlds include the token and the run ID that currently owns it, though older persisted events or world implementations may only include the token. This causes the hook's promise to reject with a `HookConflictError`, which you can detect with `HookConflictError.is(error)`. See the [hook-conflict error](/docs/errors/hook-conflict) documentation for more details.
131
131
 
132
132
  When a hook is disposed (either explicitly or when its workflow completes), the token is released and can be claimed by future workflows. Hooks are automatically disposed when a workflow reaches a terminal state (`completed`, `failed`, or `cancelled`). The `hook_disposed` event is only needed for explicit disposal before workflow completion.
133
133
 
@@ -188,7 +188,7 @@ Events are categorized by the entity type they affect. Each event contains metad
188
188
  | Event | Description |
189
189
  |-------|-------------|
190
190
  | `hook_created` | Creates a new hook in `active` state. Contains the hook token and optional metadata. |
191
- | `hook_conflict` | Records that hook creation failed because the token is already in use by another active hook. The hook is not created, and awaiting the hook will reject with a `HookConflictError`. |
191
+ | `hook_conflict` | Records that hook creation failed because the token is already in use by another active hook. Contains the token and, for current worlds, the active hook owner's run ID. The hook is not created, and awaiting the hook will reject with a `HookConflictError`. |
192
192
  | `hook_received` | Records that a payload was delivered to the hook. The hook remains `active` and can receive more payloads. |
193
193
  | `hook_disposed` | Deletes the hook from storage (conceptually transitioning to `disposed` state). The token is released for reuse by future workflows. |
194
194
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/core",
3
- "version": "5.0.0-beta.5",
3
+ "version": "5.0.0-beta.6",
4
4
  "description": "Core runtime and engine for Workflow SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -89,12 +89,12 @@
89
89
  "semver": "7.7.4",
90
90
  "ulid": "~3.0.1",
91
91
  "zod": "4.3.6",
92
- "@workflow/errors": "5.0.0-beta.2",
92
+ "@workflow/errors": "5.0.0-beta.3",
93
93
  "@workflow/serde": "5.0.0-beta.1",
94
94
  "@workflow/utils": "5.0.0-beta.2",
95
- "@workflow/world": "5.0.0-beta.2",
96
- "@workflow/world-local": "5.0.0-beta.4",
97
- "@workflow/world-vercel": "5.0.0-beta.4"
95
+ "@workflow/world": "5.0.0-beta.3",
96
+ "@workflow/world-local": "5.0.0-beta.5",
97
+ "@workflow/world-vercel": "5.0.0-beta.5"
98
98
  },
99
99
  "devDependencies": {
100
100
  "@opentelemetry/api": "1.9.0",