footprintjs 10.2.1 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/esm/index.d.ts +1 -0
  2. package/dist/esm/index.js +1 -1
  3. package/dist/esm/lib/capture/nativeCoverage.d.ts +56 -0
  4. package/dist/esm/lib/capture/nativeCoverage.js +102 -0
  5. package/dist/esm/lib/memory/StageContext.d.ts +5 -0
  6. package/dist/esm/lib/memory/StageContext.js +27 -6
  7. package/dist/esm/lib/memory/attention.d.ts +2 -0
  8. package/dist/esm/lib/memory/attention.js +12 -5
  9. package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +12 -1
  10. package/dist/esm/lib/recorder/ControlDepRecorder.js +23 -1
  11. package/dist/esm/lib/recorder/snapshot.d.ts +1 -1
  12. package/dist/esm/lib/recorder/snapshot.js +7 -2
  13. package/dist/esm/lib/runner/ExecutionRuntime.d.ts +9 -0
  14. package/dist/esm/lib/runner/ExecutionRuntime.js +13 -1
  15. package/dist/esm/lib/runner/FlowChartExecutor.d.ts +2 -0
  16. package/dist/esm/lib/runner/FlowChartExecutor.js +31 -2
  17. package/dist/esm/lib/runner/attach.js +4 -2
  18. package/dist/esm/lib/runner/options.d.ts +3 -0
  19. package/dist/esm/lib/runner/options.js +5 -1
  20. package/dist/esm/lib/runner/snapshot.d.ts +3 -1
  21. package/dist/esm/lib/runner/snapshot.js +35 -4
  22. package/dist/esm/lib/scope/ScopeFacade.js +4 -2
  23. package/dist/esm/lib/scope/runtime.d.ts +2 -0
  24. package/dist/esm/lib/scope/runtime.js +9 -1
  25. package/dist/index.js +1 -1
  26. package/dist/lib/capture/nativeCoverage.js +107 -0
  27. package/dist/lib/memory/StageContext.js +27 -6
  28. package/dist/lib/memory/attention.js +12 -5
  29. package/dist/lib/recorder/ControlDepRecorder.js +23 -1
  30. package/dist/lib/recorder/snapshot.js +7 -2
  31. package/dist/lib/runner/ExecutionRuntime.js +13 -1
  32. package/dist/lib/runner/FlowChartExecutor.js +34 -5
  33. package/dist/lib/runner/attach.js +3 -1
  34. package/dist/lib/runner/options.js +5 -1
  35. package/dist/lib/runner/snapshot.js +35 -4
  36. package/dist/lib/scope/ScopeFacade.js +3 -1
  37. package/dist/lib/scope/runtime.js +12 -2
  38. package/dist/types/index.d.ts +1 -0
  39. package/dist/types/lib/capture/nativeCoverage.d.ts +56 -0
  40. package/dist/types/lib/memory/StageContext.d.ts +5 -0
  41. package/dist/types/lib/memory/attention.d.ts +2 -0
  42. package/dist/types/lib/recorder/ControlDepRecorder.d.ts +12 -1
  43. package/dist/types/lib/recorder/snapshot.d.ts +1 -1
  44. package/dist/types/lib/runner/ExecutionRuntime.d.ts +9 -0
  45. package/dist/types/lib/runner/FlowChartExecutor.d.ts +2 -0
  46. package/dist/types/lib/runner/options.d.ts +3 -0
  47. package/dist/types/lib/runner/snapshot.d.ts +3 -1
  48. package/dist/types/lib/scope/runtime.d.ts +2 -0
  49. package/package.json +1 -1
@@ -283,4 +283,5 @@ export { extractErrorInfo, formatErrorInfo } from './lib/engine/index.js';
283
283
  export { disableDevMode, enableDevMode, isDevMode } from './lib/devMode.js';
284
284
  export type { RetryLoopCall, RetryLoopDecision, RetryLoopIdentity } from './lib/attempt/retryLoopTypes.js';
285
285
  export type { RetryLoopContext, RetryLoopOptions, RetryLoopState } from './lib/builder/retryLoop.js';
286
+ export type { CaptureChannelStatus, CaptureLimitation, NativeCaptureNote, RecorderCaptureAcknowledgement, } from './lib/capture/nativeCoverage.js';
286
287
  export { stringifySnapshot } from './lib/runner/stringifySnapshot.js';
package/dist/esm/index.js CHANGED
@@ -95,4 +95,4 @@ export { extractErrorInfo, formatErrorInfo } from './lib/engine/index.js';
95
95
  */
96
96
  export { disableDevMode, enableDevMode, isDevMode } from './lib/devMode.js';
97
97
  export { stringifySnapshot } from './lib/runner/stringifySnapshot.js';
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFTSCw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBc0N4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRbkQsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQW9CM0MsbUNBQW1DO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFpRHZEOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBV3JILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBMEIvRixvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUXhELG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBcUJuRCwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckQsb0NBQW9DO0FBQ3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBbUM1RCxxRUFBcUU7QUFDckUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLHlCQUF5QixDQUFDO0FBa0RqQywrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW1CdEUsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQTBCNUQsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWdFakQsc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTNFLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTckcsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRSwrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRoZSBjb21tb24gaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IHN0YXRlQXQsIGNhdXNhbENoYWluIH0gZnJvbSAnZm9vdHRyYWNlJzsgICAgIC8vIHJlYWQgYSBmaW5pc2hlZCBydW5cbiAqIGltcG9ydCB7IFJlY29yZEZyYW1lLCBFdmVudExvZyB9IGZyb20gJ2Zvb3R0cmFjZS93cml0ZSc7ICAgICAvLyB3cml0ZSBhIHJlY29yZCB5b3Vyc2VsZlxuICogaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gICAgICAgICAgICAgICAgIGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJzsgIC8vIGVuZ2luZSBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnRcbiAqXG4gKiBDb25maWcgZm9yIGAuYWRkUGFyYWxsZWxGb3JFYWNoKClgIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggY291bnRcbiAqIGRlY2lkZWQgYXQgcnVuIHRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gYG1heEJyYW5jaGVzYCBhbmQgYGludG9gIGFyZSByZXF1aXJlZFxuICogb24gcHVycG9zZSAoc2VlIGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kKS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBCcmFuY2hDaGFydCwgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0IOKAlCBidWlsZC10aW1lIG9ic2VydmVyICh0d2luIG9mIEZsb3dSZWNvcmRlcikgKi9cbmV4cG9ydCB0eXBlIHtcbiAgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlS2luZCxcbiAgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVSZWNvcmRlcixcbiAgU3RydWN0dXJlU3RhZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdGFnZVRhZ2dlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgVGltZSBCdWRnZXRcbiAqXG4gKiBgdGltZUJ1ZGdldChjaGFydClgIOKAlCB0aGUgc2xvd2VzdCBhIGNoYXJ0IGNhbiB0YWtlLCBmcm9tIGl0cyBkZWNsYXJlZCByZXRyeSBwb2xpY2llcyAoYGF0dGVtcHRzIMOXIHRpbWVvdXRNc2AgcGx1c1xuICogdGhlIHdhaXRzLCBzdW1tZWQgYWxvbmcgdGhlIHNsb3dlc3QgcGF0aCksIGFuZCBldmVyeSBzdGFnZSB0aGF0IG1ha2VzIGEgcGF0aCB1bmJvdW5kZWQsIGJ5IG5hbWUuIGAuYnVkZ2V0KG1zKWBcbiAqIGRlY2xhcmVzIHRoZSBjYWxsZXIncyBjb250cmFjdDsgYGJ1aWxkKClgIHJlZnVzZXMgYSBjaGFydCB0aGF0IGNhbm5vdCBrZWVwIGl0LiBBbHNvIGBjaGFydC50aW1lQnVkZ2V0KClgLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIEJ1ZGdldEFzc3VtcHRpb25zLFxuICBCdWRnZXRTdGVwLFxuICBUaW1lQnVkZ2V0T3B0aW9ucyxcbiAgVGltZUJ1ZGdldFJlcG9ydCxcbiAgVW5ib3VuZGVkUmVhc29uLFxuICBVbmJvdW5kZWRTdGFnZSxcbn0gZnJvbSAnLi9saWIvYnVkZ2V0L2luZGV4LmpzJztcbmV4cG9ydCB7IHRpbWVCdWRnZXQgfSBmcm9tICcuL2xpYi9idWRnZXQvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBEZWZhdWx0QnJhbmNoLFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3JzICovXG5leHBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuL2xpYi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW1wdHMg4oCUIGV2ZXJ5IHRyeSBvZiBhIHJldHJpZWQgc3RhZ2UsIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCBpdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIE9uZSBgQXR0ZW1wdFJlY29yZGAgcGVyIGF0dGVtcHQgb2YgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3ksIGEgYHRpbWVvdXRNc2AsIG9yIGEgcnVuIGRlYWRsaW5lIOKAlFxuICogdGltaW5nLCBvdXRjb21lLCBmYWlsdXJlIGNhdGVnb3J5LCBhbmQgdGhlIHJldHJ5LW9yLXN0b3AgZGVjaXNpb24gYXMgYERlY2lzaW9uRXZpZGVuY2VgIOKAlCBvbiB0aGUgc3RhZ2Unc1xuICogZXhlY3V0aW9uLXRyZWUgbm9kZSAoYFN0YWdlU25hcHNob3QuYXR0ZW1wdHNgIC8gYGF0dGVtcHRTdW1tYXJ5YCkgYW5kIG9uIGBGbG93UmVjb3JkZXIub25BdHRlbXB0YC5cbiAqIEEgY2FsbCBhIHN0YWdlIG1ha2VzIHRocm91Z2ggYHNjb3BlLiRjYWxsYCBpcyByZWNvcmRlZCB0aGUgc2FtZSB3YXkgKGtpbmQgYCdjYWxsJ2ApLCBhbmQgc28gaXMgYW4gU0RLJ3Mgb3duIHJldHJ5XG4gKiBhbiBhZGFwdGVyIHJlcG9ydHMgdGhyb3VnaCBgb2JzZXJ2ZWQoKWAgKGBPYnNlcnZlZEF0dGVtcHRgLCBraW5kIGAnb2JzZXJ2ZWQnYCkuIGBBdHRlbXB0Q29udGV4dGAgaXMgd2hhdFxuICogYHNjb3BlLiRhdHRlbXB0KClgIHJldHVybnMsIGFuZCB3aGF0IGEgY2FsbCdzIGZ1bmN0aW9uIGdldHMgKHRoZSBhdHRlbXB0J3Mgc2lnbmFsLCB0aGUgdGltZSBsZWZ0LCBgb2JzZXJ2ZWRgKTtcbiAqIGBMYXRlV3JpdGVgIGlzIGEgd3JpdGUgKG9yIGNhbGwpIGFuIGVuZGVkIGF0dGVtcHQgdHJpZWQgKGBTdGFnZVNuYXBzaG90LmxhdGVXcml0ZXNgKS4gQSBzdGFnZSB0aGF0IGNoYW5nZXMgYW5cbiAqIG91dHNpZGUgc3lzdGVtIGRlY2xhcmVzIGl0IChgU3RhZ2VUb3VjaGVzYCwgYC50b3VjaGVzKClgKSwgYW5kIGEgY2FsbCBkb2VzIChgQ2FsbE9wdGlvbnNgKTogZXZlcnkgYXR0ZW1wdCB0aGVuXG4gKiBjYXJyaWVzIGl0cyBgQXR0ZW1wdEVmZmVjdGAsIGFuZCB0aGUga2V5IHJ1bGUgaXMgaGFuZGVkIGFuIGBJZGVtcG90ZW5jeUtleUNvbnRleHRgIG9uY2UgcGVyIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBBdHRlbXB0Q2F0ZWdvcnksXG4gIEF0dGVtcHRDb250ZXh0LFxuICBBdHRlbXB0RWZmZWN0LFxuICBBdHRlbXB0RXJyb3IsXG4gIEF0dGVtcHRJbnB1dHMsXG4gIEF0dGVtcHRLaW5kLFxuICBBdHRlbXB0TmV4dCxcbiAgQXR0ZW1wdE9wdGlvbnMsXG4gIEF0dGVtcHRPdXRjb21lLFxuICBBdHRlbXB0UmVhc29uLFxuICBBdHRlbXB0UmVjb3JkLFxuICBBdHRlbXB0U3VtbWFyeSxcbiAgQ2FsbE9wdGlvbnMsXG4gIElkZW1wb3RlbmN5S2V5Q29udGV4dCxcbiAgTGF0ZVdyaXRlLFxuICBPYnNlcnZlZEF0dGVtcHQsXG4gIFN0YWdlVG91Y2hlcyxcbiAgVW5rbm93bkVmZmVjdEluaXQsXG59IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuLyoqXG4gKiBAY2F0ZWdvcnkgQXR0ZW1wdHNcbiAqXG4gKiBBbiBhdHRlbXB0IGJ5IG5hbWUgKGBzZXJpZXNgICsgYGF0dGVtcHRgKSBhbmQgcGVyLW91dGNvbWUgY291bnRzIOKAlCB3aGF0IHJlY29yZGVyIHJvd3MgaG9sZCBvZiBhdHRlbXB0cy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBBdHRlbXB0T3V0Y29tZUNvdW50cywgQXR0ZW1wdFJlZiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2F0dGVtcHRTZXJpZXMuanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIGBhdHRlbXB0KClgIOKAlCB0aGUgYXR0ZW1wdCBydW5uZXIgZm9yIGNvZGUgdGhhdCBpcyBub3QgYSBzdGFnZSAocmVjb3JkcyBnbyB0byBpdHMgYG9uQXR0ZW1wdGApOyBgZXJyb3JDYXRlZ29yeWBcbiAqIOKAlCB0aGUgb25lIGZhaWx1cmUgY2xhc3NpZmllciAoc2V2ZW4gZml4ZWQgY2F0ZWdvcmllcyk7IGByZXRyeVJ1bGVzYCDigJQgdGhlIG9uZSByZXRyeSBydWxlIHRhYmxlLCBhcyBgZGVjaWRlKClgXG4gKiBydWxlczsgdGhlIGF0dGVtcHQgY29udHJhY3QncyB0d28gZXJyb3JzLlxuICovXG5leHBvcnQgeyBhdHRlbXB0LCBBdHRlbXB0VGltZW91dEVycm9yLCBlcnJvckNhdGVnb3J5LCByZXRyeVJ1bGVzLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29ycmVsYXRpb25cbiAqXG4gKiBUaGUgcnVuJ3MgY29ycmVsYXRpb24gKDEwLjEpOiBgZW52LnRyYWNlcGFyZW50YCAoVzNDLCBwYXJzZWQgc3RyaWN0bHkpIG9yIGBlbnYudHJhY2VJZGAgKyBgZW52Lm9wZXJhdGlvbklkYFxuICogYmVjb21lIE9ORSBmcm96ZW4gYFJ1bkNvcnJlbGF0aW9uYCBwZXIgcnVuIOKAlCBvbiBgZ2V0U25hcHNob3QoKS5jb3JyZWxhdGlvbmAsIGV2ZXJ5IGZsb3cgZXZlbnQnc1xuICogYHRyYXZlcnNhbENvbnRleHQuY29ycmVsYXRpb25gIGFuZCBldmVyeSBzY29wZSBhbmQgZW1pdCBldmVudCdzIGBjb3JyZWxhdGlvbmAuIGBwYXJzZVRyYWNlcGFyZW50YCAvXG4gKiBgZm9ybWF0VHJhY2VwYXJlbnRgIGFyZSB0aGUgVzNDIGNvZGVjOyBhIHJlZnVzZWQgaGVhZGVyIHRocm93cyBgVHJhY2VwYXJlbnRFcnJvcmAgd2l0aCBhIG5hbWVkIGByZWFzb25gLlxuICovXG5leHBvcnQgdHlwZSB7IFBhcnNlZFRyYWNlcGFyZW50LCBSdW5Db3JyZWxhdGlvbiwgVHJhY2VwYXJlbnRGaWVsZHMsIFRyYWNlcGFyZW50UmVmdXNhbCB9IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuZXhwb3J0IHsgZm9ybWF0VHJhY2VwYXJlbnQsIHBhcnNlVHJhY2VwYXJlbnQsIFRyYWNlcGFyZW50RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKlxuICogVGhlIGNyYXNoLXNhZmUgcmVjb3JkICgxMC4xKTogdGhlIGV4ZWN1dG9yJ3MgYHNpbmtgIG9wdGlvbiwgaXRzIGFjY291bnRpbmcgb24gYGdldFNuYXBzaG90KCkuc2lua2AsXG4gKiBgZXhlY3V0b3IuZmx1c2hSZWNvcmQoKWAncyByZXN1bHQsIGFuZCB0aGUgZXJyb3IgYSBydW4gd2l0aCBgb25GYWlsdXJlOiAnZmFpbCdgIHJlamVjdHMgd2l0aC4gVGhlIHBvcnRcbiAqIChgUmVjb3JkU2lua2AsIGBtZW1vcnlTaW5rYCkgaXMgYGZvb3R0cmFjZS93cml0ZWAnczsgdGhlIGZpbGUgYWRhcHRlciBpcyBgZm9vdHByaW50anMvc2lua3NgLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7XG4gIFJlY29yZEZsdXNoUmVzdWx0LFxuICBSZWNvcmRTaW5rRmFpbHVyZU1vZGUsXG4gIFJlY29yZFNpbmtGbHVzaE1vZGUsXG4gIFJlY29yZFNpbmtPcHRpb24sXG4gIFJlY29yZFNpbmtPcHRpb25zLFxuICBSZWNvcmRTaW5rU3RhdHMsXG59IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUmVjb3JkU2lua0Vycm9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBUaGUgZm91ciBvYnNlcnZhYmlsaXR5IGRpYWxzIGBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnNgIGluaGVyaXRzLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7IFJ1bkRpYWxzIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBDaGFydE9wZW5BUElPcHRpb25zLCBNQ1BUb29sRGVzY3JpcHRpb24sIFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBEYXRhIChzY29wZSByZWNvcmRlcnMsIGZpcmUgZHVyaW5nIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBPcGVyYXRpb24gKi9cbmV4cG9ydCB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBFdmVyeSBgYXR0YWNoKlJlY29yZGVyYCBjYWxsIGFjY2VwdHMgYW4gb3B0aW9ucyBiYWc6XG4gKiBgZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihyZWMsIHsgZGVsaXZlcnk6ICdkZWZlcnJlZCcgfSlgIHRha2VzIHRoZVxuICogcmVjb3JkZXIgT1VUIG9mIHRoZSBlbmdpbmUncyBob3QgcGF0aCDigJQgZXZlbnRzIGFyZSBjYXB0dXJlZCBpbnRvIG9uZVxuICogYm91bmRlZCwgdG90YWxseS1vcmRlcmVkIHF1ZXVlIGFuZCBkZWxpdmVyZWQgYXQgdGhlIG5leHQgbWljcm90YXNrXG4gKiBjaGVja3BvaW50IChcIm9uZSBiZWF0IGJlaGluZFwiKS4gT21pdCBgZGVsaXZlcnlgIGZvciB0aGUgaGlzdG9yaWNhbFxuICogc3luY2hyb25vdXMgY2FsbCAoYnl0ZS1pZGVudGljYWwgdG8gcHJldmlvdXMgcmVsZWFzZXMpLiBBY2NvdW50aW5nXG4gKiBzdXJmYWNlcyBvbiBgc25hcHNob3Qub2JzZXJ2ZXJTdGF0c2A7IGBleGVjdXRvci5kcmFpbk9ic2VydmVycygpYCBzZXR0bGVzXG4gKiBhc3luYyBsaXN0ZW5lcnMgYmVmb3JlIHNodXRkb3duLiBTZWUgYGRvY3MvZ3VpZGVzL29ic2VydmVycy1kZWZlcnJlZC5tZGAuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBgQ2FwdHVyZVBvbGljeWAg4oCUIGhvdyBhIGRlZmVycmVkIGV2ZW50J3MgcGF5bG9hZCBpcyBtYXRlcmlhbGl6ZWQgYXRcbiAqIGNhcHR1cmUgdGltZSAoYCdjbG9uZSdgIGJ5IGRlZmF1bHQgZm9yIGF0dGFjaCBvcHRpb25zIC8gYCdzdW1tYXJ5J2AgLyBgJ3JlZidgKS4gYE92ZXJmbG93UG9saWN5YFxuICog4oCUIHdoYXQgYSBzYXR1cmF0ZWQgcXVldWUgZG9lcyAoYCdkcm9wLW9sZGVzdCdgIGRlZmF1bHQgLyBgJ3NhbXBsZSdgIC9cbiAqIGAnYmxvY2snYCkuIGBEaXNwYXRjaGVyU3RhdHNgIC8gYExpc3RlbmVyU3RhdHNgIOKAlCB0aGUgYWNjb3VudGluZyBzaGFwZXNcbiAqIGVtYmVkZGVkIGluIGBPYnNlcnZlclN0YXRzYC4gVHlwZXMgb25seSDigJQgdGhlIG9ic2VydmVyLXF1ZXVlIG1vZHVsZVxuICogaXRzZWxmIGlzIGludGVybmFsOyBjb25zdW1lcnMgdXNlIHRoZSBhdHRhY2ggb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBDYXB0dXJlUG9saWN5LCBEaXNwYXRjaGVyU3RhdHMsIExpc3RlbmVyU3RhdHMsIE92ZXJmbG93UG9saWN5IH0gZnJvbSAnLi9saWIvb2JzZXJ2ZXItcXVldWUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB7XG4gIGhhc0VtaXRSZWNvcmRlck1ldGhvZHMsXG4gIGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMsXG4gIGhhc1JlY29yZGVyTWV0aG9kcyxcbiAgaXNGbG93RXZlbnQsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRW1pdCAodXNlci1hdXRob3JlZCBzdHJ1Y3R1cmVkIGV2ZW50cylcbiAqXG4gKiBUaGlyZCBvYnNlcnZlciBjaGFubmVsIChhbG9uZ3NpZGUgYFNjb3BlUmVjb3JkZXJgIGFuZCBgRmxvd1JlY29yZGVyYCkuIENvbnN1bWVyXG4gKiBjb2RlIGNhbGxzIGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWAgZnJvbSBpbnNpZGUgYSBzdGFnZTsgZXZlcnkgYXR0YWNoZWRcbiAqIGBFbWl0UmVjb3JkZXIub25FbWl0KGV2ZW50KWAgZmlyZXMgc3luY2hyb25vdXNseSB3aXRoIHN0YWdlLWNvbnRleHRcbiAqIGVucmljaG1lbnQuIFBhc3MtdGhyb3VnaCDigJQgbm8gYnVmZmVyaW5nLCB6ZXJvIGFsbG9jYXRpb24gd2hlbiBubyByZWNvcmRlclxuICogaXMgYXR0YWNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIHsgRW1pdEV2ZW50LCBFbWl0UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIEZsb3cgKEZsb3dSZWNvcmRlciwgZmlyZXMgYWZ0ZXIgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0F0dGVtcHRFdmVudCxcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93UnVuRXZlbnQsXG4gIEZsb3dSdW5GYWlsZWRFdmVudCxcbiAgRmxvd1NlbGVjdGVkRXZlbnQsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBGbG93U3ViZmxvd0V2ZW50LFxuICBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCxcbiAgRmxvd1Rocm90dGxlZEV2ZW50LFxuICBSZXN1bWVMaW5rLFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLlxuICovXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUZvcm1hdHRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0QXR0ZW1wdFJvdywgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VsZi1EZXNjcmliaW5nIOKAlCAuY29udHJhY3QoKSwgdG9PcGVuQVBJKCksIHRvTUNQVG9vbCgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2VsZi1EZXNjcmliaW5nICovXG5leHBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNuYXBzaG90ICYgQ29tcG9zaXRpb24g4oCUIFN1YmZsb3cgbmF2aWdhdGlvbiBhbmQgQ29tcG9zYWJsZVJ1bm5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNuYXBzaG90ICYgQ29tcG9zaXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSdW50aW1lU25hcHNob3QsIFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGVSZWNvcmRlciBDb21wb3NpdGlvbiDigJQgQnVuZGxlIG11bHRpcGxlIHJlY29yZGVycyBpbnRvIGRvbWFpbiBwcmVzZXRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHsgQ29tcG9zaXRlUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhdXNlL1Jlc3VtZSDigJQgU2VyaWFsaXphYmxlIGNoZWNrcG9pbnRzIGZvciBsb25nLXJ1bm5pbmcgb3IgaHVtYW4taW4tdGhlLWxvb3AgZmxvd3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3djaGFydENoZWNrcG9pbnQsXG4gIFBhdXNhYmxlSGFuZGxlcixcbiAgUGF1c2VkRXhlY3V0aW9uLFxuICBQZW5kaW5nUGF1c2UsXG4gIFJlZGFjdGlvbk1hcmtzLFxufSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZVxuICpcbiAqIGBpbnRlcnJ1cHQoc2NvcGUsIHsgcmVhc29uLCBleHBlY3RzPyB9KWAg4oCUIHN0b3AgbWlkLXN0YWdlIHRvIGFzayBhIHF1ZXN0aW9uLFxuICogYW5kIGdldCB0aGUgYW5zd2VyIGJhY2sgYXQgdGhlIHNhbWUgY2FsbCBzaXRlIHdoZW4gdGhlIHJ1biByZXN1bWVzLiBSZXN1bWVcbiAqIHJlLWVudGVycyB0aGUgc3RhZ2UgZnJvbSBpdHMgVE9QIChzdGFnZXMgYXJlIGF0b21pYyksIHNvIGtlZXAgdGhlIGhhbGZcbiAqIGJlZm9yZSB0aGUgY2FsbCBpZGVtcG90ZW50LlxuICovXG5leHBvcnQgdHlwZSB7IEludGVycnVwdFBheWxvYWQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgeyBpbnRlcnJ1cHQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiDigJQgVHlwZXMgcGFzc2VkIHRvIEZsb3dDaGFydEV4ZWN1dG9yIGFuZCBydW4oKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52LCBFeGVjdXRvclJlc3VsdCwgUGF1c2VkUmVzdWx0LCBSdW5PcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBSZWFkLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VSZWFkc2AgKCMxNCk6XG4gKiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgcGVyLXJlYWQgdmFsdWUgY2xvbmUsIGhpc3RvcmljYWwgYmVoYXZpb3IpIC9cbiAqIGAnc3VtbWFyeSdgIChjaGVhcCBgUmVhZFN1bW1hcnlNYXJrZXJgIHBlciByZWFkKSAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nLFxuICogemVybyBwZXItcmVhZCBjbG9uZSkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyByZWFkVHJhY2tpbmcgfSlgXG4gKiBvciBjYWxsIGBleGVjdXRvci5zZXRSZWFkVHJhY2tpbmcobW9kZSlgIGJlZm9yZSBgcnVuKClgLlxuICovXG5leHBvcnQgdHlwZSB7IFJlYWRTdW1tYXJ5TWFya2VyLCBSZWFkVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIFdyaXRlLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VXcml0ZXNgICgjMTNjLUEpIOKAlCB0aGVcbiAqIHNpYmxpbmcgb2YgYFJlYWRUcmFja2luZ01vZGVgOyBib3RoIGFsaWFzIHRoZSBzaGFyZWQgYFJldGVudGlvblBvbGljeWBcbiAqIGZhbWlseSBmcm9tIGBsaWIvY2FwdHVyZWAuIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBwZXItd3JpdGUgdmFsdWUgY2xvbmUsXG4gKiBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvIGAnc3VtbWFyeSdgIChjaGVhcCBgV3JpdGVTdW1tYXJ5TWFya2VyYCBwZXIgd3JpdGUpXG4gKiAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nOyBgc3RhZ2VXcml0ZXNgIGFic2VudCBhbmQgdGhlIGBvbkNvbW1pdGAgbXV0YXRpb25zXG4gKiBwYXlsb2FkIGlzIGVtcHR5IOKAlCB3cml0ZXMgdGhlbXNlbHZlcyBzdGlsbCBjb21taXQsIGFuZCB0aGUgY29tbWl0IGxvZyBpc1xuICogdW5hZmZlY3RlZCkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyB3cml0ZVRyYWNraW5nIH0pYCBvclxuICogY2FsbCBgZXhlY3V0b3Iuc2V0V3JpdGVUcmFja2luZyhtb2RlKWAgYmVmb3JlIGBydW4oKWAuXG4gKi9cbmV4cG9ydCB0eXBlIHsgUmV0ZW50aW9uUG9saWN5LCBXcml0ZVN1bW1hcnlNYXJrZXIsIFdyaXRlVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIENvbW1pdC12YWx1ZXMgZW5jb2RpbmcgZm9yIHRoZSBDT01NSVQgTE9HICgjMTNjLUIpIOKAlCB0aGUgdGhpcmQgZGlhbCBvZlxuICogdGhlIGZhbWlseSwgYW5kIHRoZSBvbmx5IExPU1NMRVNTIG9uZSAoaXQgY2hhbmdlcyB0aGUgbG9nJ3MgZW5jb2RpbmcsXG4gKiBuZXZlciBpdHMgaW5mb3JtYXRpb24pLiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgZXZlcnkgc3Vydml2aW5nIGBzZXRgIHN0b3Jlc1xuICogdGhlIGZ1bGwgZmluYWwgdmFsdWUsIGJ5dGUtaWRlbnRpY2FsIHRvIGhpc3RvcnkpIC8gYCdkZWx0YSdgIChhcnJheVxuICogbmV0LWNoYW5nZXMgdGhhdCBhcmUgXCJiYXNlIHBsdXMgYSB0YWlsXCIgY29tbWl0IGFzIGFuIGBhcHBlbmRgIHZlcmJcbiAqIHN0b3Jpbmcgb25seSB0aGUgdGFpbDsgYGRlbGV0ZVZhbHVlKClgIGNvbW1pdHMgYXMgYSByZWFsIGBkZWxldGVgIHZlcmI7XG4gKiBvbmUgdHJhY2UgZW50cnkgcGVyIHN1cnZpdmluZyBwYXRoKS4gUmVwbGF5IHJlY29uc3RydWN0cyBldmVyeSBzdGVwJ3NcbiAqIGZ1bGwgc3RhdGUgZXhhY3RseS4gQ29uc3VtZXJzIHJlYWRpbmcgYGJ1bmRsZS5vdmVyd3JpdGVba2V5XWAgYXMgdGhlIGZ1bGxcbiAqIHZhbHVlIG11c3QgdXNlIGBjb21taXRWYWx1ZUF0YCBmcm9tIGBmb290dHJhY2VgLiBQYXNzIGFzXG4gKiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IGNvbW1pdFZhbHVlcyB9KWAgb3IgY2FsbFxuICogYGV4ZWN1dG9yLnNldENvbW1pdFZhbHVlcyhtb2RlKWAgYmVmb3JlIGBydW4oKWA7IHRoZSBhY3RpdmUgbW9kZSBpcyB0aGVcbiAqIHNuYXBzaG90IGRpc2NyaW1pbmFudCBgZ2V0U25hcHNob3QoKS5jb21taXRWYWx1ZXNgLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0ICYgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFcnJvciBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXYgVG9vbHMg4oCUIE1vZGUgZmxhZ3MgYW5kIFpvZCBzY29wZSB1dGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgRGV2IFRvb2xzXG4gKlxuICogR2xvYmFsIGRldi1tb2RlIGZsYWcuIENhbGwgYGVuYWJsZURldk1vZGUoKWAgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0b1xuICogdHVybiBvbiBkZXZlbG9wZXItb25seSBkaWFnbm9zdGljcyBhY3Jvc3MgdGhlIGxpYnJhcnkg4oCUIGNpcmN1bGFyLXJlZmVyZW5jZVxuICogZGV0ZWN0aW9uIGluIHNjb3BlIHdyaXRlcywgd2FybmluZ3Mgd2hlbiBhIHJlY29yZGVyIGhhcyBubyBvYnNlcnZlclxuICogbWV0aG9kcywgc3VzcGljaW91cy1wcmVkaWNhdGUgd2FybmluZ3MgaW4gZGVjaWRlL3NlbGVjdCwgc3RydWN0dXJhbFxuICogY2hlY2tzIGluIGBnZXRTdWJ0cmVlU25hcHNob3RgLCBhbmQgYW55IGZ1dHVyZSBkZXYtb25seSBkaWFnbm9zdGljLlxuICpcbiAqIFByb2R1Y3Rpb24gbGVhdmVzIGl0IE9GRiBieSBkZWZhdWx0ICh6ZXJvIG92ZXJoZWFkKS4gU2VlIHRoZSBKU0RvYyBvblxuICogYGVuYWJsZURldk1vZGVgIGZvciB0aGUgZnVsbCBsaXN0IGFuZCB1c2FnZSBleGFtcGxlLlxuICovXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnLi9saWIvZGV2TW9kZS5qcyc7XG5cbi8vIGBkZWZpbmVTY29wZUZyb21ab2RgIGFuZCB0aGUgb3RoZXIgem9kLWJhc2VkIHNjb3BlIGhlbHBlcnMgbW92ZWQgdG8gdGhlIG9wdC1pblxuLy8gYGZvb3RwcmludGpzL3pvZGAgZW50cnkg4oCUIGtlZXBpbmcgem9kIG91dCBvZiB0aGUgY29yZSBsb2FkIHBhdGggKGl0IGlzIGFuXG4vLyBvcHRpb25hbCBwZWVyKS4gSW1wb3J0IHRoZW0gZnJvbSAnZm9vdHByaW50anMvem9kJy5cbi8vIEEgcnVuJ3MgcmVjb3JkIGFzIEpTT04gd2l0aG91dCB0aGUgZW5naW5lJ3MgcmVjdXJzaW9uIGxpbWl0ICg5LjI2LjApOiB0aGVcbi8vIHNhbWUgYnl0ZXMgSlNPTi5zdHJpbmdpZnkgZW1pdHMsIGZvciBhIGRlZXAgYG5leHRgIGNoYWluIGl0IGNhbm5vdCBlbmNvZGUuXG5leHBvcnQgdHlwZSB7IFJldHJ5TG9vcENhbGwsIFJldHJ5TG9vcERlY2lzaW9uLCBSZXRyeUxvb3BJZGVudGl0eSB9IGZyb20gJy4vbGliL2F0dGVtcHQvcmV0cnlMb29wVHlwZXMuanMnO1xuZXhwb3J0IHR5cGUgeyBSZXRyeUxvb3BDb250ZXh0LCBSZXRyeUxvb3BPcHRpb25zLCBSZXRyeUxvb3BTdGF0ZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvcmV0cnlMb29wLmpzJztcbmV4cG9ydCB7IHN0cmluZ2lmeVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL3N0cmluZ2lmeVNuYXBzaG90LmpzJztcbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFTSCw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBc0N4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRbkQsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQW9CM0MsbUNBQW1DO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFpRHZEOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBV3JILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBMEIvRixvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUXhELG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBcUJuRCwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckQsb0NBQW9DO0FBQ3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBbUM1RCxxRUFBcUU7QUFDckUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLHlCQUF5QixDQUFDO0FBa0RqQywrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLOUQsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW1CdEUsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQTBCNUQsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWdFakQsc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTNFLHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTckcsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRSwrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBZTVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRoZSBjb21tb24gaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IHN0YXRlQXQsIGNhdXNhbENoYWluIH0gZnJvbSAnZm9vdHRyYWNlJzsgICAgIC8vIHJlYWQgYSBmaW5pc2hlZCBydW5cbiAqIGltcG9ydCB7IFJlY29yZEZyYW1lLCBFdmVudExvZyB9IGZyb20gJ2Zvb3R0cmFjZS93cml0ZSc7ICAgICAvLyB3cml0ZSBhIHJlY29yZCB5b3Vyc2VsZlxuICogaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gICAgICAgICAgICAgICAgIGZyb20gJ2Zvb3RwcmludGpzL2FkdmFuY2VkJzsgIC8vIGVuZ2luZSBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnRcbiAqXG4gKiBDb25maWcgZm9yIGAuYWRkUGFyYWxsZWxGb3JFYWNoKClgIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggY291bnRcbiAqIGRlY2lkZWQgYXQgcnVuIHRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gYG1heEJyYW5jaGVzYCBhbmQgYGludG9gIGFyZSByZXF1aXJlZFxuICogb24gcHVycG9zZSAoc2VlIGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kKS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBCcmFuY2hDaGFydCwgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0IOKAlCBidWlsZC10aW1lIG9ic2VydmVyICh0d2luIG9mIEZsb3dSZWNvcmRlcikgKi9cbmV4cG9ydCB0eXBlIHtcbiAgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlS2luZCxcbiAgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVSZWNvcmRlcixcbiAgU3RydWN0dXJlU3RhZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdGFnZVRhZ2dlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgVGltZSBCdWRnZXRcbiAqXG4gKiBgdGltZUJ1ZGdldChjaGFydClgIOKAlCB0aGUgc2xvd2VzdCBhIGNoYXJ0IGNhbiB0YWtlLCBmcm9tIGl0cyBkZWNsYXJlZCByZXRyeSBwb2xpY2llcyAoYGF0dGVtcHRzIMOXIHRpbWVvdXRNc2AgcGx1c1xuICogdGhlIHdhaXRzLCBzdW1tZWQgYWxvbmcgdGhlIHNsb3dlc3QgcGF0aCksIGFuZCBldmVyeSBzdGFnZSB0aGF0IG1ha2VzIGEgcGF0aCB1bmJvdW5kZWQsIGJ5IG5hbWUuIGAuYnVkZ2V0KG1zKWBcbiAqIGRlY2xhcmVzIHRoZSBjYWxsZXIncyBjb250cmFjdDsgYGJ1aWxkKClgIHJlZnVzZXMgYSBjaGFydCB0aGF0IGNhbm5vdCBrZWVwIGl0LiBBbHNvIGBjaGFydC50aW1lQnVkZ2V0KClgLlxuICovXG5leHBvcnQgdHlwZSB7XG4gIEJ1ZGdldEFzc3VtcHRpb25zLFxuICBCdWRnZXRTdGVwLFxuICBUaW1lQnVkZ2V0T3B0aW9ucyxcbiAgVGltZUJ1ZGdldFJlcG9ydCxcbiAgVW5ib3VuZGVkUmVhc29uLFxuICBVbmJvdW5kZWRTdGFnZSxcbn0gZnJvbSAnLi9saWIvYnVkZ2V0L2luZGV4LmpzJztcbmV4cG9ydCB7IHRpbWVCdWRnZXQgfSBmcm9tICcuL2xpYi9idWRnZXQvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBEZWZhdWx0QnJhbmNoLFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3JzICovXG5leHBvcnQgdHlwZSB7IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQgfSBmcm9tICcuL2xpYi9lcnJvcnMvdGVybWluYWxGYWlsdXJlLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW1wdHMg4oCUIGV2ZXJ5IHRyeSBvZiBhIHJldHJpZWQgc3RhZ2UsIGFuZCB0aGUgZGVjaXNpb24gdGhhdCBmb2xsb3dlZCBpdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIE9uZSBgQXR0ZW1wdFJlY29yZGAgcGVyIGF0dGVtcHQgb2YgYSBzdGFnZSB3aXRoIGEgZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3ksIGEgYHRpbWVvdXRNc2AsIG9yIGEgcnVuIGRlYWRsaW5lIOKAlFxuICogdGltaW5nLCBvdXRjb21lLCBmYWlsdXJlIGNhdGVnb3J5LCBhbmQgdGhlIHJldHJ5LW9yLXN0b3AgZGVjaXNpb24gYXMgYERlY2lzaW9uRXZpZGVuY2VgIOKAlCBvbiB0aGUgc3RhZ2Unc1xuICogZXhlY3V0aW9uLXRyZWUgbm9kZSAoYFN0YWdlU25hcHNob3QuYXR0ZW1wdHNgIC8gYGF0dGVtcHRTdW1tYXJ5YCkgYW5kIG9uIGBGbG93UmVjb3JkZXIub25BdHRlbXB0YC5cbiAqIEEgY2FsbCBhIHN0YWdlIG1ha2VzIHRocm91Z2ggYHNjb3BlLiRjYWxsYCBpcyByZWNvcmRlZCB0aGUgc2FtZSB3YXkgKGtpbmQgYCdjYWxsJ2ApLCBhbmQgc28gaXMgYW4gU0RLJ3Mgb3duIHJldHJ5XG4gKiBhbiBhZGFwdGVyIHJlcG9ydHMgdGhyb3VnaCBgb2JzZXJ2ZWQoKWAgKGBPYnNlcnZlZEF0dGVtcHRgLCBraW5kIGAnb2JzZXJ2ZWQnYCkuIGBBdHRlbXB0Q29udGV4dGAgaXMgd2hhdFxuICogYHNjb3BlLiRhdHRlbXB0KClgIHJldHVybnMsIGFuZCB3aGF0IGEgY2FsbCdzIGZ1bmN0aW9uIGdldHMgKHRoZSBhdHRlbXB0J3Mgc2lnbmFsLCB0aGUgdGltZSBsZWZ0LCBgb2JzZXJ2ZWRgKTtcbiAqIGBMYXRlV3JpdGVgIGlzIGEgd3JpdGUgKG9yIGNhbGwpIGFuIGVuZGVkIGF0dGVtcHQgdHJpZWQgKGBTdGFnZVNuYXBzaG90LmxhdGVXcml0ZXNgKS4gQSBzdGFnZSB0aGF0IGNoYW5nZXMgYW5cbiAqIG91dHNpZGUgc3lzdGVtIGRlY2xhcmVzIGl0IChgU3RhZ2VUb3VjaGVzYCwgYC50b3VjaGVzKClgKSwgYW5kIGEgY2FsbCBkb2VzIChgQ2FsbE9wdGlvbnNgKTogZXZlcnkgYXR0ZW1wdCB0aGVuXG4gKiBjYXJyaWVzIGl0cyBgQXR0ZW1wdEVmZmVjdGAsIGFuZCB0aGUga2V5IHJ1bGUgaXMgaGFuZGVkIGFuIGBJZGVtcG90ZW5jeUtleUNvbnRleHRgIG9uY2UgcGVyIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUge1xuICBBdHRlbXB0Q2F0ZWdvcnksXG4gIEF0dGVtcHRDb250ZXh0LFxuICBBdHRlbXB0RWZmZWN0LFxuICBBdHRlbXB0RXJyb3IsXG4gIEF0dGVtcHRJbnB1dHMsXG4gIEF0dGVtcHRLaW5kLFxuICBBdHRlbXB0TmV4dCxcbiAgQXR0ZW1wdE9wdGlvbnMsXG4gIEF0dGVtcHRPdXRjb21lLFxuICBBdHRlbXB0UmVhc29uLFxuICBBdHRlbXB0UmVjb3JkLFxuICBBdHRlbXB0U3VtbWFyeSxcbiAgQ2FsbE9wdGlvbnMsXG4gIElkZW1wb3RlbmN5S2V5Q29udGV4dCxcbiAgTGF0ZVdyaXRlLFxuICBPYnNlcnZlZEF0dGVtcHQsXG4gIFN0YWdlVG91Y2hlcyxcbiAgVW5rbm93bkVmZmVjdEluaXQsXG59IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuLyoqXG4gKiBAY2F0ZWdvcnkgQXR0ZW1wdHNcbiAqXG4gKiBBbiBhdHRlbXB0IGJ5IG5hbWUgKGBzZXJpZXNgICsgYGF0dGVtcHRgKSBhbmQgcGVyLW91dGNvbWUgY291bnRzIOKAlCB3aGF0IHJlY29yZGVyIHJvd3MgaG9sZCBvZiBhdHRlbXB0cy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBBdHRlbXB0T3V0Y29tZUNvdW50cywgQXR0ZW1wdFJlZiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2F0dGVtcHRTZXJpZXMuanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBBdHRlbXB0c1xuICpcbiAqIGBhdHRlbXB0KClgIOKAlCB0aGUgYXR0ZW1wdCBydW5uZXIgZm9yIGNvZGUgdGhhdCBpcyBub3QgYSBzdGFnZSAocmVjb3JkcyBnbyB0byBpdHMgYG9uQXR0ZW1wdGApOyBgZXJyb3JDYXRlZ29yeWBcbiAqIOKAlCB0aGUgb25lIGZhaWx1cmUgY2xhc3NpZmllciAoc2V2ZW4gZml4ZWQgY2F0ZWdvcmllcyk7IGByZXRyeVJ1bGVzYCDigJQgdGhlIG9uZSByZXRyeSBydWxlIHRhYmxlLCBhcyBgZGVjaWRlKClgXG4gKiBydWxlczsgdGhlIGF0dGVtcHQgY29udHJhY3QncyB0d28gZXJyb3JzLlxuICovXG5leHBvcnQgeyBhdHRlbXB0LCBBdHRlbXB0VGltZW91dEVycm9yLCBlcnJvckNhdGVnb3J5LCByZXRyeVJ1bGVzLCBVbmtub3duRWZmZWN0RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29ycmVsYXRpb25cbiAqXG4gKiBUaGUgcnVuJ3MgY29ycmVsYXRpb24gKDEwLjEpOiBgZW52LnRyYWNlcGFyZW50YCAoVzNDLCBwYXJzZWQgc3RyaWN0bHkpIG9yIGBlbnYudHJhY2VJZGAgKyBgZW52Lm9wZXJhdGlvbklkYFxuICogYmVjb21lIE9ORSBmcm96ZW4gYFJ1bkNvcnJlbGF0aW9uYCBwZXIgcnVuIOKAlCBvbiBgZ2V0U25hcHNob3QoKS5jb3JyZWxhdGlvbmAsIGV2ZXJ5IGZsb3cgZXZlbnQnc1xuICogYHRyYXZlcnNhbENvbnRleHQuY29ycmVsYXRpb25gIGFuZCBldmVyeSBzY29wZSBhbmQgZW1pdCBldmVudCdzIGBjb3JyZWxhdGlvbmAuIGBwYXJzZVRyYWNlcGFyZW50YCAvXG4gKiBgZm9ybWF0VHJhY2VwYXJlbnRgIGFyZSB0aGUgVzNDIGNvZGVjOyBhIHJlZnVzZWQgaGVhZGVyIHRocm93cyBgVHJhY2VwYXJlbnRFcnJvcmAgd2l0aCBhIG5hbWVkIGByZWFzb25gLlxuICovXG5leHBvcnQgdHlwZSB7IFBhcnNlZFRyYWNlcGFyZW50LCBSdW5Db3JyZWxhdGlvbiwgVHJhY2VwYXJlbnRGaWVsZHMsIFRyYWNlcGFyZW50UmVmdXNhbCB9IGZyb20gJy4vbGliL2F0dGVtcHQvaW5kZXguanMnO1xuZXhwb3J0IHsgZm9ybWF0VHJhY2VwYXJlbnQsIHBhcnNlVHJhY2VwYXJlbnQsIFRyYWNlcGFyZW50RXJyb3IgfSBmcm9tICcuL2xpYi9hdHRlbXB0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKlxuICogVGhlIGNyYXNoLXNhZmUgcmVjb3JkICgxMC4xKTogdGhlIGV4ZWN1dG9yJ3MgYHNpbmtgIG9wdGlvbiwgaXRzIGFjY291bnRpbmcgb24gYGdldFNuYXBzaG90KCkuc2lua2AsXG4gKiBgZXhlY3V0b3IuZmx1c2hSZWNvcmQoKWAncyByZXN1bHQsIGFuZCB0aGUgZXJyb3IgYSBydW4gd2l0aCBgb25GYWlsdXJlOiAnZmFpbCdgIHJlamVjdHMgd2l0aC4gVGhlIHBvcnRcbiAqIChgUmVjb3JkU2lua2AsIGBtZW1vcnlTaW5rYCkgaXMgYGZvb3R0cmFjZS93cml0ZWAnczsgdGhlIGZpbGUgYWRhcHRlciBpcyBgZm9vdHByaW50anMvc2lua3NgLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7XG4gIFJlY29yZEZsdXNoUmVzdWx0LFxuICBSZWNvcmRTaW5rRmFpbHVyZU1vZGUsXG4gIFJlY29yZFNpbmtGbHVzaE1vZGUsXG4gIFJlY29yZFNpbmtPcHRpb24sXG4gIFJlY29yZFNpbmtPcHRpb25zLFxuICBSZWNvcmRTaW5rU3RhdHMsXG59IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUmVjb3JkU2lua0Vycm9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBUaGUgZm91ciBvYnNlcnZhYmlsaXR5IGRpYWxzIGBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnNgIGluaGVyaXRzLlxuICogQGNhdGVnb3J5IFJ1blxuICovXG5leHBvcnQgdHlwZSB7IFJ1bkRpYWxzIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBDaGFydE9wZW5BUElPcHRpb25zLCBNQ1BUb29sRGVzY3JpcHRpb24sIFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBEYXRhIChzY29wZSByZWNvcmRlcnMsIGZpcmUgZHVyaW5nIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBPcGVyYXRpb24gKi9cbmV4cG9ydCB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBFdmVyeSBgYXR0YWNoKlJlY29yZGVyYCBjYWxsIGFjY2VwdHMgYW4gb3B0aW9ucyBiYWc6XG4gKiBgZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihyZWMsIHsgZGVsaXZlcnk6ICdkZWZlcnJlZCcgfSlgIHRha2VzIHRoZVxuICogcmVjb3JkZXIgT1VUIG9mIHRoZSBlbmdpbmUncyBob3QgcGF0aCDigJQgZXZlbnRzIGFyZSBjYXB0dXJlZCBpbnRvIG9uZVxuICogYm91bmRlZCwgdG90YWxseS1vcmRlcmVkIHF1ZXVlIGFuZCBkZWxpdmVyZWQgYXQgdGhlIG5leHQgbWljcm90YXNrXG4gKiBjaGVja3BvaW50IChcIm9uZSBiZWF0IGJlaGluZFwiKS4gT21pdCBgZGVsaXZlcnlgIGZvciB0aGUgaGlzdG9yaWNhbFxuICogc3luY2hyb25vdXMgY2FsbCAoYnl0ZS1pZGVudGljYWwgdG8gcHJldmlvdXMgcmVsZWFzZXMpLiBBY2NvdW50aW5nXG4gKiBzdXJmYWNlcyBvbiBgc25hcHNob3Qub2JzZXJ2ZXJTdGF0c2A7IGBleGVjdXRvci5kcmFpbk9ic2VydmVycygpYCBzZXR0bGVzXG4gKiBhc3luYyBsaXN0ZW5lcnMgYmVmb3JlIHNodXRkb3duLiBTZWUgYGRvY3MvZ3VpZGVzL29ic2VydmVycy1kZWZlcnJlZC5tZGAuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBgQ2FwdHVyZVBvbGljeWAg4oCUIGhvdyBhIGRlZmVycmVkIGV2ZW50J3MgcGF5bG9hZCBpcyBtYXRlcmlhbGl6ZWQgYXRcbiAqIGNhcHR1cmUgdGltZSAoYCdjbG9uZSdgIGJ5IGRlZmF1bHQgZm9yIGF0dGFjaCBvcHRpb25zIC8gYCdzdW1tYXJ5J2AgLyBgJ3JlZidgKS4gYE92ZXJmbG93UG9saWN5YFxuICog4oCUIHdoYXQgYSBzYXR1cmF0ZWQgcXVldWUgZG9lcyAoYCdkcm9wLW9sZGVzdCdgIGRlZmF1bHQgLyBgJ3NhbXBsZSdgIC9cbiAqIGAnYmxvY2snYCkuIGBEaXNwYXRjaGVyU3RhdHNgIC8gYExpc3RlbmVyU3RhdHNgIOKAlCB0aGUgYWNjb3VudGluZyBzaGFwZXNcbiAqIGVtYmVkZGVkIGluIGBPYnNlcnZlclN0YXRzYC4gVHlwZXMgb25seSDigJQgdGhlIG9ic2VydmVyLXF1ZXVlIG1vZHVsZVxuICogaXRzZWxmIGlzIGludGVybmFsOyBjb25zdW1lcnMgdXNlIHRoZSBhdHRhY2ggb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgeyBDYXB0dXJlUG9saWN5LCBEaXNwYXRjaGVyU3RhdHMsIExpc3RlbmVyU3RhdHMsIE92ZXJmbG93UG9saWN5IH0gZnJvbSAnLi9saWIvb2JzZXJ2ZXItcXVldWUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB7XG4gIGhhc0VtaXRSZWNvcmRlck1ldGhvZHMsXG4gIGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMsXG4gIGhhc1JlY29yZGVyTWV0aG9kcyxcbiAgaXNGbG93RXZlbnQsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRW1pdCAodXNlci1hdXRob3JlZCBzdHJ1Y3R1cmVkIGV2ZW50cylcbiAqXG4gKiBUaGlyZCBvYnNlcnZlciBjaGFubmVsIChhbG9uZ3NpZGUgYFNjb3BlUmVjb3JkZXJgIGFuZCBgRmxvd1JlY29yZGVyYCkuIENvbnN1bWVyXG4gKiBjb2RlIGNhbGxzIGBzY29wZS4kZW1pdChuYW1lLCBwYXlsb2FkKWAgZnJvbSBpbnNpZGUgYSBzdGFnZTsgZXZlcnkgYXR0YWNoZWRcbiAqIGBFbWl0UmVjb3JkZXIub25FbWl0KGV2ZW50KWAgZmlyZXMgc3luY2hyb25vdXNseSB3aXRoIHN0YWdlLWNvbnRleHRcbiAqIGVucmljaG1lbnQuIFBhc3MtdGhyb3VnaCDigJQgbm8gYnVmZmVyaW5nLCB6ZXJvIGFsbG9jYXRpb24gd2hlbiBubyByZWNvcmRlclxuICogaXMgYXR0YWNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIHsgRW1pdEV2ZW50LCBFbWl0UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIEZsb3cgKEZsb3dSZWNvcmRlciwgZmlyZXMgYWZ0ZXIgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0F0dGVtcHRFdmVudCxcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93UnVuRXZlbnQsXG4gIEZsb3dSdW5GYWlsZWRFdmVudCxcbiAgRmxvd1NlbGVjdGVkRXZlbnQsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBGbG93U3ViZmxvd0V2ZW50LFxuICBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCxcbiAgRmxvd1Rocm90dGxlZEV2ZW50LFxuICBSZXN1bWVMaW5rLFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLlxuICovXG5leHBvcnQgdHlwZSB7IE5hcnJhdGl2ZUZvcm1hdHRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0QXR0ZW1wdFJvdywgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VsZi1EZXNjcmliaW5nIOKAlCAuY29udHJhY3QoKSwgdG9PcGVuQVBJKCksIHRvTUNQVG9vbCgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2VsZi1EZXNjcmliaW5nICovXG5leHBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNuYXBzaG90ICYgQ29tcG9zaXRpb24g4oCUIFN1YmZsb3cgbmF2aWdhdGlvbiBhbmQgQ29tcG9zYWJsZVJ1bm5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNuYXBzaG90ICYgQ29tcG9zaXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSdW50aW1lU25hcHNob3QsIFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHsgZ2V0U3VidHJlZVNuYXBzaG90LCBsaXN0U3ViZmxvd1BhdGhzIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGVSZWNvcmRlciBDb21wb3NpdGlvbiDigJQgQnVuZGxlIG11bHRpcGxlIHJlY29yZGVycyBpbnRvIGRvbWFpbiBwcmVzZXRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHsgQ29tcG9zaXRlUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhdXNlL1Jlc3VtZSDigJQgU2VyaWFsaXphYmxlIGNoZWNrcG9pbnRzIGZvciBsb25nLXJ1bm5pbmcgb3IgaHVtYW4taW4tdGhlLWxvb3AgZmxvd3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3djaGFydENoZWNrcG9pbnQsXG4gIFBhdXNhYmxlSGFuZGxlcixcbiAgUGF1c2VkRXhlY3V0aW9uLFxuICBQZW5kaW5nUGF1c2UsXG4gIFJlZGFjdGlvbk1hcmtzLFxufSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZVxuICpcbiAqIGBpbnRlcnJ1cHQoc2NvcGUsIHsgcmVhc29uLCBleHBlY3RzPyB9KWAg4oCUIHN0b3AgbWlkLXN0YWdlIHRvIGFzayBhIHF1ZXN0aW9uLFxuICogYW5kIGdldCB0aGUgYW5zd2VyIGJhY2sgYXQgdGhlIHNhbWUgY2FsbCBzaXRlIHdoZW4gdGhlIHJ1biByZXN1bWVzLiBSZXN1bWVcbiAqIHJlLWVudGVycyB0aGUgc3RhZ2UgZnJvbSBpdHMgVE9QIChzdGFnZXMgYXJlIGF0b21pYyksIHNvIGtlZXAgdGhlIGhhbGZcbiAqIGJlZm9yZSB0aGUgY2FsbCBpZGVtcG90ZW50LlxuICovXG5leHBvcnQgdHlwZSB7IEludGVycnVwdFBheWxvYWQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG5leHBvcnQgeyBpbnRlcnJ1cHQgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiDigJQgVHlwZXMgcGFzc2VkIHRvIEZsb3dDaGFydEV4ZWN1dG9yIGFuZCBydW4oKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52LCBFeGVjdXRvclJlc3VsdCwgUGF1c2VkUmVzdWx0LCBSdW5PcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBSZWFkLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VSZWFkc2AgKCMxNCk6XG4gKiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgcGVyLXJlYWQgdmFsdWUgY2xvbmUsIGhpc3RvcmljYWwgYmVoYXZpb3IpIC9cbiAqIGAnc3VtbWFyeSdgIChjaGVhcCBgUmVhZFN1bW1hcnlNYXJrZXJgIHBlciByZWFkKSAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nLFxuICogemVybyBwZXItcmVhZCBjbG9uZSkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyByZWFkVHJhY2tpbmcgfSlgXG4gKiBvciBjYWxsIGBleGVjdXRvci5zZXRSZWFkVHJhY2tpbmcobW9kZSlgIGJlZm9yZSBgcnVuKClgLlxuICovXG5leHBvcnQgdHlwZSB7IFJlYWRTdW1tYXJ5TWFya2VyLCBSZWFkVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIFdyaXRlLXRyYWNraW5nIHBvbGljeSBmb3IgYFN0YWdlU25hcHNob3Quc3RhZ2VXcml0ZXNgICgjMTNjLUEpIOKAlCB0aGVcbiAqIHNpYmxpbmcgb2YgYFJlYWRUcmFja2luZ01vZGVgOyBib3RoIGFsaWFzIHRoZSBzaGFyZWQgYFJldGVudGlvblBvbGljeWBcbiAqIGZhbWlseSBmcm9tIGBsaWIvY2FwdHVyZWAuIGAnZnVsbCdgIChkZWZhdWx0IOKAlCBwZXItd3JpdGUgdmFsdWUgY2xvbmUsXG4gKiBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvIGAnc3VtbWFyeSdgIChjaGVhcCBgV3JpdGVTdW1tYXJ5TWFya2VyYCBwZXIgd3JpdGUpXG4gKiAvIGAnb2ZmJ2AgKG5vIHRyYWNraW5nOyBgc3RhZ2VXcml0ZXNgIGFic2VudCBhbmQgdGhlIGBvbkNvbW1pdGAgbXV0YXRpb25zXG4gKiBwYXlsb2FkIGlzIGVtcHR5IOKAlCB3cml0ZXMgdGhlbXNlbHZlcyBzdGlsbCBjb21taXQsIGFuZCB0aGUgY29tbWl0IGxvZyBpc1xuICogdW5hZmZlY3RlZCkuIFBhc3MgYXMgYG5ldyBGbG93Q2hhcnRFeGVjdXRvcihjaGFydCwgeyB3cml0ZVRyYWNraW5nIH0pYCBvclxuICogY2FsbCBgZXhlY3V0b3Iuc2V0V3JpdGVUcmFja2luZyhtb2RlKWAgYmVmb3JlIGBydW4oKWAuXG4gKi9cbmV4cG9ydCB0eXBlIHsgUmV0ZW50aW9uUG9saWN5LCBXcml0ZVN1bW1hcnlNYXJrZXIsIFdyaXRlVHJhY2tpbmdNb2RlIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvblxuICpcbiAqIENvbW1pdC12YWx1ZXMgZW5jb2RpbmcgZm9yIHRoZSBDT01NSVQgTE9HICgjMTNjLUIpIOKAlCB0aGUgdGhpcmQgZGlhbCBvZlxuICogdGhlIGZhbWlseSwgYW5kIHRoZSBvbmx5IExPU1NMRVNTIG9uZSAoaXQgY2hhbmdlcyB0aGUgbG9nJ3MgZW5jb2RpbmcsXG4gKiBuZXZlciBpdHMgaW5mb3JtYXRpb24pLiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgZXZlcnkgc3Vydml2aW5nIGBzZXRgIHN0b3Jlc1xuICogdGhlIGZ1bGwgZmluYWwgdmFsdWUsIGJ5dGUtaWRlbnRpY2FsIHRvIGhpc3RvcnkpIC8gYCdkZWx0YSdgIChhcnJheVxuICogbmV0LWNoYW5nZXMgdGhhdCBhcmUgXCJiYXNlIHBsdXMgYSB0YWlsXCIgY29tbWl0IGFzIGFuIGBhcHBlbmRgIHZlcmJcbiAqIHN0b3Jpbmcgb25seSB0aGUgdGFpbDsgYGRlbGV0ZVZhbHVlKClgIGNvbW1pdHMgYXMgYSByZWFsIGBkZWxldGVgIHZlcmI7XG4gKiBvbmUgdHJhY2UgZW50cnkgcGVyIHN1cnZpdmluZyBwYXRoKS4gUmVwbGF5IHJlY29uc3RydWN0cyBldmVyeSBzdGVwJ3NcbiAqIGZ1bGwgc3RhdGUgZXhhY3RseS4gQ29uc3VtZXJzIHJlYWRpbmcgYGJ1bmRsZS5vdmVyd3JpdGVba2V5XWAgYXMgdGhlIGZ1bGxcbiAqIHZhbHVlIG11c3QgdXNlIGBjb21taXRWYWx1ZUF0YCBmcm9tIGBmb290dHJhY2VgLiBQYXNzIGFzXG4gKiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IGNvbW1pdFZhbHVlcyB9KWAgb3IgY2FsbFxuICogYGV4ZWN1dG9yLnNldENvbW1pdFZhbHVlcyhtb2RlKWAgYmVmb3JlIGBydW4oKWA7IHRoZSBhY3RpdmUgbW9kZSBpcyB0aGVcbiAqIHNuYXBzaG90IGRpc2NyaW1pbmFudCBgZ2V0U25hcHNob3QoKS5jb21taXRWYWx1ZXNgLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0ICYgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFcnJvciBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXYgVG9vbHMg4oCUIE1vZGUgZmxhZ3MgYW5kIFpvZCBzY29wZSB1dGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgRGV2IFRvb2xzXG4gKlxuICogR2xvYmFsIGRldi1tb2RlIGZsYWcuIENhbGwgYGVuYWJsZURldk1vZGUoKWAgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0b1xuICogdHVybiBvbiBkZXZlbG9wZXItb25seSBkaWFnbm9zdGljcyBhY3Jvc3MgdGhlIGxpYnJhcnkg4oCUIGNpcmN1bGFyLXJlZmVyZW5jZVxuICogZGV0ZWN0aW9uIGluIHNjb3BlIHdyaXRlcywgd2FybmluZ3Mgd2hlbiBhIHJlY29yZGVyIGhhcyBubyBvYnNlcnZlclxuICogbWV0aG9kcywgc3VzcGljaW91cy1wcmVkaWNhdGUgd2FybmluZ3MgaW4gZGVjaWRlL3NlbGVjdCwgc3RydWN0dXJhbFxuICogY2hlY2tzIGluIGBnZXRTdWJ0cmVlU25hcHNob3RgLCBhbmQgYW55IGZ1dHVyZSBkZXYtb25seSBkaWFnbm9zdGljLlxuICpcbiAqIFByb2R1Y3Rpb24gbGVhdmVzIGl0IE9GRiBieSBkZWZhdWx0ICh6ZXJvIG92ZXJoZWFkKS4gU2VlIHRoZSBKU0RvYyBvblxuICogYGVuYWJsZURldk1vZGVgIGZvciB0aGUgZnVsbCBsaXN0IGFuZCB1c2FnZSBleGFtcGxlLlxuICovXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnLi9saWIvZGV2TW9kZS5qcyc7XG5cbi8vIGBkZWZpbmVTY29wZUZyb21ab2RgIGFuZCB0aGUgb3RoZXIgem9kLWJhc2VkIHNjb3BlIGhlbHBlcnMgbW92ZWQgdG8gdGhlIG9wdC1pblxuLy8gYGZvb3RwcmludGpzL3pvZGAgZW50cnkg4oCUIGtlZXBpbmcgem9kIG91dCBvZiB0aGUgY29yZSBsb2FkIHBhdGggKGl0IGlzIGFuXG4vLyBvcHRpb25hbCBwZWVyKS4gSW1wb3J0IHRoZW0gZnJvbSAnZm9vdHByaW50anMvem9kJy5cbi8vIEEgcnVuJ3MgcmVjb3JkIGFzIEpTT04gd2l0aG91dCB0aGUgZW5naW5lJ3MgcmVjdXJzaW9uIGxpbWl0ICg5LjI2LjApOiB0aGVcbi8vIHNhbWUgYnl0ZXMgSlNPTi5zdHJpbmdpZnkgZW1pdHMsIGZvciBhIGRlZXAgYG5leHRgIGNoYWluIGl0IGNhbm5vdCBlbmNvZGUuXG5leHBvcnQgdHlwZSB7IFJldHJ5TG9vcENhbGwsIFJldHJ5TG9vcERlY2lzaW9uLCBSZXRyeUxvb3BJZGVudGl0eSB9IGZyb20gJy4vbGliL2F0dGVtcHQvcmV0cnlMb29wVHlwZXMuanMnO1xuZXhwb3J0IHR5cGUgeyBSZXRyeUxvb3BDb250ZXh0LCBSZXRyeUxvb3BPcHRpb25zLCBSZXRyeUxvb3BTdGF0ZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvcmV0cnlMb29wLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2FwdHVyZUNoYW5uZWxTdGF0dXMsXG4gIENhcHR1cmVMaW1pdGF0aW9uLFxuICBOYXRpdmVDYXB0dXJlTm90ZSxcbiAgUmVjb3JkZXJDYXB0dXJlQWNrbm93bGVkZ2VtZW50LFxufSBmcm9tICcuL2xpYi9jYXB0dXJlL25hdGl2ZUNvdmVyYWdlLmpzJztcbmV4cG9ydCB7IHN0cmluZ2lmeVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL3N0cmluZ2lmeVNuYXBzaG90LmpzJztcbiJdfQ==
@@ -0,0 +1,56 @@
1
+ import type { LogAddress } from 'foottrace';
2
+ import type { TerminalFailureContext } from '../errors/terminalFailure.js';
3
+ export type CaptureChannelStatus = 'captured' | 'disabled' | 'partial' | 'failed' | 'unknown';
4
+ export type CaptureLimitation = 'tracked-state-only' | 'final-attempt-views' | 'read-sources-not-collected' | 'child-scopes-not-attested' | 'storage-not-attested' | 'resumed-segment' | 'redacted-export' | 'redaction-active' | 'custom-scope' | 'read-retention-failed' | 'commit-retention-failed' | 'attention-omitted' | 'recorder-snapshot-failed' | 'identity-omitted' | 'execution-broken' | 'modes-unavailable';
5
+ /** A producer acknowledgement, not engine inspection of a recorder's implementation. */
6
+ export interface RecorderCaptureAcknowledgement {
7
+ readonly version: 1;
8
+ readonly runId: string;
9
+ readonly control: 'captured' | 'partial' | 'unknown';
10
+ }
11
+ /** Engine observation of ONE root-log segment. Never a durable or whole-workflow completeness claim. */
12
+ export interface NativeCaptureNote {
13
+ readonly version: 1;
14
+ readonly runId: string;
15
+ readonly scope: 'root-log';
16
+ readonly logAddress: LogAddress;
17
+ /** Half-open offsets in this log. A same-executor resume starts at the previous end. */
18
+ readonly commits: {
19
+ readonly from: number;
20
+ readonly to: number;
21
+ };
22
+ readonly boundary: {
23
+ readonly status: 'running' | 'completed' | 'paused' | 'failed' | 'cancelled';
24
+ readonly failure?: TerminalFailureContext;
25
+ };
26
+ readonly modes: {
27
+ readonly readTracking: 'full' | 'summary' | 'off' | 'unknown';
28
+ readonly writeTracking: 'full' | 'summary' | 'off' | 'unknown';
29
+ readonly commitValues: 'full' | 'delta' | 'unknown';
30
+ readonly writeProvenance: 'off' | 'reads-prefix' | 'unknown';
31
+ };
32
+ readonly channels: {
33
+ readonly reads: CaptureChannelStatus;
34
+ readonly writes: CaptureChannelStatus;
35
+ readonly attention: CaptureChannelStatus;
36
+ readonly control: CaptureChannelStatus;
37
+ readonly readSources: 'not-collected';
38
+ };
39
+ readonly persistence: 'memory-only';
40
+ readonly limitations: readonly CaptureLimitation[];
41
+ }
42
+ /** @internal Bounded facts collected at native funnels; no values, key names, recorder discovery or tree walk. */
43
+ export declare class NativeCapture {
44
+ readonly runId: string;
45
+ readonly logAddress: LogAddress;
46
+ readonly from: number;
47
+ private readonly gaps;
48
+ private boundary;
49
+ private readonly modes;
50
+ constructor(runId: string, logAddress: LogAddress, from: number, modes: NativeCaptureNote['modes']);
51
+ limit(gap: CaptureLimitation): void;
52
+ end(status: NativeCaptureNote['boundary']['status'], failure?: TerminalFailureContext): void;
53
+ snapshot(to: number, control?: CaptureChannelStatus, redacted?: boolean): NativeCaptureNote;
54
+ }
55
+ /** Stored/recorder metadata is untrusted. Read data properties only, never getters or arbitrary strings. */
56
+ export declare function copyCaptureAcknowledgement(value: unknown): RecorderCaptureAcknowledgement | undefined;
@@ -0,0 +1,102 @@
1
+ /** @internal Bounded facts collected at native funnels; no values, key names, recorder discovery or tree walk. */
2
+ export class NativeCapture {
3
+ runId;
4
+ logAddress;
5
+ from;
6
+ gaps = new Set([
7
+ 'tracked-state-only',
8
+ 'final-attempt-views',
9
+ 'read-sources-not-collected',
10
+ 'child-scopes-not-attested',
11
+ 'storage-not-attested',
12
+ ]);
13
+ boundary = { status: 'running' };
14
+ modes;
15
+ constructor(runId, logAddress, from, modes) {
16
+ this.runId = runId;
17
+ this.logAddress = logAddress;
18
+ this.from = from;
19
+ const retention = (value) => value === 'full' || value === 'summary' || value === 'off' ? value : 'unknown';
20
+ this.modes = {
21
+ readTracking: retention(modes.readTracking),
22
+ writeTracking: retention(modes.writeTracking),
23
+ commitValues: modes.commitValues === 'full' || modes.commitValues === 'delta' ? modes.commitValues : 'unknown',
24
+ writeProvenance: modes.writeProvenance === 'off' || modes.writeProvenance === 'reads-prefix' ? modes.writeProvenance : 'unknown',
25
+ };
26
+ if (Object.values(this.modes).includes('unknown'))
27
+ this.limit('modes-unavailable');
28
+ }
29
+ limit(gap) {
30
+ this.gaps.add(gap);
31
+ }
32
+ end(status, failure) {
33
+ if (this.boundary.status !== 'running')
34
+ return;
35
+ if (failure?.stage && failure.stage.runtimeStageId.length > 1024) {
36
+ this.limit('identity-omitted');
37
+ failure = Object.freeze({ category: failure.category });
38
+ }
39
+ this.boundary = { status, ...(failure && { failure }) };
40
+ }
41
+ snapshot(to, control = 'unknown', redacted = false) {
42
+ const gaps = new Set(this.gaps);
43
+ if (redacted)
44
+ gaps.add('redacted-export');
45
+ const failed = gaps.has('commit-retention-failed');
46
+ const custom = gaps.has('custom-scope') || gaps.has('modes-unavailable');
47
+ return Object.freeze({
48
+ version: 1,
49
+ runId: this.runId,
50
+ scope: 'root-log',
51
+ logAddress: Object.freeze({
52
+ logRunId: this.logAddress.logRunId,
53
+ drillPath: Object.freeze([...this.logAddress.drillPath]),
54
+ }),
55
+ commits: Object.freeze({ from: this.from, to }),
56
+ boundary: Object.freeze({ ...this.boundary }),
57
+ modes: Object.freeze({
58
+ readTracking: this.modes.readTracking,
59
+ writeTracking: this.modes.writeTracking,
60
+ commitValues: this.modes.commitValues,
61
+ writeProvenance: this.modes.writeProvenance,
62
+ }),
63
+ channels: Object.freeze({
64
+ reads: this.modes.readTracking === 'off'
65
+ ? 'disabled'
66
+ : gaps.has('read-retention-failed')
67
+ ? 'failed'
68
+ : custom
69
+ ? 'unknown'
70
+ : 'captured',
71
+ writes: this.modes.writeTracking === 'off' ? 'disabled' : failed ? 'failed' : custom ? 'unknown' : 'captured',
72
+ attention: failed || gaps.has('attention-omitted') ? 'partial' : custom ? 'unknown' : 'captured',
73
+ control: gaps.has('recorder-snapshot-failed') ? 'failed' : control,
74
+ readSources: 'not-collected',
75
+ }),
76
+ persistence: 'memory-only',
77
+ limitations: Object.freeze([...gaps]),
78
+ });
79
+ }
80
+ }
81
+ /** Stored/recorder metadata is untrusted. Read data properties only, never getters or arbitrary strings. */
82
+ export function copyCaptureAcknowledgement(value) {
83
+ try {
84
+ if (!value || typeof value !== 'object' || Object.getPrototypeOf(value) !== Object.prototype)
85
+ return undefined;
86
+ const data = (key) => Object.getOwnPropertyDescriptor(value, key)?.value;
87
+ const version = data('version');
88
+ const runId = data('runId');
89
+ const control = data('control');
90
+ if (version !== 1 ||
91
+ typeof runId !== 'string' ||
92
+ runId.length === 0 ||
93
+ runId.length > 2048 ||
94
+ !['captured', 'partial', 'unknown'].includes(control))
95
+ return undefined;
96
+ return Object.freeze({ version, runId, control });
97
+ }
98
+ catch {
99
+ return undefined;
100
+ }
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlQ292ZXJhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NhcHR1cmUvbmF0aXZlQ292ZXJhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkRBLGtIQUFrSDtBQUNsSCxNQUFNLE9BQU8sYUFBYTtJQWFiO0lBQ0E7SUFDQTtJQWRNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBb0I7UUFDakQsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQiw0QkFBNEI7UUFDNUIsMkJBQTJCO1FBQzNCLHNCQUFzQjtLQUN2QixDQUFDLENBQUM7SUFFSyxRQUFRLEdBQWtDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3ZELEtBQUssQ0FBNkI7SUFFbkQsWUFDVyxLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsSUFBWSxFQUNyQixLQUFpQztRQUh4QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBR3JCLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDbkMsS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxZQUFZLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDM0MsYUFBYSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzdDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztZQUM5RyxlQUFlLEVBQ2IsS0FBSyxDQUFD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QUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ2pGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQ0UsT0FBTyxLQUFLLENBQUM7WUFDYixPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLElBQUk7WUFDbkIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUVyRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMb2dBZGRyZXNzIH0gZnJvbSAnZm9vdHRyYWNlJztcblxuaW1wb3J0IHR5cGUgeyBUZXJtaW5hbEZhaWx1cmVDb250ZXh0IH0gZnJvbSAnLi4vZXJyb3JzL3Rlcm1pbmFsRmFpbHVyZS5qcyc7XG5cbmV4cG9ydCB0eXBlIENhcHR1cmVDaGFubmVsU3RhdHVzID0gJ2NhcHR1cmVkJyB8ICdkaXNhYmxlZCcgfCAncGFydGlhbCcgfCAnZmFpbGVkJyB8ICd1bmtub3duJztcbmV4cG9ydCB0eXBlIENhcHR1cmVMaW1pdGF0aW9uID1cbiAgfCAndHJhY2tlZC1zdGF0ZS1vbmx5J1xuICB8ICdmaW5hbC1hdHRlbXB0LXZpZXdzJ1xuICB8ICdyZWFkLXNvdXJjZXMtbm90LWNvbGxlY3RlZCdcbiAgfCAnY2hpbGQtc2NvcGVzLW5vdC1hdHRlc3RlZCdcbiAgfCAnc3RvcmFnZS1ub3QtYXR0ZXN0ZWQnXG4gIHwgJ3Jlc3VtZWQtc2VnbWVudCdcbiAgfCAncmVkYWN0ZWQtZXhwb3J0J1xuICB8ICdyZWRhY3Rpb24tYWN0aXZlJ1xuICB8ICdjdXN0b20tc2NvcGUnXG4gIHwgJ3JlYWQtcmV0ZW50aW9uLWZhaWxlZCdcbiAgfCAnY29tbWl0LXJldGVudGlvbi1mYWlsZWQnXG4gIHwgJ2F0dGVudGlvbi1vbWl0dGVkJ1xuICB8ICdyZWNvcmRlci1zbmFwc2hvdC1mYWlsZWQnXG4gIHwgJ2lkZW50aXR5LW9taXR0ZWQnXG4gIHwgJ2V4ZWN1dGlvbi1icm9rZW4nXG4gIHwgJ21vZGVzLXVuYXZhaWxhYmxlJztcblxuLyoqIEEgcHJvZHVjZXIgYWNrbm93bGVkZ2VtZW50LCBub3QgZW5naW5lIGluc3BlY3Rpb24gb2YgYSByZWNvcmRlcidzIGltcGxlbWVudGF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRlckNhcHR1cmVBY2tub3dsZWRnZW1lbnQge1xuICByZWFkb25seSB2ZXJzaW9uOiAxO1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBjb250cm9sOiAnY2FwdHVyZWQnIHwgJ3BhcnRpYWwnIHwgJ3Vua25vd24nO1xufVxuXG4vKiogRW5naW5lIG9ic2VydmF0aW9uIG9mIE9ORSByb290LWxvZyBzZWdtZW50LiBOZXZlciBhIGR1cmFibGUgb3Igd2hvbGUtd29ya2Zsb3cgY29tcGxldGVuZXNzIGNsYWltLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVDYXB0dXJlTm90ZSB7XG4gIHJlYWRvbmx5IHZlcnNpb246IDE7XG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjb3BlOiAncm9vdC1sb2cnO1xuICByZWFkb25seSBsb2dBZGRyZXNzOiBMb2dBZGRyZXNzO1xuICAvKiogSGFsZi1vcGVuIG9mZnNldHMgaW4gdGhpcyBsb2cuIEEgc2FtZS1leGVjdXRvciByZXN1bWUgc3RhcnRzIGF0IHRoZSBwcmV2aW91cyBlbmQuICovXG4gIHJlYWRvbmx5IGNvbW1pdHM6IHsgcmVhZG9ubHkgZnJvbTogbnVtYmVyOyByZWFkb25seSB0bzogbnVtYmVyIH07XG4gIHJlYWRvbmx5IGJvdW5kYXJ5OiB7XG4gICAgcmVhZG9ubHkgc3RhdHVzOiAncnVubmluZycgfCAnY29tcGxldGVkJyB8ICdwYXVzZWQnIHwgJ2ZhaWxlZCcgfCAnY2FuY2VsbGVkJztcbiAgICByZWFkb25seSBmYWlsdXJlPzogVGVybWluYWxGYWlsdXJlQ29udGV4dDtcbiAgfTtcbiAgcmVhZG9ubHkgbW9kZXM6IHtcbiAgICByZWFkb25seSByZWFkVHJhY2tpbmc6ICdmdWxsJyB8ICdzdW1tYXJ5JyB8ICdvZmYnIHwgJ3Vua25vd24nO1xuICAgIHJlYWRvbmx5IHdyaXRlVHJhY2tpbmc6ICdmdWxsJyB8ICdzdW1tYXJ5JyB8ICdvZmYnIHwgJ3Vua25vd24nO1xuICAgIHJlYWRvbmx5IGNvbW1pdFZhbHVlczogJ2Z1bGwnIHwgJ2RlbHRhJyB8ICd1bmtub3duJztcbiAgICByZWFkb25seSB3cml0ZVByb3ZlbmFuY2U6ICdvZmYnIHwgJ3JlYWRzLXByZWZpeCcgfCAndW5rbm93bic7XG4gIH07XG4gIHJlYWRvbmx5IGNoYW5uZWxzOiB7XG4gICAgcmVhZG9ubHkgcmVhZHM6IENhcHR1cmVDaGFubmVsU3RhdHVzO1xuICAgIHJlYWRvbmx5IHdyaXRlczogQ2FwdHVyZUNoYW5uZWxTdGF0dXM7XG4gICAgcmVhZG9ubHkgYXR0ZW50aW9uOiBDYXB0dXJlQ2hhbm5lbFN0YXR1cztcbiAgICByZWFkb25seSBjb250cm9sOiBDYXB0dXJlQ2hhbm5lbFN0YXR1cztcbiAgICByZWFkb25seSByZWFkU291cmNlczogJ25vdC1jb2xsZWN0ZWQnO1xuICB9O1xuICByZWFkb25seSBwZXJzaXN0ZW5jZTogJ21lbW9yeS1vbmx5JztcbiAgcmVhZG9ubHkgbGltaXRhdGlvbnM6IHJlYWRvbmx5IENhcHR1cmVMaW1pdGF0aW9uW107XG59XG5cbi8qKiBAaW50ZXJuYWwgQm91bmRlZCBmYWN0cyBjb2xsZWN0ZWQgYXQgbmF0aXZlIGZ1bm5lbHM7IG5vIHZhbHVlcywga2V5IG5hbWVzLCByZWNvcmRlciBkaXNjb3Zlcnkgb3IgdHJlZSB3YWxrLiAqL1xuZXhwb3J0IGNsYXNzIE5hdGl2ZUNhcHR1cmUge1xuICBwcml2YXRlIHJlYWRvbmx5IGdhcHMgPSBuZXcgU2V0PENhcHR1cmVMaW1pdGF0aW9uPihbXG4gICAgJ3RyYWNrZWQtc3RhdGUtb25seScsXG4gICAgJ2ZpbmFsLWF0dGVtcHQtdmlld3MnLFxuICAgICdyZWFkLXNvdXJjZXMtbm90LWNvbGxlY3RlZCcsXG4gICAgJ2NoaWxkLXNjb3Blcy1ub3QtYXR0ZXN0ZWQnLFxuICAgICdzdG9yYWdlLW5vdC1hdHRlc3RlZCcsXG4gIF0pO1xuXG4gIHByaXZhdGUgYm91bmRhcnk6IE5hdGl2ZUNhcHR1cmVOb3RlWydib3VuZGFyeSddID0geyBzdGF0dXM6ICdydW5uaW5nJyB9O1xuICBwcml2YXRlIHJlYWRvbmx5IG1vZGVzOiBOYXRpdmVDYXB0dXJlTm90ZVsnbW9kZXMnXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBydW5JZDogc3RyaW5nLFxuICAgIHJlYWRvbmx5IGxvZ0FkZHJlc3M6IExvZ0FkZHJlc3MsXG4gICAgcmVhZG9ubHkgZnJvbTogbnVtYmVyLFxuICAgIG1vZGVzOiBOYXRpdmVDYXB0dXJlTm90ZVsnbW9kZXMnXSxcbiAgKSB7XG4gICAgY29uc3QgcmV0ZW50aW9uID0gKHZhbHVlOiB1bmtub3duKSA9PlxuICAgICAgdmFsdWUgPT09ICdmdWxsJyB8fCB2YWx1ZSA9PT0gJ3N1bW1hcnknIHx8IHZhbHVlID09PSAnb2ZmJyA/IHZhbHVlIDogJ3Vua25vd24nO1xuICAgIHRoaXMubW9kZXMgPSB7XG4gICAgICByZWFkVHJhY2tpbmc6IHJldGVudGlvbihtb2Rlcy5yZWFkVHJhY2tpbmcpLFxuICAgICAgd3JpdGVUcmFja2luZzogcmV0ZW50aW9uKG1vZGVzLndyaXRlVHJhY2tpbmcpLFxuICAgICAgY29tbWl0VmFsdWVzOiBtb2Rlcy5jb21taXRWYWx1ZXMgPT09ICdmdWxsJyB8fCBtb2Rlcy5jb21taXRWYWx1ZXMgPT09ICdkZWx0YScgPyBtb2Rlcy5jb21taXRWYWx1ZXMgOiAndW5rbm93bicsXG4gICAgICB3cml0ZVByb3ZlbmFuY2U6XG4gICAgICAgIG1vZGVzLndyaXRlUHJvdmVuYW5jZSA9PT0gJ29mZicgfHwgbW9kZXMud3JpdGVQcm92ZW5hbmNlID09PSAncmVhZHMtcHJlZml4JyA/IG1vZGVzLndyaXRlUHJvdmVuYW5jZSA6ICd1bmtub3duJyxcbiAgICB9O1xuICAgIGlmIChPYmplY3QudmFsdWVzKHRoaXMubW9kZXMpLmluY2x1ZGVzKCd1bmtub3duJykpIHRoaXMubGltaXQoJ21vZGVzLXVuYXZhaWxhYmxlJyk7XG4gIH1cblxuICBsaW1pdChnYXA6IENhcHR1cmVMaW1pdGF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5nYXBzLmFkZChnYXApO1xuICB9XG5cbiAgZW5kKHN0YXR1czogTmF0aXZlQ2FwdHVyZU5vdGVbJ2JvdW5kYXJ5J11bJ3N0YXR1cyddLCBmYWlsdXJlPzogVGVybWluYWxGYWlsdXJlQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJvdW5kYXJ5LnN0YXR1cyAhPT0gJ3J1bm5pbmcnKSByZXR1cm47XG4gICAgaWYgKGZhaWx1cmU/LnN0YWdlICYmIGZhaWx1cmUuc3RhZ2UucnVudGltZVN0YWdlSWQubGVuZ3RoID4gMTAyNCkge1xuICAgICAgdGhpcy5saW1pdCgnaWRlbnRpdHktb21pdHRlZCcpO1xuICAgICAgZmFpbHVyZSA9IE9iamVjdC5mcmVlemUoeyBjYXRlZ29yeTogZmFpbHVyZS5jYXRlZ29yeSB9KTtcbiAgICB9XG4gICAgdGhpcy5ib3VuZGFyeSA9IHsgc3RhdHVzLCAuLi4oZmFpbHVyZSAmJiB7IGZhaWx1cmUgfSkgfTtcbiAgfVxuXG4gIHNuYXBzaG90KHRvOiBudW1iZXIsIGNvbnRyb2w6IENhcHR1cmVDaGFubmVsU3RhdHVzID0gJ3Vua25vd24nLCByZWRhY3RlZCA9IGZhbHNlKTogTmF0aXZlQ2FwdHVyZU5vdGUge1xuICAgIGNvbnN0IGdhcHMgPSBuZXcgU2V0KHRoaXMuZ2Fwcyk7XG4gICAgaWYgKHJlZGFjdGVkKSBnYXBzLmFkZCgncmVkYWN0ZWQtZXhwb3J0Jyk7XG4gICAgY29uc3QgZmFpbGVkID0gZ2Fwcy5oYXMoJ2NvbW1pdC1yZXRlbnRpb24tZmFpbGVkJyk7XG4gICAgY29uc3QgY3VzdG9tID0gZ2Fwcy5oYXMoJ2N1c3RvbS1zY29wZScpIHx8IGdhcHMuaGFzKCdtb2Rlcy11bmF2YWlsYWJsZScpO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHtcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBydW5JZDogdGhpcy5ydW5JZCxcbiAgICAgIHNjb3BlOiAncm9vdC1sb2cnLFxuICAgICAgbG9nQWRkcmVzczogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIGxvZ1J1bklkOiB0aGlzLmxvZ0FkZHJlc3MubG9nUnVuSWQsXG4gICAgICAgIGRyaWxsUGF0aDogT2JqZWN0LmZyZWV6ZShbLi4udGhpcy5sb2dBZGRyZXNzLmRyaWxsUGF0aF0pLFxuICAgICAgfSksXG4gICAgICBjb21taXRzOiBPYmplY3QuZnJlZXplKHsgZnJvbTogdGhpcy5mcm9tLCB0byB9KSxcbiAgICAgIGJvdW5kYXJ5OiBPYmplY3QuZnJlZXplKHsgLi4udGhpcy5ib3VuZGFyeSB9KSxcbiAgICAgIG1vZGVzOiBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgcmVhZFRyYWNraW5nOiB0aGlzLm1vZGVzLnJlYWRUcmFja2luZyxcbiAgICAgICAgd3JpdGVUcmFja2luZzogdGhpcy5tb2Rlcy53cml0ZVRyYWNraW5nLFxuICAgICAgICBjb21taXRWYWx1ZXM6IHRoaXMubW9kZXMuY29tbWl0VmFsdWVzLFxuICAgICAgICB3cml0ZVByb3ZlbmFuY2U6IHRoaXMubW9kZXMud3JpdGVQcm92ZW5hbmNlLFxuICAgICAgfSksXG4gICAgICBjaGFubmVsczogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIHJlYWRzOlxuICAgICAgICAgIHRoaXMubW9kZXMucmVhZFRyYWNraW5nID09PSAnb2ZmJ1xuICAgICAgICAgICAgPyAnZGlzYWJsZWQnXG4gICAgICAgICAgICA6IGdhcHMuaGFzKCdyZWFkLXJldGVudGlvbi1mYWlsZWQnKVxuICAgICAgICAgICAgPyAnZmFpbGVkJ1xuICAgICAgICAgICAgOiBjdXN0b21cbiAgICAgICAgICAgID8gJ3Vua25vd24nXG4gICAgICAgICAgICA6ICdjYXB0dXJlZCcsXG4gICAgICAgIHdyaXRlczogdGhpcy5tb2Rlcy53cml0ZVRyYWNraW5nID09PSAnb2ZmJyA/ICdkaXNhYmxlZCcgOiBmYWlsZWQgPyAnZmFpbGVkJyA6IGN1c3RvbSA/ICd1bmtub3duJyA6ICdjYXB0dXJlZCcsXG4gICAgICAgIGF0dGVudGlvbjogZmFpbGVkIHx8IGdhcHMuaGFzKCdhdHRlbnRpb24tb21pdHRlZCcpID8gJ3BhcnRpYWwnIDogY3VzdG9tID8gJ3Vua25vd24nIDogJ2NhcHR1cmVkJyxcbiAgICAgICAgY29udHJvbDogZ2Fwcy5oYXMoJ3JlY29yZGVyLXNuYXBzaG90LWZhaWxlZCcpID8gJ2ZhaWxlZCcgOiBjb250cm9sLFxuICAgICAgICByZWFkU291cmNlczogJ25vdC1jb2xsZWN0ZWQnLFxuICAgICAgfSksXG4gICAgICBwZXJzaXN0ZW5jZTogJ21lbW9yeS1vbmx5JyxcbiAgICAgIGxpbWl0YXRpb25zOiBPYmplY3QuZnJlZXplKFsuLi5nYXBzXSksXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqIFN0b3JlZC9yZWNvcmRlciBtZXRhZGF0YSBpcyB1bnRydXN0ZWQuIFJlYWQgZGF0YSBwcm9wZXJ0aWVzIG9ubHksIG5ldmVyIGdldHRlcnMgb3IgYXJiaXRyYXJ5IHN0cmluZ3MuICovXG5leHBvcnQgZnVuY3Rpb24gY29weUNhcHR1cmVBY2tub3dsZWRnZW1lbnQodmFsdWU6IHVua25vd24pOiBSZWNvcmRlckNhcHR1cmVBY2tub3dsZWRnZW1lbnQgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpICE9PSBPYmplY3QucHJvdG90eXBlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRhdGEgPSAoa2V5OiBzdHJpbmcpID0+IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSk/LnZhbHVlO1xuICAgIGNvbnN0IHZlcnNpb24gPSBkYXRhKCd2ZXJzaW9uJyk7XG4gICAgY29uc3QgcnVuSWQgPSBkYXRhKCdydW5JZCcpO1xuICAgIGNvbnN0IGNvbnRyb2wgPSBkYXRhKCdjb250cm9sJyk7XG4gICAgaWYgKFxuICAgICAgdmVyc2lvbiAhPT0gMSB8fFxuICAgICAgdHlwZW9mIHJ1bklkICE9PSAnc3RyaW5nJyB8fFxuICAgICAgcnVuSWQubGVuZ3RoID09PSAwIHx8XG4gICAgICBydW5JZC5sZW5ndGggPiAyMDQ4IHx8XG4gICAgICAhWydjYXB0dXJlZCcsICdwYXJ0aWFsJywgJ3Vua25vd24nXS5pbmNsdWRlcyhjb250cm9sKVxuICAgIClcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoeyB2ZXJzaW9uLCBydW5JZCwgY29udHJvbCB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -14,6 +14,7 @@
14
14
  import type { CommitPhase, EmitSourcePosition, UntrackedSource } from 'foottrace';
15
15
  import type { EventLog, SharedMemory } from 'foottrace/write';
16
16
  import type { AttemptContext, AttemptRecord, AttemptSummary, LateWrite } from '../attempt/types.js';
17
+ import type { NativeCapture } from '../capture/nativeCoverage.js';
17
18
  import type { StructuredErrorInfo } from '../errors/errorInfo.js';
18
19
  import { type TerminalFailureContext, NativeFailureState } from '../errors/terminalFailure.js';
19
20
  import { type DiagnosticChannel, DiagnosticCollector } from './DiagnosticCollector.js';
@@ -57,6 +58,8 @@ export declare class StageContext {
57
58
  private policy;
58
59
  /** The emitting frame's logical leg, never the mutable executor's current leg. */
59
60
  private emitRunId?;
61
+ /** The native root-log collector; copied to same-log frames, never child runtimes. */
62
+ capture?: NativeCapture;
60
63
  stageName: string;
61
64
  /** Unique stage identifier from the builder (matches spec node id). */
62
65
  stageId: string;
@@ -342,6 +345,7 @@ export declare class StageContext {
342
345
  * `'summary'` records a cheap marker, `'off'` records nothing.
343
346
  */
344
347
  getValue(path: string[], key?: string, description?: string): unknown;
348
+ private readRetainedValue;
345
349
  /**
346
350
  * How many tracked reads of this frame read a value the run's rule selects
347
351
  * (a key it masks whole, or one with secret fields). A boundary that maps
@@ -455,6 +459,7 @@ export declare class StageContext {
455
459
  * reads them post-run for the execution-tree snapshot.
456
460
  */
457
461
  commit(phase?: CommitPhase): void;
462
+ private commitRetained;
458
463
  /** Whether this frame has committed — a call's record arriving after it is late (P2, `ScopeFacade · call`). */
459
464
  get committed(): boolean;
460
465
  /**